From b195a9e7c3f8eb1e402872c093615afa4c7f4d9f Mon Sep 17 00:00:00 2001 From: ct Date: Thu, 17 Jul 2025 02:58:01 +0800 Subject: [PATCH] Update --- resources/js/pages/home/home.tsx | 3 +- .../pages/home/partials/MemeLibrarySearch.jsx | 80 +++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 resources/js/pages/home/partials/MemeLibrarySearch.jsx diff --git a/resources/js/pages/home/home.tsx b/resources/js/pages/home/home.tsx index 82bb6f9..a30b81f 100644 --- a/resources/js/pages/home/home.tsx +++ b/resources/js/pages/home/home.tsx @@ -4,6 +4,7 @@ import FAQDiscord from './partials/FAQDiscord.jsx'; import Features from './partials/Features.jsx'; import Footer from './partials/Footer.jsx'; import Hero from './partials/Hero.jsx'; +import MemeLibrarySearch from './partials/MemeLibrarySearch.jsx'; const Home = ({ faqData }) => { const [isClient, setIsClient] = useState(false); @@ -33,7 +34,7 @@ const Home = ({ faqData }) => {
- {/* */} +
diff --git a/resources/js/pages/home/partials/MemeLibrarySearch.jsx b/resources/js/pages/home/partials/MemeLibrarySearch.jsx new file mode 100644 index 0000000..a301257 --- /dev/null +++ b/resources/js/pages/home/partials/MemeLibrarySearch.jsx @@ -0,0 +1,80 @@ +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { router } from '@inertiajs/react'; +import { Search } from 'lucide-react'; +import { useState } from 'react'; +import { route } from 'ziggy-js'; + +const MemeLibrarySearch = () => { + const [searchQuery, setSearchQuery] = useState(''); + const [isSearching, setIsSearching] = useState(false); + + const handleSearch = (e) => { + e.preventDefault(); + + if (!searchQuery.trim()) { + // If empty search, go to main meme library + router.visit(route('memes.index')); + return; + } + + setIsSearching(true); + + // Navigate to search results page + router.visit(route('memes.search', { search: searchQuery.trim() }), { + onFinish: () => setIsSearching(false), + }); + }; + + const handleKeyPress = (e) => { + if (e.key === 'Enter') { + handleSearch(e); + } + }; + + return ( +
+
+
+ {/* Section heading */} +
+

Explore Our Meme Library

+

+ Search through our database of popular meme templates and find the perfect one for your video +

+
+ + {/* Search form */} +
+
+
+ + setSearchQuery(e.target.value)} + onKeyPress={handleKeyPress} + className="h-12 py-3 pr-4 pl-10 text-base" + disabled={isSearching} + /> +
+ +
+
+ + {/* Browse all link */} +
+ +
+
+
+
+ ); +}; + +export default MemeLibrarySearch;