@rookcom/monarch-react 0.0.0-canary-20261103180711
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 +14 -0
- package/README.md +5 -0
- package/dist/components/actions/button/button.d.ts +32 -0
- package/dist/components/actions/button/button.d.ts.map +1 -0
- package/dist/components/actions/button/button.js +30 -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/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 +14 -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 +12 -0
- package/dist/components/data-display/progress-bar/progress-bar.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/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/empty-state/empty-state.d.ts +17 -0
- package/dist/components/feedback/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/feedback/empty-state/empty-state.js +10 -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-state/error-state.d.ts +23 -0
- package/dist/components/feedback/error-state/error-state.d.ts.map +1 -0
- package/dist/components/feedback/error-state/error-state.js +15 -0
- package/dist/components/feedback/error-state/error-state.js.map +1 -0
- package/dist/components/feedback/error-state/index.d.ts +2 -0
- package/dist/components/feedback/error-state/index.d.ts.map +1 -0
- package/dist/components/feedback/error-state/index.js +2 -0
- package/dist/components/feedback/error-state/index.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 +40 -0
- package/dist/components/feedback/toast/toast.d.ts.map +1 -0
- package/dist/components/feedback/toast/toast.js +67 -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 +65 -0
- package/dist/components/forms/form-field/form-field.d.ts.map +1 -0
- package/dist/components/forms/form-field/form-field.js +101 -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/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/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/identity/avatar/avatar.d.ts +16 -0
- package/dist/components/identity/avatar/avatar.d.ts.map +1 -0
- package/dist/components/identity/avatar/avatar.js +28 -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/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/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 +12 -0
- package/dist/components/navigation/tabs/tabs.d.ts.map +1 -0
- package/dist/components/navigation/tabs/tabs.js +17 -0
- package/dist/components/navigation/tabs/tabs.js.map +1 -0
- package/dist/components/overlays/dialog/dialog.d.ts +22 -0
- package/dist/components/overlays/dialog/dialog.d.ts.map +1 -0
- package/dist/components/overlays/dialog/dialog.js +33 -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/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/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/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -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/icons.d.ts +20 -0
- package/dist/internal/icons.d.ts.map +1 -0
- package/dist/internal/icons.js +63 -0
- package/dist/internal/icons.js.map +1 -0
- package/dist/manifest.json +4484 -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/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 +2437 -0
- package/package.json +72 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# @rookcom/monarch-react
|
|
2
|
+
|
|
3
|
+
## 0.0.0-canary-20261103180711
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 59005b3: Wave 1 (actions group): add `CopyButton` with `useCopyToClipboard` and `writeToClipboard`, `CopyField`, `SecretField`, `StatusBadge` with a typed status registry (`builtInStatuses`, `defineStatuses`, `StatusRegistryProvider`, `resolveStatus`, `formatStatusLabel`) and a contrast guard for custom colours (`checkStatusColor`), and `SegmentedControl` (radio group with roving focus) with its multi-select sibling `ToggleGroup` (`aria-pressed`).
|
|
8
|
+
|
|
9
|
+
## 0.2.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- Packages move to the public npm registry as `@rookcom/monarch-*` (were `@rookhq/monarch-*` on GitHub Packages). Apps install with plain `npm ci`; no registry token is needed. Releases are published from CI with npm trusted publishing and provenance.
|
|
14
|
+
- 8177b95: Add Toast (ToastProvider, useToast), Table primitives with sortable headers and selection cells, Breadcrumb, Pagination, Combobox, Separator, Progress and Link, plus the first experience patterns: PageHeader, Toolbar, FilterBar/FilterChip, SettingsSection/SettingsRow, DescriptionList, SplitLayout, StatCard, ErrorState and LoadingState. DropdownMenuItem now supports `asChild`.
|
package/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'danger-subtle';
|
|
3
|
+
export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
4
|
+
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
/** Visual weight. Use one `primary` per view region. Default `secondary`. */
|
|
6
|
+
variant?: ButtonVariant;
|
|
7
|
+
size?: ButtonSize;
|
|
8
|
+
/** Shows a spinner, sets aria-busy and blocks clicks while keeping focus. */
|
|
9
|
+
loading?: boolean;
|
|
10
|
+
/** Icon before the label. Decorative: hidden from assistive technology. */
|
|
11
|
+
leadingIcon?: ReactNode;
|
|
12
|
+
trailingIcon?: ReactNode;
|
|
13
|
+
/** Stretch to the container width. */
|
|
14
|
+
block?: boolean;
|
|
15
|
+
/** Render the child element (e.g. a Next.js <Link>) with button styling. */
|
|
16
|
+
asChild?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The primary action control.
|
|
20
|
+
*
|
|
21
|
+
* Defaults to `type="button"` so a button inside a form never submits by
|
|
22
|
+
* accident; pass `type="submit"` explicitly.
|
|
23
|
+
*/
|
|
24
|
+
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
25
|
+
export interface IconButtonProps extends Omit<ButtonProps, 'leadingIcon' | 'trailingIcon' | 'children' | 'block' | 'aria-label'> {
|
|
26
|
+
/** Required accessible name, since there is no visible text. */
|
|
27
|
+
label: string;
|
|
28
|
+
icon: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
/** Square button containing only an icon. `label` is required by the type system. */
|
|
31
|
+
export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
32
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/button/button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK9E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,6EAA6E;IAC7E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,2GAyDjB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,WAAW,EACX,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CACrE;IACC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,qFAAqF;AACrF,eAAO,MAAM,UAAU,+GAmBrB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { Slot, Slottable } from '@radix-ui/react-slot';
|
|
5
|
+
import { cx } from '../../../internal/cx.js';
|
|
6
|
+
import { Spinner } from '../../feedback/spinner/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* The primary action control.
|
|
9
|
+
*
|
|
10
|
+
* Defaults to `type="button"` so a button inside a form never submits by
|
|
11
|
+
* accident; pass `type="submit"` explicitly.
|
|
12
|
+
*/
|
|
13
|
+
export const Button = forwardRef(function Button({ variant = 'secondary', size = 'md', loading = false, leadingIcon, trailingIcon, block = false, asChild = false, disabled, type, className, children, onClick, ...rest }, ref) {
|
|
14
|
+
const Comp = asChild ? Slot : 'button';
|
|
15
|
+
// A loading button stays focusable (aria-disabled, not disabled) so keyboard
|
|
16
|
+
// users do not lose their place while the action completes.
|
|
17
|
+
const blocked = disabled || loading;
|
|
18
|
+
return (_jsxs(Comp, { ref: ref, ...rest, ...(asChild ? {} : { type: type ?? 'button', disabled: disabled || undefined }), "aria-disabled": blocked || undefined, "aria-busy": loading || undefined, "data-variant": variant, "data-size": size, "data-loading": loading || undefined, "data-block": block || undefined, className: cx('mn-button', className), onClick: (event) => {
|
|
19
|
+
if (blocked) {
|
|
20
|
+
event.preventDefault();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
onClick?.(event);
|
|
24
|
+
}, children: [loading ? (_jsx(Spinner, { size: "sm", className: "mn-button__icon" })) : leadingIcon ? (_jsx("span", { className: "mn-button__icon", "aria-hidden": true, children: leadingIcon })) : null, _jsx(Slottable, { children: children }), trailingIcon ? (_jsx("span", { className: "mn-button__icon", "aria-hidden": true, children: trailingIcon })) : null] }));
|
|
25
|
+
});
|
|
26
|
+
/** Square button containing only an icon. `label` is required by the type system. */
|
|
27
|
+
export const IconButton = forwardRef(function IconButton({ label, icon, variant = 'ghost', className, ...rest }, ref) {
|
|
28
|
+
return (_jsx(Button, { ref: ref, ...rest, variant: variant, "aria-label": label, className: cx('mn-icon-button', className), children: rest.loading ? null : (_jsx("span", { className: "mn-button__icon", "aria-hidden": true, children: icon })) }));
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../src/components/actions/button/button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAA6C,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAoB1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAiC,SAAS,MAAM,CAC9E,EACE,OAAO,GAAG,WAAW,EACrB,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,WAAW,EACX,YAAY,EACZ,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,EACR,EACD,GAAG;IAEH,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvC,6EAA6E;IAC7E,4DAA4D;IAC5D,MAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,CAAC;IACpC,OAAO,CACL,MAAC,IAAI,IACH,GAAG,EAAE,GAAG,KACJ,IAAI,KACJ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC,mBACjE,OAAO,IAAI,SAAS,eACxB,OAAO,IAAI,SAAS,kBACjB,OAAO,eACV,IAAI,kBACD,OAAO,IAAI,SAAS,gBACtB,KAAK,IAAI,SAAS,EAC9B,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,aAEA,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,OAAO,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,iBAAiB,GAAG,CAClD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,eAAM,SAAS,EAAC,iBAAiB,iCAC9B,WAAW,GACP,CACR,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,SAAS,cAAE,QAAQ,GAAa,EAChC,YAAY,CAAC,CAAC,CAAC,CACd,eAAM,SAAS,EAAC,iBAAiB,iCAC9B,YAAY,GACR,CACR,CAAC,CAAC,CAAC,IAAI,IACH,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAWH,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAqC,SAAS,UAAU,CAC1F,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EACtD,GAAG;IAEH,OAAO,CACL,KAAC,MAAM,IACL,GAAG,EAAE,GAAG,KACJ,IAAI,EACR,OAAO,EAAE,OAAO,gBACJ,KAAK,EACjB,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,YAEzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACrB,eAAM,SAAS,EAAC,iBAAiB,iCAC9B,IAAI,GACA,CACR,GACM,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/button/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/actions/button/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type ButtonProps } from '../button/index.js';
|
|
3
|
+
export type CopyStatus = 'idle' | 'copied' | 'error';
|
|
4
|
+
/** What to copy: a string, or a function that returns one (sync or async). */
|
|
5
|
+
export type CopyValue = string | (() => string | Promise<string>);
|
|
6
|
+
export interface UseCopyToClipboardOptions {
|
|
7
|
+
/** Milliseconds before `copied` or `error` returns to `idle`. `0` keeps the state. Default 2000. */
|
|
8
|
+
resetAfter?: number;
|
|
9
|
+
/** Called with the copied text after a successful copy. */
|
|
10
|
+
onCopy?: (text: string) => void;
|
|
11
|
+
/** Called when the clipboard is unavailable or the browser refuses the write. */
|
|
12
|
+
onError?: (error: Error) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface UseCopyToClipboardResult {
|
|
15
|
+
/** Copies `value`. Resolves `true` on success; never rejects. */
|
|
16
|
+
copy: (value: CopyValue) => Promise<boolean>;
|
|
17
|
+
status: CopyStatus;
|
|
18
|
+
/** The last error, or `null`. */
|
|
19
|
+
error: Error | null;
|
|
20
|
+
/** Returns to `idle` immediately. */
|
|
21
|
+
reset: () => void;
|
|
22
|
+
}
|
|
23
|
+
/** Writes text to the clipboard: the async Clipboard API first, then the legacy fallback. */
|
|
24
|
+
export declare function writeToClipboard(text: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Copies text and tracks the result. The state machine is
|
|
27
|
+
* `idle → copied | error → idle` (after `resetAfter`). It never throws:
|
|
28
|
+
* failures go to `onError` and `status: 'error'`, so the caller decides how
|
|
29
|
+
* to tell the user (inline, a toast, a manual-copy fallback).
|
|
30
|
+
*/
|
|
31
|
+
export declare function useCopyToClipboard(options?: UseCopyToClipboardOptions): UseCopyToClipboardResult;
|
|
32
|
+
export interface CopyButtonProps extends Omit<ButtonProps, 'children' | 'value' | 'onError' | 'onCopy' | 'leadingIcon' | 'asChild'> {
|
|
33
|
+
/** The text to copy, or a function that produces it when clicked. */
|
|
34
|
+
value: CopyValue;
|
|
35
|
+
/** Visible label, and the accessible name. Default "Copy". */
|
|
36
|
+
label?: string;
|
|
37
|
+
/** Label while in the copied state. Default "Copied". */
|
|
38
|
+
copiedLabel?: string;
|
|
39
|
+
/** Label after a failed copy. Default "Couldn't copy". */
|
|
40
|
+
errorLabel?: string;
|
|
41
|
+
/**
|
|
42
|
+
* What is copied, for screen readers ("webhook URL"). Appended to the
|
|
43
|
+
* visible label as visually hidden text, so several copy buttons on one page
|
|
44
|
+
* have distinct names: "Copy webhook URL", "Copied webhook URL".
|
|
45
|
+
*/
|
|
46
|
+
target?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Hide the visible text and show only the icon. `label` stays the accessible
|
|
49
|
+
* name, so give it the object: "Copy API key".
|
|
50
|
+
*/
|
|
51
|
+
iconOnly?: boolean;
|
|
52
|
+
/** Polite announcement after a successful copy. Default "Copied to clipboard". */
|
|
53
|
+
copiedMessage?: string;
|
|
54
|
+
/** Polite announcement after a failure. Default "Couldn't copy. Select the text and copy it manually." */
|
|
55
|
+
errorMessage?: string;
|
|
56
|
+
/** Replaces the copy icon. Decorative. */
|
|
57
|
+
icon?: ReactNode;
|
|
58
|
+
/** Milliseconds before the button returns to its idle look. Default 2000. */
|
|
59
|
+
resetAfter?: number;
|
|
60
|
+
/** Called with the copied text after a successful copy. */
|
|
61
|
+
onCopy?: (text: string) => void;
|
|
62
|
+
/** Called when copying fails. Use it to show a toast or a manual-copy fallback. */
|
|
63
|
+
onCopyError?: (error: Error) => void;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Copies a value to the clipboard, shows a short "Copied" state and announces
|
|
67
|
+
* the result through a polite live region. Errors are reported to the caller
|
|
68
|
+
* through `onCopyError`; the button never fails silently.
|
|
69
|
+
*/
|
|
70
|
+
export declare const CopyButton: import("react").ForwardRefExoticComponent<CopyButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
71
|
+
//# sourceMappingURL=copy-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-button.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/copy-button/copy-button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG7F,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,8EAA8E;AAC9E,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAElE,MAAM,WAAW,yBAAyB;IACxC,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,iFAAiF;IACjF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,qCAAqC;IACrC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAqCD,6FAA6F;AAC7F,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAalE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAqD1B;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,WAAW,EACX,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CACxE;IACC,qEAAqE;IACrE,KAAK,EAAE,SAAS,CAAC;IACjB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0GAA0G;IAC1G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mFAAmF;IACnF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtC;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,+GA+FrB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
import { CheckGlyph, CopyGlyph, WarningGlyph } from '../../../internal/icons.js';
|
|
6
|
+
import { Button } from '../button/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Fallback for browsers or contexts without the async Clipboard API (for
|
|
9
|
+
* example an insecure origin). Uses a temporary off-screen textarea and
|
|
10
|
+
* restores the previous focus and selection.
|
|
11
|
+
*/
|
|
12
|
+
function legacyCopy(text) {
|
|
13
|
+
if (typeof document === 'undefined' || typeof document.execCommand !== 'function')
|
|
14
|
+
return false;
|
|
15
|
+
const active = document.activeElement;
|
|
16
|
+
const selection = document.getSelection();
|
|
17
|
+
const range = selection && selection.rangeCount > 0 ? selection.getRangeAt(0) : null;
|
|
18
|
+
const area = document.createElement('textarea');
|
|
19
|
+
area.value = text;
|
|
20
|
+
area.setAttribute('readonly', '');
|
|
21
|
+
area.setAttribute('aria-hidden', 'true');
|
|
22
|
+
area.style.position = 'fixed';
|
|
23
|
+
area.style.top = '0';
|
|
24
|
+
area.style.left = '-9999px';
|
|
25
|
+
area.style.opacity = '0';
|
|
26
|
+
document.body.appendChild(area);
|
|
27
|
+
area.select();
|
|
28
|
+
let ok = false;
|
|
29
|
+
try {
|
|
30
|
+
ok = document.execCommand('copy');
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
ok = false;
|
|
34
|
+
}
|
|
35
|
+
area.remove();
|
|
36
|
+
if (range && selection) {
|
|
37
|
+
selection.removeAllRanges();
|
|
38
|
+
selection.addRange(range);
|
|
39
|
+
}
|
|
40
|
+
active?.focus?.({ preventScroll: true });
|
|
41
|
+
return ok;
|
|
42
|
+
}
|
|
43
|
+
/** Writes text to the clipboard: the async Clipboard API first, then the legacy fallback. */
|
|
44
|
+
export async function writeToClipboard(text) {
|
|
45
|
+
const clipboard = typeof navigator !== 'undefined' ? navigator.clipboard : undefined;
|
|
46
|
+
if (clipboard?.writeText) {
|
|
47
|
+
try {
|
|
48
|
+
await clipboard.writeText(text);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (legacyCopy(text))
|
|
53
|
+
return;
|
|
54
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (legacyCopy(text))
|
|
58
|
+
return;
|
|
59
|
+
throw new Error('Clipboard is not available in this browser.');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Copies text and tracks the result. The state machine is
|
|
63
|
+
* `idle → copied | error → idle` (after `resetAfter`). It never throws:
|
|
64
|
+
* failures go to `onError` and `status: 'error'`, so the caller decides how
|
|
65
|
+
* to tell the user (inline, a toast, a manual-copy fallback).
|
|
66
|
+
*/
|
|
67
|
+
export function useCopyToClipboard(options = {}) {
|
|
68
|
+
const { resetAfter = 2000 } = options;
|
|
69
|
+
const [status, setStatus] = useState('idle');
|
|
70
|
+
const [error, setError] = useState(null);
|
|
71
|
+
const timer = useRef(undefined);
|
|
72
|
+
const mounted = useRef(true);
|
|
73
|
+
const callbacks = useRef(options);
|
|
74
|
+
callbacks.current = options;
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
mounted.current = true;
|
|
77
|
+
return () => {
|
|
78
|
+
mounted.current = false;
|
|
79
|
+
clearTimeout(timer.current);
|
|
80
|
+
};
|
|
81
|
+
}, []);
|
|
82
|
+
const reset = useCallback(() => {
|
|
83
|
+
clearTimeout(timer.current);
|
|
84
|
+
setStatus('idle');
|
|
85
|
+
setError(null);
|
|
86
|
+
}, []);
|
|
87
|
+
const copy = useCallback(async (value) => {
|
|
88
|
+
clearTimeout(timer.current);
|
|
89
|
+
let next;
|
|
90
|
+
try {
|
|
91
|
+
const text = typeof value === 'function' ? await value() : value;
|
|
92
|
+
await writeToClipboard(text);
|
|
93
|
+
if (!mounted.current)
|
|
94
|
+
return true;
|
|
95
|
+
setError(null);
|
|
96
|
+
next = 'copied';
|
|
97
|
+
callbacks.current.onCopy?.(text);
|
|
98
|
+
}
|
|
99
|
+
catch (raw) {
|
|
100
|
+
const err = raw instanceof Error ? raw : new Error(String(raw));
|
|
101
|
+
if (!mounted.current)
|
|
102
|
+
return false;
|
|
103
|
+
setError(err);
|
|
104
|
+
next = 'error';
|
|
105
|
+
callbacks.current.onError?.(err);
|
|
106
|
+
}
|
|
107
|
+
setStatus(next);
|
|
108
|
+
if (resetAfter > 0) {
|
|
109
|
+
timer.current = setTimeout(() => {
|
|
110
|
+
if (mounted.current)
|
|
111
|
+
setStatus('idle');
|
|
112
|
+
}, resetAfter);
|
|
113
|
+
}
|
|
114
|
+
return next === 'copied';
|
|
115
|
+
}, [resetAfter]);
|
|
116
|
+
return { copy, status, error, reset };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Copies a value to the clipboard, shows a short "Copied" state and announces
|
|
120
|
+
* the result through a polite live region. Errors are reported to the caller
|
|
121
|
+
* through `onCopyError`; the button never fails silently.
|
|
122
|
+
*/
|
|
123
|
+
export const CopyButton = forwardRef(function CopyButton({ value, label = 'Copy', copiedLabel = 'Copied', errorLabel = "Couldn't copy", iconOnly = false, target, copiedMessage = 'Copied to clipboard', errorMessage = "Couldn't copy. Select the text and copy it manually.", icon, resetAfter = 2000, onCopy, onCopyError, onClick, variant = iconOnly ? 'ghost' : 'secondary', className, ...rest }, ref) {
|
|
124
|
+
const { copy, status } = useCopyToClipboard(onCopy || onCopyError
|
|
125
|
+
? {
|
|
126
|
+
resetAfter,
|
|
127
|
+
...(onCopy ? { onCopy } : {}),
|
|
128
|
+
...(onCopyError ? { onError: onCopyError } : {}),
|
|
129
|
+
}
|
|
130
|
+
: { resetAfter });
|
|
131
|
+
// The live region keeps its text until the next attempt, then is cleared and
|
|
132
|
+
// refilled so repeated copies are announced each time.
|
|
133
|
+
const [message, setMessage] = useState('');
|
|
134
|
+
const glyph = status === 'copied' ? (_jsx(CheckGlyph, {})) : status === 'error' ? (_jsx(WarningGlyph, {})) : ((icon ?? _jsx(CopyGlyph, {})));
|
|
135
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Button, { ref: ref, ...rest, variant: variant, "aria-label": iconOnly ? (target ? `${label} ${target}` : label) : undefined, title: rest.title ?? (iconOnly ? (target ? `${label} ${target}` : label) : undefined), "data-state": status, "data-icon-only": iconOnly || undefined, className: cx('mn-copy-button', className), onClick: (event) => {
|
|
136
|
+
onClick?.(event);
|
|
137
|
+
if (event.defaultPrevented)
|
|
138
|
+
return;
|
|
139
|
+
setMessage('');
|
|
140
|
+
void copy(value).then((ok) => setMessage(ok ? copiedMessage : errorMessage));
|
|
141
|
+
}, children: [_jsx("span", { className: "mn-copy-button__icon", "aria-hidden": true, children: glyph }), iconOnly ? null : (
|
|
142
|
+
// The idle and copied labels share one grid cell, so the button keeps
|
|
143
|
+
// the width of the longer one and does not jump on success. The rarer
|
|
144
|
+
// error label replaces them and may widen the button.
|
|
145
|
+
_jsx("span", { className: "mn-copy-button__label", children: status === 'error' ? (_jsx("span", { "data-active": "", children: errorLabel })) : ([
|
|
146
|
+
['idle', label],
|
|
147
|
+
['copied', copiedLabel],
|
|
148
|
+
].map(([key, text]) => (_jsx("span", { "data-active": key === status || undefined, "aria-hidden": key === status ? undefined : true, children: text }, key)))) })), !iconOnly && target ? _jsxs("span", { className: "mn-visually-hidden", children: [" ", target] }) : null] }), _jsx("span", { className: "mn-visually-hidden", role: "status", "aria-live": "polite", "aria-atomic": "true", children: message })] }));
|
|
149
|
+
});
|
|
150
|
+
//# sourceMappingURL=copy-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-button.js","sourceRoot":"","sources":["../../../../src/components/actions/copy-button/copy-button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/copy-button/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/actions/copy-button/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
import { type CopyButtonProps } from '../copy-button/index.js';
|
|
3
|
+
import { type ControlSize } from '../../forms/text-field/index.js';
|
|
4
|
+
export interface CopyFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onCopy'> {
|
|
5
|
+
/** The read-only value shown and copied. */
|
|
6
|
+
value: string;
|
|
7
|
+
/**
|
|
8
|
+
* What the value is ("Webhook URL"). Names the text box outside a Field
|
|
9
|
+
* (inside one, the FieldLabel does) and completes the copy button's name:
|
|
10
|
+
* "Copy webhook URL".
|
|
11
|
+
*/
|
|
12
|
+
label: string;
|
|
13
|
+
/** Show the value in a multi-line text area (certificates, JSON, snippets). */
|
|
14
|
+
multiline?: boolean;
|
|
15
|
+
/** Visible rows when `multiline`. Default 3. */
|
|
16
|
+
rows?: number;
|
|
17
|
+
/** Monospace text for codes, keys, hostnames and DNS records. Default true. */
|
|
18
|
+
mono?: boolean;
|
|
19
|
+
size?: ControlSize;
|
|
20
|
+
/** Select the whole value when the text box gets focus. Default true. */
|
|
21
|
+
selectOnFocus?: boolean;
|
|
22
|
+
/** Show only the copy icon. The button is still named "Copy {label}". Default false. */
|
|
23
|
+
iconOnly?: boolean;
|
|
24
|
+
/** Visible text of the copy button. Default "Copy". */
|
|
25
|
+
copyLabel?: string;
|
|
26
|
+
/** Visible text of the copy button after copying. Default "Copied". */
|
|
27
|
+
copiedLabel?: string;
|
|
28
|
+
/** Milliseconds before the button returns to its idle look. Default 2000. */
|
|
29
|
+
resetAfter?: number;
|
|
30
|
+
/** Called with the copied text after a successful copy. */
|
|
31
|
+
onCopy?: (text: string) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Called when copying fails. The value is selected first, so the user can
|
|
34
|
+
* copy it by hand; show a toast here if the product uses them.
|
|
35
|
+
*/
|
|
36
|
+
onCopyError?: (error: Error) => void;
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
/** Extra props for the copy button, for example `variant`. */
|
|
39
|
+
copyButtonProps?: Omit<CopyButtonProps, 'value' | 'label' | 'target' | 'iconOnly' | 'onCopy' | 'onCopyError' | 'resetAfter' | 'size' | 'copiedLabel'>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A read-only value with a copy button: webhook URLs, DNS records, embed
|
|
43
|
+
* snippets, calendar feed links. If copying fails, the value is focused and
|
|
44
|
+
* selected so the user can copy it by hand.
|
|
45
|
+
*/
|
|
46
|
+
export declare const CopyField: import("react").ForwardRefExoticComponent<CopyFieldProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
47
|
+
//# sourceMappingURL=copy-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-field.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/copy-field/copy-field.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEpF,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IACpF,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,IAAI,CACpB,eAAe,EACb,OAAO,GACP,OAAO,GACP,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,MAAM,GACN,aAAa,CAChB,CAAC;CACH;AAKD;;;;GAIG;AACH,eAAO,MAAM,SAAS,2GAyEpB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useRef } from 'react';
|
|
4
|
+
import { cx } from '../../../internal/cx.js';
|
|
5
|
+
import { CopyButton } from '../copy-button/index.js';
|
|
6
|
+
import { useFieldContext } from '../../forms/form-field/index.js';
|
|
7
|
+
import { Input, Textarea } from '../../forms/text-field/index.js';
|
|
8
|
+
const selectAll = (event) => event.currentTarget.select();
|
|
9
|
+
/**
|
|
10
|
+
* A read-only value with a copy button: webhook URLs, DNS records, embed
|
|
11
|
+
* snippets, calendar feed links. If copying fails, the value is focused and
|
|
12
|
+
* selected so the user can copy it by hand.
|
|
13
|
+
*/
|
|
14
|
+
export const CopyField = forwardRef(function CopyField({ value, label, multiline = false, rows = 3, mono = true, size = 'md', selectOnFocus = true, iconOnly = false, copyLabel = 'Copy', copiedLabel = 'Copied', resetAfter = 2000, onCopy, onCopyError, disabled, copyButtonProps, className, ...rest }, ref) {
|
|
15
|
+
const field = useFieldContext();
|
|
16
|
+
const controlRef = useRef(null);
|
|
17
|
+
const control = {
|
|
18
|
+
// Inside a Field the visible FieldLabel names the control; outside, `label` does.
|
|
19
|
+
...(field ? {} : { 'aria-label': label }),
|
|
20
|
+
value,
|
|
21
|
+
readOnly: true,
|
|
22
|
+
disabled,
|
|
23
|
+
spellCheck: false,
|
|
24
|
+
autoComplete: 'off',
|
|
25
|
+
onFocus: selectOnFocus ? selectAll : undefined,
|
|
26
|
+
className: 'mn-copy-field__control',
|
|
27
|
+
};
|
|
28
|
+
return (_jsxs("div", { ref: ref, ...rest, className: cx('mn-copy-field', className), "data-multiline": multiline || undefined, "data-mono": mono || undefined, "data-size": size, children: [multiline ? (_jsx(Textarea, { ref: controlRef, ...control, rows: rows, resizable: false })) : (_jsx(Input, { ref: controlRef, ...control, size: size })), _jsx(CopyButton, { ...copyButtonProps, value: value, label: copyLabel, target: label, copiedLabel: copiedLabel, iconOnly: iconOnly, size: size, resetAfter: resetAfter, disabled: disabled, ...(onCopy ? { onCopy } : {}), onCopyError: (error) => {
|
|
29
|
+
const el = controlRef.current;
|
|
30
|
+
if (el) {
|
|
31
|
+
el.focus();
|
|
32
|
+
el.select();
|
|
33
|
+
}
|
|
34
|
+
onCopyError?.(error);
|
|
35
|
+
}, className: cx('mn-copy-field__button', copyButtonProps?.className) })] }));
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=copy-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-field.js","sourceRoot":"","sources":["../../../../src/components/actions/copy-field/copy-field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/copy-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/actions/copy-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export type Tone = 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';
|
|
3
|
+
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
tone?: Tone;
|
|
5
|
+
/** `subtle` (default) for status in tables, `solid` for counts, `outline` for metadata. */
|
|
6
|
+
variant?: 'subtle' | 'solid' | 'outline';
|
|
7
|
+
size?: 'sm' | 'md';
|
|
8
|
+
/** Leading status dot. */
|
|
9
|
+
dot?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** Short status or metadata label. Never the only way to convey meaning: keep the text. */
|
|
12
|
+
export declare function Badge({ tone, variant, size, dot, className, children, ...rest }: BadgeProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/badge/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,2FAA2F;IAC3F,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACzC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,0BAA0B;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,CAAC,EACpB,IAAgB,EAChB,OAAkB,EAClB,IAAW,EACX,GAAW,EACX,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,UAAU,+BAaZ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../../../internal/cx.js';
|
|
3
|
+
/** Short status or metadata label. Never the only way to convey meaning: keep the text. */
|
|
4
|
+
export function Badge({ tone = 'neutral', variant = 'subtle', size = 'md', dot = false, className, children, ...rest }) {
|
|
5
|
+
return (_jsxs("span", { ...rest, className: cx('mn-badge', className), "data-tone": tone, "data-variant": variant, "data-size": size, children: [dot ? _jsx("span", { className: "mn-badge__dot", "aria-hidden": true }) : null, children] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../src/components/data-display/badge/badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAa7C,2FAA2F;AAC3F,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,GAAG,SAAS,EAChB,OAAO,GAAG,QAAQ,EAClB,IAAI,GAAG,IAAI,EACX,GAAG,GAAG,KAAK,EACX,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACI;IACX,OAAO,CACL,mBACM,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,eACzB,IAAI,kBACD,OAAO,eACV,IAAI,aAEd,GAAG,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,eAAe,wBAAe,CAAC,CAAC,CAAC,IAAI,EAC3D,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/badge/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/data-display/badge/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/** `outline` (default) for most content, `raised` for floating panels, `subtle` inside other cards. */
|
|
4
|
+
variant?: 'outline' | 'raised' | 'subtle';
|
|
5
|
+
/** Remove inner padding, e.g. for a card wrapping a table. */
|
|
6
|
+
flush?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function Card({ variant, flush, className, ...rest }: CardProps): import("react").JSX.Element;
|
|
9
|
+
export declare function CardHeader({ className, ...rest }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
10
|
+
export interface CardTitleProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
11
|
+
/** Heading level that fits the page outline. Default h3. */
|
|
12
|
+
as?: 'h2' | 'h3' | 'h4';
|
|
13
|
+
}
|
|
14
|
+
export declare function CardTitle({ as: Tag, className, ...rest }: CardTitleProps): import("react").JSX.Element;
|
|
15
|
+
export declare function CardDescription({ className, ...rest }: HTMLAttributes<HTMLParagraphElement>): import("react").JSX.Element;
|
|
16
|
+
export declare function CardContent({ className, ...rest }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
17
|
+
export declare function CardFooter({ className, ...rest }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/card/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC/D,uGAAuG;IACvG,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,IAAI,CAAC,EAAE,OAAmB,EAAE,KAAa,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,+BASzF;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAEhF;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,kBAAkB,CAAC;IACxE,4DAA4D;IAC5D,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,GAAU,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,+BAE/E;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,oBAAoB,CAAC,+BAE3F;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAEjF;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAEhF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../../../internal/cx.js';
|
|
3
|
+
export function Card({ variant = 'outline', flush = false, className, ...rest }) {
|
|
4
|
+
return (_jsx("div", { ...rest, className: cx('mn-card', className), "data-variant": variant, "data-flush": flush || undefined }));
|
|
5
|
+
}
|
|
6
|
+
export function CardHeader({ className, ...rest }) {
|
|
7
|
+
return _jsx("div", { ...rest, className: cx('mn-card__header', className) });
|
|
8
|
+
}
|
|
9
|
+
export function CardTitle({ as: Tag = 'h3', className, ...rest }) {
|
|
10
|
+
return _jsx(Tag, { ...rest, className: cx('mn-card__title', className) });
|
|
11
|
+
}
|
|
12
|
+
export function CardDescription({ className, ...rest }) {
|
|
13
|
+
return _jsx("p", { ...rest, className: cx('mn-card__description', className) });
|
|
14
|
+
}
|
|
15
|
+
export function CardContent({ className, ...rest }) {
|
|
16
|
+
return _jsx("div", { ...rest, className: cx('mn-card__content', className) });
|
|
17
|
+
}
|
|
18
|
+
export function CardFooter({ className, ...rest }) {
|
|
19
|
+
return _jsx("div", { ...rest, className: cx('mn-card__footer', className) });
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/components/data-display/card/card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAS7C,MAAM,UAAU,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,KAAK,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAa;IACxF,OAAO,CACL,iBACM,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,kBACrB,OAAO,gBACT,KAAK,IAAI,SAAS,GAC9B,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAkC;IAC/E,OAAO,iBAAS,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAI,CAAC;AACxE,CAAC;AAOD,MAAM,UAAU,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAkB;IAC9E,OAAO,KAAC,GAAG,OAAK,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAI,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAwC;IAC1F,OAAO,eAAO,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,GAAI,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAkC;IAChF,OAAO,iBAAS,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAI,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAkC;IAC/E,OAAO,iBAAS,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAI,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/card/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/data-display/card/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|