import { useEffect, useState } from 'react'; import type { Page } from '../types'; import { t } from '../i18n'; interface SidebarProps { activePage: Page; onNavigate: (page: Page) => void; sessionCount: number; } interface NavItem { page: Page; labelKey: string; icon: string; } const NAV_ITEMS: NavItem[] = [ { page: 'chat', labelKey: 'nav.chat', icon: '๐Ÿ’ฌ' }, { page: 'history', labelKey: 'nav.history', icon: '๐Ÿ“‹' }, { page: 'projects', labelKey: 'nav.projects', icon: '๐Ÿ›๏ธ' }, { page: 'skills', labelKey: 'nav.skills', icon: 'โšก' }, { page: 'memory', labelKey: 'nav.memory', icon: '๐Ÿง ' }, { page: 'agents', labelKey: 'nav.agents', icon: '๐Ÿค–' }, { page: 'mcp', labelKey: 'nav.mcp', icon: '๐Ÿ”Œ' }, { page: 'secrets', labelKey: 'nav.secrets', icon: '๐Ÿ”‘' }, { page: 'tasks', labelKey: 'nav.tasks', icon: 'โฐ' }, { page: 'config', labelKey: 'nav.config', icon: '๐Ÿ› ๏ธ' }, { page: 'settings', labelKey: 'nav.settings', icon: 'โš™๏ธ' }, { page: 'channels', labelKey: 'nav.channels', icon: '๐Ÿ“ก' }, { page: 'roles', labelKey: 'nav.roles', icon: '๐ŸŽญ' }, { page: 'executions', labelKey: 'nav.executions', icon: '๐Ÿš€' }, { page: 'goals', labelKey: 'nav.goals', icon: '๐ŸŽฏ' }, { page: 'lineages', labelKey: 'nav.lineages', icon: '๐ŸŒณ' }, ]; export default function Sidebar({ activePage, onNavigate, sessionCount }: SidebarProps) { const [version, setVersion] = useState('...'); useEffect(() => { fetch('/api/health') .then((r) => r.json()) .then((data: { version?: string }) => { if (data.version) setVersion(data.version); }) .catch(() => {}); }, []); return ( ); }