import { Outlet, Link, useNavigate, useLocation } from "react-router-dom"; import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar"; import { Sidebar, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarHeader, SidebarFooter, SidebarSeparator, useSidebar, } from "@/components/ui/sidebar"; import { NavLink } from "@/components/NavLink"; import { useAuth, UserRole } from "@/contexts/AuthContext"; import NotificationDropdown from "@/components/NotificationDropdown"; import { ThemeToggle } from "@/components/ThemeToggle"; import { LanguageToggle } from "@/components/LanguageToggle"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { LogOut, User, Settings, LucideIcon } from "lucide-react"; import React from "react"; export interface NavItem { title: string; url: string; icon: LucideIcon; } export interface NavGroup { label: string; items: NavItem[]; } interface RoleLayoutProps { navGroups: NavGroup[]; role: UserRole; } function SidebarNav({ navGroups }: { navGroups: NavGroup[] }) { const { state } = useSidebar(); const collapsed = state === "collapsed"; return ( <> {navGroups.map((group) => ( {group.label} {group.items.map((item) => ( {!collapsed && {item.title}} ))} ))} ); } export default function RoleLayout({ navGroups, role }: RoleLayoutProps) { const { user, logout } = useAuth(); const navigate = useNavigate(); const initials = user?.name?.split(" ").map(w => w[0]).join("").slice(0, 2).toUpperCase() ?? "??"; const handleLogout = async () => { await logout(); navigate("/login"); }; return (
EnCoach EnCoach — Unlock your potential with AI powered platform
{initials}
{user?.name} {user?.email}
{role} Portal

{user?.name}

{user?.email}

navigate(`/${role}/profile`)}> Profile Logout
); }