import React from 'react' import { useLocation, useNavigate } from '@tanstack/react-router' import { ArrowRight, ChevronRight, Laptop, Moon, Sun } from 'lucide-react' import { useTranslation } from 'react-i18next' import { useSearch } from '@/context/search-provider' import { useTheme } from '@/context/theme-provider' import { useSidebarData } from '@/hooks/use-sidebar-data' import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from '@/components/ui/command' import { getNavGroupsForPath } from './layout/lib/workspace-registry' import { ScrollArea } from './ui/scroll-area' export function CommandMenu() { const { t } = useTranslation() const navigate = useNavigate() const { setTheme } = useTheme() const { open, setOpen } = useSearch() const { pathname } = useLocation() const sidebarData = useSidebarData() // 根据当前路径从工作区注册表获取对应的侧边栏配置 const navGroups = getNavGroupsForPath(pathname, t) || sidebarData.navGroups const runCommand = React.useCallback( (command: () => unknown) => { setOpen(false) command() }, [setOpen] ) return ( {t('No results found.')} {navGroups.map((group) => ( {group.items.map((navItem, i) => { if (navItem.url) return ( { runCommand(() => navigate({ to: navItem.url })) }} >
{navItem.title}
) return navItem.items?.map((subItem, i) => ( { runCommand(() => navigate({ to: subItem.url })) }} >
{navItem.title} {subItem.title}
)) })}
))} runCommand(() => setTheme('light'))}> {t('Light')} runCommand(() => setTheme('dark'))}> {t('Dark')} runCommand(() => setTheme('system'))}> {t('System')}
) }