@espressif/dashboard-ui-components 1.11.2 → 1.12.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/.claude/rules/dashboard-ui-consumption.md +176 -5
- package/.cursor/rules/dashboard-ui-consumption.mdc +163 -4
- package/CHANGELOG.md +1005 -0
- package/README.md +240 -7
- package/THIRD-PARTY-NOTICES.md +2 -1
- package/dist/alert.props-CcKo49Rb.d.ts +44 -0
- package/dist/animation/index.d.ts +3 -0
- package/dist/animation/index.js +3 -0
- package/dist/avatar.props-2q5BsX-R.d.ts +29 -0
- package/dist/button-BK-DIR_L.d.ts +21 -0
- package/dist/button-BxJ7s6sR.d.ts +76 -0
- package/dist/calendar.props-BtCzuWH1.d.ts +12 -0
- package/dist/carousel/index.d.ts +2 -0
- package/dist/carousel/index.js +2 -0
- package/dist/charts/index.d.ts +5 -0
- package/dist/charts/index.js +9 -0
- package/dist/common/app-logo/app-logo.js +1 -1
- package/dist/common/index.d.ts +9 -20
- package/dist/common/my-account-menu/my-account-menu.js +45 -13
- package/dist/common/profile-card/profile-card.js +3 -2
- package/dist/components/accordion/accordion.js +14 -5
- package/dist/components/accordion/index.d.ts +36 -0
- package/dist/components/accordion/index.js +2 -0
- package/dist/components/advanced-search-box/advanced-search-box.js +8 -2
- package/dist/components/advanced-search-box/index.d.ts +29 -0
- package/dist/components/advanced-search-box/index.js +2 -0
- package/dist/components/alert/alert.js +2 -1
- package/dist/components/alert/index.d.ts +12 -0
- package/dist/components/alert/index.js +2 -0
- package/dist/components/anchored-panel/anchored-panel.js +83 -0
- package/dist/components/anchored-panel/index.d.ts +31 -0
- package/dist/components/anchored-panel/index.js +2 -0
- package/dist/components/animated-containers/index.d.ts +13 -0
- package/dist/components/animated-containers/index.js +2 -0
- package/dist/components/async-multi-select/async-multi-select.js +48 -7
- package/dist/components/async-multi-select/index.d.ts +63 -0
- package/dist/components/async-multi-select/index.js +2 -0
- package/dist/components/avatar/avatar.js +11 -4
- package/dist/components/avatar/index.d.ts +8 -0
- package/dist/components/avatar/index.js +2 -0
- package/dist/components/avatar-group/avatar-group.js +35 -0
- package/dist/components/avatar-group/index.d.ts +31 -0
- package/dist/components/avatar-group/index.js +2 -0
- package/dist/components/badge/index.d.ts +14 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/breadcrumb/index.d.ts +21 -0
- package/dist/components/breadcrumb/index.js +2 -0
- package/dist/components/bubble/bubble.js +18 -0
- package/dist/components/bubble/index.d.ts +19 -0
- package/dist/components/bubble/index.js +2 -0
- package/dist/components/button/button.js +87 -25
- package/dist/components/button/flash-button.js +9 -3
- package/dist/components/button/index.d.ts +56 -0
- package/dist/components/button/index.js +6 -0
- package/dist/components/button-group/index.d.ts +16 -0
- package/dist/components/button-group/index.js +2 -0
- package/dist/components/calendar/calendar.js +5 -5
- package/dist/components/calendar/index.d.ts +11 -0
- package/dist/components/calendar/index.js +2 -0
- package/dist/components/card/index.d.ts +11 -0
- package/dist/components/card/index.js +2 -0
- package/dist/components/card-rail/card-rail.js +50 -0
- package/dist/components/card-rail/index.d.ts +30 -0
- package/dist/components/card-rail/index.js +2 -0
- package/dist/components/cards/collapsible-card.js +5 -2
- package/dist/components/cards/index.d.ts +16200 -0
- package/dist/components/cards/index.js +8 -0
- package/dist/components/cards/section-card.js +133 -8
- package/dist/components/cards/simple-card.js +5 -2
- package/dist/components/carousel/carousel.js +137 -49
- package/dist/components/carousel/index.d.ts +130 -0
- package/dist/components/carousel/index.js +2 -0
- package/dist/components/category-card/category-card.js +111 -0
- package/dist/components/category-card/index.d.ts +55 -0
- package/dist/components/category-card/index.js +2 -0
- package/dist/components/chart/area-chart.js +95 -85
- package/dist/components/chart/bar-chart.js +123 -60
- package/dist/components/chart/chart.js +127 -3
- package/dist/components/chart/composed-chart.js +109 -98
- package/dist/components/chart/donut-chart.js +23 -5
- package/dist/components/chart/index.d.ts +732 -0
- package/dist/components/chart/index.js +9 -0
- package/dist/components/chart/line-chart.js +93 -83
- package/dist/components/chart/treemap-chart.js +71 -58
- package/dist/components/check-badge/check-badge.js +25 -0
- package/dist/components/check-badge/index.d.ts +13 -0
- package/dist/components/check-badge/index.js +2 -0
- package/dist/components/checkbox/index.d.ts +8 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/choice-card/choice-card.js +99 -0
- package/dist/components/choice-card/index.d.ts +41 -0
- package/dist/components/choice-card/index.js +2 -0
- package/dist/components/circular-progress/circular-progress.js +5 -2
- package/dist/components/circular-progress/index.d.ts +23 -0
- package/dist/components/circular-progress/index.js +2 -0
- package/dist/components/code/index.d.ts +40 -0
- package/dist/components/code/index.js +2 -0
- package/dist/components/code-editor/code-editor.js +9 -3
- package/dist/components/code-editor/index.d.ts +82 -0
- package/dist/components/code-editor/index.js +2 -0
- package/dist/components/collapsible/index.d.ts +42 -0
- package/dist/components/collapsible/index.js +2 -0
- package/dist/components/column-panel/column-panel.js +38 -0
- package/dist/components/column-panel/index.d.ts +37 -0
- package/dist/components/column-panel/index.js +3 -0
- package/dist/components/column-panel/use-panel-flag.js +27 -0
- package/dist/components/combobox/index.d.ts +28 -0
- package/dist/components/combobox/index.js +2 -0
- package/dist/components/confirmation-dialog/confirmation-dialog.js +1 -1
- package/dist/components/confirmation-dialog/index.d.ts +40 -0
- package/dist/components/confirmation-dialog/index.js +3 -0
- package/dist/components/content-container/index.d.ts +16 -0
- package/dist/components/content-container/index.js +2 -0
- package/dist/components/copiable-text/index.d.ts +33 -0
- package/dist/components/copiable-text/index.js +2 -0
- package/dist/components/coverflow/_constants/coverflow-poses.js +23 -0
- package/dist/components/coverflow/_constants/coverflow-shapes.js +23 -0
- package/dist/components/coverflow/_hooks/use-coverflow.js +90 -0
- package/dist/components/coverflow/_utils/ring.js +24 -0
- package/dist/components/coverflow/coverflow.js +198 -0
- package/dist/components/coverflow/index.d.ts +105 -0
- package/dist/components/coverflow/index.js +2 -0
- package/dist/components/data-table/data-table.js +9 -2
- package/dist/components/data-table/index.d.ts +120 -0
- package/dist/components/data-table/index.js +3 -0
- package/dist/components/date-picker/date-picker.js +5 -2
- package/dist/components/date-picker/index.d.ts +50 -0
- package/dist/components/date-picker/index.js +2 -0
- package/dist/components/date-range-picker/date-range-picker.js +11 -2
- package/dist/components/date-range-picker/index.d.ts +100 -0
- package/dist/components/date-range-picker/index.js +3 -0
- package/dist/components/date-time-picker/date-time-picker.js +5 -2
- package/dist/components/date-time-picker/index.d.ts +79 -0
- package/dist/components/date-time-picker/index.js +2 -0
- package/dist/components/device-icon/index.d.ts +17 -0
- package/dist/components/device-icon/index.js +2 -0
- package/dist/components/dialog/index.d.ts +38 -0
- package/dist/components/dialog/index.js +2 -0
- package/dist/components/dropdown-menu/index.d.ts +57 -0
- package/dist/components/dropdown-menu/index.js +2 -0
- package/dist/components/dynamic-list/dynamic-list.js +4 -4
- package/dist/components/dynamic-list/index.d.ts +74 -0
- package/dist/components/dynamic-list/index.js +2 -0
- package/dist/components/error-display/index.d.ts +17 -0
- package/dist/components/error-display/index.js +3 -0
- package/dist/components/expandable-text/expandable-text-overlay.js +78 -0
- package/dist/components/expandable-text/expandable-text.js +73 -0
- package/dist/components/expandable-text/index.d.ts +39 -0
- package/dist/components/expandable-text/index.js +2 -0
- package/dist/components/expandable-text/use-clamped.js +23 -0
- package/dist/components/facet-filters/_hooks/use-filter-group.js +51 -0
- package/dist/components/facet-filters/active-filters.js +31 -0
- package/dist/components/facet-filters/filter-group.js +110 -0
- package/dist/components/facet-filters/filters-panel.js +59 -0
- package/dist/components/facet-filters/filters-pill.js +40 -0
- package/dist/components/facet-filters/index.d.ts +104 -0
- package/dist/components/facet-filters/index.js +6 -0
- package/dist/components/facet-filters/use-filters-collapsed.js +21 -0
- package/dist/components/feature-grid/feature-grid.js +115 -0
- package/dist/components/feature-grid/index.d.ts +53 -0
- package/dist/components/feature-grid/index.js +2 -0
- package/dist/components/file-input/file-input.js +9 -3
- package/dist/components/file-input/index.d.ts +78 -0
- package/dist/components/file-input/index.js +2 -0
- package/dist/components/file-upload/file-upload.js +10 -5
- package/dist/components/file-upload/index.d.ts +38 -0
- package/dist/components/file-upload/index.js +2 -0
- package/dist/components/filters-bar/filters-bar.js +5 -1
- package/dist/components/filters-bar/index.d.ts +26 -0
- package/dist/components/filters-bar/index.js +2 -0
- package/dist/components/flip-card/flip-card.js +147 -0
- package/dist/components/flip-card/index.d.ts +43 -0
- package/dist/components/flip-card/index.js +2 -0
- package/dist/components/floating-window/_hooks/use-drag-move.js +76 -0
- package/dist/components/floating-window/floating-window.js +97 -0
- package/dist/components/floating-window/index.d.ts +45 -0
- package/dist/components/floating-window/index.js +2 -0
- package/dist/components/form/index.d.ts +28 -0
- package/dist/components/form/index.js +2 -0
- package/dist/components/fullscreen-dialog/fullscreen-dialog.js +6 -2
- package/dist/components/fullscreen-dialog/index.d.ts +38 -0
- package/dist/components/fullscreen-dialog/index.js +2 -0
- package/dist/components/horizontal-stepper/horizontal-stepper.js +122 -0
- package/dist/components/horizontal-stepper/index.d.ts +70 -0
- package/dist/components/horizontal-stepper/index.js +2 -0
- package/dist/components/icon-avatar/index.d.ts +9 -0
- package/dist/components/icon-avatar/index.js +2 -0
- package/dist/components/icon-text-action-card/icon-text-action-card.js +9 -5
- package/dist/components/icon-text-action-card/index.d.ts +11 -0
- package/dist/components/icon-text-action-card/index.js +2 -0
- package/dist/components/identicon/identicon.js +33 -0
- package/dist/components/identicon/index.d.ts +26 -0
- package/dist/components/identicon/index.js +2 -0
- package/dist/components/illustration/index.d.ts +37 -0
- package/dist/components/illustration/index.js +3 -0
- package/dist/components/index.d.ts +177 -19529
- package/dist/components/index.js +61 -10
- package/dist/components/input/index.d.ts +15 -0
- package/dist/components/input/index.js +3 -0
- package/dist/components/input-group/index.d.ts +35 -0
- package/dist/components/input-group/index.js +2 -0
- package/dist/components/input-group/input-group.js +41 -0
- package/dist/components/input-otp/index.d.ts +63 -0
- package/dist/components/input-otp/index.js +2 -0
- package/dist/components/key-value-manager/index.d.ts +63 -0
- package/dist/components/key-value-manager/index.js +2 -0
- package/dist/components/key-value-manager/key-value-manager-table.js +7 -5
- package/dist/components/label/index.d.ts +8 -0
- package/dist/components/label/index.js +2 -0
- package/dist/components/link/index.d.ts +33 -0
- package/dist/components/link/index.js +2 -0
- package/dist/components/list/index.d.ts +9 -0
- package/dist/components/list/index.js +3 -0
- package/dist/components/list/list-item.utils.js +1 -1
- package/dist/components/list/list.js +3 -1
- package/dist/components/list-details/index.d.ts +51 -0
- package/dist/components/list-details/index.js +2 -0
- package/dist/components/list-details/list-details.js +5 -2
- package/dist/components/lottie-animation-container/index.d.ts +10 -0
- package/dist/components/lottie-animation-container/index.js +2 -0
- package/dist/components/lottie-animation-container/lottie-animation-container.js +22 -3
- package/dist/components/lottie-animations/index.d.ts +8 -0
- package/dist/components/lottie-animations/index.js +2 -0
- package/dist/components/markdown-content/index.d.ts +32 -0
- package/dist/components/markdown-content/index.js +2 -0
- package/dist/components/media-card/index.d.ts +125 -0
- package/dist/components/media-card/index.js +4 -0
- package/dist/components/media-card/media-card-image.js +59 -0
- package/dist/components/media-card/media-card-reveal.js +76 -0
- package/dist/components/media-card/media-card.classes.js +37 -0
- package/dist/components/media-card/media-card.js +91 -0
- package/dist/components/media-stage/index.d.ts +41 -0
- package/dist/components/media-stage/index.js +2 -0
- package/dist/components/media-stage/media-stage.js +48 -0
- package/dist/components/menu/index.d.ts +14 -0
- package/dist/components/menu/index.js +2 -0
- package/dist/components/message-scroller/_hooks/use-follow-bottom.js +85 -0
- package/dist/components/message-scroller/index.d.ts +29 -0
- package/dist/components/message-scroller/index.js +2 -0
- package/dist/components/message-scroller/message-scroller.js +65 -0
- package/dist/components/mini-bar-chart/index.d.ts +40 -0
- package/dist/components/mini-bar-chart/index.js +2 -0
- package/dist/components/mini-bar-chart/mini-bar-chart.js +93 -0
- package/dist/components/monospace-content/index.d.ts +43 -0
- package/dist/components/monospace-content/index.js +2 -0
- package/dist/components/monospace-content/monospace-content.js +1 -1
- package/dist/components/nav-bar/index.d.ts +148 -0
- package/dist/components/nav-bar/index.js +2 -0
- package/dist/components/nav-bar/nav-bar-details-panel.js +158 -44
- package/dist/components/nav-bar/nav-bar-mobile-menu.js +93 -27
- package/dist/components/nav-bar/nav-bar.js +256 -138
- package/dist/components/nav-bar/use-nav-bar-hover-details.js +80 -0
- package/dist/components/nav-bar/use-nav-bar-overflow.js +5 -5
- package/dist/components/notice-strip/index.d.ts +32 -0
- package/dist/components/notice-strip/index.js +2 -0
- package/dist/components/notice-strip/notice-strip.js +57 -0
- package/dist/components/option-card-group/index.d.ts +50 -0
- package/dist/components/option-card-group/index.js +2 -0
- package/dist/components/option-card-group/option-card-group.js +76 -0
- package/dist/components/overflow-badge-list/index.d.ts +63 -0
- package/dist/components/overflow-badge-list/index.js +2 -0
- package/dist/components/overflow-badge-list/overflow-badge-list.js +78 -19
- package/dist/components/page-banner/index.d.ts +33 -0
- package/dist/components/page-banner/index.js +2 -0
- package/dist/components/page-banner/page-banner.js +56 -0
- package/dist/components/page-container/index.d.ts +20 -0
- package/dist/components/page-container/index.js +3 -0
- package/dist/components/page-container/page-container.js +5 -5
- package/dist/components/pagination/index.d.ts +31 -0
- package/dist/components/pagination/index.js +3 -0
- package/dist/components/popover/index.d.ts +60 -0
- package/dist/components/popover/index.js +3 -0
- package/dist/components/preview-card/index.d.ts +24 -0
- package/dist/components/preview-card/index.js +2 -0
- package/dist/components/progress-bar/index.d.ts +32 -0
- package/dist/components/progress-bar/index.js +2 -0
- package/dist/components/progress-bar/progress-bar.js +22 -6
- package/dist/components/radio-group/index.d.ts +24 -0
- package/dist/components/radio-group/index.js +2 -0
- package/dist/components/rank-numeral/index.d.ts +30 -0
- package/dist/components/rank-numeral/index.js +2 -0
- package/dist/components/rank-numeral/rank-numeral.js +26 -0
- package/dist/components/reaction-button/index.d.ts +32 -0
- package/dist/components/reaction-button/index.js +2 -0
- package/dist/components/reaction-button/reaction-button.js +50 -0
- package/dist/components/readout/index.d.ts +31 -0
- package/dist/components/readout/index.js +2 -0
- package/dist/components/readout/readout.js +63 -0
- package/dist/components/requirement-list/index.d.ts +52 -0
- package/dist/components/requirement-list/index.js +2 -0
- package/dist/components/requirement-list/requirement-list.js +29 -8
- package/dist/components/resizable/index.d.ts +31 -0
- package/dist/components/resizable/index.js +4 -0
- package/dist/components/resizable/resizable-group.js +23 -0
- package/dist/components/resizable/resizable-panel.js +28 -0
- package/dist/components/resizable/resizable-separator.js +24 -0
- package/dist/components/reveal/index.d.ts +23 -0
- package/dist/components/reveal/index.js +2 -0
- package/dist/components/reveal/reveal.js +24 -0
- package/dist/components/scroll-area/index.d.ts +27 -0
- package/dist/components/scroll-area/index.js +2 -0
- package/dist/components/scrollable-sections/index.d.ts +58 -0
- package/dist/components/scrollable-sections/index.js +2 -0
- package/dist/components/scrollable-sections/scrollable-sections.js +11 -3
- package/dist/components/search-box/index.d.ts +32 -0
- package/dist/components/search-box/index.js +2 -0
- package/dist/components/search-box/search-box.js +18 -3
- package/dist/components/search-field-shell.js +1 -1
- package/dist/components/select/index.d.ts +44 -0
- package/dist/components/select/index.js +2 -0
- package/dist/components/selectable-card-list/checkbox-card-list.js +5 -3
- package/dist/components/selectable-card-list/index.d.ts +76 -0
- package/dist/components/selectable-card-list/index.js +2 -0
- package/dist/components/selectable-card-list/radio-card-list.js +12 -6
- package/dist/components/selectable-card-list/selectable-card-list-shared.js +24 -12
- package/dist/components/selectable-card-list/selectable-card-list.js +12 -3
- package/dist/components/separator/index.d.ts +24 -0
- package/dist/components/separator/index.js +2 -0
- package/dist/components/share-menu/index.d.ts +55 -0
- package/dist/components/share-menu/index.js +2 -0
- package/dist/components/share-menu/share-marks.js +31 -0
- package/dist/components/share-menu/share-menu.js +140 -0
- package/dist/components/share-menu/share-urls.js +15 -0
- package/dist/components/sheet/index.d.ts +41 -0
- package/dist/components/sheet/index.js +2 -0
- package/dist/components/showcase-card/index.d.ts +53 -0
- package/dist/components/showcase-card/index.js +2 -0
- package/dist/components/showcase-card/showcase-card.js +75 -0
- package/dist/components/sidebar/index.d.ts +109 -0
- package/dist/components/sidebar/index.js +4 -0
- package/dist/components/sidebar/sidebar.js +56 -40
- package/dist/components/simple-clickable-card/index.d.ts +11 -0
- package/dist/components/simple-clickable-card/index.js +2 -0
- package/dist/components/simple-clickable-card/simple-clickable-card-shared.js +2 -2
- package/dist/components/simple-clickable-card/simple-clickable-card.js +5 -2
- package/dist/components/simple-info-card/index.d.ts +25 -0
- package/dist/components/simple-info-card/index.js +2 -0
- package/dist/components/simple-info-card/simple-info-card.js +6 -3
- package/dist/components/simple-list/index.d.ts +63 -0
- package/dist/components/simple-list/index.js +2 -0
- package/dist/components/simple-list/simple-list.js +3 -1
- package/dist/components/simple-paginated-list/index.d.ts +20 -0
- package/dist/components/simple-paginated-list/index.js +2 -0
- package/dist/components/simplified-date/index.d.ts +18 -0
- package/dist/components/simplified-date/index.js +2 -0
- package/dist/components/skeleton/index.d.ts +5 -0
- package/dist/components/skeleton/index.js +2 -0
- package/dist/components/skeletons/index.d.ts +11 -0
- package/dist/components/skeletons/index.js +2 -0
- package/dist/components/sort-menu/index.d.ts +34 -0
- package/dist/components/sort-menu/index.js +2 -0
- package/dist/components/sort-menu/sort-menu.js +39 -0
- package/dist/components/spinner/index.d.ts +15 -0
- package/dist/components/spinner/index.js +2 -0
- package/dist/components/stat-card/index.d.ts +43 -0
- package/dist/components/stat-card/index.js +2 -0
- package/dist/components/stat-card/stat-card.js +31 -12
- package/dist/components/status-badge/index.d.ts +24 -0
- package/dist/components/status-badge/index.js +2 -0
- package/dist/components/status-badge/status-badge.js +3 -2
- package/dist/components/status-card-list/index.d.ts +24 -0
- package/dist/components/status-card-list/index.js +2 -0
- package/dist/components/status-card-list/status-card-list.js +8 -4
- package/dist/components/step-tabs/index.d.ts +94 -0
- package/dist/components/step-tabs/index.js +2 -0
- package/dist/components/step-tabs/step-tabs.js +202 -0
- package/dist/components/style-scope/index.d.ts +32 -0
- package/dist/components/style-scope/index.js +2 -0
- package/dist/components/style-scope/style-scope.js +49 -0
- package/dist/components/switch/index.d.ts +15 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/table/index.d.ts +18 -0
- package/dist/components/table/index.js +2 -0
- package/dist/components/tabs/index.d.ts +103 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/tag/index.d.ts +31 -0
- package/dist/components/tag/index.js +2 -0
- package/dist/components/tag/tag.js +79 -28
- package/dist/components/tag-input/index.d.ts +36 -0
- package/dist/components/tag-input/index.js +2 -0
- package/dist/components/tag-input/tag-input.js +10 -4
- package/dist/components/text-effects/index.d.ts +53 -0
- package/dist/components/text-effects/index.js +6 -0
- package/dist/components/textarea/index.d.ts +16 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/thumbnail-strip/index.d.ts +42 -0
- package/dist/components/thumbnail-strip/index.js +2 -0
- package/dist/components/thumbnail-strip/thumbnail-strip.js +124 -0
- package/dist/components/thumbnail-strip/use-scroll-edges.js +41 -0
- package/dist/components/time-picker/index.d.ts +13 -0
- package/dist/components/time-picker/index.js +2 -0
- package/dist/components/timeline/index.d.ts +39 -0
- package/dist/components/timeline/index.js +2 -0
- package/dist/components/timeline/timeline.js +85 -0
- package/dist/components/toast/index.d.ts +56 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/toast/toast.js +42 -32
- package/dist/components/togglable-items-list/index.d.ts +28 -0
- package/dist/components/togglable-items-list/index.js +2 -0
- package/dist/components/toggle-group/index.d.ts +35 -0
- package/dist/components/toggle-group/index.js +2 -0
- package/dist/components/toolbar/index.d.ts +58 -0
- package/dist/components/toolbar/index.js +3 -0
- package/dist/components/toolbar/toolbar-button.js +40 -0
- package/dist/components/toolbar/toolbar.js +56 -0
- package/dist/components/tooltip/index.d.ts +29 -0
- package/dist/components/tooltip/index.js +3 -0
- package/dist/components/tooltip/tooltip.js +12 -2
- package/dist/components/transfer-list/index.d.ts +36 -0
- package/dist/components/transfer-list/index.js +2 -0
- package/dist/components/transfer-list/transfer-list.js +1 -1
- package/dist/components/truncated-line-with-tooltip/index.d.ts +22 -0
- package/dist/components/truncated-line-with-tooltip/index.js +2 -0
- package/dist/components/truncated-line-with-tooltip/truncated-line-with-tooltip.js +26 -8
- package/dist/components/typography/index.d.ts +19 -0
- package/dist/components/typography/index.js +3 -0
- package/dist/components/use-mobile/index.d.ts +3 -0
- package/dist/components/use-mobile/index.js +2 -0
- package/dist/components/user-type-badge/index.d.ts +39 -0
- package/dist/components/user-type-badge/index.js +3 -0
- package/dist/components/user-type-badge/user-type-badge.js +2 -1
- package/dist/components/vertical-stepper/index.d.ts +7 -0
- package/dist/components/vertical-stepper/index.js +2 -0
- package/dist/components/vertical-stepper/vertical-stepper.js +33 -6
- package/dist/components/view-toggle/index.d.ts +38 -0
- package/dist/components/view-toggle/index.js +2 -0
- package/dist/components/view-toggle/view-toggle.js +56 -0
- package/dist/core/animate-ui/components/animate/code.js +83 -9
- package/dist/core/animate-ui/components/animate/tabs.js +234 -19
- package/dist/core/animate-ui/components/animate/tooltip.js +10 -2
- package/dist/core/animate-ui/components/base/preview-card.js +20 -3
- package/dist/core/animate-ui/components/buttons/copy.js +12 -6
- package/dist/core/animate-ui/components/radix/dialog.js +17 -3
- package/dist/core/animate-ui/components/radix/dropdown-menu.js +26 -9
- package/dist/core/animate-ui/components/radix/sheet.js +20 -4
- package/dist/core/animate-ui/components/radix/sidebar.js +9 -9
- package/dist/core/animate-ui/components/radix/toggle-group.js +103 -13
- package/dist/core/animate-ui/components/radix/toggle.js +5 -5
- package/dist/core/animate-ui/primitives/animate/code-block.js +31 -4
- package/dist/core/animate-ui/primitives/animate/shiki-highlighter.js +5 -2
- package/dist/core/animate-ui/primitives/animate/tabs.js +7 -4
- package/dist/core/animate-ui/primitives/animate/tooltip.js +10 -3
- package/dist/core/animate-ui/primitives/base/preview-card.js +2 -2
- package/dist/core/animate-ui/primitives/base/progress.js +1 -1
- package/dist/core/animate-ui/primitives/base/radio.js +3 -3
- package/dist/core/animate-ui/primitives/effects/highlight.js +1 -0
- package/dist/core/animate-ui/primitives/radix/accordion.js +1 -1
- package/dist/core/animate-ui/primitives/radix/dialog.js +6 -3
- package/dist/core/animate-ui/primitives/radix/dropdown-menu.js +2 -2
- package/dist/core/animate-ui/primitives/radix/sheet.js +7 -3
- package/dist/core/animate-ui/primitives/radix/switch.js +2 -2
- package/dist/core/animate-ui/primitives/radix/toggle-group.js +2 -2
- package/dist/core/badge.js +5 -2
- package/dist/core/breadcrumb.js +1 -1
- package/dist/core/button/button.js +8 -8
- package/dist/core/button/craft-button.js +8 -2
- package/dist/core/button.js +17 -7
- package/dist/core/card.js +23 -5
- package/dist/core/combobox/combobox.js +8 -2
- package/dist/core/command.js +3 -3
- package/dist/core/form.js +1 -1
- package/dist/core/hooks/use-nested-layer-press-guard.js +46 -0
- package/dist/core/hooks/use-on-screen.js +33 -0
- package/dist/core/hooks/use-prefers-reduced-motion.js +19 -0
- package/dist/core/hooks/use-scroll-overflow.js +20 -0
- package/dist/core/index.d.ts +30 -5
- package/dist/core/index.js +5 -2
- package/dist/core/input/input-password.js +13 -9
- package/dist/core/input/input.js +38 -12
- package/dist/core/input-otp/input-otp.js +9 -5
- package/dist/core/popover-group.js +48 -0
- package/dist/core/popover-hover.js +127 -0
- package/dist/core/popover.js +75 -6
- package/dist/core/select.js +35 -20
- package/dist/core/table.js +5 -3
- package/dist/core/textarea/textarea.js +11 -3
- package/dist/data-table/index.d.ts +4 -0
- package/dist/data-table/index.js +3 -0
- package/dist/date/index.d.ts +11 -0
- package/dist/date/index.js +7 -0
- package/dist/forms/index.d.ts +4 -0
- package/dist/forms/index.js +2 -0
- package/dist/icon-avatar.props-RYtw2eSW.d.ts +31 -0
- package/dist/icon-text-action-card.props-B2ggncUK.d.ts +53 -0
- package/dist/index.d.ts +169 -15
- package/dist/index.js +63 -10
- package/dist/input-CYI1hhGc.d.ts +38 -0
- package/dist/layouts/index.d.ts +132 -8
- package/dist/layouts/index.js +3 -1
- package/dist/layouts/minimal-workspace-layout/minimal-workspace-layout-context.js +5 -0
- package/dist/layouts/minimal-workspace-layout/minimal-workspace-layout.js +404 -0
- package/dist/layouts/minimal-workspace-layout/rail-logo.js +90 -0
- package/dist/layouts/minimal-workspace-layout/sidebar-trigger.js +42 -0
- package/dist/layouts/shared/account-menu-props.js +21 -0
- package/dist/layouts/shared/footer-branding.js +34 -0
- package/dist/layouts/shared/sidebar-logo.js +59 -0
- package/dist/layouts/workspace-layout/account-menu/account-menu.js +9 -3
- package/dist/layouts/workspace-layout/footer/footer.js +1 -1
- package/dist/layouts/workspace-layout/header/header.js +1 -1
- package/dist/layouts/workspace-layout/workspace-layout.js +28 -80
- package/dist/{list.props-x1j3CbcF.d.ts → list.props-DP_xPTqU.d.ts} +2 -1
- package/dist/markdown/index.d.ts +11 -0
- package/dist/markdown/index.js +5 -0
- package/dist/my-account-menu.props-C7DK71WC.d.ts +67 -0
- package/dist/page-container.props-JutTvKFq.d.ts +48 -0
- package/dist/resizable.props-RxFY5tm_.d.ts +44 -0
- package/dist/section-card-B7c5uc08.d.ts +84 -0
- package/dist/simple-clickable-card.props-BrPCw7CR.d.ts +51 -0
- package/dist/slot-DGErA9zi.d.ts +10 -0
- package/dist/status-badge.props-lKlEOfRt.d.ts +32 -0
- package/dist/style-axes-DSQ2DGc5.d.ts +133 -0
- package/dist/toast/index.d.ts +6 -0
- package/dist/toast/index.js +2 -0
- package/dist/tooltip-C0bYa8a3.d.ts +37 -0
- package/dist/{types-DtUxK-Am.d.ts → types-CkXflqg7.d.ts} +31 -1
- package/dist/utils/cn.js +6 -1
- package/dist/utils/color.js +35 -10
- package/dist/utils/index.d.ts +18 -2
- package/dist/utils/index.js +4 -1
- package/dist/utils/silver-shine.js +16 -1
- package/dist/utils/style-axes.js +227 -0
- package/dist/utils/variant.js +104 -8
- package/dist/utils/view-transition.js +21 -0
- package/dist/variant-D81RhpbR.d.ts +104 -0
- package/dist/vertical-stepper.props-BXYcbW70.d.ts +29 -0
- package/package.json +52 -6
- package/src/styles/colors.css +100 -4
- package/src/styles/globals.css +8 -131
- package/src/styles/style-axes.css +21 -0
- package/src/styles/theme.css +696 -0
- package/dist/app-logo.props-Ct7QBdTd.d.ts +0 -40
- package/dist/popover-ByLD3-Qv.d.ts +0 -204
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
type NoticeTone = "info" | "warning" | "error";
|
|
5
|
+
interface NoticeStripProps {
|
|
6
|
+
/** Which colour the strip is: the kind of news it carries. */
|
|
7
|
+
tone: NoticeTone;
|
|
8
|
+
title: ReactNode;
|
|
9
|
+
description?: ReactNode;
|
|
10
|
+
/** Buttons, at the right of the content. */
|
|
11
|
+
actions?: ReactNode;
|
|
12
|
+
/** With it, a ✕ at the strip's far end; the caller hides the strip. */
|
|
13
|
+
onDismiss?: () => void;
|
|
14
|
+
/** The ✕'s accessible name ("Dismiss"). */
|
|
15
|
+
dismissLabel?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* One line of news across the top of a canvas, in the glow of the colour
|
|
21
|
+
* that says what kind (a solid fill is too strong over a dark drawing): a
|
|
22
|
+
* strip the full width of its container, its words and buttons centred in a
|
|
23
|
+
* 1180px measure (`max-w-295`), the ✕ at the strip's far end. The tint sits
|
|
24
|
+
* on an opaque base, so what is under the strip never shows through a 4 %
|
|
25
|
+
* wash. An `Alert` carries the content (title, description, the actions at
|
|
26
|
+
* the right), drawn without its icon, corners, border or background — the
|
|
27
|
+
* strip is the background — and tighter than a card. An error is an `alert`,
|
|
28
|
+
* anything else a `status`.
|
|
29
|
+
*/
|
|
30
|
+
declare function NoticeStrip({ tone, title, description, actions, onDismiss, dismissLabel, className }: NoticeStripProps): React.JSX.Element;
|
|
31
|
+
|
|
32
|
+
export { NoticeStrip, type NoticeStripProps, type NoticeTone };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { Alert } from "../alert/alert.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { X } from "lucide-react";
|
|
5
|
+
//#region src/components/notice-strip/notice-strip.tsx
|
|
6
|
+
/** The `glow` variant's recipe for the colour (as `resolveVariantStyles` writes it), on the strip itself: the Alert inside is see-through, so one tint runs edge to edge. */
|
|
7
|
+
var TONE = {
|
|
8
|
+
info: "border-info/15 bg-info/4 text-info shadow-glow shadow-info/45",
|
|
9
|
+
warning: "border-warning/15 bg-warning/4 text-warning shadow-glow shadow-warning/45",
|
|
10
|
+
error: "border-error/15 bg-error/4 text-error shadow-glow shadow-error/45"
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* One line of news across the top of a canvas, in the glow of the colour
|
|
14
|
+
* that says what kind (a solid fill is too strong over a dark drawing): a
|
|
15
|
+
* strip the full width of its container, its words and buttons centred in a
|
|
16
|
+
* 1180px measure (`max-w-295`), the ✕ at the strip's far end. The tint sits
|
|
17
|
+
* on an opaque base, so what is under the strip never shows through a 4 %
|
|
18
|
+
* wash. An `Alert` carries the content (title, description, the actions at
|
|
19
|
+
* the right), drawn without its icon, corners, border or background — the
|
|
20
|
+
* strip is the background — and tighter than a card. An error is an `alert`,
|
|
21
|
+
* anything else a `status`.
|
|
22
|
+
*/
|
|
23
|
+
function NoticeStrip({ tone, title, description, actions, onDismiss, dismissLabel, className }) {
|
|
24
|
+
return /* @__PURE__ */ jsx("div", {
|
|
25
|
+
role: tone === "error" ? "alert" : "status",
|
|
26
|
+
"data-slot": "notice-strip",
|
|
27
|
+
className: cn("relative w-full border-b bg-background", className),
|
|
28
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: cn("relative w-full", TONE[tone], onDismiss && "pr-10 sm:pl-10"),
|
|
30
|
+
children: [/* @__PURE__ */ jsx(Alert, {
|
|
31
|
+
type: tone,
|
|
32
|
+
variant: "glow",
|
|
33
|
+
size: "sm",
|
|
34
|
+
radius: "none",
|
|
35
|
+
hideIcon: true,
|
|
36
|
+
title,
|
|
37
|
+
...description ? { description: /* @__PURE__ */ jsx("span", {
|
|
38
|
+
className: "text-xs leading-snug",
|
|
39
|
+
children: description
|
|
40
|
+
}) } : {},
|
|
41
|
+
...actions ? { actions } : {},
|
|
42
|
+
className: "mx-auto flex max-w-295 border-0 bg-transparent py-1.5 shadow-none"
|
|
43
|
+
}), onDismiss && /* @__PURE__ */ jsx("button", {
|
|
44
|
+
type: "button",
|
|
45
|
+
"aria-label": dismissLabel,
|
|
46
|
+
onClick: onDismiss,
|
|
47
|
+
className: "absolute top-1/2 right-2 inline-flex size-7 -translate-y-1/2 cursor-pointer items-center justify-center rounded-(--espd-radius-control) text-current opacity-70 outline-none hover:bg-current/10 hover:opacity-100 focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-current",
|
|
48
|
+
children: /* @__PURE__ */ jsx(X, {
|
|
49
|
+
"aria-hidden": true,
|
|
50
|
+
className: "h-4 w-4"
|
|
51
|
+
})
|
|
52
|
+
})]
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { NoticeStrip };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
/** A chip under a card's description: what the choice includes. */
|
|
5
|
+
interface OptionCardGroupTag {
|
|
6
|
+
key: string;
|
|
7
|
+
/** Already translated. Drawn as a small `StatusBadge`. */
|
|
8
|
+
label: string;
|
|
9
|
+
/**
|
|
10
|
+
* What THIS choice adds over the others ("+ Source"): grey like the rest
|
|
11
|
+
* until its card is chosen, then primary.
|
|
12
|
+
*/
|
|
13
|
+
emphasis?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface OptionCardGroupItem {
|
|
16
|
+
id: string;
|
|
17
|
+
/** Already translated. Also the radio's accessible name. */
|
|
18
|
+
title: string;
|
|
19
|
+
description?: ReactNode;
|
|
20
|
+
/** An icon beside the title (a Lucide element), set on a small tile. Decorative. */
|
|
21
|
+
media?: ReactNode;
|
|
22
|
+
tags?: OptionCardGroupTag[];
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
}
|
|
25
|
+
interface OptionCardGroupProps {
|
|
26
|
+
items: OptionCardGroupItem[];
|
|
27
|
+
/** The chosen id; empty or null while nothing is chosen. */
|
|
28
|
+
value: string | null;
|
|
29
|
+
onValueChange: (id: string) => void;
|
|
30
|
+
/** The radios' shared `name`; one is made when omitted. */
|
|
31
|
+
name?: string;
|
|
32
|
+
"aria-label"?: string;
|
|
33
|
+
"aria-labelledby"?: string;
|
|
34
|
+
/** Every card at once, as while the choice cannot be made yet. */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A choice between a few things that each need an icon and a sentence (how
|
|
41
|
+
* much to share, which plan, which way to start): compact cards side by side,
|
|
42
|
+
* wrapping one under the other on a narrow screen — an icon tile beside the
|
|
43
|
+
* title, the description, and what it includes as status badges. A native
|
|
44
|
+
* radio group, so the arrow keys move the choice; the chosen card carries a
|
|
45
|
+
* primary ring, and its emphasised badges ("+ Source") turn primary to show
|
|
46
|
+
* what it adds.
|
|
47
|
+
*/
|
|
48
|
+
declare function OptionCardGroup({ items, value, onValueChange, name, disabled, className, ...aria }: OptionCardGroupProps): React.JSX.Element;
|
|
49
|
+
|
|
50
|
+
export { OptionCardGroup, type OptionCardGroupItem, type OptionCardGroupProps, type OptionCardGroupTag };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { StatusBadge } from "../status-badge/status-badge.js";
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/option-card-group/option-card-group.tsx
|
|
6
|
+
function Card({ item, name, chosen, disabled, onChoose }) {
|
|
7
|
+
const off = disabled || item.disabled === true;
|
|
8
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
9
|
+
"data-state": chosen ? "checked" : "unchecked",
|
|
10
|
+
className: cn("relative flex flex-col gap-3 rounded-xl border bg-card p-4 text-card-foreground transition-[border-color,background-color,box-shadow] duration-200", chosen ? "border-primary bg-primary/5 ring-2 ring-primary/20" : "border-border", off ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:border-foreground/25", "has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-primary"),
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ jsx("input", {
|
|
13
|
+
type: "radio",
|
|
14
|
+
name,
|
|
15
|
+
value: item.id,
|
|
16
|
+
checked: chosen,
|
|
17
|
+
disabled: off,
|
|
18
|
+
"aria-label": item.title,
|
|
19
|
+
onChange: onChoose,
|
|
20
|
+
className: "absolute top-4 right-4 size-4.5 cursor-pointer appearance-none rounded-full border-2 border-border bg-background transition-[border-width,border-color] checked:border-5 checked:border-primary disabled:cursor-not-allowed focus-visible:outline-none"
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ jsxs("span", {
|
|
23
|
+
className: "flex items-center gap-3 pr-7",
|
|
24
|
+
children: [item.media && /* @__PURE__ */ jsx("span", {
|
|
25
|
+
"aria-hidden": true,
|
|
26
|
+
className: cn("flex size-9 shrink-0 items-center justify-center rounded-lg [&_svg]:size-4.5", chosen ? "bg-primary/10 text-primary" : "bg-muted text-foreground"),
|
|
27
|
+
children: item.media
|
|
28
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
29
|
+
className: "text-base font-semibold",
|
|
30
|
+
children: item.title
|
|
31
|
+
})]
|
|
32
|
+
}),
|
|
33
|
+
item.description && /* @__PURE__ */ jsx("span", {
|
|
34
|
+
className: "text-sm leading-relaxed text-muted-foreground",
|
|
35
|
+
children: item.description
|
|
36
|
+
}),
|
|
37
|
+
item.tags && item.tags.length > 0 && /* @__PURE__ */ jsx("ul", {
|
|
38
|
+
className: "m-0 flex list-none flex-wrap gap-1.5 p-0",
|
|
39
|
+
children: item.tags.map((tag) => /* @__PURE__ */ jsx("li", {
|
|
40
|
+
"data-emphasis": tag.emphasis ? "true" : void 0,
|
|
41
|
+
children: /* @__PURE__ */ jsx(StatusBadge, {
|
|
42
|
+
size: "sm",
|
|
43
|
+
label: tag.label,
|
|
44
|
+
color: tag.emphasis && chosen ? "primary" : "gray"
|
|
45
|
+
})
|
|
46
|
+
}, tag.key))
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A choice between a few things that each need an icon and a sentence (how
|
|
53
|
+
* much to share, which plan, which way to start): compact cards side by side,
|
|
54
|
+
* wrapping one under the other on a narrow screen — an icon tile beside the
|
|
55
|
+
* title, the description, and what it includes as status badges. A native
|
|
56
|
+
* radio group, so the arrow keys move the choice; the chosen card carries a
|
|
57
|
+
* primary ring, and its emphasised badges ("+ Source") turn primary to show
|
|
58
|
+
* what it adds.
|
|
59
|
+
*/
|
|
60
|
+
function OptionCardGroup({ items, value, onValueChange, name, disabled = false, className, ...aria }) {
|
|
61
|
+
const fallback = useId();
|
|
62
|
+
return /* @__PURE__ */ jsx("div", {
|
|
63
|
+
role: "radiogroup",
|
|
64
|
+
...aria,
|
|
65
|
+
className: cn("grid grid-cols-[repeat(auto-fit,minmax(min(16rem,100%),1fr))] gap-4", className),
|
|
66
|
+
children: items.map((item) => /* @__PURE__ */ jsx(Card, {
|
|
67
|
+
item,
|
|
68
|
+
name: name ?? fallback,
|
|
69
|
+
chosen: value === item.id,
|
|
70
|
+
disabled,
|
|
71
|
+
onChoose: () => onValueChange(item.id)
|
|
72
|
+
}, item.id))
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { OptionCardGroup };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
import { S as StatusBadgeIcon } from '../../status-badge.props-lKlEOfRt.js';
|
|
4
|
+
import { C as Color, S as Size, P as PresetColor } from '../../index-BQANnKs9.js';
|
|
5
|
+
import { f as Variant } from '../../variant-D81RhpbR.js';
|
|
6
|
+
import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
|
|
7
|
+
|
|
8
|
+
type OverflowBadgeListColor = Extract<PresetColor, "warning" | "success" | "info" | "error" | "gray">;
|
|
9
|
+
/** A badge with its own icon and, optionally, its own colour. */
|
|
10
|
+
interface OverflowBadgeListItem {
|
|
11
|
+
/** Stable key. Defaults to `label`. */
|
|
12
|
+
id?: string;
|
|
13
|
+
/** Already-translated label. Also listed in the overflow tooltip. */
|
|
14
|
+
label: string;
|
|
15
|
+
/** Leading icon of this badge. A Lucide component or a pre-sized element. */
|
|
16
|
+
icon?: StatusBadgeIcon;
|
|
17
|
+
/** Overrides `badgeColor` for this badge (e.g. `"gray"` for an inactive entry). */
|
|
18
|
+
color?: Color;
|
|
19
|
+
}
|
|
20
|
+
/** Style axis `radius`: every badge in the list. */
|
|
21
|
+
interface OverflowBadgeListProps extends Pick<StyleAxisProps, "radius"> {
|
|
22
|
+
/**
|
|
23
|
+
* Plain strings, or objects carrying a per-badge icon and colour. The two
|
|
24
|
+
* forms can be mixed.
|
|
25
|
+
*/
|
|
26
|
+
items: Array<string | OverflowBadgeListItem>;
|
|
27
|
+
/** Icon of the first plain-string badge. Object items use their own `icon`. */
|
|
28
|
+
icon?: LucideIcon;
|
|
29
|
+
/**
|
|
30
|
+
* Colour of every badge: the presets in `OverflowBadgeListColor`, or any
|
|
31
|
+
* other `Color` a badge takes (`"silver"`, a CSS colour).
|
|
32
|
+
*/
|
|
33
|
+
badgeColor: Color;
|
|
34
|
+
/** Badge surface treatment. Default: `"outline"`. */
|
|
35
|
+
badgeVariant?: Variant;
|
|
36
|
+
/** `StatusBadge` size of every badge. Default: `"default"`. */
|
|
37
|
+
badgeSize?: Size;
|
|
38
|
+
/** Maximum badges rendered before the overflow label. Default: `1`. */
|
|
39
|
+
maxBadgesToShow?: number;
|
|
40
|
+
noneLabel: string;
|
|
41
|
+
/** Shown when `items.length > maxBadgesToShow`; typically `t(..., { count: items.length - maxBadgesToShow })`. */
|
|
42
|
+
andMoreLabel: string;
|
|
43
|
+
/**
|
|
44
|
+
* Keep every badge on one line: the row never wraps, and the last visible
|
|
45
|
+
* badge shrinks with an ellipsis so the overflow label always fits.
|
|
46
|
+
* Default: `false` (badges wrap).
|
|
47
|
+
*/
|
|
48
|
+
singleLine?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* How the overflow label is drawn. Either value makes it a button that opens
|
|
51
|
+
* a popover of the HIDDEN items on hover, focus or tap (touch has no hover):
|
|
52
|
+
* `"text"` as dotted-underlined text, `"badge"` as a badge in the list's own
|
|
53
|
+
* style. Unset keeps the original: text with a hover tooltip of every item.
|
|
54
|
+
*/
|
|
55
|
+
overflowAs?: "text" | "badge";
|
|
56
|
+
/** Extra classes on every badge (e.g. `font-mono` for part numbers). */
|
|
57
|
+
badgeClassName?: string;
|
|
58
|
+
className?: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare function OverflowBadgeList({ items, icon, badgeColor, badgeVariant, badgeSize, maxBadgesToShow, noneLabel, andMoreLabel, className, radius, singleLine, overflowAs, badgeClassName, }: OverflowBadgeListProps): React.JSX.Element;
|
|
62
|
+
|
|
63
|
+
export { OverflowBadgeList, type OverflowBadgeListColor, type OverflowBadgeListItem, type OverflowBadgeListProps };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { cn } from "../../utils/cn.js";
|
|
2
2
|
import Tooltip from "../tooltip/tooltip.js";
|
|
3
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../../core/popover.js";
|
|
3
4
|
import { StatusBadge } from "../status-badge/status-badge.js";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
//#region src/components/overflow-badge-list/overflow-badge-list.tsx
|
|
@@ -17,7 +18,43 @@ function resolveBadge(item, index, defaultIcon, defaultColor) {
|
|
|
17
18
|
color: item.color ?? defaultColor
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
+
/** The overflow label as a button: hover, focus or a tap lists the hidden items. */
|
|
22
|
+
function OverflowPopover({ as, label, hidden, badgeVariant, badgeSize, badgeColor, badgeClassName, radius }) {
|
|
23
|
+
return /* @__PURE__ */ jsxs(Popover, {
|
|
24
|
+
openOnHover: true,
|
|
25
|
+
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
26
|
+
className: cn("shrink-0 cursor-pointer rounded-full outline-none focus-visible:ring-2 focus-visible:ring-ring", as === "badge" && "inline-flex", as === "text" && "text-sm text-muted-foreground underline decoration-dotted underline-offset-2"),
|
|
27
|
+
children: as === "badge" ? /* @__PURE__ */ jsx(StatusBadge, {
|
|
28
|
+
radius,
|
|
29
|
+
label,
|
|
30
|
+
variant: badgeVariant,
|
|
31
|
+
color: badgeColor,
|
|
32
|
+
size: badgeSize,
|
|
33
|
+
className: badgeClassName
|
|
34
|
+
}) : label
|
|
35
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
36
|
+
side: "top",
|
|
37
|
+
align: "start",
|
|
38
|
+
className: "w-auto max-w-xs p-3",
|
|
39
|
+
children: /* @__PURE__ */ jsx("ul", {
|
|
40
|
+
className: "m-0 flex max-h-48 list-none flex-wrap gap-1.5 overflow-y-auto p-0",
|
|
41
|
+
children: hidden.map((badge) => /* @__PURE__ */ jsx("li", {
|
|
42
|
+
className: "min-w-0",
|
|
43
|
+
children: /* @__PURE__ */ jsx(StatusBadge, {
|
|
44
|
+
radius,
|
|
45
|
+
label: badge.label,
|
|
46
|
+
icon: badge.icon,
|
|
47
|
+
variant: badgeVariant,
|
|
48
|
+
color: badge.color,
|
|
49
|
+
size: badgeSize,
|
|
50
|
+
className: badgeClassName
|
|
51
|
+
})
|
|
52
|
+
}, badge.key))
|
|
53
|
+
})
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function OverflowBadgeList({ items, icon, badgeColor, badgeVariant = "outline", badgeSize = "default", maxBadgesToShow = 1, noneLabel, andMoreLabel, className, radius, singleLine = false, overflowAs, badgeClassName }) {
|
|
21
58
|
if (items.length === 0) return /* @__PURE__ */ jsx("span", {
|
|
22
59
|
className: "text-muted-foreground",
|
|
23
60
|
children: noneLabel
|
|
@@ -34,24 +71,46 @@ function OverflowBadgeList({ items, icon, badgeColor, badgeVariant = "outline",
|
|
|
34
71
|
}, badge.key))
|
|
35
72
|
}) : null;
|
|
36
73
|
return /* @__PURE__ */ jsxs("div", {
|
|
37
|
-
className: cn("flex min-w-0
|
|
38
|
-
children: [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
74
|
+
className: cn("flex min-w-0 items-center gap-2", singleLine ? "flex-nowrap" : "flex-wrap", className),
|
|
75
|
+
children: [
|
|
76
|
+
visibleBadges.map((badge, index) => {
|
|
77
|
+
const node = /* @__PURE__ */ jsx(StatusBadge, {
|
|
78
|
+
radius,
|
|
79
|
+
label: badge.label,
|
|
80
|
+
icon: badge.icon,
|
|
81
|
+
variant: badgeVariant,
|
|
82
|
+
color: badge.color,
|
|
83
|
+
size: badgeSize,
|
|
84
|
+
className: cn(singleLine ? "max-w-full" : "max-w-[12rem]", badgeClassName)
|
|
85
|
+
}, badge.key);
|
|
86
|
+
if (!singleLine) return node;
|
|
87
|
+
return /* @__PURE__ */ jsx("span", {
|
|
88
|
+
"data-slot": "overflow-badge",
|
|
89
|
+
className: cn("flex max-w-[12rem] [&>*]:min-w-0", index === visibleBadges.length - 1 ? "min-w-0 shrink" : "shrink-0"),
|
|
90
|
+
children: node
|
|
91
|
+
}, badge.key);
|
|
92
|
+
}),
|
|
93
|
+
hiddenCount > 0 && overflowAs ? /* @__PURE__ */ jsx(OverflowPopover, {
|
|
94
|
+
as: overflowAs,
|
|
95
|
+
label: andMoreLabel,
|
|
96
|
+
hidden: badges.slice(visibleCount),
|
|
97
|
+
badgeVariant,
|
|
98
|
+
badgeSize,
|
|
99
|
+
badgeColor,
|
|
100
|
+
badgeClassName,
|
|
101
|
+
radius
|
|
102
|
+
}) : null,
|
|
103
|
+
hiddenCount > 0 && !overflowAs && tooltipContent ? /* @__PURE__ */ jsx(Tooltip, {
|
|
104
|
+
content: tooltipContent,
|
|
105
|
+
side: "top",
|
|
106
|
+
align: "start",
|
|
107
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
108
|
+
className: "cursor-default shrink-0 text-sm text-muted-foreground underline decoration-dotted underline-offset-2",
|
|
109
|
+
tabIndex: 0,
|
|
110
|
+
children: andMoreLabel
|
|
111
|
+
})
|
|
112
|
+
}) : null
|
|
113
|
+
]
|
|
55
114
|
});
|
|
56
115
|
}
|
|
57
116
|
//#endregion
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface PageBannerProps {
|
|
5
|
+
/** A short line above the title, in the brand colour and monospace ("31 makers · 12 builds"). */
|
|
6
|
+
kicker?: ReactNode;
|
|
7
|
+
/** The banner's heading. */
|
|
8
|
+
title: ReactNode;
|
|
9
|
+
/** Heading element. Default `h2`. */
|
|
10
|
+
titleAs?: "h1" | "h2" | "h3";
|
|
11
|
+
/** Id on the heading; the banner is labelled by it. Default: generated. */
|
|
12
|
+
titleId?: string;
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
/** A row under the description (a stack of faces, a count). */
|
|
15
|
+
meta?: ReactNode;
|
|
16
|
+
/** The call to action, on the right on a wide banner, under the text on a narrow one. */
|
|
17
|
+
action?: ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Artwork behind the content (a faint logo). Positioned by the caller with
|
|
20
|
+
* absolute classes; hidden from assistive technology and from the pointer.
|
|
21
|
+
*/
|
|
22
|
+
decoration?: ReactNode;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* An outlined banner at the top of a page or tab: a kicker, a title and a
|
|
28
|
+
* line of description on the left, a call to action on the right, optional
|
|
29
|
+
* artwork behind. Stacks into one column on a narrow screen.
|
|
30
|
+
*/
|
|
31
|
+
declare function PageBanner({ kicker, title, titleAs, titleId, description, meta, action, decoration, className }: PageBannerProps): React.JSX.Element;
|
|
32
|
+
|
|
33
|
+
export { PageBanner, type PageBannerProps };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { Typography } from "../typography/typography.js";
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/page-banner/page-banner.tsx
|
|
6
|
+
/**
|
|
7
|
+
* An outlined banner at the top of a page or tab: a kicker, a title and a
|
|
8
|
+
* line of description on the left, a call to action on the right, optional
|
|
9
|
+
* artwork behind. Stacks into one column on a narrow screen.
|
|
10
|
+
*/
|
|
11
|
+
function PageBanner({ kicker, title, titleAs = "h2", titleId, description, meta, action, decoration, className }) {
|
|
12
|
+
const generated = useId();
|
|
13
|
+
const headingId = titleId ?? generated;
|
|
14
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
15
|
+
"aria-labelledby": headingId,
|
|
16
|
+
"data-slot": "page-banner",
|
|
17
|
+
className: cn("relative overflow-hidden rounded-3xl border border-primary", className),
|
|
18
|
+
children: [decoration && /* @__PURE__ */ jsx("div", {
|
|
19
|
+
"aria-hidden": true,
|
|
20
|
+
className: "pointer-events-none absolute inset-0",
|
|
21
|
+
children: decoration
|
|
22
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
23
|
+
className: "relative flex flex-col gap-6 p-6 sm:p-10 md:flex-row md:items-center md:justify-between",
|
|
24
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
25
|
+
className: "flex min-w-0 flex-col gap-3.5",
|
|
26
|
+
children: [
|
|
27
|
+
kicker && /* @__PURE__ */ jsx("span", {
|
|
28
|
+
className: "font-mono text-sm font-semibold text-primary",
|
|
29
|
+
children: kicker
|
|
30
|
+
}),
|
|
31
|
+
/* @__PURE__ */ jsx(Typography, {
|
|
32
|
+
id: headingId,
|
|
33
|
+
variant: "h4",
|
|
34
|
+
as: titleAs,
|
|
35
|
+
className: "m-0 font-extrabold tracking-tight text-foreground",
|
|
36
|
+
children: title
|
|
37
|
+
}),
|
|
38
|
+
description && /* @__PURE__ */ jsx(Typography, {
|
|
39
|
+
variant: "body1",
|
|
40
|
+
className: "m-0 max-w-140 text-foreground-secondary",
|
|
41
|
+
children: description
|
|
42
|
+
}),
|
|
43
|
+
meta && /* @__PURE__ */ jsx("div", {
|
|
44
|
+
className: "flex flex-wrap items-center gap-2.5",
|
|
45
|
+
children: meta
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
}), action && /* @__PURE__ */ jsx("div", {
|
|
49
|
+
className: "shrink-0 self-start md:self-center",
|
|
50
|
+
children: action
|
|
51
|
+
})]
|
|
52
|
+
})]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { PageBanner };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { a as PageContainerProps, P as PageContainerMaxWidth } from '../../page-container.props-JutTvKFq.js';
|
|
3
|
+
export { G as GoBackLinkData } from '../../page-container.props-JutTvKFq.js';
|
|
4
|
+
|
|
5
|
+
declare function PageContainer({ maxWidth, heading, actions, children, className, noGutters, elevateHeading, stickyHeadingOnMobile, revealHeadingOnScrollUp, goBackLinkData, onBack, }: PageContainerProps): React.JSX.Element;
|
|
6
|
+
|
|
7
|
+
interface PageContainerSkeletonProps {
|
|
8
|
+
maxWidth?: PageContainerMaxWidth;
|
|
9
|
+
noGutters?: boolean;
|
|
10
|
+
/** Show a skeleton line for the back link. */
|
|
11
|
+
showBackLink?: boolean;
|
|
12
|
+
/** Show the header row (heading + optional actions). Default true. */
|
|
13
|
+
showHeader?: boolean;
|
|
14
|
+
/** Show a skeleton for the actions slot (e.g. primary button). */
|
|
15
|
+
showActions?: boolean;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
declare function PageContainerSkeleton({ maxWidth, noGutters, showBackLink, showHeader, showActions, className, }: PageContainerSkeletonProps): React.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { PageContainer, PageContainerMaxWidth, PageContainerProps, PageContainerSkeleton, type PageContainerSkeletonProps };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { cn } from "../../utils/cn.js";
|
|
2
2
|
import { MOBILE_MEDIA_QUERY } from "../../core/hooks/use-mobile.js";
|
|
3
|
-
import { Link } from "../link/link.js";
|
|
3
|
+
import { Link as Link$1 } from "../link/link.js";
|
|
4
4
|
import { useRevealOnScrollUp } from "../../core/hooks/use-reveal-on-scroll-up.js";
|
|
5
5
|
import { useRef } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import { MoveLeft } from "lucide-react";
|
|
8
7
|
import { motion } from "motion/react";
|
|
8
|
+
import { MoveLeft } from "lucide-react";
|
|
9
9
|
//#region src/components/page-container/page-container.tsx
|
|
10
10
|
var maxWidthClasses = {
|
|
11
11
|
sm: "max-w-2xl",
|
|
@@ -17,8 +17,8 @@ var headingTitleClasses = "min-w-0 flex-1 text-2xl text-foreground font-bold tra
|
|
|
17
17
|
var headingContentClasses = "min-w-0 flex-1";
|
|
18
18
|
var stickyHeaderClasses = "sticky top-0 z-11 bg-background/75 backdrop-blur-xs";
|
|
19
19
|
var stickyHeaderFromMdClasses = "md:sticky md:top-0 md:z-11 md:bg-background/75 md:backdrop-blur-xs";
|
|
20
|
-
var elevatedHeaderClasses = "shadow-
|
|
21
|
-
var elevatedHeaderFromMdClasses = "md:shadow-
|
|
20
|
+
var elevatedHeaderClasses = "shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-surface,0_4px_6px_-1px_var(--tw-shadow-color,rgb(0_0_0/0.1)),0_2px_4px_-2px_var(--tw-shadow-color,rgb(0_0_0/0.1))))] shadow-accent/30";
|
|
21
|
+
var elevatedHeaderFromMdClasses = "md:shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-surface,0_4px_6px_-1px_var(--tw-shadow-color,rgb(0_0_0/0.1)),0_2px_4px_-2px_var(--tw-shadow-color,rgb(0_0_0/0.1))))] md:shadow-accent/30";
|
|
22
22
|
var revealTransitionClasses = "transition-transform duration-200 ease-out motion-reduce:transition-none";
|
|
23
23
|
function headerPinningClasses({ stickyHeadingOnMobile, elevateHeading, revealEnabled, revealState, animateReveal }) {
|
|
24
24
|
if (stickyHeadingOnMobile) return cn(stickyHeaderClasses, elevateHeading && elevatedHeaderClasses);
|
|
@@ -61,7 +61,7 @@ function PageContainer({ maxWidth, heading, actions, children, className, noGutt
|
|
|
61
61
|
})),
|
|
62
62
|
children: [showBackLink && /* @__PURE__ */ jsx("div", {
|
|
63
63
|
className: cn(goBackLinkData?.className),
|
|
64
|
-
children: /* @__PURE__ */ jsx(Link, {
|
|
64
|
+
children: /* @__PURE__ */ jsx(Link$1, {
|
|
65
65
|
to: backHref != null && backHref !== "" ? backHref : "#",
|
|
66
66
|
linkComponent: backHref != null && backHref !== "" && LinkComponent ? LinkComponent : void 0,
|
|
67
67
|
color: "gray",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { S as Size } from '../../index-BQANnKs9.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Default page-size choices used by `DataTable`'s page-size selector.
|
|
6
|
+
*
|
|
7
|
+
* `Pagination` itself does not default to this list — omitting `pageSizeOptions`
|
|
8
|
+
* there hides the selector.
|
|
9
|
+
*/
|
|
10
|
+
declare const DEFAULT_PAGE_SIZE_OPTIONS: readonly number[];
|
|
11
|
+
interface PaginationProps {
|
|
12
|
+
pageLabel?: string;
|
|
13
|
+
previousLabel?: string;
|
|
14
|
+
nextLabel?: string;
|
|
15
|
+
onPrevPage: () => void;
|
|
16
|
+
onNextPage: () => void;
|
|
17
|
+
hasPrevPage: boolean;
|
|
18
|
+
hasNextPage: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/** Controls button sizing and container spacing. Defaults to `"default"`. */
|
|
21
|
+
size?: Size;
|
|
22
|
+
currentPageSize: number;
|
|
23
|
+
/** Page sizes offered in the selector. Omit (or pass `[]`) to hide it entirely. */
|
|
24
|
+
pageSizeOptions?: readonly number[];
|
|
25
|
+
onPageSizeChange: (size: number) => void;
|
|
26
|
+
pageSizeOptionLabel?: (size: number) => string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare function Pagination({ pageLabel, previousLabel, nextLabel, onPrevPage, onNextPage, hasPrevPage, hasNextPage, disabled, currentPageSize, pageSizeOptions, onPageSizeChange, pageSizeOptionLabel, size, }: PaginationProps): React.JSX.Element;
|
|
30
|
+
|
|
31
|
+
export { DEFAULT_PAGE_SIZE_OPTIONS, Pagination, type PaginationProps };
|