@fastsprout/reacd-shadcn 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +28 -2
- package/THIRD_PARTY_NOTICES.md +21 -0
- package/dist/accordion/accordion.adapter.d.ts +2 -0
- package/dist/accordion/accordion.adapter.js +10 -0
- package/dist/action-menu/menu-content.d.ts +5 -0
- package/dist/action-menu/menu-content.js +15 -0
- package/dist/action-menu/menu-items.d.ts +5 -0
- package/dist/action-menu/menu-items.js +46 -0
- package/dist/action-menu/menu-surface.d.ts +7 -0
- package/dist/action-menu/menu-surface.js +15 -0
- package/dist/action-menu/use-menu-frame.d.ts +8 -0
- package/dist/action-menu/use-menu-frame.js +24 -0
- package/dist/alert/alert.adapter.d.ts +2 -0
- package/dist/alert/alert.adapter.js +13 -0
- package/dist/app/app.adapter.d.ts +2 -0
- package/dist/app/app.adapter.js +7 -0
- package/dist/auth-form/auth-form.adapter.d.ts +2 -0
- package/dist/auth-form/auth-form.adapter.js +21 -0
- package/dist/avatar/avatar.adapter.d.ts +2 -0
- package/dist/avatar/avatar.adapter.js +8 -0
- package/dist/avatar-group/avatar-group.adapter.d.ts +2 -0
- package/dist/avatar-group/avatar-group.adapter.js +9 -0
- package/dist/avatar-group/overflow.adapter.d.ts +5 -0
- package/dist/avatar-group/overflow.adapter.js +5 -0
- package/dist/badge/badge.adapter.d.ts +2 -0
- package/dist/badge/badge.adapter.js +9 -0
- package/dist/banner/banner.adapter.d.ts +2 -0
- package/dist/banner/banner.adapter.js +12 -0
- package/dist/blog-post/blog-post.adapter.d.ts +3 -0
- package/dist/blog-post/blog-post.adapter.js +5 -0
- package/dist/blog-posts/blog-posts.adapter.d.ts +3 -0
- package/dist/blog-posts/blog-posts.adapter.js +7 -0
- package/dist/breadcrumb/breadcrumb.adapter.d.ts +2 -0
- package/dist/breadcrumb/breadcrumb.adapter.js +13 -0
- package/dist/button/button.adapter.d.ts +2 -0
- package/dist/button/button.adapter.js +8 -0
- package/dist/calendar/calendar-date.d.ts +7 -0
- package/dist/calendar/calendar-date.js +24 -0
- package/dist/calendar/calendar-day-button.d.ts +2 -0
- package/dist/calendar/calendar-day-button.js +9 -0
- package/dist/calendar/calendar-form-bridge.d.ts +6 -0
- package/dist/calendar/calendar-form-bridge.js +11 -0
- package/dist/calendar/calendar-localization.d.ts +15 -0
- package/dist/calendar/calendar-localization.js +28 -0
- package/dist/calendar/calendar.adapter.d.ts +2 -0
- package/dist/calendar/calendar.adapter.js +47 -0
- package/dist/card/card.adapter.d.ts +2 -0
- package/dist/card/card.adapter.js +13 -0
- package/dist/carousel/carousel-panel.d.ts +7 -0
- package/dist/carousel/carousel-panel.js +8 -0
- package/dist/carousel/carousel.adapter.d.ts +2 -0
- package/dist/carousel/carousel.adapter.js +43 -0
- package/dist/carousel/focus-boundary.d.ts +16 -0
- package/dist/carousel/focus-boundary.js +19 -0
- package/dist/changelog-version/changelog-version.adapter.d.ts +3 -0
- package/dist/changelog-version/changelog-version.adapter.js +5 -0
- package/dist/changelog-versions/changelog-versions.adapter.d.ts +3 -0
- package/dist/changelog-versions/changelog-versions.adapter.js +8 -0
- package/dist/chart/cartesian.d.ts +5 -0
- package/dist/chart/cartesian.js +15 -0
- package/dist/chart/chart-graphic.d.ts +2 -0
- package/dist/chart/chart-graphic.js +14 -0
- package/dist/chart/chart-table.d.ts +2 -0
- package/dist/chart/chart-table.js +6 -0
- package/dist/chart/chart.adapter.d.ts +2 -0
- package/dist/chart/chart.adapter.js +17 -0
- package/dist/chart/legend.d.ts +3 -0
- package/dist/chart/legend.js +14 -0
- package/dist/chart/patterns.d.ts +9 -0
- package/dist/chart/patterns.js +8 -0
- package/dist/chat-attachment/chat-attachment.adapter.d.ts +2 -0
- package/dist/chat-attachment/chat-attachment.adapter.js +12 -0
- package/dist/chat-disclosure/chat-disclosure.d.ts +9 -0
- package/dist/chat-disclosure/chat-disclosure.js +10 -0
- package/dist/chat-message/chat-message.adapter.d.ts +2 -0
- package/dist/chat-message/chat-message.adapter.js +12 -0
- package/dist/chat-messages/chat-messages.adapter.d.ts +2 -0
- package/dist/chat-messages/chat-messages.adapter.js +13 -0
- package/dist/chat-messages/use-follow-latest.d.ts +6 -0
- package/dist/chat-messages/use-follow-latest.js +33 -0
- package/dist/chat-palette/chat-palette.adapter.d.ts +2 -0
- package/dist/chat-palette/chat-palette.adapter.js +4 -0
- package/dist/chat-prompt/chat-prompt.adapter.d.ts +2 -0
- package/dist/chat-prompt/chat-prompt.adapter.js +30 -0
- package/dist/chat-prompt/use-prompt-controls.d.ts +22 -0
- package/dist/chat-prompt/use-prompt-controls.js +69 -0
- package/dist/chat-prompt/use-prompt-escape.d.ts +5 -0
- package/dist/chat-prompt/use-prompt-escape.js +39 -0
- package/dist/chat-prompt-submit/chat-prompt-submit.adapter.d.ts +2 -0
- package/dist/chat-prompt-submit/chat-prompt-submit.adapter.js +14 -0
- package/dist/chat-prompt-submit/prompt-action.d.ts +12 -0
- package/dist/chat-prompt-submit/prompt-action.js +45 -0
- package/dist/chat-reasoning/chat-reasoning.adapter.d.ts +2 -0
- package/dist/chat-reasoning/chat-reasoning.adapter.js +15 -0
- package/dist/chat-reasoning/use-reasoning-disclosure.d.ts +10 -0
- package/dist/chat-reasoning/use-reasoning-disclosure.js +23 -0
- package/dist/chat-shimmer/chat-shimmer.adapter.d.ts +2 -0
- package/dist/chat-shimmer/chat-shimmer.adapter.js +5 -0
- package/dist/chat-tool/chat-tool.adapter.d.ts +2 -0
- package/dist/chat-tool/chat-tool.adapter.js +7 -0
- package/dist/checkbox/checkbox.adapter.d.ts +2 -0
- package/dist/checkbox/checkbox.adapter.js +27 -0
- package/dist/checkbox-group/checkbox-group.adapter.d.ts +2 -0
- package/dist/checkbox-group/checkbox-group.adapter.js +18 -0
- package/dist/chip/chip.adapter.d.ts +2 -0
- package/dist/chip/chip.adapter.js +12 -0
- package/dist/code-editor/code-editor.adapter.d.ts +2 -0
- package/dist/code-editor/code-editor.adapter.js +9 -0
- package/dist/collapsible/collapsible.adapter.d.ts +2 -0
- package/dist/collapsible/collapsible.adapter.js +11 -0
- package/dist/color-mode-avatar/color-mode-avatar.adapter.d.ts +2 -0
- package/dist/color-mode-avatar/color-mode-avatar.adapter.js +6 -0
- package/dist/color-mode-button/color-mode-button.adapter.d.ts +2 -0
- package/dist/color-mode-button/color-mode-button.adapter.js +11 -0
- package/dist/color-mode-image/color-mode-image.adapter.d.ts +2 -0
- package/dist/color-mode-image/color-mode-image.adapter.js +6 -0
- package/dist/color-mode-image/mode-image.d.ts +4 -0
- package/dist/color-mode-image/mode-image.js +8 -0
- package/dist/color-mode-select/color-mode-select.adapter.d.ts +2 -0
- package/dist/color-mode-select/color-mode-select.adapter.js +16 -0
- package/dist/color-mode-switch/color-mode-switch.adapter.d.ts +2 -0
- package/dist/color-mode-switch/color-mode-switch.adapter.js +5 -0
- package/dist/color-picker/color-hex.d.ts +11 -0
- package/dist/color-picker/color-hex.js +57 -0
- package/dist/color-picker/color-picker.adapter.d.ts +2 -0
- package/dist/color-picker/color-picker.adapter.js +20 -0
- package/dist/color-picker/use-color-model.d.ts +6 -0
- package/dist/color-picker/use-color-model.js +18 -0
- package/dist/command-palette/command-palette.adapter.d.ts +2 -0
- package/dist/command-palette/command-palette.adapter.js +44 -0
- package/dist/container/container.adapter.d.ts +2 -0
- package/dist/container/container.adapter.js +4 -0
- package/dist/content-navigation/content-navigation.adapter.d.ts +2 -0
- package/dist/content-navigation/content-navigation.adapter.js +10 -0
- package/dist/content-search/content-search.adapter.d.ts +2 -0
- package/dist/content-search/content-search.adapter.js +27 -0
- package/dist/content-search-button/content-search-button.adapter.d.ts +2 -0
- package/dist/content-search-button/content-search-button.adapter.js +6 -0
- package/dist/content-surround/content-surround.adapter.d.ts +2 -0
- package/dist/content-surround/content-surround.adapter.js +14 -0
- package/dist/content-toc/content-toc.adapter.d.ts +2 -0
- package/dist/content-toc/content-toc.adapter.js +10 -0
- package/dist/context-menu/context-menu.adapter.d.ts +2 -0
- package/dist/context-menu/context-menu.adapter.js +13 -0
- package/dist/context-menu/keyboard-trigger.d.ts +2 -0
- package/dist/context-menu/keyboard-trigger.js +13 -0
- package/dist/dashboard-group/dashboard-group.adapter.d.ts +3 -0
- package/dist/dashboard-group/dashboard-group.adapter.js +54 -0
- package/dist/dashboard-navbar/dashboard-navbar.adapter.d.ts +2 -0
- package/dist/dashboard-navbar/dashboard-navbar.adapter.js +12 -0
- package/dist/dashboard-panel/dashboard-panel.adapter.d.ts +2 -0
- package/dist/dashboard-panel/dashboard-panel.adapter.js +18 -0
- package/dist/dashboard-resize-handle/dashboard-resize-handle.adapter.d.ts +2 -0
- package/dist/dashboard-resize-handle/dashboard-resize-handle.adapter.js +46 -0
- package/dist/dashboard-search/dashboard-search.adapter.d.ts +2 -0
- package/dist/dashboard-search/dashboard-search.adapter.js +24 -0
- package/dist/dashboard-search-button/dashboard-search-button.adapter.d.ts +2 -0
- package/dist/dashboard-search-button/dashboard-search-button.adapter.js +6 -0
- package/dist/dashboard-sidebar/dashboard-sidebar.adapter.d.ts +2 -0
- package/dist/dashboard-sidebar/dashboard-sidebar.adapter.js +19 -0
- package/dist/dashboard-sidebar-collapse/dashboard-sidebar-collapse.adapter.d.ts +2 -0
- package/dist/dashboard-sidebar-collapse/dashboard-sidebar-collapse.adapter.js +22 -0
- package/dist/dashboard-sidebar-toggle/dashboard-sidebar-toggle.adapter.d.ts +2 -0
- package/dist/dashboard-sidebar-toggle/dashboard-sidebar-toggle.adapter.js +22 -0
- package/dist/dashboard-toolbar/dashboard-toolbar.adapter.d.ts +2 -0
- package/dist/dashboard-toolbar/dashboard-toolbar.adapter.js +4 -0
- package/dist/data-table/data-table.adapter.d.ts +2 -0
- package/dist/data-table/data-table.adapter.js +28 -0
- package/dist/data-table/filters.adapter.d.ts +8 -0
- package/dist/data-table/filters.adapter.js +40 -0
- package/dist/data-table/pagination.adapter.d.ts +2 -0
- package/dist/data-table/pagination.adapter.js +21 -0
- package/dist/divider/divider.adapter.d.ts +1 -0
- package/dist/divider/divider.adapter.js +5 -0
- package/dist/drawer/drawer.adapter.d.ts +2 -0
- package/dist/drawer/drawer.adapter.js +14 -0
- package/dist/dropdown-menu/dropdown-menu.adapter.d.ts +2 -0
- package/dist/dropdown-menu/dropdown-menu.adapter.js +14 -0
- package/dist/editor/drag-session.d.ts +7 -0
- package/dist/editor/drag-session.js +41 -0
- package/dist/editor/editor.adapter.d.ts +2 -0
- package/dist/editor/editor.adapter.js +21 -0
- package/dist/editor/publish-edit.d.ts +3 -0
- package/dist/editor/publish-edit.js +12 -0
- package/dist/editor/use-editor-port.d.ts +5 -0
- package/dist/editor/use-editor-port.js +40 -0
- package/dist/editor/use-editor-session.d.ts +14 -0
- package/dist/editor/use-editor-session.js +198 -0
- package/dist/editor-conversion/attribute.d.ts +3 -0
- package/dist/editor-conversion/attribute.js +3 -0
- package/dist/editor-conversion/budget.d.ts +2 -0
- package/dist/editor-conversion/budget.js +61 -0
- package/dist/editor-conversion/from-sdk-block.d.ts +5 -0
- package/dist/editor-conversion/from-sdk-block.js +73 -0
- package/dist/editor-conversion/from-sdk-inline.d.ts +3 -0
- package/dist/editor-conversion/from-sdk-inline.js +57 -0
- package/dist/editor-conversion/from-sdk.d.ts +4 -0
- package/dist/editor-conversion/from-sdk.js +35 -0
- package/dist/editor-conversion/id-allocator.d.ts +2 -0
- package/dist/editor-conversion/id-allocator.js +29 -0
- package/dist/editor-conversion/projection-weight.d.ts +8 -0
- package/dist/editor-conversion/projection-weight.js +124 -0
- package/dist/editor-conversion/text-chunks.d.ts +6 -0
- package/dist/editor-conversion/text-chunks.js +18 -0
- package/dist/editor-conversion/to-sdk.d.ts +3 -0
- package/dist/editor-conversion/to-sdk.js +58 -0
- package/dist/editor-drag-handle/editor-drag-handle.adapter.d.ts +2 -0
- package/dist/editor-drag-handle/editor-drag-handle.adapter.js +54 -0
- package/dist/editor-drag-handle/use-drag-session.d.ts +9 -0
- package/dist/editor-drag-handle/use-drag-session.js +22 -0
- package/dist/editor-emoji-menu/editor-emoji-menu.adapter.d.ts +2 -0
- package/dist/editor-emoji-menu/editor-emoji-menu.adapter.js +9 -0
- package/dist/editor-mention-menu/editor-mention-menu.adapter.d.ts +2 -0
- package/dist/editor-mention-menu/editor-mention-menu.adapter.js +17 -0
- package/dist/editor-menu/lookup-controller.d.ts +24 -0
- package/dist/editor-menu/lookup-controller.js +83 -0
- package/dist/editor-menu/menu-panel.d.ts +10 -0
- package/dist/editor-menu/menu-panel.js +17 -0
- package/dist/editor-menu/menu-plugin.d.ts +3 -0
- package/dist/editor-menu/menu-plugin.js +190 -0
- package/dist/editor-menu/menu-port.d.ts +3 -0
- package/dist/editor-menu/menu-port.js +27 -0
- package/dist/editor-menu/menu-store.d.ts +20 -0
- package/dist/editor-menu/menu-store.js +92 -0
- package/dist/editor-menu/use-editor-menu.d.ts +9 -0
- package/dist/editor-menu/use-editor-menu.js +21 -0
- package/dist/editor-sdk/apply-paste.d.ts +3 -0
- package/dist/editor-sdk/apply-paste.js +12 -0
- package/dist/editor-sdk/atom-data.d.ts +7 -0
- package/dist/editor-sdk/atom-data.js +41 -0
- package/dist/editor-sdk/atoms.d.ts +3 -0
- package/dist/editor-sdk/atoms.js +25 -0
- package/dist/editor-sdk/block-types.d.ts +1 -0
- package/dist/editor-sdk/block-types.js +10 -0
- package/dist/editor-sdk/command-chain.d.ts +3 -0
- package/dist/editor-sdk/command-chain.js +25 -0
- package/dist/editor-sdk/commands.d.ts +5 -0
- package/dist/editor-sdk/commands.js +38 -0
- package/dist/editor-sdk/controlled-selection.d.ts +2 -0
- package/dist/editor-sdk/controlled-selection.js +8 -0
- package/dist/editor-sdk/extensions.d.ts +2 -0
- package/dist/editor-sdk/extensions.js +21 -0
- package/dist/editor-sdk/identity-plugin.d.ts +18 -0
- package/dist/editor-sdk/identity-plugin.js +107 -0
- package/dist/editor-sdk/identity.d.ts +3 -0
- package/dist/editor-sdk/identity.js +28 -0
- package/dist/editor-sdk/plain-paste.d.ts +3 -0
- package/dist/editor-sdk/plain-paste.js +66 -0
- package/dist/editor-sdk/resources.d.ts +5 -0
- package/dist/editor-sdk/resources.js +14 -0
- package/dist/editor-sdk/select-block.d.ts +2 -0
- package/dist/editor-sdk/select-block.js +31 -0
- package/dist/editor-sdk/selection-mapping.d.ts +9 -0
- package/dist/editor-sdk/selection-mapping.js +92 -0
- package/dist/editor-sdk/structural-selection.d.ts +4 -0
- package/dist/editor-sdk/structural-selection.js +21 -0
- package/dist/editor-suggestion-menu/editor-suggestion-menu.adapter.d.ts +2 -0
- package/dist/editor-suggestion-menu/editor-suggestion-menu.adapter.js +13 -0
- package/dist/editor-toolbar/editor-toolbar.adapter.d.ts +2 -0
- package/dist/editor-toolbar/editor-toolbar.adapter.js +38 -0
- package/dist/element/variants.d.ts +5 -0
- package/dist/element/variants.js +5 -0
- package/dist/empty/empty.adapter.d.ts +2 -0
- package/dist/empty/empty.adapter.js +10 -0
- package/dist/error/error.adapter.d.ts +2 -0
- package/dist/error/error.adapter.js +9 -0
- package/dist/field-group/field-group.adapter.d.ts +2 -0
- package/dist/field-group/field-group.adapter.js +5 -0
- package/dist/file-upload/file-upload.adapter.d.ts +2 -0
- package/dist/file-upload/file-upload.adapter.js +60 -0
- package/dist/file-upload/intake-validation.d.ts +8 -0
- package/dist/file-upload/intake-validation.js +48 -0
- package/dist/file-upload/intake.d.ts +36 -0
- package/dist/file-upload/intake.js +112 -0
- package/dist/file-upload/read-file.d.ts +5 -0
- package/dist/file-upload/read-file.js +32 -0
- package/dist/footer/footer.adapter.d.ts +2 -0
- package/dist/footer/footer.adapter.js +4 -0
- package/dist/footer-columns/footer-columns.adapter.d.ts +2 -0
- package/dist/footer-columns/footer-columns.adapter.js +8 -0
- package/dist/form-field/focus-control.d.ts +1 -0
- package/dist/form-field/focus-control.js +21 -0
- package/dist/form-field/form-field.adapter.d.ts +2 -0
- package/dist/form-field/form-field.adapter.js +22 -0
- package/dist/form-menu-shared/request.d.ts +4 -0
- package/dist/form-menu-shared/request.js +14 -0
- package/dist/grid/grid.adapter.d.ts +2 -0
- package/dist/grid/grid.adapter.js +5 -0
- package/dist/h-stack/h-stack.adapter.d.ts +2 -0
- package/dist/h-stack/h-stack.adapter.js +5 -0
- package/dist/header/header-menu.d.ts +7 -0
- package/dist/header/header-menu.js +25 -0
- package/dist/header/header.adapter.d.ts +2 -0
- package/dist/header/header.adapter.js +5 -0
- package/dist/icon/icon-map.d.ts +16 -0
- package/dist/icon/icon-map.js +17 -0
- package/dist/icon/icon.adapter.d.ts +2 -0
- package/dist/icon/icon.adapter.js +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/input/input.adapter.d.ts +2 -0
- package/dist/input/input.adapter.js +34 -0
- package/dist/input/validation-message.d.ts +1 -0
- package/dist/input/validation-message.js +13 -0
- package/dist/input-date/date-control.d.ts +16 -0
- package/dist/input-date/date-control.js +35 -0
- package/dist/input-date/input-date.adapter.d.ts +2 -0
- package/dist/input-date/input-date.adapter.js +36 -0
- package/dist/input-menu/input-menu-form.d.ts +7 -0
- package/dist/input-menu/input-menu-form.js +8 -0
- package/dist/input-menu/input-menu-popup.d.ts +8 -0
- package/dist/input-menu/input-menu-popup.js +13 -0
- package/dist/input-menu/input-menu.adapter.d.ts +2 -0
- package/dist/input-menu/input-menu.adapter.js +74 -0
- package/dist/input-menu/use-input-menu.d.ts +26 -0
- package/dist/input-menu/use-input-menu.js +92 -0
- package/dist/input-number/input-number.adapter.d.ts +2 -0
- package/dist/input-number/input-number.adapter.js +13 -0
- package/dist/input-rating/input-rating.adapter.d.ts +2 -0
- package/dist/input-rating/input-rating.adapter.js +33 -0
- package/dist/input-rating/rating-stars.d.ts +4 -0
- package/dist/input-rating/rating-stars.js +9 -0
- package/dist/input-tags/input-tags.adapter.d.ts +2 -0
- package/dist/input-tags/input-tags.adapter.js +47 -0
- package/dist/input-tags/use-tag-draft.d.ts +9 -0
- package/dist/input-tags/use-tag-draft.js +43 -0
- package/dist/input-time/anchored-time.d.ts +1 -0
- package/dist/input-time/anchored-time.js +5 -0
- package/dist/input-time/draft-validation.d.ts +1 -0
- package/dist/input-time/draft-validation.js +1 -0
- package/dist/input-time/focus-draft.d.ts +1 -0
- package/dist/input-time/focus-draft.js +1 -0
- package/dist/input-time/input-time.adapter.d.ts +2 -0
- package/dist/input-time/input-time.adapter.js +32 -0
- package/dist/input-time/time-control.d.ts +15 -0
- package/dist/input-time/time-control.js +37 -0
- package/dist/input-time/use-time-change.d.ts +10 -0
- package/dist/input-time/use-time-change.js +4 -0
- package/dist/kbd/kbd-key.adapter.d.ts +5 -0
- package/dist/kbd/kbd-key.adapter.js +5 -0
- package/dist/kbd/kbd.adapter.d.ts +2 -0
- package/dist/kbd/kbd.adapter.js +8 -0
- package/dist/listbox/clear-focus.d.ts +1 -0
- package/dist/listbox/clear-focus.js +8 -0
- package/dist/listbox/form-bridge.d.ts +14 -0
- package/dist/listbox/form-bridge.js +34 -0
- package/dist/listbox/listbox.adapter.d.ts +2 -0
- package/dist/listbox/listbox.adapter.js +79 -0
- package/dist/listbox/native-semantics.d.ts +9 -0
- package/dist/listbox/native-semantics.js +33 -0
- package/dist/listbox/selection.d.ts +4 -0
- package/dist/listbox/selection.js +31 -0
- package/dist/listbox/use-listbox-request.d.ts +10 -0
- package/dist/listbox/use-listbox-request.js +73 -0
- package/dist/locale-select/locale-select.adapter.d.ts +2 -0
- package/dist/locale-select/locale-select.adapter.js +15 -0
- package/dist/main/main.adapter.d.ts +2 -0
- package/dist/main/main.adapter.js +7 -0
- package/dist/marquee/marquee.adapter.d.ts +2 -0
- package/dist/marquee/marquee.adapter.js +23 -0
- package/dist/modal/modal.adapter.d.ts +2 -0
- package/dist/modal/modal.adapter.js +30 -0
- package/dist/navigation/navigation.adapter.d.ts +2 -0
- package/dist/navigation/navigation.adapter.js +5 -0
- package/dist/navigation-menu/menu-target.d.ts +4 -0
- package/dist/navigation-menu/menu-target.js +13 -0
- package/dist/navigation-menu/navigation-menu.adapter.d.ts +2 -0
- package/dist/navigation-menu/navigation-menu.adapter.js +16 -0
- package/dist/page-anchors/page-anchors.adapter.d.ts +3 -0
- package/dist/page-anchors/page-anchors.adapter.js +5 -0
- package/dist/page-aside/page-aside.adapter.d.ts +2 -0
- package/dist/page-aside/page-aside.adapter.js +6 -0
- package/dist/page-body/page-body.adapter.d.ts +2 -0
- package/dist/page-body/page-body.adapter.js +4 -0
- package/dist/page-card/page-card.adapter.d.ts +3 -0
- package/dist/page-card/page-card.adapter.js +5 -0
- package/dist/page-columns/page-columns.adapter.d.ts +2 -0
- package/dist/page-columns/page-columns.adapter.js +5 -0
- package/dist/page-cta/page-cta.adapter.d.ts +3 -0
- package/dist/page-cta/page-cta.adapter.js +5 -0
- package/dist/page-feature/page-feature.adapter.d.ts +3 -0
- package/dist/page-feature/page-feature.adapter.js +6 -0
- package/dist/page-grid/page-grid.adapter.d.ts +2 -0
- package/dist/page-grid/page-grid.adapter.js +4 -0
- package/dist/page-header/page-header.adapter.d.ts +3 -0
- package/dist/page-header/page-header.adapter.js +5 -0
- package/dist/page-hero/page-hero.adapter.d.ts +3 -0
- package/dist/page-hero/page-hero.adapter.js +5 -0
- package/dist/page-links/page-links.adapter.d.ts +3 -0
- package/dist/page-links/page-links.adapter.js +5 -0
- package/dist/page-list/page-list.adapter.d.ts +2 -0
- package/dist/page-list/page-list.adapter.js +6 -0
- package/dist/page-logos/page-logos.adapter.d.ts +2 -0
- package/dist/page-logos/page-logos.adapter.js +11 -0
- package/dist/page-section/page-section.adapter.d.ts +3 -0
- package/dist/page-section/page-section.adapter.js +5 -0
- package/dist/pagination/pagination-control.d.ts +13 -0
- package/dist/pagination/pagination-control.js +31 -0
- package/dist/pagination/pagination.adapter.d.ts +2 -0
- package/dist/pagination/pagination.adapter.js +23 -0
- package/dist/panel/use-panel-frame.d.ts +15 -0
- package/dist/panel/use-panel-frame.js +36 -0
- package/dist/pin-input/pin-input.adapter.d.ts +2 -0
- package/dist/pin-input/pin-input.adapter.js +18 -0
- package/dist/pin-input/pin-slots.d.ts +6 -0
- package/dist/pin-input/pin-slots.js +9 -0
- package/dist/popover/popover.adapter.d.ts +2 -0
- package/dist/popover/popover.adapter.js +55 -0
- package/dist/pricing-plan/pricing-plan.adapter.d.ts +3 -0
- package/dist/pricing-plan/pricing-plan.adapter.js +15 -0
- package/dist/pricing-plans/pricing-plans.adapter.d.ts +3 -0
- package/dist/pricing-plans/pricing-plans.adapter.js +8 -0
- package/dist/pricing-table/pricing-table.adapter.d.ts +3 -0
- package/dist/pricing-table/pricing-table.adapter.js +9 -0
- package/dist/progress/progress.adapter.d.ts +2 -0
- package/dist/progress/progress.adapter.js +10 -0
- package/dist/progress-group/progress-group.adapter.d.ts +2 -0
- package/dist/progress-group/progress-group.adapter.js +9 -0
- package/dist/radio-group/radio-group.adapter.d.ts +2 -0
- package/dist/radio-group/radio-group.adapter.js +14 -0
- package/dist/registry/action-menus.d.ts +4 -0
- package/dist/registry/action-menus.js +9 -0
- package/dist/registry/auth-form.d.ts +3 -0
- package/dist/registry/auth-form.js +6 -0
- package/dist/registry/calendar.d.ts +3 -0
- package/dist/registry/calendar.js +6 -0
- package/dist/registry/carousel.d.ts +3 -0
- package/dist/registry/carousel.js +6 -0
- package/dist/registry/chart.d.ts +3 -0
- package/dist/registry/chart.js +4 -0
- package/dist/registry/chat-composer.d.ts +5 -0
- package/dist/registry/chat-composer.js +12 -0
- package/dist/registry/chat-feedback.d.ts +5 -0
- package/dist/registry/chat-feedback.js +12 -0
- package/dist/registry/chat.d.ts +5 -0
- package/dist/registry/chat.js +12 -0
- package/dist/registry/color-mode.d.ts +7 -0
- package/dist/registry/color-mode.js +18 -0
- package/dist/registry/color-picker.d.ts +3 -0
- package/dist/registry/color-picker.js +6 -0
- package/dist/registry/command-palette.d.ts +3 -0
- package/dist/registry/command-palette.js +6 -0
- package/dist/registry/content-outline.d.ts +4 -0
- package/dist/registry/content-outline.js +9 -0
- package/dist/registry/content-search.d.ts +4 -0
- package/dist/registry/content-search.js +9 -0
- package/dist/registry/content.d.ts +26 -0
- package/dist/registry/content.js +75 -0
- package/dist/registry/dashboard.d.ts +12 -0
- package/dist/registry/dashboard.js +33 -0
- package/dist/registry/edge-panels.d.ts +4 -0
- package/dist/registry/edge-panels.js +9 -0
- package/dist/registry/editor-drag-handle.d.ts +3 -0
- package/dist/registry/editor-drag-handle.js +6 -0
- package/dist/registry/editor-menus.d.ts +5 -0
- package/dist/registry/editor-menus.js +12 -0
- package/dist/registry/editor.d.ts +4 -0
- package/dist/registry/editor.js +9 -0
- package/dist/registry/editorial.d.ts +6 -0
- package/dist/registry/editorial.js +15 -0
- package/dist/registry/element.d.ts +3 -0
- package/dist/registry/element.js +4 -0
- package/dist/registry/feedback.d.ts +8 -0
- package/dist/registry/feedback.js +21 -0
- package/dist/registry/fields.d.ts +24 -0
- package/dist/registry/fields.js +69 -0
- package/dist/registry/file-upload.d.ts +3 -0
- package/dist/registry/file-upload.js +6 -0
- package/dist/registry/listbox.d.ts +3 -0
- package/dist/registry/listbox.js +6 -0
- package/dist/registry/marquee.d.ts +3 -0
- package/dist/registry/marquee.js +6 -0
- package/dist/registry/navigation-composition.d.ts +5 -0
- package/dist/registry/navigation-composition.js +12 -0
- package/dist/registry/page-composition.d.ts +7 -0
- package/dist/registry/page-composition.js +18 -0
- package/dist/registry/page-logos.d.ts +3 -0
- package/dist/registry/page-logos.js +6 -0
- package/dist/registry/page-navigation.d.ts +5 -0
- package/dist/registry/page-navigation.js +12 -0
- package/dist/registry/page-presentation.d.ts +7 -0
- package/dist/registry/page-presentation.js +18 -0
- package/dist/registry/pricing.d.ts +5 -0
- package/dist/registry/pricing.js +12 -0
- package/dist/registry/shells.d.ts +10 -0
- package/dist/registry/shells.js +27 -0
- package/dist/registry/sidebar-splitter.d.ts +4 -0
- package/dist/registry/sidebar-splitter.js +9 -0
- package/dist/registry/structure.d.ts +10 -0
- package/dist/registry/structure.js +27 -0
- package/dist/registry/toast.d.ts +3 -0
- package/dist/registry/toast.js +4 -0
- package/dist/scroll-area/scroll-area.adapter.d.ts +2 -0
- package/dist/scroll-area/scroll-area.adapter.js +6 -0
- package/dist/select/display-text.d.ts +2 -0
- package/dist/select/display-text.js +18 -0
- package/dist/select/select-base-content.adapter.d.ts +6 -0
- package/dist/select/select-base-content.adapter.js +16 -0
- package/dist/select/select-content.adapter.d.ts +4 -0
- package/dist/select/select-content.adapter.js +11 -0
- package/dist/select/select-option.d.ts +5 -0
- package/dist/select/select-option.js +6 -0
- package/dist/select/select.adapter.d.ts +2 -0
- package/dist/select/select.adapter.js +47 -0
- package/dist/select/use-select-change.d.ts +2 -0
- package/dist/select/use-select-change.js +29 -0
- package/dist/select-menu/select-menu-form.d.ts +7 -0
- package/dist/select-menu/select-menu-form.js +14 -0
- package/dist/select-menu/select-menu-popup.d.ts +8 -0
- package/dist/select-menu/select-menu-popup.js +39 -0
- package/dist/select-menu/select-menu-root.d.ts +8 -0
- package/dist/select-menu/select-menu-root.js +34 -0
- package/dist/select-menu/select-menu.adapter.d.ts +2 -0
- package/dist/select-menu/select-menu.adapter.js +63 -0
- package/dist/select-menu/use-select-menu.d.ts +22 -0
- package/dist/select-menu/use-select-menu.js +111 -0
- package/dist/separator/separator.adapter.d.ts +2 -0
- package/dist/separator/separator.adapter.js +6 -0
- package/dist/shadcn.adapter.d.ts +2 -0
- package/dist/shadcn.adapter.js +102 -0
- package/dist/sidebar/sidebar.adapter.d.ts +2 -0
- package/dist/sidebar/sidebar.adapter.js +63 -0
- package/dist/skeleton/skeleton.adapter.d.ts +2 -0
- package/dist/skeleton/skeleton.adapter.js +8 -0
- package/dist/slideover/slideover.adapter.d.ts +2 -0
- package/dist/slideover/slideover.adapter.js +14 -0
- package/dist/slider/request-change.d.ts +2 -0
- package/dist/slider/request-change.js +34 -0
- package/dist/slider/slider-thumb.d.ts +7 -0
- package/dist/slider/slider-thumb.js +18 -0
- package/dist/slider/slider.adapter.d.ts +2 -0
- package/dist/slider/slider.adapter.js +36 -0
- package/dist/splitter/splitter.adapter.d.ts +3 -0
- package/dist/splitter/splitter.adapter.js +50 -0
- package/dist/stepper/stepper.adapter.d.ts +2 -0
- package/dist/stepper/stepper.adapter.js +30 -0
- package/dist/styles-contract.d.ts +1 -0
- package/dist/styles-contract.js +1 -0
- package/dist/styles.css +2 -0
- package/dist/styles.d.ts +1 -0
- package/dist/styles.js +1 -0
- package/dist/submit-button/submit-button.adapter.d.ts +2 -0
- package/dist/submit-button/submit-button.adapter.js +11 -0
- package/dist/surface/surface.adapter.d.ts +2 -0
- package/dist/surface/surface.adapter.js +8 -0
- package/dist/switch/switch.adapter.d.ts +2 -0
- package/dist/switch/switch.adapter.js +26 -0
- package/dist/table/interactive-table.d.ts +2 -0
- package/dist/table/interactive-table.js +24 -0
- package/dist/table/table.adapter.d.ts +2 -0
- package/dist/table/table.adapter.js +14 -0
- package/dist/tabs/tabs.adapter.d.ts +2 -0
- package/dist/tabs/tabs.adapter.js +17 -0
- package/dist/temporal/draft-validity.d.ts +13 -0
- package/dist/temporal/draft-validity.js +18 -0
- package/dist/temporal/focus-incomplete-segment.d.ts +1 -0
- package/dist/temporal/focus-incomplete-segment.js +7 -0
- package/dist/temporal/range-reset-focus.d.ts +1 -0
- package/dist/temporal/range-reset-focus.js +16 -0
- package/dist/temporal/temporal-recovery.d.ts +6 -0
- package/dist/temporal/temporal-recovery.js +4 -0
- package/dist/temporal/use-range-reset.d.ts +6 -0
- package/dist/temporal/use-range-reset.js +55 -0
- package/dist/temporal/use-temporal-change.d.ts +10 -0
- package/dist/temporal/use-temporal-change.js +21 -0
- package/dist/text/text.adapter.d.ts +1 -0
- package/dist/text/text.adapter.js +1 -0
- package/dist/text-area/text-area.adapter.d.ts +2 -0
- package/dist/text-area/text-area.adapter.js +9 -0
- package/dist/textarea/textarea.adapter.d.ts +2 -0
- package/dist/textarea/textarea.adapter.js +40 -0
- package/dist/textarea/use-auto-rows.d.ts +2 -0
- package/dist/textarea/use-auto-rows.js +33 -0
- package/dist/theme/theme.adapter.d.ts +2 -0
- package/dist/theme/theme.adapter.js +23 -0
- package/dist/timeline/timeline.adapter.d.ts +2 -0
- package/dist/timeline/timeline.adapter.js +13 -0
- package/dist/toast/toast-data.d.ts +17 -0
- package/dist/toast/toast-data.js +1 -0
- package/dist/toast/toast-focus.d.ts +12 -0
- package/dist/toast/toast-focus.js +38 -0
- package/dist/toast/toast-provider.d.ts +4 -0
- package/dist/toast/toast-provider.js +11 -0
- package/dist/toast/toast-queue-context.d.ts +24 -0
- package/dist/toast/toast-queue-context.js +8 -0
- package/dist/toast/toast-queue.d.ts +12 -0
- package/dist/toast/toast-queue.js +29 -0
- package/dist/toast/toast-registration.d.ts +9 -0
- package/dist/toast/toast-registration.js +149 -0
- package/dist/toast/toast-viewport.d.ts +1 -0
- package/dist/toast/toast-viewport.js +36 -0
- package/dist/toast/toast.adapter.d.ts +2 -0
- package/dist/toast/toast.adapter.js +14 -0
- package/dist/toggle/toggle.adapter.d.ts +2 -0
- package/dist/toggle/toggle.adapter.js +8 -0
- package/dist/tooltip/tooltip.adapter.d.ts +2 -0
- package/dist/tooltip/tooltip.adapter.js +29 -0
- package/dist/tooltip/use-tooltip-anchor.d.ts +5 -0
- package/dist/tooltip/use-tooltip-anchor.js +36 -0
- package/dist/tree/focus-element.d.ts +1 -0
- package/dist/tree/focus-element.js +4 -0
- package/dist/tree/tree.adapter.d.ts +2 -0
- package/dist/tree/tree.adapter.js +27 -0
- package/dist/tree/use-tree.d.ts +13 -0
- package/dist/tree/use-tree.js +73 -0
- package/dist/user/user.adapter.d.ts +2 -0
- package/dist/user/user.adapter.js +24 -0
- package/dist/v-stack/v-stack.adapter.d.ts +2 -0
- package/dist/v-stack/v-stack.adapter.js +5 -0
- package/dist/vendor/lib/utils.d.ts +2 -0
- package/dist/vendor/lib/utils.js +5 -0
- package/dist/vendor/ui/accordion.d.ts +7 -0
- package/dist/vendor/ui/accordion.js +14 -0
- package/dist/vendor/ui/alert.d.ts +8 -0
- package/dist/vendor/ui/alert.js +22 -0
- package/dist/vendor/ui/badge.d.ts +9 -0
- package/dist/vendor/ui/badge.js +21 -0
- package/dist/vendor/ui/button.d.ts +11 -0
- package/dist/vendor/ui/button.js +33 -0
- package/dist/vendor/ui/card.d.ts +8 -0
- package/dist/vendor/ui/card.js +16 -0
- package/dist/vendor/ui/checkbox.d.ts +4 -0
- package/dist/vendor/ui/checkbox.js +9 -0
- package/dist/vendor/ui/input.d.ts +3 -0
- package/dist/vendor/ui/input.js +8 -0
- package/dist/vendor/ui/label.d.ts +5 -0
- package/dist/vendor/ui/label.js +10 -0
- package/dist/vendor/ui/progress.d.ts +4 -0
- package/dist/vendor/ui/progress.js +8 -0
- package/dist/vendor/ui/select.d.ts +13 -0
- package/dist/vendor/ui/select.js +27 -0
- package/dist/vendor/ui/separator.d.ts +4 -0
- package/dist/vendor/ui/separator.js +8 -0
- package/dist/vendor/ui/slider.d.ts +4 -0
- package/dist/vendor/ui/slider.js +8 -0
- package/dist/vendor/ui/switch.d.ts +4 -0
- package/dist/vendor/ui/switch.js +8 -0
- package/dist/vendor/ui/tabs.d.ts +7 -0
- package/dist/vendor/ui/tabs.js +13 -0
- package/dist/vendor/ui/textarea.d.ts +3 -0
- package/dist/vendor/ui/textarea.js +8 -0
- package/package.json +71 -3
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function ShadcnChatPalette({ label, children, prompt }) {
|
|
3
|
+
return (_jsxs("section", { className: "reacd-node reacd-chat-palette", "aria-label": label, children: [_jsx("div", { className: "reacd-chat-palette-content", children: children }), prompt !== undefined && (_jsx("footer", { className: "reacd-chat-palette-prompt", children: prompt }))] }));
|
|
4
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { CHAT_COMPOSER_DEFAULTS, CHAT_COMPOSER_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/chat-composer-policy.js';
|
|
4
|
+
import { ChatLoadingScopeContext } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
|
|
5
|
+
import { PromptScopeContext } from '@fastsprout/reacd/adapter-runtime/renderer/chat-prompt/prompt-context.js';
|
|
6
|
+
import { TrustedFormBoundary } from '@fastsprout/reacd/adapter-runtime/renderer/form/form-boundary.js';
|
|
7
|
+
import { ShadcnChatAttachment } from '../chat-attachment/chat-attachment.adapter.js';
|
|
8
|
+
import { ShadcnChatPromptSubmit } from '../chat-prompt-submit/chat-prompt-submit.adapter.js';
|
|
9
|
+
import { usePromptControls } from './use-prompt-controls.js';
|
|
10
|
+
export function ShadcnChatPrompt(properties) {
|
|
11
|
+
const { label, value, placeholder, description, error, footer, attachments = [], onRemoveAttachment, } = properties;
|
|
12
|
+
const id = useId();
|
|
13
|
+
const { form, focus, blur, keyDown, change, compositionStart, compositionEnd, unavailable, readOnly, status, scope, } = usePromptControls(properties);
|
|
14
|
+
const busy = status === 'submitted' || status === 'streaming';
|
|
15
|
+
const describedBy = [
|
|
16
|
+
description === undefined ? '' : `${id}-description`,
|
|
17
|
+
status === 'error' ? `${id}-error` : '',
|
|
18
|
+
]
|
|
19
|
+
.filter(Boolean)
|
|
20
|
+
.join(' ');
|
|
21
|
+
return (_jsx(TrustedFormBoundary, { children: _jsx(PromptScopeContext.Provider, { value: scope, children: _jsxs("form", { ref: form, className: "reacd-node reacd-chat-prompt", "aria-label": label, onFocusCapture: focus, onBlurCapture: blur, onSubmit: (event) => {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
scope.submit();
|
|
25
|
+
}, children: [_jsx(ChatLoadingScopeContext, { value: busy, children: _jsxs("div", { className: "reacd-chat-prompt-content", "aria-busy": busy, children: [_jsx("label", { htmlFor: id, children: label }), description !== undefined && (_jsx("p", { id: `${id}-description`, children: description })), attachments.length > 0 && (_jsx("div", { className: "reacd-chat-prompt-files", children: attachments.map(({ id: fileId, removable, ...file }) => (_jsx(ShadcnChatAttachment, { ...file, disabled: unavailable || readOnly, ...(onRemoveAttachment === undefined || removable === false
|
|
26
|
+
? {}
|
|
27
|
+
: {
|
|
28
|
+
onRemove: () => onRemoveAttachment(fileId),
|
|
29
|
+
}) }, fileId))) })), _jsx("textarea", { id: id, value: value, placeholder: placeholder, rows: CHAT_COMPOSER_POLICY.rows, maxLength: CHAT_COMPOSER_POLICY.maxDraftLength, disabled: unavailable, readOnly: readOnly, "aria-invalid": status === 'error', "aria-describedby": describedBy || undefined, onChange: (event) => change(event.currentTarget.value), onKeyDown: keyDown, onCompositionStart: compositionStart, onCompositionEnd: compositionEnd })] }) }), busy && _jsx("p", { role: "status", children: CHAT_COMPOSER_DEFAULTS.pendingLabel }), status === 'error' && (_jsx("p", { role: "alert", id: `${id}-error`, children: error ?? CHAT_COMPOSER_DEFAULTS.errorMessage })), _jsx("div", { className: "reacd-chat-prompt-actions", children: footer === undefined ? _jsx(ShadcnChatPromptSubmit, {}) : footer })] }) }) }));
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type KeyboardEvent } from 'react';
|
|
2
|
+
import type { ChatPromptProps } from '@fastsprout/reacd/adapter-runtime/components/chat-prompt/index.js';
|
|
3
|
+
export declare function usePromptControls(properties: ChatPromptProps): {
|
|
4
|
+
form: import("react").RefObject<HTMLFormElement | null>;
|
|
5
|
+
focus: () => void;
|
|
6
|
+
blur: (event: import("react").FocusEvent<HTMLFormElement>) => void;
|
|
7
|
+
keyDown: (event: KeyboardEvent<HTMLTextAreaElement>) => void;
|
|
8
|
+
change: (next: string) => void;
|
|
9
|
+
compositionStart: () => void;
|
|
10
|
+
compositionEnd: () => void;
|
|
11
|
+
unavailable: boolean;
|
|
12
|
+
readOnly: boolean;
|
|
13
|
+
status: "error" | "ready" | "streaming" | "submitted";
|
|
14
|
+
scope: {
|
|
15
|
+
status: "error" | "ready" | "streaming" | "submitted";
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
canSend: boolean;
|
|
18
|
+
submit: () => void;
|
|
19
|
+
stop: (() => void) | undefined;
|
|
20
|
+
retry: (() => void) | undefined;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { useContext, useRef } from 'react';
|
|
2
|
+
import { canSendPrompt, promptKeyIntent, } from '@fastsprout/reacd/adapter-runtime/core/chat-composer.js';
|
|
3
|
+
import { CHAT_COMPOSER_DEFAULTS, CHAT_COMPOSER_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/chat-composer-policy.js';
|
|
4
|
+
import { PortalActiveContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
|
|
5
|
+
import { usePromptEscape } from './use-prompt-escape.js';
|
|
6
|
+
export function usePromptControls(properties) {
|
|
7
|
+
const { value, onSubmit, onValueChange, onClose, onStop, onRetry, attachments = [], status = CHAT_COMPOSER_DEFAULTS.status, disabled = CHAT_COMPOSER_DEFAULTS.disabled, readOnly = CHAT_COMPOSER_DEFAULTS.readOnly, submitOnEnter = CHAT_COMPOSER_DEFAULTS.submitOnEnter, } = properties;
|
|
8
|
+
const form = useRef(null);
|
|
9
|
+
const composing = useRef(false);
|
|
10
|
+
const active = useContext(PortalActiveContext);
|
|
11
|
+
const unavailable = disabled || !active;
|
|
12
|
+
const canSend = attachments.every((file) => file.status === undefined || file.status === 'idle') &&
|
|
13
|
+
canSendPrompt(value, attachments.length, status, unavailable, readOnly);
|
|
14
|
+
const submit = () => {
|
|
15
|
+
if (canSend)
|
|
16
|
+
onSubmit(value);
|
|
17
|
+
};
|
|
18
|
+
const change = (next) => {
|
|
19
|
+
if (!unavailable && !readOnly && next.length <= CHAT_COMPOSER_POLICY.maxDraftLength)
|
|
20
|
+
onValueChange(next);
|
|
21
|
+
};
|
|
22
|
+
const keyDown = (event) => {
|
|
23
|
+
const intent = promptKeyIntent({
|
|
24
|
+
key: event.key,
|
|
25
|
+
composing: composing.current || event.nativeEvent.isComposing,
|
|
26
|
+
keyCode: event.keyCode,
|
|
27
|
+
shift: event.shiftKey,
|
|
28
|
+
control: event.ctrlKey,
|
|
29
|
+
meta: event.metaKey,
|
|
30
|
+
alt: event.altKey,
|
|
31
|
+
}, submitOnEnter);
|
|
32
|
+
if (intent === 'submit') {
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
submit();
|
|
35
|
+
}
|
|
36
|
+
else if (intent === 'close' && onClose !== undefined && !unavailable) {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
onClose();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const { focus, blur } = usePromptEscape(form, composing, onClose, unavailable);
|
|
43
|
+
const compositionStart = () => {
|
|
44
|
+
composing.current = true;
|
|
45
|
+
};
|
|
46
|
+
const compositionEnd = () => {
|
|
47
|
+
composing.current = false;
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
form,
|
|
51
|
+
focus,
|
|
52
|
+
blur,
|
|
53
|
+
keyDown,
|
|
54
|
+
change,
|
|
55
|
+
compositionStart,
|
|
56
|
+
compositionEnd,
|
|
57
|
+
unavailable,
|
|
58
|
+
readOnly,
|
|
59
|
+
status,
|
|
60
|
+
scope: {
|
|
61
|
+
status,
|
|
62
|
+
disabled: unavailable || readOnly,
|
|
63
|
+
canSend,
|
|
64
|
+
submit,
|
|
65
|
+
stop: onStop,
|
|
66
|
+
retry: onRetry,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type FocusEvent, type RefObject } from 'react';
|
|
2
|
+
export declare function usePromptEscape(form: RefObject<HTMLFormElement | null>, composing: RefObject<boolean>, onClose: (() => void) | undefined, disabled: boolean): {
|
|
3
|
+
focus: () => void;
|
|
4
|
+
blur: (event: FocusEvent<HTMLFormElement>) => void;
|
|
5
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useCallback, useContext, useLayoutEffect, useRef, } from 'react';
|
|
2
|
+
import { EscapeScopeContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/escape-context.js';
|
|
3
|
+
import { PortalActiveContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
|
|
4
|
+
export function usePromptEscape(form, composing, onClose, disabled) {
|
|
5
|
+
const scope = useContext(EscapeScopeContext);
|
|
6
|
+
const active = useContext(PortalActiveContext);
|
|
7
|
+
const release = useRef(undefined);
|
|
8
|
+
const clear = useCallback(() => {
|
|
9
|
+
const unregister = release.current;
|
|
10
|
+
release.current = undefined;
|
|
11
|
+
if (unregister !== undefined)
|
|
12
|
+
unregister();
|
|
13
|
+
}, []);
|
|
14
|
+
const focus = () => {
|
|
15
|
+
const element = form.current;
|
|
16
|
+
if (element === null ||
|
|
17
|
+
!element.contains(element.ownerDocument.activeElement) ||
|
|
18
|
+
!active ||
|
|
19
|
+
disabled ||
|
|
20
|
+
onClose === undefined ||
|
|
21
|
+
scope === null ||
|
|
22
|
+
release.current !== undefined)
|
|
23
|
+
return;
|
|
24
|
+
release.current = scope.register(() => {
|
|
25
|
+
if (!composing.current)
|
|
26
|
+
onClose();
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
const blur = useCallback((event) => {
|
|
30
|
+
const next = event.relatedTarget;
|
|
31
|
+
if (!(next instanceof Node) || !event.currentTarget.contains(next))
|
|
32
|
+
clear();
|
|
33
|
+
}, [clear]);
|
|
34
|
+
useLayoutEffect(() => {
|
|
35
|
+
focus();
|
|
36
|
+
return clear;
|
|
37
|
+
});
|
|
38
|
+
return { focus, blur };
|
|
39
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { PromptScopeContext } from '@fastsprout/reacd/adapter-runtime/renderer/chat-prompt/prompt-context.js';
|
|
4
|
+
import { Issues } from '@fastsprout/reacd/adapter-runtime/renderer/issues/issues.renderer.js';
|
|
5
|
+
import { Button } from '../vendor/ui/button.js';
|
|
6
|
+
import { resolvePromptAction } from './prompt-action.js';
|
|
7
|
+
export function ShadcnChatPromptSubmit(properties) {
|
|
8
|
+
const scope = useContext(PromptScopeContext);
|
|
9
|
+
const result = resolvePromptAction(properties, scope);
|
|
10
|
+
if (!result.success)
|
|
11
|
+
return _jsx(Issues, { issues: result.issues });
|
|
12
|
+
const { label, disabled, run, status } = result.data;
|
|
13
|
+
return (_jsx(Button, { type: "button", className: "reacd-node reacd-button reacd-chat-prompt-submit", "aria-label": label, disabled: disabled, "data-status": status, variant: status === 'ready' ? 'default' : 'secondary', onClick: run === undefined ? undefined : () => run(), children: label }));
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ChatPromptSubmitProps } from '@fastsprout/reacd/adapter-runtime/components/index.js';
|
|
2
|
+
import type { ChatComposerStatus } from '@fastsprout/reacd/adapter-runtime/core/chat-composer.js';
|
|
3
|
+
import type { Result } from '@fastsprout/reacd/adapter-runtime/core/result.js';
|
|
4
|
+
import type { PromptScope } from '@fastsprout/reacd/adapter-runtime/renderer/chat-prompt/prompt-context.js';
|
|
5
|
+
interface PromptAction {
|
|
6
|
+
label: string;
|
|
7
|
+
disabled: boolean;
|
|
8
|
+
status: ChatComposerStatus;
|
|
9
|
+
run: (() => void) | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function resolvePromptAction(properties: ChatPromptSubmitProps, scope: PromptScope | null): Result<PromptAction>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CHAT_COMPOSER_DEFAULTS, CHAT_COMPOSER_ERRORS, } from '@fastsprout/reacd/adapter-runtime/core/chat-composer-policy.js';
|
|
2
|
+
export function resolvePromptAction(properties, scope) {
|
|
3
|
+
if (scope !== null &&
|
|
4
|
+
((properties.status !== undefined && properties.status !== scope.status) ||
|
|
5
|
+
properties.onSubmit !== undefined ||
|
|
6
|
+
properties.onStop !== undefined ||
|
|
7
|
+
properties.onRetry !== undefined))
|
|
8
|
+
return {
|
|
9
|
+
success: false,
|
|
10
|
+
issues: [
|
|
11
|
+
{ path: 'ChatPromptSubmit', message: CHAT_COMPOSER_ERRORS.conflictingScope },
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
const status = scope?.status ?? properties.status ?? CHAT_COMPOSER_DEFAULTS.status;
|
|
15
|
+
const busy = status === 'submitted' || status === 'streaming';
|
|
16
|
+
const run = busy
|
|
17
|
+
? (scope?.stop ?? properties.onStop)
|
|
18
|
+
: status === 'error'
|
|
19
|
+
? (scope?.retry ?? properties.onRetry)
|
|
20
|
+
: (scope?.submit ?? properties.onSubmit);
|
|
21
|
+
if (scope === null && status === 'ready' && run === undefined)
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
issues: [
|
|
25
|
+
{ path: 'ChatPromptSubmit', message: CHAT_COMPOSER_ERRORS.missingScope },
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
const label = busy
|
|
29
|
+
? run === undefined
|
|
30
|
+
? CHAT_COMPOSER_DEFAULTS.pendingLabel
|
|
31
|
+
: CHAT_COMPOSER_DEFAULTS.stopLabel
|
|
32
|
+
: status === 'error'
|
|
33
|
+
? run === undefined
|
|
34
|
+
? CHAT_COMPOSER_DEFAULTS.unavailableLabel
|
|
35
|
+
: CHAT_COMPOSER_DEFAULTS.retryLabel
|
|
36
|
+
: CHAT_COMPOSER_DEFAULTS.sendLabel;
|
|
37
|
+
const disabled = properties.disabled === true ||
|
|
38
|
+
scope?.disabled === true ||
|
|
39
|
+
run === undefined ||
|
|
40
|
+
(status === 'ready' && scope?.canSend === false);
|
|
41
|
+
return {
|
|
42
|
+
success: true,
|
|
43
|
+
data: { status, disabled, run, label: properties.label ?? label },
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ChatReasoningProps } from '@fastsprout/reacd/adapter-runtime/components/chat-reasoning/index.js';
|
|
2
|
+
export declare function ShadcnChatReasoning({ text, open, onOpenChange, label, streaming, autoOpen, autoClose, disabled, }: ChatReasoningProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CHAT_FEEDBACK_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-feedback-policy.js';
|
|
3
|
+
import { ChatDisclosure } from '../chat-disclosure/chat-disclosure.js';
|
|
4
|
+
import { useReasoningDisclosure } from './use-reasoning-disclosure.js';
|
|
5
|
+
export function ShadcnChatReasoning({ text, open, onOpenChange, label = CHAT_FEEDBACK_DEFAULTS.reasoningLabel, streaming = CHAT_FEEDBACK_DEFAULTS.streaming, autoOpen = CHAT_FEEDBACK_DEFAULTS.autoOpen, autoClose = CHAT_FEEDBACK_DEFAULTS.autoClose, disabled = CHAT_FEEDBACK_DEFAULTS.disabled, }) {
|
|
6
|
+
const change = useReasoningDisclosure({
|
|
7
|
+
open,
|
|
8
|
+
onOpenChange,
|
|
9
|
+
streaming,
|
|
10
|
+
autoOpen,
|
|
11
|
+
autoClose,
|
|
12
|
+
disabled,
|
|
13
|
+
});
|
|
14
|
+
return (_jsx("div", { className: "reacd-node reacd-chat-reasoning", children: _jsx(ChatDisclosure, { label: label, open: open, onOpenChange: change, disabled: disabled, active: streaming, children: _jsx("p", { className: "reacd-chat-feedback-text", children: text.trim() === '' ? CHAT_FEEDBACK_DEFAULTS.emptyReasoning : text }) }) }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ReasoningDisclosure {
|
|
2
|
+
open: boolean;
|
|
3
|
+
streaming: boolean;
|
|
4
|
+
disabled: boolean;
|
|
5
|
+
autoOpen: boolean;
|
|
6
|
+
autoClose: boolean;
|
|
7
|
+
onOpenChange: (value: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function useReasoningDisclosure({ open, streaming, disabled, autoOpen, autoClose, onOpenChange, }: ReasoningDisclosure): (value: boolean) => void;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
export function useReasoningDisclosure({ open, streaming, disabled, autoOpen, autoClose, onOpenChange, }) {
|
|
3
|
+
const previous = useRef(undefined);
|
|
4
|
+
const manual = useRef(false);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const before = previous.current;
|
|
7
|
+
previous.current = streaming;
|
|
8
|
+
if (before === streaming)
|
|
9
|
+
return;
|
|
10
|
+
if (streaming) {
|
|
11
|
+
manual.current = false;
|
|
12
|
+
if (autoOpen && !disabled && !open)
|
|
13
|
+
onOpenChange(true);
|
|
14
|
+
}
|
|
15
|
+
else if (before === true && autoClose && !disabled && !manual.current && open) {
|
|
16
|
+
onOpenChange(false);
|
|
17
|
+
}
|
|
18
|
+
}, [streaming, open, disabled, autoOpen, autoClose, onOpenChange]);
|
|
19
|
+
return (value) => {
|
|
20
|
+
manual.current = true;
|
|
21
|
+
onOpenChange(value);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CHAT_FEEDBACK_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-feedback-policy.js';
|
|
3
|
+
export function ShadcnChatShimmer({ text, active = CHAT_FEEDBACK_DEFAULTS.active, }) {
|
|
4
|
+
return (_jsx("span", { className: "reacd-chat-shimmer", "data-active": active, role: active ? 'status' : undefined, "aria-live": active ? 'polite' : undefined, children: text }));
|
|
5
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ChatToolProps } from '@fastsprout/reacd/adapter-runtime/components/chat-tool/index.js';
|
|
2
|
+
export declare function ShadcnChatTool({ label, status, open, onOpenChange, input, output, error, disabled, onApprove, onReject, onRetry, }: ChatToolProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CHAT_FEEDBACK_DEFAULTS, CHAT_TOOL_LABELS, } from '@fastsprout/reacd/adapter-runtime/core/chat-feedback-policy.js';
|
|
3
|
+
import { ChatDisclosure } from '../chat-disclosure/chat-disclosure.js';
|
|
4
|
+
import { Button } from '../vendor/ui/button.js';
|
|
5
|
+
export function ShadcnChatTool({ label, status, open, onOpenChange, input, output, error, disabled, onApprove, onReject, onRetry, }) {
|
|
6
|
+
return (_jsxs("section", { className: "reacd-node reacd-chat-tool", "aria-label": label, children: [_jsx("p", { role: status === 'error' ? 'alert' : 'status', children: CHAT_TOOL_LABELS[status] }), _jsxs(ChatDisclosure, { label: label, open: open, onOpenChange: onOpenChange, disabled: disabled, active: status === 'running', children: [input !== undefined && _jsx("pre", { className: "reacd-chat-feedback-text", children: input }), output !== undefined && (_jsx("pre", { className: "reacd-chat-feedback-text", children: output })), error !== undefined && _jsx("p", { className: "reacd-chat-feedback-text", children: error }), input === undefined && output === undefined && error === undefined && (_jsx("p", { children: CHAT_FEEDBACK_DEFAULTS.emptyTool }))] }), status === 'approval' && onApprove !== undefined && onReject !== undefined && (_jsxs("div", { className: "reacd-chat-actions", role: "group", "aria-label": "Tool approval", children: [_jsx(Button, { className: "reacd-button", type: "button", onClick: () => onApprove(), disabled: disabled, children: CHAT_FEEDBACK_DEFAULTS.approveLabel }), _jsx(Button, { className: "reacd-button", variant: "outline", type: "button", onClick: () => onReject(), disabled: disabled, children: CHAT_FEEDBACK_DEFAULTS.rejectLabel })] })), status === 'error' && onRetry !== undefined && (_jsx(Button, { className: "reacd-button", type: "button", onClick: () => onRetry(), disabled: disabled, children: CHAT_FEEDBACK_DEFAULTS.retryLabel }))] }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { CheckboxProps } from '@fastsprout/reacd/adapter-runtime/components/checkbox/checkbox.js';
|
|
2
|
+
export declare function ShadcnCheckbox({ label, checked, onCheckedChange, indeterminate, description, name, value, required, disabled, readOnly, }: CheckboxProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useRef, useState } from 'react';
|
|
3
|
+
import { CHECKBOX_POLICY } from '@fastsprout/reacd/adapter-runtime/core/checkbox-policy.js';
|
|
4
|
+
import { useFieldMetadata } from '@fastsprout/reacd/adapter-runtime/renderer/form-field/field-metadata.js';
|
|
5
|
+
import { Checkbox } from '../vendor/ui/checkbox.js';
|
|
6
|
+
import { Label } from '../vendor/ui/label.js';
|
|
7
|
+
export function ShadcnCheckbox({ label, checked, onCheckedChange, indeterminate, description, name, value, required, disabled, readOnly, }) {
|
|
8
|
+
const id = useId();
|
|
9
|
+
const control = useRef(null);
|
|
10
|
+
const [attempted, setAttempted] = useState(false);
|
|
11
|
+
const metadata = useFieldMetadata({ name, required, disabled }, description ? [`${id}-description`] : []);
|
|
12
|
+
const accepted = checked && !indeterminate;
|
|
13
|
+
const localError = attempted && metadata.required && !accepted ? CHECKBOX_POLICY.requiredMessage : '';
|
|
14
|
+
const feedback = metadata.error || localError;
|
|
15
|
+
const descriptions = [
|
|
16
|
+
...metadata.descriptionIds,
|
|
17
|
+
...(localError && !metadata.error ? [`${id}-error`] : []),
|
|
18
|
+
];
|
|
19
|
+
return (_jsxs("div", { className: "reacd-node reacd-field reacd-checkbox", children: [_jsxs("div", { className: "reacd-check", children: [_jsx(Checkbox, { ref: control, id: id, checked: indeterminate ? 'indeterminate' : checked, disabled: metadata.disabled, "aria-readonly": readOnly || undefined, "aria-required": metadata.required || undefined, "aria-invalid": Boolean(feedback) || undefined, "aria-describedby": descriptions.join(' ') || undefined, onCheckedChange: (next) => {
|
|
20
|
+
if (!metadata.disabled && !readOnly)
|
|
21
|
+
onCheckedChange(next === true);
|
|
22
|
+
} }), _jsx(Label, { htmlFor: id, children: label })] }), description && _jsx("p", { id: `${id}-description`, children: description }), localError && !metadata.error && (_jsx("p", { id: `${id}-error`, role: "alert", className: "reacd-field-error", children: localError })), _jsx("input", { type: "hidden", name: metadata.name, value: value ?? CHECKBOX_POLICY.submittedValue, disabled: metadata.disabled || !accepted }), _jsx("input", { type: "text", hidden: true, defaultValue: "", required: metadata.required && !accepted, disabled: metadata.disabled, onInvalid: (event) => {
|
|
23
|
+
event.preventDefault();
|
|
24
|
+
setAttempted(true);
|
|
25
|
+
control.current?.focus();
|
|
26
|
+
} })] }));
|
|
27
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { CheckboxGroupProps } from '@fastsprout/reacd/adapter-runtime/components/checkbox-group/index.js';
|
|
2
|
+
export declare function ShadcnCheckboxGroup({ label, description, items, value, onValueChange, disabled, required, name, max, orientation, }: CheckboxGroupProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { CheckboxGroup } from '@base-ui/react/checkbox-group';
|
|
4
|
+
import { Checkbox } from '@base-ui/react/checkbox';
|
|
5
|
+
import { CheckIcon } from 'lucide-react';
|
|
6
|
+
import { CHOICE_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/choice-policy.js';
|
|
7
|
+
import { ChoiceHeader } from '@fastsprout/reacd/adapter-runtime/renderer/choice/choice-header.renderer.js';
|
|
8
|
+
import { ChoiceText } from '@fastsprout/reacd/adapter-runtime/renderer/choice/choice-text.renderer.js';
|
|
9
|
+
export function ShadcnCheckboxGroup({ label, description, items, value, onValueChange, disabled, required, name, max, orientation = CHOICE_DEFAULTS.orientation, }) {
|
|
10
|
+
const id = useId();
|
|
11
|
+
const firstEnabled = items.findIndex((item) => !item.disabled);
|
|
12
|
+
const described = description !== undefined || max !== undefined;
|
|
13
|
+
return (_jsxs(CheckboxGroup, { render: _jsx("fieldset", {}), className: "reacd-node reacd-choice-group", "data-slot": "checkbox-group", "aria-labelledby": id, "aria-describedby": described ? `${id}-description` : undefined, value: [...value], disabled: disabled, onValueChange: (next) => onValueChange(next), children: [_jsx(ChoiceHeader, { id: id, label: label, description: description, required: required, max: max }), _jsx("div", { className: "reacd-choice-items", "data-orientation": orientation, children: items.map((item, index) => {
|
|
14
|
+
const itemId = `${id}-${item.value}`;
|
|
15
|
+
const limited = max !== undefined && value.length >= max && !value.includes(item.value);
|
|
16
|
+
return (_jsxs("label", { className: "reacd-choice-item", children: [_jsx(Checkbox.Root, { value: item.value, name: name ?? id, disabled: item.disabled, required: required && value.length === 0 && index === firstEnabled, readOnly: limited, "aria-disabled": limited || undefined, className: "reacd-choice-control reacd-choice-checkbox", "data-slot": "checkbox", "aria-labelledby": itemId, "aria-describedby": item.description === undefined ? undefined : `${itemId}-description`, children: _jsx(Checkbox.Indicator, { className: "reacd-choice-indicator", children: _jsx(CheckIcon, { className: "reacd-choice-check", "aria-hidden": "true" }) }) }), _jsx(ChoiceText, { id: itemId, label: item.label, description: item.description })] }, item.value));
|
|
17
|
+
}) })] }));
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CHIP_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chip-policy.js';
|
|
3
|
+
import { Badge } from '../vendor/ui/badge.js';
|
|
4
|
+
const VARIANTS = {
|
|
5
|
+
primary: 'default',
|
|
6
|
+
secondary: 'secondary',
|
|
7
|
+
danger: 'destructive',
|
|
8
|
+
};
|
|
9
|
+
export function ShadcnChip({ label, text, children, intent = CHIP_DEFAULTS.intent, size = CHIP_DEFAULTS.size, corner = CHIP_DEFAULTS.corner, inset = CHIP_DEFAULTS.inset, standalone = CHIP_DEFAULTS.standalone, show = CHIP_DEFAULTS.show, }) {
|
|
10
|
+
const identity = text === undefined ? label : `${label}: ${text}`;
|
|
11
|
+
return (_jsxs("div", { className: "reacd-node reacd-chip", "data-slot": "chip", "data-size": size, "data-corner": corner, "data-inset": inset, "data-standalone": standalone, children: [!standalone && _jsx("div", { className: "reacd-chip-body", children: children }), show && (_jsx(Badge, { className: "reacd-chip-indicator", variant: VARIANTS[intent], "data-dot": text === undefined, "data-intent": intent, role: "img", "aria-label": identity, title: identity, children: text !== undefined && _jsx("span", { className: "reacd-chip-text", children: text }) }))] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { CONTENT_POLICY, DOCUMENT_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/policy.js';
|
|
4
|
+
import { Textarea } from '../vendor/ui/textarea.js';
|
|
5
|
+
import { Label } from '../vendor/ui/label.js';
|
|
6
|
+
export function ShadcnCodeEditor({ label, value, onValueChange }) {
|
|
7
|
+
const id = useId();
|
|
8
|
+
return (_jsxs("div", { className: "reacd-node reacd-field reacd-code-editor", children: [_jsx(Label, { htmlFor: id, children: label }), _jsx(Textarea, { id: id, value: value, spellCheck: false, rows: CONTENT_POLICY.codeEditorRows, maxLength: DOCUMENT_POLICY.maxCharacters, onChange: (event) => onValueChange(event.target.value) })] }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { CollapsibleProps } from '@fastsprout/reacd/adapter-runtime/components/collapsible/collapsible.js';
|
|
2
|
+
export declare function ShadcnCollapsible({ label, open, onOpenChange, children, disabled, showTrigger, retainContent, }: CollapsibleProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { Collapsible as Primitive } from '@base-ui/react/collapsible';
|
|
4
|
+
import { ChevronDownIcon } from 'lucide-react';
|
|
5
|
+
import { COLLAPSIBLE_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/collapsible-policy.js';
|
|
6
|
+
import { PortalActiveContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
|
|
7
|
+
import { Button } from '../vendor/ui/button.js';
|
|
8
|
+
export function ShadcnCollapsible({ label, open, onOpenChange, children, disabled, showTrigger = COLLAPSIBLE_DEFAULTS.showTrigger, retainContent = COLLAPSIBLE_DEFAULTS.retainContent, }) {
|
|
9
|
+
const ancestorActive = useContext(PortalActiveContext);
|
|
10
|
+
return (_jsxs(Primitive.Root, { className: "reacd-node reacd-collapsible", "data-slot": "collapsible", open: open, disabled: disabled, onOpenChange: (next) => onOpenChange(next), children: [showTrigger && (_jsxs(Primitive.Trigger, { "data-slot": "collapsible-trigger", className: "reacd-node reacd-collapsible-trigger", render: _jsx(Button, { variant: "outline" }), children: [_jsx("span", { children: label }), _jsx(ChevronDownIcon, { "aria-hidden": "true" })] })), _jsx(Primitive.Panel, { "data-slot": "collapsible-content", className: "reacd-collapsible-panel", keepMounted: retainContent, hidden: !open, role: "region", "aria-label": label, children: _jsx(PortalActiveContext.Provider, { value: open && ancestorActive, children: children }) })] }));
|
|
11
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ShadcnAvatar } from '../avatar/avatar.adapter.js';
|
|
3
|
+
export function ShadcnColorModeAvatar({ mode, light, dark, ...properties }) {
|
|
4
|
+
const source = mode === 'light' ? light : dark;
|
|
5
|
+
return _jsx(ShadcnAvatar, { ...properties, src: source }, source);
|
|
6
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ColorModeButtonProps } from '@fastsprout/reacd/adapter-runtime/components/color-mode-button/index.js';
|
|
2
|
+
export declare function ShadcnColorModeButton({ label, value: _value, resolvedMode, onValueChange, disabled, readOnly, description, }: ColorModeButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { oppositeColorMode } from '@fastsprout/reacd/adapter-runtime/core/color-mode.js';
|
|
4
|
+
import { Button } from '../vendor/ui/button.js';
|
|
5
|
+
export function ShadcnColorModeButton({ label, value: _value, resolvedMode, onValueChange, disabled, readOnly, description, }) {
|
|
6
|
+
const id = useId();
|
|
7
|
+
return (_jsxs("div", { className: "reacd-node reacd-field", children: [_jsx(Button, { type: "button", variant: "outline", disabled: disabled, "aria-pressed": resolvedMode === 'dark', "aria-disabled": readOnly || undefined, "aria-describedby": description === undefined ? undefined : id, className: "reacd-color-mode-button", onClick: () => {
|
|
8
|
+
if (!readOnly)
|
|
9
|
+
onValueChange(oppositeColorMode(resolvedMode));
|
|
10
|
+
}, children: label }), description === undefined ? null : _jsx("p", { id: id, children: description })] }));
|
|
11
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ModeImage } from './mode-image.js';
|
|
3
|
+
export function ShadcnColorModeImage({ mode, light, dark, ...properties }) {
|
|
4
|
+
const source = mode === 'light' ? light : dark;
|
|
5
|
+
return _jsx(ModeImage, { ...properties, src: source }, source);
|
|
6
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { COLOR_MODE_POLICY } from '@fastsprout/reacd/adapter-runtime/core/color-mode-policy.js';
|
|
4
|
+
export function ModeImage({ src, alt, aspect = COLOR_MODE_POLICY.defaultAspect, }) {
|
|
5
|
+
const [status, setStatus] = useState('loading');
|
|
6
|
+
const dimensions = COLOR_MODE_POLICY.imageAspects[aspect];
|
|
7
|
+
return (_jsx("div", { className: "reacd-node reacd-color-mode-image", role: "img", "aria-label": alt, "aria-busy": status === 'loading' || undefined, "data-status": status, style: { aspectRatio: dimensions.width / dimensions.height }, children: status === 'error' ? (_jsxs("span", { children: [COLOR_MODE_POLICY.imageFallback, ": ", alt] })) : (_jsxs(_Fragment, { children: [_jsx("img", { src: src, alt: "", width: dimensions.width, height: dimensions.height, loading: "lazy", decoding: "async", referrerPolicy: "no-referrer", onLoad: () => setStatus('ready'), onError: () => setStatus('error') }), status === 'loading' && _jsx("span", { "aria-hidden": "true", children: alt })] })) }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ColorModeSelectProps } from '@fastsprout/reacd/adapter-runtime/components/color-mode-select/index.js';
|
|
2
|
+
export declare function ShadcnColorModeSelect({ label, value, resolvedMode: _resolved, onValueChange, disabled, readOnly, description, labels, }: ColorModeSelectProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, useId } from 'react';
|
|
3
|
+
import { COLOR_MODES, COLOR_MODE_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/color-mode-policy.js';
|
|
4
|
+
import { colorModeValueSchema } from '@fastsprout/reacd/adapter-runtime/schema/color-mode/color-mode.schema.js';
|
|
5
|
+
import { PortalActiveContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
|
|
6
|
+
import { Select, SelectItem, SelectTrigger, SelectValue } from '../vendor/ui/select.js';
|
|
7
|
+
import { Label } from '../vendor/ui/label.js';
|
|
8
|
+
import { ShadcnSelectContent } from '../select/select-content.adapter.js';
|
|
9
|
+
export function ShadcnColorModeSelect({ label, value, resolvedMode: _resolved, onValueChange, disabled, readOnly, description, labels = COLOR_MODE_POLICY.labels, }) {
|
|
10
|
+
const id = useId();
|
|
11
|
+
const active = useContext(PortalActiveContext);
|
|
12
|
+
return (_jsxs("div", { className: "reacd-node reacd-field", children: [_jsx(Label, { htmlFor: id, children: label }), _jsxs(Select, { value: value, disabled: disabled, ...(active ? {} : { open: false }), onValueChange: (next) => {
|
|
13
|
+
if (!readOnly)
|
|
14
|
+
onValueChange(colorModeValueSchema.parse(next));
|
|
15
|
+
}, children: [_jsx(SelectTrigger, { id: id, className: "reacd-color-mode-select", "aria-readonly": readOnly || undefined, "aria-describedby": description === undefined ? undefined : `${id}-help`, children: _jsx(SelectValue, { children: labels[value] }) }), _jsx(ShadcnSelectContent, { children: COLOR_MODES.map((mode) => (_jsx(SelectItem, { value: mode, children: labels[mode] }, mode))) })] }, active ? 'active' : 'inactive'), description === undefined ? null : _jsx("p", { id: `${id}-help`, children: description })] }));
|
|
16
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ColorModeSwitchProps } from '@fastsprout/reacd/adapter-runtime/components/color-mode-switch/index.js';
|
|
2
|
+
export declare function ShadcnColorModeSwitch({ value: _value, resolvedMode, onValueChange, ...properties }: ColorModeSwitchProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ShadcnSwitch } from '../switch/switch.adapter.js';
|
|
3
|
+
export function ShadcnColorModeSwitch({ value: _value, resolvedMode, onValueChange, ...properties }) {
|
|
4
|
+
return (_jsx(ShadcnSwitch, { ...properties, checked: resolvedMode === 'dark', onCheckedChange: (checked) => onValueChange(checked ? 'dark' : 'light') }));
|
|
5
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ColorMode } from '@fastsprout/reacd/adapter-runtime/schema/color-picker/index.js';
|
|
2
|
+
interface ColorHexProps {
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly value: string;
|
|
5
|
+
readonly mode: ColorMode;
|
|
6
|
+
readonly disabled: boolean;
|
|
7
|
+
readonly readOnly: boolean;
|
|
8
|
+
readonly onValueChange: (value: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function ColorHex(props: ColorHexProps): import("react").JSX.Element;
|
|
11
|
+
export {};
|