@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,85 @@
|
|
|
1
|
+
import { usePrefersReducedMotion } from "../../../core/hooks/use-prefers-reduced-motion.js";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
//#region src/components/message-scroller/_hooks/use-follow-bottom.ts
|
|
4
|
+
/**
|
|
5
|
+
* Keeps a conversation at its end while the reader is there: new content
|
|
6
|
+
* scrolls into view; once they scroll up to read (wheel, touch, keys), it
|
|
7
|
+
* stops following until they are back at the end (or ask to). Paused, nothing
|
|
8
|
+
* moves at all (an answer opened for editing stays where the person is
|
|
9
|
+
* looking). Instant under reduced motion. "The end" is a sentinel after the
|
|
10
|
+
* last message.
|
|
11
|
+
*/
|
|
12
|
+
function useFollowBottom(root, content, end, paused) {
|
|
13
|
+
const [atEnd, setAtEnd] = useState(true);
|
|
14
|
+
const following = useRef(true);
|
|
15
|
+
const reduced = usePrefersReducedMotion();
|
|
16
|
+
const toEnd = useCallback((smooth) => {
|
|
17
|
+
following.current = true;
|
|
18
|
+
end.current?.scrollIntoView({
|
|
19
|
+
block: "end",
|
|
20
|
+
behavior: smooth && !reduced ? "smooth" : "auto"
|
|
21
|
+
});
|
|
22
|
+
}, [end, reduced]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const sentinel = end.current;
|
|
25
|
+
if (!sentinel) return;
|
|
26
|
+
const observer = new IntersectionObserver(([entry]) => {
|
|
27
|
+
const reached = Boolean(entry?.isIntersecting);
|
|
28
|
+
if (reached) following.current = true;
|
|
29
|
+
setAtEnd(reached);
|
|
30
|
+
}, { root: root.current });
|
|
31
|
+
observer.observe(sentinel);
|
|
32
|
+
return () => observer.disconnect();
|
|
33
|
+
}, [root, end]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const target = root.current;
|
|
36
|
+
if (!target) return;
|
|
37
|
+
function stop() {
|
|
38
|
+
following.current = false;
|
|
39
|
+
}
|
|
40
|
+
function onWheel(event) {
|
|
41
|
+
if (event.deltaY < 0) stop();
|
|
42
|
+
}
|
|
43
|
+
function onKey(event) {
|
|
44
|
+
if ([
|
|
45
|
+
"ArrowUp",
|
|
46
|
+
"PageUp",
|
|
47
|
+
"Home"
|
|
48
|
+
].includes(event.key)) stop();
|
|
49
|
+
}
|
|
50
|
+
target.addEventListener("wheel", onWheel, { passive: true });
|
|
51
|
+
target.addEventListener("touchmove", stop, { passive: true });
|
|
52
|
+
target.addEventListener("keydown", onKey);
|
|
53
|
+
return () => {
|
|
54
|
+
target.removeEventListener("wheel", onWheel);
|
|
55
|
+
target.removeEventListener("touchmove", stop);
|
|
56
|
+
target.removeEventListener("keydown", onKey);
|
|
57
|
+
};
|
|
58
|
+
}, [root]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
const element = content.current;
|
|
61
|
+
if (!element) return;
|
|
62
|
+
let height = element.offsetHeight;
|
|
63
|
+
const box = root.current;
|
|
64
|
+
const observer = new ResizeObserver((changes) => {
|
|
65
|
+
const grew = element.offsetHeight - height;
|
|
66
|
+
height = element.offsetHeight;
|
|
67
|
+
const boxChanged = changes.some((change) => change.target === box);
|
|
68
|
+
if (following.current && !paused) toEnd(!boxChanged && grew <= (box?.clientHeight ?? Infinity));
|
|
69
|
+
});
|
|
70
|
+
observer.observe(element);
|
|
71
|
+
if (box) observer.observe(box);
|
|
72
|
+
return () => observer.disconnect();
|
|
73
|
+
}, [
|
|
74
|
+
root,
|
|
75
|
+
content,
|
|
76
|
+
paused,
|
|
77
|
+
toEnd
|
|
78
|
+
]);
|
|
79
|
+
return {
|
|
80
|
+
atEnd,
|
|
81
|
+
toEnd: () => toEnd(true)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
export { useFollowBottom };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface MessageScrollerProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** The log's accessible name. */
|
|
7
|
+
label: string;
|
|
8
|
+
/** The jump-to-latest button's name, shown once the reader has scrolled up. */
|
|
9
|
+
jumpLabel: string;
|
|
10
|
+
/** Hold still: no following while true (an answer is open for editing). */
|
|
11
|
+
paused?: boolean;
|
|
12
|
+
/** Classes for the box (it scrolls itself: give it a height, or a flex parent). */
|
|
13
|
+
className?: string;
|
|
14
|
+
/** Classes for the column inside (width, padding). */
|
|
15
|
+
contentClassName?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A conversation's scrolling area (shadcn's Message Scroller, on the
|
|
20
|
+
* library's tokens). It follows new messages while the reader is at the end,
|
|
21
|
+
* stops when they scroll up to read, and offers a round "jump to latest"
|
|
22
|
+
* button until they are back. A `log` for assistive technology, so new
|
|
23
|
+
* messages are announced politely. It scrolls in `ScrollArea`: a thin overlay
|
|
24
|
+
* thumb that appears while the pointer is over the thread, with no gutter
|
|
25
|
+
* beside the text.
|
|
26
|
+
*/
|
|
27
|
+
declare function MessageScroller({ children, label, jumpLabel, paused, className, contentClassName }: MessageScrollerProps): React.JSX.Element;
|
|
28
|
+
|
|
29
|
+
export { MessageScroller, type MessageScrollerProps };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { Button } from "../button/button.js";
|
|
3
|
+
import { ScrollArea } from "../../core/scroll-area.js";
|
|
4
|
+
import { useFollowBottom } from "./_hooks/use-follow-bottom.js";
|
|
5
|
+
import { useLayoutEffect, useRef } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { ArrowDown } from "lucide-react";
|
|
8
|
+
//#region src/components/message-scroller/message-scroller.tsx
|
|
9
|
+
var VIEWPORT = "[data-radix-scroll-area-viewport]";
|
|
10
|
+
var THUMB_ON_HOVER = "[&_[data-orientation=vertical]]:opacity-0 [&_[data-orientation=vertical]]:transition-opacity [&_[data-orientation=vertical]]:duration-200 hover:[&_[data-orientation=vertical]]:opacity-100 focus-within:[&_[data-orientation=vertical]]:opacity-100 motion-reduce:[&_[data-orientation=vertical]]:transition-none [&_[data-orientation=vertical]>div]:bg-foreground/25";
|
|
11
|
+
/**
|
|
12
|
+
* A conversation's scrolling area (shadcn's Message Scroller, on the
|
|
13
|
+
* library's tokens). It follows new messages while the reader is at the end,
|
|
14
|
+
* stops when they scroll up to read, and offers a round "jump to latest"
|
|
15
|
+
* button until they are back. A `log` for assistive technology, so new
|
|
16
|
+
* messages are announced politely. It scrolls in `ScrollArea`: a thin overlay
|
|
17
|
+
* thumb that appears while the pointer is over the thread, with no gutter
|
|
18
|
+
* beside the text.
|
|
19
|
+
*/
|
|
20
|
+
function MessageScroller({ children, label, jumpLabel, paused = false, className, contentClassName }) {
|
|
21
|
+
const area = useRef(null);
|
|
22
|
+
const viewport = useRef(null);
|
|
23
|
+
const content = useRef(null);
|
|
24
|
+
const end = useRef(null);
|
|
25
|
+
useLayoutEffect(() => {
|
|
26
|
+
viewport.current = area.current?.querySelector(VIEWPORT) ?? null;
|
|
27
|
+
}, []);
|
|
28
|
+
const { atEnd, toEnd } = useFollowBottom(viewport, content, end, paused);
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
30
|
+
"data-slot": "message-scroller",
|
|
31
|
+
className: cn("relative min-h-0 flex-1", className),
|
|
32
|
+
children: [/* @__PURE__ */ jsx(ScrollArea, {
|
|
33
|
+
ref: area,
|
|
34
|
+
type: "auto",
|
|
35
|
+
role: "log",
|
|
36
|
+
"aria-label": label,
|
|
37
|
+
"aria-relevant": "additions",
|
|
38
|
+
className: cn("h-full [&_[data-radix-scroll-area-viewport]]:overscroll-contain", THUMB_ON_HOVER),
|
|
39
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
40
|
+
ref: content,
|
|
41
|
+
className: contentClassName,
|
|
42
|
+
children: [children, /* @__PURE__ */ jsx("div", {
|
|
43
|
+
ref: end,
|
|
44
|
+
"aria-hidden": true,
|
|
45
|
+
className: "h-px"
|
|
46
|
+
})]
|
|
47
|
+
})
|
|
48
|
+
}), !atEnd && /* @__PURE__ */ jsx("div", {
|
|
49
|
+
className: "pointer-events-none absolute inset-x-0 bottom-3 z-20 flex justify-center",
|
|
50
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
51
|
+
type: "button",
|
|
52
|
+
size: "icon",
|
|
53
|
+
radius: "full",
|
|
54
|
+
variant: "outline",
|
|
55
|
+
color: "gray",
|
|
56
|
+
onClick: toEnd,
|
|
57
|
+
"aria-label": jumpLabel,
|
|
58
|
+
startIcon: /* @__PURE__ */ jsx(ArrowDown, { className: "h-4 w-4" }),
|
|
59
|
+
className: "pointer-events-auto bg-card shadow-md"
|
|
60
|
+
})
|
|
61
|
+
})]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { MessageScroller };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
import { C as Color } from '../../index-BQANnKs9.js';
|
|
4
|
+
|
|
5
|
+
/** `default` bars sit apart; `thin` packs many (a position among dozens) with hairline gaps. */
|
|
6
|
+
type MiniBarChartDensity = "default" | "thin";
|
|
7
|
+
interface MiniBarChartProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "children"> {
|
|
8
|
+
/** One bar per value, left to right. Negative values draw as zero. */
|
|
9
|
+
values: readonly number[];
|
|
10
|
+
/**
|
|
11
|
+
* What the chart shows, read out in place of the bars ("Likes per build,
|
|
12
|
+
* oldest to newest: 1, 3, 0"). Required: the bars themselves are hidden from
|
|
13
|
+
* assistive technology.
|
|
14
|
+
*/
|
|
15
|
+
label: string;
|
|
16
|
+
/** The bar to emphasise; the others fade back. */
|
|
17
|
+
highlightIndex?: number;
|
|
18
|
+
/** Bar colour. Default `primary`. `currentColor` follows the text colour (a chart on a filled tile). */
|
|
19
|
+
color?: Color;
|
|
20
|
+
density?: MiniBarChartDensity;
|
|
21
|
+
/** Height in CSS pixels. Default 32. */
|
|
22
|
+
height?: number;
|
|
23
|
+
/**
|
|
24
|
+
* What a bar says on hover ("Minecraft · 31 flashes"). Each bar then takes
|
|
25
|
+
* the chart's full height as its hover target and brightens while hovered.
|
|
26
|
+
* Return `null` for a bar with nothing to say. A visual extra only: `label`
|
|
27
|
+
* remains what assistive technology reads.
|
|
28
|
+
*/
|
|
29
|
+
barTooltip?: (value: number, index: number) => ReactNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A row of bars with no axes, sized to sit inside a card (`StatCard`'s
|
|
34
|
+
* `visual`): the shape of a few numbers at a glance. The tallest value fills
|
|
35
|
+
* the height; a zero draws as a faint stub rather than nothing. With
|
|
36
|
+
* `barTooltip`, each bar names itself on hover.
|
|
37
|
+
*/
|
|
38
|
+
declare const MiniBarChart: React.ForwardRefExoticComponent<MiniBarChartProps & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
|
|
40
|
+
export { MiniBarChart, type MiniBarChartDensity, type MiniBarChartProps };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { resolveColor } from "../../utils/color.js";
|
|
3
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
|
|
4
|
+
import * as React$1 from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/mini-bar-chart/mini-bar-chart.tsx
|
|
7
|
+
var DEFAULT_HEIGHT_PX = 32;
|
|
8
|
+
/** A zero is a short stub, so "nothing yet" still reads as a bar. */
|
|
9
|
+
var STUB_SHARE = .12;
|
|
10
|
+
var DENSITY_CLASS = {
|
|
11
|
+
default: {
|
|
12
|
+
row: "gap-1",
|
|
13
|
+
bar: "rounded-sm"
|
|
14
|
+
},
|
|
15
|
+
thin: {
|
|
16
|
+
row: "gap-px",
|
|
17
|
+
bar: "rounded-[1px]"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
function Bar({ share, faded, highlighted, className, style }) {
|
|
21
|
+
return /* @__PURE__ */ jsx("span", {
|
|
22
|
+
"aria-hidden": true,
|
|
23
|
+
"data-highlighted": highlighted || void 0,
|
|
24
|
+
className: cn("w-full min-w-px transition-[height,opacity] duration-300 motion-reduce:transition-none", className, faded && "opacity-25 group-hover/bar:opacity-60"),
|
|
25
|
+
style: {
|
|
26
|
+
...style,
|
|
27
|
+
height: `${Math.max(share, STUB_SHARE) * 100}%`
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A row of bars with no axes, sized to sit inside a card (`StatCard`'s
|
|
33
|
+
* `visual`): the shape of a few numbers at a glance. The tallest value fills
|
|
34
|
+
* the height; a zero draws as a faint stub rather than nothing. With
|
|
35
|
+
* `barTooltip`, each bar names itself on hover.
|
|
36
|
+
*/
|
|
37
|
+
var MiniBarChart = React$1.forwardRef(function MiniBarChart({ values, label, highlightIndex, color = "primary", density = "default", height = DEFAULT_HEIGHT_PX, barTooltip, className, style, ...props }, ref) {
|
|
38
|
+
const max = Math.max(0, ...values);
|
|
39
|
+
const fill = color === "currentColor" ? {
|
|
40
|
+
className: "bg-current",
|
|
41
|
+
style: void 0
|
|
42
|
+
} : resolveColor(color, "bg");
|
|
43
|
+
const d = DENSITY_CLASS[density];
|
|
44
|
+
const bars = values.map((raw, index) => {
|
|
45
|
+
const value = Math.max(0, raw);
|
|
46
|
+
const empty = value === 0;
|
|
47
|
+
const bar = /* @__PURE__ */ jsx(Bar, {
|
|
48
|
+
share: empty || max === 0 ? STUB_SHARE : value / max,
|
|
49
|
+
faded: empty || highlightIndex !== void 0 && index !== highlightIndex,
|
|
50
|
+
highlighted: index === highlightIndex,
|
|
51
|
+
className: cn(d.bar, fill.className),
|
|
52
|
+
style: fill.style
|
|
53
|
+
});
|
|
54
|
+
const tip = barTooltip?.(value, index);
|
|
55
|
+
if (tip == null) return /* @__PURE__ */ jsx("span", {
|
|
56
|
+
"aria-hidden": true,
|
|
57
|
+
className: "flex h-full min-w-px flex-1 items-end",
|
|
58
|
+
children: bar
|
|
59
|
+
}, index);
|
|
60
|
+
return /* @__PURE__ */ jsxs(Tooltip, {
|
|
61
|
+
side: "top",
|
|
62
|
+
sideOffset: 6,
|
|
63
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
64
|
+
asChild: true,
|
|
65
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
66
|
+
"aria-hidden": true,
|
|
67
|
+
className: "group/bar flex h-full min-w-px flex-1 cursor-default items-end",
|
|
68
|
+
children: bar
|
|
69
|
+
})
|
|
70
|
+
}), /* @__PURE__ */ jsx(TooltipContent, { children: tip })]
|
|
71
|
+
}, index);
|
|
72
|
+
});
|
|
73
|
+
const chart = /* @__PURE__ */ jsx("div", {
|
|
74
|
+
ref,
|
|
75
|
+
role: "img",
|
|
76
|
+
"aria-label": label,
|
|
77
|
+
className: cn("flex w-full items-end", d.row, className),
|
|
78
|
+
style: {
|
|
79
|
+
...style,
|
|
80
|
+
height
|
|
81
|
+
},
|
|
82
|
+
...props,
|
|
83
|
+
children: bars
|
|
84
|
+
});
|
|
85
|
+
return barTooltip ? /* @__PURE__ */ jsx(TooltipProvider, {
|
|
86
|
+
openDelay: 0,
|
|
87
|
+
closeDelay: 0,
|
|
88
|
+
children: chart
|
|
89
|
+
}) : chart;
|
|
90
|
+
});
|
|
91
|
+
MiniBarChart.displayName = "MiniBarChart";
|
|
92
|
+
//#endregion
|
|
93
|
+
export { MiniBarChart };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { A as AlertColor } from '../../alert.props-CcKo49Rb.js';
|
|
4
|
+
import { S as Size } from '../../index-BQANnKs9.js';
|
|
5
|
+
import '../../variant-D81RhpbR.js';
|
|
6
|
+
import '../../style-axes-DSQ2DGc5.js';
|
|
7
|
+
import '../../icon-avatar.props-RYtw2eSW.js';
|
|
8
|
+
import '../../icon-text-action-card.props-B2ggncUK.js';
|
|
9
|
+
|
|
10
|
+
interface MonospaceContentProps {
|
|
11
|
+
title?: ReactNode;
|
|
12
|
+
value: string;
|
|
13
|
+
/** Surface color of the value block. Also accepts the brand `"silver"` value. */
|
|
14
|
+
color?: AlertColor;
|
|
15
|
+
/**
|
|
16
|
+
* Hide the value behind mask characters — for secrets such as API keys or passwords.
|
|
17
|
+
* Copying still puts the real value on the clipboard.
|
|
18
|
+
*
|
|
19
|
+
* Masking is presentational: the value stays in the DOM, so this is a UI guard, not a
|
|
20
|
+
* security boundary.
|
|
21
|
+
*
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
mask?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Show an eye toggle that reveals the masked value. Only meaningful when `mask` is `true`;
|
|
27
|
+
* set to `false` to keep the value permanently masked while still allowing copy.
|
|
28
|
+
*
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
allowUnmask?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Scale of the title, value text, surface padding and action buttons.
|
|
34
|
+
*
|
|
35
|
+
* @default "default"
|
|
36
|
+
*/
|
|
37
|
+
size?: Size;
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
declare const MonospaceContent: React.ForwardRefExoticComponent<MonospaceContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
|
|
43
|
+
export { MonospaceContent, type MonospaceContentProps };
|
|
@@ -2,8 +2,8 @@ import { cn } from "../../utils/cn.js";
|
|
|
2
2
|
import { buttonVariants } from "../../core/animate-ui/components/buttons/copy.js";
|
|
3
3
|
import { inputLabelClassName } from "../../core/field-label-row.js";
|
|
4
4
|
import { Typography } from "../typography/typography.js";
|
|
5
|
-
import { CopiableText } from "../copiable-text/copiable-text.js";
|
|
6
5
|
import { Alert } from "../alert/alert.js";
|
|
6
|
+
import { CopiableText } from "../copiable-text/copiable-text.js";
|
|
7
7
|
import * as React$1 from "react";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import { Eye, EyeOff } from "lucide-react";
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode, RefObject, ElementType } from 'react';
|
|
3
|
+
import { C as Color } from '../../index-BQANnKs9.js';
|
|
4
|
+
|
|
5
|
+
interface NavBarMenuItem {
|
|
6
|
+
/** Unique identifier, used as React key and for active-state matching. */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Display label for the menu item. */
|
|
9
|
+
label: string;
|
|
10
|
+
/**
|
|
11
|
+
* Destination path for link-type items. When provided, the item renders as
|
|
12
|
+
* a link (via `linkComponent` or a plain `<a>`). When omitted, the item
|
|
13
|
+
* renders as a `<button>`.
|
|
14
|
+
*/
|
|
15
|
+
href?: string;
|
|
16
|
+
/** Click handler. For items that also have `href`, fires alongside navigation. */
|
|
17
|
+
onClick?: () => void;
|
|
18
|
+
/**
|
|
19
|
+
* Rich content panel displayed in a full-width dropdown below the navbar
|
|
20
|
+
* when this item is activated. Items with `details` show a ChevronDown icon.
|
|
21
|
+
*
|
|
22
|
+
* The panel continues the bar's frame: it takes the bar's side border (or
|
|
23
|
+
* its bottom border when it has none) and rounds off with the bar's corner
|
|
24
|
+
* radius, while the bar's bottom corners square off. Put a border or radius
|
|
25
|
+
* on the NavBar itself (`className`) for the panel to continue it; a frame
|
|
26
|
+
* drawn by a wrapper element is not continued. Items collapsed into "More"
|
|
27
|
+
* open the same panel. In the mobile drawer, the details open as a sub-view.
|
|
28
|
+
*/
|
|
29
|
+
details?: ReactNode;
|
|
30
|
+
/** Icon rendered before the label. */
|
|
31
|
+
icon?: ReactNode;
|
|
32
|
+
/** When true, the item is rendered as disabled (non-interactive, dimmed). */
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
}
|
|
35
|
+
type NavBarPosition = 'sticky' | 'fixed' | 'static';
|
|
36
|
+
interface NavBarProps {
|
|
37
|
+
/** Logo element rendered on the left side of the navbar. */
|
|
38
|
+
logo?: ReactNode;
|
|
39
|
+
/** Array of menu item configurations rendered in the center. */
|
|
40
|
+
items: NavBarMenuItem[];
|
|
41
|
+
/** Content rendered on the right side (e.g. account menu, search, CTA buttons). */
|
|
42
|
+
rightContent?: ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* Controlled: the `id` of the currently active menu item. When set, the
|
|
45
|
+
* component is fully controlled — `defaultActiveId` is ignored.
|
|
46
|
+
*/
|
|
47
|
+
activeId?: string;
|
|
48
|
+
/** Uncontrolled: the `id` of the initially active menu item. */
|
|
49
|
+
defaultActiveId?: string;
|
|
50
|
+
/** Fires when a menu item is activated (clicked or navigated). */
|
|
51
|
+
onActiveChange?: (id: string) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Controlled: the `id` of the menu item whose details panel is open,
|
|
54
|
+
* or `null` when no panel is open. When set, `onDetailsPanelChange`
|
|
55
|
+
* must also be provided.
|
|
56
|
+
*/
|
|
57
|
+
openDetailsId?: string | null;
|
|
58
|
+
/** Fires when the details panel should open or close. */
|
|
59
|
+
onDetailsPanelChange?: (id: string | null) => void;
|
|
60
|
+
/**
|
|
61
|
+
* How a desktop item opens its details panel.
|
|
62
|
+
* - `"click"` (default): the item is a button; a click toggles the panel.
|
|
63
|
+
* - `"hover"`: pointing at the item opens its panel after a short pause,
|
|
64
|
+
* and it stays open while the pointer is over the item or the panel. An
|
|
65
|
+
* item that also has `href` stays a link, so a click goes there. From the
|
|
66
|
+
* keyboard, ArrowDown on the item opens the panel and moves focus into it;
|
|
67
|
+
* Escape closes it and returns focus to the item. Touch never opens on
|
|
68
|
+
* hover. Items in "More" and the mobile drawer keep opening on click.
|
|
69
|
+
*/
|
|
70
|
+
openDetailsOn?: 'click' | 'hover';
|
|
71
|
+
/**
|
|
72
|
+
* Positioning mode.
|
|
73
|
+
* - `"sticky"` (default): sticks to the top on scroll via `position: sticky`.
|
|
74
|
+
* - `"fixed"`: fixed to the viewport top (consumer must add padding-top to body).
|
|
75
|
+
* - `"static"`: flows normally in the document.
|
|
76
|
+
*/
|
|
77
|
+
position?: NavBarPosition;
|
|
78
|
+
/** Height of the navbar. Defaults to `"var(--espd-navbar-height)"` (3.5rem). */
|
|
79
|
+
height?: string;
|
|
80
|
+
/**
|
|
81
|
+
* When true, navbar smoothly transforms from full-width to a floating
|
|
82
|
+
* rounded pill as the user scrolls down, and back on scroll up.
|
|
83
|
+
* Disabled on mobile. Default `false`.
|
|
84
|
+
*/
|
|
85
|
+
morphOnScroll?: boolean;
|
|
86
|
+
/** Scroll distance in pixels to trigger the morph transition. Default `50`. */
|
|
87
|
+
morphScrollThreshold?: number;
|
|
88
|
+
/**
|
|
89
|
+
* Ref to a scrollable container element for the morph trigger. When provided,
|
|
90
|
+
* the scroll hook listens to this element's `scrollTop` instead of `window.scrollY`.
|
|
91
|
+
* Useful when the navbar is inside a scrollable panel rather than the page itself.
|
|
92
|
+
*/
|
|
93
|
+
morphScrollContainer?: RefObject<HTMLElement | null>;
|
|
94
|
+
/** Label for the "More" overflow trigger button. Default `"More"`. */
|
|
95
|
+
moreLabel?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Router-aware Link component for internal navigation. Receives `to`,
|
|
98
|
+
* `className`, `children`, plus any additional HTML anchor attributes.
|
|
99
|
+
* If omitted, items with `href` render as plain `<a>` elements.
|
|
100
|
+
*/
|
|
101
|
+
linkComponent?: ElementType;
|
|
102
|
+
/** Title shown in the mobile Sheet header. Falls back to no title. */
|
|
103
|
+
mobileMenuTitle?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Custom trigger element for the mobile hamburger menu. When provided,
|
|
106
|
+
* replaces the default hamburger icon button.
|
|
107
|
+
*/
|
|
108
|
+
mobileMenuTrigger?: ReactNode;
|
|
109
|
+
/**
|
|
110
|
+
* Accent color applied to the active item and details-panel highlights.
|
|
111
|
+
* Accepts any preset token (`"primary"`, `"error"`, …) or an arbitrary
|
|
112
|
+
* CSS color string (hex, rgb, var(…)). Default `"primary"`.
|
|
113
|
+
*/
|
|
114
|
+
color?: Color;
|
|
115
|
+
/** Additional class names merged onto the root `<nav>` element. */
|
|
116
|
+
className?: string;
|
|
117
|
+
/**
|
|
118
|
+
* Class names merged onto the root `<nav>` only while the page is scrolled
|
|
119
|
+
* to the top (within `morphScrollThreshold`) — for a page that opens with a
|
|
120
|
+
* full-bleed hero the bar should melt into, e.g. `"dark border-transparent"`
|
|
121
|
+
* over a dark band. Past the threshold (and once morphed) the bar returns to
|
|
122
|
+
* its normal look. Works with or without `morphOnScroll`, on mobile too.
|
|
123
|
+
*
|
|
124
|
+
* With `morphOnScroll`, the class returns the moment the page is back at
|
|
125
|
+
* the top, while the pill is still widening and sliding up into place —
|
|
126
|
+
* so paint the hero's colour behind the bar as well (the hero extending
|
|
127
|
+
* under it, or a backdrop at the top of the page). Otherwise the page
|
|
128
|
+
* shows around the re-themed bar for that moment.
|
|
129
|
+
*
|
|
130
|
+
* An open details panel takes the same classes while they apply, so a
|
|
131
|
+
* `dark` bar hangs a dark panel even though the panel is portaled out of
|
|
132
|
+
* the bar's scope. Hanging from the full-width bar, the panel is opaque.
|
|
133
|
+
*/
|
|
134
|
+
topClassName?: string;
|
|
135
|
+
/**
|
|
136
|
+
* The bar's background while `topClassName` applies: `"translucent"`
|
|
137
|
+
* (default — the usual frosted 80%) or `"solid"`, fully opaque, so a bar
|
|
138
|
+
* re-themed by `topClassName` matches the hero under it exactly instead of
|
|
139
|
+
* letting the page behind it tint it.
|
|
140
|
+
*/
|
|
141
|
+
topBackground?: "translucent" | "solid";
|
|
142
|
+
/** Additional class names merged onto the menu items container. */
|
|
143
|
+
itemsClassName?: string;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
declare function NavBar({ logo, items, rightContent, activeId: activeIdProp, defaultActiveId, onActiveChange, openDetailsId: openDetailsIdProp, onDetailsPanelChange, openDetailsOn, position, height, morphOnScroll, morphScrollThreshold, morphScrollContainer, moreLabel, linkComponent, color, mobileMenuTitle, mobileMenuTrigger, className, topClassName, topBackground, itemsClassName, }: NavBarProps): React.JSX.Element;
|
|
147
|
+
|
|
148
|
+
export { NavBar, type NavBarMenuItem, type NavBarPosition, type NavBarProps };
|