// CÓDIGO REATORADO PARA: components/manager-layout.tsx "use client"; import type React from "react"; import { useState } from "react"; import { useRouter, usePathname } from "next/navigation"; import Link from "next/link"; import { useAuthLayout } from "@/hooks/useAuthLayout"; // 1. Importamos nosso novo hook import { api } from "@/services/api.mjs"; // Componentes da UI (Button, Avatar, etc.) import { Button } from "@/components/ui/button"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Home, Calendar, User, LogOut, ChevronLeft, ChevronRight, Bell } from "lucide-react"; import { Badge } from "./ui/badge"; export default function ManagerLayout({ children }: { children: React.ReactNode }) { // 2. Usamos o hook para buscar o usuário e controlar o acesso const { user, isLoading } = useAuthLayout({ requiredRole: 'gestor' }); const [sidebarCollapsed, setSidebarCollapsed] = useState(false); const [showLogoutDialog, setShowLogoutDialog] = useState(false); const router = useRouter(); const pathname = usePathname(); const confirmLogout = async () => { await api.logout(); setShowLogoutDialog(false); router.push("/"); }; const menuItems = [ { href: "/manager/dashboard", icon: Home, label: "Dashboard" }, { href: "#", icon: Calendar, label: "Relatórios gerenciais" }, { href: "/manager/usuario", icon: User, label: "Gestão de Usuários" }, { href: "/manager/home", icon: User, label: "Gestão de Médicos" }, { href: "/manager/patientes", icon: User, label: "Gestão de patientes" }, { href: "#", icon: Calendar, label: "Configurações" }, ]; // 3. Enquanto o hook está carregando, mostramos uma tela de loading if (isLoading || !user) { return
Carregando...
; } // O resto do seu JSX continua igual, mas agora usando a variável 'user' do hook return (
{/* Header da Sidebar */}
{!sidebarCollapsed && (
MediConnect
)}
{/* Menu */} {/* Rodapé com Avatar e Logout */}
{/* 4. A LÓGICA DO AVATAR AGORA É APLICADA AQUI */} {user.name.split(" ").map((n) => n[0]).join("")} {!sidebarCollapsed && (

{user.name}

{user.roles.join(', ')}

)}
{/* Main Content */}
{children}
{/* Dialog de Logout */} Confirmar Saída Deseja realmente sair do sistema?
); }