// Caminho: config/dashboard.config.ts import { Home, Calendar, Clock, User, FileText } from "lucide-react"; import type { MenuItem, UserProfile } from "@/components/layout/DashboardLayout"; // Função auxiliar para criar o fallback do avatar const createAvatarFallback = (name: string = ""): string => { return name.split(" ").map((n) => n[0]).join("").toUpperCase(); }; // Função para extrair o perfil do usuário de forma padronizada const getProfile = (userInfo: any, roleDefaults: { name: string, secondaryText: string }): UserProfile => { const name = userInfo.user_metadata?.full_name || roleDefaults.name; return { name: name, secondaryText: userInfo.user_metadata?.specialty || userInfo.user_metadata?.department || userInfo.email || roleDefaults.secondaryText, avatarFallback: createAvatarFallback(name), }; }; interface RoleConfig { menuItems: MenuItem[]; getUserProfile: (userInfo: any) => UserProfile; } export const dashboardConfig: Record = { doctor: { menuItems: [ { href: "/medicos/doctor/dashboard", icon: Home, label: "Dashboard" }, { href: "/medicos/doctor/medicos/consultas", icon: Calendar, label: "Consultas" }, { href: "/medicos/doctor/[id]/laudos", icon: Clock, label: "Editor de Laudo" }, { href: "/medicos/doctor/medicos", icon: User, label: "Pacientes" }, { href: "/medicos/doctor/disponibilidade", icon: Calendar, label: "Disponibilidade" }, ], getUserProfile: (userInfo) => getProfile(userInfo, { name: "Doutor(a)", secondaryText: "Especialidade" }), }, patient: { menuItems: [ { href: "/patient/dashboard", icon: Home, label: "Dashboard" }, { href: "/patient/appointments", icon: Calendar, label: "Minhas Consultas" }, { href: "/patient/schedule", icon: Clock, label: "Agendar Consulta" }, { href: "/patient/reports", icon: FileText, label: "Meus Laudos" }, { href: "/patient/profile", icon: User, label: "Meus Dados" }, ], getUserProfile: (userInfo) => getProfile(userInfo, { name: "Paciente", secondaryText: "Área do Paciente" }), }, secretary: { menuItems: [ { href: "/manager/dashboard", icon: Home, label: "Dashboard" }, { href: "/manager/relatorios", 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/configuracoes", icon: Calendar, label: "Configurações" }, ], getUserProfile: (userInfo) => getProfile(userInfo, { name: "Secretária", secondaryText: "Atendimento" }), }, manager: { 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: "#", icon: Calendar, label: "Configurações" }, ], getUserProfile: (userInfo) => getProfile(userInfo, { name: "Gestor(a)", secondaryText: "Gestão" }), }, financier: { menuItems: [ { href: "#", icon: Home, label: "Dashboard" }, { href: "#", icon: Calendar, label: "Relatórios financeiros" }, { href: "#", icon: User, label: "Finanças Gerais" }, { href: "#", icon: Calendar, label: "Configurações" }, ], getUserProfile: (userInfo) => getProfile(userInfo, { name: "Financeiro", secondaryText: "Departamento Financeiro" }), } };