@uselets/ui 1.18.5 → 1.18.7
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/README.md +2 -2
- package/dist/{chart-CVe5-EWS.d.ts → chart-B_6nC_ih.d.ts} +2 -2
- package/dist/cli/uselets.mjs.map +1 -1
- package/dist/components/accordion.d.ts +15 -2
- package/dist/components/accordion.js +2 -1
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +34 -2
- package/dist/components/alert-dialog.js +2 -1
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +18 -2
- package/dist/components/alert.js +2 -1
- package/dist/components/alert.js.map +1 -0
- package/dist/components/anchor.d.ts +15 -2
- package/dist/components/anchor.js +2 -1
- package/dist/components/anchor.js.map +1 -0
- package/dist/components/area-chart.d.ts +40 -2
- package/dist/components/area-chart.js +2 -1
- package/dist/components/area-chart.js.map +1 -0
- package/dist/components/avatar.d.ts +21 -2
- package/dist/components/avatar.js +2 -1
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +16 -2
- package/dist/components/badge.js +2 -1
- package/dist/components/badge.js.map +1 -0
- package/dist/components/bar-chart.d.ts +42 -2
- package/dist/components/bar-chart.js +2 -1
- package/dist/components/bar-chart.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +22 -2
- package/dist/components/breadcrumb.js +2 -1
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.d.ts +18 -2
- package/dist/components/button-group.js +2 -1
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.d.ts +17 -2
- package/dist/components/button.js +2 -1
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +17 -2
- package/dist/components/calendar.js +2 -1
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +22 -2
- package/dist/components/card.js +2 -1
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +43 -2
- package/dist/components/carousel.js +2 -1
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/center.d.ts +13 -2
- package/dist/components/center.js +2 -1
- package/dist/components/center.js.map +1 -0
- package/dist/components/chart.d.ts +1 -1
- package/dist/components/chart.js +8 -1
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +21 -2
- package/dist/components/checkbox.js +2 -1
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/code.d.ts +8 -2
- package/dist/components/code.js +2 -1
- package/dist/components/code.js.map +1 -0
- package/dist/components/collapsible.d.ts +12 -2
- package/dist/components/collapsible.js +2 -1
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +51 -2
- package/dist/components/combobox.js +2 -1
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +31 -2
- package/dist/components/command.js +2 -1
- package/dist/components/command.js.map +1 -0
- package/dist/components/container.d.ts +12 -2
- package/dist/components/container.js +2 -1
- package/dist/components/container.js.map +1 -0
- package/dist/components/data-table.d.ts +1 -1
- package/dist/components/data-table.js +2 -1
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/date-range-picker.d.ts +55 -3
- package/dist/components/date-range-picker.js +2 -1
- package/dist/components/date-range-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +42 -2
- package/dist/components/dialog.js +2 -1
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/donut-chart.d.ts +13 -2
- package/dist/components/donut-chart.js +2 -1
- package/dist/components/donut-chart.js.map +1 -0
- package/dist/components/drawer.d.ts +43 -2
- package/dist/components/drawer.js +2 -1
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +48 -2
- package/dist/components/dropdown-menu.js +2 -1
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/dropzone.d.ts +102 -2
- package/dist/components/dropzone.js +2 -1
- package/dist/components/dropzone.js.map +1 -0
- package/dist/components/empty.d.ts +21 -2
- package/dist/components/empty.js +2 -1
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.d.ts +39 -2
- package/dist/components/field.js +2 -1
- package/dist/components/field.js.map +1 -0
- package/dist/components/flex.d.ts +16 -2
- package/dist/components/flex.js +2 -1
- package/dist/components/flex.js.map +1 -0
- package/dist/components/grid.d.ts +20 -2
- package/dist/components/grid.js +2 -1
- package/dist/components/grid.js.map +1 -0
- package/dist/components/group.d.ts +15 -2
- package/dist/components/group.js +2 -1
- package/dist/components/group.js.map +1 -0
- package/dist/components/heading.d.ts +14 -2
- package/dist/components/heading.js +2 -1
- package/dist/components/heading.js.map +1 -0
- package/dist/components/hover-card.d.ts +13 -2
- package/dist/components/hover-card.js +2 -1
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.d.ts +26 -2
- package/dist/components/input-group.js +2 -1
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input-otp.d.ts +19 -2
- package/dist/components/input-otp.js +2 -1
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +8 -2
- package/dist/components/input.js +2 -1
- package/dist/components/input.js.map +1 -0
- package/dist/components/kbd.d.ts +10 -2
- package/dist/components/kbd.js +2 -1
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +9 -2
- package/dist/components/label.js +2 -1
- package/dist/components/label.js.map +1 -0
- package/dist/components/list.d.ts +25 -2
- package/dist/components/list.js +2 -1
- package/dist/components/list.js.map +1 -0
- package/dist/components/logo.d.ts +69 -2
- package/dist/components/logo.js +1 -1
- package/dist/components/marker.d.ts +18 -2
- package/dist/components/marker.js +2 -1
- package/dist/components/marker.js.map +1 -0
- package/dist/components/mask-input.d.ts +16 -2
- package/dist/components/mask-input.js +2 -1
- package/dist/components/mask-input.js.map +1 -0
- package/dist/components/native-select.d.ts +14 -2
- package/dist/components/native-select.js +2 -1
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +26 -2
- package/dist/components/navigation-menu.js +2 -1
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/number-field.d.ts +35 -2
- package/dist/components/number-field.js +2 -1
- package/dist/components/number-field.js.map +1 -0
- package/dist/components/pagination.d.ts +27 -2
- package/dist/components/pagination.js +2 -1
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/phone-input.d.ts +13 -2
- package/dist/components/phone-input.js +2 -1
- package/dist/components/phone-input.js.map +1 -0
- package/dist/components/pie-chart.d.ts +42 -2
- package/dist/components/pie-chart.js +2 -1
- package/dist/components/pie-chart.js.map +1 -0
- package/dist/components/popover.d.ts +21 -2
- package/dist/components/popover.js +2 -1
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +14 -2
- package/dist/components/progress.js +2 -1
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +25 -2
- package/dist/components/radio-group.js +2 -1
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.d.ts +14 -2
- package/dist/components/resizable.js +2 -1
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/ring-progress.d.ts +17 -2
- package/dist/components/ring-progress.js +2 -1
- package/dist/components/ring-progress.js.map +1 -0
- package/dist/components/scroll-area.d.ts +11 -2
- package/dist/components/scroll-area.js +2 -1
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +29 -2
- package/dist/components/select.js +2 -1
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +9 -2
- package/dist/components/separator.js +2 -1
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sidebar.d.ts +96 -2
- package/dist/components/sidebar.js +2 -1
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/simple-grid.d.ts +14 -2
- package/dist/components/simple-grid.js +2 -1
- package/dist/components/simple-grid.js.map +1 -0
- package/dist/components/skeleton.d.ts +10 -2
- package/dist/components/skeleton.js +2 -1
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +9 -2
- package/dist/components/slider.js +2 -1
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.d.ts +8 -2
- package/dist/components/sonner.js +2 -1
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/spinner.d.ts +12 -2
- package/dist/components/spinner.js +2 -1
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/stack.d.ts +14 -2
- package/dist/components/stack.js +2 -1
- package/dist/components/stack.js.map +1 -0
- package/dist/components/stepper.d.ts +71 -2
- package/dist/components/stepper.js +2 -1
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/switch.d.ts +17 -2
- package/dist/components/switch.js +2 -1
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +33 -2
- package/dist/components/table.js +2 -1
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +21 -2
- package/dist/components/tabs.js +2 -1
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text.d.ts +14 -2
- package/dist/components/text.js +2 -1
- package/dist/components/text.js.map +1 -0
- package/dist/components/textarea.d.ts +8 -2
- package/dist/components/textarea.js +2 -1
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/theme.d.ts +21 -2
- package/dist/components/theme.js +2 -1
- package/dist/components/theme.js.map +1 -0
- package/dist/components/timeline.d.ts +61 -2
- package/dist/components/timeline.js +2 -1
- package/dist/components/timeline.js.map +1 -0
- package/dist/components/toggle-group.d.ts +16 -2
- package/dist/components/toggle-group.js +2 -1
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +15 -2
- package/dist/components/toggle.js +2 -1
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.d.ts +21 -2
- package/dist/components/tooltip.js +2 -1
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/unstyled-button.d.ts +10 -2
- package/dist/components/unstyled-button.js +2 -1
- package/dist/components/unstyled-button.js.map +1 -0
- package/dist/components/visibility.d.ts +17 -2
- package/dist/components/visibility.js +2 -1
- package/dist/components/visibility.js.map +1 -0
- package/dist/{data-table-DXNWHN9R.d.ts → data-table-DWWVGWbU.d.ts} +4 -4
- package/dist/hooks/use-breakpoint-value.d.ts +7 -2
- package/dist/hooks/use-breakpoint-value.js +2 -1
- package/dist/hooks/use-breakpoint-value.js.map +1 -0
- package/dist/hooks/use-breakpoint.d.ts +7 -2
- package/dist/hooks/use-breakpoint.js +2 -1
- package/dist/hooks/use-breakpoint.js.map +1 -0
- package/dist/hooks/use-disclosure.d.ts +21 -2
- package/dist/hooks/use-disclosure.js +2 -1
- package/dist/hooks/use-disclosure.js.map +1 -0
- package/dist/hooks/use-document-visibility.d.ts +5 -2
- package/dist/hooks/use-document-visibility.js +2 -1
- package/dist/hooks/use-document-visibility.js.map +1 -0
- package/dist/hooks/use-hotkeys.d.ts +1 -1
- package/dist/hooks/use-hotkeys.js +1 -1
- package/dist/hooks/use-idle.d.ts +12 -2
- package/dist/hooks/use-idle.js +2 -1
- package/dist/hooks/use-idle.js.map +1 -0
- package/dist/hooks/use-interval.d.ts +23 -2
- package/dist/hooks/use-interval.js +2 -1
- package/dist/hooks/use-interval.js.map +1 -0
- package/dist/hooks/use-local-storage.d.ts +15 -2
- package/dist/hooks/use-local-storage.js +2 -1
- package/dist/hooks/use-local-storage.js.map +1 -0
- package/dist/hooks/use-mask.d.ts +8 -2
- package/dist/hooks/use-mask.js +2 -1
- package/dist/hooks/use-mask.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +5 -2
- package/dist/hooks/use-mobile.js +2 -1
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +96 -96
- package/dist/index.js +1 -1
- package/dist/lib/badge.d.ts +18 -2
- package/dist/lib/badge.js +2 -1
- package/dist/lib/badge.js.map +1 -0
- package/dist/lib/button.d.ts +18 -2
- package/dist/lib/button.js +2 -1
- package/dist/lib/button.js.map +1 -0
- package/dist/lib/color.d.ts +18 -2
- package/dist/lib/color.js +2 -1
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/compose-refs.d.ts +7 -2
- package/dist/lib/compose-refs.js +2 -1
- package/dist/lib/compose-refs.js.map +1 -0
- package/dist/lib/progress.d.ts +18 -2
- package/dist/lib/progress.js +2 -1
- package/dist/lib/progress.js.map +1 -0
- package/dist/lib/utils.d.ts +9 -2
- package/dist/lib/utils.js +2 -1
- package/dist/lib/utils.js.map +1 -0
- package/dist/logo-B0thHtTS.js +2 -0
- package/dist/{logo-BkwNxZNw.js.map → logo-B0thHtTS.js.map} +1 -1
- package/dist/rolldown-runtime-BhWHdk3m.js +1 -0
- package/dist/skills/uselets-ui/references/component-catalog.md +2 -2
- package/dist/styles/base.css +1 -19
- package/dist/styles/globals.css +1 -2
- package/dist/themes/gomax.css +1 -2
- package/dist/themes/max.css +1 -2
- package/dist/{use-hotkeys-DloZH-B4.d.ts → use-hotkeys-DOjcX9Tt.d.ts} +2 -2
- package/dist/{use-hotkeys-C0d5t4yo.js → use-hotkeys-YDJmGWX6.js} +2 -2
- package/dist/{use-hotkeys-C0d5t4yo.js.map → use-hotkeys-YDJmGWX6.js.map} +1 -1
- package/package.json +17 -18
- package/skills/uselets-ui/references/component-catalog.md +2 -2
- package/dist/accordion-BCo2odjy.js +0 -2
- package/dist/accordion-BCo2odjy.js.map +0 -1
- package/dist/accordion-DtSr3uiA.d.ts +0 -15
- package/dist/alert-CJRgRQVF.js +0 -2
- package/dist/alert-CJRgRQVF.js.map +0 -1
- package/dist/alert-dialog-B_nAiD4Y.js +0 -2
- package/dist/alert-dialog-B_nAiD4Y.js.map +0 -1
- package/dist/alert-dialog-Bf41-OnT.d.ts +0 -34
- package/dist/alert-eivgSC_S.d.ts +0 -18
- package/dist/anchor-DCOyn0Xa.d.ts +0 -15
- package/dist/anchor-srhmShjN.js +0 -2
- package/dist/anchor-srhmShjN.js.map +0 -1
- package/dist/area-chart-DdDy8Vm3.js +0 -2
- package/dist/area-chart-DdDy8Vm3.js.map +0 -1
- package/dist/area-chart-F_4ZL20j.d.ts +0 -40
- package/dist/avatar-2ZS3Tx76.d.ts +0 -21
- package/dist/avatar-CFUwrOwG.js +0 -2
- package/dist/avatar-CFUwrOwG.js.map +0 -1
- package/dist/badge-BqpQcDFd.d.ts +0 -16
- package/dist/badge-Cuq_DqRS.js +0 -2
- package/dist/badge-Cuq_DqRS.js.map +0 -1
- package/dist/badge-DEgLmZYC.js +0 -2
- package/dist/badge-DEgLmZYC.js.map +0 -1
- package/dist/badge-gkezuSZY.d.ts +0 -19
- package/dist/bar-chart-DIgSnh_j.js +0 -2
- package/dist/bar-chart-DIgSnh_j.js.map +0 -1
- package/dist/bar-chart-DRrrfMQR.d.ts +0 -42
- package/dist/breadcrumb-CqNDAI8V.js +0 -2
- package/dist/breadcrumb-CqNDAI8V.js.map +0 -1
- package/dist/breadcrumb-DZFS9htN.d.ts +0 -22
- package/dist/button-BNGy28pv.d.ts +0 -17
- package/dist/button-CQbH5Glc.d.ts +0 -19
- package/dist/button-DGewx2nE.js +0 -2
- package/dist/button-DGewx2nE.js.map +0 -1
- package/dist/button-group-DRgqsyjS.d.ts +0 -18
- package/dist/button-group-WJ5LeouK.js +0 -2
- package/dist/button-group-WJ5LeouK.js.map +0 -1
- package/dist/button-oI3hbOgp.js +0 -2
- package/dist/button-oI3hbOgp.js.map +0 -1
- package/dist/calendar-C1GgjzIA.d.ts +0 -17
- package/dist/calendar-CW1kGXom.js +0 -2
- package/dist/calendar-CW1kGXom.js.map +0 -1
- package/dist/card-Bx6iiocl.js +0 -2
- package/dist/card-Bx6iiocl.js.map +0 -1
- package/dist/card-pWjtkTKw.d.ts +0 -22
- package/dist/carousel-C6e4eRJD.d.ts +0 -43
- package/dist/carousel-D0OTImO7.js +0 -2
- package/dist/carousel-D0OTImO7.js.map +0 -1
- package/dist/center-CFQDr205.d.ts +0 -13
- package/dist/center-Dl1rnq7S.js +0 -2
- package/dist/center-Dl1rnq7S.js.map +0 -1
- package/dist/chart-Ci4V8B8v.js +0 -8
- package/dist/chart-Ci4V8B8v.js.map +0 -1
- package/dist/checkbox-DPvW_m7k.js +0 -2
- package/dist/checkbox-DPvW_m7k.js.map +0 -1
- package/dist/checkbox-y0XBdH4a.d.ts +0 -21
- package/dist/code-A6JERAsm.js +0 -2
- package/dist/code-A6JERAsm.js.map +0 -1
- package/dist/code-Cqoacc61.d.ts +0 -8
- package/dist/collapsible-BH8BqfTd.js +0 -2
- package/dist/collapsible-BH8BqfTd.js.map +0 -1
- package/dist/collapsible-CLSCZ630.d.ts +0 -12
- package/dist/color-DJvQFSl5.d.ts +0 -19
- package/dist/color-Don4qaht.js +0 -2
- package/dist/color-Don4qaht.js.map +0 -1
- package/dist/combobox-DkCRXUxd.d.ts +0 -51
- package/dist/combobox-ITDBYTtM.js +0 -2
- package/dist/combobox-ITDBYTtM.js.map +0 -1
- package/dist/command-BxkAy8PP.js +0 -2
- package/dist/command-BxkAy8PP.js.map +0 -1
- package/dist/command-D4pNOx0J.d.ts +0 -31
- package/dist/components/accordion.spec.d.ts +0 -1
- package/dist/components/accordion.spec.js +0 -2
- package/dist/components/accordion.spec.js.map +0 -1
- package/dist/components/alert-dialog.spec.d.ts +0 -1
- package/dist/components/alert-dialog.spec.js +0 -2
- package/dist/components/alert-dialog.spec.js.map +0 -1
- package/dist/components/alert.spec.d.ts +0 -1
- package/dist/components/alert.spec.js +0 -2
- package/dist/components/alert.spec.js.map +0 -1
- package/dist/components/anchor.spec.d.ts +0 -1
- package/dist/components/anchor.spec.js +0 -2
- package/dist/components/anchor.spec.js.map +0 -1
- package/dist/components/area-chart.spec.d.ts +0 -1
- package/dist/components/area-chart.spec.js +0 -2
- package/dist/components/area-chart.spec.js.map +0 -1
- package/dist/components/avatar.spec.d.ts +0 -1
- package/dist/components/avatar.spec.js +0 -2
- package/dist/components/avatar.spec.js.map +0 -1
- package/dist/components/badge.spec.d.ts +0 -1
- package/dist/components/badge.spec.js +0 -2
- package/dist/components/badge.spec.js.map +0 -1
- package/dist/components/bar-chart.spec.d.ts +0 -1
- package/dist/components/bar-chart.spec.js +0 -2
- package/dist/components/bar-chart.spec.js.map +0 -1
- package/dist/components/breadcrumb.spec.d.ts +0 -1
- package/dist/components/breadcrumb.spec.js +0 -2
- package/dist/components/breadcrumb.spec.js.map +0 -1
- package/dist/components/button-group.spec.d.ts +0 -1
- package/dist/components/button-group.spec.js +0 -2
- package/dist/components/button-group.spec.js.map +0 -1
- package/dist/components/button.spec.d.ts +0 -1
- package/dist/components/button.spec.js +0 -2
- package/dist/components/button.spec.js.map +0 -1
- package/dist/components/calendar.spec.d.ts +0 -1
- package/dist/components/calendar.spec.js +0 -2
- package/dist/components/calendar.spec.js.map +0 -1
- package/dist/components/card.spec.d.ts +0 -1
- package/dist/components/card.spec.js +0 -2
- package/dist/components/card.spec.js.map +0 -1
- package/dist/components/carousel.spec.d.ts +0 -1
- package/dist/components/carousel.spec.js +0 -2
- package/dist/components/carousel.spec.js.map +0 -1
- package/dist/components/center.spec.d.ts +0 -1
- package/dist/components/center.spec.js +0 -2
- package/dist/components/center.spec.js.map +0 -1
- package/dist/components/chart.spec.d.ts +0 -1
- package/dist/components/chart.spec.js +0 -2
- package/dist/components/chart.spec.js.map +0 -1
- package/dist/components/checkbox.spec.d.ts +0 -1
- package/dist/components/checkbox.spec.js +0 -2
- package/dist/components/checkbox.spec.js.map +0 -1
- package/dist/components/code.spec.d.ts +0 -1
- package/dist/components/code.spec.js +0 -2
- package/dist/components/code.spec.js.map +0 -1
- package/dist/components/collapsible.spec.d.ts +0 -1
- package/dist/components/collapsible.spec.js +0 -2
- package/dist/components/collapsible.spec.js.map +0 -1
- package/dist/components/combobox.spec.d.ts +0 -1
- package/dist/components/combobox.spec.js +0 -2
- package/dist/components/combobox.spec.js.map +0 -1
- package/dist/components/command.spec.d.ts +0 -1
- package/dist/components/command.spec.js +0 -2
- package/dist/components/command.spec.js.map +0 -1
- package/dist/components/container.spec.d.ts +0 -1
- package/dist/components/container.spec.js +0 -2
- package/dist/components/container.spec.js.map +0 -1
- package/dist/components/data-table.spec.d.ts +0 -1
- package/dist/components/data-table.spec.js +0 -2
- package/dist/components/data-table.spec.js.map +0 -1
- package/dist/components/date-range-picker.spec.d.ts +0 -1
- package/dist/components/date-range-picker.spec.js +0 -2
- package/dist/components/date-range-picker.spec.js.map +0 -1
- package/dist/components/dialog.spec.d.ts +0 -1
- package/dist/components/dialog.spec.js +0 -2
- package/dist/components/dialog.spec.js.map +0 -1
- package/dist/components/donut-chart.spec.d.ts +0 -1
- package/dist/components/donut-chart.spec.js +0 -2
- package/dist/components/donut-chart.spec.js.map +0 -1
- package/dist/components/drawer.spec.d.ts +0 -1
- package/dist/components/drawer.spec.js +0 -2
- package/dist/components/drawer.spec.js.map +0 -1
- package/dist/components/dropdown-menu.spec.d.ts +0 -1
- package/dist/components/dropdown-menu.spec.js +0 -2
- package/dist/components/dropdown-menu.spec.js.map +0 -1
- package/dist/components/dropzone.spec.d.ts +0 -1
- package/dist/components/dropzone.spec.js +0 -2
- package/dist/components/dropzone.spec.js.map +0 -1
- package/dist/components/empty.spec.d.ts +0 -1
- package/dist/components/empty.spec.js +0 -2
- package/dist/components/empty.spec.js.map +0 -1
- package/dist/components/field.spec.d.ts +0 -1
- package/dist/components/field.spec.js +0 -2
- package/dist/components/field.spec.js.map +0 -1
- package/dist/components/flex.spec.d.ts +0 -1
- package/dist/components/flex.spec.js +0 -2
- package/dist/components/flex.spec.js.map +0 -1
- package/dist/components/grid.spec.d.ts +0 -1
- package/dist/components/grid.spec.js +0 -2
- package/dist/components/grid.spec.js.map +0 -1
- package/dist/components/group.spec.d.ts +0 -1
- package/dist/components/group.spec.js +0 -2
- package/dist/components/group.spec.js.map +0 -1
- package/dist/components/heading.spec.d.ts +0 -1
- package/dist/components/heading.spec.js +0 -2
- package/dist/components/heading.spec.js.map +0 -1
- package/dist/components/hover-card.spec.d.ts +0 -1
- package/dist/components/hover-card.spec.js +0 -2
- package/dist/components/hover-card.spec.js.map +0 -1
- package/dist/components/input-group.spec.d.ts +0 -1
- package/dist/components/input-group.spec.js +0 -2
- package/dist/components/input-group.spec.js.map +0 -1
- package/dist/components/input-otp.spec.d.ts +0 -1
- package/dist/components/input-otp.spec.js +0 -2
- package/dist/components/input-otp.spec.js.map +0 -1
- package/dist/components/input.spec.d.ts +0 -1
- package/dist/components/input.spec.js +0 -2
- package/dist/components/input.spec.js.map +0 -1
- package/dist/components/kbd.spec.d.ts +0 -1
- package/dist/components/kbd.spec.js +0 -2
- package/dist/components/kbd.spec.js.map +0 -1
- package/dist/components/label.spec.d.ts +0 -1
- package/dist/components/label.spec.js +0 -2
- package/dist/components/label.spec.js.map +0 -1
- package/dist/components/list.spec.d.ts +0 -1
- package/dist/components/list.spec.js +0 -2
- package/dist/components/list.spec.js.map +0 -1
- package/dist/components/logo.spec.d.ts +0 -1
- package/dist/components/logo.spec.js +0 -2
- package/dist/components/logo.spec.js.map +0 -1
- package/dist/components/marker.spec.d.ts +0 -1
- package/dist/components/marker.spec.js +0 -2
- package/dist/components/marker.spec.js.map +0 -1
- package/dist/components/mask-input.spec.d.ts +0 -1
- package/dist/components/mask-input.spec.js +0 -2
- package/dist/components/mask-input.spec.js.map +0 -1
- package/dist/components/native-select.spec.d.ts +0 -1
- package/dist/components/native-select.spec.js +0 -2
- package/dist/components/native-select.spec.js.map +0 -1
- package/dist/components/navigation-menu.spec.d.ts +0 -1
- package/dist/components/navigation-menu.spec.js +0 -2
- package/dist/components/navigation-menu.spec.js.map +0 -1
- package/dist/components/number-field.spec.d.ts +0 -1
- package/dist/components/number-field.spec.js +0 -2
- package/dist/components/number-field.spec.js.map +0 -1
- package/dist/components/pagination.spec.d.ts +0 -1
- package/dist/components/pagination.spec.js +0 -2
- package/dist/components/pagination.spec.js.map +0 -1
- package/dist/components/phone-input.spec.d.ts +0 -1
- package/dist/components/phone-input.spec.js +0 -2
- package/dist/components/phone-input.spec.js.map +0 -1
- package/dist/components/pie-chart.spec.d.ts +0 -1
- package/dist/components/pie-chart.spec.js +0 -2
- package/dist/components/pie-chart.spec.js.map +0 -1
- package/dist/components/popover.spec.d.ts +0 -1
- package/dist/components/popover.spec.js +0 -2
- package/dist/components/popover.spec.js.map +0 -1
- package/dist/components/progress.spec.d.ts +0 -1
- package/dist/components/progress.spec.js +0 -2
- package/dist/components/progress.spec.js.map +0 -1
- package/dist/components/radio-group.spec.d.ts +0 -1
- package/dist/components/radio-group.spec.js +0 -2
- package/dist/components/radio-group.spec.js.map +0 -1
- package/dist/components/resizable.spec.d.ts +0 -1
- package/dist/components/resizable.spec.js +0 -2
- package/dist/components/resizable.spec.js.map +0 -1
- package/dist/components/ring-progress.spec.d.ts +0 -1
- package/dist/components/ring-progress.spec.js +0 -2
- package/dist/components/ring-progress.spec.js.map +0 -1
- package/dist/components/scroll-area.spec.d.ts +0 -1
- package/dist/components/scroll-area.spec.js +0 -2
- package/dist/components/scroll-area.spec.js.map +0 -1
- package/dist/components/select.spec.d.ts +0 -1
- package/dist/components/select.spec.js +0 -2
- package/dist/components/select.spec.js.map +0 -1
- package/dist/components/separator.spec.d.ts +0 -1
- package/dist/components/separator.spec.js +0 -2
- package/dist/components/separator.spec.js.map +0 -1
- package/dist/components/sidebar.spec.d.ts +0 -1
- package/dist/components/sidebar.spec.js +0 -2
- package/dist/components/sidebar.spec.js.map +0 -1
- package/dist/components/simple-grid.spec.d.ts +0 -1
- package/dist/components/simple-grid.spec.js +0 -2
- package/dist/components/simple-grid.spec.js.map +0 -1
- package/dist/components/skeleton.spec.d.ts +0 -1
- package/dist/components/skeleton.spec.js +0 -2
- package/dist/components/skeleton.spec.js.map +0 -1
- package/dist/components/slider.spec.d.ts +0 -1
- package/dist/components/slider.spec.js +0 -2
- package/dist/components/slider.spec.js.map +0 -1
- package/dist/components/sonner.spec.d.ts +0 -1
- package/dist/components/sonner.spec.js +0 -2
- package/dist/components/sonner.spec.js.map +0 -1
- package/dist/components/spinner.spec.d.ts +0 -1
- package/dist/components/spinner.spec.js +0 -2
- package/dist/components/spinner.spec.js.map +0 -1
- package/dist/components/stack.spec.d.ts +0 -1
- package/dist/components/stack.spec.js +0 -2
- package/dist/components/stack.spec.js.map +0 -1
- package/dist/components/stepper.spec.d.ts +0 -1
- package/dist/components/stepper.spec.js +0 -2
- package/dist/components/stepper.spec.js.map +0 -1
- package/dist/components/switch.spec.d.ts +0 -1
- package/dist/components/switch.spec.js +0 -2
- package/dist/components/switch.spec.js.map +0 -1
- package/dist/components/table.spec.d.ts +0 -1
- package/dist/components/table.spec.js +0 -2
- package/dist/components/table.spec.js.map +0 -1
- package/dist/components/tabs.spec.d.ts +0 -1
- package/dist/components/tabs.spec.js +0 -2
- package/dist/components/tabs.spec.js.map +0 -1
- package/dist/components/text.spec.d.ts +0 -1
- package/dist/components/text.spec.js +0 -2
- package/dist/components/text.spec.js.map +0 -1
- package/dist/components/textarea.spec.d.ts +0 -1
- package/dist/components/textarea.spec.js +0 -2
- package/dist/components/textarea.spec.js.map +0 -1
- package/dist/components/theme.spec.d.ts +0 -1
- package/dist/components/theme.spec.js +0 -2
- package/dist/components/theme.spec.js.map +0 -1
- package/dist/components/timeline.spec.d.ts +0 -1
- package/dist/components/timeline.spec.js +0 -2
- package/dist/components/timeline.spec.js.map +0 -1
- package/dist/components/toggle-group.spec.d.ts +0 -1
- package/dist/components/toggle-group.spec.js +0 -2
- package/dist/components/toggle-group.spec.js.map +0 -1
- package/dist/components/toggle.spec.d.ts +0 -1
- package/dist/components/toggle.spec.js +0 -2
- package/dist/components/toggle.spec.js.map +0 -1
- package/dist/components/tooltip.spec.d.ts +0 -1
- package/dist/components/tooltip.spec.js +0 -2
- package/dist/components/tooltip.spec.js.map +0 -1
- package/dist/components/unstyled-button.spec.d.ts +0 -1
- package/dist/components/unstyled-button.spec.js +0 -2
- package/dist/components/unstyled-button.spec.js.map +0 -1
- package/dist/components/visibility.spec.d.ts +0 -1
- package/dist/components/visibility.spec.js +0 -2
- package/dist/components/visibility.spec.js.map +0 -1
- package/dist/compose-refs-DUtp7lGn.js +0 -2
- package/dist/compose-refs-DUtp7lGn.js.map +0 -1
- package/dist/compose-refs-GP3zdokU.d.ts +0 -8
- package/dist/container-B8-lt-oX.d.ts +0 -12
- package/dist/container-CikeKdez.js +0 -2
- package/dist/container-CikeKdez.js.map +0 -1
- package/dist/data-table-BGfSiHDT.js +0 -2
- package/dist/data-table-BGfSiHDT.js.map +0 -1
- package/dist/date-range-picker-BjkVzFWQ.js +0 -2
- package/dist/date-range-picker-BjkVzFWQ.js.map +0 -1
- package/dist/date-range-picker-BngvCWcR.d.ts +0 -55
- package/dist/dialog-B7I4Ky1i.js +0 -2
- package/dist/dialog-B7I4Ky1i.js.map +0 -1
- package/dist/dialog-Ej7pnact.d.ts +0 -42
- package/dist/donut-chart-BDJR8TXh.d.ts +0 -13
- package/dist/donut-chart-BHU4kDE6.js +0 -2
- package/dist/donut-chart-BHU4kDE6.js.map +0 -1
- package/dist/drawer-BO4mP6y1.js +0 -2
- package/dist/drawer-BO4mP6y1.js.map +0 -1
- package/dist/drawer-DUfJzrKE.d.ts +0 -43
- package/dist/dropdown-menu-CVDIf0Rd.d.ts +0 -48
- package/dist/dropdown-menu-zRuQQS5S.js +0 -2
- package/dist/dropdown-menu-zRuQQS5S.js.map +0 -1
- package/dist/dropzone-43h3L9Ko.d.ts +0 -102
- package/dist/dropzone-BLZkZThJ.js +0 -2
- package/dist/dropzone-BLZkZThJ.js.map +0 -1
- package/dist/empty-BhKsDYZ5.js +0 -2
- package/dist/empty-BhKsDYZ5.js.map +0 -1
- package/dist/empty-D8ZiTCVK.d.ts +0 -21
- package/dist/field-C209yHO9.d.ts +0 -39
- package/dist/field-DzR-XrO7.js +0 -2
- package/dist/field-DzR-XrO7.js.map +0 -1
- package/dist/flex-BC4Diiy4.js +0 -2
- package/dist/flex-BC4Diiy4.js.map +0 -1
- package/dist/flex-aJXipTAz.d.ts +0 -16
- package/dist/grid-B3He1bGe.js +0 -2
- package/dist/grid-B3He1bGe.js.map +0 -1
- package/dist/grid-D_aEANA7.d.ts +0 -20
- package/dist/group-B6n_lMc4.js +0 -2
- package/dist/group-B6n_lMc4.js.map +0 -1
- package/dist/group-DBtx8eSe.d.ts +0 -15
- package/dist/heading-BTXl4JfI.d.ts +0 -14
- package/dist/heading-DaxKLVRm.js +0 -2
- package/dist/heading-DaxKLVRm.js.map +0 -1
- package/dist/hooks/use-breakpoint-value.spec.d.ts +0 -1
- package/dist/hooks/use-breakpoint-value.spec.js +0 -35
- package/dist/hooks/use-breakpoint-value.spec.js.map +0 -1
- package/dist/hooks/use-breakpoint.spec.d.ts +0 -1
- package/dist/hooks/use-breakpoint.spec.js +0 -2
- package/dist/hooks/use-breakpoint.spec.js.map +0 -1
- package/dist/hooks/use-disclosure.spec.d.ts +0 -1
- package/dist/hooks/use-disclosure.spec.js +0 -2
- package/dist/hooks/use-disclosure.spec.js.map +0 -1
- package/dist/hooks/use-document-visibility.spec.d.ts +0 -1
- package/dist/hooks/use-document-visibility.spec.js +0 -2
- package/dist/hooks/use-document-visibility.spec.js.map +0 -1
- package/dist/hooks/use-hotkeys.spec.d.ts +0 -1
- package/dist/hooks/use-hotkeys.spec.js +0 -2
- package/dist/hooks/use-hotkeys.spec.js.map +0 -1
- package/dist/hooks/use-idle.spec.d.ts +0 -1
- package/dist/hooks/use-idle.spec.js +0 -2
- package/dist/hooks/use-idle.spec.js.map +0 -1
- package/dist/hooks/use-interval.spec.d.ts +0 -1
- package/dist/hooks/use-interval.spec.js +0 -2
- package/dist/hooks/use-interval.spec.js.map +0 -1
- package/dist/hooks/use-local-storage.spec.d.ts +0 -1
- package/dist/hooks/use-local-storage.spec.js +0 -2
- package/dist/hooks/use-local-storage.spec.js.map +0 -1
- package/dist/hooks/use-mask.spec.d.ts +0 -1
- package/dist/hooks/use-mask.spec.js +0 -2
- package/dist/hooks/use-mask.spec.js.map +0 -1
- package/dist/hooks/use-mobile.spec.d.ts +0 -1
- package/dist/hooks/use-mobile.spec.js +0 -2
- package/dist/hooks/use-mobile.spec.js.map +0 -1
- package/dist/hover-card-C3yz2zQi.d.ts +0 -13
- package/dist/hover-card-Dc8yLsm-.js +0 -2
- package/dist/hover-card-Dc8yLsm-.js.map +0 -1
- package/dist/input-CI3RPXz0.d.ts +0 -8
- package/dist/input-CJLsPlXh.js +0 -2
- package/dist/input-CJLsPlXh.js.map +0 -1
- package/dist/input-group-CBn36aMg.d.ts +0 -26
- package/dist/input-group-mcar-tED.js +0 -2
- package/dist/input-group-mcar-tED.js.map +0 -1
- package/dist/input-otp-CzfRHf2V.js +0 -2
- package/dist/input-otp-CzfRHf2V.js.map +0 -1
- package/dist/input-otp-gIEkdiIC.d.ts +0 -19
- package/dist/kbd-BTl3AgkY.js +0 -2
- package/dist/kbd-BTl3AgkY.js.map +0 -1
- package/dist/kbd-DELCQBD0.d.ts +0 -10
- package/dist/label-BQDEej_c.js +0 -2
- package/dist/label-BQDEej_c.js.map +0 -1
- package/dist/label-KZl6I5Ey.d.ts +0 -9
- package/dist/lib/badge.spec.d.ts +0 -1
- package/dist/lib/badge.spec.js +0 -2
- package/dist/lib/badge.spec.js.map +0 -1
- package/dist/lib/button.spec.d.ts +0 -1
- package/dist/lib/button.spec.js +0 -2
- package/dist/lib/button.spec.js.map +0 -1
- package/dist/lib/color.spec.d.ts +0 -1
- package/dist/lib/color.spec.js +0 -2
- package/dist/lib/color.spec.js.map +0 -1
- package/dist/lib/compose-refs.spec.d.ts +0 -1
- package/dist/lib/compose-refs.spec.js +0 -2
- package/dist/lib/compose-refs.spec.js.map +0 -1
- package/dist/lib/progress.spec.d.ts +0 -1
- package/dist/lib/progress.spec.js +0 -2
- package/dist/lib/progress.spec.js.map +0 -1
- package/dist/lib/utils.spec.d.ts +0 -1
- package/dist/lib/utils.spec.js +0 -2
- package/dist/lib/utils.spec.js.map +0 -1
- package/dist/list-BbCg-ndB.js +0 -2
- package/dist/list-BbCg-ndB.js.map +0 -1
- package/dist/list-DMa2j1rk.d.ts +0 -25
- package/dist/logo-BkwNxZNw.js +0 -2
- package/dist/logo-Buo7sqqn.d.ts +0 -69
- package/dist/marker-4_EnMIHk.js +0 -2
- package/dist/marker-4_EnMIHk.js.map +0 -1
- package/dist/marker-C4wLa1c0.d.ts +0 -18
- package/dist/mask-input-B4R5K1h6.d.ts +0 -16
- package/dist/mask-input-cCmVKrHj.js +0 -2
- package/dist/mask-input-cCmVKrHj.js.map +0 -1
- package/dist/native-select-BVmdMkHY.d.ts +0 -14
- package/dist/native-select-Iq25QUH-.js +0 -2
- package/dist/native-select-Iq25QUH-.js.map +0 -1
- package/dist/navigation-menu-B6drNL1-.js +0 -2
- package/dist/navigation-menu-B6drNL1-.js.map +0 -1
- package/dist/navigation-menu-siQVRMUF.d.ts +0 -26
- package/dist/number-field-IdgO_BUa.d.ts +0 -35
- package/dist/number-field-rEMfZa6A.js +0 -2
- package/dist/number-field-rEMfZa6A.js.map +0 -1
- package/dist/pagination-BZ3xMXsy.d.ts +0 -27
- package/dist/pagination-gnUKddCN.js +0 -2
- package/dist/pagination-gnUKddCN.js.map +0 -1
- package/dist/phone-input-By5lNF03.d.ts +0 -13
- package/dist/phone-input-DqgYa1un.js +0 -2
- package/dist/phone-input-DqgYa1un.js.map +0 -1
- package/dist/pie-chart-CvG27kFN.d.ts +0 -42
- package/dist/pie-chart-S4nMKbsW.js +0 -2
- package/dist/pie-chart-S4nMKbsW.js.map +0 -1
- package/dist/popover-BtX3tX8M.js +0 -2
- package/dist/popover-BtX3tX8M.js.map +0 -1
- package/dist/popover-DchAqyKn.d.ts +0 -21
- package/dist/progress-DeXRCHUw.d.ts +0 -19
- package/dist/progress-QvpY7tiy.js +0 -2
- package/dist/progress-QvpY7tiy.js.map +0 -1
- package/dist/progress-icFwrvnE.js +0 -2
- package/dist/progress-icFwrvnE.js.map +0 -1
- package/dist/progress-mEAw9ZhK.d.ts +0 -14
- package/dist/radio-group-BNbepK_U.d.ts +0 -25
- package/dist/radio-group-DM8n0XPS.js +0 -2
- package/dist/radio-group-DM8n0XPS.js.map +0 -1
- package/dist/react.esm-dE9nuHcL.js +0 -68
- package/dist/react.esm-dE9nuHcL.js.map +0 -1
- package/dist/resizable-DMQG3xF_.d.ts +0 -14
- package/dist/resizable-Dbg7r7nF.js +0 -2
- package/dist/resizable-Dbg7r7nF.js.map +0 -1
- package/dist/ring-progress-65ccdTQQ.d.ts +0 -17
- package/dist/ring-progress-Bfqq_HHA.js +0 -2
- package/dist/ring-progress-Bfqq_HHA.js.map +0 -1
- package/dist/rolldown-runtime-Bdj-bS2b.js +0 -1
- package/dist/scroll-area-DFcj5q66.d.ts +0 -11
- package/dist/scroll-area-DKS4QPHg.js +0 -2
- package/dist/scroll-area-DKS4QPHg.js.map +0 -1
- package/dist/select-BoYp-Xyc.d.ts +0 -29
- package/dist/select-CVwVLyWt.js +0 -2
- package/dist/select-CVwVLyWt.js.map +0 -1
- package/dist/separator-BsRLiqWE.d.ts +0 -9
- package/dist/separator-CCMmbXL0.js +0 -2
- package/dist/separator-CCMmbXL0.js.map +0 -1
- package/dist/sidebar-CJriMotD.js +0 -2
- package/dist/sidebar-CJriMotD.js.map +0 -1
- package/dist/sidebar-D7HQlj5O.d.ts +0 -96
- package/dist/simple-grid-9EryoUWI.js +0 -2
- package/dist/simple-grid-9EryoUWI.js.map +0 -1
- package/dist/simple-grid-B2zjpwZ3.d.ts +0 -14
- package/dist/skeleton-Cn3zBJRe.js +0 -2
- package/dist/skeleton-Cn3zBJRe.js.map +0 -1
- package/dist/skeleton-Co8pevj-.d.ts +0 -10
- package/dist/slider-CC-gQawq.js +0 -2
- package/dist/slider-CC-gQawq.js.map +0 -1
- package/dist/slider-DmZ1YfLg.d.ts +0 -9
- package/dist/sonner-Binx8JJ2.d.ts +0 -8
- package/dist/sonner-DrKqhTDI.js +0 -2
- package/dist/sonner-DrKqhTDI.js.map +0 -1
- package/dist/spinner-Dz63Ltq-.d.ts +0 -12
- package/dist/spinner-ntLrcDLN.js +0 -2
- package/dist/spinner-ntLrcDLN.js.map +0 -1
- package/dist/stack-BbLllsqk.js +0 -2
- package/dist/stack-BbLllsqk.js.map +0 -1
- package/dist/stack-WiND8Dxq.d.ts +0 -14
- package/dist/stepper-BQ-59_UO.js +0 -2
- package/dist/stepper-BQ-59_UO.js.map +0 -1
- package/dist/stepper-DK5_o7RG.d.ts +0 -71
- package/dist/styles/gomax.css +0 -224
- package/dist/styles/max.css +0 -225
- package/dist/styles/theme.css +0 -214
- package/dist/switch-DjdOGECT.js +0 -2
- package/dist/switch-DjdOGECT.js.map +0 -1
- package/dist/switch-OtBakZHc.d.ts +0 -17
- package/dist/table-CuE0Aenj.js +0 -2
- package/dist/table-CuE0Aenj.js.map +0 -1
- package/dist/table-qIAtG7Y5.d.ts +0 -33
- package/dist/tabs-BgWxTTah.d.ts +0 -21
- package/dist/tabs-DK9-RHkP.js +0 -2
- package/dist/tabs-DK9-RHkP.js.map +0 -1
- package/dist/text-CKFZ9Xsj.d.ts +0 -14
- package/dist/text-Kg1xuinT.js +0 -2
- package/dist/text-Kg1xuinT.js.map +0 -1
- package/dist/textarea-Cr9_P-bV.d.ts +0 -8
- package/dist/textarea-eJQTMC_d.js +0 -2
- package/dist/textarea-eJQTMC_d.js.map +0 -1
- package/dist/theme-BwEhfTyl.d.ts +0 -22
- package/dist/theme-DZJ_cJYp.js +0 -2
- package/dist/theme-DZJ_cJYp.js.map +0 -1
- package/dist/timeline-BDY3YzeJ.d.ts +0 -61
- package/dist/timeline-pBm0t1tb.js +0 -2
- package/dist/timeline-pBm0t1tb.js.map +0 -1
- package/dist/toggle-DJJkcqDy.js +0 -2
- package/dist/toggle-DJJkcqDy.js.map +0 -1
- package/dist/toggle-group-C3iNDYqI.d.ts +0 -16
- package/dist/toggle-group-D0OIpZN-.js +0 -2
- package/dist/toggle-group-D0OIpZN-.js.map +0 -1
- package/dist/toggle-jc8s_Z3T.d.ts +0 -15
- package/dist/tooltip-BZjnEqw5.d.ts +0 -21
- package/dist/tooltip-CNUNWZvs.js +0 -2
- package/dist/tooltip-CNUNWZvs.js.map +0 -1
- package/dist/unstyled-button-C-Zs4Qv2.d.ts +0 -10
- package/dist/unstyled-button-lGbDJA55.js +0 -2
- package/dist/unstyled-button-lGbDJA55.js.map +0 -1
- package/dist/use-breakpoint-D6YACz8C.js +0 -2
- package/dist/use-breakpoint-D6YACz8C.js.map +0 -1
- package/dist/use-breakpoint-DDuQFekj.d.ts +0 -8
- package/dist/use-breakpoint-value-BDjKflDX.js +0 -2
- package/dist/use-breakpoint-value-BDjKflDX.js.map +0 -1
- package/dist/use-breakpoint-value-CRbHqGAu.d.ts +0 -8
- package/dist/use-disclosure-CNaFpYFQ.d.ts +0 -22
- package/dist/use-disclosure-Cr405eRD.js +0 -2
- package/dist/use-disclosure-Cr405eRD.js.map +0 -1
- package/dist/use-document-visibility-CoWjCswu.js +0 -2
- package/dist/use-document-visibility-CoWjCswu.js.map +0 -1
- package/dist/use-document-visibility-DIzUN4tB.d.ts +0 -6
- package/dist/use-idle-Bsi10VE9.d.ts +0 -13
- package/dist/use-idle-DgheJlxd.js +0 -2
- package/dist/use-idle-DgheJlxd.js.map +0 -1
- package/dist/use-interval-B1aNo3tA.js +0 -2
- package/dist/use-interval-B1aNo3tA.js.map +0 -1
- package/dist/use-interval-CJVmE_lC.d.ts +0 -24
- package/dist/use-local-storage-CJBqB1GC.js +0 -2
- package/dist/use-local-storage-CJBqB1GC.js.map +0 -1
- package/dist/use-local-storage-Cmq4PWJc.d.ts +0 -16
- package/dist/use-mask-DBvFShXA.js +0 -2
- package/dist/use-mask-DBvFShXA.js.map +0 -1
- package/dist/use-mask-DRJVVcdh.d.ts +0 -8
- package/dist/use-mobile-BYwiljVq.d.ts +0 -6
- package/dist/use-mobile-OMmp56u2.js +0 -2
- package/dist/use-mobile-OMmp56u2.js.map +0 -1
- package/dist/utils-DGsdoA5l.d.ts +0 -8
- package/dist/utils-DP9KtG7I.js +0 -2
- package/dist/utils-DP9KtG7I.js.map +0 -1
- package/dist/visibility-_3zV3l-A.d.ts +0 -17
- package/dist/visibility-twHwe9Xp.js +0 -2
- package/dist/visibility-twHwe9Xp.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,t as u,u as d}from"../stepper-BQ-59_UO.js";import{i as f,n as p,r as m,t as h}from"../react.esm-dE9nuHcL.js";import{jsx as g,jsxs as _}from"react/jsx-runtime";function ThreeStepStepper({children:n,...r}={}){return _(u,{defaultValue:2,...r,children:[n,_(s,{children:[_(e,{step:1,"data-testid":`item-1`,children:[_(d,{children:[g(i,{children:`1`}),g(a,{children:`Step one`}),g(c,{children:`First`})]}),g(t,{})]}),_(e,{step:2,"data-testid":`item-2`,children:[_(d,{children:[g(i,{children:`2`}),g(a,{children:`Step two`})]}),g(t,{})]}),g(e,{step:3,"data-testid":`item-3`,children:_(d,{children:[g(i,{children:`3`}),g(a,{children:`Step three`})]})})]}),_(l,{children:[g(o,{value:1,children:`First content`}),g(o,{value:2,children:`Second content`}),g(o,{value:3,children:`Third content`})]})]})}describe(`Stepper`,()=>{it(`renders the root as a tablist wired with the horizontal orientation by default`,()=>{let{container:e}=m(g(u,{})),t=e.querySelector(`[data-slot="stepper"]`);expect(t.getAttribute(`role`)).toBe(`tablist`),expect(t.getAttribute(`aria-orientation`)).toBe(`horizontal`),expect(t.getAttribute(`data-orientation`)).toBe(`horizontal`),expect(t.className).toContain(`w-full`)}),it(`respects an explicit vertical orientation`,()=>{let{container:e}=m(g(u,{orientation:`vertical`})),t=e.querySelector(`[data-slot="stepper"]`);expect(t.getAttribute(`aria-orientation`)).toBe(`vertical`),expect(t.getAttribute(`data-orientation`)).toBe(`vertical`)}),it(`shows correct active, completed, and upcoming state across three steps`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2}));expect(e(`item-1`).getAttribute(`data-state`)).toBe(`completed`),expect(e(`item-2`).getAttribute(`data-state`)).toBe(`active`),expect(e(`item-3`).getAttribute(`data-state`)).toBe(`inactive`)}),it(`advances the active step when a trigger is clicked (uncontrolled)`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:1}));p.click(e(`item-3`).querySelector(`[data-slot="stepper-trigger"]`)),expect(e(`item-1`).getAttribute(`data-state`)).toBe(`completed`),expect(e(`item-2`).getAttribute(`data-state`)).toBe(`completed`),expect(e(`item-3`).getAttribute(`data-state`)).toBe(`active`)}),it(`stays on the controlled value and calls onValueChange instead of updating internal state`,()=>{let e=vi.fn(),{getByTestId:t}=m(g(ThreeStepStepper,{value:1,onValueChange:e}));p.click(t(`item-3`).querySelector(`[data-slot="stepper-trigger"]`)),expect(e).toHaveBeenCalledWith(3),expect(t(`item-1`).getAttribute(`data-state`)).toBe(`active`),expect(t(`item-3`).getAttribute(`data-state`)).toBe(`inactive`)}),it(`forces a step to completed via the completed prop regardless of its position`,()=>{let{container:t}=m(g(u,{defaultValue:1,children:g(e,{step:2,completed:!0,"data-testid":`forced`,children:g(d,{children:`Two`})})}));expect(t.querySelector(`[data-testid="forced"]`)?.getAttribute(`data-state`)).toBe(`completed`)}),it(`marks the active step as loading via data-loading when the loading prop is set`,()=>{let{container:t}=m(g(u,{defaultValue:1,children:g(e,{step:1,loading:!0,"data-testid":`loading-item`,children:g(d,{children:`One`})})}));expect(t.querySelector(`[data-testid="loading-item"]`)?.getAttribute(`data-loading`)).toBe(`true`)}),it(`does not mark an inactive step as loading even when the loading prop is set`,()=>{let{container:t}=m(g(u,{defaultValue:2,children:g(e,{step:1,loading:!0,"data-testid":`loading-item`,children:g(d,{children:`One`})})}));expect(t.querySelector(`[data-testid="loading-item"]`)?.hasAttribute(`data-loading`)).toBe(!1)})}),describe(`useStepper`,()=>{it(`throws when used outside a Stepper`,()=>{expect(()=>f(()=>r())).toThrow(`useStepper must be used within a Stepper`)}),it(`exposes the active step, orientation, and setActiveStep from context`,()=>{let wrapper=({children:e})=>g(u,{defaultValue:2,children:e}),{result:e}=f(()=>r(),{wrapper});expect(e.current.activeStep).toBe(2),expect(e.current.orientation).toBe(`horizontal`),expect(typeof e.current.setActiveStep).toBe(`function`)}),it(`stepsCount stays 0 even with StepperItem children, since StepperItem has no displayName set`,()=>{let wrapper=({children:t})=>_(u,{defaultValue:1,children:[g(e,{step:1,children:g(d,{children:`One`})}),g(e,{step:2,children:g(d,{children:`Two`})}),t]}),{result:t}=f(()=>r(),{wrapper});expect(t.current.stepsCount).toBe(0)}),it(`updates the active step across the tree when setActiveStep is called`,()=>{let e={};function Capture(){return e.current=r(),null}let{getByTestId:t}=m(g(ThreeStepStepper,{defaultValue:1,children:g(Capture,{})}));h(()=>e.current?.setActiveStep(3)),expect(t(`item-3`).getAttribute(`data-state`)).toBe(`active`)})}),describe(`useStepItem`,()=>{it(`throws when used outside a StepperItem`,()=>{expect(()=>f(()=>n())).toThrow(`useStepItem must be used within a StepperItem`)}),it(`exposes step, state, isDisabled, and isLoading from context`,()=>{let wrapper=({children:t})=>g(u,{defaultValue:1,children:g(e,{step:1,disabled:!0,children:t})}),{result:t}=f(()=>n(),{wrapper});expect(t.current.step).toBe(1),expect(t.current.state).toBe(`active`),expect(t.current.isDisabled).toBe(!0),expect(t.current.isLoading).toBe(!1)})}),describe(`StepperItem`,()=>{it(`renders with data-slot stepper-item and the group/step class`,()=>{let{container:t}=m(g(u,{children:g(e,{step:1,children:g(d,{children:`One`})})})),n=t.querySelector(`[data-slot="stepper-item"]`);expect(n.className).toContain(`group/step`)})}),describe(`StepperTrigger`,()=>{it(`renders a tab button with the expected aria wiring for the active step`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e(`item-2`).querySelector(`[data-slot="stepper-trigger"]`);expect(t.tagName).toBe(`BUTTON`),expect(t.getAttribute(`role`)).toBe(`tab`),expect(t.getAttribute(`aria-selected`)).toBe(`true`),expect(t.getAttribute(`aria-controls`)).toBe(`stepper-panel-2`),expect(t.tabIndex).toBe(0)}),it(`gives inactive step triggers a tabIndex of -1`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e(`item-1`).querySelector(`[data-slot="stepper-trigger"]`);expect(t.tabIndex).toBe(-1)}),it(`sets the active step when clicked`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:1}));p.click(e(`item-2`).querySelector(`[data-slot="stepper-trigger"]`)),expect(e(`item-2`).getAttribute(`data-state`)).toBe(`active`)}),it(`disables the button and blocks activation when the StepperItem is disabled`,()=>{let{container:t}=m(_(u,{defaultValue:1,children:[g(e,{step:1,children:g(d,{children:`One`})}),g(e,{step:2,disabled:!0,"data-testid":`disabled-item`,children:g(d,{children:`Two`})})]})),n=t.querySelector(`[data-testid="disabled-item"] [data-slot="stepper-trigger"]`);expect(n.disabled).toBe(!0)}),it(`moves focus to the next trigger on ArrowRight and to the previous on ArrowLeft`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:1})),t=e(`item-1`).querySelector(`[data-slot="stepper-trigger"]`),n=e(`item-2`).querySelector(`[data-slot="stepper-trigger"]`);t.focus(),p.keyDown(t,{key:`ArrowRight`}),expect(document.activeElement).toBe(n),p.keyDown(n,{key:`ArrowLeft`}),expect(document.activeElement).toBe(t)}),it(`moves focus to the first/last trigger on Home/End`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:1})),t=e(`item-1`).querySelector(`[data-slot="stepper-trigger"]`),n=e(`item-2`).querySelector(`[data-slot="stepper-trigger"]`),r=e(`item-3`).querySelector(`[data-slot="stepper-trigger"]`);n.focus(),p.keyDown(n,{key:`End`}),expect(document.activeElement).toBe(r),p.keyDown(r,{key:`Home`}),expect(document.activeElement).toBe(t)}),it(`activates the focused step on Enter and Space`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:1})),t=e(`item-3`).querySelector(`[data-slot="stepper-trigger"]`);p.keyDown(t,{key:`Enter`}),expect(e(`item-3`).getAttribute(`data-state`)).toBe(`active`)}),it(`renders a span instead of a button when asChild is set`,()=>{let{container:t}=m(g(u,{defaultValue:1,children:g(e,{step:1,children:g(d,{asChild:!0,children:`Custom`})})})),n=t.querySelector(`[data-slot="stepper-trigger"]`);expect(n.tagName).toBe(`SPAN`),expect(n.getAttribute(`data-state`)).toBe(`active`),expect(n.textContent).toBe(`Custom`)})}),describe(`StepperIndicator`,()=>{it(`renders its children by default and reflects the step state`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e(`item-2`).querySelector(`[data-slot="stepper-indicator"]`);expect(t.getAttribute(`data-state`)).toBe(`active`),expect(t.textContent).toBe(`2`)}),it(`swaps in a custom indicator node for the matching state`,()=>{let{container:t}=m(g(u,{defaultValue:1,indicators:{active:g(`span`,{"data-testid":`custom-active`,children:`*`})},children:g(e,{step:1,children:g(i,{children:`1`})})}));expect(t.querySelector(`[data-testid="custom-active"]`)).not.toBeNull()}),it(`prefers the loading indicator when the active step is loading`,()=>{let{container:t}=m(g(u,{defaultValue:1,indicators:{loading:g(`span`,{"data-testid":`custom-loading`,children:`…`})},children:g(e,{step:1,loading:!0,children:g(i,{children:`1`})})}));expect(t.querySelector(`[data-testid="custom-loading"]`)).not.toBeNull()})}),describe(`StepperSeparator`,()=>{it(`renders with data-slot stepper-separator and mirrors the item state`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e(`item-1`).querySelector(`[data-slot="stepper-separator"]`);expect(t.getAttribute(`data-state`)).toBe(`completed`)})}),describe(`StepperTitle`,()=>{it(`renders its children with data-slot stepper-title`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e(`item-1`).querySelector(`[data-slot="stepper-title"]`);expect(t.tagName).toBe(`H3`),expect(t.textContent).toBe(`Step one`),expect(t.getAttribute(`data-state`)).toBe(`completed`)})}),describe(`StepperDescription`,()=>{it(`renders its children with data-slot stepper-description`,()=>{let{getByTestId:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e(`item-1`).querySelector(`[data-slot="stepper-description"]`);expect(t.textContent).toBe(`First`),expect(t.getAttribute(`data-state`)).toBe(`completed`)})}),describe(`StepperNav`,()=>{it(`renders with data-slot stepper-nav and mirrors orientation and active step`,()=>{let{container:e}=m(g(ThreeStepStepper,{defaultValue:2,orientation:`vertical`})),t=e.querySelector(`[data-slot="stepper-nav"]`);expect(t.tagName).toBe(`NAV`),expect(t.getAttribute(`data-orientation`)).toBe(`vertical`),expect(t.getAttribute(`data-state`)).toBe(`2`)})}),describe(`StepperPanel`,()=>{it(`renders with data-slot stepper-panel and mirrors the active step`,()=>{let{container:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e.querySelector(`[data-slot="stepper-panel"]`);expect(t.getAttribute(`data-state`)).toBe(`2`)})}),describe(`StepperContent`,()=>{it(`renders only the content for the active step by default`,()=>{let{container:e}=m(g(ThreeStepStepper,{defaultValue:2})),t=e.querySelectorAll(`[data-slot="stepper-content"]`);expect(t.length).toBe(1),expect(t[0]?.textContent).toBe(`Second content`)}),it(`keeps inactive content mounted but hidden when forceMount is set`,()=>{let{container:e}=m(_(u,{defaultValue:1,children:[g(o,{value:1,children:`Active`}),g(o,{value:2,forceMount:!0,children:`Inactive but mounted`})]})),t=Array.from(e.querySelectorAll(`[data-slot="stepper-content"]`)).find(e=>e.textContent===`Inactive but mounted`);expect(t).not.toBeUndefined(),expect(t.hasAttribute(`hidden`)).toBe(!0),expect(t.className).toContain(`hidden`)})});
|
|
2
|
-
//# sourceMappingURL=stepper.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stepper.spec.js","names":[],"sources":["../../src/components/stepper.spec.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport { act, fireEvent, render, renderHook } from '@testing-library/react'\n\nimport {\n Stepper,\n StepperContent,\n StepperDescription,\n StepperIndicator,\n StepperItem,\n StepperNav,\n StepperPanel,\n StepperSeparator,\n StepperTitle,\n StepperTrigger,\n useStepItem,\n useStepper\n} from './stepper'\n\nfunction ThreeStepStepper({\n children,\n ...props\n}: Partial<Parameters<typeof Stepper>[0]> & { children?: ReactNode } = {}) {\n return (\n <Stepper defaultValue={2} {...props}>\n {children}\n <StepperNav>\n <StepperItem step={1} data-testid=\"item-1\">\n <StepperTrigger>\n <StepperIndicator>1</StepperIndicator>\n <StepperTitle>Step one</StepperTitle>\n <StepperDescription>First</StepperDescription>\n </StepperTrigger>\n <StepperSeparator />\n </StepperItem>\n <StepperItem step={2} data-testid=\"item-2\">\n <StepperTrigger>\n <StepperIndicator>2</StepperIndicator>\n <StepperTitle>Step two</StepperTitle>\n </StepperTrigger>\n <StepperSeparator />\n </StepperItem>\n <StepperItem step={3} data-testid=\"item-3\">\n <StepperTrigger>\n <StepperIndicator>3</StepperIndicator>\n <StepperTitle>Step three</StepperTitle>\n </StepperTrigger>\n </StepperItem>\n </StepperNav>\n <StepperPanel>\n <StepperContent value={1}>First content</StepperContent>\n <StepperContent value={2}>Second content</StepperContent>\n <StepperContent value={3}>Third content</StepperContent>\n </StepperPanel>\n </Stepper>\n )\n}\n\ndescribe('Stepper', () => {\n it('renders the root as a tablist wired with the horizontal orientation by default', () => {\n const { container } = render(<Stepper />)\n\n const stepper = container.querySelector('[data-slot=\"stepper\"]') as HTMLElement\n\n expect(stepper.getAttribute('role')).toBe('tablist')\n expect(stepper.getAttribute('aria-orientation')).toBe('horizontal')\n expect(stepper.getAttribute('data-orientation')).toBe('horizontal')\n expect(stepper.className).toContain('w-full')\n })\n\n it('respects an explicit vertical orientation', () => {\n const { container } = render(<Stepper orientation=\"vertical\" />)\n\n const stepper = container.querySelector('[data-slot=\"stepper\"]') as HTMLElement\n expect(stepper.getAttribute('aria-orientation')).toBe('vertical')\n expect(stepper.getAttribute('data-orientation')).toBe('vertical')\n })\n\n it('shows correct active, completed, and upcoming state across three steps', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n expect(getByTestId('item-1').getAttribute('data-state')).toBe('completed')\n expect(getByTestId('item-2').getAttribute('data-state')).toBe('active')\n expect(getByTestId('item-3').getAttribute('data-state')).toBe('inactive')\n })\n\n it('advances the active step when a trigger is clicked (uncontrolled)', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={1} />)\n\n fireEvent.click(getByTestId('item-3').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement)\n\n expect(getByTestId('item-1').getAttribute('data-state')).toBe('completed')\n expect(getByTestId('item-2').getAttribute('data-state')).toBe('completed')\n expect(getByTestId('item-3').getAttribute('data-state')).toBe('active')\n })\n\n it('stays on the controlled value and calls onValueChange instead of updating internal state', () => {\n const onValueChange = vi.fn()\n const { getByTestId } = render(<ThreeStepStepper value={1} onValueChange={onValueChange} />)\n\n fireEvent.click(getByTestId('item-3').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement)\n\n expect(onValueChange).toHaveBeenCalledWith(3)\n expect(getByTestId('item-1').getAttribute('data-state')).toBe('active')\n expect(getByTestId('item-3').getAttribute('data-state')).toBe('inactive')\n })\n\n it('forces a step to completed via the completed prop regardless of its position', () => {\n const { container } = render(\n <Stepper defaultValue={1}>\n <StepperItem step={2} completed data-testid=\"forced\">\n <StepperTrigger>Two</StepperTrigger>\n </StepperItem>\n </Stepper>\n )\n\n expect(container.querySelector('[data-testid=\"forced\"]')?.getAttribute('data-state')).toBe('completed')\n })\n\n it('marks the active step as loading via data-loading when the loading prop is set', () => {\n const { container } = render(\n <Stepper defaultValue={1}>\n <StepperItem step={1} loading data-testid=\"loading-item\">\n <StepperTrigger>One</StepperTrigger>\n </StepperItem>\n </Stepper>\n )\n\n expect(container.querySelector('[data-testid=\"loading-item\"]')?.getAttribute('data-loading')).toBe('true')\n })\n\n it('does not mark an inactive step as loading even when the loading prop is set', () => {\n const { container } = render(\n <Stepper defaultValue={2}>\n <StepperItem step={1} loading data-testid=\"loading-item\">\n <StepperTrigger>One</StepperTrigger>\n </StepperItem>\n </Stepper>\n )\n\n expect(container.querySelector('[data-testid=\"loading-item\"]')?.hasAttribute('data-loading')).toBe(false)\n })\n})\n\ndescribe('useStepper', () => {\n it('throws when used outside a Stepper', () => {\n expect(() => renderHook(() => useStepper())).toThrow('useStepper must be used within a Stepper')\n })\n\n it('exposes the active step, orientation, and setActiveStep from context', () => {\n const wrapper = ({ children }: { children: ReactNode }) => <Stepper defaultValue={2}>{children}</Stepper>\n const { result } = renderHook(() => useStepper(), { wrapper })\n\n expect(result.current.activeStep).toBe(2)\n expect(result.current.orientation).toBe('horizontal')\n expect(typeof result.current.setActiveStep).toBe('function')\n })\n\n it('stepsCount stays 0 even with StepperItem children, since StepperItem has no displayName set', () => {\n const wrapper = ({ children }: { children: ReactNode }) => (\n <Stepper defaultValue={1}>\n <StepperItem step={1}>\n <StepperTrigger>One</StepperTrigger>\n </StepperItem>\n <StepperItem step={2}>\n <StepperTrigger>Two</StepperTrigger>\n </StepperItem>\n {children}\n </Stepper>\n )\n const { result } = renderHook(() => useStepper(), { wrapper })\n\n expect(result.current.stepsCount).toBe(0)\n })\n\n it('updates the active step across the tree when setActiveStep is called', () => {\n const captured: { current?: ReturnType<typeof useStepper> } = {}\n function Capture() {\n captured.current = useStepper()\n return null\n }\n\n const { getByTestId } = render(\n <ThreeStepStepper defaultValue={1}>\n <Capture />\n </ThreeStepStepper>\n )\n\n act(() => captured.current?.setActiveStep(3))\n\n expect(getByTestId('item-3').getAttribute('data-state')).toBe('active')\n })\n})\n\ndescribe('useStepItem', () => {\n it('throws when used outside a StepperItem', () => {\n expect(() => renderHook(() => useStepItem())).toThrow('useStepItem must be used within a StepperItem')\n })\n\n it('exposes step, state, isDisabled, and isLoading from context', () => {\n const wrapper = ({ children }: { children: ReactNode }) => (\n <Stepper defaultValue={1}>\n <StepperItem step={1} disabled>\n {children}\n </StepperItem>\n </Stepper>\n )\n const { result } = renderHook(() => useStepItem(), { wrapper })\n\n expect(result.current.step).toBe(1)\n expect(result.current.state).toBe('active')\n expect(result.current.isDisabled).toBe(true)\n expect(result.current.isLoading).toBe(false)\n })\n})\n\ndescribe('StepperItem', () => {\n it('renders with data-slot stepper-item and the group/step class', () => {\n const { container } = render(\n <Stepper>\n <StepperItem step={1}>\n <StepperTrigger>One</StepperTrigger>\n </StepperItem>\n </Stepper>\n )\n\n const item = container.querySelector('[data-slot=\"stepper-item\"]') as HTMLElement\n expect(item.className).toContain('group/step')\n })\n})\n\ndescribe('StepperTrigger', () => {\n it('renders a tab button with the expected aria wiring for the active step', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n const trigger = getByTestId('item-2').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n\n expect(trigger.tagName).toBe('BUTTON')\n expect(trigger.getAttribute('role')).toBe('tab')\n expect(trigger.getAttribute('aria-selected')).toBe('true')\n expect(trigger.getAttribute('aria-controls')).toBe('stepper-panel-2')\n expect(trigger.tabIndex).toBe(0)\n })\n\n it('gives inactive step triggers a tabIndex of -1', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n const trigger = getByTestId('item-1').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n expect(trigger.tabIndex).toBe(-1)\n })\n\n it('sets the active step when clicked', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={1} />)\n\n fireEvent.click(getByTestId('item-2').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement)\n\n expect(getByTestId('item-2').getAttribute('data-state')).toBe('active')\n })\n\n it('disables the button and blocks activation when the StepperItem is disabled', () => {\n const { container } = render(\n <Stepper defaultValue={1}>\n <StepperItem step={1}>\n <StepperTrigger>One</StepperTrigger>\n </StepperItem>\n <StepperItem step={2} disabled data-testid=\"disabled-item\">\n <StepperTrigger>Two</StepperTrigger>\n </StepperItem>\n </Stepper>\n )\n\n const trigger = container.querySelector(\n '[data-testid=\"disabled-item\"] [data-slot=\"stepper-trigger\"]'\n ) as HTMLButtonElement\n expect(trigger.disabled).toBe(true)\n })\n\n it('moves focus to the next trigger on ArrowRight and to the previous on ArrowLeft', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={1} />)\n\n const trigger1 = getByTestId('item-1').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n const trigger2 = getByTestId('item-2').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n\n trigger1.focus()\n fireEvent.keyDown(trigger1, { key: 'ArrowRight' })\n expect(document.activeElement).toBe(trigger2)\n\n fireEvent.keyDown(trigger2, { key: 'ArrowLeft' })\n expect(document.activeElement).toBe(trigger1)\n })\n\n it('moves focus to the first/last trigger on Home/End', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={1} />)\n\n const trigger1 = getByTestId('item-1').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n const trigger2 = getByTestId('item-2').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n const trigger3 = getByTestId('item-3').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n\n trigger2.focus()\n fireEvent.keyDown(trigger2, { key: 'End' })\n expect(document.activeElement).toBe(trigger3)\n\n fireEvent.keyDown(trigger3, { key: 'Home' })\n expect(document.activeElement).toBe(trigger1)\n })\n\n it('activates the focused step on Enter and Space', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={1} />)\n\n const trigger3 = getByTestId('item-3').querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n fireEvent.keyDown(trigger3, { key: 'Enter' })\n\n expect(getByTestId('item-3').getAttribute('data-state')).toBe('active')\n })\n\n it('renders a span instead of a button when asChild is set', () => {\n const { container } = render(\n <Stepper defaultValue={1}>\n <StepperItem step={1}>\n <StepperTrigger asChild>Custom</StepperTrigger>\n </StepperItem>\n </Stepper>\n )\n\n const trigger = container.querySelector('[data-slot=\"stepper-trigger\"]') as HTMLElement\n expect(trigger.tagName).toBe('SPAN')\n expect(trigger.getAttribute('data-state')).toBe('active')\n expect(trigger.textContent).toBe('Custom')\n })\n})\n\ndescribe('StepperIndicator', () => {\n it('renders its children by default and reflects the step state', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n const indicator = getByTestId('item-2').querySelector('[data-slot=\"stepper-indicator\"]') as HTMLElement\n expect(indicator.getAttribute('data-state')).toBe('active')\n expect(indicator.textContent).toBe('2')\n })\n\n it('swaps in a custom indicator node for the matching state', () => {\n const { container } = render(\n <Stepper defaultValue={1} indicators={{ active: <span data-testid=\"custom-active\">*</span> }}>\n <StepperItem step={1}>\n <StepperIndicator>1</StepperIndicator>\n </StepperItem>\n </Stepper>\n )\n\n expect(container.querySelector('[data-testid=\"custom-active\"]')).not.toBeNull()\n })\n\n it('prefers the loading indicator when the active step is loading', () => {\n const { container } = render(\n <Stepper defaultValue={1} indicators={{ loading: <span data-testid=\"custom-loading\">…</span> }}>\n <StepperItem step={1} loading>\n <StepperIndicator>1</StepperIndicator>\n </StepperItem>\n </Stepper>\n )\n\n expect(container.querySelector('[data-testid=\"custom-loading\"]')).not.toBeNull()\n })\n})\n\ndescribe('StepperSeparator', () => {\n it('renders with data-slot stepper-separator and mirrors the item state', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n const separator = getByTestId('item-1').querySelector('[data-slot=\"stepper-separator\"]') as HTMLElement\n expect(separator.getAttribute('data-state')).toBe('completed')\n })\n})\n\ndescribe('StepperTitle', () => {\n it('renders its children with data-slot stepper-title', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n const title = getByTestId('item-1').querySelector('[data-slot=\"stepper-title\"]') as HTMLElement\n expect(title.tagName).toBe('H3')\n expect(title.textContent).toBe('Step one')\n expect(title.getAttribute('data-state')).toBe('completed')\n })\n})\n\ndescribe('StepperDescription', () => {\n it('renders its children with data-slot stepper-description', () => {\n const { getByTestId } = render(<ThreeStepStepper defaultValue={2} />)\n\n const description = getByTestId('item-1').querySelector('[data-slot=\"stepper-description\"]') as HTMLElement\n expect(description.textContent).toBe('First')\n expect(description.getAttribute('data-state')).toBe('completed')\n })\n})\n\ndescribe('StepperNav', () => {\n it('renders with data-slot stepper-nav and mirrors orientation and active step', () => {\n const { container } = render(<ThreeStepStepper defaultValue={2} orientation=\"vertical\" />)\n\n const nav = container.querySelector('[data-slot=\"stepper-nav\"]') as HTMLElement\n expect(nav.tagName).toBe('NAV')\n expect(nav.getAttribute('data-orientation')).toBe('vertical')\n expect(nav.getAttribute('data-state')).toBe('2')\n })\n})\n\ndescribe('StepperPanel', () => {\n it('renders with data-slot stepper-panel and mirrors the active step', () => {\n const { container } = render(<ThreeStepStepper defaultValue={2} />)\n\n const panel = container.querySelector('[data-slot=\"stepper-panel\"]') as HTMLElement\n expect(panel.getAttribute('data-state')).toBe('2')\n })\n})\n\ndescribe('StepperContent', () => {\n it('renders only the content for the active step by default', () => {\n const { container } = render(<ThreeStepStepper defaultValue={2} />)\n\n const contents = container.querySelectorAll('[data-slot=\"stepper-content\"]')\n expect(contents.length).toBe(1)\n expect(contents[0]?.textContent).toBe('Second content')\n })\n\n it('keeps inactive content mounted but hidden when forceMount is set', () => {\n const { container } = render(\n <Stepper defaultValue={1}>\n <StepperContent value={1}>Active</StepperContent>\n <StepperContent value={2} forceMount>\n Inactive but mounted\n </StepperContent>\n </Stepper>\n )\n\n const hiddenContent = Array.from(container.querySelectorAll('[data-slot=\"stepper-content\"]')).find(\n (el) => el.textContent === 'Inactive but mounted'\n ) as HTMLElement\n\n expect(hiddenContent).not.toBeUndefined()\n expect(hiddenContent.hasAttribute('hidden')).toBe(true)\n expect(hiddenContent.className).toContain('hidden')\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{t as n}from"../switch-DjdOGECT.js";import{a as r,n as i,r as a}from"../react.esm-dE9nuHcL.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";describe(`Switch`,()=>{it(`renders as a switch with the default color and size and no wrapping label`,()=>{let{container:e}=a(o(n,{})),t=e.querySelector(`[data-slot="switch"]`);expect(t).not.toBeNull(),expect(t?.getAttribute(`role`)).toBe(`switch`),expect(t?.getAttribute(`data-color`)).toBe(`green`),expect(t?.getAttribute(`data-size`)).toBe(`md`),expect(t?.getAttribute(`id`)).toBeNull(),expect(e.querySelector(`[data-slot="switch-field"]`)).toBeNull()}),it(`toggles the checked state when clicked`,()=>{a(o(n,{}));let e=r.getByRole(`switch`);expect(e.getAttribute(`aria-checked`)).toBe(`false`),i.click(e),expect(e.getAttribute(`aria-checked`)).toBe(`true`),expect(e.getAttribute(`data-state`)).toBe(`checked`)}),it(`renders a wired label and generates a shared id when label is provided`,()=>{a(o(n,{label:`Enable notifications`}));let e=r.getByRole(`switch`),t=r.getByText(`Enable notifications`);expect(e.getAttribute(`id`)).toBeTruthy(),expect(t.getAttribute(`for`)).toBe(e.getAttribute(`id`))}),it(`applies custom color and size variants`,()=>{let{container:e}=a(o(n,{color:`blue`,size:`lg`})),t=e.querySelector(`[data-slot="switch"]`);expect(t?.getAttribute(`data-color`)).toBe(`blue`),expect(t?.getAttribute(`data-size`)).toBe(`lg`),expect(t?.className).toContain(`[--switch-checked:var(--blue)]`)}),it(`wires the field control id when rendered inside Field`,()=>{a(s(t,{children:[o(e,{children:`Terms`}),o(n,{})]}));let i=r.getByText(`Terms`),c=r.getByRole(`switch`);expect(i.getAttribute(`for`)).toBe(c.getAttribute(`id`))})});
|
|
2
|
-
//# sourceMappingURL=switch.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch.spec.js","names":[],"sources":["../../src/components/switch.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { Switch } from './switch'\n\ndescribe('Switch', () => {\n it('renders as a switch with the default color and size and no wrapping label', () => {\n const { container } = render(<Switch />)\n\n const switchEl = container.querySelector('[data-slot=\"switch\"]')\n\n expect(switchEl).not.toBeNull()\n expect(switchEl?.getAttribute('role')).toBe('switch')\n expect(switchEl?.getAttribute('data-color')).toBe('green')\n expect(switchEl?.getAttribute('data-size')).toBe('md')\n expect(switchEl?.getAttribute('id')).toBeNull()\n expect(container.querySelector('[data-slot=\"switch-field\"]')).toBeNull()\n })\n\n it('toggles the checked state when clicked', () => {\n render(<Switch />)\n\n const switchEl = screen.getByRole('switch')\n\n expect(switchEl.getAttribute('aria-checked')).toBe('false')\n\n fireEvent.click(switchEl)\n\n expect(switchEl.getAttribute('aria-checked')).toBe('true')\n expect(switchEl.getAttribute('data-state')).toBe('checked')\n })\n\n it('renders a wired label and generates a shared id when label is provided', () => {\n render(<Switch label=\"Enable notifications\" />)\n\n const switchEl = screen.getByRole('switch')\n const label = screen.getByText('Enable notifications')\n\n expect(switchEl.getAttribute('id')).toBeTruthy()\n expect(label.getAttribute('for')).toBe(switchEl.getAttribute('id'))\n })\n\n it('applies custom color and size variants', () => {\n const { container } = render(<Switch color=\"blue\" size=\"lg\" />)\n\n const switchEl = container.querySelector('[data-slot=\"switch\"]')\n\n expect(switchEl?.getAttribute('data-color')).toBe('blue')\n expect(switchEl?.getAttribute('data-size')).toBe('lg')\n expect(switchEl?.className).toContain('[--switch-checked:var(--blue)]')\n })\n\n it('wires the field control id when rendered inside Field', () => {\n render(\n <Field>\n <FieldLabel>Terms</FieldLabel>\n <Switch />\n </Field>\n )\n\n const label = screen.getByText('Terms')\n const switchEl = screen.getByRole('switch')\n\n expect(label.getAttribute('for')).toBe(switchEl.getAttribute('id'))\n })\n})\n"],"mappings":"0OAKA,SAAS,aAAgB,CACvB,GAAG,gFAAmF,CACpF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAS,CAAA,CAAC,EAEjC,EAAW,EAAU,cAAc,sBAAsB,EAE/D,OAAO,CAAQ,CAAC,CAAC,IAAI,SAAS,EAC9B,OAAO,GAAU,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpD,OAAO,GAAU,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,EACzD,OAAO,GAAU,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACrD,OAAO,GAAU,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,EAAU,cAAc,4BAA4B,CAAC,CAAC,CAAC,SAAS,CACzE,CAAC,EAED,GAAG,6CAAgD,CACjD,EAAO,EAAC,EAAD,CAAS,CAAA,CAAC,EAEjB,IAAM,EAAW,EAAO,UAAU,QAAQ,EAE1C,OAAO,EAAS,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,EAE1D,EAAU,MAAM,CAAQ,EAExB,OAAO,EAAS,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EACzD,OAAO,EAAS,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CAC5D,CAAC,EAED,GAAG,6EAAgF,CACjF,EAAO,EAAC,EAAD,CAAQ,MAAM,sBAAwB,CAAA,CAAC,EAE9C,IAAM,EAAW,EAAO,UAAU,QAAQ,EACpC,EAAQ,EAAO,UAAU,sBAAsB,EAErD,OAAO,EAAS,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,EAC/C,OAAO,EAAM,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,EAAS,aAAa,IAAI,CAAC,CACpE,CAAC,EAED,GAAG,6CAAgD,CACjD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,MAAM,OAAO,KAAK,IAAM,CAAA,CAAC,EAExD,EAAW,EAAU,cAAc,sBAAsB,EAE/D,OAAO,GAAU,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EACxD,OAAO,GAAU,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACrD,OAAO,GAAU,SAAS,CAAC,CAAC,UAAU,gCAAgC,CACxE,CAAC,EAED,GAAG,4DAA+D,CAChE,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,OAAiB,CAAA,EAC7B,EAAC,EAAD,CAAS,CAAA,CACJ,CAAA,CAAA,CACT,EAEA,IAAM,EAAQ,EAAO,UAAU,OAAO,EAChC,EAAW,EAAO,UAAU,QAAQ,EAE1C,OAAO,EAAM,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,EAAS,aAAa,IAAI,CAAC,CACpE,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"../table-CuE0Aenj.js";import{a as l,r as u}from"../react.esm-dE9nuHcL.js";import{jsx as d,jsxs as f}from"react/jsx-runtime";function renderTable(l){return u(d(e,{children:f(c,{...l,children:[d(o,{children:`A list of recent invoices`}),d(t,{children:f(r,{children:[d(s,{children:`Invoice`}),d(s,{children:`Status`})]})}),f(i,{children:[f(r,{children:[d(n,{children:`INV001`}),d(n,{children:`Paid`})]}),f(r,{"data-state":`selected`,children:[d(n,{children:`INV002`}),d(n,{children:`Pending`})]})]}),d(a,{children:f(r,{children:[d(n,{children:`Total`}),d(n,{children:`2 invoices`})]})})]})}))}describe(`Table`,()=>{it(`renders every subcomponent with its own data-slot`,()=>{let{container:e}=renderTable();expect(e.querySelector(`[data-slot="table-container"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="table"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="table-caption"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="table-header"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="table-body"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="table-footer"]`)).not.toBeNull(),expect(e.querySelectorAll(`[data-slot="table-row"]`)).toHaveLength(4),expect(e.querySelectorAll(`[data-slot="table-head"]`)).toHaveLength(2),expect(e.querySelectorAll(`[data-slot="table-cell"]`)).toHaveLength(6)}),it(`renders real table semantics that are queryable by role`,()=>{renderTable(),expect(l.getByRole(`table`)).not.toBeNull(),expect(l.getAllByRole(`columnheader`)).toHaveLength(2),expect(l.getAllByRole(`row`)).toHaveLength(4),expect(l.getByText(`A list of recent invoices`)).not.toBeNull()}),it(`defaults to the line variant, striped rows and no sticky header`,()=>{let{container:e}=renderTable(),t=e.querySelector(`[data-slot="table"]`);expect(t?.getAttribute(`data-variant`)).toBe(`line`),expect(t?.getAttribute(`data-striped`)).toBe(`true`),expect(t?.getAttribute(`data-sticky-header`)).toBe(`false`)}),it(`applies the outline variant classes when requested`,()=>{let{container:e}=renderTable({variant:`outline`}),t=e.querySelector(`[data-slot="table"]`);expect(t?.getAttribute(`data-variant`)).toBe(`outline`),expect(t?.className).toContain(`border-separate`)}),it(`disables striping and enables the sticky header via data attributes`,()=>{let{container:e}=renderTable({striped:!1,stickyHeader:!0}),t=e.querySelector(`[data-slot="table"]`);expect(t?.getAttribute(`data-striped`)).toBe(`false`),expect(t?.getAttribute(`data-sticky-header`)).toBe(`true`)}),it(`marks a row as selected via data-state`,()=>{renderTable();let e=l.getByText(`INV002`).closest(`[data-slot="table-row"]`);expect(e?.getAttribute(`data-state`)).toBe(`selected`)}),it(`applies a numeric minWidth as a pixel value on the container style`,()=>{let{container:t}=u(d(e,{minWidth:640,children:d(c,{children:d(i,{children:d(r,{children:d(n,{children:`Cell`})})})})})),a=t.querySelector(`[data-slot="table-container"]`);expect(a.style.minWidth).toBe(`640px`)}),it(`leaves the style untouched when no minWidth is provided`,()=>{let{container:t}=u(d(e,{style:{color:`red`},children:d(c,{children:d(i,{children:d(r,{children:d(n,{children:`Cell`})})})})})),a=t.querySelector(`[data-slot="table-container"]`);expect(a.style.minWidth).toBe(``),expect(a.style.color).toBe(`red`)})});
|
|
2
|
-
//# sourceMappingURL=table.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table.spec.js","names":[],"sources":["../../src/components/table.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableContainer,\n TableFooter,\n TableHead,\n TableHeader,\n type TableProps,\n TableRow\n} from './table'\n\nfunction renderTable(props?: TableProps) {\n return render(\n <TableContainer>\n <Table {...props}>\n <TableCaption>A list of recent invoices</TableCaption>\n <TableHeader>\n <TableRow>\n <TableHead>Invoice</TableHead>\n <TableHead>Status</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>INV001</TableCell>\n <TableCell>Paid</TableCell>\n </TableRow>\n <TableRow data-state=\"selected\">\n <TableCell>INV002</TableCell>\n <TableCell>Pending</TableCell>\n </TableRow>\n </TableBody>\n <TableFooter>\n <TableRow>\n <TableCell>Total</TableCell>\n <TableCell>2 invoices</TableCell>\n </TableRow>\n </TableFooter>\n </Table>\n </TableContainer>\n )\n}\n\ndescribe('Table', () => {\n it('renders every subcomponent with its own data-slot', () => {\n const { container } = renderTable()\n\n expect(container.querySelector('[data-slot=\"table-container\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"table\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"table-caption\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"table-header\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"table-body\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"table-footer\"]')).not.toBeNull()\n expect(container.querySelectorAll('[data-slot=\"table-row\"]')).toHaveLength(4)\n expect(container.querySelectorAll('[data-slot=\"table-head\"]')).toHaveLength(2)\n expect(container.querySelectorAll('[data-slot=\"table-cell\"]')).toHaveLength(6)\n })\n\n it('renders real table semantics that are queryable by role', () => {\n renderTable()\n\n expect(screen.getByRole('table')).not.toBeNull()\n expect(screen.getAllByRole('columnheader')).toHaveLength(2)\n expect(screen.getAllByRole('row')).toHaveLength(4)\n expect(screen.getByText('A list of recent invoices')).not.toBeNull()\n })\n\n it('defaults to the line variant, striped rows and no sticky header', () => {\n const { container } = renderTable()\n\n const table = container.querySelector('[data-slot=\"table\"]')\n\n expect(table?.getAttribute('data-variant')).toBe('line')\n expect(table?.getAttribute('data-striped')).toBe('true')\n expect(table?.getAttribute('data-sticky-header')).toBe('false')\n })\n\n it('applies the outline variant classes when requested', () => {\n const { container } = renderTable({ variant: 'outline' })\n\n const table = container.querySelector('[data-slot=\"table\"]')\n\n expect(table?.getAttribute('data-variant')).toBe('outline')\n expect(table?.className).toContain('border-separate')\n })\n\n it('disables striping and enables the sticky header via data attributes', () => {\n const { container } = renderTable({ striped: false, stickyHeader: true })\n\n const table = container.querySelector('[data-slot=\"table\"]')\n\n expect(table?.getAttribute('data-striped')).toBe('false')\n expect(table?.getAttribute('data-sticky-header')).toBe('true')\n })\n\n it('marks a row as selected via data-state', () => {\n renderTable()\n\n const selectedRow = screen.getByText('INV002').closest('[data-slot=\"table-row\"]')\n\n expect(selectedRow?.getAttribute('data-state')).toBe('selected')\n })\n\n it('applies a numeric minWidth as a pixel value on the container style', () => {\n const { container } = render(\n <TableContainer minWidth={640}>\n <Table>\n <TableBody>\n <TableRow>\n <TableCell>Cell</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n )\n\n const tableContainer = container.querySelector('[data-slot=\"table-container\"]') as HTMLElement\n\n expect(tableContainer.style.minWidth).toBe('640px')\n })\n\n it('leaves the style untouched when no minWidth is provided', () => {\n const { container } = render(\n <TableContainer style={{ color: 'red' }}>\n <Table>\n <TableBody>\n <TableRow>\n <TableCell>Cell</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n )\n\n const tableContainer = container.querySelector('[data-slot=\"table-container\"]') as HTMLElement\n\n expect(tableContainer.style.minWidth).toBe('')\n expect(tableContainer.style.color).toBe('red')\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{i as e,n as t,r as n,t as r}from"../tabs-DK9-RHkP.js";import{a as i,n as a,r as o}from"../react.esm-dE9nuHcL.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";function renderTabs(i){return o(c(r,{defaultValue:`account`,orientation:i?.orientation,children:[c(n,{variant:i?.variant,children:[s(e,{value:`account`,children:`Account`}),s(e,{value:`password`,children:`Password`})]}),s(t,{value:`account`,children:`Account settings`}),s(t,{value:`password`,children:`Password settings`})]}))}describe(`Tabs`,()=>{it(`renders the root with data-slot and the default horizontal orientation`,()=>{let{container:e}=renderTabs(),t=e.querySelector(`[data-slot="tabs"]`);expect(t).not.toBeNull(),expect(t?.getAttribute(`data-orientation`)).toBe(`horizontal`),expect(t?.className).toContain(`data-horizontal:flex-col`)}),it(`shows only the active tab content and marks the active trigger`,()=>{renderTabs(),expect(i.getByText(`Account settings`)).not.toBeNull(),expect(i.queryByText(`Password settings`)).toBeNull();let e=i.getByRole(`tab`,{name:`Account`}),t=i.getByRole(`tab`,{name:`Password`});expect(e.getAttribute(`data-state`)).toBe(`active`),expect(t.getAttribute(`data-state`)).toBe(`inactive`)}),it(`switches the active tab content when a different trigger is clicked`,()=>{renderTabs(),a.mouseDown(i.getByRole(`tab`,{name:`Password`})),expect(i.getByText(`Password settings`)).not.toBeNull(),expect(i.queryByText(`Account settings`)).toBeNull(),expect(i.getByRole(`tab`,{name:`Password`}).getAttribute(`data-state`)).toBe(`active`)}),it(`calls onValueChange when a trigger is activated`,()=>{let l=vi.fn();o(c(r,{defaultValue:`account`,onValueChange:l,children:[c(n,{children:[s(e,{value:`account`,children:`Account`}),s(e,{value:`password`,children:`Password`})]}),s(t,{value:`account`,children:`Account settings`}),s(t,{value:`password`,children:`Password settings`})]})),a.mouseDown(i.getByRole(`tab`,{name:`Password`})),expect(l).toHaveBeenCalledWith(`password`)}),it(`applies the vertical orientation data attribute and class to the root`,()=>{let{container:e}=renderTabs({orientation:`vertical`}),t=e.querySelector(`[data-slot="tabs"]`);expect(t?.getAttribute(`data-orientation`)).toBe(`vertical`)}),it(`defaults the list variant to line and lets it be switched to enclosed`,()=>{let{container:i,rerender:a}=renderTabs(),o=i.querySelector(`[data-slot="tabs-list"]`);expect(o?.getAttribute(`data-variant`)).toBe(`line`),expect(o?.className).toContain(`bg-transparent`),a(c(r,{defaultValue:`account`,children:[s(n,{variant:`enclosed`,children:s(e,{value:`account`,children:`Account`})}),s(t,{value:`account`,children:`Account settings`})]})),o=i.querySelector(`[data-slot="tabs-list"]`),expect(o?.getAttribute(`data-variant`)).toBe(`enclosed`),expect(o?.className).toContain(`bg-muted`)}),it(`marks the list as growing when the grow prop is set`,()=>{o(c(r,{defaultValue:`account`,children:[s(n,{grow:!0,children:s(e,{value:`account`,children:`Account`})}),s(t,{value:`account`,children:`Account settings`})]})),expect(i.getByRole(`tablist`).getAttribute(`data-grow`)).toBe(`true`)}),it(`disables a trigger and keeps it inactive when clicked`,()=>{let l=vi.fn();o(c(r,{defaultValue:`account`,onValueChange:l,children:[c(n,{children:[s(e,{value:`account`,children:`Account`}),s(e,{value:`password`,disabled:!0,children:`Password`})]}),s(t,{value:`account`,children:`Account settings`}),s(t,{value:`password`,children:`Password settings`})]})),a.mouseDown(i.getByRole(`tab`,{name:`Password`})),expect(l).not.toHaveBeenCalled(),expect(i.getByText(`Account settings`)).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=tabs.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.spec.js","names":[],"sources":["../../src/components/tabs.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from './tabs'\n\nfunction renderTabs(props?: { orientation?: 'horizontal' | 'vertical'; variant?: 'line' | 'enclosed' }) {\n return render(\n <Tabs defaultValue=\"account\" orientation={props?.orientation}>\n <TabsList variant={props?.variant}>\n <TabsTrigger value=\"account\">Account</TabsTrigger>\n <TabsTrigger value=\"password\">Password</TabsTrigger>\n </TabsList>\n <TabsContent value=\"account\">Account settings</TabsContent>\n <TabsContent value=\"password\">Password settings</TabsContent>\n </Tabs>\n )\n}\n\ndescribe('Tabs', () => {\n it('renders the root with data-slot and the default horizontal orientation', () => {\n const { container } = renderTabs()\n\n const root = container.querySelector('[data-slot=\"tabs\"]')\n\n expect(root).not.toBeNull()\n expect(root?.getAttribute('data-orientation')).toBe('horizontal')\n expect(root?.className).toContain('data-horizontal:flex-col')\n })\n\n it('shows only the active tab content and marks the active trigger', () => {\n renderTabs()\n\n expect(screen.getByText('Account settings')).not.toBeNull()\n expect(screen.queryByText('Password settings')).toBeNull()\n\n const activeTrigger = screen.getByRole('tab', { name: 'Account' })\n const inactiveTrigger = screen.getByRole('tab', { name: 'Password' })\n\n expect(activeTrigger.getAttribute('data-state')).toBe('active')\n expect(inactiveTrigger.getAttribute('data-state')).toBe('inactive')\n })\n\n it('switches the active tab content when a different trigger is clicked', () => {\n renderTabs()\n\n fireEvent.mouseDown(screen.getByRole('tab', { name: 'Password' }))\n\n expect(screen.getByText('Password settings')).not.toBeNull()\n expect(screen.queryByText('Account settings')).toBeNull()\n expect(screen.getByRole('tab', { name: 'Password' }).getAttribute('data-state')).toBe('active')\n })\n\n it('calls onValueChange when a trigger is activated', () => {\n const onValueChange = vi.fn()\n\n render(\n <Tabs defaultValue=\"account\" onValueChange={onValueChange}>\n <TabsList>\n <TabsTrigger value=\"account\">Account</TabsTrigger>\n <TabsTrigger value=\"password\">Password</TabsTrigger>\n </TabsList>\n <TabsContent value=\"account\">Account settings</TabsContent>\n <TabsContent value=\"password\">Password settings</TabsContent>\n </Tabs>\n )\n\n fireEvent.mouseDown(screen.getByRole('tab', { name: 'Password' }))\n\n expect(onValueChange).toHaveBeenCalledWith('password')\n })\n\n it('applies the vertical orientation data attribute and class to the root', () => {\n const { container } = renderTabs({ orientation: 'vertical' })\n\n const root = container.querySelector('[data-slot=\"tabs\"]')\n\n expect(root?.getAttribute('data-orientation')).toBe('vertical')\n })\n\n it('defaults the list variant to line and lets it be switched to enclosed', () => {\n const { container, rerender } = renderTabs()\n\n let list = container.querySelector('[data-slot=\"tabs-list\"]')\n expect(list?.getAttribute('data-variant')).toBe('line')\n expect(list?.className).toContain('bg-transparent')\n\n rerender(\n <Tabs defaultValue=\"account\">\n <TabsList variant=\"enclosed\">\n <TabsTrigger value=\"account\">Account</TabsTrigger>\n </TabsList>\n <TabsContent value=\"account\">Account settings</TabsContent>\n </Tabs>\n )\n\n list = container.querySelector('[data-slot=\"tabs-list\"]')\n expect(list?.getAttribute('data-variant')).toBe('enclosed')\n expect(list?.className).toContain('bg-muted')\n })\n\n it('marks the list as growing when the grow prop is set', () => {\n render(\n <Tabs defaultValue=\"account\">\n <TabsList grow>\n <TabsTrigger value=\"account\">Account</TabsTrigger>\n </TabsList>\n <TabsContent value=\"account\">Account settings</TabsContent>\n </Tabs>\n )\n\n expect(screen.getByRole('tablist').getAttribute('data-grow')).toBe('true')\n })\n\n it('disables a trigger and keeps it inactive when clicked', () => {\n const onValueChange = vi.fn()\n\n render(\n <Tabs defaultValue=\"account\" onValueChange={onValueChange}>\n <TabsList>\n <TabsTrigger value=\"account\">Account</TabsTrigger>\n <TabsTrigger value=\"password\" disabled>\n Password\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"account\">Account settings</TabsContent>\n <TabsContent value=\"password\">Password settings</TabsContent>\n </Tabs>\n )\n\n fireEvent.mouseDown(screen.getByRole('tab', { name: 'Password' }))\n\n expect(onValueChange).not.toHaveBeenCalled()\n expect(screen.getByText('Account settings')).not.toBeNull()\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../text-Kg1xuinT.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`Text`,()=>{it(`renders a paragraph with data-slot and the default md size classes`,()=>{let{container:r}=t(n(e,{children:`Hello`})),i=r.querySelector(`[data-slot="text"]`);expect(i?.tagName).toBe(`P`),expect(i?.getAttribute(`data-size`)).toBe(`md`),expect(i?.className).toContain(`text-base`),expect(i?.className).toContain(`text-foreground`)}),it(`applies the requested size variant classes`,()=>{let{container:r}=t(n(e,{size:`xl`,children:`Big`})),i=r.querySelector(`[data-slot="text"]`);expect(i?.getAttribute(`data-size`)).toBe(`xl`),expect(i?.className).toContain(`text-xl`)}),it(`merges a custom className with the variant classes`,()=>{let{container:r}=t(n(e,{className:`italic`,children:`Styled`}));expect(r.querySelector(`[data-slot="text"]`)?.className).toContain(`italic`)}),it(`renders the child element directly when asChild is true`,()=>{let{container:r}=t(n(e,{asChild:!0,size:`sm`,children:n(`span`,{children:`Inline text`})})),i=r.querySelector(`[data-slot="text"]`);expect(i?.tagName).toBe(`SPAN`),expect(i?.getAttribute(`data-size`)).toBe(`sm`)}),it(`forwards ref to the underlying paragraph element`,()=>{let r={current:null};t(n(e,{ref:r,children:`Ref target`})),expect(r.current).toBeInstanceOf(HTMLParagraphElement)})});
|
|
2
|
-
//# sourceMappingURL=text.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text.spec.js","names":[],"sources":["../../src/components/text.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Text } from './text'\n\ndescribe('Text', () => {\n it('renders a paragraph with data-slot and the default md size classes', () => {\n const { container } = render(<Text>Hello</Text>)\n\n const text = container.querySelector('[data-slot=\"text\"]')\n\n expect(text?.tagName).toBe('P')\n expect(text?.getAttribute('data-size')).toBe('md')\n expect(text?.className).toContain('text-base')\n expect(text?.className).toContain('text-foreground')\n })\n\n it('applies the requested size variant classes', () => {\n const { container } = render(<Text size=\"xl\">Big</Text>)\n\n const text = container.querySelector('[data-slot=\"text\"]')\n\n expect(text?.getAttribute('data-size')).toBe('xl')\n expect(text?.className).toContain('text-xl')\n })\n\n it('merges a custom className with the variant classes', () => {\n const { container } = render(<Text className=\"italic\">Styled</Text>)\n\n expect(container.querySelector('[data-slot=\"text\"]')?.className).toContain('italic')\n })\n\n it('renders the child element directly when asChild is true', () => {\n const { container } = render(\n <Text asChild size=\"sm\">\n <span>Inline text</span>\n </Text>\n )\n\n const text = container.querySelector('[data-slot=\"text\"]')\n\n expect(text?.tagName).toBe('SPAN')\n expect(text?.getAttribute('data-size')).toBe('sm')\n })\n\n it('forwards ref to the underlying paragraph element', () => {\n const ref = { current: null as HTMLParagraphElement | null }\n\n render(<Text ref={ref}>Ref target</Text>)\n\n expect(ref.current).toBeInstanceOf(HTMLParagraphElement)\n })\n})\n"],"mappings":"qKAIA,SAAS,WAAc,CACrB,GAAG,yEAA4E,CAC7E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAM,OAAW,CAAA,CAAC,EAEzC,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,OAAO,CAAC,CAAC,KAAK,GAAG,EAC9B,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,WAAW,EAC7C,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,iBAAiB,CACrD,CAAC,EAED,GAAG,iDAAoD,CACrD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAM,KAAK,KAAK,SAAA,KAAS,CAAA,CAAC,EAEjD,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,SAAS,CAC7C,CAAC,EAED,GAAG,yDAA4D,CAC7D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAM,UAAU,SAAS,SAAA,QAAY,CAAA,CAAC,EAEnE,OAAO,EAAU,cAAc,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,QAAQ,CACrF,CAAC,EAED,GAAG,8DAAiE,CAClE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAM,QAAA,GAAQ,KAAK,KACjB,SAAA,EAAC,OAAD,CAAA,SAAM,aAAiB,CAAA,CACnB,CAAA,CACR,EAEM,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,OAAO,CAAC,CAAC,KAAK,MAAM,EACjC,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CACnD,CAAC,EAED,GAAG,uDAA0D,CAC3D,IAAM,EAAM,CAAE,QAAS,IAAoC,EAE3D,EAAO,EAAC,EAAD,CAAW,MAAK,SAAA,YAAgB,CAAA,CAAC,EAExC,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,oBAAoB,CACzD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{t as n}from"../textarea-eJQTMC_d.js";import{a as r,n as i,r as a}from"../react.esm-dE9nuHcL.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";describe(`Textarea`,()=>{it(`renders a textarea with data-slot and the default classes`,()=>{let{container:e}=a(o(n,{placeholder:`Write something`})),t=e.querySelector(`[data-slot="textarea"]`);expect(t).not.toBeNull(),expect(t?.tagName).toBe(`TEXTAREA`),expect(t?.className).toContain(`min-h-16`),expect(t?.getAttribute(`placeholder`)).toBe(`Write something`)}),it(`preserves an explicit id without requiring Field context`,()=>{let{container:e}=a(o(n,{id:`bio`}));expect(e.querySelector(`[data-slot="textarea"]`)?.getAttribute(`id`)).toBe(`bio`)}),it(`does not assign an id outside Field when none is provided`,()=>{let{container:e}=a(o(n,{}));expect(e.querySelector(`[data-slot="textarea"]`)?.getAttribute(`id`)).toBeNull()}),it(`wires the field control id when rendered inside Field`,()=>{a(s(t,{children:[o(e,{children:`Message`}),o(n,{})]}));let i=r.getByLabelText(`Message`);expect(i.getAttribute(`id`)).toBeTruthy()}),it(`updates its value when the user types`,()=>{a(o(n,{"aria-label":`Comment`}));let e=r.getByLabelText(`Comment`);i.change(e,{target:{value:`Hello world`}}),expect(e.value).toBe(`Hello world`)}),it(`forwards ref to the underlying textarea element`,()=>{let e={current:null};a(o(n,{ref:e})),expect(e.current).toBeInstanceOf(HTMLTextAreaElement)})});
|
|
2
|
-
//# sourceMappingURL=textarea.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.spec.js","names":[],"sources":["../../src/components/textarea.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { Textarea } from './textarea'\n\ndescribe('Textarea', () => {\n it('renders a textarea with data-slot and the default classes', () => {\n const { container } = render(<Textarea placeholder=\"Write something\" />)\n\n const textarea = container.querySelector('[data-slot=\"textarea\"]')\n\n expect(textarea).not.toBeNull()\n expect(textarea?.tagName).toBe('TEXTAREA')\n expect(textarea?.className).toContain('min-h-16')\n expect(textarea?.getAttribute('placeholder')).toBe('Write something')\n })\n\n it('preserves an explicit id without requiring Field context', () => {\n const { container } = render(<Textarea id=\"bio\" />)\n\n expect(container.querySelector('[data-slot=\"textarea\"]')?.getAttribute('id')).toBe('bio')\n })\n\n it('does not assign an id outside Field when none is provided', () => {\n const { container } = render(<Textarea />)\n\n expect(container.querySelector('[data-slot=\"textarea\"]')?.getAttribute('id')).toBeNull()\n })\n\n it('wires the field control id when rendered inside Field', () => {\n render(\n <Field>\n <FieldLabel>Message</FieldLabel>\n <Textarea />\n </Field>\n )\n\n const textarea = screen.getByLabelText('Message')\n\n expect(textarea.getAttribute('id')).toBeTruthy()\n })\n\n it('updates its value when the user types', () => {\n render(<Textarea aria-label=\"Comment\" />)\n\n const textarea = screen.getByLabelText('Comment') as HTMLTextAreaElement\n\n fireEvent.change(textarea, { target: { value: 'Hello world' } })\n\n expect(textarea.value).toBe('Hello world')\n })\n\n it('forwards ref to the underlying textarea element', () => {\n const ref = { current: null as HTMLTextAreaElement | null }\n\n render(<Textarea ref={ref} />)\n\n expect(ref.current).toBeInstanceOf(HTMLTextAreaElement)\n })\n})\n"],"mappings":"4OAKA,SAAS,eAAkB,CACzB,GAAG,gEAAmE,CACpE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,YAAY,iBAAmB,CAAA,CAAC,EAEjE,EAAW,EAAU,cAAc,wBAAwB,EAEjE,OAAO,CAAQ,CAAC,CAAC,IAAI,SAAS,EAC9B,OAAO,GAAU,OAAO,CAAC,CAAC,KAAK,UAAU,EACzC,OAAO,GAAU,SAAS,CAAC,CAAC,UAAU,UAAU,EAChD,OAAO,GAAU,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,iBAAiB,CACtE,CAAC,EAED,GAAG,+DAAkE,CACnE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,GAAG,KAAO,CAAA,CAAC,EAElD,OAAO,EAAU,cAAc,wBAAwB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAC1F,CAAC,EAED,GAAG,gEAAmE,CACpE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,CAAA,CAAC,EAEzC,OAAO,EAAU,cAAc,wBAAwB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CACzF,CAAC,EAED,GAAG,4DAA+D,CAChE,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,SAAmB,CAAA,EAC/B,EAAC,EAAD,CAAW,CAAA,CACN,CAAA,CAAA,CACT,EAEA,IAAM,EAAW,EAAO,eAAe,SAAS,EAEhD,OAAO,EAAS,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CACjD,CAAC,EAED,GAAG,4CAA+C,CAChD,EAAO,EAAC,EAAD,CAAU,aAAW,SAAW,CAAA,CAAC,EAExC,IAAM,EAAW,EAAO,eAAe,SAAS,EAEhD,EAAU,OAAO,EAAU,CAAE,OAAQ,CAAE,MAAO,aAAc,CAAE,CAAC,EAE/D,OAAO,EAAS,KAAK,CAAC,CAAC,KAAK,aAAa,CAC3C,CAAC,EAED,GAAG,sDAAyD,CAC1D,IAAM,EAAM,CAAE,QAAS,IAAmC,EAE1D,EAAO,EAAC,EAAD,CAAe,KAAM,CAAA,CAAC,EAE7B,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,mBAAmB,CACxD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,r as t,t as n}from"../theme-DZJ_cJYp.js";import{a as r,i,n as a,r as o,t as s}from"../react.esm-dE9nuHcL.js";import{jsx as c,jsxs as l}from"react/jsx-runtime";function ThemeConsumer(){let{theme:e,setTheme:n}=t();return l(`div`,{children:[c(`span`,{"data-testid":`theme-value`,children:e}),c(`button`,{type:`button`,onClick:()=>n(`dark`),children:`set-dark`}),c(`button`,{type:`button`,onClick:()=>n(`light`),children:`set-light`}),c(`button`,{type:`button`,onClick:()=>n(`system`),children:`set-system`})]})}function openModeToggleMenu(){let e=r.getByRole(`button`,{name:`Toggle theme`});return a.pointerDown(e,{button:0}),e}describe(`ThemeProvider`,()=>{it(`renders its children`,()=>{o(c(e,{children:c(`span`,{children:`Hello world`})})),expect(r.getByText(`Hello world`)).not.toBeNull()}),it(`defaults to the "system" theme when no defaultTheme or persisted value is provided`,()=>{o(c(e,{children:c(ThemeConsumer,{})})),expect(r.getByTestId(`theme-value`).textContent).toBe(`system`)}),it(`uses the provided defaultTheme when nothing is persisted`,()=>{o(c(e,{defaultTheme:`dark`,children:c(ThemeConsumer,{})})),expect(r.getByTestId(`theme-value`).textContent).toBe(`dark`)}),it(`reads a previously persisted theme from localStorage under the default storage key`,()=>{window.localStorage.setItem(`vite-ui-theme`,`light`),o(c(e,{children:c(ThemeConsumer,{})})),expect(r.getByTestId(`theme-value`).textContent).toBe(`light`)}),it(`reads a previously persisted theme from a custom storageKey`,()=>{window.localStorage.setItem(`acme-theme`,`dark`),o(c(e,{storageKey:`acme-theme`,children:c(ThemeConsumer,{})})),expect(r.getByTestId(`theme-value`).textContent).toBe(`dark`)}),it(`applies the resolved theme as a class on the document element`,()=>{o(c(e,{defaultTheme:`dark`,children:c(ThemeConsumer,{})})),expect(document.documentElement.classList.contains(`dark`)).toBe(!0),expect(document.documentElement.classList.contains(`light`)).toBe(!1)}),it(`resolves the "system" theme to light when the OS preference does not match dark`,()=>{o(c(e,{defaultTheme:`system`,children:c(ThemeConsumer,{})})),expect(document.documentElement.classList.contains(`light`)).toBe(!0),expect(document.documentElement.classList.contains(`dark`)).toBe(!1)}),it(`resolves the "system" theme to dark when the OS reports a dark color scheme preference`,()=>{vi.spyOn(window,`matchMedia`).mockReturnValue({matches:!0,media:`(prefers-color-scheme: dark)`,onchange:null,addEventListener:vi.fn(),removeEventListener:vi.fn(),addListener:vi.fn(),removeListener:vi.fn(),dispatchEvent:vi.fn()}),o(c(e,{defaultTheme:`system`,children:c(ThemeConsumer,{})})),expect(document.documentElement.classList.contains(`dark`)).toBe(!0)}),it(`replaces the previous theme class instead of stacking classes when the theme changes`,()=>{o(c(e,{defaultTheme:`dark`,children:c(ThemeConsumer,{})})),a.click(r.getByText(`set-light`)),expect(document.documentElement.classList.contains(`light`)).toBe(!0),expect(document.documentElement.classList.contains(`dark`)).toBe(!1)}),it(`temporarily inserts a style tag that disables transitions when disableTransitionOnChange is true`,()=>{o(c(e,{disableTransitionOnChange:!0,children:c(ThemeConsumer,{})})),expect(document.head.querySelector(`style`)).not.toBeNull()}),describe(`useTheme`,()=>{it(`throws when called outside of a ThemeProvider`,()=>{expect(()=>i(()=>t())).toThrow(`useTheme must be used within a ThemeProvider`)}),it(`returns the current theme and a setTheme updater`,()=>{let{result:n}=i(()=>t(),{wrapper:({children:t})=>c(e,{defaultTheme:`light`,children:t})});expect(n.current.theme).toBe(`light`),expect(typeof n.current.setTheme).toBe(`function`)}),it(`updates the theme and persists the choice to localStorage under the default storage key`,()=>{let{result:n}=i(()=>t(),{wrapper:({children:t})=>c(e,{children:t})});s(()=>n.current.setTheme(`dark`)),expect(n.current.theme).toBe(`dark`),expect(window.localStorage.getItem(`vite-ui-theme`)).toBe(`dark`)}),it(`persists the choice under a custom storageKey`,()=>{let{result:n}=i(()=>t(),{wrapper:({children:t})=>c(e,{storageKey:`acme-theme`,children:t})});s(()=>n.current.setTheme(`light`)),expect(window.localStorage.getItem(`acme-theme`)).toBe(`light`)}),it(`keeps the persisted theme across a remount of the provider`,()=>{let{result:n,unmount:r}=i(()=>t(),{wrapper:({children:t})=>c(e,{children:t})});s(()=>n.current.setTheme(`dark`)),r();let{result:a}=i(()=>t(),{wrapper:({children:t})=>c(e,{children:t})});expect(a.current.theme).toBe(`dark`)})}),describe(`ModeToggle`,()=>{it(`renders a trigger button with an accessible "Toggle theme" label`,()=>{o(c(e,{children:c(n,{})})),expect(r.getByRole(`button`,{name:`Toggle theme`})).not.toBeNull()}),it(`opens the menu and lists the Light, Dark, and System options`,()=>{o(c(e,{children:c(n,{})})),openModeToggleMenu(),expect(r.getByRole(`menuitem`,{name:`Light`})).not.toBeNull(),expect(r.getByRole(`menuitem`,{name:`Dark`})).not.toBeNull(),expect(r.getByRole(`menuitem`,{name:`System`})).not.toBeNull()}),it(`switches to the dark theme when the Dark option is clicked`,()=>{o(l(e,{children:[c(n,{}),c(ThemeConsumer,{})]})),openModeToggleMenu(),a.click(r.getByRole(`menuitem`,{name:`Dark`})),expect(r.getByTestId(`theme-value`).textContent).toBe(`dark`),expect(document.documentElement.classList.contains(`dark`)).toBe(!0),expect(window.localStorage.getItem(`vite-ui-theme`)).toBe(`dark`)}),it(`switches to the light theme when the Light option is clicked`,()=>{o(l(e,{defaultTheme:`dark`,children:[c(n,{}),c(ThemeConsumer,{})]})),openModeToggleMenu(),a.click(r.getByRole(`menuitem`,{name:`Light`})),expect(r.getByTestId(`theme-value`).textContent).toBe(`light`),expect(document.documentElement.classList.contains(`light`)).toBe(!0),expect(window.localStorage.getItem(`vite-ui-theme`)).toBe(`light`)}),it(`switches to the system theme when the System option is clicked`,()=>{o(l(e,{defaultTheme:`dark`,children:[c(n,{}),c(ThemeConsumer,{})]})),openModeToggleMenu(),a.click(r.getByRole(`menuitem`,{name:`System`})),expect(r.getByTestId(`theme-value`).textContent).toBe(`system`),expect(window.localStorage.getItem(`vite-ui-theme`)).toBe(`system`)}),it(`persists the theme selected through the menu across a remount of the provider`,()=>{let{unmount:t}=o(c(e,{children:c(n,{})}));openModeToggleMenu(),a.click(r.getByRole(`menuitem`,{name:`Dark`})),t(),o(c(e,{children:c(ThemeConsumer,{})})),expect(r.getByTestId(`theme-value`).textContent).toBe(`dark`)})})});
|
|
2
|
-
//# sourceMappingURL=theme.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme.spec.js","names":[],"sources":["../../src/components/theme.spec.tsx"],"sourcesContent":["import { act, fireEvent, render, renderHook, screen } from '@testing-library/react'\n\nimport { ModeToggle, ThemeProvider, useTheme } from './theme'\n\nfunction ThemeConsumer() {\n const { theme, setTheme } = useTheme()\n\n return (\n <div>\n <span data-testid=\"theme-value\">{theme}</span>\n <button type=\"button\" onClick={() => setTheme('dark')}>\n set-dark\n </button>\n <button type=\"button\" onClick={() => setTheme('light')}>\n set-light\n </button>\n <button type=\"button\" onClick={() => setTheme('system')}>\n set-system\n </button>\n </div>\n )\n}\n\nfunction openModeToggleMenu() {\n const trigger = screen.getByRole('button', { name: 'Toggle theme' })\n\n fireEvent.pointerDown(trigger, { button: 0 })\n\n return trigger\n}\n\ndescribe('ThemeProvider', () => {\n it('renders its children', () => {\n render(\n <ThemeProvider>\n <span>Hello world</span>\n </ThemeProvider>\n )\n\n expect(screen.getByText('Hello world')).not.toBeNull()\n })\n\n it('defaults to the \"system\" theme when no defaultTheme or persisted value is provided', () => {\n render(\n <ThemeProvider>\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(screen.getByTestId('theme-value').textContent).toBe('system')\n })\n\n it('uses the provided defaultTheme when nothing is persisted', () => {\n render(\n <ThemeProvider defaultTheme=\"dark\">\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(screen.getByTestId('theme-value').textContent).toBe('dark')\n })\n\n it('reads a previously persisted theme from localStorage under the default storage key', () => {\n window.localStorage.setItem('vite-ui-theme', 'light')\n\n render(\n <ThemeProvider>\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(screen.getByTestId('theme-value').textContent).toBe('light')\n })\n\n it('reads a previously persisted theme from a custom storageKey', () => {\n window.localStorage.setItem('acme-theme', 'dark')\n\n render(\n <ThemeProvider storageKey=\"acme-theme\">\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(screen.getByTestId('theme-value').textContent).toBe('dark')\n })\n\n it('applies the resolved theme as a class on the document element', () => {\n render(\n <ThemeProvider defaultTheme=\"dark\">\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(document.documentElement.classList.contains('dark')).toBe(true)\n expect(document.documentElement.classList.contains('light')).toBe(false)\n })\n\n it('resolves the \"system\" theme to light when the OS preference does not match dark', () => {\n render(\n <ThemeProvider defaultTheme=\"system\">\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(document.documentElement.classList.contains('light')).toBe(true)\n expect(document.documentElement.classList.contains('dark')).toBe(false)\n })\n\n it('resolves the \"system\" theme to dark when the OS reports a dark color scheme preference', () => {\n vi.spyOn(window, 'matchMedia').mockReturnValue({\n matches: true,\n media: '(prefers-color-scheme: dark)',\n onchange: null,\n addEventListener: vi.fn(),\n removeEventListener: vi.fn(),\n addListener: vi.fn(),\n removeListener: vi.fn(),\n dispatchEvent: vi.fn()\n } as unknown as MediaQueryList)\n\n render(\n <ThemeProvider defaultTheme=\"system\">\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(document.documentElement.classList.contains('dark')).toBe(true)\n })\n\n it('replaces the previous theme class instead of stacking classes when the theme changes', () => {\n render(\n <ThemeProvider defaultTheme=\"dark\">\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n fireEvent.click(screen.getByText('set-light'))\n\n expect(document.documentElement.classList.contains('light')).toBe(true)\n expect(document.documentElement.classList.contains('dark')).toBe(false)\n })\n\n it('temporarily inserts a style tag that disables transitions when disableTransitionOnChange is true', () => {\n render(\n <ThemeProvider disableTransitionOnChange>\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(document.head.querySelector('style')).not.toBeNull()\n })\n\n describe('useTheme', () => {\n it('throws when called outside of a ThemeProvider', () => {\n expect(() => renderHook(() => useTheme())).toThrow('useTheme must be used within a ThemeProvider')\n })\n\n it('returns the current theme and a setTheme updater', () => {\n const { result } = renderHook(() => useTheme(), {\n wrapper: ({ children }) => <ThemeProvider defaultTheme=\"light\">{children}</ThemeProvider>\n })\n\n expect(result.current.theme).toBe('light')\n expect(typeof result.current.setTheme).toBe('function')\n })\n\n it('updates the theme and persists the choice to localStorage under the default storage key', () => {\n const { result } = renderHook(() => useTheme(), {\n wrapper: ({ children }) => <ThemeProvider>{children}</ThemeProvider>\n })\n\n act(() => result.current.setTheme('dark'))\n\n expect(result.current.theme).toBe('dark')\n expect(window.localStorage.getItem('vite-ui-theme')).toBe('dark')\n })\n\n it('persists the choice under a custom storageKey', () => {\n const { result } = renderHook(() => useTheme(), {\n wrapper: ({ children }) => <ThemeProvider storageKey=\"acme-theme\">{children}</ThemeProvider>\n })\n\n act(() => result.current.setTheme('light'))\n\n expect(window.localStorage.getItem('acme-theme')).toBe('light')\n })\n\n it('keeps the persisted theme across a remount of the provider', () => {\n const { result, unmount } = renderHook(() => useTheme(), {\n wrapper: ({ children }) => <ThemeProvider>{children}</ThemeProvider>\n })\n\n act(() => result.current.setTheme('dark'))\n unmount()\n\n const { result: secondResult } = renderHook(() => useTheme(), {\n wrapper: ({ children }) => <ThemeProvider>{children}</ThemeProvider>\n })\n\n expect(secondResult.current.theme).toBe('dark')\n })\n })\n\n describe('ModeToggle', () => {\n it('renders a trigger button with an accessible \"Toggle theme\" label', () => {\n render(\n <ThemeProvider>\n <ModeToggle />\n </ThemeProvider>\n )\n\n expect(screen.getByRole('button', { name: 'Toggle theme' })).not.toBeNull()\n })\n\n it('opens the menu and lists the Light, Dark, and System options', () => {\n render(\n <ThemeProvider>\n <ModeToggle />\n </ThemeProvider>\n )\n\n openModeToggleMenu()\n\n expect(screen.getByRole('menuitem', { name: 'Light' })).not.toBeNull()\n expect(screen.getByRole('menuitem', { name: 'Dark' })).not.toBeNull()\n expect(screen.getByRole('menuitem', { name: 'System' })).not.toBeNull()\n })\n\n it('switches to the dark theme when the Dark option is clicked', () => {\n render(\n <ThemeProvider>\n <ModeToggle />\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n openModeToggleMenu()\n fireEvent.click(screen.getByRole('menuitem', { name: 'Dark' }))\n\n expect(screen.getByTestId('theme-value').textContent).toBe('dark')\n expect(document.documentElement.classList.contains('dark')).toBe(true)\n expect(window.localStorage.getItem('vite-ui-theme')).toBe('dark')\n })\n\n it('switches to the light theme when the Light option is clicked', () => {\n render(\n <ThemeProvider defaultTheme=\"dark\">\n <ModeToggle />\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n openModeToggleMenu()\n fireEvent.click(screen.getByRole('menuitem', { name: 'Light' }))\n\n expect(screen.getByTestId('theme-value').textContent).toBe('light')\n expect(document.documentElement.classList.contains('light')).toBe(true)\n expect(window.localStorage.getItem('vite-ui-theme')).toBe('light')\n })\n\n it('switches to the system theme when the System option is clicked', () => {\n render(\n <ThemeProvider defaultTheme=\"dark\">\n <ModeToggle />\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n openModeToggleMenu()\n fireEvent.click(screen.getByRole('menuitem', { name: 'System' }))\n\n expect(screen.getByTestId('theme-value').textContent).toBe('system')\n expect(window.localStorage.getItem('vite-ui-theme')).toBe('system')\n })\n\n it('persists the theme selected through the menu across a remount of the provider', () => {\n const { unmount } = render(\n <ThemeProvider>\n <ModeToggle />\n </ThemeProvider>\n )\n\n openModeToggleMenu()\n fireEvent.click(screen.getByRole('menuitem', { name: 'Dark' }))\n unmount()\n\n render(\n <ThemeProvider>\n <ThemeConsumer />\n </ThemeProvider>\n )\n\n expect(screen.getByTestId('theme-value').textContent).toBe('dark')\n })\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"../timeline-pBm0t1tb.js";import{a as u,r as d}from"../react.esm-dE9nuHcL.js";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{createRef as m}from"react";describe(`Timeline`,()=>{it(`forwards the ref to the underlying ol element`,()=>{let e=m();d(f(c,{ref:e,children:f(t,{title:`Order placed`,date:`2024-01-01`})})),expect(e.current).not.toBeNull(),expect(e.current?.tagName).toBe(`OL`),expect(e.current?.getAttribute(`data-slot`)).toBe(`timeline`)}),it(`renders the empty state when there are no TimelineItem children`,()=>{let{container:e}=d(f(c,{children:f(`div`,{children:`Not a timeline item`})}));expect(u.queryByText(`Not a timeline item`)).toBeNull(),expect(u.getByText(`No timeline items to display`)).not.toBeNull(),expect(e.querySelector(`[data-slot="timeline-empty"]`)).not.toBeNull()}),it(`renders a custom message when TimelineEmpty is used on its own with children`,()=>{d(f(e,{children:`Nothing here yet`})),expect(u.getByText(`Nothing here yet`)).not.toBeNull(),expect(u.queryByText(`No timeline items to display`)).toBeNull()}),it(`applies the requested size to the root`,()=>{let{container:e}=d(f(c,{size:`lg`,children:f(t,{title:`Step`})})),n=e.querySelector(`[data-slot="timeline"]`);expect(n?.getAttribute(`data-size`)).toBe(`lg`),expect(n?.className).toContain(`gap-8`)}),it(`shows a connector on every item except the last one by default`,()=>{let{container:e}=d(p(c,{children:[f(t,{title:`First`}),f(t,{title:`Second`})]})),n=e.querySelectorAll(`[data-slot="timeline-item"]`);expect(n).toHaveLength(2),expect(n[0]?.querySelector(`[data-slot="timeline-connector"]`)).not.toBeNull(),expect(n[1]?.querySelector(`[data-slot="timeline-connector"]`)).toBeNull()}),it(`lets an item opt out of the connector explicitly`,()=>{let{container:e}=d(p(c,{children:[f(t,{title:`First`,showConnector:!1}),f(t,{title:`Second`})]})),n=e.querySelectorAll(`[data-slot="timeline-item"]`);expect(n[0]?.querySelector(`[data-slot="timeline-connector"]`)).toBeNull()}),it(`propagates the Timeline iconSize down to each item icon`,()=>{let{container:e}=d(f(c,{iconSize:`lg`,children:f(t,{title:`First`})}));expect(e.querySelector(`[data-slot="timeline-icon"]`)?.getAttribute(`data-size`)).toBe(`lg`)}),it(`renders custom children instead of the default layout when provided`,()=>{let{container:e}=d(f(c,{children:f(t,{children:f(`span`,{children:`Custom body`})})}));expect(u.getByText(`Custom body`)).not.toBeNull(),expect(e.querySelector(`[data-slot="timeline-title"]`)).toBeNull()}),it(`renders the loading state with aria-busy and a connector placeholder`,()=>{let{container:e}=d(p(c,{children:[f(t,{loading:!0}),f(t,{title:`Done`})]})),n=e.querySelectorAll(`[data-slot="timeline-item"]`);expect(n[0]?.getAttribute(`aria-busy`)).toBe(`true`)}),it(`renders the error state with role alert and the provided message`,()=>{d(f(c,{children:f(t,{error:`Payment failed`,title:`Charge card`,date:`2024-02-01`})}));let e=u.getByRole(`alert`);expect(e.getAttribute(`data-status`)).toBe(`error`),expect(u.getByText(`Payment failed`)).not.toBeNull(),expect(u.getByText(`Charge card`)).not.toBeNull()}),it(`falls back to the "Error" title when the error item has no title`,()=>{d(f(c,{children:f(t,{error:`Something went wrong`})})),expect(u.getByText(`Error`)).not.toBeNull()}),it(`marks the in-progress item with aria-current="step"`,()=>{let{container:e}=d(f(c,{children:f(t,{title:`Working on it`,status:`in-progress`})}));expect(e.querySelector(`[data-slot="timeline-item"]`)?.getAttribute(`aria-current`)).toBe(`step`)}),it(`forwards refs on the standalone subcomponents`,()=>{let e=m(),c=m(),u=m(),h=m(),g=m(),_=m(),v=m(),y=m();d(p(`ul`,{children:[f(t,{ref:e,title:`Item`}),f(r,{ref:c,date:`2024-01-01`}),f(i,{ref:u}),f(a,{ref:h,children:`Header`}),f(l,{ref:g,children:`Title`}),f(o,{ref:_,children:`Content`}),f(s,{ref:v}),f(n,{ref:y,children:`Description`})]})),expect(e.current?.tagName).toBe(`LI`),expect(c.current?.tagName).toBe(`TIME`),expect(u.current?.tagName).toBe(`DIV`),expect(h.current?.tagName).toBe(`DIV`),expect(g.current?.tagName).toBe(`H3`),expect(_.current?.tagName).toBe(`DIV`),expect(v.current?.tagName).toBe(`DIV`),expect(y.current?.tagName).toBe(`P`)})}),describe(`TimelineTime`,()=>{it(`formats a given date using the default format`,()=>{d(f(r,{date:new Date(2024,2,15)})),expect(u.getByText(`Mar 15, 2024`)).not.toBeNull()}),it(`prefers explicit children over the formatted date`,()=>{d(f(r,{date:new Date(2024,2,15),children:`Custom label`})),expect(u.getByText(`Custom label`)).not.toBeNull()}),it(`renders nothing for an invalid date and omits the dateTime attribute`,()=>{let{container:e}=d(f(r,{date:`not-a-date`})),t=e.querySelector(`[data-slot="timeline-time"]`);expect(t?.textContent).toBe(``),expect(t?.hasAttribute(`datetime`)).toBe(!1)}),it(`applies a custom Intl.DateTimeFormat`,()=>{d(f(r,{date:new Date(2024,2,15),format:{year:`numeric`,month:`long`,day:`numeric`}})),expect(u.getByText(`March 15, 2024`)).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=timeline.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.spec.js","names":[],"sources":["../../src/components/timeline.spec.tsx"],"sourcesContent":["import { createRef } from 'react'\n\nimport { render, screen } from '@testing-library/react'\n\nimport {\n Timeline,\n TimelineConnector,\n TimelineContent,\n TimelineDescription,\n TimelineEmpty,\n TimelineHeader,\n TimelineIcon,\n TimelineItem,\n TimelineTime,\n TimelineTitle\n} from './timeline'\n\ndescribe('Timeline', () => {\n it('forwards the ref to the underlying ol element', () => {\n const ref = createRef<HTMLOListElement>()\n\n render(\n <Timeline ref={ref}>\n <TimelineItem title=\"Order placed\" date=\"2024-01-01\" />\n </Timeline>\n )\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.tagName).toBe('OL')\n expect(ref.current?.getAttribute('data-slot')).toBe('timeline')\n })\n\n it('renders the empty state when there are no TimelineItem children', () => {\n const { container } = render(\n <Timeline>\n <div>Not a timeline item</div>\n </Timeline>\n )\n\n expect(screen.queryByText('Not a timeline item')).toBeNull()\n expect(screen.getByText('No timeline items to display')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"timeline-empty\"]')).not.toBeNull()\n })\n\n it('renders a custom message when TimelineEmpty is used on its own with children', () => {\n render(<TimelineEmpty>Nothing here yet</TimelineEmpty>)\n\n expect(screen.getByText('Nothing here yet')).not.toBeNull()\n expect(screen.queryByText('No timeline items to display')).toBeNull()\n })\n\n it('applies the requested size to the root', () => {\n const { container } = render(\n <Timeline size=\"lg\">\n <TimelineItem title=\"Step\" />\n </Timeline>\n )\n\n const root = container.querySelector('[data-slot=\"timeline\"]')\n\n expect(root?.getAttribute('data-size')).toBe('lg')\n expect(root?.className).toContain('gap-8')\n })\n\n it('shows a connector on every item except the last one by default', () => {\n const { container } = render(\n <Timeline>\n <TimelineItem title=\"First\" />\n <TimelineItem title=\"Second\" />\n </Timeline>\n )\n\n const items = container.querySelectorAll('[data-slot=\"timeline-item\"]')\n\n expect(items).toHaveLength(2)\n expect(items[0]?.querySelector('[data-slot=\"timeline-connector\"]')).not.toBeNull()\n expect(items[1]?.querySelector('[data-slot=\"timeline-connector\"]')).toBeNull()\n })\n\n it('lets an item opt out of the connector explicitly', () => {\n const { container } = render(\n <Timeline>\n <TimelineItem title=\"First\" showConnector={false} />\n <TimelineItem title=\"Second\" />\n </Timeline>\n )\n\n const items = container.querySelectorAll('[data-slot=\"timeline-item\"]')\n\n expect(items[0]?.querySelector('[data-slot=\"timeline-connector\"]')).toBeNull()\n })\n\n it('propagates the Timeline iconSize down to each item icon', () => {\n const { container } = render(\n <Timeline iconSize=\"lg\">\n <TimelineItem title=\"First\" />\n </Timeline>\n )\n\n expect(container.querySelector('[data-slot=\"timeline-icon\"]')?.getAttribute('data-size')).toBe('lg')\n })\n\n it('renders custom children instead of the default layout when provided', () => {\n const { container } = render(\n <Timeline>\n <TimelineItem>\n <span>Custom body</span>\n </TimelineItem>\n </Timeline>\n )\n\n expect(screen.getByText('Custom body')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"timeline-title\"]')).toBeNull()\n })\n\n it('renders the loading state with aria-busy and a connector placeholder', () => {\n const { container } = render(\n <Timeline>\n <TimelineItem loading />\n <TimelineItem title=\"Done\" />\n </Timeline>\n )\n\n const items = container.querySelectorAll('[data-slot=\"timeline-item\"]')\n\n expect(items[0]?.getAttribute('aria-busy')).toBe('true')\n })\n\n it('renders the error state with role alert and the provided message', () => {\n render(\n <Timeline>\n <TimelineItem error=\"Payment failed\" title=\"Charge card\" date=\"2024-02-01\" />\n </Timeline>\n )\n\n const alert = screen.getByRole('alert')\n\n expect(alert.getAttribute('data-status')).toBe('error')\n expect(screen.getByText('Payment failed')).not.toBeNull()\n expect(screen.getByText('Charge card')).not.toBeNull()\n })\n\n it('falls back to the \"Error\" title when the error item has no title', () => {\n render(\n <Timeline>\n <TimelineItem error=\"Something went wrong\" />\n </Timeline>\n )\n\n expect(screen.getByText('Error')).not.toBeNull()\n })\n\n it('marks the in-progress item with aria-current=\"step\"', () => {\n const { container } = render(\n <Timeline>\n <TimelineItem title=\"Working on it\" status=\"in-progress\" />\n </Timeline>\n )\n\n expect(container.querySelector('[data-slot=\"timeline-item\"]')?.getAttribute('aria-current')).toBe('step')\n })\n\n it('forwards refs on the standalone subcomponents', () => {\n const itemRef = createRef<HTMLLIElement>()\n const timeRef = createRef<HTMLTimeElement>()\n const connectorRef = createRef<HTMLDivElement>()\n const headerRef = createRef<HTMLDivElement>()\n const titleRef = createRef<HTMLHeadingElement>()\n const contentRef = createRef<HTMLDivElement>()\n const iconRef = createRef<HTMLDivElement>()\n const descriptionRef = createRef<HTMLParagraphElement>()\n\n render(\n <ul>\n <TimelineItem ref={itemRef} title=\"Item\" />\n <TimelineTime ref={timeRef} date=\"2024-01-01\" />\n <TimelineConnector ref={connectorRef} />\n <TimelineHeader ref={headerRef}>Header</TimelineHeader>\n <TimelineTitle ref={titleRef}>Title</TimelineTitle>\n <TimelineContent ref={contentRef}>Content</TimelineContent>\n <TimelineIcon ref={iconRef} />\n <TimelineDescription ref={descriptionRef}>Description</TimelineDescription>\n </ul>\n )\n\n expect(itemRef.current?.tagName).toBe('LI')\n expect(timeRef.current?.tagName).toBe('TIME')\n expect(connectorRef.current?.tagName).toBe('DIV')\n expect(headerRef.current?.tagName).toBe('DIV')\n expect(titleRef.current?.tagName).toBe('H3')\n expect(contentRef.current?.tagName).toBe('DIV')\n expect(iconRef.current?.tagName).toBe('DIV')\n expect(descriptionRef.current?.tagName).toBe('P')\n })\n})\n\ndescribe('TimelineTime', () => {\n it('formats a given date using the default format', () => {\n render(<TimelineTime date={new Date(2024, 2, 15)} />)\n\n expect(screen.getByText('Mar 15, 2024')).not.toBeNull()\n })\n\n it('prefers explicit children over the formatted date', () => {\n render(<TimelineTime date={new Date(2024, 2, 15)}>Custom label</TimelineTime>)\n\n expect(screen.getByText('Custom label')).not.toBeNull()\n })\n\n it('renders nothing for an invalid date and omits the dateTime attribute', () => {\n const { container } = render(<TimelineTime date=\"not-a-date\" />)\n\n const time = container.querySelector('[data-slot=\"timeline-time\"]')\n\n expect(time?.textContent).toBe('')\n expect(time?.hasAttribute('datetime')).toBe(false)\n })\n\n it('applies a custom Intl.DateTimeFormat', () => {\n render(<TimelineTime date={new Date(2024, 2, 15)} format={{ year: 'numeric', month: 'long', day: 'numeric' }} />)\n\n expect(screen.getByText('March 15, 2024')).not.toBeNull()\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,t}from"../toggle-group-D0OIpZN-.js";import{a as n,n as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";describe(`ToggleGroup`,()=>{it(`renders the root with default data attributes and applies them to items`,()=>{let{container:r}=i(o(t,{type:`single`,children:[a(e,{value:`bold`,children:`Bold`}),a(e,{value:`italic`,children:`Italic`})]})),s=r.querySelector(`[data-slot="toggle-group"]`),c=n.getByText(`Bold`);expect(s?.getAttribute(`data-variant`)).toBe(`ghost`),expect(s?.getAttribute(`data-color`)).toBe(`primary`),expect(s?.getAttribute(`data-size`)).toBe(`md`),expect(s?.getAttribute(`data-orientation`)).toBe(`horizontal`),expect(c.getAttribute(`data-slot`)).toBe(`toggle-group-item`),expect(c.getAttribute(`data-variant`)).toBe(`ghost`),expect(c.getAttribute(`data-color`)).toBe(`primary`),expect(c.getAttribute(`data-size`)).toBe(`md`)}),it(`toggles a single item as pressed and unpresses the previous item`,()=>{i(o(t,{type:`single`,children:[a(e,{value:`bold`,children:`Bold`}),a(e,{value:`italic`,children:`Italic`})]}));let s=n.getByText(`Bold`),c=n.getByText(`Italic`);r.click(s),expect(s.getAttribute(`data-state`)).toBe(`on`),expect(s.getAttribute(`role`)).toBe(`radio`),expect(s.getAttribute(`aria-checked`)).toBe(`true`),r.click(c),expect(c.getAttribute(`data-state`)).toBe(`on`),expect(s.getAttribute(`data-state`)).toBe(`off`)}),it(`allows multiple items to stay pressed when type is multiple`,()=>{i(o(t,{type:`multiple`,children:[a(e,{value:`bold`,children:`Bold`}),a(e,{value:`italic`,children:`Italic`})]}));let s=n.getByText(`Bold`),c=n.getByText(`Italic`);r.click(s),r.click(c),expect(s.getAttribute(`data-state`)).toBe(`on`),expect(c.getAttribute(`data-state`)).toBe(`on`)}),it(`calls onValueChange with the updated selection`,()=>{let s=vi.fn();i(o(t,{type:`single`,onValueChange:s,children:[a(e,{value:`bold`,children:`Bold`}),a(e,{value:`italic`,children:`Italic`})]})),r.click(n.getByText(`Italic`)),expect(s).toHaveBeenCalledWith(`italic`)}),it(`applies the vertical orientation attribute and class to the root`,()=>{let{container:n}=i(a(t,{type:`single`,orientation:`vertical`,children:a(e,{value:`bold`,children:`Bold`})})),r=n.querySelector(`[data-slot="toggle-group"]`);expect(r?.getAttribute(`data-orientation`)).toBe(`vertical`),expect(r?.className).toContain(`data-vertical:flex-col`)}),it(`exposes the spacing value as a data attribute and CSS variable`,()=>{let{container:n}=i(a(t,{type:`single`,spacing:2,children:a(e,{value:`bold`,children:`Bold`})})),r=n.querySelector(`[data-slot="toggle-group"]`);expect(r.getAttribute(`data-spacing`)).toBe(`2`),expect(r.style.getPropertyValue(`--gap`)).toBe(`2`)}),it(`lets root-level color and variant take precedence over an item-level override`,()=>{i(a(t,{type:`single`,variant:`outline`,color:`red`,children:a(e,{value:`bold`,variant:`secondary`,color:`blue`,children:`Bold`})}));let r=n.getByText(`Bold`);expect(r.getAttribute(`data-variant`)).toBe(`outline`),expect(r.getAttribute(`data-color`)).toBe(`red`)}),it(`disables an item and prevents it from toggling on`,()=>{let o=vi.fn();i(a(t,{type:`single`,onValueChange:o,children:a(e,{value:`bold`,disabled:!0,children:`Bold`})}));let s=n.getByText(`Bold`);expect(s.disabled).toBe(!0),r.click(s),expect(o).not.toHaveBeenCalled()})});
|
|
2
|
-
//# sourceMappingURL=toggle-group.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.spec.js","names":[],"sources":["../../src/components/toggle-group.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { ToggleGroup, ToggleGroupItem } from './toggle-group'\n\ndescribe('ToggleGroup', () => {\n it('renders the root with default data attributes and applies them to items', () => {\n const { container } = render(\n <ToggleGroup type=\"single\">\n <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n <ToggleGroupItem value=\"italic\">Italic</ToggleGroupItem>\n </ToggleGroup>\n )\n\n const root = container.querySelector('[data-slot=\"toggle-group\"]')\n const item = screen.getByText('Bold')\n\n expect(root?.getAttribute('data-variant')).toBe('ghost')\n expect(root?.getAttribute('data-color')).toBe('primary')\n expect(root?.getAttribute('data-size')).toBe('md')\n expect(root?.getAttribute('data-orientation')).toBe('horizontal')\n expect(item.getAttribute('data-slot')).toBe('toggle-group-item')\n expect(item.getAttribute('data-variant')).toBe('ghost')\n expect(item.getAttribute('data-color')).toBe('primary')\n expect(item.getAttribute('data-size')).toBe('md')\n })\n\n it('toggles a single item as pressed and unpresses the previous item', () => {\n render(\n <ToggleGroup type=\"single\">\n <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n <ToggleGroupItem value=\"italic\">Italic</ToggleGroupItem>\n </ToggleGroup>\n )\n\n const bold = screen.getByText('Bold')\n const italic = screen.getByText('Italic')\n\n fireEvent.click(bold)\n\n expect(bold.getAttribute('data-state')).toBe('on')\n expect(bold.getAttribute('role')).toBe('radio')\n expect(bold.getAttribute('aria-checked')).toBe('true')\n\n fireEvent.click(italic)\n\n expect(italic.getAttribute('data-state')).toBe('on')\n expect(bold.getAttribute('data-state')).toBe('off')\n })\n\n it('allows multiple items to stay pressed when type is multiple', () => {\n render(\n <ToggleGroup type=\"multiple\">\n <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n <ToggleGroupItem value=\"italic\">Italic</ToggleGroupItem>\n </ToggleGroup>\n )\n\n const bold = screen.getByText('Bold')\n const italic = screen.getByText('Italic')\n\n fireEvent.click(bold)\n fireEvent.click(italic)\n\n expect(bold.getAttribute('data-state')).toBe('on')\n expect(italic.getAttribute('data-state')).toBe('on')\n })\n\n it('calls onValueChange with the updated selection', () => {\n const onValueChange = vi.fn()\n\n render(\n <ToggleGroup type=\"single\" onValueChange={onValueChange}>\n <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n <ToggleGroupItem value=\"italic\">Italic</ToggleGroupItem>\n </ToggleGroup>\n )\n\n fireEvent.click(screen.getByText('Italic'))\n\n expect(onValueChange).toHaveBeenCalledWith('italic')\n })\n\n it('applies the vertical orientation attribute and class to the root', () => {\n const { container } = render(\n <ToggleGroup type=\"single\" orientation=\"vertical\">\n <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n </ToggleGroup>\n )\n\n const root = container.querySelector('[data-slot=\"toggle-group\"]')\n\n expect(root?.getAttribute('data-orientation')).toBe('vertical')\n expect(root?.className).toContain('data-vertical:flex-col')\n })\n\n it('exposes the spacing value as a data attribute and CSS variable', () => {\n const { container } = render(\n <ToggleGroup type=\"single\" spacing={2}>\n <ToggleGroupItem value=\"bold\">Bold</ToggleGroupItem>\n </ToggleGroup>\n )\n\n const root = container.querySelector('[data-slot=\"toggle-group\"]') as HTMLElement\n\n expect(root.getAttribute('data-spacing')).toBe('2')\n expect(root.style.getPropertyValue('--gap')).toBe('2')\n })\n\n it('lets root-level color and variant take precedence over an item-level override', () => {\n render(\n <ToggleGroup type=\"single\" variant=\"outline\" color=\"red\">\n <ToggleGroupItem value=\"bold\" variant=\"secondary\" color=\"blue\">\n Bold\n </ToggleGroupItem>\n </ToggleGroup>\n )\n\n const item = screen.getByText('Bold')\n\n expect(item.getAttribute('data-variant')).toBe('outline')\n expect(item.getAttribute('data-color')).toBe('red')\n })\n\n it('disables an item and prevents it from toggling on', () => {\n const onValueChange = vi.fn()\n\n render(\n <ToggleGroup type=\"single\" onValueChange={onValueChange}>\n <ToggleGroupItem value=\"bold\" disabled>\n Bold\n </ToggleGroupItem>\n </ToggleGroup>\n )\n\n const bold = screen.getByText('Bold') as HTMLButtonElement\n\n expect(bold.disabled).toBe(true)\n\n fireEvent.click(bold)\n\n expect(onValueChange).not.toHaveBeenCalled()\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../toggle-DJJkcqDy.js";import{a as t,n,r}from"../react.esm-dE9nuHcL.js";import{jsx as i}from"react/jsx-runtime";describe(`Toggle`,()=>{it(`renders with the default ghost variant, primary color and md size`,()=>{let{container:t}=r(i(e,{"aria-label":`Bold`})),n=t.querySelector(`[data-slot="toggle"]`);expect(n).not.toBeNull(),expect(n?.getAttribute(`data-variant`)).toBe(`ghost`),expect(n?.getAttribute(`data-color`)).toBe(`primary`),expect(n?.getAttribute(`data-size`)).toBe(`md`),expect(n?.getAttribute(`aria-pressed`)).toBe(`false`)}),it(`toggles the pressed state when clicked`,()=>{r(i(e,{"aria-label":`Bold`}));let a=t.getByRole(`button`,{name:`Bold`});n.click(a),expect(a.getAttribute(`aria-pressed`)).toBe(`true`),expect(a.getAttribute(`data-state`)).toBe(`on`)}),it(`applies the requested variant and size classes`,()=>{let{container:t}=r(i(e,{variant:`outline`,size:`lg`,"aria-label":`Italic`})),n=t.querySelector(`[data-slot="toggle"]`);expect(n?.getAttribute(`data-variant`)).toBe(`outline`),expect(n?.getAttribute(`data-size`)).toBe(`lg`),expect(n?.className).toContain(`h-10`)}),it(`applies the color variant css variables`,()=>{let{container:t}=r(i(e,{color:`red`,"aria-label":`Danger`})),n=t.querySelector(`[data-slot="toggle"]`);expect(n?.getAttribute(`data-color`)).toBe(`red`),expect(n?.className).toContain(`[--button-solid:var(--red)]`)}),it(`does not respond to clicks when disabled`,()=>{r(i(e,{disabled:!0,"aria-label":`Disabled toggle`}));let a=t.getByRole(`button`,{name:`Disabled toggle`});n.click(a),expect(a.getAttribute(`aria-pressed`)).toBe(`false`),expect(a.hasAttribute(`disabled`)).toBe(!0)}),it(`forwards ref to the underlying button element`,()=>{let t={current:null};r(i(e,{ref:t,"aria-label":`Ref toggle`})),expect(t.current).toBeInstanceOf(HTMLButtonElement)})});
|
|
2
|
-
//# sourceMappingURL=toggle.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.spec.js","names":[],"sources":["../../src/components/toggle.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Toggle } from './toggle'\n\ndescribe('Toggle', () => {\n it('renders with the default ghost variant, primary color and md size', () => {\n const { container } = render(<Toggle aria-label=\"Bold\" />)\n\n const toggle = container.querySelector('[data-slot=\"toggle\"]')\n\n expect(toggle).not.toBeNull()\n expect(toggle?.getAttribute('data-variant')).toBe('ghost')\n expect(toggle?.getAttribute('data-color')).toBe('primary')\n expect(toggle?.getAttribute('data-size')).toBe('md')\n expect(toggle?.getAttribute('aria-pressed')).toBe('false')\n })\n\n it('toggles the pressed state when clicked', () => {\n render(<Toggle aria-label=\"Bold\" />)\n\n const toggle = screen.getByRole('button', { name: 'Bold' })\n\n fireEvent.click(toggle)\n\n expect(toggle.getAttribute('aria-pressed')).toBe('true')\n expect(toggle.getAttribute('data-state')).toBe('on')\n })\n\n it('applies the requested variant and size classes', () => {\n const { container } = render(<Toggle variant=\"outline\" size=\"lg\" aria-label=\"Italic\" />)\n\n const toggle = container.querySelector('[data-slot=\"toggle\"]')\n\n expect(toggle?.getAttribute('data-variant')).toBe('outline')\n expect(toggle?.getAttribute('data-size')).toBe('lg')\n expect(toggle?.className).toContain('h-10')\n })\n\n it('applies the color variant css variables', () => {\n const { container } = render(<Toggle color=\"red\" aria-label=\"Danger\" />)\n\n const toggle = container.querySelector('[data-slot=\"toggle\"]')\n\n expect(toggle?.getAttribute('data-color')).toBe('red')\n expect(toggle?.className).toContain('[--button-solid:var(--red)]')\n })\n\n it('does not respond to clicks when disabled', () => {\n render(<Toggle disabled aria-label=\"Disabled toggle\" />)\n\n const toggle = screen.getByRole('button', { name: 'Disabled toggle' })\n\n fireEvent.click(toggle)\n\n expect(toggle.getAttribute('aria-pressed')).toBe('false')\n expect(toggle.hasAttribute('disabled')).toBe(true)\n })\n\n it('forwards ref to the underlying button element', () => {\n const ref = { current: null as HTMLButtonElement | null }\n\n render(<Toggle ref={ref} aria-label=\"Ref toggle\" />)\n\n expect(ref.current).toBeInstanceOf(HTMLButtonElement)\n })\n})\n"],"mappings":"2KAIA,SAAS,aAAgB,CACvB,GAAG,wEAA2E,CAC5E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,aAAW,MAAQ,CAAA,CAAC,EAEnD,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,CAAM,CAAC,CAAC,IAAI,SAAS,EAC5B,OAAO,GAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,EACzD,OAAO,GAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACzD,OAAO,GAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACnD,OAAO,GAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,CAC3D,CAAC,EAED,GAAG,6CAAgD,CACjD,EAAO,EAAC,EAAD,CAAQ,aAAW,MAAQ,CAAA,CAAC,EAEnC,IAAM,EAAS,EAAO,UAAU,SAAU,CAAE,KAAM,MAAO,CAAC,EAE1D,EAAU,MAAM,CAAM,EAEtB,OAAO,EAAO,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EACvD,OAAO,EAAO,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CACrD,CAAC,EAED,GAAG,qDAAwD,CACzD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,QAAQ,UAAU,KAAK,KAAK,aAAW,QAAU,CAAA,CAAC,EAEjF,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,EAC3D,OAAO,GAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACnD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,MAAM,CAC5C,CAAC,EAED,GAAG,8CAAiD,CAClD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,MAAM,MAAM,aAAW,QAAU,CAAA,CAAC,EAEjE,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,EACrD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,6BAA6B,CACnE,CAAC,EAED,GAAG,+CAAkD,CACnD,EAAO,EAAC,EAAD,CAAQ,SAAA,GAAS,aAAW,iBAAmB,CAAA,CAAC,EAEvD,IAAM,EAAS,EAAO,UAAU,SAAU,CAAE,KAAM,iBAAkB,CAAC,EAErE,EAAU,MAAM,CAAM,EAEtB,OAAO,EAAO,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,EACxD,OAAO,EAAO,aAAa,UAAU,CAAC,CAAC,CAAC,KAAK,EAAI,CACnD,CAAC,EAED,GAAG,oDAAuD,CACxD,IAAM,EAAM,CAAE,QAAS,IAAiC,EAExD,EAAO,EAAC,EAAD,CAAa,MAAK,aAAW,YAAc,CAAA,CAAC,EAEnD,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,iBAAiB,CACtD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,i as t,n,r,t as i}from"../tooltip-CNUNWZvs.js";import{a,n as o,o as s,r as c}from"../react.esm-dE9nuHcL.js";import{jsx as l,jsxs as u}from"react/jsx-runtime";var ResizeObserverStub=class{observe(){}unobserve(){}disconnect(){}};beforeAll(()=>{window.ResizeObserver=ResizeObserverStub});function renderTooltip(){return c(l(r,{children:l(i,{label:`Save changes`,children:l(`button`,{type:`button`,children:`Save`})})}))}describe(`Tooltip`,()=>{it(`renders the trigger and keeps the tooltip content hidden until shown`,()=>{renderTooltip(),expect(a.getByRole(`button`,{name:`Save`})).not.toBeNull(),expect(a.queryByRole(`tooltip`)).toBeNull()}),it(`shows the tooltip content with the label when the trigger receives focus`,async()=>{renderTooltip(),o.focus(a.getByRole(`button`,{name:`Save`}));let e=await a.findByRole(`tooltip`);expect(e.textContent).toBe(`Save changes`),expect(e.getAttribute(`data-slot`)).toBe(`tooltip-content`),expect(e.className).toContain(`bg-foreground`)}),it(`hides the tooltip content when the trigger loses focus`,async()=>{renderTooltip();let e=a.getByRole(`button`,{name:`Save`});o.focus(e),await a.findByRole(`tooltip`),o.blur(e),await s(()=>expect(a.queryByRole(`tooltip`)).toBeNull())}),it(`marks the trigger with the tooltip data-slot`,()=>{let{container:e}=renderTooltip();expect(e.querySelector(`[data-slot="tooltip-trigger"]`)).not.toBeNull()}),it(`renders an arrow element inside the open content`,async()=>{renderTooltip(),o.focus(a.getByRole(`button`,{name:`Save`}));let e=await a.findByRole(`tooltip`);expect(e.querySelector(`svg`)).not.toBeNull()}),it(`does not render tooltip primitives and requires no provider when disabled`,()=>{c(l(i,{label:`Never shown`,disabled:!0,children:l(`button`,{type:`button`,children:`Plain trigger`})}));let e=a.getByRole(`button`,{name:`Plain trigger`});o.focus(e),expect(a.queryByRole(`tooltip`)).toBeNull(),expect(a.queryByText(`Never shown`)).toBeNull()}),it(`supports manual composition via TooltipRoot, TooltipTrigger and TooltipContent`,async()=>{c(l(r,{children:u(t,{defaultOpen:!0,children:[l(e,{children:`Trigger text`}),l(n,{children:`Composed content`})]})}));let i=await a.findByRole(`tooltip`);expect(i.textContent).toBe(`Composed content`),expect(a.getByText(`Trigger text`).getAttribute(`data-slot`)).toBe(`tooltip-trigger`)})});
|
|
2
|
-
//# sourceMappingURL=tooltip.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.spec.js","names":["waitFor"],"sources":["../../src/components/tooltip.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger } from './tooltip'\n\nclass ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n}\n\nbeforeAll(() => {\n window.ResizeObserver = ResizeObserverStub as unknown as typeof ResizeObserver\n})\n\nfunction renderTooltip() {\n return render(\n <TooltipProvider>\n <Tooltip label=\"Save changes\">\n <button type=\"button\">Save</button>\n </Tooltip>\n </TooltipProvider>\n )\n}\n\ndescribe('Tooltip', () => {\n it('renders the trigger and keeps the tooltip content hidden until shown', () => {\n renderTooltip()\n\n expect(screen.getByRole('button', { name: 'Save' })).not.toBeNull()\n expect(screen.queryByRole('tooltip')).toBeNull()\n })\n\n it('shows the tooltip content with the label when the trigger receives focus', async () => {\n renderTooltip()\n\n fireEvent.focus(screen.getByRole('button', { name: 'Save' }))\n\n const tooltip = await screen.findByRole('tooltip')\n\n expect(tooltip.textContent).toBe('Save changes')\n expect(tooltip.getAttribute('data-slot')).toBe('tooltip-content')\n expect(tooltip.className).toContain('bg-foreground')\n })\n\n it('hides the tooltip content when the trigger loses focus', async () => {\n renderTooltip()\n\n const trigger = screen.getByRole('button', { name: 'Save' })\n\n fireEvent.focus(trigger)\n await screen.findByRole('tooltip')\n\n fireEvent.blur(trigger)\n\n await waitFor(() => expect(screen.queryByRole('tooltip')).toBeNull())\n })\n\n it('marks the trigger with the tooltip data-slot', () => {\n const { container } = renderTooltip()\n\n expect(container.querySelector('[data-slot=\"tooltip-trigger\"]')).not.toBeNull()\n })\n\n it('renders an arrow element inside the open content', async () => {\n renderTooltip()\n\n fireEvent.focus(screen.getByRole('button', { name: 'Save' }))\n\n const tooltip = await screen.findByRole('tooltip')\n\n expect(tooltip.querySelector('svg')).not.toBeNull()\n })\n\n it('does not render tooltip primitives and requires no provider when disabled', () => {\n render(\n <Tooltip label=\"Never shown\" disabled>\n <button type=\"button\">Plain trigger</button>\n </Tooltip>\n )\n\n const trigger = screen.getByRole('button', { name: 'Plain trigger' })\n\n fireEvent.focus(trigger)\n\n expect(screen.queryByRole('tooltip')).toBeNull()\n expect(screen.queryByText('Never shown')).toBeNull()\n })\n\n it('supports manual composition via TooltipRoot, TooltipTrigger and TooltipContent', async () => {\n render(\n <TooltipProvider>\n <TooltipRoot defaultOpen>\n <TooltipTrigger>Trigger text</TooltipTrigger>\n <TooltipContent>Composed content</TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n )\n\n const tooltip = await screen.findByRole('tooltip')\n\n expect(tooltip.textContent).toBe('Composed content')\n expect(screen.getByText('Trigger text').getAttribute('data-slot')).toBe('tooltip-trigger')\n })\n})\n"],"mappings":"oNAIA,IAAM,mBAAN,KAAyB,CACvB,SAAU,CAAC,CACX,WAAY,CAAC,CACb,YAAa,CAAC,CAChB,EAEA,cAAgB,CACd,OAAO,eAAiB,kBAC1B,CAAC,EAED,SAAS,eAAgB,CACvB,OAAO,EACL,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAS,MAAM,eACb,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,MAAY,CAAA,CAC3B,CAAA,CACM,CAAA,CACnB,CACF,CAEA,SAAS,cAAiB,CACxB,GAAG,2EAA8E,CAC/E,cAAc,EAEd,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,MAAO,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAClE,OAAO,EAAO,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CACjD,CAAC,EAED,GAAG,2EAA4E,SAAY,CACzF,cAAc,EAEd,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,MAAO,CAAC,CAAC,EAE5D,IAAM,EAAU,MAAM,EAAO,WAAW,SAAS,EAEjD,OAAO,EAAQ,WAAW,CAAC,CAAC,KAAK,cAAc,EAC/C,OAAO,EAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,iBAAiB,EAChE,OAAO,EAAQ,SAAS,CAAC,CAAC,UAAU,eAAe,CACrD,CAAC,EAED,GAAG,yDAA0D,SAAY,CACvE,cAAc,EAEd,IAAM,EAAU,EAAO,UAAU,SAAU,CAAE,KAAM,MAAO,CAAC,EAE3D,EAAU,MAAM,CAAO,EACvB,MAAM,EAAO,WAAW,SAAS,EAEjC,EAAU,KAAK,CAAO,EAEtB,MAAMA,MAAc,OAAO,EAAO,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CACtE,CAAC,EAED,GAAG,mDAAsD,CACvD,GAAM,CAAE,aAAc,cAAc,EAEpC,OAAO,EAAU,cAAc,+BAA+B,CAAC,CAAC,CAAC,IAAI,SAAS,CAChF,CAAC,EAED,GAAG,mDAAoD,SAAY,CACjE,cAAc,EAEd,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,MAAO,CAAC,CAAC,EAE5D,IAAM,EAAU,MAAM,EAAO,WAAW,SAAS,EAEjD,OAAO,EAAQ,cAAc,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CACpD,CAAC,EAED,GAAG,gFAAmF,CACpF,EACE,EAAC,EAAD,CAAS,MAAM,cAAc,SAAA,GAC3B,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,eAAqB,CAAA,CACpC,CAAA,CACX,EAEA,IAAM,EAAU,EAAO,UAAU,SAAU,CAAE,KAAM,eAAgB,CAAC,EAEpE,EAAU,MAAM,CAAO,EAEvB,OAAO,EAAO,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,EAC/C,OAAO,EAAO,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CACrD,CAAC,EAED,GAAG,iFAAkF,SAAY,CAC/F,EACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAa,YAAA,GAAb,SAAA,CACE,EAAC,EAAD,CAAA,SAAgB,cAA4B,CAAA,EAC5C,EAAC,EAAD,CAAA,SAAgB,kBAAgC,CAAA,CACrC,CACE,CAAA,CAAA,CAAA,CACnB,EAEA,IAAM,EAAU,MAAM,EAAO,WAAW,SAAS,EAEjD,OAAO,EAAQ,WAAW,CAAC,CAAC,KAAK,kBAAkB,EACnD,OAAO,EAAO,UAAU,cAAc,CAAC,CAAC,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAC3F,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../unstyled-button-lGbDJA55.js";import{a as t,n,r}from"../react.esm-dE9nuHcL.js";import{jsx as i}from"react/jsx-runtime";describe(`UnstyledButton`,()=>{it(`renders a button with type="button" and data-slot by default`,()=>{let{container:t}=r(i(e,{children:`Click me`})),n=t.querySelector(`[data-slot="unstyled-button"]`);expect(n?.tagName).toBe(`BUTTON`),expect(n?.getAttribute(`type`)).toBe(`button`),expect(n?.className).toContain(`cursor-pointer`)}),it(`respects an explicit type prop`,()=>{let{container:t}=r(i(e,{type:`submit`,children:`Submit`}));expect(t.querySelector(`[data-slot="unstyled-button"]`)?.getAttribute(`type`)).toBe(`submit`)}),it(`renders the child element without a type attribute when asChild is true`,()=>{let{container:t}=r(i(e,{asChild:!0,children:i(`a`,{href:`/somewhere`,children:`Link button`})})),n=t.querySelector(`[data-slot="unstyled-button"]`);expect(n?.tagName).toBe(`A`),expect(n?.getAttribute(`type`)).toBeNull(),expect(n?.getAttribute(`href`)).toBe(`/somewhere`)}),it(`fires onClick when clicked`,()=>{let a=vi.fn();r(i(e,{onClick:a,children:`Click me`})),n.click(t.getByText(`Click me`)),expect(a).toHaveBeenCalledTimes(1)}),it(`merges a custom className with the base classes`,()=>{let{container:t}=r(i(e,{className:`custom-btn`,children:`Styled`}));expect(t.querySelector(`[data-slot="unstyled-button"]`)?.className).toContain(`custom-btn`)}),it(`forwards ref to the underlying button element`,()=>{let t={current:null};r(i(e,{ref:t,children:`Ref target`})),expect(t.current).toBeInstanceOf(HTMLButtonElement)})});
|
|
2
|
-
//# sourceMappingURL=unstyled-button.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unstyled-button.spec.js","names":[],"sources":["../../src/components/unstyled-button.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { UnstyledButton } from './unstyled-button'\n\ndescribe('UnstyledButton', () => {\n it('renders a button with type=\"button\" and data-slot by default', () => {\n const { container } = render(<UnstyledButton>Click me</UnstyledButton>)\n\n const button = container.querySelector('[data-slot=\"unstyled-button\"]')\n\n expect(button?.tagName).toBe('BUTTON')\n expect(button?.getAttribute('type')).toBe('button')\n expect(button?.className).toContain('cursor-pointer')\n })\n\n it('respects an explicit type prop', () => {\n const { container } = render(<UnstyledButton type=\"submit\">Submit</UnstyledButton>)\n\n expect(container.querySelector('[data-slot=\"unstyled-button\"]')?.getAttribute('type')).toBe('submit')\n })\n\n it('renders the child element without a type attribute when asChild is true', () => {\n const { container } = render(\n <UnstyledButton asChild>\n <a href=\"/somewhere\">Link button</a>\n </UnstyledButton>\n )\n\n const rendered = container.querySelector('[data-slot=\"unstyled-button\"]')\n\n expect(rendered?.tagName).toBe('A')\n expect(rendered?.getAttribute('type')).toBeNull()\n expect(rendered?.getAttribute('href')).toBe('/somewhere')\n })\n\n it('fires onClick when clicked', () => {\n const handleClick = vi.fn()\n\n render(<UnstyledButton onClick={handleClick}>Click me</UnstyledButton>)\n\n fireEvent.click(screen.getByText('Click me'))\n\n expect(handleClick).toHaveBeenCalledTimes(1)\n })\n\n it('merges a custom className with the base classes', () => {\n const { container } = render(<UnstyledButton className=\"custom-btn\">Styled</UnstyledButton>)\n\n expect(container.querySelector('[data-slot=\"unstyled-button\"]')?.className).toContain('custom-btn')\n })\n\n it('forwards ref to the underlying button element', () => {\n const ref = { current: null as HTMLButtonElement | null }\n\n render(<UnstyledButton ref={ref}>Ref target</UnstyledButton>)\n\n expect(ref.current).toBeInstanceOf(HTMLButtonElement)\n })\n})\n"],"mappings":"oLAIA,SAAS,qBAAwB,CAC/B,GAAG,mEAAsE,CACvE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAgB,UAAwB,CAAA,CAAC,EAEhE,EAAS,EAAU,cAAc,+BAA+B,EAEtE,OAAO,GAAQ,OAAO,CAAC,CAAC,KAAK,QAAQ,EACrC,OAAO,GAAQ,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAClD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,gBAAgB,CACtD,CAAC,EAED,GAAG,qCAAwC,CACzC,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAgB,KAAK,SAAS,SAAA,QAAsB,CAAA,CAAC,EAElF,OAAO,EAAU,cAAc,+BAA+B,CAAC,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CACtG,CAAC,EAED,GAAG,8EAAiF,CAClF,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAgB,QAAA,GACd,SAAA,EAAC,IAAD,CAAG,KAAK,aAAa,SAAA,aAAc,CAAA,CACrB,CAAA,CAClB,EAEM,EAAW,EAAU,cAAc,+BAA+B,EAExE,OAAO,GAAU,OAAO,CAAC,CAAC,KAAK,GAAG,EAClC,OAAO,GAAU,aAAa,MAAM,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,GAAU,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,YAAY,CAC1D,CAAC,EAED,GAAG,iCAAoC,CACrC,IAAM,EAAc,GAAG,GAAG,EAE1B,EAAO,EAAC,EAAD,CAAgB,QAAS,EAAa,SAAA,UAAwB,CAAA,CAAC,EAEtE,EAAU,MAAM,EAAO,UAAU,UAAU,CAAC,EAE5C,OAAO,CAAW,CAAC,CAAC,sBAAsB,CAAC,CAC7C,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAgB,UAAU,aAAa,SAAA,QAAsB,CAAA,CAAC,EAE3F,OAAO,EAAU,cAAc,+BAA+B,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,YAAY,CACpG,CAAC,EAED,GAAG,oDAAuD,CACxD,IAAM,EAAM,CAAE,QAAS,IAAiC,EAExD,EAAO,EAAC,EAAD,CAAqB,MAAK,SAAA,YAA0B,CAAA,CAAC,EAE5D,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,iBAAiB,CACtD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,t}from"../visibility-twHwe9Xp.js";import{a as n,r,t as i}from"../react.esm-dE9nuHcL.js";import{jsx as a}from"react/jsx-runtime";describe(`Visibility`,()=>{it(`keeps HiddenFrom children visible below the given breakpoint`,()=>{globalThis.setTestViewportWidth(320),r(a(t,{breakpoint:`md`,children:a(`button`,{type:`button`,children:`Mobile only`})}));let e=n.getByText(`Mobile only`);expect(e.getAttribute(`style`)??``).not.toContain(`display: none`)}),it(`hides HiddenFrom children at or above the given breakpoint`,()=>{globalThis.setTestViewportWidth(1024),r(a(t,{breakpoint:`md`,children:a(`button`,{type:`button`,children:`Mobile only`})}));let e=n.getByText(`Mobile only`);expect(e.getAttribute(`style`)).toContain(`display: none`)}),it(`keeps VisibleFrom children visible at or above the given breakpoint`,()=>{globalThis.setTestViewportWidth(1024),r(a(e,{breakpoint:`md`,children:a(`button`,{type:`button`,children:`Desktop only`})}));let t=n.getByText(`Desktop only`);expect(t.getAttribute(`style`)??``).not.toContain(`display: none`)}),it(`hides VisibleFrom children below the given breakpoint`,()=>{globalThis.setTestViewportWidth(320),r(a(e,{breakpoint:`md`,children:a(`button`,{type:`button`,children:`Desktop only`})}));let t=n.getByText(`Desktop only`);expect(t.getAttribute(`style`)).toContain(`display: none`)}),it(`toggles HiddenFrom visibility as the viewport crosses the breakpoint`,()=>{globalThis.setTestViewportWidth(320),r(a(t,{breakpoint:`md`,children:a(`button`,{type:`button`,children:`Responsive`})}));let e=n.getByText(`Responsive`);expect(e.getAttribute(`style`)??``).not.toContain(`display: none`),i(()=>{globalThis.setTestViewportWidth(1024)}),expect(e.getAttribute(`style`)).toContain(`display: none`)}),it(`renders nothing extra when there are no children`,()=>{globalThis.setTestViewportWidth(1024);let{container:e}=r(a(t,{breakpoint:`md`}));expect(e.innerHTML).toBe(``)})});
|
|
2
|
-
//# sourceMappingURL=visibility.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visibility.spec.js","names":[],"sources":["../../src/components/visibility.spec.tsx"],"sourcesContent":["import { act, render, screen } from '@testing-library/react'\n\nimport { HiddenFrom, VisibleFrom } from './visibility'\n\ndescribe('Visibility', () => {\n it('keeps HiddenFrom children visible below the given breakpoint', () => {\n globalThis.setTestViewportWidth(320)\n\n render(\n <HiddenFrom breakpoint=\"md\">\n <button type=\"button\">Mobile only</button>\n </HiddenFrom>\n )\n\n const button = screen.getByText('Mobile only')\n\n expect(button.getAttribute('style') ?? '').not.toContain('display: none')\n })\n\n it('hides HiddenFrom children at or above the given breakpoint', () => {\n globalThis.setTestViewportWidth(1024)\n\n render(\n <HiddenFrom breakpoint=\"md\">\n <button type=\"button\">Mobile only</button>\n </HiddenFrom>\n )\n\n const button = screen.getByText('Mobile only')\n\n expect(button.getAttribute('style')).toContain('display: none')\n })\n\n it('keeps VisibleFrom children visible at or above the given breakpoint', () => {\n globalThis.setTestViewportWidth(1024)\n\n render(\n <VisibleFrom breakpoint=\"md\">\n <button type=\"button\">Desktop only</button>\n </VisibleFrom>\n )\n\n const button = screen.getByText('Desktop only')\n\n expect(button.getAttribute('style') ?? '').not.toContain('display: none')\n })\n\n it('hides VisibleFrom children below the given breakpoint', () => {\n globalThis.setTestViewportWidth(320)\n\n render(\n <VisibleFrom breakpoint=\"md\">\n <button type=\"button\">Desktop only</button>\n </VisibleFrom>\n )\n\n const button = screen.getByText('Desktop only')\n\n expect(button.getAttribute('style')).toContain('display: none')\n })\n\n it('toggles HiddenFrom visibility as the viewport crosses the breakpoint', () => {\n globalThis.setTestViewportWidth(320)\n\n render(\n <HiddenFrom breakpoint=\"md\">\n <button type=\"button\">Responsive</button>\n </HiddenFrom>\n )\n\n const button = screen.getByText('Responsive')\n\n expect(button.getAttribute('style') ?? '').not.toContain('display: none')\n\n act(() => {\n globalThis.setTestViewportWidth(1024)\n })\n\n expect(button.getAttribute('style')).toContain('display: none')\n })\n\n it('renders nothing extra when there are no children', () => {\n globalThis.setTestViewportWidth(1024)\n\n const { container } = render(<HiddenFrom breakpoint=\"md\" />)\n\n expect(container.innerHTML).toBe('')\n })\n})\n"],"mappings":"sLAIA,SAAS,iBAAoB,CAC3B,GAAG,mEAAsE,CACvE,WAAW,qBAAqB,GAAG,EAEnC,EACE,EAAC,EAAD,CAAY,WAAW,KACrB,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,aAAmB,CAAA,CAC/B,CAAA,CACd,EAEA,IAAM,EAAS,EAAO,UAAU,aAAa,EAE7C,OAAO,EAAO,aAAa,OAAO,GAAK,EAAE,CAAC,CAAC,IAAI,UAAU,eAAe,CAC1E,CAAC,EAED,GAAG,iEAAoE,CACrE,WAAW,qBAAqB,IAAI,EAEpC,EACE,EAAC,EAAD,CAAY,WAAW,KACrB,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,aAAmB,CAAA,CAC/B,CAAA,CACd,EAEA,IAAM,EAAS,EAAO,UAAU,aAAa,EAE7C,OAAO,EAAO,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,eAAe,CAChE,CAAC,EAED,GAAG,0EAA6E,CAC9E,WAAW,qBAAqB,IAAI,EAEpC,EACE,EAAC,EAAD,CAAa,WAAW,KACtB,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,cAAoB,CAAA,CAC/B,CAAA,CACf,EAEA,IAAM,EAAS,EAAO,UAAU,cAAc,EAE9C,OAAO,EAAO,aAAa,OAAO,GAAK,EAAE,CAAC,CAAC,IAAI,UAAU,eAAe,CAC1E,CAAC,EAED,GAAG,4DAA+D,CAChE,WAAW,qBAAqB,GAAG,EAEnC,EACE,EAAC,EAAD,CAAa,WAAW,KACtB,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,cAAoB,CAAA,CAC/B,CAAA,CACf,EAEA,IAAM,EAAS,EAAO,UAAU,cAAc,EAE9C,OAAO,EAAO,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,eAAe,CAChE,CAAC,EAED,GAAG,2EAA8E,CAC/E,WAAW,qBAAqB,GAAG,EAEnC,EACE,EAAC,EAAD,CAAY,WAAW,KACrB,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,YAAkB,CAAA,CAC9B,CAAA,CACd,EAEA,IAAM,EAAS,EAAO,UAAU,YAAY,EAE5C,OAAO,EAAO,aAAa,OAAO,GAAK,EAAE,CAAC,CAAC,IAAI,UAAU,eAAe,EAExE,MAAU,CACR,WAAW,qBAAqB,IAAI,CACtC,CAAC,EAED,OAAO,EAAO,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,eAAe,CAChE,CAAC,EAED,GAAG,uDAA0D,CAC3D,WAAW,qBAAqB,IAAI,EAEpC,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAY,WAAW,IAAM,CAAA,CAAC,EAE3D,OAAO,EAAU,SAAS,CAAC,CAAC,KAAK,EAAE,CACrC,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compose-refs-DUtp7lGn.js","names":[],"sources":["../src/lib/compose-refs.ts"],"sourcesContent":["import type * as React from 'react'\n\nexport function setRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n\n if (ref) {\n ref.current = value\n }\n}\n\nexport function composeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n setRef(ref, value)\n })\n }\n}\n"],"mappings":"uCAEA,SAAgB,OAAU,EAA+B,EAAiB,CACxE,GAAI,OAAO,GAAQ,WAAY,CAC7B,EAAI,CAAK,EACT,MACF,CAEI,IACF,EAAI,QAAU,EAElB,CAEA,SAAgB,YAAe,GAAG,EAA6D,CAC7F,MAAQ,IAAU,CAChB,EAAK,QAAS,GAAQ,CACpB,OAAO,EAAK,CAAK,CACnB,CAAC,CACH,CACF"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { n as __name } from "./rolldown-runtime-Bdj-bS2b.js";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
//#region src/lib/compose-refs.d.ts
|
|
4
|
-
declare function setRef<T>(ref: React.Ref<T> | undefined, value: T | null): void;
|
|
5
|
-
declare function composeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T>;
|
|
6
|
-
//#endregion
|
|
7
|
-
export { setRef as n, composeRefs as t };
|
|
8
|
-
//# sourceMappingURL=compose-refs-GP3zdokU.d.ts.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { n as __name } from "./rolldown-runtime-Bdj-bS2b.js";
|
|
2
|
-
import { VariantProps } from "class-variance-authority";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
//#region src/components/container.d.ts
|
|
5
|
-
declare const containerVariants: (props?: ({
|
|
6
|
-
size?: "full" | "lg" | "md" | "sm" | null | undefined;
|
|
7
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
-
type ContainerProps = React.ComponentProps<'div'> & VariantProps<typeof containerVariants>;
|
|
9
|
-
declare function Container({ className, size, ...props }: ContainerProps): React.JSX.Element;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { ContainerProps as n, containerVariants as r, Container as t };
|
|
12
|
-
//# sourceMappingURL=container-B8-lt-oX.d.ts.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime-Bdj-bS2b.js";import{t as e}from"./utils-DP9KtG7I.js";import{jsx as t}from"react/jsx-runtime";import{cva as n}from"class-variance-authority";const r=n(`mx-auto w-full`,{variants:{size:{sm:`max-w-3xl px-4 sm:px-6`,md:`max-w-5xl px-4 sm:px-6 lg:px-8`,lg:`max-w-7xl px-4 sm:px-6 lg:px-8`,full:`max-w-none px-4 sm:px-6 lg:px-8`}},defaultVariants:{size:`lg`}});function Container({className:n,size:i=`lg`,...a}){return t(`div`,{"data-slot":`container`,"data-size":i,className:e(r({size:i}),n),...a})}export{r as n,Container as t};
|
|
2
|
-
//# sourceMappingURL=container-CikeKdez.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container-CikeKdez.js","names":[],"sources":["../src/components/container.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst containerVariants = cva('mx-auto w-full', {\n variants: {\n size: {\n sm: 'max-w-3xl px-4 sm:px-6',\n md: 'max-w-5xl px-4 sm:px-6 lg:px-8',\n lg: 'max-w-7xl px-4 sm:px-6 lg:px-8',\n full: 'max-w-none px-4 sm:px-6 lg:px-8'\n }\n },\n defaultVariants: {\n size: 'lg'\n }\n})\n\nexport type ContainerProps = React.ComponentProps<'div'> & VariantProps<typeof containerVariants>\n\nfunction Container({ className, size = 'lg', ...props }: ContainerProps) {\n return (\n <div data-slot=\"container\" data-size={size} className={cn(containerVariants({ size }), className)} {...props} />\n )\n}\n\nexport { Container, containerVariants }\n"],"mappings":"sKAMA,MAAM,EAAoB,EAAI,iBAAkB,CAC9C,SAAU,CACR,KAAM,CACJ,GAAI,yBACJ,GAAI,iCACJ,GAAI,iCACJ,KAAM,iCACR,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAID,SAAS,UAAU,CAAE,YAAW,OAAO,KAAM,GAAG,GAAyB,CACvE,OACE,EAAC,MAAD,CAAK,YAAU,YAAY,YAAW,EAAM,UAAW,EAAG,EAAkB,CAAE,MAAK,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEnH"}
|