@gv-tech/design-system 2.20.0 → 2.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.cjs +2 -2
- package/dist/accordion.cjs.map +1 -1
- package/dist/accordion.d.ts +2 -34
- package/dist/accordion.mjs +35 -38
- package/dist/accordion.mjs.map +1 -1
- package/dist/alert-dialog.cjs +2 -2
- package/dist/alert-dialog.cjs.map +1 -1
- package/dist/alert-dialog.d.ts +2 -74
- package/dist/alert-dialog.mjs +55 -69
- package/dist/alert-dialog.mjs.map +1 -1
- package/dist/alert.cjs +2 -2
- package/dist/alert.cjs.map +1 -1
- package/dist/alert.d.ts +2 -29
- package/dist/alert.mjs +36 -32
- package/dist/alert.mjs.map +1 -1
- package/dist/aspect-ratio.cjs +2 -2
- package/dist/aspect-ratio.cjs.map +1 -1
- package/dist/aspect-ratio.d.ts +2 -14
- package/dist/aspect-ratio.mjs +8 -6
- package/dist/aspect-ratio.mjs.map +1 -1
- package/dist/avatar.cjs +2 -2
- package/dist/avatar.cjs.map +1 -1
- package/dist/avatar.d.ts +2 -26
- package/dist/avatar.mjs +27 -29
- package/dist/avatar.mjs.map +1 -1
- package/dist/badge.cjs +2 -2
- package/dist/badge.cjs.map +1 -1
- package/dist/badge.d.ts +2 -21
- package/dist/badge.mjs +23 -25
- package/dist/badge.mjs.map +1 -1
- package/dist/breadcrumb.cjs +2 -2
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.d.ts +2 -62
- package/dist/breadcrumb.mjs +60 -67
- package/dist/breadcrumb.mjs.map +1 -1
- package/dist/button.cjs +2 -2
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.ts +2 -22
- package/dist/button.mjs +40 -39
- package/dist/button.mjs.map +1 -1
- package/dist/calendar.cjs +2 -2
- package/dist/calendar.cjs.map +1 -1
- package/dist/calendar.d.ts +2 -36
- package/dist/calendar.mjs +94 -130
- package/dist/calendar.mjs.map +1 -1
- package/dist/card.cjs +2 -2
- package/dist/card.cjs.map +1 -1
- package/dist/card.d.ts +2 -23
- package/dist/card.mjs +44 -33
- package/dist/card.mjs.map +1 -1
- package/dist/carousel.cjs +2 -2
- package/dist/carousel.cjs.map +1 -1
- package/dist/carousel.d.ts +2 -78
- package/dist/carousel.mjs +113 -151
- package/dist/carousel.mjs.map +1 -1
- package/dist/chart.cjs +5 -5
- package/dist/chart.cjs.map +1 -1
- package/dist/chart.d.ts +2 -90
- package/dist/chart.mjs +124 -182
- package/dist/chart.mjs.map +1 -1
- package/dist/checkbox.cjs +2 -2
- package/dist/checkbox.cjs.map +1 -1
- package/dist/checkbox.d.ts +2 -17
- package/dist/checkbox.mjs +19 -22
- package/dist/checkbox.mjs.map +1 -1
- package/dist/collapsible.cjs +2 -2
- package/dist/collapsible.cjs.map +1 -1
- package/dist/collapsible.d.ts +2 -32
- package/dist/collapsible.mjs +8 -8
- package/dist/collapsible.mjs.map +1 -1
- package/dist/command.cjs +2 -2
- package/dist/command.cjs.map +1 -1
- package/dist/command.d.ts +2 -133
- package/dist/command.mjs +80 -86
- package/dist/command.mjs.map +1 -1
- package/dist/context-menu.cjs +2 -2
- package/dist/context-menu.cjs.map +1 -1
- package/dist/context-menu.d.ts +2 -115
- package/dist/context-menu.mjs +72 -124
- package/dist/context-menu.mjs.map +1 -1
- package/dist/design-system.css +3 -1
- package/dist/dialog.cjs +2 -2
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.d.ts +2 -31
- package/dist/dialog.mjs +50 -65
- package/dist/dialog.mjs.map +1 -1
- package/dist/drawer.cjs +2 -2
- package/dist/drawer.cjs.map +1 -1
- package/dist/drawer.d.ts +2 -79
- package/dist/drawer.mjs +49 -54
- package/dist/drawer.mjs.map +1 -1
- package/dist/dropdown-menu.cjs +2 -2
- package/dist/dropdown-menu.cjs.map +1 -1
- package/dist/dropdown-menu.d.ts +2 -124
- package/dist/dropdown-menu.mjs +73 -126
- package/dist/dropdown-menu.mjs.map +1 -1
- package/dist/form.cjs +2 -2
- package/dist/form.cjs.map +1 -1
- package/dist/form.d.ts +2 -62
- package/dist/form.mjs +75 -65
- package/dist/form.mjs.map +1 -1
- package/dist/hover-card.cjs +2 -2
- package/dist/hover-card.cjs.map +1 -1
- package/dist/hover-card.d.ts +2 -30
- package/dist/hover-card.mjs +17 -23
- package/dist/hover-card.mjs.map +1 -1
- package/dist/index.cjs +1 -2
- package/dist/index.d.ts +2 -2442
- package/dist/index.mjs +56 -430
- package/dist/input.cjs +2 -2
- package/dist/input.cjs.map +1 -1
- package/dist/input.d.ts +2 -14
- package/dist/input.mjs +16 -20
- package/dist/input.mjs.map +1 -1
- package/dist/label.cjs +2 -2
- package/dist/label.cjs.map +1 -1
- package/dist/label.d.ts +2 -14
- package/dist/label.mjs +14 -8
- package/dist/label.mjs.map +1 -1
- package/dist/menubar.cjs +2 -2
- package/dist/menubar.cjs.map +1 -1
- package/dist/menubar.d.ts +2 -125
- package/dist/menubar.mjs +101 -156
- package/dist/menubar.mjs.map +1 -1
- package/dist/navigation-menu.cjs +2 -2
- package/dist/navigation-menu.cjs.map +1 -1
- package/dist/navigation-menu.d.ts +2 -77
- package/dist/navigation-menu.mjs +58 -96
- package/dist/navigation-menu.mjs.map +1 -1
- package/dist/packages/design-tokens/src/index.d.ts +91 -0
- package/dist/packages/design-tokens/src/palette.d.ts +31 -0
- package/dist/packages/design-tokens/src/preset.d.ts +107 -0
- package/dist/packages/design-tokens/src/radii.d.ts +20 -0
- package/dist/packages/design-tokens/src/shadows.d.ts +11 -0
- package/dist/packages/design-tokens/src/spacing.d.ts +29 -0
- package/dist/packages/design-tokens/src/theme.d.ts +47 -0
- package/dist/packages/design-tokens/src/typography.d.ts +32 -0
- package/dist/packages/ui-core/src/contracts/accordion.d.ts +19 -0
- package/dist/packages/ui-core/src/contracts/alert-dialog.d.ts +39 -0
- package/dist/packages/ui-core/src/contracts/alert.d.ts +14 -0
- package/dist/packages/ui-core/src/contracts/aspect-ratio.d.ts +6 -0
- package/dist/packages/ui-core/src/contracts/avatar.d.ts +14 -0
- package/dist/packages/ui-core/src/contracts/badge.d.ts +6 -0
- package/dist/packages/ui-core/src/contracts/breadcrumb.d.ts +30 -0
- package/dist/packages/ui-core/src/contracts/button.d.ts +9 -0
- package/dist/packages/ui-core/src/contracts/calendar.d.ts +4 -0
- package/dist/packages/ui-core/src/contracts/card.d.ts +5 -0
- package/dist/packages/ui-core/src/contracts/carousel.d.ts +24 -0
- package/dist/packages/ui-core/src/contracts/chart.d.ts +33 -0
- package/dist/packages/ui-core/src/contracts/checkbox.d.ts +7 -0
- package/dist/packages/ui-core/src/contracts/collapsible.d.ts +18 -0
- package/dist/packages/ui-core/src/contracts/command.d.ts +35 -0
- package/dist/packages/ui-core/src/contracts/context-menu.d.ts +64 -0
- package/dist/packages/ui-core/src/contracts/dialog.d.ts +13 -0
- package/dist/packages/ui-core/src/contracts/drawer.d.ts +31 -0
- package/dist/packages/ui-core/src/contracts/dropdown-menu.d.ts +73 -0
- package/dist/packages/ui-core/src/contracts/form.d.ts +23 -0
- package/dist/packages/ui-core/src/contracts/hover-card.d.ts +18 -0
- package/dist/packages/ui-core/src/contracts/input.d.ts +5 -0
- package/dist/packages/ui-core/src/contracts/label.d.ts +6 -0
- package/dist/packages/ui-core/src/contracts/menubar.d.ts +73 -0
- package/dist/packages/ui-core/src/contracts/navigation-menu.d.ts +47 -0
- package/dist/packages/ui-core/src/contracts/pagination.d.ts +31 -0
- package/dist/packages/ui-core/src/contracts/popover.d.ts +24 -0
- package/dist/packages/ui-core/src/contracts/progress.d.ts +4 -0
- package/dist/packages/ui-core/src/contracts/radio.d.ts +9 -0
- package/dist/packages/ui-core/src/contracts/resizable.d.ts +38 -0
- package/dist/packages/ui-core/src/contracts/scroll-area.d.ts +13 -0
- package/dist/packages/ui-core/src/contracts/scroll-to-top.d.ts +25 -0
- package/dist/packages/ui-core/src/contracts/search.d.ts +12 -0
- package/dist/packages/ui-core/src/contracts/select.d.ts +54 -0
- package/dist/packages/ui-core/src/contracts/separator.d.ts +5 -0
- package/dist/packages/ui-core/src/contracts/sheet.d.ts +48 -0
- package/dist/packages/ui-core/src/contracts/skeleton.d.ts +5 -0
- package/dist/packages/ui-core/src/contracts/slider.d.ts +15 -0
- package/dist/packages/ui-core/src/contracts/sonner.d.ts +15 -0
- package/dist/packages/ui-core/src/contracts/switch.d.ts +11 -0
- package/dist/packages/ui-core/src/contracts/table-of-contents.d.ts +41 -0
- package/dist/packages/ui-core/src/contracts/table.d.ts +33 -0
- package/dist/packages/ui-core/src/contracts/tabs.d.ts +27 -0
- package/dist/packages/ui-core/src/contracts/text.d.ts +6 -0
- package/dist/packages/ui-core/src/contracts/textarea.d.ts +7 -0
- package/dist/packages/ui-core/src/contracts/theme-provider.d.ts +13 -0
- package/dist/packages/ui-core/src/contracts/theme-toggle.d.ts +15 -0
- package/dist/packages/ui-core/src/contracts/toast.d.ts +10 -0
- package/dist/packages/ui-core/src/contracts/toaster.d.ts +3 -0
- package/dist/packages/ui-core/src/contracts/toggle-group.d.ts +21 -0
- package/dist/packages/ui-core/src/contracts/toggle.d.ts +29 -0
- package/dist/packages/ui-core/src/contracts/tooltip.d.ts +24 -0
- package/dist/packages/ui-core/src/index.d.ts +56 -0
- package/dist/packages/ui-web/src/accordion.d.ts +9 -0
- package/dist/packages/ui-web/src/accordion.test.d.ts +1 -0
- package/dist/packages/ui-web/src/alert-dialog.d.ts +22 -0
- package/dist/packages/ui-web/src/alert-dialog.test.d.ts +1 -0
- package/dist/packages/ui-web/src/alert.d.ts +11 -0
- package/dist/packages/ui-web/src/alert.test.d.ts +1 -0
- package/dist/packages/ui-web/src/aspect-ratio.d.ts +6 -0
- package/dist/packages/ui-web/src/aspect-ratio.test.d.ts +1 -0
- package/dist/packages/ui-web/src/avatar.d.ts +8 -0
- package/dist/packages/ui-web/src/avatar.test.d.ts +1 -0
- package/dist/packages/ui-web/src/badge.d.ts +11 -0
- package/dist/packages/ui-web/src/badge.test.d.ts +1 -0
- package/dist/packages/ui-web/src/breadcrumb.d.ts +19 -0
- package/dist/packages/ui-web/src/button.d.ts +13 -0
- package/dist/packages/ui-web/src/button.test.d.ts +1 -0
- package/dist/packages/ui-web/src/calendar.d.ts +10 -0
- package/dist/packages/ui-web/src/calendar.test.d.ts +1 -0
- package/dist/packages/ui-web/src/card.d.ts +11 -0
- package/dist/packages/ui-web/src/card.test.d.ts +1 -0
- package/dist/packages/ui-web/src/carousel.d.ts +24 -0
- package/dist/packages/ui-web/src/carousel.test.d.ts +1 -0
- package/dist/packages/ui-web/src/chart.d.ts +16 -0
- package/dist/packages/ui-web/src/chart.test.d.ts +1 -0
- package/dist/packages/ui-web/src/checkbox.d.ts +7 -0
- package/dist/packages/ui-web/src/checkbox.test.d.ts +1 -0
- package/dist/packages/ui-web/src/collapsible.d.ts +8 -0
- package/dist/packages/ui-web/src/collapsible.test.d.ts +1 -0
- package/dist/packages/ui-web/src/command.d.ts +82 -0
- package/dist/packages/ui-web/src/command.test.d.ts +1 -0
- package/dist/packages/ui-web/src/context-menu.d.ts +23 -0
- package/dist/packages/ui-web/src/context-menu.test.d.ts +1 -0
- package/dist/packages/ui-web/src/dialog.d.ts +19 -0
- package/dist/packages/ui-web/src/dialog.test.d.ts +1 -0
- package/dist/packages/ui-web/src/drawer.d.ts +25 -0
- package/dist/packages/ui-web/src/drawer.test.d.ts +1 -0
- package/dist/packages/ui-web/src/dropdown-menu.d.ts +23 -0
- package/dist/packages/ui-web/src/dropdown-menu.test.d.ts +1 -0
- package/dist/packages/ui-web/src/form.d.ts +26 -0
- package/dist/packages/ui-web/src/form.test.d.ts +1 -0
- package/dist/packages/ui-web/src/hooks/use-theme.d.ts +51 -0
- package/dist/packages/ui-web/src/hooks/use-toast.d.ts +44 -0
- package/dist/packages/ui-web/src/hover-card.d.ts +8 -0
- package/dist/packages/ui-web/src/hover-card.test.d.ts +1 -0
- package/dist/packages/ui-web/src/index.d.ts +107 -0
- package/dist/packages/ui-web/src/input.d.ts +6 -0
- package/dist/packages/ui-web/src/input.test.d.ts +1 -0
- package/dist/packages/ui-web/src/label.d.ts +8 -0
- package/dist/packages/ui-web/src/label.test.d.ts +1 -0
- package/dist/packages/ui-web/src/lib/utils.d.ts +3 -0
- package/dist/packages/ui-web/src/menubar.d.ts +24 -0
- package/dist/packages/ui-web/src/menubar.test.d.ts +1 -0
- package/dist/packages/ui-web/src/navigation-menu.d.ts +15 -0
- package/dist/packages/ui-web/src/navigation-menu.test.d.ts +1 -0
- package/dist/packages/ui-web/src/pagination.d.ts +30 -0
- package/dist/packages/ui-web/src/pagination.test.d.ts +1 -0
- package/dist/packages/ui-web/src/popover.d.ts +9 -0
- package/dist/packages/ui-web/src/popover.test.d.ts +1 -0
- package/dist/packages/ui-web/src/progress.d.ts +6 -0
- package/dist/packages/ui-web/src/progress.test.d.ts +1 -0
- package/dist/packages/ui-web/src/radio-group.d.ts +10 -0
- package/dist/packages/ui-web/src/radio-group.test.d.ts +1 -0
- package/dist/packages/ui-web/src/resizable.d.ts +8 -0
- package/dist/packages/ui-web/src/resizable.test.d.ts +1 -0
- package/dist/packages/ui-web/src/scroll-area.d.ts +7 -0
- package/dist/packages/ui-web/src/scroll-area.test.d.ts +1 -0
- package/dist/packages/ui-web/src/scroll-to-top.d.ts +7 -0
- package/dist/packages/ui-web/src/scroll-to-top.test.d.ts +1 -0
- package/dist/packages/ui-web/src/search.d.ts +7 -0
- package/dist/packages/ui-web/src/search.test.d.ts +1 -0
- package/dist/packages/ui-web/src/select.d.ts +15 -0
- package/dist/packages/ui-web/src/select.test.d.ts +1 -0
- package/dist/packages/ui-web/src/separator.d.ts +6 -0
- package/dist/packages/ui-web/src/separator.test.d.ts +1 -0
- package/dist/packages/ui-web/src/setupTests.d.ts +0 -0
- package/dist/packages/ui-web/src/sheet.d.ts +28 -0
- package/dist/packages/ui-web/src/sheet.test.d.ts +1 -0
- package/dist/packages/ui-web/src/skeleton.d.ts +5 -0
- package/dist/packages/ui-web/src/skeleton.test.d.ts +1 -0
- package/dist/packages/ui-web/src/slider.d.ts +6 -0
- package/dist/packages/ui-web/src/slider.test.d.ts +1 -0
- package/dist/packages/ui-web/src/sonner.d.ts +7 -0
- package/dist/packages/ui-web/src/sonner.test.d.ts +1 -0
- package/dist/packages/ui-web/src/support-fab.d.ts +15 -0
- package/dist/packages/ui-web/src/support-fab.test.d.ts +1 -0
- package/dist/packages/ui-web/src/switch.d.ts +6 -0
- package/dist/packages/ui-web/src/switch.test.d.ts +1 -0
- package/dist/packages/ui-web/src/table-of-contents.d.ts +23 -0
- package/dist/packages/ui-web/src/table-of-contents.test.d.ts +1 -0
- package/dist/packages/ui-web/src/table.d.ts +12 -0
- package/dist/packages/ui-web/src/table.test.d.ts +1 -0
- package/dist/packages/ui-web/src/tabs.d.ts +9 -0
- package/dist/packages/ui-web/src/tabs.test.d.ts +1 -0
- package/dist/packages/ui-web/src/text.d.ts +12 -0
- package/dist/packages/ui-web/src/text.test.d.ts +1 -0
- package/dist/packages/ui-web/src/textarea.d.ts +6 -0
- package/dist/packages/ui-web/src/textarea.test.d.ts +1 -0
- package/dist/packages/ui-web/src/theme-provider.d.ts +4 -0
- package/dist/packages/ui-web/src/theme-toggle.d.ts +3 -0
- package/dist/packages/ui-web/src/theme-toggle.test.d.ts +1 -0
- package/dist/packages/ui-web/src/toast.d.ts +16 -0
- package/dist/packages/ui-web/src/toast.test.d.ts +1 -0
- package/dist/packages/ui-web/src/toaster.d.ts +2 -0
- package/dist/packages/ui-web/src/toggle-group.d.ts +13 -0
- package/dist/packages/ui-web/src/toggle-group.test.d.ts +1 -0
- package/dist/packages/ui-web/src/toggle.d.ts +8 -0
- package/dist/packages/ui-web/src/toggle.test.d.ts +1 -0
- package/dist/packages/ui-web/src/tooltip.d.ts +12 -0
- package/dist/pagination.cjs +2 -2
- package/dist/pagination.cjs.map +1 -1
- package/dist/pagination.d.ts +2 -94
- package/dist/pagination.mjs +63 -67
- package/dist/pagination.mjs.map +1 -1
- package/dist/popover.cjs +2 -2
- package/dist/popover.cjs.map +1 -1
- package/dist/popover.d.ts +2 -39
- package/dist/popover.mjs +17 -24
- package/dist/popover.mjs.map +1 -1
- package/dist/progress.cjs +2 -2
- package/dist/progress.cjs.map +1 -1
- package/dist/progress.d.ts +2 -11
- package/dist/progress.mjs +19 -23
- package/dist/progress.mjs.map +1 -1
- package/dist/radio-group.cjs +2 -2
- package/dist/radio-group.cjs.map +1 -1
- package/dist/radio-group.d.ts +2 -25
- package/dist/radio-group.mjs +25 -27
- package/dist/radio-group.mjs.map +1 -1
- package/dist/resizable.cjs +2 -2
- package/dist/resizable.cjs.map +1 -1
- package/dist/resizable.d.ts +2 -53
- package/dist/resizable.mjs +21 -34
- package/dist/resizable.mjs.map +1 -1
- package/dist/rolldown-runtime-C0IHAABJ.mjs +23 -0
- package/dist/rolldown-runtime-CacfPODE.js +1 -0
- package/dist/scroll-area.cjs +2 -2
- package/dist/scroll-area.cjs.map +1 -1
- package/dist/scroll-area.d.ts +2 -22
- package/dist/scroll-area.mjs +31 -30
- package/dist/scroll-area.mjs.map +1 -1
- package/dist/scroll-to-top.cjs +2 -2
- package/dist/scroll-to-top.cjs.map +1 -1
- package/dist/scroll-to-top.d.ts +2 -37
- package/dist/scroll-to-top.mjs +72 -84
- package/dist/scroll-to-top.mjs.map +1 -1
- package/dist/search.cjs +2 -2
- package/dist/search.cjs.map +1 -1
- package/dist/search.d.ts +2 -26
- package/dist/search.mjs +54 -63
- package/dist/search.mjs.map +1 -1
- package/dist/select.cjs +2 -2
- package/dist/select.cjs.map +1 -1
- package/dist/select.d.ts +2 -87
- package/dist/select.mjs +70 -100
- package/dist/select.mjs.map +1 -1
- package/dist/separator.cjs +2 -2
- package/dist/separator.cjs.map +1 -1
- package/dist/separator.d.ts +2 -12
- package/dist/separator.mjs +17 -18
- package/dist/separator.mjs.map +1 -1
- package/dist/sheet.cjs +2 -2
- package/dist/sheet.cjs.map +1 -1
- package/dist/sheet.d.ts +2 -97
- package/dist/sheet.mjs +58 -64
- package/dist/sheet.mjs.map +1 -1
- package/dist/skeleton.cjs +2 -2
- package/dist/skeleton.cjs.map +1 -1
- package/dist/skeleton.d.ts +2 -11
- package/dist/skeleton.mjs +15 -8
- package/dist/skeleton.mjs.map +1 -1
- package/dist/slider.cjs +2 -2
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.d.ts +2 -22
- package/dist/slider.mjs +19 -20
- package/dist/slider.mjs.map +1 -1
- package/dist/sonner.cjs +2 -2
- package/dist/sonner.cjs.map +1 -1
- package/dist/sonner.d.ts +2 -25
- package/dist/sonner.mjs +22 -24
- package/dist/sonner.mjs.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/setupTests.d.ts +0 -0
- package/dist/src-B8AA-nU4.js +2 -0
- package/dist/src-B8AA-nU4.js.map +1 -0
- package/dist/src-C65A5RuY.mjs +23 -0
- package/dist/src-C65A5RuY.mjs.map +1 -0
- package/dist/support-fab.cjs +2 -2
- package/dist/support-fab.cjs.map +1 -1
- package/dist/support-fab.d.ts +2 -20
- package/dist/support-fab.mjs +82 -117
- package/dist/support-fab.mjs.map +1 -1
- package/dist/switch.cjs +2 -2
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.d.ts +2 -18
- package/dist/switch.mjs +16 -27
- package/dist/switch.mjs.map +1 -1
- package/dist/table-of-contents.cjs +2 -2
- package/dist/table-of-contents.cjs.map +1 -1
- package/dist/table-of-contents.d.ts +2 -68
- package/dist/table-of-contents.mjs +161 -156
- package/dist/table-of-contents.mjs.map +1 -1
- package/dist/table.cjs +2 -2
- package/dist/table.cjs.map +1 -1
- package/dist/table.d.ts +2 -59
- package/dist/table.mjs +60 -58
- package/dist/table.mjs.map +1 -1
- package/dist/tabs.cjs +2 -2
- package/dist/tabs.cjs.map +1 -1
- package/dist/tabs.d.ts +2 -42
- package/dist/tabs.mjs +27 -46
- package/dist/tabs.mjs.map +1 -1
- package/dist/text.cjs +2 -2
- package/dist/text.cjs.map +1 -1
- package/dist/text.d.ts +2 -21
- package/dist/text.mjs +42 -42
- package/dist/text.mjs.map +1 -1
- package/dist/textarea.cjs +2 -2
- package/dist/textarea.cjs.map +1 -1
- package/dist/textarea.d.ts +2 -16
- package/dist/textarea.mjs +14 -18
- package/dist/textarea.mjs.map +1 -1
- package/dist/theme-provider.cjs +2 -2
- package/dist/theme-provider.cjs.map +1 -1
- package/dist/theme-provider.d.ts +2 -22
- package/dist/theme-provider.mjs +17 -8
- package/dist/theme-provider.mjs.map +1 -1
- package/dist/theme-toggle-B8UiizQB.js +2 -0
- package/dist/theme-toggle-B8UiizQB.js.map +1 -0
- package/dist/theme-toggle-DoAVRoyO.mjs +321 -0
- package/dist/theme-toggle-DoAVRoyO.mjs.map +1 -0
- package/dist/theme-toggle.cjs +1 -2
- package/dist/theme-toggle.d.ts +2 -23
- package/dist/theme-toggle.mjs +3 -9
- package/dist/toast.cjs +2 -2
- package/dist/toast.cjs.map +1 -1
- package/dist/toast.d.ts +2 -26
- package/dist/toast.mjs +53 -70
- package/dist/toast.mjs.map +1 -1
- package/dist/toaster-BgZxvlTL.mjs +128 -0
- package/dist/toaster-BgZxvlTL.mjs.map +1 -0
- package/dist/toaster-DnZKPR-G.js +2 -0
- package/dist/toaster-DnZKPR-G.js.map +1 -0
- package/dist/toaster.cjs +1 -2
- package/dist/toaster.d.ts +2 -9
- package/dist/toaster.mjs +3 -7
- package/dist/toggle-group.cjs +2 -2
- package/dist/toggle-group.cjs.map +1 -1
- package/dist/toggle-group.d.ts +2 -22
- package/dist/toggle-group.mjs +39 -37
- package/dist/toggle-group.mjs.map +1 -1
- package/dist/toggle.cjs +2 -2
- package/dist/toggle.cjs.map +1 -1
- package/dist/toggle.d.ts +2 -43
- package/dist/toggle.mjs +19 -12
- package/dist/toggle.mjs.map +1 -1
- package/dist/tooltip.cjs +2 -2
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.d.ts +2 -48
- package/dist/tooltip.mjs +25 -29
- package/dist/tooltip.mjs.map +1 -1
- package/dist/utils-BtI8Nf6i.mjs +12 -0
- package/dist/utils-BtI8Nf6i.mjs.map +1 -0
- package/dist/utils-CbSX47LV.js +2 -0
- package/dist/utils-CbSX47LV.js.map +1 -0
- package/dist/vendor-Cr0eKZrm.mjs +28603 -0
- package/dist/vendor-Cr0eKZrm.mjs.map +1 -0
- package/dist/vendor-D3ZzLf8D.js +92 -0
- package/dist/vendor-D3ZzLf8D.js.map +1 -0
- package/package.json +29 -32
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/theme-toggle-BNtYv2Jv.mjs +0 -177
- package/dist/theme-toggle-BNtYv2Jv.mjs.map +0 -1
- package/dist/theme-toggle-DK_OhDRf.js +0 -2
- package/dist/theme-toggle-DK_OhDRf.js.map +0 -1
- package/dist/theme-toggle.cjs.map +0 -1
- package/dist/theme-toggle.mjs.map +0 -1
- package/dist/toaster-Cj_SryBI.mjs +0 -119
- package/dist/toaster-Cj_SryBI.mjs.map +0 -1
- package/dist/toaster-Q_hzVonm.js +0 -2
- package/dist/toaster-Q_hzVonm.js.map +0 -1
- package/dist/toaster.cjs.map +0 -1
- package/dist/toaster.mjs.map +0 -1
- package/dist/toggle-DPMTgo47.mjs +0 -25
- package/dist/toggle-DPMTgo47.mjs.map +0 -1
- package/dist/toggle-_F_yB_Dj.js +0 -2
- package/dist/toggle-_F_yB_Dj.js.map +0 -1
- package/dist/utils-Bgpn0CK0.mjs +0 -12
- package/dist/utils-Bgpn0CK0.mjs.map +0 -1
- package/dist/utils-CBWPs0D7.js +0 -2
- package/dist/utils-CBWPs0D7.js.map +0 -1
- package/dist/vendor-BQwS7aJt.mjs +0 -25217
- package/dist/vendor-BQwS7aJt.mjs.map +0 -1
- package/dist/vendor-B_07FHqh.js +0 -68
- package/dist/vendor-B_07FHqh.js.map +0 -1
package/dist/scroll-area.d.ts
CHANGED
|
@@ -1,22 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare const ScrollArea: React_2.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & ScrollAreaProps & React_2.RefAttributes<HTMLDivElement>>;
|
|
5
|
-
|
|
6
|
-
export declare interface ScrollAreaProps {
|
|
7
|
-
children?: React_2.ReactNode;
|
|
8
|
-
className?: string;
|
|
9
|
-
type?: 'auto' | 'always' | 'scroll' | 'hover';
|
|
10
|
-
scrollHideDelay?: number;
|
|
11
|
-
dir?: 'ltr' | 'rtl';
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export declare const ScrollBar: React_2.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & ScrollBarProps & React_2.RefAttributes<HTMLDivElement>>;
|
|
15
|
-
|
|
16
|
-
export declare interface ScrollBarProps {
|
|
17
|
-
className?: string;
|
|
18
|
-
orientation?: 'horizontal' | 'vertical';
|
|
19
|
-
forceMount?: true;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { }
|
|
1
|
+
export * from './packages/ui-web/src/scroll-area'
|
|
2
|
+
export {}
|
package/dist/scroll-area.mjs
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
|
|
2
|
+
"use client";
|
|
3
|
+
import { G as e, H as t, K as n, U as r, W as i, vr as a } from "./vendor-Cr0eKZrm.mjs";
|
|
4
|
+
import { t as o } from "./utils-BtI8Nf6i.mjs";
|
|
5
|
+
import * as s from "react";
|
|
6
|
+
//#region packages/ui-web/src/scroll-area.tsx
|
|
7
|
+
var c = a(), l = s.forwardRef(({ className: e, children: i, ...a }, s) => /* @__PURE__ */ (0, c.jsxs)(r, {
|
|
8
|
+
ref: s,
|
|
9
|
+
className: o("relative overflow-hidden", e),
|
|
10
|
+
...a,
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ (0, c.jsx)(n, {
|
|
13
|
+
className: "h-full w-full rounded-[inherit]",
|
|
14
|
+
children: i
|
|
15
|
+
}),
|
|
16
|
+
/* @__PURE__ */ (0, c.jsx)(u, {}),
|
|
17
|
+
/* @__PURE__ */ (0, c.jsx)(t, {})
|
|
18
|
+
]
|
|
19
|
+
}));
|
|
20
|
+
l.displayName = r?.displayName || "ScrollArea";
|
|
21
|
+
var u = s.forwardRef(({ className: t, orientation: n = "vertical", ...r }, a) => /* @__PURE__ */ (0, c.jsx)(i, {
|
|
22
|
+
ref: a,
|
|
23
|
+
orientation: n,
|
|
24
|
+
className: o("flex touch-none transition-colors select-none", n === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]", n === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]", t),
|
|
25
|
+
...r,
|
|
26
|
+
children: /* @__PURE__ */ (0, c.jsx)(e, { className: "bg-border relative flex-1 rounded-full" })
|
|
27
|
+
}));
|
|
28
|
+
u.displayName = i?.displayName || "ScrollBar";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { l as ScrollArea, u as ScrollBar };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=scroll-area.mjs.map
|
package/dist/scroll-area.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area.mjs","sources":["../packages/ui-web/src/scroll-area.tsx"],"sourcesContent":["'use client';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { ScrollAreaBaseProps, ScrollBarBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & ScrollAreaBaseProps\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root?.displayName || 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> & ScrollBarBaseProps\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar?.displayName || 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\nexport type { ScrollAreaBaseProps as ScrollAreaProps, ScrollBarBaseProps as ScrollBarProps };\n"],"
|
|
1
|
+
{"version":3,"file":"scroll-area.mjs","names":[],"sources":["../packages/ui-web/src/scroll-area.tsx"],"sourcesContent":["'use client';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { ScrollAreaBaseProps, ScrollBarBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & ScrollAreaBaseProps\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root?.displayName || 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> & ScrollBarBaseProps\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar?.displayName || 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\nexport type { ScrollAreaBaseProps as ScrollAreaProps, ScrollBarBaseProps as ScrollBarProps };\n"],"mappings":";;;;;;aAQM,IAAa,EAAM,YAGtB,EAAE,cAAW,aAAU,GAAG,KAAS,MACpC,iBAAA,GAAA,EAAA,MAAC,GAAD;CAA+B;CAAK,WAAW,EAAG,4BAA4B,EAAU;CAAE,GAAI;WAA9F;EACE,iBAAA,GAAA,EAAA,KAAC,GAAD;GAA8B,WAAU;GAAmC;GAAwC,CAAA;EACnH,iBAAA,GAAA,EAAA,KAAC,GAAD,EAAa,CAAA;EACb,iBAAA,GAAA,EAAA,KAAC,GAAD,EAA8B,CAAA;EACL;GAC3B;AACF,EAAW,cAAA,GAAwC,eAAe;AAElE,IAAM,IAAY,EAAM,YAGrB,EAAE,cAAW,iBAAc,YAAY,GAAG,KAAS,MACpD,iBAAA,GAAA,EAAA,KAAC,GAAD;CACO;CACQ;CACb,WAAW,EACT,iDACA,MAAgB,cAAc,sDAC9B,MAAgB,gBAAgB,wDAChC,EACD;CACD,GAAI;WAEJ,iBAAA,GAAA,EAAA,KAAC,GAAD,EAAqC,WAAU,0CAA2C,CAAA;CAClD,CAAA,CAC1C;AACF,EAAU,cAAA,GAAuD,eAAe"}
|
package/dist/scroll-to-top.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use
|
|
2
|
-
//# sourceMappingURL=scroll-to-top.cjs.map
|
|
1
|
+
"use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./rolldown-runtime-CacfPODE.js`),t=require(`./vendor-D3ZzLf8D.js`),n=require(`./utils-CbSX47LV.js`),r=require(`./button.cjs`);let i=require(`react`);i=e.r(i);var a=t.vr(),o=e=>typeof e.scrollY==`number`,s=e=>o(e)?e.scrollY:e.scrollTop;function c({threshold:e=240,exitDuration:o=450,behavior:c=`smooth`,scrollTarget:l,className:u,label:d=`Scroll to top`,onClick:f,tabIndex:p,type:m,...h}){let[g,_]=i.useState(!1),[v,y]=i.useState(!1),b=i.useRef(null);i.useEffect(()=>{let t=l===void 0?window:l;if(!t){_(!1);return}let n=()=>{let n=s(t);if(v){n<=e&&(_(!1),y(!1));return}_(n>e)};return n(),t.addEventListener(`scroll`,n,{passive:!0}),()=>{t.removeEventListener(`scroll`,n)}},[v,l,e]),i.useEffect(()=>()=>{b.current!==null&&window.clearTimeout(b.current)},[]);let x=v?`exiting`:g?`visible`:`hidden`;return(0,a.jsxs)(r.Button,{"aria-label":d,"data-state":x,type:m??`button`,variant:`default`,size:`icon`,tabIndex:x===`hidden`?-1:p,className:n.t(`group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none`,`before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80`,`hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95`,x===`visible`&&`translate-y-0 scale-100 opacity-100`,x===`hidden`&&`pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none`,x===`exiting`&&`pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none`,u),onClick:t=>{if(f?.(t),t.defaultPrevented||v)return;let n=l===void 0?window:l;if(!n)return;y(!0);let r=Math.max(0,o);b.current=window.setTimeout(()=>{n.scrollTo({top:0,behavior:c});let t=s(n);_(!1),t<=e&&y(!1)},r)},...h,children:[(0,a.jsx)(`span`,{className:`bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100`}),(0,a.jsx)(`span`,{className:`border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100`}),(0,a.jsx)(t.sr,{className:`relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]`}),(0,a.jsx)(`span`,{className:`sr-only`,children:d})]})}exports.ScrollToTop=c;
|
|
2
|
+
//# sourceMappingURL=scroll-to-top.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-to-top.cjs","sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"
|
|
1
|
+
{"version":3,"file":"scroll-to-top.cjs","names":[],"sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"mappings":"yRAeM,EAAkB,GACtB,OAAQ,EAAkB,SAAY,SAElC,EAAmB,GACvB,EAAe,EAAO,CAAG,EAAO,QAAU,EAAO,UAEnD,SAAgB,EAAY,CAC1B,YAAY,IACZ,eAAe,IACf,WAAW,SACX,eACA,YACA,QAAQ,gBACR,UACA,WACA,OACA,GAAG,GACgB,CACnB,GAAM,CAAC,EAAW,GAAgB,EAAM,SAAS,GAAM,CACjD,CAAC,EAAW,GAAgB,EAAM,SAAS,GAAM,CACjD,EAAa,EAAM,OAAsB,KAAK,CAEpD,EAAM,cAAgB,CACpB,IAAM,EAAS,IAAiB,IAAA,GAAY,OAAS,EAErD,GAAI,CAAC,EAAQ,CACX,EAAa,GAAM,CACnB,OAGF,IAAM,MAAyB,CAC7B,IAAM,EAAS,EAAgB,EAAO,CAEtC,GAAI,EAAW,CAGT,GAAU,IACZ,EAAa,GAAM,CACnB,EAAa,GAAM,EAErB,OAGF,EAAa,EAAS,EAAU,EAMlC,OAHA,GAAkB,CAClB,EAAO,iBAAiB,SAAU,EAAkB,CAAE,QAAS,GAAM,CAAC,KAEzD,CACX,EAAO,oBAAoB,SAAU,EAAiB,GAEvD,CAAC,EAAW,EAAc,EAAU,CAAC,CAExC,EAAM,kBACS,CACP,EAAW,UAAY,MACzB,OAAO,aAAa,EAAW,QAAQ,EAG1C,EAAE,CAAC,CAEN,IAAM,EAAQ,EAAY,UAAY,EAAY,UAAY,SA4B9D,OACE,EAAA,EAAA,MAAC,EAAA,OAAD,CACE,aAAY,EACZ,aAAY,EACZ,KAAM,GAAQ,SACd,QAAQ,UACR,KAAK,OACL,SAAU,IAAU,SAAW,GAAK,EACpC,UAAW,EAAA,EACT,2WACA,oKACA,sIACA,IAAU,WAAa,sCACvB,IAAU,UACR,4FACF,IAAU,WACR,4FACF,EACD,CACD,QA7CiB,GAA+C,CAElE,GADA,IAAU,EAAM,CACZ,EAAM,kBAAoB,EAC5B,OAGF,IAAM,EAAS,IAAiB,IAAA,GAAY,OAAS,EACrD,GAAI,CAAC,EACH,OAGF,EAAa,GAAK,CAElB,IAAM,EAAU,KAAK,IAAI,EAAG,EAAa,CACzC,EAAW,QAAU,OAAO,eAAiB,CAC3C,EAAO,SAAS,CAAE,IAAK,EAAG,WAAU,CAAC,CAErC,IAAM,EAAS,EAAgB,EAAO,CACtC,EAAa,GAAM,CAEf,GAAU,GACZ,EAAa,GAAM,EAEpB,EAAQ,EAuBT,GAAI,WAnBN,EAqBE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qJAAuJ,CAAA,EACvK,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+JAAiK,CAAA,EACjL,EAAA,EAAA,KAAC,EAAA,GAAD,CAAS,UAAU,gEAAkE,CAAA,EACrF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mBAAW,EAAa,CAAA,CACjC"}
|
package/dist/scroll-to-top.d.ts
CHANGED
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function ScrollToTop({ threshold, exitDuration, behavior, scrollTarget, className, label, onClick, tabIndex, type, ...props }: ScrollToTopProps): JSX.Element;
|
|
5
|
-
|
|
6
|
-
declare interface ScrollToTopBaseProps {
|
|
7
|
-
/**
|
|
8
|
-
* Number of pixels that must be scrolled before the control appears.
|
|
9
|
-
*
|
|
10
|
-
* @default 240
|
|
11
|
-
*/
|
|
12
|
-
threshold?: number;
|
|
13
|
-
/**
|
|
14
|
-
* Delay in milliseconds before the page scroll-to-top is triggered,
|
|
15
|
-
* allowing the exit animation to complete first.
|
|
16
|
-
*
|
|
17
|
-
* @default 450
|
|
18
|
-
*/
|
|
19
|
-
exitDuration?: number;
|
|
20
|
-
/**
|
|
21
|
-
* Scroll behavior used when returning to the top.
|
|
22
|
-
*
|
|
23
|
-
* @default 'smooth'
|
|
24
|
-
*/
|
|
25
|
-
behavior?: ScrollBehavior;
|
|
26
|
-
/** Optional className for custom positioning and styling. */
|
|
27
|
-
className?: string;
|
|
28
|
-
/** Accessible label for the control. */
|
|
29
|
-
label?: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export declare interface ScrollToTopProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {
|
|
33
|
-
/** Optional custom scroll container; defaults to window when undefined. */
|
|
34
|
-
scrollTarget?: Window | HTMLElement | null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export { }
|
|
1
|
+
export * from './packages/ui-web/src/scroll-to-top'
|
|
2
|
+
export {}
|
package/dist/scroll-to-top.mjs
CHANGED
|
@@ -1,86 +1,74 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
v
|
|
71
|
-
),
|
|
72
|
-
onClick: _,
|
|
73
|
-
...h,
|
|
74
|
-
children: [
|
|
75
|
-
/* @__PURE__ */ n.jsx("span", { className: "bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100" }),
|
|
76
|
-
/* @__PURE__ */ n.jsx("span", { className: "border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100" }),
|
|
77
|
-
/* @__PURE__ */ n.jsx(E, { className: "relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]" }),
|
|
78
|
-
/* @__PURE__ */ n.jsx("span", { className: "sr-only", children: p })
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
);
|
|
2
|
+
"use client";
|
|
3
|
+
import { sr as e, vr as t } from "./vendor-Cr0eKZrm.mjs";
|
|
4
|
+
import { t as n } from "./utils-BtI8Nf6i.mjs";
|
|
5
|
+
import { Button as r } from "./button.mjs";
|
|
6
|
+
import * as i from "react";
|
|
7
|
+
//#region packages/ui-web/src/scroll-to-top.tsx
|
|
8
|
+
var a = t(), o = (e) => typeof e.scrollY == "number", s = (e) => o(e) ? e.scrollY : e.scrollTop;
|
|
9
|
+
function c({ threshold: t = 240, exitDuration: o = 450, behavior: c = "smooth", scrollTarget: l, className: u, label: d = "Scroll to top", onClick: f, tabIndex: p, type: m, ...h }) {
|
|
10
|
+
let [g, _] = i.useState(!1), [v, y] = i.useState(!1), b = i.useRef(null);
|
|
11
|
+
i.useEffect(() => {
|
|
12
|
+
let e = l === void 0 ? window : l;
|
|
13
|
+
if (!e) {
|
|
14
|
+
_(!1);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
let n = () => {
|
|
18
|
+
let n = s(e);
|
|
19
|
+
if (v) {
|
|
20
|
+
n <= t && (_(!1), y(!1));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
_(n > t);
|
|
24
|
+
};
|
|
25
|
+
return n(), e.addEventListener("scroll", n, { passive: !0 }), () => {
|
|
26
|
+
e.removeEventListener("scroll", n);
|
|
27
|
+
};
|
|
28
|
+
}, [
|
|
29
|
+
v,
|
|
30
|
+
l,
|
|
31
|
+
t
|
|
32
|
+
]), i.useEffect(() => () => {
|
|
33
|
+
b.current !== null && window.clearTimeout(b.current);
|
|
34
|
+
}, []);
|
|
35
|
+
let x = v ? "exiting" : g ? "visible" : "hidden";
|
|
36
|
+
return /* @__PURE__ */ (0, a.jsxs)(r, {
|
|
37
|
+
"aria-label": d,
|
|
38
|
+
"data-state": x,
|
|
39
|
+
type: m ?? "button",
|
|
40
|
+
variant: "default",
|
|
41
|
+
size: "icon",
|
|
42
|
+
tabIndex: x === "hidden" ? -1 : p,
|
|
43
|
+
className: n("group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80", "hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95", x === "visible" && "translate-y-0 scale-100 opacity-100", x === "hidden" && "pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none", x === "exiting" && "pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none", u),
|
|
44
|
+
onClick: (e) => {
|
|
45
|
+
if (f?.(e), e.defaultPrevented || v) return;
|
|
46
|
+
let n = l === void 0 ? window : l;
|
|
47
|
+
if (!n) return;
|
|
48
|
+
y(!0);
|
|
49
|
+
let r = Math.max(0, o);
|
|
50
|
+
b.current = window.setTimeout(() => {
|
|
51
|
+
n.scrollTo({
|
|
52
|
+
top: 0,
|
|
53
|
+
behavior: c
|
|
54
|
+
});
|
|
55
|
+
let e = s(n);
|
|
56
|
+
_(!1), e <= t && y(!1);
|
|
57
|
+
}, r);
|
|
58
|
+
},
|
|
59
|
+
...h,
|
|
60
|
+
children: [
|
|
61
|
+
/* @__PURE__ */ (0, a.jsx)("span", { className: "bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100" }),
|
|
62
|
+
/* @__PURE__ */ (0, a.jsx)("span", { className: "border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100" }),
|
|
63
|
+
/* @__PURE__ */ (0, a.jsx)(e, { className: "relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]" }),
|
|
64
|
+
/* @__PURE__ */ (0, a.jsx)("span", {
|
|
65
|
+
className: "sr-only",
|
|
66
|
+
children: d
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
});
|
|
82
70
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
//# sourceMappingURL=scroll-to-top.mjs.map
|
|
71
|
+
//#endregion
|
|
72
|
+
export { c as ScrollToTop };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=scroll-to-top.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-to-top.mjs","sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"
|
|
1
|
+
{"version":3,"file":"scroll-to-top.mjs","names":[],"sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"mappings":";;;;;;;aAeM,KAAkB,MACtB,OAAQ,EAAkB,WAAY,UAElC,KAAmB,MACvB,EAAe,EAAO,GAAG,EAAO,UAAU,EAAO;AAEnD,SAAgB,EAAY,EAC1B,eAAY,KACZ,kBAAe,KACf,cAAW,UACX,iBACA,cACA,WAAQ,iBACR,YACA,aACA,SACA,GAAG,KACgB;CACnB,IAAM,CAAC,GAAW,KAAgB,EAAM,SAAS,GAAM,EACjD,CAAC,GAAW,KAAgB,EAAM,SAAS,GAAM,EACjD,IAAa,EAAM,OAAsB,KAAK;AAkCpD,CAhCA,EAAM,gBAAgB;EACpB,IAAM,IAAS,MAAiB,KAAA,IAAY,SAAS;AAErD,MAAI,CAAC,GAAQ;AACX,KAAa,GAAM;AACnB;;EAGF,IAAM,UAAyB;GAC7B,IAAM,IAAS,EAAgB,EAAO;AAEtC,OAAI,GAAW;AAGb,IAAI,KAAU,MACZ,EAAa,GAAM,EACnB,EAAa,GAAM;AAErB;;AAGF,KAAa,IAAS,EAAU;;AAMlC,SAHA,GAAkB,EAClB,EAAO,iBAAiB,UAAU,GAAkB,EAAE,SAAS,IAAM,CAAC,QAEzD;AACX,KAAO,oBAAoB,UAAU,EAAiB;;IAEvD;EAAC;EAAW;EAAc;EAAU,CAAC,EAExC,EAAM,sBACS;AACX,EAAI,EAAW,YAAY,QACzB,OAAO,aAAa,EAAW,QAAQ;IAG1C,EAAE,CAAC;CAEN,IAAM,IAAQ,IAAY,YAAY,IAAY,YAAY;AA4B9D,QACE,iBAAA,GAAA,EAAA,MAAC,GAAD;EACE,cAAY;EACZ,cAAY;EACZ,MAAM,KAAQ;EACd,SAAQ;EACR,MAAK;EACL,UAAU,MAAU,WAAW,KAAK;EACpC,WAAW,EACT,4WACA,qKACA,uIACA,MAAU,aAAa,uCACvB,MAAU,YACR,6FACF,MAAU,aACR,6FACF,EACD;EACD,UA7CiB,MAA+C;AAElE,OADA,IAAU,EAAM,EACZ,EAAM,oBAAoB,EAC5B;GAGF,IAAM,IAAS,MAAiB,KAAA,IAAY,SAAS;AACrD,OAAI,CAAC,EACH;AAGF,KAAa,GAAK;GAElB,IAAM,IAAU,KAAK,IAAI,GAAG,EAAa;AACzC,KAAW,UAAU,OAAO,iBAAiB;AAC3C,MAAO,SAAS;KAAE,KAAK;KAAG;KAAU,CAAC;IAErC,IAAM,IAAS,EAAgB,EAAO;AAGtC,IAFA,EAAa,GAAM,EAEf,KAAU,KACZ,EAAa,GAAM;MAEpB,EAAQ;;EAuBT,GAAI;YAnBN;GAqBE,iBAAA,GAAA,EAAA,KAAC,QAAD,EAAM,WAAU,sJAAuJ,CAAA;GACvK,iBAAA,GAAA,EAAA,KAAC,QAAD,EAAM,WAAU,gKAAiK,CAAA;GACjL,iBAAA,GAAA,EAAA,KAAC,GAAD,EAAS,WAAU,iEAAkE,CAAA;GACrF,iBAAA,GAAA,EAAA,KAAC,QAAD;IAAM,WAAU;cAAW;IAAa,CAAA;GACjC"}
|
package/dist/search.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use
|
|
2
|
-
//# sourceMappingURL=search.cjs.map
|
|
1
|
+
"use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./rolldown-runtime-CacfPODE.js`),t=require(`./vendor-D3ZzLf8D.js`),n=require(`./utils-CbSX47LV.js`),r=require(`./button.cjs`),i=require(`./command.cjs`);let a=require(`react`);a=e.r(a);var o=t.vr();function s({children:e,open:t,onOpenChange:n}){let[r,s]=a.useState(!1),c=t!==void 0,l=c?t:r,u=a.useCallback(e=>{let t;t=typeof e==`function`?e(l):e,c?n?.(t):s(t)},[c,l,n]);return a.useEffect(()=>{let e=e=>{e.key===`k`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u(e=>!e))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[u]),(0,o.jsx)(i.CommandDialog,{open:l,onOpenChange:u,children:e})}var c=a.forwardRef(({className:e,placeholder:i,variant:a=`default`,responsive:s=!1,...c},l)=>{let u=i||(a===`compact`?`Search...`:`Search docs...`);return(0,o.jsxs)(r.Button,{variant:`outline`,className:n.t(`text-muted-foreground relative h-9 text-sm transition-all transition-colors`,a===`default`?`w-full justify-start pr-12`:n.t(`w-9 justify-center px-0`,s&&`2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12`),e),ref:l,...c,children:[(0,o.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,o.jsx)(t.Yn,{className:`h-4 w-4 shrink-0`}),(0,o.jsx)(`span`,{className:n.t(`truncate`,a===`compact`&&(s?`hidden 2xl:inline`:`hidden`)),children:u})]}),(0,o.jsxs)(`kbd`,{className:n.t(`bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none`,a===`default`&&`sm:flex`,a===`compact`&&s&&`2xl:flex`),children:[(0,o.jsx)(`span`,{className:`text-xs`,children:`⌘`}),`K`]})]})});c.displayName=`SearchTrigger`,exports.Search=s,exports.SearchTrigger=c;
|
|
2
|
+
//# sourceMappingURL=search.cjs.map
|
package/dist/search.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.cjs","sources":["../packages/ui-web/src/search.tsx"],"sourcesContent":["'use client';\n\nimport { SearchBaseProps, SearchTriggerBaseProps } from '@gv-tech/ui-core';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { CommandDialog } from './command';\nimport { cn } from './lib/utils';\n\nexport type SearchProps = SearchBaseProps;\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n // If customOpen is provided (controlled), use it. Otherwise use internal state.\n // Note: customOpen can be undefined, so we check explicit undefined check or just rely on contract.\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? (customOpen as boolean) : open;\n\n // We need a setter that matches Dispatch<SetStateAction<boolean>> roughly,\n // but handles the controlled callback.\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n let nextValue: boolean;\n if (typeof value === 'function') {\n nextValue = value(isOpen);\n } else {\n nextValue = value;\n }\n\n if (isControlled) {\n onOpenChange?.(nextValue);\n } else {\n setOpen(nextValue);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, SearchTriggerBaseProps {}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder, variant = 'default', responsive = false, ...props }, ref) => {\n const defaultPlaceholder = variant === 'compact' ? 'Search...' : 'Search docs...';\n const activePlaceholder = placeholder || defaultPlaceholder;\n\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'text-muted-foreground relative h-9 text-sm transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : cn('w-9 justify-center px-0', responsive && '2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12'),\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && (responsive ? 'hidden 2xl:inline' : 'hidden'))}>\n {activePlaceholder}\n </span>\n </span>\n <kbd\n className={cn(\n 'bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none',\n variant === 'default' && 'sm:flex',\n variant === 'compact' && responsive && '2xl:flex',\n )}\n >\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n"],"
|
|
1
|
+
{"version":3,"file":"search.cjs","names":[],"sources":["../packages/ui-web/src/search.tsx"],"sourcesContent":["'use client';\n\nimport { SearchBaseProps, SearchTriggerBaseProps } from '@gv-tech/ui-core';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { CommandDialog } from './command';\nimport { cn } from './lib/utils';\n\nexport type SearchProps = SearchBaseProps;\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n // If customOpen is provided (controlled), use it. Otherwise use internal state.\n // Note: customOpen can be undefined, so we check explicit undefined check or just rely on contract.\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? (customOpen as boolean) : open;\n\n // We need a setter that matches Dispatch<SetStateAction<boolean>> roughly,\n // but handles the controlled callback.\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n let nextValue: boolean;\n if (typeof value === 'function') {\n nextValue = value(isOpen);\n } else {\n nextValue = value;\n }\n\n if (isControlled) {\n onOpenChange?.(nextValue);\n } else {\n setOpen(nextValue);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, SearchTriggerBaseProps {}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder, variant = 'default', responsive = false, ...props }, ref) => {\n const defaultPlaceholder = variant === 'compact' ? 'Search...' : 'Search docs...';\n const activePlaceholder = placeholder || defaultPlaceholder;\n\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'text-muted-foreground relative h-9 text-sm transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : cn('w-9 justify-center px-0', responsive && '2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12'),\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && (responsive ? 'hidden 2xl:inline' : 'hidden'))}>\n {activePlaceholder}\n </span>\n </span>\n <kbd\n className={cn(\n 'bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none',\n variant === 'default' && 'sm:flex',\n variant === 'compact' && responsive && '2xl:flex',\n )}\n >\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n"],"mappings":"oTAWA,SAAgB,EAAO,CAAE,WAAU,KAAM,EAAY,gBAA6B,CAChF,GAAM,CAAC,EAAM,GAAW,EAAM,SAAS,GAAM,CAIvC,EAAe,IAAe,IAAA,GAC9B,EAAS,EAAgB,EAAyB,EAIlD,EAAY,EAAM,YACrB,GAAkD,CACjD,IAAI,EACJ,AAGE,EAHE,OAAO,GAAU,WACP,EAAM,EAAO,CAEb,EAGV,EACF,IAAe,EAAU,CAEzB,EAAQ,EAAU,EAGtB,CAAC,EAAc,EAAQ,EAAa,CACrC,CAcD,OAZA,EAAM,cAAgB,CACpB,IAAM,EAAQ,GAAqB,CAC7B,EAAE,MAAQ,MAAQ,EAAE,SAAW,EAAE,WACnC,EAAE,gBAAgB,CAClB,EAAW,GAAS,CAAC,EAAK,GAK9B,OADA,SAAS,iBAAiB,UAAW,EAAK,KAC7B,SAAS,oBAAoB,UAAW,EAAK,EACzD,CAAC,EAAU,CAAC,EAGb,EAAA,EAAA,KAAC,EAAA,cAAD,CAAe,KAAM,EAAQ,aAAc,EACxC,WACa,CAAA,CAMpB,IAAa,EAAgB,EAAM,YAChC,CAAE,YAAW,cAAa,UAAU,UAAW,aAAa,GAAO,GAAG,GAAS,IAAQ,CAEtF,IAAM,EAAoB,IADC,IAAY,UAAY,YAAc,kBAGjE,OACE,EAAA,EAAA,MAAC,EAAA,OAAD,CACE,QAAQ,UACR,UAAW,EAAA,EACT,8EACA,IAAY,UACR,6BACA,EAAA,EAAG,0BAA2B,GAAc,gDAAgD,CAChG,EACD,CACI,MACL,GAAI,WAVN,EAYE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,0CAAhB,EACE,EAAA,EAAA,KAAC,EAAA,GAAD,CAAY,UAAU,mBAAqB,CAAA,EAC3C,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,EAAG,WAAY,IAAY,YAAc,EAAa,oBAAsB,UAAU,UACpG,EACI,CAAA,CACF,IACP,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,EAAA,EACT,wKACA,IAAY,WAAa,UACzB,IAAY,WAAa,GAAc,WACxC,UALH,EAOE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mBAAU,IAAQ,CAAA,CAAA,IAC9B,GACC,IAGd,CACD,EAAc,YAAc"}
|
package/dist/search.d.ts
CHANGED
|
@@ -1,26 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function Search({ children, open: customOpen, onOpenChange }: SearchProps): JSX.Element;
|
|
5
|
-
|
|
6
|
-
declare interface SearchBaseProps {
|
|
7
|
-
children?: React_2.ReactNode;
|
|
8
|
-
open?: boolean;
|
|
9
|
-
onOpenChange?: (open: boolean) => void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export declare type SearchProps = SearchBaseProps;
|
|
13
|
-
|
|
14
|
-
export declare const SearchTrigger: React_2.ForwardRefExoticComponent<SearchTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
|
|
15
|
-
|
|
16
|
-
declare interface SearchTriggerBaseProps {
|
|
17
|
-
className?: string;
|
|
18
|
-
placeholder?: string;
|
|
19
|
-
variant?: 'default' | 'compact';
|
|
20
|
-
responsive?: boolean;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export declare interface SearchTriggerProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement>, SearchTriggerBaseProps {
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { }
|
|
1
|
+
export * from './packages/ui-web/src/search'
|
|
2
|
+
export {}
|