import { Link, useLocation } from '@tanstack/react-router' import { Inbox, Layers3, MessagesSquare, NotebookPen, Search, } from 'lucide-react' import { type ReactNode, useState } from 'react' import { Avatar, AvatarFallback } from '#/components/ui/avatar' import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarSeparator, } from '#/components/ui/sidebar' import { ConnectionManagerDialog } from '#/features/connections/connection-manager-dialog' type WorkspaceNavigationProps = { children?: ReactNode footer?: ReactNode hasTemporaryDecks?: boolean } export function WorkspaceNavigation({ children, footer, hasTemporaryDecks, }: WorkspaceNavigationProps) { const [managingAccounts, setManagingAccounts] = useState(false) const pathname = useLocation({ select: (location) => location.pathname }) const navigation = [ { title: '連絡', to: '/support', icon: MessagesSquare, active: pathname === '/support', }, { title: '記録', to: '/journal', icon: NotebookPen, active: pathname === '/journal', }, { title: 'リーダー', to: '/inbox', icon: Inbox, active: pathname === '/inbox', }, { title: 'Twitter Lite', to: '/deck', icon: Search, active: pathname === '/' || pathname === '/deck', }, ] as const return (
{navigation.map((item) => ( } className="size-10 justify-center p-0" > {item.title} ))} {children && ( <> {children} )} {footer && {footer}} setManagingAccounts(true)} > Y {managingAccounts && ( setManagingAccounts(false)} hasTemporaryDecks={hasTemporaryDecks} /> )}
) }