-
- {isSplitActive ? (
-
- ) : (
- {children}
- )}
-
+
+ {/* ===== TOP NAVIGATION BAR ===== */}
+
+ {/* Brand */}
+
+
+ {/* Main nav */}
+
+
+ {/* Spacer */}
+
+
+ {/* Right side controls */}
+
+
+
+ {isWindows &&
}
+
+
+
+ {/* ===== MAIN CONTENT AREA ===== */}
+
+
+
+
+ {chatListOpen && (
+
+ )}
+
+
+
+
+
+ {isSplitActive ? (
+
+ ) : (
+ {children}
+ )}
+
+
+ {isChatDetailRoute &&
}
- {isChatDetailRoute &&
}
@@ -537,3 +606,51 @@ export function AppShell({ children }: { children: React.ReactNode }) {
);
}
+
+// ===== INLINE NAV COMPONENTS =====
+
+function NavNavItem({ href, label, isActive }: { href: string; label: string; isActive: boolean }) {
+ return (
+
+
+
+ );
+}
+
+function NavRailSettingsButton({ pathname }: { pathname: string }) {
+ const isSettingsActive = pathname === "/settings" || pathname.startsWith("/settings/");
+ return (
+
+
+
+
+
+
+ Settings
+
+ );
+}
diff --git a/src/components/layout/ChatListPanel.tsx b/src/components/layout/ChatListPanel.tsx
index 9c8469e..cc8dca2 100644
--- a/src/components/layout/ChatListPanel.tsx
+++ b/src/components/layout/ChatListPanel.tsx
@@ -6,14 +6,8 @@ import Link from "next/link";
import { motion, AnimatePresence } from "motion/react";
import {
MagnifyingGlass,
- FileArrowDown,
- Plus,
FolderPlus,
- Lightning,
- Plug,
- Terminal,
- Image,
- WifiHigh,
+ Plus,
Gear,
} from "@/components/ui/icon";
import { Button } from "@/components/ui/button";
@@ -419,28 +413,17 @@ export function ChatListPanel({ open, width }: ChatListPanelProps) {
if (!open) return null;
- const navItems = [
- { href: "/skills", label: t('nav.skills' as TranslationKey), icon: Lightning },
- { href: "/mcp", label: t('nav.mcp' as TranslationKey), icon: Plug },
- { href: "/cli-tools", label: t('nav.cliTools' as TranslationKey), icon: Terminal },
- { href: "/gallery", label: t('nav.gallery' as TranslationKey), icon: Image },
- { href: "/bridge", label: t('nav.bridge' as TranslationKey), icon: WifiHigh },
- ];
-
return (