@tribepad/themis 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +114 -0
- package/dist/Carousel-NTZX5TOW.js +16 -0
- package/dist/Carousel-NTZX5TOW.js.map +1 -0
- package/dist/Carousel-YH3DOQJU.mjs +7 -0
- package/dist/Carousel-YH3DOQJU.mjs.map +1 -0
- package/dist/chunk-2HIUTHMU.mjs +234 -0
- package/dist/chunk-2HIUTHMU.mjs.map +1 -0
- package/dist/chunk-34GTFTDO.js +431 -0
- package/dist/chunk-34GTFTDO.js.map +1 -0
- package/dist/chunk-3H7ASYR7.js +250 -0
- package/dist/chunk-3H7ASYR7.js.map +1 -0
- package/dist/chunk-3IEN7JOP.js +316 -0
- package/dist/chunk-3IEN7JOP.js.map +1 -0
- package/dist/chunk-3JHN4GAL.js +326 -0
- package/dist/chunk-3JHN4GAL.js.map +1 -0
- package/dist/chunk-3MJPASQU.js +232 -0
- package/dist/chunk-3MJPASQU.js.map +1 -0
- package/dist/chunk-3XD2JUL3.js +572 -0
- package/dist/chunk-3XD2JUL3.js.map +1 -0
- package/dist/chunk-3YOY2VJ6.js +189 -0
- package/dist/chunk-3YOY2VJ6.js.map +1 -0
- package/dist/chunk-4DU5JSXB.js +408 -0
- package/dist/chunk-4DU5JSXB.js.map +1 -0
- package/dist/chunk-4E4E2GSS.js +352 -0
- package/dist/chunk-4E4E2GSS.js.map +1 -0
- package/dist/chunk-4NHAP4AN.mjs +3 -0
- package/dist/chunk-4NHAP4AN.mjs.map +1 -0
- package/dist/chunk-4S33J5NY.mjs +415 -0
- package/dist/chunk-4S33J5NY.mjs.map +1 -0
- package/dist/chunk-5SMGRT3G.mjs +354 -0
- package/dist/chunk-5SMGRT3G.mjs.map +1 -0
- package/dist/chunk-5SVLJN2C.mjs +22 -0
- package/dist/chunk-5SVLJN2C.mjs.map +1 -0
- package/dist/chunk-66WTU4EB.mjs +299 -0
- package/dist/chunk-66WTU4EB.mjs.map +1 -0
- package/dist/chunk-6S25NMOT.mjs +335 -0
- package/dist/chunk-6S25NMOT.mjs.map +1 -0
- package/dist/chunk-6SP7UB3D.js +4 -0
- package/dist/chunk-6SP7UB3D.js.map +1 -0
- package/dist/chunk-6TYWWQHM.mjs +565 -0
- package/dist/chunk-6TYWWQHM.mjs.map +1 -0
- package/dist/chunk-A3YUJA6W.mjs +384 -0
- package/dist/chunk-A3YUJA6W.mjs.map +1 -0
- package/dist/chunk-A6KEDVUR.js +61 -0
- package/dist/chunk-A6KEDVUR.js.map +1 -0
- package/dist/chunk-A77RUEWL.js +730 -0
- package/dist/chunk-A77RUEWL.js.map +1 -0
- package/dist/chunk-AA4IKMPE.mjs +3 -0
- package/dist/chunk-AA4IKMPE.mjs.map +1 -0
- package/dist/chunk-AKIA6GW6.mjs +163 -0
- package/dist/chunk-AKIA6GW6.mjs.map +1 -0
- package/dist/chunk-AL6P275L.mjs +435 -0
- package/dist/chunk-AL6P275L.mjs.map +1 -0
- package/dist/chunk-AZ3RJYTB.js +37 -0
- package/dist/chunk-AZ3RJYTB.js.map +1 -0
- package/dist/chunk-B5Q4UPL6.js +32 -0
- package/dist/chunk-B5Q4UPL6.js.map +1 -0
- package/dist/chunk-B6DHPMDP.mjs +335 -0
- package/dist/chunk-B6DHPMDP.mjs.map +1 -0
- package/dist/chunk-BDXKKMBZ.mjs +184 -0
- package/dist/chunk-BDXKKMBZ.mjs.map +1 -0
- package/dist/chunk-BL6E2DLZ.mjs +52 -0
- package/dist/chunk-BL6E2DLZ.mjs.map +1 -0
- package/dist/chunk-CGFDS4XS.mjs +121 -0
- package/dist/chunk-CGFDS4XS.mjs.map +1 -0
- package/dist/chunk-CJIW5TKI.js +139 -0
- package/dist/chunk-CJIW5TKI.js.map +1 -0
- package/dist/chunk-CKNISJOQ.js +314 -0
- package/dist/chunk-CKNISJOQ.js.map +1 -0
- package/dist/chunk-D6CBOECS.mjs +1757 -0
- package/dist/chunk-D6CBOECS.mjs.map +1 -0
- package/dist/chunk-DDWEVC2S.js +166 -0
- package/dist/chunk-DDWEVC2S.js.map +1 -0
- package/dist/chunk-DZ556D2F.mjs +176 -0
- package/dist/chunk-DZ556D2F.mjs.map +1 -0
- package/dist/chunk-E2KQFV3O.mjs +10 -0
- package/dist/chunk-E2KQFV3O.mjs.map +1 -0
- package/dist/chunk-EMMLADSC.js +126 -0
- package/dist/chunk-EMMLADSC.js.map +1 -0
- package/dist/chunk-EP4WOI5D.mjs +926 -0
- package/dist/chunk-EP4WOI5D.mjs.map +1 -0
- package/dist/chunk-FJRXLJC2.mjs +160 -0
- package/dist/chunk-FJRXLJC2.mjs.map +1 -0
- package/dist/chunk-FKQI434R.js +345 -0
- package/dist/chunk-FKQI434R.js.map +1 -0
- package/dist/chunk-FPKEAJRZ.mjs +100 -0
- package/dist/chunk-FPKEAJRZ.mjs.map +1 -0
- package/dist/chunk-FWQYB22U.js +183 -0
- package/dist/chunk-FWQYB22U.js.map +1 -0
- package/dist/chunk-GD5GHTMA.js +189 -0
- package/dist/chunk-GD5GHTMA.js.map +1 -0
- package/dist/chunk-GE5XTSDZ.js +447 -0
- package/dist/chunk-GE5XTSDZ.js.map +1 -0
- package/dist/chunk-GVE47ZAX.mjs +32 -0
- package/dist/chunk-GVE47ZAX.mjs.map +1 -0
- package/dist/chunk-HK46BT5U.mjs +18 -0
- package/dist/chunk-HK46BT5U.mjs.map +1 -0
- package/dist/chunk-HQVRMR6N.js +365 -0
- package/dist/chunk-HQVRMR6N.js.map +1 -0
- package/dist/chunk-HSGBJPJO.mjs +398 -0
- package/dist/chunk-HSGBJPJO.mjs.map +1 -0
- package/dist/chunk-I3AUTOMZ.mjs +125 -0
- package/dist/chunk-I3AUTOMZ.mjs.map +1 -0
- package/dist/chunk-IEI5LD5C.mjs +1161 -0
- package/dist/chunk-IEI5LD5C.mjs.map +1 -0
- package/dist/chunk-IIPTC2X7.mjs +118 -0
- package/dist/chunk-IIPTC2X7.mjs.map +1 -0
- package/dist/chunk-J7TLHF2Q.js +4 -0
- package/dist/chunk-J7TLHF2Q.js.map +1 -0
- package/dist/chunk-JJOWXFXQ.mjs +765 -0
- package/dist/chunk-JJOWXFXQ.mjs.map +1 -0
- package/dist/chunk-JPTSS2OA.mjs +3 -0
- package/dist/chunk-JPTSS2OA.mjs.map +1 -0
- package/dist/chunk-KFXXRLTP.js +396 -0
- package/dist/chunk-KFXXRLTP.js.map +1 -0
- package/dist/chunk-KPRRBSG6.mjs +272 -0
- package/dist/chunk-KPRRBSG6.mjs.map +1 -0
- package/dist/chunk-NFSBGRDB.mjs +57 -0
- package/dist/chunk-NFSBGRDB.mjs.map +1 -0
- package/dist/chunk-NGJVCFTM.js +219 -0
- package/dist/chunk-NGJVCFTM.js.map +1 -0
- package/dist/chunk-NSQ6MZJ6.mjs +728 -0
- package/dist/chunk-NSQ6MZJ6.mjs.map +1 -0
- package/dist/chunk-NYQYHT76.mjs +296 -0
- package/dist/chunk-NYQYHT76.mjs.map +1 -0
- package/dist/chunk-OLJJGI5B.js +1193 -0
- package/dist/chunk-OLJJGI5B.js.map +1 -0
- package/dist/chunk-Q3572X2J.js +292 -0
- package/dist/chunk-Q3572X2J.js.map +1 -0
- package/dist/chunk-QH7N7D4I.mjs +210 -0
- package/dist/chunk-QH7N7D4I.mjs.map +1 -0
- package/dist/chunk-R7XUIV25.js +466 -0
- package/dist/chunk-R7XUIV25.js.map +1 -0
- package/dist/chunk-RFFO4KPM.js +135 -0
- package/dist/chunk-RFFO4KPM.js.map +1 -0
- package/dist/chunk-RFX7QKA7.mjs +180 -0
- package/dist/chunk-RFX7QKA7.mjs.map +1 -0
- package/dist/chunk-SN5LFAP3.js +940 -0
- package/dist/chunk-SN5LFAP3.js.map +1 -0
- package/dist/chunk-T4COXKQ3.js +24 -0
- package/dist/chunk-T4COXKQ3.js.map +1 -0
- package/dist/chunk-TS54QM27.js +125 -0
- package/dist/chunk-TS54QM27.js.map +1 -0
- package/dist/chunk-UE2S4PCX.mjs +220 -0
- package/dist/chunk-UE2S4PCX.mjs.map +1 -0
- package/dist/chunk-UTW3QX2A.mjs +282 -0
- package/dist/chunk-UTW3QX2A.mjs.map +1 -0
- package/dist/chunk-V74LGMAE.js +1767 -0
- package/dist/chunk-V74LGMAE.js.map +1 -0
- package/dist/chunk-VIREG536.js +12 -0
- package/dist/chunk-VIREG536.js.map +1 -0
- package/dist/chunk-VY7M7346.js +4 -0
- package/dist/chunk-VY7M7346.js.map +1 -0
- package/dist/chunk-W3TJOO7H.mjs +319 -0
- package/dist/chunk-W3TJOO7H.mjs.map +1 -0
- package/dist/chunk-WIUOB36M.js +54 -0
- package/dist/chunk-WIUOB36M.js.map +1 -0
- package/dist/chunk-WJGLM4CY.js +291 -0
- package/dist/chunk-WJGLM4CY.js.map +1 -0
- package/dist/chunk-WNURH5OO.mjs +453 -0
- package/dist/chunk-WNURH5OO.mjs.map +1 -0
- package/dist/chunk-X25TNRSD.mjs +364 -0
- package/dist/chunk-X25TNRSD.mjs.map +1 -0
- package/dist/chunk-Y3GT7ETK.js +108 -0
- package/dist/chunk-Y3GT7ETK.js.map +1 -0
- package/dist/chunk-Z4FRNOF6.mjs +115 -0
- package/dist/chunk-Z4FRNOF6.mjs.map +1 -0
- package/dist/chunk-ZMYLD3BN.js +166 -0
- package/dist/chunk-ZMYLD3BN.js.map +1 -0
- package/dist/chunk-ZP2KV6EX.js +815 -0
- package/dist/chunk-ZP2KV6EX.js.map +1 -0
- package/dist/chunk-ZVKXFELU.js +366 -0
- package/dist/chunk-ZVKXFELU.js.map +1 -0
- package/dist/elements/Accordion/Accordion.d.ts +139 -0
- package/dist/elements/Accordion/Accordion.d.ts.map +1 -0
- package/dist/elements/Accordion/Accordion.types.d.ts +143 -0
- package/dist/elements/Accordion/Accordion.types.d.ts.map +1 -0
- package/dist/elements/Accordion/index.d.ts +13 -0
- package/dist/elements/Accordion/index.d.ts.map +1 -0
- package/dist/elements/Accordion/index.js +78 -0
- package/dist/elements/Accordion/index.js.map +1 -0
- package/dist/elements/Accordion/index.mjs +5 -0
- package/dist/elements/Accordion/index.mjs.map +1 -0
- package/dist/elements/Avatar/Avatar.d.ts +51 -0
- package/dist/elements/Avatar/Avatar.d.ts.map +1 -0
- package/dist/elements/Avatar/Avatar.types.d.ts +145 -0
- package/dist/elements/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/elements/Avatar/AvatarGroup.d.ts +32 -0
- package/dist/elements/Avatar/AvatarGroup.d.ts.map +1 -0
- package/dist/elements/Avatar/index.d.ts +11 -0
- package/dist/elements/Avatar/index.d.ts.map +1 -0
- package/dist/elements/Avatar/index.js +54 -0
- package/dist/elements/Avatar/index.js.map +1 -0
- package/dist/elements/Avatar/index.mjs +5 -0
- package/dist/elements/Avatar/index.mjs.map +1 -0
- package/dist/elements/Badge/Badge.d.ts +39 -0
- package/dist/elements/Badge/Badge.d.ts.map +1 -0
- package/dist/elements/Badge/Badge.types.d.ts +76 -0
- package/dist/elements/Badge/Badge.types.d.ts.map +1 -0
- package/dist/elements/Badge/index.d.ts +18 -0
- package/dist/elements/Badge/index.d.ts.map +1 -0
- package/dist/elements/Badge/index.js +43 -0
- package/dist/elements/Badge/index.js.map +1 -0
- package/dist/elements/Badge/index.mjs +6 -0
- package/dist/elements/Badge/index.mjs.map +1 -0
- package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts +91 -0
- package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts +114 -0
- package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -0
- package/dist/elements/Breadcrumbs/index.d.ts +14 -0
- package/dist/elements/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/elements/Breadcrumbs/index.js +54 -0
- package/dist/elements/Breadcrumbs/index.js.map +1 -0
- package/dist/elements/Breadcrumbs/index.mjs +9 -0
- package/dist/elements/Breadcrumbs/index.mjs.map +1 -0
- package/dist/elements/Button/Button.d.ts +92 -0
- package/dist/elements/Button/Button.d.ts.map +1 -0
- package/dist/elements/Button/Button.types.d.ts +54 -0
- package/dist/elements/Button/Button.types.d.ts.map +1 -0
- package/dist/elements/Button/index.d.ts +18 -0
- package/dist/elements/Button/index.d.ts.map +1 -0
- package/dist/elements/Button/index.js +27 -0
- package/dist/elements/Button/index.js.map +1 -0
- package/dist/elements/Button/index.mjs +6 -0
- package/dist/elements/Button/index.mjs.map +1 -0
- package/dist/elements/ButtonGroup/ButtonGroup.d.ts +53 -0
- package/dist/elements/ButtonGroup/ButtonGroup.d.ts.map +1 -0
- package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts +98 -0
- package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts.map +1 -0
- package/dist/elements/ButtonGroup/ButtonGroup.utils.d.ts +60 -0
- package/dist/elements/ButtonGroup/ButtonGroup.utils.d.ts.map +1 -0
- package/dist/elements/ButtonGroup/ButtonGroup.variants.d.ts +39 -0
- package/dist/elements/ButtonGroup/ButtonGroup.variants.d.ts.map +1 -0
- package/dist/elements/ButtonGroup/ButtonGroupContext.d.ts +42 -0
- package/dist/elements/ButtonGroup/ButtonGroupContext.d.ts.map +1 -0
- package/dist/elements/ButtonGroup/index.d.ts +35 -0
- package/dist/elements/ButtonGroup/index.d.ts.map +1 -0
- package/dist/elements/ButtonGroup/index.js +66 -0
- package/dist/elements/ButtonGroup/index.js.map +1 -0
- package/dist/elements/ButtonGroup/index.mjs +5 -0
- package/dist/elements/ButtonGroup/index.mjs.map +1 -0
- package/dist/elements/Card/Card.d.ts +104 -0
- package/dist/elements/Card/Card.d.ts.map +1 -0
- package/dist/elements/Card/Card.types.d.ts +227 -0
- package/dist/elements/Card/Card.types.d.ts.map +1 -0
- package/dist/elements/Card/index.d.ts +38 -0
- package/dist/elements/Card/index.d.ts.map +1 -0
- package/dist/elements/Card/index.js +85 -0
- package/dist/elements/Card/index.js.map +1 -0
- package/dist/elements/Card/index.mjs +8 -0
- package/dist/elements/Card/index.mjs.map +1 -0
- package/dist/elements/Carousel/Carousel.d.ts +13 -0
- package/dist/elements/Carousel/Carousel.d.ts.map +1 -0
- package/dist/elements/Carousel/Carousel.types.d.ts +65 -0
- package/dist/elements/Carousel/Carousel.types.d.ts.map +1 -0
- package/dist/elements/Carousel/LazyCarousel.d.ts +46 -0
- package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -0
- package/dist/elements/Carousel/index.d.ts +5 -0
- package/dist/elements/Carousel/index.d.ts.map +1 -0
- package/dist/elements/Carousel/index.js +23 -0
- package/dist/elements/Carousel/index.js.map +1 -0
- package/dist/elements/Carousel/index.mjs +10 -0
- package/dist/elements/Carousel/index.mjs.map +1 -0
- package/dist/elements/Chart/Chart.d.ts +44 -0
- package/dist/elements/Chart/Chart.d.ts.map +1 -0
- package/dist/elements/Chart/Chart.types.d.ts +254 -0
- package/dist/elements/Chart/Chart.types.d.ts.map +1 -0
- package/dist/elements/Chart/ChartAnnouncer.d.ts +24 -0
- package/dist/elements/Chart/ChartAnnouncer.d.ts.map +1 -0
- package/dist/elements/Chart/ChartAxis.d.ts +42 -0
- package/dist/elements/Chart/ChartAxis.d.ts.map +1 -0
- package/dist/elements/Chart/ChartBarSeries.d.ts +54 -0
- package/dist/elements/Chart/ChartBarSeries.d.ts.map +1 -0
- package/dist/elements/Chart/ChartContext.d.ts +46 -0
- package/dist/elements/Chart/ChartContext.d.ts.map +1 -0
- package/dist/elements/Chart/ChartDataPoint.d.ts +56 -0
- package/dist/elements/Chart/ChartDataPoint.d.ts.map +1 -0
- package/dist/elements/Chart/ChartDataTable.d.ts +35 -0
- package/dist/elements/Chart/ChartDataTable.d.ts.map +1 -0
- package/dist/elements/Chart/ChartGrid.d.ts +32 -0
- package/dist/elements/Chart/ChartGrid.d.ts.map +1 -0
- package/dist/elements/Chart/ChartLegend.d.ts +32 -0
- package/dist/elements/Chart/ChartLegend.d.ts.map +1 -0
- package/dist/elements/Chart/ChartLineSeries.d.ts +52 -0
- package/dist/elements/Chart/ChartLineSeries.d.ts.map +1 -0
- package/dist/elements/Chart/ChartSVG.d.ts +62 -0
- package/dist/elements/Chart/ChartSVG.d.ts.map +1 -0
- package/dist/elements/Chart/ChartTooltip.d.ts +45 -0
- package/dist/elements/Chart/ChartTooltip.d.ts.map +1 -0
- package/dist/elements/Chart/chart.constants.d.ts +108 -0
- package/dist/elements/Chart/chart.constants.d.ts.map +1 -0
- package/dist/elements/Chart/chart.variants.d.ts +45 -0
- package/dist/elements/Chart/chart.variants.d.ts.map +1 -0
- package/dist/elements/Chart/index.d.ts +12 -0
- package/dist/elements/Chart/index.d.ts.map +1 -0
- package/dist/elements/Chart/index.js +47 -0
- package/dist/elements/Chart/index.js.map +1 -0
- package/dist/elements/Chart/index.mjs +6 -0
- package/dist/elements/Chart/index.mjs.map +1 -0
- package/dist/elements/Chart/useChartDimensions.d.ts +18 -0
- package/dist/elements/Chart/useChartDimensions.d.ts.map +1 -0
- package/dist/elements/Chart/useChartKeyboard.d.ts +42 -0
- package/dist/elements/Chart/useChartKeyboard.d.ts.map +1 -0
- package/dist/elements/Chart/useRovingTabIndex.d.ts +46 -0
- package/dist/elements/Chart/useRovingTabIndex.d.ts.map +1 -0
- package/dist/elements/Checkbox/Checkbox.d.ts +94 -0
- package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/elements/Checkbox/Checkbox.types.d.ts +82 -0
- package/dist/elements/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/elements/Checkbox/index.d.ts +7 -0
- package/dist/elements/Checkbox/index.d.ts.map +1 -0
- package/dist/elements/Checkbox/index.js +47 -0
- package/dist/elements/Checkbox/index.js.map +1 -0
- package/dist/elements/Checkbox/index.mjs +6 -0
- package/dist/elements/Checkbox/index.mjs.map +1 -0
- package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts +130 -0
- package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
- package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts +142 -0
- package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts.map +1 -0
- package/dist/elements/CheckboxGroup/index.d.ts +10 -0
- package/dist/elements/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/elements/CheckboxGroup/index.js +71 -0
- package/dist/elements/CheckboxGroup/index.js.map +1 -0
- package/dist/elements/CheckboxGroup/index.mjs +6 -0
- package/dist/elements/CheckboxGroup/index.mjs.map +1 -0
- package/dist/elements/DatePicker/Calendar.d.ts +16 -0
- package/dist/elements/DatePicker/Calendar.d.ts.map +1 -0
- package/dist/elements/DatePicker/DateField.d.ts +13 -0
- package/dist/elements/DatePicker/DateField.d.ts.map +1 -0
- package/dist/elements/DatePicker/DatePicker.d.ts +16 -0
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/elements/DatePicker/DatePicker.types.d.ts +390 -0
- package/dist/elements/DatePicker/DatePicker.types.d.ts.map +1 -0
- package/dist/elements/DatePicker/DatePicker.variants.d.ts +42 -0
- package/dist/elements/DatePicker/DatePicker.variants.d.ts.map +1 -0
- package/dist/elements/DatePicker/DateRangePicker.d.ts +13 -0
- package/dist/elements/DatePicker/DateRangePicker.d.ts.map +1 -0
- package/dist/elements/DatePicker/index.d.ts +14 -0
- package/dist/elements/DatePicker/index.d.ts.map +1 -0
- package/dist/elements/DatePicker/index.js +123 -0
- package/dist/elements/DatePicker/index.js.map +1 -0
- package/dist/elements/DatePicker/index.mjs +6 -0
- package/dist/elements/DatePicker/index.mjs.map +1 -0
- package/dist/elements/Dropdown/Dropdown.d.ts +197 -0
- package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/elements/Dropdown/Dropdown.types.d.ts +175 -0
- package/dist/elements/Dropdown/Dropdown.types.d.ts.map +1 -0
- package/dist/elements/Dropdown/index.d.ts +12 -0
- package/dist/elements/Dropdown/index.d.ts.map +1 -0
- package/dist/elements/Dropdown/index.js +41 -0
- package/dist/elements/Dropdown/index.js.map +1 -0
- package/dist/elements/Dropdown/index.mjs +4 -0
- package/dist/elements/Dropdown/index.mjs.map +1 -0
- package/dist/elements/FileField/FileField.d.ts +46 -0
- package/dist/elements/FileField/FileField.d.ts.map +1 -0
- package/dist/elements/FileField/FileField.types.d.ts +99 -0
- package/dist/elements/FileField/FileField.types.d.ts.map +1 -0
- package/dist/elements/FileField/FileField.variants.d.ts +49 -0
- package/dist/elements/FileField/FileField.variants.d.ts.map +1 -0
- package/dist/elements/FileField/FilePreview.d.ts +27 -0
- package/dist/elements/FileField/FilePreview.d.ts.map +1 -0
- package/dist/elements/FileField/FileProgress.d.ts +35 -0
- package/dist/elements/FileField/FileProgress.d.ts.map +1 -0
- package/dist/elements/FileField/FileProgress.variants.d.ts +55 -0
- package/dist/elements/FileField/FileProgress.variants.d.ts.map +1 -0
- package/dist/elements/FileField/index.d.ts +41 -0
- package/dist/elements/FileField/index.d.ts.map +1 -0
- package/dist/elements/FileField/index.js +138 -0
- package/dist/elements/FileField/index.js.map +1 -0
- package/dist/elements/FileField/index.mjs +9 -0
- package/dist/elements/FileField/index.mjs.map +1 -0
- package/dist/elements/FileField/useFilePreview.d.ts +46 -0
- package/dist/elements/FileField/useFilePreview.d.ts.map +1 -0
- package/dist/elements/FileField/utils.d.ts +134 -0
- package/dist/elements/FileField/utils.d.ts.map +1 -0
- package/dist/elements/FormLayout/FormLayout.d.ts +51 -0
- package/dist/elements/FormLayout/FormLayout.d.ts.map +1 -0
- package/dist/elements/FormLayout/FormLayout.types.d.ts +66 -0
- package/dist/elements/FormLayout/FormLayout.types.d.ts.map +1 -0
- package/dist/elements/FormLayout/index.d.ts +3 -0
- package/dist/elements/FormLayout/index.d.ts.map +1 -0
- package/dist/elements/FormLayout/index.js +17 -0
- package/dist/elements/FormLayout/index.js.map +1 -0
- package/dist/elements/FormLayout/index.mjs +4 -0
- package/dist/elements/FormLayout/index.mjs.map +1 -0
- package/dist/elements/Modal/Modal.d.ts +168 -0
- package/dist/elements/Modal/Modal.d.ts.map +1 -0
- package/dist/elements/Modal/Modal.types.d.ts +265 -0
- package/dist/elements/Modal/Modal.types.d.ts.map +1 -0
- package/dist/elements/Modal/index.d.ts +14 -0
- package/dist/elements/Modal/index.d.ts.map +1 -0
- package/dist/elements/Modal/index.js +52 -0
- package/dist/elements/Modal/index.js.map +1 -0
- package/dist/elements/Modal/index.mjs +3 -0
- package/dist/elements/Modal/index.mjs.map +1 -0
- package/dist/elements/NumberField/NumberField.d.ts +43 -0
- package/dist/elements/NumberField/NumberField.d.ts.map +1 -0
- package/dist/elements/NumberField/NumberField.types.d.ts +112 -0
- package/dist/elements/NumberField/NumberField.types.d.ts.map +1 -0
- package/dist/elements/NumberField/NumberField.variants.d.ts +82 -0
- package/dist/elements/NumberField/NumberField.variants.d.ts.map +1 -0
- package/dist/elements/NumberField/index.d.ts +25 -0
- package/dist/elements/NumberField/index.d.ts.map +1 -0
- package/dist/elements/NumberField/index.js +57 -0
- package/dist/elements/NumberField/index.js.map +1 -0
- package/dist/elements/NumberField/index.mjs +8 -0
- package/dist/elements/NumberField/index.mjs.map +1 -0
- package/dist/elements/OTPInput/OTPInput.d.ts +105 -0
- package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -0
- package/dist/elements/OTPInput/OTPInput.styles.d.ts +83 -0
- package/dist/elements/OTPInput/OTPInput.styles.d.ts.map +1 -0
- package/dist/elements/OTPInput/OTPInput.types.d.ts +189 -0
- package/dist/elements/OTPInput/OTPInput.types.d.ts.map +1 -0
- package/dist/elements/OTPInput/components/OTPDigit.d.ts +51 -0
- package/dist/elements/OTPInput/components/OTPDigit.d.ts.map +1 -0
- package/dist/elements/OTPInput/hooks/useOTPInput.d.ts +36 -0
- package/dist/elements/OTPInput/hooks/useOTPInput.d.ts.map +1 -0
- package/dist/elements/OTPInput/hooks/useOTPKeyboard.d.ts +59 -0
- package/dist/elements/OTPInput/hooks/useOTPKeyboard.d.ts.map +1 -0
- package/dist/elements/OTPInput/index.d.ts +27 -0
- package/dist/elements/OTPInput/index.d.ts.map +1 -0
- package/dist/elements/OTPInput/index.js +13 -0
- package/dist/elements/OTPInput/index.js.map +1 -0
- package/dist/elements/OTPInput/index.mjs +4 -0
- package/dist/elements/OTPInput/index.mjs.map +1 -0
- package/dist/elements/Panel/Panel.d.ts +111 -0
- package/dist/elements/Panel/Panel.d.ts.map +1 -0
- package/dist/elements/Panel/Panel.types.d.ts +243 -0
- package/dist/elements/Panel/Panel.types.d.ts.map +1 -0
- package/dist/elements/Panel/index.d.ts +4 -0
- package/dist/elements/Panel/index.d.ts.map +1 -0
- package/dist/elements/Panel/index.js +33 -0
- package/dist/elements/Panel/index.js.map +1 -0
- package/dist/elements/Panel/index.mjs +4 -0
- package/dist/elements/Panel/index.mjs.map +1 -0
- package/dist/elements/Progress/Progress.d.ts +44 -0
- package/dist/elements/Progress/Progress.d.ts.map +1 -0
- package/dist/elements/Progress/Progress.types.d.ts +64 -0
- package/dist/elements/Progress/Progress.types.d.ts.map +1 -0
- package/dist/elements/Progress/index.d.ts +11 -0
- package/dist/elements/Progress/index.d.ts.map +1 -0
- package/dist/elements/Progress/index.js +30 -0
- package/dist/elements/Progress/index.js.map +1 -0
- package/dist/elements/Progress/index.mjs +5 -0
- package/dist/elements/Progress/index.mjs.map +1 -0
- package/dist/elements/RadioGroup/RadioGroup.d.ts +110 -0
- package/dist/elements/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/elements/RadioGroup/RadioGroup.types.d.ts +143 -0
- package/dist/elements/RadioGroup/RadioGroup.types.d.ts.map +1 -0
- package/dist/elements/RadioGroup/index.d.ts +10 -0
- package/dist/elements/RadioGroup/index.d.ts.map +1 -0
- package/dist/elements/RadioGroup/index.js +47 -0
- package/dist/elements/RadioGroup/index.js.map +1 -0
- package/dist/elements/RadioGroup/index.mjs +6 -0
- package/dist/elements/RadioGroup/index.mjs.map +1 -0
- package/dist/elements/Resizable/Resizable.types.d.ts +188 -0
- package/dist/elements/Resizable/Resizable.types.d.ts.map +1 -0
- package/dist/elements/Resizable/components/ResizableHandle.d.ts +28 -0
- package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -0
- package/dist/elements/Resizable/components/ResizablePanel.d.ts +24 -0
- package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -0
- package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +26 -0
- package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -0
- package/dist/elements/Resizable/components/ResizablePopover.d.ts +45 -0
- package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -0
- package/dist/elements/Resizable/hooks/useResizable.d.ts +50 -0
- package/dist/elements/Resizable/hooks/useResizable.d.ts.map +1 -0
- package/dist/elements/Resizable/hooks/useResizableContext.d.ts +36 -0
- package/dist/elements/Resizable/hooks/useResizableContext.d.ts.map +1 -0
- package/dist/elements/Resizable/index.d.ts +37 -0
- package/dist/elements/Resizable/index.d.ts.map +1 -0
- package/dist/elements/Resizable/index.js +65 -0
- package/dist/elements/Resizable/index.js.map +1 -0
- package/dist/elements/Resizable/index.mjs +8 -0
- package/dist/elements/Resizable/index.mjs.map +1 -0
- package/dist/elements/Select/Select.d.ts +184 -0
- package/dist/elements/Select/Select.d.ts.map +1 -0
- package/dist/elements/Select/Select.types.d.ts +166 -0
- package/dist/elements/Select/Select.types.d.ts.map +1 -0
- package/dist/elements/Select/index.d.ts +35 -0
- package/dist/elements/Select/index.d.ts.map +1 -0
- package/dist/elements/Select/index.js +33 -0
- package/dist/elements/Select/index.js.map +1 -0
- package/dist/elements/Select/index.mjs +4 -0
- package/dist/elements/Select/index.mjs.map +1 -0
- package/dist/elements/Skeleton/Skeleton.d.ts +31 -0
- package/dist/elements/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/elements/Skeleton/Skeleton.types.d.ts +36 -0
- package/dist/elements/Skeleton/Skeleton.types.d.ts.map +1 -0
- package/dist/elements/Skeleton/index.d.ts +11 -0
- package/dist/elements/Skeleton/index.d.ts.map +1 -0
- package/dist/elements/Skeleton/index.js +22 -0
- package/dist/elements/Skeleton/index.js.map +1 -0
- package/dist/elements/Skeleton/index.mjs +5 -0
- package/dist/elements/Skeleton/index.mjs.map +1 -0
- package/dist/elements/Switch/Switch.d.ts +39 -0
- package/dist/elements/Switch/Switch.d.ts.map +1 -0
- package/dist/elements/Switch/Switch.types.d.ts +53 -0
- package/dist/elements/Switch/Switch.types.d.ts.map +1 -0
- package/dist/elements/Switch/index.d.ts +8 -0
- package/dist/elements/Switch/index.d.ts.map +1 -0
- package/dist/elements/Switch/index.js +49 -0
- package/dist/elements/Switch/index.js.map +1 -0
- package/dist/elements/Switch/index.mjs +31 -0
- package/dist/elements/Switch/index.mjs.map +1 -0
- package/dist/elements/Table/Table.d.ts +123 -0
- package/dist/elements/Table/Table.d.ts.map +1 -0
- package/dist/elements/Table/Table.types.d.ts +356 -0
- package/dist/elements/Table/Table.types.d.ts.map +1 -0
- package/dist/elements/Table/index.d.ts +5 -0
- package/dist/elements/Table/index.d.ts.map +1 -0
- package/dist/elements/Table/index.js +76 -0
- package/dist/elements/Table/index.js.map +1 -0
- package/dist/elements/Table/index.mjs +7 -0
- package/dist/elements/Table/index.mjs.map +1 -0
- package/dist/elements/Tabs/Tabs.d.ts +129 -0
- package/dist/elements/Tabs/Tabs.d.ts.map +1 -0
- package/dist/elements/Tabs/Tabs.types.d.ts +179 -0
- package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -0
- package/dist/elements/Tabs/index.d.ts +12 -0
- package/dist/elements/Tabs/index.d.ts.map +1 -0
- package/dist/elements/Tabs/index.js +74 -0
- package/dist/elements/Tabs/index.js.map +1 -0
- package/dist/elements/Tabs/index.mjs +5 -0
- package/dist/elements/Tabs/index.mjs.map +1 -0
- package/dist/elements/TextField/TextField.d.ts +155 -0
- package/dist/elements/TextField/TextField.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.types.d.ts +258 -0
- package/dist/elements/TextField/TextField.types.d.ts.map +1 -0
- package/dist/elements/TextField/index.css +23 -0
- package/dist/elements/TextField/index.css.map +1 -0
- package/dist/elements/TextField/index.d.ts +13 -0
- package/dist/elements/TextField/index.d.ts.map +1 -0
- package/dist/elements/TextField/index.js +260 -0
- package/dist/elements/TextField/index.js.map +1 -0
- package/dist/elements/TextField/index.mjs +207 -0
- package/dist/elements/TextField/index.mjs.map +1 -0
- package/dist/elements/TimeField/TimeField.d.ts +34 -0
- package/dist/elements/TimeField/TimeField.d.ts.map +1 -0
- package/dist/elements/TimeField/TimeField.types.d.ts +151 -0
- package/dist/elements/TimeField/TimeField.types.d.ts.map +1 -0
- package/dist/elements/TimeField/index.d.ts +24 -0
- package/dist/elements/TimeField/index.d.ts.map +1 -0
- package/dist/elements/TimeField/index.js +45 -0
- package/dist/elements/TimeField/index.js.map +1 -0
- package/dist/elements/TimeField/index.mjs +4 -0
- package/dist/elements/TimeField/index.mjs.map +1 -0
- package/dist/elements/Toast/Toast.d.ts +105 -0
- package/dist/elements/Toast/Toast.d.ts.map +1 -0
- package/dist/elements/Toast/Toast.types.d.ts +209 -0
- package/dist/elements/Toast/Toast.types.d.ts.map +1 -0
- package/dist/elements/Toast/ToastProvider.d.ts +37 -0
- package/dist/elements/Toast/ToastProvider.d.ts.map +1 -0
- package/dist/elements/Toast/Toaster.d.ts +18 -0
- package/dist/elements/Toast/Toaster.d.ts.map +1 -0
- package/dist/elements/Toast/index.d.ts +27 -0
- package/dist/elements/Toast/index.d.ts.map +1 -0
- package/dist/elements/Toast/index.js +60 -0
- package/dist/elements/Toast/index.js.map +1 -0
- package/dist/elements/Toast/index.mjs +7 -0
- package/dist/elements/Toast/index.mjs.map +1 -0
- package/dist/elements/Tooltip/Tooltip.d.ts +108 -0
- package/dist/elements/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/elements/Tooltip/Tooltip.types.d.ts +135 -0
- package/dist/elements/Tooltip/Tooltip.types.d.ts.map +1 -0
- package/dist/elements/Tooltip/index.d.ts +11 -0
- package/dist/elements/Tooltip/index.d.ts.map +1 -0
- package/dist/elements/Tooltip/index.js +59 -0
- package/dist/elements/Tooltip/index.js.map +1 -0
- package/dist/elements/Tooltip/index.mjs +6 -0
- package/dist/elements/Tooltip/index.mjs.map +1 -0
- package/dist/elements/index.css +23 -0
- package/dist/elements/index.css.map +1 -0
- package/dist/elements/index.d.ts +42 -0
- package/dist/elements/index.d.ts.map +1 -0
- package/dist/elements/index.js +839 -0
- package/dist/elements/index.js.map +1 -0
- package/dist/elements/index.mjs +42 -0
- package/dist/elements/index.mjs.map +1 -0
- package/dist/index.css +23 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +865 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +44 -0
- package/dist/index.mjs.map +1 -0
- package/dist/schemas/BaseComponentProps.d.ts +25 -0
- package/dist/schemas/BaseComponentProps.d.ts.map +1 -0
- package/dist/schemas/RegistryItem.d.ts +55 -0
- package/dist/schemas/RegistryItem.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +29 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/index.mjs +4 -0
- package/dist/schemas/index.mjs.map +1 -0
- package/dist/styles/defaults.css +174 -0
- package/dist/styles/index.d.ts +7 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +153 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/index.mjs +4 -0
- package/dist/styles/index.mjs.map +1 -0
- package/dist/styles/interaction-states.d.ts +96 -0
- package/dist/styles/interaction-states.d.ts.map +1 -0
- package/dist/styles/shared-variants.d.ts +120 -0
- package/dist/styles/shared-variants.d.ts.map +1 -0
- package/dist/styles/tokens.css +89 -0
- package/dist/utils/cn.d.ts +13 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +13 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +4 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +228 -0
- package/src/elements/Accordion/Accordion.stories.tsx +793 -0
- package/src/elements/Avatar/Avatar.stories.tsx +408 -0
- package/src/elements/Badge/Badge.stories.tsx +509 -0
- package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +623 -0
- package/src/elements/Button/Button.stories.tsx +670 -0
- package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +658 -0
- package/src/elements/Card/Card.stories.tsx +570 -0
- package/src/elements/Carousel/Carousel.stories.tsx +597 -0
- package/src/elements/Chart/Chart.stories.tsx +616 -0
- package/src/elements/Checkbox/Checkbox.stories.tsx +514 -0
- package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1514 -0
- package/src/elements/DatePicker/DatePicker.stories.tsx +341 -0
- package/src/elements/Dropdown/Dropdown.stories.tsx +397 -0
- package/src/elements/FileField/FileField.stories.tsx +1021 -0
- package/src/elements/FileField/FileProgress.stories.tsx +359 -0
- package/src/elements/FormLayout/FormLayout.stories.tsx +637 -0
- package/src/elements/Modal/Modal.stories.tsx +640 -0
- package/src/elements/NumberField/NumberField.stories.tsx +678 -0
- package/src/elements/OTPInput/OTPInput.stories.tsx +404 -0
- package/src/elements/Panel/Panel.stories.tsx +769 -0
- package/src/elements/Progress/Progress.stories.tsx +668 -0
- package/src/elements/RadioGroup/RadioGroup.stories.tsx +1153 -0
- package/src/elements/Resizable/Resizable.stories.tsx +374 -0
- package/src/elements/Select/Select.stories.tsx +362 -0
- package/src/elements/Skeleton/Skeleton.stories.tsx +284 -0
- package/src/elements/Switch/Switch.stories.tsx +441 -0
- package/src/elements/Table/Table.stories.tsx +790 -0
- package/src/elements/Tabs/Tabs.stories.tsx +661 -0
- package/src/elements/TextField/TextField.stories.tsx +1878 -0
- package/src/elements/TimeField/TimeField.stories.tsx +671 -0
- package/src/elements/Toast/Toast.stories.tsx +971 -0
- package/src/elements/Tooltip/Tooltip.stories.tsx +748 -0
- package/tailwind.config.js +10 -0
- package/tailwind.config.v3.js +10 -0
|
@@ -0,0 +1,793 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accordion Component Storybook Stories
|
|
3
|
+
*
|
|
4
|
+
* @see accordion-prd.md FR-001 to FR-011 (Accordion Requirements)
|
|
5
|
+
* @see plan.md (Implementation Plan)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Meta, StoryObj } from '@storybook/nextjs';
|
|
9
|
+
import { useState, type Key } from 'react';
|
|
10
|
+
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from './Accordion';
|
|
11
|
+
import { Plus, Minus, ChevronRight, Settings, User, Bell, Lock } from 'lucide-react';
|
|
12
|
+
|
|
13
|
+
const meta = {
|
|
14
|
+
title: 'Elements/Accordion',
|
|
15
|
+
component: Accordion,
|
|
16
|
+
parameters: {
|
|
17
|
+
layout: 'centered',
|
|
18
|
+
docs: {
|
|
19
|
+
description: {
|
|
20
|
+
component:
|
|
21
|
+
'Accessible accordion/disclosure group component with WCAG 2.2 AAA compliance, React Aria DisclosureGroup primitives, single/multiple expansion modes, controlled and uncontrolled state management, configurable heading levels, custom icon support, and React 19.2 Activity state preservation.',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
tags: ['autodocs'],
|
|
26
|
+
argTypes: {
|
|
27
|
+
type: {
|
|
28
|
+
control: 'select',
|
|
29
|
+
options: ['single', 'multiple'],
|
|
30
|
+
description: 'Expansion mode: single (one at a time) or multiple (any number)',
|
|
31
|
+
},
|
|
32
|
+
collapsible: {
|
|
33
|
+
control: 'boolean',
|
|
34
|
+
description: 'Allow all items to be collapsed (single mode only)',
|
|
35
|
+
},
|
|
36
|
+
isDisabled: {
|
|
37
|
+
control: 'boolean',
|
|
38
|
+
description: 'Disable all items',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
} satisfies Meta<typeof Accordion>;
|
|
42
|
+
|
|
43
|
+
export default meta;
|
|
44
|
+
type Story = StoryObj<typeof meta>;
|
|
45
|
+
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Default Stories
|
|
48
|
+
// ============================================================================
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Default: Basic FAQ-style accordion
|
|
52
|
+
*/
|
|
53
|
+
export const Default: Story = {
|
|
54
|
+
render: () => (
|
|
55
|
+
<Accordion type="single" collapsible className="w-[450px]">
|
|
56
|
+
<AccordionItem id="item-1">
|
|
57
|
+
<AccordionTrigger>Is it accessible?</AccordionTrigger>
|
|
58
|
+
<AccordionContent>
|
|
59
|
+
Yes. It adheres to the WAI-ARIA design pattern and is WCAG 2.2 AAA compliant.
|
|
60
|
+
</AccordionContent>
|
|
61
|
+
</AccordionItem>
|
|
62
|
+
<AccordionItem id="item-2">
|
|
63
|
+
<AccordionTrigger>Is it styled?</AccordionTrigger>
|
|
64
|
+
<AccordionContent>
|
|
65
|
+
Yes. It comes with default styles that match the Themis design system
|
|
66
|
+
and can be customized with CSS classes.
|
|
67
|
+
</AccordionContent>
|
|
68
|
+
</AccordionItem>
|
|
69
|
+
<AccordionItem id="item-3">
|
|
70
|
+
<AccordionTrigger>Is it animated?</AccordionTrigger>
|
|
71
|
+
<AccordionContent>
|
|
72
|
+
Yes. It has smooth height animations with reduced motion support
|
|
73
|
+
for users who prefer reduced motion.
|
|
74
|
+
</AccordionContent>
|
|
75
|
+
</AccordionItem>
|
|
76
|
+
</Accordion>
|
|
77
|
+
),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Expansion Mode Stories
|
|
82
|
+
// ============================================================================
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* SingleCollapsible: Only one item open at a time, all can be closed
|
|
86
|
+
*/
|
|
87
|
+
export const SingleCollapsible: Story = {
|
|
88
|
+
render: () => (
|
|
89
|
+
<Accordion type="single" collapsible className="w-[450px]">
|
|
90
|
+
<AccordionItem id="item-1">
|
|
91
|
+
<AccordionTrigger>Section 1</AccordionTrigger>
|
|
92
|
+
<AccordionContent>
|
|
93
|
+
Click another section to collapse this one. Click the same trigger to close.
|
|
94
|
+
</AccordionContent>
|
|
95
|
+
</AccordionItem>
|
|
96
|
+
<AccordionItem id="item-2">
|
|
97
|
+
<AccordionTrigger>Section 2</AccordionTrigger>
|
|
98
|
+
<AccordionContent>
|
|
99
|
+
Only one section can be open at a time in single mode.
|
|
100
|
+
</AccordionContent>
|
|
101
|
+
</AccordionItem>
|
|
102
|
+
<AccordionItem id="item-3">
|
|
103
|
+
<AccordionTrigger>Section 3</AccordionTrigger>
|
|
104
|
+
<AccordionContent>
|
|
105
|
+
The collapsible prop allows all sections to be closed.
|
|
106
|
+
</AccordionContent>
|
|
107
|
+
</AccordionItem>
|
|
108
|
+
</Accordion>
|
|
109
|
+
),
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* SingleNotCollapsible: One item always open
|
|
114
|
+
*/
|
|
115
|
+
export const SingleNotCollapsible: Story = {
|
|
116
|
+
render: () => (
|
|
117
|
+
<Accordion type="single" collapsible={false} className="w-[450px]">
|
|
118
|
+
<AccordionItem id="item-1">
|
|
119
|
+
<AccordionTrigger>Always One Open</AccordionTrigger>
|
|
120
|
+
<AccordionContent>
|
|
121
|
+
With collapsible=false, one item is always expanded.
|
|
122
|
+
The first item auto-expands on mount.
|
|
123
|
+
</AccordionContent>
|
|
124
|
+
</AccordionItem>
|
|
125
|
+
<AccordionItem id="item-2">
|
|
126
|
+
<AccordionTrigger>Click To Switch</AccordionTrigger>
|
|
127
|
+
<AccordionContent>
|
|
128
|
+
Clicking this closes the previous item.
|
|
129
|
+
</AccordionContent>
|
|
130
|
+
</AccordionItem>
|
|
131
|
+
<AccordionItem id="item-3">
|
|
132
|
+
<AccordionTrigger>Cannot Close All</AccordionTrigger>
|
|
133
|
+
<AccordionContent>
|
|
134
|
+
Clicking the open item does nothing - one must stay open.
|
|
135
|
+
</AccordionContent>
|
|
136
|
+
</AccordionItem>
|
|
137
|
+
</Accordion>
|
|
138
|
+
),
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Multiple: Multiple items can be open simultaneously
|
|
143
|
+
*/
|
|
144
|
+
export const Multiple: Story = {
|
|
145
|
+
render: () => (
|
|
146
|
+
<Accordion type="multiple" className="w-[450px]">
|
|
147
|
+
<AccordionItem id="item-1">
|
|
148
|
+
<AccordionTrigger>Section 1</AccordionTrigger>
|
|
149
|
+
<AccordionContent>
|
|
150
|
+
Open multiple sections at once in multiple mode.
|
|
151
|
+
</AccordionContent>
|
|
152
|
+
</AccordionItem>
|
|
153
|
+
<AccordionItem id="item-2">
|
|
154
|
+
<AccordionTrigger>Section 2</AccordionTrigger>
|
|
155
|
+
<AccordionContent>
|
|
156
|
+
Each section operates independently.
|
|
157
|
+
</AccordionContent>
|
|
158
|
+
</AccordionItem>
|
|
159
|
+
<AccordionItem id="item-3">
|
|
160
|
+
<AccordionTrigger>Section 3</AccordionTrigger>
|
|
161
|
+
<AccordionContent>
|
|
162
|
+
All sections can be open or closed at the same time.
|
|
163
|
+
</AccordionContent>
|
|
164
|
+
</AccordionItem>
|
|
165
|
+
</Accordion>
|
|
166
|
+
),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* MultipleDefaultExpanded: Multiple mode with some items expanded by default
|
|
171
|
+
*/
|
|
172
|
+
export const MultipleDefaultExpanded: Story = {
|
|
173
|
+
render: () => (
|
|
174
|
+
<Accordion type="multiple" defaultExpandedKeys={['item-1', 'item-3']} className="w-[450px]">
|
|
175
|
+
<AccordionItem id="item-1">
|
|
176
|
+
<AccordionTrigger>Expanded by Default</AccordionTrigger>
|
|
177
|
+
<AccordionContent>
|
|
178
|
+
This section is expanded when the page loads.
|
|
179
|
+
</AccordionContent>
|
|
180
|
+
</AccordionItem>
|
|
181
|
+
<AccordionItem id="item-2">
|
|
182
|
+
<AccordionTrigger>Collapsed by Default</AccordionTrigger>
|
|
183
|
+
<AccordionContent>
|
|
184
|
+
This section starts collapsed.
|
|
185
|
+
</AccordionContent>
|
|
186
|
+
</AccordionItem>
|
|
187
|
+
<AccordionItem id="item-3">
|
|
188
|
+
<AccordionTrigger>Also Expanded by Default</AccordionTrigger>
|
|
189
|
+
<AccordionContent>
|
|
190
|
+
Multiple items can be expanded by default using defaultExpandedKeys.
|
|
191
|
+
</AccordionContent>
|
|
192
|
+
</AccordionItem>
|
|
193
|
+
</Accordion>
|
|
194
|
+
),
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// ============================================================================
|
|
198
|
+
// Disabled States Stories
|
|
199
|
+
// ============================================================================
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Disabled: All items disabled
|
|
203
|
+
*/
|
|
204
|
+
export const Disabled: Story = {
|
|
205
|
+
render: () => (
|
|
206
|
+
<Accordion type="single" collapsible isDisabled className="w-[450px]">
|
|
207
|
+
<AccordionItem id="item-1">
|
|
208
|
+
<AccordionTrigger>Disabled Item 1</AccordionTrigger>
|
|
209
|
+
<AccordionContent>
|
|
210
|
+
Cannot interact with disabled accordion.
|
|
211
|
+
</AccordionContent>
|
|
212
|
+
</AccordionItem>
|
|
213
|
+
<AccordionItem id="item-2">
|
|
214
|
+
<AccordionTrigger>Disabled Item 2</AccordionTrigger>
|
|
215
|
+
<AccordionContent>
|
|
216
|
+
All items are disabled.
|
|
217
|
+
</AccordionContent>
|
|
218
|
+
</AccordionItem>
|
|
219
|
+
</Accordion>
|
|
220
|
+
),
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* DisabledKeys: Specific items disabled
|
|
225
|
+
*/
|
|
226
|
+
export const DisabledKeys: Story = {
|
|
227
|
+
render: () => (
|
|
228
|
+
<Accordion type="single" collapsible disabledKeys={['item-2']} className="w-[450px]">
|
|
229
|
+
<AccordionItem id="item-1">
|
|
230
|
+
<AccordionTrigger>Free Features</AccordionTrigger>
|
|
231
|
+
<AccordionContent>
|
|
232
|
+
Available to all users. Click to expand.
|
|
233
|
+
</AccordionContent>
|
|
234
|
+
</AccordionItem>
|
|
235
|
+
<AccordionItem id="item-2">
|
|
236
|
+
<AccordionTrigger>Premium Features (Locked)</AccordionTrigger>
|
|
237
|
+
<AccordionContent>
|
|
238
|
+
Requires subscription to access.
|
|
239
|
+
</AccordionContent>
|
|
240
|
+
</AccordionItem>
|
|
241
|
+
<AccordionItem id="item-3">
|
|
242
|
+
<AccordionTrigger>More Free Features</AccordionTrigger>
|
|
243
|
+
<AccordionContent>
|
|
244
|
+
Also available to all users.
|
|
245
|
+
</AccordionContent>
|
|
246
|
+
</AccordionItem>
|
|
247
|
+
</Accordion>
|
|
248
|
+
),
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* ItemDisabled: Individual item disabled via prop
|
|
253
|
+
*/
|
|
254
|
+
export const ItemDisabled: Story = {
|
|
255
|
+
render: () => (
|
|
256
|
+
<Accordion type="single" collapsible className="w-[450px]">
|
|
257
|
+
<AccordionItem id="item-1">
|
|
258
|
+
<AccordionTrigger>Available Section</AccordionTrigger>
|
|
259
|
+
<AccordionContent>
|
|
260
|
+
This section works normally.
|
|
261
|
+
</AccordionContent>
|
|
262
|
+
</AccordionItem>
|
|
263
|
+
<AccordionItem id="item-2" isDisabled>
|
|
264
|
+
<AccordionTrigger>Coming Soon</AccordionTrigger>
|
|
265
|
+
<AccordionContent>
|
|
266
|
+
This feature is under development.
|
|
267
|
+
</AccordionContent>
|
|
268
|
+
</AccordionItem>
|
|
269
|
+
<AccordionItem id="item-3">
|
|
270
|
+
<AccordionTrigger>Another Available Section</AccordionTrigger>
|
|
271
|
+
<AccordionContent>
|
|
272
|
+
This section also works normally.
|
|
273
|
+
</AccordionContent>
|
|
274
|
+
</AccordionItem>
|
|
275
|
+
</Accordion>
|
|
276
|
+
),
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// ============================================================================
|
|
280
|
+
// Custom Icon Stories
|
|
281
|
+
// ============================================================================
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* CustomIcon: Custom expand/collapse icons
|
|
285
|
+
*/
|
|
286
|
+
export const CustomIcon: Story = {
|
|
287
|
+
render: () => (
|
|
288
|
+
<Accordion type="single" collapsible className="w-[450px]">
|
|
289
|
+
<AccordionItem id="item-1">
|
|
290
|
+
<AccordionTrigger icon={<ChevronRight className="h-4 w-4 transition-transform duration-200 data-[expanded]:rotate-90" />}>
|
|
291
|
+
Right Chevron Icon
|
|
292
|
+
</AccordionTrigger>
|
|
293
|
+
<AccordionContent>
|
|
294
|
+
Using a right-pointing chevron that rotates 90 degrees.
|
|
295
|
+
</AccordionContent>
|
|
296
|
+
</AccordionItem>
|
|
297
|
+
<AccordionItem id="item-2">
|
|
298
|
+
<AccordionTrigger icon={<Plus className="h-4 w-4" />}>
|
|
299
|
+
Plus Icon
|
|
300
|
+
</AccordionTrigger>
|
|
301
|
+
<AccordionContent>
|
|
302
|
+
Using a plus icon (could animate to minus with CSS).
|
|
303
|
+
</AccordionContent>
|
|
304
|
+
</AccordionItem>
|
|
305
|
+
</Accordion>
|
|
306
|
+
),
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* NoIcon: Trigger without icon
|
|
311
|
+
*/
|
|
312
|
+
export const NoIcon: Story = {
|
|
313
|
+
render: () => (
|
|
314
|
+
<Accordion type="single" collapsible className="w-[450px]">
|
|
315
|
+
<AccordionItem id="item-1">
|
|
316
|
+
<AccordionTrigger hideIcon>Clean Trigger Style</AccordionTrigger>
|
|
317
|
+
<AccordionContent>
|
|
318
|
+
No icon displayed - cleaner look for some use cases.
|
|
319
|
+
</AccordionContent>
|
|
320
|
+
</AccordionItem>
|
|
321
|
+
<AccordionItem id="item-2">
|
|
322
|
+
<AccordionTrigger hideIcon>Another Clean Trigger</AccordionTrigger>
|
|
323
|
+
<AccordionContent>
|
|
324
|
+
The hideIcon prop removes the default chevron.
|
|
325
|
+
</AccordionContent>
|
|
326
|
+
</AccordionItem>
|
|
327
|
+
</Accordion>
|
|
328
|
+
),
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
// ============================================================================
|
|
332
|
+
// Heading Level Stories
|
|
333
|
+
// ============================================================================
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* HeadingLevels: Different heading levels for document structure
|
|
337
|
+
*/
|
|
338
|
+
export const HeadingLevels: Story = {
|
|
339
|
+
render: () => (
|
|
340
|
+
<div className="w-[450px] space-y-8">
|
|
341
|
+
<div>
|
|
342
|
+
<h1 className="text-xl font-bold mb-4">Page Title (h1)</h1>
|
|
343
|
+
<Accordion type="single" collapsible>
|
|
344
|
+
<AccordionItem id="item-1">
|
|
345
|
+
<AccordionTrigger as="h2">Section (h2)</AccordionTrigger>
|
|
346
|
+
<AccordionContent>
|
|
347
|
+
Uses h2 for main page sections.
|
|
348
|
+
</AccordionContent>
|
|
349
|
+
</AccordionItem>
|
|
350
|
+
</Accordion>
|
|
351
|
+
</div>
|
|
352
|
+
<div>
|
|
353
|
+
<h2 className="text-lg font-bold mb-4">Section Title (h2)</h2>
|
|
354
|
+
<Accordion type="single" collapsible>
|
|
355
|
+
<AccordionItem id="item-2">
|
|
356
|
+
<AccordionTrigger as="h3">Subsection (h3 - default)</AccordionTrigger>
|
|
357
|
+
<AccordionContent>
|
|
358
|
+
Default h3 is appropriate for subsections.
|
|
359
|
+
</AccordionContent>
|
|
360
|
+
</AccordionItem>
|
|
361
|
+
</Accordion>
|
|
362
|
+
</div>
|
|
363
|
+
<div>
|
|
364
|
+
<h3 className="text-base font-bold mb-4">Subsection Title (h3)</h3>
|
|
365
|
+
<Accordion type="single" collapsible>
|
|
366
|
+
<AccordionItem id="item-3">
|
|
367
|
+
<AccordionTrigger as="h4">FAQ Item (h4)</AccordionTrigger>
|
|
368
|
+
<AccordionContent>
|
|
369
|
+
Uses h4 for deeply nested content.
|
|
370
|
+
</AccordionContent>
|
|
371
|
+
</AccordionItem>
|
|
372
|
+
</Accordion>
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
),
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
// ============================================================================
|
|
379
|
+
// Controlled Mode Story
|
|
380
|
+
// ============================================================================
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Controlled: Externally controlled expansion state
|
|
384
|
+
*/
|
|
385
|
+
export const Controlled: Story = {
|
|
386
|
+
render: function ControlledAccordion() {
|
|
387
|
+
const [expandedKeys, setExpandedKeys] = useState<Set<Key>>(new Set(['item-1']));
|
|
388
|
+
|
|
389
|
+
const toggleItem = (key: Key) => {
|
|
390
|
+
setExpandedKeys((prev) => {
|
|
391
|
+
const newSet = new Set(prev);
|
|
392
|
+
if (newSet.has(key)) {
|
|
393
|
+
newSet.delete(key);
|
|
394
|
+
} else {
|
|
395
|
+
newSet.add(key);
|
|
396
|
+
}
|
|
397
|
+
return newSet;
|
|
398
|
+
});
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
return (
|
|
402
|
+
<div className="w-[450px]">
|
|
403
|
+
<div className="flex gap-2 mb-4">
|
|
404
|
+
<button
|
|
405
|
+
onClick={() => toggleItem('item-1')}
|
|
406
|
+
className={`px-3 py-1 text-sm rounded-md ${
|
|
407
|
+
expandedKeys.has('item-1')
|
|
408
|
+
? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
|
|
409
|
+
: 'bg-[var(--muted)] text-[var(--muted-foreground)]'
|
|
410
|
+
}`}
|
|
411
|
+
>
|
|
412
|
+
Toggle 1
|
|
413
|
+
</button>
|
|
414
|
+
<button
|
|
415
|
+
onClick={() => toggleItem('item-2')}
|
|
416
|
+
className={`px-3 py-1 text-sm rounded-md ${
|
|
417
|
+
expandedKeys.has('item-2')
|
|
418
|
+
? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
|
|
419
|
+
: 'bg-[var(--muted)] text-[var(--muted-foreground)]'
|
|
420
|
+
}`}
|
|
421
|
+
>
|
|
422
|
+
Toggle 2
|
|
423
|
+
</button>
|
|
424
|
+
<button
|
|
425
|
+
onClick={() => toggleItem('item-3')}
|
|
426
|
+
className={`px-3 py-1 text-sm rounded-md ${
|
|
427
|
+
expandedKeys.has('item-3')
|
|
428
|
+
? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
|
|
429
|
+
: 'bg-[var(--muted)] text-[var(--muted-foreground)]'
|
|
430
|
+
}`}
|
|
431
|
+
>
|
|
432
|
+
Toggle 3
|
|
433
|
+
</button>
|
|
434
|
+
</div>
|
|
435
|
+
<Accordion
|
|
436
|
+
type="multiple"
|
|
437
|
+
expandedKeys={expandedKeys}
|
|
438
|
+
onExpandedChange={setExpandedKeys}
|
|
439
|
+
>
|
|
440
|
+
<AccordionItem id="item-1">
|
|
441
|
+
<AccordionTrigger>Section 1</AccordionTrigger>
|
|
442
|
+
<AccordionContent>
|
|
443
|
+
Controlled externally via expandedKeys state.
|
|
444
|
+
</AccordionContent>
|
|
445
|
+
</AccordionItem>
|
|
446
|
+
<AccordionItem id="item-2">
|
|
447
|
+
<AccordionTrigger>Section 2</AccordionTrigger>
|
|
448
|
+
<AccordionContent>
|
|
449
|
+
Use the buttons above or click the triggers.
|
|
450
|
+
</AccordionContent>
|
|
451
|
+
</AccordionItem>
|
|
452
|
+
<AccordionItem id="item-3">
|
|
453
|
+
<AccordionTrigger>Section 3</AccordionTrigger>
|
|
454
|
+
<AccordionContent>
|
|
455
|
+
Both methods update the same state.
|
|
456
|
+
</AccordionContent>
|
|
457
|
+
</AccordionItem>
|
|
458
|
+
</Accordion>
|
|
459
|
+
</div>
|
|
460
|
+
);
|
|
461
|
+
},
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
// ============================================================================
|
|
465
|
+
// Real-World Examples
|
|
466
|
+
// ============================================================================
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* FAQ: Frequently Asked Questions pattern
|
|
470
|
+
*/
|
|
471
|
+
export const FAQ: Story = {
|
|
472
|
+
render: () => (
|
|
473
|
+
<div className="w-[500px]">
|
|
474
|
+
<h2 className="text-xl font-semibold mb-4">Frequently Asked Questions</h2>
|
|
475
|
+
<Accordion type="single" collapsible>
|
|
476
|
+
<AccordionItem id="faq-1">
|
|
477
|
+
<AccordionTrigger>How do I create an account?</AccordionTrigger>
|
|
478
|
+
<AccordionContent>
|
|
479
|
+
Click the "Sign Up" button in the top right corner. Fill in your email
|
|
480
|
+
address and create a password. You'll receive a verification email
|
|
481
|
+
to confirm your account.
|
|
482
|
+
</AccordionContent>
|
|
483
|
+
</AccordionItem>
|
|
484
|
+
<AccordionItem id="faq-2">
|
|
485
|
+
<AccordionTrigger>What payment methods do you accept?</AccordionTrigger>
|
|
486
|
+
<AccordionContent>
|
|
487
|
+
We accept all major credit cards (Visa, MasterCard, American Express),
|
|
488
|
+
PayPal, and bank transfers. Enterprise customers can also pay by invoice.
|
|
489
|
+
</AccordionContent>
|
|
490
|
+
</AccordionItem>
|
|
491
|
+
<AccordionItem id="faq-3">
|
|
492
|
+
<AccordionTrigger>How do I cancel my subscription?</AccordionTrigger>
|
|
493
|
+
<AccordionContent>
|
|
494
|
+
Go to Settings → Billing → Cancel Subscription. Your access will
|
|
495
|
+
continue until the end of your current billing period. You can
|
|
496
|
+
reactivate at any time.
|
|
497
|
+
</AccordionContent>
|
|
498
|
+
</AccordionItem>
|
|
499
|
+
<AccordionItem id="faq-4">
|
|
500
|
+
<AccordionTrigger>Is my data secure?</AccordionTrigger>
|
|
501
|
+
<AccordionContent>
|
|
502
|
+
Yes, we use industry-standard encryption (AES-256) for all data at
|
|
503
|
+
rest and in transit. We're SOC 2 Type II certified and GDPR compliant.
|
|
504
|
+
</AccordionContent>
|
|
505
|
+
</AccordionItem>
|
|
506
|
+
</Accordion>
|
|
507
|
+
</div>
|
|
508
|
+
),
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* SettingsPanel: Settings page pattern with icons
|
|
513
|
+
*/
|
|
514
|
+
export const SettingsPanel: Story = {
|
|
515
|
+
render: () => (
|
|
516
|
+
<div className="w-[500px]">
|
|
517
|
+
<h2 className="text-xl font-semibold mb-4">Settings</h2>
|
|
518
|
+
<Accordion type="multiple" defaultExpandedKeys={['settings-account']}>
|
|
519
|
+
<AccordionItem id="settings-account">
|
|
520
|
+
<AccordionTrigger>
|
|
521
|
+
<span className="flex items-center gap-2">
|
|
522
|
+
<User className="h-4 w-4" />
|
|
523
|
+
Account Settings
|
|
524
|
+
</span>
|
|
525
|
+
</AccordionTrigger>
|
|
526
|
+
<AccordionContent>
|
|
527
|
+
<div className="space-y-4">
|
|
528
|
+
<div>
|
|
529
|
+
<label className="block text-sm font-medium mb-1">Display Name</label>
|
|
530
|
+
<input
|
|
531
|
+
type="text"
|
|
532
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
533
|
+
defaultValue="John Doe"
|
|
534
|
+
/>
|
|
535
|
+
</div>
|
|
536
|
+
<div>
|
|
537
|
+
<label className="block text-sm font-medium mb-1">Email</label>
|
|
538
|
+
<input
|
|
539
|
+
type="email"
|
|
540
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
541
|
+
defaultValue="john@example.com"
|
|
542
|
+
/>
|
|
543
|
+
</div>
|
|
544
|
+
</div>
|
|
545
|
+
</AccordionContent>
|
|
546
|
+
</AccordionItem>
|
|
547
|
+
<AccordionItem id="settings-security">
|
|
548
|
+
<AccordionTrigger>
|
|
549
|
+
<span className="flex items-center gap-2">
|
|
550
|
+
<Lock className="h-4 w-4" />
|
|
551
|
+
Security
|
|
552
|
+
</span>
|
|
553
|
+
</AccordionTrigger>
|
|
554
|
+
<AccordionContent>
|
|
555
|
+
<div className="space-y-4">
|
|
556
|
+
<div className="flex items-center justify-between">
|
|
557
|
+
<span className="text-sm">Two-Factor Authentication</span>
|
|
558
|
+
<button className="px-3 py-1 text-sm bg-[var(--primary)] text-[var(--primary-foreground)] rounded-md">
|
|
559
|
+
Enable
|
|
560
|
+
</button>
|
|
561
|
+
</div>
|
|
562
|
+
<div className="flex items-center justify-between">
|
|
563
|
+
<span className="text-sm">Active Sessions</span>
|
|
564
|
+
<button className="px-3 py-1 text-sm border border-[var(--border)] rounded-md">
|
|
565
|
+
View All
|
|
566
|
+
</button>
|
|
567
|
+
</div>
|
|
568
|
+
</div>
|
|
569
|
+
</AccordionContent>
|
|
570
|
+
</AccordionItem>
|
|
571
|
+
<AccordionItem id="settings-notifications">
|
|
572
|
+
<AccordionTrigger>
|
|
573
|
+
<span className="flex items-center gap-2">
|
|
574
|
+
<Bell className="h-4 w-4" />
|
|
575
|
+
Notifications
|
|
576
|
+
</span>
|
|
577
|
+
</AccordionTrigger>
|
|
578
|
+
<AccordionContent>
|
|
579
|
+
<div className="space-y-3">
|
|
580
|
+
<label className="flex items-center gap-2">
|
|
581
|
+
<input type="checkbox" defaultChecked className="rounded" />
|
|
582
|
+
<span className="text-sm">Email notifications</span>
|
|
583
|
+
</label>
|
|
584
|
+
<label className="flex items-center gap-2">
|
|
585
|
+
<input type="checkbox" defaultChecked className="rounded" />
|
|
586
|
+
<span className="text-sm">Push notifications</span>
|
|
587
|
+
</label>
|
|
588
|
+
<label className="flex items-center gap-2">
|
|
589
|
+
<input type="checkbox" className="rounded" />
|
|
590
|
+
<span className="text-sm">SMS notifications</span>
|
|
591
|
+
</label>
|
|
592
|
+
</div>
|
|
593
|
+
</AccordionContent>
|
|
594
|
+
</AccordionItem>
|
|
595
|
+
</Accordion>
|
|
596
|
+
</div>
|
|
597
|
+
),
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* ProductDetails: E-commerce product details pattern
|
|
602
|
+
*/
|
|
603
|
+
export const ProductDetails: Story = {
|
|
604
|
+
render: () => (
|
|
605
|
+
<div className="w-[500px]">
|
|
606
|
+
<Accordion type="single" collapsible defaultExpandedKeys={['description']}>
|
|
607
|
+
<AccordionItem id="description">
|
|
608
|
+
<AccordionTrigger as="h2">Product Description</AccordionTrigger>
|
|
609
|
+
<AccordionContent>
|
|
610
|
+
<p className="text-sm leading-relaxed">
|
|
611
|
+
Crafted with premium materials, this product combines style with
|
|
612
|
+
functionality. Perfect for everyday use, it features durable
|
|
613
|
+
construction and elegant design that complements any setting.
|
|
614
|
+
</p>
|
|
615
|
+
</AccordionContent>
|
|
616
|
+
</AccordionItem>
|
|
617
|
+
<AccordionItem id="specifications">
|
|
618
|
+
<AccordionTrigger as="h2">Specifications</AccordionTrigger>
|
|
619
|
+
<AccordionContent>
|
|
620
|
+
<dl className="grid grid-cols-2 gap-2 text-sm">
|
|
621
|
+
<dt className="text-[var(--muted-foreground)]">Material</dt>
|
|
622
|
+
<dd>Premium Cotton Blend</dd>
|
|
623
|
+
<dt className="text-[var(--muted-foreground)]">Dimensions</dt>
|
|
624
|
+
<dd>10" x 8" x 4"</dd>
|
|
625
|
+
<dt className="text-[var(--muted-foreground)]">Weight</dt>
|
|
626
|
+
<dd>1.2 lbs</dd>
|
|
627
|
+
<dt className="text-[var(--muted-foreground)]">Color</dt>
|
|
628
|
+
<dd>Charcoal Grey</dd>
|
|
629
|
+
</dl>
|
|
630
|
+
</AccordionContent>
|
|
631
|
+
</AccordionItem>
|
|
632
|
+
<AccordionItem id="shipping">
|
|
633
|
+
<AccordionTrigger as="h2">Shipping & Returns</AccordionTrigger>
|
|
634
|
+
<AccordionContent>
|
|
635
|
+
<ul className="text-sm space-y-2 list-disc list-inside">
|
|
636
|
+
<li>Free shipping on orders over $50</li>
|
|
637
|
+
<li>Standard delivery: 3-5 business days</li>
|
|
638
|
+
<li>Express delivery: 1-2 business days</li>
|
|
639
|
+
<li>30-day hassle-free returns</li>
|
|
640
|
+
</ul>
|
|
641
|
+
</AccordionContent>
|
|
642
|
+
</AccordionItem>
|
|
643
|
+
</Accordion>
|
|
644
|
+
</div>
|
|
645
|
+
),
|
|
646
|
+
};
|
|
647
|
+
|
|
648
|
+
// ============================================================================
|
|
649
|
+
// State Preservation Story
|
|
650
|
+
// ============================================================================
|
|
651
|
+
|
|
652
|
+
/**
|
|
653
|
+
* PreserveState: Form with React Activity state preservation
|
|
654
|
+
*/
|
|
655
|
+
export const PreserveState: Story = {
|
|
656
|
+
render: () => (
|
|
657
|
+
<div className="w-[500px]">
|
|
658
|
+
<p className="text-sm text-[var(--muted-foreground)] mb-4">
|
|
659
|
+
Type in the form, collapse the section, then expand again - your input is preserved!
|
|
660
|
+
</p>
|
|
661
|
+
<Accordion type="single" collapsible>
|
|
662
|
+
<AccordionItem id="form">
|
|
663
|
+
<AccordionTrigger>Contact Form (State Preserved)</AccordionTrigger>
|
|
664
|
+
<AccordionContent preserveState>
|
|
665
|
+
<div className="space-y-4">
|
|
666
|
+
<div>
|
|
667
|
+
<label className="block text-sm font-medium mb-1">Name</label>
|
|
668
|
+
<input
|
|
669
|
+
type="text"
|
|
670
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
671
|
+
placeholder="Enter your name"
|
|
672
|
+
/>
|
|
673
|
+
</div>
|
|
674
|
+
<div>
|
|
675
|
+
<label className="block text-sm font-medium mb-1">Email</label>
|
|
676
|
+
<input
|
|
677
|
+
type="email"
|
|
678
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
679
|
+
placeholder="Enter your email"
|
|
680
|
+
/>
|
|
681
|
+
</div>
|
|
682
|
+
<div>
|
|
683
|
+
<label className="block text-sm font-medium mb-1">Message</label>
|
|
684
|
+
<textarea
|
|
685
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
686
|
+
rows={3}
|
|
687
|
+
placeholder="Enter your message"
|
|
688
|
+
/>
|
|
689
|
+
</div>
|
|
690
|
+
</div>
|
|
691
|
+
</AccordionContent>
|
|
692
|
+
</AccordionItem>
|
|
693
|
+
<AccordionItem id="other">
|
|
694
|
+
<AccordionTrigger>Other Section</AccordionTrigger>
|
|
695
|
+
<AccordionContent>
|
|
696
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
697
|
+
Expand the form section above, fill it in, collapse it, then expand again.
|
|
698
|
+
Your form data will be preserved thanks to React Activity.
|
|
699
|
+
</p>
|
|
700
|
+
</AccordionContent>
|
|
701
|
+
</AccordionItem>
|
|
702
|
+
</Accordion>
|
|
703
|
+
</div>
|
|
704
|
+
),
|
|
705
|
+
};
|
|
706
|
+
|
|
707
|
+
// ============================================================================
|
|
708
|
+
// RTL Story
|
|
709
|
+
// ============================================================================
|
|
710
|
+
|
|
711
|
+
/**
|
|
712
|
+
* RTL: Right-to-left layout
|
|
713
|
+
*/
|
|
714
|
+
export const RTL: Story = {
|
|
715
|
+
render: () => (
|
|
716
|
+
<div dir="rtl" className="w-[450px]">
|
|
717
|
+
<Accordion type="single" collapsible>
|
|
718
|
+
<AccordionItem id="item-1">
|
|
719
|
+
<AccordionTrigger>هل هو متاح؟</AccordionTrigger>
|
|
720
|
+
<AccordionContent>
|
|
721
|
+
نعم. إنه يتوافق مع نمط تصميم WAI-ARIA.
|
|
722
|
+
</AccordionContent>
|
|
723
|
+
</AccordionItem>
|
|
724
|
+
<AccordionItem id="item-2">
|
|
725
|
+
<AccordionTrigger>هل له أسلوب؟</AccordionTrigger>
|
|
726
|
+
<AccordionContent>
|
|
727
|
+
نعم. يأتي مع أنماط افتراضية تطابق نظام التصميم.
|
|
728
|
+
</AccordionContent>
|
|
729
|
+
</AccordionItem>
|
|
730
|
+
<AccordionItem id="item-3">
|
|
731
|
+
<AccordionTrigger>هل هو متحرك؟</AccordionTrigger>
|
|
732
|
+
<AccordionContent>
|
|
733
|
+
نعم. يحتوي على رسوم متحركة سلسة للارتفاع.
|
|
734
|
+
</AccordionContent>
|
|
735
|
+
</AccordionItem>
|
|
736
|
+
</Accordion>
|
|
737
|
+
</div>
|
|
738
|
+
),
|
|
739
|
+
};
|
|
740
|
+
|
|
741
|
+
// ============================================================================
|
|
742
|
+
// Nested Accordion Story
|
|
743
|
+
// ============================================================================
|
|
744
|
+
|
|
745
|
+
/**
|
|
746
|
+
* Nested: Accordion within accordion
|
|
747
|
+
*/
|
|
748
|
+
export const Nested: Story = {
|
|
749
|
+
render: () => (
|
|
750
|
+
<div className="w-[500px]">
|
|
751
|
+
<Accordion type="single" collapsible>
|
|
752
|
+
<AccordionItem id="parent-1">
|
|
753
|
+
<AccordionTrigger as="h2">Category 1</AccordionTrigger>
|
|
754
|
+
<AccordionContent>
|
|
755
|
+
<Accordion type="single" collapsible className="pl-4 border-l border-[var(--border)]">
|
|
756
|
+
<AccordionItem id="child-1-1">
|
|
757
|
+
<AccordionTrigger as="h3">Subcategory 1.1</AccordionTrigger>
|
|
758
|
+
<AccordionContent>
|
|
759
|
+
Content for subcategory 1.1
|
|
760
|
+
</AccordionContent>
|
|
761
|
+
</AccordionItem>
|
|
762
|
+
<AccordionItem id="child-1-2">
|
|
763
|
+
<AccordionTrigger as="h3">Subcategory 1.2</AccordionTrigger>
|
|
764
|
+
<AccordionContent>
|
|
765
|
+
Content for subcategory 1.2
|
|
766
|
+
</AccordionContent>
|
|
767
|
+
</AccordionItem>
|
|
768
|
+
</Accordion>
|
|
769
|
+
</AccordionContent>
|
|
770
|
+
</AccordionItem>
|
|
771
|
+
<AccordionItem id="parent-2">
|
|
772
|
+
<AccordionTrigger as="h2">Category 2</AccordionTrigger>
|
|
773
|
+
<AccordionContent>
|
|
774
|
+
<Accordion type="single" collapsible className="pl-4 border-l border-[var(--border)]">
|
|
775
|
+
<AccordionItem id="child-2-1">
|
|
776
|
+
<AccordionTrigger as="h3">Subcategory 2.1</AccordionTrigger>
|
|
777
|
+
<AccordionContent>
|
|
778
|
+
Content for subcategory 2.1
|
|
779
|
+
</AccordionContent>
|
|
780
|
+
</AccordionItem>
|
|
781
|
+
<AccordionItem id="child-2-2">
|
|
782
|
+
<AccordionTrigger as="h3">Subcategory 2.2</AccordionTrigger>
|
|
783
|
+
<AccordionContent>
|
|
784
|
+
Content for subcategory 2.2
|
|
785
|
+
</AccordionContent>
|
|
786
|
+
</AccordionItem>
|
|
787
|
+
</Accordion>
|
|
788
|
+
</AccordionContent>
|
|
789
|
+
</AccordionItem>
|
|
790
|
+
</Accordion>
|
|
791
|
+
</div>
|
|
792
|
+
),
|
|
793
|
+
};
|