@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 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../bar-chart-DIgSnh_j.js";import{a as t,r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r}from"react/jsx-runtime";beforeAll(()=>{vi.stubGlobal(`ResizeObserver`,class{observe(){}unobserve(){}disconnect(){}}),Object.defineProperty(HTMLElement.prototype,"offsetWidth",{configurable:!0,value:500}),Object.defineProperty(HTMLElement.prototype,"offsetHeight",{configurable:!0,value:300}),HTMLElement.prototype.getBoundingClientRect=()=>({width:500,height:300,top:0,left:0,right:500,bottom:300,x:0,y:0,toJSON(){}})});const i=[{month:`January`,desktop:186,mobile:80},{month:`February`,desktop:305,mobile:200},{month:`March`,desktop:237,mobile:120}],a=[{name:`desktop`,label:`Desktop`},{name:`mobile`,label:`Mobile`}];describe(`BarChart`,()=>{it(`renders with data-slot="bar-chart" on the chart wrapper`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`}));expect(t.querySelector(`[data-slot="bar-chart"]`)).not.toBeNull()}),it(`accepts a data array and series list without throwing`,()=>{expect(()=>n(r(e,{data:i,series:a,dataKey:`month`}))).not.toThrow()}),it(`renders one recharts bar group per series entry`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`}));expect(t.querySelectorAll(`.recharts-bar`).length).toBe(a.length)}),it(`renders one rectangle per data point for each series`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`,animationDuration:0}));expect(t.querySelectorAll(`.recharts-rectangle`).length).toBe(i.length*a.length)}),it(`merges a custom className with the base width class`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`,className:`custom-bar`})),o=t.querySelector(`[data-slot="bar-chart"]`);expect(o?.className).toContain(`custom-bar`),expect(o?.className).toContain(`w-full`)}),it(`renders a tooltip cursor by default and omits it when withTooltip is false`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`}));expect(t.querySelectorAll(`.recharts-tooltip-wrapper`).length).toBe(1);let{container:o}=n(r(e,{data:i,series:a,dataKey:`month`,withTooltip:!1}));expect(o.querySelectorAll(`.recharts-tooltip-wrapper`).length).toBe(0)}),it(`omits the legend by default and renders it when withLegend is true`,()=>{let{container:o}=n(r(e,{data:i,series:a,dataKey:`month`}));expect(o.querySelectorAll(`.recharts-legend-wrapper`).length).toBe(0);let{container:s}=n(r(e,{data:i,series:a,dataKey:`month`,withLegend:!0}));expect(s.querySelectorAll(`.recharts-legend-wrapper`).length).toBe(1),expect(t.getAllByText(`Desktop`).length).toBeGreaterThan(0)}),it(`renders an x-axis and y-axis by default and omits them when disabled`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`}));expect(t.querySelectorAll(`.recharts-xAxis`).length).toBe(1),expect(t.querySelectorAll(`.recharts-yAxis`).length).toBe(1);let{container:o}=n(r(e,{data:i,series:a,dataKey:`month`,withXAxis:!1,withYAxis:!1}));expect(o.querySelectorAll(`.recharts-xAxis`).length).toBe(0),expect(o.querySelectorAll(`.recharts-yAxis`).length).toBe(0)}),it(`omits the cartesian grid when gridAxis is "none"`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`}));expect(t.querySelectorAll(`.recharts-cartesian-grid`).length).toBe(1);let{container:o}=n(r(e,{data:i,series:a,dataKey:`month`,gridAxis:`none`}));expect(o.querySelectorAll(`.recharts-cartesian-grid`).length).toBe(0)}),it(`swaps the category axis from x to y when orientation is "horizontal"`,()=>{let{container:t}=n(r(e,{data:i,series:a,dataKey:`month`,orientation:`vertical`}));expect(t.querySelector(`.recharts-xAxis-tick-labels`)?.textContent).toMatch(/[A-Za-z]/),expect(t.querySelector(`.recharts-yAxis-tick-labels`)?.textContent).not.toMatch(/[A-Za-z]/);let{container:o}=n(r(e,{data:i,series:a,dataKey:`month`,orientation:`horizontal`}));expect(o.querySelector(`.recharts-yAxis-tick-labels`)?.textContent).toMatch(/[A-Za-z]/),expect(o.querySelector(`.recharts-xAxis-tick-labels`)?.textContent).not.toMatch(/[A-Za-z]/),expect(o.querySelectorAll(`.recharts-bar`).length).toBe(a.length)}),it(`colors each bar rectangle using a per-row color override when present`,()=>{let{container:t}=n(r(e,{data:[{month:`January`,desktop:186,color:`#ff0000`},{month:`February`,desktop:305}],series:[{name:`desktop`,label:`Desktop`}],dataKey:`month`,animationDuration:0})),i=t.querySelectorAll(`.recharts-rectangle`);expect(i[0]?.getAttribute(`fill`)).toBe(`#ff0000`),expect(i[1]?.getAttribute(`fill`)).not.toBe(`#ff0000`)})});
|
|
2
|
-
//# sourceMappingURL=bar-chart.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bar-chart.spec.js","names":[],"sources":["../../src/components/bar-chart.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { BarChart, type BarChartDatum, type BarChartSeries } from './bar-chart'\n\nbeforeAll(() => {\n vi.stubGlobal(\n 'ResizeObserver',\n class {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n )\n Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { configurable: true, value: 500 })\n Object.defineProperty(HTMLElement.prototype, 'offsetHeight', { configurable: true, value: 300 })\n // jsdom's getBoundingClientRect always returns zeros, which leaves recharts' ResponsiveContainer\n // stuck reporting a non-positive size and refusing to render its children (the actual chart SVG).\n // Stubbing it to match offsetWidth/offsetHeight above lets the real recharts markup mount.\n HTMLElement.prototype.getBoundingClientRect = () =>\n ({\n width: 500,\n height: 300,\n top: 0,\n left: 0,\n right: 500,\n bottom: 300,\n x: 0,\n y: 0,\n toJSON() {}\n }) as DOMRect\n})\n\nconst data: BarChartDatum[] = [\n { month: 'January', desktop: 186, mobile: 80 },\n { month: 'February', desktop: 305, mobile: 200 },\n { month: 'March', desktop: 237, mobile: 120 }\n]\n\nconst series: BarChartSeries[] = [\n { name: 'desktop', label: 'Desktop' },\n { name: 'mobile', label: 'Mobile' }\n]\n\ndescribe('BarChart', () => {\n it('renders with data-slot=\"bar-chart\" on the chart wrapper', () => {\n const { container } = render(<BarChart data={data} series={series} dataKey=\"month\" />)\n\n expect(container.querySelector('[data-slot=\"bar-chart\"]')).not.toBeNull()\n })\n\n it('accepts a data array and series list without throwing', () => {\n expect(() => render(<BarChart data={data} series={series} dataKey=\"month\" />)).not.toThrow()\n })\n\n it('renders one recharts bar group per series entry', () => {\n const { container } = render(<BarChart data={data} series={series} dataKey=\"month\" />)\n\n expect(container.querySelectorAll('.recharts-bar').length).toBe(series.length)\n })\n\n it('renders one rectangle per data point for each series', () => {\n // animationDuration=0 disables the entrance animation so recharts paints the bars'\n // full-size <path> elements on the very first (synchronous) render instead of the\n // zero-height animation starting frame, which recharts renders as nothing at all.\n const { container } = render(<BarChart data={data} series={series} dataKey=\"month\" animationDuration={0} />)\n\n expect(container.querySelectorAll('.recharts-rectangle').length).toBe(data.length * series.length)\n })\n\n it('merges a custom className with the base width class', () => {\n const { container } = render(<BarChart data={data} series={series} dataKey=\"month\" className=\"custom-bar\" />)\n\n const chartDiv = container.querySelector('[data-slot=\"bar-chart\"]')\n expect(chartDiv?.className).toContain('custom-bar')\n expect(chartDiv?.className).toContain('w-full')\n })\n\n it('renders a tooltip cursor by default and omits it when withTooltip is false', () => {\n const { container: withTooltip } = render(<BarChart data={data} series={series} dataKey=\"month\" />)\n expect(withTooltip.querySelectorAll('.recharts-tooltip-wrapper').length).toBe(1)\n\n const { container: withoutTooltip } = render(\n <BarChart data={data} series={series} dataKey=\"month\" withTooltip={false} />\n )\n expect(withoutTooltip.querySelectorAll('.recharts-tooltip-wrapper').length).toBe(0)\n })\n\n it('omits the legend by default and renders it when withLegend is true', () => {\n const { container: withoutLegend } = render(<BarChart data={data} series={series} dataKey=\"month\" />)\n expect(withoutLegend.querySelectorAll('.recharts-legend-wrapper').length).toBe(0)\n\n const { container: withLegend } = render(<BarChart data={data} series={series} dataKey=\"month\" withLegend />)\n expect(withLegend.querySelectorAll('.recharts-legend-wrapper').length).toBe(1)\n expect(screen.getAllByText('Desktop').length).toBeGreaterThan(0)\n })\n\n it('renders an x-axis and y-axis by default and omits them when disabled', () => {\n const { container: withAxes } = render(<BarChart data={data} series={series} dataKey=\"month\" />)\n expect(withAxes.querySelectorAll('.recharts-xAxis').length).toBe(1)\n expect(withAxes.querySelectorAll('.recharts-yAxis').length).toBe(1)\n\n const { container: withoutAxes } = render(\n <BarChart data={data} series={series} dataKey=\"month\" withXAxis={false} withYAxis={false} />\n )\n expect(withoutAxes.querySelectorAll('.recharts-xAxis').length).toBe(0)\n expect(withoutAxes.querySelectorAll('.recharts-yAxis').length).toBe(0)\n })\n\n it('omits the cartesian grid when gridAxis is \"none\"', () => {\n const { container: withGrid } = render(<BarChart data={data} series={series} dataKey=\"month\" />)\n expect(withGrid.querySelectorAll('.recharts-cartesian-grid').length).toBe(1)\n\n const { container: withoutGrid } = render(<BarChart data={data} series={series} dataKey=\"month\" gridAxis=\"none\" />)\n expect(withoutGrid.querySelectorAll('.recharts-cartesian-grid').length).toBe(0)\n })\n\n it('swaps the category axis from x to y when orientation is \"horizontal\"', () => {\n const { container: vertical } = render(\n <BarChart data={data} series={series} dataKey=\"month\" orientation=\"vertical\" />\n )\n expect(vertical.querySelector('.recharts-xAxis-tick-labels')?.textContent).toMatch(/[A-Za-z]/)\n expect(vertical.querySelector('.recharts-yAxis-tick-labels')?.textContent).not.toMatch(/[A-Za-z]/)\n\n const { container: horizontal } = render(\n <BarChart data={data} series={series} dataKey=\"month\" orientation=\"horizontal\" />\n )\n expect(horizontal.querySelector('.recharts-yAxis-tick-labels')?.textContent).toMatch(/[A-Za-z]/)\n expect(horizontal.querySelector('.recharts-xAxis-tick-labels')?.textContent).not.toMatch(/[A-Za-z]/)\n expect(horizontal.querySelectorAll('.recharts-bar').length).toBe(series.length)\n })\n\n it('colors each bar rectangle using a per-row color override when present', () => {\n const coloredData: BarChartDatum[] = [\n { month: 'January', desktop: 186, color: '#ff0000' },\n { month: 'February', desktop: 305 }\n ]\n\n // animationDuration=0, see the note above: without it recharts never paints a real\n // <path> for the bars, so there would be nothing to inspect the `fill` attribute of.\n const { container } = render(\n <BarChart\n data={coloredData}\n series={[{ name: 'desktop', label: 'Desktop' }]}\n dataKey=\"month\"\n animationDuration={0}\n />\n )\n\n const rectangles = container.querySelectorAll('.recharts-rectangle')\n expect(rectangles[0]?.getAttribute('fill')).toBe('#ff0000')\n expect(rectangles[1]?.getAttribute('fill')).not.toBe('#ff0000')\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,i as t,n,o as r,r as i,s as a,t as o}from"../breadcrumb-CqNDAI8V.js";import{a as s,r as c}from"../react.esm-dE9nuHcL.js";import{jsx as l,jsxs as u}from"react/jsx-runtime";describe(`Breadcrumb`,()=>{it(`renders a nav element with the breadcrumb aria-label`,()=>{let{container:t}=c(l(o,{children:l(e,{})})),n=t.querySelector(`[data-slot="breadcrumb"]`);expect(n?.tagName).toBe(`NAV`),expect(n?.getAttribute(`aria-label`)).toBe(`breadcrumb`)}),it(`renders a full trail with links, separators and the current page`,()=>{let{container:n}=c(l(o,{children:u(e,{children:[l(i,{children:l(t,{href:`/`,children:`Home`})}),l(a,{}),l(i,{children:l(t,{href:`/library`,children:`Library`})}),l(a,{}),l(i,{children:l(r,{children:`Data`})})]})})),d=s.getByRole(`link`,{name:`Home`});expect(d.getAttribute(`href`)).toBe(`/`);let f=s.getByText(`Data`);expect(f.getAttribute(`aria-current`)).toBe(`page`),expect(n.querySelectorAll(`[data-slot="breadcrumb-separator"]`)).toHaveLength(2)}),describe(`BreadcrumbLink`,()=>{it(`renders as the child element instead of an anchor when asChild is used`,()=>{let{container:e}=c(l(t,{asChild:!0,className:`custom-link`,children:l(`button`,{type:`button`,children:`Go home`})})),n=e.querySelector(`[data-slot="breadcrumb-link"]`);expect(n?.tagName).toBe(`BUTTON`),expect(n?.className).toContain(`custom-link`)})}),describe(`BreadcrumbEllipsis`,()=>{it(`renders a screen-reader-only label and hides itself from the accessibility tree`,()=>{let{container:e}=c(l(n,{})),t=e.querySelector(`[data-slot="breadcrumb-ellipsis"]`);expect(t?.getAttribute(`aria-hidden`)).toBe(`true`),expect(t?.getAttribute(`role`)).toBe(`presentation`),expect(s.getByText(`More`)).not.toBeNull()})}),describe(`BreadcrumbSeparator`,()=>{it(`renders the default chevron icon when no children are provided`,()=>{let{container:e}=c(l(a,{})),t=e.querySelector(`[data-slot="breadcrumb-separator"]`);expect(t?.getAttribute(`role`)).toBe(`presentation`),expect(t?.querySelector(`svg`)).not.toBeNull()}),it(`renders custom separator content instead of the default chevron`,()=>{let{container:e}=c(l(a,{children:`/`}));expect(e.querySelector(`[data-slot="breadcrumb-separator"]`)?.textContent).toBe(`/`)})})});
|
|
2
|
-
//# sourceMappingURL=breadcrumb.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.spec.js","names":[],"sources":["../../src/components/breadcrumb.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator\n} from './breadcrumb'\n\ndescribe('Breadcrumb', () => {\n it('renders a nav element with the breadcrumb aria-label', () => {\n const { container } = render(\n <Breadcrumb>\n <BreadcrumbList />\n </Breadcrumb>\n )\n\n const nav = container.querySelector('[data-slot=\"breadcrumb\"]')\n\n expect(nav?.tagName).toBe('NAV')\n expect(nav?.getAttribute('aria-label')).toBe('breadcrumb')\n })\n\n it('renders a full trail with links, separators and the current page', () => {\n const { container } = render(\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbLink href=\"/library\">Library</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbPage>Data</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n )\n\n const homeLink = screen.getByRole('link', { name: 'Home' })\n expect(homeLink.getAttribute('href')).toBe('/')\n\n const currentPage = screen.getByText('Data')\n expect(currentPage.getAttribute('aria-current')).toBe('page')\n\n expect(container.querySelectorAll('[data-slot=\"breadcrumb-separator\"]')).toHaveLength(2)\n })\n\n describe('BreadcrumbLink', () => {\n it('renders as the child element instead of an anchor when asChild is used', () => {\n const { container } = render(\n <BreadcrumbLink asChild className=\"custom-link\">\n <button type=\"button\">Go home</button>\n </BreadcrumbLink>\n )\n\n const link = container.querySelector('[data-slot=\"breadcrumb-link\"]')\n\n expect(link?.tagName).toBe('BUTTON')\n expect(link?.className).toContain('custom-link')\n })\n })\n\n describe('BreadcrumbEllipsis', () => {\n it('renders a screen-reader-only label and hides itself from the accessibility tree', () => {\n const { container } = render(<BreadcrumbEllipsis />)\n\n const ellipsis = container.querySelector('[data-slot=\"breadcrumb-ellipsis\"]')\n\n expect(ellipsis?.getAttribute('aria-hidden')).toBe('true')\n expect(ellipsis?.getAttribute('role')).toBe('presentation')\n expect(screen.getByText('More')).not.toBeNull()\n })\n })\n\n describe('BreadcrumbSeparator', () => {\n it('renders the default chevron icon when no children are provided', () => {\n const { container } = render(<BreadcrumbSeparator />)\n\n const separator = container.querySelector('[data-slot=\"breadcrumb-separator\"]')\n\n expect(separator?.getAttribute('role')).toBe('presentation')\n expect(separator?.querySelector('svg')).not.toBeNull()\n })\n\n it('renders custom separator content instead of the default chevron', () => {\n const { container } = render(<BreadcrumbSeparator>/</BreadcrumbSeparator>)\n\n expect(container.querySelector('[data-slot=\"breadcrumb-separator\"]')?.textContent).toBe('/')\n })\n })\n})\n"],"mappings":"iOAYA,SAAS,iBAAoB,CAC3B,GAAG,2DAA8D,CAC/D,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAiB,CAAA,CACP,CAAA,CACd,EAEM,EAAM,EAAU,cAAc,0BAA0B,EAE9D,OAAO,GAAK,OAAO,CAAC,CAAC,KAAK,KAAK,EAC/B,OAAO,GAAK,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,CAC3D,CAAC,EAED,GAAG,uEAA0E,CAC3E,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,KAAK,IAAI,SAAA,MAAoB,CAAA,CAC/B,CAAA,EAChB,EAAC,EAAD,CAAsB,CAAA,EACtB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,KAAK,WAAW,SAAA,SAAuB,CAAA,CACzC,CAAA,EAChB,EAAC,EAAD,CAAsB,CAAA,EACtB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAgB,MAAoB,CAAA,CACtB,CAAA,CACF,CAAA,CAAA,CACN,CAAA,CACd,EAEM,EAAW,EAAO,UAAU,OAAQ,CAAE,KAAM,MAAO,CAAC,EAC1D,OAAO,EAAS,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAE9C,IAAM,EAAc,EAAO,UAAU,MAAM,EAC3C,OAAO,EAAY,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EAE5D,OAAO,EAAU,iBAAiB,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CACzF,CAAC,EAED,SAAS,qBAAwB,CAC/B,GAAG,6EAAgF,CACjF,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAgB,QAAA,GAAQ,UAAU,cAChC,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,SAAe,CAAA,CACvB,CAAA,CAClB,EAEM,EAAO,EAAU,cAAc,+BAA+B,EAEpE,OAAO,GAAM,OAAO,CAAC,CAAC,KAAK,QAAQ,EACnC,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,aAAa,CACjD,CAAC,CACH,CAAC,EAED,SAAS,yBAA4B,CACnC,GAAG,sFAAyF,CAC1F,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAqB,CAAA,CAAC,EAE7C,EAAW,EAAU,cAAc,mCAAmC,EAE5E,OAAO,GAAU,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,EACzD,OAAO,GAAU,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,cAAc,EAC1D,OAAO,EAAO,UAAU,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAChD,CAAC,CACH,CAAC,EAED,SAAS,0BAA6B,CACpC,GAAG,qEAAwE,CACzE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAsB,CAAA,CAAC,EAE9C,EAAY,EAAU,cAAc,oCAAoC,EAE9E,OAAO,GAAW,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,cAAc,EAC3D,OAAO,GAAW,cAAc,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CACvD,CAAC,EAED,GAAG,sEAAyE,CAC1E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAqB,GAAsB,CAAA,CAAC,EAEzE,OAAO,EAAU,cAAc,oCAAoC,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,GAAG,CAC7F,CAAC,CACH,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../button-oI3hbOgp.js";import{n as t,r as n,t as r}from"../button-group-WJ5LeouK.js";import{r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";describe(`ButtonGroup`,()=>{it(`applies the horizontal orientation classes by default without setting data-orientation`,()=>{let{container:t}=i(o(r,{children:[a(e,{children:`One`}),a(e,{children:`Two`})]})),n=t.querySelector(`[data-slot="button-group"]`);expect(n?.getAttribute(`data-orientation`)).toBeNull(),expect(n?.className).toContain(`rounded-l-none`)}),it(`applies vertical orientation classes and sets data-orientation when orientation="vertical"`,()=>{let{container:t}=i(o(r,{orientation:`vertical`,children:[a(e,{children:`One`}),a(e,{children:`Two`})]})),n=t.querySelector(`[data-slot="button-group"]`);expect(n?.getAttribute(`data-orientation`)).toBe(`vertical`),expect(n?.className).toContain(`flex-col`)}),it(`merges a custom className onto the root`,()=>{let{container:t}=i(a(r,{className:`custom-group`,children:a(e,{children:`One`})}));expect(t.querySelector(`[data-slot="button-group"]`)?.className).toContain(`custom-group`)}),describe(`ButtonGroupText`,()=>{it(`renders as a div by default with the expected classes`,()=>{let{container:e}=i(a(n,{children:`Label`})),t=e.querySelector(`div`);expect(t?.textContent).toBe(`Label`),expect(t?.className).toContain(`rounded-lg`)}),it(`renders as the child element when asChild is used`,()=>{let{container:e}=i(a(n,{asChild:!0,children:a(`span`,{children:`Custom`})}));expect(e.querySelector(`span`)?.textContent).toBe(`Custom`),expect(e.querySelector(`div`)).toBeNull()})}),describe(`ButtonGroupSeparator`,()=>{it(`renders with data-slot="button-group-separator" and a vertical orientation by default`,()=>{let{container:e}=i(a(t,{})),n=e.querySelector(`[data-slot="button-group-separator"]`);expect(n?.getAttribute(`data-orientation`)).toBe(`vertical`),expect(n?.className).toContain(`bg-input`)}),it(`supports switching to a horizontal orientation`,()=>{let{container:e}=i(a(t,{orientation:`horizontal`}));expect(e.querySelector(`[data-slot="button-group-separator"]`)?.getAttribute(`data-orientation`)).toBe(`horizontal`)})}),it(`composes buttons and a separator inside a group`,()=>{let{container:n}=i(o(r,{children:[a(e,{children:`One`}),a(t,{}),a(e,{children:`Two`})]})),s=n.querySelector(`[data-slot="button-group"]`);expect(s?.querySelectorAll(`[data-slot="button"]`)).toHaveLength(2),expect(s?.querySelector(`[data-slot="button-group-separator"]`)).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=button-group.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-group.spec.js","names":[],"sources":["../../src/components/button-group.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Button } from './button'\nimport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText } from './button-group'\n\ndescribe('ButtonGroup', () => {\n it('applies the horizontal orientation classes by default without setting data-orientation', () => {\n const { container } = render(\n <ButtonGroup>\n <Button>One</Button>\n <Button>Two</Button>\n </ButtonGroup>\n )\n\n const group = container.querySelector('[data-slot=\"button-group\"]')\n\n expect(group?.getAttribute('data-orientation')).toBeNull()\n expect(group?.className).toContain('rounded-l-none')\n })\n\n it('applies vertical orientation classes and sets data-orientation when orientation=\"vertical\"', () => {\n const { container } = render(\n <ButtonGroup orientation=\"vertical\">\n <Button>One</Button>\n <Button>Two</Button>\n </ButtonGroup>\n )\n\n const group = container.querySelector('[data-slot=\"button-group\"]')\n\n expect(group?.getAttribute('data-orientation')).toBe('vertical')\n expect(group?.className).toContain('flex-col')\n })\n\n it('merges a custom className onto the root', () => {\n const { container } = render(\n <ButtonGroup className=\"custom-group\">\n <Button>One</Button>\n </ButtonGroup>\n )\n\n expect(container.querySelector('[data-slot=\"button-group\"]')?.className).toContain('custom-group')\n })\n\n describe('ButtonGroupText', () => {\n it('renders as a div by default with the expected classes', () => {\n const { container } = render(<ButtonGroupText>Label</ButtonGroupText>)\n\n const text = container.querySelector('div')\n\n expect(text?.textContent).toBe('Label')\n expect(text?.className).toContain('rounded-lg')\n })\n\n it('renders as the child element when asChild is used', () => {\n const { container } = render(\n <ButtonGroupText asChild>\n <span>Custom</span>\n </ButtonGroupText>\n )\n\n expect(container.querySelector('span')?.textContent).toBe('Custom')\n expect(container.querySelector('div')).toBeNull()\n })\n })\n\n describe('ButtonGroupSeparator', () => {\n it('renders with data-slot=\"button-group-separator\" and a vertical orientation by default', () => {\n const { container } = render(<ButtonGroupSeparator />)\n\n const separator = container.querySelector('[data-slot=\"button-group-separator\"]')\n\n expect(separator?.getAttribute('data-orientation')).toBe('vertical')\n expect(separator?.className).toContain('bg-input')\n })\n\n it('supports switching to a horizontal orientation', () => {\n const { container } = render(<ButtonGroupSeparator orientation=\"horizontal\" />)\n\n expect(container.querySelector('[data-slot=\"button-group-separator\"]')?.getAttribute('data-orientation')).toBe(\n 'horizontal'\n )\n })\n })\n\n it('composes buttons and a separator inside a group', () => {\n const { container } = render(\n <ButtonGroup>\n <Button>One</Button>\n <ButtonGroupSeparator />\n <Button>Two</Button>\n </ButtonGroup>\n )\n\n const group = container.querySelector('[data-slot=\"button-group\"]')\n\n expect(group?.querySelectorAll('[data-slot=\"button\"]')).toHaveLength(2)\n expect(group?.querySelector('[data-slot=\"button-group-separator\"]')).not.toBeNull()\n })\n})\n"],"mappings":"+OAKA,SAAS,kBAAqB,CAC5B,GAAG,6FAAgG,CACjG,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,EACnB,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,CACR,CAAA,CAAA,CACf,EAEM,EAAQ,EAAU,cAAc,4BAA4B,EAElE,OAAO,GAAO,aAAa,kBAAkB,CAAC,CAAC,CAAC,SAAS,EACzD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,gBAAgB,CACrD,CAAC,EAED,GAAG,iGAAoG,CACrG,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAa,YAAY,WAAzB,SAAA,CACE,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,EACnB,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,CACR,CACf,CAAA,CAAA,EAEM,EAAQ,EAAU,cAAc,4BAA4B,EAElE,OAAO,GAAO,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,UAAU,EAC/D,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,UAAU,CAC/C,CAAC,EAED,GAAG,8CAAiD,CAClD,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAa,UAAU,eACrB,SAAA,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,CACR,CAAA,CACf,EAEA,OAAO,EAAU,cAAc,4BAA4B,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CACnG,CAAC,EAED,SAAS,sBAAyB,CAChC,GAAG,4DAA+D,CAChE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAiB,OAAsB,CAAA,CAAC,EAE/D,EAAO,EAAU,cAAc,KAAK,EAE1C,OAAO,GAAM,WAAW,CAAC,CAAC,KAAK,OAAO,EACtC,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,YAAY,CAChD,CAAC,EAED,GAAG,wDAA2D,CAC5D,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAiB,QAAA,GACf,SAAA,EAAC,OAAD,CAAA,SAAM,QAAY,CAAA,CACH,CAAA,CACnB,EAEA,OAAO,EAAU,cAAc,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,QAAQ,EAClE,OAAO,EAAU,cAAc,KAAK,CAAC,CAAC,CAAC,SAAS,CAClD,CAAC,CACH,CAAC,EAED,SAAS,2BAA8B,CACrC,GAAG,4FAA+F,CAChG,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAuB,CAAA,CAAC,EAE/C,EAAY,EAAU,cAAc,sCAAsC,EAEhF,OAAO,GAAW,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,UAAU,EACnE,OAAO,GAAW,SAAS,CAAC,CAAC,UAAU,UAAU,CACnD,CAAC,EAED,GAAG,qDAAwD,CACzD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAsB,YAAY,YAAc,CAAA,CAAC,EAE9E,OAAO,EAAU,cAAc,sCAAsC,CAAC,EAAE,aAAa,kBAAkB,CAAC,CAAC,CAAC,KACxG,YACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,EACnB,EAAC,EAAD,CAAuB,CAAA,EACvB,EAAC,EAAD,CAAA,SAAQ,KAAW,CAAA,CACR,CAAA,CAAA,CACf,EAEM,EAAQ,EAAU,cAAc,4BAA4B,EAElE,OAAO,GAAO,iBAAiB,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,EACtE,OAAO,GAAO,cAAc,sCAAsC,CAAC,CAAC,CAAC,IAAI,SAAS,CACpF,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../button-oI3hbOgp.js";import{a as t,n,r}from"../react.esm-dE9nuHcL.js";import{jsx as i}from"react/jsx-runtime";describe(`Button`,()=>{it(`renders a native button with default variants and data-slot`,()=>{let{container:t}=r(i(e,{children:`Save`})),n=t.querySelector(`[data-slot="button"]`);expect(n).not.toBeNull(),expect(n?.tagName).toBe(`BUTTON`),expect(n?.getAttribute(`type`)).toBe(`button`),expect(n?.getAttribute(`data-variant`)).toBe(`solid`),expect(n?.getAttribute(`data-color`)).toBe(`primary`),expect(n?.getAttribute(`data-size`)).toBe(`md`),expect(n?.getAttribute(`data-loading`)).toBe(`false`),expect(n?.className).toContain(`rounded-full`)}),it(`applies the requested variant, color and size`,()=>{let{container:t}=r(i(e,{variant:`outline`,color:`red`,size:`lg`,children:`Delete`})),n=t.querySelector(`[data-slot="button"]`);expect(n?.getAttribute(`data-variant`)).toBe(`outline`),expect(n?.getAttribute(`data-color`)).toBe(`red`),expect(n?.getAttribute(`data-size`)).toBe(`lg`),expect(n?.className).toContain(`border-(--button-outline-border)`)}),it(`disables the button and blocks clicks when disabled`,()=>{let a=vi.fn();r(i(e,{disabled:!0,onClick:a,children:`Disabled`}));let o=t.getByRole(`button`,{name:`Disabled`});expect(o).toHaveProperty(`disabled`,!0),n.click(o),expect(a).not.toHaveBeenCalled()}),it(`fires onClick when enabled`,()=>{let a=vi.fn();r(i(e,{onClick:a,children:`Submit`})),n.click(t.getByRole(`button`,{name:`Submit`})),expect(a).toHaveBeenCalledTimes(1)}),it(`hides the children and shows a spinner when loading`,()=>{let{container:n}=r(i(e,{loading:!0,children:`Submit`})),a=n.querySelector(`[data-slot="button"]`),o=n.querySelector(`[data-slot="spinner"]`);expect(a?.getAttribute(`data-loading`)).toBe(`true`),expect(a?.getAttribute(`aria-busy`)).toBe(`true`),expect(a).toHaveProperty(`disabled`,!0),expect(o).not.toBeNull(),expect(t.getByText(`Submit`).className).toContain(`invisible`)}),it(`renders the child element directly when asChild is set`,()=>{r(i(e,{asChild:!0,children:i(`a`,{href:`/somewhere`,children:`Go`})}));let n=t.getByRole(`link`,{name:`Go`});expect(n.getAttribute(`data-slot`)).toBe(`button`),expect(n.getAttribute(`type`)).toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=button.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button.spec.js","names":[],"sources":["../../src/components/button.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Button } from './button'\n\ndescribe('Button', () => {\n it('renders a native button with default variants and data-slot', () => {\n const { container } = render(<Button>Save</Button>)\n\n const button = container.querySelector('[data-slot=\"button\"]')\n\n expect(button).not.toBeNull()\n expect(button?.tagName).toBe('BUTTON')\n expect(button?.getAttribute('type')).toBe('button')\n expect(button?.getAttribute('data-variant')).toBe('solid')\n expect(button?.getAttribute('data-color')).toBe('primary')\n expect(button?.getAttribute('data-size')).toBe('md')\n expect(button?.getAttribute('data-loading')).toBe('false')\n expect(button?.className).toContain('rounded-full')\n })\n\n it('applies the requested variant, color and size', () => {\n const { container } = render(\n <Button variant=\"outline\" color=\"red\" size=\"lg\">\n Delete\n </Button>\n )\n\n const button = container.querySelector('[data-slot=\"button\"]')\n\n expect(button?.getAttribute('data-variant')).toBe('outline')\n expect(button?.getAttribute('data-color')).toBe('red')\n expect(button?.getAttribute('data-size')).toBe('lg')\n expect(button?.className).toContain('border-(--button-outline-border)')\n })\n\n it('disables the button and blocks clicks when disabled', () => {\n const handleClick = vi.fn()\n render(\n <Button disabled onClick={handleClick}>\n Disabled\n </Button>\n )\n\n const button = screen.getByRole('button', { name: 'Disabled' })\n\n expect(button).toHaveProperty('disabled', true)\n fireEvent.click(button)\n expect(handleClick).not.toHaveBeenCalled()\n })\n\n it('fires onClick when enabled', () => {\n const handleClick = vi.fn()\n render(<Button onClick={handleClick}>Submit</Button>)\n\n fireEvent.click(screen.getByRole('button', { name: 'Submit' }))\n\n expect(handleClick).toHaveBeenCalledTimes(1)\n })\n\n it('hides the children and shows a spinner when loading', () => {\n const { container } = render(<Button loading>Submit</Button>)\n\n const button = container.querySelector('[data-slot=\"button\"]')\n const spinner = container.querySelector('[data-slot=\"spinner\"]')\n\n expect(button?.getAttribute('data-loading')).toBe('true')\n expect(button?.getAttribute('aria-busy')).toBe('true')\n expect(button).toHaveProperty('disabled', true)\n expect(spinner).not.toBeNull()\n expect(screen.getByText('Submit').className).toContain('invisible')\n })\n\n it('renders the child element directly when asChild is set', () => {\n render(\n <Button asChild>\n <a href=\"/somewhere\">Go</a>\n </Button>\n )\n\n const button = screen.getByRole('link', { name: 'Go' })\n\n expect(button.getAttribute('data-slot')).toBe('button')\n expect(button.getAttribute('type')).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"../calendar-CW1kGXom.js";import{a as t,n,r}from"../react.esm-dE9nuHcL.js";import{jsx as i}from"react/jsx-runtime";function getCalendarRoot(e){return e.querySelector(`[data-slot="calendar"]`)}function findDayButton(e,t){return Array.from(e.querySelectorAll(`button`)).find(e=>e.textContent?.trim()===t)}describe(`Calendar`,()=>{it(`renders the current month by default`,()=>{let{container:t}=r(i(e,{})),n=t.querySelector(`[data-today="true"]`);expect(n).not.toBeNull(),expect(n?.textContent?.trim()).toBe(String(new Date().getDate()))}),it(`fires onSelect with the clicked date and focuses the day button`,()=>{let t=vi.fn(),{container:a}=r(i(e,{mode:`single`,onSelect:t,defaultMonth:new Date(2024,5,1)})),o=findDayButton(getCalendarRoot(a),`15`);expect(o).toBeDefined(),n.click(o),expect(t).toHaveBeenCalledTimes(1);let s=t.mock.calls[0]?.[0];expect(s.getFullYear()).toBe(2024),expect(s.getMonth()).toBe(5),expect(s.getDate()).toBe(15),expect(document.activeElement).toBe(o)}),it(`moves DOM focus to the adjacent day when navigating with the keyboard`,()=>{let{container:t}=r(i(e,{mode:`single`,defaultMonth:new Date(2024,5,1)})),a=getCalendarRoot(t),o=findDayButton(a,`15`),s=findDayButton(a,`16`);n.click(o),expect(document.activeElement).toBe(o),n.keyDown(o,{key:`ArrowRight`}),expect(document.activeElement).toBe(s)}),it(`navigates to the next and previous month using the nav buttons`,()=>{r(i(e,{defaultMonth:new Date(2024,5,1)})),expect(t.getByText(`June 2024`)).toBeTruthy(),n.click(t.getByRole(`button`,{name:`Go to the Next Month`})),expect(t.getByText(`July 2024`)).toBeTruthy(),n.click(t.getByRole(`button`,{name:`Go to the Previous Month`})),expect(t.getByText(`June 2024`)).toBeTruthy()}),it(`defaults the navigation buttons to the ghost button variant`,()=>{r(i(e,{defaultMonth:new Date(2024,5,1)}));let n=t.getByRole(`button`,{name:`Go to the Previous Month`});expect(n.className).toContain(`button-ghost-hover`)}),it(`applies the buttonVariant prop to the navigation buttons`,()=>{r(i(e,{buttonVariant:`outline`,defaultMonth:new Date(2024,5,1)}));let n=t.getByRole(`button`,{name:`Go to the Previous Month`});expect(n.className).toContain(`button-outline-border`)})});
|
|
2
|
-
//# sourceMappingURL=calendar.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.spec.js","names":[],"sources":["../../src/components/calendar.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Calendar } from './calendar'\n\nfunction getCalendarRoot(container: HTMLElement) {\n return container.querySelector('[data-slot=\"calendar\"]') as HTMLElement\n}\n\nfunction findDayButton(calendarRoot: HTMLElement, day: string) {\n return Array.from(calendarRoot.querySelectorAll('button')).find(\n (button) => button.textContent?.trim() === day\n ) as HTMLButtonElement\n}\n\ndescribe('Calendar', () => {\n it('renders the current month by default', () => {\n const { container } = render(<Calendar />)\n\n const todayCell = container.querySelector('[data-today=\"true\"]')\n\n expect(todayCell).not.toBeNull()\n expect(todayCell?.textContent?.trim()).toBe(String(new Date().getDate()))\n })\n\n it('fires onSelect with the clicked date and focuses the day button', () => {\n const onSelect = vi.fn()\n const { container } = render(<Calendar mode=\"single\" onSelect={onSelect} defaultMonth={new Date(2024, 5, 1)} />)\n\n const calendarRoot = getCalendarRoot(container)\n const day15 = findDayButton(calendarRoot, '15')\n\n expect(day15).toBeDefined()\n\n fireEvent.click(day15)\n\n expect(onSelect).toHaveBeenCalledTimes(1)\n\n const selectedDate = onSelect.mock.calls[0]?.[0] as Date\n expect(selectedDate.getFullYear()).toBe(2024)\n expect(selectedDate.getMonth()).toBe(5)\n expect(selectedDate.getDate()).toBe(15)\n\n expect(document.activeElement).toBe(day15)\n })\n\n it('moves DOM focus to the adjacent day when navigating with the keyboard', () => {\n const { container } = render(<Calendar mode=\"single\" defaultMonth={new Date(2024, 5, 1)} />)\n\n const calendarRoot = getCalendarRoot(container)\n const day15 = findDayButton(calendarRoot, '15')\n const day16 = findDayButton(calendarRoot, '16')\n\n fireEvent.click(day15)\n expect(document.activeElement).toBe(day15)\n\n fireEvent.keyDown(day15, { key: 'ArrowRight' })\n\n expect(document.activeElement).toBe(day16)\n })\n\n it('navigates to the next and previous month using the nav buttons', () => {\n render(<Calendar defaultMonth={new Date(2024, 5, 1)} />)\n\n expect(screen.getByText('June 2024')).toBeTruthy()\n\n fireEvent.click(screen.getByRole('button', { name: 'Go to the Next Month' }))\n expect(screen.getByText('July 2024')).toBeTruthy()\n\n fireEvent.click(screen.getByRole('button', { name: 'Go to the Previous Month' }))\n expect(screen.getByText('June 2024')).toBeTruthy()\n })\n\n it('defaults the navigation buttons to the ghost button variant', () => {\n render(<Calendar defaultMonth={new Date(2024, 5, 1)} />)\n\n const previousButton = screen.getByRole('button', { name: 'Go to the Previous Month' })\n\n expect(previousButton.className).toContain('button-ghost-hover')\n })\n\n it('applies the buttonVariant prop to the navigation buttons', () => {\n render(<Calendar buttonVariant=\"outline\" defaultMonth={new Date(2024, 5, 1)} />)\n\n const previousButton = screen.getByRole('button', { name: 'Go to the Previous Month' })\n\n expect(previousButton.className).toContain('button-outline-border')\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,i as t,n,o as r,r as i,s as a,t as o}from"../card-Bx6iiocl.js";import{r as s}from"../react.esm-dE9nuHcL.js";import{jsx as c,jsxs as l}from"react/jsx-runtime";describe(`Card`,()=>{it(`defaults to the md size and renders all subcomponent slots`,()=>{let{container:u}=s(l(o,{children:[l(r,{children:[c(a,{children:`Title`}),c(t,{children:`Description`}),c(n,{children:`Action`})]}),c(i,{children:`Content`}),c(e,{children:`Footer`})]}));expect(u.querySelector(`[data-slot="card"]`)?.getAttribute(`data-size`)).toBe(`md`),expect(u.querySelector(`[data-slot="card-header"]`)).not.toBeNull(),expect(u.querySelector(`[data-slot="card-title"]`)?.textContent).toBe(`Title`),expect(u.querySelector(`[data-slot="card-description"]`)?.textContent).toBe(`Description`),expect(u.querySelector(`[data-slot="card-action"]`)?.textContent).toBe(`Action`),expect(u.querySelector(`[data-slot="card-content"]`)?.textContent).toBe(`Content`),expect(u.querySelector(`[data-slot="card-footer"]`)?.textContent).toBe(`Footer`)}),it(`applies size-specific data attribute and classes for sm and lg`,()=>{let{container:e,rerender:t}=s(c(o,{size:`sm`,children:`Body`})),n=e.querySelector(`[data-slot="card"]`);expect(n?.getAttribute(`data-size`)).toBe(`sm`),expect(n?.className).toContain(`data-[size=sm]:py-3`),t(c(o,{size:`lg`,children:`Body`})),n=e.querySelector(`[data-slot="card"]`),expect(n?.getAttribute(`data-size`)).toBe(`lg`),expect(n?.className).toContain(`data-[size=lg]:py-6`)}),it(`merges a custom className onto the root`,()=>{let{container:e}=s(c(o,{className:`custom-card`,children:`Body`}));expect(e.querySelector(`[data-slot="card"]`)?.className).toContain(`custom-card`)}),it(`merges custom classNames onto each subcomponent`,()=>{let{container:u}=s(l(o,{children:[l(r,{className:`custom-header`,children:[c(a,{className:`custom-title`,children:`Title`}),c(t,{className:`custom-description`,children:`Description`}),c(n,{className:`custom-action`,children:`Action`})]}),c(i,{className:`custom-content`,children:`Content`}),c(e,{className:`custom-footer`,children:`Footer`})]}));expect(u.querySelector(`[data-slot="card-header"]`)?.className).toContain(`custom-header`),expect(u.querySelector(`[data-slot="card-title"]`)?.className).toContain(`custom-title`),expect(u.querySelector(`[data-slot="card-description"]`)?.className).toContain(`custom-description`),expect(u.querySelector(`[data-slot="card-action"]`)?.className).toContain(`custom-action`),expect(u.querySelector(`[data-slot="card-content"]`)?.className).toContain(`custom-content`),expect(u.querySelector(`[data-slot="card-footer"]`)?.className).toContain(`custom-footer`)})});
|
|
2
|
-
//# sourceMappingURL=card.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"card.spec.js","names":[],"sources":["../../src/components/card.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './card'\n\ndescribe('Card', () => {\n it('defaults to the md size and renders all subcomponent slots', () => {\n const { container } = render(\n <Card>\n <CardHeader>\n <CardTitle>Title</CardTitle>\n <CardDescription>Description</CardDescription>\n <CardAction>Action</CardAction>\n </CardHeader>\n <CardContent>Content</CardContent>\n <CardFooter>Footer</CardFooter>\n </Card>\n )\n\n expect(container.querySelector('[data-slot=\"card\"]')?.getAttribute('data-size')).toBe('md')\n expect(container.querySelector('[data-slot=\"card-header\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"card-title\"]')?.textContent).toBe('Title')\n expect(container.querySelector('[data-slot=\"card-description\"]')?.textContent).toBe('Description')\n expect(container.querySelector('[data-slot=\"card-action\"]')?.textContent).toBe('Action')\n expect(container.querySelector('[data-slot=\"card-content\"]')?.textContent).toBe('Content')\n expect(container.querySelector('[data-slot=\"card-footer\"]')?.textContent).toBe('Footer')\n })\n\n it('applies size-specific data attribute and classes for sm and lg', () => {\n const { container, rerender } = render(<Card size=\"sm\">Body</Card>)\n\n let card = container.querySelector('[data-slot=\"card\"]')\n expect(card?.getAttribute('data-size')).toBe('sm')\n expect(card?.className).toContain('data-[size=sm]:py-3')\n\n rerender(<Card size=\"lg\">Body</Card>)\n card = container.querySelector('[data-slot=\"card\"]')\n expect(card?.getAttribute('data-size')).toBe('lg')\n expect(card?.className).toContain('data-[size=lg]:py-6')\n })\n\n it('merges a custom className onto the root', () => {\n const { container } = render(<Card className=\"custom-card\">Body</Card>)\n\n expect(container.querySelector('[data-slot=\"card\"]')?.className).toContain('custom-card')\n })\n\n it('merges custom classNames onto each subcomponent', () => {\n const { container } = render(\n <Card>\n <CardHeader className=\"custom-header\">\n <CardTitle className=\"custom-title\">Title</CardTitle>\n <CardDescription className=\"custom-description\">Description</CardDescription>\n <CardAction className=\"custom-action\">Action</CardAction>\n </CardHeader>\n <CardContent className=\"custom-content\">Content</CardContent>\n <CardFooter className=\"custom-footer\">Footer</CardFooter>\n </Card>\n )\n\n expect(container.querySelector('[data-slot=\"card-header\"]')?.className).toContain('custom-header')\n expect(container.querySelector('[data-slot=\"card-title\"]')?.className).toContain('custom-title')\n expect(container.querySelector('[data-slot=\"card-description\"]')?.className).toContain('custom-description')\n expect(container.querySelector('[data-slot=\"card-action\"]')?.className).toContain('custom-action')\n expect(container.querySelector('[data-slot=\"card-content\"]')?.className).toContain('custom-content')\n expect(container.querySelector('[data-slot=\"card-footer\"]')?.className).toContain('custom-footer')\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,i as t,n,r,t as i}from"../react.esm-dE9nuHcL.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";const{emblaMock:s,useEmblaCarouselMock:c}=vi.hoisted(()=>{let e={canScrollPrev:vi.fn(),canScrollNext:vi.fn(),selectedScrollSnap:vi.fn(),scrollSnapList:vi.fn(),scrollPrev:vi.fn(),scrollNext:vi.fn(),scrollTo:vi.fn(),on:vi.fn(),off:vi.fn()},t=vi.fn((...t)=>[vi.fn(),e]);return{emblaMock:{api:e},useEmblaCarouselMock:t}});vi.mock(`embla-carousel-react`,()=>({default:c}));const{Carousel:l,CarouselContent:u,CarouselIndicators:d,CarouselItem:f,CarouselNext:p,CarouselPrevious:m,useCarousel:h}=await import(`./carousel.js`);function triggerSelect(){let e=s.api.on.mock.calls.find(([e])=>e===`select`)?.[1];i(()=>e?.(s.api))}function renderCarousel(e={}){return r(o(l,{...e,children:[o(u,{children:[a(f,{children:`First`}),a(f,{children:`Second`}),a(f,{children:`Third`})]}),a(m,{}),a(p,{}),a(d,{})]}))}describe(`Carousel`,()=>{beforeEach(()=>{s.api.canScrollPrev.mockReturnValue(!1),s.api.canScrollNext.mockReturnValue(!1),s.api.selectedScrollSnap.mockReturnValue(0),s.api.scrollSnapList.mockReturnValue([])}),it(`throws when used outside a <Carousel />`,()=>{expect(()=>t(()=>h())).toThrow(`useCarousel must be used within a <Carousel />`)}),it(`renders the section with the carousel data-slot and merges a custom className`,()=>{let{container:e}=renderCarousel({className:`custom-carousel`}),t=e.querySelector(`[data-slot="carousel"]`);expect(t?.tagName).toBe(`SECTION`),expect(t?.className).toContain(`custom-carousel`)}),it(`defaults to the horizontal axis`,()=>{renderCarousel();let e=c.mock.calls.at(-1)?.[0];expect(e?.axis).toBe(`x`)}),it(`maps the vertical orientation to the y axis`,()=>{renderCarousel({orientation:`vertical`});let e=c.mock.calls.at(-1)?.[0];expect(e?.axis).toBe(`y`)}),it(`calls setApi with the embla api once mounted`,()=>{let e=vi.fn();renderCarousel({setApi:e}),expect(e).toHaveBeenCalledWith(s.api)}),it(`subscribes to reInit/select on mount and unsubscribes on unmount`,()=>{let{unmount:e}=renderCarousel();expect(s.api.on).toHaveBeenCalledWith(`reInit`,expect.any(Function)),expect(s.api.on).toHaveBeenCalledWith(`select`,expect.any(Function)),e(),expect(s.api.off).toHaveBeenCalledWith(`reInit`,expect.any(Function)),expect(s.api.off).toHaveBeenCalledWith(`select`,expect.any(Function))}),it(`scrolls to the previous slide on ArrowLeft and prevents the default action`,()=>{let{container:e}=renderCarousel(),t=e.querySelector(`[data-slot="carousel"]`),r=n.keyDown(t,{key:`ArrowLeft`});expect(r).toBe(!1),expect(s.api.scrollPrev).toHaveBeenCalledTimes(1)}),it(`scrolls to the next slide on ArrowRight and prevents the default action`,()=>{let{container:e}=renderCarousel(),t=e.querySelector(`[data-slot="carousel"]`),r=n.keyDown(t,{key:`ArrowRight`});expect(r).toBe(!1),expect(s.api.scrollNext).toHaveBeenCalledTimes(1)}),it(`ignores unrelated keys`,()=>{let{container:e}=renderCarousel(),t=e.querySelector(`[data-slot="carousel"]`);n.keyDown(t,{key:`Enter`}),expect(s.api.scrollPrev).not.toHaveBeenCalled(),expect(s.api.scrollNext).not.toHaveBeenCalled()}),describe(`CarouselContent`,()=>{it(`uses the horizontal offset classes by default`,()=>{let{container:e}=renderCarousel(),t=e.querySelector(`[data-slot="carousel-content"]`).firstElementChild;expect(t.className).toContain(`-ml-4`)}),it(`uses the vertical offset classes when the carousel is vertical`,()=>{let{container:e}=renderCarousel({orientation:`vertical`}),t=e.querySelector(`[data-slot="carousel-content"]`).firstElementChild;expect(t.className).toContain(`-mt-4`),expect(t.className).toContain(`flex-col`)})}),describe(`CarouselItem`,()=>{it(`uses the horizontal padding class by default`,()=>{let{container:e}=renderCarousel();expect(e.querySelector(`[data-slot="carousel-item"]`)?.className).toContain(`pl-4`)}),it(`uses the vertical padding class when the carousel is vertical`,()=>{let{container:e}=renderCarousel({orientation:`vertical`});expect(e.querySelector(`[data-slot="carousel-item"]`)?.className).toContain(`pt-4`)})}),describe(`CarouselPrevious`,()=>{it(`is disabled when the carousel cannot scroll back and enabled once the api reports it can`,()=>{s.api.canScrollPrev.mockReturnValue(!1),renderCarousel();let t=e.getByRole(`button`,{name:`Previous slide`});expect(t.hasAttribute(`disabled`)).toBe(!0),s.api.canScrollPrev.mockReturnValue(!0),triggerSelect(),expect(t.hasAttribute(`disabled`)).toBe(!1)}),it(`calls scrollPrev when clicked`,()=>{s.api.canScrollPrev.mockReturnValue(!0),renderCarousel(),n.click(e.getByRole(`button`,{name:`Previous slide`})),expect(s.api.scrollPrev).toHaveBeenCalledTimes(1)})}),describe(`CarouselNext`,()=>{it(`is disabled when the carousel cannot scroll forward and enabled once the api reports it can`,()=>{s.api.canScrollNext.mockReturnValue(!1),renderCarousel();let t=e.getByRole(`button`,{name:`Next slide`});expect(t.hasAttribute(`disabled`)).toBe(!0),s.api.canScrollNext.mockReturnValue(!0),triggerSelect(),expect(t.hasAttribute(`disabled`)).toBe(!1)}),it(`calls scrollNext when clicked`,()=>{s.api.canScrollNext.mockReturnValue(!0),renderCarousel(),n.click(e.getByRole(`button`,{name:`Next slide`})),expect(s.api.scrollNext).toHaveBeenCalledTimes(1)})}),describe(`CarouselIndicators`,()=>{beforeEach(()=>{s.api.canScrollPrev.mockReturnValue(!0),s.api.canScrollNext.mockReturnValue(!0),s.api.selectedScrollSnap.mockReturnValue(1),s.api.scrollSnapList.mockReturnValue([0,1,2])}),it(`renders one indicator button per scroll snap`,async()=>{renderCarousel(),expect(await e.findAllByRole(`button`,{name:/Go to slide/})).toHaveLength(3)}),it(`marks the selected indicator as active`,async()=>{renderCarousel();let t=await e.findByRole(`button`,{name:`Go to slide 2`});expect(t.getAttribute(`data-active`)).toBe(`true`),expect(e.getByRole(`button`,{name:`Go to slide 1`}).getAttribute(`data-active`)).toBeNull()}),it(`scrolls to the indicator index when clicked`,async()=>{renderCarousel(),n.click(await e.findByRole(`button`,{name:`Go to slide 3`})),expect(s.api.scrollTo).toHaveBeenCalledWith(2)}),it(`does not render indicators when there are no scroll snaps`,()=>{s.api.scrollSnapList.mockReturnValue([]);let{container:e}=renderCarousel();expect(e.querySelector(`[data-slot="carousel-indicators"]`)).toBeNull()})})});
|
|
2
|
-
//# sourceMappingURL=carousel.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.spec.js","names":[],"sources":["../../src/components/carousel.spec.tsx"],"sourcesContent":["import { act, fireEvent, render, renderHook, screen } from '@testing-library/react'\nimport type useEmblaCarousel from 'embla-carousel-react'\n\nconst { emblaMock, useEmblaCarouselMock } = vi.hoisted(() => {\n const api = {\n canScrollPrev: vi.fn(),\n canScrollNext: vi.fn(),\n selectedScrollSnap: vi.fn(),\n scrollSnapList: vi.fn(),\n scrollPrev: vi.fn(),\n scrollNext: vi.fn(),\n scrollTo: vi.fn(),\n on: vi.fn(),\n off: vi.fn()\n }\n const useEmblaCarouselMock = vi.fn((..._args: Parameters<typeof useEmblaCarousel>) => [vi.fn(), api] as const)\n\n return { emblaMock: { api }, useEmblaCarouselMock }\n})\n\nvi.mock('embla-carousel-react', () => ({\n default: useEmblaCarouselMock\n}))\n\nconst { Carousel, CarouselContent, CarouselIndicators, CarouselItem, CarouselNext, CarouselPrevious, useCarousel } =\n await import('./carousel')\n\nfunction triggerSelect() {\n const onSelect = emblaMock.api.on.mock.calls.find(([event]) => event === 'select')?.[1] as\n | ((api: typeof emblaMock.api) => void)\n | undefined\n\n act(() => onSelect?.(emblaMock.api))\n}\n\nfunction renderCarousel(carouselProps: Record<string, unknown> = {}) {\n return render(\n <Carousel {...carouselProps}>\n <CarouselContent>\n <CarouselItem>First</CarouselItem>\n <CarouselItem>Second</CarouselItem>\n <CarouselItem>Third</CarouselItem>\n </CarouselContent>\n <CarouselPrevious />\n <CarouselNext />\n <CarouselIndicators />\n </Carousel>\n )\n}\n\ndescribe('Carousel', () => {\n beforeEach(() => {\n emblaMock.api.canScrollPrev.mockReturnValue(false)\n emblaMock.api.canScrollNext.mockReturnValue(false)\n emblaMock.api.selectedScrollSnap.mockReturnValue(0)\n emblaMock.api.scrollSnapList.mockReturnValue([])\n })\n\n it('throws when used outside a <Carousel />', () => {\n expect(() => renderHook(() => useCarousel())).toThrow('useCarousel must be used within a <Carousel />')\n })\n\n it('renders the section with the carousel data-slot and merges a custom className', () => {\n const { container } = renderCarousel({ className: 'custom-carousel' })\n\n const section = container.querySelector('[data-slot=\"carousel\"]')\n\n expect(section?.tagName).toBe('SECTION')\n expect(section?.className).toContain('custom-carousel')\n })\n\n it('defaults to the horizontal axis', () => {\n renderCarousel()\n\n const lastOptions = useEmblaCarouselMock.mock.calls.at(-1)?.[0]\n\n expect(lastOptions?.axis).toBe('x')\n })\n\n it('maps the vertical orientation to the y axis', () => {\n renderCarousel({ orientation: 'vertical' })\n\n const lastOptions = useEmblaCarouselMock.mock.calls.at(-1)?.[0]\n\n expect(lastOptions?.axis).toBe('y')\n })\n\n it('calls setApi with the embla api once mounted', () => {\n const setApi = vi.fn()\n\n renderCarousel({ setApi })\n\n expect(setApi).toHaveBeenCalledWith(emblaMock.api)\n })\n\n it('subscribes to reInit/select on mount and unsubscribes on unmount', () => {\n const { unmount } = renderCarousel()\n\n expect(emblaMock.api.on).toHaveBeenCalledWith('reInit', expect.any(Function))\n expect(emblaMock.api.on).toHaveBeenCalledWith('select', expect.any(Function))\n\n unmount()\n\n expect(emblaMock.api.off).toHaveBeenCalledWith('reInit', expect.any(Function))\n expect(emblaMock.api.off).toHaveBeenCalledWith('select', expect.any(Function))\n })\n\n it('scrolls to the previous slide on ArrowLeft and prevents the default action', () => {\n const { container } = renderCarousel()\n const section = container.querySelector('[data-slot=\"carousel\"]') as HTMLElement\n\n const wasNotCancelled = fireEvent.keyDown(section, { key: 'ArrowLeft' })\n\n expect(wasNotCancelled).toBe(false)\n expect(emblaMock.api.scrollPrev).toHaveBeenCalledTimes(1)\n })\n\n it('scrolls to the next slide on ArrowRight and prevents the default action', () => {\n const { container } = renderCarousel()\n const section = container.querySelector('[data-slot=\"carousel\"]') as HTMLElement\n\n const wasNotCancelled = fireEvent.keyDown(section, { key: 'ArrowRight' })\n\n expect(wasNotCancelled).toBe(false)\n expect(emblaMock.api.scrollNext).toHaveBeenCalledTimes(1)\n })\n\n it('ignores unrelated keys', () => {\n const { container } = renderCarousel()\n const section = container.querySelector('[data-slot=\"carousel\"]') as HTMLElement\n\n fireEvent.keyDown(section, { key: 'Enter' })\n\n expect(emblaMock.api.scrollPrev).not.toHaveBeenCalled()\n expect(emblaMock.api.scrollNext).not.toHaveBeenCalled()\n })\n\n describe('CarouselContent', () => {\n it('uses the horizontal offset classes by default', () => {\n const { container } = renderCarousel()\n\n const outer = container.querySelector('[data-slot=\"carousel-content\"]') as HTMLElement\n const inner = outer.firstElementChild as HTMLElement\n\n expect(inner.className).toContain('-ml-4')\n })\n\n it('uses the vertical offset classes when the carousel is vertical', () => {\n const { container } = renderCarousel({ orientation: 'vertical' })\n\n const outer = container.querySelector('[data-slot=\"carousel-content\"]') as HTMLElement\n const inner = outer.firstElementChild as HTMLElement\n\n expect(inner.className).toContain('-mt-4')\n expect(inner.className).toContain('flex-col')\n })\n })\n\n describe('CarouselItem', () => {\n it('uses the horizontal padding class by default', () => {\n const { container } = renderCarousel()\n\n expect(container.querySelector('[data-slot=\"carousel-item\"]')?.className).toContain('pl-4')\n })\n\n it('uses the vertical padding class when the carousel is vertical', () => {\n const { container } = renderCarousel({ orientation: 'vertical' })\n\n expect(container.querySelector('[data-slot=\"carousel-item\"]')?.className).toContain('pt-4')\n })\n })\n\n describe('CarouselPrevious', () => {\n it('is disabled when the carousel cannot scroll back and enabled once the api reports it can', () => {\n emblaMock.api.canScrollPrev.mockReturnValue(false)\n renderCarousel()\n\n const prevButton = screen.getByRole('button', { name: 'Previous slide' })\n expect(prevButton.hasAttribute('disabled')).toBe(true)\n\n emblaMock.api.canScrollPrev.mockReturnValue(true)\n triggerSelect()\n\n expect(prevButton.hasAttribute('disabled')).toBe(false)\n })\n\n it('calls scrollPrev when clicked', () => {\n emblaMock.api.canScrollPrev.mockReturnValue(true)\n renderCarousel()\n\n fireEvent.click(screen.getByRole('button', { name: 'Previous slide' }))\n\n expect(emblaMock.api.scrollPrev).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('CarouselNext', () => {\n it('is disabled when the carousel cannot scroll forward and enabled once the api reports it can', () => {\n emblaMock.api.canScrollNext.mockReturnValue(false)\n renderCarousel()\n\n const nextButton = screen.getByRole('button', { name: 'Next slide' })\n expect(nextButton.hasAttribute('disabled')).toBe(true)\n\n emblaMock.api.canScrollNext.mockReturnValue(true)\n triggerSelect()\n\n expect(nextButton.hasAttribute('disabled')).toBe(false)\n })\n\n it('calls scrollNext when clicked', () => {\n emblaMock.api.canScrollNext.mockReturnValue(true)\n renderCarousel()\n\n fireEvent.click(screen.getByRole('button', { name: 'Next slide' }))\n\n expect(emblaMock.api.scrollNext).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('CarouselIndicators', () => {\n beforeEach(() => {\n emblaMock.api.canScrollPrev.mockReturnValue(true)\n emblaMock.api.canScrollNext.mockReturnValue(true)\n emblaMock.api.selectedScrollSnap.mockReturnValue(1)\n emblaMock.api.scrollSnapList.mockReturnValue([0, 1, 2])\n })\n\n it('renders one indicator button per scroll snap', async () => {\n renderCarousel()\n\n expect(await screen.findAllByRole('button', { name: /Go to slide/ })).toHaveLength(3)\n })\n\n it('marks the selected indicator as active', async () => {\n renderCarousel()\n\n const selectedIndicator = await screen.findByRole('button', { name: 'Go to slide 2' })\n\n expect(selectedIndicator.getAttribute('data-active')).toBe('true')\n expect(screen.getByRole('button', { name: 'Go to slide 1' }).getAttribute('data-active')).toBeNull()\n })\n\n it('scrolls to the indicator index when clicked', async () => {\n renderCarousel()\n\n fireEvent.click(await screen.findByRole('button', { name: 'Go to slide 3' }))\n\n expect(emblaMock.api.scrollTo).toHaveBeenCalledWith(2)\n })\n\n it('does not render indicators when there are no scroll snaps', () => {\n emblaMock.api.scrollSnapList.mockReturnValue([])\n\n const { container } = renderCarousel()\n\n expect(container.querySelector('[data-slot=\"carousel-indicators\"]')).toBeNull()\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{t as e}from"../center-Dl1rnq7S.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`Center`,()=>{it(`renders a div with default variants and data-slot`,()=>{let{container:r}=t(n(e,{children:`Content`})),i=r.querySelector(`[data-slot="center"]`);expect(i).not.toBeNull(),expect(i?.tagName).toBe(`DIV`),expect(i?.getAttribute(`data-direction`)).toBe(`horizontal`),expect(i?.getAttribute(`data-size`)).toBe(`md`),expect(i?.className).toContain(`items-center`),expect(i?.className).toContain(`justify-center`),expect(i?.className).toContain(`flex-row`),expect(i?.className).toContain(`gap-3`)}),it(`applies the vertical direction variant`,()=>{let{container:r}=t(n(e,{direction:`vertical`,children:`Content`})),i=r.querySelector(`[data-slot="center"]`);expect(i?.getAttribute(`data-direction`)).toBe(`vertical`),expect(i?.className).toContain(`flex-col`)}),it(`applies the requested size variant`,()=>{let{container:r}=t(n(e,{size:`xl`,children:`Content`})),i=r.querySelector(`[data-slot="center"]`);expect(i?.getAttribute(`data-size`)).toBe(`xl`),expect(i?.className).toContain(`gap-6`)}),it(`renders children and merges a custom className`,()=>{let{container:r,getByText:i}=t(n(e,{className:`custom-class`,children:`Hello`})),a=r.querySelector(`[data-slot="center"]`);expect(i(`Hello`)).not.toBeNull(),expect(a?.className).toContain(`custom-class`)}),it(`forwards the ref to the underlying div element`,()=>{let r={current:null};t(n(e,{ref:r,children:`Content`})),expect(r.current).not.toBeNull(),expect(r.current?.getAttribute(`data-slot`)).toBe(`center`)})});
|
|
2
|
-
//# sourceMappingURL=center.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"center.spec.js","names":[],"sources":["../../src/components/center.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Center } from './center'\n\ndescribe('Center', () => {\n it('renders a div with default variants and data-slot', () => {\n const { container } = render(<Center>Content</Center>)\n\n const center = container.querySelector('[data-slot=\"center\"]')\n\n expect(center).not.toBeNull()\n expect(center?.tagName).toBe('DIV')\n expect(center?.getAttribute('data-direction')).toBe('horizontal')\n expect(center?.getAttribute('data-size')).toBe('md')\n expect(center?.className).toContain('items-center')\n expect(center?.className).toContain('justify-center')\n expect(center?.className).toContain('flex-row')\n expect(center?.className).toContain('gap-3')\n })\n\n it('applies the vertical direction variant', () => {\n const { container } = render(<Center direction=\"vertical\">Content</Center>)\n\n const center = container.querySelector('[data-slot=\"center\"]')\n\n expect(center?.getAttribute('data-direction')).toBe('vertical')\n expect(center?.className).toContain('flex-col')\n })\n\n it('applies the requested size variant', () => {\n const { container } = render(<Center size=\"xl\">Content</Center>)\n\n const center = container.querySelector('[data-slot=\"center\"]')\n\n expect(center?.getAttribute('data-size')).toBe('xl')\n expect(center?.className).toContain('gap-6')\n })\n\n it('renders children and merges a custom className', () => {\n const { container, getByText } = render(<Center className=\"custom-class\">Hello</Center>)\n\n const center = container.querySelector('[data-slot=\"center\"]')\n\n expect(getByText('Hello')).not.toBeNull()\n expect(center?.className).toContain('custom-class')\n })\n\n it('forwards the ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Center ref={ref}>Content</Center>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.getAttribute('data-slot')).toBe('center')\n })\n})\n"],"mappings":"uKAIA,SAAS,aAAgB,CACvB,GAAG,wDAA2D,CAC5D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAQ,SAAe,CAAA,CAAC,EAE/C,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,CAAM,CAAC,CAAC,IAAI,SAAS,EAC5B,OAAO,GAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,EAClC,OAAO,GAAQ,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,YAAY,EAChE,OAAO,GAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACnD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,cAAc,EAClD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,gBAAgB,EACpD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,UAAU,EAC9C,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,OAAO,CAC7C,CAAC,EAED,GAAG,6CAAgD,CACjD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,UAAU,WAAW,SAAA,SAAe,CAAA,CAAC,EAEpE,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,UAAU,EAC9D,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,UAAU,CAChD,CAAC,EAED,GAAG,yCAA4C,CAC7C,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,KAAK,KAAK,SAAA,SAAe,CAAA,CAAC,EAEzD,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACnD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,OAAO,CAC7C,CAAC,EAED,GAAG,qDAAwD,CACzD,GAAM,CAAE,YAAW,aAAc,EAAO,EAAC,EAAD,CAAQ,UAAU,eAAe,SAAA,OAAa,CAAA,CAAC,EAEjF,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,EAAU,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,EACxC,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,cAAc,CACpD,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAa,MAAK,SAAA,SAAe,CAAA,CAAC,EAEzC,OAAO,EAAI,OAAO,CAAC,CAAC,IAAI,SAAS,EACjC,OAAO,EAAI,SAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC9D,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{c as e,i as t,l as n,n as r,s as i,t as a}from"../chart-Ci4V8B8v.js";import{a as o,r as s}from"../react.esm-dE9nuHcL.js";import{jsx as c}from"react/jsx-runtime";beforeAll(()=>{vi.stubGlobal(`ResizeObserver`,class{observe(){}unobserve(){}disconnect(){}}),Object.defineProperty(HTMLElement.prototype,"offsetWidth",{configurable:!0,value:500}),Object.defineProperty(HTMLElement.prototype,"offsetHeight",{configurable:!0,value:300}),HTMLElement.prototype.getBoundingClientRect=()=>({width:500,height:300,top:0,left:0,right:500,bottom:300,x:0,y:0,toJSON(){}})});const l={desktop:{label:`Desktop`,color:`#3b82f6`},mobile:{label:`Mobile`,color:`#22c55e`}};describe(`ChartContainer`,()=>{it(`renders its children inside a data-slot="chart" wrapper with a derived data-chart id`,()=>{let{container:e}=s(c(r,{config:l,children:c(`div`,{children:`content`})})),t=e.querySelector(`[data-slot="chart"]`);expect(t).not.toBeNull(),expect(t?.getAttribute(`data-chart`)).toMatch(/^chart-/)}),it(`derives the data-chart attribute from an explicit id prop`,()=>{let{container:e}=s(c(r,{id:`revenue`,config:l,children:c(`div`,{children:`content`})}));expect(e.querySelector(`[data-slot="chart"]`)?.getAttribute(`data-chart`)).toBe(`chart-revenue`)}),it(`merges a custom className with the base chart classes`,()=>{let{container:e}=s(c(r,{config:l,className:`custom-chart`,children:c(`div`,{children:`content`})})),t=e.querySelector(`[data-slot="chart"]`);expect(t?.className).toContain(`custom-chart`),expect(t?.className).toContain(`aspect-video`)}),it(`spreads additional props onto the wrapper div`,()=>{let{container:e}=s(c(r,{config:l,"data-testid":`my-chart`,children:c(`div`,{children:`content`})}));expect(e.querySelector(`[data-testid="my-chart"]`)).not.toBeNull()}),describe(`ChartTooltipContent`,()=>{it(`throws when rendered outside of a ChartContainer`,()=>{expect(()=>s(c(i,{active:!0,payload:[]}))).toThrow(`useChart must be used within a <ChartContainer />`)}),it(`returns null when active is false`,()=>{let{container:e}=s(c(r,{config:l,children:c(i,{active:!1,payload:[{dataKey:`desktop`,name:`desktop`,value:186,payload:{}}]})}));expect(e.querySelector(`.shadow-xl`)).toBeNull()}),it(`returns null when the payload is empty`,()=>{let{container:e}=s(c(r,{config:l,children:c(i,{active:!0,payload:[]})}));expect(e.querySelector(`.shadow-xl`)).toBeNull()}),it(`renders the resolved config label above the item rows`,()=>{let{container:e}=s(c(r,{config:l,children:c(i,{active:!0,payload:[{dataKey:`desktop`,name:`desktop`,value:186,color:`#3b82f6`,payload:{fill:`#3b82f6`}}]})}));expect(e.querySelector(`div.font-medium`)?.textContent).toBe(`Desktop`),expect(o.getByText(`186`)).not.toBeNull()}),it(`hides the label row when hideLabel is set`,()=>{let{container:e}=s(c(r,{config:l,children:c(i,{active:!0,hideLabel:!0,payload:[{dataKey:`desktop`,name:`desktop`,value:186,payload:{}}]})}));expect(e.querySelector(`div.font-medium`)).toBeNull()}),it(`filters out payload items whose type is "none"`,()=>{s(c(r,{config:l,children:c(i,{active:!0,hideLabel:!0,payload:[{dataKey:`desktop`,name:`desktop`,value:186,type:`none`,payload:{}},{dataKey:`mobile`,name:`mobile`,value:305,payload:{}}]})})),expect(o.queryByText(`186`)).toBeNull(),expect(o.getByText(`305`)).not.toBeNull()}),it(`delegates cell rendering to a custom formatter when provided`,()=>{let e=vi.fn(()=>c(`span`,{children:`custom-cell`}));s(c(r,{config:l,children:c(i,{active:!0,hideLabel:!0,formatter:e,payload:[{dataKey:`desktop`,name:`desktop`,value:186,payload:{}}]})})),expect(e).toHaveBeenCalledWith(186,`desktop`,expect.anything(),0,{}),expect(o.getByText(`custom-cell`)).not.toBeNull()})}),describe(`ChartLegendContent`,()=>{it(`throws when rendered outside of a ChartContainer`,()=>{expect(()=>s(c(t,{payload:[]}))).toThrow(`useChart must be used within a <ChartContainer />`)}),it(`returns null when the payload is empty`,()=>{let{container:e}=s(c(r,{config:l,children:c(t,{payload:[]})}));expect(e.querySelector(`[data-slot="chart"]`)?.textContent).toBe(``)}),it(`renders one entry per payload item using the config label`,()=>{s(c(r,{config:l,children:c(t,{payload:[{value:`desktop`,dataKey:`desktop`,color:`#3b82f6`,type:`rect`},{value:`mobile`,dataKey:`mobile`,color:`#22c55e`,type:`rect`}]})})),expect(o.getByText(`Desktop`)).not.toBeNull(),expect(o.getByText(`Mobile`)).not.toBeNull()}),it(`filters out payload items whose type is "none"`,()=>{s(c(r,{config:l,children:c(t,{payload:[{value:`desktop`,dataKey:`desktop`,color:`#3b82f6`,type:`none`},{value:`mobile`,dataKey:`mobile`,color:`#22c55e`}]})})),expect(o.queryByText(`Desktop`)).toBeNull(),expect(o.getByText(`Mobile`)).not.toBeNull()}),it(`applies bottom padding by default and top padding for verticalAlign="top"`,()=>{let{container:e}=s(c(r,{config:l,children:c(t,{payload:[{value:`desktop`,dataKey:`desktop`,color:`#3b82f6`}]})}));expect(e.querySelector(`.flex.items-center.justify-center`)?.className).toContain(`pt-3`);let{container:n}=s(c(r,{config:l,children:c(t,{verticalAlign:`top`,payload:[{value:`desktop`,dataKey:`desktop`,color:`#3b82f6`}]})}));expect(n.querySelector(`.flex.items-center.justify-center`)?.className).toContain(`pb-3`)})})}),describe(`resolveChartColor`,()=>{it(`returns undefined for a falsy value`,()=>{expect(n(void 0)).toBeUndefined(),expect(n(``)).toBeUndefined()}),it.each(a)(`maps the known color key "%s" to its CSS variable`,e=>{expect(n(e)).toBe(`var(--${e})`)}),it(`passes through arbitrary values unchanged`,()=>{expect(n(`#3b82f6`)).toBe(`#3b82f6`)})}),describe(`DEFAULT_CHART_PALETTE`,()=>{it(`exposes five chart color variables in order`,()=>{expect(e).toEqual([`var(--chart-1)`,`var(--chart-2)`,`var(--chart-3)`,`var(--chart-4)`,`var(--chart-5)`])})});
|
|
2
|
-
//# sourceMappingURL=chart.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart.spec.js","names":[],"sources":["../../src/components/chart.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport {\n CHART_COLOR_KEYS,\n type ChartConfig,\n ChartContainer,\n ChartLegendContent,\n ChartTooltipContent,\n DEFAULT_CHART_PALETTE,\n resolveChartColor\n} from './chart'\n\nbeforeAll(() => {\n vi.stubGlobal(\n 'ResizeObserver',\n class {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n )\n Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { configurable: true, value: 500 })\n Object.defineProperty(HTMLElement.prototype, 'offsetHeight', { configurable: true, value: 300 })\n // jsdom's getBoundingClientRect always returns zeros, which leaves recharts' ResponsiveContainer\n // stuck reporting a non-positive size and refusing to render its children at all. Stubbing it to\n // match the offsetWidth/offsetHeight above lets ChartTooltipContent/ChartLegendContent actually mount.\n HTMLElement.prototype.getBoundingClientRect = () =>\n ({\n width: 500,\n height: 300,\n top: 0,\n left: 0,\n right: 500,\n bottom: 300,\n x: 0,\n y: 0,\n toJSON() {}\n }) as DOMRect\n})\n\nconst config: ChartConfig = {\n desktop: { label: 'Desktop', color: '#3b82f6' },\n mobile: { label: 'Mobile', color: '#22c55e' }\n}\n\ndescribe('ChartContainer', () => {\n it('renders its children inside a data-slot=\"chart\" wrapper with a derived data-chart id', () => {\n const { container } = render(\n <ChartContainer config={config}>\n <div>content</div>\n </ChartContainer>\n )\n\n const chartDiv = container.querySelector('[data-slot=\"chart\"]')\n expect(chartDiv).not.toBeNull()\n expect(chartDiv?.getAttribute('data-chart')).toMatch(/^chart-/)\n })\n\n it('derives the data-chart attribute from an explicit id prop', () => {\n const { container } = render(\n <ChartContainer id=\"revenue\" config={config}>\n <div>content</div>\n </ChartContainer>\n )\n\n expect(container.querySelector('[data-slot=\"chart\"]')?.getAttribute('data-chart')).toBe('chart-revenue')\n })\n\n it('merges a custom className with the base chart classes', () => {\n const { container } = render(\n <ChartContainer config={config} className=\"custom-chart\">\n <div>content</div>\n </ChartContainer>\n )\n\n const chartDiv = container.querySelector('[data-slot=\"chart\"]')\n expect(chartDiv?.className).toContain('custom-chart')\n expect(chartDiv?.className).toContain('aspect-video')\n })\n\n it('spreads additional props onto the wrapper div', () => {\n const { container } = render(\n <ChartContainer config={config} data-testid=\"my-chart\">\n <div>content</div>\n </ChartContainer>\n )\n\n expect(container.querySelector('[data-testid=\"my-chart\"]')).not.toBeNull()\n })\n\n describe('ChartTooltipContent', () => {\n it('throws when rendered outside of a ChartContainer', () => {\n expect(() => render(<ChartTooltipContent active payload={[]} />)).toThrow(\n 'useChart must be used within a <ChartContainer />'\n )\n })\n\n it('returns null when active is false', () => {\n const { container } = render(\n <ChartContainer config={config}>\n <ChartTooltipContent\n active={false}\n payload={[{ dataKey: 'desktop', name: 'desktop', value: 186, payload: {} }] as never}\n />\n </ChartContainer>\n )\n\n expect(container.querySelector('.shadow-xl')).toBeNull()\n })\n\n it('returns null when the payload is empty', () => {\n const { container } = render(\n <ChartContainer config={config}>\n <ChartTooltipContent active payload={[]} />\n </ChartContainer>\n )\n\n expect(container.querySelector('.shadow-xl')).toBeNull()\n })\n\n it('renders the resolved config label above the item rows', () => {\n const { container } = render(\n <ChartContainer config={config}>\n <ChartTooltipContent\n active\n payload={\n [\n { dataKey: 'desktop', name: 'desktop', value: 186, color: '#3b82f6', payload: { fill: '#3b82f6' } }\n ] as never\n }\n />\n </ChartContainer>\n )\n\n expect(container.querySelector('div.font-medium')?.textContent).toBe('Desktop')\n expect(screen.getByText('186')).not.toBeNull()\n })\n\n it('hides the label row when hideLabel is set', () => {\n const { container } = render(\n <ChartContainer config={config}>\n <ChartTooltipContent\n active\n hideLabel\n payload={[{ dataKey: 'desktop', name: 'desktop', value: 186, payload: {} }] as never}\n />\n </ChartContainer>\n )\n\n expect(container.querySelector('div.font-medium')).toBeNull()\n })\n\n it('filters out payload items whose type is \"none\"', () => {\n render(\n <ChartContainer config={config}>\n <ChartTooltipContent\n active\n hideLabel\n payload={\n [\n { dataKey: 'desktop', name: 'desktop', value: 186, type: 'none', payload: {} },\n { dataKey: 'mobile', name: 'mobile', value: 305, payload: {} }\n ] as never\n }\n />\n </ChartContainer>\n )\n\n expect(screen.queryByText('186')).toBeNull()\n expect(screen.getByText('305')).not.toBeNull()\n })\n\n it('delegates cell rendering to a custom formatter when provided', () => {\n const formatter = vi.fn(() => <span>custom-cell</span>)\n\n render(\n <ChartContainer config={config}>\n <ChartTooltipContent\n active\n hideLabel\n formatter={formatter}\n payload={[{ dataKey: 'desktop', name: 'desktop', value: 186, payload: {} }] as never}\n />\n </ChartContainer>\n )\n\n expect(formatter).toHaveBeenCalledWith(186, 'desktop', expect.anything(), 0, {})\n expect(screen.getByText('custom-cell')).not.toBeNull()\n })\n })\n\n describe('ChartLegendContent', () => {\n it('throws when rendered outside of a ChartContainer', () => {\n expect(() => render(<ChartLegendContent payload={[]} />)).toThrow(\n 'useChart must be used within a <ChartContainer />'\n )\n })\n\n it('returns null when the payload is empty', () => {\n const { container } = render(\n <ChartContainer config={config}>\n <ChartLegendContent payload={[]} />\n </ChartContainer>\n )\n\n expect(container.querySelector('[data-slot=\"chart\"]')?.textContent).toBe('')\n })\n\n it('renders one entry per payload item using the config label', () => {\n render(\n <ChartContainer config={config}>\n <ChartLegendContent\n payload={\n [\n { value: 'desktop', dataKey: 'desktop', color: '#3b82f6', type: 'rect' },\n { value: 'mobile', dataKey: 'mobile', color: '#22c55e', type: 'rect' }\n ] as never\n }\n />\n </ChartContainer>\n )\n\n expect(screen.getByText('Desktop')).not.toBeNull()\n expect(screen.getByText('Mobile')).not.toBeNull()\n })\n\n it('filters out payload items whose type is \"none\"', () => {\n render(\n <ChartContainer config={config}>\n <ChartLegendContent\n payload={\n [\n { value: 'desktop', dataKey: 'desktop', color: '#3b82f6', type: 'none' },\n { value: 'mobile', dataKey: 'mobile', color: '#22c55e' }\n ] as never\n }\n />\n </ChartContainer>\n )\n\n expect(screen.queryByText('Desktop')).toBeNull()\n expect(screen.getByText('Mobile')).not.toBeNull()\n })\n\n it('applies bottom padding by default and top padding for verticalAlign=\"top\"', () => {\n const { container: bottomContainer } = render(\n <ChartContainer config={config}>\n <ChartLegendContent payload={[{ value: 'desktop', dataKey: 'desktop', color: '#3b82f6' }] as never} />\n </ChartContainer>\n )\n expect(bottomContainer.querySelector('.flex.items-center.justify-center')?.className).toContain('pt-3')\n\n const { container: topContainer } = render(\n <ChartContainer config={config}>\n <ChartLegendContent\n verticalAlign=\"top\"\n payload={[{ value: 'desktop', dataKey: 'desktop', color: '#3b82f6' }] as never}\n />\n </ChartContainer>\n )\n expect(topContainer.querySelector('.flex.items-center.justify-center')?.className).toContain('pb-3')\n })\n })\n})\n\ndescribe('resolveChartColor', () => {\n it('returns undefined for a falsy value', () => {\n expect(resolveChartColor(undefined)).toBeUndefined()\n expect(resolveChartColor('')).toBeUndefined()\n })\n\n it.each(CHART_COLOR_KEYS)('maps the known color key \"%s\" to its CSS variable', (key) => {\n expect(resolveChartColor(key)).toBe(`var(--${key})`)\n })\n\n it('passes through arbitrary values unchanged', () => {\n expect(resolveChartColor('#3b82f6')).toBe('#3b82f6')\n })\n})\n\ndescribe('DEFAULT_CHART_PALETTE', () => {\n it('exposes five chart color variables in order', () => {\n expect(DEFAULT_CHART_PALETTE).toEqual([\n 'var(--chart-1)',\n 'var(--chart-2)',\n 'var(--chart-3)',\n 'var(--chart-4)',\n 'var(--chart-5)'\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{t as e}from"../field-DzR-XrO7.js";import{t}from"../checkbox-DPvW_m7k.js";import{a as n,n as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a}from"react/jsx-runtime";describe(`Checkbox`,()=>{it(`renders a standalone checkbox without a wrapping field when no label is given`,()=>{let{container:e}=i(a(t,{}));expect(e.querySelector(`[data-slot="checkbox-field"]`)).toBeNull();let n=e.querySelector(`[data-slot="checkbox"]`);expect(n).not.toBeNull(),expect(n?.getAttribute(`role`)).toBe(`checkbox`),expect(n?.getAttribute(`data-color`)).toBe(`primary`),expect(n?.getAttribute(`data-size`)).toBe(`md`),expect(n?.getAttribute(`id`)).toBeNull()}),it(`wraps the checkbox with a generated label when label is provided`,()=>{i(a(t,{label:`Accept terms`}));let e=n.getByRole(`checkbox`,{name:`Accept terms`}),r=n.getByText(`Accept terms`);expect(e.getAttribute(`id`)).toBeTruthy(),expect(r.getAttribute(`for`)).toBe(e.getAttribute(`id`))}),it(`preserves an explicit id over the generated one`,()=>{i(a(t,{id:`terms-checkbox`,label:`Accept terms`})),expect(document.getElementById(`terms-checkbox`)).not.toBeNull(),expect(n.getByText(`Accept terms`).getAttribute(`for`)).toBe(`terms-checkbox`)}),it(`resolves the id from a surrounding Field when id is omitted`,()=>{i(a(e,{children:a(t,{label:`Subscribe`})}));let r=n.getByRole(`checkbox`,{name:`Subscribe`});expect(r.getAttribute(`id`)).toBeTruthy(),expect(n.getByText(`Subscribe`).getAttribute(`for`)).toBe(r.getAttribute(`id`))}),it(`toggles the checked state when clicked`,()=>{let{container:e}=i(a(t,{})),n=e.querySelector(`[data-slot="checkbox"]`);expect(n.getAttribute(`data-state`)).toBe(`unchecked`),r.click(n),expect(n.getAttribute(`data-state`)).toBe(`checked`)}),it(`applies the requested color and size variants`,()=>{let{container:e}=i(a(t,{color:`blue`,size:`lg`})),n=e.querySelector(`[data-slot="checkbox"]`);expect(n?.getAttribute(`data-color`)).toBe(`blue`),expect(n?.getAttribute(`data-size`)).toBe(`lg`),expect(n?.className).toContain(`size-5`)})});
|
|
2
|
-
//# sourceMappingURL=checkbox.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.spec.js","names":[],"sources":["../../src/components/checkbox.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Checkbox } from './checkbox'\nimport { Field } from './field'\n\ndescribe('Checkbox', () => {\n it('renders a standalone checkbox without a wrapping field when no label is given', () => {\n const { container } = render(<Checkbox />)\n\n expect(container.querySelector('[data-slot=\"checkbox-field\"]')).toBeNull()\n\n const checkbox = container.querySelector('[data-slot=\"checkbox\"]')\n\n expect(checkbox).not.toBeNull()\n expect(checkbox?.getAttribute('role')).toBe('checkbox')\n expect(checkbox?.getAttribute('data-color')).toBe('primary')\n expect(checkbox?.getAttribute('data-size')).toBe('md')\n expect(checkbox?.getAttribute('id')).toBeNull()\n })\n\n it('wraps the checkbox with a generated label when label is provided', () => {\n render(<Checkbox label=\"Accept terms\" />)\n\n const checkbox = screen.getByRole('checkbox', { name: 'Accept terms' })\n const label = screen.getByText('Accept terms')\n\n expect(checkbox.getAttribute('id')).toBeTruthy()\n expect(label.getAttribute('for')).toBe(checkbox.getAttribute('id'))\n })\n\n it('preserves an explicit id over the generated one', () => {\n render(<Checkbox id=\"terms-checkbox\" label=\"Accept terms\" />)\n\n expect(document.getElementById('terms-checkbox')).not.toBeNull()\n expect(screen.getByText('Accept terms').getAttribute('for')).toBe('terms-checkbox')\n })\n\n it('resolves the id from a surrounding Field when id is omitted', () => {\n render(\n <Field>\n <Checkbox label=\"Subscribe\" />\n </Field>\n )\n\n const checkbox = screen.getByRole('checkbox', { name: 'Subscribe' })\n\n expect(checkbox.getAttribute('id')).toBeTruthy()\n expect(screen.getByText('Subscribe').getAttribute('for')).toBe(checkbox.getAttribute('id'))\n })\n\n it('toggles the checked state when clicked', () => {\n const { container } = render(<Checkbox />)\n\n const checkbox = container.querySelector('[data-slot=\"checkbox\"]') as HTMLElement\n\n expect(checkbox.getAttribute('data-state')).toBe('unchecked')\n\n fireEvent.click(checkbox)\n\n expect(checkbox.getAttribute('data-state')).toBe('checked')\n })\n\n it('applies the requested color and size variants', () => {\n const { container } = render(<Checkbox color=\"blue\" size=\"lg\" />)\n\n const checkbox = container.querySelector('[data-slot=\"checkbox\"]')\n\n expect(checkbox?.getAttribute('data-color')).toBe('blue')\n expect(checkbox?.getAttribute('data-size')).toBe('lg')\n expect(checkbox?.className).toContain('size-5')\n })\n})\n"],"mappings":"2NAKA,SAAS,eAAkB,CACzB,GAAG,oFAAuF,CACxF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,CAAA,CAAC,EAEzC,OAAO,EAAU,cAAc,8BAA8B,CAAC,CAAC,CAAC,SAAS,EAEzE,IAAM,EAAW,EAAU,cAAc,wBAAwB,EAEjE,OAAO,CAAQ,CAAC,CAAC,IAAI,SAAS,EAC9B,OAAO,GAAU,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,EACtD,OAAO,GAAU,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EAC3D,OAAO,GAAU,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACrD,OAAO,GAAU,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC,EAED,GAAG,uEAA0E,CAC3E,EAAO,EAAC,EAAD,CAAU,MAAM,cAAgB,CAAA,CAAC,EAExC,IAAM,EAAW,EAAO,UAAU,WAAY,CAAE,KAAM,cAAe,CAAC,EAChE,EAAQ,EAAO,UAAU,cAAc,EAE7C,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,sDAAyD,CAC1D,EAAO,EAAC,EAAD,CAAU,GAAG,iBAAiB,MAAM,cAAgB,CAAA,CAAC,EAE5D,OAAO,SAAS,eAAe,gBAAgB,CAAC,CAAC,CAAC,IAAI,SAAS,EAC/D,OAAO,EAAO,UAAU,cAAc,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,CACpF,CAAC,EAED,GAAG,kEAAqE,CACtE,EACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAU,MAAM,WAAa,CAAA,CACxB,CAAA,CACT,EAEA,IAAM,EAAW,EAAO,UAAU,WAAY,CAAE,KAAM,WAAY,CAAC,EAEnE,OAAO,EAAS,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,EAC/C,OAAO,EAAO,UAAU,WAAW,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,EAAS,aAAa,IAAI,CAAC,CAC5F,CAAC,EAED,GAAG,6CAAgD,CACjD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,CAAA,CAAC,EAEnC,EAAW,EAAU,cAAc,wBAAwB,EAEjE,OAAO,EAAS,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,EAE5D,EAAU,MAAM,CAAQ,EAExB,OAAO,EAAS,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CAC5D,CAAC,EAED,GAAG,oDAAuD,CACxD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,MAAM,OAAO,KAAK,IAAM,CAAA,CAAC,EAE1D,EAAW,EAAU,cAAc,wBAAwB,EAEjE,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,QAAQ,CAChD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../code-A6JERAsm.js";import{a as t,r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r}from"react/jsx-runtime";describe(`Code`,()=>{it(`renders a code element with data-slot and the default styling`,()=>{let{container:i}=n(r(e,{children:`const x = 1`})),a=i.querySelector(`[data-slot="code"]`);expect(a).not.toBeNull(),expect(a?.tagName).toBe(`CODE`),expect(t.getByText(`const x = 1`)).not.toBeNull(),expect(a?.className).toContain(`bg-muted`),expect(a?.className).toContain(`font-mono`),expect(a?.className).toContain(`rounded-md`)}),it(`merges a custom className with the base styling`,()=>{let{container:t}=n(r(e,{className:`custom-code`,children:`snippet`})),i=t.querySelector(`[data-slot="code"]`);expect(i?.className).toContain(`custom-code`),expect(i?.className).toContain(`bg-muted`)}),it(`forwards the ref to the underlying code element`,()=>{let t={current:null};n(r(e,{ref:t,children:`ref snippet`})),expect(t.current).not.toBeNull(),expect(t.current?.tagName).toBe(`CODE`)})});
|
|
2
|
-
//# sourceMappingURL=code.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code.spec.js","names":[],"sources":["../../src/components/code.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Code } from './code'\n\ndescribe('Code', () => {\n it('renders a code element with data-slot and the default styling', () => {\n const { container } = render(<Code>const x = 1</Code>)\n\n const code = container.querySelector('[data-slot=\"code\"]')\n\n expect(code).not.toBeNull()\n expect(code?.tagName).toBe('CODE')\n expect(screen.getByText('const x = 1')).not.toBeNull()\n expect(code?.className).toContain('bg-muted')\n expect(code?.className).toContain('font-mono')\n expect(code?.className).toContain('rounded-md')\n })\n\n it('merges a custom className with the base styling', () => {\n const { container } = render(<Code className=\"custom-code\">snippet</Code>)\n\n const code = container.querySelector('[data-slot=\"code\"]')\n\n expect(code?.className).toContain('custom-code')\n expect(code?.className).toContain('bg-muted')\n })\n\n it('forwards the ref to the underlying code element', () => {\n const ref = { current: null as HTMLElement | null }\n\n render(<Code ref={ref}>ref snippet</Code>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.tagName).toBe('CODE')\n })\n})\n"],"mappings":"4KAIA,SAAS,WAAc,CACrB,GAAG,oEAAuE,CACxE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAM,aAAiB,CAAA,CAAC,EAE/C,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,CAAI,CAAC,CAAC,IAAI,SAAS,EAC1B,OAAO,GAAM,OAAO,CAAC,CAAC,KAAK,MAAM,EACjC,OAAO,EAAO,UAAU,aAAa,CAAC,CAAC,CAAC,IAAI,SAAS,EACrD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,UAAU,EAC5C,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,WAAW,EAC7C,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,YAAY,CAChD,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAM,UAAU,cAAc,SAAA,SAAa,CAAA,CAAC,EAEnE,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,aAAa,EAC/C,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,UAAU,CAC9C,CAAC,EAED,GAAG,sDAAyD,CAC1D,IAAM,EAAM,CAAE,QAAS,IAA2B,EAElD,EAAO,EAAC,EAAD,CAAW,MAAK,SAAA,aAAiB,CAAA,CAAC,EAEzC,OAAO,EAAI,OAAO,CAAC,CAAC,IAAI,SAAS,EACjC,OAAO,EAAI,SAAS,OAAO,CAAC,CAAC,KAAK,MAAM,CAC1C,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"../collapsible-BH8BqfTd.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(`Collapsible`,()=>{it(`renders closed by default and hides the content`,()=>{let{container:i}=a(s(n,{children:[o(t,{children:`Toggle`}),o(e,{children:`Panel content`})]})),c=i.querySelector(`[data-slot="collapsible"]`),l=r.getByRole(`button`,{name:`Toggle`}),u=i.querySelector(`[data-slot="collapsible-content"]`);expect(c?.getAttribute(`data-state`)).toBe(`closed`),expect(l.getAttribute(`aria-expanded`)).toBe(`false`),expect(u?.getAttribute(`data-state`)).toBe(`closed`),expect(u).toHaveProperty(`hidden`,!0),expect(r.queryByText(`Panel content`)).toBeNull()}),it(`opens the content when the trigger is clicked`,()=>{let{container:c}=a(s(n,{children:[o(t,{children:`Toggle`}),o(e,{children:`Panel content`})]}));i.click(r.getByRole(`button`,{name:`Toggle`}));let l=c.querySelector(`[data-slot="collapsible"]`),u=c.querySelector(`[data-slot="collapsible-content"]`);expect(l?.getAttribute(`data-state`)).toBe(`open`),expect(r.getByRole(`button`,{name:`Toggle`}).getAttribute(`aria-expanded`)).toBe(`true`),expect(u).not.toBeNull(),expect(r.getByText(`Panel content`)).not.toBeNull()}),it(`supports a controlled open state with onOpenChange`,()=>{let c=vi.fn();a(s(n,{open:!1,onOpenChange:c,children:[o(t,{children:`Toggle`}),o(e,{children:`Panel content`})]})),i.click(r.getByRole(`button`,{name:`Toggle`})),expect(c).toHaveBeenCalledWith(!0),expect(r.queryByText(`Panel content`)).toBeNull()}),it(`does not toggle when disabled`,()=>{let{container:c}=a(s(n,{disabled:!0,children:[o(t,{children:`Toggle`}),o(e,{children:`Panel content`})]})),l=r.getByRole(`button`,{name:`Toggle`});expect(l).toHaveProperty(`disabled`,!0),i.click(l),expect(c.querySelector(`[data-slot="collapsible"]`)?.getAttribute(`data-state`)).toBe(`closed`)})});
|
|
2
|
-
//# sourceMappingURL=collapsible.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.spec.js","names":[],"sources":["../../src/components/collapsible.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from './collapsible'\n\ndescribe('Collapsible', () => {\n it('renders closed by default and hides the content', () => {\n const { container } = render(\n <Collapsible>\n <CollapsibleTrigger>Toggle</CollapsibleTrigger>\n <CollapsibleContent>Panel content</CollapsibleContent>\n </Collapsible>\n )\n\n const root = container.querySelector('[data-slot=\"collapsible\"]')\n const trigger = screen.getByRole('button', { name: 'Toggle' })\n const content = container.querySelector('[data-slot=\"collapsible-content\"]')\n\n expect(root?.getAttribute('data-state')).toBe('closed')\n expect(trigger.getAttribute('aria-expanded')).toBe('false')\n expect(content?.getAttribute('data-state')).toBe('closed')\n expect(content).toHaveProperty('hidden', true)\n expect(screen.queryByText('Panel content')).toBeNull()\n })\n\n it('opens the content when the trigger is clicked', () => {\n const { container } = render(\n <Collapsible>\n <CollapsibleTrigger>Toggle</CollapsibleTrigger>\n <CollapsibleContent>Panel content</CollapsibleContent>\n </Collapsible>\n )\n\n fireEvent.click(screen.getByRole('button', { name: 'Toggle' }))\n\n const root = container.querySelector('[data-slot=\"collapsible\"]')\n const content = container.querySelector('[data-slot=\"collapsible-content\"]')\n\n expect(root?.getAttribute('data-state')).toBe('open')\n expect(screen.getByRole('button', { name: 'Toggle' }).getAttribute('aria-expanded')).toBe('true')\n expect(content).not.toBeNull()\n expect(screen.getByText('Panel content')).not.toBeNull()\n })\n\n it('supports a controlled open state with onOpenChange', () => {\n const handleOpenChange = vi.fn()\n\n render(\n <Collapsible open={false} onOpenChange={handleOpenChange}>\n <CollapsibleTrigger>Toggle</CollapsibleTrigger>\n <CollapsibleContent>Panel content</CollapsibleContent>\n </Collapsible>\n )\n\n fireEvent.click(screen.getByRole('button', { name: 'Toggle' }))\n\n expect(handleOpenChange).toHaveBeenCalledWith(true)\n expect(screen.queryByText('Panel content')).toBeNull()\n })\n\n it('does not toggle when disabled', () => {\n const { container } = render(\n <Collapsible disabled>\n <CollapsibleTrigger>Toggle</CollapsibleTrigger>\n <CollapsibleContent>Panel content</CollapsibleContent>\n </Collapsible>\n )\n\n const trigger = screen.getByRole('button', { name: 'Toggle' })\n\n expect(trigger).toHaveProperty('disabled', true)\n\n fireEvent.click(trigger)\n\n expect(container.querySelector('[data-slot=\"collapsible\"]')?.getAttribute('data-state')).toBe('closed')\n })\n})\n"],"mappings":"kNAIA,SAAS,kBAAqB,CAC5B,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAoB,QAA0B,CAAA,EAC9C,EAAC,EAAD,CAAA,SAAoB,eAAiC,CAAA,CAC1C,CAAA,CAAA,CACf,EAEM,EAAO,EAAU,cAAc,2BAA2B,EAC1D,EAAU,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,EACvD,EAAU,EAAU,cAAc,mCAAmC,EAE3E,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EACtD,OAAO,EAAQ,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,EAC1D,OAAO,GAAS,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EACzD,OAAO,CAAO,CAAC,CAAC,eAAe,SAAU,EAAI,EAC7C,OAAO,EAAO,YAAY,eAAe,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC,EAED,GAAG,oDAAuD,CACxD,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAoB,QAA0B,CAAA,EAC9C,EAAC,EAAD,CAAA,SAAoB,eAAiC,CAAA,CAC1C,CAAA,CAAA,CACf,EAEA,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,CAAC,EAE9D,IAAM,EAAO,EAAU,cAAc,2BAA2B,EAC1D,EAAU,EAAU,cAAc,mCAAmC,EAE3E,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EACpD,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,CAAC,CAAC,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,EAChG,OAAO,CAAO,CAAC,CAAC,IAAI,SAAS,EAC7B,OAAO,EAAO,UAAU,eAAe,CAAC,CAAC,CAAC,IAAI,SAAS,CACzD,CAAC,EAED,GAAG,yDAA4D,CAC7D,IAAM,EAAmB,GAAG,GAAG,EAE/B,EACE,EAAC,EAAD,CAAa,KAAM,GAAO,aAAc,EAAxC,SAAA,CACE,EAAC,EAAD,CAAA,SAAoB,QAA0B,CAAA,EAC9C,EAAC,EAAD,CAAA,SAAoB,eAAiC,CAAA,CAC1C,CACf,CAAA,CAAA,EAEA,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,CAAC,EAE9D,OAAO,CAAgB,CAAC,CAAC,qBAAqB,EAAI,EAClD,OAAO,EAAO,YAAY,eAAe,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC,EAED,GAAG,oCAAuC,CACxC,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAa,SAAA,GAAb,SAAA,CACE,EAAC,EAAD,CAAA,SAAoB,QAA0B,CAAA,EAC9C,EAAC,EAAD,CAAA,SAAoB,eAAiC,CAAA,CAC1C,CACf,CAAA,CAAA,EAEM,EAAU,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,EAE7D,OAAO,CAAO,CAAC,CAAC,eAAe,WAAY,EAAI,EAE/C,EAAU,MAAM,CAAO,EAEvB,OAAO,EAAU,cAAc,2BAA2B,CAAC,EAAE,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,CACxG,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{c as e,d as t,h as n,i as r,n as i,o as a,p as o,r as s,s as c,t as l,u}from"../combobox-ITDBYTtM.js";import{a as d,n as f,o as p,r as m}from"../react.esm-dE9nuHcL.js";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useState as _}from"react";const v=[{value:`react`,label:`React`},{value:`vue`,label:`Vue`},{value:`svelte`,label:`Svelte`}];function SingleCombobox(){let[n,r]=_(null);return g(l,{items:v,value:n,onValueChange:r,children:[h(u,{placeholder:`Select a framework`,showClear:!0}),h(c,{children:g(o,{children:[h(e,{children:`No results found.`}),h(a,{children:e=>h(t,{value:e,children:e.label},e.value)})]})})]})}function MultipleCombobox(){let[n,u]=_([v[0]]);return g(l,{multiple:!0,items:v,value:n,onValueChange:u,children:[g(s,{showClear:!0,children:[n.map(e=>h(i,{children:e.label},e.value)),h(r,{placeholder:`Add a framework`})]}),h(c,{children:g(o,{children:[h(e,{children:`No results found.`}),h(a,{children:e=>h(t,{value:e,children:e.label},e.value)})]})})]})}describe(`Combobox`,()=>{describe(`ComboboxTrigger`,()=>{it(`renders with data-slot="combobox-trigger" and a default select icon when used standalone`,()=>{let{container:e}=m(h(l,{items:v,children:h(n,{})})),t=e.querySelector(`[data-slot="combobox-trigger"]`);expect(t).not.toBeNull(),expect(t?.querySelector(`svg`)).not.toBeNull()})}),it(`renders a trigger button and the placeholder text inside the input group`,()=>{m(h(SingleCombobox,{})),expect(d.getByRole(`button`)).not.toBeNull(),expect(d.getByPlaceholderText(`Select a framework`)).not.toBeNull()}),it(`opens the popup and lists every item when the trigger is clicked`,async()=>{m(h(SingleCombobox,{})),f.click(d.getByRole(`button`)),expect(await d.findByText(`React`)).not.toBeNull(),expect(d.getByText(`Vue`)).not.toBeNull(),expect(d.getByText(`Svelte`)).not.toBeNull()}),it(`selects an item on click and fills the input with its label`,async()=>{m(h(SingleCombobox,{}));let e=d.getByPlaceholderText(`Select a framework`);f.click(d.getByRole(`button`)),f.click(await d.findByText(`Vue`)),await p(()=>expect(e.value).toBe(`Vue`))}),it(`shows the clear button once a value is selected and clears it when clicked`,async()=>{let{container:e}=m(h(SingleCombobox,{}));expect(e.querySelector(`[data-slot="combobox-clear"]`)).toBeNull();let t=d.getByPlaceholderText(`Select a framework`);f.click(d.getByRole(`button`)),f.click(await d.findByText(`React`)),await p(()=>expect(t.value).toBe(`React`));let n=await p(()=>{let t=e.querySelector(`[data-slot="combobox-clear"]`);return expect(t).not.toBeNull(),t});f.click(n),await p(()=>expect(t.value).toBe(``))}),it(`shows the empty state when the filter query matches nothing`,async()=>{m(h(SingleCombobox,{}));let e=d.getByPlaceholderText(`Select a framework`);f.click(d.getByRole(`button`)),f.change(e,{target:{value:`nonexistent framework`}}),expect(await d.findByText(`No results found.`)).not.toBeNull()}),describe(`multiple selection`,()=>{it(`renders a chip per selected value and an input for adding more`,()=>{let{container:e}=m(h(MultipleCombobox,{}));expect(e.querySelector(`[data-slot="combobox-chips"]`)).not.toBeNull(),expect(e.querySelectorAll(`[data-slot="combobox-chip"]`)).toHaveLength(1),expect(d.getByText(`React`)).not.toBeNull(),expect(d.getByPlaceholderText(`Add a framework`)).not.toBeNull()}),it(`removes a chip when its remove button is clicked`,()=>{let{container:e}=m(h(MultipleCombobox,{})),t=e.querySelector(`[data-slot="combobox-chip"]`).querySelector(`[data-slot="combobox-chip-remove"]`);f.click(t),expect(e.querySelectorAll(`[data-slot="combobox-chip"]`)).toHaveLength(0)})})});
|
|
2
|
-
//# sourceMappingURL=combobox.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.spec.js","names":["waitFor"],"sources":["../../src/components/combobox.spec.tsx"],"sourcesContent":["import { useState } from 'react'\n\nimport { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxInput,\n ComboboxItem,\n ComboboxList,\n ComboboxTrigger\n} from './combobox'\n\ntype Framework = { value: string; label: string }\n\nconst frameworks: Framework[] = [\n { value: 'react', label: 'React' },\n { value: 'vue', label: 'Vue' },\n { value: 'svelte', label: 'Svelte' }\n]\n\nfunction SingleCombobox() {\n const [value, setValue] = useState<Framework | null>(null)\n\n return (\n <Combobox items={frameworks} value={value} onValueChange={setValue}>\n <ComboboxInput placeholder=\"Select a framework\" showClear />\n <ComboboxContent>\n <ComboboxList>\n <ComboboxEmpty>No results found.</ComboboxEmpty>\n <ComboboxCollection>\n {(item: Framework) => (\n <ComboboxItem key={item.value} value={item}>\n {item.label}\n </ComboboxItem>\n )}\n </ComboboxCollection>\n </ComboboxList>\n </ComboboxContent>\n </Combobox>\n )\n}\n\nfunction MultipleCombobox() {\n const [value, setValue] = useState<Framework[]>([frameworks[0]!])\n\n return (\n <Combobox multiple items={frameworks} value={value} onValueChange={setValue}>\n <ComboboxChips showClear>\n {value.map((item) => (\n <ComboboxChip key={item.value}>{item.label}</ComboboxChip>\n ))}\n <ComboboxChipsInput placeholder=\"Add a framework\" />\n </ComboboxChips>\n <ComboboxContent>\n <ComboboxList>\n <ComboboxEmpty>No results found.</ComboboxEmpty>\n <ComboboxCollection>\n {(item: Framework) => (\n <ComboboxItem key={item.value} value={item}>\n {item.label}\n </ComboboxItem>\n )}\n </ComboboxCollection>\n </ComboboxList>\n </ComboboxContent>\n </Combobox>\n )\n}\n\ndescribe('Combobox', () => {\n describe('ComboboxTrigger', () => {\n it('renders with data-slot=\"combobox-trigger\" and a default select icon when used standalone', () => {\n const { container } = render(\n <Combobox items={frameworks}>\n <ComboboxTrigger />\n </Combobox>\n )\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]')\n\n expect(trigger).not.toBeNull()\n expect(trigger?.querySelector('svg')).not.toBeNull()\n })\n })\n\n it('renders a trigger button and the placeholder text inside the input group', () => {\n render(<SingleCombobox />)\n\n expect(screen.getByRole('button')).not.toBeNull()\n expect(screen.getByPlaceholderText('Select a framework')).not.toBeNull()\n })\n\n it('opens the popup and lists every item when the trigger is clicked', async () => {\n render(<SingleCombobox />)\n\n fireEvent.click(screen.getByRole('button'))\n\n expect(await screen.findByText('React')).not.toBeNull()\n expect(screen.getByText('Vue')).not.toBeNull()\n expect(screen.getByText('Svelte')).not.toBeNull()\n })\n\n it('selects an item on click and fills the input with its label', async () => {\n render(<SingleCombobox />)\n\n const input = screen.getByPlaceholderText('Select a framework') as HTMLInputElement\n\n fireEvent.click(screen.getByRole('button'))\n fireEvent.click(await screen.findByText('Vue'))\n\n await waitFor(() => expect(input.value).toBe('Vue'))\n })\n\n it('shows the clear button once a value is selected and clears it when clicked', async () => {\n const { container } = render(<SingleCombobox />)\n\n expect(container.querySelector('[data-slot=\"combobox-clear\"]')).toBeNull()\n\n const input = screen.getByPlaceholderText('Select a framework') as HTMLInputElement\n\n fireEvent.click(screen.getByRole('button'))\n fireEvent.click(await screen.findByText('React'))\n\n await waitFor(() => expect(input.value).toBe('React'))\n\n const clearButton = await waitFor(() => {\n const button = container.querySelector('[data-slot=\"combobox-clear\"]')\n expect(button).not.toBeNull()\n return button as HTMLElement\n })\n\n fireEvent.click(clearButton)\n\n await waitFor(() => expect(input.value).toBe(''))\n })\n\n it('shows the empty state when the filter query matches nothing', async () => {\n render(<SingleCombobox />)\n\n const input = screen.getByPlaceholderText('Select a framework')\n\n fireEvent.click(screen.getByRole('button'))\n fireEvent.change(input, { target: { value: 'nonexistent framework' } })\n\n expect(await screen.findByText('No results found.')).not.toBeNull()\n })\n\n describe('multiple selection', () => {\n it('renders a chip per selected value and an input for adding more', () => {\n const { container } = render(<MultipleCombobox />)\n\n expect(container.querySelector('[data-slot=\"combobox-chips\"]')).not.toBeNull()\n expect(container.querySelectorAll('[data-slot=\"combobox-chip\"]')).toHaveLength(1)\n expect(screen.getByText('React')).not.toBeNull()\n expect(screen.getByPlaceholderText('Add a framework')).not.toBeNull()\n })\n\n it('removes a chip when its remove button is clicked', () => {\n const { container } = render(<MultipleCombobox />)\n\n const chip = container.querySelector('[data-slot=\"combobox-chip\"]') as HTMLElement\n const removeButton = chip.querySelector('[data-slot=\"combobox-chip-remove\"]') as HTMLElement\n\n fireEvent.click(removeButton)\n\n expect(container.querySelectorAll('[data-slot=\"combobox-chip\"]')).toHaveLength(0)\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}from"../command-BxkAy8PP.js";import{a as l,n as u,o as d,r as f}from"../react.esm-dE9nuHcL.js";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useState as h}from"react";var MockResizeObserver=class{observe(){}unobserve(){}disconnect(){}};beforeAll(()=>{Element.prototype.scrollIntoView=vi.fn(),global.ResizeObserver=MockResizeObserver});function BasicCommand(){return m(c,{children:[p(e,{placeholder:`Search actions...`}),m(s,{children:[p(o,{children:`Nothing found.`}),m(n,{heading:`Shortcuts`,children:[m(a,{value:`changelog`,children:[`Open changelog`,p(r,{children:`G C`})]}),p(a,{value:`release`,children:`Generate release`})]}),p(t,{}),p(n,{heading:`Docs`,children:p(a,{value:`components`,children:`Components`})})]})]})}describe(`Command`,()=>{it(`renders the search input inside its wrapper with a search icon addon`,()=>{let{container:e}=f(p(BasicCommand,{}));expect(e.querySelector(`[data-slot="command-input-wrapper"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="command-input"]`)).not.toBeNull(),expect(l.getByPlaceholderText(`Search actions...`)).not.toBeNull()}),it(`renders groups, items, a separator and the shortcut hint`,()=>{let{container:e}=f(p(BasicCommand,{}));expect(l.getByText(`Shortcuts`)).not.toBeNull(),expect(l.getByText(`Docs`)).not.toBeNull(),expect(l.getByText(`Open changelog`)).not.toBeNull(),expect(l.getByText(`G C`)).not.toBeNull(),expect(e.querySelector(`[data-slot="command-separator"]`)).not.toBeNull()}),it(`filters items based on the input value and shows CommandEmpty when nothing matches`,()=>{f(p(BasicCommand,{}));let e=l.getByPlaceholderText(`Search actions...`);u.change(e,{target:{value:`components`}}),expect(l.queryByText(`Open changelog`)).toBeNull(),expect(l.getByText(`Components`)).not.toBeNull(),u.change(e,{target:{value:`this matches nothing`}}),expect(l.getByText(`Nothing found.`)).not.toBeNull()}),describe(`CommandItem`,()=>{it(`marks an item selected on pointer move via aria-selected and data-selected`,()=>{f(p(BasicCommand,{}));let e=l.getByText(`Components`).closest(`[data-slot="command-item"]`);u.pointerMove(e),expect(e.getAttribute(`aria-selected`)).toBe(`true`),expect(e.getAttribute(`data-selected`)).toBe(`true`)})})}),describe(`CommandDialog`,()=>{it(`renders the command palette inside a dialog and closes on Escape`,async()=>{function Wrapper(){let[t,n]=h(!0);return p(i,{open:t,onOpenChange:n,children:m(c,{children:[p(e,{placeholder:`Search actions...`}),m(s,{children:[p(o,{children:`Nothing found.`}),p(a,{value:`new-story`,children:`New story`})]})]})})}f(p(Wrapper,{})),expect(await l.findByRole(`dialog`)).not.toBeNull(),expect(l.getByText(`New story`)).not.toBeNull(),u.keyDown(document,{key:`Escape`,code:`Escape`}),await d(()=>expect(l.queryByRole(`dialog`)).toBeNull())}),it(`uses the provided title and description for the accessible header`,async()=>{f(p(i,{defaultOpen:!0,title:`Quick actions`,description:`Search and run a command`,children:p(c,{children:p(s,{children:p(a,{value:`only-item`,children:`Only item`})})})})),await l.findByRole(`dialog`),expect(l.getByText(`Quick actions`)).not.toBeNull(),expect(l.getByText(`Search and run a command`)).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=command.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.spec.js","names":["waitFor"],"sources":["../../src/components/command.spec.tsx"],"sourcesContent":["import { useState } from 'react'\n\nimport { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut\n} from './command'\n\n// cmdk scrolls the selected item into view on selection changes and observes the list's size;\n// neither scrollIntoView nor ResizeObserver is implemented in jsdom.\nclass MockResizeObserver {\n observe() {}\n unobserve() {}\n disconnect() {}\n}\n\nbeforeAll(() => {\n Element.prototype.scrollIntoView = vi.fn()\n global.ResizeObserver = MockResizeObserver\n})\n\nfunction BasicCommand() {\n return (\n <Command>\n <CommandInput placeholder=\"Search actions...\" />\n <CommandList>\n <CommandEmpty>Nothing found.</CommandEmpty>\n <CommandGroup heading=\"Shortcuts\">\n <CommandItem value=\"changelog\">\n Open changelog\n <CommandShortcut>G C</CommandShortcut>\n </CommandItem>\n <CommandItem value=\"release\">Generate release</CommandItem>\n </CommandGroup>\n <CommandSeparator />\n <CommandGroup heading=\"Docs\">\n <CommandItem value=\"components\">Components</CommandItem>\n </CommandGroup>\n </CommandList>\n </Command>\n )\n}\n\ndescribe('Command', () => {\n it('renders the search input inside its wrapper with a search icon addon', () => {\n const { container } = render(<BasicCommand />)\n\n expect(container.querySelector('[data-slot=\"command-input-wrapper\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"command-input\"]')).not.toBeNull()\n expect(screen.getByPlaceholderText('Search actions...')).not.toBeNull()\n })\n\n it('renders groups, items, a separator and the shortcut hint', () => {\n const { container } = render(<BasicCommand />)\n\n expect(screen.getByText('Shortcuts')).not.toBeNull()\n expect(screen.getByText('Docs')).not.toBeNull()\n expect(screen.getByText('Open changelog')).not.toBeNull()\n expect(screen.getByText('G C')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"command-separator\"]')).not.toBeNull()\n })\n\n it('filters items based on the input value and shows CommandEmpty when nothing matches', () => {\n render(<BasicCommand />)\n\n const input = screen.getByPlaceholderText('Search actions...')\n\n fireEvent.change(input, { target: { value: 'components' } })\n\n expect(screen.queryByText('Open changelog')).toBeNull()\n expect(screen.getByText('Components')).not.toBeNull()\n\n fireEvent.change(input, { target: { value: 'this matches nothing' } })\n\n expect(screen.getByText('Nothing found.')).not.toBeNull()\n })\n\n describe('CommandItem', () => {\n it('marks an item selected on pointer move via aria-selected and data-selected', () => {\n render(<BasicCommand />)\n\n const item = screen.getByText('Components').closest('[data-slot=\"command-item\"]') as HTMLElement\n\n fireEvent.pointerMove(item)\n\n expect(item.getAttribute('aria-selected')).toBe('true')\n expect(item.getAttribute('data-selected')).toBe('true')\n })\n })\n})\n\ndescribe('CommandDialog', () => {\n it('renders the command palette inside a dialog and closes on Escape', async () => {\n function Wrapper() {\n const [open, setOpen] = useState(true)\n\n return (\n <CommandDialog open={open} onOpenChange={setOpen}>\n <Command>\n <CommandInput placeholder=\"Search actions...\" />\n <CommandList>\n <CommandEmpty>Nothing found.</CommandEmpty>\n <CommandItem value=\"new-story\">New story</CommandItem>\n </CommandList>\n </Command>\n </CommandDialog>\n )\n }\n\n render(<Wrapper />)\n\n expect(await screen.findByRole('dialog')).not.toBeNull()\n expect(screen.getByText('New story')).not.toBeNull()\n\n fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' })\n\n await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull())\n })\n\n it('uses the provided title and description for the accessible header', async () => {\n render(\n <CommandDialog defaultOpen title=\"Quick actions\" description=\"Search and run a command\">\n <Command>\n <CommandList>\n <CommandItem value=\"only-item\">Only item</CommandItem>\n </CommandList>\n </Command>\n </CommandDialog>\n )\n\n await screen.findByRole('dialog')\n\n expect(screen.getByText('Quick actions')).not.toBeNull()\n expect(screen.getByText('Search and run a command')).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"../container-CikeKdez.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`Container`,()=>{it(`renders a div with the default size and data-slot`,()=>{let{container:r}=t(n(e,{children:`Content`})),i=r.querySelector(`[data-slot="container"]`);expect(i).not.toBeNull(),expect(i?.tagName).toBe(`DIV`),expect(i?.getAttribute(`data-size`)).toBe(`lg`),expect(i?.className).toContain(`max-w-7xl`),expect(i?.className).toContain(`mx-auto`)}),it(`applies the sm size variant`,()=>{let{container:r}=t(n(e,{size:`sm`,children:`Content`})),i=r.querySelector(`[data-slot="container"]`);expect(i?.getAttribute(`data-size`)).toBe(`sm`),expect(i?.className).toContain(`max-w-3xl`)}),it(`applies the full size variant`,()=>{let{container:r}=t(n(e,{size:`full`,children:`Content`})),i=r.querySelector(`[data-slot="container"]`);expect(i?.getAttribute(`data-size`)).toBe(`full`),expect(i?.className).toContain(`max-w-none`)}),it(`merges a custom className with the base styling`,()=>{let{container:r}=t(n(e,{className:`custom-container`,children:`Content`})),i=r.querySelector(`[data-slot="container"]`);expect(i?.className).toContain(`custom-container`),expect(i?.className).toContain(`w-full`)}),it(`forwards the ref to the underlying div element`,()=>{let r={current:null};t(n(e,{ref:r,children:`Content`})),expect(r.current).not.toBeNull(),expect(r.current?.getAttribute(`data-slot`)).toBe(`container`)})});
|
|
2
|
-
//# sourceMappingURL=container.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.spec.js","names":[],"sources":["../../src/components/container.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Container } from './container'\n\ndescribe('Container', () => {\n it('renders a div with the default size and data-slot', () => {\n const { container } = render(<Container>Content</Container>)\n\n const element = container.querySelector('[data-slot=\"container\"]')\n\n expect(element).not.toBeNull()\n expect(element?.tagName).toBe('DIV')\n expect(element?.getAttribute('data-size')).toBe('lg')\n expect(element?.className).toContain('max-w-7xl')\n expect(element?.className).toContain('mx-auto')\n })\n\n it('applies the sm size variant', () => {\n const { container } = render(<Container size=\"sm\">Content</Container>)\n\n const element = container.querySelector('[data-slot=\"container\"]')\n\n expect(element?.getAttribute('data-size')).toBe('sm')\n expect(element?.className).toContain('max-w-3xl')\n })\n\n it('applies the full size variant', () => {\n const { container } = render(<Container size=\"full\">Content</Container>)\n\n const element = container.querySelector('[data-slot=\"container\"]')\n\n expect(element?.getAttribute('data-size')).toBe('full')\n expect(element?.className).toContain('max-w-none')\n })\n\n it('merges a custom className with the base styling', () => {\n const { container } = render(<Container className=\"custom-container\">Content</Container>)\n\n const element = container.querySelector('[data-slot=\"container\"]')\n\n expect(element?.className).toContain('custom-container')\n expect(element?.className).toContain('w-full')\n })\n\n it('forwards the ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Container ref={ref}>Content</Container>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.getAttribute('data-slot')).toBe('container')\n })\n})\n"],"mappings":"0KAIA,SAAS,gBAAmB,CAC1B,GAAG,wDAA2D,CAC5D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAW,SAAkB,CAAA,CAAC,EAErD,EAAU,EAAU,cAAc,yBAAyB,EAEjE,OAAO,CAAO,CAAC,CAAC,IAAI,SAAS,EAC7B,OAAO,GAAS,OAAO,CAAC,CAAC,KAAK,KAAK,EACnC,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,WAAW,EAChD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,SAAS,CAChD,CAAC,EAED,GAAG,kCAAqC,CACtC,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,KAAK,KAAK,SAAA,SAAkB,CAAA,CAAC,EAE/D,EAAU,EAAU,cAAc,yBAAyB,EAEjE,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,WAAW,CAClD,CAAC,EAED,GAAG,oCAAuC,CACxC,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,KAAK,OAAO,SAAA,SAAkB,CAAA,CAAC,EAEjE,EAAU,EAAU,cAAc,yBAAyB,EAEjE,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,EACtD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,YAAY,CACnD,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,UAAU,mBAAmB,SAAA,SAAkB,CAAA,CAAC,EAElF,EAAU,EAAU,cAAc,yBAAyB,EAEjE,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,kBAAkB,EACvD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,QAAQ,CAC/C,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAgB,MAAK,SAAA,SAAkB,CAAA,CAAC,EAE/C,OAAO,EAAI,OAAO,CAAC,CAAC,IAAI,SAAS,EACjC,OAAO,EAAI,SAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CACjE,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../table-CuE0Aenj.js";import{a as t,c as n,d as r,f as i,i as a,l as o,n as s,o as c,r as l,t as u,u as d}from"../data-table-BGfSiHDT.js";import{a as f,n as p,r as m}from"../react.esm-dE9nuHcL.js";import{jsx as h,jsxs as g}from"react/jsx-runtime";const _=[{id:`1`,name:`Ada Lovelace`,email:`ada@example.com`,age:36},{id:`2`,name:`Grace Hopper`,email:`grace@example.com`,age:85},{id:`3`,name:`Alan Turing`,email:`alan@example.com`,age:41},{id:`4`,name:`Katherine Johnson`,email:`katherine@example.com`,age:101},{id:`5`,name:`Margaret Hamilton`,email:`margaret@example.com`,age:89}],v=[{accessorKey:`name`,header:({column:e})=>h(l,{column:e,title:`Name`}),cell:({row:e})=>e.getValue(`name`)},{accessorKey:`email`,header:`Email`,cell:({row:e})=>e.getValue(`email`)},{accessorKey:`age`,header:`Age`,cell:({row:e})=>e.getValue(`age`)}];function getBodyRowNames(e){return Array.from(e.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).map(e=>e.querySelector(`[data-slot="table-cell"]`)?.textContent)}describe(`DataTable`,()=>{it(`renders a header cell per column and a body row per data item`,()=>{let{container:e}=m(h(u,{columns:v,data:_}));expect(f.getByRole(`columnheader`,{name:`Email`})).not.toBeNull(),expect(f.getByRole(`columnheader`,{name:`Age`})).not.toBeNull(),expect(e.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).toHaveLength(_.length),expect(f.getByText(`Ada Lovelace`)).not.toBeNull(),expect(f.getByText(`katherine@example.com`)).not.toBeNull()}),it(`renders the default empty-state message spanning all columns when data is empty`,()=>{let{container:e}=m(h(u,{columns:v,data:[]})),t=e.querySelector(`[data-slot="table-body"] [data-slot="table-cell"]`);expect(f.getByText(d.emptyMessage)).not.toBeNull(),expect(t?.getAttribute(`colspan`)).toBe(String(v.length))}),it(`renders a custom empty message provided via labels`,()=>{m(h(u,{columns:v,data:[],labels:{emptyMessage:`No people found`}})),expect(f.getByText(`No people found`)).not.toBeNull(),expect(f.queryByText(d.emptyMessage)).toBeNull()}),it(`sorts rows ascending, then descending, then clears sorting on repeated header clicks`,()=>{let{container:e}=m(h(u,{columns:v,data:_,enableSorting:!0})),t=f.getByRole(`button`);p.click(t),expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`,`Alan Turing`,`Grace Hopper`,`Katherine Johnson`,`Margaret Hamilton`]),p.click(t),expect(getBodyRowNames(e)).toEqual([`Margaret Hamilton`,`Katherine Johnson`,`Grace Hopper`,`Alan Turing`,`Ada Lovelace`]),p.click(t),expect(getBodyRowNames(e)).toEqual(_.map(e=>e.name))}),it(`does not render a sort toggle when sorting is disabled at the table level`,()=>{m(h(u,{columns:v,data:_})),expect(f.queryByRole(`button`)).toBeNull()}),it(`supports row selection with header select-all and per-row checkboxes`,()=>{m(h(u,{columns:v,data:_,enableRowSelection:!0}));let e=f.getByRole(`checkbox`,{name:d.selectAllRows}),t=f.getAllByRole(`checkbox`,{name:d.selectRow});expect(t).toHaveLength(_.length),expect(e.getAttribute(`data-state`)).toBe(`unchecked`),p.click(t[0]),expect(t[0].getAttribute(`data-state`)).toBe(`checked`),expect(e.getAttribute(`data-state`)).toBe(`indeterminate`),p.click(e);for(let e of f.getAllByRole(`checkbox`,{name:d.selectRow}))expect(e.getAttribute(`data-state`)).toBe(`checked`);expect(e.getAttribute(`data-state`)).toBe(`checked`)}),it(`does not prepend a second select column when the columns already define one`,()=>{let e=[{id:`select`,header:()=>`S`,cell:()=>`x`},...v];m(h(u,{columns:e,data:_,enableRowSelection:!0})),expect(f.getAllByRole(`columnheader`)).toHaveLength(e.length)}),it(`actually paginates rows when showPagination is set`,()=>{let{container:e}=m(h(u,{columns:v,data:_,showPagination:!0,pageSize:2}));expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`,`Grace Hopper`])})}),describe(`DataTableToolbar`,()=>{it(`renders no toolbar content when there is no filter, no toolbarActions, and column visibility is off`,()=>{let{container:e}=m(h(u,{columns:v,data:_}));expect(e.querySelector(`[data-slot="input"]`)).toBeNull(),expect(f.queryByRole(`button`,{name:d.columnsButton})).toBeNull()}),it(`filters rows by a single column via the toolbar input`,()=>{let{container:e}=m(h(u,{columns:v,data:_,filterColumns:`name`})),t=f.getByPlaceholderText(d.filterPlaceholder);p.change(t,{target:{value:`ada`}}),expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`])}),it(`lets the active filter column be switched and resets the previous filter value`,()=>{let{container:e}=m(h(u,{columns:v,data:_,filterColumns:[`name`,`email`]})),t=f.getByLabelText(d.filterColumnSelectorLabel),n=f.getByPlaceholderText(d.filterPlaceholder);p.change(n,{target:{value:`ada`}}),expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`]),p.change(t,{target:{value:`email`}}),expect(getBodyRowNames(e)).toEqual(_.map(e=>e.name)),p.change(n,{target:{value:`grace@`}}),expect(getBodyRowNames(e)).toEqual([`Grace Hopper`])}),it(`renders static toolbarActions content`,()=>{m(h(u,{columns:v,data:_,toolbarActions:h(`button`,{type:`button`,children:`Export`})})),expect(f.getByRole(`button`,{name:`Export`})).not.toBeNull()}),it(`renders function toolbarActions with access to the live table instance`,()=>{m(h(u,{columns:v,data:_,toolbarActions:e=>g(`span`,{children:[e.getRowModel().rows.length,` rows`]})})),expect(f.getByText(`${_.length} rows`)).not.toBeNull()}),it(`renders the column-visibility button when showColumnVisibility is set`,()=>{m(h(u,{columns:v,data:_,showColumnVisibility:!0})),expect(f.getByRole(`button`,{name:d.columnsButton})).not.toBeNull()})}),describe(`DataTableColumnHeader`,()=>{function fakeColumn(e){return{getCanSort:e.getCanSort??(()=>!0),getIsSorted:e.getIsSorted??(()=>!1),toggleSorting:e.toggleSorting??(()=>{}),clearSorting:e.clearSorting??(()=>{})}}it(`renders only the title, with no sort control, when the column cannot sort`,()=>{let{container:e}=m(h(l,{column:fakeColumn({getCanSort:()=>!1}),title:`Name`}));expect(f.getByText(`Name`)).not.toBeNull(),expect(e.querySelector(`button`)).toBeNull()}),it(`toggles to ascending sort when clicked while unsorted`,()=>{let e=vi.fn(),{container:t}=m(h(l,{column:fakeColumn({getIsSorted:()=>!1,toggleSorting:e}),title:`Name`}));p.click(t.querySelector(`button`)),expect(e).toHaveBeenCalledWith(!1)}),it(`toggles to descending sort when clicked while sorted ascending`,()=>{let e=vi.fn(),{container:t}=m(h(l,{column:fakeColumn({getIsSorted:()=>`asc`,toggleSorting:e}),title:`Name`}));p.click(t.querySelector(`button`)),expect(e).toHaveBeenCalledWith(!0)}),it(`clears sorting when clicked while sorted descending`,()=>{let e=vi.fn(),{container:t}=m(h(l,{column:fakeColumn({getIsSorted:()=>`desc`,clearSorting:e}),title:`Name`}));p.click(t.querySelector(`button`)),expect(e).toHaveBeenCalledTimes(1)})}),describe(`DataTablePagination`,()=>{it(`throws when rendered without a table prop or DataTableRoot context`,()=>{expect(()=>m(h(t,{}))).toThrow("DataTablePagination requires a `table` prop or to be rendered within <DataTableRoot>")}),it(`paginates rows and updates page/button state when navigating first/next/last/previous`,()=>{let{container:n}=m(g(c,{columns:v,data:_,enablePagination:!0,pageSize:2,children:[g(e,{children:[h(a,{}),h(s,{})]}),h(t,{})]}));expect(getBodyRowNames(n)).toEqual([`Ada Lovelace`,`Grace Hopper`]),expect(f.getByText(d.pageOf(1,3))).not.toBeNull(),expect(f.getByRole(`button`,{name:d.goToPreviousPage}).disabled).toBe(!0),p.click(f.getByRole(`button`,{name:d.goToNextPage})),expect(getBodyRowNames(n)).toEqual([`Alan Turing`,`Katherine Johnson`]),expect(f.getByText(d.pageOf(2,3))).not.toBeNull(),p.click(f.getByRole(`button`,{name:d.goToLastPage})),expect(getBodyRowNames(n)).toEqual([`Margaret Hamilton`]),expect(f.getByRole(`button`,{name:d.goToNextPage}).disabled).toBe(!0),p.click(f.getByRole(`button`,{name:d.goToFirstPage})),expect(getBodyRowNames(n)).toEqual([`Ada Lovelace`,`Grace Hopper`]),p.click(f.getByRole(`button`,{name:d.goToNextPage})),p.click(f.getByRole(`button`,{name:d.goToPreviousPage})),expect(getBodyRowNames(n)).toEqual([`Ada Lovelace`,`Grace Hopper`])})}),describe(`DataTableViewOptions`,()=>{it(`throws when rendered without a table prop or DataTableRoot context`,()=>{expect(()=>m(h(n,{}))).toThrow("DataTableViewOptions requires a `table` prop or to be rendered within <DataTableRoot>")}),it(`renders nothing when there are no hideable columns`,()=>{let{container:e}=m(h(n,{table:{getAllColumns:()=>[]}}));expect(e.firstChild).toBeNull()}),it(`opens the dropdown and hides a column when its checkbox item is toggled off`,()=>{let{container:e}=m(h(u,{columns:v,data:_,showColumnVisibility:!0})),t=f.getByRole(`button`,{name:d.columnsButton});p.pointerDown(t,{button:0,pointerId:1}),p.pointerUp(t,{button:0,pointerId:1});let n=f.getByRole(`menuitemcheckbox`,{name:`email`});p.pointerDown(n,{button:0,pointerId:1}),p.pointerUp(n,{button:0,pointerId:1}),p.click(n),expect(f.queryByRole(`columnheader`,{name:`Email`})).toBeNull(),expect(e.querySelector(`[data-slot="table-container"]`)).not.toBeNull()})}),describe(`createDataTableSelectColumn`,()=>{it(`returns a non-sortable, non-hideable select column definition`,()=>{let e=o();expect(e.id).toBe(`select`),expect(e.enableSorting).toBe(!1),expect(e.enableHiding).toBe(!1),expect(typeof e.header).toBe(`function`),expect(typeof e.cell).toBe(`function`)}),it(`uses custom select-all and select-row labels when the table provides them`,()=>{m(h(u,{columns:v,data:_,enableRowSelection:!0,labels:{selectAllRows:`Pick all`,selectRow:`Pick one`}})),expect(f.getByRole(`checkbox`,{name:`Pick all`})).not.toBeNull(),expect(f.getAllByRole(`checkbox`,{name:`Pick one`})).toHaveLength(_.length)})}),describe(`useDataTable`,()=>{function Harness(e){return h(`span`,{"data-testid":`column-count`,children:r(e).getAllColumns().length})}it(`does not add a select column when row selection is disabled`,()=>{m(h(Harness,{columns:v,data:_})),expect(f.getByTestId(`column-count`).textContent).toBe(String(v.length))}),it(`prepends a select column when row selection is enabled`,()=>{m(h(Harness,{columns:v,data:_,enableRowSelection:!0})),expect(f.getByTestId(`column-count`).textContent).toBe(String(v.length+1))})}),describe(`DataTableRoot`,()=>{it(`renders children within context when given an externally created table (controlled mode)`,()=>{function Wrapper(){return h(c,{table:r({columns:v,data:_}),children:g(e,{children:[h(a,{}),h(s,{})]})})}let{container:t}=m(h(Wrapper,{}));expect(t.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).toHaveLength(_.length)}),it(`builds its own table from columns and data when no table prop is given (uncontrolled mode)`,()=>{let{container:t}=m(h(c,{columns:v,data:_,children:g(e,{children:[h(a,{}),h(s,{})]})}));expect(t.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).toHaveLength(_.length)}),it(`applies the className to the wrapping element`,()=>{let{container:t}=m(h(c,{columns:v,data:_,className:`custom-root`,children:h(e,{children:h(a,{})})}));expect(t.firstChild.className).toContain(`custom-root`)})}),describe(`useDataTableContext`,()=>{it(`throws a descriptive error when called outside of DataTableRoot`,()=>{function Consumer(){return i(),null}expect(()=>m(h(Consumer,{}))).toThrow(`useDataTableContext must be used within <DataTableRoot>`)})});
|
|
2
|
-
//# sourceMappingURL=data-table.spec.js.map
|