@uselets/ui 1.18.5 → 1.18.6
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/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 +22 -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 +8 -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 +8 -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 +22 -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 +6 -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 +13 -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 +24 -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 +16 -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 +6 -2
- package/dist/hooks/use-mobile.js +2 -1
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +95 -95
- package/dist/index.js +1 -1
- package/dist/lib/badge.d.ts +19 -2
- package/dist/lib/badge.js +2 -1
- package/dist/lib/badge.js.map +1 -0
- package/dist/lib/button.d.ts +19 -2
- package/dist/lib/button.js +2 -1
- package/dist/lib/button.js.map +1 -0
- package/dist/lib/color.d.ts +19 -2
- package/dist/lib/color.js +2 -1
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/compose-refs.d.ts +8 -2
- package/dist/lib/compose-refs.js +2 -1
- package/dist/lib/compose-refs.js.map +1 -0
- package/dist/lib/progress.d.ts +19 -2
- package/dist/lib/progress.js +2 -1
- package/dist/lib/progress.js.map +1 -0
- package/dist/lib/utils.d.ts +7 -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/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 +6 -7
- 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":"input-group.spec.js","names":[],"sources":["../../src/components/input-group.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea\n} from './input-group'\n\ndescribe('InputGroup', () => {\n it('renders the root container with its data-slot and base classes', () => {\n const { container } = render(<InputGroup>content</InputGroup>)\n const group = container.querySelector('[data-slot=\"input-group\"]')\n\n expect(group).not.toBeNull()\n expect(group?.className).toContain('rounded-lg')\n expect(group?.className).toContain('border')\n })\n\n describe('InputGroupAddon', () => {\n it('defaults to the inline-start alignment', () => {\n const { container } = render(<InputGroupAddon>$</InputGroupAddon>)\n const addon = container.querySelector('[data-slot=\"input-group-addon\"]')\n\n expect(addon?.getAttribute('data-align')).toBe('inline-start')\n expect(addon?.className).toContain('order-first')\n })\n\n it('applies the inline-end alignment classes', () => {\n const { container } = render(<InputGroupAddon align=\"inline-end\">USD</InputGroupAddon>)\n const addon = container.querySelector('[data-slot=\"input-group-addon\"]')\n\n expect(addon?.getAttribute('data-align')).toBe('inline-end')\n expect(addon?.className).toContain('order-last')\n })\n })\n\n describe('InputGroupButton', () => {\n it('renders as a button with the forwarded variant, color and custom size attributes', () => {\n const handleClick = vi.fn()\n render(\n <InputGroupButton size=\"icon-sm\" color=\"primary\" onClick={handleClick}>\n Action\n </InputGroupButton>\n )\n const button = screen.getByRole('button', { name: 'Action' })\n\n expect(button.getAttribute('type')).toBe('button')\n expect(button.getAttribute('data-variant')).toBe('ghost')\n expect(button.getAttribute('data-color')).toBe('primary')\n expect(button.getAttribute('data-size')).toBe('icon-sm')\n expect(button.className).toContain('size-8')\n\n fireEvent.click(button)\n expect(handleClick).toHaveBeenCalledTimes(1)\n })\n\n it('defaults to the xs size classes', () => {\n render(<InputGroupButton>Small</InputGroupButton>)\n const button = screen.getByRole('button', { name: 'Small' })\n\n expect(button.getAttribute('data-size')).toBe('xs')\n expect(button.className).toContain('h-6')\n })\n })\n\n it('renders InputGroupText with its icon-adjacent typography classes', () => {\n render(<InputGroupText>Hint</InputGroupText>)\n const text = screen.getByText('Hint')\n\n expect(text.tagName).toBe('SPAN')\n expect(text.className).toContain('text-muted-foreground')\n })\n\n describe('InputGroupInput', () => {\n it('renders with the input-group-control data-slot and accepts typed input', () => {\n const { container } = render(<InputGroupInput placeholder=\"Email\" />)\n const input = container.querySelector('[data-slot=\"input-group-control\"]') as HTMLInputElement\n\n expect(input).not.toBeNull()\n expect(input.tagName).toBe('INPUT')\n expect(input.className).toContain('border-0')\n\n fireEvent.change(input, { target: { value: 'hello@example.com' } })\n expect(input.value).toBe('hello@example.com')\n })\n\n it('reads the Field control id when rendered inside a Field', () => {\n render(\n <Field>\n <FieldLabel>Email</FieldLabel>\n <InputGroup>\n <InputGroupInput />\n </InputGroup>\n </Field>\n )\n\n const input = screen.getByLabelText('Email')\n const label = screen.getByText('Email')\n\n expect(input.getAttribute('id')).toBeTruthy()\n expect(label.getAttribute('for')).toBe(input.getAttribute('id'))\n })\n })\n\n describe('InputGroupTextarea', () => {\n it('renders with the input-group-control data-slot and accepts typed input', () => {\n const { container } = render(<InputGroupTextarea placeholder=\"Message\" />)\n const textarea = container.querySelector('[data-slot=\"input-group-control\"]') as HTMLTextAreaElement\n\n expect(textarea).not.toBeNull()\n expect(textarea.tagName).toBe('TEXTAREA')\n expect(textarea.className).toContain('resize-none')\n\n fireEvent.change(textarea, { target: { value: 'Hello there' } })\n expect(textarea.value).toBe('Hello there')\n })\n })\n\n it('composes an addon, input and button together', () => {\n const { container } = render(\n <InputGroup>\n <InputGroupAddon>\n <InputGroupText>$</InputGroupText>\n </InputGroupAddon>\n <InputGroupInput placeholder=\"Amount\" />\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton>Clear</InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n )\n\n const group = container.querySelector('[data-slot=\"input-group\"]')\n expect(group?.querySelector('[data-slot=\"input-group-addon\"]')).not.toBeNull()\n expect(group?.querySelector('[data-slot=\"input-group-control\"]')).not.toBeNull()\n expect(screen.getByRole('button', { name: 'Clear' })).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{o as e,t}from"../field-DzR-XrO7.js";import{i as n,n as r,o as i,r as a,t as o}from"../input-otp-CzfRHf2V.js";import{n as s,r as c}from"../react.esm-dE9nuHcL.js";import{jsx as l,jsxs as u}from"react/jsx-runtime";if(globalThis.ResizeObserver===void 0){class ResizeObserverStub{observe(){}unobserve(){}disconnect(){}}globalThis.ResizeObserver=ResizeObserverStub}function renderOtp(e={}){return c(l(o,{maxLength:4,pushPasswordManagerStrategy:`none`,...e,children:u(r,{children:[l(n,{index:0}),l(n,{index:1}),l(n,{index:2}),l(n,{index:3})]})}))}describe(`InputOTP`,()=>{it(`renders the underlying input and one slot per index`,()=>{let{container:e}=renderOtp(),t=e.querySelector(`input[data-slot="input-otp"]`),n=e.querySelectorAll(`[data-slot="input-otp-slot"]`);expect(t).not.toBeNull(),expect(n).toHaveLength(4)}),it(`reflects typed digits into the corresponding slots`,()=>{let{container:e}=renderOtp(),t=e.querySelector(`input[data-slot="input-otp"]`);s.change(t,{target:{value:`1234`}});let n=e.querySelectorAll(`[data-slot="input-otp-slot"]`);expect(n[0]?.textContent).toBe(`1`),expect(n[1]?.textContent).toBe(`2`),expect(n[2]?.textContent).toBe(`3`),expect(n[3]?.textContent).toBe(`4`)}),it(`calls onChange as digits are entered and onComplete once the value is full`,()=>{let e=vi.fn(),t=vi.fn(),{container:n}=renderOtp({onChange:e,onComplete:t}),r=n.querySelector(`input[data-slot="input-otp"]`);s.change(r,{target:{value:`12`}}),expect(e).toHaveBeenLastCalledWith(`12`),expect(t).not.toHaveBeenCalled(),s.change(r,{target:{value:`1234`}}),expect(t).toHaveBeenCalledWith(`1234`)}),it(`rejects input that does not match the provided pattern`,()=>{let e=vi.fn(),{container:t}=renderOtp({pattern:i,onChange:e}),n=t.querySelector(`input[data-slot="input-otp"]`);s.change(n,{target:{value:`ab`}}),expect(e).not.toHaveBeenCalled()}),it(`applies the has-disabled opacity class at the container level`,()=>{let{container:e}=renderOtp({disabled:!0}),t=e.querySelector(`[data-input-otp-container]`);expect(t?.className).toContain(`has-disabled:opacity-50`);let n=e.querySelector(`input[data-slot="input-otp"]`);expect(n).toHaveProperty(`disabled`,!0)}),it(`renders a separator with its icon between two groups`,()=>{let{container:e}=c(u(o,{maxLength:6,pushPasswordManagerStrategy:`none`,children:[u(r,{children:[l(n,{index:0}),l(n,{index:1}),l(n,{index:2})]}),l(a,{}),u(r,{children:[l(n,{index:3}),l(n,{index:4}),l(n,{index:5})]})]})),t=e.querySelector(`[data-slot="input-otp-separator"]`);expect(t).not.toBeNull(),expect(t?.querySelector(`svg`)).not.toBeNull()}),it(`wires the generated Field control id onto the underlying input when used inside a Field`,()=>{let{container:i}=c(u(t,{children:[l(e,{children:`One-time code`}),l(o,{maxLength:4,pushPasswordManagerStrategy:`none`,children:l(r,{children:l(n,{index:0})})})]})),a=i.querySelector(`input[data-slot="input-otp"]`),s=i.querySelector(`[data-slot="field-label"]`);expect(a?.getAttribute(`id`)).toBeTruthy(),expect(s?.getAttribute(`for`)).toBe(a?.getAttribute(`id`))})});
|
|
2
|
-
//# sourceMappingURL=input-otp.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-otp.spec.js","names":[],"sources":["../../src/components/input-otp.spec.tsx"],"sourcesContent":["import { fireEvent, render } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_DIGITS } from './input-otp'\n\n// input-otp observes its container with a native ResizeObserver to size the fake caret. jsdom\n// does not implement ResizeObserver, so every mount needs a harmless stand-in.\nif (typeof globalThis.ResizeObserver === 'undefined') {\n class ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n\n globalThis.ResizeObserver = ResizeObserverStub\n}\n\ntype RenderOtpProps = Partial<Omit<Extract<React.ComponentProps<typeof InputOTP>, { render?: never }>, 'children'>>\n\nfunction renderOtp(props: RenderOtpProps = {}) {\n return render(\n // Disables input-otp's internal password-manager-badge detection, which schedules several\n // timers up to 6s out (see node_modules/input-otp/dist/index.mjs) that can otherwise survive\n // past this test file's teardown and fire against an already-torn-down jsdom environment.\n <InputOTP maxLength={4} pushPasswordManagerStrategy=\"none\" {...props}>\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n <InputOTPSlot index={1} />\n <InputOTPSlot index={2} />\n <InputOTPSlot index={3} />\n </InputOTPGroup>\n </InputOTP>\n )\n}\n\ndescribe('InputOTP', () => {\n it('renders the underlying input and one slot per index', () => {\n const { container } = renderOtp()\n\n const input = container.querySelector('input[data-slot=\"input-otp\"]')\n const slots = container.querySelectorAll('[data-slot=\"input-otp-slot\"]')\n\n expect(input).not.toBeNull()\n expect(slots).toHaveLength(4)\n })\n\n it('reflects typed digits into the corresponding slots', () => {\n const { container } = renderOtp()\n const input = container.querySelector('input[data-slot=\"input-otp\"]') as HTMLInputElement\n\n fireEvent.change(input, { target: { value: '1234' } })\n\n const slots = container.querySelectorAll('[data-slot=\"input-otp-slot\"]')\n expect(slots[0]?.textContent).toBe('1')\n expect(slots[1]?.textContent).toBe('2')\n expect(slots[2]?.textContent).toBe('3')\n expect(slots[3]?.textContent).toBe('4')\n })\n\n it('calls onChange as digits are entered and onComplete once the value is full', () => {\n const handleChange = vi.fn()\n const handleComplete = vi.fn()\n const { container } = renderOtp({ onChange: handleChange, onComplete: handleComplete })\n const input = container.querySelector('input[data-slot=\"input-otp\"]') as HTMLInputElement\n\n fireEvent.change(input, { target: { value: '12' } })\n expect(handleChange).toHaveBeenLastCalledWith('12')\n expect(handleComplete).not.toHaveBeenCalled()\n\n fireEvent.change(input, { target: { value: '1234' } })\n expect(handleComplete).toHaveBeenCalledWith('1234')\n })\n\n it('rejects input that does not match the provided pattern', () => {\n const handleChange = vi.fn()\n const { container } = renderOtp({ pattern: REGEXP_ONLY_DIGITS, onChange: handleChange })\n const input = container.querySelector('input[data-slot=\"input-otp\"]') as HTMLInputElement\n\n fireEvent.change(input, { target: { value: 'ab' } })\n\n expect(handleChange).not.toHaveBeenCalled()\n })\n\n it('applies the has-disabled opacity class at the container level', () => {\n const { container } = renderOtp({ disabled: true })\n const otpContainer = container.querySelector('[data-input-otp-container]')\n\n expect(otpContainer?.className).toContain('has-disabled:opacity-50')\n const input = container.querySelector('input[data-slot=\"input-otp\"]')\n expect(input).toHaveProperty('disabled', true)\n })\n\n it('renders a separator with its icon between two groups', () => {\n const { container } = render(\n <InputOTP maxLength={6} pushPasswordManagerStrategy=\"none\">\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n <InputOTPSlot index={1} />\n <InputOTPSlot index={2} />\n </InputOTPGroup>\n <InputOTPSeparator />\n <InputOTPGroup>\n <InputOTPSlot index={3} />\n <InputOTPSlot index={4} />\n <InputOTPSlot index={5} />\n </InputOTPGroup>\n </InputOTP>\n )\n\n const separator = container.querySelector('[data-slot=\"input-otp-separator\"]')\n expect(separator).not.toBeNull()\n expect(separator?.querySelector('svg')).not.toBeNull()\n })\n\n it('wires the generated Field control id onto the underlying input when used inside a Field', () => {\n const { container } = render(\n <Field>\n <FieldLabel>One-time code</FieldLabel>\n <InputOTP maxLength={4} pushPasswordManagerStrategy=\"none\">\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n </InputOTPGroup>\n </InputOTP>\n </Field>\n )\n\n const input = container.querySelector('input[data-slot=\"input-otp\"]')\n const label = container.querySelector('[data-slot=\"field-label\"]')\n\n expect(input?.getAttribute('id')).toBeTruthy()\n expect(label?.getAttribute('for')).toBe(input?.getAttribute('id'))\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{t as n}from"../input-CJLsPlXh.js";import{a as r,n as i,r as a}from"../react.esm-dE9nuHcL.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";describe(`Input`,()=>{it(`renders an input with the input data-slot and base classes`,()=>{let{container:e}=a(o(n,{placeholder:`Email`})),t=e.querySelector(`[data-slot="input"]`);expect(t?.tagName).toBe(`INPUT`),expect(t?.className).toContain(`rounded-lg`),expect(t?.getAttribute(`placeholder`)).toBe(`Email`)}),it(`does not assign an id when rendered outside a Field and no id is given`,()=>{let{container:e}=a(o(n,{}));expect(e.querySelector(`[data-slot="input"]`)?.getAttribute(`id`)).toBeNull()}),it(`adopts the Field generated control id when no explicit id is provided`,()=>{a(s(t,{children:[o(e,{children:`Email`}),o(n,{})]}));let i=r.getByLabelText(`Email`);expect(i.getAttribute(`id`)).toBeTruthy()}),it(`keeps an explicit id even when rendered inside a Field`,()=>{let{container:e}=a(o(t,{children:o(n,{id:`explicit-input`})}));expect(e.querySelector(`[data-slot="input"]`)?.getAttribute(`id`)).toBe(`explicit-input`)}),it(`fires onChange with the typed value`,()=>{let e=vi.fn();a(o(n,{onChange:e})),i.change(r.getByRole(`textbox`),{target:{value:`hello`}}),expect(e).toHaveBeenCalledTimes(1),expect(r.getByRole(`textbox`).value).toBe(`hello`)}),it(`removes the native webkit search cancel button and decoration for type="search"`,()=>{let{container:e}=a(o(n,{type:`search`})),t=e.querySelector(`[data-slot="input"]`);expect(t?.className).toContain(`[&::-webkit-search-cancel-button]:appearance-none`),expect(t?.className).toContain(`[&::-webkit-search-decoration]:appearance-none`)}),it(`forwards a ref to the underlying input element`,()=>{let e={current:null};a(o(n,{ref:e})),expect(e.current).toBeInstanceOf(HTMLInputElement)})});
|
|
2
|
-
//# sourceMappingURL=input.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.spec.js","names":[],"sources":["../../src/components/input.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { Input } from './input'\n\ndescribe('Input', () => {\n it('renders an input with the input data-slot and base classes', () => {\n const { container } = render(<Input placeholder=\"Email\" />)\n\n const input = container.querySelector('[data-slot=\"input\"]')\n\n expect(input?.tagName).toBe('INPUT')\n expect(input?.className).toContain('rounded-lg')\n expect(input?.getAttribute('placeholder')).toBe('Email')\n })\n\n it('does not assign an id when rendered outside a Field and no id is given', () => {\n const { container } = render(<Input />)\n\n expect(container.querySelector('[data-slot=\"input\"]')?.getAttribute('id')).toBeNull()\n })\n\n it('adopts the Field generated control id when no explicit id is provided', () => {\n render(\n <Field>\n <FieldLabel>Email</FieldLabel>\n <Input />\n </Field>\n )\n\n const input = screen.getByLabelText('Email')\n\n expect(input.getAttribute('id')).toBeTruthy()\n })\n\n it('keeps an explicit id even when rendered inside a Field', () => {\n const { container } = render(\n <Field>\n <Input id=\"explicit-input\" />\n </Field>\n )\n\n expect(container.querySelector('[data-slot=\"input\"]')?.getAttribute('id')).toBe('explicit-input')\n })\n\n it('fires onChange with the typed value', () => {\n const handleChange = vi.fn()\n\n render(<Input onChange={handleChange} />)\n\n fireEvent.change(screen.getByRole('textbox'), { target: { value: 'hello' } })\n\n expect(handleChange).toHaveBeenCalledTimes(1)\n expect((screen.getByRole('textbox') as HTMLInputElement).value).toBe('hello')\n })\n\n it('removes the native webkit search cancel button and decoration for type=\"search\"', () => {\n const { container } = render(<Input type=\"search\" />)\n\n const input = container.querySelector('[data-slot=\"input\"]')\n\n expect(input?.className).toContain('[&::-webkit-search-cancel-button]:appearance-none')\n expect(input?.className).toContain('[&::-webkit-search-decoration]:appearance-none')\n })\n\n it('forwards a ref to the underlying input element', () => {\n const ref = { current: null as HTMLInputElement | null }\n\n render(<Input ref={ref} />)\n\n expect(ref.current).toBeInstanceOf(HTMLInputElement)\n })\n})\n"],"mappings":"yOAKA,SAAS,YAAe,CACtB,GAAG,iEAAoE,CACrE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,YAAY,OAAS,CAAA,CAAC,EAEpD,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,OAAO,CAAC,CAAC,KAAK,OAAO,EACnC,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,YAAY,EAC/C,OAAO,GAAO,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,CACzD,CAAC,EAED,GAAG,6EAAgF,CACjF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,CAAA,CAAC,EAEtC,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC,EAED,GAAG,4EAA+E,CAChF,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,OAAiB,CAAA,EAC7B,EAAC,EAAD,CAAQ,CAAA,CACH,CAAA,CAAA,CACT,EAEA,IAAM,EAAQ,EAAO,eAAe,OAAO,EAE3C,OAAO,EAAM,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CAC9C,CAAC,EAED,GAAG,6DAAgE,CACjE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAO,GAAG,gBAAkB,CAAA,CACvB,CAAA,CACT,EAEA,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAClG,CAAC,EAED,GAAG,0CAA6C,CAC9C,IAAM,EAAe,GAAG,GAAG,EAE3B,EAAO,EAAC,EAAD,CAAO,SAAU,CAAe,CAAA,CAAC,EAExC,EAAU,OAAO,EAAO,UAAU,SAAS,EAAG,CAAE,OAAQ,CAAE,MAAO,OAAQ,CAAE,CAAC,EAE5E,OAAO,CAAY,CAAC,CAAC,sBAAsB,CAAC,EAC5C,OAAQ,EAAO,UAAU,SAAS,CAAC,CAAsB,KAAK,CAAC,CAAC,KAAK,OAAO,CAC9E,CAAC,EAED,GAAG,sFAAyF,CAC1F,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,KAAK,QAAU,CAAA,CAAC,EAE9C,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,mDAAmD,EACtF,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,gDAAgD,CACrF,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAAgC,EAEvD,EAAO,EAAC,EAAD,CAAY,KAAM,CAAA,CAAC,EAE1B,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,gBAAgB,CACrD,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"../kbd-BTl3AgkY.js";import{r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";describe(`Kbd`,()=>{it(`renders a kbd element with the kbd data-slot and base classes`,()=>{let{container:e}=n(r(t,{children:`Ctrl`})),i=e.querySelector(`[data-slot="kbd"]`);expect(i?.tagName).toBe(`KBD`),expect(i?.textContent).toBe(`Ctrl`),expect(i?.className).toContain(`bg-muted`)}),it(`merges a custom className onto Kbd`,()=>{let{container:e}=n(r(t,{className:`custom-class`,children:`Ctrl`}));expect(e.querySelector(`[data-slot="kbd"]`)?.className).toContain(`custom-class`)}),it(`renders KbdGroup with the kbd-group data-slot and its children`,()=>{let{container:a}=n(i(e,{children:[r(t,{children:`Ctrl`}),r(t,{children:`K`})]})),o=a.querySelector(`[data-slot="kbd-group"]`);expect(o).not.toBeNull(),expect(o?.className).toContain(`inline-flex`),expect(o?.querySelectorAll(`[data-slot="kbd"]`)).toHaveLength(2)}),it(`merges a custom className onto KbdGroup`,()=>{let{container:t}=n(r(e,{className:`custom-class`}));expect(t.querySelector(`[data-slot="kbd-group"]`)?.className).toContain(`custom-class`)})});
|
|
2
|
-
//# sourceMappingURL=kbd.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kbd.spec.js","names":[],"sources":["../../src/components/kbd.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Kbd, KbdGroup } from './kbd'\n\ndescribe('Kbd', () => {\n it('renders a kbd element with the kbd data-slot and base classes', () => {\n const { container } = render(<Kbd>Ctrl</Kbd>)\n\n const kbd = container.querySelector('[data-slot=\"kbd\"]')\n\n expect(kbd?.tagName).toBe('KBD')\n expect(kbd?.textContent).toBe('Ctrl')\n expect(kbd?.className).toContain('bg-muted')\n })\n\n it('merges a custom className onto Kbd', () => {\n const { container } = render(<Kbd className=\"custom-class\">Ctrl</Kbd>)\n\n expect(container.querySelector('[data-slot=\"kbd\"]')?.className).toContain('custom-class')\n })\n\n it('renders KbdGroup with the kbd-group data-slot and its children', () => {\n const { container } = render(\n <KbdGroup>\n <Kbd>Ctrl</Kbd>\n <Kbd>K</Kbd>\n </KbdGroup>\n )\n\n const group = container.querySelector('[data-slot=\"kbd-group\"]')\n\n expect(group).not.toBeNull()\n expect(group?.className).toContain('inline-flex')\n expect(group?.querySelectorAll('[data-slot=\"kbd\"]')).toHaveLength(2)\n })\n\n it('merges a custom className onto KbdGroup', () => {\n const { container } = render(<KbdGroup className=\"custom-class\" />)\n\n expect(container.querySelector('[data-slot=\"kbd-group\"]')?.className).toContain('custom-class')\n })\n})\n"],"mappings":"gLAIA,SAAS,UAAa,CACpB,GAAG,oEAAuE,CACxE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAK,MAAS,CAAA,CAAC,EAEtC,EAAM,EAAU,cAAc,mBAAmB,EAEvD,OAAO,GAAK,OAAO,CAAC,CAAC,KAAK,KAAK,EAC/B,OAAO,GAAK,WAAW,CAAC,CAAC,KAAK,MAAM,EACpC,OAAO,GAAK,SAAS,CAAC,CAAC,UAAU,UAAU,CAC7C,CAAC,EAED,GAAG,yCAA4C,CAC7C,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAK,UAAU,eAAe,SAAA,MAAS,CAAA,CAAC,EAErE,OAAO,EAAU,cAAc,mBAAmB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAC1F,CAAC,EAED,GAAG,qEAAwE,CACzE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAK,MAAS,CAAA,EACd,EAAC,EAAD,CAAA,SAAK,GAAM,CAAA,CACH,CAAA,CAAA,CACZ,EAEM,EAAQ,EAAU,cAAc,yBAAyB,EAE/D,OAAO,CAAK,CAAC,CAAC,IAAI,SAAS,EAC3B,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,aAAa,EAChD,OAAO,GAAO,iBAAiB,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CACrE,CAAC,EAED,GAAG,8CAAiD,CAClD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAU,UAAU,cAAgB,CAAA,CAAC,EAElE,OAAO,EAAU,cAAc,yBAAyB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAChG,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../label-BQDEej_c.js";import{a as t,r as n}from"../react.esm-dE9nuHcL.js";import{Fragment as r,jsx as i,jsxs as a}from"react/jsx-runtime";describe(`Label`,()=>{it(`renders a label element with the label data-slot and base classes`,()=>{let{container:t}=n(i(e,{children:`Email`})),r=t.querySelector(`[data-slot="label"]`);expect(r?.tagName).toBe(`LABEL`),expect(r?.className).toContain(`select-none`),expect(r?.textContent).toBe(`Email`)}),it(`links to its control through htmlFor`,()=>{n(a(r,{children:[i(e,{htmlFor:`email-input`,children:`Email`}),i(`input`,{id:`email-input`})]})),expect(t.getByLabelText(`Email`)).not.toBeNull()}),it(`merges a custom className with the base classes`,()=>{let{container:t}=n(i(e,{className:`custom-class`,children:`Email`}));expect(t.querySelector(`[data-slot="label"]`)?.className).toContain(`custom-class`)}),it(`forwards a ref to the underlying label element`,()=>{let t={current:null};n(i(e,{ref:t,children:`Email`})),expect(t.current).toBeInstanceOf(HTMLLabelElement)})});
|
|
2
|
-
//# sourceMappingURL=label.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"label.spec.js","names":[],"sources":["../../src/components/label.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Label } from './label'\n\ndescribe('Label', () => {\n it('renders a label element with the label data-slot and base classes', () => {\n const { container } = render(<Label>Email</Label>)\n\n const label = container.querySelector('[data-slot=\"label\"]')\n\n expect(label?.tagName).toBe('LABEL')\n expect(label?.className).toContain('select-none')\n expect(label?.textContent).toBe('Email')\n })\n\n it('links to its control through htmlFor', () => {\n render(\n <>\n <Label htmlFor=\"email-input\">Email</Label>\n <input id=\"email-input\" />\n </>\n )\n\n expect(screen.getByLabelText('Email')).not.toBeNull()\n })\n\n it('merges a custom className with the base classes', () => {\n const { container } = render(<Label className=\"custom-class\">Email</Label>)\n\n expect(container.querySelector('[data-slot=\"label\"]')?.className).toContain('custom-class')\n })\n\n it('forwards a ref to the underlying label element', () => {\n const ref = { current: null as HTMLLabelElement | null }\n\n render(<Label ref={ref}>Email</Label>)\n\n expect(ref.current).toBeInstanceOf(HTMLLabelElement)\n })\n})\n"],"mappings":"qMAIA,SAAS,YAAe,CACtB,GAAG,wEAA2E,CAC5E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAO,OAAY,CAAA,CAAC,EAE3C,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,OAAO,CAAC,CAAC,KAAK,OAAO,EACnC,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,aAAa,EAChD,OAAO,GAAO,WAAW,CAAC,CAAC,KAAK,OAAO,CACzC,CAAC,EAED,GAAG,2CAA8C,CAC/C,EACE,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,EAAD,CAAO,QAAQ,cAAc,SAAA,OAAY,CAAA,EACzC,EAAC,QAAD,CAAO,GAAG,aAAe,CAAA,CACzB,CAAA,CAAA,CACJ,EAEA,OAAO,EAAO,eAAe,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CACtD,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,UAAU,eAAe,SAAA,OAAY,CAAA,CAAC,EAE1E,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,cAAc,CAC5F,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAAgC,EAEvD,EAAO,EAAC,EAAD,CAAY,MAAK,SAAA,OAAY,CAAA,CAAC,EAErC,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,gBAAgB,CACrD,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"../list-BbCg-ndB.js";import{a as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";describe(`List`,()=>{it(`renders a ul with data-slot and default size/spacing attributes`,()=>{let{container:e}=i(a(n,{children:a(t,{children:`First`})})),r=e.querySelector(`[data-slot="list"]`);expect(r?.tagName).toBe(`UL`),expect(r?.getAttribute(`data-type`)).toBe(`unordered`),expect(r?.getAttribute(`data-size`)).toBe(`md`),expect(r?.getAttribute(`data-spacing`)).toBe(`md`)}),it(`renders an ol element when type is ordered`,()=>{let{container:e}=i(a(n,{type:`ordered`,children:a(t,{children:`First`})})),r=e.querySelector(`[data-slot="list"]`);expect(r?.tagName).toBe(`OL`),expect(r?.getAttribute(`data-type`)).toBe(`ordered`)}),it(`applies size and spacing variant classes`,()=>{let{container:e}=i(a(n,{size:`lg`,spacing:`xl`,children:a(t,{children:`Item`})})),r=e.querySelector(`[data-slot="list"]`);expect(r?.className).toContain(`text-lg`),expect(r?.className).toContain(`gap-6`)}),describe(`ListItem`,()=>{it(`numbers items sequentially for an ordered list`,()=>{let{container:e}=i(o(n,{type:`ordered`,children:[a(t,{children:`First`}),a(t,{children:`Second`}),a(t,{children:`Third`})]})),r=Array.from(e.querySelectorAll(`[data-slot="list-item"] > span`)).map(e=>e.textContent);expect(r).toEqual([`1.`,`2.`,`3.`])}),it(`continues numbering through Fragment-wrapped children`,()=>{let{container:e}=i(o(n,{type:`ordered`,children:[a(t,{children:`First`}),a(t,{children:`Second`}),a(t,{children:`Third`})]})),r=Array.from(e.querySelectorAll(`[data-slot="list-item"] > span`)).map(e=>e.textContent);expect(r).toEqual([`1.`,`2.`,`3.`])}),it(`renders a bullet marker for unordered items without an icon`,()=>{let{container:e}=i(a(n,{children:a(t,{children:`Plain item`})})),r=e.querySelector(`[data-slot="list-item"]`);expect(r?.getAttribute(`data-has-icon`)).toBe(`false`),expect(r?.querySelector(`span.rounded-full`)).not.toBeNull()}),it(`renders a provided ListIcon as the marker and excludes it from the content area`,()=>{let{container:r}=i(a(n,{children:o(t,{children:[a(e,{"data-testid":`marker-icon`,children:`*`}),`Starred item`]})})),s=r.querySelector(`[data-slot="list-item"]`);expect(s?.getAttribute(`data-has-icon`)).toBe(`true`);let c=s?.querySelector(`span[aria-hidden="true"]`);expect(c?.querySelector(`[data-testid="marker-icon"]`)).not.toBeNull();let l=s?.querySelector(`.min-w-0`);expect(l?.textContent).toBe(`Starred item`)})}),describe(`ListIcon`,()=>{it(`renders as a span with the expected data-slot by default`,()=>{i(a(n,{children:o(t,{children:[a(e,{children:`*`}),`Item`]})}));let s=r.getByText(`*`);expect(s.tagName).toBe(`SPAN`),expect(s.getAttribute(`data-slot`)).toBe(`list-icon`)}),it(`merges props onto the child element when asChild is used`,()=>{i(a(n,{children:o(t,{children:[a(e,{asChild:!0,"data-testid":`custom-icon`,children:a(`svg`,{})}),`Item`]})}));let s=r.getByTestId(`custom-icon`);expect(s.tagName.toLowerCase()).toBe(`svg`),expect(s.getAttribute(`data-slot`)).toBe(`list-icon`),expect(s.getAttribute(`class`)).toContain(`size-4`)})})});
|
|
2
|
-
//# sourceMappingURL=list.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.spec.js","names":[],"sources":["../../src/components/list.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { List, ListIcon, ListItem } from './list'\n\ndescribe('List', () => {\n it('renders a ul with data-slot and default size/spacing attributes', () => {\n const { container } = render(\n <List>\n <ListItem>First</ListItem>\n </List>\n )\n const list = container.querySelector('[data-slot=\"list\"]')\n\n expect(list?.tagName).toBe('UL')\n expect(list?.getAttribute('data-type')).toBe('unordered')\n expect(list?.getAttribute('data-size')).toBe('md')\n expect(list?.getAttribute('data-spacing')).toBe('md')\n })\n\n it('renders an ol element when type is ordered', () => {\n const { container } = render(\n <List type=\"ordered\">\n <ListItem>First</ListItem>\n </List>\n )\n const list = container.querySelector('[data-slot=\"list\"]')\n\n expect(list?.tagName).toBe('OL')\n expect(list?.getAttribute('data-type')).toBe('ordered')\n })\n\n it('applies size and spacing variant classes', () => {\n const { container } = render(\n <List size=\"lg\" spacing=\"xl\">\n <ListItem>Item</ListItem>\n </List>\n )\n const list = container.querySelector('[data-slot=\"list\"]')\n\n expect(list?.className).toContain('text-lg')\n expect(list?.className).toContain('gap-6')\n })\n\n describe('ListItem', () => {\n it('numbers items sequentially for an ordered list', () => {\n const { container } = render(\n <List type=\"ordered\">\n <ListItem>First</ListItem>\n <ListItem>Second</ListItem>\n <ListItem>Third</ListItem>\n </List>\n )\n\n const markers = Array.from(container.querySelectorAll('[data-slot=\"list-item\"] > span')).map(\n (marker) => marker.textContent\n )\n expect(markers).toEqual(['1.', '2.', '3.'])\n })\n\n it('continues numbering through Fragment-wrapped children', () => {\n const { container } = render(\n <List type=\"ordered\">\n <ListItem>First</ListItem>\n <ListItem>Second</ListItem>\n <ListItem>Third</ListItem>\n </List>\n )\n\n const markers = Array.from(container.querySelectorAll('[data-slot=\"list-item\"] > span')).map(\n (marker) => marker.textContent\n )\n expect(markers).toEqual(['1.', '2.', '3.'])\n })\n\n it('renders a bullet marker for unordered items without an icon', () => {\n const { container } = render(\n <List>\n <ListItem>Plain item</ListItem>\n </List>\n )\n\n const item = container.querySelector('[data-slot=\"list-item\"]')\n expect(item?.getAttribute('data-has-icon')).toBe('false')\n expect(item?.querySelector('span.rounded-full')).not.toBeNull()\n })\n\n it('renders a provided ListIcon as the marker and excludes it from the content area', () => {\n const { container } = render(\n <List>\n <ListItem>\n <ListIcon data-testid=\"marker-icon\">*</ListIcon>\n Starred item\n </ListItem>\n </List>\n )\n\n const item = container.querySelector('[data-slot=\"list-item\"]')\n expect(item?.getAttribute('data-has-icon')).toBe('true')\n\n const marker = item?.querySelector('span[aria-hidden=\"true\"]')\n expect(marker?.querySelector('[data-testid=\"marker-icon\"]')).not.toBeNull()\n\n const content = item?.querySelector('.min-w-0')\n expect(content?.textContent).toBe('Starred item')\n })\n })\n\n describe('ListIcon', () => {\n it('renders as a span with the expected data-slot by default', () => {\n render(\n <List>\n <ListItem>\n <ListIcon>*</ListIcon>\n Item\n </ListItem>\n </List>\n )\n\n const icon = screen.getByText('*')\n expect(icon.tagName).toBe('SPAN')\n expect(icon.getAttribute('data-slot')).toBe('list-icon')\n })\n\n it('merges props onto the child element when asChild is used', () => {\n render(\n <List>\n <ListItem>\n <ListIcon asChild data-testid=\"custom-icon\">\n <svg />\n </ListIcon>\n Item\n </ListItem>\n </List>\n )\n\n const icon = screen.getByTestId('custom-icon')\n expect(icon.tagName.toLowerCase()).toBe('svg')\n expect(icon.getAttribute('data-slot')).toBe('list-icon')\n expect(icon.getAttribute('class')).toContain('size-4')\n })\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"../logo-BkwNxZNw.js";import{r as l}from"../react.esm-dE9nuHcL.js";import{jsx as u}from"react/jsx-runtime";const d=[{Component:c,slot:`bippi-logo`,supportsVariant:!0},{Component:i,slot:`fibonash-logo`,supportsVariant:!0},{Component:o,slot:`gomax-logo`,supportsVariant:!0},{Component:n,slot:`intelitrack-logo`,supportsVariant:!0},{Component:e,slot:`kovra-logo`,supportsVariant:!0},{Component:a,slot:`lets-logo`,supportsVariant:!1},{Component:s,slot:`max-logo`,supportsVariant:!0},{Component:t,slot:`neutra-logo`,supportsVariant:!0},{Component:r,slot:`rd-logo`,supportsVariant:!0}];describe(`Logo`,()=>{it(`mounts every exported logo component without throwing`,()=>{for(let{Component:e}of d)expect(()=>l(u(e,{}))).not.toThrow()}),it(`renders each logo as an svg element with its expected data-slot`,()=>{for(let{Component:e,slot:t}of d){let{container:n,unmount:r}=l(u(e,{})),i=n.querySelector(`[data-slot="${t}"]`);expect(i).not.toBeNull(),expect(i?.tagName.toLowerCase()).toBe(`svg`),r()}}),it(`applies the mono tone to every logo`,()=>{for(let{Component:e,slot:t}of d){let{container:n,unmount:r}=l(u(e,{tone:`mono`})),i=n.querySelector(`[data-slot="${t}"]`);expect(i?.getAttribute(`data-tone`)).toBe(`mono`),r()}}),it(`applies the icon variant for logos that support a variant prop`,()=>{for(let{Component:e,slot:t,supportsVariant:n}of d){if(!n)continue;let{container:r,unmount:i}=l(u(e,{variant:`icon`})),a=r.querySelector(`[data-slot="${t}"]`);expect(a?.getAttribute(`data-variant`)).toBe(`icon`),i()}}),it(`uses the logo-foreground token instead of a hardcoded hex fill for color tone`,()=>{let a=[{Component:n,slot:`intelitrack-logo`},{Component:t,slot:`neutra-logo`},{Component:e,slot:`kovra-logo`},{Component:i,slot:`fibonash-logo`}];for(let{Component:e,slot:t}of a){let{container:n,unmount:r}=l(u(e,{tone:`color`})),i=n.querySelector(`[data-slot="${t}"]`);expect(i?.innerHTML).toContain(`var(--logo-foreground)`),expect(i?.innerHTML).not.toContain(`1D2436`),r()}let{container:o,unmount:s}=l(u(r,{tone:`color`})),c=o.querySelector(`[data-slot="rd-logo"]`);expect(c?.innerHTML).toContain(`var(--rd-logo-foreground)`),expect(c?.innerHTML).not.toContain(`0A2F2A`),s()})});
|
|
2
|
-
//# sourceMappingURL=logo.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logo.spec.js","names":[],"sources":["../../src/components/logo.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport {\n BippiLogo,\n FibonashLogo,\n GomaxLogo,\n IntelitrackLogo,\n KovraLogo,\n LetsLogo,\n MaxLogo,\n NeutraLogo,\n RdLogo\n} from './logo'\n\nconst logos = [\n { Component: BippiLogo, slot: 'bippi-logo', supportsVariant: true },\n { Component: FibonashLogo, slot: 'fibonash-logo', supportsVariant: true },\n { Component: GomaxLogo, slot: 'gomax-logo', supportsVariant: true },\n { Component: IntelitrackLogo, slot: 'intelitrack-logo', supportsVariant: true },\n { Component: KovraLogo, slot: 'kovra-logo', supportsVariant: true },\n { Component: LetsLogo, slot: 'lets-logo', supportsVariant: false },\n { Component: MaxLogo, slot: 'max-logo', supportsVariant: true },\n { Component: NeutraLogo, slot: 'neutra-logo', supportsVariant: true },\n { Component: RdLogo, slot: 'rd-logo', supportsVariant: true }\n] as const\n\ndescribe('Logo', () => {\n it('mounts every exported logo component without throwing', () => {\n for (const { Component } of logos) {\n expect(() => render(<Component />)).not.toThrow()\n }\n })\n\n it('renders each logo as an svg element with its expected data-slot', () => {\n for (const { Component, slot } of logos) {\n const { container, unmount } = render(<Component />)\n\n const svg = container.querySelector(`[data-slot=\"${slot}\"]`)\n\n expect(svg).not.toBeNull()\n expect(svg?.tagName.toLowerCase()).toBe('svg')\n\n unmount()\n }\n })\n\n it('applies the mono tone to every logo', () => {\n for (const { Component, slot } of logos) {\n const { container, unmount } = render(<Component tone=\"mono\" />)\n\n const svg = container.querySelector(`[data-slot=\"${slot}\"]`)\n\n expect(svg?.getAttribute('data-tone')).toBe('mono')\n\n unmount()\n }\n })\n\n it('applies the icon variant for logos that support a variant prop', () => {\n for (const { Component, slot, supportsVariant } of logos) {\n if (!supportsVariant) {\n continue\n }\n\n const { container, unmount } = render(<Component variant=\"icon\" />)\n\n const svg = container.querySelector(`[data-slot=\"${slot}\"]`)\n\n expect(svg?.getAttribute('data-variant')).toBe('icon')\n\n unmount()\n }\n })\n\n it('uses the logo-foreground token instead of a hardcoded hex fill for color tone', () => {\n const colorTokenLogos = [\n { Component: IntelitrackLogo, slot: 'intelitrack-logo' },\n { Component: NeutraLogo, slot: 'neutra-logo' },\n { Component: KovraLogo, slot: 'kovra-logo' },\n { Component: FibonashLogo, slot: 'fibonash-logo' }\n ] as const\n\n for (const { Component, slot } of colorTokenLogos) {\n const { container, unmount } = render(<Component tone=\"color\" />)\n\n const svg = container.querySelector(`[data-slot=\"${slot}\"]`)\n\n expect(svg?.innerHTML).toContain('var(--logo-foreground)')\n expect(svg?.innerHTML).not.toContain('1D2436')\n\n unmount()\n }\n\n const { container: rdContainer, unmount: unmountRd } = render(<RdLogo tone=\"color\" />)\n\n const rdSvg = rdContainer.querySelector('[data-slot=\"rd-logo\"]')\n\n expect(rdSvg?.innerHTML).toContain('var(--rd-logo-foreground)')\n expect(rdSvg?.innerHTML).not.toContain('0A2F2A')\n\n unmountRd()\n })\n})\n"],"mappings":"wNAcA,MAAM,EAAQ,CACZ,CAAE,UAAW,EAAW,KAAM,aAAc,gBAAiB,EAAK,EAClE,CAAE,UAAW,EAAc,KAAM,gBAAiB,gBAAiB,EAAK,EACxE,CAAE,UAAW,EAAW,KAAM,aAAc,gBAAiB,EAAK,EAClE,CAAE,UAAW,EAAiB,KAAM,mBAAoB,gBAAiB,EAAK,EAC9E,CAAE,UAAW,EAAW,KAAM,aAAc,gBAAiB,EAAK,EAClE,CAAE,UAAW,EAAU,KAAM,YAAa,gBAAiB,EAAM,EACjE,CAAE,UAAW,EAAS,KAAM,WAAY,gBAAiB,EAAK,EAC9D,CAAE,UAAW,EAAY,KAAM,cAAe,gBAAiB,EAAK,EACpE,CAAE,UAAW,EAAQ,KAAM,UAAW,gBAAiB,EAAK,CAC9D,EAEA,SAAS,WAAc,CACrB,GAAG,4DAA+D,CAChE,IAAK,GAAM,CAAE,eAAe,EAC1B,WAAa,EAAO,EAAC,EAAD,CAAY,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAEpD,CAAC,EAED,GAAG,sEAAyE,CAC1E,IAAK,GAAM,CAAE,YAAW,UAAU,EAAO,CACvC,GAAM,CAAE,YAAW,WAAY,EAAO,EAAC,EAAD,CAAY,CAAA,CAAC,EAE7C,EAAM,EAAU,cAAc,eAAe,EAAK,GAAG,EAE3D,OAAO,CAAG,CAAC,CAAC,IAAI,SAAS,EACzB,OAAO,GAAK,QAAQ,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,EAE7C,EAAQ,CACV,CACF,CAAC,EAED,GAAG,0CAA6C,CAC9C,IAAK,GAAM,CAAE,YAAW,UAAU,EAAO,CACvC,GAAM,CAAE,YAAW,WAAY,EAAO,EAAC,EAAD,CAAW,KAAK,MAAQ,CAAA,CAAC,EAEzD,EAAM,EAAU,cAAc,eAAe,EAAK,GAAG,EAE3D,OAAO,GAAK,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,EAElD,EAAQ,CACV,CACF,CAAC,EAED,GAAG,qEAAwE,CACzE,IAAK,GAAM,CAAE,YAAW,OAAM,qBAAqB,EAAO,CACxD,GAAI,CAAC,EACH,SAGF,GAAM,CAAE,YAAW,WAAY,EAAO,EAAC,EAAD,CAAW,QAAQ,MAAQ,CAAA,CAAC,EAE5D,EAAM,EAAU,cAAc,eAAe,EAAK,GAAG,EAE3D,OAAO,GAAK,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EAErD,EAAQ,CACV,CACF,CAAC,EAED,GAAG,oFAAuF,CACxF,IAAM,EAAkB,CACtB,CAAE,UAAW,EAAiB,KAAM,kBAAmB,EACvD,CAAE,UAAW,EAAY,KAAM,aAAc,EAC7C,CAAE,UAAW,EAAW,KAAM,YAAa,EAC3C,CAAE,UAAW,EAAc,KAAM,eAAgB,CACnD,EAEA,IAAK,GAAM,CAAE,YAAW,UAAU,EAAiB,CACjD,GAAM,CAAE,YAAW,WAAY,EAAO,EAAC,EAAD,CAAW,KAAK,OAAS,CAAA,CAAC,EAE1D,EAAM,EAAU,cAAc,eAAe,EAAK,GAAG,EAE3D,OAAO,GAAK,SAAS,CAAC,CAAC,UAAU,wBAAwB,EACzD,OAAO,GAAK,SAAS,CAAC,CAAC,IAAI,UAAU,QAAQ,EAE7C,EAAQ,CACV,CAEA,GAAM,CAAE,UAAW,EAAa,QAAS,GAAc,EAAO,EAAC,EAAD,CAAQ,KAAK,OAAS,CAAA,CAAC,EAE/E,EAAQ,EAAY,cAAc,uBAAuB,EAE/D,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,2BAA2B,EAC9D,OAAO,GAAO,SAAS,CAAC,CAAC,IAAI,UAAU,QAAQ,EAE/C,EAAU,CACZ,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"../marker-4_EnMIHk.js";import{a as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a}from"react/jsx-runtime";describe(`Marker`,()=>{it(`renders a div with the marker data-slot and the default variant`,()=>{let{container:e}=i(a(n,{children:`Default marker`})),t=e.querySelector(`[data-slot="marker"]`);expect(t?.tagName).toBe(`DIV`),expect(t?.getAttribute(`data-variant`)).toBe(`default`),expect(t?.className).toContain(`text-muted-foreground`)}),it(`applies the separator variant classes and data-variant attribute`,()=>{let{container:e}=i(a(n,{variant:`separator`,children:`Separator marker`})),t=e.querySelector(`[data-slot="marker"]`);expect(t?.getAttribute(`data-variant`)).toBe(`separator`),expect(t?.className).toContain(`before:mr-1`),expect(t?.className).toContain(`after:ml-1`)}),it(`applies the border variant classes`,()=>{let{container:e}=i(a(n,{variant:`border`,children:`Border marker`})),t=e.querySelector(`[data-slot="marker"]`);expect(t?.getAttribute(`data-variant`)).toBe(`border`),expect(t?.className).toContain(`border-b`)}),it(`renders as the provided child element when asChild is set`,()=>{i(a(n,{asChild:!0,children:a(`a`,{href:`/target`,children:`Link marker`})}));let e=r.getByRole(`link`,{name:`Link marker`});expect(e.tagName).toBe(`A`),expect(e.getAttribute(`data-slot`)).toBe(`marker`)}),it(`renders MarkerIcon as a hidden span with the marker-icon data-slot`,()=>{let{container:e}=i(a(t,{className:`custom-icon`})),n=e.querySelector(`[data-slot="marker-icon"]`);expect(n?.tagName).toBe(`SPAN`),expect(n?.getAttribute(`aria-hidden`)).toBe(`true`),expect(n?.className).toContain(`custom-icon`)}),it(`renders MarkerContent as a span with the marker-content data-slot`,()=>{let{container:t}=i(a(e,{className:`custom-content`,children:`Content`})),n=t.querySelector(`[data-slot="marker-content"]`);expect(n?.tagName).toBe(`SPAN`),expect(n?.textContent).toBe(`Content`),expect(n?.className).toContain(`custom-content`)})});
|
|
2
|
-
//# sourceMappingURL=marker.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"marker.spec.js","names":[],"sources":["../../src/components/marker.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Marker, MarkerContent, MarkerIcon } from './marker'\n\ndescribe('Marker', () => {\n it('renders a div with the marker data-slot and the default variant', () => {\n const { container } = render(<Marker>Default marker</Marker>)\n\n const marker = container.querySelector('[data-slot=\"marker\"]')\n\n expect(marker?.tagName).toBe('DIV')\n expect(marker?.getAttribute('data-variant')).toBe('default')\n expect(marker?.className).toContain('text-muted-foreground')\n })\n\n it('applies the separator variant classes and data-variant attribute', () => {\n const { container } = render(<Marker variant=\"separator\">Separator marker</Marker>)\n\n const marker = container.querySelector('[data-slot=\"marker\"]')\n\n expect(marker?.getAttribute('data-variant')).toBe('separator')\n expect(marker?.className).toContain('before:mr-1')\n expect(marker?.className).toContain('after:ml-1')\n })\n\n it('applies the border variant classes', () => {\n const { container } = render(<Marker variant=\"border\">Border marker</Marker>)\n\n const marker = container.querySelector('[data-slot=\"marker\"]')\n\n expect(marker?.getAttribute('data-variant')).toBe('border')\n expect(marker?.className).toContain('border-b')\n })\n\n it('renders as the provided child element when asChild is set', () => {\n render(\n <Marker asChild>\n <a href=\"/target\">Link marker</a>\n </Marker>\n )\n\n const link = screen.getByRole('link', { name: 'Link marker' })\n\n expect(link.tagName).toBe('A')\n expect(link.getAttribute('data-slot')).toBe('marker')\n })\n\n it('renders MarkerIcon as a hidden span with the marker-icon data-slot', () => {\n const { container } = render(<MarkerIcon className=\"custom-icon\" />)\n\n const icon = container.querySelector('[data-slot=\"marker-icon\"]')\n\n expect(icon?.tagName).toBe('SPAN')\n expect(icon?.getAttribute('aria-hidden')).toBe('true')\n expect(icon?.className).toContain('custom-icon')\n })\n\n it('renders MarkerContent as a span with the marker-content data-slot', () => {\n const { container } = render(<MarkerContent className=\"custom-content\">Content</MarkerContent>)\n\n const content = container.querySelector('[data-slot=\"marker-content\"]')\n\n expect(content?.tagName).toBe('SPAN')\n expect(content?.textContent).toBe('Content')\n expect(content?.className).toContain('custom-content')\n })\n})\n"],"mappings":"4LAIA,SAAS,aAAgB,CACvB,GAAG,sEAAyE,CAC1E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAQ,gBAAsB,CAAA,CAAC,EAEtD,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,EAClC,OAAO,GAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,EAC3D,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,uBAAuB,CAC7D,CAAC,EAED,GAAG,uEAA0E,CAC3E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,QAAQ,YAAY,SAAA,kBAAwB,CAAA,CAAC,EAE5E,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,WAAW,EAC7D,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,aAAa,EACjD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,YAAY,CAClD,CAAC,EAED,GAAG,yCAA4C,CAC7C,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,QAAQ,SAAS,SAAA,eAAqB,CAAA,CAAC,EAEtE,EAAS,EAAU,cAAc,sBAAsB,EAE7D,OAAO,GAAQ,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC1D,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,UAAU,CAChD,CAAC,EAED,GAAG,gEAAmE,CACpE,EACE,EAAC,EAAD,CAAQ,QAAA,GACN,SAAA,EAAC,IAAD,CAAG,KAAK,UAAU,SAAA,aAAc,CAAA,CAC1B,CAAA,CACV,EAEA,IAAM,EAAO,EAAO,UAAU,OAAQ,CAAE,KAAM,aAAc,CAAC,EAE7D,OAAO,EAAK,OAAO,CAAC,CAAC,KAAK,GAAG,EAC7B,OAAO,EAAK,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,CACtD,CAAC,EAED,GAAG,yEAA4E,CAC7E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAY,UAAU,aAAe,CAAA,CAAC,EAE7D,EAAO,EAAU,cAAc,2BAA2B,EAEhE,OAAO,GAAM,OAAO,CAAC,CAAC,KAAK,MAAM,EACjC,OAAO,GAAM,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,EACrD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,aAAa,CACjD,CAAC,EAED,GAAG,wEAA2E,CAC5E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAe,UAAU,iBAAiB,SAAA,SAAsB,CAAA,CAAC,EAExF,EAAU,EAAU,cAAc,8BAA8B,EAEtE,OAAO,GAAS,OAAO,CAAC,CAAC,KAAK,MAAM,EACpC,OAAO,GAAS,WAAW,CAAC,CAAC,KAAK,SAAS,EAC3C,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,gBAAgB,CACvD,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../use-mask-DBvFShXA.js";import{t}from"../mask-input-cCmVKrHj.js";import{r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r}from"react/jsx-runtime";const i=vi.hoisted(()=>({ref:vi.fn(),useMask:vi.fn()}));vi.mock(`../hooks/use-mask`,()=>({useMask:i.useMask})),describe(`MaskInput`,()=>{beforeEach(()=>{i.useMask.mockReturnValue(i.ref)}),it(`renders an input with the mask-input data-slot`,()=>{let{container:e}=n(r(t,{mask:`___-___`}));expect(e.querySelector(`[data-slot="mask-input"]`)).not.toBeNull()}),it(`wires the mask hook with the mask prop and related options`,()=>{n(r(t,{mask:`(___) ___-____`,replacement:{_:/\d/},showMask:!0,separate:!0})),expect(e).toHaveBeenCalledWith({mask:`(___) ___-____`,replacement:{_:/\d/},showMask:!0,separate:!0,track:void 0,modify:void 0})}),it(`attaches the mask ref returned by the hook to the rendered input element`,()=>{let{container:e}=n(r(t,{mask:`___-___`})),a=e.querySelector(`[data-slot="mask-input"]`);expect(i.ref).toHaveBeenCalledWith(a)}),it(`forwards standard input props such as placeholder and disabled`,()=>{let{container:e}=n(r(t,{mask:`___-___`,placeholder:`Enter code`,disabled:!0})),i=e.querySelector(`[data-slot="mask-input"]`);expect(i.placeholder).toBe(`Enter code`),expect(i.disabled).toBe(!0)}),it(`forwards an external ref alongside the mask ref`,()=>{let e={current:null},{container:i}=n(r(t,{mask:`___-___`,ref:e}));expect(e.current).toBe(i.querySelector(`[data-slot="mask-input"]`))})});
|
|
2
|
-
//# sourceMappingURL=mask-input.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mask-input.spec.js","names":[],"sources":["../../src/components/mask-input.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nconst maskMock = vi.hoisted(() => {\n return {\n ref: vi.fn(),\n useMask: vi.fn()\n }\n})\n\nvi.mock('../hooks/use-mask', () => ({\n useMask: maskMock.useMask\n}))\n\nimport { useMask } from '../hooks/use-mask'\nimport { MaskInput } from './mask-input'\n\ndescribe('MaskInput', () => {\n beforeEach(() => {\n maskMock.useMask.mockReturnValue(maskMock.ref)\n })\n\n it('renders an input with the mask-input data-slot', () => {\n const { container } = render(<MaskInput mask=\"___-___\" />)\n\n expect(container.querySelector('[data-slot=\"mask-input\"]')).not.toBeNull()\n })\n\n it('wires the mask hook with the mask prop and related options', () => {\n render(<MaskInput mask=\"(___) ___-____\" replacement={{ _: /\\d/ }} showMask separate />)\n\n expect(useMask).toHaveBeenCalledWith({\n mask: '(___) ___-____',\n replacement: { _: /\\d/ },\n showMask: true,\n separate: true,\n track: undefined,\n modify: undefined\n })\n })\n\n it('attaches the mask ref returned by the hook to the rendered input element', () => {\n const { container } = render(<MaskInput mask=\"___-___\" />)\n\n const input = container.querySelector('[data-slot=\"mask-input\"]')\n\n expect(maskMock.ref).toHaveBeenCalledWith(input)\n })\n\n it('forwards standard input props such as placeholder and disabled', () => {\n const { container } = render(<MaskInput mask=\"___-___\" placeholder=\"Enter code\" disabled />)\n\n const input = container.querySelector('[data-slot=\"mask-input\"]') as HTMLInputElement\n\n expect(input.placeholder).toBe('Enter code')\n expect(input.disabled).toBe(true)\n })\n\n it('forwards an external ref alongside the mask ref', () => {\n const ref = { current: null as HTMLInputElement | null }\n\n const { container } = render(<MaskInput mask=\"___-___\" ref={ref} />)\n\n expect(ref.current).toBe(container.querySelector('[data-slot=\"mask-input\"]'))\n })\n})\n"],"mappings":"kNAEA,MAAM,EAAW,GAAG,aACX,CACL,IAAK,GAAG,GAAG,EACX,QAAS,GAAG,GAAG,CACjB,EACD,EAED,GAAG,KAAK,yBAA4B,CAClC,QAAS,EAAS,OACpB,EAAE,EAKF,SAAS,gBAAmB,CAC1B,eAAiB,CACf,EAAS,QAAQ,gBAAgB,EAAS,GAAG,CAC/C,CAAC,EAED,GAAG,qDAAwD,CACzD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,KAAK,SAAW,CAAA,CAAC,EAEzD,OAAO,EAAU,cAAc,0BAA0B,CAAC,CAAC,CAAC,IAAI,SAAS,CAC3E,CAAC,EAED,GAAG,iEAAoE,CACrE,EAAO,EAAC,EAAD,CAAW,KAAK,iBAAiB,YAAa,CAAE,EAAG,IAAK,EAAG,SAAA,GAAS,SAAA,EAAU,CAAA,CAAC,EAEtF,OAAO,CAAO,CAAC,CAAC,qBAAqB,CACnC,KAAM,iBACN,YAAa,CAAE,EAAG,IAAK,EACvB,SAAU,GACV,SAAU,GACV,MAAO,IAAA,GACP,OAAQ,IAAA,EACV,CAAC,CACH,CAAC,EAED,GAAG,+EAAkF,CACnF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,KAAK,SAAW,CAAA,CAAC,EAEnD,EAAQ,EAAU,cAAc,0BAA0B,EAEhE,OAAO,EAAS,GAAG,CAAC,CAAC,qBAAqB,CAAK,CACjD,CAAC,EAED,GAAG,qEAAwE,CACzE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,KAAK,UAAU,YAAY,aAAa,SAAA,EAAU,CAAA,CAAC,EAErF,EAAQ,EAAU,cAAc,0BAA0B,EAEhE,OAAO,EAAM,WAAW,CAAC,CAAC,KAAK,YAAY,EAC3C,OAAO,EAAM,QAAQ,CAAC,CAAC,KAAK,EAAI,CAClC,CAAC,EAED,GAAG,sDAAyD,CAC1D,IAAM,EAAM,CAAE,QAAS,IAAgC,EAEjD,CAAE,aAAc,EAAO,EAAC,EAAD,CAAW,KAAK,UAAe,KAAM,CAAA,CAAC,EAEnE,OAAO,EAAI,OAAO,CAAC,CAAC,KAAK,EAAU,cAAc,0BAA0B,CAAC,CAC9E,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{n,r,t as i}from"../native-select-Iq25QUH-.js";import{a,n as o,r as s}from"../react.esm-dE9nuHcL.js";import{jsx as c,jsxs as l}from"react/jsx-runtime";describe(`NativeSelect`,()=>{it(`renders a select with its wrapper, icon and default size`,()=>{let{container:e}=s(l(i,{children:[c(r,{value:`react`,children:`React`}),c(r,{value:`vue`,children:`Vue`})]})),t=e.querySelector(`[data-slot="native-select-wrapper"]`),n=e.querySelector(`[data-slot="native-select"]`),a=e.querySelector(`[data-slot="native-select-icon"]`);expect(t?.getAttribute(`data-size`)).toBe(`md`),expect(n?.tagName).toBe(`SELECT`),expect(n?.getAttribute(`data-size`)).toBe(`md`),expect(a?.getAttribute(`aria-hidden`)).toBe(`true`)}),it(`applies the sm size to both the wrapper and the select`,()=>{let{container:e}=s(c(i,{size:`sm`,children:c(r,{value:`a`,children:`A`})})),t=e.querySelector(`[data-slot="native-select-wrapper"]`),n=e.querySelector(`[data-slot="native-select"]`);expect(t?.getAttribute(`data-size`)).toBe(`sm`),expect(n?.getAttribute(`data-size`)).toBe(`sm`),expect(n?.className).toContain(`data-[size=sm]:h-7`)}),it(`updates the value when a different option is selected`,()=>{s(l(i,{defaultValue:`react`,children:[c(r,{value:`react`,children:`React`}),c(r,{value:`vue`,children:`Vue`})]}));let e=a.getByRole(`combobox`);expect(e.value).toBe(`react`),o.change(e,{target:{value:`vue`}}),expect(e.value).toBe(`vue`)}),it(`groups options under an optgroup with the expected data-slot`,()=>{let{container:e}=s(c(i,{children:l(n,{label:`Frameworks`,children:[c(r,{value:`react`,children:`React`}),c(r,{value:`vue`,children:`Vue`})]})})),t=e.querySelector(`[data-slot="native-select-optgroup"]`);expect(t?.tagName).toBe(`OPTGROUP`),expect(t?.getAttribute(`label`)).toBe(`Frameworks`),expect(t?.querySelectorAll(`[data-slot="native-select-option"]`)).toHaveLength(2)}),it(`reflects the disabled state on the select element while keeping the static opacity utility class`,()=>{let{container:e}=s(c(i,{disabled:!0,children:c(r,{value:`a`,children:`A`})})),t=e.querySelector(`[data-slot="native-select-wrapper"]`),n=e.querySelector(`[data-slot="native-select"]`);expect(n.disabled).toBe(!0),expect(t?.className).toContain(`has-[select:disabled]:opacity-50`)}),it(`wires the generated Field control id onto the select when used inside a Field`,()=>{s(l(t,{children:[c(e,{children:`Framework`}),c(i,{children:c(r,{value:`react`,children:`React`})})]}));let n=a.getByLabelText(`Framework`),o=a.getByText(`Framework`);expect(n.getAttribute(`id`)).toBeTruthy(),expect(o.getAttribute(`for`)).toBe(n.getAttribute(`id`))}),it(`does not assign an id or throw when rendered outside a Field`,()=>{let{container:e}=s(c(i,{children:c(r,{value:`a`,children:`A`})}));expect(e.querySelector(`[data-slot="native-select"]`)?.getAttribute(`id`)).toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=native-select.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native-select.spec.js","names":[],"sources":["../../src/components/native-select.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { NativeSelect, NativeSelectOptGroup, NativeSelectOption } from './native-select'\n\ndescribe('NativeSelect', () => {\n it('renders a select with its wrapper, icon and default size', () => {\n const { container } = render(\n <NativeSelect>\n <NativeSelectOption value=\"react\">React</NativeSelectOption>\n <NativeSelectOption value=\"vue\">Vue</NativeSelectOption>\n </NativeSelect>\n )\n\n const wrapper = container.querySelector('[data-slot=\"native-select-wrapper\"]')\n const select = container.querySelector('[data-slot=\"native-select\"]')\n const icon = container.querySelector('[data-slot=\"native-select-icon\"]')\n\n expect(wrapper?.getAttribute('data-size')).toBe('md')\n expect(select?.tagName).toBe('SELECT')\n expect(select?.getAttribute('data-size')).toBe('md')\n expect(icon?.getAttribute('aria-hidden')).toBe('true')\n })\n\n it('applies the sm size to both the wrapper and the select', () => {\n const { container } = render(\n <NativeSelect size=\"sm\">\n <NativeSelectOption value=\"a\">A</NativeSelectOption>\n </NativeSelect>\n )\n\n const wrapper = container.querySelector('[data-slot=\"native-select-wrapper\"]')\n const select = container.querySelector('[data-slot=\"native-select\"]')\n\n expect(wrapper?.getAttribute('data-size')).toBe('sm')\n expect(select?.getAttribute('data-size')).toBe('sm')\n expect(select?.className).toContain('data-[size=sm]:h-7')\n })\n\n it('updates the value when a different option is selected', () => {\n render(\n <NativeSelect defaultValue=\"react\">\n <NativeSelectOption value=\"react\">React</NativeSelectOption>\n <NativeSelectOption value=\"vue\">Vue</NativeSelectOption>\n </NativeSelect>\n )\n\n const select = screen.getByRole('combobox') as HTMLSelectElement\n expect(select.value).toBe('react')\n\n fireEvent.change(select, { target: { value: 'vue' } })\n\n expect(select.value).toBe('vue')\n })\n\n it('groups options under an optgroup with the expected data-slot', () => {\n const { container } = render(\n <NativeSelect>\n <NativeSelectOptGroup label=\"Frameworks\">\n <NativeSelectOption value=\"react\">React</NativeSelectOption>\n <NativeSelectOption value=\"vue\">Vue</NativeSelectOption>\n </NativeSelectOptGroup>\n </NativeSelect>\n )\n\n const optgroup = container.querySelector('[data-slot=\"native-select-optgroup\"]')\n expect(optgroup?.tagName).toBe('OPTGROUP')\n expect(optgroup?.getAttribute('label')).toBe('Frameworks')\n expect(optgroup?.querySelectorAll('[data-slot=\"native-select-option\"]')).toHaveLength(2)\n })\n\n it('reflects the disabled state on the select element while keeping the static opacity utility class', () => {\n const { container } = render(\n <NativeSelect disabled>\n <NativeSelectOption value=\"a\">A</NativeSelectOption>\n </NativeSelect>\n )\n\n const wrapper = container.querySelector('[data-slot=\"native-select-wrapper\"]')\n const select = container.querySelector('[data-slot=\"native-select\"]') as HTMLSelectElement\n\n expect(select.disabled).toBe(true)\n expect(wrapper?.className).toContain('has-[select:disabled]:opacity-50')\n })\n\n it('wires the generated Field control id onto the select when used inside a Field', () => {\n render(\n <Field>\n <FieldLabel>Framework</FieldLabel>\n <NativeSelect>\n <NativeSelectOption value=\"react\">React</NativeSelectOption>\n </NativeSelect>\n </Field>\n )\n\n const select = screen.getByLabelText('Framework')\n const label = screen.getByText('Framework')\n\n expect(select.getAttribute('id')).toBeTruthy()\n expect(label.getAttribute('for')).toBe(select.getAttribute('id'))\n })\n\n it('does not assign an id or throw when rendered outside a Field', () => {\n const { container } = render(\n <NativeSelect>\n <NativeSelectOption value=\"a\">A</NativeSelectOption>\n </NativeSelect>\n )\n\n expect(container.querySelector('[data-slot=\"native-select\"]')?.getAttribute('id')).toBeNull()\n })\n})\n"],"mappings":"gPAKA,SAAS,mBAAsB,CAC7B,GAAG,+DAAkE,CACnE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAoB,MAAM,QAAQ,SAAA,OAAyB,CAAA,EAC3D,EAAC,EAAD,CAAoB,MAAM,MAAM,SAAA,KAAuB,CAAA,CAC3C,CAAA,CAAA,CAChB,EAEM,EAAU,EAAU,cAAc,qCAAqC,EACvE,EAAS,EAAU,cAAc,6BAA6B,EAC9D,EAAO,EAAU,cAAc,kCAAkC,EAEvE,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAQ,OAAO,CAAC,CAAC,KAAK,QAAQ,EACrC,OAAO,GAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACnD,OAAO,GAAM,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,CACvD,CAAC,EAED,GAAG,6DAAgE,CACjE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAc,KAAK,KACjB,SAAA,EAAC,EAAD,CAAoB,MAAM,IAAI,SAAA,GAAqB,CAAA,CACvC,CAAA,CAChB,EAEM,EAAU,EAAU,cAAc,qCAAqC,EACvE,EAAS,EAAU,cAAc,6BAA6B,EAEpE,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACnD,OAAO,GAAQ,SAAS,CAAC,CAAC,UAAU,oBAAoB,CAC1D,CAAC,EAED,GAAG,4DAA+D,CAChE,EACE,EAAC,EAAD,CAAc,aAAa,QAA3B,SAAA,CACE,EAAC,EAAD,CAAoB,MAAM,QAAQ,SAAA,OAAyB,CAAA,EAC3D,EAAC,EAAD,CAAoB,MAAM,MAAM,SAAA,KAAuB,CAAA,CAC3C,CAChB,CAAA,CAAA,EAEA,IAAM,EAAS,EAAO,UAAU,UAAU,EAC1C,OAAO,EAAO,KAAK,CAAC,CAAC,KAAK,OAAO,EAEjC,EAAU,OAAO,EAAQ,CAAE,OAAQ,CAAE,MAAO,KAAM,CAAE,CAAC,EAErD,OAAO,EAAO,KAAK,CAAC,CAAC,KAAK,KAAK,CACjC,CAAC,EAED,GAAG,mEAAsE,CACvE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAsB,MAAM,aAA5B,SAAA,CACE,EAAC,EAAD,CAAoB,MAAM,QAAQ,SAAA,OAAyB,CAAA,EAC3D,EAAC,EAAD,CAAoB,MAAM,MAAM,SAAA,KAAuB,CAAA,CACnC,CACV,CAAA,CAAA,CAAA,CAChB,EAEM,EAAW,EAAU,cAAc,sCAAsC,EAC/E,OAAO,GAAU,OAAO,CAAC,CAAC,KAAK,UAAU,EACzC,OAAO,GAAU,aAAa,OAAO,CAAC,CAAC,CAAC,KAAK,YAAY,EACzD,OAAO,GAAU,iBAAiB,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CACzF,CAAC,EAED,GAAG,uGAA0G,CAC3G,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAc,SAAA,GACZ,SAAA,EAAC,EAAD,CAAoB,MAAM,IAAI,SAAA,GAAqB,CAAA,CACvC,CAAA,CAChB,EAEM,EAAU,EAAU,cAAc,qCAAqC,EACvE,EAAS,EAAU,cAAc,6BAA6B,EAEpE,OAAO,EAAO,QAAQ,CAAC,CAAC,KAAK,EAAI,EACjC,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,kCAAkC,CACzE,CAAC,EAED,GAAG,oFAAuF,CACxF,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,WAAqB,CAAA,EACjC,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,MAAM,QAAQ,SAAA,OAAyB,CAAA,CAC/C,CAAA,CACT,CAAA,CAAA,CACT,EAEA,IAAM,EAAS,EAAO,eAAe,WAAW,EAC1C,EAAQ,EAAO,UAAU,WAAW,EAE1C,OAAO,EAAO,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,EAC7C,OAAO,EAAM,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,EAAO,aAAa,IAAI,CAAC,CAClE,CAAC,EAED,GAAG,mEAAsE,CACvE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,MAAM,IAAI,SAAA,GAAqB,CAAA,CACvC,CAAA,CAChB,EAEA,OAAO,EAAU,cAAc,6BAA6B,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAC9F,CAAC,CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,i as t,l as n,n as r,o as i,r as a,s as o,t as s}from"../navigation-menu-B6drNL1-.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";if(globalThis.ResizeObserver===void 0){class ResizeObserverStub{observe(){}unobserve(){}disconnect(){}}globalThis.ResizeObserver=ResizeObserverStub}describe(`NavigationMenu`,()=>{it(`renders the root with its data-slot and data-viewport attribute`,()=>{let{container:n}=u(d(s,{children:d(i,{children:d(t,{children:d(e,{href:`#`,children:`Home`})})})})),r=n.querySelector(`[data-slot="navigation-menu"]`);expect(r?.getAttribute(`data-viewport`)).toBe(`true`)}),it(`mounts the viewport once an item opens when viewport defaults to true`,async()=>{let{container:n}=u(d(s,{children:d(i,{children:f(t,{children:[d(o,{children:`Products`}),d(r,{children:d(e,{href:`/widgets`,children:`Widgets`})})]})})}));expect(n.querySelector(`[data-slot="navigation-menu-viewport"]`)).toBeNull(),l.click(c.getByRole(`button`,{name:/Products/})),await c.findByText(`Widgets`),expect(n.querySelector(`[data-slot="navigation-menu-viewport"]`)).not.toBeNull()}),it(`never mounts a viewport when viewport is false, even once an item opens`,async()=>{let{container:n}=u(d(s,{viewport:!1,children:d(i,{children:f(t,{children:[d(o,{children:`Products`}),d(r,{children:d(e,{href:`/widgets`,children:`Widgets`})})]})})})),a=n.querySelector(`[data-slot="navigation-menu"]`);expect(a?.getAttribute(`data-viewport`)).toBe(`false`),l.click(c.getByRole(`button`,{name:/Products/})),await c.findByText(`Widgets`),expect(n.querySelector(`[data-slot="navigation-menu-viewport"]`)).toBeNull()}),describe(`NavigationMenuTrigger`,()=>{it(`opens its content when clicked and exposes the open state`,async()=>{u(d(s,{children:d(i,{children:f(t,{children:[d(o,{children:`Products`}),d(r,{children:d(e,{href:`/widgets`,children:`Widgets`})})]})})}));let n=c.getByRole(`button`,{name:/Products/});expect(n.getAttribute(`aria-expanded`)).toBe(`false`),expect(n.getAttribute(`data-slot`)).toBe(`navigation-menu-trigger`),l.click(n),expect(n.getAttribute(`aria-expanded`)).toBe(`true`),expect(await c.findByText(`Widgets`)).not.toBeNull()}),it(`renders inline content (no viewport) when viewport is false`,async()=>{let{container:n}=u(d(s,{viewport:!1,children:d(i,{children:f(t,{children:[d(o,{children:`Products`}),d(r,{children:d(e,{href:`/widgets`,children:`Widgets`})})]})})}));l.click(c.getByRole(`button`,{name:/Products/}));let a=await c.findByText(`Widgets`);expect(a.closest(`[data-slot="navigation-menu-content"]`)).not.toBeNull(),expect(n.querySelector(`[data-slot="navigation-menu-viewport"]`)).toBeNull()})}),it(`renders NavigationMenuLink with data-active and its focus/hover classes`,()=>{u(d(s,{viewport:!1,children:d(i,{children:d(t,{children:d(e,{href:`#`,active:!0,children:`Current page`})})})}));let n=c.getByRole(`link`,{name:`Current page`});expect(n.getAttribute(`data-slot`)).toBe(`navigation-menu-link`),expect(n.getAttribute(`data-active`)).toBe(``),expect(n.getAttribute(`aria-current`)).toBe(`page`),expect(n.className).toContain(`rounded-lg`)}),it(`renders NavigationMenuItem and NavigationMenuList with their data-slots`,()=>{let{container:n}=u(d(s,{viewport:!1,children:d(i,{children:d(t,{children:d(e,{href:`#`,children:`Home`})})})}));expect(n.querySelector(`[data-slot="navigation-menu-list"]`)).not.toBeNull(),expect(n.querySelector(`[data-slot="navigation-menu-item"]`)).not.toBeNull()}),it(`renders NavigationMenuIndicator without throwing`,()=>{let{container:n}=u(d(s,{viewport:!1,children:f(i,{children:[d(t,{children:d(e,{href:`#`,children:`Home`})}),d(a,{})]})}));expect(n.querySelector(`[data-slot="navigation-menu-list"]`)).not.toBeNull()}),it(`exposes navigationMenuTriggerStyle as a reusable class string`,()=>{expect(n()).toContain(`inline-flex`)})});
|
|
2
|
-
//# sourceMappingURL=navigation-menu.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-menu.spec.js","names":[],"sources":["../../src/components/navigation-menu.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle\n} from './navigation-menu'\n\n// Radix's navigation menu unconditionally instantiates a ResizeObserver once its viewport/content\n// mounts (to measure and animate the viewport size). jsdom has no native implementation.\nif (typeof globalThis.ResizeObserver === 'undefined') {\n class ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n\n globalThis.ResizeObserver = ResizeObserverStub\n}\n\ndescribe('NavigationMenu', () => {\n it('renders the root with its data-slot and data-viewport attribute', () => {\n const { container } = render(\n <NavigationMenu>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuLink href=\"#\">Home</NavigationMenuLink>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n const root = container.querySelector('[data-slot=\"navigation-menu\"]')\n expect(root?.getAttribute('data-viewport')).toBe('true')\n })\n\n it('mounts the viewport once an item opens when viewport defaults to true', async () => {\n const { container } = render(\n <NavigationMenu>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\n <NavigationMenuContent>\n <NavigationMenuLink href=\"/widgets\">Widgets</NavigationMenuLink>\n </NavigationMenuContent>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n expect(container.querySelector('[data-slot=\"navigation-menu-viewport\"]')).toBeNull()\n\n fireEvent.click(screen.getByRole('button', { name: /Products/ }))\n await screen.findByText('Widgets')\n\n expect(container.querySelector('[data-slot=\"navigation-menu-viewport\"]')).not.toBeNull()\n })\n\n it('never mounts a viewport when viewport is false, even once an item opens', async () => {\n const { container } = render(\n <NavigationMenu viewport={false}>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\n <NavigationMenuContent>\n <NavigationMenuLink href=\"/widgets\">Widgets</NavigationMenuLink>\n </NavigationMenuContent>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n const root = container.querySelector('[data-slot=\"navigation-menu\"]')\n expect(root?.getAttribute('data-viewport')).toBe('false')\n\n fireEvent.click(screen.getByRole('button', { name: /Products/ }))\n await screen.findByText('Widgets')\n\n expect(container.querySelector('[data-slot=\"navigation-menu-viewport\"]')).toBeNull()\n })\n\n describe('NavigationMenuTrigger', () => {\n it('opens its content when clicked and exposes the open state', async () => {\n render(\n <NavigationMenu>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\n <NavigationMenuContent>\n <NavigationMenuLink href=\"/widgets\">Widgets</NavigationMenuLink>\n </NavigationMenuContent>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n const trigger = screen.getByRole('button', { name: /Products/ })\n expect(trigger.getAttribute('aria-expanded')).toBe('false')\n expect(trigger.getAttribute('data-slot')).toBe('navigation-menu-trigger')\n\n fireEvent.click(trigger)\n\n expect(trigger.getAttribute('aria-expanded')).toBe('true')\n expect(await screen.findByText('Widgets')).not.toBeNull()\n })\n\n it('renders inline content (no viewport) when viewport is false', async () => {\n const { container } = render(\n <NavigationMenu viewport={false}>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\n <NavigationMenuContent>\n <NavigationMenuLink href=\"/widgets\">Widgets</NavigationMenuLink>\n </NavigationMenuContent>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n fireEvent.click(screen.getByRole('button', { name: /Products/ }))\n\n const content = await screen.findByText('Widgets')\n expect(content.closest('[data-slot=\"navigation-menu-content\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"navigation-menu-viewport\"]')).toBeNull()\n })\n })\n\n it('renders NavigationMenuLink with data-active and its focus/hover classes', () => {\n render(\n <NavigationMenu viewport={false}>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuLink href=\"#\" active>\n Current page\n </NavigationMenuLink>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n const link = screen.getByRole('link', { name: 'Current page' })\n expect(link.getAttribute('data-slot')).toBe('navigation-menu-link')\n expect(link.getAttribute('data-active')).toBe('')\n expect(link.getAttribute('aria-current')).toBe('page')\n expect(link.className).toContain('rounded-lg')\n })\n\n it('renders NavigationMenuItem and NavigationMenuList with their data-slots', () => {\n const { container } = render(\n <NavigationMenu viewport={false}>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuLink href=\"#\">Home</NavigationMenuLink>\n </NavigationMenuItem>\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n expect(container.querySelector('[data-slot=\"navigation-menu-list\"]')).not.toBeNull()\n expect(container.querySelector('[data-slot=\"navigation-menu-item\"]')).not.toBeNull()\n })\n\n it('renders NavigationMenuIndicator without throwing', () => {\n const { container } = render(\n <NavigationMenu viewport={false}>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuLink href=\"#\">Home</NavigationMenuLink>\n </NavigationMenuItem>\n <NavigationMenuIndicator />\n </NavigationMenuList>\n </NavigationMenu>\n )\n\n expect(container.querySelector('[data-slot=\"navigation-menu-list\"]')).not.toBeNull()\n })\n\n it('exposes navigationMenuTriggerStyle as a reusable class string', () => {\n expect(navigationMenuTriggerStyle()).toContain('inline-flex')\n })\n})\n"],"mappings":"yPAeA,GAAW,WAAW,iBAAmB,OAAa,CACpD,MAAM,kBAAmB,CACvB,SAAU,CAAC,CACX,WAAY,CAAC,CACb,YAAa,CAAC,CAChB,CAEA,WAAW,eAAiB,kBAC9B,CAEA,SAAS,qBAAwB,CAC/B,GAAG,sEAAyE,CAC1E,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,IAAI,SAAA,MAAwB,CAAA,CACnC,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEM,EAAO,EAAU,cAAc,+BAA+B,EACpE,OAAO,GAAM,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,CACzD,CAAC,EAED,GAAG,wEAAyE,SAAY,CACtF,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAuB,UAA+B,CAAA,EACtD,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,WAAW,SAAA,SAA2B,CAAA,CAC1C,CAAA,CACL,CAAA,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEA,OAAO,EAAU,cAAc,wCAAwC,CAAC,CAAC,CAAC,SAAS,EAEnF,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,UAAW,CAAC,CAAC,EAChE,MAAM,EAAO,WAAW,SAAS,EAEjC,OAAO,EAAU,cAAc,wCAAwC,CAAC,CAAC,CAAC,IAAI,SAAS,CACzF,CAAC,EAED,GAAG,0EAA2E,SAAY,CACxF,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAgB,SAAU,GACxB,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAuB,UAA+B,CAAA,EACtD,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,WAAW,SAAA,SAA2B,CAAA,CAC1C,CAAA,CACL,CAAA,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEM,EAAO,EAAU,cAAc,+BAA+B,EACpE,OAAO,GAAM,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,EAExD,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,UAAW,CAAC,CAAC,EAChE,MAAM,EAAO,WAAW,SAAS,EAEjC,OAAO,EAAU,cAAc,wCAAwC,CAAC,CAAC,CAAC,SAAS,CACrF,CAAC,EAED,SAAS,4BAA+B,CACtC,GAAG,4DAA6D,SAAY,CAC1E,EACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAuB,UAA+B,CAAA,EACtD,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,WAAW,SAAA,SAA2B,CAAA,CAC1C,CAAA,CACL,CAAA,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEA,IAAM,EAAU,EAAO,UAAU,SAAU,CAAE,KAAM,UAAW,CAAC,EAC/D,OAAO,EAAQ,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,EAC1D,OAAO,EAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,yBAAyB,EAExE,EAAU,MAAM,CAAO,EAEvB,OAAO,EAAQ,aAAa,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,EACzD,OAAO,MAAM,EAAO,WAAW,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAC1D,CAAC,EAED,GAAG,8DAA+D,SAAY,CAC5E,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAgB,SAAU,GACxB,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAuB,UAA+B,CAAA,EACtD,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,WAAW,SAAA,SAA2B,CAAA,CAC1C,CAAA,CACL,CAAA,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEA,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,UAAW,CAAC,CAAC,EAEhE,IAAM,EAAU,MAAM,EAAO,WAAW,SAAS,EACjD,OAAO,EAAQ,QAAQ,uCAAuC,CAAC,CAAC,CAAC,IAAI,SAAS,EAC9E,OAAO,EAAU,cAAc,wCAAwC,CAAC,CAAC,CAAC,SAAS,CACrF,CAAC,CACH,CAAC,EAED,GAAG,8EAAiF,CAClF,EACE,EAAC,EAAD,CAAgB,SAAU,GACxB,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,IAAI,OAAA,GAAO,SAAA,cAEhB,CAAA,CACF,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEA,IAAM,EAAO,EAAO,UAAU,OAAQ,CAAE,KAAM,cAAe,CAAC,EAC9D,OAAO,EAAK,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,sBAAsB,EAClE,OAAO,EAAK,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,EAChD,OAAO,EAAK,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EACrD,OAAO,EAAK,SAAS,CAAC,CAAC,UAAU,YAAY,CAC/C,CAAC,EAED,GAAG,8EAAiF,CAClF,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAgB,SAAU,GACxB,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,IAAI,SAAA,MAAwB,CAAA,CACnC,CAAA,CACF,CAAA,CACN,CAAA,CAClB,EAEA,OAAO,EAAU,cAAc,oCAAoC,CAAC,CAAC,CAAC,IAAI,SAAS,EACnF,OAAO,EAAU,cAAc,oCAAoC,CAAC,CAAC,CAAC,IAAI,SAAS,CACrF,CAAC,EAED,GAAG,uDAA0D,CAC3D,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAgB,SAAU,GACxB,SAAA,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,KAAK,IAAI,SAAA,MAAwB,CAAA,CACnC,CAAA,EACpB,EAAC,EAAD,CAA0B,CAAA,CACR,CAAA,CAAA,CACN,CAAA,CAClB,EAEA,OAAO,EAAU,cAAc,oCAAoC,CAAC,CAAC,CAAC,IAAI,SAAS,CACrF,CAAC,EAED,GAAG,oEAAuE,CACxE,OAAO,EAA2B,CAAC,CAAC,CAAC,UAAU,aAAa,CAC9D,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{a as n,i as r,n as i,o as a,r as o,t as s}from"../number-field-rEMfZa6A.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";function renderNumberField(e={}){return u(d(s,{...e,children:f(o,{children:[d(i,{}),d(n,{}),d(r,{})]})}))}describe(`NumberField`,()=>{it(`renders the root with its data-slot and default size`,()=>{let{container:e}=renderNumberField({defaultValue:0}),t=e.querySelector(`[data-slot="number-field"]`);expect(t).not.toBeNull(),expect(t?.getAttribute(`data-size`)).toBe(`md`)}),it(`increments and decrements the value via the stepper buttons`,()=>{let e=vi.fn();renderNumberField({defaultValue:5,onValueChange:e});let t=c.getByRole(`textbox`),n=c.getByRole(`button`,{name:`Increase`}),r=c.getByRole(`button`,{name:`Decrease`});l.click(n),expect(t.value).toBe(`6`),expect(e).toHaveBeenLastCalledWith(6,expect.anything()),l.click(r),l.click(r),expect(t.value).toBe(`4`)}),it(`respects min/max boundaries when stepping`,()=>{renderNumberField({defaultValue:10,min:0,max:10});let e=c.getByRole(`textbox`),t=c.getByRole(`button`,{name:`Increase`});l.click(t),expect(e.value).toBe(`10`)}),it(`disables the stepper buttons and input when disabled`,()=>{renderNumberField({defaultValue:0,disabled:!0}),expect(c.getByRole(`button`,{name:`Increase`}).disabled).toBe(!0),expect(c.getByRole(`button`,{name:`Decrease`}).disabled).toBe(!0),expect(c.getByRole(`textbox`).disabled).toBe(!0)}),describe(`NumberFieldGroup`,()=>{it(`applies the size variant classes`,()=>{let{container:e}=u(d(s,{defaultValue:0,size:`lg`,children:d(o,{children:d(n,{})})})),t=e.querySelector(`[data-slot="number-field-group"]`);expect(t?.className).toContain(`h-9`)}),it(`throws when rendered outside a NumberField`,()=>{let e=vi.spyOn(console,`error`).mockImplementation(()=>{});expect(()=>u(d(o,{}))).toThrow(`NumberFieldGroup must be used within a NumberField component.`),e.mockRestore()})}),describe(`NumberFieldIncrement / NumberFieldDecrement`,()=>{it(`throw when rendered outside a NumberField`,()=>{let e=vi.spyOn(console,`error`).mockImplementation(()=>{});expect(()=>u(d(r,{}))).toThrow(`NumberFieldIncrement must be used within a NumberField component.`),expect(()=>u(d(i,{}))).toThrow(`NumberFieldDecrement must be used within a NumberField component.`),e.mockRestore()})}),describe(`NumberFieldInput`,()=>{it(`throws when rendered outside a NumberField`,()=>{let e=vi.spyOn(console,`error`).mockImplementation(()=>{});expect(()=>u(d(n,{}))).toThrow(`NumberFieldInput must be used within a NumberField component.`),e.mockRestore()}),it(`wires the generated Field control id when used inside a Field`,()=>{u(f(t,{children:[d(e,{children:`Quantity`}),d(s,{defaultValue:1,children:d(o,{children:d(n,{})})})]}));let r=c.getByLabelText(`Quantity`),i=c.getByText(`Quantity`);expect(r.getAttribute(`id`)).toBeTruthy(),expect(i.getAttribute(`for`)).toBe(r.getAttribute(`id`))})}),describe(`NumberFieldScrubArea`,()=>{it(`renders a label wired to the field id and throws outside a NumberField`,()=>{let{container:e}=u(f(s,{defaultValue:0,children:[d(a,{label:`Drag to scrub`}),d(o,{children:d(n,{})})]})),t=c.getByText(`Drag to scrub`),r=e.querySelector(`[data-slot="number-field-input"]`);expect(t.getAttribute(`for`)).toBe(r?.getAttribute(`id`));let i=vi.spyOn(console,`error`).mockImplementation(()=>{});expect(()=>u(d(a,{label:`Standalone`}))).toThrow(`NumberFieldScrubArea must be used within a NumberField component for accessibility.`),i.mockRestore()})})});
|
|
2
|
-
//# sourceMappingURL=number-field.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"number-field.spec.js","names":[],"sources":["../../src/components/number-field.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport {\n NumberField,\n NumberFieldDecrement,\n NumberFieldGroup,\n NumberFieldIncrement,\n NumberFieldInput,\n NumberFieldScrubArea\n} from './number-field'\n\nfunction renderNumberField(props: Partial<React.ComponentProps<typeof NumberField>> = {}) {\n return render(\n <NumberField {...props}>\n <NumberFieldGroup>\n <NumberFieldDecrement />\n <NumberFieldInput />\n <NumberFieldIncrement />\n </NumberFieldGroup>\n </NumberField>\n )\n}\n\ndescribe('NumberField', () => {\n it('renders the root with its data-slot and default size', () => {\n const { container } = renderNumberField({ defaultValue: 0 })\n const root = container.querySelector('[data-slot=\"number-field\"]')\n\n expect(root).not.toBeNull()\n expect(root?.getAttribute('data-size')).toBe('md')\n })\n\n it('increments and decrements the value via the stepper buttons', () => {\n const handleValueChange = vi.fn()\n renderNumberField({ defaultValue: 5, onValueChange: handleValueChange })\n\n const input = screen.getByRole('textbox') as HTMLInputElement\n const increment = screen.getByRole('button', { name: 'Increase' })\n const decrement = screen.getByRole('button', { name: 'Decrease' })\n\n fireEvent.click(increment)\n expect(input.value).toBe('6')\n expect(handleValueChange).toHaveBeenLastCalledWith(6, expect.anything())\n\n fireEvent.click(decrement)\n fireEvent.click(decrement)\n expect(input.value).toBe('4')\n })\n\n it('respects min/max boundaries when stepping', () => {\n renderNumberField({ defaultValue: 10, min: 0, max: 10 })\n\n const input = screen.getByRole('textbox') as HTMLInputElement\n const increment = screen.getByRole('button', { name: 'Increase' })\n\n fireEvent.click(increment)\n\n expect(input.value).toBe('10')\n })\n\n it('disables the stepper buttons and input when disabled', () => {\n renderNumberField({ defaultValue: 0, disabled: true })\n\n expect((screen.getByRole('button', { name: 'Increase' }) as HTMLButtonElement).disabled).toBe(true)\n expect((screen.getByRole('button', { name: 'Decrease' }) as HTMLButtonElement).disabled).toBe(true)\n expect((screen.getByRole('textbox') as HTMLInputElement).disabled).toBe(true)\n })\n\n describe('NumberFieldGroup', () => {\n it('applies the size variant classes', () => {\n const { container } = render(\n <NumberField defaultValue={0} size=\"lg\">\n <NumberFieldGroup>\n <NumberFieldInput />\n </NumberFieldGroup>\n </NumberField>\n )\n\n const group = container.querySelector('[data-slot=\"number-field-group\"]')\n expect(group?.className).toContain('h-9')\n })\n\n it('throws when rendered outside a NumberField', () => {\n const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})\n\n expect(() => render(<NumberFieldGroup />)).toThrow(\n 'NumberFieldGroup must be used within a NumberField component.'\n )\n\n consoleError.mockRestore()\n })\n })\n\n describe('NumberFieldIncrement / NumberFieldDecrement', () => {\n it('throw when rendered outside a NumberField', () => {\n const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})\n\n expect(() => render(<NumberFieldIncrement />)).toThrow(\n 'NumberFieldIncrement must be used within a NumberField component.'\n )\n expect(() => render(<NumberFieldDecrement />)).toThrow(\n 'NumberFieldDecrement must be used within a NumberField component.'\n )\n\n consoleError.mockRestore()\n })\n })\n\n describe('NumberFieldInput', () => {\n it('throws when rendered outside a NumberField', () => {\n const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})\n\n expect(() => render(<NumberFieldInput />)).toThrow(\n 'NumberFieldInput must be used within a NumberField component.'\n )\n\n consoleError.mockRestore()\n })\n\n it('wires the generated Field control id when used inside a Field', () => {\n render(\n <Field>\n <FieldLabel>Quantity</FieldLabel>\n <NumberField defaultValue={1}>\n <NumberFieldGroup>\n <NumberFieldInput />\n </NumberFieldGroup>\n </NumberField>\n </Field>\n )\n\n const input = screen.getByLabelText('Quantity')\n const label = screen.getByText('Quantity')\n\n expect(input.getAttribute('id')).toBeTruthy()\n expect(label.getAttribute('for')).toBe(input.getAttribute('id'))\n })\n })\n\n describe('NumberFieldScrubArea', () => {\n it('renders a label wired to the field id and throws outside a NumberField', () => {\n const { container } = render(\n <NumberField defaultValue={0}>\n <NumberFieldScrubArea label=\"Drag to scrub\" />\n <NumberFieldGroup>\n <NumberFieldInput />\n </NumberFieldGroup>\n </NumberField>\n )\n\n const label = screen.getByText('Drag to scrub')\n const input = container.querySelector('[data-slot=\"number-field-input\"]')\n\n expect(label.getAttribute('for')).toBe(input?.getAttribute('id'))\n\n const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {})\n expect(() => render(<NumberFieldScrubArea label=\"Standalone\" />)).toThrow(\n 'NumberFieldScrubArea must be used within a NumberField component for accessibility.'\n )\n consoleError.mockRestore()\n })\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"../pagination-gnUKddCN.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";describe(`Pagination`,()=>{it(`renders the nav landmark with its data-slot and aria-label`,()=>{l(u(o,{color:`brand`,children:u(n,{})}));let e=s.getByRole(`navigation`,{name:`pagination`});expect(e.getAttribute(`data-slot`)).toBe(`pagination`),expect(e.getAttribute(`data-color`)).toBe(`brand`)}),it(`renders PaginationContent and PaginationItem with their data-slots`,()=>{let{container:r}=l(u(o,{children:u(n,{children:u(t,{children:u(e,{href:`#`,children:`1`})})})}));expect(r.querySelector(`[data-slot="pagination-content"]`)?.tagName).toBe(`UL`),expect(r.querySelector(`[data-slot="pagination-item"]`)?.tagName).toBe(`LI`)}),describe(`PaginationLink`,()=>{it(`marks the active page and falls back to the secondary variant otherwise`,()=>{l(u(o,{children:d(n,{children:[u(t,{children:u(e,{href:`#`,isActive:!0,children:`1`})}),u(t,{children:u(e,{href:`#`,children:`2`})})]})}));let r=s.getByText(`1`),i=s.getByText(`2`);expect(r.getAttribute(`aria-current`)).toBe(`page`),expect(r.getAttribute(`data-active`)).toBe(`true`),expect(r.getAttribute(`data-variant`)).toBe(`solid`),expect(i.getAttribute(`aria-current`)).toBeNull(),expect(i.getAttribute(`data-variant`)).toBe(`secondary`)}),it(`fires a click handler for page navigation`,()=>{let r=vi.fn();l(u(o,{children:u(n,{children:u(t,{children:u(e,{href:`#`,onClick:r,children:`2`})})})})),c.click(s.getByText(`2`)),expect(r).toHaveBeenCalledTimes(1)}),it(`uses the color from the surrounding Pagination context over its own default`,()=>{l(u(o,{color:`brand`,children:u(n,{children:u(t,{children:u(e,{href:`#`,children:`1`})})})})),expect(s.getByText(`1`).getAttribute(`data-color`)).toBe(`brand`)})}),it(`renders PaginationPrevious with its icon and aria-label`,()=>{l(u(o,{children:u(n,{children:u(t,{children:u(a,{href:`#`})})})}));let e=s.getByRole(`link`,{name:`Go to previous page`});expect(e.querySelector(`[data-icon="inline-start"]`)).not.toBeNull()}),it(`renders PaginationNext with optional visible text alongside its icon`,()=>{l(u(o,{children:u(n,{children:u(t,{children:u(r,{href:`#`,text:`Next`})})})}));let e=s.getByRole(`link`,{name:`Go to next page`});expect(e.querySelector(`[data-icon="inline-end"]`)).not.toBeNull();let i=s.getByText(`Next`);expect(i.className).toContain(`hidden`),expect(i.className).toContain(`sm:block`)}),it(`renders PaginationEllipsis with a visually hidden label`,()=>{let{container:e}=l(u(i,{})),t=e.querySelector(`[data-slot="pagination-ellipsis"]`);expect(t?.getAttribute(`aria-hidden`)).toBe(`true`),expect(s.getByText(`More pages`).className).toContain(`sr-only`)}),it(`composes a full pagination list with previous, pages, an ellipsis and next`,()=>{l(u(o,{children:d(n,{children:[u(t,{children:u(a,{href:`#`})}),u(t,{children:u(e,{href:`#`,isActive:!0,children:`1`})}),u(t,{children:u(i,{})}),u(t,{children:u(r,{href:`#`})})]})})),expect(s.getAllByRole(`link`)).toHaveLength(3),expect(s.getByText(`More pages`)).not.toBeNull()})});
|
|
2
|
-
//# sourceMappingURL=pagination.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.spec.js","names":[],"sources":["../../src/components/pagination.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious\n} from './pagination'\n\ndescribe('Pagination', () => {\n it('renders the nav landmark with its data-slot and aria-label', () => {\n render(\n <Pagination color=\"brand\">\n <PaginationContent />\n </Pagination>\n )\n\n const nav = screen.getByRole('navigation', { name: 'pagination' })\n expect(nav.getAttribute('data-slot')).toBe('pagination')\n expect(nav.getAttribute('data-color')).toBe('brand')\n })\n\n it('renders PaginationContent and PaginationItem with their data-slots', () => {\n const { container } = render(\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationLink href=\"#\">1</PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n expect(container.querySelector('[data-slot=\"pagination-content\"]')?.tagName).toBe('UL')\n expect(container.querySelector('[data-slot=\"pagination-item\"]')?.tagName).toBe('LI')\n })\n\n describe('PaginationLink', () => {\n it('marks the active page and falls back to the secondary variant otherwise', () => {\n render(\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationLink href=\"#\" isActive>\n 1\n </PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">2</PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n const activeLink = screen.getByText('1')\n const inactiveLink = screen.getByText('2')\n\n expect(activeLink.getAttribute('aria-current')).toBe('page')\n expect(activeLink.getAttribute('data-active')).toBe('true')\n expect(activeLink.getAttribute('data-variant')).toBe('solid')\n\n expect(inactiveLink.getAttribute('aria-current')).toBeNull()\n expect(inactiveLink.getAttribute('data-variant')).toBe('secondary')\n })\n\n it('fires a click handler for page navigation', () => {\n const handleClick = vi.fn()\n render(\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationLink href=\"#\" onClick={handleClick}>\n 2\n </PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n fireEvent.click(screen.getByText('2'))\n\n expect(handleClick).toHaveBeenCalledTimes(1)\n })\n\n it('uses the color from the surrounding Pagination context over its own default', () => {\n render(\n <Pagination color=\"brand\">\n <PaginationContent>\n <PaginationItem>\n <PaginationLink href=\"#\">1</PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n expect(screen.getByText('1').getAttribute('data-color')).toBe('brand')\n })\n })\n\n it('renders PaginationPrevious with its icon and aria-label', () => {\n render(\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious href=\"#\" />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n const previous = screen.getByRole('link', { name: 'Go to previous page' })\n expect(previous.querySelector('[data-icon=\"inline-start\"]')).not.toBeNull()\n })\n\n it('renders PaginationNext with optional visible text alongside its icon', () => {\n render(\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationNext href=\"#\" text=\"Next\" />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n const next = screen.getByRole('link', { name: 'Go to next page' })\n expect(next.querySelector('[data-icon=\"inline-end\"]')).not.toBeNull()\n\n const label = screen.getByText('Next')\n expect(label.className).toContain('hidden')\n expect(label.className).toContain('sm:block')\n })\n\n it('renders PaginationEllipsis with a visually hidden label', () => {\n const { container } = render(<PaginationEllipsis />)\n const ellipsis = container.querySelector('[data-slot=\"pagination-ellipsis\"]')\n\n expect(ellipsis?.getAttribute('aria-hidden')).toBe('true')\n expect(screen.getByText('More pages').className).toContain('sr-only')\n })\n\n it('composes a full pagination list with previous, pages, an ellipsis and next', () => {\n render(\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious href=\"#\" />\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\" isActive>\n 1\n </PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n <PaginationItem>\n <PaginationNext href=\"#\" />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n )\n\n expect(screen.getAllByRole('link')).toHaveLength(3)\n expect(screen.getByText('More pages')).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"../phone-input-DqgYa1un.js";import{n as t,r as n}from"../react.esm-dE9nuHcL.js";import{jsx as r}from"react/jsx-runtime";describe(`PhoneInput`,()=>{it(`renders a tel input defaulting to Brazil as the selected country`,()=>{let{container:t}=n(r(e,{})),i=t.querySelector(`input[type="tel"]`),a=t.querySelector(`[data-slot="combobox-trigger"]`);expect(i).not.toBeNull(),expect(i.value).toBe(``),expect(a.textContent).toContain(`Brazil`),expect(a.querySelector(`title`)?.textContent).toBe(`BR`)}),it(`renders the underlying input with the shared input styles and no rounded start`,()=>{let{container:t}=n(r(e,{})),i=t.querySelector(`[data-slot="input"]`);expect(i.className).toContain(`rounded-s-none`),expect(i.className).toContain(`focus:z-1`)}),it(`formats a typed number and reports the E.164 value through onChange`,()=>{let i=vi.fn(),{container:a}=n(r(e,{onChange:i})),o=a.querySelector(`input[type="tel"]`);t.change(o,{target:{value:`11987654321`}}),expect(o.value).toBe(`(11) 98765-4321`),expect(i).toHaveBeenCalledWith(`+5511987654321`)}),it(`renders a controlled value formatted for display`,()=>{let{container:t}=n(r(e,{value:`+5511987654321`})),i=t.querySelector(`input[type="tel"]`);expect(i.value).toBe(`+55 11 98765 4321`)}),it(`calls onChange with an empty string when the value is cleared`,()=>{let i=vi.fn(),{container:a}=n(r(e,{value:`+5511987654321`,onChange:i})),o=a.querySelector(`input[type="tel"]`);t.change(o,{target:{value:``}}),expect(i).toHaveBeenCalledWith(``)}),it(`propagates aria-invalid to the wrapper so the nested combobox trigger gets destructive styling`,()=>{let{container:t}=n(r(e,{"aria-invalid":!0})),i=t.firstElementChild,a=t.querySelector(`input[type="tel"]`);expect(i.className).toContain(`[&_*[data-slot=combobox-trigger]]:border-destructive`),expect(i.className).toContain(`[&_*[data-slot=combobox-trigger]]:ring-destructive/50`),expect(a.getAttribute(`aria-invalid`)).toBe(`true`)}),it(`does not add destructive wrapper classes when aria-invalid is absent`,()=>{let{container:t}=n(r(e,{})),i=t.firstElementChild;expect(i.className).not.toContain(`border-destructive`)}),it(`opens the country popup when the trigger is clicked and lists country options with dial codes`,()=>{let{container:i}=n(r(e,{})),a=i.querySelector(`[data-slot="combobox-trigger"]`);t.click(a),expect(a.getAttribute(`aria-expanded`)).toBe(`true`);let o=document.querySelector(`[data-slot="combobox-content"]`);expect(o).not.toBeNull();let s=document.querySelectorAll(`[data-slot="combobox-item"]`);expect(s.length).toBeGreaterThan(1);let c=Array.from(s).find(e=>e.textContent?.includes(`United States`));expect(c?.textContent).toContain(`+1`)}),it(`selecting a country updates the trigger flag/name and closes the popup`,()=>{let{container:i}=n(r(e,{})),a=i.querySelector(`[data-slot="combobox-trigger"]`);t.click(a);let o=document.querySelectorAll(`[data-slot="combobox-item"]`),s=Array.from(o).find(e=>e.textContent?.includes(`United States`));t.click(s),expect(a.getAttribute(`aria-expanded`)).toBe(`false`),expect(a.textContent).toContain(`United States`),expect(a.querySelector(`title`)?.textContent).toBe(`US`)}),it(`selecting a different country changes the dial-code prefix applied to typed numbers`,()=>{let i=vi.fn(),{container:a}=n(r(e,{onChange:i})),o=a.querySelector(`[data-slot="combobox-trigger"]`);t.click(o);let s=document.querySelectorAll(`[data-slot="combobox-item"]`),c=Array.from(s).find(e=>e.textContent?.includes(`United States`));t.click(c);let l=a.querySelector(`input[type="tel"]`);t.change(l,{target:{value:`2015550123`}}),expect(i).toHaveBeenCalledWith(`+12015550123`)}),it(`filters the country list using the popup search input`,()=>{let{container:i}=n(r(e,{})),a=i.querySelector(`[data-slot="combobox-trigger"]`);t.click(a);let o=document.querySelector(`input[placeholder="e.g. United States"]`);t.change(o,{target:{value:`Portugal`}});let s=document.querySelectorAll(`[data-slot="combobox-item"]`);expect(s.length).toBe(1),expect(s[0]?.textContent).toContain(`Portugal`)}),it(`shows the empty state message when no country matches the search`,()=>{let{container:i}=n(r(e,{})),a=i.querySelector(`[data-slot="combobox-trigger"]`);t.click(a);let o=document.querySelector(`input[placeholder="e.g. United States"]`);t.change(o,{target:{value:`not-a-real-country`}}),expect(document.querySelector(`[data-slot="combobox-empty"]`)?.textContent).toBe(`Nenhum país encontrado.`)}),it(`forwards a custom popupClassName to the popup content`,()=>{let{container:i}=n(r(e,{popupClassName:`my-popup-class`})),a=i.querySelector(`[data-slot="combobox-trigger"]`);t.click(a);let o=document.querySelector(`[data-slot="combobox-content"]`);expect(o.className).toContain(`my-popup-class`)})});
|
|
2
|
-
//# sourceMappingURL=phone-input.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"phone-input.spec.js","names":[],"sources":["../../src/components/phone-input.spec.tsx"],"sourcesContent":["import { fireEvent, render } from '@testing-library/react'\n\nimport { PhoneInput } from './phone-input'\n\ndescribe('PhoneInput', () => {\n it('renders a tel input defaulting to Brazil as the selected country', () => {\n const { container } = render(<PhoneInput />)\n\n const input = container.querySelector('input[type=\"tel\"]') as HTMLInputElement\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n\n expect(input).not.toBeNull()\n expect(input.value).toBe('')\n expect(trigger.textContent).toContain('Brazil')\n expect(trigger.querySelector('title')?.textContent).toBe('BR')\n })\n\n it('renders the underlying input with the shared input styles and no rounded start', () => {\n const { container } = render(<PhoneInput />)\n\n const input = container.querySelector('[data-slot=\"input\"]') as HTMLElement\n\n expect(input.className).toContain('rounded-s-none')\n expect(input.className).toContain('focus:z-1')\n })\n\n it('formats a typed number and reports the E.164 value through onChange', () => {\n const onChange = vi.fn()\n const { container } = render(<PhoneInput onChange={onChange} />)\n\n const input = container.querySelector('input[type=\"tel\"]') as HTMLInputElement\n fireEvent.change(input, { target: { value: '11987654321' } })\n\n expect(input.value).toBe('(11) 98765-4321')\n expect(onChange).toHaveBeenCalledWith('+5511987654321')\n })\n\n it('renders a controlled value formatted for display', () => {\n const { container } = render(<PhoneInput value=\"+5511987654321\" />)\n\n const input = container.querySelector('input[type=\"tel\"]') as HTMLInputElement\n\n expect(input.value).toBe('+55 11 98765 4321')\n })\n\n it('calls onChange with an empty string when the value is cleared', () => {\n const onChange = vi.fn()\n const { container } = render(<PhoneInput value=\"+5511987654321\" onChange={onChange} />)\n\n const input = container.querySelector('input[type=\"tel\"]') as HTMLInputElement\n fireEvent.change(input, { target: { value: '' } })\n\n expect(onChange).toHaveBeenCalledWith('')\n })\n\n it('propagates aria-invalid to the wrapper so the nested combobox trigger gets destructive styling', () => {\n const { container } = render(<PhoneInput aria-invalid />)\n\n const wrapper = container.firstElementChild as HTMLElement\n const input = container.querySelector('input[type=\"tel\"]') as HTMLElement\n\n expect(wrapper.className).toContain('[&_*[data-slot=combobox-trigger]]:border-destructive')\n expect(wrapper.className).toContain('[&_*[data-slot=combobox-trigger]]:ring-destructive/50')\n expect(input.getAttribute('aria-invalid')).toBe('true')\n })\n\n it('does not add destructive wrapper classes when aria-invalid is absent', () => {\n const { container } = render(<PhoneInput />)\n\n const wrapper = container.firstElementChild as HTMLElement\n\n expect(wrapper.className).not.toContain('border-destructive')\n })\n\n it('opens the country popup when the trigger is clicked and lists country options with dial codes', () => {\n const { container } = render(<PhoneInput />)\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n fireEvent.click(trigger)\n\n expect(trigger.getAttribute('aria-expanded')).toBe('true')\n\n const content = document.querySelector('[data-slot=\"combobox-content\"]')\n expect(content).not.toBeNull()\n\n const items = document.querySelectorAll('[data-slot=\"combobox-item\"]')\n expect(items.length).toBeGreaterThan(1)\n\n const usItem = Array.from(items).find((item) => item.textContent?.includes('United States'))\n expect(usItem?.textContent).toContain('+1')\n })\n\n it('selecting a country updates the trigger flag/name and closes the popup', () => {\n const { container } = render(<PhoneInput />)\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n fireEvent.click(trigger)\n\n const items = document.querySelectorAll('[data-slot=\"combobox-item\"]')\n const usItem = Array.from(items).find((item) => item.textContent?.includes('United States')) as HTMLElement\n fireEvent.click(usItem)\n\n expect(trigger.getAttribute('aria-expanded')).toBe('false')\n expect(trigger.textContent).toContain('United States')\n expect(trigger.querySelector('title')?.textContent).toBe('US')\n })\n\n it('selecting a different country changes the dial-code prefix applied to typed numbers', () => {\n const onChange = vi.fn()\n const { container } = render(<PhoneInput onChange={onChange} />)\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n fireEvent.click(trigger)\n\n const items = document.querySelectorAll('[data-slot=\"combobox-item\"]')\n const usItem = Array.from(items).find((item) => item.textContent?.includes('United States')) as HTMLElement\n fireEvent.click(usItem)\n\n const input = container.querySelector('input[type=\"tel\"]') as HTMLInputElement\n fireEvent.change(input, { target: { value: '2015550123' } })\n\n expect(onChange).toHaveBeenCalledWith('+12015550123')\n })\n\n it('filters the country list using the popup search input', () => {\n const { container } = render(<PhoneInput />)\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n fireEvent.click(trigger)\n\n const searchInput = document.querySelector('input[placeholder=\"e.g. United States\"]') as HTMLElement\n fireEvent.change(searchInput, { target: { value: 'Portugal' } })\n\n const items = document.querySelectorAll('[data-slot=\"combobox-item\"]')\n expect(items.length).toBe(1)\n expect(items[0]?.textContent).toContain('Portugal')\n })\n\n it('shows the empty state message when no country matches the search', () => {\n const { container } = render(<PhoneInput />)\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n fireEvent.click(trigger)\n\n const searchInput = document.querySelector('input[placeholder=\"e.g. United States\"]') as HTMLElement\n fireEvent.change(searchInput, { target: { value: 'not-a-real-country' } })\n\n expect(document.querySelector('[data-slot=\"combobox-empty\"]')?.textContent).toBe('Nenhum país encontrado.')\n })\n\n it('forwards a custom popupClassName to the popup content', () => {\n const { container } = render(<PhoneInput popupClassName=\"my-popup-class\" />)\n\n const trigger = container.querySelector('[data-slot=\"combobox-trigger\"]') as HTMLElement\n fireEvent.click(trigger)\n\n const content = document.querySelector('[data-slot=\"combobox-content\"]') as HTMLElement\n expect(content.className).toContain('my-popup-class')\n })\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,r as t,t as n}from"../pie-chart-S4nMKbsW.js";import{a as r,r as i}from"../react.esm-dE9nuHcL.js";import{jsx as a}from"react/jsx-runtime";beforeAll(()=>{vi.stubGlobal(`ResizeObserver`,class{observe(){}unobserve(){}disconnect(){}}),Object.defineProperty(HTMLElement.prototype,"offsetWidth",{configurable:!0,value:500}),Object.defineProperty(HTMLElement.prototype,"offsetHeight",{configurable:!0,value:300}),HTMLElement.prototype.getBoundingClientRect=()=>({width:500,height:300,top:0,left:0,right:500,bottom:300,x:0,y:0,toJSON(){}})});const o=[{name:`chrome`,value:275},{name:`safari`,value:200},{name:`firefox`,value:187}];describe(`PieChart`,()=>{it(`renders with data-slot="pie-chart" on the chart wrapper`,()=>{let{container:e}=i(a(n,{data:o}));expect(e.querySelector(`[data-slot="pie-chart"]`)).not.toBeNull()}),it(`accepts a data array without throwing`,()=>{expect(()=>i(a(n,{data:o}))).not.toThrow()}),it(`renders one recharts pie sector per data entry`,()=>{let{container:e}=i(a(n,{data:o}));expect(e.querySelectorAll(`.recharts-pie-sector`).length).toBe(o.length)}),it(`renders a tooltip wrapper by default and omits it when withTooltip is false`,()=>{let{container:e}=i(a(n,{data:o}));expect(e.querySelectorAll(`.recharts-tooltip-wrapper`).length).toBe(1);let{container:t}=i(a(n,{data:o,withTooltip:!1}));expect(t.querySelectorAll(`.recharts-tooltip-wrapper`).length).toBe(0)}),it(`omits the legend by default and renders it when withLegend is true`,async()=>{let{container:e}=i(a(n,{data:o}));expect(e.querySelectorAll(`.recharts-legend-wrapper`).length).toBe(0);let{container:t}=i(a(n,{data:o,withLegend:!0}));expect(t.querySelectorAll(`.recharts-legend-wrapper`).length).toBe(1),expect((await r.findAllByText(`chrome`)).length).toBeGreaterThan(0)}),it(`omits slice labels by default and renders them when withLabels is true`,()=>{let{container:e}=i(a(n,{data:o,animationDuration:0}));expect(e.querySelectorAll(`.recharts-pie-label-text`).length).toBe(0);let{container:t}=i(a(n,{data:o,withLabels:!0,animationDuration:0}));expect(t.querySelectorAll(`.recharts-pie-label-text`).length).toBe(o.length)}),describe(`PieChartBase`,()=>{it(`uses the provided dataSlot instead of the default "pie-chart" slot`,()=>{let{container:t}=i(a(e,{dataSlot:`donut-chart`,data:o}));expect(t.querySelector(`[data-slot="donut-chart"]`)).not.toBeNull(),expect(t.querySelector(`[data-slot="pie-chart"]`)).toBeNull()}),it(`renders an arbitrary centerSlot node inside the pie`,()=>{let{container:t}=i(a(e,{dataSlot:`pie-chart`,data:o,centerSlot:a(`text`,{"data-testid":`center`,children:`Center`})}));expect(t.querySelector(`[data-testid="center"]`)).not.toBeNull()}),it(`does not render a centerSlot when none is provided`,()=>{let{container:t}=i(a(e,{dataSlot:`pie-chart`,data:o}));expect(t.querySelector(`[data-testid="center"]`)).toBeNull()})})}),describe(`buildPieConfig`,()=>{it(`builds one config entry per data item keyed by its name`,()=>{let e=t(o);expect(Object.keys(e)).toEqual([`chrome`,`safari`,`firefox`])}),it(`uses the item name as the label`,()=>{let e=t(o);expect(e.chrome?.label).toBe(`chrome`),expect(e.safari?.label).toBe(`safari`)}),it(`assigns colors from the default palette by index when no color/colorKey is provided`,()=>{let e=t(o);expect(e.chrome?.color).toBe(`var(--chart-1)`),expect(e.safari?.color).toBe(`var(--chart-2)`),expect(e.firefox?.color).toBe(`var(--chart-3)`)}),it(`prefers an explicit color over a colorKey and the default palette`,()=>{let e=t([{name:`a`,value:1,color:`#123456`,colorKey:`red`}]);expect(e.a?.color).toBe(`#123456`)}),it(`resolves a colorKey to its CSS variable when no explicit color is set`,()=>{let e=t([{name:`a`,value:1,colorKey:`red`}]);expect(e.a?.color).toBe(`var(--red)`)}),it(`cycles through the default palette once there are more items than palette colors`,()=>{let e=t(Array.from({length:6},(e,t)=>({name:`item-${t}`,value:t+1})));expect(e[`item-0`]?.color).toBe(`var(--chart-1)`),expect(e[`item-4`]?.color).toBe(`var(--chart-5)`),expect(e[`item-5`]?.color).toBe(`var(--chart-1)`)}),it(`returns an empty config for an empty data array`,()=>{expect(t([])).toEqual({})})});
|
|
2
|
-
//# sourceMappingURL=pie-chart.spec.js.map
|
|
@@ -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
|