import { createFileRoute, Outlet, redirect, Link } from "@tanstack/react-router" import { useState } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Separator } from "@/components/ui/separator" import { ScrollArea } from "@/components/ui/scroll-area" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet" import { ModeToggle } from "@/components/mode-toggle" import { Menu, Bell, Search as SearchIcon, LayoutDashboard, GraduationCap, FileText, Settings, LogOut, } from "lucide-react" import { useSupabaseAuth } from "@/auth/supabase" export const Route = createFileRoute("/_authenticated")({ beforeLoad: ({ context }) => { if (!context.auth.isAuthenticated) { throw redirect({ to: "/login", search: { redirect: location.href } }) } }, component: Layout, }) const nav = [ { to: "/planes", label: "Planes", icon: GraduationCap }, { to: "/materias", label: "Materias", icon: FileText }, { to: "/dashboard", label: "Dashboard", icon: LayoutDashboard }, { to: "/ajustes", label: "Ajustes", icon: Settings }, ] function Layout() { const { auth } = Route.useRouteContext() const [query, setQuery] = useState("") return (
{/* Top bar */}
{/* Mobile menu */} { }} /> {/* Brand */} U La Salle · Ingeniería {/* Search */}
setQuery(e.target.value)} placeholder="Buscar…" className="w-64 pl-9" />
{/* Shell */}
{/* Sidebar (desktop) */} {/* Main content */}
) } function Sidebar({ onNavigate }: { onNavigate?: () => void }) { return (
U La Salle · Ingeniería
© {new Date().getFullYear()} La Salle
) } function UserMenu({ user }: { user: { name?: string; avatar?: string | null } }) { const auth = useSupabaseAuth() return ( {user.name} Perfil Ajustes Cerrar sesión ) }