import { useId, useState, type ReactNode } from "react" import { ChevronRight } from "lucide-react" import { cx } from "@/lib/cx" export interface AccordionProps { title: ReactNode meta?: ReactNode icon?: ReactNode defaultOpen?: boolean open?: boolean onOpenChange?: (open: boolean) => void className?: string children: ReactNode } /** * Top-level elevated accordion (type groups, pantry categories). * Bevel/fill use rounded-[inherit] so radius tokens stay consistent. */ export function Accordion({ title, meta, icon, defaultOpen = false, open: controlledOpen, onOpenChange, className, children, }: AccordionProps) { const reactId = useId() const panelId = `acc-panel-${reactId}` const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen) const isControlled = controlledOpen !== undefined const open = isControlled ? controlledOpen : uncontrolledOpen function toggle() { const next = !open if (!isControlled) setUncontrolledOpen(next) onOpenChange?.(next) } return (