"use client"; import { useState } from "react"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { signOut } from "next-auth/react"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { LayoutDashboard, Wallet, Tags, BarChart3, Upload, ChevronLeft, ChevronRight, Settings, Wand2, LogOut, } from "lucide-react"; import { toast } from "sonner"; import { Sheet, SheetContent } from "@/components/ui/sheet"; import { useIsMobile } from "@/hooks/use-mobile"; const navItems = [ { href: "/", label: "Tableau de bord", icon: LayoutDashboard }, { href: "/accounts", label: "Comptes", icon: Wallet }, { href: "/transactions", label: "Transactions", icon: Upload }, { href: "/categories", label: "Catégories", icon: Tags }, { href: "/rules", label: "Règles", icon: Wand2 }, { href: "/statistics", label: "Statistiques", icon: BarChart3 }, ]; interface SidebarContentProps { collapsed?: boolean; onNavigate?: () => void; } function SidebarContent({ collapsed = false, onNavigate, showHeader = false }: SidebarContentProps & { showHeader?: boolean }) { const pathname = usePathname(); const router = useRouter(); const handleSignOut = async () => { try { await signOut({ redirect: false }); toast.success("Déconnexion réussie"); router.push("/login"); router.refresh(); } catch (error) { console.error("Error signing out:", error); toast.error("Erreur lors de la déconnexion"); } }; const handleLinkClick = () => { onNavigate?.(); }; return ( <> {showHeader && (
{!collapsed && (
FinTrack
)}
)}
); } interface SidebarProps { open?: boolean; onOpenChange?: (open: boolean) => void; } export function Sidebar({ open, onOpenChange }: SidebarProps) { const [collapsed, setCollapsed] = useState(false); const isMobile = useIsMobile(); if (isMobile) { return (
onOpenChange?.(false)} />
); } return ( ); }