@gv-tech/design-system 2.19.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 +32 -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/switch.mjs
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
|
|
19
|
-
)
|
|
20
|
-
}
|
|
21
|
-
)
|
|
22
|
-
}
|
|
23
|
-
));
|
|
24
|
-
c.displayName = t?.displayName || "Switch";
|
|
25
|
-
export {
|
|
26
|
-
c as Switch
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=switch.mjs.map
|
|
2
|
+
"use client";
|
|
3
|
+
import { b as e, vr as t, y as n } from "./vendor-Cr0eKZrm.mjs";
|
|
4
|
+
import { t as r } from "./utils-BtI8Nf6i.mjs";
|
|
5
|
+
import * as i from "react";
|
|
6
|
+
//#region packages/ui-web/src/switch.tsx
|
|
7
|
+
var a = t(), o = i.forwardRef(({ className: t, ...i }, o) => /* @__PURE__ */ (0, a.jsx)(n, {
|
|
8
|
+
className: r("peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", t),
|
|
9
|
+
...i,
|
|
10
|
+
ref: o,
|
|
11
|
+
children: /* @__PURE__ */ (0, a.jsx)(e, { className: r("bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0") })
|
|
12
|
+
}));
|
|
13
|
+
o.displayName = n?.displayName || "Switch";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { o as Switch };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=switch.mjs.map
|
package/dist/switch.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.mjs","sources":["../packages/ui-web/src/switch.tsx"],"sourcesContent":["'use client';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { SwitchBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchBaseProps\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root?.displayName || 'Switch';\n\nexport { Switch };\nexport type { SwitchBaseProps as SwitchProps };\n"],"
|
|
1
|
+
{"version":3,"file":"switch.mjs","names":[],"sources":["../packages/ui-web/src/switch.tsx"],"sourcesContent":["'use client';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { SwitchBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchBaseProps\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root?.displayName || 'Switch';\n\nexport { Switch };\nexport type { SwitchBaseProps as SwitchProps };\n"],"mappings":";;;;;;aAQM,IAAS,EAAM,YAGlB,EAAE,cAAW,GAAG,KAAS,MAC1B,iBAAA,GAAA,EAAA,KAAC,GAAD;CACE,WAAW,EACT,+XACA,EACD;CACD,GAAI;CACC;WAEL,iBAAA,GAAA,EAAA,KAAC,GAAD,EACE,WAAW,EACT,6KACD,EACD,CAAA;CACoB,CAAA,CACxB;AACF,EAAO,cAAA,GAAqC,eAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use
|
|
2
|
-
//# sourceMappingURL=table-of-contents.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`);let r=require(`react`);r=e.r(r);var i=t.vr(),a=r.createContext(null);function o(){let e=r.useContext(a);if(!e)throw Error(`TOC components must be used within a TableOfContents provider`);return e}function s({children:e,className:t,activeId:o,minLevel:s=1,maxLevel:u=4,selector:d=`h1, h2, h3, h4, h5, h6`}){let[f,p]=r.useState([]),[m,h]=r.useState(null),g=r.useMemo(()=>f.find(e=>e.id===m)?.text||null,[f,m]),_=r.useCallback(e=>{p(t=>JSON.stringify(t)===JSON.stringify(e)?t:e)},[]),v=r.useMemo(()=>({headings:f,activeId:o||m,activeHeadingText:g,registerHeadings:_,setActiveId:h,config:{minLevel:s,maxLevel:u,selector:d,className:t}}),[f,m,o,g,_,s,u,d,t]);return(0,i.jsx)(a.Provider,{value:v,children:(0,i.jsx)(`div`,{className:n.t(`relative`,t),children:e||(0,i.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,i.jsx)(c,{}),(0,i.jsx)(l,{children:null})]})})})}function c({className:e}){let{headings:t,activeId:a,activeHeadingText:s}=o(),[c,l]=r.useState(!1);if(r.useEffect(()=>{if(!c)return;let e=()=>{l(!1)};return window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[c]),t.length===0)return null;let u=Math.min(...t.map(e=>e.level)),d=(0,i.jsx)(`ul`,{className:`m-0 list-none text-sm`,children:t.map(e=>{let t=a===e.id,r=`${(e.level-u)*1}rem`;return(0,i.jsx)(`li`,{className:`mt-0 pt-2`,children:(0,i.jsx)(`a`,{href:`#${e.id}`,onClick:()=>l(!1),className:n.t(`hover:text-foreground inline-block no-underline transition-colors`,t?`text-primary font-medium`:`text-muted-foreground`),style:{paddingLeft:r},children:e.text})},e.id)})});return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:n.t(`bg-background/95 sticky top-0 z-40 border-b backdrop-blur xl:hidden`,e),children:[(0,i.jsxs)(`button`,{onClick:()=>l(!c),className:`flex w-full items-center justify-between px-4 py-3 text-left`,children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-2 overflow-hidden`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`On this page:`}),(0,i.jsx)(`span`,{className:`truncate text-sm font-medium`,children:s||`Overview`})]}),(0,i.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:n.t(`shrink-0 transition-transform duration-200`,c&&`rotate-180`),children:(0,i.jsx)(`path`,{d:`m6 9 6 6 6-6`})})]}),c&&(0,i.jsx)(`div`,{className:`bg-background border-t px-4 pt-2 pb-6`,children:(0,i.jsx)(`nav`,{"aria-label":`Table of contents mobile`,children:d})})]}),(0,i.jsx)(`nav`,{className:n.t(`hidden xl:block`,e),"aria-label":`Table of contents`,children:d})]})}function l({children:e,className:t}){let{registerHeadings:a,setActiveId:s,config:c}=o(),l=r.useRef(null);return r.useEffect(()=>{let e=l.current;if(!e)return;let t=()=>{let t=Array.from(e.querySelectorAll(c.selector||`h1, h2, h3, h4, h5, h6`)).filter(e=>{let t=parseInt(e.tagName.charAt(1),10);return t>=(c.minLevel??1)&&t<=(c.maxLevel??4)});return a(t.map(e=>(e.id||=n.n(e.textContent||`heading`),{id:e.id,text:e.textContent||``,level:parseInt(e.tagName.charAt(1),10)}))),t},r=t(),i=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&s(e.target.id)})},{rootMargin:`0px 0px -80% 0px`,threshold:.1});r.forEach(e=>i.observe(e));let o=new MutationObserver(()=>{let e=t();i.disconnect(),e.forEach(e=>i.observe(e))});return o.observe(e,{childList:!0,subtree:!0,characterData:!0}),()=>{i.disconnect(),o.disconnect()}},[c.selector,c.minLevel,c.maxLevel,a,s]),(0,i.jsx)(`div`,{ref:l,className:t,children:e})}s.List=c,s.Content=l,exports.TableOfContents=s,exports.TableOfContentsContent=l,exports.TableOfContentsList=c;
|
|
2
|
+
//# sourceMappingURL=table-of-contents.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-of-contents.cjs","sources":["../packages/ui-web/src/table-of-contents.tsx"],"sourcesContent":["'use client';\n\nimport {\n HeadingItem,\n TableOfContentsBaseProps,\n TableOfContentsContentBaseProps,\n TableOfContentsListBaseProps,\n TableOfContentsRootBaseProps,\n} from '@gv-tech/ui-core';\nimport * as React from 'react';\nimport { cn, slugify } from './lib/utils';\n\n// Context for sharing heading data\ninterface TOCContextValue {\n headings: HeadingItem[];\n activeId: string | null;\n activeHeadingText: string | null;\n registerHeadings: (headings: HeadingItem[]) => void;\n setActiveId: (id: string | null) => void;\n config: TableOfContentsBaseProps;\n}\n\nconst TOCContext = React.createContext<TOCContextValue | null>(null);\n\nfunction useTOC() {\n const context = React.useContext(TOCContext);\n if (!context) {\n throw new Error('TOC components must be used within a TableOfContents provider');\n }\n return context;\n}\n\nexport type TableOfContentsProps = TableOfContentsRootBaseProps;\n\n/**\n * Root component that provides the Table of Contents context.\n * Can be used as a wrapper OR standalone.\n * If used as a wrapper: <TableOfContents><List /><Content>{children}</Content></TableOfContents>\n * If used standalone: <TableOfContents /> (requires container ref or defaults to document)\n */\nfunction TableOfContents({\n children,\n className,\n activeId: activeIdOverride,\n minLevel = 1,\n maxLevel = 4,\n selector = 'h1, h2, h3, h4, h5, h6',\n}: TableOfContentsProps) {\n const [headings, setHeadings] = React.useState<HeadingItem[]>([]);\n const [activeId, setActiveId] = React.useState<string | null>(null);\n\n const activeHeadingText = React.useMemo(() => {\n return headings.find((h) => h.id === activeId)?.text || null;\n }, [headings, activeId]);\n\n const registerHeadings = React.useCallback((newHeadings: HeadingItem[]) => {\n setHeadings((prev) => {\n if (JSON.stringify(prev) === JSON.stringify(newHeadings)) {\n return prev;\n }\n return newHeadings;\n });\n }, []);\n\n const value = React.useMemo(\n () => ({\n headings,\n activeId: activeIdOverride || activeId,\n activeHeadingText,\n registerHeadings,\n setActiveId,\n config: { minLevel, maxLevel, selector, className },\n }),\n [\n headings,\n activeId,\n activeIdOverride,\n activeHeadingText,\n registerHeadings,\n minLevel,\n maxLevel,\n selector,\n className,\n ],\n );\n\n return (\n <TOCContext.Provider value={value}>\n <div className={cn('relative', className)}>\n {children || (\n <div className=\"flex flex-col gap-4\">\n <TableOfContentsList />\n <TableOfContentsContent>{null}</TableOfContentsContent>\n </div>\n )}\n </div>\n </TOCContext.Provider>\n );\n}\n\n/**\n * Renders the actual list of links.\n */\nfunction TableOfContentsList({ className }: TableOfContentsListBaseProps) {\n const { headings, activeId, activeHeadingText } = useTOC();\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Auto-collapse on scroll\n React.useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handleScroll = () => {\n setIsOpen(false);\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, [isOpen]);\n\n if (headings.length === 0) {\n return null;\n }\n\n const currentMinLevel = Math.min(...headings.map((h) => h.level));\n\n const listContent = (\n <ul className=\"m-0 list-none text-sm\">\n {headings.map((heading) => {\n const isActive = activeId === heading.id;\n const paddingLeft = `${(heading.level - currentMinLevel) * 1}rem`;\n\n return (\n <li key={heading.id} className=\"mt-0 pt-2\">\n <a\n href={`#${heading.id}`}\n onClick={() => setIsOpen(false)}\n className={cn(\n 'hover:text-foreground inline-block no-underline transition-colors',\n isActive ? 'text-primary font-medium' : 'text-muted-foreground',\n )}\n style={{ paddingLeft }}\n >\n {heading.text}\n </a>\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <>\n {/* Mobile Sticky Header */}\n <div className={cn('bg-background/95 sticky top-0 z-40 border-b backdrop-blur xl:hidden', className)}>\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"flex w-full items-center justify-between px-4 py-3 text-left\"\n >\n <div className=\"flex items-center gap-2 overflow-hidden\">\n <span className=\"text-muted-foreground text-xs font-semibold tracking-wider uppercase\">On this page:</span>\n <span className=\"truncate text-sm font-medium\">{activeHeadingText || 'Overview'}</span>\n </div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn('shrink-0 transition-transform duration-200', isOpen && 'rotate-180')}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n\n {isOpen && (\n <div className=\"bg-background border-t px-4 pt-2 pb-6\">\n <nav aria-label=\"Table of contents mobile\">{listContent}</nav>\n </div>\n )}\n </div>\n\n {/* Desktop Hidden List */}\n <nav className={cn('hidden xl:block', className)} aria-label=\"Table of contents\">\n {listContent}\n </nav>\n </>\n );\n}\n\n/**\n * Wraps the content area and automatically detects headings within it.\n */\nfunction TableOfContentsContent({ children, className }: TableOfContentsContentBaseProps) {\n const { registerHeadings, setActiveId, config } = useTOC();\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const root = contentRef.current;\n if (!root) {\n return;\n }\n\n const queryHeadings = () => {\n const elements = Array.from(root.querySelectorAll(config.selector || 'h1, h2, h3, h4, h5, h6')).filter(\n (element) => {\n const level = parseInt(element.tagName.charAt(1), 10);\n return level >= (config.minLevel ?? 1) && level <= (config.maxLevel ?? 4);\n },\n );\n\n const headingItems: HeadingItem[] = elements.map((element) => {\n if (!element.id) {\n element.id = slugify(element.textContent || 'heading');\n }\n return {\n id: element.id,\n text: element.textContent || '',\n level: parseInt(element.tagName.charAt(1), 10),\n };\n });\n\n registerHeadings(headingItems);\n return elements;\n };\n\n // Initial query\n const elements = queryHeadings();\n\n // Intersection Observer for active ID\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id);\n }\n });\n },\n {\n rootMargin: '0px 0px -80% 0px',\n threshold: 0.1,\n },\n );\n\n elements.forEach((el) => observer.observe(el));\n\n // Mutation Observer for dynamic content\n const mutationObserver = new MutationObserver(() => {\n const newElements = queryHeadings();\n observer.disconnect();\n newElements.forEach((el) => observer.observe(el));\n });\n\n mutationObserver.observe(root, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n observer.disconnect();\n mutationObserver.disconnect();\n };\n }, [config.selector, config.minLevel, config.maxLevel, registerHeadings, setActiveId]);\n\n return (\n <div ref={contentRef} className={className}>\n {children}\n </div>\n );\n}\n\nTableOfContents.List = TableOfContentsList;\nTableOfContents.Content = TableOfContentsContent;\n\nexport type {\n TableOfContentsContentBaseProps as TableOfContentsContentProps,\n TableOfContentsListBaseProps as TableOfContentsListProps,\n} from '@gv-tech/ui-core';\nexport { TableOfContents, TableOfContentsContent, TableOfContentsList };\n"],"names":["TOCContext","React","useTOC","context","TableOfContents","children","className","activeIdOverride","minLevel","maxLevel","selector","headings","setHeadings","activeId","setActiveId","activeHeadingText","h","registerHeadings","newHeadings","prev","value","cn","jsxs","jsx","TableOfContentsList","TableOfContentsContent","isOpen","setIsOpen","handleScroll","currentMinLevel","listContent","heading","isActive","paddingLeft","Fragment","config","contentRef","root","queryHeadings","elements","element","level","headingItems","slugify","observer","entries","entry","el","mutationObserver","newElements"],"mappings":"mdAsBMA,EAAaC,EAAM,cAAsC,IAAI,EAEnE,SAASC,GAAS,CAChB,MAAMC,EAAUF,EAAM,WAAWD,CAAU,EAC3C,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,+DAA+D,EAEjF,OAAOA,CACT,CAUA,SAASC,EAAgB,CACvB,SAAAC,EACA,UAAAC,EACA,SAAUC,EACV,SAAAC,EAAW,EACX,SAAAC,EAAW,EACX,SAAAC,EAAW,wBACb,EAAyB,CACvB,KAAM,CAACC,EAAUC,CAAW,EAAIX,EAAM,SAAwB,CAAA,CAAE,EAC1D,CAACY,EAAUC,CAAW,EAAIb,EAAM,SAAwB,IAAI,EAE5Dc,EAAoBd,EAAM,QAAQ,IAC/BU,EAAS,KAAMK,GAAMA,EAAE,KAAOH,CAAQ,GAAG,MAAQ,KACvD,CAACF,EAAUE,CAAQ,CAAC,EAEjBI,EAAmBhB,EAAM,YAAaiB,GAA+B,CACzEN,EAAaO,GACP,KAAK,UAAUA,CAAI,IAAM,KAAK,UAAUD,CAAW,EAC9CC,EAEFD,CACR,CACH,EAAG,CAAA,CAAE,EAECE,EAAQnB,EAAM,QAClB,KAAO,CACL,SAAAU,EACA,SAAUJ,GAAoBM,EAC9B,kBAAAE,EACA,iBAAAE,EACA,YAAAH,EACA,OAAQ,CAAE,SAAAN,EAAU,SAAAC,EAAU,SAAAC,EAAU,UAAAJ,CAAA,CAAU,GAEpD,CACEK,EACAE,EACAN,EACAQ,EACAE,EACAT,EACAC,EACAC,EACAJ,CAAA,CACF,EAGF,+BACGN,EAAW,SAAX,CAAoB,MAAAoB,EACnB,iCAAC,MAAA,CAAI,UAAWC,EAAAA,GAAG,WAAYf,CAAS,EACrC,SAAAD,GACCiB,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,sBACb,SAAA,CAAAC,EAAAA,kBAAAA,IAACC,EAAA,EAAoB,EACrBD,EAAAA,kBAAAA,IAACE,GAAwB,SAAA,IAAA,CAAK,CAAA,CAAA,CAChC,EAEJ,EACF,CAEJ,CAKA,SAASD,EAAoB,CAAE,UAAAlB,GAA2C,CACxE,KAAM,CAAE,SAAAK,EAAU,SAAAE,EAAU,kBAAAE,CAAA,EAAsBb,EAAA,EAC5C,CAACwB,EAAQC,CAAS,EAAI1B,EAAM,SAAS,EAAK,EAgBhD,GAbAA,EAAM,UAAU,IAAM,CACpB,GAAI,CAACyB,EACH,OAGF,MAAME,EAAe,IAAM,CACzBD,EAAU,EAAK,CACjB,EAEA,cAAO,iBAAiB,SAAUC,EAAc,CAAE,QAAS,GAAM,EAC1D,IAAM,OAAO,oBAAoB,SAAUA,CAAY,CAChE,EAAG,CAACF,CAAM,CAAC,EAEPf,EAAS,SAAW,EACtB,OAAO,KAGT,MAAMkB,EAAkB,KAAK,IAAI,GAAGlB,EAAS,IAAKK,GAAMA,EAAE,KAAK,CAAC,EAE1Dc,0BACH,KAAA,CAAG,UAAU,wBACX,SAAAnB,EAAS,IAAKoB,GAAY,CACzB,MAAMC,EAAWnB,IAAakB,EAAQ,GAChCE,EAAc,IAAIF,EAAQ,MAAQF,GAAmB,CAAC,MAE5D,OACEN,EAAAA,kBAAAA,IAAC,KAAA,CAAoB,UAAU,YAC7B,SAAAA,EAAAA,kBAAAA,IAAC,IAAA,CACC,KAAM,IAAIQ,EAAQ,EAAE,GACpB,QAAS,IAAMJ,EAAU,EAAK,EAC9B,UAAWN,EAAAA,GACT,oEACAW,EAAW,2BAA6B,uBAAA,EAE1C,MAAO,CAAE,YAAAC,CAAA,EAER,SAAAF,EAAQ,IAAA,CAAA,CACX,EAXOA,EAAQ,EAYjB,CAEJ,CAAC,CAAA,CACH,EAGF,OACET,EAAAA,kBAAAA,KAAAY,6BAAA,CAEE,SAAA,CAAAZ,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,GAAG,sEAAuEf,CAAS,EACjG,SAAA,CAAAgB,EAAAA,kBAAAA,KAAC,SAAA,CACC,QAAS,IAAMK,EAAU,CAACD,CAAM,EAChC,UAAU,+DAEV,SAAA,CAAAJ,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,0CACb,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,uEAAuE,SAAA,gBAAa,EACpGA,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,+BAAgC,YAAqB,UAAA,CAAW,CAAA,EAClF,EACAA,EAAAA,kBAAAA,IAAC,MAAA,CACC,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACf,UAAWF,EAAAA,GAAG,6CAA8CK,GAAU,YAAY,EAElF,SAAAH,EAAAA,kBAAAA,IAAC,OAAA,CAAK,EAAE,cAAA,CAAe,CAAA,CAAA,CACzB,CAAA,CAAA,EAGDG,GACCH,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,wCACb,iCAAC,MAAA,CAAI,aAAW,2BAA4B,SAAAO,CAAA,CAAY,CAAA,CAC1D,CAAA,EAEJ,EAGAP,EAAAA,kBAAAA,IAAC,OAAI,UAAWF,KAAG,kBAAmBf,CAAS,EAAG,aAAW,oBAC1D,SAAAwB,CAAA,CACH,CAAA,EACF,CAEJ,CAKA,SAASL,EAAuB,CAAE,SAAApB,EAAU,UAAAC,GAA8C,CACxF,KAAM,CAAE,iBAAAW,EAAkB,YAAAH,EAAa,OAAAqB,CAAA,EAAWjC,EAAA,EAC5CkC,EAAanC,EAAM,OAAuB,IAAI,EAEpDA,OAAAA,EAAM,UAAU,IAAM,CACpB,MAAMoC,EAAOD,EAAW,QACxB,GAAI,CAACC,EACH,OAGF,MAAMC,EAAgB,IAAM,CAC1B,MAAMC,EAAW,MAAM,KAAKF,EAAK,iBAAiBF,EAAO,UAAY,wBAAwB,CAAC,EAAE,OAC7FK,GAAY,CACX,MAAMC,EAAQ,SAASD,EAAQ,QAAQ,OAAO,CAAC,EAAG,EAAE,EACpD,OAAOC,IAAUN,EAAO,UAAY,IAAMM,IAAUN,EAAO,UAAY,EACzE,CAAA,EAGIO,EAA8BH,EAAS,IAAKC,IAC3CA,EAAQ,KACXA,EAAQ,GAAKG,EAAAA,QAAQH,EAAQ,aAAe,SAAS,GAEhD,CACL,GAAIA,EAAQ,GACZ,KAAMA,EAAQ,aAAe,GAC7B,MAAO,SAASA,EAAQ,QAAQ,OAAO,CAAC,EAAG,EAAE,CAAA,EAEhD,EAED,OAAAvB,EAAiByB,CAAY,EACtBH,CACT,EAGMA,EAAWD,EAAA,EAGXM,EAAW,IAAI,qBAClBC,GAAY,CACXA,EAAQ,QAASC,GAAU,CACrBA,EAAM,gBACRhC,EAAYgC,EAAM,OAAO,EAAE,CAE/B,CAAC,CACH,EACA,CACE,WAAY,mBACZ,UAAW,EAAA,CACb,EAGFP,EAAS,QAASQ,GAAOH,EAAS,QAAQG,CAAE,CAAC,EAG7C,MAAMC,EAAmB,IAAI,iBAAiB,IAAM,CAClD,MAAMC,EAAcX,EAAA,EACpBM,EAAS,WAAA,EACTK,EAAY,QAASF,GAAOH,EAAS,QAAQG,CAAE,CAAC,CAClD,CAAC,EAED,OAAAC,EAAiB,QAAQX,EAAM,CAC7B,UAAW,GACX,QAAS,GACT,cAAe,EAAA,CAChB,EAEM,IAAM,CACXO,EAAS,WAAA,EACTI,EAAiB,WAAA,CACnB,CACF,EAAG,CAACb,EAAO,SAAUA,EAAO,SAAUA,EAAO,SAAUlB,EAAkBH,CAAW,CAAC,EAGnFS,EAAAA,kBAAAA,IAAC,MAAA,CAAI,IAAKa,EAAY,UAAA9B,EACnB,SAAAD,EACH,CAEJ,CAEAD,EAAgB,KAAOoB,EACvBpB,EAAgB,QAAUqB"}
|
|
1
|
+
{"version":3,"file":"table-of-contents.cjs","names":[],"sources":["../packages/ui-web/src/table-of-contents.tsx"],"sourcesContent":["'use client';\n\nimport {\n HeadingItem,\n TableOfContentsBaseProps,\n TableOfContentsContentBaseProps,\n TableOfContentsListBaseProps,\n TableOfContentsRootBaseProps,\n} from '@gv-tech/ui-core';\nimport * as React from 'react';\nimport { cn, slugify } from './lib/utils';\n\n// Context for sharing heading data\ninterface TOCContextValue {\n headings: HeadingItem[];\n activeId: string | null;\n activeHeadingText: string | null;\n registerHeadings: (headings: HeadingItem[]) => void;\n setActiveId: (id: string | null) => void;\n config: TableOfContentsBaseProps;\n}\n\nconst TOCContext = React.createContext<TOCContextValue | null>(null);\n\nfunction useTOC() {\n const context = React.useContext(TOCContext);\n if (!context) {\n throw new Error('TOC components must be used within a TableOfContents provider');\n }\n return context;\n}\n\nexport type TableOfContentsProps = TableOfContentsRootBaseProps;\n\n/**\n * Root component that provides the Table of Contents context.\n * Can be used as a wrapper OR standalone.\n * If used as a wrapper: <TableOfContents><List /><Content>{children}</Content></TableOfContents>\n * If used standalone: <TableOfContents /> (requires container ref or defaults to document)\n */\nfunction TableOfContents({\n children,\n className,\n activeId: activeIdOverride,\n minLevel = 1,\n maxLevel = 4,\n selector = 'h1, h2, h3, h4, h5, h6',\n}: TableOfContentsProps) {\n const [headings, setHeadings] = React.useState<HeadingItem[]>([]);\n const [activeId, setActiveId] = React.useState<string | null>(null);\n\n const activeHeadingText = React.useMemo(() => {\n return headings.find((h) => h.id === activeId)?.text || null;\n }, [headings, activeId]);\n\n const registerHeadings = React.useCallback((newHeadings: HeadingItem[]) => {\n setHeadings((prev) => {\n if (JSON.stringify(prev) === JSON.stringify(newHeadings)) {\n return prev;\n }\n return newHeadings;\n });\n }, []);\n\n const value = React.useMemo(\n () => ({\n headings,\n activeId: activeIdOverride || activeId,\n activeHeadingText,\n registerHeadings,\n setActiveId,\n config: { minLevel, maxLevel, selector, className },\n }),\n [\n headings,\n activeId,\n activeIdOverride,\n activeHeadingText,\n registerHeadings,\n minLevel,\n maxLevel,\n selector,\n className,\n ],\n );\n\n return (\n <TOCContext.Provider value={value}>\n <div className={cn('relative', className)}>\n {children || (\n <div className=\"flex flex-col gap-4\">\n <TableOfContentsList />\n <TableOfContentsContent>{null}</TableOfContentsContent>\n </div>\n )}\n </div>\n </TOCContext.Provider>\n );\n}\n\n/**\n * Renders the actual list of links.\n */\nfunction TableOfContentsList({ className }: TableOfContentsListBaseProps) {\n const { headings, activeId, activeHeadingText } = useTOC();\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Auto-collapse on scroll\n React.useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handleScroll = () => {\n setIsOpen(false);\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, [isOpen]);\n\n if (headings.length === 0) {\n return null;\n }\n\n const currentMinLevel = Math.min(...headings.map((h) => h.level));\n\n const listContent = (\n <ul className=\"m-0 list-none text-sm\">\n {headings.map((heading) => {\n const isActive = activeId === heading.id;\n const paddingLeft = `${(heading.level - currentMinLevel) * 1}rem`;\n\n return (\n <li key={heading.id} className=\"mt-0 pt-2\">\n <a\n href={`#${heading.id}`}\n onClick={() => setIsOpen(false)}\n className={cn(\n 'hover:text-foreground inline-block no-underline transition-colors',\n isActive ? 'text-primary font-medium' : 'text-muted-foreground',\n )}\n style={{ paddingLeft }}\n >\n {heading.text}\n </a>\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <>\n {/* Mobile Sticky Header */}\n <div className={cn('bg-background/95 sticky top-0 z-40 border-b backdrop-blur xl:hidden', className)}>\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"flex w-full items-center justify-between px-4 py-3 text-left\"\n >\n <div className=\"flex items-center gap-2 overflow-hidden\">\n <span className=\"text-muted-foreground text-xs font-semibold tracking-wider uppercase\">On this page:</span>\n <span className=\"truncate text-sm font-medium\">{activeHeadingText || 'Overview'}</span>\n </div>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn('shrink-0 transition-transform duration-200', isOpen && 'rotate-180')}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n\n {isOpen && (\n <div className=\"bg-background border-t px-4 pt-2 pb-6\">\n <nav aria-label=\"Table of contents mobile\">{listContent}</nav>\n </div>\n )}\n </div>\n\n {/* Desktop Hidden List */}\n <nav className={cn('hidden xl:block', className)} aria-label=\"Table of contents\">\n {listContent}\n </nav>\n </>\n );\n}\n\n/**\n * Wraps the content area and automatically detects headings within it.\n */\nfunction TableOfContentsContent({ children, className }: TableOfContentsContentBaseProps) {\n const { registerHeadings, setActiveId, config } = useTOC();\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const root = contentRef.current;\n if (!root) {\n return;\n }\n\n const queryHeadings = () => {\n const elements = Array.from(root.querySelectorAll(config.selector || 'h1, h2, h3, h4, h5, h6')).filter(\n (element) => {\n const level = parseInt(element.tagName.charAt(1), 10);\n return level >= (config.minLevel ?? 1) && level <= (config.maxLevel ?? 4);\n },\n );\n\n const headingItems: HeadingItem[] = elements.map((element) => {\n if (!element.id) {\n element.id = slugify(element.textContent || 'heading');\n }\n return {\n id: element.id,\n text: element.textContent || '',\n level: parseInt(element.tagName.charAt(1), 10),\n };\n });\n\n registerHeadings(headingItems);\n return elements;\n };\n\n // Initial query\n const elements = queryHeadings();\n\n // Intersection Observer for active ID\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id);\n }\n });\n },\n {\n rootMargin: '0px 0px -80% 0px',\n threshold: 0.1,\n },\n );\n\n elements.forEach((el) => observer.observe(el));\n\n // Mutation Observer for dynamic content\n const mutationObserver = new MutationObserver(() => {\n const newElements = queryHeadings();\n observer.disconnect();\n newElements.forEach((el) => observer.observe(el));\n });\n\n mutationObserver.observe(root, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n observer.disconnect();\n mutationObserver.disconnect();\n };\n }, [config.selector, config.minLevel, config.maxLevel, registerHeadings, setActiveId]);\n\n return (\n <div ref={contentRef} className={className}>\n {children}\n </div>\n );\n}\n\nTableOfContents.List = TableOfContentsList;\nTableOfContents.Content = TableOfContentsContent;\n\nexport type {\n TableOfContentsContentBaseProps as TableOfContentsContentProps,\n TableOfContentsListBaseProps as TableOfContentsListProps,\n} from '@gv-tech/ui-core';\nexport { TableOfContents, TableOfContentsContent, TableOfContentsList };\n"],"mappings":"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"}
|
|
@@ -1,68 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Root component that provides the Table of Contents context.
|
|
6
|
-
* Can be used as a wrapper OR standalone.
|
|
7
|
-
* If used as a wrapper: <TableOfContents><List /><Content>{children}</Content></TableOfContents>
|
|
8
|
-
* If used standalone: <TableOfContents /> (requires container ref or defaults to document)
|
|
9
|
-
*/
|
|
10
|
-
export declare function TableOfContents({ children, className, activeId: activeIdOverride, minLevel, maxLevel, selector, }: TableOfContentsProps): JSX.Element;
|
|
11
|
-
|
|
12
|
-
export declare namespace TableOfContents {
|
|
13
|
-
var List: typeof TableOfContentsList;
|
|
14
|
-
var Content: typeof TableOfContentsContent;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
declare interface TableOfContentsBaseProps {
|
|
18
|
-
/**
|
|
19
|
-
* Optional custom class name.
|
|
20
|
-
*/
|
|
21
|
-
className?: string;
|
|
22
|
-
/**
|
|
23
|
-
* Optional currently active heading ID to override the intersection observer.
|
|
24
|
-
*/
|
|
25
|
-
activeId?: string;
|
|
26
|
-
/**
|
|
27
|
-
* Optional minimum heading level to include.
|
|
28
|
-
* Default: 1 (h1)
|
|
29
|
-
*/
|
|
30
|
-
minLevel?: number;
|
|
31
|
-
/**
|
|
32
|
-
* Optional maximum heading level to include.
|
|
33
|
-
* Default: 3 (h3)
|
|
34
|
-
*/
|
|
35
|
-
maxLevel?: number;
|
|
36
|
-
/**
|
|
37
|
-
* The selector used to query the DOM for headings.
|
|
38
|
-
* Default: "h1, h2, h3, h4, h5, h6"
|
|
39
|
-
*/
|
|
40
|
-
selector?: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Wraps the content area and automatically detects headings within it.
|
|
45
|
-
*/
|
|
46
|
-
export declare function TableOfContentsContent({ children, className }: TableOfContentsContentProps): JSX.Element;
|
|
47
|
-
|
|
48
|
-
export declare interface TableOfContentsContentProps {
|
|
49
|
-
children: React_2.ReactNode;
|
|
50
|
-
className?: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Renders the actual list of links.
|
|
55
|
-
*/
|
|
56
|
-
export declare function TableOfContentsList({ className }: TableOfContentsListProps): JSX.Element | null;
|
|
57
|
-
|
|
58
|
-
export declare interface TableOfContentsListProps {
|
|
59
|
-
className?: string;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export declare type TableOfContentsProps = TableOfContentsRootBaseProps;
|
|
63
|
-
|
|
64
|
-
declare interface TableOfContentsRootBaseProps extends TableOfContentsBaseProps {
|
|
65
|
-
children: React_2.ReactNode;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export { }
|
|
1
|
+
export * from './packages/ui-web/src/table-of-contents'
|
|
2
|
+
export {}
|
|
@@ -1,161 +1,166 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
"use client";
|
|
3
|
+
import { vr as e } from "./vendor-Cr0eKZrm.mjs";
|
|
4
|
+
import { n as t, t as n } from "./utils-BtI8Nf6i.mjs";
|
|
5
|
+
import * as r from "react";
|
|
6
|
+
//#region packages/ui-web/src/table-of-contents.tsx
|
|
7
|
+
var i = e(), a = r.createContext(null);
|
|
8
|
+
function o() {
|
|
9
|
+
let e = r.useContext(a);
|
|
10
|
+
if (!e) throw Error("TOC components must be used within a TableOfContents provider");
|
|
11
|
+
return e;
|
|
11
12
|
}
|
|
12
|
-
function
|
|
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
|
-
|
|
13
|
+
function s({ children: e, className: t, activeId: o, minLevel: s = 1, maxLevel: u = 4, selector: d = "h1, h2, h3, h4, h5, h6" }) {
|
|
14
|
+
let [f, p] = r.useState([]), [m, h] = r.useState(null), g = r.useMemo(() => f.find((e) => e.id === m)?.text || null, [f, m]), _ = r.useCallback((e) => {
|
|
15
|
+
p((t) => JSON.stringify(t) === JSON.stringify(e) ? t : e);
|
|
16
|
+
}, []), v = r.useMemo(() => ({
|
|
17
|
+
headings: f,
|
|
18
|
+
activeId: o || m,
|
|
19
|
+
activeHeadingText: g,
|
|
20
|
+
registerHeadings: _,
|
|
21
|
+
setActiveId: h,
|
|
22
|
+
config: {
|
|
23
|
+
minLevel: s,
|
|
24
|
+
maxLevel: u,
|
|
25
|
+
selector: d,
|
|
26
|
+
className: t
|
|
27
|
+
}
|
|
28
|
+
}), [
|
|
29
|
+
f,
|
|
30
|
+
m,
|
|
31
|
+
o,
|
|
32
|
+
g,
|
|
33
|
+
_,
|
|
34
|
+
s,
|
|
35
|
+
u,
|
|
36
|
+
d,
|
|
37
|
+
t
|
|
38
|
+
]);
|
|
39
|
+
return /* @__PURE__ */ (0, i.jsx)(a.Provider, {
|
|
40
|
+
value: v,
|
|
41
|
+
children: /* @__PURE__ */ (0, i.jsx)("div", {
|
|
42
|
+
className: n("relative", t),
|
|
43
|
+
children: e || /* @__PURE__ */ (0, i.jsxs)("div", {
|
|
44
|
+
className: "flex flex-col gap-4",
|
|
45
|
+
children: [/* @__PURE__ */ (0, i.jsx)(c, {}), /* @__PURE__ */ (0, i.jsx)(l, { children: null })]
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
});
|
|
47
49
|
}
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
50
|
+
function c({ className: e }) {
|
|
51
|
+
let { headings: t, activeId: a, activeHeadingText: s } = o(), [c, l] = r.useState(!1);
|
|
52
|
+
if (r.useEffect(() => {
|
|
53
|
+
if (!c) return;
|
|
54
|
+
let e = () => {
|
|
55
|
+
l(!1);
|
|
56
|
+
};
|
|
57
|
+
return window.addEventListener("scroll", e, { passive: !0 }), () => window.removeEventListener("scroll", e);
|
|
58
|
+
}, [c]), t.length === 0) return null;
|
|
59
|
+
let u = Math.min(...t.map((e) => e.level)), d = /* @__PURE__ */ (0, i.jsx)("ul", {
|
|
60
|
+
className: "m-0 list-none text-sm",
|
|
61
|
+
children: t.map((e) => {
|
|
62
|
+
let t = a === e.id, r = `${(e.level - u) * 1}rem`;
|
|
63
|
+
return /* @__PURE__ */ (0, i.jsx)("li", {
|
|
64
|
+
className: "mt-0 pt-2",
|
|
65
|
+
children: /* @__PURE__ */ (0, i.jsx)("a", {
|
|
66
|
+
href: `#${e.id}`,
|
|
67
|
+
onClick: () => l(!1),
|
|
68
|
+
className: n("hover:text-foreground inline-block no-underline transition-colors", t ? "text-primary font-medium" : "text-muted-foreground"),
|
|
69
|
+
style: { paddingLeft: r },
|
|
70
|
+
children: e.text
|
|
71
|
+
})
|
|
72
|
+
}, e.id);
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
return /* @__PURE__ */ (0, i.jsxs)(i.Fragment, { children: [/* @__PURE__ */ (0, i.jsxs)("div", {
|
|
76
|
+
className: n("bg-background/95 sticky top-0 z-40 border-b backdrop-blur xl:hidden", e),
|
|
77
|
+
children: [/* @__PURE__ */ (0, i.jsxs)("button", {
|
|
78
|
+
onClick: () => l(!c),
|
|
79
|
+
className: "flex w-full items-center justify-between px-4 py-3 text-left",
|
|
80
|
+
children: [/* @__PURE__ */ (0, i.jsxs)("div", {
|
|
81
|
+
className: "flex items-center gap-2 overflow-hidden",
|
|
82
|
+
children: [/* @__PURE__ */ (0, i.jsx)("span", {
|
|
83
|
+
className: "text-muted-foreground text-xs font-semibold tracking-wider uppercase",
|
|
84
|
+
children: "On this page:"
|
|
85
|
+
}), /* @__PURE__ */ (0, i.jsx)("span", {
|
|
86
|
+
className: "truncate text-sm font-medium",
|
|
87
|
+
children: s || "Overview"
|
|
88
|
+
})]
|
|
89
|
+
}), /* @__PURE__ */ (0, i.jsx)("svg", {
|
|
90
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
91
|
+
width: "16",
|
|
92
|
+
height: "16",
|
|
93
|
+
viewBox: "0 0 24 24",
|
|
94
|
+
fill: "none",
|
|
95
|
+
stroke: "currentColor",
|
|
96
|
+
strokeWidth: "2",
|
|
97
|
+
strokeLinecap: "round",
|
|
98
|
+
strokeLinejoin: "round",
|
|
99
|
+
className: n("shrink-0 transition-transform duration-200", c && "rotate-180"),
|
|
100
|
+
children: /* @__PURE__ */ (0, i.jsx)("path", { d: "m6 9 6 6 6-6" })
|
|
101
|
+
})]
|
|
102
|
+
}), c && /* @__PURE__ */ (0, i.jsx)("div", {
|
|
103
|
+
className: "bg-background border-t px-4 pt-2 pb-6",
|
|
104
|
+
children: /* @__PURE__ */ (0, i.jsx)("nav", {
|
|
105
|
+
"aria-label": "Table of contents mobile",
|
|
106
|
+
children: d
|
|
107
|
+
})
|
|
108
|
+
})]
|
|
109
|
+
}), /* @__PURE__ */ (0, i.jsx)("nav", {
|
|
110
|
+
className: n("hidden xl:block", e),
|
|
111
|
+
"aria-label": "Table of contents",
|
|
112
|
+
children: d
|
|
113
|
+
})] });
|
|
110
114
|
}
|
|
111
|
-
function
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
115
|
+
function l({ children: e, className: n }) {
|
|
116
|
+
let { registerHeadings: a, setActiveId: s, config: c } = o(), l = r.useRef(null);
|
|
117
|
+
return r.useEffect(() => {
|
|
118
|
+
let e = l.current;
|
|
119
|
+
if (!e) return;
|
|
120
|
+
let n = () => {
|
|
121
|
+
let n = Array.from(e.querySelectorAll(c.selector || "h1, h2, h3, h4, h5, h6")).filter((e) => {
|
|
122
|
+
let t = parseInt(e.tagName.charAt(1), 10);
|
|
123
|
+
return t >= (c.minLevel ?? 1) && t <= (c.maxLevel ?? 4);
|
|
124
|
+
});
|
|
125
|
+
return a(n.map((e) => (e.id ||= t(e.textContent || "heading"), {
|
|
126
|
+
id: e.id,
|
|
127
|
+
text: e.textContent || "",
|
|
128
|
+
level: parseInt(e.tagName.charAt(1), 10)
|
|
129
|
+
}))), n;
|
|
130
|
+
}, r = n(), i = new IntersectionObserver((e) => {
|
|
131
|
+
e.forEach((e) => {
|
|
132
|
+
e.isIntersecting && s(e.target.id);
|
|
133
|
+
});
|
|
134
|
+
}, {
|
|
135
|
+
rootMargin: "0px 0px -80% 0px",
|
|
136
|
+
threshold: .1
|
|
137
|
+
});
|
|
138
|
+
r.forEach((e) => i.observe(e));
|
|
139
|
+
let o = new MutationObserver(() => {
|
|
140
|
+
let e = n();
|
|
141
|
+
i.disconnect(), e.forEach((e) => i.observe(e));
|
|
142
|
+
});
|
|
143
|
+
return o.observe(e, {
|
|
144
|
+
childList: !0,
|
|
145
|
+
subtree: !0,
|
|
146
|
+
characterData: !0
|
|
147
|
+
}), () => {
|
|
148
|
+
i.disconnect(), o.disconnect();
|
|
149
|
+
};
|
|
150
|
+
}, [
|
|
151
|
+
c.selector,
|
|
152
|
+
c.minLevel,
|
|
153
|
+
c.maxLevel,
|
|
154
|
+
a,
|
|
155
|
+
s
|
|
156
|
+
]), /* @__PURE__ */ (0, i.jsx)("div", {
|
|
157
|
+
ref: l,
|
|
158
|
+
className: n,
|
|
159
|
+
children: e
|
|
160
|
+
});
|
|
153
161
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
export {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
w as TableOfContentsList
|
|
160
|
-
};
|
|
161
|
-
//# sourceMappingURL=table-of-contents.mjs.map
|
|
162
|
+
s.List = c, s.Content = l;
|
|
163
|
+
//#endregion
|
|
164
|
+
export { s as TableOfContents, l as TableOfContentsContent, c as TableOfContentsList };
|
|
165
|
+
|
|
166
|
+
//# sourceMappingURL=table-of-contents.mjs.map
|