"use client" import { useState } from "react" import { toast } from "sonner" import { MoreVertical, Pencil, Plus, Trash2 } from "lucide-react" import { AgendaCalendarDialog } from "@/components/agenda/agenda-calendar-dialog" import { AgendaMiniMonth } from "@/components/agenda/agenda-mini-month" import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Skeleton } from "@/components/ui/skeleton" import { useAgendaCalendars } from "@/lib/api/hooks/use-calendar-queries" import { useDeleteAgendaCalendar } from "@/lib/api/hooks/use-calendar-mutations" import { calendarColor } from "@/lib/agenda/agenda-events" import { useAgendaSettingsStore, useAgendaUIStore } from "@/lib/agenda/agenda-store" import type { AgendaCalendar } from "@/lib/agenda/agenda-types" import { useIsMobile } from "@/hooks/use-mobile" import { cn } from "@/lib/utils" export function AgendaSidebar({ selectedDate, onSelectDate, onCreateEvent, }: { selectedDate: Date onSelectDate: (date: Date) => void onCreateEvent: () => void }) { const isMobile = useIsMobile() const sidebarCollapsed = useAgendaUIStore((s) => s.sidebarCollapsed) const setSidebarCollapsed = useAgendaUIStore((s) => s.setSidebarCollapsed) const hiddenIds = useAgendaSettingsStore((s) => s.hiddenCalendarIds) const toggleCalendar = useAgendaSettingsStore((s) => s.toggleCalendarVisible) const { data: calendars, isLoading } = useAgendaCalendars() const deleteMutation = useDeleteAgendaCalendar() const [calendarDialogOpen, setCalendarDialogOpen] = useState(false) const [editingCalendar, setEditingCalendar] = useState(null) const [deletingCalendar, setDeletingCalendar] = useState(null) const open = !sidebarCollapsed const confirmDelete = async () => { if (!deletingCalendar) return try { await deleteMutation.mutateAsync({ id: deletingCalendar.id }) toast.success(`Agenda « ${deletingCalendar.display_name} » supprimé`) } catch { toast.error("Impossible de supprimer cet agenda") } finally { setDeletingCalendar(null) } } return ( <> { if (!o) setDeletingCalendar(null) }} > Supprimer « {deletingCalendar?.display_name} » ? Tous les événements de cet agenda seront définitivement supprimés. Annuler void confirmDelete()} > Supprimer ) }