{"version":3,"file":"Collapse.mjs","names":["Collapse","Flexbox","AntdCollapse"],"sources":["../../src/Collapse/Collapse.tsx"],"sourcesContent":["'use client';\n\nimport { Collapse as AntdCollapse, ConfigProvider } from 'antd';\nimport { cx, useThemeMode } from 'antd-style';\nimport { ChevronDown } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { DEFAULT_PADDING, getPadding, styles, variants } from './style';\nimport type { CollapseProps } from './type';\n\nconst Collapse = memo<CollapseProps>(\n  ({\n    style,\n    variant = 'filled',\n    gap = 0,\n    className,\n    padding = DEFAULT_PADDING,\n    size,\n    collapsible = true,\n    items,\n    styles: customStyles,\n    classNames,\n    ref,\n    ...rest\n  }) => {\n    const { isDarkMode } = useThemeMode();\n\n    const antdItems = useMemo(\n      () =>\n        items.map(({ icon, desc, label, ...itemRest }) => {\n          let content = (\n            <div\n              className={cx(styles.title, !icon && !desc && classNames?.header, classNames?.title)}\n              style={{\n                ...(!icon && !desc ? customStyles?.header : {}),\n                ...customStyles?.title,\n              }}\n            >\n              {label}\n            </div>\n          );\n\n          if (icon) {\n            content = (\n              <Flexbox\n                horizontal\n                className={cx(styles.title, !desc && classNames?.header)}\n                gap={8}\n                style={desc ? undefined : customStyles?.header}\n              >\n                {isValidElement(icon) ? icon : <Icon icon={icon} size={{ size: '1.1em' }} />}\n                {content}\n              </Flexbox>\n            );\n          }\n\n          if (desc) {\n            content = (\n              <Flexbox className={classNames?.header} style={customStyles?.header}>\n                {content}\n                <div className={cx(styles.desc, classNames?.desc)} style={customStyles?.desc}>\n                  {desc}\n                </div>\n              </Flexbox>\n            );\n          }\n\n          return {\n            label: content,\n            ...itemRest,\n          };\n        }),\n      [items, classNames, customStyles, styles],\n    );\n\n    return (\n      <ConfigProvider\n        theme={{\n          components: {\n            Collapse: {\n              contentPadding: getPadding(typeof padding === 'object' ? padding?.body : padding),\n              headerPadding: getPadding(typeof padding === 'object' ? padding?.header : padding),\n            },\n          },\n        }}\n      >\n        <AntdCollapse\n          ghost\n          className={cx(variants({ collapsible, gap: !!gap, isDarkMode, variant }), className)}\n          collapsible={collapsible ? 'header' : 'icon'}\n          items={antdItems}\n          ref={ref}\n          size={size}\n          expandIcon={({ isActive }) => (\n            <Icon\n              className={styles.icon}\n              icon={ChevronDown}\n              size={16}\n              style={{ rotate: isActive ? undefined : '-90deg' }}\n            />\n          )}\n          style={{\n            gap,\n            ...style,\n          }}\n          {...rest}\n        />\n      </ConfigProvider>\n    );\n  },\n);\n\nCollapse.displayName = 'Collapse';\n\nexport default Collapse;\n"],"mappings":";;;;;;;;;;AAaA,MAAMA,aAAW,MACd,EACC,OACA,UAAU,UACV,MAAM,GACN,WACA,UAAU,iBACV,MACA,cAAc,MACd,OACA,QAAQ,cACR,YACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,cAAc;CAErC,MAAM,YAAY,cAEd,MAAM,KAAK,EAAE,MAAM,MAAM,OAAO,GAAG,eAAe;EAChD,IAAI,UACF,oBAAC,OAAD;GACE,WAAW,GAAG,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,YAAY,QAAQ,YAAY,MAAM;GACpF,OAAO;IACL,GAAI,CAAC,QAAQ,CAAC,OAAO,cAAc,SAAS,EAAE;IAC9C,GAAG,cAAc;IAClB;aAEA;GACG,CAAA;AAGR,MAAI,KACF,WACE,qBAACC,mBAAD;GACE,YAAA;GACA,WAAW,GAAG,OAAO,OAAO,CAAC,QAAQ,YAAY,OAAO;GACxD,KAAK;GACL,OAAO,OAAO,KAAA,IAAY,cAAc;aAJ1C,CAMG,eAAe,KAAK,GAAG,OAAO,oBAAC,MAAD;IAAY;IAAM,MAAM,EAAE,MAAM,SAAS;IAAI,CAAA,EAC3E,QACO;;AAId,MAAI,KACF,WACE,qBAACA,mBAAD;GAAS,WAAW,YAAY;GAAQ,OAAO,cAAc;aAA7D,CACG,SACD,oBAAC,OAAD;IAAK,WAAW,GAAG,OAAO,MAAM,YAAY,KAAK;IAAE,OAAO,cAAc;cACrE;IACG,CAAA,CACE;;AAId,SAAO;GACL,OAAO;GACP,GAAG;GACJ;GACD,EACJ;EAAC;EAAO;EAAY;EAAc;EAAO,CAC1C;AAED,QACE,oBAAC,gBAAD;EACE,OAAO,EACL,YAAY,EACV,UAAU;GACR,gBAAgB,WAAW,OAAO,YAAY,WAAW,SAAS,OAAO,QAAQ;GACjF,eAAe,WAAW,OAAO,YAAY,WAAW,SAAS,SAAS,QAAQ;GACnF,EACF,EACF;YAED,oBAACC,UAAD;GACE,OAAA;GACA,WAAW,GAAG,SAAS;IAAE;IAAa,KAAK,CAAC,CAAC;IAAK;IAAY;IAAS,CAAC,EAAE,UAAU;GACpF,aAAa,cAAc,WAAW;GACtC,OAAO;GACF;GACC;GACN,aAAa,EAAE,eACb,oBAAC,MAAD;IACE,WAAW,OAAO;IAClB,MAAM;IACN,MAAM;IACN,OAAO,EAAE,QAAQ,WAAW,KAAA,IAAY,UAAU;IAClD,CAAA;GAEJ,OAAO;IACL;IACA,GAAG;IACJ;GACD,GAAI;GACJ,CAAA;EACa,CAAA;EAGtB;AAED,WAAS,cAAc"}