@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,671 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TimeField Component Stories
|
|
3
|
+
* Storybook stories for TimeField component demonstrating all variants, sizes, and states
|
|
4
|
+
*
|
|
5
|
+
* @see timefield-prd.md for full requirements
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useState, type FormEventHandler } from 'react';
|
|
9
|
+
import type { Meta, StoryObj } from '@storybook/nextjs';
|
|
10
|
+
import { TimeField, Time } from './index';
|
|
11
|
+
|
|
12
|
+
const meta = {
|
|
13
|
+
title: 'Elements/TimeField',
|
|
14
|
+
component: TimeField,
|
|
15
|
+
parameters: {
|
|
16
|
+
layout: 'centered',
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component:
|
|
20
|
+
'Accessible time input component with keyboard-editable segments. Built with React Aria TimeField primitive for WCAG 2.2 AAA compliance (7:1 contrast ratio, 44x44px touch targets). Supports 12/24-hour formats, granularity control, and i18n.',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
tags: ['autodocs'],
|
|
25
|
+
argTypes: {
|
|
26
|
+
size: {
|
|
27
|
+
control: 'select',
|
|
28
|
+
options: ['sm', 'default', 'lg'],
|
|
29
|
+
description: 'TimeField size variant',
|
|
30
|
+
table: {
|
|
31
|
+
defaultValue: { summary: 'default' },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
granularity: {
|
|
35
|
+
control: 'select',
|
|
36
|
+
options: ['hour', 'minute', 'second'],
|
|
37
|
+
description: 'Time granularity (which segments to display)',
|
|
38
|
+
table: {
|
|
39
|
+
defaultValue: { summary: 'minute' },
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
hourCycle: {
|
|
43
|
+
control: 'select',
|
|
44
|
+
options: [12, 24],
|
|
45
|
+
description: '12-hour (with AM/PM) or 24-hour format',
|
|
46
|
+
},
|
|
47
|
+
label: {
|
|
48
|
+
control: 'text',
|
|
49
|
+
description: 'Label text for the time field',
|
|
50
|
+
},
|
|
51
|
+
description: {
|
|
52
|
+
control: 'text',
|
|
53
|
+
description: 'Helper text displayed below the input',
|
|
54
|
+
},
|
|
55
|
+
errorMessage: {
|
|
56
|
+
control: 'text',
|
|
57
|
+
description: 'Error message displayed when isInvalid is true',
|
|
58
|
+
},
|
|
59
|
+
isRequired: {
|
|
60
|
+
control: 'boolean',
|
|
61
|
+
description: 'Shows required indicator and sets aria-required',
|
|
62
|
+
},
|
|
63
|
+
isReadOnly: {
|
|
64
|
+
control: 'boolean',
|
|
65
|
+
description: 'Makes input read-only',
|
|
66
|
+
},
|
|
67
|
+
isDisabled: {
|
|
68
|
+
control: 'boolean',
|
|
69
|
+
description: 'Disables the input',
|
|
70
|
+
},
|
|
71
|
+
isInvalid: {
|
|
72
|
+
control: 'boolean',
|
|
73
|
+
description: 'Shows error styling and displays error message',
|
|
74
|
+
},
|
|
75
|
+
hideTimeZone: {
|
|
76
|
+
control: 'boolean',
|
|
77
|
+
description: 'Hides timezone display when using ZonedDateTime',
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
} satisfies Meta<typeof TimeField>;
|
|
81
|
+
|
|
82
|
+
export default meta;
|
|
83
|
+
type Story = StoryObj<typeof meta>;
|
|
84
|
+
|
|
85
|
+
// =============================================================================
|
|
86
|
+
// Basic Stories
|
|
87
|
+
// =============================================================================
|
|
88
|
+
|
|
89
|
+
export const Default: Story = {
|
|
90
|
+
args: {
|
|
91
|
+
label: 'Meeting Time',
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const WithDescription: Story = {
|
|
96
|
+
args: {
|
|
97
|
+
label: 'Event Time',
|
|
98
|
+
description: 'Enter the time the event starts',
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export const WithDefaultValue: Story = {
|
|
103
|
+
args: {
|
|
104
|
+
label: 'Meeting Time',
|
|
105
|
+
defaultValue: new Time(14, 30),
|
|
106
|
+
description: 'Pre-filled with 2:30 PM',
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export const WithError: Story = {
|
|
111
|
+
args: {
|
|
112
|
+
label: 'Appointment Time',
|
|
113
|
+
isInvalid: true,
|
|
114
|
+
errorMessage: 'Please select a valid time',
|
|
115
|
+
},
|
|
116
|
+
parameters: {
|
|
117
|
+
docs: {
|
|
118
|
+
description: {
|
|
119
|
+
story: 'Error state with validation message. Uses destructive styling for border and text.',
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export const Required: Story = {
|
|
126
|
+
args: {
|
|
127
|
+
label: 'Start Time',
|
|
128
|
+
isRequired: true,
|
|
129
|
+
description: 'This field is required',
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const Disabled: Story = {
|
|
134
|
+
args: {
|
|
135
|
+
label: 'Meeting Time',
|
|
136
|
+
defaultValue: new Time(9, 30),
|
|
137
|
+
isDisabled: true,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export const ReadOnly: Story = {
|
|
142
|
+
args: {
|
|
143
|
+
label: 'Confirmed Time',
|
|
144
|
+
defaultValue: new Time(14, 0),
|
|
145
|
+
isReadOnly: true,
|
|
146
|
+
description: 'This time cannot be changed',
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// =============================================================================
|
|
151
|
+
// Granularity Stories
|
|
152
|
+
// =============================================================================
|
|
153
|
+
|
|
154
|
+
export const HourOnly: Story = {
|
|
155
|
+
args: {
|
|
156
|
+
label: 'Shift Start',
|
|
157
|
+
granularity: 'hour',
|
|
158
|
+
defaultValue: new Time(9),
|
|
159
|
+
description: 'Hour granularity for shift scheduling',
|
|
160
|
+
},
|
|
161
|
+
parameters: {
|
|
162
|
+
docs: {
|
|
163
|
+
description: {
|
|
164
|
+
story: 'Hour-only granularity. Shows only hour segment (and AM/PM in 12-hour mode).',
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
export const HourAndMinute: Story = {
|
|
171
|
+
args: {
|
|
172
|
+
label: 'Meeting Time',
|
|
173
|
+
granularity: 'minute',
|
|
174
|
+
defaultValue: new Time(14, 30),
|
|
175
|
+
description: 'Default granularity for most use cases',
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export const WithSeconds: Story = {
|
|
180
|
+
args: {
|
|
181
|
+
label: 'Race Start',
|
|
182
|
+
granularity: 'second',
|
|
183
|
+
defaultValue: new Time(12, 0, 0),
|
|
184
|
+
description: 'Second granularity for precise timing',
|
|
185
|
+
},
|
|
186
|
+
parameters: {
|
|
187
|
+
docs: {
|
|
188
|
+
description: {
|
|
189
|
+
story: 'Full granularity with seconds. Use for precise timing scenarios.',
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export const AllGranularities: Story = {
|
|
196
|
+
render: () => (
|
|
197
|
+
<div className="flex flex-col gap-6 w-80">
|
|
198
|
+
<TimeField label="Hour Only" granularity="hour" defaultValue={new Time(9)} />
|
|
199
|
+
<TimeField label="Hour + Minute" granularity="minute" defaultValue={new Time(14, 30)} />
|
|
200
|
+
<TimeField
|
|
201
|
+
label="Hour + Minute + Second"
|
|
202
|
+
granularity="second"
|
|
203
|
+
defaultValue={new Time(12, 0, 45)}
|
|
204
|
+
/>
|
|
205
|
+
</div>
|
|
206
|
+
),
|
|
207
|
+
parameters: {
|
|
208
|
+
docs: {
|
|
209
|
+
description: {
|
|
210
|
+
story: 'Comparison of all granularity levels: hour, minute, and second.',
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// =============================================================================
|
|
217
|
+
// Hour Cycle Stories
|
|
218
|
+
// =============================================================================
|
|
219
|
+
|
|
220
|
+
export const TwelveHourFormat: Story = {
|
|
221
|
+
args: {
|
|
222
|
+
label: 'Appointment',
|
|
223
|
+
hourCycle: 12,
|
|
224
|
+
defaultValue: new Time(14, 30),
|
|
225
|
+
description: 'Shows 2:30 PM with AM/PM selector',
|
|
226
|
+
},
|
|
227
|
+
parameters: {
|
|
228
|
+
docs: {
|
|
229
|
+
description: {
|
|
230
|
+
story: '12-hour format with AM/PM segment. Common in US and UK.',
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
export const TwentyFourHourFormat: Story = {
|
|
237
|
+
args: {
|
|
238
|
+
label: 'Appointment',
|
|
239
|
+
hourCycle: 24,
|
|
240
|
+
defaultValue: new Time(14, 30),
|
|
241
|
+
description: 'Shows 14:30 without AM/PM',
|
|
242
|
+
},
|
|
243
|
+
parameters: {
|
|
244
|
+
docs: {
|
|
245
|
+
description: {
|
|
246
|
+
story: '24-hour format without AM/PM. Common in Europe and military time.',
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
export const HourCycleComparison: Story = {
|
|
253
|
+
render: () => (
|
|
254
|
+
<div className="flex flex-col gap-6 w-80">
|
|
255
|
+
<TimeField
|
|
256
|
+
label="12-hour Format"
|
|
257
|
+
hourCycle={12}
|
|
258
|
+
defaultValue={new Time(14, 30)}
|
|
259
|
+
description="2:30 PM"
|
|
260
|
+
/>
|
|
261
|
+
<TimeField
|
|
262
|
+
label="24-hour Format"
|
|
263
|
+
hourCycle={24}
|
|
264
|
+
defaultValue={new Time(14, 30)}
|
|
265
|
+
description="14:30"
|
|
266
|
+
/>
|
|
267
|
+
</div>
|
|
268
|
+
),
|
|
269
|
+
parameters: {
|
|
270
|
+
docs: {
|
|
271
|
+
description: {
|
|
272
|
+
story: 'Side-by-side comparison of 12-hour and 24-hour formats with the same time value.',
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
// =============================================================================
|
|
279
|
+
// Size Variants Stories
|
|
280
|
+
// =============================================================================
|
|
281
|
+
|
|
282
|
+
export const Small: Story = {
|
|
283
|
+
args: {
|
|
284
|
+
label: 'Time',
|
|
285
|
+
size: 'sm',
|
|
286
|
+
description: 'Compact size (36px height)',
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
export const Large: Story = {
|
|
291
|
+
args: {
|
|
292
|
+
label: 'Time',
|
|
293
|
+
size: 'lg',
|
|
294
|
+
description: 'Large size (56px height)',
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
export const AllSizes: Story = {
|
|
299
|
+
render: () => (
|
|
300
|
+
<div className="flex flex-col gap-6 w-80">
|
|
301
|
+
<TimeField label="Small" size="sm" defaultValue={new Time(9, 0)} />
|
|
302
|
+
<TimeField label="Default" size="default" defaultValue={new Time(12, 0)} />
|
|
303
|
+
<TimeField label="Large" size="lg" defaultValue={new Time(18, 0)} />
|
|
304
|
+
</div>
|
|
305
|
+
),
|
|
306
|
+
parameters: {
|
|
307
|
+
docs: {
|
|
308
|
+
description: {
|
|
309
|
+
story: 'All 3 size variants: sm (36px), default (44px), lg (56px). Default and large meet WCAG 2.2 AAA touch targets.',
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
// =============================================================================
|
|
316
|
+
// Validation Stories
|
|
317
|
+
// =============================================================================
|
|
318
|
+
|
|
319
|
+
export const WithMinValue: Story = {
|
|
320
|
+
args: {
|
|
321
|
+
label: 'Appointment Time',
|
|
322
|
+
minValue: new Time(9, 0),
|
|
323
|
+
defaultValue: new Time(9, 0),
|
|
324
|
+
description: 'Available from 9:00 AM',
|
|
325
|
+
},
|
|
326
|
+
parameters: {
|
|
327
|
+
docs: {
|
|
328
|
+
description: {
|
|
329
|
+
story: 'Minimum time constraint. Times before 9:00 AM will be marked invalid.',
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
export const WithMaxValue: Story = {
|
|
336
|
+
args: {
|
|
337
|
+
label: 'Appointment Time',
|
|
338
|
+
maxValue: new Time(17, 0),
|
|
339
|
+
defaultValue: new Time(17, 0),
|
|
340
|
+
description: 'Available until 5:00 PM',
|
|
341
|
+
},
|
|
342
|
+
parameters: {
|
|
343
|
+
docs: {
|
|
344
|
+
description: {
|
|
345
|
+
story: 'Maximum time constraint. Times after 5:00 PM will be marked invalid.',
|
|
346
|
+
},
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
export const WithMinAndMaxValue: Story = {
|
|
352
|
+
args: {
|
|
353
|
+
label: 'Office Hours',
|
|
354
|
+
minValue: new Time(9, 0),
|
|
355
|
+
maxValue: new Time(17, 0),
|
|
356
|
+
defaultValue: new Time(12, 0),
|
|
357
|
+
hourCycle: 12,
|
|
358
|
+
description: 'Available 9 AM - 5 PM',
|
|
359
|
+
},
|
|
360
|
+
parameters: {
|
|
361
|
+
docs: {
|
|
362
|
+
description: {
|
|
363
|
+
story: 'Combined min/max constraints for business hours selection.',
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
// =============================================================================
|
|
370
|
+
// Form Integration Stories
|
|
371
|
+
// =============================================================================
|
|
372
|
+
|
|
373
|
+
export const WithFormName: Story = {
|
|
374
|
+
args: {
|
|
375
|
+
label: 'Meeting Time',
|
|
376
|
+
name: 'meetingTime',
|
|
377
|
+
defaultValue: new Time(14, 30),
|
|
378
|
+
description: 'Creates a hidden input for form submission',
|
|
379
|
+
},
|
|
380
|
+
parameters: {
|
|
381
|
+
docs: {
|
|
382
|
+
description: {
|
|
383
|
+
story: 'Form integration with name prop. Value is serialized as HH:MM:SS format.',
|
|
384
|
+
},
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
export const FormExample: Story = {
|
|
390
|
+
render: () => {
|
|
391
|
+
const handleSubmit: FormEventHandler = (e) => {
|
|
392
|
+
e.preventDefault();
|
|
393
|
+
const form = e.currentTarget;
|
|
394
|
+
const formData = new FormData(form as unknown as globalThis.HTMLFormElement);
|
|
395
|
+
alert(`Start: ${formData.get('startTime')}\nEnd: ${formData.get('endTime')}`);
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
return (
|
|
399
|
+
<form onSubmit={handleSubmit} className="flex flex-col gap-4 w-80">
|
|
400
|
+
<TimeField
|
|
401
|
+
label="Start Time"
|
|
402
|
+
name="startTime"
|
|
403
|
+
defaultValue={new Time(9, 0)}
|
|
404
|
+
isRequired
|
|
405
|
+
/>
|
|
406
|
+
<TimeField
|
|
407
|
+
label="End Time"
|
|
408
|
+
name="endTime"
|
|
409
|
+
defaultValue={new Time(17, 0)}
|
|
410
|
+
isRequired
|
|
411
|
+
/>
|
|
412
|
+
<button
|
|
413
|
+
type="submit"
|
|
414
|
+
className="mt-2 rounded-md bg-[var(--primary)] px-4 py-2 text-sm font-medium text-[var(--primary-foreground)]"
|
|
415
|
+
>
|
|
416
|
+
Submit
|
|
417
|
+
</button>
|
|
418
|
+
</form>
|
|
419
|
+
);
|
|
420
|
+
},
|
|
421
|
+
parameters: {
|
|
422
|
+
docs: {
|
|
423
|
+
description: {
|
|
424
|
+
story: 'Complete form example with two TimeFields. Submit to see the serialized values.',
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
},
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
// =============================================================================
|
|
431
|
+
// Controlled Mode Stories
|
|
432
|
+
// =============================================================================
|
|
433
|
+
|
|
434
|
+
export const ControlledMode: Story = {
|
|
435
|
+
render: () => {
|
|
436
|
+
const [time, setTime] = useState<typeof Time.prototype | null>(new Time(10, 30));
|
|
437
|
+
|
|
438
|
+
return (
|
|
439
|
+
<div className="flex flex-col gap-4 w-80">
|
|
440
|
+
<TimeField
|
|
441
|
+
label="Meeting Time"
|
|
442
|
+
value={time}
|
|
443
|
+
onChange={setTime}
|
|
444
|
+
hourCycle={12}
|
|
445
|
+
/>
|
|
446
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
447
|
+
Selected: {time ? `${time.hour}:${String(time.minute).padStart(2, '0')}` : 'None'}
|
|
448
|
+
</p>
|
|
449
|
+
<button
|
|
450
|
+
type="button"
|
|
451
|
+
onClick={() => setTime(new Time(12, 0))}
|
|
452
|
+
className="rounded-md bg-[var(--secondary)] px-3 py-1 text-sm"
|
|
453
|
+
>
|
|
454
|
+
Set to Noon
|
|
455
|
+
</button>
|
|
456
|
+
</div>
|
|
457
|
+
);
|
|
458
|
+
},
|
|
459
|
+
parameters: {
|
|
460
|
+
docs: {
|
|
461
|
+
description: {
|
|
462
|
+
story: 'Controlled mode with external state management. The time value can be read and modified programmatically.',
|
|
463
|
+
},
|
|
464
|
+
},
|
|
465
|
+
},
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
// =============================================================================
|
|
469
|
+
// All States Stories
|
|
470
|
+
// =============================================================================
|
|
471
|
+
|
|
472
|
+
export const AllStates: Story = {
|
|
473
|
+
render: () => (
|
|
474
|
+
<div className="flex flex-col gap-6 w-80">
|
|
475
|
+
<TimeField label="Default" />
|
|
476
|
+
<TimeField label="With Value" defaultValue={new Time(14, 30)} />
|
|
477
|
+
<TimeField label="Required" isRequired description="This field is required" />
|
|
478
|
+
<TimeField label="Invalid" isInvalid errorMessage="Please enter a valid time" />
|
|
479
|
+
<TimeField label="Disabled" isDisabled defaultValue={new Time(9, 0)} />
|
|
480
|
+
<TimeField label="Read-only" isReadOnly defaultValue={new Time(17, 0)} />
|
|
481
|
+
</div>
|
|
482
|
+
),
|
|
483
|
+
parameters: {
|
|
484
|
+
docs: {
|
|
485
|
+
description: {
|
|
486
|
+
story: 'All state variants: default, with value, required, invalid, disabled, and read-only.',
|
|
487
|
+
},
|
|
488
|
+
},
|
|
489
|
+
},
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
// =============================================================================
|
|
493
|
+
// Real-World Examples
|
|
494
|
+
// =============================================================================
|
|
495
|
+
|
|
496
|
+
export const MeetingScheduler: Story = {
|
|
497
|
+
render: () => {
|
|
498
|
+
const [startTime, setStartTime] = useState<typeof Time.prototype | null>(new Time(9, 0));
|
|
499
|
+
const [endTime, setEndTime] = useState<typeof Time.prototype | null>(new Time(10, 0));
|
|
500
|
+
|
|
501
|
+
return (
|
|
502
|
+
<div className="flex flex-col gap-4 w-80">
|
|
503
|
+
<h3 className="text-lg font-semibold">Schedule Meeting</h3>
|
|
504
|
+
<TimeField
|
|
505
|
+
label="Start Time"
|
|
506
|
+
value={startTime}
|
|
507
|
+
onChange={setStartTime}
|
|
508
|
+
minValue={new Time(8, 0)}
|
|
509
|
+
maxValue={new Time(18, 0)}
|
|
510
|
+
hourCycle={12}
|
|
511
|
+
isRequired
|
|
512
|
+
/>
|
|
513
|
+
<TimeField
|
|
514
|
+
label="End Time"
|
|
515
|
+
value={endTime}
|
|
516
|
+
onChange={setEndTime}
|
|
517
|
+
minValue={startTime || new Time(8, 0)}
|
|
518
|
+
maxValue={new Time(18, 0)}
|
|
519
|
+
hourCycle={12}
|
|
520
|
+
isRequired
|
|
521
|
+
/>
|
|
522
|
+
{startTime && endTime && (
|
|
523
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
524
|
+
Duration: {endTime.hour - startTime.hour} hour(s)
|
|
525
|
+
</p>
|
|
526
|
+
)}
|
|
527
|
+
</div>
|
|
528
|
+
);
|
|
529
|
+
},
|
|
530
|
+
parameters: {
|
|
531
|
+
docs: {
|
|
532
|
+
description: {
|
|
533
|
+
story: 'Meeting scheduler with start/end time validation. End time minimum is dynamically set to start time.',
|
|
534
|
+
},
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
export const BusinessHoursConfig: Story = {
|
|
540
|
+
render: () => (
|
|
541
|
+
<div className="flex flex-col gap-4 w-96">
|
|
542
|
+
<h3 className="text-lg font-semibold">Business Hours</h3>
|
|
543
|
+
<div className="grid grid-cols-2 gap-4">
|
|
544
|
+
<TimeField
|
|
545
|
+
label="Monday Open"
|
|
546
|
+
name="monday_open"
|
|
547
|
+
defaultValue={new Time(9, 0)}
|
|
548
|
+
hourCycle={12}
|
|
549
|
+
size="sm"
|
|
550
|
+
/>
|
|
551
|
+
<TimeField
|
|
552
|
+
label="Monday Close"
|
|
553
|
+
name="monday_close"
|
|
554
|
+
defaultValue={new Time(17, 0)}
|
|
555
|
+
hourCycle={12}
|
|
556
|
+
size="sm"
|
|
557
|
+
/>
|
|
558
|
+
<TimeField
|
|
559
|
+
label="Tuesday Open"
|
|
560
|
+
name="tuesday_open"
|
|
561
|
+
defaultValue={new Time(9, 0)}
|
|
562
|
+
hourCycle={12}
|
|
563
|
+
size="sm"
|
|
564
|
+
/>
|
|
565
|
+
<TimeField
|
|
566
|
+
label="Tuesday Close"
|
|
567
|
+
name="tuesday_close"
|
|
568
|
+
defaultValue={new Time(17, 0)}
|
|
569
|
+
hourCycle={12}
|
|
570
|
+
size="sm"
|
|
571
|
+
/>
|
|
572
|
+
</div>
|
|
573
|
+
</div>
|
|
574
|
+
),
|
|
575
|
+
parameters: {
|
|
576
|
+
docs: {
|
|
577
|
+
description: {
|
|
578
|
+
story: 'Business hours configuration form using compact (sm) TimeFields in a grid layout.',
|
|
579
|
+
},
|
|
580
|
+
},
|
|
581
|
+
},
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
export const AlarmClock: Story = {
|
|
585
|
+
render: () => {
|
|
586
|
+
const [alarmTime, setAlarmTime] = useState<typeof Time.prototype | null>(new Time(7, 0));
|
|
587
|
+
|
|
588
|
+
return (
|
|
589
|
+
<div className="flex flex-col gap-4 w-80 items-center">
|
|
590
|
+
<h3 className="text-lg font-semibold">Set Alarm</h3>
|
|
591
|
+
<TimeField
|
|
592
|
+
label="Alarm Time"
|
|
593
|
+
value={alarmTime}
|
|
594
|
+
onChange={setAlarmTime}
|
|
595
|
+
hourCycle={12}
|
|
596
|
+
size="lg"
|
|
597
|
+
/>
|
|
598
|
+
{alarmTime && (
|
|
599
|
+
<p className="text-2xl font-mono">
|
|
600
|
+
{alarmTime.hour > 12 ? alarmTime.hour - 12 : alarmTime.hour || 12}:
|
|
601
|
+
{String(alarmTime.minute).padStart(2, '0')}
|
|
602
|
+
{alarmTime.hour >= 12 ? ' PM' : ' AM'}
|
|
603
|
+
</p>
|
|
604
|
+
)}
|
|
605
|
+
</div>
|
|
606
|
+
);
|
|
607
|
+
},
|
|
608
|
+
parameters: {
|
|
609
|
+
docs: {
|
|
610
|
+
description: {
|
|
611
|
+
story: 'Alarm clock interface with large TimeField and formatted display.',
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
},
|
|
615
|
+
};
|
|
616
|
+
|
|
617
|
+
// =============================================================================
|
|
618
|
+
// Accessibility Stories
|
|
619
|
+
// =============================================================================
|
|
620
|
+
|
|
621
|
+
export const FocusVisible: Story = {
|
|
622
|
+
args: {
|
|
623
|
+
label: 'Focus Me',
|
|
624
|
+
},
|
|
625
|
+
parameters: {
|
|
626
|
+
docs: {
|
|
627
|
+
description: {
|
|
628
|
+
story: 'Tab to focus individual segments. Each segment shows a visible focus ring meeting WCAG 2.2 AAA standards.',
|
|
629
|
+
},
|
|
630
|
+
},
|
|
631
|
+
},
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
export const KeyboardNavigation: Story = {
|
|
635
|
+
render: () => (
|
|
636
|
+
<div className="flex flex-col gap-4 w-80">
|
|
637
|
+
<TimeField label="First Time" />
|
|
638
|
+
<TimeField label="Second Time" />
|
|
639
|
+
<TimeField label="Disabled" isDisabled />
|
|
640
|
+
<TimeField label="Third Time" />
|
|
641
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
642
|
+
Use Tab to move between fields. Arrow keys increment/decrement within segments.
|
|
643
|
+
Disabled fields are skipped.
|
|
644
|
+
</p>
|
|
645
|
+
</div>
|
|
646
|
+
),
|
|
647
|
+
parameters: {
|
|
648
|
+
docs: {
|
|
649
|
+
description: {
|
|
650
|
+
story: 'Navigate between fields with Tab. Arrow Up/Down changes values. Disabled fields are skipped.',
|
|
651
|
+
},
|
|
652
|
+
},
|
|
653
|
+
},
|
|
654
|
+
};
|
|
655
|
+
|
|
656
|
+
export const ScreenReaderSupport: Story = {
|
|
657
|
+
args: {
|
|
658
|
+
label: 'Appointment Time',
|
|
659
|
+
description: 'Select a time for your appointment',
|
|
660
|
+
isRequired: true,
|
|
661
|
+
hourCycle: 12,
|
|
662
|
+
},
|
|
663
|
+
parameters: {
|
|
664
|
+
docs: {
|
|
665
|
+
description: {
|
|
666
|
+
story:
|
|
667
|
+
'All elements are properly linked via ARIA. Segments announce as spinbuttons with min/max values. Description linked via aria-describedby.',
|
|
668
|
+
},
|
|
669
|
+
},
|
|
670
|
+
},
|
|
671
|
+
};
|