@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
|
-
{"version":3,"file":"pie-chart.spec.js","names":[],"sources":["../../src/components/pie-chart.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { buildPieConfig, PieChart, PieChartBase, type PieChartDatum } from './pie-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: PieChartDatum[] = [\n { name: 'chrome', value: 275 },\n { name: 'safari', value: 200 },\n { name: 'firefox', value: 187 }\n]\n\ndescribe('PieChart', () => {\n it('renders with data-slot=\"pie-chart\" on the chart wrapper', () => {\n const { container } = render(<PieChart data={data} />)\n\n expect(container.querySelector('[data-slot=\"pie-chart\"]')).not.toBeNull()\n })\n\n it('accepts a data array without throwing', () => {\n expect(() => render(<PieChart data={data} />)).not.toThrow()\n })\n\n it('renders one recharts pie sector per data entry', () => {\n const { container } = render(<PieChart data={data} />)\n\n expect(container.querySelectorAll('.recharts-pie-sector').length).toBe(data.length)\n })\n\n it('renders a tooltip wrapper by default and omits it when withTooltip is false', () => {\n const { container: withTooltip } = render(<PieChart data={data} />)\n expect(withTooltip.querySelectorAll('.recharts-tooltip-wrapper').length).toBe(1)\n\n const { container: withoutTooltip } = render(<PieChart data={data} withTooltip={false} />)\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', async () => {\n const { container: withoutLegend } = render(<PieChart data={data} />)\n expect(withoutLegend.querySelectorAll('.recharts-legend-wrapper').length).toBe(0)\n\n const { container: withLegend } = render(<PieChart data={data} withLegend />)\n expect(withLegend.querySelectorAll('.recharts-legend-wrapper').length).toBe(1)\n // Recharts registers a pie's legend payload through an internal store update that lands\n // a render pass after the initial mount, so the item labels need an async query to appear.\n expect((await screen.findAllByText('chrome')).length).toBeGreaterThan(0)\n })\n\n it('omits slice labels by default and renders them when withLabels is true', () => {\n // animationDuration=0 disables the entrance animation: recharts withholds label text\n // entirely while a pie is still animating in, so the default (animated) render has\n // no label nodes to assert on even when withLabels is true.\n const { container: withoutLabels } = render(<PieChart data={data} animationDuration={0} />)\n expect(withoutLabels.querySelectorAll('.recharts-pie-label-text').length).toBe(0)\n\n const { container: withLabels } = render(<PieChart data={data} withLabels animationDuration={0} />)\n expect(withLabels.querySelectorAll('.recharts-pie-label-text').length).toBe(data.length)\n })\n\n describe('PieChartBase', () => {\n it('uses the provided dataSlot instead of the default \"pie-chart\" slot', () => {\n const { container } = render(<PieChartBase dataSlot=\"donut-chart\" data={data} />)\n\n expect(container.querySelector('[data-slot=\"donut-chart\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"pie-chart\"]')).toBeNull()\n })\n\n it('renders an arbitrary centerSlot node inside the pie', () => {\n const { container } = render(\n <PieChartBase dataSlot=\"pie-chart\" data={data} centerSlot={<text data-testid=\"center\">Center</text>} />\n )\n\n expect(container.querySelector('[data-testid=\"center\"]')).not.toBeNull()\n })\n\n it('does not render a centerSlot when none is provided', () => {\n const { container } = render(<PieChartBase dataSlot=\"pie-chart\" data={data} />)\n\n expect(container.querySelector('[data-testid=\"center\"]')).toBeNull()\n })\n })\n})\n\ndescribe('buildPieConfig', () => {\n it('builds one config entry per data item keyed by its name', () => {\n const config = buildPieConfig(data)\n\n expect(Object.keys(config)).toEqual(['chrome', 'safari', 'firefox'])\n })\n\n it('uses the item name as the label', () => {\n const config = buildPieConfig(data)\n\n expect(config.chrome?.label).toBe('chrome')\n expect(config.safari?.label).toBe('safari')\n })\n\n it('assigns colors from the default palette by index when no color/colorKey is provided', () => {\n const config = buildPieConfig(data)\n\n expect(config.chrome?.color).toBe('var(--chart-1)')\n expect(config.safari?.color).toBe('var(--chart-2)')\n expect(config.firefox?.color).toBe('var(--chart-3)')\n })\n\n it('prefers an explicit color over a colorKey and the default palette', () => {\n const config = buildPieConfig([{ name: 'a', value: 1, color: '#123456', colorKey: 'red' }])\n\n expect(config.a?.color).toBe('#123456')\n })\n\n it('resolves a colorKey to its CSS variable when no explicit color is set', () => {\n const config = buildPieConfig([{ name: 'a', value: 1, colorKey: 'red' }])\n\n expect(config.a?.color).toBe('var(--red)')\n })\n\n it('cycles through the default palette once there are more items than palette colors', () => {\n const manyItems: PieChartDatum[] = Array.from({ length: 6 }, (_, index) => ({\n name: `item-${index}`,\n value: index + 1\n }))\n\n const config = buildPieConfig(manyItems)\n\n expect(config['item-0']?.color).toBe('var(--chart-1)')\n expect(config['item-4']?.color).toBe('var(--chart-5)')\n expect(config['item-5']?.color).toBe('var(--chart-1)')\n })\n\n it('returns an empty config for an empty data array', () => {\n expect(buildPieConfig([])).toEqual({})\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"../popover-BtX3tX8M.js";import{a as s,n as c,r as l}from"../react.esm-dE9nuHcL.js";import{jsx as u,jsxs as d}from"react/jsx-runtime";function renderPopover(){return l(d(o,{children:[u(a,{children:`Open settings`}),u(i,{children:d(e,{children:[u(r,{children:`Settings`}),u(t,{children:`Manage your preferences`})]})})]}))}describe(`Popover`,()=>{it(`does not render the content until the trigger opens it`,()=>{renderPopover(),expect(s.queryByRole(`dialog`)).toBeNull()}),it(`opens the content when the trigger is clicked`,async()=>{renderPopover(),c.click(s.getByText(`Open settings`));let e=await s.findByRole(`dialog`);expect(e.getAttribute(`data-slot`)).toBe(`popover-content`),expect(e.className).toContain(`bg-popover`),expect(e.className).toContain(`w-72`)}),it(`renders the header, title and description inside the open content`,async()=>{renderPopover(),c.click(s.getByText(`Open settings`)),await s.findByRole(`dialog`);let e=s.getByText(`Settings`),t=s.getByText(`Manage your preferences`);expect(e.getAttribute(`data-slot`)).toBe(`popover-title`),expect(e.className).toContain(`font-medium`),expect(t.getAttribute(`data-slot`)).toBe(`popover-description`),expect(t.className).toContain(`text-muted-foreground`),expect(s.getByText(`Settings`).closest(`[data-slot="popover-header"]`)).not.toBeNull()}),it(`closes the content when the trigger is clicked again`,async()=>{renderPopover();let e=s.getByText(`Open settings`);c.click(e),await s.findByRole(`dialog`),c.click(e),expect(s.queryByRole(`dialog`)).toBeNull()}),it(`accepts custom align and sideOffset props and still renders the content`,async()=>{l(d(o,{defaultOpen:!0,children:[u(a,{children:`Open`}),u(i,{align:`start`,sideOffset:12,children:`Body`})]}));let e=await s.findByRole(`dialog`);expect(e.textContent).toBe(`Body`),expect(e.hasAttribute(`data-align`)).toBe(!0)}),it(`renders the anchor with its data-slot without opening a portal`,()=>{let{container:e}=l(d(o,{children:[u(n,{"data-testid":`anchor`,children:`Anchor point`}),u(a,{children:`Open`}),u(i,{children:`Body`})]})),t=e.querySelector(`[data-slot="popover-anchor"]`);expect(t).not.toBeNull(),expect(t?.textContent).toBe(`Anchor point`),expect(s.queryByRole(`dialog`)).toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=popover.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"popover.spec.js","names":[],"sources":["../../src/components/popover.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n Popover,\n PopoverAnchor,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger\n} from './popover'\n\nfunction renderPopover() {\n return render(\n <Popover>\n <PopoverTrigger>Open settings</PopoverTrigger>\n <PopoverContent>\n <PopoverHeader>\n <PopoverTitle>Settings</PopoverTitle>\n <PopoverDescription>Manage your preferences</PopoverDescription>\n </PopoverHeader>\n </PopoverContent>\n </Popover>\n )\n}\n\ndescribe('Popover', () => {\n it('does not render the content until the trigger opens it', () => {\n renderPopover()\n\n expect(screen.queryByRole('dialog')).toBeNull()\n })\n\n it('opens the content when the trigger is clicked', async () => {\n renderPopover()\n\n fireEvent.click(screen.getByText('Open settings'))\n\n const content = await screen.findByRole('dialog')\n\n expect(content.getAttribute('data-slot')).toBe('popover-content')\n expect(content.className).toContain('bg-popover')\n expect(content.className).toContain('w-72')\n })\n\n it('renders the header, title and description inside the open content', async () => {\n renderPopover()\n\n fireEvent.click(screen.getByText('Open settings'))\n await screen.findByRole('dialog')\n\n const title = screen.getByText('Settings')\n const description = screen.getByText('Manage your preferences')\n\n expect(title.getAttribute('data-slot')).toBe('popover-title')\n expect(title.className).toContain('font-medium')\n expect(description.getAttribute('data-slot')).toBe('popover-description')\n expect(description.className).toContain('text-muted-foreground')\n expect(screen.getByText('Settings').closest('[data-slot=\"popover-header\"]')).not.toBeNull()\n })\n\n it('closes the content when the trigger is clicked again', async () => {\n renderPopover()\n\n const trigger = screen.getByText('Open settings')\n\n fireEvent.click(trigger)\n await screen.findByRole('dialog')\n\n fireEvent.click(trigger)\n\n expect(screen.queryByRole('dialog')).toBeNull()\n })\n\n it('accepts custom align and sideOffset props and still renders the content', async () => {\n render(\n <Popover defaultOpen>\n <PopoverTrigger>Open</PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={12}>\n Body\n </PopoverContent>\n </Popover>\n )\n\n const content = await screen.findByRole('dialog')\n\n expect(content.textContent).toBe('Body')\n expect(content.hasAttribute('data-align')).toBe(true)\n })\n\n it('renders the anchor with its data-slot without opening a portal', () => {\n const { container } = render(\n <Popover>\n <PopoverAnchor data-testid=\"anchor\">Anchor point</PopoverAnchor>\n <PopoverTrigger>Open</PopoverTrigger>\n <PopoverContent>Body</PopoverContent>\n </Popover>\n )\n\n const anchor = container.querySelector('[data-slot=\"popover-anchor\"]')\n\n expect(anchor).not.toBeNull()\n expect(anchor?.textContent).toBe('Anchor point')\n expect(screen.queryByRole('dialog')).toBeNull()\n })\n})\n"],"mappings":"qOAYA,SAAS,eAAgB,CACvB,OAAO,EACL,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAgB,eAA6B,CAAA,EAC7C,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAc,UAAsB,CAAA,EACpC,EAAC,EAAD,CAAA,SAAoB,yBAA2C,CAAA,CAClD,CAAA,CAAA,CACD,CAAA,CACT,CAAA,CAAA,CACX,CACF,CAEA,SAAS,cAAiB,CACxB,GAAG,6DAAgE,CACjE,cAAc,EAEd,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC,EAED,GAAG,gDAAiD,SAAY,CAC9D,cAAc,EAEd,EAAU,MAAM,EAAO,UAAU,eAAe,CAAC,EAEjD,IAAM,EAAU,MAAM,EAAO,WAAW,QAAQ,EAEhD,OAAO,EAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,iBAAiB,EAChE,OAAO,EAAQ,SAAS,CAAC,CAAC,UAAU,YAAY,EAChD,OAAO,EAAQ,SAAS,CAAC,CAAC,UAAU,MAAM,CAC5C,CAAC,EAED,GAAG,oEAAqE,SAAY,CAClF,cAAc,EAEd,EAAU,MAAM,EAAO,UAAU,eAAe,CAAC,EACjD,MAAM,EAAO,WAAW,QAAQ,EAEhC,IAAM,EAAQ,EAAO,UAAU,UAAU,EACnC,EAAc,EAAO,UAAU,yBAAyB,EAE9D,OAAO,EAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,eAAe,EAC5D,OAAO,EAAM,SAAS,CAAC,CAAC,UAAU,aAAa,EAC/C,OAAO,EAAY,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,qBAAqB,EACxE,OAAO,EAAY,SAAS,CAAC,CAAC,UAAU,uBAAuB,EAC/D,OAAO,EAAO,UAAU,UAAU,CAAC,CAAC,QAAQ,8BAA8B,CAAC,CAAC,CAAC,IAAI,SAAS,CAC5F,CAAC,EAED,GAAG,uDAAwD,SAAY,CACrE,cAAc,EAEd,IAAM,EAAU,EAAO,UAAU,eAAe,EAEhD,EAAU,MAAM,CAAO,EACvB,MAAM,EAAO,WAAW,QAAQ,EAEhC,EAAU,MAAM,CAAO,EAEvB,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC,EAED,GAAG,0EAA2E,SAAY,CACxF,EACE,EAAC,EAAD,CAAS,YAAA,GAAT,SAAA,CACE,EAAC,EAAD,CAAA,SAAgB,MAAoB,CAAA,EACpC,EAAC,EAAD,CAAgB,MAAM,QAAQ,WAAY,GAAI,SAAA,MAE9B,CAAA,CACT,CACX,CAAA,CAAA,EAEA,IAAM,EAAU,MAAM,EAAO,WAAW,QAAQ,EAEhD,OAAO,EAAQ,WAAW,CAAC,CAAC,KAAK,MAAM,EACvC,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,EAAI,CACtD,CAAC,EAED,GAAG,qEAAwE,CACzE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAe,cAAY,SAAS,SAAA,cAA2B,CAAA,EAC/D,EAAC,EAAD,CAAA,SAAgB,MAAoB,CAAA,EACpC,EAAC,EAAD,CAAA,SAAgB,MAAoB,CAAA,CAC7B,CAAA,CAAA,CACX,EAEM,EAAS,EAAU,cAAc,8BAA8B,EAErE,OAAO,CAAM,CAAC,CAAC,IAAI,SAAS,EAC5B,OAAO,GAAQ,WAAW,CAAC,CAAC,KAAK,cAAc,EAC/C,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,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"../progress-QvpY7tiy.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`Progress`,()=>{it(`renders the progress root and indicator with default size and color`,()=>{let{container:r}=t(n(e,{value:50})),i=r.querySelector(`[data-slot="progress"]`),a=r.querySelector(`[data-slot="progress-indicator"]`);expect(i?.getAttribute(`data-size`)).toBe(`md`),expect(i?.getAttribute(`data-color`)).toBe(`primary`),expect(i?.className).toContain(`rounded-full`),expect(a?.className).toContain(`bg-(--progress-color)`)}),it(`applies size and color variants and their data attributes`,()=>{let{container:r}=t(n(e,{value:20,size:`lg`,color:`green`})),i=r.querySelector(`[data-slot="progress"]`);expect(i?.getAttribute(`data-size`)).toBe(`lg`),expect(i?.getAttribute(`data-color`)).toBe(`green`),expect(i?.className).toContain(`h-1.5`)}),it(`translates the indicator based on the value`,()=>{let{container:r}=t(n(e,{value:30})),i=r.querySelector(`[data-slot="progress-indicator"]`);expect(i.style.transform).toBe(`translateX(-70%)`)}),it(`defaults the indicator transform to fully hidden when value is omitted`,()=>{let{container:r}=t(n(e,{})),i=r.querySelector(`[data-slot="progress-indicator"]`);expect(i.style.transform).toBe(`translateX(-100%)`)}),it(`merges a custom className with the variant classes`,()=>{let{container:r}=t(n(e,{value:10,className:`custom-class`}));expect(r.querySelector(`[data-slot="progress"]`)?.className).toContain(`custom-class`)})});
|
|
2
|
-
//# sourceMappingURL=progress.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"progress.spec.js","names":[],"sources":["../../src/components/progress.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Progress } from './progress'\n\ndescribe('Progress', () => {\n it('renders the progress root and indicator with default size and color', () => {\n const { container } = render(<Progress value={50} />)\n\n const root = container.querySelector('[data-slot=\"progress\"]')\n const indicator = container.querySelector('[data-slot=\"progress-indicator\"]')\n\n expect(root?.getAttribute('data-size')).toBe('md')\n expect(root?.getAttribute('data-color')).toBe('primary')\n expect(root?.className).toContain('rounded-full')\n expect(indicator?.className).toContain('bg-(--progress-color)')\n })\n\n it('applies size and color variants and their data attributes', () => {\n const { container } = render(<Progress value={20} size=\"lg\" color=\"green\" />)\n\n const root = container.querySelector('[data-slot=\"progress\"]')\n\n expect(root?.getAttribute('data-size')).toBe('lg')\n expect(root?.getAttribute('data-color')).toBe('green')\n expect(root?.className).toContain('h-1.5')\n })\n\n it('translates the indicator based on the value', () => {\n const { container } = render(<Progress value={30} />)\n\n const indicator = container.querySelector('[data-slot=\"progress-indicator\"]') as HTMLElement\n\n expect(indicator.style.transform).toBe('translateX(-70%)')\n })\n\n it('defaults the indicator transform to fully hidden when value is omitted', () => {\n const { container } = render(<Progress />)\n\n const indicator = container.querySelector('[data-slot=\"progress-indicator\"]') as HTMLElement\n\n expect(indicator.style.transform).toBe('translateX(-100%)')\n })\n\n it('merges a custom className with the variant classes', () => {\n const { container } = render(<Progress value={10} className=\"custom-class\" />)\n\n expect(container.querySelector('[data-slot=\"progress\"]')?.className).toContain('custom-class')\n })\n})\n"],"mappings":"yKAIA,SAAS,eAAkB,CACzB,GAAG,0EAA6E,CAC9E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,MAAO,EAAK,CAAA,CAAC,EAE9C,EAAO,EAAU,cAAc,wBAAwB,EACvD,EAAY,EAAU,cAAc,kCAAkC,EAE5E,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACvD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,cAAc,EAChD,OAAO,GAAW,SAAS,CAAC,CAAC,UAAU,uBAAuB,CAChE,CAAC,EAED,GAAG,gEAAmE,CACpE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,MAAO,GAAI,KAAK,KAAK,MAAM,OAAS,CAAA,CAAC,EAEtE,EAAO,EAAU,cAAc,wBAAwB,EAE7D,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,EACrD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,OAAO,CAC3C,CAAC,EAED,GAAG,kDAAqD,CACtD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,MAAO,EAAK,CAAA,CAAC,EAE9C,EAAY,EAAU,cAAc,kCAAkC,EAE5E,OAAO,EAAU,MAAM,SAAS,CAAC,CAAC,KAAK,kBAAkB,CAC3D,CAAC,EAED,GAAG,6EAAgF,CACjF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,CAAA,CAAC,EAEnC,EAAY,EAAU,cAAc,kCAAkC,EAE5E,OAAO,EAAU,MAAM,SAAS,CAAC,CAAC,KAAK,mBAAmB,CAC5D,CAAC,EAED,GAAG,yDAA4D,CAC7D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,MAAO,GAAI,UAAU,cAAgB,CAAA,CAAC,EAE7E,OAAO,EAAU,cAAc,wBAAwB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAC/F,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,t}from"../radio-group-DM8n0XPS.js";import{a as n,n as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";describe(`RadioGroup`,()=>{it(`renders the root with the default color and grid layout classes`,()=>{let{container:n}=i(a(t,{children:a(e,{value:`a`,label:`Option A`})})),r=n.querySelector(`[data-slot="radio-group"]`);expect(r).not.toBeNull(),expect(r?.getAttribute(`data-color`)).toBe(`primary`),expect(r?.className).toContain(`grid`)}),it(`applies a custom color to the root`,()=>{let{container:n}=i(a(t,{color:`red`,children:a(e,{value:`a`,label:`Option A`})})),r=n.querySelector(`[data-slot="radio-group"]`);expect(r?.getAttribute(`data-color`)).toBe(`red`),expect(r?.className).toContain(`[--selection-control:var(--red)]`)}),it(`applies its own independent color prop to an item`,()=>{let{container:n}=i(a(t,{children:a(e,{value:`a`,label:`Option A`,color:`red`})})),r=n.querySelector(`[data-slot="radio-group-item"]`);expect(r?.getAttribute(`data-color`)).toBe(`red`),expect(r?.className).toContain(`[--selection-control:var(--red)]`)}),it(`renders a label associated with the item and generates an id when none is provided`,()=>{i(a(t,{children:a(e,{value:`a`,label:`Option A`})}));let r=n.getByLabelText(`Option A`);expect(r.getAttribute(`id`)).toBeTruthy(),expect(n.getByText(`Option A`).getAttribute(`for`)).toBe(r.getAttribute(`id`))}),it(`does not wrap the item in a label field when no label is provided`,()=>{let{container:n}=i(a(t,{children:a(e,{value:`a`})}));expect(n.querySelector(`[data-slot="radio-group-item-field"]`)).toBeNull(),expect(n.querySelector(`[data-slot="radio-group-item"]`)?.getAttribute(`id`)).toBeNull()}),it(`respects an explicit id over the generated one`,()=>{i(a(t,{children:a(e,{value:`a`,label:`Option A`,id:`custom-id`})})),expect(n.getByLabelText(`Option A`).getAttribute(`id`)).toBe(`custom-id`)}),it(`applies the requested size to the item, indicator and label`,()=>{let{container:r}=i(a(t,{children:a(e,{value:`a`,label:`Option A`,size:`lg`})})),o=r.querySelector(`[data-slot="radio-group-item"]`),s=n.getByText(`Option A`);expect(o?.getAttribute(`data-size`)).toBe(`lg`),expect(o?.className).toContain(`size-5.5`),expect(s.className).toContain(`text-xl`)}),it(`selects an item when clicked and calls onValueChange, keeping the group single-select`,()=>{let s=vi.fn();i(o(t,{onValueChange:s,children:[a(e,{value:`a`,label:`Option A`}),a(e,{value:`b`,label:`Option B`})]}));let c=n.getByLabelText(`Option A`),l=n.getByLabelText(`Option B`);r.click(c),expect(s).toHaveBeenCalledWith(`a`),expect(c.getAttribute(`data-state`)).toBe(`checked`),expect(l.getAttribute(`data-state`)).toBe(`unchecked`),r.click(l),expect(s).toHaveBeenCalledWith(`b`),expect(l.getAttribute(`data-state`)).toBe(`checked`),expect(c.getAttribute(`data-state`)).toBe(`unchecked`)}),it(`renders as a controlled group reflecting the given value`,()=>{i(o(t,{value:`b`,children:[a(e,{value:`a`,label:`Option A`}),a(e,{value:`b`,label:`Option B`})]})),expect(n.getByLabelText(`Option A`).getAttribute(`data-state`)).toBe(`unchecked`),expect(n.getByLabelText(`Option B`).getAttribute(`data-state`)).toBe(`checked`)}),it(`marks a disabled item as disabled and prevents selection`,()=>{let o=vi.fn();i(a(t,{onValueChange:o,children:a(e,{value:`a`,label:`Option A`,disabled:!0})}));let s=n.getByLabelText(`Option A`);expect(s.disabled).toBe(!0),r.click(s),expect(o).not.toHaveBeenCalled()})});
|
|
2
|
-
//# sourceMappingURL=radio-group.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.spec.js","names":[],"sources":["../../src/components/radio-group.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { RadioGroup, RadioGroupItem } from './radio-group'\n\ndescribe('RadioGroup', () => {\n it('renders the root with the default color and grid layout classes', () => {\n const { container } = render(\n <RadioGroup>\n <RadioGroupItem value=\"a\" label=\"Option A\" />\n </RadioGroup>\n )\n\n const root = container.querySelector('[data-slot=\"radio-group\"]')\n\n expect(root).not.toBeNull()\n expect(root?.getAttribute('data-color')).toBe('primary')\n expect(root?.className).toContain('grid')\n })\n\n it('applies a custom color to the root', () => {\n const { container } = render(\n <RadioGroup color=\"red\">\n <RadioGroupItem value=\"a\" label=\"Option A\" />\n </RadioGroup>\n )\n\n const root = container.querySelector('[data-slot=\"radio-group\"]')\n\n expect(root?.getAttribute('data-color')).toBe('red')\n expect(root?.className).toContain('[--selection-control:var(--red)]')\n })\n\n it('applies its own independent color prop to an item', () => {\n const { container } = render(\n <RadioGroup>\n <RadioGroupItem value=\"a\" label=\"Option A\" color=\"red\" />\n </RadioGroup>\n )\n\n const item = container.querySelector('[data-slot=\"radio-group-item\"]')\n\n expect(item?.getAttribute('data-color')).toBe('red')\n expect(item?.className).toContain('[--selection-control:var(--red)]')\n })\n\n it('renders a label associated with the item and generates an id when none is provided', () => {\n render(\n <RadioGroup>\n <RadioGroupItem value=\"a\" label=\"Option A\" />\n </RadioGroup>\n )\n\n const radio = screen.getByLabelText('Option A')\n\n expect(radio.getAttribute('id')).toBeTruthy()\n expect(screen.getByText('Option A').getAttribute('for')).toBe(radio.getAttribute('id'))\n })\n\n it('does not wrap the item in a label field when no label is provided', () => {\n const { container } = render(\n <RadioGroup>\n <RadioGroupItem value=\"a\" />\n </RadioGroup>\n )\n\n expect(container.querySelector('[data-slot=\"radio-group-item-field\"]')).toBeNull()\n expect(container.querySelector('[data-slot=\"radio-group-item\"]')?.getAttribute('id')).toBeNull()\n })\n\n it('respects an explicit id over the generated one', () => {\n render(\n <RadioGroup>\n <RadioGroupItem value=\"a\" label=\"Option A\" id=\"custom-id\" />\n </RadioGroup>\n )\n\n expect(screen.getByLabelText('Option A').getAttribute('id')).toBe('custom-id')\n })\n\n it('applies the requested size to the item, indicator and label', () => {\n const { container } = render(\n <RadioGroup>\n <RadioGroupItem value=\"a\" label=\"Option A\" size=\"lg\" />\n </RadioGroup>\n )\n\n const item = container.querySelector('[data-slot=\"radio-group-item\"]')\n const label = screen.getByText('Option A')\n\n expect(item?.getAttribute('data-size')).toBe('lg')\n expect(item?.className).toContain('size-5.5')\n expect(label.className).toContain('text-xl')\n })\n\n it('selects an item when clicked and calls onValueChange, keeping the group single-select', () => {\n const onValueChange = vi.fn()\n\n render(\n <RadioGroup onValueChange={onValueChange}>\n <RadioGroupItem value=\"a\" label=\"Option A\" />\n <RadioGroupItem value=\"b\" label=\"Option B\" />\n </RadioGroup>\n )\n\n const optionA = screen.getByLabelText('Option A')\n const optionB = screen.getByLabelText('Option B')\n\n fireEvent.click(optionA)\n\n expect(onValueChange).toHaveBeenCalledWith('a')\n expect(optionA.getAttribute('data-state')).toBe('checked')\n expect(optionB.getAttribute('data-state')).toBe('unchecked')\n\n fireEvent.click(optionB)\n\n expect(onValueChange).toHaveBeenCalledWith('b')\n expect(optionB.getAttribute('data-state')).toBe('checked')\n expect(optionA.getAttribute('data-state')).toBe('unchecked')\n })\n\n it('renders as a controlled group reflecting the given value', () => {\n render(\n <RadioGroup value=\"b\">\n <RadioGroupItem value=\"a\" label=\"Option A\" />\n <RadioGroupItem value=\"b\" label=\"Option B\" />\n </RadioGroup>\n )\n\n expect(screen.getByLabelText('Option A').getAttribute('data-state')).toBe('unchecked')\n expect(screen.getByLabelText('Option B').getAttribute('data-state')).toBe('checked')\n })\n\n it('marks a disabled item as disabled and prevents selection', () => {\n const onValueChange = vi.fn()\n\n render(\n <RadioGroup onValueChange={onValueChange}>\n <RadioGroupItem value=\"a\" label=\"Option A\" disabled />\n </RadioGroup>\n )\n\n const optionA = screen.getByLabelText('Option A') as HTMLButtonElement\n\n expect(optionA.disabled).toBe(true)\n\n fireEvent.click(optionA)\n\n expect(onValueChange).not.toHaveBeenCalled()\n })\n})\n"],"mappings":"sMAIA,SAAS,iBAAoB,CAC3B,GAAG,sEAAyE,CAC1E,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,CAClC,CAAA,CACd,EAEM,EAAO,EAAU,cAAc,2BAA2B,EAEhE,OAAO,CAAI,CAAC,CAAC,IAAI,SAAS,EAC1B,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACvD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,MAAM,CAC1C,CAAC,EAED,GAAG,yCAA4C,CAC7C,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAY,MAAM,MAChB,SAAA,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,CAClC,CAAA,CACd,EAEM,EAAO,EAAU,cAAc,2BAA2B,EAEhE,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,EACnD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,kCAAkC,CACtE,CAAC,EAED,GAAG,wDAA2D,CAC5D,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,WAAW,MAAM,KAAO,CAAA,CAC9C,CAAA,CACd,EAEM,EAAO,EAAU,cAAc,gCAAgC,EAErE,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,EACnD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,kCAAkC,CACtE,CAAC,EAED,GAAG,yFAA4F,CAC7F,EACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,CAClC,CAAA,CACd,EAEA,IAAM,EAAQ,EAAO,eAAe,UAAU,EAE9C,OAAO,EAAM,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,EAC5C,OAAO,EAAO,UAAU,UAAU,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,EAAM,aAAa,IAAI,CAAC,CACxF,CAAC,EAED,GAAG,wEAA2E,CAC5E,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,MAAM,GAAK,CAAA,CACjB,CAAA,CACd,EAEA,OAAO,EAAU,cAAc,sCAAsC,CAAC,CAAC,CAAC,SAAS,EACjF,OAAO,EAAU,cAAc,gCAAgC,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CACjG,CAAC,EAED,GAAG,qDAAwD,CACzD,EACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,WAAW,GAAG,WAAa,CAAA,CACjD,CAAA,CACd,EAEA,OAAO,EAAO,eAAe,UAAU,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAC/E,CAAC,EAED,GAAG,kEAAqE,CACtE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,WAAW,KAAK,IAAM,CAAA,CAC5C,CAAA,CACd,EAEM,EAAO,EAAU,cAAc,gCAAgC,EAC/D,EAAQ,EAAO,UAAU,UAAU,EAEzC,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,UAAU,EAC5C,OAAO,EAAM,SAAS,CAAC,CAAC,UAAU,SAAS,CAC7C,CAAC,EAED,GAAG,4FAA+F,CAChG,IAAM,EAAgB,GAAG,GAAG,EAE5B,EACE,EAAC,EAAD,CAA2B,gBAA3B,SAAA,CACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,EAC5C,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,CAClC,CACd,CAAA,CAAA,EAEA,IAAM,EAAU,EAAO,eAAe,UAAU,EAC1C,EAAU,EAAO,eAAe,UAAU,EAEhD,EAAU,MAAM,CAAO,EAEvB,OAAO,CAAa,CAAC,CAAC,qBAAqB,GAAG,EAC9C,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACzD,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,EAE3D,EAAU,MAAM,CAAO,EAEvB,OAAO,CAAa,CAAC,CAAC,qBAAqB,GAAG,EAC9C,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACzD,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,CAC7D,CAAC,EAED,GAAG,+DAAkE,CACnE,EACE,EAAC,EAAD,CAAY,MAAM,IAAlB,SAAA,CACE,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,EAC5C,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,UAAY,CAAA,CAClC,CACd,CAAA,CAAA,EAEA,OAAO,EAAO,eAAe,UAAU,CAAC,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,EACrF,OAAO,EAAO,eAAe,UAAU,CAAC,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CACrF,CAAC,EAED,GAAG,+DAAkE,CACnE,IAAM,EAAgB,GAAG,GAAG,EAE5B,EACE,EAAC,EAAD,CAA2B,gBACzB,SAAA,EAAC,EAAD,CAAgB,MAAM,IAAI,MAAM,WAAW,SAAA,EAAU,CAAA,CAC3C,CAAA,CACd,EAEA,IAAM,EAAU,EAAO,eAAe,UAAU,EAEhD,OAAO,EAAQ,QAAQ,CAAC,CAAC,KAAK,EAAI,EAElC,EAAU,MAAM,CAAO,EAEvB,OAAO,CAAa,CAAC,CAAC,IAAI,iBAAiB,CAC7C,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"../resizable-Dbg7r7nF.js";import{a as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";var ResizeObserverStub=class{observe(){}unobserve(){}disconnect(){}};beforeAll(()=>{window.ResizeObserver=ResizeObserverStub}),describe(`ResizablePanelGroup`,()=>{it(`renders the group with its data-slot and layout classes`,()=>{let{container:r}=i(o(t,{children:[a(e,{children:`Left`}),a(n,{}),a(e,{children:`Right`})]})),s=r.querySelector(`[data-slot="resizable-panel-group"]`);expect(s).not.toBeNull(),expect(s?.className).toContain(`flex`),expect(s?.className).toContain(`h-full`),expect(s?.className).toContain(`w-full`)}),it(`renders each panel with its own data-slot and content`,()=>{let{container:s}=i(o(t,{children:[a(e,{children:`Left panel`}),a(n,{}),a(e,{children:`Right panel`})]})),c=s.querySelectorAll(`[data-slot="resizable-panel"]`);expect(c).toHaveLength(2),expect(r.getByText(`Left panel`)).not.toBeNull(),expect(r.getByText(`Right panel`)).not.toBeNull()}),it(`lays out panels in a row by default`,()=>{let{container:r}=i(o(t,{children:[a(e,{children:`Left`}),a(n,{}),a(e,{children:`Right`})]})),s=r.querySelector(`[data-slot="resizable-panel-group"]`);expect(s.style.flexDirection).toBe(`row`)}),it(`switches to a column layout and flips the handle orientation when vertical`,()=>{let{container:s}=i(o(t,{orientation:`vertical`,children:[a(e,{children:`Top`}),a(n,{}),a(e,{children:`Bottom`})]})),c=s.querySelector(`[data-slot="resizable-panel-group"]`),l=r.getByRole(`separator`);expect(c.style.flexDirection).toBe(`column`),expect(l.getAttribute(`aria-orientation`)).toBe(`horizontal`)})}),describe(`ResizableHandle`,()=>{it(`renders as a separator with its data-slot`,()=>{let{container:s}=i(o(t,{children:[a(e,{children:`Left`}),a(n,{}),a(e,{children:`Right`})]})),c=r.getByRole(`separator`);expect(c.getAttribute(`data-slot`)).toBe(`resizable-handle`),expect(s.querySelector(`[data-slot="resizable-handle"]`)).toBe(c)}),it(`does not render a visible grip by default`,()=>{i(o(t,{children:[a(e,{children:`Left`}),a(n,{}),a(e,{children:`Right`})]})),expect(r.getByRole(`separator`).querySelector(`div`)).toBeNull()}),it(`renders a visible grip element when withHandle is set`,()=>{i(o(t,{children:[a(e,{children:`Left`}),a(n,{withHandle:!0}),a(e,{children:`Right`})]}));let s=r.getByRole(`separator`).querySelector(`div`);expect(s).not.toBeNull(),expect(s?.className).toContain(`rounded-lg`)})});
|
|
2
|
-
//# sourceMappingURL=resizable.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resizable.spec.js","names":[],"sources":["../../src/components/resizable.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { ResizableHandle, ResizablePanel, ResizablePanelGroup } from './resizable'\n\nclass ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n}\n\nbeforeAll(() => {\n window.ResizeObserver = ResizeObserverStub as unknown as typeof ResizeObserver\n})\n\ndescribe('ResizablePanelGroup', () => {\n it('renders the group with its data-slot and layout classes', () => {\n const { container } = render(\n <ResizablePanelGroup>\n <ResizablePanel>Left</ResizablePanel>\n <ResizableHandle />\n <ResizablePanel>Right</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n const group = container.querySelector('[data-slot=\"resizable-panel-group\"]')\n\n expect(group).not.toBeNull()\n expect(group?.className).toContain('flex')\n expect(group?.className).toContain('h-full')\n expect(group?.className).toContain('w-full')\n })\n\n it('renders each panel with its own data-slot and content', () => {\n const { container } = render(\n <ResizablePanelGroup>\n <ResizablePanel>Left panel</ResizablePanel>\n <ResizableHandle />\n <ResizablePanel>Right panel</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n const panels = container.querySelectorAll('[data-slot=\"resizable-panel\"]')\n\n expect(panels).toHaveLength(2)\n expect(screen.getByText('Left panel')).not.toBeNull()\n expect(screen.getByText('Right panel')).not.toBeNull()\n })\n\n it('lays out panels in a row by default', () => {\n const { container } = render(\n <ResizablePanelGroup>\n <ResizablePanel>Left</ResizablePanel>\n <ResizableHandle />\n <ResizablePanel>Right</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n const group = container.querySelector('[data-slot=\"resizable-panel-group\"]') as HTMLElement\n\n expect(group.style.flexDirection).toBe('row')\n })\n\n it('switches to a column layout and flips the handle orientation when vertical', () => {\n const { container } = render(\n <ResizablePanelGroup orientation=\"vertical\">\n <ResizablePanel>Top</ResizablePanel>\n <ResizableHandle />\n <ResizablePanel>Bottom</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n const group = container.querySelector('[data-slot=\"resizable-panel-group\"]') as HTMLElement\n const handle = screen.getByRole('separator')\n\n expect(group.style.flexDirection).toBe('column')\n expect(handle.getAttribute('aria-orientation')).toBe('horizontal')\n })\n})\n\ndescribe('ResizableHandle', () => {\n it('renders as a separator with its data-slot', () => {\n const { container } = render(\n <ResizablePanelGroup>\n <ResizablePanel>Left</ResizablePanel>\n <ResizableHandle />\n <ResizablePanel>Right</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n const handle = screen.getByRole('separator')\n\n expect(handle.getAttribute('data-slot')).toBe('resizable-handle')\n expect(container.querySelector('[data-slot=\"resizable-handle\"]')).toBe(handle)\n })\n\n it('does not render a visible grip by default', () => {\n render(\n <ResizablePanelGroup>\n <ResizablePanel>Left</ResizablePanel>\n <ResizableHandle />\n <ResizablePanel>Right</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n expect(screen.getByRole('separator').querySelector('div')).toBeNull()\n })\n\n it('renders a visible grip element when withHandle is set', () => {\n render(\n <ResizablePanelGroup>\n <ResizablePanel>Left</ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel>Right</ResizablePanel>\n </ResizablePanelGroup>\n )\n\n const grip = screen.getByRole('separator').querySelector('div')\n\n expect(grip).not.toBeNull()\n expect(grip?.className).toContain('rounded-lg')\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"../ring-progress-Bfqq_HHA.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`RingProgress`,()=>{it(`renders an svg with the ring-progress data-slot and default size, color, and thickness`,()=>{let{container:r}=t(n(e,{value:40})),i=r.querySelector(`[data-slot="ring-progress"]`);expect(i?.tagName).toBe(`svg`),expect(i?.getAttribute(`data-size`)).toBe(`md`),expect(i?.getAttribute(`data-color`)).toBe(`primary`),expect(i?.getAttribute(`data-thickness`)).toBe(`md`),expect(i?.getAttribute(`role`)).toBe(`progressbar`),expect(i?.getAttribute(`aria-valuenow`)).toBe(`40`)}),it(`clamps out-of-range values and defaults to 0 when omitted`,()=>{let{container:r}=t(n(e,{value:-20})),{container:i}=t(n(e,{value:150})),{container:a}=t(n(e,{}));expect(r.querySelector(`[data-slot="ring-progress"]`)?.getAttribute(`aria-valuenow`)).toBe(`0`),expect(i.querySelector(`[data-slot="ring-progress"]`)?.getAttribute(`aria-valuenow`)).toBe(`100`),expect(a.querySelector(`[data-slot="ring-progress"]`)?.getAttribute(`aria-valuenow`)).toBe(`0`)}),it(`adjusts the stroke width of both circles based on the thickness variant`,()=>{let{container:r}=t(n(e,{value:50,thickness:`thick`})),i=r.querySelectorAll(`circle`);expect(i).toHaveLength(2),expect(i[0]?.getAttribute(`stroke-width`)).toBe(`16`),expect(i[1]?.getAttribute(`stroke-width`)).toBe(`16`)}),it(`applies the size and color variant classes alongside a custom className`,()=>{let{container:r}=t(n(e,{value:50,size:`lg`,color:`green`,className:`custom-class`})),i=r.querySelector(`[data-slot="ring-progress"]`)?.getAttribute(`class`);expect(i).toContain(`size-12`),expect(i).toContain(`custom-class`)}),it(`forwards a ref to the underlying svg element`,()=>{let r={current:null};t(n(e,{ref:r,value:20})),expect(r.current).toBeInstanceOf(SVGSVGElement)})});
|
|
2
|
-
//# sourceMappingURL=ring-progress.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ring-progress.spec.js","names":[],"sources":["../../src/components/ring-progress.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { RingProgress } from './ring-progress'\n\ndescribe('RingProgress', () => {\n it('renders an svg with the ring-progress data-slot and default size, color, and thickness', () => {\n const { container } = render(<RingProgress value={40} />)\n\n const svg = container.querySelector('[data-slot=\"ring-progress\"]')\n\n expect(svg?.tagName).toBe('svg')\n expect(svg?.getAttribute('data-size')).toBe('md')\n expect(svg?.getAttribute('data-color')).toBe('primary')\n expect(svg?.getAttribute('data-thickness')).toBe('md')\n expect(svg?.getAttribute('role')).toBe('progressbar')\n expect(svg?.getAttribute('aria-valuenow')).toBe('40')\n })\n\n it('clamps out-of-range values and defaults to 0 when omitted', () => {\n const { container: low } = render(<RingProgress value={-20} />)\n const { container: high } = render(<RingProgress value={150} />)\n const { container: none } = render(<RingProgress />)\n\n expect(low.querySelector('[data-slot=\"ring-progress\"]')?.getAttribute('aria-valuenow')).toBe('0')\n expect(high.querySelector('[data-slot=\"ring-progress\"]')?.getAttribute('aria-valuenow')).toBe('100')\n expect(none.querySelector('[data-slot=\"ring-progress\"]')?.getAttribute('aria-valuenow')).toBe('0')\n })\n\n it('adjusts the stroke width of both circles based on the thickness variant', () => {\n const { container } = render(<RingProgress value={50} thickness=\"thick\" />)\n\n const circles = container.querySelectorAll('circle')\n\n expect(circles).toHaveLength(2)\n expect(circles[0]?.getAttribute('stroke-width')).toBe('16')\n expect(circles[1]?.getAttribute('stroke-width')).toBe('16')\n })\n\n it('applies the size and color variant classes alongside a custom className', () => {\n const { container } = render(<RingProgress value={50} size=\"lg\" color=\"green\" className=\"custom-class\" />)\n\n const classes = container.querySelector('[data-slot=\"ring-progress\"]')?.getAttribute('class')\n\n expect(classes).toContain('size-12')\n expect(classes).toContain('custom-class')\n })\n\n it('forwards a ref to the underlying svg element', () => {\n const ref = { current: null as SVGSVGElement | null }\n\n render(<RingProgress ref={ref} value={20} />)\n\n expect(ref.current).toBeInstanceOf(SVGSVGElement)\n })\n})\n"],"mappings":"8KAIA,SAAS,mBAAsB,CAC7B,GAAG,6FAAgG,CACjG,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAc,MAAO,EAAK,CAAA,CAAC,EAElD,EAAM,EAAU,cAAc,6BAA6B,EAEjE,OAAO,GAAK,OAAO,CAAC,CAAC,KAAK,KAAK,EAC/B,OAAO,GAAK,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAChD,OAAO,GAAK,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACtD,OAAO,GAAK,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,EACrD,OAAO,GAAK,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,aAAa,EACpD,OAAO,GAAK,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CACtD,CAAC,EAED,GAAG,gEAAmE,CACpE,GAAM,CAAE,UAAW,GAAQ,EAAO,EAAC,EAAD,CAAc,MAAO,GAAM,CAAA,CAAC,EACxD,CAAE,UAAW,GAAS,EAAO,EAAC,EAAD,CAAc,MAAO,GAAM,CAAA,CAAC,EACzD,CAAE,UAAW,GAAS,EAAO,EAAC,EAAD,CAAe,CAAA,CAAC,EAEnD,OAAO,EAAI,cAAc,6BAA6B,CAAC,EAAE,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,GAAG,EAChG,OAAO,EAAK,cAAc,6BAA6B,CAAC,EAAE,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,KAAK,EACnG,OAAO,EAAK,cAAc,6BAA6B,CAAC,EAAE,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,GAAG,CACnG,CAAC,EAED,GAAG,8EAAiF,CAClF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAc,MAAO,GAAI,UAAU,OAAS,CAAA,CAAC,EAEpE,EAAU,EAAU,iBAAiB,QAAQ,EAEnD,OAAO,CAAO,CAAC,CAAC,aAAa,CAAC,EAC9B,OAAO,EAAQ,EAAE,EAAE,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,EAC1D,OAAO,EAAQ,EAAE,EAAE,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAC5D,CAAC,EAED,GAAG,8EAAiF,CAClF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAc,MAAO,GAAI,KAAK,KAAK,MAAM,QAAQ,UAAU,cAAgB,CAAA,CAAC,EAEnG,EAAU,EAAU,cAAc,6BAA6B,CAAC,EAAE,aAAa,OAAO,EAE5F,OAAO,CAAO,CAAC,CAAC,UAAU,SAAS,EACnC,OAAO,CAAO,CAAC,CAAC,UAAU,cAAc,CAC1C,CAAC,EAED,GAAG,mDAAsD,CACvD,IAAM,EAAM,CAAE,QAAS,IAA6B,EAEpD,EAAO,EAAC,EAAD,CAAmB,MAAK,MAAO,EAAK,CAAA,CAAC,EAE5C,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,aAAa,CAClD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,t}from"../scroll-area-DKS4QPHg.js";import{a as n,r}from"../react.esm-dE9nuHcL.js";import{ScrollArea as i}from"radix-ui";import{jsx as a,jsxs as o}from"react/jsx-runtime";var ResizeObserverStub=class{observe(){}unobserve(){}disconnect(){}};globalThis.ResizeObserver=globalThis.ResizeObserver??ResizeObserverStub,describe(`ScrollArea`,()=>{it(`renders the root and viewport with their data-slots and the given children`,()=>{let{container:e}=r(a(t,{children:a(`div`,{children:`Scrollable content`})}));expect(e.querySelector(`[data-slot="scroll-area"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="scroll-area-viewport"]`)).not.toBeNull(),expect(n.getByText(`Scrollable content`)).not.toBeNull()}),it(`renders a vertical scrollbar with its orientation classes once visible`,()=>{let{container:e}=r(a(t,{type:`always`,children:a(`div`,{children:`Scrollable content`})})),n=e.querySelector(`[data-slot="scroll-area-scrollbar"]`);expect(n?.getAttribute(`data-orientation`)).toBe(`vertical`),expect(n?.className).toContain(`data-vertical:w-2.5`)}),it(`merges a custom className on the root`,()=>{let{container:e}=r(a(t,{className:`custom-class`,children:`content`}));expect(e.querySelector(`[data-slot="scroll-area"]`)?.className).toContain(`custom-class`)}),it(`renders a standalone ScrollBar with the requested orientation`,()=>{let{container:t}=r(o(i.Root,{type:`always`,children:[a(i.Viewport,{children:`content`}),a(e,{orientation:`horizontal`})]})),n=t.querySelector(`[data-slot="scroll-area-scrollbar"]`);expect(n?.getAttribute(`data-orientation`)).toBe(`horizontal`),expect(n?.className).toContain(`data-horizontal:h-2.5`)}),it(`merges a custom className on the scrollbar`,()=>{let{container:t}=r(o(i.Root,{type:`always`,children:[a(i.Viewport,{children:`content`}),a(e,{className:`custom-class`})]}));expect(t.querySelector(`[data-slot="scroll-area-scrollbar"]`)?.className).toContain(`custom-class`)})});
|
|
2
|
-
//# sourceMappingURL=scroll-area.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area.spec.js","names":["ScrollArea","ScrollAreaPrimitive"],"sources":["../../src/components/scroll-area.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui'\n\nimport { ScrollArea, ScrollBar } from './scroll-area'\n\n// jsdom does not implement ResizeObserver, which @radix-ui/react-scroll-area relies on\n// unconditionally to measure the viewport, content, and scrollbars.\nclass ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n}\n\nglobalThis.ResizeObserver = globalThis.ResizeObserver ?? (ResizeObserverStub as unknown as typeof ResizeObserver)\n\ndescribe('ScrollArea', () => {\n it('renders the root and viewport with their data-slots and the given children', () => {\n const { container } = render(\n <ScrollArea>\n <div>Scrollable content</div>\n </ScrollArea>\n )\n\n expect(container.querySelector('[data-slot=\"scroll-area\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"scroll-area-viewport\"]')).not.toBeNull()\n expect(screen.getByText('Scrollable content')).not.toBeNull()\n })\n\n it('renders a vertical scrollbar with its orientation classes once visible', () => {\n const { container } = render(\n <ScrollArea type=\"always\">\n <div>Scrollable content</div>\n </ScrollArea>\n )\n\n const scrollbar = container.querySelector('[data-slot=\"scroll-area-scrollbar\"]')\n\n expect(scrollbar?.getAttribute('data-orientation')).toBe('vertical')\n expect(scrollbar?.className).toContain('data-vertical:w-2.5')\n })\n\n it('merges a custom className on the root', () => {\n const { container } = render(<ScrollArea className=\"custom-class\">content</ScrollArea>)\n\n expect(container.querySelector('[data-slot=\"scroll-area\"]')?.className).toContain('custom-class')\n })\n\n it('renders a standalone ScrollBar with the requested orientation', () => {\n const { container } = render(\n <ScrollAreaPrimitive.Root type=\"always\">\n <ScrollAreaPrimitive.Viewport>content</ScrollAreaPrimitive.Viewport>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollAreaPrimitive.Root>\n )\n\n const scrollbar = container.querySelector('[data-slot=\"scroll-area-scrollbar\"]')\n\n expect(scrollbar?.getAttribute('data-orientation')).toBe('horizontal')\n expect(scrollbar?.className).toContain('data-horizontal:h-2.5')\n })\n\n it('merges a custom className on the scrollbar', () => {\n const { container } = render(\n <ScrollAreaPrimitive.Root type=\"always\">\n <ScrollAreaPrimitive.Viewport>content</ScrollAreaPrimitive.Viewport>\n <ScrollBar className=\"custom-class\" />\n </ScrollAreaPrimitive.Root>\n )\n\n expect(container.querySelector('[data-slot=\"scroll-area-scrollbar\"]')?.className).toContain('custom-class')\n })\n})\n"],"mappings":"gOAOA,IAAM,mBAAN,KAAyB,CACvB,SAAU,CAAC,CACX,WAAY,CAAC,CACb,YAAa,CAAC,CAChB,EAEA,WAAW,eAAiB,WAAW,gBAAmB,mBAE1D,SAAS,iBAAoB,CAC3B,GAAG,iFAAoF,CACrF,GAAM,CAAE,aAAc,EACpB,EAACA,EAAD,CAAA,SACE,EAAC,MAAD,CAAA,SAAK,oBAAuB,CAAA,CAClB,CAAA,CACd,EAEA,OAAO,EAAU,cAAc,2BAA2B,CAAC,CAAC,CAAC,IAAI,SAAS,EAC1E,OAAO,EAAU,cAAc,oCAAoC,CAAC,CAAC,CAAC,IAAI,SAAS,EACnF,OAAO,EAAO,UAAU,oBAAoB,CAAC,CAAC,CAAC,IAAI,SAAS,CAC9D,CAAC,EAED,GAAG,6EAAgF,CACjF,GAAM,CAAE,aAAc,EACpB,EAACA,EAAD,CAAY,KAAK,SACf,SAAA,EAAC,MAAD,CAAA,SAAK,oBAAuB,CAAA,CAClB,CAAA,CACd,EAEM,EAAY,EAAU,cAAc,qCAAqC,EAE/E,OAAO,GAAW,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,UAAU,EACnE,OAAO,GAAW,SAAS,CAAC,CAAC,UAAU,qBAAqB,CAC9D,CAAC,EAED,GAAG,4CAA+C,CAChD,GAAM,CAAE,aAAc,EAAO,EAACA,EAAD,CAAY,UAAU,eAAe,SAAA,SAAmB,CAAA,CAAC,EAEtF,OAAO,EAAU,cAAc,2BAA2B,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAClG,CAAC,EAED,GAAG,oEAAuE,CACxE,GAAM,CAAE,aAAc,EACpB,EAACC,EAAoB,KAArB,CAA0B,KAAK,SAA/B,SAAA,CACE,EAACA,EAAoB,SAArB,CAAA,SAA8B,SAAqC,CAAA,EACnE,EAAC,EAAD,CAAW,YAAY,YAAc,CAAA,CACb,CAC5B,CAAA,CAAA,EAEM,EAAY,EAAU,cAAc,qCAAqC,EAE/E,OAAO,GAAW,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,YAAY,EACrE,OAAO,GAAW,SAAS,CAAC,CAAC,UAAU,uBAAuB,CAChE,CAAC,EAED,GAAG,iDAAoD,CACrD,GAAM,CAAE,aAAc,EACpB,EAACA,EAAoB,KAArB,CAA0B,KAAK,SAA/B,SAAA,CACE,EAACA,EAAoB,SAArB,CAAA,SAA8B,SAAqC,CAAA,EACnE,EAAC,EAAD,CAAW,UAAU,cAAgB,CAAA,CACb,CAC5B,CAAA,CAAA,EAEA,OAAO,EAAU,cAAc,qCAAqC,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAC5G,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,i as n,l as r,n as i,r as a,t as o,u as s}from"../select-CVwVLyWt.js";import{a as c,n as l,r as u}from"../react.esm-dE9nuHcL.js";import{jsx as d,jsxs as f}from"react/jsx-runtime";beforeAll(()=>{window.HTMLElement.prototype.scrollIntoView=vi.fn(),window.HTMLElement.prototype.hasPointerCapture=vi.fn(()=>!1),window.HTMLElement.prototype.setPointerCapture=vi.fn(),window.HTMLElement.prototype.releasePointerCapture=vi.fn()});function renderSelect(c){return u(f(o,{onValueChange:c?.onValueChange,defaultValue:c?.defaultValue,children:[d(r,{children:d(s,{placeholder:`Pick a fruit`})}),f(i,{children:[f(a,{children:[d(e,{children:`Fruits`}),d(n,{value:`apple`,children:`Apple`}),d(n,{value:`banana`,children:`Banana`}),d(n,{value:`cherry`,disabled:!0,children:`Cherry`})]}),d(t,{})]})]}))}describe(`Select`,()=>{it(`renders the trigger with the placeholder and does not render the listbox until opened`,()=>{let{container:e}=renderSelect(),t=e.querySelector(`[data-slot="select-trigger"]`);expect(t).not.toBeNull(),expect(t?.getAttribute(`data-size`)).toBe(`md`),expect(c.getByText(`Pick a fruit`)).not.toBeNull(),expect(c.queryByRole(`listbox`)).toBeNull()}),it(`opens the listbox with its options when the trigger is clicked`,async()=>{renderSelect(),l.click(c.getByRole(`combobox`));let e=await c.findByRole(`listbox`);expect(e.getAttribute(`data-slot`)).toBe(`select-content`),expect(c.getByRole(`option`,{name:`Apple`})).not.toBeNull(),expect(c.getByRole(`option`,{name:`Banana`})).not.toBeNull(),expect(c.getByText(`Fruits`).getAttribute(`data-slot`)).toBe(`select-label`)}),it(`selects an item on click, calls onValueChange and closes the listbox`,async()=>{let e=vi.fn();renderSelect({onValueChange:e}),l.click(c.getByRole(`combobox`)),l.click(await c.findByRole(`option`,{name:`Banana`})),expect(e).toHaveBeenCalledWith(`banana`),expect(c.queryByRole(`listbox`)).toBeNull()}),it(`does not select a disabled item`,async()=>{let e=vi.fn();renderSelect({onValueChange:e}),l.click(c.getByRole(`combobox`));let t=await c.findByRole(`option`,{name:`Cherry`});expect(t.getAttribute(`data-disabled`)).toBe(``),l.click(t),expect(e).not.toHaveBeenCalled(),expect(c.getByRole(`listbox`)).not.toBeNull()}),it(`opens the listbox with the keyboard when the trigger is focused`,async()=>{renderSelect();let e=c.getByRole(`combobox`);e.focus(),l.keyDown(e,{key:`Enter`}),expect(await c.findByRole(`listbox`)).not.toBeNull()}),it(`applies the sm size to the trigger`,()=>{let{container:e}=u(f(o,{children:[d(r,{size:`sm`,children:d(s,{placeholder:`Pick`})}),d(i,{children:d(n,{value:`a`,children:`A`})})]}));expect(e.querySelector(`[data-slot="select-trigger"]`)?.getAttribute(`data-size`)).toBe(`sm`)}),it(`opens with a single item and renders the content without throwing`,async()=>{u(f(o,{defaultOpen:!0,children:[d(r,{children:d(s,{placeholder:`Pick`})}),d(i,{children:d(n,{value:`a`,children:`A`})})]}));let e=await c.findByRole(`listbox`);expect(e).not.toBeNull(),expect(c.getByRole(`option`,{name:`A`})).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=select.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select.spec.js","names":[],"sources":["../../src/components/select.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectSeparator,\n SelectTrigger,\n SelectValue\n} from './select'\n\nbeforeAll(() => {\n window.HTMLElement.prototype.scrollIntoView = vi.fn()\n window.HTMLElement.prototype.hasPointerCapture = vi.fn(() => false)\n window.HTMLElement.prototype.setPointerCapture = vi.fn()\n window.HTMLElement.prototype.releasePointerCapture = vi.fn()\n})\n\nfunction renderSelect(props?: { onValueChange?: (value: string) => void; defaultValue?: string }) {\n return render(\n <Select onValueChange={props?.onValueChange} defaultValue={props?.defaultValue}>\n <SelectTrigger>\n <SelectValue placeholder=\"Pick a fruit\" />\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>\n <SelectLabel>Fruits</SelectLabel>\n <SelectItem value=\"apple\">Apple</SelectItem>\n <SelectItem value=\"banana\">Banana</SelectItem>\n <SelectItem value=\"cherry\" disabled>\n Cherry\n </SelectItem>\n </SelectGroup>\n <SelectSeparator />\n </SelectContent>\n </Select>\n )\n}\n\ndescribe('Select', () => {\n it('renders the trigger with the placeholder and does not render the listbox until opened', () => {\n const { container } = renderSelect()\n\n const trigger = container.querySelector('[data-slot=\"select-trigger\"]')\n\n expect(trigger).not.toBeNull()\n expect(trigger?.getAttribute('data-size')).toBe('md')\n expect(screen.getByText('Pick a fruit')).not.toBeNull()\n expect(screen.queryByRole('listbox')).toBeNull()\n })\n\n it('opens the listbox with its options when the trigger is clicked', async () => {\n renderSelect()\n\n fireEvent.click(screen.getByRole('combobox'))\n\n const listbox = await screen.findByRole('listbox')\n\n expect(listbox.getAttribute('data-slot')).toBe('select-content')\n expect(screen.getByRole('option', { name: 'Apple' })).not.toBeNull()\n expect(screen.getByRole('option', { name: 'Banana' })).not.toBeNull()\n expect(screen.getByText('Fruits').getAttribute('data-slot')).toBe('select-label')\n })\n\n it('selects an item on click, calls onValueChange and closes the listbox', async () => {\n const onValueChange = vi.fn()\n renderSelect({ onValueChange })\n\n fireEvent.click(screen.getByRole('combobox'))\n fireEvent.click(await screen.findByRole('option', { name: 'Banana' }))\n\n expect(onValueChange).toHaveBeenCalledWith('banana')\n expect(screen.queryByRole('listbox')).toBeNull()\n })\n\n it('does not select a disabled item', async () => {\n const onValueChange = vi.fn()\n renderSelect({ onValueChange })\n\n fireEvent.click(screen.getByRole('combobox'))\n const disabledItem = await screen.findByRole('option', { name: 'Cherry' })\n\n expect(disabledItem.getAttribute('data-disabled')).toBe('')\n\n fireEvent.click(disabledItem)\n\n expect(onValueChange).not.toHaveBeenCalled()\n expect(screen.getByRole('listbox')).not.toBeNull()\n })\n\n it('opens the listbox with the keyboard when the trigger is focused', async () => {\n renderSelect()\n\n const trigger = screen.getByRole('combobox')\n trigger.focus()\n fireEvent.keyDown(trigger, { key: 'Enter' })\n\n expect(await screen.findByRole('listbox')).not.toBeNull()\n })\n\n it('applies the sm size to the trigger', () => {\n const { container } = render(\n <Select>\n <SelectTrigger size=\"sm\">\n <SelectValue placeholder=\"Pick\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"a\">A</SelectItem>\n </SelectContent>\n </Select>\n )\n\n expect(container.querySelector('[data-slot=\"select-trigger\"]')?.getAttribute('data-size')).toBe('sm')\n })\n\n it('opens with a single item and renders the content without throwing', async () => {\n render(\n <Select defaultOpen>\n <SelectTrigger>\n <SelectValue placeholder=\"Pick\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"a\">A</SelectItem>\n </SelectContent>\n </Select>\n )\n\n const listbox = await screen.findByRole('listbox')\n\n expect(listbox).not.toBeNull()\n expect(screen.getByRole('option', { name: 'A' })).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"../separator-CCMmbXL0.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`Separator`,()=>{it(`renders a horizontal, decorative separator with the separator data-slot by default`,()=>{let{container:r}=t(n(e,{})),i=r.querySelector(`[data-slot="separator"]`);expect(i?.getAttribute(`data-orientation`)).toBe(`horizontal`),expect(i?.getAttribute(`role`)).toBe(`none`),expect(i?.className).toContain(`bg-border`)}),it(`supports the vertical orientation`,()=>{let{container:r}=t(n(e,{orientation:`vertical`})),i=r.querySelector(`[data-slot="separator"]`);expect(i?.getAttribute(`data-orientation`)).toBe(`vertical`),expect(i?.className).toContain(`data-vertical:w-px`)}),it(`exposes a separator role and aria-orientation when not decorative`,()=>{let{container:r}=t(n(e,{decorative:!1,orientation:`vertical`})),i=r.querySelector(`[data-slot="separator"]`);expect(i?.getAttribute(`role`)).toBe(`separator`),expect(i?.getAttribute(`aria-orientation`)).toBe(`vertical`)}),it(`merges a custom className with the base classes`,()=>{let{container:r}=t(n(e,{className:`custom-class`}));expect(r.querySelector(`[data-slot="separator"]`)?.className).toContain(`custom-class`)}),it(`forwards a ref to the underlying element`,()=>{let r={current:null};t(n(e,{ref:r})),expect(r.current).toBeInstanceOf(HTMLDivElement)})});
|
|
2
|
-
//# sourceMappingURL=separator.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"separator.spec.js","names":[],"sources":["../../src/components/separator.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Separator } from './separator'\n\ndescribe('Separator', () => {\n it('renders a horizontal, decorative separator with the separator data-slot by default', () => {\n const { container } = render(<Separator />)\n\n const separator = container.querySelector('[data-slot=\"separator\"]')\n\n expect(separator?.getAttribute('data-orientation')).toBe('horizontal')\n expect(separator?.getAttribute('role')).toBe('none')\n expect(separator?.className).toContain('bg-border')\n })\n\n it('supports the vertical orientation', () => {\n const { container } = render(<Separator orientation=\"vertical\" />)\n\n const separator = container.querySelector('[data-slot=\"separator\"]')\n\n expect(separator?.getAttribute('data-orientation')).toBe('vertical')\n expect(separator?.className).toContain('data-vertical:w-px')\n })\n\n it('exposes a separator role and aria-orientation when not decorative', () => {\n const { container } = render(<Separator decorative={false} orientation=\"vertical\" />)\n\n const separator = container.querySelector('[data-slot=\"separator\"]')\n\n expect(separator?.getAttribute('role')).toBe('separator')\n expect(separator?.getAttribute('aria-orientation')).toBe('vertical')\n })\n\n it('merges a custom className with the base classes', () => {\n const { container } = render(<Separator className=\"custom-class\" />)\n\n expect(container.querySelector('[data-slot=\"separator\"]')?.className).toContain('custom-class')\n })\n\n it('forwards a ref to the underlying element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Separator ref={ref} />)\n\n expect(ref.current).toBeInstanceOf(HTMLDivElement)\n })\n})\n"],"mappings":"0KAIA,SAAS,gBAAmB,CAC1B,GAAG,yFAA4F,CAC7F,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAY,CAAA,CAAC,EAEpC,EAAY,EAAU,cAAc,yBAAyB,EAEnE,OAAO,GAAW,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,YAAY,EACrE,OAAO,GAAW,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EACnD,OAAO,GAAW,SAAS,CAAC,CAAC,UAAU,WAAW,CACpD,CAAC,EAED,GAAG,wCAA2C,CAC5C,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,YAAY,UAAY,CAAA,CAAC,EAE3D,EAAY,EAAU,cAAc,yBAAyB,EAEnE,OAAO,GAAW,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,UAAU,EACnE,OAAO,GAAW,SAAS,CAAC,CAAC,UAAU,oBAAoB,CAC7D,CAAC,EAED,GAAG,wEAA2E,CAC5E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,WAAY,GAAO,YAAY,UAAY,CAAA,CAAC,EAE9E,EAAY,EAAU,cAAc,yBAAyB,EAEnE,OAAO,GAAW,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,EACxD,OAAO,GAAW,aAAa,kBAAkB,CAAC,CAAC,CAAC,KAAK,UAAU,CACrE,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,UAAU,cAAgB,CAAA,CAAC,EAEnE,OAAO,EAAU,cAAc,yBAAyB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAChG,CAAC,EAED,GAAG,+CAAkD,CACnD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAgB,KAAM,CAAA,CAAC,EAE9B,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,cAAc,CACnD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{r as e}from"../tooltip-CNUNWZvs.js";import{C as t,S as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,t as y,u as b,v as x,w as S,x as C,y as w}from"../sidebar-CJriMotD.js";import{a as T,i as E,n as D,r as O,t as k}from"../react.esm-dE9nuHcL.js";import{Fragment as A,jsx as j,jsxs as M}from"react/jsx-runtime";import*as N from"react";if(globalThis.ResizeObserver===void 0){class ResizeObserverStub{observe(){}unobserve(){}disconnect(){}}globalThis.ResizeObserver=ResizeObserverStub}function clearSidebarCookie(){document.cookie=`sidebar_state=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`}function readSidebarCookie(){return document.cookie.split(`; `).find(e=>e.startsWith(`sidebar_state=`))?.split(`=`)[1]}function SidebarStateProbe(){let{state:e,open:t,isMobile:n,openMobile:r}=S();return j(`div`,{"data-testid":`probe`,"data-state":e,"data-open":t,"data-mobile":n,"data-open-mobile":r})}beforeEach(()=>{clearSidebarCookie()}),describe(`SidebarProvider`,()=>{it(`renders its children`,()=>{O(j(a,{children:j(`div`,{children:`sidebar content`})})),expect(T.getByText(`sidebar content`)).not.toBeNull()}),it(`renders a wrapper exposing the sidebar css variables and merges custom style/className`,()=>{let{container:e}=O(j(a,{className:`custom-wrapper`,style:{"--custom":`1px`},children:j(`div`,{children:`content`})})),t=e.querySelector(`[data-slot="sidebar-wrapper"]`);expect(t).not.toBeNull(),expect(t.className).toContain(`custom-wrapper`),expect(t.style.getPropertyValue(`--sidebar-width`)).toBe(`16rem`),expect(t.style.getPropertyValue(`--sidebar-width-icon`)).toBe(`3rem`),expect(t.style.getPropertyValue(`--custom`)).toBe(`1px`)}),it(`defaults to an expanded/open state`,()=>{O(j(a,{children:j(SidebarStateProbe,{})}));let e=T.getByTestId(`probe`);expect(e.getAttribute(`data-state`)).toBe(`expanded`),expect(e.getAttribute(`data-open`)).toBe(`true`)}),it(`honors defaultOpen={false}`,()=>{O(j(a,{defaultOpen:!1,children:j(SidebarStateProbe,{})})),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`collapsed`)}),it(`toggles open state via the trigger and persists it to the sidebar_state cookie`,()=>{O(M(a,{children:[j(SidebarStateProbe,{}),j(t,{})]})),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`expanded`),D.click(T.getByRole(`button`)),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`collapsed`),expect(readSidebarCookie()).toBe(`false`),D.click(T.getByRole(`button`)),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`expanded`),expect(readSidebarCookie()).toBe(`true`)}),it(`supports a controlled open state via open/onOpenChange`,()=>{let e=vi.fn();function Controlled(){let[n,r]=N.useState(!1);return M(a,{open:n,onOpenChange:t=>{r(t),e(t)},children:[j(SidebarStateProbe,{}),j(t,{})]})}O(j(Controlled,{})),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`collapsed`),D.click(T.getByRole(`button`)),expect(e).toHaveBeenCalledWith(!0),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`expanded`),expect(readSidebarCookie()).toBe(`true`)}),it(`toggles the sidebar with the Cmd/Ctrl+B keyboard shortcut`,()=>{O(j(a,{children:j(SidebarStateProbe,{})})),D.keyDown(window,{key:`b`,metaKey:!0}),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`collapsed`),D.keyDown(window,{key:`b`,ctrlKey:!0}),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`expanded`)}),it(`ignores the shortcut key without a meta/ctrl modifier`,()=>{O(j(a,{children:j(SidebarStateProbe,{})})),D.keyDown(window,{key:`b`}),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`expanded`)}),it(`reports isMobile from the current viewport width`,()=>{setTestViewportWidth(500),O(j(a,{children:j(SidebarStateProbe,{})}));let e=T.getByTestId(`probe`);expect(e.getAttribute(`data-mobile`)).toBe(`true`),expect(e.getAttribute(`data-open-mobile`)).toBe(`false`)}),it(`toggles openMobile instead of open on a mobile viewport, without writing the cookie`,()=>{setTestViewportWidth(500),O(M(a,{children:[j(SidebarStateProbe,{}),j(t,{})]})),D.click(T.getByRole(`button`));let e=T.getByTestId(`probe`);expect(e.getAttribute(`data-open-mobile`)).toBe(`true`),expect(e.getAttribute(`data-open`)).toBe(`true`),expect(readSidebarCookie()).toBeUndefined()})}),describe(`useSidebar`,()=>{it(`throws when used outside of a SidebarProvider`,()=>{expect(()=>E(()=>S())).toThrow(`useSidebar must be used within a SidebarProvider.`)}),it(`exposes state, open, isMobile, openMobile and toggleSidebar to consumers`,()=>{let{result:e}=E(()=>S(),{wrapper:({children:e})=>j(a,{children:e})});expect(e.current.state).toBe(`expanded`),expect(e.current.open).toBe(!0),expect(e.current.isMobile).toBe(!1),expect(e.current.openMobile).toBe(!1),k(()=>{e.current.toggleSidebar()}),expect(e.current.open).toBe(!1),expect(e.current.state).toBe(`collapsed`)})}),describe(`Sidebar`,()=>{it(`renders a plain wrapper when collapsible="none"`,()=>{let{container:e}=O(j(a,{children:j(y,{collapsible:`none`,children:`plain content`})})),t=e.querySelector(`[data-slot="sidebar"]`);expect(t).not.toBeNull(),expect(t.className).toContain(`w-(--sidebar-width)`),expect(t.getAttribute(`data-state`)).toBeNull(),expect(T.getByText(`plain content`)).not.toBeNull()}),it(`renders the desktop layout with gap/container/inner elements reflecting side/variant/state`,()=>{let{container:e}=O(j(a,{defaultOpen:!1,children:j(y,{side:`right`,variant:`floating`,collapsible:`icon`,children:`desktop content`})})),t=e.querySelector(`[data-slot="sidebar"]`);expect(t.getAttribute(`data-state`)).toBe(`collapsed`),expect(t.getAttribute(`data-collapsible`)).toBe(`icon`),expect(t.getAttribute(`data-variant`)).toBe(`floating`),expect(t.getAttribute(`data-side`)).toBe(`right`),expect(e.querySelector(`[data-slot="sidebar-gap"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-container"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-inner"]`)).not.toBeNull()}),it(`clears data-collapsible while expanded`,()=>{let{container:e}=O(j(a,{children:j(y,{collapsible:`icon`,children:`content`})}));expect(e.querySelector(`[data-slot="sidebar"]`)?.getAttribute(`data-collapsible`)).toBe(``)}),it(`is not rendered on mobile until openMobile is toggled, then renders inside a Drawer`,()=>{setTestViewportWidth(500);let{container:e,baseElement:n}=O(M(a,{children:[j(y,{children:j(`span`,{children:`mobile content`})}),j(t,{})]}));expect(e.querySelector(`[data-slot="sidebar"]`)).toBeNull(),expect(n.querySelector(`[data-slot="sidebar"]`)).toBeNull(),D.click(T.getByRole(`button`));let r=n.querySelector(`[data-slot="sidebar"]`);expect(r).not.toBeNull(),expect(r.getAttribute(`data-mobile`)).toBe(`true`),expect(T.getByText(`mobile content`)).not.toBeNull()})}),describe(`SidebarTrigger`,()=>{it(`renders with the sidebar-trigger slot and an accessible label`,()=>{let{container:e}=O(j(a,{children:j(t,{})}));expect(e.querySelector(`[data-slot="sidebar-trigger"]`)).not.toBeNull(),expect(T.getByRole(`button`,{name:`Toggle Sidebar`})).not.toBeNull()}),it(`calls a provided onClick handler in addition to toggling the sidebar`,()=>{let e=vi.fn();O(M(a,{children:[j(SidebarStateProbe,{}),j(t,{onClick:e})]})),D.click(T.getByRole(`button`)),expect(e).toHaveBeenCalledTimes(1),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`collapsed`)})}),describe(`SidebarRail`,()=>{it(`renders a rail button with the expected slot, label and tabIndex`,()=>{let{container:e}=O(j(a,{children:j(C,{})})),t=e.querySelector(`[data-slot="sidebar-rail"]`);expect(t).not.toBeNull(),expect(t.getAttribute(`aria-label`)).toBe(`Toggle Sidebar`),expect(t.getAttribute(`tabIndex`)).toBe(`-1`)}),it(`toggles the sidebar when clicked`,()=>{O(M(a,{children:[j(SidebarStateProbe,{}),j(C,{})]})),D.click(T.getByTitle(`Toggle Sidebar`)),expect(T.getByTestId(`probe`).getAttribute(`data-state`)).toBe(`collapsed`)})}),describe(`static layout subcomponents`,()=>{it(`renders SidebarInset as a main element`,()=>{let{container:e}=O(j(b,{children:`inset content`}));expect(e.querySelector(`[data-slot="sidebar-inset"]`)?.tagName).toBe(`MAIN`)}),it(`renders SidebarInput as a styled text input`,()=>{O(j(f,{placeholder:`Search`}));let e=T.getByPlaceholderText(`Search`);expect(e.getAttribute(`data-slot`)).toBe(`sidebar-input`),expect(e.className).toContain(`h-8`)}),it(`renders SidebarHeader, SidebarFooter, SidebarSeparator and SidebarContent with their slots`,()=>{let{container:e}=O(M(A,{children:[j(o,{children:`header`}),j(_,{children:`footer`}),j(n,{}),j(m,{children:`content`})]}));expect(e.querySelector(`[data-slot="sidebar-header"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-footer"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-separator"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-content"]`)).not.toBeNull()}),it(`renders SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarMenuItem, SidebarMenuBadge, SidebarMenuSub and SidebarMenuSubItem with their slots`,()=>{let{container:e}=O(j(d,{children:j(h,{children:j(s,{children:M(u,{children:[`item`,j(g,{children:`1`}),j(r,{children:j(w,{children:`sub item`})})]})})})}));expect(e.querySelector(`[data-slot="sidebar-group"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-group-content"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-menu"]`)?.tagName).toBe(`UL`),expect(e.querySelector(`[data-slot="sidebar-menu-item"]`)?.tagName).toBe(`LI`),expect(e.querySelector(`[data-slot="sidebar-menu-badge"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="sidebar-menu-sub"]`)?.tagName).toBe(`UL`),expect(e.querySelector(`[data-slot="sidebar-menu-sub-item"]`)?.tagName).toBe(`LI`)})}),describe(`SidebarGroupLabel`,()=>{it(`renders as a div by default`,()=>{let{container:e}=O(j(v,{children:`Label`}));expect(e.querySelector(`[data-slot="sidebar-group-label"]`)?.tagName).toBe(`DIV`)}),it(`renders as the child element when asChild is set`,()=>{let{container:e}=O(j(v,{asChild:!0,children:j(`span`,{children:`Label`})}));expect(e.querySelector(`[data-slot="sidebar-group-label"]`)?.tagName).toBe(`SPAN`)})}),describe(`SidebarGroupAction`,()=>{it(`renders as a button by default`,()=>{let{container:e}=O(j(i,{children:`Add`}));expect(e.querySelector(`[data-slot="sidebar-group-action"]`)?.tagName).toBe(`BUTTON`)}),it(`renders as the child element when asChild is set and forwards click handlers`,()=>{let e=vi.fn();O(j(i,{asChild:!0,onClick:e,children:j(`a`,{href:`#action`,children:`Add`})}));let t=T.getByText(`Add`);expect(t.tagName).toBe(`A`),D.click(t),expect(e).toHaveBeenCalledTimes(1)})}),describe(`SidebarMenuButton`,()=>{it(`renders default size/active data attributes`,()=>{let{container:e}=O(j(a,{children:j(p,{children:`Item`})})),t=e.querySelector(`[data-slot="sidebar-menu-button"]`);expect(t.getAttribute(`data-size`)).toBe(`md`),expect(t.getAttribute(`data-active`)).toBe(`false`)}),it(`reflects isActive and a custom size`,()=>{let{container:e}=O(j(a,{children:j(p,{isActive:!0,size:`lg`,children:`Item`})})),t=e.querySelector(`[data-slot="sidebar-menu-button"]`);expect(t.getAttribute(`data-active`)).toBe(`true`),expect(t.getAttribute(`data-size`)).toBe(`lg`)}),it(`renders as the child element when asChild is set`,()=>{O(j(a,{children:j(p,{asChild:!0,children:j(`a`,{href:`#item`,children:`Item`})})})),expect(T.getByRole(`link`,{name:`Item`})).not.toBeNull()}),it(`renders without a tooltip wrapper when no tooltip is provided`,()=>{let{container:e}=O(j(a,{children:j(p,{children:`Item`})}));expect(e.querySelector(`[data-slot="tooltip-trigger"]`)).toBeNull()}),it(`wraps the button in a Tooltip when a string tooltip is provided`,()=>{let{baseElement:t}=O(j(e,{children:j(a,{defaultOpen:!1,children:j(p,{tooltip:`Item tooltip`,children:`Item`})})}));expect(t.querySelector(`[data-slot="tooltip-content"]`)).toBeNull(),D.focus(T.getByText(`Item`)),expect(t.querySelector(`[data-slot="tooltip-content"]`)?.textContent).toBe(`Item tooltip`)}),it(`accepts an object tooltip with custom content props`,()=>{let{baseElement:t}=O(j(e,{children:j(a,{defaultOpen:!1,children:j(p,{tooltip:{children:`Custom tooltip`,side:`bottom`},children:`Item`})})}));D.focus(T.getByText(`Item`));let n=t.querySelector(`[data-slot="tooltip-content"]`);expect(n?.textContent).toBe(`Custom tooltip`),expect(n?.getAttribute(`data-side`)).toBe(`bottom`)}),it(`hides the tooltip content while expanded and shows it while collapsed on desktop`,()=>{let{baseElement:n}=O(j(e,{children:M(a,{defaultOpen:!0,children:[j(p,{tooltip:`Item tooltip`,children:`Item`}),j(t,{})]})}));D.focus(T.getByText(`Item`));let r=n.querySelector(`[data-slot="tooltip-content"]`);expect(r.hidden).toBe(!0),D.click(T.getByRole(`button`,{name:`Toggle Sidebar`})),expect(r.hidden).toBe(!1)})}),describe(`SidebarMenuAction`,()=>{it(`renders as a button with the menu-action slot`,()=>{let{container:e}=O(j(c,{children:`Action`}));expect(e.querySelector(`[data-slot="sidebar-menu-action"]`)?.tagName).toBe(`BUTTON`)}),it(`applies the showOnHover classes when requested`,()=>{let{container:e}=O(j(c,{showOnHover:!0,children:`Action`})),t=e.querySelector(`[data-slot="sidebar-menu-action"]`);expect(t.className).toContain(`md:opacity-0`)}),it(`renders as the child element when asChild is set`,()=>{O(j(c,{asChild:!0,children:j(`a`,{href:`#action`,children:`Action`})})),expect(T.getByRole(`link`,{name:`Action`})).not.toBeNull()})}),describe(`SidebarMenuSkeleton`,()=>{it(`renders a text placeholder without an icon by default`,()=>{let{container:e}=O(j(l,{}));expect(e.querySelector(`[data-sidebar="menu-skeleton-icon"]`)).toBeNull(),expect(e.querySelector(`[data-sidebar="menu-skeleton-text"]`)).not.toBeNull()}),it(`renders an icon skeleton when showIcon is set`,()=>{let{container:e}=O(j(l,{showIcon:!0}));expect(e.querySelector(`[data-sidebar="menu-skeleton-icon"]`)).not.toBeNull()}),it(`assigns a random text width between 50% and 90%`,()=>{let{container:e}=O(j(l,{})),t=e.querySelector(`[data-sidebar="menu-skeleton-text"]`),n=Number(t.style.getPropertyValue(`--skeleton-width`).replace(`%`,``));expect(n).toBeGreaterThanOrEqual(50),expect(n).toBeLessThanOrEqual(90)})}),describe(`SidebarMenuSubButton`,()=>{it(`renders as an anchor by default with size and active data attributes`,()=>{let{container:e}=O(j(x,{href:`#sub`,children:`Sub item`})),t=e.querySelector(`[data-slot="sidebar-menu-sub-button"]`);expect(t.tagName).toBe(`A`),expect(t.getAttribute(`data-size`)).toBe(`md`),expect(t.getAttribute(`data-active`)).toBe(`false`)}),it(`reflects isActive and a custom size`,()=>{let{container:e}=O(j(x,{isActive:!0,size:`sm`,children:`Sub item`})),t=e.querySelector(`[data-slot="sidebar-menu-sub-button"]`);expect(t.getAttribute(`data-active`)).toBe(`true`),expect(t.getAttribute(`data-size`)).toBe(`sm`)}),it(`renders as the child element when asChild is set`,()=>{O(j(x,{asChild:!0,children:j(`button`,{type:`button`,children:`Sub item`})})),expect(T.getByRole(`button`,{name:`Sub item`})).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=sidebar.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.spec.js","names":[],"sources":["../../src/components/sidebar.spec.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { act, fireEvent, render, renderHook, screen } from '@testing-library/react'\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar\n} from './sidebar'\nimport { TooltipProvider } from './tooltip'\n\n// jsdom does not implement ResizeObserver, which radix-ui's Popper-based Tooltip content\n// relies on for arrow sizing. Stub it so tooltip content can actually mount in tests.\nif (typeof globalThis.ResizeObserver === 'undefined') {\n class ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n\n globalThis.ResizeObserver = ResizeObserverStub as unknown as typeof ResizeObserver\n}\n\nfunction clearSidebarCookie() {\n // biome-ignore lint/suspicious/noDocumentCookie: Test helper resetting the cookie sidebar.tsx persists state to.\n document.cookie = 'sidebar_state=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/'\n}\n\nfunction readSidebarCookie() {\n return document.cookie\n .split('; ')\n .find((entry) => entry.startsWith('sidebar_state='))\n ?.split('=')[1]\n}\n\nfunction SidebarStateProbe() {\n const { state, open, isMobile, openMobile } = useSidebar()\n\n return (\n <div data-testid=\"probe\" data-state={state} data-open={open} data-mobile={isMobile} data-open-mobile={openMobile} />\n )\n}\n\nbeforeEach(() => {\n clearSidebarCookie()\n})\n\ndescribe('SidebarProvider', () => {\n it('renders its children', () => {\n render(\n <SidebarProvider>\n <div>sidebar content</div>\n </SidebarProvider>\n )\n\n expect(screen.getByText('sidebar content')).not.toBeNull()\n })\n\n it('renders a wrapper exposing the sidebar css variables and merges custom style/className', () => {\n const { container } = render(\n <SidebarProvider className=\"custom-wrapper\" style={{ '--custom': '1px' } as React.CSSProperties}>\n <div>content</div>\n </SidebarProvider>\n )\n\n const wrapper = container.querySelector('[data-slot=\"sidebar-wrapper\"]') as HTMLElement\n\n expect(wrapper).not.toBeNull()\n expect(wrapper.className).toContain('custom-wrapper')\n expect(wrapper.style.getPropertyValue('--sidebar-width')).toBe('16rem')\n expect(wrapper.style.getPropertyValue('--sidebar-width-icon')).toBe('3rem')\n expect(wrapper.style.getPropertyValue('--custom')).toBe('1px')\n })\n\n it('defaults to an expanded/open state', () => {\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n </SidebarProvider>\n )\n\n const probe = screen.getByTestId('probe')\n\n expect(probe.getAttribute('data-state')).toBe('expanded')\n expect(probe.getAttribute('data-open')).toBe('true')\n })\n\n it('honors defaultOpen={false}', () => {\n render(\n <SidebarProvider defaultOpen={false}>\n <SidebarStateProbe />\n </SidebarProvider>\n )\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('collapsed')\n })\n\n it('toggles open state via the trigger and persists it to the sidebar_state cookie', () => {\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n <SidebarTrigger />\n </SidebarProvider>\n )\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('expanded')\n\n fireEvent.click(screen.getByRole('button'))\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('collapsed')\n expect(readSidebarCookie()).toBe('false')\n\n fireEvent.click(screen.getByRole('button'))\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('expanded')\n expect(readSidebarCookie()).toBe('true')\n })\n\n it('supports a controlled open state via open/onOpenChange', () => {\n const onOpenChange = vi.fn()\n\n function Controlled() {\n const [open, setOpen] = React.useState(false)\n\n return (\n <SidebarProvider\n open={open}\n onOpenChange={(next) => {\n setOpen(next)\n onOpenChange(next)\n }}\n >\n <SidebarStateProbe />\n <SidebarTrigger />\n </SidebarProvider>\n )\n }\n\n render(<Controlled />)\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('collapsed')\n\n fireEvent.click(screen.getByRole('button'))\n\n expect(onOpenChange).toHaveBeenCalledWith(true)\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('expanded')\n expect(readSidebarCookie()).toBe('true')\n })\n\n it('toggles the sidebar with the Cmd/Ctrl+B keyboard shortcut', () => {\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n </SidebarProvider>\n )\n\n fireEvent.keyDown(window, { key: 'b', metaKey: true })\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('collapsed')\n\n fireEvent.keyDown(window, { key: 'b', ctrlKey: true })\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('expanded')\n })\n\n it('ignores the shortcut key without a meta/ctrl modifier', () => {\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n </SidebarProvider>\n )\n\n fireEvent.keyDown(window, { key: 'b' })\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('expanded')\n })\n\n it('reports isMobile from the current viewport width', () => {\n setTestViewportWidth(500)\n\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n </SidebarProvider>\n )\n\n const probe = screen.getByTestId('probe')\n\n expect(probe.getAttribute('data-mobile')).toBe('true')\n expect(probe.getAttribute('data-open-mobile')).toBe('false')\n })\n\n it('toggles openMobile instead of open on a mobile viewport, without writing the cookie', () => {\n setTestViewportWidth(500)\n\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n <SidebarTrigger />\n </SidebarProvider>\n )\n\n fireEvent.click(screen.getByRole('button'))\n\n const probe = screen.getByTestId('probe')\n\n expect(probe.getAttribute('data-open-mobile')).toBe('true')\n expect(probe.getAttribute('data-open')).toBe('true')\n expect(readSidebarCookie()).toBeUndefined()\n })\n})\n\ndescribe('useSidebar', () => {\n it('throws when used outside of a SidebarProvider', () => {\n expect(() => renderHook(() => useSidebar())).toThrow('useSidebar must be used within a SidebarProvider.')\n })\n\n it('exposes state, open, isMobile, openMobile and toggleSidebar to consumers', () => {\n const { result } = renderHook(() => useSidebar(), {\n wrapper: ({ children }) => <SidebarProvider>{children}</SidebarProvider>\n })\n\n expect(result.current.state).toBe('expanded')\n expect(result.current.open).toBe(true)\n expect(result.current.isMobile).toBe(false)\n expect(result.current.openMobile).toBe(false)\n\n act(() => {\n result.current.toggleSidebar()\n })\n\n expect(result.current.open).toBe(false)\n expect(result.current.state).toBe('collapsed')\n })\n})\n\ndescribe('Sidebar', () => {\n it('renders a plain wrapper when collapsible=\"none\"', () => {\n const { container } = render(\n <SidebarProvider>\n <Sidebar collapsible=\"none\">plain content</Sidebar>\n </SidebarProvider>\n )\n\n const sidebar = container.querySelector('[data-slot=\"sidebar\"]') as HTMLElement\n\n expect(sidebar).not.toBeNull()\n expect(sidebar.className).toContain('w-(--sidebar-width)')\n expect(sidebar.getAttribute('data-state')).toBeNull()\n expect(screen.getByText('plain content')).not.toBeNull()\n })\n\n it('renders the desktop layout with gap/container/inner elements reflecting side/variant/state', () => {\n const { container } = render(\n <SidebarProvider defaultOpen={false}>\n <Sidebar side=\"right\" variant=\"floating\" collapsible=\"icon\">\n desktop content\n </Sidebar>\n </SidebarProvider>\n )\n\n const sidebar = container.querySelector('[data-slot=\"sidebar\"]') as HTMLElement\n\n expect(sidebar.getAttribute('data-state')).toBe('collapsed')\n expect(sidebar.getAttribute('data-collapsible')).toBe('icon')\n expect(sidebar.getAttribute('data-variant')).toBe('floating')\n expect(sidebar.getAttribute('data-side')).toBe('right')\n expect(container.querySelector('[data-slot=\"sidebar-gap\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-container\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-inner\"]')).not.toBeNull()\n })\n\n it('clears data-collapsible while expanded', () => {\n const { container } = render(\n <SidebarProvider>\n <Sidebar collapsible=\"icon\">content</Sidebar>\n </SidebarProvider>\n )\n\n expect(container.querySelector('[data-slot=\"sidebar\"]')?.getAttribute('data-collapsible')).toBe('')\n })\n\n it('is not rendered on mobile until openMobile is toggled, then renders inside a Drawer', () => {\n setTestViewportWidth(500)\n\n const { container, baseElement } = render(\n <SidebarProvider>\n <Sidebar>\n <span>mobile content</span>\n </Sidebar>\n <SidebarTrigger />\n </SidebarProvider>\n )\n\n expect(container.querySelector('[data-slot=\"sidebar\"]')).toBeNull()\n expect(baseElement.querySelector('[data-slot=\"sidebar\"]')).toBeNull()\n\n fireEvent.click(screen.getByRole('button'))\n\n const mobileSidebar = baseElement.querySelector('[data-slot=\"sidebar\"]') as HTMLElement\n\n expect(mobileSidebar).not.toBeNull()\n expect(mobileSidebar.getAttribute('data-mobile')).toBe('true')\n expect(screen.getByText('mobile content')).not.toBeNull()\n })\n})\n\ndescribe('SidebarTrigger', () => {\n it('renders with the sidebar-trigger slot and an accessible label', () => {\n const { container } = render(\n <SidebarProvider>\n <SidebarTrigger />\n </SidebarProvider>\n )\n\n expect(container.querySelector('[data-slot=\"sidebar-trigger\"]')).not.toBeNull()\n expect(screen.getByRole('button', { name: 'Toggle Sidebar' })).not.toBeNull()\n })\n\n it('calls a provided onClick handler in addition to toggling the sidebar', () => {\n const handleClick = vi.fn()\n\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n <SidebarTrigger onClick={handleClick} />\n </SidebarProvider>\n )\n\n fireEvent.click(screen.getByRole('button'))\n\n expect(handleClick).toHaveBeenCalledTimes(1)\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('collapsed')\n })\n})\n\ndescribe('SidebarRail', () => {\n it('renders a rail button with the expected slot, label and tabIndex', () => {\n const { container } = render(\n <SidebarProvider>\n <SidebarRail />\n </SidebarProvider>\n )\n\n const rail = container.querySelector('[data-slot=\"sidebar-rail\"]') as HTMLElement\n\n expect(rail).not.toBeNull()\n expect(rail.getAttribute('aria-label')).toBe('Toggle Sidebar')\n expect(rail.getAttribute('tabIndex')).toBe('-1')\n })\n\n it('toggles the sidebar when clicked', () => {\n render(\n <SidebarProvider>\n <SidebarStateProbe />\n <SidebarRail />\n </SidebarProvider>\n )\n\n fireEvent.click(screen.getByTitle('Toggle Sidebar'))\n\n expect(screen.getByTestId('probe').getAttribute('data-state')).toBe('collapsed')\n })\n})\n\ndescribe('static layout subcomponents', () => {\n it('renders SidebarInset as a main element', () => {\n const { container } = render(<SidebarInset>inset content</SidebarInset>)\n\n expect(container.querySelector('[data-slot=\"sidebar-inset\"]')?.tagName).toBe('MAIN')\n })\n\n it('renders SidebarInput as a styled text input', () => {\n render(<SidebarInput placeholder=\"Search\" />)\n\n const input = screen.getByPlaceholderText('Search')\n\n expect(input.getAttribute('data-slot')).toBe('sidebar-input')\n expect(input.className).toContain('h-8')\n })\n\n it('renders SidebarHeader, SidebarFooter, SidebarSeparator and SidebarContent with their slots', () => {\n const { container } = render(\n <>\n <SidebarHeader>header</SidebarHeader>\n <SidebarFooter>footer</SidebarFooter>\n <SidebarSeparator />\n <SidebarContent>content</SidebarContent>\n </>\n )\n\n expect(container.querySelector('[data-slot=\"sidebar-header\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-footer\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-separator\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-content\"]')).not.toBeNull()\n })\n\n it('renders SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarMenuItem, SidebarMenuBadge, SidebarMenuSub and SidebarMenuSubItem with their slots', () => {\n const { container } = render(\n <SidebarGroup>\n <SidebarGroupContent>\n <SidebarMenu>\n <SidebarMenuItem>\n item\n <SidebarMenuBadge>1</SidebarMenuBadge>\n <SidebarMenuSub>\n <SidebarMenuSubItem>sub item</SidebarMenuSubItem>\n </SidebarMenuSub>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n )\n\n expect(container.querySelector('[data-slot=\"sidebar-group\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-group-content\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-menu\"]')?.tagName).toBe('UL')\n expect(container.querySelector('[data-slot=\"sidebar-menu-item\"]')?.tagName).toBe('LI')\n expect(container.querySelector('[data-slot=\"sidebar-menu-badge\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"sidebar-menu-sub\"]')?.tagName).toBe('UL')\n expect(container.querySelector('[data-slot=\"sidebar-menu-sub-item\"]')?.tagName).toBe('LI')\n })\n})\n\ndescribe('SidebarGroupLabel', () => {\n it('renders as a div by default', () => {\n const { container } = render(<SidebarGroupLabel>Label</SidebarGroupLabel>)\n\n expect(container.querySelector('[data-slot=\"sidebar-group-label\"]')?.tagName).toBe('DIV')\n })\n\n it('renders as the child element when asChild is set', () => {\n const { container } = render(\n <SidebarGroupLabel asChild>\n <span>Label</span>\n </SidebarGroupLabel>\n )\n\n expect(container.querySelector('[data-slot=\"sidebar-group-label\"]')?.tagName).toBe('SPAN')\n })\n})\n\ndescribe('SidebarGroupAction', () => {\n it('renders as a button by default', () => {\n const { container } = render(<SidebarGroupAction>Add</SidebarGroupAction>)\n\n expect(container.querySelector('[data-slot=\"sidebar-group-action\"]')?.tagName).toBe('BUTTON')\n })\n\n it('renders as the child element when asChild is set and forwards click handlers', () => {\n const handleClick = vi.fn()\n\n render(\n <SidebarGroupAction asChild onClick={handleClick}>\n <a href=\"#action\">Add</a>\n </SidebarGroupAction>\n )\n\n const action = screen.getByText('Add')\n\n expect(action.tagName).toBe('A')\n\n fireEvent.click(action)\n\n expect(handleClick).toHaveBeenCalledTimes(1)\n })\n})\n\ndescribe('SidebarMenuButton', () => {\n it('renders default size/active data attributes', () => {\n const { container } = render(\n <SidebarProvider>\n <SidebarMenuButton>Item</SidebarMenuButton>\n </SidebarProvider>\n )\n\n const button = container.querySelector('[data-slot=\"sidebar-menu-button\"]') as HTMLElement\n\n expect(button.getAttribute('data-size')).toBe('md')\n expect(button.getAttribute('data-active')).toBe('false')\n })\n\n it('reflects isActive and a custom size', () => {\n const { container } = render(\n <SidebarProvider>\n <SidebarMenuButton isActive size=\"lg\">\n Item\n </SidebarMenuButton>\n </SidebarProvider>\n )\n\n const button = container.querySelector('[data-slot=\"sidebar-menu-button\"]') as HTMLElement\n\n expect(button.getAttribute('data-active')).toBe('true')\n expect(button.getAttribute('data-size')).toBe('lg')\n })\n\n it('renders as the child element when asChild is set', () => {\n render(\n <SidebarProvider>\n <SidebarMenuButton asChild>\n <a href=\"#item\">Item</a>\n </SidebarMenuButton>\n </SidebarProvider>\n )\n\n expect(screen.getByRole('link', { name: 'Item' })).not.toBeNull()\n })\n\n it('renders without a tooltip wrapper when no tooltip is provided', () => {\n const { container } = render(\n <SidebarProvider>\n <SidebarMenuButton>Item</SidebarMenuButton>\n </SidebarProvider>\n )\n\n expect(container.querySelector('[data-slot=\"tooltip-trigger\"]')).toBeNull()\n })\n\n it('wraps the button in a Tooltip when a string tooltip is provided', () => {\n const { baseElement } = render(\n <TooltipProvider>\n <SidebarProvider defaultOpen={false}>\n <SidebarMenuButton tooltip=\"Item tooltip\">Item</SidebarMenuButton>\n </SidebarProvider>\n </TooltipProvider>\n )\n\n expect(baseElement.querySelector('[data-slot=\"tooltip-content\"]')).toBeNull()\n\n fireEvent.focus(screen.getByText('Item'))\n\n expect(baseElement.querySelector('[data-slot=\"tooltip-content\"]')?.textContent).toBe('Item tooltip')\n })\n\n it('accepts an object tooltip with custom content props', () => {\n const { baseElement } = render(\n <TooltipProvider>\n <SidebarProvider defaultOpen={false}>\n <SidebarMenuButton tooltip={{ children: 'Custom tooltip', side: 'bottom' }}>Item</SidebarMenuButton>\n </SidebarProvider>\n </TooltipProvider>\n )\n\n fireEvent.focus(screen.getByText('Item'))\n\n const tooltip = baseElement.querySelector('[data-slot=\"tooltip-content\"]')\n\n expect(tooltip?.textContent).toBe('Custom tooltip')\n expect(tooltip?.getAttribute('data-side')).toBe('bottom')\n })\n\n it('hides the tooltip content while expanded and shows it while collapsed on desktop', () => {\n const { baseElement } = render(\n <TooltipProvider>\n <SidebarProvider defaultOpen>\n <SidebarMenuButton tooltip=\"Item tooltip\">Item</SidebarMenuButton>\n <SidebarTrigger />\n </SidebarProvider>\n </TooltipProvider>\n )\n\n fireEvent.focus(screen.getByText('Item'))\n\n const tooltip = baseElement.querySelector('[data-slot=\"tooltip-content\"]') as HTMLElement\n\n expect(tooltip.hidden).toBe(true)\n\n fireEvent.click(screen.getByRole('button', { name: 'Toggle Sidebar' }))\n\n expect(tooltip.hidden).toBe(false)\n })\n})\n\ndescribe('SidebarMenuAction', () => {\n it('renders as a button with the menu-action slot', () => {\n const { container } = render(<SidebarMenuAction>Action</SidebarMenuAction>)\n\n expect(container.querySelector('[data-slot=\"sidebar-menu-action\"]')?.tagName).toBe('BUTTON')\n })\n\n it('applies the showOnHover classes when requested', () => {\n const { container } = render(<SidebarMenuAction showOnHover>Action</SidebarMenuAction>)\n\n const action = container.querySelector('[data-slot=\"sidebar-menu-action\"]') as HTMLElement\n\n expect(action.className).toContain('md:opacity-0')\n })\n\n it('renders as the child element when asChild is set', () => {\n render(\n <SidebarMenuAction asChild>\n <a href=\"#action\">Action</a>\n </SidebarMenuAction>\n )\n\n expect(screen.getByRole('link', { name: 'Action' })).not.toBeNull()\n })\n})\n\ndescribe('SidebarMenuSkeleton', () => {\n it('renders a text placeholder without an icon by default', () => {\n const { container } = render(<SidebarMenuSkeleton />)\n\n expect(container.querySelector('[data-sidebar=\"menu-skeleton-icon\"]')).toBeNull()\n expect(container.querySelector('[data-sidebar=\"menu-skeleton-text\"]')).not.toBeNull()\n })\n\n it('renders an icon skeleton when showIcon is set', () => {\n const { container } = render(<SidebarMenuSkeleton showIcon />)\n\n expect(container.querySelector('[data-sidebar=\"menu-skeleton-icon\"]')).not.toBeNull()\n })\n\n it('assigns a random text width between 50% and 90%', () => {\n const { container } = render(<SidebarMenuSkeleton />)\n\n const text = container.querySelector('[data-sidebar=\"menu-skeleton-text\"]') as HTMLElement\n const width = Number(text.style.getPropertyValue('--skeleton-width').replace('%', ''))\n\n expect(width).toBeGreaterThanOrEqual(50)\n expect(width).toBeLessThanOrEqual(90)\n })\n})\n\ndescribe('SidebarMenuSubButton', () => {\n it('renders as an anchor by default with size and active data attributes', () => {\n const { container } = render(<SidebarMenuSubButton href=\"#sub\">Sub item</SidebarMenuSubButton>)\n\n const button = container.querySelector('[data-slot=\"sidebar-menu-sub-button\"]') as HTMLElement\n\n expect(button.tagName).toBe('A')\n expect(button.getAttribute('data-size')).toBe('md')\n expect(button.getAttribute('data-active')).toBe('false')\n })\n\n it('reflects isActive and a custom size', () => {\n const { container } = render(\n <SidebarMenuSubButton isActive size=\"sm\">\n Sub item\n </SidebarMenuSubButton>\n )\n\n const button = container.querySelector('[data-slot=\"sidebar-menu-sub-button\"]') as HTMLElement\n\n expect(button.getAttribute('data-active')).toBe('true')\n expect(button.getAttribute('data-size')).toBe('sm')\n })\n\n it('renders as the child element when asChild is set', () => {\n render(\n <SidebarMenuSubButton asChild>\n <button type=\"button\">Sub item</button>\n </SidebarMenuSubButton>\n )\n\n expect(screen.getByRole('button', { name: 'Sub item' })).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"../simple-grid-9EryoUWI.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`SimpleGrid`,()=>{it(`renders with data-slot, base grid classes and a single default column`,()=>{let{container:r}=t(n(e,{})),i=r.querySelector(`[data-slot="simple-grid"]`);expect(i).not.toBeNull(),expect(i.className).toContain(`grid`),expect(i.className).toContain(`min-w-0`),expect(i.style.getPropertyValue(`--simple-grid-cols`)).toBe(`1`),expect(i.style.getPropertyValue(`--simple-grid-gap`)).toBe(`0px`)}),it(`sets the cols and gap css variables from the cols and gap props`,()=>{let{container:r}=t(n(e,{cols:3,gap:`lg`})),i=r.querySelector(`[data-slot="simple-grid"]`);expect(i.style.getPropertyValue(`--simple-grid-cols`)).toBe(`3`),expect(i.style.getPropertyValue(`--simple-grid-gap`)).toBe(`calc(var(--spacing) * 6)`),expect(i.style.getPropertyValue(`--simple-grid-row-gap`)).toBe(`var(--simple-grid-gap)`),expect(i.style.getPropertyValue(`--simple-grid-column-gap`)).toBe(`var(--simple-grid-gap)`)}),it(`overrides row and column gaps independently from gap`,()=>{let{container:r}=t(n(e,{gap:`sm`,rowGap:`xl`,columnGap:`xs`})),i=r.querySelector(`[data-slot="simple-grid"]`);expect(i.style.getPropertyValue(`--simple-grid-gap`)).toBe(`calc(var(--spacing) * 2)`),expect(i.style.getPropertyValue(`--simple-grid-row-gap`)).toBe(`calc(var(--spacing) * 8)`),expect(i.style.getPropertyValue(`--simple-grid-column-gap`)).toBe(`calc(var(--spacing) * 1)`)}),it(`merges a custom className with the base classes`,()=>{let{container:r}=t(n(e,{className:`custom-grid`}));expect(r.querySelector(`[data-slot="simple-grid"]`)?.className).toContain(`custom-grid`)}),it(`forwards ref to the underlying div element`,()=>{let r={current:null};t(n(e,{ref:r})),expect(r.current).toBeInstanceOf(HTMLDivElement)})});
|
|
2
|
-
//# sourceMappingURL=simple-grid.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simple-grid.spec.js","names":[],"sources":["../../src/components/simple-grid.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { SimpleGrid } from './simple-grid'\n\ndescribe('SimpleGrid', () => {\n it('renders with data-slot, base grid classes and a single default column', () => {\n const { container } = render(<SimpleGrid />)\n\n const grid = container.querySelector('[data-slot=\"simple-grid\"]') as HTMLElement\n\n expect(grid).not.toBeNull()\n expect(grid.className).toContain('grid')\n expect(grid.className).toContain('min-w-0')\n expect(grid.style.getPropertyValue('--simple-grid-cols')).toBe('1')\n expect(grid.style.getPropertyValue('--simple-grid-gap')).toBe('0px')\n })\n\n it('sets the cols and gap css variables from the cols and gap props', () => {\n const { container } = render(<SimpleGrid cols={3} gap=\"lg\" />)\n\n const grid = container.querySelector('[data-slot=\"simple-grid\"]') as HTMLElement\n\n expect(grid.style.getPropertyValue('--simple-grid-cols')).toBe('3')\n expect(grid.style.getPropertyValue('--simple-grid-gap')).toBe('calc(var(--spacing) * 6)')\n expect(grid.style.getPropertyValue('--simple-grid-row-gap')).toBe('var(--simple-grid-gap)')\n expect(grid.style.getPropertyValue('--simple-grid-column-gap')).toBe('var(--simple-grid-gap)')\n })\n\n it('overrides row and column gaps independently from gap', () => {\n const { container } = render(<SimpleGrid gap=\"sm\" rowGap=\"xl\" columnGap=\"xs\" />)\n\n const grid = container.querySelector('[data-slot=\"simple-grid\"]') as HTMLElement\n\n expect(grid.style.getPropertyValue('--simple-grid-gap')).toBe('calc(var(--spacing) * 2)')\n expect(grid.style.getPropertyValue('--simple-grid-row-gap')).toBe('calc(var(--spacing) * 8)')\n expect(grid.style.getPropertyValue('--simple-grid-column-gap')).toBe('calc(var(--spacing) * 1)')\n })\n\n it('merges a custom className with the base classes', () => {\n const { container } = render(<SimpleGrid className=\"custom-grid\" />)\n\n expect(container.querySelector('[data-slot=\"simple-grid\"]')?.className).toContain('custom-grid')\n })\n\n it('forwards ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<SimpleGrid ref={ref} />)\n\n expect(ref.current).toBeInstanceOf(HTMLDivElement)\n })\n})\n"],"mappings":"4KAIA,SAAS,iBAAoB,CAC3B,GAAG,4EAA+E,CAChF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAa,CAAA,CAAC,EAErC,EAAO,EAAU,cAAc,2BAA2B,EAEhE,OAAO,CAAI,CAAC,CAAC,IAAI,SAAS,EAC1B,OAAO,EAAK,SAAS,CAAC,CAAC,UAAU,MAAM,EACvC,OAAO,EAAK,SAAS,CAAC,CAAC,UAAU,SAAS,EAC1C,OAAO,EAAK,MAAM,iBAAiB,oBAAoB,CAAC,CAAC,CAAC,KAAK,GAAG,EAClE,OAAO,EAAK,MAAM,iBAAiB,mBAAmB,CAAC,CAAC,CAAC,KAAK,KAAK,CACrE,CAAC,EAED,GAAG,sEAAyE,CAC1E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAY,KAAM,EAAG,IAAI,IAAM,CAAA,CAAC,EAEvD,EAAO,EAAU,cAAc,2BAA2B,EAEhE,OAAO,EAAK,MAAM,iBAAiB,oBAAoB,CAAC,CAAC,CAAC,KAAK,GAAG,EAClE,OAAO,EAAK,MAAM,iBAAiB,mBAAmB,CAAC,CAAC,CAAC,KAAK,0BAA0B,EACxF,OAAO,EAAK,MAAM,iBAAiB,uBAAuB,CAAC,CAAC,CAAC,KAAK,wBAAwB,EAC1F,OAAO,EAAK,MAAM,iBAAiB,0BAA0B,CAAC,CAAC,CAAC,KAAK,wBAAwB,CAC/F,CAAC,EAED,GAAG,2DAA8D,CAC/D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAY,IAAI,KAAK,OAAO,KAAK,UAAU,IAAM,CAAA,CAAC,EAEzE,EAAO,EAAU,cAAc,2BAA2B,EAEhE,OAAO,EAAK,MAAM,iBAAiB,mBAAmB,CAAC,CAAC,CAAC,KAAK,0BAA0B,EACxF,OAAO,EAAK,MAAM,iBAAiB,uBAAuB,CAAC,CAAC,CAAC,KAAK,0BAA0B,EAC5F,OAAO,EAAK,MAAM,iBAAiB,0BAA0B,CAAC,CAAC,CAAC,KAAK,0BAA0B,CACjG,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAY,UAAU,aAAe,CAAA,CAAC,EAEnE,OAAO,EAAU,cAAc,2BAA2B,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,aAAa,CACjG,CAAC,EAED,GAAG,iDAAoD,CACrD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAiB,KAAM,CAAA,CAAC,EAE/B,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,cAAc,CACnD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../skeleton-Cn3zBJRe.js";import{a as t,r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r}from"react/jsx-runtime";describe(`Skeleton`,()=>{it(`renders the legacy placeholder when children are not provided`,()=>{let{container:t}=n(r(e,{className:`h-4 w-48`})),i=t.querySelector(`[data-slot="skeleton"]`);expect(i).not.toBeNull(),expect(i?.className).toContain(`bg-muted`),expect(i?.className).toContain(`animate-pulse`),expect(i?.className).toContain(`h-4`),expect(t.querySelector(`[data-slot="skeleton-overlay"]`)).toBeNull()}),it(`keeps children in the DOM and renders an overlay when visible`,()=>{let{container:i}=n(r(e,{visible:!0,children:r(`button`,{type:`button`,children:`Save changes`})})),a=i.querySelector(`[data-slot="skeleton-content"]`),o=i.querySelector(`[data-slot="skeleton-overlay"]`);expect(t.getByRole(`button`,{hidden:!0,name:`Save changes`})).not.toBeNull(),expect(a?.className).toContain(`invisible`),expect(a?.getAttribute(`aria-hidden`)).toBe(`true`),expect(o).not.toBeNull(),expect(o?.className).toContain(`absolute`),expect(o?.className).toContain(`inset-0`)}),it(`shows children and does not render an overlay when hidden`,()=>{let{container:i}=n(r(e,{visible:!1,children:r(`button`,{type:`button`,children:`Save changes`})})),a=i.querySelector(`[data-slot="skeleton-content"]`);expect(t.getByRole(`button`,{name:`Save changes`})).not.toBeNull(),expect(a?.className).not.toContain(`invisible`),expect(a?.getAttribute(`aria-hidden`)).toBeNull(),expect(i.querySelector(`[data-slot="skeleton-overlay"]`)).toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=skeleton.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.spec.js","names":[],"sources":["../../src/components/skeleton.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Skeleton } from './skeleton'\n\ndescribe('Skeleton', () => {\n it('renders the legacy placeholder when children are not provided', () => {\n const { container } = render(<Skeleton className=\"h-4 w-48\" />)\n\n const skeleton = container.querySelector('[data-slot=\"skeleton\"]')\n\n expect(skeleton).not.toBeNull()\n expect(skeleton?.className).toContain('bg-muted')\n expect(skeleton?.className).toContain('animate-pulse')\n expect(skeleton?.className).toContain('h-4')\n expect(container.querySelector('[data-slot=\"skeleton-overlay\"]')).toBeNull()\n })\n\n it('keeps children in the DOM and renders an overlay when visible', () => {\n const { container } = render(\n <Skeleton visible>\n <button type=\"button\">Save changes</button>\n </Skeleton>\n )\n\n const content = container.querySelector('[data-slot=\"skeleton-content\"]')\n const overlay = container.querySelector('[data-slot=\"skeleton-overlay\"]')\n\n expect(screen.getByRole('button', { hidden: true, name: 'Save changes' })).not.toBeNull()\n expect(content?.className).toContain('invisible')\n expect(content?.getAttribute('aria-hidden')).toBe('true')\n expect(overlay).not.toBeNull()\n expect(overlay?.className).toContain('absolute')\n expect(overlay?.className).toContain('inset-0')\n })\n\n it('shows children and does not render an overlay when hidden', () => {\n const { container } = render(\n <Skeleton visible={false}>\n <button type=\"button\">Save changes</button>\n </Skeleton>\n )\n\n const content = container.querySelector('[data-slot=\"skeleton-content\"]')\n\n expect(screen.getByRole('button', { name: 'Save changes' })).not.toBeNull()\n expect(content?.className).not.toContain('invisible')\n expect(content?.getAttribute('aria-hidden')).toBeNull()\n expect(container.querySelector('[data-slot=\"skeleton-overlay\"]')).toBeNull()\n })\n})\n"],"mappings":"gLAIA,SAAS,eAAkB,CACzB,GAAG,oEAAuE,CACxE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,UAAU,UAAY,CAAA,CAAC,EAExD,EAAW,EAAU,cAAc,wBAAwB,EAEjE,OAAO,CAAQ,CAAC,CAAC,IAAI,SAAS,EAC9B,OAAO,GAAU,SAAS,CAAC,CAAC,UAAU,UAAU,EAChD,OAAO,GAAU,SAAS,CAAC,CAAC,UAAU,eAAe,EACrD,OAAO,GAAU,SAAS,CAAC,CAAC,UAAU,KAAK,EAC3C,OAAO,EAAU,cAAc,gCAAgC,CAAC,CAAC,CAAC,SAAS,CAC7E,CAAC,EAED,GAAG,oEAAuE,CACxE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAU,QAAA,GACR,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,cAAoB,CAAA,CAClC,CAAA,CACZ,EAEM,EAAU,EAAU,cAAc,gCAAgC,EAClE,EAAU,EAAU,cAAc,gCAAgC,EAExE,OAAO,EAAO,UAAU,SAAU,CAAE,OAAQ,GAAM,KAAM,cAAe,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EACxF,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,WAAW,EAChD,OAAO,GAAS,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,EACxD,OAAO,CAAO,CAAC,CAAC,IAAI,SAAS,EAC7B,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,UAAU,EAC/C,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,SAAS,CAChD,CAAC,EAED,GAAG,gEAAmE,CACpE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAU,QAAS,GACjB,SAAA,EAAC,SAAD,CAAQ,KAAK,SAAS,SAAA,cAAoB,CAAA,CAClC,CAAA,CACZ,EAEM,EAAU,EAAU,cAAc,gCAAgC,EAExE,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,cAAe,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAC1E,OAAO,GAAS,SAAS,CAAC,CAAC,IAAI,UAAU,WAAW,EACpD,OAAO,GAAS,aAAa,aAAa,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAU,cAAc,gCAAgC,CAAC,CAAC,CAAC,SAAS,CAC7E,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{t as n}from"../slider-CC-gQawq.js";import{r}from"../react.esm-dE9nuHcL.js";import{jsx as i,jsxs as a}from"react/jsx-runtime";var ResizeObserverStub=class{observe(){}unobserve(){}disconnect(){}};globalThis.ResizeObserver=ResizeObserverStub,describe(`Slider`,()=>{it(`renders the track, range and one thumb per default min/max value`,()=>{let{container:e}=r(i(n,{}));expect(e.querySelector(`[data-slot="slider"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="slider-track"]`)).not.toBeNull(),expect(e.querySelector(`[data-slot="slider-range"]`)).not.toBeNull(),expect(e.querySelectorAll(`[data-slot="slider-thumb"]`)).toHaveLength(2)}),it(`renders a single thumb when defaultValue has one value`,()=>{let{container:e}=r(i(n,{defaultValue:[40]}));expect(e.querySelectorAll(`[data-slot="slider-thumb"]`)).toHaveLength(1)}),it(`renders one thumb per value when the value prop is controlled`,()=>{let{container:e}=r(i(n,{value:[10,50,90],onValueChange:()=>{}}));expect(e.querySelectorAll(`[data-slot="slider-thumb"]`)).toHaveLength(3)}),it(`assigns an explicit id to the root element`,()=>{let{container:e}=r(i(n,{id:`volume`}));expect(e.querySelector(`[data-slot="slider"]`)?.getAttribute(`id`)).toBe(`volume`)}),it(`wires the field control id when rendered inside Field`,()=>{let{container:o}=r(a(t,{children:[i(e,{children:`Volume`}),i(n,{})]})),s=o.querySelector(`[data-slot="field-label"]`),c=o.querySelector(`[data-slot="slider"]`);expect(s?.getAttribute(`for`)).toBe(c?.getAttribute(`id`)),expect(c?.getAttribute(`id`)).toBeTruthy()}),it(`merges a custom className onto the root`,()=>{let{container:e}=r(i(n,{className:`custom-slider`}));expect(e.querySelector(`[data-slot="slider"]`)?.className).toContain(`custom-slider`)})});
|
|
2
|
-
//# sourceMappingURL=slider.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slider.spec.js","names":[],"sources":["../../src/components/slider.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nclass ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n}\n\nglobalThis.ResizeObserver = ResizeObserverStub as unknown as typeof ResizeObserver\n\nimport { Field, FieldLabel } from './field'\nimport { Slider } from './slider'\n\ndescribe('Slider', () => {\n it('renders the track, range and one thumb per default min/max value', () => {\n const { container } = render(<Slider />)\n\n expect(container.querySelector('[data-slot=\"slider\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"slider-track\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"slider-range\"]')).not.toBeNull()\n expect(container.querySelectorAll('[data-slot=\"slider-thumb\"]')).toHaveLength(2)\n })\n\n it('renders a single thumb when defaultValue has one value', () => {\n const { container } = render(<Slider defaultValue={[40]} />)\n\n expect(container.querySelectorAll('[data-slot=\"slider-thumb\"]')).toHaveLength(1)\n })\n\n it('renders one thumb per value when the value prop is controlled', () => {\n const { container } = render(<Slider value={[10, 50, 90]} onValueChange={() => {}} />)\n\n expect(container.querySelectorAll('[data-slot=\"slider-thumb\"]')).toHaveLength(3)\n })\n\n it('assigns an explicit id to the root element', () => {\n const { container } = render(<Slider id=\"volume\" />)\n\n expect(container.querySelector('[data-slot=\"slider\"]')?.getAttribute('id')).toBe('volume')\n })\n\n it('wires the field control id when rendered inside Field', () => {\n const { container } = render(\n <Field>\n <FieldLabel>Volume</FieldLabel>\n <Slider />\n </Field>\n )\n\n const label = container.querySelector('[data-slot=\"field-label\"]')\n const slider = container.querySelector('[data-slot=\"slider\"]')\n\n expect(label?.getAttribute('for')).toBe(slider?.getAttribute('id'))\n expect(slider?.getAttribute('id')).toBeTruthy()\n })\n\n it('merges a custom className onto the root', () => {\n const { container } = render(<Slider className=\"custom-slider\" />)\n\n expect(container.querySelector('[data-slot=\"slider\"]')?.className).toContain('custom-slider')\n })\n})\n"],"mappings":"uNAEA,IAAM,mBAAN,KAAyB,CACvB,SAAU,CAAC,CACX,WAAY,CAAC,CACb,YAAa,CAAC,CAChB,EAEA,WAAW,eAAiB,mBAK5B,SAAS,aAAgB,CACvB,GAAG,uEAA0E,CAC3E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAS,CAAA,CAAC,EAEvC,OAAO,EAAU,cAAc,sBAAsB,CAAC,CAAC,CAAC,IAAI,SAAS,EACrE,OAAO,EAAU,cAAc,4BAA4B,CAAC,CAAC,CAAC,IAAI,SAAS,EAC3E,OAAO,EAAU,cAAc,4BAA4B,CAAC,CAAC,CAAC,IAAI,SAAS,EAC3E,OAAO,EAAU,iBAAiB,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CACjF,CAAC,EAED,GAAG,6DAAgE,CACjE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,aAAc,CAAC,EAAE,CAAI,CAAA,CAAC,EAE3D,OAAO,EAAU,iBAAiB,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CACjF,CAAC,EAED,GAAG,oEAAuE,CACxE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,MAAO,CAAC,GAAI,GAAI,EAAE,EAAG,kBAAqB,CAAC,CAAI,CAAA,CAAC,EAErF,OAAO,EAAU,iBAAiB,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CACjF,CAAC,EAED,GAAG,iDAAoD,CACrD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,GAAG,QAAU,CAAA,CAAC,EAEnD,OAAO,EAAU,cAAc,sBAAsB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC3F,CAAC,EAED,GAAG,4DAA+D,CAChE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,QAAkB,CAAA,EAC9B,EAAC,EAAD,CAAS,CAAA,CACJ,CAAA,CAAA,CACT,EAEM,EAAQ,EAAU,cAAc,2BAA2B,EAC3D,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAO,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,GAAQ,aAAa,IAAI,CAAC,EAClE,OAAO,GAAQ,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CAChD,CAAC,EAED,GAAG,8CAAiD,CAClD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,UAAU,eAAiB,CAAA,CAAC,EAEjE,OAAO,EAAU,cAAc,sBAAsB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,eAAe,CAC9F,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{r as e}from"../react.esm-dE9nuHcL.js";import{jsx as t}from"react/jsx-runtime";const{SonnerMock:n,useThemeMock:r}=vi.hoisted(()=>({SonnerMock:vi.fn(e=>null),useThemeMock:vi.fn(()=>({theme:`system`}))}));vi.mock(`sonner`,()=>({Toaster:n,toast:{message:vi.fn()}})),vi.mock(`next-themes`,()=>({useTheme:r}));const{Toaster:i,toast:a}=await import(`./sonner.js`);function lastSonnerProps(){let e=n.mock.calls.at(-1)?.[0];if(!e)throw Error(`Toaster (mocked Sonner) was not rendered`);return e}describe(`Toaster`,()=>{it(`defaults to the system theme when next-themes reports none`,()=>{r.mockReturnValueOnce({theme:void 0}),e(t(i,{})),expect(lastSonnerProps().theme).toBe(`system`)}),it(`forwards the resolved theme from next-themes`,()=>{r.mockReturnValueOnce({theme:`dark`}),e(t(i,{})),expect(lastSonnerProps().theme).toBe(`dark`)}),it(`configures richColors, base className, and the CSS variable style block`,()=>{e(t(i,{}));let n=lastSonnerProps();expect(n.richColors).toBe(!0),expect(n.className).toBe(`toaster group`),expect(n.style[`--normal-bg`]).toBe(`var(--popover)`),expect(n.style[`--normal-text`]).toBe(`var(--popover-foreground)`),expect(n.style[`--normal-border`]).toBe(`var(--border)`),expect(n.style[`--border-radius`]).toBe(`var(--radius)`)}),it(`provides an icon for every toast type`,()=>{e(t(i,{}));let{icons:n}=lastSonnerProps();for(let e of[`success`,`info`,`warning`,`error`,`loading`])expect(n?.[e]).toBeTruthy()}),it(`sets the shared toast className via toastOptions`,()=>{e(t(i,{})),expect(lastSonnerProps().toastOptions?.classNames?.toast).toBe(`cn-toast`)}),it(`lets consumer props override the defaults through prop spreading`,()=>{e(t(i,{position:`top-center`,richColors:!1}));let n=lastSonnerProps();expect(n.position).toBe(`top-center`),expect(n.richColors).toBe(!1)}),it(`re-exports the sonner toast function`,()=>{expect(a).toBeDefined()})});
|
|
2
|
-
//# sourceMappingURL=sonner.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sonner.spec.js","names":[],"sources":["../../src/components/sonner.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\ntype SonnerProps = {\n theme?: string\n richColors?: boolean\n className?: string\n style?: Record<string, string>\n icons?: Record<string, unknown>\n toastOptions?: { classNames?: { toast?: string } }\n position?: string\n [key: string]: unknown\n}\n\nconst { SonnerMock, useThemeMock } = vi.hoisted(() => ({\n SonnerMock: vi.fn((_props?: SonnerProps) => null),\n useThemeMock: vi.fn((): { theme?: string } => ({ theme: 'system' }))\n}))\n\nvi.mock('sonner', () => ({\n Toaster: SonnerMock,\n toast: { message: vi.fn() }\n}))\n\nvi.mock('next-themes', () => ({\n useTheme: useThemeMock\n}))\n\nconst { Toaster, toast } = await import('./sonner')\n\nfunction lastSonnerProps(): SonnerProps {\n const props = SonnerMock.mock.calls.at(-1)?.[0]\n\n if (!props) {\n throw new Error('Toaster (mocked Sonner) was not rendered')\n }\n\n return props\n}\n\ndescribe('Toaster', () => {\n it('defaults to the system theme when next-themes reports none', () => {\n useThemeMock.mockReturnValueOnce({ theme: undefined })\n\n render(<Toaster />)\n\n expect(lastSonnerProps().theme).toBe('system')\n })\n\n it('forwards the resolved theme from next-themes', () => {\n useThemeMock.mockReturnValueOnce({ theme: 'dark' })\n\n render(<Toaster />)\n\n expect(lastSonnerProps().theme).toBe('dark')\n })\n\n it('configures richColors, base className, and the CSS variable style block', () => {\n render(<Toaster />)\n\n const props = lastSonnerProps()\n\n expect(props.richColors).toBe(true)\n expect(props.className).toBe('toaster group')\n expect(props.style!['--normal-bg']).toBe('var(--popover)')\n expect(props.style!['--normal-text']).toBe('var(--popover-foreground)')\n expect(props.style!['--normal-border']).toBe('var(--border)')\n expect(props.style!['--border-radius']).toBe('var(--radius)')\n })\n\n it('provides an icon for every toast type', () => {\n render(<Toaster />)\n\n const { icons } = lastSonnerProps()\n\n for (const key of ['success', 'info', 'warning', 'error', 'loading']) {\n expect(icons?.[key]).toBeTruthy()\n }\n })\n\n it('sets the shared toast className via toastOptions', () => {\n render(<Toaster />)\n\n expect(lastSonnerProps().toastOptions?.classNames?.toast).toBe('cn-toast')\n })\n\n it('lets consumer props override the defaults through prop spreading', () => {\n render(<Toaster position=\"top-center\" richColors={false} />)\n\n const props = lastSonnerProps()\n\n expect(props.position).toBe('top-center')\n expect(props.richColors).toBe(false)\n })\n\n it('re-exports the sonner toast function', () => {\n expect(toast).toBeDefined()\n })\n})\n"],"mappings":"6HAaA,KAAM,CAAE,aAAY,gBAAiB,GAAG,aAAe,CACrD,WAAY,GAAG,GAAI,GAAyB,IAAI,EAChD,aAAc,GAAG,QAA8B,CAAE,MAAO,QAAS,EAAE,CACrE,EAAE,EAEF,GAAG,KAAK,cAAiB,CACvB,QAAS,EACT,MAAO,CAAE,QAAS,GAAG,GAAG,CAAE,CAC5B,EAAE,EAEF,GAAG,KAAK,mBAAsB,CAC5B,SAAU,CACZ,EAAE,EAEF,KAAM,CAAE,UAAS,SAAU,MAAM,OAAO,eAExC,SAAS,iBAA+B,CACtC,IAAM,EAAQ,EAAW,KAAK,MAAM,GAAG,EAAE,CAAC,GAAG,GAE7C,GAAI,CAAC,EACH,MAAU,MAAM,0CAA0C,EAG5D,OAAO,CACT,CAEA,SAAS,cAAiB,CACxB,GAAG,iEAAoE,CACrE,EAAa,oBAAoB,CAAE,MAAO,IAAA,EAAU,CAAC,EAErD,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElB,OAAO,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ,CAC/C,CAAC,EAED,GAAG,mDAAsD,CACvD,EAAa,oBAAoB,CAAE,MAAO,MAAO,CAAC,EAElD,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElB,OAAO,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,CAC7C,CAAC,EAED,GAAG,8EAAiF,CAClF,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElB,IAAM,EAAQ,gBAAgB,EAE9B,OAAO,EAAM,UAAU,CAAC,CAAC,KAAK,EAAI,EAClC,OAAO,EAAM,SAAS,CAAC,CAAC,KAAK,eAAe,EAC5C,OAAO,EAAM,MAAO,cAAc,CAAC,CAAC,KAAK,gBAAgB,EACzD,OAAO,EAAM,MAAO,gBAAgB,CAAC,CAAC,KAAK,2BAA2B,EACtE,OAAO,EAAM,MAAO,kBAAkB,CAAC,CAAC,KAAK,eAAe,EAC5D,OAAO,EAAM,MAAO,kBAAkB,CAAC,CAAC,KAAK,eAAe,CAC9D,CAAC,EAED,GAAG,4CAA+C,CAChD,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElB,GAAM,CAAE,SAAU,gBAAgB,EAElC,IAAK,IAAM,IAAO,CAAC,UAAW,OAAQ,UAAW,QAAS,SAAS,EACjE,OAAO,IAAQ,EAAI,CAAC,CAAC,WAAW,CAEpC,CAAC,EAED,GAAG,uDAA0D,CAC3D,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElB,OAAO,gBAAgB,CAAC,CAAC,cAAc,YAAY,KAAK,CAAC,CAAC,KAAK,UAAU,CAC3E,CAAC,EAED,GAAG,uEAA0E,CAC3E,EAAO,EAAC,EAAD,CAAS,SAAS,aAAa,WAAY,EAAQ,CAAA,CAAC,EAE3D,IAAM,EAAQ,gBAAgB,EAE9B,OAAO,EAAM,QAAQ,CAAC,CAAC,KAAK,YAAY,EACxC,OAAO,EAAM,UAAU,CAAC,CAAC,KAAK,EAAK,CACrC,CAAC,EAED,GAAG,2CAA8C,CAC/C,OAAO,CAAK,CAAC,CAAC,YAAY,CAC5B,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../spinner-ntLrcDLN.js";import{a as t,r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r}from"react/jsx-runtime";describe(`Spinner`,()=>{it(`renders with the status role, a loading label and the default medium size`,()=>{let{container:t}=n(r(e,{})),i=t.querySelector(`[data-slot="spinner"]`);expect(i).not.toBeNull(),expect(i?.getAttribute(`role`)).toBe(`status`),expect(i?.getAttribute(`aria-label`)).toBe(`Loading`),expect(i?.getAttribute(`data-size`)).toBe(`md`),expect(i?.getAttribute(`class`)).toContain(`animate-spin`),expect(i?.getAttribute(`class`)).toContain(`size-4`)}),it(`applies the small and large size variant classes`,()=>{let{container:t}=n(r(e,{size:`sm`})),i=t.querySelector(`[data-slot="spinner"]`);expect(i?.getAttribute(`data-size`)).toBe(`sm`),expect(i?.getAttribute(`class`)).toContain(`size-3`);let{container:a}=n(r(e,{size:`lg`})),o=a.querySelector(`[data-slot="spinner"]`);expect(o?.getAttribute(`data-size`)).toBe(`lg`),expect(o?.getAttribute(`class`)).toContain(`size-5`)}),it(`merges a custom className with the variant classes`,()=>{let{container:t}=n(r(e,{className:`text-primary`})),i=t.querySelector(`[data-slot="spinner"]`);expect(i?.getAttribute(`class`)).toContain(`text-primary`),expect(i?.getAttribute(`class`)).toContain(`animate-spin`)}),it(`is discoverable through the status role`,()=>{n(r(e,{})),expect(t.getByRole(`status`,{name:`Loading`})).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=spinner.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.spec.js","names":[],"sources":["../../src/components/spinner.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Spinner } from './spinner'\n\ndescribe('Spinner', () => {\n it('renders with the status role, a loading label and the default medium size', () => {\n const { container } = render(<Spinner />)\n\n const spinner = container.querySelector('[data-slot=\"spinner\"]')\n\n expect(spinner).not.toBeNull()\n expect(spinner?.getAttribute('role')).toBe('status')\n expect(spinner?.getAttribute('aria-label')).toBe('Loading')\n expect(spinner?.getAttribute('data-size')).toBe('md')\n expect(spinner?.getAttribute('class')).toContain('animate-spin')\n expect(spinner?.getAttribute('class')).toContain('size-4')\n })\n\n it('applies the small and large size variant classes', () => {\n const { container: smallContainer } = render(<Spinner size=\"sm\" />)\n const small = smallContainer.querySelector('[data-slot=\"spinner\"]')\n\n expect(small?.getAttribute('data-size')).toBe('sm')\n expect(small?.getAttribute('class')).toContain('size-3')\n\n const { container: largeContainer } = render(<Spinner size=\"lg\" />)\n const large = largeContainer.querySelector('[data-slot=\"spinner\"]')\n\n expect(large?.getAttribute('data-size')).toBe('lg')\n expect(large?.getAttribute('class')).toContain('size-5')\n })\n\n it('merges a custom className with the variant classes', () => {\n const { container } = render(<Spinner className=\"text-primary\" />)\n\n const spinner = container.querySelector('[data-slot=\"spinner\"]')\n\n expect(spinner?.getAttribute('class')).toContain('text-primary')\n expect(spinner?.getAttribute('class')).toContain('animate-spin')\n })\n\n it('is discoverable through the status role', () => {\n render(<Spinner />)\n\n expect(screen.getByRole('status', { name: 'Loading' })).not.toBeNull()\n })\n})\n"],"mappings":"+KAIA,SAAS,cAAiB,CACxB,GAAG,gFAAmF,CACpF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElC,EAAU,EAAU,cAAc,uBAAuB,EAE/D,OAAO,CAAO,CAAC,CAAC,IAAI,SAAS,EAC7B,OAAO,GAAS,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EACnD,OAAO,GAAS,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EAC1D,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAS,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,cAAc,EAC/D,OAAO,GAAS,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,QAAQ,CAC3D,CAAC,EAED,GAAG,uDAA0D,CAC3D,GAAM,CAAE,UAAW,GAAmB,EAAO,EAAC,EAAD,CAAS,KAAK,IAAM,CAAA,CAAC,EAC5D,EAAQ,EAAe,cAAc,uBAAuB,EAElE,OAAO,GAAO,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAClD,OAAO,GAAO,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,QAAQ,EAEvD,GAAM,CAAE,UAAW,GAAmB,EAAO,EAAC,EAAD,CAAS,KAAK,IAAM,CAAA,CAAC,EAC5D,EAAQ,EAAe,cAAc,uBAAuB,EAElE,OAAO,GAAO,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAClD,OAAO,GAAO,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,QAAQ,CACzD,CAAC,EAED,GAAG,yDAA4D,CAC7D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAS,UAAU,cAAgB,CAAA,CAAC,EAE3D,EAAU,EAAU,cAAc,uBAAuB,EAE/D,OAAO,GAAS,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,cAAc,EAC/D,OAAO,GAAS,aAAa,OAAO,CAAC,CAAC,CAAC,UAAU,cAAc,CACjE,CAAC,EAED,GAAG,8CAAiD,CAClD,EAAO,EAAC,EAAD,CAAU,CAAA,CAAC,EAElB,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,SAAU,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CACvE,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../stack-BbLllsqk.js";import{r as t}from"../react.esm-dE9nuHcL.js";import{jsx as n}from"react/jsx-runtime";describe(`Stack`,()=>{it(`renders with data-slot, flex-col layout and the default md gap`,()=>{let{container:r}=t(n(e,{})),i=r.querySelector(`[data-slot="stack"]`);expect(i).not.toBeNull(),expect(i?.className).toContain(`flex`),expect(i?.className).toContain(`flex-col`),expect(i?.className).toContain(`gap-4`),expect(i?.getAttribute(`data-gap`)).toBe(`md`),expect(i?.getAttribute(`data-align`)).toBeNull(),expect(i?.getAttribute(`data-justify`)).toBeNull()}),it(`applies the align, justify and gap variant classes and data attributes`,()=>{let{container:r}=t(n(e,{align:`center`,justify:`between`,gap:`xl`})),i=r.querySelector(`[data-slot="stack"]`);expect(i?.getAttribute(`data-align`)).toBe(`center`),expect(i?.getAttribute(`data-justify`)).toBe(`between`),expect(i?.getAttribute(`data-gap`)).toBe(`xl`),expect(i?.className).toContain(`items-center`),expect(i?.className).toContain(`justify-between`),expect(i?.className).toContain(`gap-8`)}),it(`merges a custom className with the variant classes`,()=>{let{container:r}=t(n(e,{className:`custom-stack`}));expect(r.querySelector(`[data-slot="stack"]`)?.className).toContain(`custom-stack`)}),it(`forwards ref to the underlying div element`,()=>{let r={current:null};t(n(e,{ref:r})),expect(r.current).toBeInstanceOf(HTMLDivElement)})});
|
|
2
|
-
//# sourceMappingURL=stack.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stack.spec.js","names":[],"sources":["../../src/components/stack.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Stack } from './stack'\n\ndescribe('Stack', () => {\n it('renders with data-slot, flex-col layout and the default md gap', () => {\n const { container } = render(<Stack />)\n\n const stack = container.querySelector('[data-slot=\"stack\"]')\n\n expect(stack).not.toBeNull()\n expect(stack?.className).toContain('flex')\n expect(stack?.className).toContain('flex-col')\n expect(stack?.className).toContain('gap-4')\n expect(stack?.getAttribute('data-gap')).toBe('md')\n expect(stack?.getAttribute('data-align')).toBeNull()\n expect(stack?.getAttribute('data-justify')).toBeNull()\n })\n\n it('applies the align, justify and gap variant classes and data attributes', () => {\n const { container } = render(<Stack align=\"center\" justify=\"between\" gap=\"xl\" />)\n\n const stack = container.querySelector('[data-slot=\"stack\"]')\n\n expect(stack?.getAttribute('data-align')).toBe('center')\n expect(stack?.getAttribute('data-justify')).toBe('between')\n expect(stack?.getAttribute('data-gap')).toBe('xl')\n expect(stack?.className).toContain('items-center')\n expect(stack?.className).toContain('justify-between')\n expect(stack?.className).toContain('gap-8')\n })\n\n it('merges a custom className with the variant classes', () => {\n const { container } = render(<Stack className=\"custom-stack\" />)\n\n expect(container.querySelector('[data-slot=\"stack\"]')?.className).toContain('custom-stack')\n })\n\n it('forwards ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Stack ref={ref} />)\n\n expect(ref.current).toBeInstanceOf(HTMLDivElement)\n })\n})\n"],"mappings":"sKAIA,SAAS,YAAe,CACtB,GAAG,qEAAwE,CACzE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,CAAA,CAAC,EAEhC,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,CAAK,CAAC,CAAC,IAAI,SAAS,EAC3B,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,MAAM,EACzC,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,UAAU,EAC7C,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,OAAO,EAC1C,OAAO,GAAO,aAAa,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAO,aAAa,YAAY,CAAC,CAAC,CAAC,SAAS,EACnD,OAAO,GAAO,aAAa,cAAc,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC,EAED,GAAG,6EAAgF,CACjF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,MAAM,SAAS,QAAQ,UAAU,IAAI,IAAM,CAAA,CAAC,EAE1E,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EACvD,OAAO,GAAO,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,EAC1D,OAAO,GAAO,aAAa,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,cAAc,EACjD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,iBAAiB,EACpD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,OAAO,CAC5C,CAAC,EAED,GAAG,yDAA4D,CAC7D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,UAAU,cAAgB,CAAA,CAAC,EAE/D,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAC5F,CAAC,EAED,GAAG,iDAAoD,CACrD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAY,KAAM,CAAA,CAAC,EAE1B,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,cAAc,CACnD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|