import { useState } from "react"; import { Link, NavLink, useLocation } from "react-router"; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, } from "~/components/ui/sheet"; import { Button } from "~/components/ui/button"; import { authClient } from "~/lib/auth-client"; import { UserMenu } from "~/components/UserMenu"; import { HelpCircle, MenuIcon, Settings } from "lucide-react"; const NAV_LINK_CLASS = "relative text-sm font-semibold uppercase tracking-wide text-muted-foreground px-3 py-2 transition-colors " + "after:content-[''] after:absolute after:bottom-0 after:left-3 after:right-3 after:h-[3px] " + "after:scale-x-0 hover:after:scale-x-100 after:transition-transform after:[background:var(--brackt-gradient)]"; function navLinkClass({ isActive }: { isActive: boolean }) { return `${NAV_LINK_CLASS}${isActive ? " !text-emerald-400" : ""}`; } function mobileNavLinkClass({ isActive }: { isActive: boolean }) { return `block px-4 py-2 text-lg font-medium rounded-md transition-colors${isActive ? " text-emerald-400" : " text-muted-foreground"}`; } interface NavbarProps { isAdmin: boolean; } export function Navbar({ isAdmin }: NavbarProps) { const [open, setOpen] = useState(false); const location = useLocation(); const { data: session } = authClient.useSession(); const signInHref = `/login?redirectTo=${encodeURIComponent(location.pathname)}`; const authSection = session ? ( ) : ( ); return (
{/* Left: Logo + Nav links */}
Brackt
{/* Desktop Right: Support + Admin icons + Auth */}
{isAdmin && ( )} {authSection}
{/* Mobile: icons + Auth + Hamburger */}
{isAdmin && ( )} {authSection} Menu
); }