"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { createClient } from "@/lib/supabase/client"; import Image from "next/image"; import { LayoutDashboard, Users, MessageSquare, CreditCard, Settings, Database, FileText, Shield, Bot, ChevronLeft, ChevronRight, LogOut, User, Mail, } from "lucide-react"; import type { User as SupabaseUser } from "@supabase/supabase-js"; const topLevelNavigation = [ { name: "Analytics", href: "/", icon: LayoutDashboard, }, ]; const navigationGroups = [ { name: "Données", items: [ { name: "Utilisateurs", href: "/users", icon: Users, }, { name: "Conversations", href: "/conversations", icon: MessageSquare, }, { name: "Messages", href: "/messages", icon: FileText, }, { name: "Transactions", href: "/transactions", icon: CreditCard, }, ], }, { name: "Système", items: [ { name: "Collections", href: "/collections", icon: Database, }, { name: "Agents", href: "/agents", icon: Bot, }, { name: "Rôles", href: "/roles", icon: Shield, }, { name: "Paramètres", href: "/settings", icon: Settings, }, ], }, ]; export function Sidebar() { const pathname = usePathname(); const router = useRouter(); const [collapsed, setCollapsed] = useState(false); const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const supabase = createClient(); useEffect(() => { const getUser = async () => { try { const { data: { user }, } = await supabase.auth.getUser(); setUser(user); } catch (error) { console.error( "Erreur lors de la récupération de l'utilisateur:", error ); setUser(null); } finally { setLoading(false); } }; getUser(); // Écouter les changements d'authentification const { data: { subscription }, } = supabase.auth.onAuthStateChange((event, session) => { setUser(session?.user || null); setLoading(false); }); return () => subscription.unsubscribe(); }, [supabase.auth]); const handleLogout = async () => { try { await supabase.auth.signOut(); router.push("/login"); router.refresh(); } catch (error) { console.error("Erreur lors de la déconnexion:", error); } }; // Ne pas afficher la sidebar si l'utilisateur n'est pas connecté ou en cours de chargement if (loading || !user) { return null; } return (
{/* Header */}
{!collapsed && (
Logo

Cercle GPT

Admin Dashboard

)}
{/* Navigation */} {/* Section utilisateur connecté */}
{/* Informations utilisateur */}
{!collapsed && (

Administrateur

{user.email}

)}
{/* Bouton de déconnexion */}
); }