@burtson-labs/ui 0.13.1 → 0.14.1
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/LICENSES/DEPENDENCIES.txt +2745 -0
- package/LICENSES/Radix-MIT.txt +21 -0
- package/LICENSES/cmdk-MIT.txt +21 -0
- package/LICENSES/overrides/react-remove-scroll-bar.txt +26 -0
- package/LICENSES/shadcn-MIT.txt +21 -0
- package/README.md +20 -12
- package/THIRD_PARTY_NOTICES.md +15 -3
- package/dist/components/accordion.d.ts +4 -4
- package/dist/components/accordion.js +22 -18
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.d.ts +13 -11
- package/dist/components/alert-dialog.js +41 -31
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.d.ts +5 -3
- package/dist/components/alert.js +12 -7
- package/dist/components/alert.js.map +1 -1
- package/dist/components/app-shell.d.ts +7 -6
- package/dist/components/app-shell.js +22 -14
- package/dist/components/app-shell.js.map +1 -1
- package/dist/components/attachment.d.ts +3 -3
- package/dist/components/attachment.js +11 -7
- package/dist/components/attachment.js.map +1 -1
- package/dist/components/audio-player.d.ts +2 -2
- package/dist/components/audio-player.js +9 -6
- package/dist/components/audio-player.js.map +1 -1
- package/dist/components/avatar.d.ts +4 -4
- package/dist/components/avatar.js +16 -12
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +15 -13
- package/dist/components/badge.js.map +1 -1
- package/dist/components/breadcrumb.d.ts +8 -8
- package/dist/components/breadcrumb.js +27 -20
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button.d.ts +9 -2
- package/dist/components/button.js +15 -6
- package/dist/components/button.js.map +1 -1
- package/dist/components/card.d.ts +9 -9
- package/dist/components/card.js +33 -23
- package/dist/components/card.js.map +1 -1
- package/dist/components/chat-history.d.ts +1 -1
- package/dist/components/chat-history.js +11 -9
- package/dist/components/chat-history.js.map +1 -1
- package/dist/components/chat-layout.d.ts +1 -1
- package/dist/components/chat-layout.js +8 -3
- package/dist/components/chat-layout.js.map +1 -1
- package/dist/components/checkbox-card.d.ts +3 -3
- package/dist/components/checkbox-card.js +12 -10
- package/dist/components/checkbox-card.js.map +1 -1
- package/dist/components/checkbox.d.ts +24 -3
- package/dist/components/checkbox.js +52 -9
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/collapsible.d.ts +3 -3
- package/dist/components/collapsible.js +14 -11
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/combobox.d.ts +14 -4
- package/dist/components/combobox.js +19 -8
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.d.ts +68 -12
- package/dist/components/command.js +48 -34
- package/dist/components/command.js.map +1 -1
- package/dist/components/composer.d.ts +2 -2
- package/dist/components/composer.js +10 -7
- package/dist/components/composer.js.map +1 -1
- package/dist/components/connection-status.d.ts +3 -3
- package/dist/components/connection-status.js +19 -14
- package/dist/components/connection-status.js.map +1 -1
- package/dist/components/context-menu.d.ts +15 -14
- package/dist/components/context-menu.js +52 -41
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/conversation.d.ts +1 -1
- package/dist/components/conversation.js +7 -5
- package/dist/components/conversation.js.map +1 -1
- package/dist/components/copy-button.d.ts +1 -1
- package/dist/components/copy-button.js +4 -2
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/data-table.d.ts +7 -2
- package/dist/components/data-table.js +17 -42
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/dialog.d.ts +19 -10
- package/dist/components/dialog.js +50 -33
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dropdown-menu.d.ts +15 -14
- package/dist/components/dropdown-menu.js +52 -41
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/editor-tabs.d.ts +1 -1
- package/dist/components/editor-tabs.js +7 -5
- package/dist/components/editor-tabs.js.map +1 -1
- package/dist/components/empty-state.d.ts +5 -5
- package/dist/components/empty-state.js +17 -11
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/error-summary.d.ts +21 -0
- package/dist/components/error-summary.js +62 -0
- package/dist/components/error-summary.js.map +1 -0
- package/dist/components/field.d.ts +66 -7
- package/dist/components/field.js +152 -20
- package/dist/components/field.js.map +1 -1
- package/dist/components/form-actions.d.ts +18 -0
- package/dist/components/form-actions.js +30 -0
- package/dist/components/form-actions.js.map +1 -0
- package/dist/components/icon-button.d.ts +3 -1
- package/dist/components/icon-button.js +6 -3
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/input.d.ts +42 -7
- package/dist/components/input.js +54 -10
- package/dist/components/input.js.map +1 -1
- package/dist/components/kbd.d.ts +2 -2
- package/dist/components/kbd.js +8 -5
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.d.ts +7 -2
- package/dist/components/label.js +14 -7
- package/dist/components/label.js.map +1 -1
- package/dist/components/markdown.d.ts +4 -3
- package/dist/components/markdown.js +8 -6
- package/dist/components/markdown.js.map +1 -1
- package/dist/components/menubar.d.ts +17 -15
- package/dist/components/menubar.js +58 -45
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/message-actions.d.ts +3 -3
- package/dist/components/message-actions.js +16 -12
- package/dist/components/message-actions.js.map +1 -1
- package/dist/components/message.d.ts +1 -1
- package/dist/components/message.js +6 -3
- package/dist/components/message.js.map +1 -1
- package/dist/components/mobile-nav.d.ts +1 -1
- package/dist/components/mobile-nav.js +7 -5
- package/dist/components/mobile-nav.js.map +1 -1
- package/dist/components/native-select.d.ts +16 -0
- package/dist/components/native-select.js +33 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +13 -12
- package/dist/components/navigation-menu.js +43 -33
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/number-input.d.ts +23 -0
- package/dist/components/number-input.js +45 -0
- package/dist/components/number-input.js.map +1 -0
- package/dist/components/onboarding-checklist.d.ts +1 -1
- package/dist/components/onboarding-checklist.js +5 -3
- package/dist/components/onboarding-checklist.js.map +1 -1
- package/dist/components/page-header.d.ts +7 -6
- package/dist/components/page-header.js +23 -15
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/pagination.d.ts +1 -1
- package/dist/components/pagination.js +4 -2
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/popover.d.ts +14 -11
- package/dist/components/popover.js +30 -23
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +2 -2
- package/dist/components/progress.js +11 -9
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.d.ts +23 -4
- package/dist/components/radio-group.js +56 -14
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/reasoning.d.ts +3 -3
- package/dist/components/reasoning.js +14 -11
- package/dist/components/reasoning.js.map +1 -1
- package/dist/components/resizable.js +1 -0
- package/dist/components/resizable.js.map +1 -1
- package/dist/components/scroll-area.d.ts +4 -3
- package/dist/components/scroll-area.js +18 -14
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/secret-input.d.ts +3 -2
- package/dist/components/secret-input.js +7 -4
- package/dist/components/secret-input.js.map +1 -1
- package/dist/components/select.d.ts +12 -7
- package/dist/components/select.js +42 -35
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.d.ts +2 -2
- package/dist/components/separator.js +8 -6
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sheet.d.ts +11 -9
- package/dist/components/sheet.js +41 -29
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/skeleton.d.ts +2 -1
- package/dist/components/skeleton.js +7 -4
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.d.ts +10 -6
- package/dist/components/slider.js +16 -7
- package/dist/components/slider.js.map +1 -1
- package/dist/components/source.d.ts +2 -2
- package/dist/components/source.js +10 -7
- package/dist/components/source.js.map +1 -1
- package/dist/components/spinner.d.ts +4 -2
- package/dist/components/spinner.js +5 -3
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stat-card.d.ts +27 -2
- package/dist/components/stat-card.js +70 -9
- package/dist/components/stat-card.js.map +1 -1
- package/dist/components/status.d.ts +7 -6
- package/dist/components/status.js +12 -5
- package/dist/components/status.js.map +1 -1
- package/dist/components/steps.d.ts +1 -1
- package/dist/components/steps.js +5 -3
- package/dist/components/steps.js.map +1 -1
- package/dist/components/switch.d.ts +47 -3
- package/dist/components/switch.js +89 -11
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.d.ts +29 -12
- package/dist/components/table.js +80 -34
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +10 -5
- package/dist/components/tabs.js +29 -19
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/textarea.d.ts +6 -1
- package/dist/components/textarea.js +4 -3
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toast.d.ts +11 -7
- package/dist/components/toast.js +37 -27
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toaster.d.ts +4 -2
- package/dist/components/toaster.js +7 -2
- package/dist/components/toaster.js.map +1 -1
- package/dist/components/tool-call.d.ts +2 -2
- package/dist/components/tool-call.js +15 -12
- package/dist/components/tool-call.js.map +1 -1
- package/dist/components/toolbar.d.ts +9 -4
- package/dist/components/toolbar.js +15 -9
- package/dist/components/toolbar.js.map +1 -1
- package/dist/components/tooltip.d.ts +4 -3
- package/dist/components/tooltip.js +17 -13
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/tour.js +10 -8
- package/dist/components/tour.js.map +1 -1
- package/dist/components/tree-view.d.ts +1 -1
- package/dist/components/tree-view.js +10 -5
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/voice-recorder.d.ts +1 -1
- package/dist/components/voice-recorder.js +5 -2
- package/dist/components/voice-recorder.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +17 -12
- package/dist/lib/media.d.ts +18 -0
- package/dist/lib/media.js +34 -0
- package/dist/lib/media.js.map +1 -0
- package/dist/lib/utils.d.ts +32 -0
- package/dist/lib/utils.js +33 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/mui/index.js +20 -8
- package/dist/mui/index.js.map +1 -1
- package/dist/primitives/vendor/cmdk/command-score.d.ts +1 -0
- package/dist/primitives/vendor/cmdk/command-score.js +64 -0
- package/dist/primitives/vendor/cmdk/command-score.js.map +1 -0
- package/dist/primitives/vendor/cmdk/index.d.ts +384 -0
- package/dist/primitives/vendor/cmdk/index.js +687 -0
- package/dist/primitives/vendor/cmdk/index.js.map +1 -0
- package/dist/primitives/vendor/radix/number/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/number/number.d.ts +2 -0
- package/dist/primitives/vendor/radix/number/number.js +9 -0
- package/dist/primitives/vendor/radix/number/number.js.map +1 -0
- package/dist/primitives/vendor/radix/primitive/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/primitive/is-development.d.ts +1 -0
- package/dist/primitives/vendor/radix/primitive/is-development.js +7 -0
- package/dist/primitives/vendor/radix/primitive/is-development.js.map +1 -0
- package/dist/primitives/vendor/radix/primitive/primitive.d.ts +14 -0
- package/dist/primitives/vendor/radix/primitive/primitive.js +12 -0
- package/dist/primitives/vendor/radix/primitive/primitive.js.map +1 -0
- package/dist/primitives/vendor/radix/primitive/types.d.ts +5 -0
- package/dist/primitives/vendor/radix/react-accordion/accordion.d.ts +112 -0
- package/dist/primitives/vendor/radix/react-accordion/accordion.js +266 -0
- package/dist/primitives/vendor/radix/react-accordion/accordion.js.map +1 -0
- package/dist/primitives/vendor/radix/react-accordion/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.d.ts +49 -0
- package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.js +122 -0
- package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.js.map +1 -0
- package/dist/primitives/vendor/radix/react-alert-dialog/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-arrow/arrow.d.ts +9 -0
- package/dist/primitives/vendor/radix/react-arrow/arrow.js +22 -0
- package/dist/primitives/vendor/radix/react-arrow/arrow.js.map +1 -0
- package/dist/primitives/vendor/radix/react-arrow/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-avatar/avatar.d.ts +19 -0
- package/dist/primitives/vendor/radix/react-avatar/avatar.js +132 -0
- package/dist/primitives/vendor/radix/react-avatar/avatar.js.map +1 -0
- package/dist/primitives/vendor/radix/react-avatar/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-checkbox/checkbox.d.ts +47 -0
- package/dist/primitives/vendor/radix/react-checkbox/checkbox.js +197 -0
- package/dist/primitives/vendor/radix/react-checkbox/checkbox.js.map +1 -0
- package/dist/primitives/vendor/radix/react-checkbox/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-collapsible/collapsible.d.ts +31 -0
- package/dist/primitives/vendor/radix/react-collapsible/collapsible.js +133 -0
- package/dist/primitives/vendor/radix/react-collapsible/collapsible.js.map +1 -0
- package/dist/primitives/vendor/radix/react-collapsible/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-collection/collection-legacy.d.ts +21 -0
- package/dist/primitives/vendor/radix/react-collection/collection-legacy.js +84 -0
- package/dist/primitives/vendor/radix/react-collection/collection-legacy.js.map +1 -0
- package/dist/primitives/vendor/radix/react-collection/collection.d.ts +32 -0
- package/dist/primitives/vendor/radix/react-collection/index.d.ts +4 -0
- package/dist/primitives/vendor/radix/react-collection/ordered-dictionary.d.ts +51 -0
- package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.d.ts +13 -0
- package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.js +43 -0
- package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.js.map +1 -0
- package/dist/primitives/vendor/radix/react-compose-refs/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-context/create-context.d.ts +45 -0
- package/dist/primitives/vendor/radix/react-context/create-context.js +74 -0
- package/dist/primitives/vendor/radix/react-context/create-context.js.map +1 -0
- package/dist/primitives/vendor/radix/react-context/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-context-menu/context-menu.d.ts +95 -0
- package/dist/primitives/vendor/radix/react-context-menu/context-menu.js +279 -0
- package/dist/primitives/vendor/radix/react-context-menu/context-menu.js.map +1 -0
- package/dist/primitives/vendor/radix/react-context-menu/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-dialog/dialog.d.ts +97 -0
- package/dist/primitives/vendor/radix/react-dialog/dialog.js +262 -0
- package/dist/primitives/vendor/radix/react-dialog/dialog.js.map +1 -0
- package/dist/primitives/vendor/radix/react-dialog/index.d.ts +4 -0
- package/dist/primitives/vendor/radix/react-direction/direction.d.ts +10 -0
- package/dist/primitives/vendor/radix/react-direction/direction.js +13 -0
- package/dist/primitives/vendor/radix/react-direction/direction.js.map +1 -0
- package/dist/primitives/vendor/radix/react-direction/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.d.ts +61 -0
- package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.js +336 -0
- package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.js.map +1 -0
- package/dist/primitives/vendor/radix/react-dismissable-layer/index.d.ts +4 -0
- package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.d.ts +95 -0
- package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.js +257 -0
- package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/primitives/vendor/radix/react-dropdown-menu/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.d.ts +11 -0
- package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.js +49 -0
- package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.js.map +1 -0
- package/dist/primitives/vendor/radix/react-focus-guards/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.d.ts +31 -0
- package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.js +221 -0
- package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.js.map +1 -0
- package/dist/primitives/vendor/radix/react-focus-scope/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-id/id.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-id/id.js +17 -0
- package/dist/primitives/vendor/radix/react-id/id.js.map +1 -0
- package/dist/primitives/vendor/radix/react-id/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-label/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-label/label.d.ts +9 -0
- package/dist/primitives/vendor/radix/react-label/label.js +21 -0
- package/dist/primitives/vendor/radix/react-label/label.js.map +1 -0
- package/dist/primitives/vendor/radix/react-menu/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-menu/menu.d.ts +173 -0
- package/dist/primitives/vendor/radix/react-menu/menu.js +806 -0
- package/dist/primitives/vendor/radix/react-menu/menu.js.map +1 -0
- package/dist/primitives/vendor/radix/react-menubar/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-menubar/menubar.d.ts +106 -0
- package/dist/primitives/vendor/radix/react-menubar/menubar.js +377 -0
- package/dist/primitives/vendor/radix/react-menubar/menubar.js.map +1 -0
- package/dist/primitives/vendor/radix/react-navigation-menu/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.d.ts +124 -0
- package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.js +743 -0
- package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.js.map +1 -0
- package/dist/primitives/vendor/radix/react-popover/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-popover/popover.d.ts +83 -0
- package/dist/primitives/vendor/radix/react-popover/popover.js +236 -0
- package/dist/primitives/vendor/radix/react-popover/popover.js.map +1 -0
- package/dist/primitives/vendor/radix/react-popper/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-popper/popper.d.ts +44 -0
- package/dist/primitives/vendor/radix/react-popper/popper.js +276 -0
- package/dist/primitives/vendor/radix/react-popper/popper.js.map +1 -0
- package/dist/primitives/vendor/radix/react-portal/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-portal/portal.d.ts +13 -0
- package/dist/primitives/vendor/radix/react-portal/portal.js +21 -0
- package/dist/primitives/vendor/radix/react-portal/portal.js.map +1 -0
- package/dist/primitives/vendor/radix/react-presence/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-presence/presence.d.ts +11 -0
- package/dist/primitives/vendor/radix/react-presence/presence.js +152 -0
- package/dist/primitives/vendor/radix/react-presence/presence.js.map +1 -0
- package/dist/primitives/vendor/radix/react-presence/use-state-machine.d.ts +10 -0
- package/dist/primitives/vendor/radix/react-presence/use-state-machine.js +12 -0
- package/dist/primitives/vendor/radix/react-presence/use-state-machine.js.map +1 -0
- package/dist/primitives/vendor/radix/react-primitive/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-primitive/primitive.d.ts +56 -0
- package/dist/primitives/vendor/radix/react-primitive/primitive.js +84 -0
- package/dist/primitives/vendor/radix/react-primitive/primitive.js.map +1 -0
- package/dist/primitives/vendor/radix/react-progress/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-progress/progress.d.ts +17 -0
- package/dist/primitives/vendor/radix/react-progress/progress.js +79 -0
- package/dist/primitives/vendor/radix/react-progress/progress.js.map +1 -0
- package/dist/primitives/vendor/radix/react-radio-group/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-radio-group/radio-group.d.ts +55 -0
- package/dist/primitives/vendor/radix/react-radio-group/radio-group.js +173 -0
- package/dist/primitives/vendor/radix/react-radio-group/radio-group.js.map +1 -0
- package/dist/primitives/vendor/radix/react-radio-group/radio.d.ts +62 -0
- package/dist/primitives/vendor/radix/react-radio-group/radio.js +150 -0
- package/dist/primitives/vendor/radix/react-radio-group/radio.js.map +1 -0
- package/dist/primitives/vendor/radix/react-roving-focus/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.d.ts +47 -0
- package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.js +218 -0
- package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.js.map +1 -0
- package/dist/primitives/vendor/radix/react-scroll-area/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.d.ts +121 -0
- package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.js +713 -0
- package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.js.map +1 -0
- package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.d.ts +10 -0
- package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.js +12 -0
- package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.js.map +1 -0
- package/dist/primitives/vendor/radix/react-select/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-select/select.d.ts +163 -0
- package/dist/primitives/vendor/radix/react-select/select.js +1040 -0
- package/dist/primitives/vendor/radix/react-select/select.js.map +1 -0
- package/dist/primitives/vendor/radix/react-separator/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-separator/separator.d.ts +20 -0
- package/dist/primitives/vendor/radix/react-separator/separator.js +29 -0
- package/dist/primitives/vendor/radix/react-separator/separator.js.map +1 -0
- package/dist/primitives/vendor/radix/react-slot/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-slot/slot.d.ts +29 -0
- package/dist/primitives/vendor/radix/react-slot/slot.js +107 -0
- package/dist/primitives/vendor/radix/react-slot/slot.js.map +1 -0
- package/dist/primitives/vendor/radix/react-switch/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-switch/switch.d.ts +41 -0
- package/dist/primitives/vendor/radix/react-switch/switch.js +185 -0
- package/dist/primitives/vendor/radix/react-switch/switch.js.map +1 -0
- package/dist/primitives/vendor/radix/react-tabs/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-tabs/tabs.d.ts +54 -0
- package/dist/primitives/vendor/radix/react-tabs/tabs.js +145 -0
- package/dist/primitives/vendor/radix/react-tabs/tabs.js.map +1 -0
- package/dist/primitives/vendor/radix/react-toast/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-toast/toast.d.ts +125 -0
- package/dist/primitives/vendor/radix/react-toast/toast.js +557 -0
- package/dist/primitives/vendor/radix/react-toast/toast.js.map +1 -0
- package/dist/primitives/vendor/radix/react-tooltip/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-tooltip/tooltip.d.ts +99 -0
- package/dist/primitives/vendor/radix/react-tooltip/tooltip.js +503 -0
- package/dist/primitives/vendor/radix/react-tooltip/tooltip.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-callback-ref/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.d.ts +6 -0
- package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.js +18 -0
- package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-controllable-state/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state-reducer.d.ts +28 -0
- package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.d.ts +11 -0
- package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.js +59 -0
- package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-effect-event/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-effect-event/use-effect-event.d.ts +7 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.js +18 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.d.ts +6 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.js +19 -0
- package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-layout-effect/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.d.ts +10 -0
- package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.js +15 -0
- package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-previous/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-previous/use-previous.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-use-previous/use-previous.js +20 -0
- package/dist/primitives/vendor/radix/react-use-previous/use-previous.js.map +1 -0
- package/dist/primitives/vendor/radix/react-use-size/index.d.ts +1 -0
- package/dist/primitives/vendor/radix/react-use-size/use-size.d.ts +5 -0
- package/dist/primitives/vendor/radix/react-use-size/use-size.js +42 -0
- package/dist/primitives/vendor/radix/react-use-size/use-size.js.map +1 -0
- package/dist/primitives/vendor/radix/react-visually-hidden/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.d.ts +21 -0
- package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.js +32 -0
- package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.js.map +1 -0
- package/dist/primitives/vendor/radix/rect/index.d.ts +2 -0
- package/dist/primitives/vendor/radix/rect/observe-element-rect.d.ts +16 -0
- package/dist/styles.css +1 -1
- package/dist/theme.css +36 -17
- package/dist/tokens.d.ts +78 -36
- package/dist/tokens.js +63 -32
- package/dist/tokens.js.map +1 -1
- package/package.json +25 -13
- package/vendor-manifest.json +1101 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContextScope } from "../react-context/create-context.js";
|
|
3
|
+
import { useComposedRefs } from "../react-compose-refs/compose-refs.js";
|
|
4
|
+
import { composeEventHandlers } from "../primitive/primitive.js";
|
|
5
|
+
import { useControllableState } from "../react-use-controllable-state/use-controllable-state.js";
|
|
6
|
+
import { Primitive } from "../react-primitive/primitive.js";
|
|
7
|
+
import { Presence } from "../react-presence/presence.js";
|
|
8
|
+
import { useSize } from "../react-use-size/use-size.js";
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
//#region src/primitives/vendor/radix/react-checkbox/checkbox.tsx
|
|
12
|
+
var CHECKBOX_NAME = "Checkbox";
|
|
13
|
+
var [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);
|
|
14
|
+
var [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
|
|
15
|
+
function CheckboxProvider(props) {
|
|
16
|
+
const { __scopeCheckbox, checked: checkedProp, children, defaultChecked, disabled, form, name, onCheckedChange, required, value = "on", internal_do_not_use_render } = props;
|
|
17
|
+
const [checked, setChecked] = useControllableState({
|
|
18
|
+
prop: checkedProp,
|
|
19
|
+
defaultProp: defaultChecked ?? false,
|
|
20
|
+
onChange: onCheckedChange,
|
|
21
|
+
caller: CHECKBOX_NAME
|
|
22
|
+
});
|
|
23
|
+
const [control, setControl] = React.useState(null);
|
|
24
|
+
const [bubbleInput, setBubbleInput] = React.useState(null);
|
|
25
|
+
const hasConsumerStoppedPropagationRef = React.useRef(false);
|
|
26
|
+
const [userInteractionCount, onUserInteraction] = React.useReducer((count) => count + 1, 0);
|
|
27
|
+
const isFormControl = control ? !!form || !!control.closest("form") : true;
|
|
28
|
+
const context = {
|
|
29
|
+
checked,
|
|
30
|
+
disabled,
|
|
31
|
+
setChecked,
|
|
32
|
+
control,
|
|
33
|
+
setControl,
|
|
34
|
+
name,
|
|
35
|
+
form,
|
|
36
|
+
value,
|
|
37
|
+
hasConsumerStoppedPropagationRef,
|
|
38
|
+
userInteractionCount,
|
|
39
|
+
onUserInteraction,
|
|
40
|
+
required,
|
|
41
|
+
defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,
|
|
42
|
+
isFormControl,
|
|
43
|
+
bubbleInput,
|
|
44
|
+
setBubbleInput
|
|
45
|
+
};
|
|
46
|
+
return /* @__PURE__ */ jsx(CheckboxProviderImpl, {
|
|
47
|
+
scope: __scopeCheckbox,
|
|
48
|
+
...context,
|
|
49
|
+
children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
var TRIGGER_NAME = "CheckboxTrigger";
|
|
53
|
+
var CheckboxTrigger = /* @__PURE__ */ React.forwardRef(function CheckboxTrigger({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) {
|
|
54
|
+
const { control, value, disabled, checked, required, setControl, setChecked, hasConsumerStoppedPropagationRef, onUserInteraction, isFormControl, bubbleInput } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);
|
|
55
|
+
const composedRefs = useComposedRefs(forwardedRef, setControl);
|
|
56
|
+
const initialCheckedStateRef = React.useRef(checked);
|
|
57
|
+
React.useEffect(() => {
|
|
58
|
+
const form = control?.form;
|
|
59
|
+
if (form) {
|
|
60
|
+
const reset = () => setChecked(initialCheckedStateRef.current);
|
|
61
|
+
form.addEventListener("reset", reset);
|
|
62
|
+
return () => form.removeEventListener("reset", reset);
|
|
63
|
+
}
|
|
64
|
+
}, [control, setChecked]);
|
|
65
|
+
return /* @__PURE__ */ jsx(Primitive.button, {
|
|
66
|
+
type: "button",
|
|
67
|
+
role: "checkbox",
|
|
68
|
+
"aria-checked": isIndeterminate(checked) ? "mixed" : checked,
|
|
69
|
+
"aria-required": required,
|
|
70
|
+
"data-state": getState(checked),
|
|
71
|
+
"data-disabled": disabled ? "" : void 0,
|
|
72
|
+
disabled,
|
|
73
|
+
value,
|
|
74
|
+
...checkboxProps,
|
|
75
|
+
ref: composedRefs,
|
|
76
|
+
onKeyDown: composeEventHandlers(onKeyDown, (event) => {
|
|
77
|
+
if (event.key === "Enter") event.preventDefault();
|
|
78
|
+
}),
|
|
79
|
+
onClick: composeEventHandlers(onClick, (event) => {
|
|
80
|
+
onUserInteraction();
|
|
81
|
+
setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);
|
|
82
|
+
if (bubbleInput && isFormControl) {
|
|
83
|
+
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
|
|
84
|
+
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
var Checkbox = /* @__PURE__ */ React.forwardRef(function Checkbox(props, forwardedRef) {
|
|
90
|
+
const { __scopeCheckbox, name, checked, defaultChecked, required, disabled, value, onCheckedChange, form, ...checkboxProps } = props;
|
|
91
|
+
return /* @__PURE__ */ jsx(CheckboxProvider, {
|
|
92
|
+
__scopeCheckbox,
|
|
93
|
+
checked,
|
|
94
|
+
defaultChecked,
|
|
95
|
+
disabled,
|
|
96
|
+
required,
|
|
97
|
+
onCheckedChange,
|
|
98
|
+
name,
|
|
99
|
+
form,
|
|
100
|
+
value,
|
|
101
|
+
internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CheckboxTrigger, {
|
|
102
|
+
...checkboxProps,
|
|
103
|
+
ref: forwardedRef,
|
|
104
|
+
__scopeCheckbox
|
|
105
|
+
}), isFormControl && /* @__PURE__ */ jsx(CheckboxBubbleInput, { __scopeCheckbox })] })
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
var INDICATOR_NAME = "CheckboxIndicator";
|
|
109
|
+
var CheckboxIndicator = /* @__PURE__ */ React.forwardRef(function CheckboxIndicator(props, forwardedRef) {
|
|
110
|
+
const { __scopeCheckbox, forceMount, ...indicatorProps } = props;
|
|
111
|
+
const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);
|
|
112
|
+
return /* @__PURE__ */ jsx(Presence, {
|
|
113
|
+
present: forceMount || isIndeterminate(context.checked) || context.checked === true,
|
|
114
|
+
children: /* @__PURE__ */ jsx(Primitive.span, {
|
|
115
|
+
"data-state": getState(context.checked),
|
|
116
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
117
|
+
...indicatorProps,
|
|
118
|
+
ref: forwardedRef,
|
|
119
|
+
style: {
|
|
120
|
+
pointerEvents: "none",
|
|
121
|
+
...props.style
|
|
122
|
+
}
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
var BUBBLE_INPUT_NAME = "CheckboxBubbleInput";
|
|
127
|
+
var CheckboxBubbleInput = /* @__PURE__ */ React.forwardRef(function CheckboxBubbleInput({ __scopeCheckbox, onClick, ...props }, forwardedRef) {
|
|
128
|
+
const { control, hasConsumerStoppedPropagationRef, userInteractionCount, checked, defaultChecked, required, disabled, name, value, form, bubbleInput, setBubbleInput } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);
|
|
129
|
+
const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);
|
|
130
|
+
const controlSize = useSize(control);
|
|
131
|
+
const shouldStopClickPropagationRef = React.useRef(false);
|
|
132
|
+
const prevCheckedRef = React.useRef(checked);
|
|
133
|
+
const prevUserInteractionCountRef = React.useRef(userInteractionCount);
|
|
134
|
+
React.useEffect(() => {
|
|
135
|
+
const input = bubbleInput;
|
|
136
|
+
if (!input) return;
|
|
137
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
138
|
+
const setChecked = Object.getOwnPropertyDescriptor(inputProto, "checked").set;
|
|
139
|
+
const isUserInteraction = userInteractionCount !== prevUserInteractionCountRef.current;
|
|
140
|
+
prevUserInteractionCountRef.current = userInteractionCount;
|
|
141
|
+
const checkedChanged = prevCheckedRef.current !== checked;
|
|
142
|
+
prevCheckedRef.current = checked;
|
|
143
|
+
const bubbles = !(isUserInteraction && hasConsumerStoppedPropagationRef.current);
|
|
144
|
+
if (checkedChanged && setChecked) {
|
|
145
|
+
shouldStopClickPropagationRef.current = !isUserInteraction;
|
|
146
|
+
const event = new Event("click", { bubbles });
|
|
147
|
+
input.indeterminate = isIndeterminate(checked);
|
|
148
|
+
setChecked.call(input, isIndeterminate(checked) ? false : checked);
|
|
149
|
+
input.dispatchEvent(event);
|
|
150
|
+
shouldStopClickPropagationRef.current = false;
|
|
151
|
+
}
|
|
152
|
+
}, [
|
|
153
|
+
bubbleInput,
|
|
154
|
+
checked,
|
|
155
|
+
hasConsumerStoppedPropagationRef,
|
|
156
|
+
userInteractionCount
|
|
157
|
+
]);
|
|
158
|
+
const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);
|
|
159
|
+
return /* @__PURE__ */ jsx(Primitive.input, {
|
|
160
|
+
type: "checkbox",
|
|
161
|
+
"aria-hidden": true,
|
|
162
|
+
defaultChecked: defaultChecked ?? defaultCheckedRef.current,
|
|
163
|
+
required,
|
|
164
|
+
disabled,
|
|
165
|
+
name,
|
|
166
|
+
value,
|
|
167
|
+
form,
|
|
168
|
+
...props,
|
|
169
|
+
tabIndex: -1,
|
|
170
|
+
ref: composedRefs,
|
|
171
|
+
onClick: composeEventHandlers(onClick, (event) => {
|
|
172
|
+
if (shouldStopClickPropagationRef.current) event.stopPropagation();
|
|
173
|
+
}),
|
|
174
|
+
style: {
|
|
175
|
+
...props.style,
|
|
176
|
+
...controlSize,
|
|
177
|
+
position: "absolute",
|
|
178
|
+
pointerEvents: "none",
|
|
179
|
+
opacity: 0,
|
|
180
|
+
margin: 0,
|
|
181
|
+
transform: "translateX(-100%)"
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
function isFunction(value) {
|
|
186
|
+
return typeof value === "function";
|
|
187
|
+
}
|
|
188
|
+
function isIndeterminate(checked) {
|
|
189
|
+
return checked === "indeterminate";
|
|
190
|
+
}
|
|
191
|
+
function getState(checked) {
|
|
192
|
+
return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
193
|
+
}
|
|
194
|
+
//#endregion
|
|
195
|
+
export { CheckboxBubbleInput as BubbleInput, CheckboxBubbleInput, Checkbox, Checkbox as Root, CheckboxIndicator, CheckboxIndicator as Indicator, CheckboxProvider, CheckboxProvider as Provider, CheckboxTrigger, CheckboxTrigger as Trigger };
|
|
196
|
+
|
|
197
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","names":["_Fragment"],"sources":["../../../../../src/primitives/vendor/radix/react-checkbox/checkbox.tsx"],"sourcesContent":["// Vendored from Radix Primitives (c) 2022 WorkOS, MIT. See vendor/LICENSE.radix.\n// Local modification: package imports resolve to the pinned local source.\nimport * as React from 'react';\nimport { useComposedRefs } from '../react-compose-refs';\nimport { createContextScope } from '../react-context';\nimport { composeEventHandlers } from '../primitive';\nimport { useControllableState } from '../react-use-controllable-state';\nimport { useSize } from '../react-use-size';\nimport { Presence } from '../react-presence';\nimport { Primitive } from '../react-primitive';\n\nimport type { Scope } from '../react-context';\n\nconst CHECKBOX_NAME = 'Checkbox';\n\ntype ScopedProps<P> = P & { __scopeCheckbox?: Scope };\nconst [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\n\ntype CheckedState = boolean | 'indeterminate';\n\ntype CheckboxContextValue<State extends CheckedState | boolean = CheckedState> = {\n checked: State | boolean;\n setChecked: React.Dispatch<React.SetStateAction<State | boolean>>;\n disabled: boolean | undefined;\n control: HTMLButtonElement | null;\n setControl: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;\n name: string | undefined;\n form: string | undefined;\n value: string | number | readonly string[];\n hasConsumerStoppedPropagationRef: React.RefObject<boolean>;\n userInteractionCount: number;\n onUserInteraction: () => void;\n required: boolean | undefined;\n defaultChecked: boolean | undefined;\n isFormControl: boolean;\n bubbleInput: HTMLInputElement | null;\n setBubbleInput: React.Dispatch<React.SetStateAction<HTMLInputElement | null>>;\n};\n\nconst [CheckboxProviderImpl, useCheckboxContext] =\n createCheckboxContext<CheckboxContextValue>(CHECKBOX_NAME);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CheckboxProviderProps<State extends CheckedState = CheckedState> {\n checked?: State | boolean;\n defaultChecked?: State | boolean;\n required?: boolean;\n onCheckedChange?(checked: State | boolean): void;\n name?: string;\n form?: string;\n disabled?: boolean;\n value?: string | number | readonly string[];\n children?: React.ReactNode;\n}\n\nfunction CheckboxProvider<State extends CheckedState = CheckedState>(\n props: ScopedProps<CheckboxProviderProps<State>>,\n) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = 'on',\n // @ts-expect-error\n internal_do_not_use_render,\n } = props;\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME,\n });\n const [control, setControl] = React.useState<HTMLButtonElement | null>(null);\n const [bubbleInput, setBubbleInput] = React.useState<HTMLInputElement | null>(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n\n // Incremented on every user interaction with the trigger. The bubble input\n // compares this against the value it last handled to tell whether a `checked`\n // change was driven by the user (vs. a controlled/programmatic update). Using\n // a counter guarantees the marker is updated in the same commit as the\n // resulting render, so it can never go stale and leak into a later\n // programmatic update.\n const [userInteractionCount, onUserInteraction] = React.useReducer(\n (count: number): number => count + 1,\n 0,\n );\n const isFormControl = control\n ? !!form || !!control.closest('form')\n : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n\n const context: CheckboxContextValue<State> = {\n checked: checked,\n disabled: disabled,\n setChecked: setChecked,\n control: control,\n setControl: setControl,\n name: name,\n form: form,\n value: value,\n hasConsumerStoppedPropagationRef: hasConsumerStoppedPropagationRef,\n userInteractionCount: userInteractionCount,\n onUserInteraction: onUserInteraction,\n required: required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl: isFormControl,\n bubbleInput,\n setBubbleInput,\n };\n\n return (\n <CheckboxProviderImpl\n scope={__scopeCheckbox}\n {...(context as unknown as CheckboxContextValue<CheckedState>)}\n >\n {isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children}\n </CheckboxProviderImpl>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CheckboxTrigger';\n\ninterface CheckboxTriggerProps extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.button>,\n keyof CheckboxProviderProps\n> {\n children?: React.ReactNode;\n}\n\nconst CheckboxTrigger = /* @__PURE__ */ React.forwardRef<HTMLButtonElement, CheckboxTriggerProps>(\n function CheckboxTrigger(\n { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }: ScopedProps<CheckboxTriggerProps>,\n forwardedRef,\n ) {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n onUserInteraction,\n isFormControl,\n bubbleInput,\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener('reset', reset);\n return () => form.removeEventListener('reset', reset);\n }\n }, [control, setChecked]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked) ? 'mixed' : checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...checkboxProps}\n ref={composedRefs}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, (event) => {\n onUserInteraction();\n setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked));\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if checkbox has a bubble input and is a form control, stop\n // propagation from the button so that we only propagate one click\n // event (from the input). We propagate changes from an input so\n // that native form validation works and form events reflect\n // checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/\n\ntype CheckboxElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CheckboxProps extends Omit<PrimitiveButtonProps, 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n required?: boolean;\n onCheckedChange?(checked: CheckedState): void;\n}\n\nconst Checkbox = /* @__PURE__ */ React.forwardRef<CheckboxElement, CheckboxProps>(\n // blank line to reduce diff noise\n function Checkbox(props: ScopedProps<CheckboxProps>, forwardedRef) {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n\n return (\n <CheckboxProvider\n __scopeCheckbox={__scopeCheckbox}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n required={required}\n onCheckedChange={onCheckedChange}\n name={name}\n form={form}\n value={value}\n // @ts-expect-error\n internal_do_not_use_render={({ isFormControl }: CheckboxContextValue) => (\n <>\n <CheckboxTrigger\n {...checkboxProps}\n ref={forwardedRef}\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n {isFormControl && (\n <CheckboxBubbleInput\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n )}\n </>\n )}\n />\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxIndicator';\n\ntype CheckboxIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface CheckboxIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CheckboxIndicator = /* @__PURE__ */ React.forwardRef<\n CheckboxIndicatorElement,\n CheckboxIndicatorProps\n>(\n // blank line to reduce diff noise\n function CheckboxIndicator(props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return (\n <Presence\n present={forceMount || isIndeterminate(context.checked) || context.checked === true}\n >\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'none', ...props.style }}\n />\n </Presence>\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'CheckboxBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface CheckboxBubbleInputProps extends Omit<InputProps, 'checked'> {}\n\nconst CheckboxBubbleInput = /* @__PURE__ */ React.forwardRef<\n HTMLInputElement,\n CheckboxBubbleInputProps\n>(\n // blank line to reduce diff noise\n function CheckboxBubbleInput(\n { __scopeCheckbox, onClick, ...props }: ScopedProps<CheckboxBubbleInputProps>,\n forwardedRef,\n ) {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n userInteractionCount,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput,\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const controlSize = useSize(control);\n // When the checked change is not driven by a user interaction (e.g. a\n // controlled `checked` update), the `click` event we dispatch to notify\n // forms must not reach ancestor `onClick` handlers. We can't simply make it\n // non-bubbling because React derives the checkbox's `change` event from a\n // bubbling `click`. Instead we stop propagation of the synthetic click,\n // which still lets the `change` event reach the form.\n const shouldStopClickPropagationRef = React.useRef(false);\n // The `checked` value we last synced to the input, and the interaction\n // counter we last accounted for. Comparing against these lets us detect a\n // genuine `checked` change and whether it followed a user interaction, even\n // on renders caused by clicks that don't change `checked` (e.g. a\n // controlled value that ignores the change).\n const prevCheckedRef = React.useRef(checked);\n const prevUserInteractionCountRef = React.useRef(userInteractionCount);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked',\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n\n const isUserInteraction = userInteractionCount !== prevUserInteractionCountRef.current;\n prevUserInteractionCountRef.current = userInteractionCount;\n const checkedChanged = prevCheckedRef.current !== checked;\n prevCheckedRef.current = checked;\n\n const bubbles = !(isUserInteraction && hasConsumerStoppedPropagationRef.current);\n if (checkedChanged && setChecked) {\n shouldStopClickPropagationRef.current = !isUserInteraction;\n const event = new Event('click', { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n shouldStopClickPropagationRef.current = false;\n }\n }, [bubbleInput, checked, hasConsumerStoppedPropagationRef, userInteractionCount]);\n\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return (\n <Primitive.input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={defaultChecked ?? defaultCheckedRef.current}\n required={required}\n disabled={disabled}\n name={name}\n value={value}\n form={form}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n onClick={composeEventHandlers(onClick, (event) => {\n // Prevent the synthetic click dispatched on controlled/programmatic\n // updates from triggering ancestor `onClick` handlers, while still\n // allowing the resulting `change` event to reach the form.\n if (shouldStopClickPropagationRef.current) {\n event.stopPropagation();\n }\n })}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: 'translateX(-100%)',\n }}\n />\n );\n },\n);\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createCheckboxScope,\n //\n Checkbox,\n CheckboxProvider,\n CheckboxTrigger,\n CheckboxIndicator,\n CheckboxBubbleInput,\n //\n Checkbox as Root,\n CheckboxProvider as Provider,\n CheckboxTrigger as Trigger,\n CheckboxIndicator as Indicator,\n CheckboxBubbleInput as BubbleInput,\n};\nexport type {\n CheckboxProps,\n CheckboxProviderProps,\n CheckboxTriggerProps,\n CheckboxIndicatorProps,\n CheckboxBubbleInputProps,\n CheckedState,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { createCheckboxScope, Checkbox, CheckboxProvider as unstable_CheckboxProvider, CheckboxTrigger as unstable_CheckboxTrigger, CheckboxIndicator, CheckboxBubbleInput as unstable_CheckboxBubbleInput, Root, Provider as unstable_Provider, Trigger as unstable_Trigger, Indicator, BubbleInput as unstable_BubbleInput, } from './checkbox';
|
|
2
|
+
export type { CheckboxProps, CheckboxProviderProps as unstable_CheckboxProviderProps, CheckboxTriggerProps as unstable_CheckboxTriggerProps, CheckboxIndicatorProps, CheckboxBubbleInputProps as unstable_CheckboxBubbleInputProps, CheckedState, } from './checkbox';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Primitive } from '../react-primitive';
|
|
3
|
+
declare const createCollapsibleScope: import("../react-context").CreateScope;
|
|
4
|
+
type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
5
|
+
interface CollapsibleProps extends PrimitiveDivProps {
|
|
6
|
+
defaultOpen?: boolean;
|
|
7
|
+
open?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
onOpenChange?(open: boolean): void;
|
|
10
|
+
}
|
|
11
|
+
declare const Collapsible: React.ForwardRefExoticComponent<CollapsibleProps & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
type PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
13
|
+
interface CollapsibleTriggerProps extends PrimitiveButtonProps {
|
|
14
|
+
}
|
|
15
|
+
declare const CollapsibleTrigger: React.ForwardRefExoticComponent<CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
16
|
+
interface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {
|
|
17
|
+
/**
|
|
18
|
+
* Used to force mounting when more control is needed. Useful when
|
|
19
|
+
* controlling animation with React animation libraries.
|
|
20
|
+
*/
|
|
21
|
+
forceMount?: true;
|
|
22
|
+
}
|
|
23
|
+
declare const CollapsibleContent: React.ForwardRefExoticComponent<CollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
interface CollapsibleContentImplProps extends PrimitiveDivProps {
|
|
25
|
+
present: boolean;
|
|
26
|
+
}
|
|
27
|
+
declare const Root: React.ForwardRefExoticComponent<CollapsibleProps & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
declare const Trigger: React.ForwardRefExoticComponent<CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
29
|
+
declare const Content: React.ForwardRefExoticComponent<CollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
30
|
+
export { createCollapsibleScope, Collapsible, CollapsibleTrigger, CollapsibleContent, Root, Trigger, Content, };
|
|
31
|
+
export type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContextScope } from "../react-context/create-context.js";
|
|
3
|
+
import { useComposedRefs } from "../react-compose-refs/compose-refs.js";
|
|
4
|
+
import { composeEventHandlers } from "../primitive/primitive.js";
|
|
5
|
+
import { useLayoutEffect } from "../react-use-layout-effect/use-layout-effect.js";
|
|
6
|
+
import { useControllableState } from "../react-use-controllable-state/use-controllable-state.js";
|
|
7
|
+
import { Primitive } from "../react-primitive/primitive.js";
|
|
8
|
+
import { Presence } from "../react-presence/presence.js";
|
|
9
|
+
import { useId } from "../react-id/id.js";
|
|
10
|
+
import * as React from "react";
|
|
11
|
+
import { jsx } from "react/jsx-runtime";
|
|
12
|
+
//#region src/primitives/vendor/radix/react-collapsible/collapsible.tsx
|
|
13
|
+
var COLLAPSIBLE_NAME = "Collapsible";
|
|
14
|
+
var [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);
|
|
15
|
+
var [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);
|
|
16
|
+
var Collapsible = /* @__PURE__ */ React.forwardRef(function Collapsible(props, forwardedRef) {
|
|
17
|
+
const { __scopeCollapsible, open: openProp, defaultOpen, disabled, onOpenChange, ...collapsibleProps } = props;
|
|
18
|
+
const [open, setOpen] = useControllableState({
|
|
19
|
+
prop: openProp,
|
|
20
|
+
defaultProp: defaultOpen ?? false,
|
|
21
|
+
onChange: onOpenChange,
|
|
22
|
+
caller: COLLAPSIBLE_NAME
|
|
23
|
+
});
|
|
24
|
+
return /* @__PURE__ */ jsx(CollapsibleProvider, {
|
|
25
|
+
scope: __scopeCollapsible,
|
|
26
|
+
disabled,
|
|
27
|
+
contentId: useId(),
|
|
28
|
+
open,
|
|
29
|
+
onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
|
|
30
|
+
children: /* @__PURE__ */ jsx(Primitive.div, {
|
|
31
|
+
"data-state": getState(open),
|
|
32
|
+
"data-disabled": disabled ? "" : void 0,
|
|
33
|
+
...collapsibleProps,
|
|
34
|
+
ref: forwardedRef
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
var TRIGGER_NAME = "CollapsibleTrigger";
|
|
39
|
+
var CollapsibleTrigger = /* @__PURE__ */ React.forwardRef(function CollapsibleTrigger(props, forwardedRef) {
|
|
40
|
+
const { __scopeCollapsible, ...triggerProps } = props;
|
|
41
|
+
const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);
|
|
42
|
+
return /* @__PURE__ */ jsx(Primitive.button, {
|
|
43
|
+
type: "button",
|
|
44
|
+
"aria-controls": context.open ? context.contentId : void 0,
|
|
45
|
+
"aria-expanded": context.open || false,
|
|
46
|
+
"data-state": getState(context.open),
|
|
47
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
48
|
+
disabled: context.disabled,
|
|
49
|
+
...triggerProps,
|
|
50
|
+
ref: forwardedRef,
|
|
51
|
+
onClick: composeEventHandlers(props.onClick, context.onOpenToggle)
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
var CONTENT_NAME = "CollapsibleContent";
|
|
55
|
+
var CollapsibleContent = /* @__PURE__ */ React.forwardRef(function CollapsibleContent(props, forwardedRef) {
|
|
56
|
+
const { forceMount, ...contentProps } = props;
|
|
57
|
+
const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);
|
|
58
|
+
return /* @__PURE__ */ jsx(Presence, {
|
|
59
|
+
present: forceMount || context.open,
|
|
60
|
+
children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, {
|
|
61
|
+
...contentProps,
|
|
62
|
+
ref: forwardedRef,
|
|
63
|
+
present
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
var CollapsibleContentImpl = /* @__PURE__ */ React.forwardRef(function CollapsibleContentImpl(props, forwardedRef) {
|
|
68
|
+
const { __scopeCollapsible, present, children, ...contentProps } = props;
|
|
69
|
+
const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);
|
|
70
|
+
const [isPresent, setIsPresent] = React.useState(present);
|
|
71
|
+
const ref = React.useRef(null);
|
|
72
|
+
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
73
|
+
const heightRef = React.useRef(0);
|
|
74
|
+
const height = heightRef.current;
|
|
75
|
+
const widthRef = React.useRef(0);
|
|
76
|
+
const width = widthRef.current;
|
|
77
|
+
const isOpen = context.open || isPresent;
|
|
78
|
+
const isMountAnimationPreventedRef = React.useRef(isOpen);
|
|
79
|
+
const originalStylesRef = React.useRef(void 0);
|
|
80
|
+
React.useEffect(() => {
|
|
81
|
+
const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
|
|
82
|
+
return () => cancelAnimationFrame(rAF);
|
|
83
|
+
}, []);
|
|
84
|
+
useLayoutEffect(() => {
|
|
85
|
+
const node = ref.current;
|
|
86
|
+
if (node) {
|
|
87
|
+
originalStylesRef.current = originalStylesRef.current || {
|
|
88
|
+
transitionDuration: node.style.transitionDuration,
|
|
89
|
+
animationName: node.style.animationName
|
|
90
|
+
};
|
|
91
|
+
node.style.transitionDuration = "0s";
|
|
92
|
+
node.style.animationName = "none";
|
|
93
|
+
const rect = node.getBoundingClientRect();
|
|
94
|
+
heightRef.current = rect.height;
|
|
95
|
+
widthRef.current = rect.width;
|
|
96
|
+
if (!isMountAnimationPreventedRef.current) {
|
|
97
|
+
node.style.transitionDuration = originalStylesRef.current.transitionDuration;
|
|
98
|
+
node.style.animationName = originalStylesRef.current.animationName;
|
|
99
|
+
}
|
|
100
|
+
setIsPresent(present);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* depends on `context.open` because it will change to `false`
|
|
104
|
+
* when a close is triggered but `present` will be `false` on
|
|
105
|
+
* animation end (so when close finishes). This allows us to
|
|
106
|
+
* retrieve the dimensions *before* closing.
|
|
107
|
+
*/
|
|
108
|
+
}, [context.open, present]);
|
|
109
|
+
return /* @__PURE__ */ jsx(Primitive.div, {
|
|
110
|
+
"data-state": getState(context.open),
|
|
111
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
112
|
+
id: context.contentId,
|
|
113
|
+
hidden: !isOpen,
|
|
114
|
+
...contentProps,
|
|
115
|
+
ref: composedRefs,
|
|
116
|
+
style: {
|
|
117
|
+
[`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,
|
|
118
|
+
[`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,
|
|
119
|
+
...props.style
|
|
120
|
+
},
|
|
121
|
+
children: isOpen && children
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
function getState(open) {
|
|
125
|
+
return open ? "open" : "closed";
|
|
126
|
+
}
|
|
127
|
+
var Root = Collapsible;
|
|
128
|
+
var Trigger = CollapsibleTrigger;
|
|
129
|
+
var Content = CollapsibleContent;
|
|
130
|
+
//#endregion
|
|
131
|
+
export { Collapsible, CollapsibleContent, CollapsibleTrigger, Content, Root, Trigger, createCollapsibleScope };
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=collapsible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapsible.js","names":[],"sources":["../../../../../src/primitives/vendor/radix/react-collapsible/collapsible.tsx"],"sourcesContent":["// Vendored from Radix Primitives (c) 2022 WorkOS, MIT. See vendor/LICENSE.radix.\n// Local modification: package imports resolve to the pinned local source.\nimport * as React from 'react';\nimport { composeEventHandlers } from '../primitive';\nimport { createContextScope } from '../react-context';\nimport { useControllableState } from '../react-use-controllable-state';\nimport { useLayoutEffect } from '../react-use-layout-effect';\nimport { useComposedRefs } from '../react-compose-refs';\nimport { Primitive } from '../react-primitive';\nimport { Presence } from '../react-presence';\nimport { useId } from '../react-id';\n\nimport type { Scope } from '../react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps<P> = P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext<CollapsibleContextValue>(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = /* @__PURE__ */ React.forwardRef<CollapsibleElement, CollapsibleProps>(\n function Collapsible(props: ScopedProps<CollapsibleProps>, forwardedRef) {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME,\n });\n\n return (\n <CollapsibleProvider\n scope={__scopeCollapsible}\n disabled={disabled}\n contentId={useId()}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n <Primitive.div\n data-state={getState(open)}\n data-disabled={disabled ? '' : undefined}\n {...collapsibleProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = /* @__PURE__ */ React.forwardRef<\n CollapsibleTriggerElement,\n CollapsibleTriggerProps\n>(\n // blank line to reduce diff noise\n function CollapsibleTrigger(props: ScopedProps<CollapsibleTriggerProps>, forwardedRef) {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={context.open ? context.contentId : undefined}\n aria-expanded={context.open || false}\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n disabled={context.disabled}\n {...triggerProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = /* @__PURE__ */ React.forwardRef<\n CollapsibleContentElement,\n CollapsibleContentProps\n>(\n // blank line to reduce diff noise\n function CollapsibleContent(props: ScopedProps<CollapsibleContentProps>, forwardedRef) {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n <Presence present={forceMount || context.open}>\n {({ present }) => (\n <CollapsibleContentImpl {...contentProps} ref={forwardedRef} present={present} />\n )}\n </Presence>\n );\n },\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = /* @__PURE__ */ React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>(function CollapsibleContentImpl(props: ScopedProps<CollapsibleContentImplProps>, forwardedRef) {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef<CollapsibleContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef<number | undefined>(0);\n const height = heightRef.current;\n const widthRef = React.useRef<number | undefined>(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration!;\n node.style.animationName = originalStylesRef.current.animationName!;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n <Primitive.div\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n id={context.contentId}\n hidden={!isOpen}\n {...contentProps}\n ref={composedRefs}\n style={{\n [`--radix-collapsible-content-height` as any]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width` as any]: width ? `${width}px` : undefined,\n ...props.style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Collapsible;\nconst Trigger = CollapsibleTrigger;\nconst Content = CollapsibleContent;\n\nexport {\n createCollapsibleScope,\n //\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n //\n Root,\n Trigger,\n Content,\n};\nexport type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type Slot } from '../react-slot';
|
|
3
|
+
type SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;
|
|
4
|
+
interface CollectionProps extends SlotProps {
|
|
5
|
+
scope: any;
|
|
6
|
+
}
|
|
7
|
+
declare function createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string): readonly [{
|
|
8
|
+
readonly Provider: React.FC<{
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
scope: any;
|
|
11
|
+
}>;
|
|
12
|
+
readonly Slot: React.ForwardRefExoticComponent<CollectionProps & React.RefAttributes<HTMLElement>>;
|
|
13
|
+
readonly ItemSlot: React.ForwardRefExoticComponent<React.PropsWithoutRef<ItemData & {
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
scope: any;
|
|
16
|
+
}> & React.RefAttributes<ItemElement>>;
|
|
17
|
+
}, (scope: any) => () => ({
|
|
18
|
+
ref: React.RefObject<ItemElement | null>;
|
|
19
|
+
} & ItemData)[], import("../react-context").CreateScope];
|
|
20
|
+
export { createCollection };
|
|
21
|
+
export type { CollectionProps };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContextScope } from "../react-context/create-context.js";
|
|
3
|
+
import { useComposedRefs } from "../react-compose-refs/compose-refs.js";
|
|
4
|
+
import { createSlot } from "../react-slot/slot.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/primitives/vendor/radix/react-collection/collection-legacy.tsx
|
|
8
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
9
|
+
function createCollection(name) {
|
|
10
|
+
const PROVIDER_NAME = name + "CollectionProvider";
|
|
11
|
+
const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);
|
|
12
|
+
const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {
|
|
13
|
+
collectionRef: { current: null },
|
|
14
|
+
itemMap: /* @__PURE__ */ new Map()
|
|
15
|
+
});
|
|
16
|
+
const CollectionProvider = (props) => {
|
|
17
|
+
const { scope, children } = props;
|
|
18
|
+
const ref = React.useRef(null);
|
|
19
|
+
const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;
|
|
20
|
+
return /* @__PURE__ */ jsx(CollectionProviderImpl, {
|
|
21
|
+
scope,
|
|
22
|
+
itemMap,
|
|
23
|
+
collectionRef: ref,
|
|
24
|
+
children
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
CollectionProvider.displayName = PROVIDER_NAME;
|
|
28
|
+
const COLLECTION_SLOT_NAME = name + "CollectionSlot";
|
|
29
|
+
const CollectionSlotImpl = /* @__PURE__ */ createSlot(COLLECTION_SLOT_NAME);
|
|
30
|
+
const CollectionSlot = React.forwardRef((props, forwardedRef) => {
|
|
31
|
+
const { scope, children } = props;
|
|
32
|
+
const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
|
|
33
|
+
const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
|
|
34
|
+
return /* @__PURE__ */ jsx(CollectionSlotImpl, {
|
|
35
|
+
ref: composedRefs,
|
|
36
|
+
children
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
CollectionSlot.displayName = COLLECTION_SLOT_NAME;
|
|
40
|
+
const ITEM_SLOT_NAME = name + "CollectionItemSlot";
|
|
41
|
+
const ITEM_DATA_ATTR = "data-radix-collection-item";
|
|
42
|
+
const CollectionItemSlotImpl = /* @__PURE__ */ createSlot(ITEM_SLOT_NAME);
|
|
43
|
+
const CollectionItemSlot = React.forwardRef((props, forwardedRef) => {
|
|
44
|
+
const { scope, children, ...itemData } = props;
|
|
45
|
+
const ref = React.useRef(null);
|
|
46
|
+
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
47
|
+
const context = useCollectionContext(ITEM_SLOT_NAME, scope);
|
|
48
|
+
React.useEffect(() => {
|
|
49
|
+
context.itemMap.set(ref, {
|
|
50
|
+
ref,
|
|
51
|
+
...itemData
|
|
52
|
+
});
|
|
53
|
+
return () => void context.itemMap.delete(ref);
|
|
54
|
+
});
|
|
55
|
+
return /* @__PURE__ */ jsx(CollectionItemSlotImpl, {
|
|
56
|
+
[ITEM_DATA_ATTR]: "",
|
|
57
|
+
ref: composedRefs,
|
|
58
|
+
children
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
CollectionItemSlot.displayName = ITEM_SLOT_NAME;
|
|
62
|
+
function useCollection(scope) {
|
|
63
|
+
const context = useCollectionContext(name + "CollectionConsumer", scope);
|
|
64
|
+
return React.useCallback(() => {
|
|
65
|
+
const collectionNode = context.collectionRef.current;
|
|
66
|
+
if (!collectionNode) return [];
|
|
67
|
+
const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));
|
|
68
|
+
return Array.from(context.itemMap.values()).sort((a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current));
|
|
69
|
+
}, [context.collectionRef, context.itemMap]);
|
|
70
|
+
}
|
|
71
|
+
return [
|
|
72
|
+
{
|
|
73
|
+
Provider: CollectionProvider,
|
|
74
|
+
Slot: CollectionSlot,
|
|
75
|
+
ItemSlot: CollectionItemSlot
|
|
76
|
+
},
|
|
77
|
+
useCollection,
|
|
78
|
+
createCollectionScope
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
export { createCollection };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=collection-legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-legacy.js","names":[],"sources":["../../../../../src/primitives/vendor/radix/react-collection/collection-legacy.tsx"],"sourcesContent":["// Vendored from Radix Primitives (c) 2022 WorkOS, MIT. See vendor/LICENSE.radix.\n// Local modification: package imports resolve to the pinned local source.\nimport * as React from 'react';\nimport { createContextScope } from '../react-context';\nimport { useComposedRefs } from '../react-compose-refs';\nimport { createSlot, type Slot } from '../react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>…</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\n/* @__NO_SIDE_EFFECTS__ */ function createCollection<\n ItemElement extends HTMLElement,\n ItemData = {},\n>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() },\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n },\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </CollectionItemSlotImpl>\n );\n },\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!),\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n"],"mappings":";;;;;;;;AAkB2B,SAAS,iBAGlC,MAAc;CAKd,MAAM,gBAAgB,OAAO;CAC7B,MAAM,CAAC,yBAAyB,yBAAyB,mBAAmB,aAAa;CAUzF,MAAM,CAAC,wBAAwB,wBAAwB,wBACrD,eACA;EAAE,eAAe,EAAE,SAAS,KAAK;EAAG,yBAAS,IAAI,IAAI;CAAE,CACzD;CAEA,MAAM,sBAA4E,UAAU;EAC1F,MAAM,EAAE,OAAO,aAAa;EAC5B,MAAM,MAAM,MAAM,OAA0B,IAAI;EAChD,MAAM,UAAU,MAAM,uBAAgC,IAAI,IAAI,CAAC,CAAC,CAAC;EACjE,OACE,oBAAC,wBAAD;GAA+B;GAAgB;GAAS,eAAe;GACpE;EACqB,CAAA;CAE5B;CAEA,mBAAmB,cAAc;CAMjC,MAAM,uBAAuB,OAAO;CAEpC,MAAM,qBAAqB,2BAAW,oBAAoB;CAC1D,MAAM,iBAAiB,MAAM,YAC1B,OAAO,iBAAiB;EACvB,MAAM,EAAE,OAAO,aAAa;EAC5B,MAAM,UAAU,qBAAqB,sBAAsB,KAAK;EAChE,MAAM,eAAe,gBAAgB,cAAc,QAAQ,aAAa;EACxE,OAAO,oBAAC,oBAAD;GAAoB,KAAK;GAAe;EAA6B,CAAA;CAC9E,CACF;CAEA,eAAe,cAAc;CAM7B,MAAM,iBAAiB,OAAO;CAC9B,MAAM,iBAAiB;CAOvB,MAAM,yBAAyB,2BAAW,cAAc;CACxD,MAAM,qBAAqB,MAAM,YAC9B,OAAO,iBAAiB;EACvB,MAAM,EAAE,OAAO,UAAU,GAAG,aAAa;EACzC,MAAM,MAAM,MAAM,OAAoB,IAAI;EAC1C,MAAM,eAAe,gBAAgB,cAAc,GAAG;EACtD,MAAM,UAAU,qBAAqB,gBAAgB,KAAK;EAE1D,MAAM,gBAAgB;GACpB,QAAQ,QAAQ,IAAI,KAAK;IAAE;IAAK,GAAI;GAAiC,CAAC;GACtE,aAAa,KAAK,QAAQ,QAAQ,OAAO,GAAG;EAC9C,CAAC;EAED,OACE,oBAAC,wBAAD;IAA+B,iBAAiB;GAAM,KAAK;GACxD;EACqB,CAAA;CAE5B,CACF;CAEA,mBAAmB,cAAc;CAMjC,SAAS,cAAc,OAAY;EACjC,MAAM,UAAU,qBAAqB,OAAO,sBAAsB,KAAK;EAavE,OAXiB,MAAM,kBAAkB;GACvC,MAAM,iBAAiB,QAAQ,cAAc;GAC7C,IAAI,CAAC,gBAAgB,OAAO,CAAC;GAC7B,MAAM,eAAe,MAAM,KAAK,eAAe,iBAAiB,IAAI,eAAe,EAAE,CAAC;GAKtF,OAJc,MAAM,KAAK,QAAQ,QAAQ,OAAO,CAC3B,CAAA,CAAM,MACxB,GAAG,MAAM,aAAa,QAAQ,EAAE,IAAI,OAAQ,IAAI,aAAa,QAAQ,EAAE,IAAI,OAAQ,CAE/E;EACT,GAAG,CAAC,QAAQ,eAAe,QAAQ,OAAO,CAEnC;CACT;CAEA,OAAO;EACL;GAAE,UAAU;GAAoB,MAAM;GAAgB,UAAU;EAAmB;EACnF;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type Slot } from '../react-slot';
|
|
3
|
+
import { OrderedDict } from './ordered-dictionary';
|
|
4
|
+
type SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;
|
|
5
|
+
interface CollectionProps extends SlotProps {
|
|
6
|
+
scope: any;
|
|
7
|
+
}
|
|
8
|
+
interface BaseItemData {
|
|
9
|
+
id?: string;
|
|
10
|
+
}
|
|
11
|
+
type ItemDataWithElement<ItemData extends BaseItemData, ItemElement extends HTMLElement> = ItemData & {
|
|
12
|
+
element: ItemElement;
|
|
13
|
+
};
|
|
14
|
+
type ItemMap<ItemElement extends HTMLElement, ItemData extends BaseItemData> = OrderedDict<ItemElement, ItemDataWithElement<ItemData, ItemElement>>;
|
|
15
|
+
declare function createCollection<ItemElement extends HTMLElement, ItemData extends {} = {}>(name: string): readonly [{
|
|
16
|
+
readonly Provider: React.FC<{
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
scope: any;
|
|
19
|
+
state?: [ItemMap: ItemMap<ItemElement, ItemData & BaseItemData>, SetItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData & BaseItemData>>>];
|
|
20
|
+
}>;
|
|
21
|
+
readonly Slot: React.ForwardRefExoticComponent<CollectionProps & React.RefAttributes<HTMLElement>>;
|
|
22
|
+
readonly ItemSlot: React.ForwardRefExoticComponent<React.PropsWithoutRef<ItemData & BaseItemData & {
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
scope: any;
|
|
25
|
+
}> & React.RefAttributes<ItemElement>>;
|
|
26
|
+
}, {
|
|
27
|
+
createCollectionScope: import("../react-context").CreateScope;
|
|
28
|
+
useCollection: (scope: any) => ItemMap<ItemElement, ItemData & BaseItemData>;
|
|
29
|
+
useInitCollection: () => [ItemMap<ItemElement, ItemData & BaseItemData>, React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData & BaseItemData>>>];
|
|
30
|
+
}];
|
|
31
|
+
export { createCollection };
|
|
32
|
+
export type { CollectionProps };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createCollection } from './collection-legacy';
|
|
2
|
+
export type { CollectionProps } from './collection-legacy';
|
|
3
|
+
export { createCollection as unstable_createCollection } from './collection';
|
|
4
|
+
export type { CollectionProps as unstable_CollectionProps } from './collection';
|