"use client"; import { useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { Plus, Search, Pencil } from "lucide-react"; import { Button, buttonVariants } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Switch } from "@/components/ui/switch"; import DeleteDialog from "@/components/admin/delete-dialog"; import { cn } from "@/lib/utils"; import { toast } from "sonner"; type Guide = { id: string; title: string; slug: string; subtitle: string; category: string; order: number; published: boolean; createdAt: Date; }; const CATEGORY_STYLES: Record = { diagnostic: "bg-vine/10 text-vine border-vine/20", traitement: "bg-gold/10 text-gold border-gold/20", cepages: "bg-[#A78BFA]/10 text-[#A78BFA] border-[#A78BFA]/20", general: "bg-[#60A5FA]/10 text-[#60A5FA] border-[#60A5FA]/20", }; export default function GuidesClient({ guides }: { guides: Guide[] }) { const router = useRouter(); const [search, setSearch] = useState(""); const filtered = guides.filter( (g) => g.title.toLowerCase().includes(search.toLowerCase()) || g.category.toLowerCase().includes(search.toLowerCase()) ); async function handleDelete(id: string) { const res = await fetch(`/api/guides/${id}`, { method: "DELETE" }); if (!res.ok) { toast.error("Erreur lors de la suppression"); return; } toast.success("Guide supprime"); router.refresh(); } return (

Guides

{guides.length} guides

Ajouter
setSearch(e.target.value)} className="pl-9 rounded-xl bg-card border-[oklch(0.22_0.005_60)] text-cream placeholder:text-stone-700 focus:border-vine/40" />
Titre Categorie Ordre Publie Actions {filtered.map((guide) => (

{guide.title}

{guide.subtitle}

{guide.category} {guide.order}
handleDelete(guide.id)} />
))}
{filtered.length === 0 && (

Aucun guide trouve

)}
{/* Mobile cards */}
{filtered.map((guide) => (

{guide.title}

{guide.subtitle}

{guide.category} #{guide.order}
))}
); }