@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,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/policy.js';
|
|
3
|
+
import { Button } from '../vendor/ui/button.js';
|
|
4
|
+
import { ShadcnIcon } from '../icon/icon.adapter.js';
|
|
5
|
+
import { ELEMENT_BUTTON_VARIANTS } from '../element/variants.js';
|
|
6
|
+
export function ShadcnButton({ label, onPress, intent, disabled, leadingIcon, trailingIcon, loading, loadingLabel, }) {
|
|
7
|
+
return (_jsxs(Button, { className: "reacd-node reacd-button", variant: ELEMENT_BUTTON_VARIANTS[intent ?? DEFAULTS.buttonIntent], type: "button", "data-intent": intent ?? DEFAULTS.buttonIntent, disabled: disabled || loading, "aria-busy": loading || undefined, onClick: () => onPress(), children: [loading ? (_jsx(ShadcnIcon, { name: "loading", decorative: true })) : leadingIcon === undefined ? null : (_jsx(ShadcnIcon, { name: leadingIcon, decorative: true })), _jsx("span", { className: "reacd-button-label", children: loading ? (loadingLabel ?? label) : label }), trailingIcon === undefined ? null : (_jsx(ShadcnIcon, { name: trailingIcon, decorative: true }))] }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TemporalLimits, TemporalRange } from '@fastsprout/reacd/adapter-runtime/core/date-time.js';
|
|
2
|
+
export declare function toCalendarDate(value: string): Date;
|
|
3
|
+
export declare function fromCalendarDate(value: Date): string;
|
|
4
|
+
export declare function calendarInitialDate({ value, referenceDate, min, max, }: TemporalLimits & {
|
|
5
|
+
value: string | null | TemporalRange;
|
|
6
|
+
referenceDate: string;
|
|
7
|
+
}): Date;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CALENDAR_POLICY } from '@fastsprout/reacd/adapter-runtime/core/calendar-policy.js';
|
|
2
|
+
export function toCalendarDate(value) {
|
|
3
|
+
const parts = value.split('-');
|
|
4
|
+
const date = new Date(0);
|
|
5
|
+
date.setUTCFullYear(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2]));
|
|
6
|
+
date.setUTCHours(CALENDAR_POLICY.utcHour, 0, 0, 0);
|
|
7
|
+
return date;
|
|
8
|
+
}
|
|
9
|
+
export function fromCalendarDate(value) {
|
|
10
|
+
const year = String(value.getUTCFullYear()).padStart(CALENDAR_POLICY.yearDigits, '0');
|
|
11
|
+
const month = String(value.getUTCMonth() + 1).padStart(CALENDAR_POLICY.partDigits, '0');
|
|
12
|
+
const day = String(value.getUTCDate()).padStart(CALENDAR_POLICY.partDigits, '0');
|
|
13
|
+
return `${year}-${month}-${day}`;
|
|
14
|
+
}
|
|
15
|
+
export function calendarInitialDate({ value, referenceDate, min, max, }) {
|
|
16
|
+
let selected = typeof value === 'object' && value !== null
|
|
17
|
+
? (value.start ?? value.end ?? referenceDate)
|
|
18
|
+
: (value ?? referenceDate);
|
|
19
|
+
if (min !== undefined && selected < min)
|
|
20
|
+
selected = min;
|
|
21
|
+
if (max !== undefined && selected > max)
|
|
22
|
+
selected = max;
|
|
23
|
+
return toCalendarDate(selected);
|
|
24
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from '../vendor/ui/button.js';
|
|
3
|
+
import { fromCalendarDate } from './calendar-date.js';
|
|
4
|
+
export function CalendarDayButton({ day, modifiers, ...properties }) {
|
|
5
|
+
return (_jsx(Button, { ...properties, ref: (element) => {
|
|
6
|
+
if (element !== null && modifiers['focused'])
|
|
7
|
+
element.focus();
|
|
8
|
+
}, variant: "ghost", className: "reacd-calendar-day", "data-calendar-day": fromCalendarDate(day.date), "data-selected": modifiers['selected'] || undefined }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
import type { CalendarProps } from '@fastsprout/reacd/adapter-runtime/components/calendar/index.js';
|
|
3
|
+
export declare function CalendarFormBridge({ properties, region, }: {
|
|
4
|
+
properties: CalendarProps;
|
|
5
|
+
region: RefObject<HTMLDivElement | null>;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function CalendarFormBridge({ properties, region, }) {
|
|
3
|
+
const { name, disabled, required } = properties;
|
|
4
|
+
const complete = properties.mode === 'range'
|
|
5
|
+
? properties.value.start !== null && properties.value.end !== null
|
|
6
|
+
: properties.value !== null;
|
|
7
|
+
return (_jsxs(_Fragment, { children: [properties.mode === 'range' ? (_jsxs(_Fragment, { children: [_jsx("input", { type: "hidden", name: name === undefined ? undefined : `${name}.start`, value: properties.value.start ?? '', disabled: disabled }), _jsx("input", { type: "hidden", name: name === undefined ? undefined : `${name}.end`, value: properties.value.end ?? '', disabled: disabled })] })) : (_jsx("input", { type: "hidden", name: name, value: properties.value ?? '', disabled: disabled })), _jsx("input", { className: "reacd-calendar-validation", tabIndex: -1, "aria-hidden": "true", defaultValue: complete ? 'selected' : '', required: required, disabled: disabled, onInvalid: (event) => {
|
|
8
|
+
event.preventDefault();
|
|
9
|
+
region.current?.focus();
|
|
10
|
+
} }, String(complete))] }));
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function calendarLocalization(locale: string): {
|
|
2
|
+
formatters: {
|
|
3
|
+
formatCaption: (value: Date) => string;
|
|
4
|
+
formatDay: (value: Date) => string;
|
|
5
|
+
formatWeekdayName: (value: Date) => string;
|
|
6
|
+
};
|
|
7
|
+
labels: {
|
|
8
|
+
labelDayButton: (value: Date) => string;
|
|
9
|
+
labelGrid: (value: Date) => string;
|
|
10
|
+
labelWeekday: (value: Date) => string;
|
|
11
|
+
labelNext: () => "Next month";
|
|
12
|
+
labelPrevious: () => "Previous month";
|
|
13
|
+
labelNav: () => "Calendar navigation";
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CALENDAR_DEFAULTS, CALENDAR_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/calendar-policy.js';
|
|
2
|
+
export function calendarLocalization(locale) {
|
|
3
|
+
const options = { calendar: 'gregory', timeZone: CALENDAR_POLICY.timeZone };
|
|
4
|
+
const month = new Intl.DateTimeFormat(locale, {
|
|
5
|
+
...options,
|
|
6
|
+
year: 'numeric',
|
|
7
|
+
month: 'long',
|
|
8
|
+
});
|
|
9
|
+
const full = new Intl.DateTimeFormat(locale, { ...options, dateStyle: 'full' });
|
|
10
|
+
const weekday = new Intl.DateTimeFormat(locale, { ...options, weekday: 'short' });
|
|
11
|
+
const weekdayName = new Intl.DateTimeFormat(locale, { ...options, weekday: 'long' });
|
|
12
|
+
const day = new Intl.NumberFormat(locale, { useGrouping: false });
|
|
13
|
+
return {
|
|
14
|
+
formatters: {
|
|
15
|
+
formatCaption: (value) => month.format(value),
|
|
16
|
+
formatDay: (value) => day.format(value.getUTCDate()),
|
|
17
|
+
formatWeekdayName: (value) => weekday.format(value),
|
|
18
|
+
},
|
|
19
|
+
labels: {
|
|
20
|
+
labelDayButton: (value) => full.format(value),
|
|
21
|
+
labelGrid: (value) => month.format(value),
|
|
22
|
+
labelWeekday: (value) => weekdayName.format(value),
|
|
23
|
+
labelNext: () => CALENDAR_DEFAULTS.nextLabel,
|
|
24
|
+
labelPrevious: () => CALENDAR_DEFAULTS.previousLabel,
|
|
25
|
+
labelNav: () => CALENDAR_DEFAULTS.navigationLabel,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useRef } from 'react';
|
|
3
|
+
import { useDirection } from '@base-ui/react/direction-provider';
|
|
4
|
+
import { DayPicker } from '@daypicker/react';
|
|
5
|
+
import { CALENDAR_DEFAULTS, CALENDAR_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/calendar-policy.js';
|
|
6
|
+
import { DATE_TIME_POLICY } from '@fastsprout/reacd/adapter-runtime/core/date-time-policy.js';
|
|
7
|
+
import { nextCalendarRange } from '@fastsprout/reacd/adapter-runtime/core/calendar-range.js';
|
|
8
|
+
import { CalendarDayButton } from './calendar-day-button.js';
|
|
9
|
+
import { CalendarFormBridge } from './calendar-form-bridge.js';
|
|
10
|
+
import { calendarInitialDate, fromCalendarDate, toCalendarDate, } from './calendar-date.js';
|
|
11
|
+
import { calendarLocalization } from './calendar-localization.js';
|
|
12
|
+
export function ShadcnCalendar(properties) {
|
|
13
|
+
const { label, referenceDate, description, locale = CALENDAR_DEFAULTS.locale, numberOfMonths = CALENDAR_DEFAULTS.numberOfMonths, weekStartsOn = CALENDAR_DEFAULTS.weekStartsOn, disabled = CALENDAR_DEFAULTS.disabled, readOnly = CALENDAR_DEFAULTS.readOnly, required = CALENDAR_DEFAULTS.required, min = DATE_TIME_POLICY.minimumDate, max = DATE_TIME_POLICY.maximumDate, } = properties;
|
|
14
|
+
const id = useId();
|
|
15
|
+
const region = useRef(null);
|
|
16
|
+
const direction = useDirection();
|
|
17
|
+
const common = {
|
|
18
|
+
...calendarLocalization(locale),
|
|
19
|
+
defaultMonth: calendarInitialDate(properties),
|
|
20
|
+
today: toCalendarDate(referenceDate),
|
|
21
|
+
startMonth: toCalendarDate(min),
|
|
22
|
+
endMonth: toCalendarDate(max),
|
|
23
|
+
disabled: disabled
|
|
24
|
+
? true
|
|
25
|
+
: [{ before: toCalendarDate(min) }, { after: toCalendarDate(max) }],
|
|
26
|
+
disableNavigation: disabled,
|
|
27
|
+
timeZone: CALENDAR_POLICY.timeZone,
|
|
28
|
+
numberOfMonths,
|
|
29
|
+
weekStartsOn,
|
|
30
|
+
dir: direction,
|
|
31
|
+
components: { DayButton: CalendarDayButton },
|
|
32
|
+
};
|
|
33
|
+
return (_jsxs("div", { ref: region, role: "group", "aria-labelledby": id, "aria-describedby": description === undefined ? undefined : `${id}-help`, "aria-disabled": disabled, "data-readonly": readOnly, "data-direction": direction, "data-slot": "calendar", tabIndex: -1, className: "reacd-node reacd-calendar", children: [_jsx("span", { id: id, className: "reacd-calendar-label", children: label }), _jsx("div", { className: "reacd-calendar-viewport", role: "region", "aria-label": `${label} grid`, children: properties.mode === 'range' ? (_jsx(DayPicker, { ...common, mode: "range", selected: {
|
|
34
|
+
from: properties.value.start === null
|
|
35
|
+
? undefined
|
|
36
|
+
: toCalendarDate(properties.value.start),
|
|
37
|
+
to: properties.value.end === null
|
|
38
|
+
? undefined
|
|
39
|
+
: toCalendarDate(properties.value.end),
|
|
40
|
+
}, onSelect: (_next, trigger) => {
|
|
41
|
+
if (!disabled && !readOnly)
|
|
42
|
+
properties.onValueChange(nextCalendarRange(properties.value, fromCalendarDate(trigger)));
|
|
43
|
+
} })) : (_jsx(DayPicker, { ...common, mode: "single", selected: properties.value === null ? undefined : toCalendarDate(properties.value), onSelect: (next) => {
|
|
44
|
+
if (!disabled && !readOnly && (!required || next !== undefined))
|
|
45
|
+
properties.onValueChange(next === undefined ? null : fromCalendarDate(next));
|
|
46
|
+
} })) }), _jsx(CalendarFormBridge, { properties: properties, region: region }), description === undefined ? null : (_jsx("span", { id: `${id}-help`, className: "reacd-field-description", children: description }))] }));
|
|
47
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Children } from 'react';
|
|
3
|
+
import { DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/policy.js';
|
|
4
|
+
import { Card, CardHeader, CardFooter } from '../vendor/ui/card.js';
|
|
5
|
+
function hasContent(value) {
|
|
6
|
+
return Children.toArray(value).some((child) => child !== '');
|
|
7
|
+
}
|
|
8
|
+
export function ShadcnCard({ children, spacing, label, header, footer }) {
|
|
9
|
+
const variables = {
|
|
10
|
+
'--reacd-gap': `var(--reacd-${spacing ?? DEFAULTS.spacing})`,
|
|
11
|
+
};
|
|
12
|
+
return (_jsxs(Card, { className: "reacd-node reacd-card", style: variables, role: label === undefined ? undefined : 'region', "aria-label": label, children: [!hasContent(header) ? null : (_jsx(CardHeader, { className: "reacd-card-slot", "data-slot": "reacd-card-header", children: header })), children, !hasContent(footer) ? null : (_jsx(CardFooter, { className: "reacd-card-slot", "data-slot": "reacd-card-footer", children: footer }))] }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, useState } from 'react';
|
|
3
|
+
import { PortalActiveContext, PortalHostContext, } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
|
|
4
|
+
export function CarouselPanel({ children, active, label, index, }) {
|
|
5
|
+
const ancestorActive = useContext(PortalActiveContext);
|
|
6
|
+
const [host, setHost] = useState(null);
|
|
7
|
+
return (_jsxs("fieldset", { className: "reacd-carousel-panel", "data-carousel-index": index, disabled: !active, hidden: !active, inert: !active, role: "group", "aria-roledescription": "slide", "aria-label": label, children: [_jsx(PortalActiveContext.Provider, { value: ancestorActive && active, children: _jsx(PortalHostContext.Provider, { value: host, children: children }) }), _jsx("div", { ref: setHost, className: "reacd-carousel-portal-host" })] }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { CarouselProps } from '@fastsprout/reacd/adapter-runtime/components/carousel/index.js';
|
|
2
|
+
export declare function ShadcnCarousel({ label, items, value, onValueChange, disabled, readOnly, orientation, loop, state, emptyMessage, loadingMessage, errorMessage, retryLabel, onRetry, }: CarouselProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useDirection } from '@base-ui/react/direction-provider';
|
|
3
|
+
import { CAROUSEL_DEFAULTS, CAROUSEL_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/carousel-policy.js';
|
|
4
|
+
import { carouselSlideLabel, carouselTarget, } from '@fastsprout/reacd/adapter-runtime/core/carousel-navigation.js';
|
|
5
|
+
import { Button } from '../vendor/ui/button.js';
|
|
6
|
+
import { CarouselFocusBoundary } from './focus-boundary.js';
|
|
7
|
+
import { CarouselPanel } from './carousel-panel.js';
|
|
8
|
+
export function ShadcnCarousel({ label, items, value, onValueChange, disabled, readOnly, orientation = CAROUSEL_DEFAULTS.orientation, loop = CAROUSEL_DEFAULTS.loop, state = CAROUSEL_DEFAULTS.state, emptyMessage = CAROUSEL_DEFAULTS.emptyMessage, loadingMessage = CAROUSEL_DEFAULTS.loadingMessage, errorMessage = CAROUSEL_DEFAULTS.errorMessage, retryLabel = CAROUSEL_DEFAULTS.retryLabel, onRetry, }) {
|
|
9
|
+
const direction = useDirection();
|
|
10
|
+
const protectedValue = disabled || readOnly;
|
|
11
|
+
function move(key) {
|
|
12
|
+
const next = carouselTarget(value, items.length, key, orientation, direction, loop);
|
|
13
|
+
if (next !== undefined && next !== value)
|
|
14
|
+
onValueChange(next);
|
|
15
|
+
}
|
|
16
|
+
function onKeyDown(event) {
|
|
17
|
+
if (event.target !== event.currentTarget || protectedValue || state !== 'ready')
|
|
18
|
+
return;
|
|
19
|
+
const next = carouselTarget(value, items.length, event.key, orientation, direction, loop);
|
|
20
|
+
if (next !== undefined) {
|
|
21
|
+
event.preventDefault();
|
|
22
|
+
move(event.key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const forward = orientation === 'vertical'
|
|
26
|
+
? 'ArrowDown'
|
|
27
|
+
: direction === 'rtl'
|
|
28
|
+
? 'ArrowLeft'
|
|
29
|
+
: 'ArrowRight';
|
|
30
|
+
const backward = orientation === 'vertical'
|
|
31
|
+
? 'ArrowUp'
|
|
32
|
+
: direction === 'rtl'
|
|
33
|
+
? 'ArrowRight'
|
|
34
|
+
: 'ArrowLeft';
|
|
35
|
+
const currentItem = items[value];
|
|
36
|
+
const activeKey = state === 'ready'
|
|
37
|
+
? currentItem === undefined
|
|
38
|
+
? 'empty'
|
|
39
|
+
: `slide:${currentItem.id}`
|
|
40
|
+
: state;
|
|
41
|
+
return (_jsx(CarouselFocusBoundary, { label: label, value: value, activeKey: activeKey, onKeyDown: onKeyDown, children: state === 'loading' ? (_jsx("p", { role: "status", children: loadingMessage })) : state === 'error' ? (_jsxs("div", { children: [_jsx("p", { role: "alert", children: errorMessage }), onRetry === undefined ? null : (_jsx(Button, { type: "button", className: "reacd-button", onClick: () => onRetry(), children: retryLabel }))] })) : items.length === 0 ? (_jsx("p", { role: "status", children: emptyMessage })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "reacd-carousel-panels", "aria-live": "polite", children: items.map((item, index) => (_jsx(CarouselPanel, { index: index, active: index === value, label: carouselSlideLabel(item.label, index, items.length), children: item.children }, item.id))) }), items.length < CAROUSEL_POLICY.minimumNavigationItems ? null : (_jsxs("div", { className: "reacd-carousel-controls", children: [_jsx(Button, { type: "button", className: "reacd-button", variant: "outline", disabled: protectedValue || (!loop && value === 0), onClick: () => move(backward), children: CAROUSEL_DEFAULTS.previousLabel }), _jsx(Button, { type: "button", className: "reacd-button", variant: "outline", disabled: protectedValue ||
|
|
42
|
+
(!loop && value === items.length - CAROUSEL_POLICY.step), onClick: () => move(forward), children: CAROUSEL_DEFAULTS.nextLabel }), _jsx("div", { role: "group", "aria-label": CAROUSEL_DEFAULTS.chooserLabel, className: "reacd-carousel-chooser", children: items.map((item, index) => (_jsx(Button, { type: "button", className: "reacd-button", variant: "ghost", "aria-label": `${item.label}, slide ${index + CAROUSEL_POLICY.step}`, "aria-pressed": index === value, disabled: protectedValue || index === value, onClick: () => onValueChange(index), children: index + CAROUSEL_POLICY.step }, item.id))) })] }))] })) }));
|
|
43
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component } from 'react';
|
|
2
|
+
import type { KeyboardEvent, ReactNode } from 'react';
|
|
3
|
+
interface FocusProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
label: string;
|
|
6
|
+
value: number;
|
|
7
|
+
activeKey: string;
|
|
8
|
+
onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class CarouselFocusBoundary extends Component<FocusProps, Record<string, never>, boolean> {
|
|
11
|
+
readonly container: import("react").RefObject<HTMLDivElement | null>;
|
|
12
|
+
getSnapshotBeforeUpdate(previous: Readonly<FocusProps>): boolean;
|
|
13
|
+
componentDidUpdate(_previous: Readonly<FocusProps>, _state: Readonly<Record<string, never>>, repair: boolean): void;
|
|
14
|
+
render(): ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Component, createRef } from 'react';
|
|
3
|
+
export class CarouselFocusBoundary extends Component {
|
|
4
|
+
container = createRef();
|
|
5
|
+
getSnapshotBeforeUpdate(previous) {
|
|
6
|
+
const root = this.container.current;
|
|
7
|
+
if (previous.activeKey === this.props.activeKey || root === null)
|
|
8
|
+
return false;
|
|
9
|
+
const panel = root.querySelector(`[data-carousel-index="${previous.value}"]`);
|
|
10
|
+
return panel !== null && panel.contains(root.ownerDocument.activeElement);
|
|
11
|
+
}
|
|
12
|
+
componentDidUpdate(_previous, _state, repair) {
|
|
13
|
+
if (repair)
|
|
14
|
+
this.container.current?.focus();
|
|
15
|
+
}
|
|
16
|
+
render() {
|
|
17
|
+
return (_jsx("div", { ref: this.container, className: "reacd-node reacd-carousel", role: "region", "aria-label": this.props.label, "aria-roledescription": "carousel", tabIndex: 0, onKeyDown: this.props.onKeyDown, children: this.props.children }));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { EditorialEntrySurface } from '@fastsprout/reacd/adapter-runtime/renderer/editorial/editorial-entry.js';
|
|
3
|
+
export function ShadcnChangelogVersion(props) {
|
|
4
|
+
return _jsx(EditorialEntrySurface, { ...props, kind: "changelog" });
|
|
5
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ChangelogVersionsProps } from '@fastsprout/reacd/adapter-runtime/components/changelog-versions/index.js';
|
|
3
|
+
export declare function ShadcnChangelogVersions({ children, versions, indicator, }: ChangelogVersionsProps): ReactNode;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Children } from 'react';
|
|
3
|
+
import { ChangelogVersion } from '@fastsprout/reacd/adapter-runtime/components/changelog-version/changelog-version.js';
|
|
4
|
+
import { EDITORIAL_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/editorial-policy.js';
|
|
5
|
+
import { EditorialIndicatorContext } from '@fastsprout/reacd/adapter-runtime/renderer/editorial/indicator-context.js';
|
|
6
|
+
export function ShadcnChangelogVersions({ children, versions = EDITORIAL_DEFAULTS.entries, indicator = EDITORIAL_DEFAULTS.indicator, }) {
|
|
7
|
+
return (_jsx(EditorialIndicatorContext.Provider, { value: indicator, children: _jsxs("ul", { className: "reacd-node reacd-editorial-collection", "data-orientation": "vertical", children: [versions.map(({ key, ...entry }) => (_jsx("li", { children: _jsx(ChangelogVersion, { ...entry }) }, key))), Children.map(children, (child) => (child == null ? null : _jsx("li", { children: child })))] }) }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChartProps } from '@fastsprout/reacd/adapter-runtime/components/chart/index.js';
|
|
2
|
+
export declare function ChartCartesian({ series, categories, kind, reverse, id, }: Pick<ChartProps, 'series' | 'categories' | 'kind'> & {
|
|
3
|
+
reverse: boolean;
|
|
4
|
+
id: string;
|
|
5
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CHART_POLICY as P } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
|
|
3
|
+
import { chartPoints, chartDomain, chartY, chartLinePath, chartAreaPath, } from '@fastsprout/reacd/adapter-runtime/core/chart-geometry.js';
|
|
4
|
+
import { ChartMarker, ChartPattern } from './patterns.js';
|
|
5
|
+
import { chartDash } from './legend.js';
|
|
6
|
+
export function ChartCartesian({ series, categories, kind, reverse, id, }) {
|
|
7
|
+
const domain = chartDomain(series.map((item) => item.values));
|
|
8
|
+
const baseline = chartY(P.zero, domain);
|
|
9
|
+
const barWidth = (((P.width - P.padding * P.midpoint) / (categories.length + P.unitDomain)) *
|
|
10
|
+
P.barGroupRatio) /
|
|
11
|
+
series.length;
|
|
12
|
+
return (_jsxs(_Fragment, { children: [_jsx("defs", { children: series.map((item, index) => (_jsx(ChartPattern, { id: id, index: index }, item.id))) }), _jsx("line", { x1: P.padding, x2: P.width - P.padding, y1: baseline, y2: baseline, stroke: "currentColor", strokeWidth: P.strokeWidth }), series.map((item, index) => (_jsx("g", { "data-series": item.id, children: chartPoints(item.values, domain, reverse).map((points, segment) => (_jsx("g", { children: kind === 'bar' ? (points.map((point) => (_jsx("rect", { x: point.x + (index - series.length / P.midpoint) * barWidth, y: Math.min(baseline, point.y), width: barWidth, height: Math.abs(baseline - point.y), fill: `url(#${id}-${index})`, stroke: "currentColor", strokeWidth: P.strokeWidth }, point.index)))) : (_jsxs(_Fragment, { children: [_jsx("path", { d: kind === 'area'
|
|
13
|
+
? chartAreaPath(points, baseline)
|
|
14
|
+
: chartLinePath(points), fill: kind === 'area' ? `url(#${id}-${index})` : 'none', stroke: "currentColor", strokeWidth: P.strokeWidth, strokeDasharray: chartDash(index) }), points.map((point) => (_jsx(ChartMarker, { x: point.x, y: point.y, index: index }, point.index)))] })) }, segment))) }, item.id)))] }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { useDirection } from '@base-ui/react/direction-provider';
|
|
4
|
+
import { CHART_POLICY as P, CHART_DEFAULTS as D, } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
|
|
5
|
+
import { chartDonutSlices } from '@fastsprout/reacd/adapter-runtime/core/chart-geometry.js';
|
|
6
|
+
import { ChartCartesian } from './cartesian.js';
|
|
7
|
+
import { ChartPattern } from './patterns.js';
|
|
8
|
+
export function ChartGraphic({ kind = D.kind, ...props }) {
|
|
9
|
+
const id = useId();
|
|
10
|
+
const direction = useDirection();
|
|
11
|
+
return (_jsxs("svg", { className: "reacd-chart-graphic", role: "img", viewBox: `${P.zero} ${P.zero} ${P.width} ${P.height}`, "aria-labelledby": `${id}-title`, "aria-describedby": `${id}-description`, children: [_jsx("title", { id: `${id}-title`, children: props.label }), _jsx("desc", { id: `${id}-description`, children: props.description }), kind === 'donut' ? (_jsxs(_Fragment, { children: [_jsx("defs", { children: props.categories.map((item, index) => (_jsx(ChartPattern, { id: id, index: index }, item.id))) }), props.series
|
|
12
|
+
.flatMap((item) => chartDonutSlices(item.values))
|
|
13
|
+
.map((slice) => (_jsx("path", { "data-slice": slice.index, d: slice.path, fill: `url(#${id}-${slice.index})`, stroke: "currentColor", strokeWidth: P.strokeWidth }, slice.index)))] })) : (_jsx(ChartCartesian, { ...props, kind: kind, reverse: direction === 'rtl', id: id }))] }));
|
|
14
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CHART_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
|
|
3
|
+
export function ChartTable({ label, categories, series }) {
|
|
4
|
+
const caption = `${label} data`;
|
|
5
|
+
return (_jsx("div", { className: "reacd-table-scroll", role: "region", "aria-label": caption, tabIndex: 0, children: _jsxs("table", { className: "reacd-table reacd-chart-table", children: [_jsx("caption", { children: caption }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: CHART_DEFAULTS.categoryLabel }), series.map((item) => (_jsx("th", { scope: "col", children: item.label }, item.id)))] }) }), _jsx("tbody", { children: categories.map((category, index) => (_jsxs("tr", { children: [_jsx("th", { scope: "row", children: category.label }), series.map((item) => (_jsx("td", { children: item.values.at(index) ?? CHART_DEFAULTS.missingValue }, item.id)))] }, category.id))) })] }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CHART_DEFAULTS as D, CHART_POLICY as P, } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
|
|
3
|
+
import { ChartGraphic } from './chart-graphic.js';
|
|
4
|
+
import { ChartTable } from './chart-table.js';
|
|
5
|
+
import { ChartLegend } from './legend.js';
|
|
6
|
+
import { Button } from '../vendor/ui/button.js';
|
|
7
|
+
export function ShadcnChart({ kind = D.kind, state, emptyMessage = D.emptyMessage, loadingMessage = D.loadingMessage, errorMessage = D.errorMessage, retryLabel = D.retryLabel, onRetry, ...data }) {
|
|
8
|
+
if (state === 'loading')
|
|
9
|
+
return _jsx("p", { role: "status", children: loadingMessage });
|
|
10
|
+
if (state === 'error')
|
|
11
|
+
return (_jsxs("div", { className: "reacd-vstack", children: [_jsx("p", { role: "alert", children: errorMessage }), onRetry === undefined ? null : (_jsx(Button, { className: "reacd-button", type: "button", onClick: () => onRetry(), children: retryLabel }))] }));
|
|
12
|
+
if (data.categories.length === P.zero || data.series.length === P.zero)
|
|
13
|
+
return _jsx("p", { role: "status", children: emptyMessage });
|
|
14
|
+
const emptyDonut = kind === 'donut' &&
|
|
15
|
+
!data.series.some((item) => item.values.some((value) => value !== null && value > P.zero));
|
|
16
|
+
return (_jsxs("figure", { className: "reacd-node reacd-chart", children: [_jsx("figcaption", { children: data.label }), _jsx("p", { children: data.description }), emptyDonut ? (_jsx("p", { role: "status", children: emptyMessage })) : (_jsx(ChartGraphic, { ...data, kind: kind })), _jsx(ChartLegend, { ...data, kind: kind }), _jsx(ChartTable, { ...data })] }));
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { CHART_POLICY as P, CHART_DEFAULTS as D, } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
|
|
4
|
+
import { ChartMarker, ChartPattern } from './patterns.js';
|
|
5
|
+
export function chartDash(index) {
|
|
6
|
+
return index === P.zero
|
|
7
|
+
? 'none'
|
|
8
|
+
: `${(index + P.unitDomain) * P.dashUnit} ${P.dashGap}`;
|
|
9
|
+
}
|
|
10
|
+
export function ChartLegend({ kind, categories, series }) {
|
|
11
|
+
const id = useId();
|
|
12
|
+
const items = kind === 'donut' ? categories : series;
|
|
13
|
+
return (_jsx("ul", { className: "reacd-chart-legend", "aria-label": D.seriesLabel, children: items.map((item, index) => (_jsxs("li", { children: [_jsxs("svg", { "aria-hidden": "true", viewBox: `${P.zero} ${P.zero} ${P.padding} ${P.padding}`, children: [_jsx("defs", { children: _jsx(ChartPattern, { id: id, index: index }) }), kind === 'line' ? (_jsxs(_Fragment, { children: [_jsx("line", { x1: P.zero, x2: P.padding, y1: P.padding / P.midpoint, y2: P.padding / P.midpoint, stroke: "currentColor", strokeWidth: P.strokeWidth, strokeDasharray: chartDash(index) }), _jsx(ChartMarker, { x: P.padding / P.midpoint, y: P.padding / P.midpoint, index: index })] })) : (_jsx("rect", { x: P.markerRadius, y: P.markerRadius, width: P.padding - P.markerRadius * P.midpoint, height: P.padding - P.markerRadius * P.midpoint, fill: `url(#${id}-${index})`, stroke: "currentColor", strokeWidth: P.strokeWidth }))] }), item.label] }, item.id))) }));
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CHART_POLICY as P } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
|
|
3
|
+
export function ChartPattern({ id, index }) {
|
|
4
|
+
return (_jsx("pattern", { id: `${id}-${index}`, patternUnits: "userSpaceOnUse", width: P.patternSize, height: P.patternSize, patternTransform: `rotate(${index * P.patternRotationStep})`, children: _jsx("path", { d: `M ${P.zero} ${P.zero} L ${P.zero} ${P.patternSize}`, fill: "none", stroke: "currentColor", strokeWidth: P.strokeWidth }) }));
|
|
5
|
+
}
|
|
6
|
+
export function ChartMarker({ x, y, index }) {
|
|
7
|
+
return index % P.midpoint === P.zero ? (_jsx("circle", { cx: x, cy: y, r: P.markerRadius, fill: "currentColor" })) : (_jsx("rect", { x: x - P.markerRadius, y: y - P.markerRadius, width: P.markerRadius * P.midpoint, height: P.markerRadius * P.midpoint, fill: "currentColor" }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { ChatAttachmentProps } from '@fastsprout/reacd/adapter-runtime/components/chat-attachment/index.js';
|
|
2
|
+
export declare function ShadcnChatAttachment({ name, mediaType, url, description, status, onRemove, disabled, }: ChatAttachmentProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { CHAT_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
|
|
4
|
+
import { useChatLoadingRole } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
|
|
5
|
+
import { Button } from '../vendor/ui/button.js';
|
|
6
|
+
import { Card } from '../vendor/ui/card.js';
|
|
7
|
+
export function ShadcnChatAttachment({ name, mediaType, url, description, status = CHAT_DEFAULTS.attachmentStatus, onRemove, disabled, }) {
|
|
8
|
+
const [failedUrl, setFailedUrl] = useState();
|
|
9
|
+
const loadingRole = useChatLoadingRole();
|
|
10
|
+
const image = mediaType.startsWith('image/') && url !== undefined && url !== failedUrl;
|
|
11
|
+
return (_jsxs(Card, { className: "reacd-node reacd-chat-attachment", "data-status": status, "aria-label": name, children: [image ? (_jsx("img", { className: "reacd-chat-file-image", src: url, alt: name, "aria-busy": status === 'uploading', decoding: "async", loading: "lazy", referrerPolicy: "no-referrer", onError: () => setFailedUrl(url) })) : (_jsx("span", { className: "reacd-chat-file-kind", "aria-hidden": "true", children: CHAT_DEFAULTS.fileLabel })), _jsxs("span", { className: "reacd-chat-file-description", children: [_jsx("span", { className: "reacd-chat-file-name", "aria-busy": status === 'uploading', children: name }), _jsx("span", { "aria-busy": status === 'uploading', children: description ?? mediaType }), status === 'uploading' && (_jsx("span", { role: loadingRole, children: CHAT_DEFAULTS.uploadingLabel })), status === 'error' && (_jsx("span", { role: "alert", children: CHAT_DEFAULTS.uploadErrorLabel }))] }), onRemove !== undefined && (_jsx(Button, { className: "reacd-button", variant: "outline", type: "button", disabled: disabled, onClick: () => onRemove(), children: `${CHAT_DEFAULTS.removePrefix} ${name}` }))] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export declare function ChatDisclosure({ label, open, onOpenChange, disabled, active, children, }: {
|
|
3
|
+
label: string;
|
|
4
|
+
open: boolean;
|
|
5
|
+
onOpenChange: (value: boolean) => void;
|
|
6
|
+
disabled: boolean | undefined;
|
|
7
|
+
active: boolean;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
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 { PortalActiveContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
|
|
5
|
+
import { ShadcnChatShimmer } from '../chat-shimmer/chat-shimmer.adapter.js';
|
|
6
|
+
import { Button } from '../vendor/ui/button.js';
|
|
7
|
+
export function ChatDisclosure({ label, open, onOpenChange, disabled, active, children, }) {
|
|
8
|
+
const ancestorActive = useContext(PortalActiveContext);
|
|
9
|
+
return (_jsxs(Primitive.Root, { className: "reacd-node reacd-collapsible reacd-chat-disclosure", open: open, disabled: disabled, onOpenChange: (value) => onOpenChange(value), children: [_jsxs(Primitive.Trigger, { "aria-label": label, className: "reacd-collapsible-trigger", render: _jsx(Button, { variant: "outline" }), children: [_jsx(ShadcnChatShimmer, { text: label, active: active }), _jsx("span", { "aria-hidden": "true", children: open ? '−' : '+' })] }), _jsx(Primitive.Panel, { className: "reacd-collapsible-panel reacd-chat-feedback-details", role: "region", "aria-label": label, hidden: !open, "aria-busy": active, children: _jsx(PortalActiveContext.Provider, { value: open && ancestorActive, children: children }) })] }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { CHAT_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
|
|
4
|
+
import { useChatLoadingRole } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
|
|
5
|
+
import { ShadcnChatAttachment } from '../chat-attachment/chat-attachment.adapter.js';
|
|
6
|
+
import { Button } from '../vendor/ui/button.js';
|
|
7
|
+
import { Card } from '../vendor/ui/card.js';
|
|
8
|
+
export function ShadcnChatMessage({ id, author, role, content, attachments, actions, status = CHAT_DEFAULTS.messageStatus, error, }) {
|
|
9
|
+
const authorId = useId();
|
|
10
|
+
const loadingRole = useChatLoadingRole();
|
|
11
|
+
return (_jsx("article", { className: "reacd-node reacd-chat-message", "data-message-id": id, "data-role": role, "data-status": status, "aria-labelledby": authorId, children: _jsxs(Card, { className: "reacd-chat-message-content", children: [_jsxs("header", { className: "reacd-chat-message-author", children: [_jsx("strong", { id: authorId, children: author }), _jsx("span", { children: role })] }), _jsx("p", { className: "reacd-chat-message-text", "aria-busy": status === 'streaming', children: content }), attachments !== undefined && (_jsx("ul", { className: "reacd-chat-attachments", "aria-label": "Message attachments", children: attachments.map((attachment, index) => (_jsx("li", { children: _jsx(ShadcnChatAttachment, { ...attachment }) }, index))) })), status === 'streaming' && (_jsx("p", { role: loadingRole, children: CHAT_DEFAULTS.streamingLabel })), status === 'error' && _jsx("p", { role: "alert", children: error ?? CHAT_DEFAULTS.errorLabel }), actions !== undefined && (_jsx("div", { className: "reacd-chat-actions", role: "group", "aria-label": "Message actions", children: actions.map((action) => (_jsx(Button, { className: "reacd-button", variant: "outline", type: "button", onClick: () => action.onPress(), disabled: action.disabled, children: action.label }, action.id))) }))] }) }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CHAT_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
|
|
3
|
+
import { ChatLoadingScopeContext } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
|
|
4
|
+
import { ShadcnChatMessage } from '../chat-message/chat-message.adapter.js';
|
|
5
|
+
import { Button } from '../vendor/ui/button.js';
|
|
6
|
+
import { useFollowLatest } from './use-follow-latest.js';
|
|
7
|
+
export function ShadcnChatMessages({ label, messages, status = CHAT_DEFAULTS.status, error, onRetry, followLatest = CHAT_DEFAULTS.followLatest, emptyLabel = CHAT_DEFAULTS.emptyLabel, }) {
|
|
8
|
+
const { viewport, latest, scroll, showLatest } = useFollowLatest(followLatest, messages, status);
|
|
9
|
+
const pending = status === 'submitted' || status === 'streaming';
|
|
10
|
+
return (_jsxs("section", { className: "reacd-node reacd-chat-messages", "aria-label": label, children: [_jsx(ChatLoadingScopeContext, { value: pending, children: _jsxs("div", { className: "reacd-chat-log", ref: viewport, role: "log", "aria-label": label, "aria-live": "polite", "aria-atomic": "false", "aria-busy": pending, tabIndex: 0, onScroll: scroll, children: [messages.length === 0 && status === 'ready' && _jsx("p", { children: emptyLabel }), messages.map((message) => (_jsx(ShadcnChatMessage, { ...message }, message.id)))] }) }), pending && (_jsx("p", { role: "status", children: status === 'submitted'
|
|
11
|
+
? CHAT_DEFAULTS.submittedLabel
|
|
12
|
+
: CHAT_DEFAULTS.streamingLabel })), status === 'error' && (_jsxs("div", { className: "reacd-chat-error", children: [_jsx("p", { role: "alert", children: error ?? CHAT_DEFAULTS.errorLabel }), onRetry !== undefined && (_jsx(Button, { className: "reacd-button", type: "button", onClick: () => onRetry(), children: CHAT_DEFAULTS.retryLabel }))] })), showLatest && (_jsx(Button, { className: "reacd-button", variant: "outline", type: "button", onClick: latest, children: CHAT_DEFAULTS.latestLabel }))] }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useLayoutEffect, useRef, useState } from 'react';
|
|
2
|
+
import { CHAT_POLICY } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
|
|
3
|
+
export function useFollowLatest(enabled, revision, status) {
|
|
4
|
+
const viewport = useRef(null);
|
|
5
|
+
const following = useRef(true);
|
|
6
|
+
const [showLatest, setShowLatest] = useState(false);
|
|
7
|
+
function follow() {
|
|
8
|
+
const element = viewport.current;
|
|
9
|
+
if (element === null)
|
|
10
|
+
return;
|
|
11
|
+
element.scrollTop = element.scrollHeight;
|
|
12
|
+
following.current = true;
|
|
13
|
+
setShowLatest(false);
|
|
14
|
+
return element;
|
|
15
|
+
}
|
|
16
|
+
function latest() {
|
|
17
|
+
follow()?.focus({ preventScroll: true });
|
|
18
|
+
}
|
|
19
|
+
function scroll() {
|
|
20
|
+
const element = viewport.current;
|
|
21
|
+
if (element === null || !enabled)
|
|
22
|
+
return;
|
|
23
|
+
following.current =
|
|
24
|
+
element.scrollHeight - element.scrollTop - element.clientHeight <=
|
|
25
|
+
CHAT_POLICY.bottomDistancePx;
|
|
26
|
+
setShowLatest(!following.current);
|
|
27
|
+
}
|
|
28
|
+
useLayoutEffect(() => {
|
|
29
|
+
if (enabled && following.current)
|
|
30
|
+
follow();
|
|
31
|
+
}, [enabled, revision, status]);
|
|
32
|
+
return { viewport, latest, scroll, showLatest: enabled && showLatest };
|
|
33
|
+
}
|