"use client"; import { useEffect, useState } from "react"; import { useAuth } from "@/hooks/use-auth"; import { getUser } from "@/lib/usersService"; import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "@/components/ui/sidebar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { UserProfileDialog } from "@/components/user-profile"; import { SettingsDialog } from "@/components/settings"; import { Home, FolderKanban, BarChart3, Settings, ChevronUp, LogOut, User, GanttChart, Loader2 } from "lucide-react"; // Datos del menú const items = [ { title: "Dashboard", url: "/", icon: Home, }, { title: "Proyectos", url: "/proyectos", icon: FolderKanban, }, { title: "Estadísticas", url: "/estadisticas", icon: BarChart3, }, { title: "Gantt", url: "/gantt", icon: GanttChart, }, ]; export function AppSidebar() { const { logout, user: authUser } = useAuth(); const [user, setUser] = useState({ name: "Cargando...", email: "", avatar: "/avatar.jpg", initials: "..." }); const [isProfileOpen, setIsProfileOpen] = useState(false); const [isSettingsOpen, setIsSettingsOpen] = useState(false); const [isLoggingOut, setIsLoggingOut] = useState(false); useEffect(() => { async function loadUser() { try { // Si tenemos usuario del auth, usarlo primero if (authUser) { setUser({ name: `${authUser.firstname} ${authUser.lastname}`, email: authUser.email, avatar: "/avatar.jpg", initials: `${authUser.firstname.charAt(0)}${authUser.lastname.charAt(0)}` }); } // Luego intentar cargar datos más completos const realUser = await getUser(); setUser({ name: `${realUser.firstname} ${realUser.lastname}`, email: realUser.email, avatar: "/avatar.jpg", initials: `${realUser.firstname.charAt(0)}${realUser.lastname.charAt(0)}` }); } catch (error) { console.error("Failed to load user:", error); // Si falla y tenemos authUser, mantener esos datos if (!authUser) { setUser(prev => ({ ...prev, name: "Usuario" })); } } } loadUser(); }, [authUser]); const handleLogout = async () => { setIsLoggingOut(true); try { await logout(); } catch (error) { console.error("Logout error:", error); } finally { setIsLoggingOut(false); } }; return ( {/* Header del Sidebar */}

Dolibarr

Gestión de Proyectos

{/* Menú de navegación */} Menú Principal {items.map((item) => ( {item.title} ))}
{/* Footer con Dropdown del Usuario */} {user.initials}
{user.name} {user.email}
{user.initials}
{user.name} {user.email}
setIsProfileOpen(true)}> Perfil setIsSettingsOpen(true)}> Ajustes {isLoggingOut ? ( <> Cerrando sesión... ) : ( <> Cerrar sesión )}
{/* Dialog de perfil de usuario */} {/* Dialog de ajustes */}
); }