diff --git a/client/src/components/search-header.tsx b/client/src/components/search-header.tsx index d8dfcc6..ceec279 100644 --- a/client/src/components/search-header.tsx +++ b/client/src/components/search-header.tsx @@ -1,5 +1,5 @@ import { useState, useCallback } from "react"; -import { Search, Play, Menu, Grid3X3, List } from "lucide-react"; +import { Search, Play, Menu, Grid3X3, List, X } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; @@ -17,6 +17,7 @@ export default function SearchHeader({ currentView }: SearchHeaderProps) { const [searchQuery, setSearchQuery] = useState(""); + const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); // Debounce function to delay search API calls const debounce = useCallback((func: Function, delay: number) => { @@ -82,12 +83,88 @@ export default function SearchHeader({ - + {/* Mobile Menu */} + {isMobileMenuOpen && ( +
+
+ {/* Mobile Search */} +
+ handleSearchChange(e.target.value)} + className="bg-white border border-gray-300 rounded-lg px-4 py-2 pl-10 text-sm text-gray-900 placeholder-gray-500 focus:outline-none focus:border-bunny-blue transition-colors w-full" + data-testid="input-mobile-search" + /> + +
+ + {/* Mobile Navigation */} + +
+
+ )} + {/* Filter Bar */}
diff --git a/client/src/components/video-card.tsx b/client/src/components/video-card.tsx index e651286..122bc65 100644 --- a/client/src/components/video-card.tsx +++ b/client/src/components/video-card.tsx @@ -104,7 +104,30 @@ export default function VideoCard({ video, onClick }: VideoCardProps) { {formatDate(video.createdAt)} + {video.category && ( + + {video.category} + + )}
+ + {/* Tags display */} + {video.tags && video.tags.length > 0 && ( +
+ {video.tags.slice(0, 3).map((tag, index) => ( + + #{tag} + + ))} + {video.tags.length > 3 && ( + +{video.tags.length - 3} more + )} +
+ )}
); diff --git a/client/src/pages/VideoPage.tsx b/client/src/pages/VideoPage.tsx index 1375b57..0347ff7 100644 --- a/client/src/pages/VideoPage.tsx +++ b/client/src/pages/VideoPage.tsx @@ -31,7 +31,7 @@ const formatDate = (date: Date | string): string => { }); }; import { Button } from "@/components/ui/button"; -import { Share2, X, Edit3 } from "lucide-react"; +import { Share2, X, Edit3, Menu } from "lucide-react"; import { apiRequest } from "@/lib/queryClient"; import { FacebookShareButton, @@ -52,6 +52,7 @@ export default function VideoPage() { const [, params] = useRoute("/video/:id"); const videoId = params?.id; const [showShareMenu, setShowShareMenu] = useState(false); + const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); // Fetch current video const { data: currentVideo, isLoading: videoLoading } = useQuery