God Agent OS
feat(v11): Complete God Mode upgrade - Theme, Language, Computer Use, Real Backend
bbcfe72 | 'use client' | |
| import { MessageSquare, LayoutDashboard, Box, Bot, ListTodo, Brain, BookOpen, GitBranch, BarChart2, Settings, Zap, Plug, MonitorPlay } from 'lucide-react' | |
| import { useAppStore } from '@/store/useAppStore' | |
| import type { Page } from '@/store/useAppStore' | |
| interface NavItem { | |
| id: Page | |
| label: string | |
| labelMy: string | |
| icon: React.ElementType | |
| } | |
| const NAV_ITEMS: NavItem[] = [ | |
| { id: 'chat', label: 'Chat', labelMy: 'စကားပြော', icon: MessageSquare }, | |
| { id: 'dashboard', label: 'Dashboard', labelMy: 'Dashboard', icon: LayoutDashboard }, | |
| { id: 'spaces', label: 'Spaces', labelMy: 'Spaces (22)', icon: Box }, | |
| { id: 'agents', label: 'Agents', labelMy: 'Agent (16)', icon: Bot }, | |
| { id: 'connectors', label: 'Connectors', labelMy: 'ချိတ်ဆက်မှု', icon: Plug }, | |
| { id: 'tasks', label: 'Tasks', labelMy: 'လုပ်ငန်းများ', icon: ListTodo }, | |
| { id: 'memory', label: 'Memory', labelMy: 'မှတ်ဉာဏ်', icon: Brain }, | |
| { id: 'knowledge', label: 'Knowledge', labelMy: 'ဗဟုသုတ', icon: BookOpen }, | |
| { id: 'workflows', label: 'Workflows', labelMy: 'Workflow', icon: GitBranch }, | |
| { id: 'analytics', label: 'Analytics', labelMy: 'Analytics', icon: BarChart2 }, | |
| { id: 'settings', label: 'Settings', labelMy: 'ဆက်တင်', icon: Settings }, | |
| ] | |
| export default function Sidebar() { | |
| const { currentPage, setCurrentPage, sidebarOpen, locale, isComputerUseOpen, setComputerUseOpen } = useAppStore() | |
| if (!sidebarOpen) return null | |
| return ( | |
| <aside | |
| className="w-52 shrink-0 flex flex-col h-full overflow-y-auto" | |
| style={{ background: 'var(--surface-1)', borderRight: '1px solid var(--border)' }} | |
| > | |
| {/* Logo */} | |
| <div className="p-3 shrink-0" style={{ borderBottom: '1px solid var(--border)' }}> | |
| <div className="flex items-center gap-2"> | |
| <div className="w-8 h-8 rounded-xl flex items-center justify-center shadow-lg" | |
| style={{ background: 'linear-gradient(135deg, var(--accent), #4f46e5)', boxShadow: '0 4px 12px rgba(124,58,237,0.3)' }}> | |
| <Zap size={16} className="text-white" /> | |
| </div> | |
| <div> | |
| <div className="text-xs font-bold text-white">GOD AGENT OS</div> | |
| <div className="text-[9px] font-medium" style={{ color: 'var(--accent-bright)' }}> | |
| v11 · God Mode | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| {/* Navigation */} | |
| <nav className="p-2 flex-1"> | |
| <div className="space-y-0.5"> | |
| {NAV_ITEMS.map(item => { | |
| const Icon = item.icon | |
| const active = currentPage === item.id | |
| return ( | |
| <button | |
| key={item.id} | |
| onClick={() => setCurrentPage(item.id)} | |
| className={`nav-item w-full text-left ${active ? 'active' : ''}`} | |
| > | |
| <Icon size={13} /> | |
| {locale === 'my' ? item.labelMy : item.label} | |
| {item.id === 'chat' && active && ( | |
| <span className="ml-auto w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse" /> | |
| )} | |
| </button> | |
| ) | |
| })} | |
| </div> | |
| {/* Computer Use Shortcut */} | |
| <div className="mt-3 pt-3" style={{ borderTop: '1px solid var(--border)' }}> | |
| <button | |
| onClick={() => setComputerUseOpen(!isComputerUseOpen)} | |
| className={`nav-item w-full text-left ${isComputerUseOpen ? 'active' : ''}`} | |
| > | |
| <MonitorPlay size={13} /> | |
| {locale === 'my' ? 'Computer ကြည့်' : 'Computer Use'} | |
| {isComputerUseOpen && ( | |
| <span className="ml-auto text-[9px] px-1.5 py-0.5 rounded-full" | |
| style={{ background: 'rgba(124,58,237,0.12)', color: 'var(--accent-bright)' }}> | |
| Live | |
| </span> | |
| )} | |
| </button> | |
| </div> | |
| </nav> | |
| {/* Footer */} | |
| <div className="p-3 shrink-0" style={{ borderTop: '1px solid var(--border)' }}> | |
| <div className="flex items-center gap-2"> | |
| <div className="w-2 h-2 rounded-full bg-green-400 animate-pulse" /> | |
| <span className="text-[10px]" style={{ color: 'var(--text-muted)' }}> | |
| {locale === 'my' ? '16 Agent Online' : '16 Agents Online'} | |
| </span> | |
| </div> | |
| <div className="text-[9px] mt-1" style={{ color: 'var(--text-muted)' }}> | |
| {locale === 'my' ? 'Gemini · SambaNova · GitHub' : 'Gemini · SambaNova · GitHub'} | |
| </div> | |
| </div> | |
| </aside> | |
| ) | |
| } | |