"use client"; import { CheckCircle2, CircleAlert } from "lucide-react"; import { Spinner } from "@/components/ui/spinner"; import { cn } from "@/lib/utils"; import type { NavItem } from "../../types/layout.types"; import { SidebarButton } from "./SidebarButton"; 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 ; } function CollapsedOverlay({ item }: { item: NavItem }) { const indicator = item.statusIndicator; if (indicator && indicator !== "idle") { return ; } if (item.badge) { return ( {item.badge} ); } return null; } export function NavSection({ items, onItemClick, isCollapsed = false }: NavSectionProps) { return (
{items.map((item) => { const joyrideAttr = item.title === "Inbox" || item.title.toLowerCase().includes("inbox") ? { "data-joyride": "inbox-sidebar" as const } : {}; return ( onItemClick?.(item)} isCollapsed={isCollapsed} isActive={item.isActive} badge={item.badge} collapsedOverlay={} expandedIconNode={ } buttonProps={joyrideAttr} /> ); })}
); }