"use client"; import { useState } from "react"; import { ChevronDown } from "lucide-react"; interface CollapsibleSectionProps { title: string; count?: number; defaultOpen?: boolean; isOpen?: boolean; onToggle?: () => void; children: React.ReactNode; } /** * Shared collapsible section for admin pages. * Supports both controlled (isOpen/onToggle) and uncontrolled (defaultOpen) modes. */ export function CollapsibleSection({ title, count, defaultOpen = true, isOpen: controlledOpen, onToggle, children, }: CollapsibleSectionProps) { const [internalOpen, setInternalOpen] = useState(defaultOpen); const open = controlledOpen !== undefined ? controlledOpen : internalOpen; const toggle = onToggle ?? (() => setInternalOpen((v) => !v)); return (
{children}
); }