"use client"; import { useState } from "react"; import { Check, X, Trash2, Mail, Phone } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Tabs, TabsList, TabsTrigger, } from "@/components/ui/tabs"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { useAdmin, Reservation } from "@/contexts/AdminContext"; import { toast } from "sonner"; const statusConfig: Record = { pending: { label: "En attente", variant: "secondary" }, confirmed: { label: "Confirmé", variant: "default" }, cancelled: { label: "Annulé", variant: "destructive" }, }; export default function AdminReservations() { const { reservations, updateReservationStatus, deleteReservation } = useAdmin(); const [filter, setFilter] = useState<"all" | Reservation["status"]>("all"); const [deleteId, setDeleteId] = useState(null); const filtered = reservations .filter((r) => filter === "all" || r.status === filter) .sort((a, b) => `${b.date}${b.time}`.localeCompare(`${a.date}${a.time}`)); const handleConfirm = (id: string) => { updateReservationStatus(id, "confirmed"); toast.success("Réservation confirmée"); }; const handleCancel = (id: string) => { updateReservationStatus(id, "cancelled"); toast.success("Réservation annulée"); }; const handleDelete = () => { if (deleteId) { deleteReservation(deleteId); toast.success("Réservation supprimée"); setDeleteId(null); } }; return (

Réservations

{reservations.length} réservation{reservations.length > 1 ? "s" : ""} au total

setFilter(v as typeof filter)}> Toutes En attente Confirmées Annulées Cliente Contact Service Date & Heure Statut Actions {filtered.length === 0 ? ( Aucune réservation ) : ( filtered.map((r) => ( {r.clientName}
{r.email}
{r.phone}
{r.service}
{new Date(r.date).toLocaleDateString("fr-FR", { day: "2-digit", month: "short", year: "numeric" })}
{r.time}
{statusConfig[r.status].label} {r.status !== "confirmed" && ( )} {r.status !== "cancelled" && ( )}
)) )}
!o && setDeleteId(null)}> Supprimer cette réservation ? Cette action est irréversible. Annuler Supprimer
); };