'use client' import { useState, useEffect } from 'react' import Link from 'next/link' import Image from 'next/image' import { usePathname } from 'next/navigation' import { cn } from '@/lib/utils' import { Button } from '@/components/ui/button' import { useAuth } from '@/lib/hooks/use-auth' import { useSidebarStore } from '@/lib/stores/sidebar-store' import { useCreateDialogs } from '@/lib/hooks/use-create-dialogs' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { ThemeToggle } from '@/components/common/ThemeToggle' import { Separator } from '@/components/ui/separator' import { Book, Search, Mic, Bot, Shuffle, Settings, LogOut, ChevronLeft, Menu, FileText, Plus, Wrench, Command, GraduationCap, FlaskConical, Network, Bell, ScanLine, CalendarDays, Sparkles, } from 'lucide-react' const navigation = [ { title: 'Collect', items: [ { name: 'Sources', href: '/sources', icon: FileText }, { name: 'Note Scanner', href: '/scanner', icon: ScanLine }, ], }, { title: 'Process', items: [ { name: 'Notebooks', href: '/notebooks', icon: Book }, { name: 'Ask and Search', href: '/search', icon: Search }, { name: 'Research Lab', href: '/research', icon: FlaskConical }, { name: 'Visualize', href: '/visualize', icon: Sparkles }, ], }, { title: 'Learn', items: [ { name: 'Study Center', href: '/study', icon: GraduationCap }, { name: 'Study Planner', href: '/study-planner', icon: CalendarDays }, { name: 'Knowledge Graph', href: '/knowledge-graph', icon: Network }, ], }, { title: 'Monitor', items: [ { name: 'Source Updates', href: '/updates', icon: Bell }, ], }, { title: 'Create', items: [ { name: 'Podcasts', href: '/podcasts', icon: Mic }, ], }, { title: 'Manage', items: [ { name: 'Models', href: '/models', icon: Bot }, { name: 'Transformations', href: '/transformations', icon: Shuffle }, { name: 'Settings', href: '/settings', icon: Settings }, { name: 'Advanced', href: '/advanced', icon: Wrench }, ], }, ] as const type CreateTarget = 'source' | 'notebook' | 'podcast' export function AppSidebar() { const pathname = usePathname() const { logout } = useAuth() const { isCollapsed, toggleCollapse } = useSidebarStore() const { openSourceDialog, openNotebookDialog, openPodcastDialog } = useCreateDialogs() const [createMenuOpen, setCreateMenuOpen] = useState(false) const [isMac, setIsMac] = useState(true) // Default to Mac for SSR // Detect platform for keyboard shortcut display useEffect(() => { setIsMac(navigator.platform.toLowerCase().includes('mac')) }, []) const handleCreateSelection = (target: CreateTarget) => { setCreateMenuOpen(false) if (target === 'source') { openSourceDialog() } else if (target === 'notebook') { openNotebookDialog() } else if (target === 'podcast') { openPodcastDialog() } } return (
{isCollapsed ? (
Open Notebook
) : ( <>
Open Notebook Open Notebook
)}
{/* Command Palette hint */} {!isCollapsed && (
Quick actions {isMac ? : Ctrl+}K

Navigation, search, ask, theme

)}
{isCollapsed ? (
Theme
) : ( )}
{isCollapsed ? ( Sign Out ) : ( )}
) }