{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "accordion",
  "type": "registry:ui",
  "title": "Accordion، AccordionItem",
  "description": "آکاردئون روی <details> بومی: بدون JavaScript، با کیبورد و صفحه‌خوان کامل",
  "registryDependencies": [
    "https://kashi.sepantapouya.com/r/cx.json"
  ],
  "files": [
    {
      "path": "registry/kashi/Accordion.tsx",
      "type": "registry:ui",
      "target": "components/kashi/Accordion.tsx",
      "content": "\"use client\";\n\nimport { createContext, useContext, useId, type DetailsHTMLAttributes, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"./cx\";\n\nconst AccCtx = createContext<{ name?: string }>({});\n\nexport interface AccordionProps extends HTMLAttributes<HTMLDivElement> {\n  /** «single»: باز شدن هر بخش بقیه را می‌بندد (با name مشترک روی details) @default \"multiple\" */\n  type?: \"single\" | \"multiple\";\n  /** بدون حاشیه و پس‌زمینه */\n  flush?: boolean;\n}\n\n/** آکاردئون روی <details> بومی: بدون JavaScript، با کیبورد و صفحه‌خوان کامل */\nexport function Accordion({ type = \"multiple\", flush, className, children, ...rest }: AccordionProps) {\n  const id = useId();\n  return (\n    <AccCtx.Provider value={{ name: type === \"single\" ? `k-acc-${id}` : undefined }}>\n      <div className={cx(\"k-accordion\", flush && \"k-accordion--flush\", className)} {...rest}>{children}</div>\n    </AccCtx.Provider>\n  );\n}\n\nexport interface AccordionItemProps extends Omit<DetailsHTMLAttributes<HTMLDetailsElement>, \"title\"> {\n  title: ReactNode;\n  defaultOpen?: boolean;\n  children: ReactNode;\n}\n\nexport function AccordionItem({ title, defaultOpen, className, children, ...rest }: AccordionItemProps) {\n  const { name } = useContext(AccCtx);\n  return (\n    <details className={cx(\"k-accordion__item\", className)} name={name} open={defaultOpen} {...rest}>\n      <summary className=\"k-accordion__trigger\">{title}</summary>\n      <div className=\"k-accordion__content\">{children}</div>\n    </details>\n  );\n}\n"
    }
  ]
}