@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 4.74 kB
Source Map (JSON)
{"version":3,"file":"Collapse.mjs","names":["Collapse","Flexbox","Icon","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 className={cx(styles.title, !desc && classNames?.header)}\n gap={8}\n horizontal\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 className={cx(variants({ collapsible, gap: !!gap, isDarkMode, variant }), className)}\n collapsible={collapsible ? 'header' : 'icon'}\n expandIcon={({ isActive }) => (\n <Icon\n className={styles.icon}\n icon={ChevronDown}\n size={16}\n style={{ rotate: isActive ? undefined : '-90deg' }}\n />\n )}\n ghost\n items={antdItems}\n ref={ref}\n size={size}\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;GACC,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;IACG;AAGR,MAAI,KACF,WACE,qBAACC;GACC,WAAW,GAAG,OAAO,OAAO,CAAC,QAAQ,YAAY,OAAO;GACxD,KAAK;GACL;GACA,OAAO,OAAO,SAAY,cAAc;cAEvC,eAAe,KAAK,GAAG,OAAO,oBAACC;IAAW;IAAM,MAAM,EAAE,MAAM,SAAS;KAAI,EAC3E;IACO;AAId,MAAI,KACF,WACE,qBAACD;GAAQ,WAAW,YAAY;GAAQ,OAAO,cAAc;cAC1D,SACD,oBAAC;IAAI,WAAW,GAAG,OAAO,MAAM,YAAY,KAAK;IAAE,OAAO,cAAc;cACrE;KACG;IACE;AAId,SAAO;GACL,OAAO;GACP,GAAG;GACJ;GACD,EACJ;EAAC;EAAO;EAAY;EAAc;EAAO,CAC1C;AAED,QACE,oBAAC;EACC,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,oBAACE;GACC,WAAW,GAAG,SAAS;IAAE;IAAa,KAAK,CAAC,CAAC;IAAK;IAAY;IAAS,CAAC,EAAE,UAAU;GACpF,aAAa,cAAc,WAAW;GACtC,aAAa,EAAE,eACb,oBAACD;IACC,WAAW,OAAO;IAClB,MAAM;IACN,MAAM;IACN,OAAO,EAAE,QAAQ,WAAW,SAAY,UAAU;KAClD;GAEJ;GACA,OAAO;GACF;GACC;GACN,OAAO;IACL;IACA,GAAG;IACJ;GACD,GAAI;IACJ;GACa;EAGtB;AAED,WAAS,cAAc;AAEvB,uBAAeF"}