import { useDevice } from "@core/stores/deviceStore.js"; import type { Page } from "@core/stores/deviceStore.js"; import { LucideIcon, MapIcon, MessageSquareIcon, SettingsIcon, LayersIcon, UsersIcon, EditIcon, LayoutGrid } from "lucide-react"; import { Subtle } from "@components/UI/Typography/Subtle.js"; import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; export interface SidebarProps { children?: React.ReactNode; } export const Sidebar = ({ children }: SidebarProps): JSX.Element => { const { hardware, nodes } = useDevice(); const myNode = nodes.get(hardware.myNodeNum); const { activePage, setActivePage, setDialogOpen } = useDevice(); interface NavLink { name: string; icon: LucideIcon; page: Page; } const pages: NavLink[] = [ { name: "Messages", icon: MessageSquareIcon, page: "messages" }, { name: "Map", icon: MapIcon, page: "map" }, { name: "Config", icon: SettingsIcon, page: "config" }, { name: "Channels", icon: LayersIcon, page: "channels" }, { name: "Peers", icon: UsersIcon, page: "peers" } ]; return (
{myNode?.user?.shortName ?? "UNK"} {myNode?.user?.longName ?? "UNK"}
{pages.map((link, index) => ( { setActivePage(link.page); }} active={link.page === activePage} /> ))} {children}
); };