@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/elements/DatePicker/DatePicker.variants.ts","../src/elements/DatePicker/DatePicker.tsx","../src/elements/DatePicker/DateRangePicker.tsx","../src/elements/DatePicker/DateField.tsx","../src/elements/DatePicker/Calendar.tsx","../src/elements/DatePicker/DatePicker.types.ts"],"names":["cva","combineStyles","FOCUS_WITHIN_RING","DISABLED_DATA_ATTR","FIELD_HEIGHTS","FOCUS_HIGHLIGHT","TEXT_SIZE_MEDIUM_SCALE","TRANSITION_FAST","HOVER_ACCENT","FOCUS_RING","DISABLED_STANDARD","POPOVER_ANIMATION_IN","POPOVER_ANIMATION_OUT","REDUCED_MOTION","DESCRIPTION_BASE","TEXT_SIZE_SMALL_SCALE","ERROR_MESSAGE_BASE","LABEL_BASE","createContext","forwardRef","useMemo","jsx","jsxs","AriaDatePicker","cn","AriaLabel","AriaGroup","AriaDateInput","AriaDateSegment","AriaButton","CalendarIcon","AriaText","AriaFieldError","AriaPopover","AriaDialog","AriaCalendar","ChevronLeft","AriaHeading","ChevronRight","AriaCalendarGrid","AriaCalendarGridHeader","AriaCalendarHeaderCell","AriaCalendarGridBody","AriaCalendarCell","AriaDateRangePicker","AriaRangeCalendar","AriaDateField","z"],"mappings":"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","file":"chunk-ZP2KV6EX.js","sourcesContent":["/**\n * DatePicker CVA Variants\n * Uses shared utilities from styles/ for consistency and reduced bundle size.\n */\n\nimport { cva } from 'class-variance-authority';\nimport {\n FOCUS_WITHIN_RING,\n FOCUS_RING,\n FOCUS_HIGHLIGHT,\n DISABLED_DATA_ATTR,\n DISABLED_STANDARD,\n TEXT_SIZE_SMALL_SCALE,\n TEXT_SIZE_MEDIUM_SCALE,\n ERROR_MESSAGE_BASE,\n DESCRIPTION_BASE,\n LABEL_BASE,\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION,\n TRANSITION_FAST,\n HOVER_ACCENT,\n FIELD_HEIGHTS,\n combineStyles,\n} from '../../styles';\n\n// ============================================================================\n// Date Field Variants\n// ============================================================================\n\nexport const dateFieldVariants = cva(\n combineStyles(\n 'flex items-center rounded-md border',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'transition-colors duration-200',\n FOCUS_WITHIN_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: `${FIELD_HEIGHTS.sm} px-3 text-sm gap-0.5`,\n default: `${FIELD_HEIGHTS.default} px-4 text-base gap-1`,\n lg: `${FIELD_HEIGHTS.lg} px-5 text-lg gap-1.5`,\n },\n isInvalid: {\n true: 'border-[var(--destructive)] focus-within:ring-[var(--destructive)]',\n false: 'border-[var(--input)] hover:border-[var(--input)]/80',\n },\n },\n defaultVariants: {\n size: 'default',\n isInvalid: false,\n },\n }\n);\n\n// ============================================================================\n// Date Segment Variants\n// ============================================================================\n\nexport const dateSegmentVariants = cva(\n combineStyles(\n 'tabular-nums rounded px-0.5',\n FOCUS_HIGHLIGHT,\n 'data-[placeholder]:text-[var(--menu-muted)]',\n 'data-[type=literal]:text-[var(--menu-muted)]'\n ),\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Cell Variants\n// ============================================================================\n\nexport const calendarCellVariants = cva(\n combineStyles(\n 'flex items-center justify-center rounded-md cursor-pointer',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n // Selected state\n 'data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]',\n 'data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold',\n // Today indicator\n 'data-[today]:border data-[today]:border-[var(--primary)]',\n // Range selection\n 'data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none',\n 'data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none',\n 'data-[selected]:data-[selection-start]:rounded-l-md',\n 'data-[selected]:data-[selection-end]:rounded-r-md',\n // Unavailable/outside/disabled states\n 'data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through',\n 'data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50',\n 'data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50'\n ),\n {\n variants: {\n size: {\n sm: 'h-9 w-9 text-sm',\n default: 'h-11 w-11 text-base',\n lg: 'h-14 w-14 text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Header Variants\n// ============================================================================\n\nexport const calendarHeaderVariants = cva(\n 'flex items-center justify-between px-1 pb-4',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Navigation Button Variants\n// ============================================================================\n\nexport const calendarNavButtonVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_STANDARD\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Variants\n// ============================================================================\n\nexport const calendarGridVariants = cva(\n 'w-full border-collapse',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Header Cell Variants\n// ============================================================================\n\nexport const calendarGridHeaderCellVariants = cva(\n 'text-center font-medium text-[var(--menu-muted)] pb-2',\n {\n variants: {\n size: {\n sm: 'text-xs w-9',\n default: 'text-sm w-11',\n lg: 'text-base w-14',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Popover Variants\n// ============================================================================\n\nexport const datePickerPopoverVariants = cva(\n combineStyles(\n 'z-50 rounded-md border p-3 shadow-md outline-none',\n 'bg-[var(--menu-background)] text-[var(--menu-foreground)]',\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION\n ),\n {\n variants: {\n size: {\n sm: 'w-[260px]',\n default: 'w-[320px]',\n lg: 'w-[380px]',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Trigger Button Variants\n// ============================================================================\n\nexport const datePickerTriggerVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Description and Error Variants\n// ============================================================================\n\nexport const datePickerDescriptionVariants = cva(\n combineStyles(DESCRIPTION_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nexport const datePickerErrorVariants = cva(\n combineStyles(ERROR_MESSAGE_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Label Variants\n// ============================================================================\n\nexport const datePickerLabelVariants = cva(\n combineStyles(\n LABEL_BASE,\n 'block mb-1.5',\n 'data-[required]:after:content-[\"*\"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive)]'\n ),\n {\n variants: {\n size: {\n sm: 'text-sm',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n","'use client';\n\n/**\n * DatePicker Component\n *\n * A fully accessible date picker combining keyboard-editable date segments\n * with a calendar popover for visual selection.\n *\n * Features:\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n * - Keyboard-editable date segments with spinbutton behavior\n * - Calendar popover with month/year navigation\n * - Time selection with configurable granularity\n * - Internationalization and timezone support\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { createContext, forwardRef, useMemo, type ReactElement } from 'react';\nimport {\n DatePicker as AriaDatePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DatePickerProps, DatePickerContextValue } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst DatePickerContext = createContext<DatePickerContextValue>({\n size: 'default',\n});\n\n// Export for potential future use in compound components\nexport { DatePickerContext };\n\n// =============================================================================\n// DatePicker Component\n// =============================================================================\n\n/**\n * DatePicker component for selecting dates with keyboard input and calendar popup.\n *\n * @example\n * ```tsx\n * <DatePicker\n * label=\"Event Date\"\n * description=\"When will the event take place?\"\n * />\n * ```\n */\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n ...props\n },\n ref\n ): ReactElement => {\n // Memoize context value to prevent unnecessary re-renders of consumers\n const contextValue = useMemo<DatePickerContextValue>(\n () => ({\n size,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n }),\n [size, props.isInvalid, props.isDisabled]\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <AriaDatePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n <AriaDateInput className=\"flex flex-1 items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDatePicker>\n </DatePickerContext.Provider>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n","'use client';\n\n/**\n * DateRangePicker Component\n *\n * A date range picker for selecting start and end dates with a shared calendar.\n *\n * Features:\n * - Start and end date fields with range separator\n * - RangeCalendar with highlighted selection\n * - Validates end date is after start date\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateRangePicker as AriaDateRangePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n RangeCalendar as AriaRangeCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DateRangePickerProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateRangePicker Component\n// =============================================================================\n\n/**\n * DateRangePicker component for selecting date ranges.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * label=\"Stay Duration\"\n * description=\"Select check-in and check-out dates\"\n * />\n * ```\n */\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n startName,\n endName,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateRangePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n startName={startName}\n endName={endName}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Range Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n {/* Start Date Input */}\n <AriaDateInput slot=\"start\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Range Separator */}\n <span\n aria-hidden=\"true\"\n className=\"px-2 text-[var(--menu-muted)]\"\n >\n –\n </span>\n\n {/* End Date Input */}\n <AriaDateInput slot=\"end\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Range Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaRangeCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaRangeCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDateRangePicker>\n );\n }\n);\n\nDateRangePicker.displayName = 'DateRangePicker';\n","'use client';\n\n/**\n * DateField Component\n *\n * A standalone keyboard-editable date field without calendar popover.\n * Useful for dense forms where a full DatePicker is not needed.\n *\n * Features:\n * - Keyboard-editable date segments with spinbutton behavior\n * - Full keyboard navigation (Tab, Arrow keys, number typing)\n * - Time selection with configurable granularity\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateField as AriaDateField,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Label as AriaLabel,\n Text as AriaText,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { cn } from '../../utils/cn';\nimport type { DateFieldProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateField Component\n// =============================================================================\n\n/**\n * DateField component for keyboard-editable date input.\n *\n * @example\n * ```tsx\n * <DateField\n * label=\"Birth Date\"\n * description=\"Enter your date of birth\"\n * />\n * ```\n */\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateField\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Input */}\n <AriaDateInput\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n }),\n 'w-fit'\n )}\n >\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n </AriaDateField>\n );\n }\n);\n\nDateField.displayName = 'DateField';\n","'use client';\n\n/**\n * Calendar Component\n *\n * A standalone calendar grid for inline date selection.\n * Useful when the calendar should always be visible (not in a popover).\n *\n * Features:\n * - Full keyboard navigation (Arrow keys, Page Up/Down, Home/End)\n * - Month/year navigation\n * - Date constraints (min/max, unavailable dates)\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Button as AriaButton,\n} from 'react-aria-components';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { CalendarProps } from './DatePicker.types';\nimport {\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Calendar Component\n// =============================================================================\n\n/**\n * Calendar component for inline date selection.\n *\n * @example\n * ```tsx\n * <Calendar\n * value={selectedDate}\n * onChange={setSelectedDate}\n * minValue={today(getLocalTimeZone())}\n * />\n * ```\n */\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n ({ size = 'default', className, ...props }, ref): ReactElement => {\n return (\n <AriaCalendar\n ref={ref}\n className={cn('w-fit', className)}\n {...props}\n >\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n );\n }\n);\n\nCalendar.displayName = 'Calendar';\n","/**\n * DatePicker Component Types\n *\n * Zod schemas and TypeScript types for DatePicker, DateRangePicker,\n * DateField, and Calendar components.\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for full requirements\n */\n\nimport { z } from 'zod';\nimport type {\n DatePickerProps as AriaDatePickerProps,\n DateRangePickerProps as AriaDateRangePickerProps,\n DateFieldProps as AriaDateFieldProps,\n CalendarProps as AriaCalendarProps,\n DateValue,\n RangeValue,\n} from 'react-aria-components';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { dateFieldVariants, calendarCellVariants } from './DatePicker.variants';\n\n// ============================================================================\n// Date Value Types (re-exported for convenience)\n// ============================================================================\n\n/**\n * Union type for all date values supported by the DatePicker.\n * - CalendarDate: Date only (no time)\n * - CalendarDateTime: Date and time (no timezone)\n * - ZonedDateTime: Date, time, and timezone\n */\nexport type { DateValue } from 'react-aria-components';\n\n/**\n * Date range value type for DateRangePicker.\n */\nexport type DateRangeValue = RangeValue<DateValue>;\n\n// ============================================================================\n// Granularity Type\n// ============================================================================\n\n/**\n * Controls which date/time segments are displayed.\n * - 'day': Date only (MM/DD/YYYY)\n * - 'hour': Date + hour + AM/PM\n * - 'minute': Date + hour + minute + AM/PM\n * - 'second': Date + hour + minute + second + AM/PM\n */\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\n\n// ============================================================================\n// Size Variant Type\n// ============================================================================\n\n/**\n * Size variants for DatePicker components.\n * - 'sm': Compact size (36px cells) - desktop-only, not AAA compliant\n * - 'default': Standard size (44px cells) - AAA compliant\n * - 'lg': Large size (56px cells) - AAA compliant\n */\nexport type DatePickerSize = 'sm' | 'default' | 'lg';\n\n// ============================================================================\n// Placement Type\n// ============================================================================\n\n/**\n * Popover placement options.\n */\nexport type PopoverPlacement = 'bottom' | 'top' | 'left' | 'right';\n\n// ============================================================================\n// First Day of Week Type\n// ============================================================================\n\n/**\n * First day of week options for calendar display.\n */\nexport type FirstDayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n// ============================================================================\n// Zod Schemas\n// ============================================================================\n\n/**\n * Zod schema for DatePicker props validation.\n * Used for runtime validation of component props.\n */\nexport const DatePickerPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isOpen: z.boolean().optional(),\n defaultOpen: z.boolean().optional(),\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Popover props\n placement: z.enum(['bottom', 'top', 'left', 'right']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the popover open state changes */\n onOpenChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n children: z.any().optional(),\n});\n\n/**\n * Zod schema for DateRangePicker props validation.\n * Extends DatePickerPropsSchema with range-specific props.\n */\nexport const DateRangePickerPropsSchema = DatePickerPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Form props for range\n startName: z.string().optional(),\n endName: z.string().optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n/**\n * Zod schema for standalone DateField props validation.\n */\nexport const DateFieldPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for standalone Calendar props validation.\n */\nexport const CalendarPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n focusedValue: z.custom<DateValue>().optional(),\n defaultFocusedValue: z.custom<DateValue>().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the focused date changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for RangeCalendar props validation.\n */\nexport const RangeCalendarPropsSchema = CalendarPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n// ============================================================================\n// TypeScript Types (using React Aria types directly for proper function typing)\n// ============================================================================\n\n/**\n * Custom props added to DatePicker components (not from React Aria).\n */\nexport interface ThemisDatePickerCustomProps {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Popover placement */\n placement?: PopoverPlacement;\n /** Field label */\n label?: string;\n /** Description text below the field */\n description?: string;\n /** Error message when field is invalid */\n errorMessage?: string;\n}\n\n/**\n * Props for the DatePicker component.\n * Uses React Aria's DatePickerProps directly to ensure correct function types.\n */\nexport type DatePickerProps = AriaDatePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the DateRangePicker component.\n * Uses React Aria's DateRangePickerProps directly to ensure correct function types.\n */\nexport type DateRangePickerProps = AriaDateRangePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone DateField component.\n * Uses React Aria's DateFieldProps directly to ensure correct function types.\n */\nexport type DateFieldProps = AriaDateFieldProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone Calendar component.\n * Uses React Aria's CalendarProps directly to ensure correct function types.\n */\nexport type CalendarProps = AriaCalendarProps<DateValue> & {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n};\n\n/**\n * Props for the RangeCalendar component.\n */\nexport type RangeCalendarProps = {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Additional CSS class names */\n className?: string;\n};\n\n// ============================================================================\n// Variant Types (from CVA)\n// ============================================================================\n\n/**\n * Variant props for dateFieldVariants CVA function.\n */\nexport type DateFieldVariantProps = VariantProps<typeof dateFieldVariants>;\n\n/**\n * Variant props for calendarCellVariants CVA function.\n */\nexport type CalendarCellVariantProps = VariantProps<typeof calendarCellVariants>;\n\n// ============================================================================\n// Compound Component Types\n// ============================================================================\n\n/**\n * Context value for DatePicker compound components.\n */\nexport interface DatePickerContextValue {\n size: DatePickerSize;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\n/**\n * Context value for Calendar compound components.\n */\nexport interface CalendarContextValue {\n size: DatePickerSize;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n}\n"]}
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk3YOY2VJ6_js = require('./chunk-3YOY2VJ6.js');
|
|
4
|
+
var chunkVIREG536_js = require('./chunk-VIREG536.js');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var lucideReact = require('lucide-react');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
var MIN_ITEM_DURATION_MS = 1e3;
|
|
10
|
+
var TIMER_CHECK_INTERVAL_MS = 1e3;
|
|
11
|
+
function buildManifest(durations) {
|
|
12
|
+
let cumulative = 0;
|
|
13
|
+
return durations.map((duration, index) => {
|
|
14
|
+
const start = cumulative;
|
|
15
|
+
const safeDuration = Math.max(duration, MIN_ITEM_DURATION_MS);
|
|
16
|
+
cumulative += safeDuration;
|
|
17
|
+
return { index, startTime: start, endTime: cumulative };
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function getCurrentItemIndex(manifest, elapsed) {
|
|
21
|
+
if (manifest.length === 0) return 0;
|
|
22
|
+
const totalDuration = manifest[manifest.length - 1]?.endTime ?? 0;
|
|
23
|
+
if (totalDuration === 0) return 0;
|
|
24
|
+
const normalizedElapsed = elapsed % totalDuration;
|
|
25
|
+
const item = manifest.find(
|
|
26
|
+
(m) => normalizedElapsed >= m.startTime && normalizedElapsed < m.endTime
|
|
27
|
+
);
|
|
28
|
+
return item?.index ?? 0;
|
|
29
|
+
}
|
|
30
|
+
function shouldUsePerItemTiming(itemsLength, itemDurations, autoRotateInterval) {
|
|
31
|
+
if (autoRotateInterval === 0) return false;
|
|
32
|
+
if (!itemDurations || itemDurations.length === 0) return false;
|
|
33
|
+
if (itemDurations.length !== itemsLength) {
|
|
34
|
+
console.warn(
|
|
35
|
+
"Carousel: itemDurations length does not match items length. Falling back to autoRotateInterval."
|
|
36
|
+
);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
function Carousel({
|
|
42
|
+
items,
|
|
43
|
+
autoRotateInterval = 5e3,
|
|
44
|
+
defaultIndex = 0,
|
|
45
|
+
currentIndex: controlledIndex,
|
|
46
|
+
onIndexChange,
|
|
47
|
+
isPaused: controlledIsPaused,
|
|
48
|
+
onPauseChange,
|
|
49
|
+
collapsible = false,
|
|
50
|
+
defaultMinimized = false,
|
|
51
|
+
isMinimized: controlledIsMinimized,
|
|
52
|
+
onMinimizeChange,
|
|
53
|
+
minimizedLabel = "Carousel (minimized)",
|
|
54
|
+
label = "Carousel",
|
|
55
|
+
slideLabel,
|
|
56
|
+
showNavigation = true,
|
|
57
|
+
showPlayPause = true,
|
|
58
|
+
respectReducedMotion = true,
|
|
59
|
+
className,
|
|
60
|
+
slideClassName,
|
|
61
|
+
navigationClassName,
|
|
62
|
+
"aria-label": ariaLabel,
|
|
63
|
+
"aria-labelledby": ariaLabelledBy,
|
|
64
|
+
// Per-item timing props
|
|
65
|
+
itemDurations,
|
|
66
|
+
elapsedTime: controlledElapsedTime,
|
|
67
|
+
onElapsedTimeChange,
|
|
68
|
+
...props
|
|
69
|
+
}) {
|
|
70
|
+
const isControlled = controlledIndex !== void 0;
|
|
71
|
+
const isPauseControlled = controlledIsPaused !== void 0;
|
|
72
|
+
const isMinimizedControlled = controlledIsMinimized !== void 0;
|
|
73
|
+
const isElapsedTimeControlled = controlledElapsedTime !== void 0;
|
|
74
|
+
const [internalIndex, setInternalIndex] = react.useState(defaultIndex);
|
|
75
|
+
const [internalIsPaused, setInternalIsPaused] = react.useState(false);
|
|
76
|
+
const [internalIsMinimized, setInternalIsMinimized] = react.useState(defaultMinimized);
|
|
77
|
+
const [_internalElapsedTime, setInternalElapsedTime] = react.useState(() => {
|
|
78
|
+
if (!itemDurations || itemDurations.length === 0) return 0;
|
|
79
|
+
if (itemDurations.length !== items.length) return 0;
|
|
80
|
+
if (defaultIndex === 0) return 0;
|
|
81
|
+
const tempManifest = buildManifest(itemDurations);
|
|
82
|
+
return tempManifest[defaultIndex]?.startTime ?? 0;
|
|
83
|
+
});
|
|
84
|
+
const wasPlayingBeforeMinimize = react.useRef(false);
|
|
85
|
+
const currentIndex = isControlled ? controlledIndex : internalIndex;
|
|
86
|
+
const isPaused = isPauseControlled ? controlledIsPaused : internalIsPaused;
|
|
87
|
+
const isMinimized = isMinimizedControlled ? controlledIsMinimized : internalIsMinimized;
|
|
88
|
+
const usePerItemTiming = react.useMemo(
|
|
89
|
+
() => shouldUsePerItemTiming(items.length, itemDurations, autoRotateInterval),
|
|
90
|
+
[items.length, itemDurations, autoRotateInterval]
|
|
91
|
+
);
|
|
92
|
+
const manifest = react.useMemo(() => {
|
|
93
|
+
if (!usePerItemTiming || !itemDurations) return [];
|
|
94
|
+
return buildManifest(itemDurations);
|
|
95
|
+
}, [usePerItemTiming, itemDurations]);
|
|
96
|
+
const totalDuration = react.useMemo(() => {
|
|
97
|
+
if (manifest.length === 0) return 0;
|
|
98
|
+
return manifest[manifest.length - 1]?.endTime ?? 0;
|
|
99
|
+
}, [manifest]);
|
|
100
|
+
const goToSlide = react.useCallback(
|
|
101
|
+
(index) => {
|
|
102
|
+
if (isControlled) {
|
|
103
|
+
onIndexChange?.(index);
|
|
104
|
+
} else {
|
|
105
|
+
setInternalIndex(index);
|
|
106
|
+
}
|
|
107
|
+
if (usePerItemTiming && manifest[index]) {
|
|
108
|
+
const newElapsed = manifest[index].startTime;
|
|
109
|
+
if (!isElapsedTimeControlled) {
|
|
110
|
+
setInternalElapsedTime(newElapsed);
|
|
111
|
+
}
|
|
112
|
+
onElapsedTimeChange?.(newElapsed);
|
|
113
|
+
}
|
|
114
|
+
if (isPauseControlled) {
|
|
115
|
+
onPauseChange?.(true);
|
|
116
|
+
} else {
|
|
117
|
+
setInternalIsPaused(true);
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
[
|
|
121
|
+
isControlled,
|
|
122
|
+
isPauseControlled,
|
|
123
|
+
isElapsedTimeControlled,
|
|
124
|
+
onIndexChange,
|
|
125
|
+
onPauseChange,
|
|
126
|
+
onElapsedTimeChange,
|
|
127
|
+
usePerItemTiming,
|
|
128
|
+
manifest
|
|
129
|
+
]
|
|
130
|
+
);
|
|
131
|
+
const togglePause = react.useCallback(() => {
|
|
132
|
+
const newPauseState = !isPaused;
|
|
133
|
+
if (isPauseControlled) {
|
|
134
|
+
onPauseChange?.(newPauseState);
|
|
135
|
+
} else {
|
|
136
|
+
setInternalIsPaused(newPauseState);
|
|
137
|
+
}
|
|
138
|
+
}, [isPaused, isPauseControlled, onPauseChange]);
|
|
139
|
+
const toggleMinimize = react.useCallback(() => {
|
|
140
|
+
const newMinimizedState = !isMinimized;
|
|
141
|
+
if (newMinimizedState) {
|
|
142
|
+
wasPlayingBeforeMinimize.current = !isPaused;
|
|
143
|
+
} else {
|
|
144
|
+
if (wasPlayingBeforeMinimize.current && isPaused) {
|
|
145
|
+
if (isPauseControlled) {
|
|
146
|
+
onPauseChange?.(false);
|
|
147
|
+
} else {
|
|
148
|
+
setInternalIsPaused(false);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
wasPlayingBeforeMinimize.current = false;
|
|
152
|
+
}
|
|
153
|
+
if (isMinimizedControlled) {
|
|
154
|
+
onMinimizeChange?.(newMinimizedState);
|
|
155
|
+
} else {
|
|
156
|
+
setInternalIsMinimized(newMinimizedState);
|
|
157
|
+
}
|
|
158
|
+
}, [isMinimized, isMinimizedControlled, onMinimizeChange, isPaused, isPauseControlled, onPauseChange]);
|
|
159
|
+
react.useEffect(() => {
|
|
160
|
+
if (autoRotateInterval === 0) return;
|
|
161
|
+
if (respectReducedMotion) {
|
|
162
|
+
if (typeof window !== "undefined" && window.matchMedia) {
|
|
163
|
+
const prefersReducedMotion = window.matchMedia(
|
|
164
|
+
"(prefers-reduced-motion: reduce)"
|
|
165
|
+
).matches;
|
|
166
|
+
if (prefersReducedMotion) {
|
|
167
|
+
if (isPauseControlled) {
|
|
168
|
+
onPauseChange?.(true);
|
|
169
|
+
} else {
|
|
170
|
+
setInternalIsPaused(true);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}, [autoRotateInterval, respectReducedMotion, isPauseControlled, onPauseChange]);
|
|
176
|
+
const currentIndexRef = react.useRef(currentIndex);
|
|
177
|
+
currentIndexRef.current = currentIndex;
|
|
178
|
+
react.useEffect(() => {
|
|
179
|
+
if (!usePerItemTiming) return;
|
|
180
|
+
if (autoRotateInterval === 0) return;
|
|
181
|
+
if (isPaused || isMinimized) return;
|
|
182
|
+
if (isElapsedTimeControlled) return;
|
|
183
|
+
const interval = setInterval(() => {
|
|
184
|
+
setInternalElapsedTime((prevElapsed) => {
|
|
185
|
+
let newElapsed = prevElapsed + TIMER_CHECK_INTERVAL_MS;
|
|
186
|
+
if (totalDuration > 0 && newElapsed >= totalDuration) {
|
|
187
|
+
newElapsed = 0;
|
|
188
|
+
}
|
|
189
|
+
onElapsedTimeChange?.(newElapsed);
|
|
190
|
+
const newIndex = getCurrentItemIndex(manifest, newElapsed);
|
|
191
|
+
if (newIndex !== currentIndexRef.current) {
|
|
192
|
+
if (isControlled) {
|
|
193
|
+
onIndexChange?.(newIndex);
|
|
194
|
+
} else {
|
|
195
|
+
setInternalIndex(newIndex);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return newElapsed;
|
|
199
|
+
});
|
|
200
|
+
}, TIMER_CHECK_INTERVAL_MS);
|
|
201
|
+
return () => clearInterval(interval);
|
|
202
|
+
}, [
|
|
203
|
+
usePerItemTiming,
|
|
204
|
+
autoRotateInterval,
|
|
205
|
+
isPaused,
|
|
206
|
+
isMinimized,
|
|
207
|
+
isElapsedTimeControlled,
|
|
208
|
+
totalDuration,
|
|
209
|
+
manifest,
|
|
210
|
+
isControlled,
|
|
211
|
+
onIndexChange,
|
|
212
|
+
onElapsedTimeChange
|
|
213
|
+
]);
|
|
214
|
+
react.useEffect(() => {
|
|
215
|
+
if (usePerItemTiming) return;
|
|
216
|
+
if (autoRotateInterval === 0) return;
|
|
217
|
+
if (isPaused || isMinimized) return;
|
|
218
|
+
const interval = setInterval(() => {
|
|
219
|
+
const nextIndex = (currentIndex + 1) % items.length;
|
|
220
|
+
if (isControlled) {
|
|
221
|
+
onIndexChange?.(nextIndex);
|
|
222
|
+
} else {
|
|
223
|
+
setInternalIndex(nextIndex);
|
|
224
|
+
}
|
|
225
|
+
}, autoRotateInterval);
|
|
226
|
+
return () => clearInterval(interval);
|
|
227
|
+
}, [
|
|
228
|
+
usePerItemTiming,
|
|
229
|
+
autoRotateInterval,
|
|
230
|
+
currentIndex,
|
|
231
|
+
isPaused,
|
|
232
|
+
isMinimized,
|
|
233
|
+
items.length,
|
|
234
|
+
isControlled,
|
|
235
|
+
onIndexChange
|
|
236
|
+
]);
|
|
237
|
+
react.useEffect(() => {
|
|
238
|
+
if (!usePerItemTiming || !isElapsedTimeControlled) return;
|
|
239
|
+
const newIndex = getCurrentItemIndex(manifest, controlledElapsedTime);
|
|
240
|
+
if (newIndex !== currentIndex) {
|
|
241
|
+
if (isControlled) {
|
|
242
|
+
onIndexChange?.(newIndex);
|
|
243
|
+
} else {
|
|
244
|
+
setInternalIndex(newIndex);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}, [
|
|
248
|
+
usePerItemTiming,
|
|
249
|
+
isElapsedTimeControlled,
|
|
250
|
+
controlledElapsedTime,
|
|
251
|
+
manifest,
|
|
252
|
+
currentIndex,
|
|
253
|
+
isControlled,
|
|
254
|
+
onIndexChange
|
|
255
|
+
]);
|
|
256
|
+
const currentSlideLabel = slideLabel ? slideLabel(currentIndex, items.length) : `Slide ${currentIndex + 1} of ${items.length}`;
|
|
257
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
258
|
+
"div",
|
|
259
|
+
{
|
|
260
|
+
className: chunkVIREG536_js.cn(
|
|
261
|
+
"flex flex-col mb-4 transition-all duration-300",
|
|
262
|
+
!isMinimized && "space-y-4",
|
|
263
|
+
className
|
|
264
|
+
),
|
|
265
|
+
role: "region",
|
|
266
|
+
"aria-roledescription": "carousel",
|
|
267
|
+
"aria-label": isMinimized ? minimizedLabel : ariaLabel || label,
|
|
268
|
+
"aria-labelledby": ariaLabelledBy,
|
|
269
|
+
...props,
|
|
270
|
+
children: isMinimized && collapsible ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
271
|
+
"div",
|
|
272
|
+
{
|
|
273
|
+
className: chunkVIREG536_js.cn(
|
|
274
|
+
"bg-[var(--primary)] rounded-lg px-4 py-2 shadow-md",
|
|
275
|
+
"flex items-center justify-between gap-4"
|
|
276
|
+
),
|
|
277
|
+
children: [
|
|
278
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[var(--primary-foreground)] text-sm", children: [
|
|
279
|
+
minimizedLabel,
|
|
280
|
+
" - ",
|
|
281
|
+
currentSlideLabel
|
|
282
|
+
] }),
|
|
283
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
284
|
+
chunk3YOY2VJ6_js.Button,
|
|
285
|
+
{
|
|
286
|
+
variant: "outline",
|
|
287
|
+
visualSize: "icon",
|
|
288
|
+
onPress: toggleMinimize,
|
|
289
|
+
"aria-label": "Expand carousel",
|
|
290
|
+
"aria-expanded": false,
|
|
291
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUpIcon, { className: "w-5 h-5" })
|
|
292
|
+
}
|
|
293
|
+
)
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
297
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
298
|
+
"div",
|
|
299
|
+
{
|
|
300
|
+
className: chunkVIREG536_js.cn(
|
|
301
|
+
"bg-[var(--primary)] rounded-lg p-4 overflow-hidden shadow-md",
|
|
302
|
+
"slide-in-animation",
|
|
303
|
+
slideClassName
|
|
304
|
+
),
|
|
305
|
+
role: "group",
|
|
306
|
+
"aria-roledescription": "slide",
|
|
307
|
+
"aria-label": currentSlideLabel,
|
|
308
|
+
"aria-live": "polite",
|
|
309
|
+
"aria-atomic": "true",
|
|
310
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[var(--primary-foreground)] min-h-[2rem] flex items-center", children: items[currentIndex] })
|
|
311
|
+
},
|
|
312
|
+
currentIndex
|
|
313
|
+
),
|
|
314
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
315
|
+
showNavigation && /* @__PURE__ */ jsxRuntime.jsx(
|
|
316
|
+
"div",
|
|
317
|
+
{
|
|
318
|
+
className: chunkVIREG536_js.cn("flex items-center", navigationClassName),
|
|
319
|
+
role: "group",
|
|
320
|
+
"aria-label": "Slide navigation",
|
|
321
|
+
children: items.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
322
|
+
chunk3YOY2VJ6_js.Button,
|
|
323
|
+
{
|
|
324
|
+
variant: index === currentIndex ? "default" : "outline",
|
|
325
|
+
visualSize: "dot",
|
|
326
|
+
onPress: () => goToSlide(index),
|
|
327
|
+
"aria-label": `Go to slide ${index + 1}`,
|
|
328
|
+
"aria-current": index === currentIndex ? true : void 0
|
|
329
|
+
},
|
|
330
|
+
index
|
|
331
|
+
))
|
|
332
|
+
}
|
|
333
|
+
),
|
|
334
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
335
|
+
collapsible && /* @__PURE__ */ jsxRuntime.jsx(
|
|
336
|
+
chunk3YOY2VJ6_js.Button,
|
|
337
|
+
{
|
|
338
|
+
variant: "default",
|
|
339
|
+
visualSize: "icon",
|
|
340
|
+
onPress: toggleMinimize,
|
|
341
|
+
"aria-label": "Minimize carousel",
|
|
342
|
+
"aria-expanded": true,
|
|
343
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "w-5 h-5" })
|
|
344
|
+
}
|
|
345
|
+
),
|
|
346
|
+
showPlayPause && autoRotateInterval > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
347
|
+
chunk3YOY2VJ6_js.Button,
|
|
348
|
+
{
|
|
349
|
+
variant: "default",
|
|
350
|
+
visualSize: "icon",
|
|
351
|
+
onPress: togglePause,
|
|
352
|
+
"aria-label": isPaused ? "Play carousel" : "Pause carousel",
|
|
353
|
+
children: isPaused ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PlayIcon, { className: "w-5 h-5" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PauseIcon, { className: "w-5 h-5" })
|
|
354
|
+
}
|
|
355
|
+
)
|
|
356
|
+
] })
|
|
357
|
+
] })
|
|
358
|
+
] })
|
|
359
|
+
}
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
Carousel.displayName = "Carousel";
|
|
363
|
+
|
|
364
|
+
exports.Carousel = Carousel;
|
|
365
|
+
//# sourceMappingURL=chunk-ZVKXFELU.js.map
|
|
366
|
+
//# sourceMappingURL=chunk-ZVKXFELU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/elements/Carousel/Carousel.tsx"],"names":["useState","useRef","useMemo","useCallback","useEffect","jsx","cn","jsxs","Button","ChevronUpIcon","Fragment","ChevronDownIcon","PlayIcon","PauseIcon"],"mappings":";;;;;;;;AAmBA,IAAM,oBAAA,GAAuB,GAAA;AAM7B,IAAM,uBAAA,GAA0B,GAAA;AAOhC,SAAS,cAAc,SAAA,EAAqC;AAC1D,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,OAAO,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,EAAU,KAAA,KAAU;AACxC,IAAA,MAAM,KAAA,GAAQ,UAAA;AAEd,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,oBAAoB,CAAA;AAC5D,IAAA,UAAA,IAAc,YAAA;AACd,IAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAS,UAAA,EAAW;AAAA,EACxD,CAAC,CAAA;AACH;AAQA,SAAS,mBAAA,CAAoB,UAA0B,OAAA,EAAyB;AAC9E,EAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAElC,EAAA,MAAM,gBAAgB,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,GAAG,OAAA,IAAW,CAAA;AAChE,EAAA,IAAI,aAAA,KAAkB,GAAG,OAAO,CAAA;AAGhC,EAAA,MAAM,oBAAoB,OAAA,GAAU,aAAA;AAEpC,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AAAA,IACpB,CAAC,CAAA,KAAM,iBAAA,IAAqB,CAAA,CAAE,SAAA,IAAa,oBAAoB,CAAA,CAAE;AAAA,GACnE;AACA,EAAA,OAAO,MAAM,KAAA,IAAS,CAAA;AACxB;AASA,SAAS,sBAAA,CACP,WAAA,EACA,aAAA,EACA,kBAAA,EACS;AAET,EAAA,IAAI,kBAAA,KAAuB,GAAG,OAAO,KAAA;AAGrC,EAAA,IAAI,CAAC,aAAA,IAAiB,aAAA,CAAc,MAAA,KAAW,GAAG,OAAO,KAAA;AAGzD,EAAA,IAAI,aAAA,CAAc,WAAW,WAAA,EAAa;AACxC,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KAEF;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,kBAAA,GAAqB,GAAA;AAAA,EACrB,YAAA,GAAe,CAAA;AAAA,EACf,YAAA,EAAc,eAAA;AAAA,EACd,aAAA;AAAA,EACA,QAAA,EAAU,kBAAA;AAAA,EACV,aAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,gBAAA,GAAmB,KAAA;AAAA,EACnB,WAAA,EAAa,qBAAA;AAAA,EACb,gBAAA;AAAA,EACA,cAAA,GAAiB,sBAAA;AAAA,EACjB,KAAA,GAAQ,UAAA;AAAA,EACR,UAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,aAAA,GAAgB,IAAA;AAAA,EAChB,oBAAA,GAAuB,IAAA;AAAA,EACvB,SAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA;AAAA,EAEnB,aAAA;AAAA,EACA,WAAA,EAAa,qBAAA;AAAA,EACb,mBAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAE3B,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,oBAAoB,kBAAA,KAAuB,MAAA;AACjD,EAAA,MAAM,wBAAwB,qBAAA,KAA0B,MAAA;AACxD,EAAA,MAAM,0BAA0B,qBAAA,KAA0B,MAAA;AAG1D,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAS,YAAY,CAAA;AAC/D,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,eAAS,gBAAgB,CAAA;AAI/E,EAAA,MAAM,CAAC,oBAAA,EAAsB,sBAAsB,CAAA,GAAIA,eAAS,MAAM;AACpE,IAAA,IAAI,CAAC,aAAA,IAAiB,aAAA,CAAc,MAAA,KAAW,GAAG,OAAO,CAAA;AACzD,IAAA,IAAI,aAAA,CAAc,MAAA,KAAW,KAAA,CAAM,MAAA,EAAQ,OAAO,CAAA;AAClD,IAAA,IAAI,YAAA,KAAiB,GAAG,OAAO,CAAA;AAG/B,IAAA,MAAM,YAAA,GAAe,cAAc,aAAa,CAAA;AAChD,IAAA,OAAO,YAAA,CAAa,YAAY,CAAA,EAAG,SAAA,IAAa,CAAA;AAAA,EAClD,CAAC,CAAA;AAGD,EAAA,MAAM,wBAAA,GAA2BC,aAAO,KAAK,CAAA;AAG7C,EAAA,MAAM,YAAA,GAAe,eAAe,eAAA,GAAkB,aAAA;AACtD,EAAA,MAAM,QAAA,GAAW,oBAAoB,kBAAA,GAAqB,gBAAA;AAC1D,EAAA,MAAM,WAAA,GAAc,wBAChB,qBAAA,GACA,mBAAA;AAEJ,EAAA,MAAM,gBAAA,GAAmBC,aAAA;AAAA,IACvB,MAAM,sBAAA,CAAuB,KAAA,CAAM,MAAA,EAAQ,eAAe,kBAAkB,CAAA;AAAA,IAC5E,CAAC,KAAA,CAAM,MAAA,EAAQ,aAAA,EAAe,kBAAkB;AAAA,GAClD;AAGA,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,aAAA,SAAsB,EAAC;AACjD,IAAA,OAAO,cAAc,aAAa,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,gBAAA,EAAkB,aAAa,CAAC,CAAA;AAGpC,EAAA,MAAM,aAAA,GAAgBA,cAAQ,MAAM;AAClC,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAClC,IAAA,OAAO,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,GAAG,OAAA,IAAW,CAAA;AAAA,EACnD,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAGb,EAAA,MAAM,SAAA,GAAYC,iBAAA;AAAA,IAChB,CAAC,KAAA,KAAkB;AACjB,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,aAAA,GAAgB,KAAK,CAAA;AAAA,MACvB,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACxB;AAGA,MAAA,IAAI,gBAAA,IAAoB,QAAA,CAAS,KAAK,CAAA,EAAG;AACvC,QAAA,MAAM,UAAA,GAAa,QAAA,CAAS,KAAK,CAAA,CAAE,SAAA;AACnC,QAAA,IAAI,CAAC,uBAAA,EAAyB;AAC5B,UAAA,sBAAA,CAAuB,UAAU,CAAA;AAAA,QACnC;AACA,QAAA,mBAAA,GAAsB,UAAU,CAAA;AAAA,MAClC;AAGA,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,uBAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,mBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AAGA,EAAA,MAAM,WAAA,GAAcA,kBAAY,MAAM;AACpC,IAAA,MAAM,gBAAgB,CAAC,QAAA;AAEvB,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,aAAA,GAAgB,aAAa,CAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,mBAAA,CAAoB,aAAa,CAAA;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,iBAAA,EAAmB,aAAa,CAAC,CAAA;AAG/C,EAAA,MAAM,cAAA,GAAiBA,kBAAY,MAAM;AACvC,IAAA,MAAM,oBAAoB,CAAC,WAAA;AAE3B,IAAA,IAAI,iBAAA,EAAmB;AAErB,MAAA,wBAAA,CAAyB,UAAU,CAAC,QAAA;AAAA,IACtC,CAAA,MAAO;AAEL,MAAA,IAAI,wBAAA,CAAyB,WAAW,QAAA,EAAU;AAChD,QAAA,IAAI,iBAAA,EAAmB;AACrB,UAAA,aAAA,GAAgB,KAAK,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,QAC3B;AAAA,MACF;AACA,MAAA,wBAAA,CAAyB,OAAA,GAAU,KAAA;AAAA,IACrC;AAEA,IAAA,IAAI,qBAAA,EAAuB;AACzB,MAAA,gBAAA,GAAmB,iBAAiB,CAAA;AAAA,IACtC,CAAA,MAAO;AACL,MAAA,sBAAA,CAAuB,iBAAiB,CAAA;AAAA,IAC1C;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,qBAAA,EAAuB,kBAAkB,QAAA,EAAU,iBAAA,EAAmB,aAAa,CAAC,CAAA;AAGrG,EAAAC,eAAA,CAAU,MAAM;AAEd,IAAA,IAAI,uBAAuB,CAAA,EAAG;AAG9B,IAAA,IAAI,oBAAA,EAAsB;AAExB,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO,UAAA,EAAY;AACtD,QAAA,MAAM,uBAAuB,MAAA,CAAO,UAAA;AAAA,UAClC;AAAA,SACF,CAAE,OAAA;AAEF,QAAA,IAAI,oBAAA,EAAsB;AACxB,UAAA,IAAI,iBAAA,EAAmB;AACrB,YAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,UACtB,CAAA,MAAO;AACL,YAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,kBAAA,EAAoB,oBAAA,EAAsB,iBAAA,EAAmB,aAAa,CAAC,CAAA;AAG/E,EAAA,MAAM,eAAA,GAAkBH,aAAO,YAAY,CAAA;AAC3C,EAAA,eAAA,CAAgB,OAAA,GAAU,YAAA;AAG1B,EAAAG,eAAA,CAAU,MAAM;AAEd,IAAA,IAAI,CAAC,gBAAA,EAAkB;AAGvB,IAAA,IAAI,uBAAuB,CAAA,EAAG;AAG9B,IAAA,IAAI,YAAY,WAAA,EAAa;AAG7B,IAAA,IAAI,uBAAA,EAAyB;AAG7B,IAAA,MAAM,QAAA,GAAW,YAAY,MAAM;AAEjC,MAAA,sBAAA,CAAuB,CAAC,WAAA,KAAgB;AAEtC,QAAA,IAAI,aAAa,WAAA,GAAc,uBAAA;AAG/B,QAAA,IAAI,aAAA,GAAgB,CAAA,IAAK,UAAA,IAAc,aAAA,EAAe;AACpD,UAAA,UAAA,GAAa,CAAA;AAAA,QACf;AAGA,QAAA,mBAAA,GAAsB,UAAU,CAAA;AAGhC,QAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,QAAA,EAAU,UAAU,CAAA;AAGzD,QAAA,IAAI,QAAA,KAAa,gBAAgB,OAAA,EAAS;AACxC,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,UAC1B,CAAA,MAAO;AACL,YAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,UAC3B;AAAA,QACF;AAEA,QAAA,OAAO,UAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,GAAG,uBAAuB,CAAA;AAE1B,IAAA,OAAO,MAAM,cAAc,QAAQ,CAAA;AAAA,EACrC,CAAA,EAAG;AAAA,IACD,gBAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,uBAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAAA,eAAA,CAAU,MAAM;AAEd,IAAA,IAAI,gBAAA,EAAkB;AAGtB,IAAA,IAAI,uBAAuB,CAAA,EAAG;AAG9B,IAAA,IAAI,YAAY,WAAA,EAAa;AAE7B,IAAA,MAAM,QAAA,GAAW,YAAY,MAAM;AACjC,MAAA,MAAM,SAAA,GAAA,CAAa,YAAA,GAAe,CAAA,IAAK,KAAA,CAAM,MAAA;AAE7C,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,MAC3B,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,MAC5B;AAAA,IACF,GAAG,kBAAkB,CAAA;AAErB,IAAA,OAAO,MAAM,cAAc,QAAQ,CAAA;AAAA,EACrC,CAAA,EAAG;AAAA,IACD,gBAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA,CAAM,MAAA;AAAA,IACN,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,uBAAA,EAAyB;AAEnD,IAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,QAAA,EAAU,qBAAqB,CAAA;AACpE,IAAA,IAAI,aAAa,YAAA,EAAc;AAC7B,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,CAAA,EAAG;AAAA,IACD,gBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qBAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,iBAAA,GAAoB,UAAA,GACtB,UAAA,CAAW,YAAA,EAAc,KAAA,CAAM,MAAM,CAAA,GACrC,CAAA,MAAA,EAAS,YAAA,GAAe,CAAC,CAAA,IAAA,EAAO,KAAA,CAAM,MAAM,CAAA,CAAA;AAEhD,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,mBAAA;AAAA,QACT,gDAAA;AAAA,QACA,CAAC,WAAA,IAAe,WAAA;AAAA,QAChB;AAAA,OACF;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,sBAAA,EAAqB,UAAA;AAAA,MACrB,YAAA,EAAY,WAAA,GAAc,cAAA,GAAiB,SAAA,IAAa,KAAA;AAAA,MACxD,iBAAA,EAAiB,cAAA;AAAA,MAChB,GAAG,KAAA;AAAA,MAGH,yBAAe,WAAA,mBACdC,eAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAWD,mBAAA;AAAA,YACT,oDAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAC,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,0CAAA,EACb,QAAA,EAAA;AAAA,cAAA,cAAA;AAAA,cAAe,KAAA;AAAA,cAAI;AAAA,aAAA,EACtB,CAAA;AAAA,4BACAF,cAAA;AAAA,cAACG,uBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,UAAA,EAAW,MAAA;AAAA,gBACX,OAAA,EAAS,cAAA;AAAA,gBACT,YAAA,EAAW,iBAAA;AAAA,gBACX,eAAA,EAAe,KAAA;AAAA,gBAEf,QAAA,kBAAAH,cAAA,CAACI,yBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACrC;AAAA;AAAA,0BAGFF,eAAA,CAAAG,mBAAA,EAAA,EAEE,QAAA,EAAA;AAAA,wBAAAL,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAWC,mBAAA;AAAA,cACT,8DAAA;AAAA,cACA,oBAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,IAAA,EAAK,OAAA;AAAA,YACL,sBAAA,EAAqB,OAAA;AAAA,YACrB,YAAA,EAAY,iBAAA;AAAA,YACZ,WAAA,EAAU,QAAA;AAAA,YACV,aAAA,EAAY,MAAA;AAAA,YAEZ,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACZ,QAAA,EAAA,KAAA,CAAM,YAAY,CAAA,EACrB;AAAA,WAAA;AAAA,UAdK;AAAA,SAeP;AAAA,wBAGAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAEZ,QAAA,EAAA;AAAA,UAAA,cAAA,oBACCF,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWC,mBAAA,CAAG,mBAAA,EAAqB,mBAAmB,CAAA;AAAA,cACtD,IAAA,EAAK,OAAA;AAAA,cACL,YAAA,EAAW,kBAAA;AAAA,cAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,KAAA,qBACbD,cAAA;AAAA,gBAACG,uBAAA;AAAA,gBAAA;AAAA,kBAEC,OAAA,EAAS,KAAA,KAAU,YAAA,GAAe,SAAA,GAAY,SAAA;AAAA,kBAC9C,UAAA,EAAW,KAAA;AAAA,kBACX,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,kBAC9B,YAAA,EAAY,CAAA,YAAA,EAAe,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,kBACpC,cAAA,EAAc,KAAA,KAAU,YAAA,GAAe,IAAA,GAAO;AAAA,iBAAA;AAAA,gBALzC;AAAA,eAOR;AAAA;AAAA,WACH;AAAA,0BAIFD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAEZ,QAAA,EAAA;AAAA,YAAA,WAAA,oBACCF,cAAA;AAAA,cAACG,uBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,UAAA,EAAW,MAAA;AAAA,gBACX,OAAA,EAAS,cAAA;AAAA,gBACT,YAAA,EAAW,mBAAA;AAAA,gBACX,eAAA,EAAe,IAAA;AAAA,gBAEf,QAAA,kBAAAH,cAAA,CAACM,2BAAA,EAAA,EAAgB,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,aACvC;AAAA,YAID,aAAA,IAAiB,qBAAqB,CAAA,oBACrCN,cAAA;AAAA,cAACG,uBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,UAAA,EAAW,MAAA;AAAA,gBACX,OAAA,EAAS,WAAA;AAAA,gBACT,YAAA,EAAY,WAAW,eAAA,GAAkB,gBAAA;AAAA,gBAExC,QAAA,EAAA,QAAA,kCACEI,oBAAA,EAAA,EAAS,SAAA,EAAU,WAAU,CAAA,mBAE9BP,cAAA,CAACQ,qBAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAEnC,WAAA,EAEJ;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA;AAAA,GAEJ;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-ZVKXFELU.js","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"]}
|