@rookcom/monarch-react 0.0.0-stage → 0.3.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/CHANGELOG.md +51 -0
- package/README.md +4 -2
- package/dist/components/actions/button/button.d.ts +40 -0
- package/dist/components/actions/button/button.d.ts.map +1 -0
- package/dist/components/actions/button/button.js +69 -0
- package/dist/components/actions/button/button.js.map +1 -0
- package/dist/components/actions/button/index.d.ts +2 -0
- package/dist/components/actions/button/index.d.ts.map +1 -0
- package/dist/components/actions/button/index.js +2 -0
- package/dist/components/actions/button/index.js.map +1 -0
- package/dist/components/actions/copy-button/copy-button.d.ts +71 -0
- package/dist/components/actions/copy-button/copy-button.d.ts.map +1 -0
- package/dist/components/actions/copy-button/copy-button.js +150 -0
- package/dist/components/actions/copy-button/copy-button.js.map +1 -0
- package/dist/components/actions/copy-button/index.d.ts +2 -0
- package/dist/components/actions/copy-button/index.d.ts.map +1 -0
- package/dist/components/actions/copy-button/index.js +2 -0
- package/dist/components/actions/copy-button/index.js.map +1 -0
- package/dist/components/actions/copy-field/copy-field.d.ts +47 -0
- package/dist/components/actions/copy-field/copy-field.d.ts.map +1 -0
- package/dist/components/actions/copy-field/copy-field.js +37 -0
- package/dist/components/actions/copy-field/copy-field.js.map +1 -0
- package/dist/components/actions/copy-field/index.d.ts +2 -0
- package/dist/components/actions/copy-field/index.d.ts.map +1 -0
- package/dist/components/actions/copy-field/index.js +2 -0
- package/dist/components/actions/copy-field/index.js.map +1 -0
- package/dist/components/billing/money/index.d.ts +2 -0
- package/dist/components/billing/money/index.d.ts.map +1 -0
- package/dist/components/billing/money/index.js +2 -0
- package/dist/components/billing/money/index.js.map +1 -0
- package/dist/components/billing/money/money.d.ts +44 -0
- package/dist/components/billing/money/money.d.ts.map +1 -0
- package/dist/components/billing/money/money.js +75 -0
- package/dist/components/billing/money/money.js.map +1 -0
- package/dist/components/data-display/accordion/accordion.d.ts +17 -0
- package/dist/components/data-display/accordion/accordion.d.ts.map +1 -0
- package/dist/components/data-display/accordion/accordion.js +23 -0
- package/dist/components/data-display/accordion/accordion.js.map +1 -0
- package/dist/components/data-display/accordion/index.d.ts +2 -0
- package/dist/components/data-display/accordion/index.d.ts.map +1 -0
- package/dist/components/data-display/accordion/index.js +2 -0
- package/dist/components/data-display/accordion/index.js.map +1 -0
- package/dist/components/data-display/badge/badge.d.ts +13 -0
- package/dist/components/data-display/badge/badge.d.ts.map +1 -0
- package/dist/components/data-display/badge/badge.js +7 -0
- package/dist/components/data-display/badge/badge.js.map +1 -0
- package/dist/components/data-display/badge/index.d.ts +2 -0
- package/dist/components/data-display/badge/index.d.ts.map +1 -0
- package/dist/components/data-display/badge/index.js +2 -0
- package/dist/components/data-display/badge/index.js.map +1 -0
- package/dist/components/data-display/card/card.d.ts +18 -0
- package/dist/components/data-display/card/card.d.ts.map +1 -0
- package/dist/components/data-display/card/card.js +21 -0
- package/dist/components/data-display/card/card.js.map +1 -0
- package/dist/components/data-display/card/index.d.ts +2 -0
- package/dist/components/data-display/card/index.d.ts.map +1 -0
- package/dist/components/data-display/card/index.js +2 -0
- package/dist/components/data-display/card/index.js.map +1 -0
- package/dist/components/data-display/description-list/description-list.d.ts +17 -0
- package/dist/components/data-display/description-list/description-list.d.ts.map +1 -0
- package/dist/components/data-display/description-list/description-list.js +10 -0
- package/dist/components/data-display/description-list/description-list.js.map +1 -0
- package/dist/components/data-display/description-list/index.d.ts +2 -0
- package/dist/components/data-display/description-list/index.d.ts.map +1 -0
- package/dist/components/data-display/description-list/index.js +2 -0
- package/dist/components/data-display/description-list/index.js.map +1 -0
- package/dist/components/data-display/progress-bar/index.d.ts +2 -0
- package/dist/components/data-display/progress-bar/index.d.ts.map +1 -0
- package/dist/components/data-display/progress-bar/index.js +2 -0
- package/dist/components/data-display/progress-bar/index.js.map +1 -0
- package/dist/components/data-display/progress-bar/progress-bar.d.ts +57 -0
- package/dist/components/data-display/progress-bar/progress-bar.d.ts.map +1 -0
- package/dist/components/data-display/progress-bar/progress-bar.js +57 -0
- package/dist/components/data-display/progress-bar/progress-bar.js.map +1 -0
- package/dist/components/data-display/relative-time/index.d.ts +2 -0
- package/dist/components/data-display/relative-time/index.d.ts.map +1 -0
- package/dist/components/data-display/relative-time/index.js +2 -0
- package/dist/components/data-display/relative-time/index.js.map +1 -0
- package/dist/components/data-display/relative-time/relative-time.d.ts +66 -0
- package/dist/components/data-display/relative-time/relative-time.d.ts.map +1 -0
- package/dist/components/data-display/relative-time/relative-time.js +102 -0
- package/dist/components/data-display/relative-time/relative-time.js.map +1 -0
- package/dist/components/data-display/stat-card/index.d.ts +2 -0
- package/dist/components/data-display/stat-card/index.d.ts.map +1 -0
- package/dist/components/data-display/stat-card/index.js +2 -0
- package/dist/components/data-display/stat-card/index.js.map +1 -0
- package/dist/components/data-display/stat-card/stat-card.d.ts +19 -0
- package/dist/components/data-display/stat-card/stat-card.d.ts.map +1 -0
- package/dist/components/data-display/stat-card/stat-card.js +11 -0
- package/dist/components/data-display/stat-card/stat-card.js.map +1 -0
- package/dist/components/data-display/status-badge/index.d.ts +2 -0
- package/dist/components/data-display/status-badge/index.d.ts.map +1 -0
- package/dist/components/data-display/status-badge/index.js +2 -0
- package/dist/components/data-display/status-badge/index.js.map +1 -0
- package/dist/components/data-display/status-badge/status-badge.d.ts +169 -0
- package/dist/components/data-display/status-badge/status-badge.d.ts.map +1 -0
- package/dist/components/data-display/status-badge/status-badge.js +139 -0
- package/dist/components/data-display/status-badge/status-badge.js.map +1 -0
- package/dist/components/data-grid/data-table/data-table.d.ts +53 -0
- package/dist/components/data-grid/data-table/data-table.d.ts.map +1 -0
- package/dist/components/data-grid/data-table/data-table.js +47 -0
- package/dist/components/data-grid/data-table/data-table.js.map +1 -0
- package/dist/components/data-grid/data-table/index.d.ts +2 -0
- package/dist/components/data-grid/data-table/index.d.ts.map +1 -0
- package/dist/components/data-grid/data-table/index.js +2 -0
- package/dist/components/data-grid/data-table/index.js.map +1 -0
- package/dist/components/data-grid/load-more/index.d.ts +2 -0
- package/dist/components/data-grid/load-more/index.d.ts.map +1 -0
- package/dist/components/data-grid/load-more/index.js +2 -0
- package/dist/components/data-grid/load-more/index.js.map +1 -0
- package/dist/components/data-grid/load-more/load-more.d.ts +97 -0
- package/dist/components/data-grid/load-more/load-more.d.ts.map +1 -0
- package/dist/components/data-grid/load-more/load-more.js +184 -0
- package/dist/components/data-grid/load-more/load-more.js.map +1 -0
- package/dist/components/feedback/alert/alert.d.ts +17 -0
- package/dist/components/feedback/alert/alert.d.ts.map +1 -0
- package/dist/components/feedback/alert/alert.js +17 -0
- package/dist/components/feedback/alert/alert.js.map +1 -0
- package/dist/components/feedback/alert/index.d.ts +2 -0
- package/dist/components/feedback/alert/index.d.ts.map +1 -0
- package/dist/components/feedback/alert/index.js +2 -0
- package/dist/components/feedback/alert/index.js.map +1 -0
- package/dist/components/feedback/callout-banner/callout-banner.d.ts +66 -0
- package/dist/components/feedback/callout-banner/callout-banner.d.ts.map +1 -0
- package/dist/components/feedback/callout-banner/callout-banner.js +35 -0
- package/dist/components/feedback/callout-banner/callout-banner.js.map +1 -0
- package/dist/components/feedback/callout-banner/index.d.ts +2 -0
- package/dist/components/feedback/callout-banner/index.d.ts.map +1 -0
- package/dist/components/feedback/callout-banner/index.js +2 -0
- package/dist/components/feedback/callout-banner/index.js.map +1 -0
- package/dist/components/feedback/empty-state/empty-state.d.ts +59 -0
- package/dist/components/feedback/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/feedback/empty-state/empty-state.js +16 -0
- package/dist/components/feedback/empty-state/empty-state.js.map +1 -0
- package/dist/components/feedback/empty-state/index.d.ts +2 -0
- package/dist/components/feedback/empty-state/index.d.ts.map +1 -0
- package/dist/components/feedback/empty-state/index.js +2 -0
- package/dist/components/feedback/empty-state/index.js.map +1 -0
- package/dist/components/feedback/error-page/error-page.d.ts +66 -0
- package/dist/components/feedback/error-page/error-page.d.ts.map +1 -0
- package/dist/components/feedback/error-page/error-page.js +43 -0
- package/dist/components/feedback/error-page/error-page.js.map +1 -0
- package/dist/components/feedback/error-page/index.d.ts +2 -0
- package/dist/components/feedback/error-page/index.d.ts.map +1 -0
- package/dist/components/feedback/error-page/index.js +2 -0
- package/dist/components/feedback/error-page/index.js.map +1 -0
- package/dist/components/feedback/error-state/error-state.boundary.d.ts +45 -0
- package/dist/components/feedback/error-state/error-state.boundary.d.ts.map +1 -0
- package/dist/components/feedback/error-state/error-state.boundary.js +40 -0
- package/dist/components/feedback/error-state/error-state.boundary.js.map +1 -0
- package/dist/components/feedback/error-state/error-state.d.ts +51 -0
- package/dist/components/feedback/error-state/error-state.d.ts.map +1 -0
- package/dist/components/feedback/error-state/error-state.js +47 -0
- package/dist/components/feedback/error-state/error-state.js.map +1 -0
- package/dist/components/feedback/error-state/index.d.ts +3 -0
- package/dist/components/feedback/error-state/index.d.ts.map +1 -0
- package/dist/components/feedback/error-state/index.js +3 -0
- package/dist/components/feedback/error-state/index.js.map +1 -0
- package/dist/components/feedback/inline-error-retry/index.d.ts +2 -0
- package/dist/components/feedback/inline-error-retry/index.d.ts.map +1 -0
- package/dist/components/feedback/inline-error-retry/index.js +2 -0
- package/dist/components/feedback/inline-error-retry/index.js.map +1 -0
- package/dist/components/feedback/inline-error-retry/inline-error-retry.d.ts +41 -0
- package/dist/components/feedback/inline-error-retry/inline-error-retry.d.ts.map +1 -0
- package/dist/components/feedback/inline-error-retry/inline-error-retry.js +75 -0
- package/dist/components/feedback/inline-error-retry/inline-error-retry.js.map +1 -0
- package/dist/components/feedback/inline-notice/index.d.ts +2 -0
- package/dist/components/feedback/inline-notice/index.d.ts.map +1 -0
- package/dist/components/feedback/inline-notice/index.js +2 -0
- package/dist/components/feedback/inline-notice/index.js.map +1 -0
- package/dist/components/feedback/inline-notice/inline-notice.d.ts +40 -0
- package/dist/components/feedback/inline-notice/inline-notice.d.ts.map +1 -0
- package/dist/components/feedback/inline-notice/inline-notice.js +29 -0
- package/dist/components/feedback/inline-notice/inline-notice.js.map +1 -0
- package/dist/components/feedback/loading-state/index.d.ts +2 -0
- package/dist/components/feedback/loading-state/index.d.ts.map +1 -0
- package/dist/components/feedback/loading-state/index.js +2 -0
- package/dist/components/feedback/loading-state/index.js.map +1 -0
- package/dist/components/feedback/loading-state/loading-state.d.ts +17 -0
- package/dist/components/feedback/loading-state/loading-state.d.ts.map +1 -0
- package/dist/components/feedback/loading-state/loading-state.js +12 -0
- package/dist/components/feedback/loading-state/loading-state.js.map +1 -0
- package/dist/components/feedback/skeleton/index.d.ts +2 -0
- package/dist/components/feedback/skeleton/index.d.ts.map +1 -0
- package/dist/components/feedback/skeleton/index.js +2 -0
- package/dist/components/feedback/skeleton/index.js.map +1 -0
- package/dist/components/feedback/skeleton/skeleton.d.ts +12 -0
- package/dist/components/feedback/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/feedback/skeleton/skeleton.js +10 -0
- package/dist/components/feedback/skeleton/skeleton.js.map +1 -0
- package/dist/components/feedback/spinner/index.d.ts +2 -0
- package/dist/components/feedback/spinner/index.d.ts.map +1 -0
- package/dist/components/feedback/spinner/index.js +2 -0
- package/dist/components/feedback/spinner/index.js.map +1 -0
- package/dist/components/feedback/spinner/spinner.d.ts +12 -0
- package/dist/components/feedback/spinner/spinner.d.ts.map +1 -0
- package/dist/components/feedback/spinner/spinner.js +10 -0
- package/dist/components/feedback/spinner/spinner.js.map +1 -0
- package/dist/components/feedback/toast/index.d.ts +2 -0
- package/dist/components/feedback/toast/index.d.ts.map +1 -0
- package/dist/components/feedback/toast/index.js +2 -0
- package/dist/components/feedback/toast/index.js.map +1 -0
- package/dist/components/feedback/toast/toast.d.ts +109 -0
- package/dist/components/feedback/toast/toast.d.ts.map +1 -0
- package/dist/components/feedback/toast/toast.js +187 -0
- package/dist/components/feedback/toast/toast.js.map +1 -0
- package/dist/components/forms/checkbox/checkbox.d.ts +15 -0
- package/dist/components/forms/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/forms/checkbox/checkbox.js +23 -0
- package/dist/components/forms/checkbox/checkbox.js.map +1 -0
- package/dist/components/forms/checkbox/index.d.ts +2 -0
- package/dist/components/forms/checkbox/index.d.ts.map +1 -0
- package/dist/components/forms/checkbox/index.js +2 -0
- package/dist/components/forms/checkbox/index.js.map +1 -0
- package/dist/components/forms/combobox/combobox.d.ts +35 -0
- package/dist/components/forms/combobox/combobox.d.ts.map +1 -0
- package/dist/components/forms/combobox/combobox.js +152 -0
- package/dist/components/forms/combobox/combobox.js.map +1 -0
- package/dist/components/forms/combobox/index.d.ts +2 -0
- package/dist/components/forms/combobox/index.d.ts.map +1 -0
- package/dist/components/forms/combobox/index.js +2 -0
- package/dist/components/forms/combobox/index.js.map +1 -0
- package/dist/components/forms/form-field/form-field.d.ts +104 -0
- package/dist/components/forms/form-field/form-field.d.ts.map +1 -0
- package/dist/components/forms/form-field/form-field.js +114 -0
- package/dist/components/forms/form-field/form-field.js.map +1 -0
- package/dist/components/forms/form-field/index.d.ts +2 -0
- package/dist/components/forms/form-field/index.d.ts.map +1 -0
- package/dist/components/forms/form-field/index.js +2 -0
- package/dist/components/forms/form-field/index.js.map +1 -0
- package/dist/components/forms/inline-edit-text/index.d.ts +2 -0
- package/dist/components/forms/inline-edit-text/index.d.ts.map +1 -0
- package/dist/components/forms/inline-edit-text/index.js +2 -0
- package/dist/components/forms/inline-edit-text/index.js.map +1 -0
- package/dist/components/forms/inline-edit-text/inline-edit-text.d.ts +63 -0
- package/dist/components/forms/inline-edit-text/inline-edit-text.d.ts.map +1 -0
- package/dist/components/forms/inline-edit-text/inline-edit-text.js +175 -0
- package/dist/components/forms/inline-edit-text/inline-edit-text.js.map +1 -0
- package/dist/components/forms/otp-pin-input/index.d.ts +2 -0
- package/dist/components/forms/otp-pin-input/index.d.ts.map +1 -0
- package/dist/components/forms/otp-pin-input/index.js +2 -0
- package/dist/components/forms/otp-pin-input/index.js.map +1 -0
- package/dist/components/forms/otp-pin-input/otp-pin-input.d.ts +32 -0
- package/dist/components/forms/otp-pin-input/otp-pin-input.d.ts.map +1 -0
- package/dist/components/forms/otp-pin-input/otp-pin-input.js +73 -0
- package/dist/components/forms/otp-pin-input/otp-pin-input.js.map +1 -0
- package/dist/components/forms/segmented-control/index.d.ts +2 -0
- package/dist/components/forms/segmented-control/index.d.ts.map +1 -0
- package/dist/components/forms/segmented-control/index.js +2 -0
- package/dist/components/forms/segmented-control/index.js.map +1 -0
- package/dist/components/forms/segmented-control/segmented-control.d.ts +62 -0
- package/dist/components/forms/segmented-control/segmented-control.d.ts.map +1 -0
- package/dist/components/forms/segmented-control/segmented-control.js +139 -0
- package/dist/components/forms/segmented-control/segmented-control.js.map +1 -0
- package/dist/components/forms/select/index.d.ts +2 -0
- package/dist/components/forms/select/index.d.ts.map +1 -0
- package/dist/components/forms/select/index.js +2 -0
- package/dist/components/forms/select/index.js.map +1 -0
- package/dist/components/forms/select/select.d.ts +27 -0
- package/dist/components/forms/select/select.d.ts.map +1 -0
- package/dist/components/forms/select/select.js +39 -0
- package/dist/components/forms/select/select.js.map +1 -0
- package/dist/components/forms/switch/index.d.ts +2 -0
- package/dist/components/forms/switch/index.d.ts.map +1 -0
- package/dist/components/forms/switch/index.js +2 -0
- package/dist/components/forms/switch/index.js.map +1 -0
- package/dist/components/forms/switch/switch.d.ts +13 -0
- package/dist/components/forms/switch/switch.d.ts.map +1 -0
- package/dist/components/forms/switch/switch.js +21 -0
- package/dist/components/forms/switch/switch.js.map +1 -0
- package/dist/components/forms/switch-settings-list/index.d.ts +2 -0
- package/dist/components/forms/switch-settings-list/index.d.ts.map +1 -0
- package/dist/components/forms/switch-settings-list/index.js +2 -0
- package/dist/components/forms/switch-settings-list/index.js.map +1 -0
- package/dist/components/forms/switch-settings-list/switch-settings-list.d.ts +58 -0
- package/dist/components/forms/switch-settings-list/switch-settings-list.d.ts.map +1 -0
- package/dist/components/forms/switch-settings-list/switch-settings-list.js +123 -0
- package/dist/components/forms/switch-settings-list/switch-settings-list.js.map +1 -0
- package/dist/components/forms/tag-input/index.d.ts +2 -0
- package/dist/components/forms/tag-input/index.d.ts.map +1 -0
- package/dist/components/forms/tag-input/index.js +2 -0
- package/dist/components/forms/tag-input/index.js.map +1 -0
- package/dist/components/forms/tag-input/tag-input.d.ts +60 -0
- package/dist/components/forms/tag-input/tag-input.d.ts.map +1 -0
- package/dist/components/forms/tag-input/tag-input.js +258 -0
- package/dist/components/forms/tag-input/tag-input.js.map +1 -0
- package/dist/components/forms/text-field/index.d.ts +2 -0
- package/dist/components/forms/text-field/index.d.ts.map +1 -0
- package/dist/components/forms/text-field/index.js +2 -0
- package/dist/components/forms/text-field/index.js.map +1 -0
- package/dist/components/forms/text-field/text-field.d.ts +15 -0
- package/dist/components/forms/text-field/text-field.d.ts.map +1 -0
- package/dist/components/forms/text-field/text-field.js +14 -0
- package/dist/components/forms/text-field/text-field.js.map +1 -0
- package/dist/components/geo/location-fields/index.d.ts +2 -0
- package/dist/components/geo/location-fields/index.d.ts.map +1 -0
- package/dist/components/geo/location-fields/index.js +2 -0
- package/dist/components/geo/location-fields/index.js.map +1 -0
- package/dist/components/geo/location-fields/location-fields.d.ts +104 -0
- package/dist/components/geo/location-fields/location-fields.d.ts.map +1 -0
- package/dist/components/geo/location-fields/location-fields.js +248 -0
- package/dist/components/geo/location-fields/location-fields.js.map +1 -0
- package/dist/components/identity/avatar/avatar.d.ts +68 -0
- package/dist/components/identity/avatar/avatar.d.ts.map +1 -0
- package/dist/components/identity/avatar/avatar.js +73 -0
- package/dist/components/identity/avatar/avatar.js.map +1 -0
- package/dist/components/identity/avatar/index.d.ts +2 -0
- package/dist/components/identity/avatar/index.d.ts.map +1 -0
- package/dist/components/identity/avatar/index.js +2 -0
- package/dist/components/identity/avatar/index.js.map +1 -0
- package/dist/components/identity/username-availability-input/index.d.ts +2 -0
- package/dist/components/identity/username-availability-input/index.d.ts.map +1 -0
- package/dist/components/identity/username-availability-input/index.js +2 -0
- package/dist/components/identity/username-availability-input/index.js.map +1 -0
- package/dist/components/identity/username-availability-input/username-availability-input.d.ts +71 -0
- package/dist/components/identity/username-availability-input/username-availability-input.d.ts.map +1 -0
- package/dist/components/identity/username-availability-input/username-availability-input.js +110 -0
- package/dist/components/identity/username-availability-input/username-availability-input.js.map +1 -0
- package/dist/components/layout/section-header/index.d.ts +2 -0
- package/dist/components/layout/section-header/index.d.ts.map +1 -0
- package/dist/components/layout/section-header/index.js +2 -0
- package/dist/components/layout/section-header/index.js.map +1 -0
- package/dist/components/layout/section-header/section-header.d.ts +49 -0
- package/dist/components/layout/section-header/section-header.d.ts.map +1 -0
- package/dist/components/layout/section-header/section-header.js +39 -0
- package/dist/components/layout/section-header/section-header.js.map +1 -0
- package/dist/components/layout/separator/index.d.ts +2 -0
- package/dist/components/layout/separator/index.d.ts.map +1 -0
- package/dist/components/layout/separator/index.js +2 -0
- package/dist/components/layout/separator/index.js.map +1 -0
- package/dist/components/layout/separator/separator.d.ts +4 -0
- package/dist/components/layout/separator/separator.d.ts.map +1 -0
- package/dist/components/layout/separator/separator.js +9 -0
- package/dist/components/layout/separator/separator.js.map +1 -0
- package/dist/components/layout/visually-hidden/index.d.ts +2 -0
- package/dist/components/layout/visually-hidden/index.d.ts.map +1 -0
- package/dist/components/layout/visually-hidden/index.js +2 -0
- package/dist/components/layout/visually-hidden/index.js.map +1 -0
- package/dist/components/layout/visually-hidden/visually-hidden.d.ts +4 -0
- package/dist/components/layout/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/dist/components/layout/visually-hidden/visually-hidden.js +7 -0
- package/dist/components/layout/visually-hidden/visually-hidden.js.map +1 -0
- package/dist/components/navigation/back-link/back-link.d.ts +18 -0
- package/dist/components/navigation/back-link/back-link.d.ts.map +1 -0
- package/dist/components/navigation/back-link/back-link.js +16 -0
- package/dist/components/navigation/back-link/back-link.js.map +1 -0
- package/dist/components/navigation/back-link/index.d.ts +2 -0
- package/dist/components/navigation/back-link/index.d.ts.map +1 -0
- package/dist/components/navigation/back-link/index.js +2 -0
- package/dist/components/navigation/back-link/index.js.map +1 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +19 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.js +19 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/navigation/breadcrumb/index.d.ts +2 -0
- package/dist/components/navigation/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/navigation/breadcrumb/index.js +2 -0
- package/dist/components/navigation/breadcrumb/index.js.map +1 -0
- package/dist/components/navigation/link/index.d.ts +2 -0
- package/dist/components/navigation/link/index.d.ts.map +1 -0
- package/dist/components/navigation/link/index.js +2 -0
- package/dist/components/navigation/link/index.js.map +1 -0
- package/dist/components/navigation/link/link.d.ts +13 -0
- package/dist/components/navigation/link/link.d.ts.map +1 -0
- package/dist/components/navigation/link/link.js +18 -0
- package/dist/components/navigation/link/link.js.map +1 -0
- package/dist/components/navigation/pagination/index.d.ts +2 -0
- package/dist/components/navigation/pagination/index.d.ts.map +1 -0
- package/dist/components/navigation/pagination/index.js +2 -0
- package/dist/components/navigation/pagination/index.js.map +1 -0
- package/dist/components/navigation/pagination/pagination.d.ts +18 -0
- package/dist/components/navigation/pagination/pagination.d.ts.map +1 -0
- package/dist/components/navigation/pagination/pagination.js +40 -0
- package/dist/components/navigation/pagination/pagination.js.map +1 -0
- package/dist/components/navigation/tabs/index.d.ts +2 -0
- package/dist/components/navigation/tabs/index.d.ts.map +1 -0
- package/dist/components/navigation/tabs/index.js +2 -0
- package/dist/components/navigation/tabs/index.js.map +1 -0
- package/dist/components/navigation/tabs/tabs.d.ts +121 -0
- package/dist/components/navigation/tabs/tabs.d.ts.map +1 -0
- package/dist/components/navigation/tabs/tabs.js +127 -0
- package/dist/components/navigation/tabs/tabs.js.map +1 -0
- package/dist/components/overlays/confirm-dialog/confirm-dialog.d.ts +107 -0
- package/dist/components/overlays/confirm-dialog/confirm-dialog.d.ts.map +1 -0
- package/dist/components/overlays/confirm-dialog/confirm-dialog.js +186 -0
- package/dist/components/overlays/confirm-dialog/confirm-dialog.js.map +1 -0
- package/dist/components/overlays/confirm-dialog/index.d.ts +2 -0
- package/dist/components/overlays/confirm-dialog/index.d.ts.map +1 -0
- package/dist/components/overlays/confirm-dialog/index.js +2 -0
- package/dist/components/overlays/confirm-dialog/index.js.map +1 -0
- package/dist/components/overlays/dialog/dialog.d.ts +48 -0
- package/dist/components/overlays/dialog/dialog.d.ts.map +1 -0
- package/dist/components/overlays/dialog/dialog.js +35 -0
- package/dist/components/overlays/dialog/dialog.js.map +1 -0
- package/dist/components/overlays/dialog/index.d.ts +2 -0
- package/dist/components/overlays/dialog/index.d.ts.map +1 -0
- package/dist/components/overlays/dialog/index.js +2 -0
- package/dist/components/overlays/dialog/index.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.d.ts +24 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.d.ts.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.js +41 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/index.d.ts +2 -0
- package/dist/components/overlays/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/overlays/dropdown-menu/index.js +2 -0
- package/dist/components/overlays/dropdown-menu/index.js.map +1 -0
- package/dist/components/overlays/popover/index.d.ts +2 -0
- package/dist/components/overlays/popover/index.d.ts.map +1 -0
- package/dist/components/overlays/popover/index.js +2 -0
- package/dist/components/overlays/popover/index.js.map +1 -0
- package/dist/components/overlays/popover/popover.d.ts +8 -0
- package/dist/components/overlays/popover/popover.d.ts.map +1 -0
- package/dist/components/overlays/popover/popover.js +14 -0
- package/dist/components/overlays/popover/popover.js.map +1 -0
- package/dist/components/overlays/responsive-dialog/index.d.ts +2 -0
- package/dist/components/overlays/responsive-dialog/index.d.ts.map +1 -0
- package/dist/components/overlays/responsive-dialog/index.js +2 -0
- package/dist/components/overlays/responsive-dialog/index.js.map +1 -0
- package/dist/components/overlays/responsive-dialog/responsive-dialog.d.ts +25 -0
- package/dist/components/overlays/responsive-dialog/responsive-dialog.d.ts.map +1 -0
- package/dist/components/overlays/responsive-dialog/responsive-dialog.js +22 -0
- package/dist/components/overlays/responsive-dialog/responsive-dialog.js.map +1 -0
- package/dist/components/overlays/sheet/index.d.ts +2 -0
- package/dist/components/overlays/sheet/index.d.ts.map +1 -0
- package/dist/components/overlays/sheet/index.js +2 -0
- package/dist/components/overlays/sheet/index.js.map +1 -0
- package/dist/components/overlays/sheet/sheet.d.ts +53 -0
- package/dist/components/overlays/sheet/sheet.d.ts.map +1 -0
- package/dist/components/overlays/sheet/sheet.js +43 -0
- package/dist/components/overlays/sheet/sheet.js.map +1 -0
- package/dist/components/overlays/tooltip/index.d.ts +2 -0
- package/dist/components/overlays/tooltip/index.d.ts.map +1 -0
- package/dist/components/overlays/tooltip/index.js +2 -0
- package/dist/components/overlays/tooltip/index.js.map +1 -0
- package/dist/components/overlays/tooltip/tooltip.d.ts +20 -0
- package/dist/components/overlays/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/overlays/tooltip/tooltip.js +12 -0
- package/dist/components/overlays/tooltip/tooltip.js.map +1 -0
- package/dist/components/search/search-input/index.d.ts +2 -0
- package/dist/components/search/search-input/index.d.ts.map +1 -0
- package/dist/components/search/search-input/index.js +2 -0
- package/dist/components/search/search-input/index.js.map +1 -0
- package/dist/components/search/search-input/search-input.d.ts +48 -0
- package/dist/components/search/search-input/search-input.d.ts.map +1 -0
- package/dist/components/search/search-input/search-input.js +140 -0
- package/dist/components/search/search-input/search-input.js.map +1 -0
- package/dist/components/technical/secret-field/index.d.ts +2 -0
- package/dist/components/technical/secret-field/index.d.ts.map +1 -0
- package/dist/components/technical/secret-field/index.js +2 -0
- package/dist/components/technical/secret-field/index.js.map +1 -0
- package/dist/components/technical/secret-field/secret-field.d.ts +38 -0
- package/dist/components/technical/secret-field/secret-field.d.ts.map +1 -0
- package/dist/components/technical/secret-field/secret-field.js +42 -0
- package/dist/components/technical/secret-field/secret-field.js.map +1 -0
- package/dist/components/typography/kbd/index.d.ts +2 -0
- package/dist/components/typography/kbd/index.d.ts.map +1 -0
- package/dist/components/typography/kbd/index.js +2 -0
- package/dist/components/typography/kbd/index.js.map +1 -0
- package/dist/components/typography/kbd/kbd.d.ts +4 -0
- package/dist/components/typography/kbd/kbd.d.ts.map +1 -0
- package/dist/components/typography/kbd/kbd.js +7 -0
- package/dist/components/typography/kbd/kbd.js.map +1 -0
- package/dist/entries/marketing.d.ts +9 -0
- package/dist/entries/marketing.d.ts.map +1 -0
- package/dist/entries/marketing.js +9 -0
- package/dist/entries/marketing.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/cx.d.ts +3 -0
- package/dist/internal/cx.d.ts.map +1 -0
- package/dist/internal/cx.js +6 -0
- package/dist/internal/cx.js.map +1 -0
- package/dist/internal/dismiss.d.ts +23 -0
- package/dist/internal/dismiss.d.ts.map +1 -0
- package/dist/internal/dismiss.js +36 -0
- package/dist/internal/dismiss.js.map +1 -0
- package/dist/internal/dismissible.d.ts +26 -0
- package/dist/internal/dismissible.d.ts.map +1 -0
- package/dist/internal/dismissible.js +82 -0
- package/dist/internal/dismissible.js.map +1 -0
- package/dist/internal/icons.d.ts +26 -0
- package/dist/internal/icons.d.ts.map +1 -0
- package/dist/internal/icons.js +81 -0
- package/dist/internal/icons.js.map +1 -0
- package/dist/internal/inert.d.ts +7 -0
- package/dist/internal/inert.d.ts.map +1 -0
- package/dist/internal/inert.js +10 -0
- package/dist/internal/inert.js.map +1 -0
- package/dist/manifest.json +8532 -0
- package/dist/patterns/actions/toolbar/index.d.ts +2 -0
- package/dist/patterns/actions/toolbar/index.d.ts.map +1 -0
- package/dist/patterns/actions/toolbar/index.js +2 -0
- package/dist/patterns/actions/toolbar/index.js.map +1 -0
- package/dist/patterns/actions/toolbar/toolbar.d.ts +20 -0
- package/dist/patterns/actions/toolbar/toolbar.d.ts.map +1 -0
- package/dist/patterns/actions/toolbar/toolbar.js +46 -0
- package/dist/patterns/actions/toolbar/toolbar.js.map +1 -0
- package/dist/patterns/layout/marketing-hero/index.d.ts +2 -0
- package/dist/patterns/layout/marketing-hero/index.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-hero/index.js +2 -0
- package/dist/patterns/layout/marketing-hero/index.js.map +1 -0
- package/dist/patterns/layout/marketing-hero/marketing-hero.d.ts +24 -0
- package/dist/patterns/layout/marketing-hero/marketing-hero.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-hero/marketing-hero.js +7 -0
- package/dist/patterns/layout/marketing-hero/marketing-hero.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/index.d.ts +7 -0
- package/dist/patterns/layout/marketing-section-blocks/index.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/index.js +7 -0
- package/dist/patterns/layout/marketing-section-blocks/index.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.cta-band.d.ts +15 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.cta-band.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.cta-band.js +7 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.cta-band.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.d.ts +37 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.faq.d.ts +23 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.faq.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.faq.js +15 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.faq.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.feature-grid.d.ts +25 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.feature-grid.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.feature-grid.js +10 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.feature-grid.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.js +14 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.product-frame.d.ts +25 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.product-frame.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.product-frame.js +12 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.product-frame.js.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.stat-strip.d.ts +14 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.stat-strip.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.stat-strip.js +7 -0
- package/dist/patterns/layout/marketing-section-blocks/marketing-section-blocks.stat-strip.js.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/index.d.ts +4 -0
- package/dist/patterns/layout/marketing-site-shell/index.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/index.js +3 -0
- package/dist/patterns/layout/marketing-site-shell/index.js.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.d.ts +31 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.footer.d.ts +33 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.footer.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.footer.js +11 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.footer.js.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.js +32 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.js.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.link.d.ts +10 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.link.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.link.js +8 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.link.js.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.types.d.ts +24 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.types.d.ts.map +1 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.types.js +4 -0
- package/dist/patterns/layout/marketing-site-shell/marketing-site-shell.types.js.map +1 -0
- package/dist/patterns/layout/page-header/index.d.ts +2 -0
- package/dist/patterns/layout/page-header/index.d.ts.map +1 -0
- package/dist/patterns/layout/page-header/index.js +2 -0
- package/dist/patterns/layout/page-header/index.js.map +1 -0
- package/dist/patterns/layout/page-header/page-header.d.ts +17 -0
- package/dist/patterns/layout/page-header/page-header.d.ts.map +1 -0
- package/dist/patterns/layout/page-header/page-header.js +7 -0
- package/dist/patterns/layout/page-header/page-header.js.map +1 -0
- package/dist/patterns/layout/settings-section/index.d.ts +2 -0
- package/dist/patterns/layout/settings-section/index.d.ts.map +1 -0
- package/dist/patterns/layout/settings-section/index.js +2 -0
- package/dist/patterns/layout/settings-section/index.js.map +1 -0
- package/dist/patterns/layout/settings-section/settings-section.d.ts +33 -0
- package/dist/patterns/layout/settings-section/settings-section.d.ts.map +1 -0
- package/dist/patterns/layout/settings-section/settings-section.js +15 -0
- package/dist/patterns/layout/settings-section/settings-section.js.map +1 -0
- package/dist/patterns/layout/split-layout/index.d.ts +2 -0
- package/dist/patterns/layout/split-layout/index.d.ts.map +1 -0
- package/dist/patterns/layout/split-layout/index.js +2 -0
- package/dist/patterns/layout/split-layout/index.js.map +1 -0
- package/dist/patterns/layout/split-layout/split-layout.d.ts +21 -0
- package/dist/patterns/layout/split-layout/split-layout.d.ts.map +1 -0
- package/dist/patterns/layout/split-layout/split-layout.js +10 -0
- package/dist/patterns/layout/split-layout/split-layout.js.map +1 -0
- package/dist/patterns/search/filter-bar/filter-bar.d.ts +25 -0
- package/dist/patterns/search/filter-bar/filter-bar.d.ts.map +1 -0
- package/dist/patterns/search/filter-bar/filter-bar.js +13 -0
- package/dist/patterns/search/filter-bar/filter-bar.js.map +1 -0
- package/dist/patterns/search/filter-bar/index.d.ts +2 -0
- package/dist/patterns/search/filter-bar/index.d.ts.map +1 -0
- package/dist/patterns/search/filter-bar/index.js +2 -0
- package/dist/patterns/search/filter-bar/index.js.map +1 -0
- package/dist/styles.css +5621 -0
- package/package.json +75 -4
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, } from 'react';
|
|
4
|
+
import * as ToastPrimitive from '@radix-ui/react-toast';
|
|
5
|
+
import { cx } from '../../../internal/cx.js';
|
|
6
|
+
import { CloseGlyph, InfoGlyph, SuccessGlyph, WarningGlyph } from '../../../internal/icons.js';
|
|
7
|
+
const ToastContext = createContext(null);
|
|
8
|
+
/** Longer than the exit animation (--mn-duration-base). */
|
|
9
|
+
const EXIT_MS = 600;
|
|
10
|
+
const SHORT_MS = 5000;
|
|
11
|
+
const LONG_MS = 10000;
|
|
12
|
+
let counter = 0;
|
|
13
|
+
/**
|
|
14
|
+
* Mount once near the root. Provides `useToast()` and renders the viewport.
|
|
15
|
+
*
|
|
16
|
+
* Toasts never take focus. They pause while hovered or focused, can be reached
|
|
17
|
+
* with F8 (the `hotkey`), and close with Escape. Each one is announced once
|
|
18
|
+
* through a live region: assertively for `danger`, politely otherwise.
|
|
19
|
+
*/
|
|
20
|
+
export function ToastProvider({ label = 'Notifications', position = 'bottom-right', hotkey = DEFAULT_HOTKEY, durationScale = 1, limit = 3, dismissLabel = 'Dismiss', children, }) {
|
|
21
|
+
const [toasts, setToasts] = useState([]);
|
|
22
|
+
const timers = useRef(new Set());
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const pending = timers.current;
|
|
25
|
+
return () => {
|
|
26
|
+
for (const t of pending)
|
|
27
|
+
clearTimeout(t);
|
|
28
|
+
pending.clear();
|
|
29
|
+
};
|
|
30
|
+
}, []);
|
|
31
|
+
/** Drops closed records once the exit animation has had time to run. */
|
|
32
|
+
const sweep = useCallback(() => {
|
|
33
|
+
const t = setTimeout(() => {
|
|
34
|
+
timers.current.delete(t);
|
|
35
|
+
setToasts((list) => list.filter((r) => r.open));
|
|
36
|
+
}, EXIT_MS);
|
|
37
|
+
timers.current.add(t);
|
|
38
|
+
}, []);
|
|
39
|
+
const dismiss = useCallback((id) => {
|
|
40
|
+
setToasts((list) => list.map((t) => (t.open && (id === undefined || t.id === id) ? { ...t, open: false } : t)));
|
|
41
|
+
sweep();
|
|
42
|
+
}, [sweep]);
|
|
43
|
+
const show = useCallback((options) => {
|
|
44
|
+
const id = `mn-toast-${++counter}`;
|
|
45
|
+
setToasts((list) => {
|
|
46
|
+
const next = [...list, { ...options, id, open: true }];
|
|
47
|
+
const openOnes = next.filter((t) => t.open);
|
|
48
|
+
const overflow = openOnes.length - Math.max(1, limit);
|
|
49
|
+
if (overflow > 0) {
|
|
50
|
+
const set = new Set(openOnes.slice(0, overflow).map((t) => t.id));
|
|
51
|
+
return next.map((t) => (set.has(t.id) ? { ...t, open: false } : t));
|
|
52
|
+
}
|
|
53
|
+
return next;
|
|
54
|
+
});
|
|
55
|
+
sweep();
|
|
56
|
+
return { id, dismiss: () => dismiss(id) };
|
|
57
|
+
}, [dismiss, sweep, limit]);
|
|
58
|
+
const toast = useMemo(() => {
|
|
59
|
+
const fn = ((options) => show(options));
|
|
60
|
+
const tone = (t) => (title, options) => show({ ...options, title, tone: t });
|
|
61
|
+
fn.success = tone('success');
|
|
62
|
+
fn.error = tone('danger');
|
|
63
|
+
fn.warning = tone('warning');
|
|
64
|
+
fn.info = tone('info');
|
|
65
|
+
return fn;
|
|
66
|
+
}, [show]);
|
|
67
|
+
const value = useMemo(() => ({ toast, dismiss }), [toast, dismiss]);
|
|
68
|
+
return (_jsx(ToastContext.Provider, { value: value, children: _jsxs(ToastPrimitive.Provider, { swipeDirection: position.endsWith('right') ? 'right' : 'down', label: label, children: [children, toasts.map((t) => (_jsx(ToastItem, { record: t, durationScale: durationScale, dismissLabel: dismissLabel, onOpenChange: (open) => (open ? undefined : dismiss(t.id)) }, t.id))), _jsx(ToastPrimitive.Viewport, { className: "mn-toast-viewport", "data-position": position, hotkey: hotkey, label: hotkey.length ? `${label} ({hotkey})` : label })] }) }));
|
|
69
|
+
}
|
|
70
|
+
const DEFAULT_HOTKEY = ['F8'];
|
|
71
|
+
const toneIcon = {
|
|
72
|
+
neutral: null,
|
|
73
|
+
info: _jsx(InfoGlyph, {}),
|
|
74
|
+
success: _jsx(SuccessGlyph, {}),
|
|
75
|
+
warning: _jsx(WarningGlyph, {}),
|
|
76
|
+
danger: _jsx(WarningGlyph, {}),
|
|
77
|
+
};
|
|
78
|
+
/** The duration Radix should use: scaled, and Infinity when auto-dismiss is off. */
|
|
79
|
+
function toastDuration(record, scale) {
|
|
80
|
+
const base = record.duration ?? (record.tone === 'danger' || record.action ? LONG_MS : SHORT_MS);
|
|
81
|
+
const scaled = base * (scale > 0 ? scale : 1);
|
|
82
|
+
return Number.isFinite(scaled) ? Math.round(scaled) : Infinity;
|
|
83
|
+
}
|
|
84
|
+
function ToastItem({ record, durationScale, dismissLabel, onOpenChange, }) {
|
|
85
|
+
const titleId = useId();
|
|
86
|
+
const tone = record.tone ?? 'neutral';
|
|
87
|
+
const politeness = record.politeness ?? (tone === 'danger' ? 'assertive' : 'polite');
|
|
88
|
+
const icon = toneIcon[tone];
|
|
89
|
+
// onDismiss fires once, the first time the record closes.
|
|
90
|
+
const notified = useRef(false);
|
|
91
|
+
const onDismiss = record.onDismiss;
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
if (!record.open && !notified.current) {
|
|
94
|
+
notified.current = true;
|
|
95
|
+
onDismiss?.();
|
|
96
|
+
}
|
|
97
|
+
}, [record.open, onDismiss]);
|
|
98
|
+
return (
|
|
99
|
+
// No role on the <li>: it must stay a list item of the viewport's <ol>.
|
|
100
|
+
// Radix announces the text through its own live region, whose politeness
|
|
101
|
+
// follows `type` (foreground = assertive, background = polite).
|
|
102
|
+
_jsxs(ToastPrimitive.Root, { open: record.open, onOpenChange: onOpenChange, duration: toastDuration(record, durationScale), type: politeness === 'assertive' ? 'foreground' : 'background', className: "mn-toast", "data-tone": tone, "data-politeness": politeness, "aria-labelledby": titleId, children: [icon ? (_jsx("span", { className: "mn-toast__icon", "aria-hidden": true, children: icon })) : null, _jsxs("div", { className: "mn-toast__body", children: [_jsx(ToastPrimitive.Title, { id: titleId, className: "mn-toast__title", children: record.title }), record.description ? (_jsx(ToastPrimitive.Description, { className: "mn-toast__description", children: record.description })) : null] }), record.action ? (_jsx(ToastPrimitive.Action, { asChild: true, altText: record.action.altText || record.action.label, children: _jsx("button", { type: "button", className: cx('mn-button', 'mn-toast__action'), "data-variant": "secondary", "data-size": "xs", onClick: record.action.onClick, children: record.action.label }) })) : null, _jsx(ToastPrimitive.Close, { className: "mn-toast__close", "aria-label": dismissLabel, "aria-describedby": titleId, children: _jsx(CloseGlyph, {}) })] }));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns `toast` (callable, with `.success`, `.error`, `.warning`, `.info`)
|
|
106
|
+
* and `dismiss(id?)`. Must be used inside ToastProvider.
|
|
107
|
+
*/
|
|
108
|
+
export function useToast() {
|
|
109
|
+
const ctx = useContext(ToastContext);
|
|
110
|
+
if (!ctx)
|
|
111
|
+
throw new Error('useToast must be used inside <ToastProvider>');
|
|
112
|
+
return ctx;
|
|
113
|
+
}
|
|
114
|
+
/** Messages that describe the transport, not the problem; replaced by the fallback. */
|
|
115
|
+
const GENERIC = [
|
|
116
|
+
/^request failed with status code \d{3}$/i,
|
|
117
|
+
/^network ?error$/i,
|
|
118
|
+
/^failed to fetch$/i,
|
|
119
|
+
/^load failed$/i,
|
|
120
|
+
/^networkerror when attempting to fetch resource\.?$/i,
|
|
121
|
+
/^internal server error$/i,
|
|
122
|
+
/^\[object object\]$/i,
|
|
123
|
+
// An HTML error page from a proxy or gateway.
|
|
124
|
+
/^<(!doctype|html|head|body)\b/i,
|
|
125
|
+
];
|
|
126
|
+
function text(value) {
|
|
127
|
+
if (typeof value === 'string') {
|
|
128
|
+
const t = value.trim();
|
|
129
|
+
return t && !GENERIC.some((re) => re.test(t)) ? t : undefined;
|
|
130
|
+
}
|
|
131
|
+
if (Array.isArray(value)) {
|
|
132
|
+
const parts = value
|
|
133
|
+
.map((v) => text(typeof v === 'object' && v
|
|
134
|
+
? (v.message ?? v.detail)
|
|
135
|
+
: v))
|
|
136
|
+
.filter(Boolean);
|
|
137
|
+
return parts.length ? parts.join(' ') : undefined;
|
|
138
|
+
}
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
function fromBody(body) {
|
|
142
|
+
if (!body || typeof body !== 'object')
|
|
143
|
+
return text(body);
|
|
144
|
+
const b = body;
|
|
145
|
+
const details = b.details;
|
|
146
|
+
const fields = (details?.fields ?? b.fields ?? b.fieldErrors);
|
|
147
|
+
if (fields && typeof fields === 'object') {
|
|
148
|
+
const flat = Object.values(fields).flatMap((v) => (Array.isArray(v) ? v : [v]));
|
|
149
|
+
const joined = text(flat);
|
|
150
|
+
if (joined)
|
|
151
|
+
return joined;
|
|
152
|
+
}
|
|
153
|
+
return text(b.message) ?? text(b.errors) ?? text(b.detail) ?? text(b.error) ?? text(b.title);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Turns anything thrown or rejected into one sentence a person can read, for
|
|
157
|
+
* `toast.error()` or an inline error. Pure; it knows no product's API.
|
|
158
|
+
*
|
|
159
|
+
* Looks, in order, at: a string; field errors (`details.fields`, `fields`,
|
|
160
|
+
* `fieldErrors`, flattened); `message` (string or list); `errors[]`
|
|
161
|
+
* (`message`/`detail`); `detail`; `error`; `title`, on the response body
|
|
162
|
+
* (`error.response.data`, `error.data`, `error.body`) and then the error
|
|
163
|
+
* itself. Transport messages ("Request failed with status code 500",
|
|
164
|
+
* "Failed to fetch") are never shown; the fallback is.
|
|
165
|
+
*/
|
|
166
|
+
export function getErrorMessage(error, options = {}) {
|
|
167
|
+
const fallback = options.fallback ?? 'Something went wrong. Try again.';
|
|
168
|
+
if (error == null)
|
|
169
|
+
return fallback;
|
|
170
|
+
if (typeof error === 'string')
|
|
171
|
+
return text(error) ?? fallback;
|
|
172
|
+
if (typeof error !== 'object')
|
|
173
|
+
return fallback;
|
|
174
|
+
const e = error;
|
|
175
|
+
const response = e.response;
|
|
176
|
+
const found = fromBody(response?.data) ?? fromBody(e.data) ?? fromBody(e.body) ?? fromBody(e);
|
|
177
|
+
if (found)
|
|
178
|
+
return found;
|
|
179
|
+
const raw = typeof e.message === 'string' ? e.message.trim() : '';
|
|
180
|
+
const isNetwork = e.name === 'TypeError' ||
|
|
181
|
+
e.code === 'ERR_NETWORK' ||
|
|
182
|
+
/^(network ?error|failed to fetch|load failed|networkerror)/i.test(raw);
|
|
183
|
+
if (isNetwork && options.network)
|
|
184
|
+
return options.network;
|
|
185
|
+
return fallback;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/components/feedback/toast/toast.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
2
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
3
|
+
export interface CheckboxProps extends ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {
|
|
4
|
+
/** Inline label. Omit when the checkbox sits inside a Field with a FieldLabel. */
|
|
5
|
+
label?: ReactNode;
|
|
6
|
+
/** Secondary text under an inline label. */
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
invalid?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A checkbox with optional inline label. Supports `checked="indeterminate"`.
|
|
12
|
+
* Space toggles it; it participates in native forms via `name`/`value`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
15
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/checkbox/checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAK9D,MAAM,WAAW,aAAc,SAAQ,wBAAwB,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC;IAC5F,kFAAkF;IAClF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,6GAqCpB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useId, } from 'react';
|
|
4
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
5
|
+
import { cx } from '../../../internal/cx.js';
|
|
6
|
+
import { CheckGlyph, DashGlyph } from '../../../internal/icons.js';
|
|
7
|
+
import { useFieldControl } from '../form-field/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* A checkbox with optional inline label. Supports `checked="indeterminate"`.
|
|
10
|
+
* Space toggles it; it participates in native forms via `name`/`value`.
|
|
11
|
+
*/
|
|
12
|
+
export const Checkbox = forwardRef(function Checkbox({ label, description, invalid, className, ...rest }, ref) {
|
|
13
|
+
const auto = useId();
|
|
14
|
+
const props = useFieldControl(rest, { invalid });
|
|
15
|
+
const id = props.id ?? `mn-checkbox-${auto}`;
|
|
16
|
+
const descriptionId = description ? `${id}-description` : undefined;
|
|
17
|
+
const describedBy = cx(props['aria-describedby'], descriptionId);
|
|
18
|
+
const control = (_jsx(CheckboxPrimitive.Root, { ref: ref, ...props, id: id, "aria-describedby": describedBy, className: cx('mn-checkbox', label ? undefined : className), children: _jsx(CheckboxPrimitive.Indicator, { className: "mn-checkbox__indicator", children: props.checked === 'indeterminate' ? _jsx(DashGlyph, {}) : _jsx(CheckGlyph, {}) }) }));
|
|
19
|
+
if (!label)
|
|
20
|
+
return control;
|
|
21
|
+
return (_jsxs("div", { className: cx('mn-choice', className), "data-disabled": props.disabled || undefined, children: [control, _jsxs("div", { className: "mn-choice__text", children: [_jsx("label", { htmlFor: id, className: "mn-choice__label", children: label }), description ? (_jsx("p", { id: descriptionId, className: "mn-choice__description", children: description })) : null] })] }));
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../../src/components/forms/checkbox/checkbox.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,UAAU,EACV,KAAK,GAIN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAChC,SAAS,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG;IACxE,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,eAAe,IAAI,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,CACd,KAAC,iBAAiB,CAAC,IAAI,IACrB,GAAG,EAAE,GAAG,KACJ,KAAK,EACT,EAAE,EAAE,EAAE,sBACY,WAAW,EAC7B,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,YAE3D,KAAC,iBAAiB,CAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,YAC5D,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,KAAC,SAAS,KAAG,CAAC,CAAC,CAAC,KAAC,UAAU,KAAG,GACvC,GACP,CAC1B,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,mBAAiB,KAAK,CAAC,QAAQ,IAAI,SAAS,aACnF,OAAO,EACR,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAE,EAAE,EAAE,SAAS,EAAC,kBAAkB,YAC7C,KAAK,GACA,EACP,WAAW,CAAC,CAAC,CAAC,CACb,YAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAC,wBAAwB,YACrD,WAAW,GACV,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/checkbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/checkbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
export interface ComboboxOption {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Secondary text under the label. */
|
|
6
|
+
description?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ComboboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size' | 'type'> {
|
|
10
|
+
options: ComboboxOption[];
|
|
11
|
+
/** Selected option value (controlled). */
|
|
12
|
+
value?: string | null;
|
|
13
|
+
defaultValue?: string | null;
|
|
14
|
+
onValueChange?: (value: string | null) => void;
|
|
15
|
+
/** Text typed in the input (controlled). Use for server-side filtering. */
|
|
16
|
+
inputValue?: string;
|
|
17
|
+
onInputValueChange?: (text: string) => void;
|
|
18
|
+
/** Custom filter. Default: case-insensitive label match. Pass `() => true` for server-filtered lists. */
|
|
19
|
+
filter?: (option: ComboboxOption, query: string) => boolean;
|
|
20
|
+
/** Shown while options load. */
|
|
21
|
+
loading?: boolean;
|
|
22
|
+
/** Shown when no option matches. */
|
|
23
|
+
emptyMessage?: ReactNode;
|
|
24
|
+
invalid?: boolean;
|
|
25
|
+
size?: 'sm' | 'md' | 'lg';
|
|
26
|
+
/** Allow clearing the selection with the clear button / Backspace on empty input. */
|
|
27
|
+
clearable?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Single-select with typeahead. The input is the combobox; the list is a
|
|
31
|
+
* listbox positioned by Radix Popover. Keyboard: Down/Up move, Home/End jump,
|
|
32
|
+
* Enter selects, Escape closes, typing filters.
|
|
33
|
+
*/
|
|
34
|
+
export declare const Combobox: import("react").ForwardRefExoticComponent<ComboboxProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
35
|
+
//# sourceMappingURL=combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/combobox/combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,mBAAmB,EAExB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CACxD;IACC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,yGAAyG;IACzG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,4GAwPnB,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useEffect, useId, useMemo, useRef, useState, } from 'react';
|
|
4
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
5
|
+
import { cx } from '../../../internal/cx.js';
|
|
6
|
+
import { CheckGlyph, ChevronDownGlyph } from '../../../internal/icons.js';
|
|
7
|
+
import { useFieldControl } from '../form-field/index.js';
|
|
8
|
+
import { Spinner } from '../../feedback/spinner/index.js';
|
|
9
|
+
const defaultFilter = (o, q) => o.label.toLowerCase().includes(q.toLowerCase());
|
|
10
|
+
/**
|
|
11
|
+
* Single-select with typeahead. The input is the combobox; the list is a
|
|
12
|
+
* listbox positioned by Radix Popover. Keyboard: Down/Up move, Home/End jump,
|
|
13
|
+
* Enter selects, Escape closes, typing filters.
|
|
14
|
+
*/
|
|
15
|
+
export const Combobox = forwardRef(function Combobox({ options, value: valueProp, defaultValue = null, onValueChange, inputValue: inputProp, onInputValueChange, filter = defaultFilter, loading = false, emptyMessage = 'No matches', invalid, size = 'md', clearable = true, placeholder, className, onKeyDown, onBlur, ...rest }, ref) {
|
|
16
|
+
const id = useId();
|
|
17
|
+
const listId = `mn-combobox-${id}-list`;
|
|
18
|
+
const [open, setOpen] = useState(false);
|
|
19
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
20
|
+
const value = valueProp !== undefined ? valueProp : internalValue;
|
|
21
|
+
const selected = useMemo(() => options.find((o) => o.value === value) ?? null, [options, value]);
|
|
22
|
+
const [internalInput, setInternalInput] = useState(selected?.label ?? '');
|
|
23
|
+
const inputValue = inputProp !== undefined ? inputProp : internalInput;
|
|
24
|
+
const [active, setActive] = useState(0);
|
|
25
|
+
const inputRef = useRef(null);
|
|
26
|
+
const listRef = useRef(null);
|
|
27
|
+
const setInput = (text) => {
|
|
28
|
+
if (inputProp === undefined)
|
|
29
|
+
setInternalInput(text);
|
|
30
|
+
onInputValueChange?.(text);
|
|
31
|
+
};
|
|
32
|
+
const select = (next) => {
|
|
33
|
+
if (valueProp === undefined)
|
|
34
|
+
setInternalValue(next?.value ?? null);
|
|
35
|
+
onValueChange?.(next?.value ?? null);
|
|
36
|
+
setInput(next?.label ?? '');
|
|
37
|
+
setOpen(false);
|
|
38
|
+
};
|
|
39
|
+
// Keep the text in sync when the selection changes from outside.
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (!open && inputProp === undefined)
|
|
42
|
+
setInternalInput(selected?.label ?? '');
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
+
}, [selected?.label]);
|
|
45
|
+
const visible = useMemo(() => {
|
|
46
|
+
const q = inputValue.trim();
|
|
47
|
+
const typedNew = q !== '' && q !== (selected?.label ?? '');
|
|
48
|
+
return typedNew ? options.filter((o) => filter(o, q)) : options;
|
|
49
|
+
}, [options, inputValue, selected?.label, filter]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
setActive((a) => Math.min(a, Math.max(0, visible.length - 1)));
|
|
52
|
+
}, [visible.length]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (!open)
|
|
55
|
+
return;
|
|
56
|
+
const el = listRef.current?.querySelector(`[data-index="${active}"]`);
|
|
57
|
+
el?.scrollIntoView?.({ block: 'nearest' });
|
|
58
|
+
}, [active, open]);
|
|
59
|
+
const activeId = open && visible[active] ? `${listId}-opt-${active}` : undefined;
|
|
60
|
+
const handleKey = (e) => {
|
|
61
|
+
// Radix's dismissable layer prevents default on Escape before this runs,
|
|
62
|
+
// so only a consumer's own preventDefault stops the built-in handling.
|
|
63
|
+
const preventedBefore = e.defaultPrevented;
|
|
64
|
+
onKeyDown?.(e);
|
|
65
|
+
if (e.defaultPrevented && !preventedBefore)
|
|
66
|
+
return;
|
|
67
|
+
switch (e.key) {
|
|
68
|
+
case 'ArrowDown':
|
|
69
|
+
e.preventDefault();
|
|
70
|
+
if (!open)
|
|
71
|
+
setOpen(true);
|
|
72
|
+
else
|
|
73
|
+
setActive((a) => Math.min(a + 1, visible.length - 1));
|
|
74
|
+
break;
|
|
75
|
+
case 'ArrowUp':
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
if (!open)
|
|
78
|
+
setOpen(true);
|
|
79
|
+
else
|
|
80
|
+
setActive((a) => Math.max(a - 1, 0));
|
|
81
|
+
break;
|
|
82
|
+
case 'Home':
|
|
83
|
+
if (open) {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
setActive(0);
|
|
86
|
+
}
|
|
87
|
+
break;
|
|
88
|
+
case 'End':
|
|
89
|
+
if (open) {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
setActive(visible.length - 1);
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case 'Enter':
|
|
95
|
+
if (open) {
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
const opt = visible[active];
|
|
98
|
+
if (opt && !opt.disabled)
|
|
99
|
+
select(opt);
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
case 'Escape':
|
|
103
|
+
if (open) {
|
|
104
|
+
e.preventDefault();
|
|
105
|
+
setOpen(false);
|
|
106
|
+
setInput(selected?.label ?? '');
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
case 'Backspace':
|
|
110
|
+
if (clearable && inputValue === '' && selected)
|
|
111
|
+
select(null);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const fieldProps = useFieldControl(rest, { invalid });
|
|
116
|
+
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: (next) => {
|
|
117
|
+
setOpen(next);
|
|
118
|
+
if (!next)
|
|
119
|
+
setInput(selected?.label ?? '');
|
|
120
|
+
}, children: [_jsx(PopoverPrimitive.Anchor, { asChild: true, children: _jsxs("div", { className: cx('mn-input', 'mn-combobox', className), "data-size": size, "data-disabled": fieldProps.disabled || undefined, children: [_jsx("input", { ref: (node) => {
|
|
121
|
+
inputRef.current = node;
|
|
122
|
+
if (typeof ref === 'function')
|
|
123
|
+
ref(node);
|
|
124
|
+
else if (ref)
|
|
125
|
+
ref.current = node;
|
|
126
|
+
}, ...fieldProps, type: "text", role: "combobox", autoComplete: "off", "aria-autocomplete": "list", "aria-expanded": open, "aria-controls": open ? listId : undefined, "aria-activedescendant": activeId, className: "mn-combobox__input", placeholder: placeholder, value: inputValue, onChange: (e) => {
|
|
127
|
+
setInput(e.target.value);
|
|
128
|
+
setActive(0);
|
|
129
|
+
if (!open)
|
|
130
|
+
setOpen(true);
|
|
131
|
+
}, onKeyDown: handleKey, onBlur: (e) => {
|
|
132
|
+
onBlur?.(e);
|
|
133
|
+
// Revert unmatched text so the input always reflects the selection.
|
|
134
|
+
if (!listRef.current?.contains(e.relatedTarget))
|
|
135
|
+
setInput(selected?.label ?? '');
|
|
136
|
+
} }), loading ? _jsx(Spinner, { size: "sm", className: "mn-combobox__spinner" }) : null, _jsx("button", { type: "button", tabIndex: -1, "aria-label": open ? 'Close options' : 'Show options', className: "mn-combobox__toggle", disabled: fieldProps.disabled, onMouseDown: (e) => e.preventDefault(), onClick: () => {
|
|
137
|
+
setOpen((o) => !o);
|
|
138
|
+
inputRef.current?.focus();
|
|
139
|
+
}, children: _jsx(ChevronDownGlyph, {}) })] }) }), _jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { align: "start", sideOffset: 4, onOpenAutoFocus: (e) => e.preventDefault(), onCloseAutoFocus: (e) => e.preventDefault(), onInteractOutside: (e) => {
|
|
140
|
+
if (inputRef.current?.contains(e.target))
|
|
141
|
+
e.preventDefault();
|
|
142
|
+
}, className: "mn-menu mn-combobox__content", children: _jsx("div", { ref: listRef, id: listId, role: "listbox", "aria-label": rest['aria-label'] ?? 'Options', className: "mn-combobox__list", children: loading && visible.length === 0 ? (_jsx("div", { className: "mn-combobox__status", role: "status", children: "Loading\u2026" })) : visible.length === 0 ? (_jsx("div", { className: "mn-combobox__status", role: "status", children: emptyMessage })) : (visible.map((o, i) => (
|
|
143
|
+
// Options follow the aria-activedescendant pattern: the input keeps
|
|
144
|
+
// focus and handles every key, so options are deliberately not focusable.
|
|
145
|
+
// monarch-ignore-next-line a11y/click-without-key -- aria-activedescendant pattern: the input handles all keys
|
|
146
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus
|
|
147
|
+
_jsxs("div", { id: `${listId}-opt-${i}`, role: "option", "aria-selected": o.value === value, "aria-disabled": o.disabled || undefined, "data-index": i, "data-highlighted": i === active || undefined, className: "mn-menu__item", onMouseEnter: () => setActive(i), onMouseDown: (e) => e.preventDefault(), onClick: () => {
|
|
148
|
+
if (!o.disabled)
|
|
149
|
+
select(o);
|
|
150
|
+
}, children: [_jsxs("span", { className: "mn-menu__text", children: [o.label, o.description ? (_jsx("span", { className: "mn-combobox__description", children: o.description })) : null] }), o.value === value ? (_jsx("span", { className: "mn-menu__indicator", children: _jsx(CheckGlyph, {}) })) : null] }, o.value)))) }) }) })] }));
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../../../src/components/forms/combobox/combobox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/combobox/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/combobox/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { type HTMLAttributes, type LabelHTMLAttributes, type ReactNode, type SelectHTMLAttributes } from 'react';
|
|
2
|
+
interface FieldContextValue {
|
|
3
|
+
controlId: string;
|
|
4
|
+
labelId: string;
|
|
5
|
+
descriptionId: string;
|
|
6
|
+
errorId: string;
|
|
7
|
+
invalid: boolean;
|
|
8
|
+
required: boolean;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
hasDescription: boolean;
|
|
11
|
+
hasError: boolean;
|
|
12
|
+
register: (part: 'description' | 'error', present: boolean) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface FieldProps extends HTMLAttributes<HTMLDivElement> {
|
|
15
|
+
/** Override the generated control id (e.g. to match an existing label). */
|
|
16
|
+
id?: string;
|
|
17
|
+
invalid?: boolean;
|
|
18
|
+
required?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* `stack` (default): label, control, help and error in a column.
|
|
22
|
+
* `row`: label and help on the left, the control on the right, for a
|
|
23
|
+
* Switch (or Checkbox, or a compact NativeSelect) with a description.
|
|
24
|
+
* Exposed as `data-layout="row"`.
|
|
25
|
+
*/
|
|
26
|
+
layout?: 'stack' | 'row';
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Groups a label, a control, help text and an error message, and wires their
|
|
31
|
+
* ids together: the control gets `id`, `aria-describedby`, `aria-invalid`,
|
|
32
|
+
* `aria-required` and `disabled` automatically. Descriptions and errors
|
|
33
|
+
* register themselves, so `aria-describedby` only names elements that exist.
|
|
34
|
+
*
|
|
35
|
+
* <Field invalid={!!error}>
|
|
36
|
+
* <FieldLabel>Email</FieldLabel>
|
|
37
|
+
* <Input type="email" />
|
|
38
|
+
* <FieldError>{error}</FieldError>
|
|
39
|
+
* </Field>
|
|
40
|
+
*/
|
|
41
|
+
export declare function Field({ id, invalid, required, disabled, layout, className, children, ...rest }: FieldProps): import("react").JSX.Element;
|
|
42
|
+
export declare function useFieldContext(): FieldContextValue | null;
|
|
43
|
+
export interface FieldControlProps {
|
|
44
|
+
id?: string | undefined;
|
|
45
|
+
disabled?: boolean | undefined;
|
|
46
|
+
required?: boolean | undefined;
|
|
47
|
+
'aria-describedby'?: string | undefined;
|
|
48
|
+
'aria-invalid'?: boolean | 'true' | 'false' | 'grammar' | 'spelling' | undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Merges Field context into a control's props. Explicit props win, so a
|
|
52
|
+
* control can still be used outside a Field.
|
|
53
|
+
*/
|
|
54
|
+
export declare function useFieldControl<P extends FieldControlProps>(props: P, options?: {
|
|
55
|
+
invalid?: boolean | undefined;
|
|
56
|
+
}): P & {
|
|
57
|
+
'aria-required'?: true;
|
|
58
|
+
'aria-invalid'?: true;
|
|
59
|
+
};
|
|
60
|
+
export interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
|
|
61
|
+
/** Text shown after the label for optional fields, e.g. "Optional". */
|
|
62
|
+
optionalText?: string;
|
|
63
|
+
}
|
|
64
|
+
export declare const FieldLabel: import("react").ForwardRefExoticComponent<FieldLabelProps & import("react").RefAttributes<HTMLLabelElement>>;
|
|
65
|
+
export declare function FieldDescription({ className, ...rest }: HTMLAttributes<HTMLParagraphElement>): import("react").JSX.Element;
|
|
66
|
+
/**
|
|
67
|
+
* Renders nothing when empty, so it can always be present. Announced politely
|
|
68
|
+
* when it appears.
|
|
69
|
+
*/
|
|
70
|
+
export declare function FieldError({ className, children, ...rest }: HTMLAttributes<HTMLParagraphElement>): import("react").JSX.Element | null;
|
|
71
|
+
export interface NativeSelectOption {
|
|
72
|
+
value: string;
|
|
73
|
+
label: string;
|
|
74
|
+
disabled?: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface NativeSelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
|
|
77
|
+
/** Control height. `sm` is the compact toolbar size (`--mn-control-sm`). Default `md`. */
|
|
78
|
+
size?: 'sm' | 'md' | 'lg';
|
|
79
|
+
/** Marks the value invalid. Inside a Field, the Field's `invalid` is used. */
|
|
80
|
+
invalid?: boolean;
|
|
81
|
+
/** Options as data. `children` (`<option>`, `<optgroup>`) are rendered after them. */
|
|
82
|
+
options?: readonly NativeSelectOption[];
|
|
83
|
+
/**
|
|
84
|
+
* First, empty option shown while no value is chosen. It is disabled once
|
|
85
|
+
* the control is `required`, so it cannot be submitted.
|
|
86
|
+
*/
|
|
87
|
+
placeholder?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Visible label rendered inline before the select, for toolbars and filter
|
|
90
|
+
* rows outside a Field ("Sort Newest ▾"). Inside a Field use FieldLabel.
|
|
91
|
+
*/
|
|
92
|
+
label?: ReactNode;
|
|
93
|
+
/** Class for the wrapper `<span class="mn-native-select">`; `className` goes on the `<select>`. */
|
|
94
|
+
wrapperClassName?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The platform `<select>`, styled like Input and wired to Field. Use it where
|
|
98
|
+
* the native picker is right: long option lists on mobile, forms that must
|
|
99
|
+
* work without JavaScript, compact toolbar filters. For a styled listbox use
|
|
100
|
+
* Select; for search use Combobox.
|
|
101
|
+
*/
|
|
102
|
+
export declare const NativeSelect: import("react").ForwardRefExoticComponent<NativeSelectProps & import("react").RefAttributes<HTMLSelectElement>>;
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=form-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/form-field/form-field.tsx"],"names":[],"mappings":"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"}
|