import React from 'react'; import { BookOpen, Bot, LayoutGrid, MessageSquare, Moon, Search, Sun, Terminal } from 'lucide-react'; import { usePortalStore } from '../store/usePortalStore'; import type { RouteModeId } from '../types/telemetry'; import { Button } from './ui/button'; import { Tabs, TabsList, TabsTrigger } from './ui/tabs'; const MODES: Array<{ id: RouteModeId; label: string }> = [ { id: 'auto', label: '智能路由' }, { id: 'edge443', label: '443 免端口' }, { id: 'home10443', label: '10443 家宽' }, { id: 'lan', label: 'LAN 局域网' }, ]; export const TopRibbon: React.FC = () => { const { theme, resolvedTheme, routeMode, viewMode, telemetry, setTheme, toggleTheme, setRouteMode, setViewMode, setShowAgyModal, setShowWechatModal, setShowCmdPalette, } = usePortalStore(); return ( <> {/* ===================================================================== Tier 1: Standard AppShell Global Top Navbar (h-14, NEVER wraps!) Left: Brand + Radix Tabs (中控台 / Storybook) Far Right: Search (Cmd+K) + AGY Terminal + Theme Switcher ===================================================================== */}
{/* Left Group: Brand Logo + Official Radix Navigation Tabs */}
setViewMode('dashboard')} className="flex items-center gap-2.5 cursor-pointer" > Mac mini HomeLab
{/* View Switcher Tabs via @radix-ui/react-tabs */} setViewMode(v as 'dashboard' | 'agents' | 'storybook')} > 中控台 Agent 编排 Storybook 设计规范
{/* Far Right Group: Pinned to Right Edge (Search + AGY + Theme Switcher) */}
{/* Top-Right Theme Toggle (Pinned at Far Right Corner!) */}
{theme !== 'system' && ( )}
{/* ===================================================================== Tier 2: Subheader Telemetry & Route Mode Bar (Aligned with Grid) Left: 4 Hardware & Network Gauges Right: Route Mode Segmented Switcher via @radix-ui/react-tabs ===================================================================== */} {viewMode === 'dashboard' && (
{/* Left: System Telemetry Strip */}
M6 CPU
{telemetry.mini.cpu_pct}%
RAM
{telemetry.mini.mem_used_gb}G
NAS 余量
{telemetry.nas.free_tb} TB
SG 专线 {telemetry.network.sg_delay_ms > 0 ? `${telemetry.network.sg_delay_ms}ms` : '直连'}
{/* Right: Route Mode Switcher via @radix-ui/react-tabs */} setRouteMode(v as RouteModeId)} className="ml-auto" > {MODES.map((m) => ( {m.label} ))}
)} ); };