import { Link, useLocation, NavLink } from "react-router"; import { type ReactNode, useEffect, useState } from "react"; interface NavProps { children?: ReactNode; user?: { name: string; avatar?: string; }; onSignOut?: () => void; } export function Nav({ children, user, onSignOut }: NavProps) { const location = useLocation(); const [theme, setTheme] = useState<"dark" | "light">("dark"); useEffect(() => { const stored = localStorage.getItem("wren_theme") as | "dark" | "light" | null; if (stored) { setTheme(stored); document.documentElement.classList.toggle("light", stored === "light"); document.documentElement.classList.toggle("dark", stored === "dark"); } else if (window.matchMedia("(prefers-color-scheme: light)").matches) { setTheme("light"); document.documentElement.classList.add("light"); document.documentElement.classList.remove("dark"); } }, []); const toggleTheme = () => { const newTheme = theme === "dark" ? "light" : "dark"; setTheme(newTheme); localStorage.setItem("wren_theme", newTheme); document.documentElement.classList.toggle("light", newTheme === "light"); document.documentElement.classList.toggle("dark", newTheme === "dark"); }; const navItems = [ { path: "/", label: "Conversations" }, { path: "/pricing", label: "Pricing" }, { path: "/docs", label: "Docs" }, ]; return ( ); } export function NavItem({ href, label, isActive, onClick, }: { href?: string; label: string; isActive?: boolean; onClick?: () => void; }) { if (href) { return ( `nav-item ${active || isActive ? "active" : ""}` } onClick={onClick} aria-current={isActive ? "page" : undefined} > {label} ); } return ( ); }