"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { getNavigation } from "@/constants/docsConfig"; import { DEFAULT_LANG } from "@/constants/languages"; import { ChevronDown, ChevronRight, BookOpen, Rocket, Terminal, Monitor, HelpCircle, MessageCircle, Layers, Plug, Cloud, Zap, Wallet, Gift, GitBranch, BarChart3, Code2, Sparkles, Server } from "lucide-react"; // Icons keyed by structural key (language-independent) const SECTION_ICONS = { gettingStarted: Rocket, providers: Layers, features: Zap, integration: Plug, deployment: Cloud, help: HelpCircle }; const ITEM_ICONS = { introduction: BookOpen, quickStart: Rocket, installation: Terminal, subscription: Sparkles, cheap: Wallet, free: Gift, smartRouting: GitBranch, combos: Layers, quotaTracking: BarChart3, claudeCode: Code2, codex: Code2, cursor: Code2, cline: Code2, roo: Code2, continue: Code2, otherTools: Plug, localhost: Monitor, cloud: Server, troubleshooting: HelpCircle, faq: MessageCircle }; export default function DocsSidebar({ isMobile = false, onClose, lang = DEFAULT_LANG }) { const pathname = usePathname(); const navigation = getNavigation(lang); const [openSections, setOpenSections] = useState(() => { if (typeof window === "undefined") return []; try { return JSON.parse(sessionStorage.getItem("sidebarOpen") || "[]"); } catch { return []; } }); useEffect(() => { sessionStorage.setItem("sidebarOpen", JSON.stringify(openSections)); }, [openSections]); const toggleSection = (index) => { setOpenSections(prev => prev.includes(index) ? prev.filter(i => i !== index) : [...prev, index] ); }; const buildHref = (slug) => (slug ? `/${lang}/${slug}` : `/${lang}`); const isActive = (slug) => pathname === buildHref(slug); const handleLinkClick = () => { if (isMobile && onClose) onClose(); }; return ( ); }