@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,748 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tooltip Component Stories
|
|
3
|
+
* Storybook stories for Tooltip component demonstrating all variants, placements, and states
|
|
4
|
+
*
|
|
5
|
+
* @see tooltip-prd.md (Component Requirements)
|
|
6
|
+
* @see plan.md Phase 4 (Documentation)
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Meta, StoryObj } from '@storybook/nextjs';
|
|
10
|
+
import { Tooltip, TooltipTrigger, TooltipContent, TooltipArrow } from './Tooltip';
|
|
11
|
+
import { Button } from '../Button';
|
|
12
|
+
import { Info, HelpCircle, Settings, AlertCircle } from 'lucide-react';
|
|
13
|
+
|
|
14
|
+
const meta = {
|
|
15
|
+
title: 'Elements/Tooltip',
|
|
16
|
+
component: Tooltip,
|
|
17
|
+
parameters: {
|
|
18
|
+
layout: 'centered',
|
|
19
|
+
docs: {
|
|
20
|
+
description: {
|
|
21
|
+
component: 'Accessible tooltip component with React Aria primitives, CVA variant styling, and WCAG 2.2 AAA compliance (7:1 contrast ratio). Supports configurable placement, delays, arrow indicator, and keyboard accessibility.',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
tags: ['autodocs'],
|
|
26
|
+
argTypes: {
|
|
27
|
+
delay: {
|
|
28
|
+
control: { type: 'number', min: 0, max: 2000 },
|
|
29
|
+
description: 'Delay before showing tooltip on hover (ms)',
|
|
30
|
+
table: {
|
|
31
|
+
defaultValue: { summary: '700' },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
closeDelay: {
|
|
35
|
+
control: { type: 'number', min: 0, max: 1000 },
|
|
36
|
+
description: 'Delay before hiding tooltip after mouse leave (ms)',
|
|
37
|
+
table: {
|
|
38
|
+
defaultValue: { summary: '300' },
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
trigger: {
|
|
42
|
+
control: 'select',
|
|
43
|
+
options: ['hover', 'focus'],
|
|
44
|
+
description: 'Trigger mode',
|
|
45
|
+
table: {
|
|
46
|
+
defaultValue: { summary: 'hover' },
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
isDisabled: {
|
|
50
|
+
control: 'boolean',
|
|
51
|
+
description: 'Disable tooltip without affecting trigger element',
|
|
52
|
+
table: {
|
|
53
|
+
defaultValue: { summary: 'false' },
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
defaultOpen: {
|
|
57
|
+
control: 'boolean',
|
|
58
|
+
description: 'Default open state for uncontrolled mode',
|
|
59
|
+
table: {
|
|
60
|
+
defaultValue: { summary: 'false' },
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
} satisfies Meta<typeof Tooltip>;
|
|
65
|
+
|
|
66
|
+
export default meta;
|
|
67
|
+
type Story = StoryObj<typeof meta>;
|
|
68
|
+
|
|
69
|
+
// Default story
|
|
70
|
+
export const Default: Story = {
|
|
71
|
+
render: (args) => (
|
|
72
|
+
<Tooltip {...args}>
|
|
73
|
+
<TooltipTrigger>
|
|
74
|
+
<Button variant="outline">Hover me</Button>
|
|
75
|
+
</TooltipTrigger>
|
|
76
|
+
<TooltipContent>
|
|
77
|
+
This is a tooltip
|
|
78
|
+
</TooltipContent>
|
|
79
|
+
</Tooltip>
|
|
80
|
+
),
|
|
81
|
+
args: {
|
|
82
|
+
delay: 300,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Placement stories
|
|
87
|
+
export const PlacementTop: Story = {
|
|
88
|
+
render: () => (
|
|
89
|
+
<Tooltip delay={0}>
|
|
90
|
+
<TooltipTrigger>
|
|
91
|
+
<Button variant="outline">Top</Button>
|
|
92
|
+
</TooltipTrigger>
|
|
93
|
+
<TooltipContent side="top">
|
|
94
|
+
Tooltip on top
|
|
95
|
+
</TooltipContent>
|
|
96
|
+
</Tooltip>
|
|
97
|
+
),
|
|
98
|
+
parameters: {
|
|
99
|
+
docs: {
|
|
100
|
+
description: {
|
|
101
|
+
story: 'Tooltip appears above the trigger element.',
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export const PlacementBottom: Story = {
|
|
108
|
+
render: () => (
|
|
109
|
+
<Tooltip delay={0}>
|
|
110
|
+
<TooltipTrigger>
|
|
111
|
+
<Button variant="outline">Bottom</Button>
|
|
112
|
+
</TooltipTrigger>
|
|
113
|
+
<TooltipContent side="bottom">
|
|
114
|
+
Tooltip on bottom
|
|
115
|
+
</TooltipContent>
|
|
116
|
+
</Tooltip>
|
|
117
|
+
),
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
export const PlacementLeft: Story = {
|
|
121
|
+
render: () => (
|
|
122
|
+
<Tooltip delay={0}>
|
|
123
|
+
<TooltipTrigger>
|
|
124
|
+
<Button variant="outline">Left</Button>
|
|
125
|
+
</TooltipTrigger>
|
|
126
|
+
<TooltipContent side="left">
|
|
127
|
+
Tooltip on left
|
|
128
|
+
</TooltipContent>
|
|
129
|
+
</Tooltip>
|
|
130
|
+
),
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const PlacementRight: Story = {
|
|
134
|
+
render: () => (
|
|
135
|
+
<Tooltip delay={0}>
|
|
136
|
+
<TooltipTrigger>
|
|
137
|
+
<Button variant="outline">Right</Button>
|
|
138
|
+
</TooltipTrigger>
|
|
139
|
+
<TooltipContent side="right">
|
|
140
|
+
Tooltip on right
|
|
141
|
+
</TooltipContent>
|
|
142
|
+
</Tooltip>
|
|
143
|
+
),
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export const AllPlacements: Story = {
|
|
147
|
+
render: () => (
|
|
148
|
+
<div className="grid grid-cols-3 gap-8 p-16">
|
|
149
|
+
<div />
|
|
150
|
+
<Tooltip delay={0} defaultOpen>
|
|
151
|
+
<TooltipTrigger>
|
|
152
|
+
<Button variant="outline">Top</Button>
|
|
153
|
+
</TooltipTrigger>
|
|
154
|
+
<TooltipContent side="top">Top tooltip</TooltipContent>
|
|
155
|
+
</Tooltip>
|
|
156
|
+
<div />
|
|
157
|
+
|
|
158
|
+
<Tooltip delay={0} defaultOpen>
|
|
159
|
+
<TooltipTrigger>
|
|
160
|
+
<Button variant="outline">Left</Button>
|
|
161
|
+
</TooltipTrigger>
|
|
162
|
+
<TooltipContent side="left">Left tooltip</TooltipContent>
|
|
163
|
+
</Tooltip>
|
|
164
|
+
<div />
|
|
165
|
+
<Tooltip delay={0} defaultOpen>
|
|
166
|
+
<TooltipTrigger>
|
|
167
|
+
<Button variant="outline">Right</Button>
|
|
168
|
+
</TooltipTrigger>
|
|
169
|
+
<TooltipContent side="right">Right tooltip</TooltipContent>
|
|
170
|
+
</Tooltip>
|
|
171
|
+
|
|
172
|
+
<div />
|
|
173
|
+
<Tooltip delay={0} defaultOpen>
|
|
174
|
+
<TooltipTrigger>
|
|
175
|
+
<Button variant="outline">Bottom</Button>
|
|
176
|
+
</TooltipTrigger>
|
|
177
|
+
<TooltipContent side="bottom">Bottom tooltip</TooltipContent>
|
|
178
|
+
</Tooltip>
|
|
179
|
+
<div />
|
|
180
|
+
</div>
|
|
181
|
+
),
|
|
182
|
+
parameters: {
|
|
183
|
+
docs: {
|
|
184
|
+
description: {
|
|
185
|
+
story: 'All four placement options displayed together.',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
// Arrow stories
|
|
192
|
+
export const WithArrow: Story = {
|
|
193
|
+
render: () => (
|
|
194
|
+
<Tooltip delay={0}>
|
|
195
|
+
<TooltipTrigger>
|
|
196
|
+
<Button variant="outline">With Arrow</Button>
|
|
197
|
+
</TooltipTrigger>
|
|
198
|
+
<TooltipContent showArrow>
|
|
199
|
+
Tooltip with arrow indicator
|
|
200
|
+
</TooltipContent>
|
|
201
|
+
</Tooltip>
|
|
202
|
+
),
|
|
203
|
+
parameters: {
|
|
204
|
+
docs: {
|
|
205
|
+
description: {
|
|
206
|
+
story: 'Tooltip with arrow pointing to trigger element.',
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
export const WithoutArrow: Story = {
|
|
213
|
+
render: () => (
|
|
214
|
+
<Tooltip delay={0}>
|
|
215
|
+
<TooltipTrigger>
|
|
216
|
+
<Button variant="outline">Without Arrow</Button>
|
|
217
|
+
</TooltipTrigger>
|
|
218
|
+
<TooltipContent showArrow={false}>
|
|
219
|
+
Tooltip without arrow (default)
|
|
220
|
+
</TooltipContent>
|
|
221
|
+
</Tooltip>
|
|
222
|
+
),
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
export const ArrowPlacements: Story = {
|
|
226
|
+
render: () => (
|
|
227
|
+
<div className="grid grid-cols-3 gap-8 p-16">
|
|
228
|
+
<div />
|
|
229
|
+
<Tooltip delay={0} defaultOpen>
|
|
230
|
+
<TooltipTrigger>
|
|
231
|
+
<Button variant="outline">Top</Button>
|
|
232
|
+
</TooltipTrigger>
|
|
233
|
+
<TooltipContent side="top" showArrow>Arrow top</TooltipContent>
|
|
234
|
+
</Tooltip>
|
|
235
|
+
<div />
|
|
236
|
+
|
|
237
|
+
<Tooltip delay={0} defaultOpen>
|
|
238
|
+
<TooltipTrigger>
|
|
239
|
+
<Button variant="outline">Left</Button>
|
|
240
|
+
</TooltipTrigger>
|
|
241
|
+
<TooltipContent side="left" showArrow>Arrow left</TooltipContent>
|
|
242
|
+
</Tooltip>
|
|
243
|
+
<div />
|
|
244
|
+
<Tooltip delay={0} defaultOpen>
|
|
245
|
+
<TooltipTrigger>
|
|
246
|
+
<Button variant="outline">Right</Button>
|
|
247
|
+
</TooltipTrigger>
|
|
248
|
+
<TooltipContent side="right" showArrow>Arrow right</TooltipContent>
|
|
249
|
+
</Tooltip>
|
|
250
|
+
|
|
251
|
+
<div />
|
|
252
|
+
<Tooltip delay={0} defaultOpen>
|
|
253
|
+
<TooltipTrigger>
|
|
254
|
+
<Button variant="outline">Bottom</Button>
|
|
255
|
+
</TooltipTrigger>
|
|
256
|
+
<TooltipContent side="bottom" showArrow>Arrow bottom</TooltipContent>
|
|
257
|
+
</Tooltip>
|
|
258
|
+
<div />
|
|
259
|
+
</div>
|
|
260
|
+
),
|
|
261
|
+
parameters: {
|
|
262
|
+
docs: {
|
|
263
|
+
description: {
|
|
264
|
+
story: 'Arrows automatically rotate based on placement.',
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export const CustomArrowSize: Story = {
|
|
271
|
+
render: () => (
|
|
272
|
+
<div className="flex gap-8">
|
|
273
|
+
<Tooltip delay={0}>
|
|
274
|
+
<TooltipTrigger>
|
|
275
|
+
<Button variant="outline">Small Arrow (4px)</Button>
|
|
276
|
+
</TooltipTrigger>
|
|
277
|
+
<TooltipContent showArrow arrowSize={4}>Small arrow</TooltipContent>
|
|
278
|
+
</Tooltip>
|
|
279
|
+
<Tooltip delay={0}>
|
|
280
|
+
<TooltipTrigger>
|
|
281
|
+
<Button variant="outline">Default (8px)</Button>
|
|
282
|
+
</TooltipTrigger>
|
|
283
|
+
<TooltipContent showArrow arrowSize={8}>Default arrow</TooltipContent>
|
|
284
|
+
</Tooltip>
|
|
285
|
+
<Tooltip delay={0}>
|
|
286
|
+
<TooltipTrigger>
|
|
287
|
+
<Button variant="outline">Large Arrow (12px)</Button>
|
|
288
|
+
</TooltipTrigger>
|
|
289
|
+
<TooltipContent showArrow arrowSize={12}>Large arrow</TooltipContent>
|
|
290
|
+
</Tooltip>
|
|
291
|
+
</div>
|
|
292
|
+
),
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
// Delay stories
|
|
296
|
+
export const CustomDelay: Story = {
|
|
297
|
+
render: () => (
|
|
298
|
+
<div className="flex gap-4">
|
|
299
|
+
<Tooltip delay={0}>
|
|
300
|
+
<TooltipTrigger>
|
|
301
|
+
<Button variant="outline">Instant (0ms)</Button>
|
|
302
|
+
</TooltipTrigger>
|
|
303
|
+
<TooltipContent>No delay</TooltipContent>
|
|
304
|
+
</Tooltip>
|
|
305
|
+
<Tooltip delay={700}>
|
|
306
|
+
<TooltipTrigger>
|
|
307
|
+
<Button variant="outline">Default (700ms)</Button>
|
|
308
|
+
</TooltipTrigger>
|
|
309
|
+
<TooltipContent>Default delay</TooltipContent>
|
|
310
|
+
</Tooltip>
|
|
311
|
+
<Tooltip delay={1500}>
|
|
312
|
+
<TooltipTrigger>
|
|
313
|
+
<Button variant="outline">Long (1500ms)</Button>
|
|
314
|
+
</TooltipTrigger>
|
|
315
|
+
<TooltipContent>Long delay</TooltipContent>
|
|
316
|
+
</Tooltip>
|
|
317
|
+
</div>
|
|
318
|
+
),
|
|
319
|
+
parameters: {
|
|
320
|
+
docs: {
|
|
321
|
+
description: {
|
|
322
|
+
story: 'Different delay values for showing tooltip.',
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
// Trigger mode stories
|
|
329
|
+
export const FocusTrigger: Story = {
|
|
330
|
+
render: () => (
|
|
331
|
+
<Tooltip trigger="focus">
|
|
332
|
+
<TooltipTrigger>
|
|
333
|
+
<Button variant="outline">Tab to focus me</Button>
|
|
334
|
+
</TooltipTrigger>
|
|
335
|
+
<TooltipContent>
|
|
336
|
+
Shown only on keyboard focus
|
|
337
|
+
</TooltipContent>
|
|
338
|
+
</Tooltip>
|
|
339
|
+
),
|
|
340
|
+
parameters: {
|
|
341
|
+
docs: {
|
|
342
|
+
description: {
|
|
343
|
+
story: 'Focus-only trigger mode. Tooltip shows on keyboard focus but not hover. Ideal for keyboard-only users.',
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
// Non-button trigger stories
|
|
350
|
+
export const IconTrigger: Story = {
|
|
351
|
+
render: () => (
|
|
352
|
+
<div className="flex items-center gap-2">
|
|
353
|
+
<span>More information</span>
|
|
354
|
+
<Tooltip delay={0}>
|
|
355
|
+
<TooltipTrigger>
|
|
356
|
+
<span tabIndex={0} className="inline-flex cursor-help" data-testid="icon-trigger">
|
|
357
|
+
<Info className="h-4 w-4 text-[var(--muted-foreground)]" />
|
|
358
|
+
</span>
|
|
359
|
+
</TooltipTrigger>
|
|
360
|
+
<TooltipContent>
|
|
361
|
+
This is additional context about the feature.
|
|
362
|
+
</TooltipContent>
|
|
363
|
+
</Tooltip>
|
|
364
|
+
</div>
|
|
365
|
+
),
|
|
366
|
+
parameters: {
|
|
367
|
+
docs: {
|
|
368
|
+
description: {
|
|
369
|
+
story: 'Tooltip triggered by an info icon. Non-button triggers must be focusable (tabIndex=0).',
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
export const TextTrigger: Story = {
|
|
376
|
+
render: () => (
|
|
377
|
+
<p className="max-w-md">
|
|
378
|
+
The candidate has excellent{' '}
|
|
379
|
+
<Tooltip delay={0}>
|
|
380
|
+
<TooltipTrigger>
|
|
381
|
+
<span tabIndex={0} className="underline decoration-dotted cursor-help" data-testid="text-trigger">
|
|
382
|
+
technical skills
|
|
383
|
+
</span>
|
|
384
|
+
</TooltipTrigger>
|
|
385
|
+
<TooltipContent>
|
|
386
|
+
Includes proficiency in React, TypeScript, and Node.js
|
|
387
|
+
</TooltipContent>
|
|
388
|
+
</Tooltip>
|
|
389
|
+
{' '}and strong communication abilities.
|
|
390
|
+
</p>
|
|
391
|
+
),
|
|
392
|
+
parameters: {
|
|
393
|
+
docs: {
|
|
394
|
+
description: {
|
|
395
|
+
story: 'Tooltip on inline text. Useful for providing definitions or additional context.',
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
export const ButtonTrigger: Story = {
|
|
402
|
+
render: () => (
|
|
403
|
+
<Tooltip delay={0}>
|
|
404
|
+
<TooltipTrigger>
|
|
405
|
+
<Button variant="outline" size="icon" aria-label="Settings">
|
|
406
|
+
<Settings className="h-4 w-4" />
|
|
407
|
+
</Button>
|
|
408
|
+
</TooltipTrigger>
|
|
409
|
+
<TooltipContent>
|
|
410
|
+
Open settings
|
|
411
|
+
</TooltipContent>
|
|
412
|
+
</Tooltip>
|
|
413
|
+
),
|
|
414
|
+
};
|
|
415
|
+
|
|
416
|
+
// Content variants
|
|
417
|
+
export const ShortContent: Story = {
|
|
418
|
+
render: () => (
|
|
419
|
+
<Tooltip delay={0}>
|
|
420
|
+
<TooltipTrigger>
|
|
421
|
+
<Button variant="outline">Short</Button>
|
|
422
|
+
</TooltipTrigger>
|
|
423
|
+
<TooltipContent>Hi!</TooltipContent>
|
|
424
|
+
</Tooltip>
|
|
425
|
+
),
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
export const LongContent: Story = {
|
|
429
|
+
render: () => (
|
|
430
|
+
<Tooltip delay={0}>
|
|
431
|
+
<TooltipTrigger>
|
|
432
|
+
<Button variant="outline">Long content</Button>
|
|
433
|
+
</TooltipTrigger>
|
|
434
|
+
<TooltipContent className="max-w-xs">
|
|
435
|
+
This is a longer tooltip with more detailed information that wraps to multiple lines.
|
|
436
|
+
It provides additional context about the feature or action.
|
|
437
|
+
</TooltipContent>
|
|
438
|
+
</Tooltip>
|
|
439
|
+
),
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
export const Multiline: Story = {
|
|
443
|
+
render: () => (
|
|
444
|
+
<Tooltip delay={0}>
|
|
445
|
+
<TooltipTrigger>
|
|
446
|
+
<Button variant="outline">Multiline</Button>
|
|
447
|
+
</TooltipTrigger>
|
|
448
|
+
<TooltipContent className="max-w-xs">
|
|
449
|
+
<strong>Keyboard Shortcut</strong>
|
|
450
|
+
<br />
|
|
451
|
+
Press ⌘S to save
|
|
452
|
+
<br />
|
|
453
|
+
Press ⌘Z to undo
|
|
454
|
+
</TooltipContent>
|
|
455
|
+
</Tooltip>
|
|
456
|
+
),
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
// Disabled state
|
|
460
|
+
export const Disabled: Story = {
|
|
461
|
+
render: () => (
|
|
462
|
+
<Tooltip isDisabled delay={0}>
|
|
463
|
+
<TooltipTrigger>
|
|
464
|
+
<Button variant="outline">Tooltip disabled</Button>
|
|
465
|
+
</TooltipTrigger>
|
|
466
|
+
<TooltipContent>
|
|
467
|
+
You won't see this
|
|
468
|
+
</TooltipContent>
|
|
469
|
+
</Tooltip>
|
|
470
|
+
),
|
|
471
|
+
parameters: {
|
|
472
|
+
docs: {
|
|
473
|
+
description: {
|
|
474
|
+
story: 'Tooltip can be disabled while keeping the trigger element interactive.',
|
|
475
|
+
},
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
// Controlled state
|
|
481
|
+
export const Controlled: Story = {
|
|
482
|
+
render: function ControlledStory() {
|
|
483
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
484
|
+
return (
|
|
485
|
+
<div className="flex flex-col items-center gap-4">
|
|
486
|
+
<Button onPress={() => setIsOpen(!isOpen)}>
|
|
487
|
+
Toggle Tooltip: {isOpen ? 'Open' : 'Closed'}
|
|
488
|
+
</Button>
|
|
489
|
+
<Tooltip isOpen={isOpen} onOpenChange={setIsOpen}>
|
|
490
|
+
<TooltipTrigger>
|
|
491
|
+
<Button variant="outline">Controlled trigger</Button>
|
|
492
|
+
</TooltipTrigger>
|
|
493
|
+
<TooltipContent>
|
|
494
|
+
Controlled tooltip
|
|
495
|
+
</TooltipContent>
|
|
496
|
+
</Tooltip>
|
|
497
|
+
</div>
|
|
498
|
+
);
|
|
499
|
+
},
|
|
500
|
+
parameters: {
|
|
501
|
+
docs: {
|
|
502
|
+
description: {
|
|
503
|
+
story: 'Tooltip state can be controlled externally using isOpen and onOpenChange props.',
|
|
504
|
+
},
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
// Import React for controlled story
|
|
510
|
+
import * as React from 'react';
|
|
511
|
+
|
|
512
|
+
// Offset stories
|
|
513
|
+
export const CustomOffset: Story = {
|
|
514
|
+
render: () => (
|
|
515
|
+
<div className="flex gap-8">
|
|
516
|
+
<Tooltip delay={0}>
|
|
517
|
+
<TooltipTrigger>
|
|
518
|
+
<Button variant="outline">Default offset (4px)</Button>
|
|
519
|
+
</TooltipTrigger>
|
|
520
|
+
<TooltipContent sideOffset={4}>Default offset</TooltipContent>
|
|
521
|
+
</Tooltip>
|
|
522
|
+
<Tooltip delay={0}>
|
|
523
|
+
<TooltipTrigger>
|
|
524
|
+
<Button variant="outline">Large offset (16px)</Button>
|
|
525
|
+
</TooltipTrigger>
|
|
526
|
+
<TooltipContent sideOffset={16}>Large offset</TooltipContent>
|
|
527
|
+
</Tooltip>
|
|
528
|
+
</div>
|
|
529
|
+
),
|
|
530
|
+
};
|
|
531
|
+
|
|
532
|
+
// Theme stories
|
|
533
|
+
export const AllThemes: Story = {
|
|
534
|
+
render: () => (
|
|
535
|
+
<div className="flex flex-col gap-8">
|
|
536
|
+
<div className="p-4 bg-[var(--background)] text-[var(--foreground)]">
|
|
537
|
+
<h4 className="mb-2 text-sm font-medium">Current Theme</h4>
|
|
538
|
+
<Tooltip delay={0} defaultOpen>
|
|
539
|
+
<TooltipTrigger>
|
|
540
|
+
<Button variant="outline">Themed tooltip</Button>
|
|
541
|
+
</TooltipTrigger>
|
|
542
|
+
<TooltipContent showArrow>
|
|
543
|
+
Inverted colors for high contrast
|
|
544
|
+
</TooltipContent>
|
|
545
|
+
</Tooltip>
|
|
546
|
+
</div>
|
|
547
|
+
</div>
|
|
548
|
+
),
|
|
549
|
+
parameters: {
|
|
550
|
+
docs: {
|
|
551
|
+
description: {
|
|
552
|
+
story: 'Tooltip uses inverted foreground/background colors to achieve WCAG 2.2 AAA 7:1 contrast ratio in all themes.',
|
|
553
|
+
},
|
|
554
|
+
},
|
|
555
|
+
},
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
// Accessibility stories
|
|
559
|
+
export const FocusState: Story = {
|
|
560
|
+
render: () => (
|
|
561
|
+
<Tooltip delay={0}>
|
|
562
|
+
<TooltipTrigger>
|
|
563
|
+
<Button variant="outline">Tab to me</Button>
|
|
564
|
+
</TooltipTrigger>
|
|
565
|
+
<TooltipContent>
|
|
566
|
+
Appears on focus
|
|
567
|
+
</TooltipContent>
|
|
568
|
+
</Tooltip>
|
|
569
|
+
),
|
|
570
|
+
parameters: {
|
|
571
|
+
docs: {
|
|
572
|
+
description: {
|
|
573
|
+
story: 'Press Tab to focus the button. Tooltip appears on keyboard focus for accessibility.',
|
|
574
|
+
},
|
|
575
|
+
},
|
|
576
|
+
},
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
export const EscapeToClose: Story = {
|
|
580
|
+
render: () => (
|
|
581
|
+
<Tooltip delay={0}>
|
|
582
|
+
<TooltipTrigger>
|
|
583
|
+
<Button variant="outline">Hover, then press Escape</Button>
|
|
584
|
+
</TooltipTrigger>
|
|
585
|
+
<TooltipContent>
|
|
586
|
+
Press Escape to dismiss
|
|
587
|
+
</TooltipContent>
|
|
588
|
+
</Tooltip>
|
|
589
|
+
),
|
|
590
|
+
parameters: {
|
|
591
|
+
docs: {
|
|
592
|
+
description: {
|
|
593
|
+
story: 'Hover to show tooltip, then press Escape to dismiss it.',
|
|
594
|
+
},
|
|
595
|
+
},
|
|
596
|
+
},
|
|
597
|
+
};
|
|
598
|
+
|
|
599
|
+
// Animation story
|
|
600
|
+
export const Animation: Story = {
|
|
601
|
+
render: () => (
|
|
602
|
+
<Tooltip delay={0}>
|
|
603
|
+
<TooltipTrigger>
|
|
604
|
+
<Button variant="outline">Hover for animation</Button>
|
|
605
|
+
</TooltipTrigger>
|
|
606
|
+
<TooltipContent>
|
|
607
|
+
Smooth fade and slide animation
|
|
608
|
+
</TooltipContent>
|
|
609
|
+
</Tooltip>
|
|
610
|
+
),
|
|
611
|
+
parameters: {
|
|
612
|
+
docs: {
|
|
613
|
+
description: {
|
|
614
|
+
story: 'Tooltip has smooth entry/exit animations. Uses motion-safe for users who prefer reduced motion.',
|
|
615
|
+
},
|
|
616
|
+
},
|
|
617
|
+
},
|
|
618
|
+
};
|
|
619
|
+
|
|
620
|
+
// Edge positioning
|
|
621
|
+
export const EdgePositioning: Story = {
|
|
622
|
+
render: () => (
|
|
623
|
+
<div className="flex justify-between w-full p-4">
|
|
624
|
+
<Tooltip delay={0}>
|
|
625
|
+
<TooltipTrigger>
|
|
626
|
+
<Button variant="outline">Left edge</Button>
|
|
627
|
+
</TooltipTrigger>
|
|
628
|
+
<TooltipContent side="right">
|
|
629
|
+
Auto-flips to stay in viewport
|
|
630
|
+
</TooltipContent>
|
|
631
|
+
</Tooltip>
|
|
632
|
+
<Tooltip delay={0}>
|
|
633
|
+
<TooltipTrigger>
|
|
634
|
+
<Button variant="outline">Right edge</Button>
|
|
635
|
+
</TooltipTrigger>
|
|
636
|
+
<TooltipContent side="left">
|
|
637
|
+
Auto-flips to stay in viewport
|
|
638
|
+
</TooltipContent>
|
|
639
|
+
</Tooltip>
|
|
640
|
+
</div>
|
|
641
|
+
),
|
|
642
|
+
parameters: {
|
|
643
|
+
layout: 'fullscreen',
|
|
644
|
+
docs: {
|
|
645
|
+
description: {
|
|
646
|
+
story: 'Tooltip automatically flips placement when constrained by viewport edges.',
|
|
647
|
+
},
|
|
648
|
+
},
|
|
649
|
+
},
|
|
650
|
+
};
|
|
651
|
+
|
|
652
|
+
// Real-world examples
|
|
653
|
+
export const IconButton: Story = {
|
|
654
|
+
render: () => (
|
|
655
|
+
<div className="flex gap-2">
|
|
656
|
+
<Tooltip delay={300}>
|
|
657
|
+
<TooltipTrigger>
|
|
658
|
+
<Button variant="ghost" size="icon" aria-label="Help">
|
|
659
|
+
<HelpCircle className="h-4 w-4" />
|
|
660
|
+
</Button>
|
|
661
|
+
</TooltipTrigger>
|
|
662
|
+
<TooltipContent>Get help</TooltipContent>
|
|
663
|
+
</Tooltip>
|
|
664
|
+
<Tooltip delay={300}>
|
|
665
|
+
<TooltipTrigger>
|
|
666
|
+
<Button variant="ghost" size="icon" aria-label="Settings">
|
|
667
|
+
<Settings className="h-4 w-4" />
|
|
668
|
+
</Button>
|
|
669
|
+
</TooltipTrigger>
|
|
670
|
+
<TooltipContent>Open settings</TooltipContent>
|
|
671
|
+
</Tooltip>
|
|
672
|
+
<Tooltip delay={300}>
|
|
673
|
+
<TooltipTrigger>
|
|
674
|
+
<Button variant="ghost" size="icon" aria-label="Warnings">
|
|
675
|
+
<AlertCircle className="h-4 w-4" />
|
|
676
|
+
</Button>
|
|
677
|
+
</TooltipTrigger>
|
|
678
|
+
<TooltipContent>View warnings</TooltipContent>
|
|
679
|
+
</Tooltip>
|
|
680
|
+
</div>
|
|
681
|
+
),
|
|
682
|
+
parameters: {
|
|
683
|
+
docs: {
|
|
684
|
+
description: {
|
|
685
|
+
story: 'Tooltips on icon buttons provide essential context for unlabeled buttons.',
|
|
686
|
+
},
|
|
687
|
+
},
|
|
688
|
+
},
|
|
689
|
+
};
|
|
690
|
+
|
|
691
|
+
export const FormFieldHelp: Story = {
|
|
692
|
+
render: () => (
|
|
693
|
+
<div className="w-80">
|
|
694
|
+
<label className="flex items-center gap-2 text-sm font-medium mb-2">
|
|
695
|
+
Email Address
|
|
696
|
+
<Tooltip delay={0}>
|
|
697
|
+
<TooltipTrigger>
|
|
698
|
+
<span tabIndex={0} className="inline-flex cursor-help">
|
|
699
|
+
<Info className="h-4 w-4 text-[var(--muted-foreground)]" />
|
|
700
|
+
</span>
|
|
701
|
+
</TooltipTrigger>
|
|
702
|
+
<TooltipContent className="max-w-xs">
|
|
703
|
+
We'll use this email for account notifications and password recovery.
|
|
704
|
+
Your email will never be shared.
|
|
705
|
+
</TooltipContent>
|
|
706
|
+
</Tooltip>
|
|
707
|
+
</label>
|
|
708
|
+
<input
|
|
709
|
+
type="email"
|
|
710
|
+
placeholder="you@example.com"
|
|
711
|
+
className="w-full rounded-md border border-[var(--border)] bg-[var(--background)] px-3 py-2"
|
|
712
|
+
/>
|
|
713
|
+
</div>
|
|
714
|
+
),
|
|
715
|
+
parameters: {
|
|
716
|
+
docs: {
|
|
717
|
+
description: {
|
|
718
|
+
story: 'Tooltip providing help text for a form field.',
|
|
719
|
+
},
|
|
720
|
+
},
|
|
721
|
+
},
|
|
722
|
+
};
|
|
723
|
+
|
|
724
|
+
export const ContrastCheck: Story = {
|
|
725
|
+
render: () => (
|
|
726
|
+
<div className="flex flex-col gap-4">
|
|
727
|
+
<Tooltip delay={0} defaultOpen>
|
|
728
|
+
<TooltipTrigger>
|
|
729
|
+
<Button variant="outline">WCAG AAA Contrast</Button>
|
|
730
|
+
</TooltipTrigger>
|
|
731
|
+
<TooltipContent>
|
|
732
|
+
7:1 contrast ratio achieved via inverted colors
|
|
733
|
+
</TooltipContent>
|
|
734
|
+
</Tooltip>
|
|
735
|
+
<p className="text-xs text-[var(--muted-foreground)] max-w-sm">
|
|
736
|
+
Tooltip uses bg-[var(--foreground)] and text-[var(--background)] to achieve
|
|
737
|
+
WCAG 2.2 AAA 7:1 contrast ratio in all themes.
|
|
738
|
+
</p>
|
|
739
|
+
</div>
|
|
740
|
+
),
|
|
741
|
+
parameters: {
|
|
742
|
+
docs: {
|
|
743
|
+
description: {
|
|
744
|
+
story: 'Demonstrates the high contrast colors used for WCAG AAA compliance.',
|
|
745
|
+
},
|
|
746
|
+
},
|
|
747
|
+
},
|
|
748
|
+
};
|