import { type ReactNode, useState } from 'react' import { DisclosureCaret } from '@/components/ui/disclosure-caret' interface StatusSectionProps { /** Optional right-aligned actions (text links / micro buttons). Pass * `Button` with `size="micro"` + `variant="text"` or `"link"`. */ accessory?: ReactNode children: ReactNode defaultCollapsed?: boolean /** Optional glyph between the caret and the label (e.g. a `Codicon`). */ icon?: ReactNode label: ReactNode } /** * One collapsible group inside the composer status stack. Pure chrome — header * (caret + label) + body — styled to match the queue exactly so every status * (queue, subagents, background) reads as one piece. The stack supplies the * outer card and the dividers between groups; this owns only its own collapse. */ export function StatusSection({ accessory, children, defaultCollapsed = true, icon, label }: StatusSectionProps) { const [collapsed, setCollapsed] = useState(defaultCollapsed) return (
{accessory &&
{accessory}
}
{!collapsed &&
{children}
}
) }