"use client"; import { CheckCircle2, CircleAlert } from "lucide-react"; import { Spinner } from "@/components/ui/spinner"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import type { NavItem } from "../../types/layout.types"; interface NavSectionProps { items: NavItem[]; onItemClick?: (item: NavItem) => void; isCollapsed?: boolean; } function StatusBadge({ status }: { status: NavItem["statusIndicator"] }) { if (status === "processing") { return ( ); } if (status === "success") { return ( ); } if (status === "error") { return ( ); } return null; } function StatusIcon({ status, FallbackIcon, className, }: { status: NavItem["statusIndicator"]; FallbackIcon: NavItem["icon"]; className?: string; }) { if (status === "processing") { return ; } if (status === "success") { return ( ); } if (status === "error") { return ( ); } return ; } export function NavSection({ items, onItemClick, isCollapsed = false }: NavSectionProps) { return (
{items.map((item) => { const Icon = item.icon; const indicator = item.statusIndicator; const joyrideAttr = item.title === "Documents" || item.title.toLowerCase().includes("documents") ? { "data-joyride": "documents-sidebar" } : item.title === "Inbox" || item.title.toLowerCase().includes("inbox") ? { "data-joyride": "inbox-sidebar" } : {}; if (isCollapsed) { return ( {item.title} {item.badge && ` (${item.badge})`} ); } return ( ); })}
); }