@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,364 @@
|
|
|
1
|
+
import { Button } from './chunk-BDXKKMBZ.mjs';
|
|
2
|
+
import { cn } from './chunk-E2KQFV3O.mjs';
|
|
3
|
+
import { useState, useRef, useMemo, useCallback, useEffect } from 'react';
|
|
4
|
+
import { ChevronUpIcon, ChevronDownIcon, PlayIcon, PauseIcon } from 'lucide-react';
|
|
5
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var MIN_ITEM_DURATION_MS = 1e3;
|
|
8
|
+
var TIMER_CHECK_INTERVAL_MS = 1e3;
|
|
9
|
+
function buildManifest(durations) {
|
|
10
|
+
let cumulative = 0;
|
|
11
|
+
return durations.map((duration, index) => {
|
|
12
|
+
const start = cumulative;
|
|
13
|
+
const safeDuration = Math.max(duration, MIN_ITEM_DURATION_MS);
|
|
14
|
+
cumulative += safeDuration;
|
|
15
|
+
return { index, startTime: start, endTime: cumulative };
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function getCurrentItemIndex(manifest, elapsed) {
|
|
19
|
+
if (manifest.length === 0) return 0;
|
|
20
|
+
const totalDuration = manifest[manifest.length - 1]?.endTime ?? 0;
|
|
21
|
+
if (totalDuration === 0) return 0;
|
|
22
|
+
const normalizedElapsed = elapsed % totalDuration;
|
|
23
|
+
const item = manifest.find(
|
|
24
|
+
(m) => normalizedElapsed >= m.startTime && normalizedElapsed < m.endTime
|
|
25
|
+
);
|
|
26
|
+
return item?.index ?? 0;
|
|
27
|
+
}
|
|
28
|
+
function shouldUsePerItemTiming(itemsLength, itemDurations, autoRotateInterval) {
|
|
29
|
+
if (autoRotateInterval === 0) return false;
|
|
30
|
+
if (!itemDurations || itemDurations.length === 0) return false;
|
|
31
|
+
if (itemDurations.length !== itemsLength) {
|
|
32
|
+
console.warn(
|
|
33
|
+
"Carousel: itemDurations length does not match items length. Falling back to autoRotateInterval."
|
|
34
|
+
);
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
function Carousel({
|
|
40
|
+
items,
|
|
41
|
+
autoRotateInterval = 5e3,
|
|
42
|
+
defaultIndex = 0,
|
|
43
|
+
currentIndex: controlledIndex,
|
|
44
|
+
onIndexChange,
|
|
45
|
+
isPaused: controlledIsPaused,
|
|
46
|
+
onPauseChange,
|
|
47
|
+
collapsible = false,
|
|
48
|
+
defaultMinimized = false,
|
|
49
|
+
isMinimized: controlledIsMinimized,
|
|
50
|
+
onMinimizeChange,
|
|
51
|
+
minimizedLabel = "Carousel (minimized)",
|
|
52
|
+
label = "Carousel",
|
|
53
|
+
slideLabel,
|
|
54
|
+
showNavigation = true,
|
|
55
|
+
showPlayPause = true,
|
|
56
|
+
respectReducedMotion = true,
|
|
57
|
+
className,
|
|
58
|
+
slideClassName,
|
|
59
|
+
navigationClassName,
|
|
60
|
+
"aria-label": ariaLabel,
|
|
61
|
+
"aria-labelledby": ariaLabelledBy,
|
|
62
|
+
// Per-item timing props
|
|
63
|
+
itemDurations,
|
|
64
|
+
elapsedTime: controlledElapsedTime,
|
|
65
|
+
onElapsedTimeChange,
|
|
66
|
+
...props
|
|
67
|
+
}) {
|
|
68
|
+
const isControlled = controlledIndex !== void 0;
|
|
69
|
+
const isPauseControlled = controlledIsPaused !== void 0;
|
|
70
|
+
const isMinimizedControlled = controlledIsMinimized !== void 0;
|
|
71
|
+
const isElapsedTimeControlled = controlledElapsedTime !== void 0;
|
|
72
|
+
const [internalIndex, setInternalIndex] = useState(defaultIndex);
|
|
73
|
+
const [internalIsPaused, setInternalIsPaused] = useState(false);
|
|
74
|
+
const [internalIsMinimized, setInternalIsMinimized] = useState(defaultMinimized);
|
|
75
|
+
const [_internalElapsedTime, setInternalElapsedTime] = useState(() => {
|
|
76
|
+
if (!itemDurations || itemDurations.length === 0) return 0;
|
|
77
|
+
if (itemDurations.length !== items.length) return 0;
|
|
78
|
+
if (defaultIndex === 0) return 0;
|
|
79
|
+
const tempManifest = buildManifest(itemDurations);
|
|
80
|
+
return tempManifest[defaultIndex]?.startTime ?? 0;
|
|
81
|
+
});
|
|
82
|
+
const wasPlayingBeforeMinimize = useRef(false);
|
|
83
|
+
const currentIndex = isControlled ? controlledIndex : internalIndex;
|
|
84
|
+
const isPaused = isPauseControlled ? controlledIsPaused : internalIsPaused;
|
|
85
|
+
const isMinimized = isMinimizedControlled ? controlledIsMinimized : internalIsMinimized;
|
|
86
|
+
const usePerItemTiming = useMemo(
|
|
87
|
+
() => shouldUsePerItemTiming(items.length, itemDurations, autoRotateInterval),
|
|
88
|
+
[items.length, itemDurations, autoRotateInterval]
|
|
89
|
+
);
|
|
90
|
+
const manifest = useMemo(() => {
|
|
91
|
+
if (!usePerItemTiming || !itemDurations) return [];
|
|
92
|
+
return buildManifest(itemDurations);
|
|
93
|
+
}, [usePerItemTiming, itemDurations]);
|
|
94
|
+
const totalDuration = useMemo(() => {
|
|
95
|
+
if (manifest.length === 0) return 0;
|
|
96
|
+
return manifest[manifest.length - 1]?.endTime ?? 0;
|
|
97
|
+
}, [manifest]);
|
|
98
|
+
const goToSlide = useCallback(
|
|
99
|
+
(index) => {
|
|
100
|
+
if (isControlled) {
|
|
101
|
+
onIndexChange?.(index);
|
|
102
|
+
} else {
|
|
103
|
+
setInternalIndex(index);
|
|
104
|
+
}
|
|
105
|
+
if (usePerItemTiming && manifest[index]) {
|
|
106
|
+
const newElapsed = manifest[index].startTime;
|
|
107
|
+
if (!isElapsedTimeControlled) {
|
|
108
|
+
setInternalElapsedTime(newElapsed);
|
|
109
|
+
}
|
|
110
|
+
onElapsedTimeChange?.(newElapsed);
|
|
111
|
+
}
|
|
112
|
+
if (isPauseControlled) {
|
|
113
|
+
onPauseChange?.(true);
|
|
114
|
+
} else {
|
|
115
|
+
setInternalIsPaused(true);
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
[
|
|
119
|
+
isControlled,
|
|
120
|
+
isPauseControlled,
|
|
121
|
+
isElapsedTimeControlled,
|
|
122
|
+
onIndexChange,
|
|
123
|
+
onPauseChange,
|
|
124
|
+
onElapsedTimeChange,
|
|
125
|
+
usePerItemTiming,
|
|
126
|
+
manifest
|
|
127
|
+
]
|
|
128
|
+
);
|
|
129
|
+
const togglePause = useCallback(() => {
|
|
130
|
+
const newPauseState = !isPaused;
|
|
131
|
+
if (isPauseControlled) {
|
|
132
|
+
onPauseChange?.(newPauseState);
|
|
133
|
+
} else {
|
|
134
|
+
setInternalIsPaused(newPauseState);
|
|
135
|
+
}
|
|
136
|
+
}, [isPaused, isPauseControlled, onPauseChange]);
|
|
137
|
+
const toggleMinimize = useCallback(() => {
|
|
138
|
+
const newMinimizedState = !isMinimized;
|
|
139
|
+
if (newMinimizedState) {
|
|
140
|
+
wasPlayingBeforeMinimize.current = !isPaused;
|
|
141
|
+
} else {
|
|
142
|
+
if (wasPlayingBeforeMinimize.current && isPaused) {
|
|
143
|
+
if (isPauseControlled) {
|
|
144
|
+
onPauseChange?.(false);
|
|
145
|
+
} else {
|
|
146
|
+
setInternalIsPaused(false);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
wasPlayingBeforeMinimize.current = false;
|
|
150
|
+
}
|
|
151
|
+
if (isMinimizedControlled) {
|
|
152
|
+
onMinimizeChange?.(newMinimizedState);
|
|
153
|
+
} else {
|
|
154
|
+
setInternalIsMinimized(newMinimizedState);
|
|
155
|
+
}
|
|
156
|
+
}, [isMinimized, isMinimizedControlled, onMinimizeChange, isPaused, isPauseControlled, onPauseChange]);
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
if (autoRotateInterval === 0) return;
|
|
159
|
+
if (respectReducedMotion) {
|
|
160
|
+
if (typeof window !== "undefined" && window.matchMedia) {
|
|
161
|
+
const prefersReducedMotion = window.matchMedia(
|
|
162
|
+
"(prefers-reduced-motion: reduce)"
|
|
163
|
+
).matches;
|
|
164
|
+
if (prefersReducedMotion) {
|
|
165
|
+
if (isPauseControlled) {
|
|
166
|
+
onPauseChange?.(true);
|
|
167
|
+
} else {
|
|
168
|
+
setInternalIsPaused(true);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}, [autoRotateInterval, respectReducedMotion, isPauseControlled, onPauseChange]);
|
|
174
|
+
const currentIndexRef = useRef(currentIndex);
|
|
175
|
+
currentIndexRef.current = currentIndex;
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
if (!usePerItemTiming) return;
|
|
178
|
+
if (autoRotateInterval === 0) return;
|
|
179
|
+
if (isPaused || isMinimized) return;
|
|
180
|
+
if (isElapsedTimeControlled) return;
|
|
181
|
+
const interval = setInterval(() => {
|
|
182
|
+
setInternalElapsedTime((prevElapsed) => {
|
|
183
|
+
let newElapsed = prevElapsed + TIMER_CHECK_INTERVAL_MS;
|
|
184
|
+
if (totalDuration > 0 && newElapsed >= totalDuration) {
|
|
185
|
+
newElapsed = 0;
|
|
186
|
+
}
|
|
187
|
+
onElapsedTimeChange?.(newElapsed);
|
|
188
|
+
const newIndex = getCurrentItemIndex(manifest, newElapsed);
|
|
189
|
+
if (newIndex !== currentIndexRef.current) {
|
|
190
|
+
if (isControlled) {
|
|
191
|
+
onIndexChange?.(newIndex);
|
|
192
|
+
} else {
|
|
193
|
+
setInternalIndex(newIndex);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return newElapsed;
|
|
197
|
+
});
|
|
198
|
+
}, TIMER_CHECK_INTERVAL_MS);
|
|
199
|
+
return () => clearInterval(interval);
|
|
200
|
+
}, [
|
|
201
|
+
usePerItemTiming,
|
|
202
|
+
autoRotateInterval,
|
|
203
|
+
isPaused,
|
|
204
|
+
isMinimized,
|
|
205
|
+
isElapsedTimeControlled,
|
|
206
|
+
totalDuration,
|
|
207
|
+
manifest,
|
|
208
|
+
isControlled,
|
|
209
|
+
onIndexChange,
|
|
210
|
+
onElapsedTimeChange
|
|
211
|
+
]);
|
|
212
|
+
useEffect(() => {
|
|
213
|
+
if (usePerItemTiming) return;
|
|
214
|
+
if (autoRotateInterval === 0) return;
|
|
215
|
+
if (isPaused || isMinimized) return;
|
|
216
|
+
const interval = setInterval(() => {
|
|
217
|
+
const nextIndex = (currentIndex + 1) % items.length;
|
|
218
|
+
if (isControlled) {
|
|
219
|
+
onIndexChange?.(nextIndex);
|
|
220
|
+
} else {
|
|
221
|
+
setInternalIndex(nextIndex);
|
|
222
|
+
}
|
|
223
|
+
}, autoRotateInterval);
|
|
224
|
+
return () => clearInterval(interval);
|
|
225
|
+
}, [
|
|
226
|
+
usePerItemTiming,
|
|
227
|
+
autoRotateInterval,
|
|
228
|
+
currentIndex,
|
|
229
|
+
isPaused,
|
|
230
|
+
isMinimized,
|
|
231
|
+
items.length,
|
|
232
|
+
isControlled,
|
|
233
|
+
onIndexChange
|
|
234
|
+
]);
|
|
235
|
+
useEffect(() => {
|
|
236
|
+
if (!usePerItemTiming || !isElapsedTimeControlled) return;
|
|
237
|
+
const newIndex = getCurrentItemIndex(manifest, controlledElapsedTime);
|
|
238
|
+
if (newIndex !== currentIndex) {
|
|
239
|
+
if (isControlled) {
|
|
240
|
+
onIndexChange?.(newIndex);
|
|
241
|
+
} else {
|
|
242
|
+
setInternalIndex(newIndex);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}, [
|
|
246
|
+
usePerItemTiming,
|
|
247
|
+
isElapsedTimeControlled,
|
|
248
|
+
controlledElapsedTime,
|
|
249
|
+
manifest,
|
|
250
|
+
currentIndex,
|
|
251
|
+
isControlled,
|
|
252
|
+
onIndexChange
|
|
253
|
+
]);
|
|
254
|
+
const currentSlideLabel = slideLabel ? slideLabel(currentIndex, items.length) : `Slide ${currentIndex + 1} of ${items.length}`;
|
|
255
|
+
return /* @__PURE__ */ jsx(
|
|
256
|
+
"div",
|
|
257
|
+
{
|
|
258
|
+
className: cn(
|
|
259
|
+
"flex flex-col mb-4 transition-all duration-300",
|
|
260
|
+
!isMinimized && "space-y-4",
|
|
261
|
+
className
|
|
262
|
+
),
|
|
263
|
+
role: "region",
|
|
264
|
+
"aria-roledescription": "carousel",
|
|
265
|
+
"aria-label": isMinimized ? minimizedLabel : ariaLabel || label,
|
|
266
|
+
"aria-labelledby": ariaLabelledBy,
|
|
267
|
+
...props,
|
|
268
|
+
children: isMinimized && collapsible ? /* @__PURE__ */ jsxs(
|
|
269
|
+
"div",
|
|
270
|
+
{
|
|
271
|
+
className: cn(
|
|
272
|
+
"bg-[var(--primary)] rounded-lg px-4 py-2 shadow-md",
|
|
273
|
+
"flex items-center justify-between gap-4"
|
|
274
|
+
),
|
|
275
|
+
children: [
|
|
276
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[var(--primary-foreground)] text-sm", children: [
|
|
277
|
+
minimizedLabel,
|
|
278
|
+
" - ",
|
|
279
|
+
currentSlideLabel
|
|
280
|
+
] }),
|
|
281
|
+
/* @__PURE__ */ jsx(
|
|
282
|
+
Button,
|
|
283
|
+
{
|
|
284
|
+
variant: "outline",
|
|
285
|
+
visualSize: "icon",
|
|
286
|
+
onPress: toggleMinimize,
|
|
287
|
+
"aria-label": "Expand carousel",
|
|
288
|
+
"aria-expanded": false,
|
|
289
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "w-5 h-5" })
|
|
290
|
+
}
|
|
291
|
+
)
|
|
292
|
+
]
|
|
293
|
+
}
|
|
294
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
295
|
+
/* @__PURE__ */ jsx(
|
|
296
|
+
"div",
|
|
297
|
+
{
|
|
298
|
+
className: cn(
|
|
299
|
+
"bg-[var(--primary)] rounded-lg p-4 overflow-hidden shadow-md",
|
|
300
|
+
"slide-in-animation",
|
|
301
|
+
slideClassName
|
|
302
|
+
),
|
|
303
|
+
role: "group",
|
|
304
|
+
"aria-roledescription": "slide",
|
|
305
|
+
"aria-label": currentSlideLabel,
|
|
306
|
+
"aria-live": "polite",
|
|
307
|
+
"aria-atomic": "true",
|
|
308
|
+
children: /* @__PURE__ */ jsx("div", { className: "text-[var(--primary-foreground)] min-h-[2rem] flex items-center", children: items[currentIndex] })
|
|
309
|
+
},
|
|
310
|
+
currentIndex
|
|
311
|
+
),
|
|
312
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
313
|
+
showNavigation && /* @__PURE__ */ jsx(
|
|
314
|
+
"div",
|
|
315
|
+
{
|
|
316
|
+
className: cn("flex items-center", navigationClassName),
|
|
317
|
+
role: "group",
|
|
318
|
+
"aria-label": "Slide navigation",
|
|
319
|
+
children: items.map((_, index) => /* @__PURE__ */ jsx(
|
|
320
|
+
Button,
|
|
321
|
+
{
|
|
322
|
+
variant: index === currentIndex ? "default" : "outline",
|
|
323
|
+
visualSize: "dot",
|
|
324
|
+
onPress: () => goToSlide(index),
|
|
325
|
+
"aria-label": `Go to slide ${index + 1}`,
|
|
326
|
+
"aria-current": index === currentIndex ? true : void 0
|
|
327
|
+
},
|
|
328
|
+
index
|
|
329
|
+
))
|
|
330
|
+
}
|
|
331
|
+
),
|
|
332
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
333
|
+
collapsible && /* @__PURE__ */ jsx(
|
|
334
|
+
Button,
|
|
335
|
+
{
|
|
336
|
+
variant: "default",
|
|
337
|
+
visualSize: "icon",
|
|
338
|
+
onPress: toggleMinimize,
|
|
339
|
+
"aria-label": "Minimize carousel",
|
|
340
|
+
"aria-expanded": true,
|
|
341
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "w-5 h-5" })
|
|
342
|
+
}
|
|
343
|
+
),
|
|
344
|
+
showPlayPause && autoRotateInterval > 0 && /* @__PURE__ */ jsx(
|
|
345
|
+
Button,
|
|
346
|
+
{
|
|
347
|
+
variant: "default",
|
|
348
|
+
visualSize: "icon",
|
|
349
|
+
onPress: togglePause,
|
|
350
|
+
"aria-label": isPaused ? "Play carousel" : "Pause carousel",
|
|
351
|
+
children: isPaused ? /* @__PURE__ */ jsx(PlayIcon, { className: "w-5 h-5" }) : /* @__PURE__ */ jsx(PauseIcon, { className: "w-5 h-5" })
|
|
352
|
+
}
|
|
353
|
+
)
|
|
354
|
+
] })
|
|
355
|
+
] })
|
|
356
|
+
] })
|
|
357
|
+
}
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
Carousel.displayName = "Carousel";
|
|
361
|
+
|
|
362
|
+
export { Carousel };
|
|
363
|
+
//# sourceMappingURL=chunk-X25TNRSD.mjs.map
|
|
364
|
+
//# sourceMappingURL=chunk-X25TNRSD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/elements/Carousel/Carousel.tsx"],"names":[],"mappings":"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","file":"chunk-X25TNRSD.mjs","sourcesContent":["'use client';\n\n/**\n * Carousel Component\n * Accessible carousel for displaying rotating content with React Node support\n *\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\n\nimport { useState, useEffect, useCallback, useMemo, useRef, type ReactNode } from 'react';\nimport { Button } from '../Button';\nimport { PauseIcon, PlayIcon, ChevronUpIcon, ChevronDownIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { CarouselProps, ItemManifest } from './Carousel.types';\n\n/**\n * Minimum duration for any item in milliseconds.\n * Prevents disorienting rapid transitions and allows screen readers time to announce.\n */\nconst MIN_ITEM_DURATION_MS = 1000;\n\n/**\n * Timer check interval in milliseconds.\n * Used for per-item timing mode to check if item should transition.\n */\nconst TIMER_CHECK_INTERVAL_MS = 1000;\n\n/**\n * Builds a manifest mapping cumulative time thresholds to item indices.\n * @param durations - Array of durations in milliseconds for each item\n * @returns Array of ItemManifest entries with startTime and endTime\n */\nfunction buildManifest(durations: number[]): ItemManifest[] {\n let cumulative = 0;\n return durations.map((duration, index) => {\n const start = cumulative;\n // Enforce minimum duration\n const safeDuration = Math.max(duration, MIN_ITEM_DURATION_MS);\n cumulative += safeDuration;\n return { index, startTime: start, endTime: cumulative };\n });\n}\n\n/**\n * Gets the item index that should be displayed for a given elapsed time.\n * @param manifest - Array of ItemManifest entries\n * @param elapsed - Current elapsed time in milliseconds\n * @returns The index of the item that should be displayed\n */\nfunction getCurrentItemIndex(manifest: ItemManifest[], elapsed: number): number {\n if (manifest.length === 0) return 0;\n\n const totalDuration = manifest[manifest.length - 1]?.endTime ?? 0;\n if (totalDuration === 0) return 0;\n\n // Normalize elapsed time to handle wraparound\n const normalizedElapsed = elapsed % totalDuration;\n\n const item = manifest.find(\n (m) => normalizedElapsed >= m.startTime && normalizedElapsed < m.endTime\n );\n return item?.index ?? 0;\n}\n\n/**\n * Validates whether per-item timing should be used.\n * @param itemsLength - Number of items in the carousel\n * @param itemDurations - Optional array of durations\n * @param autoRotateInterval - The autoRotateInterval setting\n * @returns true if per-item timing should be used\n */\nfunction shouldUsePerItemTiming(\n itemsLength: number,\n itemDurations: number[] | undefined,\n autoRotateInterval: number\n): boolean {\n // Disabled if autoRotateInterval is 0\n if (autoRotateInterval === 0) return false;\n\n // Must have itemDurations array\n if (!itemDurations || itemDurations.length === 0) return false;\n\n // Array length must match items length\n if (itemDurations.length !== itemsLength) {\n console.warn(\n 'Carousel: itemDurations length does not match items length. ' +\n 'Falling back to autoRotateInterval.'\n );\n return false;\n }\n\n return true;\n}\n\nexport function Carousel({\n items,\n autoRotateInterval = 5000,\n defaultIndex = 0,\n currentIndex: controlledIndex,\n onIndexChange,\n isPaused: controlledIsPaused,\n onPauseChange,\n collapsible = false,\n defaultMinimized = false,\n isMinimized: controlledIsMinimized,\n onMinimizeChange,\n minimizedLabel = 'Carousel (minimized)',\n label = 'Carousel',\n slideLabel,\n showNavigation = true,\n showPlayPause = true,\n respectReducedMotion = true,\n className,\n slideClassName,\n navigationClassName,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n // Per-item timing props\n itemDurations,\n elapsedTime: controlledElapsedTime,\n onElapsedTimeChange,\n ...props\n}: CarouselProps): ReactNode {\n // Determine if component is controlled or uncontrolled\n const isControlled = controlledIndex !== undefined;\n const isPauseControlled = controlledIsPaused !== undefined;\n const isMinimizedControlled = controlledIsMinimized !== undefined;\n const isElapsedTimeControlled = controlledElapsedTime !== undefined;\n\n // Internal state for uncontrolled mode\n const [internalIndex, setInternalIndex] = useState(defaultIndex);\n const [internalIsPaused, setInternalIsPaused] = useState(false);\n const [internalIsMinimized, setInternalIsMinimized] = useState(defaultMinimized);\n\n // Calculate initial elapsed time based on defaultIndex if itemDurations is provided\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_internalElapsedTime, setInternalElapsedTime] = useState(() => {\n if (!itemDurations || itemDurations.length === 0) return 0;\n if (itemDurations.length !== items.length) return 0;\n if (defaultIndex === 0) return 0;\n\n // Build manifest to find the startTime for the default index\n const tempManifest = buildManifest(itemDurations);\n return tempManifest[defaultIndex]?.startTime ?? 0;\n });\n\n // Ref to track if carousel was playing before minimize\n const wasPlayingBeforeMinimize = useRef(false);\n\n // Use controlled value if provided, otherwise use internal state\n const currentIndex = isControlled ? controlledIndex : internalIndex;\n const isPaused = isPauseControlled ? controlledIsPaused : internalIsPaused;\n const isMinimized = isMinimizedControlled\n ? controlledIsMinimized\n : internalIsMinimized;\n // Determine if per-item timing should be used\n const usePerItemTiming = useMemo(\n () => shouldUsePerItemTiming(items.length, itemDurations, autoRotateInterval),\n [items.length, itemDurations, autoRotateInterval]\n );\n\n // Build the manifest for per-item timing (memoized)\n const manifest = useMemo(() => {\n if (!usePerItemTiming || !itemDurations) return [];\n return buildManifest(itemDurations);\n }, [usePerItemTiming, itemDurations]);\n\n // Calculate total duration (memoized)\n const totalDuration = useMemo(() => {\n if (manifest.length === 0) return 0;\n return manifest[manifest.length - 1]?.endTime ?? 0;\n }, [manifest]);\n\n // Navigation handler\n const goToSlide = useCallback(\n (index: number) => {\n if (isControlled) {\n onIndexChange?.(index);\n } else {\n setInternalIndex(index);\n }\n\n // For per-item timing, jump elapsed time to item's startTime\n if (usePerItemTiming && manifest[index]) {\n const newElapsed = manifest[index].startTime;\n if (!isElapsedTimeControlled) {\n setInternalElapsedTime(newElapsed);\n }\n onElapsedTimeChange?.(newElapsed);\n }\n\n // Pause when user manually navigates\n if (isPauseControlled) {\n onPauseChange?.(true);\n } else {\n setInternalIsPaused(true);\n }\n },\n [\n isControlled,\n isPauseControlled,\n isElapsedTimeControlled,\n onIndexChange,\n onPauseChange,\n onElapsedTimeChange,\n usePerItemTiming,\n manifest,\n ]\n );\n\n // Pause toggle handler\n const togglePause = useCallback(() => {\n const newPauseState = !isPaused;\n\n if (isPauseControlled) {\n onPauseChange?.(newPauseState);\n } else {\n setInternalIsPaused(newPauseState);\n }\n }, [isPaused, isPauseControlled, onPauseChange]);\n\n // Minimize toggle handler\n const toggleMinimize = useCallback(() => {\n const newMinimizedState = !isMinimized;\n\n if (newMinimizedState) {\n // Minimizing - track if we were playing\n wasPlayingBeforeMinimize.current = !isPaused;\n } else {\n // Expanding - resume if we were playing before\n if (wasPlayingBeforeMinimize.current && isPaused) {\n if (isPauseControlled) {\n onPauseChange?.(false);\n } else {\n setInternalIsPaused(false);\n }\n }\n wasPlayingBeforeMinimize.current = false;\n }\n\n if (isMinimizedControlled) {\n onMinimizeChange?.(newMinimizedState);\n } else {\n setInternalIsMinimized(newMinimizedState);\n }\n }, [isMinimized, isMinimizedControlled, onMinimizeChange, isPaused, isPauseControlled, onPauseChange]);\n\n // Reduced motion preference check effect\n useEffect(() => {\n // Check if auto-rotation is disabled\n if (autoRotateInterval === 0) return;\n\n // Respect user's motion preferences\n if (respectReducedMotion) {\n // Check if matchMedia is available (not available in all test environments)\n if (typeof window !== 'undefined' && window.matchMedia) {\n const prefersReducedMotion = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n ).matches;\n\n if (prefersReducedMotion) {\n if (isPauseControlled) {\n onPauseChange?.(true);\n } else {\n setInternalIsPaused(true);\n }\n }\n }\n }\n }, [autoRotateInterval, respectReducedMotion, isPauseControlled, onPauseChange]);\n\n // Ref to track current index for the interval callback\n const currentIndexRef = useRef(currentIndex);\n currentIndexRef.current = currentIndex;\n\n // Per-item timing effect (uncontrolled elapsed time)\n useEffect(() => {\n // Skip if not using per-item timing\n if (!usePerItemTiming) return;\n\n // Don't run if auto-rotation is disabled\n if (autoRotateInterval === 0) return;\n\n // Don't run if paused or minimized\n if (isPaused || isMinimized) return;\n\n // Don't run if elapsed time is controlled externally\n if (isElapsedTimeControlled) return;\n\n // Set up 1-second interval for timer ticks\n const interval = setInterval(() => {\n // Use functional update to get the latest elapsed time\n setInternalElapsedTime((prevElapsed) => {\n // Calculate new elapsed time\n let newElapsed = prevElapsed + TIMER_CHECK_INTERVAL_MS;\n\n // Handle wraparound\n if (totalDuration > 0 && newElapsed >= totalDuration) {\n newElapsed = 0;\n }\n\n // Fire callback (using the new elapsed value)\n onElapsedTimeChange?.(newElapsed);\n\n // Calculate current item from manifest\n const newIndex = getCurrentItemIndex(manifest, newElapsed);\n\n // Update index if changed (using ref for latest value)\n if (newIndex !== currentIndexRef.current) {\n if (isControlled) {\n onIndexChange?.(newIndex);\n } else {\n setInternalIndex(newIndex);\n }\n }\n\n return newElapsed;\n });\n }, TIMER_CHECK_INTERVAL_MS);\n\n return () => clearInterval(interval);\n }, [\n usePerItemTiming,\n autoRotateInterval,\n isPaused,\n isMinimized,\n isElapsedTimeControlled,\n totalDuration,\n manifest,\n isControlled,\n onIndexChange,\n onElapsedTimeChange,\n ]);\n\n // Standard auto-rotation effect (fallback when not using per-item timing)\n useEffect(() => {\n // Skip if using per-item timing\n if (usePerItemTiming) return;\n\n // Check if auto-rotation is disabled\n if (autoRotateInterval === 0) return;\n\n // Don't auto-rotate if paused or minimized\n if (isPaused || isMinimized) return;\n\n const interval = setInterval(() => {\n const nextIndex = (currentIndex + 1) % items.length;\n\n if (isControlled) {\n onIndexChange?.(nextIndex);\n } else {\n setInternalIndex(nextIndex);\n }\n }, autoRotateInterval);\n\n return () => clearInterval(interval);\n }, [\n usePerItemTiming,\n autoRotateInterval,\n currentIndex,\n isPaused,\n isMinimized,\n items.length,\n isControlled,\n onIndexChange,\n ]);\n\n // Effect to sync controlled elapsedTime to displayed index\n useEffect(() => {\n if (!usePerItemTiming || !isElapsedTimeControlled) return;\n\n const newIndex = getCurrentItemIndex(manifest, controlledElapsedTime);\n if (newIndex !== currentIndex) {\n if (isControlled) {\n onIndexChange?.(newIndex);\n } else {\n setInternalIndex(newIndex);\n }\n }\n }, [\n usePerItemTiming,\n isElapsedTimeControlled,\n controlledElapsedTime,\n manifest,\n currentIndex,\n isControlled,\n onIndexChange,\n ]);\n\n // Generate slide label\n const currentSlideLabel = slideLabel\n ? slideLabel(currentIndex, items.length)\n : `Slide ${currentIndex + 1} of ${items.length}`;\n\n return (\n <div\n className={cn(\n 'flex flex-col mb-4 transition-all duration-300',\n !isMinimized && 'space-y-4',\n className\n )}\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={isMinimized ? minimizedLabel : ariaLabel || label}\n aria-labelledby={ariaLabelledBy}\n {...props}\n >\n {/* Minimized State */}\n {isMinimized && collapsible ? (\n <div\n className={cn(\n 'bg-[var(--primary)] rounded-lg px-4 py-2 shadow-md',\n 'flex items-center justify-between gap-4'\n )}\n >\n <span className=\"text-[var(--primary-foreground)] text-sm\">\n {minimizedLabel} - {currentSlideLabel}\n </span>\n <Button\n variant=\"outline\"\n visualSize=\"icon\"\n onPress={toggleMinimize}\n aria-label=\"Expand carousel\"\n aria-expanded={false}\n >\n <ChevronUpIcon className=\"w-5 h-5\" />\n </Button>\n </div>\n ) : (\n <>\n {/* Current Slide */}\n <div\n key={currentIndex}\n className={cn(\n 'bg-[var(--primary)] rounded-lg p-4 overflow-hidden shadow-md',\n 'slide-in-animation',\n slideClassName\n )}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={currentSlideLabel}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n <div className=\"text-[var(--primary-foreground)] min-h-[2rem] flex items-center\">\n {items[currentIndex]}\n </div>\n </div>\n\n {/* Controls Container */}\n <div className=\"flex items-center justify-between gap-4\">\n {/* Navigation Dots */}\n {showNavigation && (\n <div\n className={cn('flex items-center', navigationClassName)}\n role=\"group\"\n aria-label=\"Slide navigation\"\n >\n {items.map((_, index) => (\n <Button\n key={index}\n variant={index === currentIndex ? 'default' : 'outline'}\n visualSize=\"dot\"\n onPress={() => goToSlide(index)}\n aria-label={`Go to slide ${index + 1}`}\n aria-current={index === currentIndex ? true : undefined}\n />\n ))}\n </div>\n )}\n\n {/* Right Controls Group */}\n <div className=\"flex items-center gap-2\">\n {/* Minimize Button */}\n {collapsible && (\n <Button\n variant=\"default\"\n visualSize=\"icon\"\n onPress={toggleMinimize}\n aria-label=\"Minimize carousel\"\n aria-expanded={true}\n >\n <ChevronDownIcon className=\"w-5 h-5\" />\n </Button>\n )}\n \n {/* Play/Pause Button */}\n {showPlayPause && autoRotateInterval > 0 && (\n <Button\n variant=\"default\"\n visualSize=\"icon\"\n onPress={togglePause}\n aria-label={isPaused ? 'Play carousel' : 'Pause carousel'}\n >\n {isPaused ? (\n <PlayIcon className=\"w-5 h-5\" />\n ) : (\n <PauseIcon className=\"w-5 h-5\" />\n )}\n </Button>\n )}\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n\nCarousel.displayName = 'Carousel';\n"]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
5
|
+
|
|
6
|
+
var ButtonGroupContext = react.createContext(null);
|
|
7
|
+
ButtonGroupContext.displayName = "ButtonGroupContext";
|
|
8
|
+
function useButtonGroupContext() {
|
|
9
|
+
return react.useContext(ButtonGroupContext);
|
|
10
|
+
}
|
|
11
|
+
var ButtonGroupItemContext = react.createContext(null);
|
|
12
|
+
ButtonGroupItemContext.displayName = "ButtonGroupItemContext";
|
|
13
|
+
function useButtonGroupItemContext() {
|
|
14
|
+
return react.useContext(ButtonGroupItemContext);
|
|
15
|
+
}
|
|
16
|
+
var buttonGroupVariants = classVarianceAuthority.cva("inline-flex items-center gap-0", {
|
|
17
|
+
variants: {
|
|
18
|
+
orientation: {
|
|
19
|
+
horizontal: "flex-row",
|
|
20
|
+
vertical: "flex-col w-full"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: {
|
|
24
|
+
orientation: "horizontal"
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
var buttonGroupItemVariants = classVarianceAuthority.cva("", {
|
|
28
|
+
variants: {
|
|
29
|
+
orientation: {
|
|
30
|
+
// min-w-[44px] ensures visual layer fills touch target width (for icon buttons)
|
|
31
|
+
horizontal: "min-w-[44px]",
|
|
32
|
+
// flex (overrides inline-flex) + min-h-[44px] makes visual layer fill touch target,
|
|
33
|
+
// eliminating gaps between stacked buttons in vertical orientation
|
|
34
|
+
vertical: "flex min-h-[44px]"
|
|
35
|
+
},
|
|
36
|
+
position: {
|
|
37
|
+
first: "",
|
|
38
|
+
middle: "",
|
|
39
|
+
last: "",
|
|
40
|
+
only: ""
|
|
41
|
+
// Single button - no modifications needed
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
compoundVariants: [
|
|
45
|
+
// ==========================================================================
|
|
46
|
+
// Horizontal Orientation
|
|
47
|
+
// ==========================================================================
|
|
48
|
+
{
|
|
49
|
+
orientation: "horizontal",
|
|
50
|
+
position: "first",
|
|
51
|
+
className: "rounded-r-none border-r-0"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
orientation: "horizontal",
|
|
55
|
+
position: "middle",
|
|
56
|
+
className: "rounded-none border-r-0"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
orientation: "horizontal",
|
|
60
|
+
position: "last",
|
|
61
|
+
className: "rounded-l-none"
|
|
62
|
+
},
|
|
63
|
+
// ==========================================================================
|
|
64
|
+
// Vertical Orientation
|
|
65
|
+
// Note: w-full is handled by Button's effectiveFullWidth for both layers
|
|
66
|
+
// ==========================================================================
|
|
67
|
+
{
|
|
68
|
+
orientation: "vertical",
|
|
69
|
+
position: "first",
|
|
70
|
+
className: "rounded-b-none border-b-0"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
orientation: "vertical",
|
|
74
|
+
position: "middle",
|
|
75
|
+
className: "rounded-none border-b-0"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
orientation: "vertical",
|
|
79
|
+
position: "last",
|
|
80
|
+
className: "rounded-t-none"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
defaultVariants: {
|
|
84
|
+
orientation: "horizontal",
|
|
85
|
+
position: "only"
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
var buttonGroupSeparatorVariants = classVarianceAuthority.cva("bg-[var(--border)]", {
|
|
89
|
+
variants: {
|
|
90
|
+
orientation: {
|
|
91
|
+
horizontal: "w-px h-6 mx-1",
|
|
92
|
+
vertical: "h-px w-full my-1"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
defaultVariants: {
|
|
96
|
+
orientation: "horizontal"
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
exports.ButtonGroupContext = ButtonGroupContext;
|
|
101
|
+
exports.ButtonGroupItemContext = ButtonGroupItemContext;
|
|
102
|
+
exports.buttonGroupItemVariants = buttonGroupItemVariants;
|
|
103
|
+
exports.buttonGroupSeparatorVariants = buttonGroupSeparatorVariants;
|
|
104
|
+
exports.buttonGroupVariants = buttonGroupVariants;
|
|
105
|
+
exports.useButtonGroupContext = useButtonGroupContext;
|
|
106
|
+
exports.useButtonGroupItemContext = useButtonGroupItemContext;
|
|
107
|
+
//# sourceMappingURL=chunk-Y3GT7ETK.js.map
|
|
108
|
+
//# sourceMappingURL=chunk-Y3GT7ETK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/elements/ButtonGroup/ButtonGroupContext.tsx","../src/elements/ButtonGroup/ButtonGroup.variants.ts"],"names":["createContext","useContext","cva"],"mappings":";;;;;AAoCA,IAAM,kBAAA,GAAqBA,oBAA8C,IAAI;AAE7E,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAM1B,SAAS,qBAAA,GAAwD;AACtE,EAAA,OAAOC,iBAAW,kBAAkB,CAAA;AACtC;AAUA,IAAM,sBAAA,GACJD,oBAAkD,IAAI;AAExD,sBAAA,CAAuB,WAAA,GAAc,wBAAA;AAM9B,SAAS,yBAAA,GAAgE;AAC9E,EAAA,OAAOC,iBAAW,sBAAsB,CAAA;AAC1C;AC5CO,IAAM,mBAAA,GAAsBC,2BAAI,gCAAA,EAAkC;AAAA,EACvE,QAAA,EAAU;AAAA,IACR,WAAA,EAAa;AAAA,MACX,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,WAAA,EAAa;AAAA;AAEjB,CAAC;AAcM,IAAM,uBAAA,GAA0BA,2BAAI,EAAA,EAAI;AAAA,EAC7C,QAAA,EAAU;AAAA,IACR,WAAA,EAAa;AAAA;AAAA,MAEX,UAAA,EAAY,cAAA;AAAA;AAAA;AAAA,MAGZ,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,QAAA,EAAU;AAAA,MACR,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ,EAAA;AAAA,MACR,IAAA,EAAM,EAAA;AAAA,MACN,IAAA,EAAM;AAAA;AAAA;AACR,GACF;AAAA,EACA,gBAAA,EAAkB;AAAA;AAAA;AAAA;AAAA,IAIhB;AAAA,MACE,WAAA,EAAa,YAAA;AAAA,MACb,QAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,WAAA,EAAa,YAAA;AAAA,MACb,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,WAAA,EAAa,YAAA;AAAA,MACb,QAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA,MACE,WAAA,EAAa,UAAA;AAAA,MACb,QAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,WAAA,EAAa,UAAA;AAAA,MACb,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,WAAA,EAAa,UAAA;AAAA,MACb,QAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW;AAAA;AACb,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU;AAAA;AAEd,CAAC;AAUM,IAAM,4BAAA,GAA+BA,2BAAI,oBAAA,EAAsB;AAAA,EACpE,QAAA,EAAU;AAAA,IACR,WAAA,EAAa;AAAA,MACX,UAAA,EAAY,eAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,WAAA,EAAa;AAAA;AAEjB,CAAC","file":"chunk-Y3GT7ETK.js","sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from 'react';\nimport type {\n ButtonGroupContextValue,\n ButtonGroupItemContextValue,\n} from './ButtonGroup.types';\n\n/**\n * ButtonGroup Context System (Two-Level)\n *\n * Provides a two-level context pattern for ButtonGroup:\n *\n * 1. ButtonGroupContext (group-level):\n * - Provides: orientation, variant, size, isDisabled\n * - Consumed by: Button (for prop inheritance), Separator (for orientation)\n *\n * 2. ButtonGroupItemContext (item-level):\n * - Provides: position ('first' | 'middle' | 'last' | 'only')\n * - Consumed by: Button (for border-radius styling)\n *\n * Both contexts return null when not in a provider, allowing Button\n * to work standalone without any group context.\n *\n * @see plan.md for architecture details\n * @see ButtonGroup.tsx for Provider implementation\n */\n\n// =============================================================================\n// Group-Level Context\n// =============================================================================\n\n/**\n * Context for group-level props (orientation, variant, size, isDisabled)\n * Default value is null to indicate \"not in a group\"\n */\nconst ButtonGroupContext = createContext<ButtonGroupContextValue | null>(null);\n\nButtonGroupContext.displayName = 'ButtonGroupContext';\n\n/**\n * Hook to access group-level context\n * @returns ButtonGroupContextValue if inside a ButtonGroup, null otherwise\n */\nexport function useButtonGroupContext(): ButtonGroupContextValue | null {\n return useContext(ButtonGroupContext);\n}\n\n// =============================================================================\n// Item-Level Context\n// =============================================================================\n\n/**\n * Context for per-button position information\n * Default value is null to indicate \"not wrapped with position context\"\n */\nconst ButtonGroupItemContext =\n createContext<ButtonGroupItemContextValue | null>(null);\n\nButtonGroupItemContext.displayName = 'ButtonGroupItemContext';\n\n/**\n * Hook to access item-level context (position)\n * @returns ButtonGroupItemContextValue if wrapped with position context, null otherwise\n */\nexport function useButtonGroupItemContext(): ButtonGroupItemContextValue | null {\n return useContext(ButtonGroupItemContext);\n}\n\n// =============================================================================\n// Exports\n// =============================================================================\n\nexport { ButtonGroupContext, ButtonGroupItemContext };\n","import { cva } from 'class-variance-authority';\n\n/**\n * ButtonGroup CVA Variants\n *\n * Defines Class Variance Authority (CVA) variants for:\n * - ButtonGroup container (orientation-based layout)\n * - ButtonGroupItem (position-based border-radius)\n * - ButtonGroupSeparator (orientation-based styling)\n *\n * @see plan.md Phase 1: Design & Contracts - CVA Variants\n * @see constitution.md Principle V (Component Quality Standards)\n */\n\n// =============================================================================\n// Container Variants\n// =============================================================================\n\n/**\n * ButtonGroup container variants\n * Controls the layout direction based on orientation\n * Uses gap-0 to ensure buttons are connected (share borders)\n */\nexport const buttonGroupVariants = cva('inline-flex items-center gap-0', {\n variants: {\n orientation: {\n horizontal: 'flex-row',\n vertical: 'flex-col w-full',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// =============================================================================\n// Item Position Variants\n// =============================================================================\n\n/**\n * ButtonGroupItem position variants\n * Applied to Button's visual layer (Layer 2) for position-aware border-radius\n *\n * Compound variants handle both orientation and position combinations:\n * - Horizontal: left/right borders and radii\n * - Vertical: top/bottom borders and radii\n */\nexport const buttonGroupItemVariants = cva('', {\n variants: {\n orientation: {\n // min-w-[44px] ensures visual layer fills touch target width (for icon buttons)\n horizontal: 'min-w-[44px]',\n // flex (overrides inline-flex) + min-h-[44px] makes visual layer fill touch target,\n // eliminating gaps between stacked buttons in vertical orientation\n vertical: 'flex min-h-[44px]',\n },\n position: {\n first: '',\n middle: '',\n last: '',\n only: '', // Single button - no modifications needed\n },\n },\n compoundVariants: [\n // ==========================================================================\n // Horizontal Orientation\n // ==========================================================================\n {\n orientation: 'horizontal',\n position: 'first',\n className: 'rounded-r-none border-r-0',\n },\n {\n orientation: 'horizontal',\n position: 'middle',\n className: 'rounded-none border-r-0',\n },\n {\n orientation: 'horizontal',\n position: 'last',\n className: 'rounded-l-none',\n },\n // ==========================================================================\n // Vertical Orientation\n // Note: w-full is handled by Button's effectiveFullWidth for both layers\n // ==========================================================================\n {\n orientation: 'vertical',\n position: 'first',\n className: 'rounded-b-none border-b-0',\n },\n {\n orientation: 'vertical',\n position: 'middle',\n className: 'rounded-none border-b-0',\n },\n {\n orientation: 'vertical',\n position: 'last',\n className: 'rounded-t-none',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n position: 'only',\n },\n});\n\n// =============================================================================\n// Separator Variants\n// =============================================================================\n\n/**\n * ButtonGroupSeparator variants\n * Orientation-aware visual divider between button groups\n */\nexport const buttonGroupSeparatorVariants = cva('bg-[var(--border)]', {\n variants: {\n orientation: {\n horizontal: 'w-px h-6 mx-1',\n vertical: 'h-px w-full my-1',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n"]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// src/styles/shared-variants.ts
|
|
2
|
+
var FOCUS_WITHIN_RING = [
|
|
3
|
+
"focus-within:outline-none",
|
|
4
|
+
"focus-within:ring-2",
|
|
5
|
+
"focus-within:ring-[var(--ring)]",
|
|
6
|
+
"focus-within:ring-offset-2"
|
|
7
|
+
];
|
|
8
|
+
var FOCUS_VISIBLE_RING = [
|
|
9
|
+
"focus-visible:outline-none",
|
|
10
|
+
"focus-visible:ring-2",
|
|
11
|
+
"focus-visible:ring-[var(--ring)]",
|
|
12
|
+
"focus-visible:ring-offset-2"
|
|
13
|
+
];
|
|
14
|
+
var FOCUS_RING = [
|
|
15
|
+
"focus:outline-none",
|
|
16
|
+
"focus:ring-2",
|
|
17
|
+
"focus:ring-[var(--ring)]"
|
|
18
|
+
];
|
|
19
|
+
var FOCUS_HIGHLIGHT = [
|
|
20
|
+
"focus:outline-none",
|
|
21
|
+
"focus:bg-[var(--accent)]",
|
|
22
|
+
"focus:text-[var(--accent-foreground)]"
|
|
23
|
+
];
|
|
24
|
+
var DISABLED_STANDARD = [
|
|
25
|
+
"disabled:pointer-events-none",
|
|
26
|
+
"disabled:opacity-50"
|
|
27
|
+
];
|
|
28
|
+
var DISABLED_DATA_ATTR = [
|
|
29
|
+
"data-[disabled]:pointer-events-none",
|
|
30
|
+
"data-[disabled]:opacity-50",
|
|
31
|
+
"data-[disabled]:cursor-not-allowed"
|
|
32
|
+
];
|
|
33
|
+
var TEXT_SIZE_SMALL_SCALE = {
|
|
34
|
+
sm: "text-xs",
|
|
35
|
+
default: "text-sm",
|
|
36
|
+
lg: "text-base"
|
|
37
|
+
};
|
|
38
|
+
var TEXT_SIZE_MEDIUM_SCALE = {
|
|
39
|
+
sm: "text-sm",
|
|
40
|
+
default: "text-base",
|
|
41
|
+
lg: "text-lg"
|
|
42
|
+
};
|
|
43
|
+
var TOUCH_TARGET_MIN = [
|
|
44
|
+
"min-h-[44px]",
|
|
45
|
+
"min-w-[44px]"
|
|
46
|
+
];
|
|
47
|
+
var INTERACTIVE_SIZES = {
|
|
48
|
+
sm: "h-9 w-9",
|
|
49
|
+
// 36px - desktop only, NOT AAA compliant
|
|
50
|
+
default: "h-11 w-11",
|
|
51
|
+
// 44px - AAA compliant
|
|
52
|
+
lg: "h-14 w-14"
|
|
53
|
+
// 56px - AAA compliant, enhanced
|
|
54
|
+
};
|
|
55
|
+
var FIELD_HEIGHTS = {
|
|
56
|
+
sm: "h-9",
|
|
57
|
+
// 36px
|
|
58
|
+
default: "h-11",
|
|
59
|
+
// 44px
|
|
60
|
+
lg: "h-14"
|
|
61
|
+
// 56px
|
|
62
|
+
};
|
|
63
|
+
var ERROR_MESSAGE_BASE = [
|
|
64
|
+
"flex",
|
|
65
|
+
"items-center",
|
|
66
|
+
"gap-1.5",
|
|
67
|
+
"text-[var(--destructive)]"
|
|
68
|
+
];
|
|
69
|
+
var SUCCESS_MESSAGE_BASE = [
|
|
70
|
+
"flex",
|
|
71
|
+
"items-center",
|
|
72
|
+
"gap-1.5",
|
|
73
|
+
"text-[var(--success)]"
|
|
74
|
+
];
|
|
75
|
+
var DESCRIPTION_BASE = [
|
|
76
|
+
"text-[var(--menu-muted)]"
|
|
77
|
+
];
|
|
78
|
+
var LABEL_BASE = [
|
|
79
|
+
"font-medium",
|
|
80
|
+
"text-[var(--content-foreground)]"
|
|
81
|
+
];
|
|
82
|
+
var REQUIRED_INDICATOR = "after:content-['*'] after:ml-0.5 after:text-[var(--destructive)]";
|
|
83
|
+
var POPOVER_ANIMATION_IN = [
|
|
84
|
+
"data-[entering]:animate-in",
|
|
85
|
+
"data-[entering]:fade-in-0",
|
|
86
|
+
"data-[entering]:zoom-in-95"
|
|
87
|
+
];
|
|
88
|
+
var POPOVER_ANIMATION_OUT = [
|
|
89
|
+
"data-[exiting]:animate-out",
|
|
90
|
+
"data-[exiting]:fade-out-0",
|
|
91
|
+
"data-[exiting]:zoom-out-95"
|
|
92
|
+
];
|
|
93
|
+
var REDUCED_MOTION = [
|
|
94
|
+
"motion-reduce:transition-none",
|
|
95
|
+
"motion-reduce:animate-none"
|
|
96
|
+
];
|
|
97
|
+
var TRANSITION_COLORS = [
|
|
98
|
+
"transition-colors",
|
|
99
|
+
"duration-200"
|
|
100
|
+
];
|
|
101
|
+
var TRANSITION_FAST = [
|
|
102
|
+
"transition-colors",
|
|
103
|
+
"duration-150"
|
|
104
|
+
];
|
|
105
|
+
var HOVER_ACCENT = [
|
|
106
|
+
"hover:bg-[var(--accent)]",
|
|
107
|
+
"hover:text-[var(--accent-foreground)]"
|
|
108
|
+
];
|
|
109
|
+
function combineStyles(...styles) {
|
|
110
|
+
return styles.flatMap((s) => Array.isArray(s) ? [...s] : [s]);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export { DESCRIPTION_BASE, DISABLED_DATA_ATTR, DISABLED_STANDARD, ERROR_MESSAGE_BASE, FIELD_HEIGHTS, FOCUS_HIGHLIGHT, FOCUS_RING, FOCUS_VISIBLE_RING, FOCUS_WITHIN_RING, HOVER_ACCENT, INTERACTIVE_SIZES, LABEL_BASE, POPOVER_ANIMATION_IN, POPOVER_ANIMATION_OUT, REDUCED_MOTION, REQUIRED_INDICATOR, SUCCESS_MESSAGE_BASE, TEXT_SIZE_MEDIUM_SCALE, TEXT_SIZE_SMALL_SCALE, TOUCH_TARGET_MIN, TRANSITION_COLORS, TRANSITION_FAST, combineStyles };
|
|
114
|
+
//# sourceMappingURL=chunk-Z4FRNOF6.mjs.map
|
|
115
|
+
//# sourceMappingURL=chunk-Z4FRNOF6.mjs.map
|