@espressif/dashboard-ui-components 1.11.1 → 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 +1020 -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 +50 -19
- 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,60 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
3
|
+
import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
|
|
4
|
+
|
|
5
|
+
interface PopoverProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {
|
|
6
|
+
/**
|
|
7
|
+
* Also open when a mouse rests on the trigger or focus lands on it, and stay
|
|
8
|
+
* open while the pointer is over the content. A click still toggles it, so
|
|
9
|
+
* touch screens (which have no hover) open it the usual way; a click on a
|
|
10
|
+
* popover that hover opened keeps it open instead of closing it.
|
|
11
|
+
*/
|
|
12
|
+
openOnHover?: boolean;
|
|
13
|
+
/** Milliseconds the pointer rests before a hover opens it. Defaults to 120. */
|
|
14
|
+
openDelay?: number;
|
|
15
|
+
/** Milliseconds after the pointer leaves before it closes. Defaults to 150. */
|
|
16
|
+
closeDelay?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Inside a PopoverGroup: this popover's key, what the group's `value` and
|
|
19
|
+
* `onValueChange` name. Defaults to a generated one. Ignored outside a group.
|
|
20
|
+
*/
|
|
21
|
+
value?: string;
|
|
22
|
+
}
|
|
23
|
+
declare function Popover({ openOnHover, openDelay, closeDelay, open: openProp, defaultOpen, onOpenChange, value, ...props }: PopoverProps): React.JSX.Element;
|
|
24
|
+
declare const PopoverTrigger: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
25
|
+
declare const PopoverAnchor: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
declare const PopoverContent: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & Pick<StyleAxisProps, "radius" | "elevation"> & {
|
|
27
|
+
/**
|
|
28
|
+
* Render the content in a portal at the document body. Defaults to `true`.
|
|
29
|
+
* Set `false` to render inline in the DOM tree, e.g. to keep the content
|
|
30
|
+
* within a specific stacking context. Positioning is unaffected either way:
|
|
31
|
+
* Radix Popper uses a fixed strategy.
|
|
32
|
+
*/
|
|
33
|
+
portal?: boolean;
|
|
34
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
35
|
+
|
|
36
|
+
interface PopoverGroupProps {
|
|
37
|
+
/** The `value` of the open popover, or null for none. Controlled. */
|
|
38
|
+
value?: string | null;
|
|
39
|
+
/** The open popover when uncontrolled. Defaults to none. */
|
|
40
|
+
defaultValue?: string | null;
|
|
41
|
+
/** Called when a popover in the group opens (its `value`) or the open one closes (null). */
|
|
42
|
+
onValueChange?: (value: string | null) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Milliseconds the pointer must rest on another trigger before its popover
|
|
45
|
+
* replaces the open one. Longer than a first open, so crossing triggers on
|
|
46
|
+
* the way to the open content does not switch it. Defaults to 350.
|
|
47
|
+
*/
|
|
48
|
+
switchDelay?: number;
|
|
49
|
+
children: React.ReactNode;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Popovers that share one place on screen: at most one is open, and with
|
|
53
|
+
* `openOnHover` a hover moves the open panel from trigger to trigger with
|
|
54
|
+
* intent — the first opens after the popover's `openDelay`, another takes over
|
|
55
|
+
* only after `switchDelay`, and reaching the open content cancels a pending
|
|
56
|
+
* switch. For a grid or a row of items that each preview on hover.
|
|
57
|
+
*/
|
|
58
|
+
declare function PopoverGroup({ value: valueProp, defaultValue, onValueChange, switchDelay, children, }: PopoverGroupProps): React.JSX.Element;
|
|
59
|
+
|
|
60
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverGroup, type PopoverGroupProps, type PopoverProps, PopoverTrigger };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PreviewCard as PreviewCard$1 } from '@base-ui/react/preview-card';
|
|
3
|
+
import { SpringOptions, HTMLMotionProps } from 'motion/react';
|
|
4
|
+
import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
|
|
5
|
+
|
|
6
|
+
type PreviewCardProps$1 = React.ComponentProps<typeof PreviewCard$1.Root> & {
|
|
7
|
+
followCursor?: boolean | 'x' | 'y';
|
|
8
|
+
followCursorSpringOptions?: SpringOptions;
|
|
9
|
+
};
|
|
10
|
+
type PreviewCardTriggerProps$1 = React.ComponentProps<typeof PreviewCard$1.Trigger>;
|
|
11
|
+
type PreviewCardPositionerProps = React.ComponentProps<typeof PreviewCard$1.Positioner>;
|
|
12
|
+
type PreviewCardPopupProps = Omit<React.ComponentProps<typeof PreviewCard$1.Popup>, 'render'> & HTMLMotionProps<'div'>;
|
|
13
|
+
type PreviewCardBackdropProps$1 = React.ComponentProps<typeof PreviewCard$1.Backdrop>;
|
|
14
|
+
|
|
15
|
+
type PreviewCardProps = PreviewCardProps$1;
|
|
16
|
+
declare function PreviewCard(props: PreviewCardProps): React.JSX.Element;
|
|
17
|
+
type PreviewCardTriggerProps = PreviewCardTriggerProps$1;
|
|
18
|
+
declare function PreviewCardTrigger(props: PreviewCardTriggerProps): React.JSX.Element;
|
|
19
|
+
type PreviewCardPanelProps = PreviewCardPositionerProps & PreviewCardPopupProps & Pick<StyleAxisProps, 'radius' | 'elevation'>;
|
|
20
|
+
declare function PreviewCardPanel({ className, align, sideOffset, style, children, radius, elevation, ...props }: PreviewCardPanelProps): React.JSX.Element;
|
|
21
|
+
type PreviewCardBackdropProps = PreviewCardBackdropProps$1;
|
|
22
|
+
declare function PreviewCardBackdrop(props: PreviewCardBackdropProps): React.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { PreviewCard, PreviewCardBackdrop, type PreviewCardBackdropProps, PreviewCardPanel, type PreviewCardPanelProps, type PreviewCardProps, PreviewCardTrigger, type PreviewCardTriggerProps };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Progress } from '@base-ui/react/progress';
|
|
3
|
+
import { C as Color } from '../../index-BQANnKs9.js';
|
|
4
|
+
|
|
5
|
+
type ProgressProps$1 = React.ComponentProps<typeof Progress.Root>;
|
|
6
|
+
|
|
7
|
+
type ProgressProps = ProgressProps$1;
|
|
8
|
+
|
|
9
|
+
type ProgressBarSegment = {
|
|
10
|
+
value: number;
|
|
11
|
+
color: Color;
|
|
12
|
+
label?: string;
|
|
13
|
+
/** Shown on hover over this segment ("5 published with source"). */
|
|
14
|
+
tooltip?: React.ReactNode;
|
|
15
|
+
};
|
|
16
|
+
type ProgressBarProps = Omit<ProgressProps, 'value'> & {
|
|
17
|
+
value?: number;
|
|
18
|
+
showFakeProgress?: boolean;
|
|
19
|
+
label?: string;
|
|
20
|
+
showPercentage?: boolean;
|
|
21
|
+
color?: Color;
|
|
22
|
+
segments?: ProgressBarSegment[];
|
|
23
|
+
/**
|
|
24
|
+
* Segments only: draw each segment as its own rounded piece with a small gap
|
|
25
|
+
* between them, on no track, instead of one bar cut into colours. Reads as
|
|
26
|
+
* "parts of a whole" when neighbouring colours are close.
|
|
27
|
+
*/
|
|
28
|
+
gapped?: boolean;
|
|
29
|
+
};
|
|
30
|
+
declare function ProgressBar({ showFakeProgress, value: valueProp, label, showPercentage, color, segments, gapped, className, ...props }: ProgressBarProps): React.JSX.Element;
|
|
31
|
+
|
|
32
|
+
export { ProgressBar, type ProgressBarProps, type ProgressBarSegment };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../../utils/cn.js";
|
|
3
3
|
import { isPresetColor, resolveColor } from "../../utils/color.js";
|
|
4
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
|
|
4
5
|
import { Progress, ProgressLabel, ProgressTrack, ProgressValue } from "../../core/animate-ui/components/base/progress.js";
|
|
5
6
|
import * as React$1 from "react";
|
|
6
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -31,7 +32,7 @@ var presetIndicatorBgMap = {
|
|
|
31
32
|
gray: "bg-gray",
|
|
32
33
|
mist: "bg-mist"
|
|
33
34
|
};
|
|
34
|
-
function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPercentage = false, color = "primary", segments, className, ...props }) {
|
|
35
|
+
function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPercentage = false, color = "primary", segments, gapped = false, className, ...props }) {
|
|
35
36
|
const [fakeValue, setFakeValue] = React$1.useState(FAKE_PROGRESS_MIN);
|
|
36
37
|
const intervalRef = React$1.useRef(null);
|
|
37
38
|
React$1.useEffect(() => {
|
|
@@ -56,7 +57,8 @@ function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPe
|
|
|
56
57
|
const showHeader = label != null || showPercentage;
|
|
57
58
|
if (segments && segments.length > 0) {
|
|
58
59
|
const total = segments.reduce((sum, s) => sum + Math.max(0, s.value), 0);
|
|
59
|
-
|
|
60
|
+
const withTooltips = segments.some((s) => s.tooltip != null);
|
|
61
|
+
const segmented = /* @__PURE__ */ jsxs("div", {
|
|
60
62
|
className: cn("space-y-2", className),
|
|
61
63
|
children: [showHeader && /* @__PURE__ */ jsx("div", {
|
|
62
64
|
className: "flex items-center justify-between gap-1",
|
|
@@ -65,27 +67,41 @@ function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPe
|
|
|
65
67
|
children: label
|
|
66
68
|
})
|
|
67
69
|
}), /* @__PURE__ */ jsx("div", {
|
|
68
|
-
className: "
|
|
70
|
+
className: cn("relative flex h-2 w-full", gapped ? "gap-0.5" : "bg-mist-border overflow-hidden rounded-full"),
|
|
69
71
|
children: total === 0 ? null : segments.map((seg, idx) => {
|
|
70
72
|
const widthPct = Math.max(0, seg.value) / total * 100;
|
|
71
73
|
if (widthPct === 0) return null;
|
|
72
74
|
const isPreset = isPresetColor(seg.color);
|
|
73
|
-
|
|
74
|
-
className: cn("h-full", isPreset ? presetIndicatorBgMap[seg.color] : void 0),
|
|
75
|
+
const bar = /* @__PURE__ */ jsx("div", {
|
|
76
|
+
className: cn("h-full", gapped && "rounded-full", isPreset ? presetIndicatorBgMap[seg.color] : void 0),
|
|
75
77
|
style: {
|
|
76
78
|
width: `${widthPct}%`,
|
|
77
79
|
...isPreset ? {} : resolveColor(seg.color, "bg").style
|
|
78
80
|
},
|
|
79
81
|
"aria-label": seg.label
|
|
80
82
|
}, idx);
|
|
83
|
+
if (seg.tooltip == null) return bar;
|
|
84
|
+
return /* @__PURE__ */ jsxs(Tooltip, {
|
|
85
|
+
side: "top",
|
|
86
|
+
sideOffset: 6,
|
|
87
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
88
|
+
asChild: true,
|
|
89
|
+
children: bar
|
|
90
|
+
}), /* @__PURE__ */ jsx(TooltipContent, { children: seg.tooltip })]
|
|
91
|
+
}, idx);
|
|
81
92
|
})
|
|
82
93
|
})]
|
|
83
94
|
});
|
|
95
|
+
return withTooltips ? /* @__PURE__ */ jsx(TooltipProvider, {
|
|
96
|
+
openDelay: 0,
|
|
97
|
+
closeDelay: 0,
|
|
98
|
+
children: segmented
|
|
99
|
+
}) : segmented;
|
|
84
100
|
}
|
|
85
101
|
return /* @__PURE__ */ jsxs(Progress, {
|
|
86
102
|
value: (showFakeProgress ? fakeValue : valueProp) ?? 0,
|
|
87
103
|
max: 100,
|
|
88
|
-
className: cn("space-y-2", className),
|
|
104
|
+
className: cn("space-y-2 [&>[data-slot=progress-track]]:mb-0", className),
|
|
89
105
|
...props,
|
|
90
106
|
children: [showHeader && /* @__PURE__ */ jsxs("div", {
|
|
91
107
|
className: "flex items-center justify-between gap-1",
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { S as Size } from '../../index-BQANnKs9.js';
|
|
4
|
+
|
|
5
|
+
interface RadioOption {
|
|
6
|
+
value: string;
|
|
7
|
+
label: string | ReactNode;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
type RadioGroupSize = Size;
|
|
11
|
+
interface RadioGroupProps {
|
|
12
|
+
options: RadioOption[];
|
|
13
|
+
value?: string;
|
|
14
|
+
defaultValue?: string;
|
|
15
|
+
onValueChange?: (value: string) => void;
|
|
16
|
+
orientation?: 'horizontal' | 'vertical';
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
className?: string;
|
|
19
|
+
size?: RadioGroupSize;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare function RadioGroup({ options, value, defaultValue, onValueChange, orientation, disabled, className, size, }: RadioGroupProps): React.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { RadioGroup, type RadioGroupProps, type RadioGroupSize, type RadioOption };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
type RankNumeralSize = "default" | "lg";
|
|
4
|
+
type RankNumeralFill = "none" | "card";
|
|
5
|
+
interface RankNumeralProps {
|
|
6
|
+
/** The rank to draw (1, 2, 3…). */
|
|
7
|
+
value: number;
|
|
8
|
+
/** `default` is 72px, `lg` 128px. Default `default`. */
|
|
9
|
+
size?: RankNumeralSize;
|
|
10
|
+
/**
|
|
11
|
+
* Inside the outline: `none` lets the background through (a flat tint);
|
|
12
|
+
* `card` fills it with the card colour so it reads over a photo. Default `none`.
|
|
13
|
+
*/
|
|
14
|
+
fill?: RankNumeralFill;
|
|
15
|
+
/**
|
|
16
|
+
* Position and colour. The outline is drawn in the text colour
|
|
17
|
+
* (`text-primary`, `text-white`…); place it with absolute classes — it is
|
|
18
|
+
* made to bleed off the bottom edge of a media block (`absolute -bottom-6 left-3`).
|
|
19
|
+
*/
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A large outlined numeral for a ranked list — the "1", "2", "3" a top-N
|
|
25
|
+
* shelf draws in the corner of each card. Decorative: it is hidden from
|
|
26
|
+
* assistive technology, so the card's own accessible name must carry the rank.
|
|
27
|
+
*/
|
|
28
|
+
declare function RankNumeral({ value, size, fill, className }: RankNumeralProps): React.JSX.Element;
|
|
29
|
+
|
|
30
|
+
export { RankNumeral, type RankNumeralFill, type RankNumeralProps, type RankNumeralSize };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/rank-numeral/rank-numeral.tsx
|
|
4
|
+
var SIZE = {
|
|
5
|
+
default: "text-7xl [-webkit-text-stroke-width:1.5px]",
|
|
6
|
+
lg: "text-9xl [-webkit-text-stroke-width:2px]"
|
|
7
|
+
};
|
|
8
|
+
var FILL = {
|
|
9
|
+
none: "[-webkit-text-fill-color:transparent]",
|
|
10
|
+
card: "[-webkit-text-fill-color:var(--color-card)]"
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A large outlined numeral for a ranked list — the "1", "2", "3" a top-N
|
|
14
|
+
* shelf draws in the corner of each card. Decorative: it is hidden from
|
|
15
|
+
* assistive technology, so the card's own accessible name must carry the rank.
|
|
16
|
+
*/
|
|
17
|
+
function RankNumeral({ value, size = "default", fill = "none", className }) {
|
|
18
|
+
return /* @__PURE__ */ jsx("span", {
|
|
19
|
+
"aria-hidden": true,
|
|
20
|
+
"data-slot": "rank-numeral",
|
|
21
|
+
className: cn("pointer-events-none select-none font-extrabold leading-none tracking-tighter tabular-nums", "[-webkit-text-stroke-color:currentColor]", FILL[fill], SIZE[size], className),
|
|
22
|
+
children: value
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { RankNumeral };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
import { P as PresetColor } from '../../index-BQANnKs9.js';
|
|
4
|
+
|
|
5
|
+
interface ReactionButtonProps {
|
|
6
|
+
/** Whether the viewer has reacted (a like, an upvote, a want). */
|
|
7
|
+
pressed: boolean;
|
|
8
|
+
/** How many have reacted, the viewer included. */
|
|
9
|
+
count: number;
|
|
10
|
+
/** Called with the new state on click. */
|
|
11
|
+
onPressedChange: (pressed: boolean) => void;
|
|
12
|
+
/** The mark — a Lucide element such as `<Heart />`. Filled while pressed. */
|
|
13
|
+
icon: ReactElement<{
|
|
14
|
+
className?: string;
|
|
15
|
+
}>;
|
|
16
|
+
/** The accessible name for a state and count ("I want Desk clock, 3 so far"). */
|
|
17
|
+
ariaLabel: (pressed: boolean, count: number) => string;
|
|
18
|
+
/** Default `secondary`. */
|
|
19
|
+
color?: PresetColor;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A reaction with its count: a like, an upvote, "I want this too". Switching
|
|
26
|
+
* it ON is celebrated once — the mark pops, a ring spreads, six dots burst out
|
|
27
|
+
* and the count ticks into place; switching it off plays nothing. Motion only
|
|
28
|
+
* when the person allows it.
|
|
29
|
+
*/
|
|
30
|
+
declare function ReactionButton({ pressed, count, onPressedChange, icon, ariaLabel, color, disabled, className, }: ReactionButtonProps): React.JSX.Element;
|
|
31
|
+
|
|
32
|
+
export { ReactionButton, type ReactionButtonProps };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { Button } from "../button/button.js";
|
|
3
|
+
import { cloneElement, useState } from "react";
|
|
4
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/reaction-button/reaction-button.tsx
|
|
6
|
+
/**
|
|
7
|
+
* A reaction with its count: a like, an upvote, "I want this too". Switching
|
|
8
|
+
* it ON is celebrated once — the mark pops, a ring spreads, six dots burst out
|
|
9
|
+
* and the count ticks into place; switching it off plays nothing. Motion only
|
|
10
|
+
* when the person allows it.
|
|
11
|
+
*/
|
|
12
|
+
function ReactionButton({ pressed, count, onPressedChange, icon, ariaLabel, color = "secondary", disabled, className }) {
|
|
13
|
+
const [popping, setPopping] = useState(false);
|
|
14
|
+
function handleClick() {
|
|
15
|
+
setPopping(!pressed);
|
|
16
|
+
onPressedChange(!pressed);
|
|
17
|
+
}
|
|
18
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
19
|
+
variant: "outline",
|
|
20
|
+
color,
|
|
21
|
+
size: "sm",
|
|
22
|
+
fullWidth: false,
|
|
23
|
+
"aria-pressed": pressed,
|
|
24
|
+
"aria-label": ariaLabel(pressed, count),
|
|
25
|
+
disabled,
|
|
26
|
+
onClick: handleClick,
|
|
27
|
+
className: cn("relative gap-1.5 overflow-visible tabular-nums", className),
|
|
28
|
+
startIcon: /* @__PURE__ */ jsxs("span", {
|
|
29
|
+
className: "relative inline-flex",
|
|
30
|
+
children: [cloneElement(icon, {
|
|
31
|
+
"aria-hidden": true,
|
|
32
|
+
className: cn(icon.props.className, pressed && "fill-current", popping && "motion-safe:animate-heart-pop"),
|
|
33
|
+
onAnimationEnd: () => setPopping(false)
|
|
34
|
+
}), popping && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
35
|
+
"aria-hidden": true,
|
|
36
|
+
className: "pointer-events-none absolute inset-0 hidden rounded-full border-2 border-current motion-safe:block motion-safe:animate-espd-ripple"
|
|
37
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
38
|
+
"aria-hidden": true,
|
|
39
|
+
className: "pointer-events-none absolute top-1/2 left-1/2 hidden size-1 -translate-1/2 rounded-full motion-safe:block motion-safe:animate-sparkle"
|
|
40
|
+
})] })]
|
|
41
|
+
}),
|
|
42
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
43
|
+
"data-slot": "reaction-count",
|
|
44
|
+
className: cn("inline-block", popping && "motion-safe:animate-rise-in"),
|
|
45
|
+
children: count
|
|
46
|
+
}, count)
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { ReactionButton };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
/** One value on the plate, with its unit beside it in a dimmer ink. */
|
|
4
|
+
interface ReadoutSegment {
|
|
5
|
+
value: string;
|
|
6
|
+
unit?: string;
|
|
7
|
+
/** What the value is ("Pitch"): drawn before it when the plate is `labelled`, and its tooltip either way. */
|
|
8
|
+
label?: string;
|
|
9
|
+
}
|
|
10
|
+
interface ReadoutProps {
|
|
11
|
+
segments: readonly ReadoutSegment[];
|
|
12
|
+
/** `selected`: its controls are open. `error`: the part did not answer. `stale`: not live yet (set before power-on). */
|
|
13
|
+
state?: "normal" | "selected" | "error" | "stale";
|
|
14
|
+
/** Draw each value's label before it, in a dimmer ink: for a plate with no drawing beside it to say what two numbers are. */
|
|
15
|
+
labelled?: boolean;
|
|
16
|
+
/** A button that opens the part's controls; without it, a plain display. */
|
|
17
|
+
onClick?: () => void;
|
|
18
|
+
/** Read out in full, with words for the units ("Room sensor, 23.1 degrees, 45.5 percent humidity"). */
|
|
19
|
+
"aria-label"?: string;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* An instrument's display: values in a monospace ink on a dark plate, each
|
|
25
|
+
* with its unit beside it. The plate carries the dark theme itself (`.dark`),
|
|
26
|
+
* so it reads as the same instrument in both themes, like artwork — and stays
|
|
27
|
+
* made of tokens. With `onClick` it is a real (toggle) button.
|
|
28
|
+
*/
|
|
29
|
+
declare function Readout({ segments, state, labelled, onClick, "aria-label": label, className }: ReadoutProps): React.JSX.Element;
|
|
30
|
+
|
|
31
|
+
export { Readout, type ReadoutProps, type ReadoutSegment };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/readout/readout.tsx
|
|
4
|
+
var STATE = {
|
|
5
|
+
normal: "border-border",
|
|
6
|
+
selected: "border-primary ring-1 ring-primary",
|
|
7
|
+
error: "border-error",
|
|
8
|
+
stale: "border-border opacity-70"
|
|
9
|
+
};
|
|
10
|
+
function Segments({ segments, error, labelled }) {
|
|
11
|
+
return segments.map((segment, i) => /* @__PURE__ */ jsxs("span", {
|
|
12
|
+
title: segment.label,
|
|
13
|
+
className: cn("flex items-baseline gap-1 px-1.5", i > 0 && "border-l border-border"),
|
|
14
|
+
children: [
|
|
15
|
+
labelled && segment.label && /* @__PURE__ */ jsx("span", {
|
|
16
|
+
className: "font-sans text-foreground-secondary",
|
|
17
|
+
children: segment.label
|
|
18
|
+
}),
|
|
19
|
+
/* @__PURE__ */ jsx("span", {
|
|
20
|
+
className: error ? "text-error" : "text-success",
|
|
21
|
+
children: segment.value
|
|
22
|
+
}),
|
|
23
|
+
segment.unit && /* @__PURE__ */ jsx("span", {
|
|
24
|
+
className: "text-foreground-secondary",
|
|
25
|
+
children: segment.unit
|
|
26
|
+
})
|
|
27
|
+
]
|
|
28
|
+
}, i));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* An instrument's display: values in a monospace ink on a dark plate, each
|
|
32
|
+
* with its unit beside it. The plate carries the dark theme itself (`.dark`),
|
|
33
|
+
* so it reads as the same instrument in both themes, like artwork — and stays
|
|
34
|
+
* made of tokens. With `onClick` it is a real (toggle) button.
|
|
35
|
+
*/
|
|
36
|
+
function Readout({ segments, state = "normal", labelled = false, onClick, "aria-label": label, className }) {
|
|
37
|
+
const classes = cn("dark inline-flex h-6 items-center rounded-xs border bg-background font-mono text-xs leading-none tabular-nums", STATE[state], className);
|
|
38
|
+
if (!onClick) return /* @__PURE__ */ jsx("span", {
|
|
39
|
+
"aria-label": label,
|
|
40
|
+
"data-slot": "readout",
|
|
41
|
+
className: classes,
|
|
42
|
+
children: /* @__PURE__ */ jsx(Segments, {
|
|
43
|
+
segments,
|
|
44
|
+
error: state === "error",
|
|
45
|
+
labelled
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
return /* @__PURE__ */ jsx("button", {
|
|
49
|
+
type: "button",
|
|
50
|
+
"aria-label": label,
|
|
51
|
+
"aria-pressed": state === "selected",
|
|
52
|
+
onClick,
|
|
53
|
+
"data-slot": "readout",
|
|
54
|
+
className: cn(classes, "cursor-pointer outline-none hover:border-primary focus-visible:ring-2 focus-visible:ring-ring"),
|
|
55
|
+
children: /* @__PURE__ */ jsx(Segments, {
|
|
56
|
+
segments,
|
|
57
|
+
error: state === "error",
|
|
58
|
+
labelled
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
export { Readout };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { HTMLAttributes } from 'react';
|
|
3
|
+
|
|
4
|
+
type RequirementListSize = "sm" | "default" | "lg";
|
|
5
|
+
/** One requirement, already resolved to display text and a pass/fail state. */
|
|
6
|
+
interface RequirementListItem {
|
|
7
|
+
/** Stable identifier, used as the list key. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Display text for the requirement, e.g. "Must contain an uppercase letter". */
|
|
10
|
+
label: string;
|
|
11
|
+
/** Whether the requirement is currently satisfied. */
|
|
12
|
+
met: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* A second, quieter line under the label: what the requirement means, or an
|
|
15
|
+
* example of meeting it ("A relay, an LED, a temperature sensor"). Muted in
|
|
16
|
+
* both states, so only the label carries met/unmet.
|
|
17
|
+
*/
|
|
18
|
+
description?: string;
|
|
19
|
+
}
|
|
20
|
+
interface RequirementListProps extends Omit<HTMLAttributes<HTMLUListElement>, "children"> {
|
|
21
|
+
items: RequirementListItem[];
|
|
22
|
+
/** Defaults to "sm" — the size that reads as helper text under a field. */
|
|
23
|
+
size?: RequirementListSize;
|
|
24
|
+
/** Screen-reader suffix for satisfied rows. Defaults to "Requirement met". */
|
|
25
|
+
metLabel?: string;
|
|
26
|
+
/** Screen-reader suffix for unsatisfied rows. Defaults to "Requirement not met". */
|
|
27
|
+
unmetLabel?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Whether to announce state changes as they happen. Defaults to `true`, which is
|
|
30
|
+
* right for a checklist that updates while the user types. Set `false` when the
|
|
31
|
+
* list is static, so it is not announced as a live region for no reason.
|
|
32
|
+
*/
|
|
33
|
+
live?: boolean;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Live checklist of requirements a value does and does not yet satisfy — password
|
|
39
|
+
* policy rules, plan prerequisites, upload conditions.
|
|
40
|
+
*
|
|
41
|
+
* Pure: labels arrive already translated and the pass/fail state is computed by the
|
|
42
|
+
* caller, so the component knows nothing about the rules themselves.
|
|
43
|
+
*
|
|
44
|
+
* Each row carries a screen-reader-only state label. Without it the met/unmet
|
|
45
|
+
* distinction would be conveyed only by icon shape and colour, both invisible to a
|
|
46
|
+
* screen reader, and the polite live region would have no text change to announce.
|
|
47
|
+
*
|
|
48
|
+
* Carries no outer spacing so the surface hosting it owns its placement.
|
|
49
|
+
*/
|
|
50
|
+
declare const RequirementList: React.ForwardRefExoticComponent<RequirementListProps & React.RefAttributes<HTMLUListElement>>;
|
|
51
|
+
|
|
52
|
+
export { RequirementList, type RequirementListItem, type RequirementListProps, type RequirementListSize };
|
|
@@ -17,25 +17,39 @@ var stateVisuals = {
|
|
|
17
17
|
textClass: "text-muted-foreground"
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Aligned with SimpleList / VerticalStepper size scales. `iconTop` centres the
|
|
22
|
+
* icon on the label's first line when a description makes the row two lines
|
|
23
|
+
* (the row then aligns to the top); `description` is one step smaller than
|
|
24
|
+
* the label, `describedRowGap` the roomier spacing two-line rows need.
|
|
25
|
+
*/
|
|
21
26
|
var sizeStyles = {
|
|
22
27
|
sm: {
|
|
23
28
|
text: "text-xs",
|
|
24
29
|
icon: "h-3.5 w-3.5 shrink-0",
|
|
25
30
|
gap: "gap-2",
|
|
26
|
-
rowGap: "gap-1"
|
|
31
|
+
rowGap: "gap-1",
|
|
32
|
+
iconTop: "mt-px",
|
|
33
|
+
description: "text-xs",
|
|
34
|
+
describedRowGap: "gap-2"
|
|
27
35
|
},
|
|
28
36
|
default: {
|
|
29
37
|
text: "text-sm",
|
|
30
38
|
icon: "size-4 shrink-0",
|
|
31
39
|
gap: "gap-2",
|
|
32
|
-
rowGap: "gap-1.5"
|
|
40
|
+
rowGap: "gap-1.5",
|
|
41
|
+
iconTop: "mt-0.5",
|
|
42
|
+
description: "text-xs",
|
|
43
|
+
describedRowGap: "gap-2.5"
|
|
33
44
|
},
|
|
34
45
|
lg: {
|
|
35
46
|
text: "text-base",
|
|
36
47
|
icon: "size-5 shrink-0",
|
|
37
48
|
gap: "gap-2.5",
|
|
38
|
-
rowGap: "gap-2"
|
|
49
|
+
rowGap: "gap-2",
|
|
50
|
+
iconTop: "mt-0.5",
|
|
51
|
+
description: "text-sm",
|
|
52
|
+
describedRowGap: "gap-3"
|
|
39
53
|
}
|
|
40
54
|
};
|
|
41
55
|
/**
|
|
@@ -53,22 +67,29 @@ var sizeStyles = {
|
|
|
53
67
|
*/
|
|
54
68
|
var RequirementList = forwardRef(function RequirementList({ items, size = "sm", metLabel = "Requirement met", unmetLabel = "Requirement not met", live = true, className, ...rest }, ref) {
|
|
55
69
|
const styles = sizeStyles[size];
|
|
70
|
+
const described = items.some((item) => item.description);
|
|
56
71
|
return /* @__PURE__ */ jsx("ul", {
|
|
57
72
|
ref,
|
|
58
73
|
"aria-live": live ? "polite" : void 0,
|
|
59
74
|
...rest,
|
|
60
|
-
className: cn("flex flex-col", styles.rowGap, className),
|
|
75
|
+
className: cn("flex flex-col", described ? styles.describedRowGap : styles.rowGap, className),
|
|
61
76
|
children: items.map((item) => {
|
|
62
77
|
const visuals = stateVisuals[item.met ? "met" : "unmet"];
|
|
63
78
|
const Icon = visuals.icon;
|
|
64
79
|
return /* @__PURE__ */ jsxs("li", {
|
|
65
|
-
className: cn("flex items-
|
|
80
|
+
className: cn("flex transition-colors", item.description ? "items-start" : "items-center", styles.gap, styles.text, visuals.textClass),
|
|
66
81
|
children: [
|
|
67
82
|
/* @__PURE__ */ jsx(Icon, {
|
|
68
|
-
className: styles.icon,
|
|
83
|
+
className: cn(styles.icon, item.description && styles.iconTop),
|
|
69
84
|
"aria-hidden": true
|
|
70
85
|
}),
|
|
71
|
-
item.
|
|
86
|
+
item.description ? /* @__PURE__ */ jsxs("span", {
|
|
87
|
+
className: "flex min-w-0 flex-col gap-0.5",
|
|
88
|
+
children: [/* @__PURE__ */ jsx("span", { children: item.label }), /* @__PURE__ */ jsx("span", {
|
|
89
|
+
className: cn(styles.description, "text-muted-foreground"),
|
|
90
|
+
children: item.description
|
|
91
|
+
})]
|
|
92
|
+
}) : item.label,
|
|
72
93
|
/* @__PURE__ */ jsx("span", {
|
|
73
94
|
className: "sr-only",
|
|
74
95
|
children: item.met ? metLabel : unmetLabel
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { R as ResizableGroupProps, c as ResizablePanelProps, d as ResizableSeparatorProps } from '../../resizable.props-RxFY5tm_.js';
|
|
3
|
+
export { P as PanelSize, a as ResizableLayout, b as ResizablePanelHandle } from '../../resizable.props-RxFY5tm_.js';
|
|
4
|
+
import 'react-resizable-panels';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A row or column of panels the person can resize by dragging the separators
|
|
8
|
+
* between them (react-resizable-panels, which also makes every separator a
|
|
9
|
+
* keyboard control). The group fills its parent; give the parent a height.
|
|
10
|
+
* Compose with `ResizablePanel` and `ResizableSeparator`.
|
|
11
|
+
*/
|
|
12
|
+
declare function ResizableGroup({ orientation, children, defaultLayout, onLayoutChanged, id, className }: ResizableGroupProps): React.JSX.Element;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* One panel of a `ResizableGroup`. It clips its content, so what is inside
|
|
16
|
+
* scrolls itself (give it `h-full min-h-0`). react-resizable-panels writes
|
|
17
|
+
* `overflow: auto` inline on every panel, which puts a native scrollbar on
|
|
18
|
+
* the panel the moment its content runs a pixel over; `overflow` is the one
|
|
19
|
+
* inline style it allows overriding, and it takes `!important` to win.
|
|
20
|
+
*/
|
|
21
|
+
declare function ResizablePanel({ id, children, collapsible, collapsedSize, collapsedThreshold, defaultSize, minSize, maxSize, panelRef, className }: ResizablePanelProps): React.JSX.Element;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The handle between two panels: a hairline on the page, a wider strip to the
|
|
25
|
+
* pointer, lit in the primary colour while it is pointed at, held or focused.
|
|
26
|
+
* Keyboard: arrows step, Home/End go to the ends, Enter collapses a
|
|
27
|
+
* collapsible neighbour (react-resizable-panels' own behaviour).
|
|
28
|
+
*/
|
|
29
|
+
declare function ResizableSeparator({ label, orientation, className }: ResizableSeparatorProps): React.JSX.Element;
|
|
30
|
+
|
|
31
|
+
export { ResizableGroup, ResizableGroupProps, ResizablePanel, ResizablePanelProps, ResizableSeparator, ResizableSeparatorProps };
|