@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,365 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkGD5GHTMA_js = require('./chunk-GD5GHTMA.js');
|
|
4
|
+
var chunk3YOY2VJ6_js = require('./chunk-3YOY2VJ6.js');
|
|
5
|
+
var chunkVIREG536_js = require('./chunk-VIREG536.js');
|
|
6
|
+
var chunkT4COXKQ3_js = require('./chunk-T4COXKQ3.js');
|
|
7
|
+
var zod = require('zod');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
10
|
+
var lucideReact = require('lucide-react');
|
|
11
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
12
|
+
|
|
13
|
+
var BreadcrumbItemDataSchema = zod.z.object({
|
|
14
|
+
/** Unique identifier for the breadcrumb item */
|
|
15
|
+
id: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
16
|
+
/** Display text for the breadcrumb (required - no icon-only items) */
|
|
17
|
+
label: zod.z.string(),
|
|
18
|
+
/** Link URL - omit for non-navigable items */
|
|
19
|
+
href: zod.z.string().optional(),
|
|
20
|
+
/** Optional leading icon (ReactNode) */
|
|
21
|
+
icon: zod.z.custom().optional(),
|
|
22
|
+
/** Disable this specific breadcrumb link */
|
|
23
|
+
isDisabled: zod.z.boolean().optional().default(false)
|
|
24
|
+
});
|
|
25
|
+
var SeparatorTypeSchema = zod.z.union([
|
|
26
|
+
zod.z.literal("chevron"),
|
|
27
|
+
zod.z.literal("slash"),
|
|
28
|
+
zod.z.custom()
|
|
29
|
+
]);
|
|
30
|
+
var BreadcrumbsPropsSchema = chunkT4COXKQ3_js.BaseComponentPropsSchema.extend({
|
|
31
|
+
/**
|
|
32
|
+
* Array of breadcrumb items to render
|
|
33
|
+
* @see FR-001 (Render Breadcrumbs from Items Array)
|
|
34
|
+
*/
|
|
35
|
+
items: zod.z.array(BreadcrumbItemDataSchema),
|
|
36
|
+
/**
|
|
37
|
+
* Separator style between items
|
|
38
|
+
* @default 'chevron'
|
|
39
|
+
* @see FR-003 (Configurable Separators)
|
|
40
|
+
*/
|
|
41
|
+
separator: SeparatorTypeSchema.optional().default("chevron"),
|
|
42
|
+
/**
|
|
43
|
+
* Maximum items to show before collapsing
|
|
44
|
+
* @default 4
|
|
45
|
+
* @see FR-004 (Ellipsis Collapse for Overflow)
|
|
46
|
+
*/
|
|
47
|
+
maxItems: zod.z.number().int().positive().optional().default(4),
|
|
48
|
+
/**
|
|
49
|
+
* Number of items to show before ellipsis
|
|
50
|
+
* @default 1
|
|
51
|
+
* @see FR-004 (Ellipsis Collapse for Overflow)
|
|
52
|
+
*/
|
|
53
|
+
itemsBeforeCollapse: zod.z.number().int().nonnegative().optional().default(1),
|
|
54
|
+
/**
|
|
55
|
+
* Number of items to show after ellipsis
|
|
56
|
+
* @default 2
|
|
57
|
+
* @see FR-004 (Ellipsis Collapse for Overflow)
|
|
58
|
+
*/
|
|
59
|
+
itemsAfterCollapse: zod.z.number().int().positive().optional().default(2),
|
|
60
|
+
/**
|
|
61
|
+
* Custom link component for framework integration (Next.js Link, React Router Link, etc.)
|
|
62
|
+
* @default 'a'
|
|
63
|
+
* @see FR-005 (Polymorphic Link Component)
|
|
64
|
+
*/
|
|
65
|
+
linkComponent: zod.z.custom().optional(),
|
|
66
|
+
/**
|
|
67
|
+
* Disable all breadcrumb links
|
|
68
|
+
* @default false
|
|
69
|
+
* @see FR-006 (Disabled States)
|
|
70
|
+
*/
|
|
71
|
+
isDisabled: zod.z.boolean().optional().default(false)
|
|
72
|
+
});
|
|
73
|
+
var breadcrumbsVariants = classVarianceAuthority.cva("flex items-center flex-wrap", {
|
|
74
|
+
variants: {},
|
|
75
|
+
defaultVariants: {}
|
|
76
|
+
});
|
|
77
|
+
var breadcrumbListVariants = classVarianceAuthority.cva(
|
|
78
|
+
"flex flex-wrap items-center gap-1 break-words text-sm text-[var(--menu-muted)]",
|
|
79
|
+
{
|
|
80
|
+
variants: {},
|
|
81
|
+
defaultVariants: {}
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
var breadcrumbItemVariants = classVarianceAuthority.cva("inline-flex items-center gap-1", {
|
|
85
|
+
variants: {},
|
|
86
|
+
defaultVariants: {}
|
|
87
|
+
});
|
|
88
|
+
var breadcrumbLinkVariants = classVarianceAuthority.cva(
|
|
89
|
+
"inline-flex items-center gap-2 min-h-[44px] px-2 rounded-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",
|
|
90
|
+
{
|
|
91
|
+
variants: {
|
|
92
|
+
state: {
|
|
93
|
+
default: [
|
|
94
|
+
"text-[var(--menu-muted)]",
|
|
95
|
+
"hover:text-[var(--content-foreground)]",
|
|
96
|
+
"hover:underline underline-offset-4"
|
|
97
|
+
].join(" "),
|
|
98
|
+
current: "text-[var(--content-foreground)] font-medium pointer-events-none",
|
|
99
|
+
disabled: "text-[var(--menu-muted)] opacity-50 cursor-not-allowed pointer-events-none"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
defaultVariants: {
|
|
103
|
+
state: "default"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
var separatorVariants = classVarianceAuthority.cva("text-[var(--menu-muted)]", {
|
|
108
|
+
variants: {
|
|
109
|
+
type: {
|
|
110
|
+
chevron: "[&>svg]:h-4 [&>svg]:w-4",
|
|
111
|
+
slash: "mx-2",
|
|
112
|
+
custom: ""
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
defaultVariants: {
|
|
116
|
+
type: "chevron"
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
var ellipsisButtonVariants = classVarianceAuthority.cva(
|
|
120
|
+
"inline-flex items-center justify-center min-h-[44px] min-w-[44px] rounded-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 hover:bg-[var(--accent)]",
|
|
121
|
+
{
|
|
122
|
+
variants: {},
|
|
123
|
+
defaultVariants: {}
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
function isCurrentPage(index, total) {
|
|
127
|
+
return index === total - 1;
|
|
128
|
+
}
|
|
129
|
+
function getCollapsedItems(items, maxItems, itemsBeforeCollapse, itemsAfterCollapse) {
|
|
130
|
+
if (items.length <= maxItems) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
if (itemsBeforeCollapse + itemsAfterCollapse >= items.length) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
const before = items.slice(0, itemsBeforeCollapse);
|
|
137
|
+
const after = items.slice(-itemsAfterCollapse);
|
|
138
|
+
const collapsed = items.slice(itemsBeforeCollapse, items.length - itemsAfterCollapse);
|
|
139
|
+
return { before, collapsed, after };
|
|
140
|
+
}
|
|
141
|
+
function BreadcrumbSeparator({ separator }) {
|
|
142
|
+
if (separator === "chevron") {
|
|
143
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
144
|
+
"li",
|
|
145
|
+
{
|
|
146
|
+
role: "presentation",
|
|
147
|
+
"aria-hidden": "true",
|
|
148
|
+
className: separatorVariants({ type: "chevron" }),
|
|
149
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
if (separator === "slash") {
|
|
154
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
+
"li",
|
|
156
|
+
{
|
|
157
|
+
role: "presentation",
|
|
158
|
+
"aria-hidden": "true",
|
|
159
|
+
className: separatorVariants({ type: "slash" }),
|
|
160
|
+
children: "/"
|
|
161
|
+
}
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
165
|
+
"li",
|
|
166
|
+
{
|
|
167
|
+
role: "presentation",
|
|
168
|
+
"aria-hidden": "true",
|
|
169
|
+
className: separatorVariants({ type: "custom" }),
|
|
170
|
+
children: separator
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
function BreadcrumbLink({
|
|
175
|
+
item,
|
|
176
|
+
isCurrent,
|
|
177
|
+
linkComponent: LinkComponent = "a",
|
|
178
|
+
isGroupDisabled
|
|
179
|
+
}) {
|
|
180
|
+
const isDisabled = isGroupDisabled || item.isDisabled;
|
|
181
|
+
const state = isCurrent ? "current" : isDisabled ? "disabled" : "default";
|
|
182
|
+
if (isCurrent) {
|
|
183
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
184
|
+
"span",
|
|
185
|
+
{
|
|
186
|
+
className: breadcrumbLinkVariants({ state: "current" }),
|
|
187
|
+
"aria-current": "page",
|
|
188
|
+
children: [
|
|
189
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: item.icon }),
|
|
190
|
+
item.label
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
if (!item.href) {
|
|
196
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
197
|
+
"span",
|
|
198
|
+
{
|
|
199
|
+
className: breadcrumbLinkVariants({ state: isDisabled ? "disabled" : "default" }),
|
|
200
|
+
"aria-disabled": isDisabled || void 0,
|
|
201
|
+
children: [
|
|
202
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: item.icon }),
|
|
203
|
+
item.label
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
209
|
+
LinkComponent,
|
|
210
|
+
{
|
|
211
|
+
href: item.href,
|
|
212
|
+
className: breadcrumbLinkVariants({ state }),
|
|
213
|
+
"aria-disabled": isDisabled || void 0,
|
|
214
|
+
children: [
|
|
215
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: item.icon }),
|
|
216
|
+
item.label
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
function BreadcrumbEllipsis({
|
|
222
|
+
items,
|
|
223
|
+
linkComponent: LinkComponent = "a",
|
|
224
|
+
isGroupDisabled
|
|
225
|
+
}) {
|
|
226
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkGD5GHTMA_js.Dropdown, { defaultOpen: false, children: [
|
|
227
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGD5GHTMA_js.Dropdown.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
228
|
+
chunk3YOY2VJ6_js.Button,
|
|
229
|
+
{
|
|
230
|
+
variant: "ghost",
|
|
231
|
+
size: "icon",
|
|
232
|
+
className: ellipsisButtonVariants(),
|
|
233
|
+
"aria-label": "More breadcrumbs",
|
|
234
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" })
|
|
235
|
+
}
|
|
236
|
+
) }),
|
|
237
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGD5GHTMA_js.Dropdown.Menu, { align: "start", side: "bottom", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
238
|
+
chunkGD5GHTMA_js.Dropdown.Item,
|
|
239
|
+
{
|
|
240
|
+
isDisabled: isGroupDisabled || item.isDisabled,
|
|
241
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
242
|
+
LinkComponent,
|
|
243
|
+
{
|
|
244
|
+
href: item.href,
|
|
245
|
+
className: "flex flex-1 items-center gap-2",
|
|
246
|
+
children: [
|
|
247
|
+
item.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: item.icon }),
|
|
248
|
+
item.label
|
|
249
|
+
]
|
|
250
|
+
}
|
|
251
|
+
)
|
|
252
|
+
},
|
|
253
|
+
item.id
|
|
254
|
+
)) })
|
|
255
|
+
] });
|
|
256
|
+
}
|
|
257
|
+
var Breadcrumbs = react.forwardRef(
|
|
258
|
+
({
|
|
259
|
+
items,
|
|
260
|
+
separator = "chevron",
|
|
261
|
+
maxItems = 4,
|
|
262
|
+
itemsBeforeCollapse = 1,
|
|
263
|
+
itemsAfterCollapse = 2,
|
|
264
|
+
linkComponent,
|
|
265
|
+
isDisabled,
|
|
266
|
+
className,
|
|
267
|
+
"aria-label": ariaLabel = "Breadcrumb",
|
|
268
|
+
...props
|
|
269
|
+
}, ref) => {
|
|
270
|
+
if (!items || items.length === 0) {
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
const collapsedData = getCollapsedItems(
|
|
274
|
+
items,
|
|
275
|
+
maxItems,
|
|
276
|
+
itemsBeforeCollapse,
|
|
277
|
+
itemsAfterCollapse
|
|
278
|
+
);
|
|
279
|
+
if (!collapsedData) {
|
|
280
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
281
|
+
"nav",
|
|
282
|
+
{
|
|
283
|
+
ref,
|
|
284
|
+
"aria-label": ariaLabel,
|
|
285
|
+
className: chunkVIREG536_js.cn(breadcrumbsVariants(), className),
|
|
286
|
+
...props,
|
|
287
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: breadcrumbListVariants(), children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
|
|
288
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { className: breadcrumbItemVariants(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
289
|
+
BreadcrumbLink,
|
|
290
|
+
{
|
|
291
|
+
item,
|
|
292
|
+
isCurrent: isCurrentPage(index, items.length),
|
|
293
|
+
linkComponent,
|
|
294
|
+
isGroupDisabled: isDisabled
|
|
295
|
+
}
|
|
296
|
+
) }),
|
|
297
|
+
index < items.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, { separator })
|
|
298
|
+
] }, item.id)) })
|
|
299
|
+
}
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
303
|
+
"nav",
|
|
304
|
+
{
|
|
305
|
+
ref,
|
|
306
|
+
"aria-label": ariaLabel,
|
|
307
|
+
className: chunkVIREG536_js.cn(breadcrumbsVariants(), className),
|
|
308
|
+
...props,
|
|
309
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("ol", { className: breadcrumbListVariants(), children: [
|
|
310
|
+
collapsedData.before.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
|
|
311
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { className: breadcrumbItemVariants(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
312
|
+
BreadcrumbLink,
|
|
313
|
+
{
|
|
314
|
+
item,
|
|
315
|
+
isCurrent: false,
|
|
316
|
+
linkComponent,
|
|
317
|
+
isGroupDisabled: isDisabled
|
|
318
|
+
}
|
|
319
|
+
) }),
|
|
320
|
+
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, { separator })
|
|
321
|
+
] }, item.id)),
|
|
322
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { className: breadcrumbItemVariants(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
323
|
+
BreadcrumbEllipsis,
|
|
324
|
+
{
|
|
325
|
+
items: collapsedData.collapsed,
|
|
326
|
+
linkComponent,
|
|
327
|
+
isGroupDisabled: isDisabled
|
|
328
|
+
}
|
|
329
|
+
) }),
|
|
330
|
+
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, { separator }),
|
|
331
|
+
collapsedData.after.map((item, index) => {
|
|
332
|
+
const isLast = index === collapsedData.after.length - 1;
|
|
333
|
+
const globalIndex = items.length - collapsedData.after.length + index;
|
|
334
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
|
|
335
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { className: breadcrumbItemVariants(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
336
|
+
BreadcrumbLink,
|
|
337
|
+
{
|
|
338
|
+
item,
|
|
339
|
+
isCurrent: isCurrentPage(globalIndex, items.length),
|
|
340
|
+
linkComponent,
|
|
341
|
+
isGroupDisabled: isDisabled
|
|
342
|
+
}
|
|
343
|
+
) }),
|
|
344
|
+
!isLast && /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, { separator })
|
|
345
|
+
] }, item.id);
|
|
346
|
+
})
|
|
347
|
+
] })
|
|
348
|
+
}
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
);
|
|
352
|
+
Breadcrumbs.displayName = "Breadcrumbs";
|
|
353
|
+
|
|
354
|
+
exports.BreadcrumbItemDataSchema = BreadcrumbItemDataSchema;
|
|
355
|
+
exports.Breadcrumbs = Breadcrumbs;
|
|
356
|
+
exports.BreadcrumbsPropsSchema = BreadcrumbsPropsSchema;
|
|
357
|
+
exports.SeparatorTypeSchema = SeparatorTypeSchema;
|
|
358
|
+
exports.breadcrumbItemVariants = breadcrumbItemVariants;
|
|
359
|
+
exports.breadcrumbLinkVariants = breadcrumbLinkVariants;
|
|
360
|
+
exports.breadcrumbListVariants = breadcrumbListVariants;
|
|
361
|
+
exports.breadcrumbsVariants = breadcrumbsVariants;
|
|
362
|
+
exports.ellipsisButtonVariants = ellipsisButtonVariants;
|
|
363
|
+
exports.separatorVariants = separatorVariants;
|
|
364
|
+
//# sourceMappingURL=chunk-HQVRMR6N.js.map
|
|
365
|
+
//# sourceMappingURL=chunk-HQVRMR6N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/elements/Breadcrumbs/Breadcrumbs.types.ts","../src/elements/Breadcrumbs/Breadcrumbs.tsx"],"names":["z","BaseComponentPropsSchema","cva","jsx","ChevronRight","jsxs","Dropdown","Button","MoreHorizontal","forwardRef","cn","Fragment"],"mappings":"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","file":"chunk-HQVRMR6N.js","sourcesContent":["import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode, ElementType } from 'react';\n\n/**\n * Breadcrumb Item Data Schema\n * Represents a single item in the breadcrumb trail\n *\n * @see breadcrumbs-prd.md FR-001 (Render Breadcrumbs from Items Array)\n * @see breadcrumbs-prd.md FR-007 (Icon Support)\n * @see plan.md Decision 1 (Array-Based API)\n */\nexport const BreadcrumbItemDataSchema = z.object({\n /** Unique identifier for the breadcrumb item */\n id: z.union([z.string(), z.number()]),\n\n /** Display text for the breadcrumb (required - no icon-only items) */\n label: z.string(),\n\n /** Link URL - omit for non-navigable items */\n href: z.string().optional(),\n\n /** Optional leading icon (ReactNode) */\n icon: z.custom<ReactNode>().optional(),\n\n /** Disable this specific breadcrumb link */\n isDisabled: z.boolean().optional().default(false),\n});\n\nexport type BreadcrumbItemData = z.infer<typeof BreadcrumbItemDataSchema>;\n\n/**\n * Separator Type Schema\n * Controls the visual separator between breadcrumb items\n *\n * @see breadcrumbs-prd.md FR-003 (Configurable Separators)\n * @see plan.md Decision 3 (Configurable Separators)\n */\nexport const SeparatorTypeSchema = z.union([\n z.literal('chevron'),\n z.literal('slash'),\n z.custom<ReactNode>(),\n]);\n\nexport type SeparatorType = z.infer<typeof SeparatorTypeSchema>;\n\n/**\n * Breadcrumbs Props Schema\n * Main component props for the Breadcrumbs component\n *\n * @see breadcrumbs-prd.md FR-001 to FR-011 (All Functional Requirements)\n * @see plan.md (All Design Decisions)\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const BreadcrumbsPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Array of breadcrumb items to render\n * @see FR-001 (Render Breadcrumbs from Items Array)\n */\n items: z.array(BreadcrumbItemDataSchema),\n\n /**\n * Separator style between items\n * @default 'chevron'\n * @see FR-003 (Configurable Separators)\n */\n separator: SeparatorTypeSchema.optional().default('chevron'),\n\n /**\n * Maximum items to show before collapsing\n * @default 4\n * @see FR-004 (Ellipsis Collapse for Overflow)\n */\n maxItems: z.number().int().positive().optional().default(4),\n\n /**\n * Number of items to show before ellipsis\n * @default 1\n * @see FR-004 (Ellipsis Collapse for Overflow)\n */\n itemsBeforeCollapse: z.number().int().nonnegative().optional().default(1),\n\n /**\n * Number of items to show after ellipsis\n * @default 2\n * @see FR-004 (Ellipsis Collapse for Overflow)\n */\n itemsAfterCollapse: z.number().int().positive().optional().default(2),\n\n /**\n * Custom link component for framework integration (Next.js Link, React Router Link, etc.)\n * @default 'a'\n * @see FR-005 (Polymorphic Link Component)\n */\n linkComponent: z.custom<ElementType>().optional(),\n\n /**\n * Disable all breadcrumb links\n * @default false\n * @see FR-006 (Disabled States)\n */\n isDisabled: z.boolean().optional().default(false),\n});\n\nexport type BreadcrumbsProps = z.infer<typeof BreadcrumbsPropsSchema>;\n\n/**\n * Internal collapsed items structure\n * Used by ellipsis collapse logic\n *\n * @see FR-004 (Ellipsis Collapse for Overflow)\n * @see plan.md Decision 4 (Ellipsis Collapse)\n */\nexport interface CollapsedItems {\n /** Items shown before the ellipsis */\n before: BreadcrumbItemData[];\n /** Items hidden in the dropdown */\n collapsed: BreadcrumbItemData[];\n /** Items shown after the ellipsis */\n after: BreadcrumbItemData[];\n}\n\n/**\n * Internal BreadcrumbLink component props\n * Used by the internal link rendering component\n */\nexport interface BreadcrumbLinkInternalProps {\n item: BreadcrumbItemData;\n isCurrent: boolean;\n linkComponent?: ElementType;\n isGroupDisabled?: boolean;\n}\n\n/**\n * Internal BreadcrumbEllipsis component props\n * Used by the ellipsis dropdown component\n */\nexport interface BreadcrumbEllipsisInternalProps {\n items: BreadcrumbItemData[];\n linkComponent?: ElementType;\n isGroupDisabled?: boolean;\n}\n\n/**\n * Internal BreadcrumbSeparator component props\n * Used by the separator rendering component\n */\nexport interface BreadcrumbSeparatorInternalProps {\n separator: SeparatorType;\n}\n\n/**\n * CVA state type for breadcrumb link variants\n */\nexport type BreadcrumbLinkState = 'default' | 'current' | 'disabled';\n\n/**\n * CVA separator type for separator variants\n */\nexport type SeparatorVariantType = 'chevron' | 'slash' | 'custom';\n","\"use client\";\n\n/**\n * Breadcrumbs Component\n * Accessible breadcrumb navigation with array-based API and ellipsis collapse\n *\n * @see breadcrumbs-prd.md FR-001 to FR-011 (Breadcrumbs Component Requirements)\n * @see breadcrumbs-prd.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)\n * @see breadcrumbs-prd.md FR-008 (44x44px minimum touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, Fragment, type ElementType, type ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Dropdown } from '../Dropdown';\nimport { Button } from '../Button';\nimport type {\n BreadcrumbsProps,\n BreadcrumbItemData,\n SeparatorType,\n CollapsedItems,\n BreadcrumbLinkState,\n} from './Breadcrumbs.types';\n\n// ============================================================================\n// CVA Variants (Task 3.1)\n// ============================================================================\n\n/**\n * Root container styling\n * @see plan.md CVA Variants Structure - breadcrumbsVariants\n */\nexport const breadcrumbsVariants = cva(\"flex items-center flex-wrap\", {\n variants: {},\n defaultVariants: {},\n});\n\n/**\n * Ordered list styling\n * @see plan.md CVA Variants Structure - breadcrumbListVariants\n */\nexport const breadcrumbListVariants = cva(\n \"flex flex-wrap items-center gap-1 break-words text-sm text-[var(--menu-muted)]\",\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n/**\n * Individual list item styling\n * @see plan.md CVA Variants Structure - breadcrumbItemVariants\n */\nexport const breadcrumbItemVariants = cva(\"inline-flex items-center gap-1\", {\n variants: {},\n defaultVariants: {},\n});\n\n/**\n * Link/span styling based on state\n * @see plan.md CVA Variants Structure - breadcrumbLinkVariants\n * @see FR-008 (44x44px minimum touch targets)\n */\nexport const breadcrumbLinkVariants = cva(\n \"inline-flex items-center gap-2 min-h-[44px] px-2 rounded-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2\",\n {\n variants: {\n state: {\n default: [\n \"text-[var(--menu-muted)]\",\n \"hover:text-[var(--content-foreground)]\",\n \"hover:underline underline-offset-4\",\n ].join(\" \"),\n current: \"text-[var(--content-foreground)] font-medium pointer-events-none\",\n disabled:\n \"text-[var(--menu-muted)] opacity-50 cursor-not-allowed pointer-events-none\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n);\n\n/**\n * Separator styling\n * @see plan.md CVA Variants Structure - separatorVariants\n */\nexport const separatorVariants = cva(\"text-[var(--menu-muted)]\", {\n variants: {\n type: {\n chevron: \"[&>svg]:h-4 [&>svg]:w-4\",\n slash: \"mx-2\",\n custom: \"\",\n },\n },\n defaultVariants: {\n type: \"chevron\",\n },\n});\n\n/**\n * Ellipsis button styling\n * @see plan.md CVA Variants Structure - ellipsisButtonVariants\n * @see FR-008 (44x44px minimum touch targets)\n */\nexport const ellipsisButtonVariants = cva(\n \"inline-flex items-center justify-center min-h-[44px] min-w-[44px] rounded-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 hover:bg-[var(--accent)]\",\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n// ============================================================================\n// Helper Functions (Task 3.4)\n// ============================================================================\n\n/**\n * Determine if an item is the current page\n * Only the last item is considered current page\n *\n * @see plan.md Clarification: Current Page Detection - Only last item\n */\nfunction isCurrentPage(index: number, total: number): boolean {\n return index === total - 1;\n}\n\n/**\n * Calculate collapsed items for ellipsis dropdown\n *\n * @see FR-004 (Ellipsis Collapse for Overflow)\n * @see plan.md Clarification: Collapse Edge Case - No collapse if before + after >= total\n */\nfunction getCollapsedItems(\n items: BreadcrumbItemData[],\n maxItems: number,\n itemsBeforeCollapse: number,\n itemsAfterCollapse: number\n): CollapsedItems | null {\n // No collapse if items fit within maxItems\n if (items.length <= maxItems) {\n return null;\n }\n\n // Edge case: no collapse if before + after covers all items\n if (itemsBeforeCollapse + itemsAfterCollapse >= items.length) {\n return null;\n }\n\n const before = items.slice(0, itemsBeforeCollapse);\n const after = items.slice(-itemsAfterCollapse);\n const collapsed = items.slice(itemsBeforeCollapse, items.length - itemsAfterCollapse);\n\n return { before, collapsed, after };\n}\n\n// ============================================================================\n// Internal Components (Tasks 3.2, 3.3)\n// ============================================================================\n\n/**\n * BreadcrumbSeparator - Internal component for rendering separators\n *\n * @see FR-003 (Configurable Separators)\n * @see plan.md Task 3.2\n */\ninterface BreadcrumbSeparatorProps {\n separator: SeparatorType;\n}\n\nfunction BreadcrumbSeparator({ separator }: BreadcrumbSeparatorProps): ReactNode {\n if (separator === 'chevron') {\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={separatorVariants({ type: 'chevron' })}\n >\n <ChevronRight />\n </li>\n );\n }\n\n if (separator === 'slash') {\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={separatorVariants({ type: 'slash' })}\n >\n /\n </li>\n );\n }\n\n // Custom ReactNode separator\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={separatorVariants({ type: 'custom' })}\n >\n {separator}\n </li>\n );\n}\n\n/**\n * BreadcrumbLink - Internal component for rendering individual breadcrumb links\n *\n * @see FR-001 (Render Breadcrumbs from Items Array)\n * @see FR-002 (Auto-Detect Current Page)\n * @see FR-005 (Polymorphic Link Component)\n * @see plan.md Task 3.3\n */\ninterface BreadcrumbLinkProps {\n item: BreadcrumbItemData;\n isCurrent: boolean;\n linkComponent?: ElementType;\n isGroupDisabled?: boolean;\n}\n\nfunction BreadcrumbLink({\n item,\n isCurrent,\n linkComponent: LinkComponent = 'a',\n isGroupDisabled,\n}: BreadcrumbLinkProps): ReactNode {\n const isDisabled = isGroupDisabled || item.isDisabled;\n const state: BreadcrumbLinkState = isCurrent\n ? 'current'\n : isDisabled\n ? 'disabled'\n : 'default';\n\n // Render current page as span with aria-current\n if (isCurrent) {\n return (\n <span\n className={breadcrumbLinkVariants({ state: 'current' })}\n aria-current=\"page\"\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </span>\n );\n }\n\n // Render non-navigable item (no href) as span without aria-current\n if (!item.href) {\n return (\n <span\n className={breadcrumbLinkVariants({ state: isDisabled ? 'disabled' : 'default' })}\n aria-disabled={isDisabled || undefined}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </span>\n );\n }\n\n // Render link - navigation handled by linkComponent\n return (\n <LinkComponent\n href={item.href}\n className={breadcrumbLinkVariants({ state })}\n aria-disabled={isDisabled || undefined}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </LinkComponent>\n );\n}\n\n/**\n * BreadcrumbEllipsis - Internal component for collapsed items dropdown\n *\n * @see FR-004 (Ellipsis Collapse for Overflow)\n * @see plan.md Task 4.2 - Uses Themis Dropdown with nested LinkComponent\n */\ninterface BreadcrumbEllipsisProps {\n items: BreadcrumbItemData[];\n linkComponent?: ElementType;\n isGroupDisabled?: boolean;\n}\n\nfunction BreadcrumbEllipsis({\n items,\n linkComponent: LinkComponent = 'a',\n isGroupDisabled,\n}: BreadcrumbEllipsisProps): ReactNode {\n return (\n <Dropdown defaultOpen={false}>\n <Dropdown.Trigger>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={ellipsisButtonVariants()}\n aria-label=\"More breadcrumbs\"\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n </Dropdown.Trigger>\n <Dropdown.Menu align=\"start\" side=\"bottom\">\n {items.map((item) => (\n <Dropdown.Item\n key={item.id}\n isDisabled={isGroupDisabled || item.isDisabled}\n >\n {/* Nest LinkComponent inside Item (ShadCN pattern) */}\n <LinkComponent\n href={item.href}\n className=\"flex flex-1 items-center gap-2\"\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </LinkComponent>\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n\n// ============================================================================\n// Main Component (Tasks 3.5, 3.6)\n// ============================================================================\n\n/**\n * Breadcrumbs Component\n *\n * Accessible breadcrumb navigation with array-based API and ellipsis collapse.\n * Supports polymorphic link components for framework integration.\n *\n * @example\n * ```tsx\n * <Breadcrumbs\n * items={[\n * { id: 'home', label: 'Home', href: '/' },\n * { id: 'products', label: 'Products', href: '/products' },\n * { id: 'current', label: 'Product Details' }\n * ]}\n * />\n * ```\n *\n * @see breadcrumbs-prd.md FR-001 to FR-011 (All Functional Requirements)\n */\nconst Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n items,\n separator = 'chevron',\n maxItems = 4,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 2,\n linkComponent,\n isDisabled,\n className,\n 'aria-label': ariaLabel = 'Breadcrumb',\n ...props\n },\n ref\n ) => {\n // Handle empty items - render nothing\n if (!items || items.length === 0) {\n return null;\n }\n\n // Calculate if we need to collapse\n const collapsedData = getCollapsedItems(\n items,\n maxItems,\n itemsBeforeCollapse,\n itemsAfterCollapse\n );\n\n // Render without collapse\n if (!collapsedData) {\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn(breadcrumbsVariants(), className)}\n {...props}\n >\n <ol className={breadcrumbListVariants()}>\n {items.map((item, index) => (\n <Fragment key={item.id}>\n <li className={breadcrumbItemVariants()}>\n <BreadcrumbLink\n item={item}\n isCurrent={isCurrentPage(index, items.length)}\n linkComponent={linkComponent}\n isGroupDisabled={isDisabled}\n />\n </li>\n {index < items.length - 1 && (\n <BreadcrumbSeparator separator={separator} />\n )}\n </Fragment>\n ))}\n </ol>\n </nav>\n );\n }\n\n // Render with collapse\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={cn(breadcrumbsVariants(), className)}\n {...props}\n >\n <ol className={breadcrumbListVariants()}>\n {/* Items before ellipsis */}\n {collapsedData.before.map((item) => (\n <Fragment key={item.id}>\n <li className={breadcrumbItemVariants()}>\n <BreadcrumbLink\n item={item}\n isCurrent={false}\n linkComponent={linkComponent}\n isGroupDisabled={isDisabled}\n />\n </li>\n <BreadcrumbSeparator separator={separator} />\n </Fragment>\n ))}\n\n {/* Ellipsis dropdown */}\n <li className={breadcrumbItemVariants()}>\n <BreadcrumbEllipsis\n items={collapsedData.collapsed}\n linkComponent={linkComponent}\n isGroupDisabled={isDisabled}\n />\n </li>\n <BreadcrumbSeparator separator={separator} />\n\n {/* Items after ellipsis */}\n {collapsedData.after.map((item, index) => {\n const isLast = index === collapsedData.after.length - 1;\n const globalIndex =\n items.length - collapsedData.after.length + index;\n return (\n <Fragment key={item.id}>\n <li className={breadcrumbItemVariants()}>\n <BreadcrumbLink\n item={item}\n isCurrent={isCurrentPage(globalIndex, items.length)}\n linkComponent={linkComponent}\n isGroupDisabled={isDisabled}\n />\n </li>\n {!isLast && <BreadcrumbSeparator separator={separator} />}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n }\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n\nexport { Breadcrumbs };\n"]}
|