import { useState, useEffect } from "react"; import { Activity, BarChart3, Clock, FileText, KeyRound, MessageSquare, Package, Settings } from "lucide-react"; import StatusPage from "@/pages/StatusPage"; import ConfigPage from "@/pages/ConfigPage"; import EnvPage from "@/pages/EnvPage"; import SessionsPage from "@/pages/SessionsPage"; import LogsPage from "@/pages/LogsPage"; import AnalyticsPage from "@/pages/AnalyticsPage"; import CronPage from "@/pages/CronPage"; import SkillsPage from "@/pages/SkillsPage"; const NAV_ITEMS = [ { id: "status", label: "Status", icon: Activity }, { id: "sessions", label: "Sessions", icon: MessageSquare }, { id: "analytics", label: "Analytics", icon: BarChart3 }, { id: "logs", label: "Logs", icon: FileText }, { id: "cron", label: "Cron", icon: Clock }, { id: "skills", label: "Skills", icon: Package }, { id: "config", label: "Config", icon: Settings }, { id: "env", label: "Keys", icon: KeyRound }, ] as const; type PageId = (typeof NAV_ITEMS)[number]["id"]; const PAGE_COMPONENTS: Record = { status: StatusPage, sessions: SessionsPage, analytics: AnalyticsPage, logs: LogsPage, cron: CronPage, skills: SkillsPage, config: ConfigPage, env: EnvPage, }; export default function App() { const [page, setPage] = useState("status"); const [animKey, setAnimKey] = useState(0); useEffect(() => { setAnimKey((k) => k + 1); }, [page]); const PageComponent = PAGE_COMPONENTS[page]; return (
{/* Global grain + warm glow (matches landing page) */}
{/* ---- Header with grid-border nav ---- */}
{/* Brand */}
Hermes
Agent
{/* Nav grid — Mondwest labels like the landing page nav */} {/* Version badge */}
Web UI
{/* ---- Footer ---- */}
); }