import { useState, useEffect, useCallback } from "react"; import { NavLink, Link, useNavigate } from "react-router-dom"; import { useWorkspaceContext } from "../../context/WorkspaceContext"; import { useAuth } from "../../context/AuthContext"; import { getDashboardStats } from "../../api/dashboard"; import { DocWeaveLogo } from "../DocWeaveLogo"; import "./Sidebar.css"; export function Sidebar() { const [collapsed, setCollapsed] = useState(false); const navigate = useNavigate(); const { workspace } = useWorkspaceContext(); const { user, logout } = useAuth(); const [counts, setCounts] = useState({}); const loadCounts = useCallback(async () => { if (!workspace) return; try { const s = await getDashboardStats(workspace.id); if (s && !s.detail) setCounts(s); } catch { /* silent */ } }, [workspace]); useEffect(() => { loadCounts(); }, [loadCounts]); // Refresh counts every 30s useEffect(() => { const id = setInterval(loadCounts, 30000); return () => clearInterval(id); }, [loadCounts]); const NAV_ITEMS = [ { to: "/", label: "Dashboard", icon: "🏠", end: true }, { to: "/documents", label: "Documents", icon: "📄", count: counts.total_documents }, { to: "/knowledge", label: "Knowledge", icon: "🧠", count: counts.knowledge_items }, { to: "/search", label: "Search", icon: "🔍" }, { to: "/workflows", label: "Workflows", icon: "⚡", count: counts.workflows_waiting_for_review, countTone: "warning" }, { to: "/activity", label: "Activity", icon: "📋" }, { to: "/settings", label: "Settings", icon: "⚙" }, ]; return ( ); }