@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
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
-
import { Toast as ToastPrimitive } from 'radix-ui';
|
|
3
2
|
import * as React from 'react';
|
|
3
|
+
import * as ToastPrimitive from '../primitives/vendor/radix/react-toast';
|
|
4
4
|
/**
|
|
5
5
|
* Brief, non-blocking notices ("Message sent", "Update available"). Put one
|
|
6
6
|
* `ToastProvider` + `ToastViewport` near the root and render `Toast`s with
|
|
7
7
|
* `open` state; Radix handles timing, swipe-to-dismiss and the live region.
|
|
8
8
|
*/
|
|
9
9
|
declare const ToastProvider: React.FC<ToastPrimitive.ToastProviderProps>;
|
|
10
|
-
|
|
10
|
+
/** Bottom right, above every overlay (z 100), full width on phones. */
|
|
11
|
+
declare const ToastViewport: React.ForwardRefExoticComponent<Omit<ToastPrimitive.ToastViewportProps & React.RefAttributes<HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>;
|
|
11
12
|
declare const toastVariants: (props?: ({
|
|
12
13
|
variant?: "destructive" | "success" | "default" | null | undefined;
|
|
13
14
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
declare
|
|
15
|
+
export interface ToastProps extends React.ComponentProps<typeof ToastPrimitive.Root>, VariantProps<typeof toastVariants> {
|
|
16
|
+
}
|
|
17
|
+
declare const Toast: React.ForwardRefExoticComponent<Omit<ToastProps, "ref"> & React.RefAttributes<HTMLLIElement>>;
|
|
18
|
+
declare const ToastTitle: React.ForwardRefExoticComponent<Omit<ToastPrimitive.ToastTitleProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
declare const ToastDescription: React.ForwardRefExoticComponent<Omit<ToastPrimitive.ToastDescriptionProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
17
20
|
/** A button inside the toast; `altText` tells screen readers how to do it without the toast. */
|
|
18
|
-
declare
|
|
19
|
-
|
|
21
|
+
declare const ToastAction: React.ForwardRefExoticComponent<Omit<ToastPrimitive.ToastActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
22
|
+
/** The dismiss X: 24px drawn, 44px to a touch. */
|
|
23
|
+
declare const ToastClose: React.ForwardRefExoticComponent<Omit<ToastPrimitive.ToastCloseProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
20
24
|
export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, toastVariants, ToastViewport, };
|
package/dist/components/toast.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import "react";
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn, focusRingClasses, touchTargetClasses } from "../lib/utils.js";
|
|
3
|
+
import { Action, Close, Description, Provider, Root, Title, Viewport } from "../primitives/vendor/radix/react-toast/toast.js";
|
|
4
|
+
import * as React from "react";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
import { cva } from "class-variance-authority";
|
|
6
7
|
import X from "@burtson-labs/icons/react/x";
|
|
@@ -10,15 +11,17 @@ import X from "@burtson-labs/icons/react/x";
|
|
|
10
11
|
* `ToastProvider` + `ToastViewport` near the root and render `Toast`s with
|
|
11
12
|
* `open` state; Radix handles timing, swipe-to-dismiss and the live region.
|
|
12
13
|
*/
|
|
13
|
-
var ToastProvider =
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
var ToastProvider = Provider;
|
|
15
|
+
/** Bottom right, above every overlay (z 100), full width on phones. */
|
|
16
|
+
var ToastViewport = React.forwardRef(function ToastViewport({ className, ...props }, ref) {
|
|
17
|
+
return /* @__PURE__ */ jsx(Viewport, {
|
|
18
|
+
ref,
|
|
16
19
|
"data-slot": "toast-viewport",
|
|
17
|
-
className: cn("fixed right-0 bottom-0 z-[100] flex max-h-dvh w-full flex-col-reverse gap-2 p-4 outline-none sm:max-w-sm", className),
|
|
20
|
+
className: cn("fixed right-0 bottom-0 z-[100] flex max-h-dvh w-full flex-col-reverse gap-2 p-4 pb-[max(1rem,env(safe-area-inset-bottom))] outline-none sm:max-w-sm", className),
|
|
18
21
|
...props
|
|
19
22
|
});
|
|
20
|
-
}
|
|
21
|
-
var toastVariants = cva("group pointer-events-auto relative grid w-full grid-cols-[1fr_auto] items-start gap-x-3 gap-y-1 overflow-hidden rounded-lg border p-4 pr-10 text-sm shadow-
|
|
23
|
+
});
|
|
24
|
+
var toastVariants = cva("group pointer-events-auto relative grid w-full grid-cols-[1fr_auto] items-start gap-x-3 gap-y-1 overflow-hidden rounded-lg border p-4 pr-10 text-sm shadow-lg [--bl-ty:12px] [--bl-scale:0.98] data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[swipe=move]:transition-none", {
|
|
22
25
|
variants: { variant: {
|
|
23
26
|
default: "border-border-strong bg-surface-raised text-foreground",
|
|
24
27
|
success: "border-success/30 bg-surface-raised text-foreground [&_[data-slot=toast-title]]:text-success",
|
|
@@ -26,45 +29,52 @@ var toastVariants = cva("group pointer-events-auto relative grid w-full grid-col
|
|
|
26
29
|
} },
|
|
27
30
|
defaultVariants: { variant: "default" }
|
|
28
31
|
});
|
|
29
|
-
function Toast
|
|
30
|
-
return /* @__PURE__ */ jsx(
|
|
32
|
+
var Toast = React.forwardRef(function Toast({ className, variant, ...props }, ref) {
|
|
33
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
34
|
+
ref,
|
|
31
35
|
"data-slot": "toast",
|
|
36
|
+
"data-variant": variant ?? "default",
|
|
32
37
|
className: cn(toastVariants({ variant }), className),
|
|
33
38
|
...props
|
|
34
39
|
});
|
|
35
|
-
}
|
|
36
|
-
function ToastTitle({ className, ...props }) {
|
|
37
|
-
return /* @__PURE__ */ jsx(
|
|
40
|
+
});
|
|
41
|
+
var ToastTitle = React.forwardRef(function ToastTitle({ className, ...props }, ref) {
|
|
42
|
+
return /* @__PURE__ */ jsx(Title, {
|
|
43
|
+
ref,
|
|
38
44
|
"data-slot": "toast-title",
|
|
39
45
|
className: cn("col-start-1 font-semibold tracking-[-0.01em]", className),
|
|
40
46
|
...props
|
|
41
47
|
});
|
|
42
|
-
}
|
|
43
|
-
function ToastDescription({ className, ...props }) {
|
|
44
|
-
return /* @__PURE__ */ jsx(
|
|
48
|
+
});
|
|
49
|
+
var ToastDescription = React.forwardRef(function ToastDescription({ className, ...props }, ref) {
|
|
50
|
+
return /* @__PURE__ */ jsx(Description, {
|
|
51
|
+
ref,
|
|
45
52
|
"data-slot": "toast-description",
|
|
46
53
|
className: cn("col-start-1 text-[13px] leading-5 text-muted-foreground", className),
|
|
47
54
|
...props
|
|
48
55
|
});
|
|
49
|
-
}
|
|
56
|
+
});
|
|
50
57
|
/** A button inside the toast; `altText` tells screen readers how to do it without the toast. */
|
|
51
|
-
function ToastAction({ className, ...props }) {
|
|
52
|
-
return /* @__PURE__ */ jsx(
|
|
58
|
+
var ToastAction = React.forwardRef(function ToastAction({ className, ...props }, ref) {
|
|
59
|
+
return /* @__PURE__ */ jsx(Action, {
|
|
60
|
+
ref,
|
|
53
61
|
"data-slot": "toast-action",
|
|
54
|
-
className: cn("col-start-2 row-span-2 row-start-1 inline-flex h-8 shrink-0 items-center justify-center self-center rounded-md border border-border-strong bg-surface px-3 text-[13px] font-semibold transition-colors
|
|
62
|
+
className: cn("col-start-2 row-span-2 row-start-1 inline-flex h-8 shrink-0 items-center justify-center self-center rounded-md border border-border-strong bg-surface px-3 text-[13px] font-semibold transition-colors hover:bg-muted pointer-coarse:min-h-11", focusRingClasses, className),
|
|
55
63
|
...props
|
|
56
64
|
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
});
|
|
66
|
+
/** The dismiss X: 24px drawn, 44px to a touch. */
|
|
67
|
+
var ToastClose = React.forwardRef(function ToastClose({ className, ...props }, ref) {
|
|
68
|
+
return /* @__PURE__ */ jsx(Close, {
|
|
69
|
+
ref,
|
|
60
70
|
"data-slot": "toast-close",
|
|
61
71
|
"aria-label": "Dismiss",
|
|
62
|
-
className: cn("absolute top-3 right-3 grid size-6 place-items-center rounded-sm text-muted-foreground transition-colors
|
|
72
|
+
className: cn("absolute top-3 right-3 grid size-6 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground [&_svg]:size-4", focusRingClasses, touchTargetClasses, "absolute", className),
|
|
63
73
|
...props,
|
|
64
74
|
children: /* @__PURE__ */ jsx(X, { "aria-hidden": true })
|
|
65
75
|
});
|
|
66
|
-
}
|
|
76
|
+
});
|
|
67
77
|
//#endregion
|
|
68
|
-
export { Toast
|
|
78
|
+
export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, toastVariants };
|
|
69
79
|
|
|
70
80
|
//# sourceMappingURL=toast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","names":["ToastPrimitive","
|
|
1
|
+
{"version":3,"file":"toast.js","names":["ToastPrimitive.Provider","ToastPrimitive.Viewport","ToastPrimitive.Root","ToastPrimitive.Title","ToastPrimitive.Description","ToastPrimitive.Action","ToastPrimitive.Close"],"sources":["../../src/components/toast.tsx"],"sourcesContent":["import X from '@burtson-labs/icons/react/x';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn, focusRingClasses, touchTargetClasses } from '../lib/utils';\nimport * as ToastPrimitive from '../primitives/vendor/radix/react-toast';\n\n/**\n * Brief, non-blocking notices (\"Message sent\", \"Update available\"). Put one\n * `ToastProvider` + `ToastViewport` near the root and render `Toast`s with\n * `open` state; Radix handles timing, swipe-to-dismiss and the live region.\n */\nconst ToastProvider = ToastPrimitive.Provider;\n\n/** Bottom right, above every overlay (z 100), full width on phones. */\nconst ToastViewport = React.forwardRef<\n HTMLOListElement,\n React.ComponentProps<typeof ToastPrimitive.Viewport>\n>(function ToastViewport({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Viewport\n ref={ref}\n data-slot=\"toast-viewport\"\n className={cn(\n 'fixed right-0 bottom-0 z-[100] flex max-h-dvh w-full flex-col-reverse gap-2 p-4 pb-[max(1rem,env(safe-area-inset-bottom))] outline-none sm:max-w-sm',\n className,\n )}\n {...props}\n />\n );\n});\n\nconst toastVariants = cva(\n 'group pointer-events-auto relative grid w-full grid-cols-[1fr_auto] items-start gap-x-3 gap-y-1 overflow-hidden rounded-lg border p-4 pr-10 text-sm shadow-lg [--bl-ty:12px] [--bl-scale:0.98] data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[swipe=move]:transition-none',\n {\n variants: {\n variant: {\n default: 'border-border-strong bg-surface-raised text-foreground',\n success:\n 'border-success/30 bg-surface-raised text-foreground [&_[data-slot=toast-title]]:text-success',\n destructive:\n 'border-destructive/30 bg-surface-raised text-foreground [&_[data-slot=toast-title]]:text-destructive',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface ToastProps\n extends React.ComponentProps<typeof ToastPrimitive.Root>, VariantProps<typeof toastVariants> {}\n\nconst Toast = React.forwardRef<HTMLLIElement, ToastProps>(function Toast(\n { className, variant, ...props },\n ref,\n) {\n return (\n <ToastPrimitive.Root\n ref={ref}\n data-slot=\"toast\"\n data-variant={variant ?? 'default'}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\n\nconst ToastTitle = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof ToastPrimitive.Title>\n>(function ToastTitle({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Title\n ref={ref}\n data-slot=\"toast-title\"\n className={cn('col-start-1 font-semibold tracking-[-0.01em]', className)}\n {...props}\n />\n );\n});\n\nconst ToastDescription = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof ToastPrimitive.Description>\n>(function ToastDescription({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Description\n ref={ref}\n data-slot=\"toast-description\"\n className={cn('col-start-1 text-[13px] leading-5 text-muted-foreground', className)}\n {...props}\n />\n );\n});\n\n/** A button inside the toast; `altText` tells screen readers how to do it without the toast. */\nconst ToastAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof ToastPrimitive.Action>\n>(function ToastAction({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Action\n ref={ref}\n data-slot=\"toast-action\"\n className={cn(\n 'col-start-2 row-span-2 row-start-1 inline-flex h-8 shrink-0 items-center justify-center self-center rounded-md border border-border-strong bg-surface px-3 text-[13px] font-semibold transition-colors hover:bg-muted pointer-coarse:min-h-11',\n focusRingClasses,\n className,\n )}\n {...props}\n />\n );\n});\n\n/** The dismiss X: 24px drawn, 44px to a touch. */\nconst ToastClose = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof ToastPrimitive.Close>\n>(function ToastClose({ className, ...props }, ref) {\n return (\n <ToastPrimitive.Close\n ref={ref}\n data-slot=\"toast-close\"\n aria-label=\"Dismiss\"\n className={cn(\n 'absolute top-3 right-3 grid size-6 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground [&_svg]:size-4',\n focusRingClasses,\n touchTargetClasses,\n 'absolute',\n className,\n )}\n {...props}\n >\n <X aria-hidden />\n </ToastPrimitive.Close>\n );\n});\n\nexport {\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n toastVariants,\n ToastViewport,\n};\n"],"mappings":";;;;;;;;;;;;;AAYA,IAAM,gBAAgBA;;AAGtB,IAAM,gBAAgB,MAAM,WAG1B,SAAS,cAAc,EAAE,WAAW,GAAG,SAAS,KAAK;CACrD,OACE,oBAACC,UAAD;EACO;EACL,aAAU;EACV,WAAW,GACT,uJACA,SACF;EACA,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,gBAAgB,IACpB,ubACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,SACE;EACF,aACE;CACJ,EACF;CACA,iBAAiB,EAAE,SAAS,UAAU;AACxC,CACF;AAKA,IAAM,QAAQ,MAAM,WAAsC,SAAS,MACjE,EAAE,WAAW,SAAS,GAAG,SACzB,KACA;CACA,OACE,oBAACC,MAAD;EACO;EACL,aAAU;EACV,gBAAc,WAAW;EACzB,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,aAAa,MAAM,WAGvB,SAAS,WAAW,EAAE,WAAW,GAAG,SAAS,KAAK;CAClD,OACE,oBAACC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,gDAAgD,SAAS;EACvE,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,mBAAmB,MAAM,WAG7B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,oBAACC,aAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,2DAA2D,SAAS;EAClF,GAAI;CACL,CAAA;AAEL,CAAC;;AAGD,IAAM,cAAc,MAAM,WAGxB,SAAS,YAAY,EAAE,WAAW,GAAG,SAAS,KAAK;CACnD,OACE,oBAACC,QAAD;EACO;EACL,aAAU;EACV,WAAW,GACT,iPACA,kBACA,SACF;EACA,GAAI;CACL,CAAA;AAEL,CAAC;;AAGD,IAAM,aAAa,MAAM,WAGvB,SAAS,WAAW,EAAE,WAAW,GAAG,SAAS,KAAK;CAClD,OACE,oBAACC,OAAD;EACO;EACL,aAAU;EACV,cAAW;EACX,WAAW,GACT,gKACA,kBACA,oBACA,YACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,GAAD,EAAG,eAAA,KAAa,CAAA;CACI,CAAA;AAE1B,CAAC"}
|
|
@@ -14,7 +14,9 @@ export interface ToastOptions {
|
|
|
14
14
|
}
|
|
15
15
|
/** Show a brief notice. Returns a function that closes it early. */
|
|
16
16
|
declare function toast(options: ToastOptions | string): () => void;
|
|
17
|
-
|
|
17
|
+
export interface ToasterProps {
|
|
18
|
+
/** Classes for the viewport (position, width). */
|
|
18
19
|
className?: string;
|
|
19
|
-
}
|
|
20
|
+
}
|
|
21
|
+
declare function Toaster({ className }: ToasterProps): React.JSX.Element;
|
|
20
22
|
export { toast, Toaster };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from "./toast.js";
|
|
2
3
|
import * as React from "react";
|
|
3
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -36,8 +37,9 @@ var subscribe = (listener) => {
|
|
|
36
37
|
};
|
|
37
38
|
};
|
|
38
39
|
var snapshot = () => records;
|
|
40
|
+
var serverSnapshot = () => [];
|
|
39
41
|
function Toaster({ className }) {
|
|
40
|
-
const list = React.useSyncExternalStore(subscribe, snapshot,
|
|
42
|
+
const list = React.useSyncExternalStore(subscribe, snapshot, serverSnapshot);
|
|
41
43
|
return /* @__PURE__ */ jsxs(ToastProvider, {
|
|
42
44
|
swipeDirection: "right",
|
|
43
45
|
children: [list.map((r) => /* @__PURE__ */ jsxs(Toast, {
|
|
@@ -52,7 +54,10 @@ function Toaster({ className }) {
|
|
|
52
54
|
r.description && /* @__PURE__ */ jsx(ToastDescription, { children: r.description }),
|
|
53
55
|
/* @__PURE__ */ jsx(ToastClose, {})
|
|
54
56
|
]
|
|
55
|
-
}, r.id)), /* @__PURE__ */ jsx(ToastViewport, {
|
|
57
|
+
}, r.id)), /* @__PURE__ */ jsx(ToastViewport, {
|
|
58
|
+
"data-slot": "toaster",
|
|
59
|
+
className
|
|
60
|
+
})]
|
|
56
61
|
});
|
|
57
62
|
}
|
|
58
63
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toaster.js","names":[],"sources":["../../src/components/toaster.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from './toast';\n\n/**\n * Imperative toasts: call `toast({ title, description, variant })` from\n * anywhere (event handlers, data hooks) and one mounted `<Toaster />` renders\n * them on the Toast primitives. Mount the Toaster once near the root.\n */\nexport type ToastVariant = 'default' | 'success' | 'destructive';\n\nexport interface ToastOptions {\n title: string;\n description?: string;\n variant?: ToastVariant;\n /** Milliseconds before it closes (Radix pauses on hover and focus). */\n duration?: number;\n}\n\ninterface ToastRecord extends ToastOptions {\n id: number;\n open: boolean;\n}\n\nlet records: ToastRecord[] = [];\nlet nextId = 1;\nconst listeners = new Set<() => void>();\nconst emit = () => listeners.forEach((listener) => listener());\n\nfunction close(id: number) {\n records = records.map((r) => (r.id === id ? { ...r, open: false } : r));\n emit();\n // Leave time for the exit animation before dropping the record.\n setTimeout(() => {\n records = records.filter((r) => r.id !== id);\n emit();\n }, 400);\n}\n\n/** Show a brief notice. Returns a function that closes it early. */\nfunction toast(options: ToastOptions | string): () => void {\n const opts = typeof options === 'string' ? { title: options } : options;\n const id = nextId++;\n // Keep the stack short: the oldest go first.\n records = [...records.slice(-3), { ...opts, id, open: true }];\n emit();\n return () => close(id);\n}\n\nconst subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n};\nconst snapshot = () => records;\n\
|
|
1
|
+
{"version":3,"file":"toaster.js","names":[],"sources":["../../src/components/toaster.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from './toast';\n\n/**\n * Imperative toasts: call `toast({ title, description, variant })` from\n * anywhere (event handlers, data hooks) and one mounted `<Toaster />` renders\n * them on the Toast primitives. Mount the Toaster once near the root.\n */\nexport type ToastVariant = 'default' | 'success' | 'destructive';\n\nexport interface ToastOptions {\n title: string;\n description?: string;\n variant?: ToastVariant;\n /** Milliseconds before it closes (Radix pauses on hover and focus). */\n duration?: number;\n}\n\ninterface ToastRecord extends ToastOptions {\n id: number;\n open: boolean;\n}\n\nlet records: ToastRecord[] = [];\nlet nextId = 1;\nconst listeners = new Set<() => void>();\nconst emit = () => listeners.forEach((listener) => listener());\n\nfunction close(id: number) {\n records = records.map((r) => (r.id === id ? { ...r, open: false } : r));\n emit();\n // Leave time for the exit animation before dropping the record.\n setTimeout(() => {\n records = records.filter((r) => r.id !== id);\n emit();\n }, 400);\n}\n\n/** Show a brief notice. Returns a function that closes it early. */\nfunction toast(options: ToastOptions | string): () => void {\n const opts = typeof options === 'string' ? { title: options } : options;\n const id = nextId++;\n // Keep the stack short: the oldest go first.\n records = [...records.slice(-3), { ...opts, id, open: true }];\n emit();\n return () => close(id);\n}\n\nconst subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n};\nconst snapshot = () => records;\nconst serverSnapshot = (): ToastRecord[] => [];\n\nexport interface ToasterProps {\n /** Classes for the viewport (position, width). */\n className?: string;\n}\n\nfunction Toaster({ className }: ToasterProps) {\n const list = React.useSyncExternalStore(subscribe, snapshot, serverSnapshot);\n return (\n <ToastProvider swipeDirection=\"right\">\n {list.map((r) => (\n <Toast\n key={r.id}\n open={r.open}\n variant={r.variant}\n duration={r.duration ?? (r.variant === 'destructive' ? 8000 : 4000)}\n onOpenChange={(open) => {\n if (!open) close(r.id);\n }}\n >\n <ToastTitle>{r.title}</ToastTitle>\n {r.description && <ToastDescription>{r.description}</ToastDescription>}\n <ToastClose />\n </Toast>\n ))}\n <ToastViewport data-slot=\"toaster\" className={className} />\n </ToastProvider>\n );\n}\n\nexport { toast, Toaster };\n"],"mappings":";;;;;AA+BA,IAAI,UAAyB,CAAC;AAC9B,IAAI,SAAS;AACb,IAAM,4BAAY,IAAI,IAAgB;AACtC,IAAM,aAAa,UAAU,SAAS,aAAa,SAAS,CAAC;AAE7D,SAAS,MAAM,IAAY;CACzB,UAAU,QAAQ,KAAK,MAAO,EAAE,OAAO,KAAK;EAAE,GAAG;EAAG,MAAM;CAAM,IAAI,CAAE;CACtE,KAAK;CAEL,iBAAiB;EACf,UAAU,QAAQ,QAAQ,MAAM,EAAE,OAAO,EAAE;EAC3C,KAAK;CACP,GAAG,GAAG;AACR;;AAGA,SAAS,MAAM,SAA4C;CACzD,MAAM,OAAO,OAAO,YAAY,WAAW,EAAE,OAAO,QAAQ,IAAI;CAChE,MAAM,KAAK;CAEX,UAAU,CAAC,GAAG,QAAQ,MAAM,EAAE,GAAG;EAAE,GAAG;EAAM;EAAI,MAAM;CAAK,CAAC;CAC5D,KAAK;CACL,aAAa,MAAM,EAAE;AACvB;AAEA,IAAM,aAAa,aAAyB;CAC1C,UAAU,IAAI,QAAQ;CACtB,aAAa;EACX,UAAU,OAAO,QAAQ;CAC3B;AACF;AACA,IAAM,iBAAiB;AACvB,IAAM,uBAAsC,CAAC;AAO7C,SAAS,QAAQ,EAAE,aAA2B;CAC5C,MAAM,OAAO,MAAM,qBAAqB,WAAW,UAAU,cAAc;CAC3E,OACE,qBAAC,eAAD;EAAe,gBAAe;EAA9B,UAAA,CACG,KAAK,KAAK,MACT,qBAAC,OAAD;GAEE,MAAM,EAAE;GACR,SAAS,EAAE;GACX,UAAU,EAAE,aAAa,EAAE,YAAY,gBAAgB,MAAO;GAC9D,eAAe,SAAS;IACtB,IAAI,CAAC,MAAM,MAAM,EAAE,EAAE;GACvB;GAPF,UAAA;IASE,oBAAC,YAAD,EAAA,UAAa,EAAE,MAAkB,CAAA;IAChC,EAAE,eAAe,oBAAC,kBAAD,EAAA,UAAmB,EAAE,YAA8B,CAAA;IACrE,oBAAC,YAAD,CAAa,CAAA;GACR;EAXA,GAAA,EAAE,EAWF,CACR,GACD,oBAAC,eAAD;GAAe,aAAU;GAAqB;EAAY,CAAA,CAC7C;;AAEnB"}
|
|
@@ -14,7 +14,7 @@ export interface ToolCallProps extends Omit<React.ComponentProps<'div'>, 'title'
|
|
|
14
14
|
defaultOpen?: boolean;
|
|
15
15
|
}
|
|
16
16
|
/** A tool call an agent made: name, live status, and collapsible arguments and result. */
|
|
17
|
-
declare
|
|
17
|
+
declare const ToolCall: React.ForwardRefExoticComponent<Omit<ToolCallProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
18
|
export interface ToolApprovalProps extends Omit<React.ComponentProps<'div'>, 'title'> {
|
|
19
19
|
name: string;
|
|
20
20
|
/** What will happen, in plain words, e.g. "Approve L-1042 and send it to Gravitate". */
|
|
@@ -30,5 +30,5 @@ export interface ToolApprovalProps extends Omit<React.ComponentProps<'div'>, 'ti
|
|
|
30
30
|
denyLabel?: string;
|
|
31
31
|
}
|
|
32
32
|
/** A gate before an agent runs a tool with side effects: the person approves or denies it. */
|
|
33
|
-
declare
|
|
33
|
+
declare const ToolApproval: React.ForwardRefExoticComponent<Omit<ToolApprovalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
34
34
|
export { ToolApproval, ToolCall };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn, focusRingClasses } from "../lib/utils.js";
|
|
3
|
+
import { Content, Root, Trigger } from "../primitives/vendor/radix/react-collapsible/collapsible.js";
|
|
2
4
|
import { Button } from "./button.js";
|
|
3
5
|
import { StatusDot } from "./status.js";
|
|
4
|
-
import
|
|
5
|
-
import "react";
|
|
6
|
+
import * as React from "react";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
8
|
import ChevronRight from "@burtson-labs/icons/react/chevron-right";
|
|
8
9
|
import Wrench from "@burtson-labs/icons/react/wrench";
|
|
@@ -17,7 +18,7 @@ var statusDot = {
|
|
|
17
18
|
pending: "neutral",
|
|
18
19
|
running: "brand",
|
|
19
20
|
success: "success",
|
|
20
|
-
error: "
|
|
21
|
+
error: "destructive"
|
|
21
22
|
};
|
|
22
23
|
var json = (value) => {
|
|
23
24
|
if (typeof value === "string") return value;
|
|
@@ -36,18 +37,19 @@ var json = (value) => {
|
|
|
36
37
|
}
|
|
37
38
|
};
|
|
38
39
|
/** A tool call an agent made: name, live status, and collapsible arguments and result. */
|
|
39
|
-
function ToolCall({ name, status, args, result, error, durationMs, defaultOpen = false, className, ...props }) {
|
|
40
|
+
var ToolCall = React.forwardRef(function ToolCall({ name, status, args, result, error, durationMs, defaultOpen = false, className, ...props }, ref) {
|
|
40
41
|
const hasDetail = args !== void 0 || result !== void 0 || Boolean(error);
|
|
41
|
-
return /* @__PURE__ */ jsx(
|
|
42
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
42
43
|
defaultOpen,
|
|
43
44
|
disabled: !hasDetail,
|
|
44
45
|
children: /* @__PURE__ */ jsxs("div", {
|
|
46
|
+
ref,
|
|
45
47
|
"data-slot": "tool-call",
|
|
46
48
|
"data-status": status,
|
|
47
49
|
className: cn("animate-in overflow-hidden rounded-md border bg-surface text-[13px]", status === "error" && "border-destructive/30", className),
|
|
48
50
|
...props,
|
|
49
|
-
children: [/* @__PURE__ */ jsxs(
|
|
50
|
-
className: "group/tool flex h-9 w-full items-center gap-2 px-3 text-left
|
|
51
|
+
children: [/* @__PURE__ */ jsxs(Trigger, {
|
|
52
|
+
className: cn("group/tool flex h-9 w-full items-center gap-2 px-3 text-left hover:bg-muted/60 disabled:cursor-default disabled:hover:bg-transparent pointer-coarse:h-11", focusRingClasses, "focus-visible:outline-offset-[-2px]"),
|
|
51
53
|
children: [
|
|
52
54
|
/* @__PURE__ */ jsx(Wrench, {
|
|
53
55
|
className: "size-3.5 shrink-0 text-muted-foreground",
|
|
@@ -80,7 +82,7 @@ function ToolCall({ name, status, args, result, error, durationMs, defaultOpen =
|
|
|
80
82
|
className: "size-3.5 text-muted-foreground transition-transform group-data-[state=open]/tool:rotate-90"
|
|
81
83
|
})
|
|
82
84
|
]
|
|
83
|
-
}), /* @__PURE__ */ jsx(
|
|
85
|
+
}), /* @__PURE__ */ jsx(Content, {
|
|
84
86
|
className: "overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
|
|
85
87
|
children: /* @__PURE__ */ jsxs("div", {
|
|
86
88
|
className: "grid gap-2 border-t p-3",
|
|
@@ -111,10 +113,11 @@ function ToolCall({ name, status, args, result, error, durationMs, defaultOpen =
|
|
|
111
113
|
})]
|
|
112
114
|
})
|
|
113
115
|
});
|
|
114
|
-
}
|
|
116
|
+
});
|
|
115
117
|
/** A gate before an agent runs a tool with side effects: the person approves or denies it. */
|
|
116
|
-
function ToolApproval({ name, description, args, state = "pending", busy = false, onApprove, onDeny, approveLabel = "Approve", denyLabel = "Deny", className, ...props }) {
|
|
118
|
+
var ToolApproval = React.forwardRef(function ToolApproval({ name, description, args, state = "pending", busy = false, onApprove, onDeny, approveLabel = "Approve", denyLabel = "Deny", className, ...props }, ref) {
|
|
117
119
|
return /* @__PURE__ */ jsxs("div", {
|
|
120
|
+
ref,
|
|
118
121
|
"data-slot": "tool-approval",
|
|
119
122
|
"aria-busy": busy || void 0,
|
|
120
123
|
"data-state": state,
|
|
@@ -163,7 +166,7 @@ function ToolApproval({ name, description, args, state = "pending", busy = false
|
|
|
163
166
|
})
|
|
164
167
|
]
|
|
165
168
|
});
|
|
166
|
-
}
|
|
169
|
+
});
|
|
167
170
|
//#endregion
|
|
168
171
|
export { ToolApproval, ToolCall };
|
|
169
172
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call.js","names":["CollapsiblePrimitive"],"sources":["../../src/components/tool-call.tsx"],"sourcesContent":["import ChevronRight from '@burtson-labs/icons/react/chevron-right';\nimport Wrench from '@burtson-labs/icons/react/wrench';\nimport { Collapsible as CollapsiblePrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nimport { Button } from './button';\nimport { StatusDot } from './status';\n\nexport type ToolCallStatus = 'pending' | 'running' | 'success' | 'error';\n\nconst statusText: Record<ToolCallStatus, string> = {\n pending: 'Queued',\n running: 'Running',\n success: 'Done',\n error: 'Failed',\n};\nconst statusDot = {\n pending: 'neutral',\n running: 'brand',\n success: 'success',\n error: 'danger',\n} as const;\n\nconst json = (value: unknown) => {\n if (typeof value === 'string') return value;\n const seen = new WeakSet<object>();\n try {\n return (\n JSON.stringify(\n value,\n (_key, item: unknown) => {\n if (typeof item === 'bigint') return item.toString();\n if (item && typeof item === 'object') {\n if (seen.has(item)) return '[Repeated reference]';\n seen.add(item);\n }\n return item;\n },\n 2,\n ) ?? String(value)\n );\n } catch {\n return '[Value could not be displayed]';\n }\n};\n\nexport interface ToolCallProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n /** The tool's name, e.g. `get_load`. */\n name: string;\n status: ToolCallStatus;\n /** Arguments the agent passed; shown as formatted JSON. */\n args?: unknown;\n /** What the tool returned; shown as formatted JSON. */\n result?: unknown;\n /** Error message when the call failed. */\n error?: string;\n durationMs?: number;\n defaultOpen?: boolean;\n}\n\n/** A tool call an agent made: name, live status, and collapsible arguments and result. */\nfunction ToolCall({\n name,\n status,\n args,\n result,\n error,\n durationMs,\n defaultOpen = false,\n className,\n ...props\n}: ToolCallProps) {\n const hasDetail = args !== undefined || result !== undefined || Boolean(error);\n return (\n <CollapsiblePrimitive.Root defaultOpen={defaultOpen} disabled={!hasDetail}>\n <div\n data-slot=\"tool-call\"\n data-status={status}\n className={cn(\n 'animate-in overflow-hidden rounded-md border bg-surface text-[13px]',\n status === 'error' && 'border-destructive/30',\n className,\n )}\n {...props}\n >\n <CollapsiblePrimitive.Trigger className=\"group/tool flex h-9 w-full items-center gap-2 px-3 text-left outline-none hover:bg-muted/60 focus-visible:ring-[3px] focus-visible:ring-ring/20 disabled:cursor-default disabled:hover:bg-transparent\">\n <Wrench className=\"size-3.5 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"min-w-0 flex-1 truncate font-mono text-[12.5px]\">{name}</span>\n <span className=\"inline-flex items-center gap-1.5 text-xs text-muted-foreground\">\n <StatusDot status={statusDot[status]} pulse={status === 'running'} />\n {statusText[status]}\n {durationMs !== undefined && status !== 'running' && (\n <span className=\"tabular-nums\">· {(durationMs / 1000).toFixed(1)}s</span>\n )}\n </span>\n {hasDetail && (\n <ChevronRight\n aria-hidden\n className=\"size-3.5 text-muted-foreground transition-transform group-data-[state=open]/tool:rotate-90\"\n />\n )}\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.Content className=\"overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down\">\n <div className=\"grid gap-2 border-t p-3\">\n {args !== undefined && (\n <section className=\"grid gap-1\">\n <h4 className=\"text-[11px] font-semibold tracking-[0.06em] text-muted-foreground uppercase\">\n Arguments\n </h4>\n <pre className=\"overflow-x-auto rounded-sm bg-muted/60 p-2 font-mono text-[12px] leading-5\">\n {json(args)}\n </pre>\n </section>\n )}\n {error ? (\n <p role=\"alert\" className=\"text-xs font-medium text-destructive\">\n {error}\n </p>\n ) : (\n result !== undefined && (\n <section className=\"grid gap-1\">\n <h4 className=\"text-[11px] font-semibold tracking-[0.06em] text-muted-foreground uppercase\">\n Result\n </h4>\n <pre className=\"max-h-64 overflow-auto rounded-sm bg-muted/60 p-2 font-mono text-[12px] leading-5\">\n {json(result)}\n </pre>\n </section>\n )\n )}\n </div>\n </CollapsiblePrimitive.Content>\n </div>\n </CollapsiblePrimitive.Root>\n );\n}\n\nexport interface ToolApprovalProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n name: string;\n /** What will happen, in plain words, e.g. \"Approve L-1042 and send it to Gravitate\". */\n description: React.ReactNode;\n args?: unknown;\n /** `pending` shows the buttons; the others record the decision. */\n state?: 'pending' | 'approved' | 'denied';\n /** Disable decision controls while the application records the choice. */\n busy?: boolean;\n onApprove?: () => void;\n onDeny?: () => void;\n approveLabel?: string;\n denyLabel?: string;\n}\n\n/** A gate before an agent runs a tool with side effects: the person approves or denies it. */\nfunction ToolApproval({\n name,\n description,\n args,\n state = 'pending',\n busy = false,\n onApprove,\n onDeny,\n approveLabel = 'Approve',\n denyLabel = 'Deny',\n className,\n ...props\n}: ToolApprovalProps) {\n return (\n <div\n data-slot=\"tool-approval\"\n aria-busy={busy || undefined}\n data-state={state}\n className={cn(\n 'grid animate-in gap-3 rounded-md border p-3 text-[13px]',\n state === 'pending' ? 'border-warning/40 bg-warning/5' : 'bg-surface',\n className,\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <Wrench className=\"size-3.5 text-muted-foreground\" aria-hidden />\n <span className=\"font-mono text-[12.5px]\">{name}</span>\n <span className=\"ml-auto text-xs text-muted-foreground\">\n {state === 'pending'\n ? 'Needs your approval'\n : state === 'approved'\n ? 'Approved'\n : 'Denied'}\n </span>\n </div>\n <p className=\"text-sm\">{description}</p>\n {args !== undefined && (\n <pre className=\"overflow-x-auto rounded-sm bg-muted/60 p-2 font-mono text-[12px] leading-5\">\n {json(args)}\n </pre>\n )}\n {state === 'pending' && (\n <div className=\"flex justify-end gap-2\">\n <Button size=\"sm\" variant=\"outline\" onClick={onDeny} disabled={busy || !onDeny}>\n {denyLabel}\n </Button>\n <Button size=\"sm\" onClick={onApprove} disabled={busy || !onApprove}>\n {approveLabel}\n </Button>\n </div>\n )}\n </div>\n );\n}\n\nexport { ToolApproval, ToolCall };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-call.js","names":["CollapsiblePrimitive.Root","CollapsiblePrimitive.Trigger","CollapsiblePrimitive.Content"],"sources":["../../src/components/tool-call.tsx"],"sourcesContent":["import ChevronRight from '@burtson-labs/icons/react/chevron-right';\nimport Wrench from '@burtson-labs/icons/react/wrench';\nimport * as React from 'react';\n\nimport { cn, focusRingClasses } from '../lib/utils';\nimport * as CollapsiblePrimitive from '../primitives/vendor/radix/react-collapsible';\n\nimport { Button } from './button';\nimport { StatusDot } from './status';\n\nexport type ToolCallStatus = 'pending' | 'running' | 'success' | 'error';\n\nconst statusText: Record<ToolCallStatus, string> = {\n pending: 'Queued',\n running: 'Running',\n success: 'Done',\n error: 'Failed',\n};\nconst statusDot = {\n pending: 'neutral',\n running: 'brand',\n success: 'success',\n error: 'destructive',\n} as const;\n\nconst json = (value: unknown) => {\n if (typeof value === 'string') return value;\n const seen = new WeakSet<object>();\n try {\n return (\n JSON.stringify(\n value,\n (_key, item: unknown) => {\n if (typeof item === 'bigint') return item.toString();\n if (item && typeof item === 'object') {\n if (seen.has(item)) return '[Repeated reference]';\n seen.add(item);\n }\n return item;\n },\n 2,\n ) ?? String(value)\n );\n } catch {\n return '[Value could not be displayed]';\n }\n};\n\nexport interface ToolCallProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n /** The tool's name, e.g. `get_load`. */\n name: string;\n status: ToolCallStatus;\n /** Arguments the agent passed; shown as formatted JSON. */\n args?: unknown;\n /** What the tool returned; shown as formatted JSON. */\n result?: unknown;\n /** Error message when the call failed. */\n error?: string;\n durationMs?: number;\n defaultOpen?: boolean;\n}\n\n/** A tool call an agent made: name, live status, and collapsible arguments and result. */\nconst ToolCall = React.forwardRef<HTMLDivElement, ToolCallProps>(function ToolCall(\n { name, status, args, result, error, durationMs, defaultOpen = false, className, ...props },\n ref,\n) {\n const hasDetail = args !== undefined || result !== undefined || Boolean(error);\n return (\n <CollapsiblePrimitive.Root defaultOpen={defaultOpen} disabled={!hasDetail}>\n <div\n ref={ref}\n data-slot=\"tool-call\"\n data-status={status}\n className={cn(\n 'animate-in overflow-hidden rounded-md border bg-surface text-[13px]',\n status === 'error' && 'border-destructive/30',\n className,\n )}\n {...props}\n >\n <CollapsiblePrimitive.Trigger\n className={cn(\n 'group/tool flex h-9 w-full items-center gap-2 px-3 text-left hover:bg-muted/60 disabled:cursor-default disabled:hover:bg-transparent pointer-coarse:h-11',\n focusRingClasses,\n 'focus-visible:outline-offset-[-2px]',\n )}\n >\n <Wrench className=\"size-3.5 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"min-w-0 flex-1 truncate font-mono text-[12.5px]\">{name}</span>\n <span className=\"inline-flex items-center gap-1.5 text-xs text-muted-foreground\">\n <StatusDot status={statusDot[status]} pulse={status === 'running'} />\n {statusText[status]}\n {durationMs !== undefined && status !== 'running' && (\n <span className=\"tabular-nums\">· {(durationMs / 1000).toFixed(1)}s</span>\n )}\n </span>\n {hasDetail && (\n <ChevronRight\n aria-hidden\n className=\"size-3.5 text-muted-foreground transition-transform group-data-[state=open]/tool:rotate-90\"\n />\n )}\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.Content className=\"overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down\">\n <div className=\"grid gap-2 border-t p-3\">\n {args !== undefined && (\n <section className=\"grid gap-1\">\n <h4 className=\"text-[11px] font-semibold tracking-[0.06em] text-muted-foreground uppercase\">\n Arguments\n </h4>\n <pre className=\"overflow-x-auto rounded-sm bg-muted/60 p-2 font-mono text-[12px] leading-5\">\n {json(args)}\n </pre>\n </section>\n )}\n {error ? (\n <p role=\"alert\" className=\"text-xs font-medium text-destructive\">\n {error}\n </p>\n ) : (\n result !== undefined && (\n <section className=\"grid gap-1\">\n <h4 className=\"text-[11px] font-semibold tracking-[0.06em] text-muted-foreground uppercase\">\n Result\n </h4>\n <pre className=\"max-h-64 overflow-auto rounded-sm bg-muted/60 p-2 font-mono text-[12px] leading-5\">\n {json(result)}\n </pre>\n </section>\n )\n )}\n </div>\n </CollapsiblePrimitive.Content>\n </div>\n </CollapsiblePrimitive.Root>\n );\n});\n\nexport interface ToolApprovalProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n name: string;\n /** What will happen, in plain words, e.g. \"Approve L-1042 and send it to Gravitate\". */\n description: React.ReactNode;\n args?: unknown;\n /** `pending` shows the buttons; the others record the decision. */\n state?: 'pending' | 'approved' | 'denied';\n /** Disable decision controls while the application records the choice. */\n busy?: boolean;\n onApprove?: () => void;\n onDeny?: () => void;\n approveLabel?: string;\n denyLabel?: string;\n}\n\n/** A gate before an agent runs a tool with side effects: the person approves or denies it. */\nconst ToolApproval = React.forwardRef<HTMLDivElement, ToolApprovalProps>(function ToolApproval(\n {\n name,\n description,\n args,\n state = 'pending',\n busy = false,\n onApprove,\n onDeny,\n approveLabel = 'Approve',\n denyLabel = 'Deny',\n className,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"tool-approval\"\n aria-busy={busy || undefined}\n data-state={state}\n className={cn(\n 'grid animate-in gap-3 rounded-md border p-3 text-[13px]',\n state === 'pending' ? 'border-warning/40 bg-warning/5' : 'bg-surface',\n className,\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <Wrench className=\"size-3.5 text-muted-foreground\" aria-hidden />\n <span className=\"font-mono text-[12.5px]\">{name}</span>\n <span className=\"ml-auto text-xs text-muted-foreground\">\n {state === 'pending'\n ? 'Needs your approval'\n : state === 'approved'\n ? 'Approved'\n : 'Denied'}\n </span>\n </div>\n <p className=\"text-sm\">{description}</p>\n {args !== undefined && (\n <pre className=\"overflow-x-auto rounded-sm bg-muted/60 p-2 font-mono text-[12px] leading-5\">\n {json(args)}\n </pre>\n )}\n {state === 'pending' && (\n <div className=\"flex justify-end gap-2\">\n <Button size=\"sm\" variant=\"outline\" onClick={onDeny} disabled={busy || !onDeny}>\n {denyLabel}\n </Button>\n <Button size=\"sm\" onClick={onApprove} disabled={busy || !onApprove}>\n {approveLabel}\n </Button>\n </div>\n )}\n </div>\n );\n});\n\nexport { ToolApproval, ToolCall };\n"],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export interface ToolbarProps extends React.ComponentProps<'div'> {
|
|
3
|
+
/** Names the group for screen readers ("List tools"). */
|
|
4
|
+
'aria-label'?: string;
|
|
5
|
+
}
|
|
6
|
+
/** A labelled group of controls; Tab moves between them as in any form. */
|
|
7
|
+
declare const Toolbar: React.ForwardRefExoticComponent<Omit<ToolbarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const ToolbarGroup: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const ToolbarSeparator: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const ToolbarSpacer: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
6
11
|
export { Toolbar, ToolbarGroup, ToolbarSeparator, ToolbarSpacer };
|
|
@@ -1,38 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { cn } from "../lib/utils.js";
|
|
2
|
-
import "react";
|
|
3
|
+
import * as React from "react";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/components/toolbar.tsx
|
|
5
|
-
|
|
6
|
+
/** A labelled group of controls; Tab moves between them as in any form. */
|
|
7
|
+
var Toolbar = React.forwardRef(function Toolbar({ className, ...props }, ref) {
|
|
6
8
|
return /* @__PURE__ */ jsx("div", {
|
|
9
|
+
ref,
|
|
7
10
|
"data-slot": "toolbar",
|
|
8
11
|
role: "group",
|
|
9
12
|
className: cn("flex min-h-10 flex-wrap items-center gap-1 rounded-lg border border-border bg-surface p-1.5 shadow-xs", className),
|
|
10
13
|
...props
|
|
11
14
|
});
|
|
12
|
-
}
|
|
13
|
-
function ToolbarGroup({ className, ...props }) {
|
|
15
|
+
});
|
|
16
|
+
var ToolbarGroup = React.forwardRef(function ToolbarGroup({ className, ...props }, ref) {
|
|
14
17
|
return /* @__PURE__ */ jsx("div", {
|
|
18
|
+
ref,
|
|
15
19
|
"data-slot": "toolbar-group",
|
|
16
20
|
className: cn("flex items-center gap-1", className),
|
|
17
21
|
...props
|
|
18
22
|
});
|
|
19
|
-
}
|
|
20
|
-
function ToolbarSeparator({ className, ...props }) {
|
|
23
|
+
});
|
|
24
|
+
var ToolbarSeparator = React.forwardRef(function ToolbarSeparator({ className, ...props }, ref) {
|
|
21
25
|
return /* @__PURE__ */ jsx("div", {
|
|
26
|
+
ref,
|
|
22
27
|
"data-slot": "toolbar-separator",
|
|
23
28
|
"aria-hidden": "true",
|
|
24
29
|
className: cn("mx-1 h-5 w-px bg-border", className),
|
|
25
30
|
...props
|
|
26
31
|
});
|
|
27
|
-
}
|
|
28
|
-
function ToolbarSpacer({ className, ...props }) {
|
|
32
|
+
});
|
|
33
|
+
var ToolbarSpacer = React.forwardRef(function ToolbarSpacer({ className, ...props }, ref) {
|
|
29
34
|
return /* @__PURE__ */ jsx("div", {
|
|
35
|
+
ref,
|
|
30
36
|
"data-slot": "toolbar-spacer",
|
|
31
37
|
"aria-hidden": "true",
|
|
32
38
|
className: cn("min-w-2 flex-1", className),
|
|
33
39
|
...props
|
|
34
40
|
});
|
|
35
|
-
}
|
|
41
|
+
});
|
|
36
42
|
//#endregion
|
|
37
43
|
export { Toolbar, ToolbarGroup, ToolbarSeparator, ToolbarSpacer };
|
|
38
44
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.js","names":[],"sources":["../../src/components/toolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\
|
|
1
|
+
{"version":3,"file":"toolbar.js","names":[],"sources":["../../src/components/toolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nexport interface ToolbarProps extends React.ComponentProps<'div'> {\n /** Names the group for screen readers (\"List tools\"). */\n 'aria-label'?: string;\n}\n\n/** A labelled group of controls; Tab moves between them as in any form. */\nconst Toolbar = React.forwardRef<HTMLDivElement, ToolbarProps>(function Toolbar(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"toolbar\"\n role=\"group\"\n className={cn(\n 'flex min-h-10 flex-wrap items-center gap-1 rounded-lg border border-border bg-surface p-1.5 shadow-xs',\n className,\n )}\n {...props}\n />\n );\n});\n\nconst ToolbarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function ToolbarGroup({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"toolbar-group\"\n className={cn('flex items-center gap-1', className)}\n {...props}\n />\n );\n },\n);\n\nconst ToolbarSeparator = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function ToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"toolbar-separator\"\n aria-hidden=\"true\"\n className={cn('mx-1 h-5 w-px bg-border', className)}\n {...props}\n />\n );\n },\n);\n\nconst ToolbarSpacer = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function ToolbarSpacer({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"toolbar-spacer\"\n aria-hidden=\"true\"\n className={cn('min-w-2 flex-1', className)}\n {...props}\n />\n );\n },\n);\n\nexport { Toolbar, ToolbarGroup, ToolbarSeparator, ToolbarSpacer };\n"],"mappings":";;;;;;AAUA,IAAM,UAAU,MAAM,WAAyC,SAAS,QACtE,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,MAAK;EACL,WAAW,GACT,yGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL,CAAC;AAED,IAAM,eAAe,MAAM,WACzB,SAAS,aAAa,EAAE,WAAW,GAAG,SAAS,KAAK;CAClD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL,CACF;AAEA,IAAM,mBAAmB,MAAM,WAC7B,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAS,KAAK;CACtD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,eAAY;EACZ,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL,CACF;AAEA,IAAM,gBAAgB,MAAM,WAC1B,SAAS,cAAc,EAAE,WAAW,GAAG,SAAS,KAAK;CACnD,OACE,oBAAC,OAAD;EACO;EACL,aAAU;EACV,eAAY;EACZ,WAAW,GAAG,kBAAkB,SAAS;EACzC,GAAI;CACL,CAAA;AAEL,CACF"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Tooltip as TooltipPrimitive } from 'radix-ui';
|
|
2
1
|
import * as React from 'react';
|
|
2
|
+
import * as TooltipPrimitive from '../primitives/vendor/radix/react-tooltip';
|
|
3
3
|
declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
|
|
4
4
|
/** Wraps its own provider, so a lone tooltip works without app-level setup. */
|
|
5
5
|
declare function Tooltip(props: React.ComponentProps<typeof TooltipPrimitive.Root>): React.JSX.Element;
|
|
6
|
-
declare
|
|
7
|
-
|
|
6
|
+
declare const TooltipTrigger: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
/** A dark label on any theme, 8px radius, elevation 3. */
|
|
8
|
+
declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
9
|
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { cn } from "../lib/utils.js";
|
|
2
|
-
import {
|
|
3
|
+
import { Arrow, Content, Portal, Provider, Root, Trigger } from "../primitives/vendor/radix/react-tooltip/tooltip.js";
|
|
3
4
|
import * as React from "react";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
//#region src/components/tooltip.tsx
|
|
@@ -7,7 +8,7 @@ var HasTooltipProvider = React.createContext(false);
|
|
|
7
8
|
function TooltipProvider({ delayDuration = 200, ...props }) {
|
|
8
9
|
return /* @__PURE__ */ jsx(HasTooltipProvider.Provider, {
|
|
9
10
|
value: true,
|
|
10
|
-
children: /* @__PURE__ */ jsx(
|
|
11
|
+
children: /* @__PURE__ */ jsx(Provider, {
|
|
11
12
|
"data-slot": "tooltip-provider",
|
|
12
13
|
delayDuration,
|
|
13
14
|
...props
|
|
@@ -15,32 +16,35 @@ function TooltipProvider({ delayDuration = 200, ...props }) {
|
|
|
15
16
|
});
|
|
16
17
|
}
|
|
17
18
|
/** Wraps its own provider, so a lone tooltip works without app-level setup. */
|
|
18
|
-
function Tooltip
|
|
19
|
-
if (React.useContext(HasTooltipProvider)) return /* @__PURE__ */ jsx(
|
|
19
|
+
function Tooltip(props) {
|
|
20
|
+
if (React.useContext(HasTooltipProvider)) return /* @__PURE__ */ jsx(Root, {
|
|
20
21
|
"data-slot": "tooltip",
|
|
21
22
|
...props
|
|
22
23
|
});
|
|
23
|
-
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(
|
|
24
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Root, {
|
|
24
25
|
"data-slot": "tooltip",
|
|
25
26
|
...props
|
|
26
27
|
}) });
|
|
27
28
|
}
|
|
28
|
-
function TooltipTrigger(props) {
|
|
29
|
-
return /* @__PURE__ */ jsx(
|
|
29
|
+
var TooltipTrigger = React.forwardRef(function TooltipTrigger(props, ref) {
|
|
30
|
+
return /* @__PURE__ */ jsx(Trigger, {
|
|
31
|
+
ref,
|
|
30
32
|
"data-slot": "tooltip-trigger",
|
|
31
33
|
...props
|
|
32
34
|
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
});
|
|
36
|
+
/** A dark label on any theme, 8px radius, elevation 3. */
|
|
37
|
+
var TooltipContent = React.forwardRef(function TooltipContent({ className, sideOffset = 6, children, ...props }, ref) {
|
|
38
|
+
return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(Content, {
|
|
39
|
+
ref,
|
|
36
40
|
"data-slot": "tooltip-content",
|
|
37
41
|
sideOffset,
|
|
38
42
|
className: cn("z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) animate-in [--bl-scale:0.98] data-[side=bottom]:[--bl-ty:-4px] data-[side=top]:[--bl-ty:4px] data-[side=left]:[--bl-tx:4px] data-[side=right]:[--bl-tx:-4px] rounded-sm border border-white/10 bg-code px-2 py-1 text-[11.5px] leading-4 font-medium text-balance text-code-foreground shadow-md data-[state=closed]:animate-out", className),
|
|
39
43
|
...props,
|
|
40
|
-
children: [children, /* @__PURE__ */ jsx(
|
|
44
|
+
children: [children, /* @__PURE__ */ jsx(Arrow, { className: "fill-code" })]
|
|
41
45
|
}) });
|
|
42
|
-
}
|
|
46
|
+
});
|
|
43
47
|
//#endregion
|
|
44
|
-
export { Tooltip
|
|
48
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
45
49
|
|
|
46
50
|
//# sourceMappingURL=tooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","names":["TooltipPrimitive","
|
|
1
|
+
{"version":3,"file":"tooltip.js","names":["TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Portal","TooltipPrimitive.Content","TooltipPrimitive.Arrow"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport * as TooltipPrimitive from '../primitives/vendor/radix/react-tooltip';\n\nconst HasTooltipProvider = React.createContext(false);\n\nfunction TooltipProvider({\n delayDuration = 200,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <HasTooltipProvider.Provider value={true}>\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n </HasTooltipProvider.Provider>\n );\n}\n\n/** Wraps its own provider, so a lone tooltip works without app-level setup. */\nfunction Tooltip(props: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n const hasProvider = React.useContext(HasTooltipProvider);\n if (hasProvider) return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nconst TooltipTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof TooltipPrimitive.Trigger>\n>(function TooltipTrigger(props, ref) {\n return <TooltipPrimitive.Trigger ref={ref} data-slot=\"tooltip-trigger\" {...props} />;\n});\n\n/** A dark label on any theme, 8px radius, elevation 3. */\nconst TooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof TooltipPrimitive.Content>\n>(function TooltipContent({ className, sideOffset = 6, children, ...props }, ref) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) animate-in [--bl-scale:0.98] data-[side=bottom]:[--bl-ty:-4px] data-[side=top]:[--bl-ty:4px] data-[side=left]:[--bl-tx:4px] data-[side=right]:[--bl-tx:-4px] rounded-sm border border-white/10 bg-code px-2 py-1 text-[11.5px] leading-4 font-medium text-balance text-code-foreground shadow-md data-[state=closed]:animate-out',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"fill-code\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n});\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n"],"mappings":";;;;;;AAKA,IAAM,qBAAqB,MAAM,cAAc,KAAK;AAEpD,SAAS,gBAAgB,EACvB,gBAAgB,KAChB,GAAG,SACsD;CACzD,OACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO;EAClC,UAAA,oBAACA,UAAD;GACE,aAAU;GACK;GACf,GAAI;EACL,CAAA;CAC0B,CAAA;AAEjC;;AAGA,SAAS,QAAQ,OAA2D;CAE1E,IADoB,MAAM,WAAW,kBACjC,GAAa,OAAO,oBAACC,MAAD;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA;CAC/E,OACE,oBAAC,iBAAD,EAAA,UACE,oBAACA,MAAD;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA,EACxC,CAAA;AAErB;AAEA,IAAM,iBAAiB,MAAM,WAG3B,SAAS,eAAe,OAAO,KAAK;CACpC,OAAO,oBAACC,SAAD;EAA+B;EAAK,aAAU;EAAkB,GAAI;CAAQ,CAAA;AACrF,CAAC;;AAGD,IAAM,iBAAiB,MAAM,WAG3B,SAAS,eAAe,EAAE,WAAW,aAAa,GAAG,UAAU,GAAG,SAAS,KAAK;CAChF,OACE,oBAACC,QAAD,EAAA,UACE,qBAACC,SAAD;EACO;EACL,aAAU;EACE;EACZ,WAAW,GACT,0YACA,SACF;EACA,GAAI;EARN,UAAA,CAUG,UACD,oBAACC,OAAD,EAAwB,WAAU,YAAa,CAAA,CACvB;CACH,CAAA,EAAA,CAAA;AAE7B,CAAC"}
|