{"version":3,"sources":["../src/accordion/accordion-item.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { forwardRef, useId, useState } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { AccordionItemContext } from \"./context\";\nimport type { AccordionHeaderProps } from \"./accordion-header\";\nimport type { AccordionContentProps } from \"./accordion-content\";\n\nexport type AccordionItemChildrenType =\n  | ReactElement<AccordionHeaderProps>\n  | ReactElement<AccordionContentProps>;\n\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * Control the open state of the accordion manually\n   */\n  open?: boolean;\n\n  /**\n   * Use with open to control the open state of the accordion manually\n   */\n  onOpenChange?: (open: boolean) => void;\n\n  /**\n   * If the accordion should be open by default\n   */\n  defaultOpen?: boolean;\n\n  /**\n   * Accepts type of Accordion.Content and Accordion.Header\n   */\n  children: AccordionItemChildrenType[];\n}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n  ({ children, defaultOpen, open: outerOpen, onOpenChange, className, ...rest }, ref) => {\n    const contentId = useId();\n    const [innerOpen, setInnerOpen] = useState(defaultOpen ?? false);\n    const open = outerOpen ?? innerOpen;\n\n    const handleOpen = () => {\n      if (outerOpen !== undefined) {\n        onOpenChange && onOpenChange(!open);\n      } else {\n        setInnerOpen(!open);\n      }\n    };\n\n    return (\n      <div\n        {...rest}\n        data-state={open ? \"open\" : \"closed\"}\n        className={clsx(\"hds-accordion-item\", className as undefined)}\n        ref={ref}\n      >\n        <AccordionItemContext.Provider value={{ contentId, open, setOpen: handleOpen }}>\n          {children}\n        </AccordionItemContext.Provider>\n      </div>\n    );\n  },\n);\n\nAccordionItem.displayName = \"Accordion.Item\";\n"],"mappings":";;;;;;;;;;AACA,SAAS,YAAY,OAAO,gBAAgB;AAC5C,SAAS,YAAY;AAoDb;AArBD,IAAM,gBAAgB;AAAA,EAC3B,CAAC,IAA8E,QAAQ;AAAtF,iBAAE,YAAU,aAAa,MAAM,WAAW,cAAc,UAlC3D,IAkCG,IAAsE,iBAAtE,IAAsE,CAApE,YAAU,eAAa,QAAiB,gBAAc;AACvD,UAAM,YAAY,MAAM;AACxB,UAAM,CAAC,WAAW,YAAY,IAAI,SAAS,oCAAe,KAAK;AAC/D,UAAM,OAAO,gCAAa;AAE1B,UAAM,aAAa,MAAM;AACvB,UAAI,cAAc,QAAW;AAC3B,wBAAgB,aAAa,CAAC,IAAI;AAAA,MACpC,OAAO;AACL,qBAAa,CAAC,IAAI;AAAA,MACpB;AAAA,IACF;AAEA,WACE;AAAA,MAAC;AAAA,uCACK,OADL;AAAA,QAEC,cAAY,OAAO,SAAS;AAAA,QAC5B,WAAW,KAAK,sBAAsB,SAAsB;AAAA,QAC5D;AAAA,QAEA,8BAAC,qBAAqB,UAArB,EAA8B,OAAO,EAAE,WAAW,MAAM,SAAS,WAAW,GAC1E,UACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;","names":[]}