@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,661 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tabs Component Storybook Stories
|
|
3
|
+
*
|
|
4
|
+
* @see tabs-prd.md FR-001 to FR-016 (Tabs Requirements)
|
|
5
|
+
* @see plan.md (Implementation Plan)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Meta, StoryObj } from '@storybook/nextjs';
|
|
9
|
+
import { useState, type Key } from 'react';
|
|
10
|
+
import { Tabs, TabList, Tab, TabPanel } from './Tabs';
|
|
11
|
+
import { Settings, User, Bell, Mail, CreditCard, Lock } from 'lucide-react';
|
|
12
|
+
|
|
13
|
+
const meta = {
|
|
14
|
+
title: 'Elements/Tabs',
|
|
15
|
+
component: Tabs,
|
|
16
|
+
parameters: {
|
|
17
|
+
layout: 'centered',
|
|
18
|
+
docs: {
|
|
19
|
+
description: {
|
|
20
|
+
component:
|
|
21
|
+
'Accessible tabbed interface component with WCAG 2.2 AAA compliance, React Aria primitives, horizontal/vertical orientation, keyboard activation modes, React 19.2 Activity state preservation, and icon/badge support.',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
tags: ['autodocs'],
|
|
26
|
+
argTypes: {
|
|
27
|
+
orientation: {
|
|
28
|
+
control: 'select',
|
|
29
|
+
options: ['horizontal', 'vertical'],
|
|
30
|
+
description: 'Tab layout orientation',
|
|
31
|
+
},
|
|
32
|
+
keyboardActivation: {
|
|
33
|
+
control: 'select',
|
|
34
|
+
options: ['automatic', 'manual'],
|
|
35
|
+
description: 'Keyboard activation mode',
|
|
36
|
+
},
|
|
37
|
+
isDisabled: {
|
|
38
|
+
control: 'boolean',
|
|
39
|
+
description: 'Disable all tabs',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
} satisfies Meta<typeof Tabs>;
|
|
43
|
+
|
|
44
|
+
export default meta;
|
|
45
|
+
type Story = StoryObj<typeof meta>;
|
|
46
|
+
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Default Stories
|
|
49
|
+
// ============================================================================
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Default: Basic 3-tab layout with first tab selected
|
|
53
|
+
*/
|
|
54
|
+
export const Default: Story = {
|
|
55
|
+
render: () => (
|
|
56
|
+
<Tabs defaultSelectedKey="account" className="w-[400px]">
|
|
57
|
+
<TabList aria-label="Account settings">
|
|
58
|
+
<Tab id="account">Account</Tab>
|
|
59
|
+
<Tab id="password">Password</Tab>
|
|
60
|
+
<Tab id="settings">Settings</Tab>
|
|
61
|
+
</TabList>
|
|
62
|
+
<TabPanel id="account">
|
|
63
|
+
<div className="p-4">
|
|
64
|
+
<h3 className="text-lg font-semibold mb-2">Account Information</h3>
|
|
65
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
66
|
+
Manage your account details and preferences.
|
|
67
|
+
</p>
|
|
68
|
+
</div>
|
|
69
|
+
</TabPanel>
|
|
70
|
+
<TabPanel id="password">
|
|
71
|
+
<div className="p-4">
|
|
72
|
+
<h3 className="text-lg font-semibold mb-2">Password Settings</h3>
|
|
73
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
74
|
+
Update your password and security settings.
|
|
75
|
+
</p>
|
|
76
|
+
</div>
|
|
77
|
+
</TabPanel>
|
|
78
|
+
<TabPanel id="settings">
|
|
79
|
+
<div className="p-4">
|
|
80
|
+
<h3 className="text-lg font-semibold mb-2">General Settings</h3>
|
|
81
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
82
|
+
Configure application preferences.
|
|
83
|
+
</p>
|
|
84
|
+
</div>
|
|
85
|
+
</TabPanel>
|
|
86
|
+
</Tabs>
|
|
87
|
+
),
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Orientation Stories
|
|
92
|
+
// ============================================================================
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Horizontal: Default horizontal layout
|
|
96
|
+
*/
|
|
97
|
+
export const Horizontal: Story = {
|
|
98
|
+
render: () => (
|
|
99
|
+
<Tabs orientation="horizontal" className="w-[400px]">
|
|
100
|
+
<TabList aria-label="Horizontal tabs">
|
|
101
|
+
<Tab id="tab1">Tab 1</Tab>
|
|
102
|
+
<Tab id="tab2">Tab 2</Tab>
|
|
103
|
+
<Tab id="tab3">Tab 3</Tab>
|
|
104
|
+
</TabList>
|
|
105
|
+
<TabPanel id="tab1">
|
|
106
|
+
<div className="p-4">Content for Tab 1</div>
|
|
107
|
+
</TabPanel>
|
|
108
|
+
<TabPanel id="tab2">
|
|
109
|
+
<div className="p-4">Content for Tab 2</div>
|
|
110
|
+
</TabPanel>
|
|
111
|
+
<TabPanel id="tab3">
|
|
112
|
+
<div className="p-4">Content for Tab 3</div>
|
|
113
|
+
</TabPanel>
|
|
114
|
+
</Tabs>
|
|
115
|
+
),
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Vertical: Vertical orientation with tabs on the left
|
|
120
|
+
*/
|
|
121
|
+
export const Vertical: Story = {
|
|
122
|
+
render: () => (
|
|
123
|
+
<Tabs orientation="vertical" className="flex gap-4 w-[500px]">
|
|
124
|
+
<TabList aria-label="Vertical tabs" className="w-[150px]">
|
|
125
|
+
<Tab id="profile">Profile</Tab>
|
|
126
|
+
<Tab id="billing">Billing</Tab>
|
|
127
|
+
<Tab id="security">Security</Tab>
|
|
128
|
+
<Tab id="notifications">Notifications</Tab>
|
|
129
|
+
</TabList>
|
|
130
|
+
<div className="flex-1">
|
|
131
|
+
<TabPanel id="profile">
|
|
132
|
+
<div className="p-4 border border-[var(--border)] rounded-md">
|
|
133
|
+
<h3 className="font-semibold mb-2">Profile Settings</h3>
|
|
134
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
135
|
+
Manage your profile information.
|
|
136
|
+
</p>
|
|
137
|
+
</div>
|
|
138
|
+
</TabPanel>
|
|
139
|
+
<TabPanel id="billing">
|
|
140
|
+
<div className="p-4 border border-[var(--border)] rounded-md">
|
|
141
|
+
<h3 className="font-semibold mb-2">Billing Information</h3>
|
|
142
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
143
|
+
Manage payment methods and billing history.
|
|
144
|
+
</p>
|
|
145
|
+
</div>
|
|
146
|
+
</TabPanel>
|
|
147
|
+
<TabPanel id="security">
|
|
148
|
+
<div className="p-4 border border-[var(--border)] rounded-md">
|
|
149
|
+
<h3 className="font-semibold mb-2">Security Settings</h3>
|
|
150
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
151
|
+
Two-factor authentication and security preferences.
|
|
152
|
+
</p>
|
|
153
|
+
</div>
|
|
154
|
+
</TabPanel>
|
|
155
|
+
<TabPanel id="notifications">
|
|
156
|
+
<div className="p-4 border border-[var(--border)] rounded-md">
|
|
157
|
+
<h3 className="font-semibold mb-2">Notification Preferences</h3>
|
|
158
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
159
|
+
Choose what notifications you want to receive.
|
|
160
|
+
</p>
|
|
161
|
+
</div>
|
|
162
|
+
</TabPanel>
|
|
163
|
+
</div>
|
|
164
|
+
</Tabs>
|
|
165
|
+
),
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// ============================================================================
|
|
169
|
+
// State Stories
|
|
170
|
+
// ============================================================================
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Disabled: All tabs disabled
|
|
174
|
+
*/
|
|
175
|
+
export const Disabled: Story = {
|
|
176
|
+
render: () => (
|
|
177
|
+
<Tabs isDisabled className="w-[400px]">
|
|
178
|
+
<TabList aria-label="Disabled tabs">
|
|
179
|
+
<Tab id="tab1">Tab 1</Tab>
|
|
180
|
+
<Tab id="tab2">Tab 2</Tab>
|
|
181
|
+
<Tab id="tab3">Tab 3</Tab>
|
|
182
|
+
</TabList>
|
|
183
|
+
<TabPanel id="tab1">
|
|
184
|
+
<div className="p-4">Content 1</div>
|
|
185
|
+
</TabPanel>
|
|
186
|
+
<TabPanel id="tab2">
|
|
187
|
+
<div className="p-4">Content 2</div>
|
|
188
|
+
</TabPanel>
|
|
189
|
+
<TabPanel id="tab3">
|
|
190
|
+
<div className="p-4">Content 3</div>
|
|
191
|
+
</TabPanel>
|
|
192
|
+
</Tabs>
|
|
193
|
+
),
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* DisabledIndividual: Individual tabs disabled using disabledKeys
|
|
198
|
+
*/
|
|
199
|
+
export const DisabledIndividual: Story = {
|
|
200
|
+
render: () => (
|
|
201
|
+
<Tabs disabledKeys={['tab2']} className="w-[400px]">
|
|
202
|
+
<TabList aria-label="Tabs with disabled option">
|
|
203
|
+
<Tab id="tab1">Available</Tab>
|
|
204
|
+
<Tab id="tab2">Disabled</Tab>
|
|
205
|
+
<Tab id="tab3">Available</Tab>
|
|
206
|
+
</TabList>
|
|
207
|
+
<TabPanel id="tab1">
|
|
208
|
+
<div className="p-4">This tab is available.</div>
|
|
209
|
+
</TabPanel>
|
|
210
|
+
<TabPanel id="tab2">
|
|
211
|
+
<div className="p-4">This tab is disabled.</div>
|
|
212
|
+
</TabPanel>
|
|
213
|
+
<TabPanel id="tab3">
|
|
214
|
+
<div className="p-4">This tab is also available.</div>
|
|
215
|
+
</TabPanel>
|
|
216
|
+
</Tabs>
|
|
217
|
+
),
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// ============================================================================
|
|
221
|
+
// Icon and Badge Stories
|
|
222
|
+
// ============================================================================
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* WithIcons: Tabs with lucide icons
|
|
226
|
+
*/
|
|
227
|
+
export const WithIcons: Story = {
|
|
228
|
+
render: () => (
|
|
229
|
+
<Tabs className="w-[500px]">
|
|
230
|
+
<TabList aria-label="Settings with icons">
|
|
231
|
+
<Tab id="account">
|
|
232
|
+
<User className="h-4 w-4" aria-hidden="true" />
|
|
233
|
+
Account
|
|
234
|
+
</Tab>
|
|
235
|
+
<Tab id="security">
|
|
236
|
+
<Lock className="h-4 w-4" aria-hidden="true" />
|
|
237
|
+
Security
|
|
238
|
+
</Tab>
|
|
239
|
+
<Tab id="notifications">
|
|
240
|
+
<Bell className="h-4 w-4" aria-hidden="true" />
|
|
241
|
+
Notifications
|
|
242
|
+
</Tab>
|
|
243
|
+
</TabList>
|
|
244
|
+
<TabPanel id="account">
|
|
245
|
+
<div className="p-4">Account settings content</div>
|
|
246
|
+
</TabPanel>
|
|
247
|
+
<TabPanel id="security">
|
|
248
|
+
<div className="p-4">Security settings content</div>
|
|
249
|
+
</TabPanel>
|
|
250
|
+
<TabPanel id="notifications">
|
|
251
|
+
<div className="p-4">Notification settings content</div>
|
|
252
|
+
</TabPanel>
|
|
253
|
+
</Tabs>
|
|
254
|
+
),
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* WithBadges: Tabs with notification badges
|
|
259
|
+
*/
|
|
260
|
+
export const WithBadges: Story = {
|
|
261
|
+
render: () => (
|
|
262
|
+
<Tabs className="w-[500px]">
|
|
263
|
+
<TabList aria-label="Navigation with badges">
|
|
264
|
+
<Tab id="inbox">
|
|
265
|
+
Inbox
|
|
266
|
+
<span
|
|
267
|
+
className="ml-2 inline-flex items-center justify-center px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--primary)] text-[var(--primary-foreground)]"
|
|
268
|
+
aria-label="12 unread messages"
|
|
269
|
+
>
|
|
270
|
+
12
|
|
271
|
+
</span>
|
|
272
|
+
</Tab>
|
|
273
|
+
<Tab id="drafts">
|
|
274
|
+
Drafts
|
|
275
|
+
<span
|
|
276
|
+
className="ml-2 inline-flex items-center justify-center px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--secondary)] text-[var(--secondary-foreground)]"
|
|
277
|
+
aria-label="3 drafts"
|
|
278
|
+
>
|
|
279
|
+
3
|
|
280
|
+
</span>
|
|
281
|
+
</Tab>
|
|
282
|
+
<Tab id="sent">Sent</Tab>
|
|
283
|
+
</TabList>
|
|
284
|
+
<TabPanel id="inbox">
|
|
285
|
+
<div className="p-4">Your inbox messages</div>
|
|
286
|
+
</TabPanel>
|
|
287
|
+
<TabPanel id="drafts">
|
|
288
|
+
<div className="p-4">Your draft messages</div>
|
|
289
|
+
</TabPanel>
|
|
290
|
+
<TabPanel id="sent">
|
|
291
|
+
<div className="p-4">Your sent messages</div>
|
|
292
|
+
</TabPanel>
|
|
293
|
+
</Tabs>
|
|
294
|
+
),
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* IconsAndBadges: Combined icons and badges
|
|
299
|
+
*/
|
|
300
|
+
export const IconsAndBadges: Story = {
|
|
301
|
+
render: () => (
|
|
302
|
+
<Tabs className="w-[600px]">
|
|
303
|
+
<TabList aria-label="Full navigation">
|
|
304
|
+
<Tab id="messages">
|
|
305
|
+
<Mail className="h-4 w-4" aria-hidden="true" />
|
|
306
|
+
Messages
|
|
307
|
+
<span
|
|
308
|
+
className="inline-flex items-center justify-center px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--destructive)] text-[var(--destructive-foreground)]"
|
|
309
|
+
aria-label="5 unread"
|
|
310
|
+
>
|
|
311
|
+
5
|
|
312
|
+
</span>
|
|
313
|
+
</Tab>
|
|
314
|
+
<Tab id="billing">
|
|
315
|
+
<CreditCard className="h-4 w-4" aria-hidden="true" />
|
|
316
|
+
Billing
|
|
317
|
+
</Tab>
|
|
318
|
+
<Tab id="settings">
|
|
319
|
+
<Settings className="h-4 w-4" aria-hidden="true" />
|
|
320
|
+
Settings
|
|
321
|
+
</Tab>
|
|
322
|
+
</TabList>
|
|
323
|
+
<TabPanel id="messages">
|
|
324
|
+
<div className="p-4">Messages content</div>
|
|
325
|
+
</TabPanel>
|
|
326
|
+
<TabPanel id="billing">
|
|
327
|
+
<div className="p-4">Billing content</div>
|
|
328
|
+
</TabPanel>
|
|
329
|
+
<TabPanel id="settings">
|
|
330
|
+
<div className="p-4">Settings content</div>
|
|
331
|
+
</TabPanel>
|
|
332
|
+
</Tabs>
|
|
333
|
+
),
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
// ============================================================================
|
|
337
|
+
// Overflow Story
|
|
338
|
+
// ============================================================================
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Overflow: Many tabs that require scrolling
|
|
342
|
+
*/
|
|
343
|
+
export const Overflow: Story = {
|
|
344
|
+
render: () => (
|
|
345
|
+
<div className="w-[400px]">
|
|
346
|
+
<Tabs>
|
|
347
|
+
<TabList aria-label="Many tabs">
|
|
348
|
+
<Tab id="tab1">Dashboard</Tab>
|
|
349
|
+
<Tab id="tab2">Analytics</Tab>
|
|
350
|
+
<Tab id="tab3">Reports</Tab>
|
|
351
|
+
<Tab id="tab4">Users</Tab>
|
|
352
|
+
<Tab id="tab5">Settings</Tab>
|
|
353
|
+
<Tab id="tab6">Billing</Tab>
|
|
354
|
+
<Tab id="tab7">Support</Tab>
|
|
355
|
+
<Tab id="tab8">Documentation</Tab>
|
|
356
|
+
</TabList>
|
|
357
|
+
<TabPanel id="tab1">
|
|
358
|
+
<div className="p-4">Dashboard content</div>
|
|
359
|
+
</TabPanel>
|
|
360
|
+
<TabPanel id="tab2">
|
|
361
|
+
<div className="p-4">Analytics content</div>
|
|
362
|
+
</TabPanel>
|
|
363
|
+
<TabPanel id="tab3">
|
|
364
|
+
<div className="p-4">Reports content</div>
|
|
365
|
+
</TabPanel>
|
|
366
|
+
<TabPanel id="tab4">
|
|
367
|
+
<div className="p-4">Users content</div>
|
|
368
|
+
</TabPanel>
|
|
369
|
+
<TabPanel id="tab5">
|
|
370
|
+
<div className="p-4">Settings content</div>
|
|
371
|
+
</TabPanel>
|
|
372
|
+
<TabPanel id="tab6">
|
|
373
|
+
<div className="p-4">Billing content</div>
|
|
374
|
+
</TabPanel>
|
|
375
|
+
<TabPanel id="tab7">
|
|
376
|
+
<div className="p-4">Support content</div>
|
|
377
|
+
</TabPanel>
|
|
378
|
+
<TabPanel id="tab8">
|
|
379
|
+
<div className="p-4">Documentation content</div>
|
|
380
|
+
</TabPanel>
|
|
381
|
+
</Tabs>
|
|
382
|
+
</div>
|
|
383
|
+
),
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* ManyTabs: 8+ tabs demonstrating overflow
|
|
388
|
+
*/
|
|
389
|
+
export const ManyTabs: Story = {
|
|
390
|
+
render: () => (
|
|
391
|
+
<div className="w-[500px]">
|
|
392
|
+
<Tabs>
|
|
393
|
+
<TabList aria-label="Extended navigation">
|
|
394
|
+
{Array.from({ length: 10 }, (_, i) => (
|
|
395
|
+
<Tab key={`tab${i + 1}`} id={`tab${i + 1}`}>
|
|
396
|
+
Tab {i + 1}
|
|
397
|
+
</Tab>
|
|
398
|
+
))}
|
|
399
|
+
</TabList>
|
|
400
|
+
{Array.from({ length: 10 }, (_, i) => (
|
|
401
|
+
<TabPanel key={`tab${i + 1}`} id={`tab${i + 1}`}>
|
|
402
|
+
<div className="p-4">Content for Tab {i + 1}</div>
|
|
403
|
+
</TabPanel>
|
|
404
|
+
))}
|
|
405
|
+
</Tabs>
|
|
406
|
+
</div>
|
|
407
|
+
),
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* LongLabels: Tabs with very long text labels
|
|
412
|
+
*/
|
|
413
|
+
export const LongLabels: Story = {
|
|
414
|
+
render: () => (
|
|
415
|
+
<div className="w-[400px]">
|
|
416
|
+
<Tabs>
|
|
417
|
+
<TabList aria-label="Long label tabs">
|
|
418
|
+
<Tab id="tab1">Account Settings and Preferences</Tab>
|
|
419
|
+
<Tab id="tab2">Security and Privacy Options</Tab>
|
|
420
|
+
<Tab id="tab3">Notification Configuration</Tab>
|
|
421
|
+
</TabList>
|
|
422
|
+
<TabPanel id="tab1">
|
|
423
|
+
<div className="p-4">Account settings content</div>
|
|
424
|
+
</TabPanel>
|
|
425
|
+
<TabPanel id="tab2">
|
|
426
|
+
<div className="p-4">Security settings content</div>
|
|
427
|
+
</TabPanel>
|
|
428
|
+
<TabPanel id="tab3">
|
|
429
|
+
<div className="p-4">Notification settings content</div>
|
|
430
|
+
</TabPanel>
|
|
431
|
+
</Tabs>
|
|
432
|
+
</div>
|
|
433
|
+
),
|
|
434
|
+
};
|
|
435
|
+
|
|
436
|
+
// ============================================================================
|
|
437
|
+
// Keyboard Activation Story
|
|
438
|
+
// ============================================================================
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* ManualActivation: Arrow keys focus tabs, Enter/Space selects
|
|
442
|
+
*/
|
|
443
|
+
export const ManualActivation: Story = {
|
|
444
|
+
render: () => (
|
|
445
|
+
<Tabs keyboardActivation="manual" className="w-[400px]">
|
|
446
|
+
<TabList aria-label="Manual activation tabs">
|
|
447
|
+
<Tab id="tab1">Tab 1</Tab>
|
|
448
|
+
<Tab id="tab2">Tab 2</Tab>
|
|
449
|
+
<Tab id="tab3">Tab 3</Tab>
|
|
450
|
+
</TabList>
|
|
451
|
+
<TabPanel id="tab1">
|
|
452
|
+
<div className="p-4">
|
|
453
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
454
|
+
Use arrow keys to focus tabs, then press Enter or Space to select.
|
|
455
|
+
</p>
|
|
456
|
+
</div>
|
|
457
|
+
</TabPanel>
|
|
458
|
+
<TabPanel id="tab2">
|
|
459
|
+
<div className="p-4">Content for Tab 2</div>
|
|
460
|
+
</TabPanel>
|
|
461
|
+
<TabPanel id="tab3">
|
|
462
|
+
<div className="p-4">Content for Tab 3</div>
|
|
463
|
+
</TabPanel>
|
|
464
|
+
</Tabs>
|
|
465
|
+
),
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
// ============================================================================
|
|
469
|
+
// Link Tabs Story
|
|
470
|
+
// ============================================================================
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* LinkTabs: Tabs with href for navigation
|
|
474
|
+
*/
|
|
475
|
+
export const LinkTabs: Story = {
|
|
476
|
+
render: () => (
|
|
477
|
+
<Tabs className="w-[400px]">
|
|
478
|
+
<TabList aria-label="Navigation links">
|
|
479
|
+
<Tab id="home" href="#home">
|
|
480
|
+
Home
|
|
481
|
+
</Tab>
|
|
482
|
+
<Tab id="about" href="#about">
|
|
483
|
+
About
|
|
484
|
+
</Tab>
|
|
485
|
+
<Tab id="contact" href="#contact">
|
|
486
|
+
Contact
|
|
487
|
+
</Tab>
|
|
488
|
+
</TabList>
|
|
489
|
+
<TabPanel id="home">
|
|
490
|
+
<div className="p-4">Home page content</div>
|
|
491
|
+
</TabPanel>
|
|
492
|
+
<TabPanel id="about">
|
|
493
|
+
<div className="p-4">About page content</div>
|
|
494
|
+
</TabPanel>
|
|
495
|
+
<TabPanel id="contact">
|
|
496
|
+
<div className="p-4">Contact page content</div>
|
|
497
|
+
</TabPanel>
|
|
498
|
+
</Tabs>
|
|
499
|
+
),
|
|
500
|
+
};
|
|
501
|
+
|
|
502
|
+
// ============================================================================
|
|
503
|
+
// RTL Story
|
|
504
|
+
// ============================================================================
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* RTL: Right-to-left layout
|
|
508
|
+
*/
|
|
509
|
+
export const RTL: Story = {
|
|
510
|
+
render: () => (
|
|
511
|
+
<div dir="rtl" className="w-[400px]">
|
|
512
|
+
<Tabs>
|
|
513
|
+
<TabList aria-label="RTL tabs">
|
|
514
|
+
<Tab id="tab1">علامة التبويب 1</Tab>
|
|
515
|
+
<Tab id="tab2">علامة التبويب 2</Tab>
|
|
516
|
+
<Tab id="tab3">علامة التبويب 3</Tab>
|
|
517
|
+
</TabList>
|
|
518
|
+
<TabPanel id="tab1">
|
|
519
|
+
<div className="p-4">محتوى علامة التبويب 1</div>
|
|
520
|
+
</TabPanel>
|
|
521
|
+
<TabPanel id="tab2">
|
|
522
|
+
<div className="p-4">محتوى علامة التبويب 2</div>
|
|
523
|
+
</TabPanel>
|
|
524
|
+
<TabPanel id="tab3">
|
|
525
|
+
<div className="p-4">محتوى علامة التبويب 3</div>
|
|
526
|
+
</TabPanel>
|
|
527
|
+
</Tabs>
|
|
528
|
+
</div>
|
|
529
|
+
),
|
|
530
|
+
};
|
|
531
|
+
|
|
532
|
+
// ============================================================================
|
|
533
|
+
// State Preservation Story (FR-016)
|
|
534
|
+
// ============================================================================
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* PreserveState: Form with React Activity state preservation
|
|
538
|
+
*/
|
|
539
|
+
export const PreserveState: Story = {
|
|
540
|
+
render: function PreserveStateDemo() {
|
|
541
|
+
const [selected, setSelected] = useState<Key>('form');
|
|
542
|
+
|
|
543
|
+
return (
|
|
544
|
+
<div className="w-[500px]">
|
|
545
|
+
<p className="text-sm text-[var(--muted-foreground)] mb-4">
|
|
546
|
+
Type in the form, switch tabs, then switch back - your input is preserved!
|
|
547
|
+
</p>
|
|
548
|
+
<Tabs selectedKey={selected} onSelectionChange={setSelected}>
|
|
549
|
+
<TabList aria-label="State preservation demo">
|
|
550
|
+
<Tab id="form">Form with State</Tab>
|
|
551
|
+
<Tab id="other">Other Content</Tab>
|
|
552
|
+
</TabList>
|
|
553
|
+
<TabPanel id="form" preserveState>
|
|
554
|
+
<div className="p-4 space-y-4">
|
|
555
|
+
<div>
|
|
556
|
+
<label className="block text-sm font-medium mb-1">Name</label>
|
|
557
|
+
<input
|
|
558
|
+
type="text"
|
|
559
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
560
|
+
placeholder="Enter your name"
|
|
561
|
+
/>
|
|
562
|
+
</div>
|
|
563
|
+
<div>
|
|
564
|
+
<label className="block text-sm font-medium mb-1">Email</label>
|
|
565
|
+
<input
|
|
566
|
+
type="email"
|
|
567
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
568
|
+
placeholder="Enter your email"
|
|
569
|
+
/>
|
|
570
|
+
</div>
|
|
571
|
+
<div>
|
|
572
|
+
<label className="block text-sm font-medium mb-1">Message</label>
|
|
573
|
+
<textarea
|
|
574
|
+
className="w-full px-3 py-2 border border-[var(--border)] rounded-md"
|
|
575
|
+
rows={3}
|
|
576
|
+
placeholder="Enter your message"
|
|
577
|
+
/>
|
|
578
|
+
</div>
|
|
579
|
+
</div>
|
|
580
|
+
</TabPanel>
|
|
581
|
+
<TabPanel id="other">
|
|
582
|
+
<div className="p-4">
|
|
583
|
+
<p className="text-sm text-[var(--muted-foreground)]">
|
|
584
|
+
This is other content. Switch back to the form tab to see your
|
|
585
|
+
inputs preserved.
|
|
586
|
+
</p>
|
|
587
|
+
</div>
|
|
588
|
+
</TabPanel>
|
|
589
|
+
</Tabs>
|
|
590
|
+
</div>
|
|
591
|
+
);
|
|
592
|
+
},
|
|
593
|
+
};
|
|
594
|
+
|
|
595
|
+
// ============================================================================
|
|
596
|
+
// Controlled Story
|
|
597
|
+
// ============================================================================
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Controlled: Externally controlled selection
|
|
601
|
+
*/
|
|
602
|
+
export const Controlled: Story = {
|
|
603
|
+
render: function ControlledTabs() {
|
|
604
|
+
const [selected, setSelected] = useState<Key>('tab1');
|
|
605
|
+
|
|
606
|
+
return (
|
|
607
|
+
<div className="w-[400px]">
|
|
608
|
+
<div className="flex gap-2 mb-4">
|
|
609
|
+
<button
|
|
610
|
+
onClick={() => setSelected('tab1')}
|
|
611
|
+
className={`px-3 py-1 text-sm rounded-md ${
|
|
612
|
+
selected === 'tab1'
|
|
613
|
+
? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
|
|
614
|
+
: 'bg-[var(--secondary)] text-[var(--secondary-foreground)]'
|
|
615
|
+
}`}
|
|
616
|
+
>
|
|
617
|
+
Select Tab 1
|
|
618
|
+
</button>
|
|
619
|
+
<button
|
|
620
|
+
onClick={() => setSelected('tab2')}
|
|
621
|
+
className={`px-3 py-1 text-sm rounded-md ${
|
|
622
|
+
selected === 'tab2'
|
|
623
|
+
? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
|
|
624
|
+
: 'bg-[var(--secondary)] text-[var(--secondary-foreground)]'
|
|
625
|
+
}`}
|
|
626
|
+
>
|
|
627
|
+
Select Tab 2
|
|
628
|
+
</button>
|
|
629
|
+
<button
|
|
630
|
+
onClick={() => setSelected('tab3')}
|
|
631
|
+
className={`px-3 py-1 text-sm rounded-md ${
|
|
632
|
+
selected === 'tab3'
|
|
633
|
+
? 'bg-[var(--primary)] text-[var(--primary-foreground)]'
|
|
634
|
+
: 'bg-[var(--secondary)] text-[var(--secondary-foreground)]'
|
|
635
|
+
}`}
|
|
636
|
+
>
|
|
637
|
+
Select Tab 3
|
|
638
|
+
</button>
|
|
639
|
+
</div>
|
|
640
|
+
<Tabs selectedKey={selected} onSelectionChange={setSelected}>
|
|
641
|
+
<TabList aria-label="Controlled tabs">
|
|
642
|
+
<Tab id="tab1">Tab 1</Tab>
|
|
643
|
+
<Tab id="tab2">Tab 2</Tab>
|
|
644
|
+
<Tab id="tab3">Tab 3</Tab>
|
|
645
|
+
</TabList>
|
|
646
|
+
<TabPanel id="tab1">
|
|
647
|
+
<div className="p-4">
|
|
648
|
+
<p>Selected via external button or tab click.</p>
|
|
649
|
+
</div>
|
|
650
|
+
</TabPanel>
|
|
651
|
+
<TabPanel id="tab2">
|
|
652
|
+
<div className="p-4">Content for Tab 2</div>
|
|
653
|
+
</TabPanel>
|
|
654
|
+
<TabPanel id="tab3">
|
|
655
|
+
<div className="p-4">Content for Tab 3</div>
|
|
656
|
+
</TabPanel>
|
|
657
|
+
</Tabs>
|
|
658
|
+
</div>
|
|
659
|
+
);
|
|
660
|
+
},
|
|
661
|
+
};
|