@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,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select Component Storybook Stories
|
|
3
|
+
*
|
|
4
|
+
* @see select-prd.md US-1 to US-10 (Select Requirements)
|
|
5
|
+
* @see plan.md (Implementation Plan)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Meta, StoryObj } from '@storybook/nextjs';
|
|
9
|
+
import { useState } from 'react';
|
|
10
|
+
import { Select, MultiSelect } from './Select';
|
|
11
|
+
|
|
12
|
+
const meta = {
|
|
13
|
+
title: 'Elements/Select',
|
|
14
|
+
component: Select,
|
|
15
|
+
parameters: {
|
|
16
|
+
layout: 'centered',
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component:
|
|
20
|
+
'Accessible select/dropdown component with WCAG 2.2 AAA compliance, React Aria primitives, single/multiple selection modes, keyboard navigation, validation integration, and form support.',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
tags: ['autodocs'],
|
|
25
|
+
argTypes: {
|
|
26
|
+
label: {
|
|
27
|
+
control: 'text',
|
|
28
|
+
description: 'Required label for accessibility',
|
|
29
|
+
},
|
|
30
|
+
placeholder: {
|
|
31
|
+
control: 'text',
|
|
32
|
+
description: 'Placeholder text when no value selected',
|
|
33
|
+
},
|
|
34
|
+
description: {
|
|
35
|
+
control: 'text',
|
|
36
|
+
description: 'Helper text displayed below the select',
|
|
37
|
+
},
|
|
38
|
+
errorMessage: {
|
|
39
|
+
control: 'text',
|
|
40
|
+
description: 'Error message to display (from form validation)',
|
|
41
|
+
},
|
|
42
|
+
isDisabled: {
|
|
43
|
+
control: 'boolean',
|
|
44
|
+
description: 'Disable the entire select',
|
|
45
|
+
},
|
|
46
|
+
isRequired: {
|
|
47
|
+
control: 'boolean',
|
|
48
|
+
description: 'Mark field as required with asterisk',
|
|
49
|
+
},
|
|
50
|
+
isLoading: {
|
|
51
|
+
control: 'boolean',
|
|
52
|
+
description: 'Show loading spinner',
|
|
53
|
+
},
|
|
54
|
+
size: {
|
|
55
|
+
control: 'select',
|
|
56
|
+
options: ['sm', 'default', 'lg'],
|
|
57
|
+
description: 'Size variant',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
} satisfies Meta<typeof Select>;
|
|
61
|
+
|
|
62
|
+
export default meta;
|
|
63
|
+
type Story = StoryObj<typeof meta>;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Default story: Basic single selection with 3-5 options
|
|
67
|
+
*/
|
|
68
|
+
export const Default: Story = {
|
|
69
|
+
render: () => (
|
|
70
|
+
<Select label="Framework" placeholder="Select a framework">
|
|
71
|
+
<Select.Item value="react">React</Select.Item>
|
|
72
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
73
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
74
|
+
<Select.Item value="svelte">Svelte</Select.Item>
|
|
75
|
+
</Select>
|
|
76
|
+
),
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* WithDescription: Select with helper text
|
|
81
|
+
*/
|
|
82
|
+
export const WithDescription: Story = {
|
|
83
|
+
render: () => (
|
|
84
|
+
<Select
|
|
85
|
+
label="Framework"
|
|
86
|
+
description="Choose your preferred JavaScript framework"
|
|
87
|
+
placeholder="Select a framework"
|
|
88
|
+
>
|
|
89
|
+
<Select.Item value="react">React</Select.Item>
|
|
90
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
91
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
92
|
+
</Select>
|
|
93
|
+
),
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Required: Select with required indicator
|
|
98
|
+
*/
|
|
99
|
+
export const Required: Story = {
|
|
100
|
+
render: () => (
|
|
101
|
+
<Select label="Framework" isRequired placeholder="Select a framework">
|
|
102
|
+
<Select.Item value="react">React</Select.Item>
|
|
103
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
104
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
105
|
+
</Select>
|
|
106
|
+
),
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* WithError: Select showing validation error
|
|
111
|
+
*/
|
|
112
|
+
export const WithError: Story = {
|
|
113
|
+
render: () => (
|
|
114
|
+
<Select
|
|
115
|
+
label="Framework"
|
|
116
|
+
errorMessage="Please select a framework"
|
|
117
|
+
placeholder="Select a framework"
|
|
118
|
+
>
|
|
119
|
+
<Select.Item value="react">React</Select.Item>
|
|
120
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
121
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
122
|
+
</Select>
|
|
123
|
+
),
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Disabled: Disabled select component
|
|
128
|
+
*/
|
|
129
|
+
export const Disabled: Story = {
|
|
130
|
+
render: () => (
|
|
131
|
+
<Select label="Framework" isDisabled value="react">
|
|
132
|
+
<Select.Item value="react">React</Select.Item>
|
|
133
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
134
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
135
|
+
</Select>
|
|
136
|
+
),
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* WithDisabledItems: Select with some disabled options
|
|
141
|
+
*/
|
|
142
|
+
export const WithDisabledItems: Story = {
|
|
143
|
+
render: () => (
|
|
144
|
+
<Select label="Framework" placeholder="Select a framework">
|
|
145
|
+
<Select.Item value="react">React</Select.Item>
|
|
146
|
+
<Select.Item value="vue" isDisabled>
|
|
147
|
+
Vue (Coming Soon)
|
|
148
|
+
</Select.Item>
|
|
149
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
150
|
+
<Select.Item value="svelte" isDisabled>
|
|
151
|
+
Svelte (Coming Soon)
|
|
152
|
+
</Select.Item>
|
|
153
|
+
</Select>
|
|
154
|
+
),
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Loading: Select in loading state
|
|
159
|
+
*/
|
|
160
|
+
export const Loading: Story = {
|
|
161
|
+
render: () => (
|
|
162
|
+
<Select label="Framework" isLoading placeholder="Loading options...">
|
|
163
|
+
<Select.Item value="react">React</Select.Item>
|
|
164
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
165
|
+
</Select>
|
|
166
|
+
),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Sizes: Different size variants
|
|
171
|
+
*/
|
|
172
|
+
export const Sizes: Story = {
|
|
173
|
+
render: () => (
|
|
174
|
+
<div className="flex flex-col gap-4">
|
|
175
|
+
<Select label="Small" size="sm" value="react">
|
|
176
|
+
<Select.Item value="react">React</Select.Item>
|
|
177
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
178
|
+
</Select>
|
|
179
|
+
<Select label="Default" size="default" value="react">
|
|
180
|
+
<Select.Item value="react">React</Select.Item>
|
|
181
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
182
|
+
</Select>
|
|
183
|
+
<Select label="Large" size="lg" value="react">
|
|
184
|
+
<Select.Item value="react">React</Select.Item>
|
|
185
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
186
|
+
</Select>
|
|
187
|
+
</div>
|
|
188
|
+
),
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* WithSections: Grouped options with section headers
|
|
193
|
+
*/
|
|
194
|
+
export const WithSections: Story = {
|
|
195
|
+
render: () => (
|
|
196
|
+
<Select label="Framework" placeholder="Select a framework">
|
|
197
|
+
<Select.Section>
|
|
198
|
+
<Select.Header>Frontend</Select.Header>
|
|
199
|
+
<Select.Item value="react">React</Select.Item>
|
|
200
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
201
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
202
|
+
</Select.Section>
|
|
203
|
+
<Select.Section>
|
|
204
|
+
<Select.Header>Backend</Select.Header>
|
|
205
|
+
<Select.Item value="express">Express</Select.Item>
|
|
206
|
+
<Select.Item value="fastify">Fastify</Select.Item>
|
|
207
|
+
</Select.Section>
|
|
208
|
+
</Select>
|
|
209
|
+
),
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* CustomValueRendering: Items with icons and badges
|
|
214
|
+
*/
|
|
215
|
+
export const CustomValueRendering: Story = {
|
|
216
|
+
render: () => (
|
|
217
|
+
<Select label="Status" placeholder="Select status">
|
|
218
|
+
<Select.Item value="draft" textValue="Draft">
|
|
219
|
+
<span className="flex items-center gap-2">
|
|
220
|
+
<span className="h-2 w-2 rounded-full bg-gray-400" />
|
|
221
|
+
Draft
|
|
222
|
+
</span>
|
|
223
|
+
</Select.Item>
|
|
224
|
+
<Select.Item value="published" textValue="Published">
|
|
225
|
+
<span className="flex items-center gap-2">
|
|
226
|
+
<span className="h-2 w-2 rounded-full bg-green-500" />
|
|
227
|
+
Published
|
|
228
|
+
</span>
|
|
229
|
+
</Select.Item>
|
|
230
|
+
<Select.Item value="archived" textValue="Archived">
|
|
231
|
+
<span className="flex items-center gap-2">
|
|
232
|
+
<span className="h-2 w-2 rounded-full bg-red-500" />
|
|
233
|
+
Archived
|
|
234
|
+
</span>
|
|
235
|
+
</Select.Item>
|
|
236
|
+
</Select>
|
|
237
|
+
),
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Controlled: Controlled select with state management
|
|
242
|
+
*/
|
|
243
|
+
export const Controlled: Story = {
|
|
244
|
+
render: function ControlledStory() {
|
|
245
|
+
const [value, setValue] = useState<string>('react');
|
|
246
|
+
|
|
247
|
+
return (
|
|
248
|
+
<div className="flex flex-col gap-4">
|
|
249
|
+
<Select
|
|
250
|
+
label="Framework"
|
|
251
|
+
value={value}
|
|
252
|
+
onChange={(newValue) => setValue(newValue as string)}
|
|
253
|
+
>
|
|
254
|
+
<Select.Item value="react">React</Select.Item>
|
|
255
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
256
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
257
|
+
</Select>
|
|
258
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
259
|
+
Selected: <strong>{value}</strong>
|
|
260
|
+
</p>
|
|
261
|
+
</div>
|
|
262
|
+
);
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* MultipleSelection: Multiple selection mode
|
|
268
|
+
*/
|
|
269
|
+
export const MultipleSelection: Story = {
|
|
270
|
+
render: () => (
|
|
271
|
+
<MultiSelect label="Frameworks" placeholder="Select frameworks">
|
|
272
|
+
<MultiSelect.Item value="react">React</MultiSelect.Item>
|
|
273
|
+
<MultiSelect.Item value="vue">Vue</MultiSelect.Item>
|
|
274
|
+
<MultiSelect.Item value="angular">Angular</MultiSelect.Item>
|
|
275
|
+
<MultiSelect.Item value="svelte">Svelte</MultiSelect.Item>
|
|
276
|
+
</MultiSelect>
|
|
277
|
+
),
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* MultipleControlled: Controlled multiple selection
|
|
282
|
+
*/
|
|
283
|
+
export const MultipleControlled: Story = {
|
|
284
|
+
render: function MultipleControlledStory() {
|
|
285
|
+
const [values, setValues] = useState<string[]>(['react', 'vue']);
|
|
286
|
+
|
|
287
|
+
return (
|
|
288
|
+
<div className="flex flex-col gap-4">
|
|
289
|
+
<MultiSelect
|
|
290
|
+
label="Frameworks"
|
|
291
|
+
value={values}
|
|
292
|
+
onChange={(newValues) => setValues(newValues as string[])}
|
|
293
|
+
>
|
|
294
|
+
<MultiSelect.Item value="react">React</MultiSelect.Item>
|
|
295
|
+
<MultiSelect.Item value="vue">Vue</MultiSelect.Item>
|
|
296
|
+
<MultiSelect.Item value="angular">Angular</MultiSelect.Item>
|
|
297
|
+
<MultiSelect.Item value="svelte">Svelte</MultiSelect.Item>
|
|
298
|
+
</MultiSelect>
|
|
299
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
300
|
+
Selected: <strong>{values.join(', ')}</strong>
|
|
301
|
+
</p>
|
|
302
|
+
</div>
|
|
303
|
+
);
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* EmptyState: Select with no options
|
|
309
|
+
*/
|
|
310
|
+
export const EmptyState: Story = {
|
|
311
|
+
render: () => (
|
|
312
|
+
<Select label="Framework" emptyStateMessage="No frameworks available">
|
|
313
|
+
{/* No children */}
|
|
314
|
+
</Select>
|
|
315
|
+
),
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* LargeDataset: Select with many options
|
|
320
|
+
*/
|
|
321
|
+
export const LargeDataset: Story = {
|
|
322
|
+
render: () => (
|
|
323
|
+
<Select label="Country" placeholder="Select a country">
|
|
324
|
+
{Array.from({ length: 50 }, (_, i) => {
|
|
325
|
+
const countryName = `Country ${i + 1}`;
|
|
326
|
+
return (
|
|
327
|
+
<Select.Item key={i} value={`country-${i}`} textValue={countryName}>
|
|
328
|
+
{countryName}
|
|
329
|
+
</Select.Item>
|
|
330
|
+
);
|
|
331
|
+
})}
|
|
332
|
+
</Select>
|
|
333
|
+
),
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* InForm: Select within a form context
|
|
338
|
+
*/
|
|
339
|
+
export const InForm: Story = {
|
|
340
|
+
render: () => (
|
|
341
|
+
<form
|
|
342
|
+
onSubmit={(e) => {
|
|
343
|
+
e.preventDefault();
|
|
344
|
+
const formData = new FormData(e.currentTarget);
|
|
345
|
+
console.log('Form submitted:', Object.fromEntries(formData));
|
|
346
|
+
}}
|
|
347
|
+
className="flex flex-col gap-4"
|
|
348
|
+
>
|
|
349
|
+
<Select label="Framework" name="framework" isRequired defaultValue="react">
|
|
350
|
+
<Select.Item value="react">React</Select.Item>
|
|
351
|
+
<Select.Item value="vue">Vue</Select.Item>
|
|
352
|
+
<Select.Item value="angular">Angular</Select.Item>
|
|
353
|
+
</Select>
|
|
354
|
+
<button
|
|
355
|
+
type="submit"
|
|
356
|
+
className="rounded-md bg-[var(--primary)] px-4 py-2 text-[var(--primary-foreground)]"
|
|
357
|
+
>
|
|
358
|
+
Submit
|
|
359
|
+
</button>
|
|
360
|
+
</form>
|
|
361
|
+
),
|
|
362
|
+
};
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skeleton Component Stories
|
|
3
|
+
* Storybook stories for Skeleton component demonstrating all variants, compositions, and themes
|
|
4
|
+
*
|
|
5
|
+
* @see tasks.md Phase 3.1 (Storybook Stories)
|
|
6
|
+
* @see spec.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Meta, StoryObj } from '@storybook/nextjs';
|
|
10
|
+
import { Skeleton } from './Skeleton';
|
|
11
|
+
|
|
12
|
+
const meta = {
|
|
13
|
+
title: 'Elements/Skeleton',
|
|
14
|
+
component: Skeleton,
|
|
15
|
+
parameters: {
|
|
16
|
+
layout: 'centered',
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component: 'Loading placeholder component with pulse animation and theme-aware styling. WCAG 2.2 AAA compliant (7:1 contrast ratio via semantic tokens). Non-interactive presentational component.',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
tags: ['autodocs'],
|
|
24
|
+
argTypes: {
|
|
25
|
+
variant: {
|
|
26
|
+
control: 'select',
|
|
27
|
+
options: ['rectangle', 'circle', 'text'],
|
|
28
|
+
description: 'Shape of the skeleton placeholder',
|
|
29
|
+
table: {
|
|
30
|
+
defaultValue: { summary: 'rectangle' },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
className: {
|
|
34
|
+
control: 'text',
|
|
35
|
+
description: 'Custom className for width/height (e.g., "w-20 h-20")',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
} satisfies Meta<typeof Skeleton>;
|
|
39
|
+
|
|
40
|
+
export default meta;
|
|
41
|
+
type Story = StoryObj<typeof meta>;
|
|
42
|
+
|
|
43
|
+
// Basic variant stories
|
|
44
|
+
export const Default: Story = {
|
|
45
|
+
args: {
|
|
46
|
+
className: 'w-[250px] h-[20px]',
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const Circle: Story = {
|
|
51
|
+
args: {
|
|
52
|
+
variant: 'circle',
|
|
53
|
+
className: 'w-12 h-12',
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const Text: Story = {
|
|
58
|
+
args: {
|
|
59
|
+
variant: 'text',
|
|
60
|
+
className: 'w-[200px]',
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const CustomSize: Story = {
|
|
65
|
+
args: {
|
|
66
|
+
variant: 'rectangle',
|
|
67
|
+
className: 'w-[300px] h-[100px]',
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// Variant comparison grid
|
|
72
|
+
export const AllVariants: Story = {
|
|
73
|
+
render: () => (
|
|
74
|
+
<div className="flex flex-col gap-4 p-4">
|
|
75
|
+
<div className="flex items-center gap-4">
|
|
76
|
+
<span className="w-24 text-sm text-muted-foreground">Rectangle:</span>
|
|
77
|
+
<Skeleton className="w-[250px] h-[20px]" />
|
|
78
|
+
</div>
|
|
79
|
+
<div className="flex items-center gap-4">
|
|
80
|
+
<span className="w-24 text-sm text-muted-foreground">Circle:</span>
|
|
81
|
+
<Skeleton variant="circle" className="w-12 h-12" />
|
|
82
|
+
</div>
|
|
83
|
+
<div className="flex items-center gap-4">
|
|
84
|
+
<span className="w-24 text-sm text-muted-foreground">Text:</span>
|
|
85
|
+
<Skeleton variant="text" className="w-[200px]" />
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
),
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// Composition examples
|
|
92
|
+
export const CardSkeleton: Story = {
|
|
93
|
+
render: () => (
|
|
94
|
+
<div className="w-[350px] p-6 border border-border rounded-lg space-y-3">
|
|
95
|
+
<div className="flex items-center gap-4">
|
|
96
|
+
<Skeleton variant="circle" className="w-12 h-12" />
|
|
97
|
+
<div className="space-y-2 flex-1">
|
|
98
|
+
<Skeleton variant="text" className="w-3/4" />
|
|
99
|
+
<Skeleton variant="text" className="w-1/2" />
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
<Skeleton className="w-full h-[200px]" />
|
|
103
|
+
<div className="space-y-2">
|
|
104
|
+
<Skeleton variant="text" className="w-full" />
|
|
105
|
+
<Skeleton variant="text" className="w-full" />
|
|
106
|
+
<Skeleton variant="text" className="w-3/4" />
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
),
|
|
110
|
+
parameters: {
|
|
111
|
+
docs: {
|
|
112
|
+
description: {
|
|
113
|
+
story: 'Example of a card skeleton with avatar, image, and text placeholders.',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export const AvatarSkeleton: Story = {
|
|
120
|
+
render: () => (
|
|
121
|
+
<div className="flex items-center gap-4">
|
|
122
|
+
<Skeleton variant="circle" className="w-16 h-16" />
|
|
123
|
+
<div className="space-y-2">
|
|
124
|
+
<Skeleton variant="text" className="w-[200px]" />
|
|
125
|
+
<Skeleton variant="text" className="w-[150px]" />
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
),
|
|
129
|
+
parameters: {
|
|
130
|
+
docs: {
|
|
131
|
+
description: {
|
|
132
|
+
story: 'Example of an avatar skeleton with circle and text lines.',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export const TableSkeleton: Story = {
|
|
139
|
+
render: () => (
|
|
140
|
+
<div className="w-[600px] space-y-3">
|
|
141
|
+
{/* Table header */}
|
|
142
|
+
<div className="flex gap-4">
|
|
143
|
+
<Skeleton variant="text" className="w-1/4" />
|
|
144
|
+
<Skeleton variant="text" className="w-1/4" />
|
|
145
|
+
<Skeleton variant="text" className="w-1/4" />
|
|
146
|
+
<Skeleton variant="text" className="w-1/4" />
|
|
147
|
+
</div>
|
|
148
|
+
{/* Table rows */}
|
|
149
|
+
{[...Array(5)].map((_, i) => (
|
|
150
|
+
<div key={i} className="flex gap-4">
|
|
151
|
+
<Skeleton className="w-1/4 h-4" />
|
|
152
|
+
<Skeleton className="w-1/4 h-4" />
|
|
153
|
+
<Skeleton className="w-1/4 h-4" />
|
|
154
|
+
<Skeleton className="w-1/4 h-4" />
|
|
155
|
+
</div>
|
|
156
|
+
))}
|
|
157
|
+
</div>
|
|
158
|
+
),
|
|
159
|
+
parameters: {
|
|
160
|
+
docs: {
|
|
161
|
+
description: {
|
|
162
|
+
story: 'Example of a table skeleton with header and multiple rows.',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
export const FormSkeleton: Story = {
|
|
169
|
+
render: () => (
|
|
170
|
+
<div className="w-[400px] space-y-4">
|
|
171
|
+
<div className="space-y-2">
|
|
172
|
+
<Skeleton variant="text" className="w-24" />
|
|
173
|
+
<Skeleton className="w-full h-10" />
|
|
174
|
+
</div>
|
|
175
|
+
<div className="space-y-2">
|
|
176
|
+
<Skeleton variant="text" className="w-32" />
|
|
177
|
+
<Skeleton className="w-full h-10" />
|
|
178
|
+
</div>
|
|
179
|
+
<div className="space-y-2">
|
|
180
|
+
<Skeleton variant="text" className="w-28" />
|
|
181
|
+
<Skeleton className="w-full h-24" />
|
|
182
|
+
</div>
|
|
183
|
+
<Skeleton className="w-32 h-10" />
|
|
184
|
+
</div>
|
|
185
|
+
),
|
|
186
|
+
parameters: {
|
|
187
|
+
docs: {
|
|
188
|
+
description: {
|
|
189
|
+
story: 'Example of a form skeleton with labels, inputs, and a button.',
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
// Theme stories
|
|
196
|
+
export const DarkTheme: Story = {
|
|
197
|
+
render: () => (
|
|
198
|
+
<div className="dark bg-background p-4 rounded-lg">
|
|
199
|
+
<div className="space-y-3">
|
|
200
|
+
<Skeleton className="w-[250px] h-[20px]" />
|
|
201
|
+
<Skeleton variant="circle" className="w-12 h-12" />
|
|
202
|
+
<Skeleton variant="text" className="w-[200px]" />
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
),
|
|
206
|
+
parameters: {
|
|
207
|
+
docs: {
|
|
208
|
+
description: {
|
|
209
|
+
story: 'Skeleton component in dark theme.',
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
export const HighContrast: Story = {
|
|
216
|
+
render: () => (
|
|
217
|
+
<div className="high-contrast bg-background p-4 rounded-lg">
|
|
218
|
+
<div className="space-y-3">
|
|
219
|
+
<Skeleton className="w-[250px] h-[20px]" />
|
|
220
|
+
<Skeleton variant="circle" className="w-12 h-12" />
|
|
221
|
+
<Skeleton variant="text" className="w-[200px]" />
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
),
|
|
225
|
+
parameters: {
|
|
226
|
+
docs: {
|
|
227
|
+
description: {
|
|
228
|
+
story: 'Skeleton component in high contrast theme (WCAG 2.2 AAA - 7:1 contrast ratio).',
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
export const ColorblindTheme: Story = {
|
|
235
|
+
render: () => (
|
|
236
|
+
<div className="colorblind bg-background p-4 rounded-lg">
|
|
237
|
+
<div className="space-y-3">
|
|
238
|
+
<Skeleton className="w-[250px] h-[20px]" />
|
|
239
|
+
<Skeleton variant="circle" className="w-12 h-12" />
|
|
240
|
+
<Skeleton variant="text" className="w-[200px]" />
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
),
|
|
244
|
+
parameters: {
|
|
245
|
+
docs: {
|
|
246
|
+
description: {
|
|
247
|
+
story: 'Skeleton component in colorblind theme (optimized for deuteranopia, protanopia, tritanopia).',
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
// Animation stories
|
|
254
|
+
export const WithAnimation: Story = {
|
|
255
|
+
args: {
|
|
256
|
+
className: 'w-[250px] h-[20px]',
|
|
257
|
+
},
|
|
258
|
+
parameters: {
|
|
259
|
+
docs: {
|
|
260
|
+
description: {
|
|
261
|
+
story: 'Skeleton with default pulse animation (2s duration, ease-in-out).',
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
export const WithReducedMotion: Story = {
|
|
268
|
+
render: () => (
|
|
269
|
+
<div className="space-y-2">
|
|
270
|
+
<p className="text-sm text-muted-foreground mb-4">
|
|
271
|
+
Note: This story demonstrates reduced motion support. Set your system
|
|
272
|
+
to prefer reduced motion to see the static skeleton.
|
|
273
|
+
</p>
|
|
274
|
+
<Skeleton className="w-[250px] h-[20px]" />
|
|
275
|
+
</div>
|
|
276
|
+
),
|
|
277
|
+
parameters: {
|
|
278
|
+
docs: {
|
|
279
|
+
description: {
|
|
280
|
+
story: 'Skeleton respects prefers-reduced-motion media query (no animation when set).',
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
};
|