import { Link, useMatches } from '@tanstack/react-router' import { route } from '@/constants/routes' import { useTranslation } from 'react-i18next' import { useModelProvider } from '@/hooks/useModelProvider' const menuSettings = [ { title: 'common.general', route: route.settings.general, }, { title: 'common.appearance', route: route.settings.appearance, }, { title: 'common.privacy', route: route.settings.privacy, }, { title: 'common.keyboardShortcuts', route: route.settings.shortcuts, }, { title: 'Hardware', route: route.settings.hardware, }, { title: 'MCP Servers', route: route.settings.mcp_servers, }, { title: 'Local API Server', route: route.settings.local_api_server, }, { title: 'HTTPS Proxy', route: route.settings.https_proxy, }, { title: 'Extensions', route: route.settings.extensions, }, ] const SettingsMenu = () => { const { t } = useTranslation() const { providers } = useModelProvider() const firstItemProvider = providers.length > 0 ? providers[0].provider : 'llama.cpp' const matches = useMatches() const isActive = matches.some( (match) => match.routeId === '/settings/providers/$providerName' && 'providerName' in match.params ) return (
{menuSettings.map((menu, index) => { // Render the menu item const menuItem = ( {t(menu.title)} ) if (index === 2) { return (
{menuItem} {/* Model Providers Link with default parameter */} {isActive ? (
{t('common.modelProviders')}
) : ( {t('common.modelProviders')} )}
) } // For other menu items, just render them normally return menuItem })}
) } export default SettingsMenu