"use client"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Separator } from "@/components/ui/separator"; import { Star, X } from "lucide-react"; import { useGetGenres } from "@/api/mangamochi"; import { useAuth } from "@/contexts/auth-context"; import { Switch } from "@/components/ui/switch"; import { Skeleton } from "@/components/ui/skeleton"; interface FilterSidebarProps { selectedGenres: number[]; selectedStatus: string[]; minRating: number; userFavorites: boolean; showAdultContent: boolean; onGenresChange: (genres: number[]) => void; onStatusChange: (status: string[]) => void; onRatingChange: (rating: number) => void; onUserFavoritesChange: (favorites: boolean) => void; onShowAdultContentChange: (showAdult: boolean) => void; } const STATUSES = ["Ongoing", "Completed", "Hiatus"]; const RATINGS = [ { label: "8.5+ Stars", value: 8.5 }, { label: "7.0+ Stars", value: 7.0 }, { label: "5.0+ Stars", value: 5.0 }, { label: "All Ratings", value: 0 }, ]; export function FilterSidebar({ selectedGenres, selectedStatus, minRating, userFavorites, showAdultContent, onGenresChange, onStatusChange, onRatingChange, onUserFavoritesChange, onShowAdultContentChange, }: FilterSidebarProps) { const { data: genresData, isPending: isPendingGenres } = useGetGenres(); const { isAuthenticated } = useAuth(); const toggleGenre = (genre: number) => { if (selectedGenres.includes(genre)) { onGenresChange(selectedGenres.filter((g) => g !== genre)); } else { onGenresChange([...selectedGenres, genre]); } }; const toggleStatus = (status: string) => { if (selectedStatus.includes(status)) { onStatusChange(selectedStatus.filter((s) => s !== status)); } else { onStatusChange([...selectedStatus, status]); } }; const clearAllFilters = () => { onGenresChange([]); onStatusChange([]); onRatingChange(0); onUserFavoritesChange(false); onShowAdultContentChange(false); }; const hasActiveFilters = selectedGenres.length > 0 || selectedStatus.length > 0 || minRating > 0 || userFavorites; return ( ); }