tembro 2.0.5 → 2.1.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/dist/components/calendar/calendar.cjs +1 -1
- package/dist/components/calendar/calendar.d.ts +2 -1
- package/dist/components/calendar/calendar.js +126 -122
- package/dist/components/calendar/date-range-picker.cjs +1 -1
- package/dist/components/calendar/date-range-picker.d.ts +2 -1
- package/dist/components/calendar/date-range-picker.js +39 -39
- package/dist/components/charts/charts.cjs +1 -1
- package/dist/components/charts/charts.d.ts +13 -4
- package/dist/components/charts/charts.js +76 -46
- package/dist/components/charts/progress-ring.cjs +1 -1
- package/dist/components/charts/progress-ring.d.ts +3 -1
- package/dist/components/charts/progress-ring.js +11 -10
- package/dist/components/data-table/data-table-column-visibility-menu.cjs +1 -1
- package/dist/components/data-table/data-table-column-visibility-menu.d.ts +4 -1
- package/dist/components/data-table/data-table-column-visibility-menu.js +36 -8
- package/dist/components/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/data-table/data-table-pagination.js +4 -4
- package/dist/components/data-table/data-table-toolbar.cjs +1 -1
- package/dist/components/data-table/data-table-toolbar.js +12 -13
- package/dist/components/data-table/data-table.cjs +1 -1
- package/dist/components/data-table/data-table.d.ts +2 -2
- package/dist/components/data-table/data-table.js +2 -1
- package/dist/components/display/carousel.cjs +1 -1
- package/dist/components/display/carousel.d.ts +15 -1
- package/dist/components/display/carousel.js +128 -86
- package/dist/components/display/code-block.cjs +2 -2
- package/dist/components/display/code-block.d.ts +2 -1
- package/dist/components/display/code-block.js +17 -12
- package/dist/components/display/delta-badge.cjs +1 -1
- package/dist/components/display/delta-badge.d.ts +2 -1
- package/dist/components/display/delta-badge.js +11 -7
- package/dist/components/display/kanban.cjs +1 -1
- package/dist/components/display/kanban.d.ts +4 -1
- package/dist/components/display/kanban.js +60 -33
- package/dist/components/display/metric-grid.cjs +1 -1
- package/dist/components/display/metric-grid.d.ts +1 -0
- package/dist/components/display/metric-grid.js +1 -1
- package/dist/components/display/qr-code.cjs +1 -1
- package/dist/components/display/qr-code.d.ts +2 -1
- package/dist/components/display/qr-code.js +19 -16
- package/dist/components/display/smart-card.d.ts +1 -1
- package/dist/components/display/status-legend.d.ts +1 -1
- package/dist/components/display/tag.cjs +1 -1
- package/dist/components/display/tag.d.ts +2 -1
- package/dist/components/display/tag.js +28 -22
- package/dist/components/display/tree-view.cjs +1 -1
- package/dist/components/display/tree-view.d.ts +9 -1
- package/dist/components/display/tree-view.js +104 -40
- package/dist/components/display/trend-card.cjs +1 -1
- package/dist/components/display/trend-card.js +27 -41
- package/dist/components/feedback/alert.cjs +1 -1
- package/dist/components/feedback/alert.d.ts +2 -1
- package/dist/components/feedback/alert.js +6 -6
- package/dist/components/feedback/loading-state.cjs +1 -1
- package/dist/components/feedback/loading-state.d.ts +3 -1
- package/dist/components/feedback/loading-state.js +23 -10
- package/dist/components/feedback/page-state.cjs +1 -1
- package/dist/components/feedback/page-state.d.ts +2 -1
- package/dist/components/feedback/page-state.js +7 -4
- package/dist/components/form/form-field-shell.cjs +1 -1
- package/dist/components/form/form-field-shell.d.ts +4 -2
- package/dist/components/form/form-field-shell.js +57 -41
- package/dist/components/form/form-input.cjs +1 -1
- package/dist/components/form/form-input.d.ts +3 -4
- package/dist/components/form/form-input.js +259 -257
- package/dist/components/form/form-select.cjs +1 -1
- package/dist/components/form/form-select.d.ts +2 -2
- package/dist/components/form/form-select.js +8 -6
- package/dist/components/form/form-switch.cjs +1 -1
- package/dist/components/form/form-switch.d.ts +1 -1
- package/dist/components/form/form-switch.js +58 -54
- package/dist/components/form/form-textarea.cjs +1 -1
- package/dist/components/form/form-textarea.d.ts +1 -1
- package/dist/components/form/form-textarea.js +29 -27
- package/dist/components/inputs/async-select.d.ts +3 -0
- package/dist/components/inputs/search-input.d.ts +3 -0
- package/dist/components/inputs/simple-select.cjs +1 -1
- package/dist/components/inputs/simple-select.d.ts +10 -32
- package/dist/components/inputs/simple-select.js +5 -101
- package/dist/components/layout/app-sidebar.cjs +1 -1
- package/dist/components/layout/app-sidebar.d.ts +1 -0
- package/dist/components/layout/app-sidebar.js +36 -36
- package/dist/components/layout/breadcrumbs.cjs +1 -1
- package/dist/components/layout/breadcrumbs.d.ts +2 -1
- package/dist/components/layout/breadcrumbs.js +7 -7
- package/dist/components/modern/calendar-scheduler.cjs +1 -1
- package/dist/components/modern/calendar-scheduler.d.ts +5 -1
- package/dist/components/modern/calendar-scheduler.js +47 -28
- package/dist/components/modern/dual-list-picker.cjs +1 -1
- package/dist/components/modern/dual-list-picker.d.ts +5 -1
- package/dist/components/modern/dual-list-picker.js +81 -23
- package/dist/components/modern/rich-text-editor.cjs +1 -1
- package/dist/components/modern/rich-text-editor.d.ts +3 -1
- package/dist/components/modern/rich-text-editor.js +12 -9
- package/dist/components/modern/tour.cjs +1 -1
- package/dist/components/modern/tour.d.ts +5 -1
- package/dist/components/modern/tour.js +57 -35
- package/dist/components/navigation/command-bar.cjs +1 -1
- package/dist/components/navigation/command-bar.d.ts +3 -1
- package/dist/components/navigation/command-bar.js +10 -7
- package/dist/components/navigation/demo.cjs +1 -1
- package/dist/components/navigation/demo.js +0 -1
- package/dist/components/navigation/nav-tabs.cjs +1 -1
- package/dist/components/navigation/nav-tabs.js +39 -27
- package/dist/components/navigation/page-tabs.cjs +1 -1
- package/dist/components/navigation/page-tabs.js +41 -30
- package/dist/components/navigation/pagination.cjs +1 -1
- package/dist/components/navigation/pagination.d.ts +7 -1
- package/dist/components/navigation/pagination.js +48 -25
- package/dist/components/notifications/notification-center.cjs +1 -1
- package/dist/components/notifications/notification-center.d.ts +3 -1
- package/dist/components/notifications/notification-center.js +56 -38
- package/dist/components/notifications/toast.cjs +1 -1
- package/dist/components/notifications/toast.d.ts +1 -0
- package/dist/components/notifications/toast.js +4 -0
- package/dist/components/overlay/alert-dialog.cjs +1 -1
- package/dist/components/overlay/alert-dialog.js +1 -1
- package/dist/components/overlay/confirm-dialog.cjs +1 -1
- package/dist/components/overlay/confirm-dialog.d.ts +4 -2
- package/dist/components/overlay/confirm-dialog.js +31 -22
- package/dist/components/overlay/drawer.cjs +1 -1
- package/dist/components/overlay/drawer.d.ts +3 -1
- package/dist/components/overlay/drawer.js +24 -16
- package/dist/components/ui/accordion/index.d.ts +4 -0
- package/dist/components/ui/badge/index.cjs +1 -1
- package/dist/components/ui/badge/index.d.ts +1 -1
- package/dist/components/ui/badge/index.js +2 -1
- package/dist/components/ui/button/index.cjs +1 -1
- package/dist/components/ui/button/index.d.ts +2 -1
- package/dist/components/ui/button/index.js +13 -10
- package/dist/components/ui/card/index.cjs +1 -1
- package/dist/components/ui/card/index.d.ts +13 -2
- package/dist/components/ui/card/index.js +74 -49
- package/dist/components/ui/dialog/index.cjs +1 -1
- package/dist/components/ui/dialog/index.js +2 -1
- package/dist/components/ui/hover-card.cjs +1 -1
- package/dist/components/ui/hover-card.d.ts +11 -3
- package/dist/components/ui/hover-card.js +29 -24
- package/dist/components/ui/input/index.cjs +1 -1
- package/dist/components/ui/input/index.d.ts +9 -1
- package/dist/components/ui/input/index.js +63 -30
- package/dist/components/ui/popover/index.cjs +1 -1
- package/dist/components/ui/popover/index.d.ts +2 -2
- package/dist/components/ui/popover/index.js +6 -5
- package/dist/components/ui/radio-group/index.cjs +1 -1
- package/dist/components/ui/radio-group/index.d.ts +5 -1
- package/dist/components/ui/radio-group/index.js +50 -16
- package/dist/components/ui/right-click-menu/index.cjs +1 -1
- package/dist/components/ui/right-click-menu/index.d.ts +5 -1
- package/dist/components/ui/right-click-menu/index.js +77 -23
- package/dist/components/ui/segmented-control/index.cjs +1 -1
- package/dist/components/ui/segmented-control/index.d.ts +2 -1
- package/dist/components/ui/segmented-control/index.js +23 -11
- package/dist/components/ui/select/index.cjs +1 -1
- package/dist/components/ui/select/index.d.ts +40 -1
- package/dist/components/ui/select/index.js +159 -48
- package/dist/components/ui/switch/index.cjs +1 -1
- package/dist/components/ui/switch/index.d.ts +18 -0
- package/dist/components/ui/switch/index.js +47 -17
- package/dist/components/ui/tabs/index.cjs +1 -1
- package/dist/components/ui/tabs/index.d.ts +14 -4
- package/dist/components/ui/tabs/index.js +11 -8
- package/dist/components/ui/textarea/index.cjs +1 -1
- package/dist/components/ui/textarea/index.d.ts +10 -2
- package/dist/components/ui/textarea/index.js +37 -8
- package/dist/components/ui/textarea.cjs +1 -0
- package/dist/components/ui/textarea.d.ts +1 -0
- package/dist/components/ui/textarea.js +2 -0
- package/dist/components/ui/tooltip/index.cjs +1 -1
- package/dist/components/ui/tooltip/index.d.ts +11 -3
- package/dist/components/ui/tooltip/index.js +41 -20
- package/dist/components/upload/file-upload.cjs +1 -1
- package/dist/components/upload/file-upload.d.ts +8 -1
- package/dist/components/upload/file-upload.js +132 -100
- package/dist/components/upload/image-upload.cjs +1 -1
- package/dist/components/upload/image-upload.d.ts +5 -1
- package/dist/components/upload/image-upload.js +34 -9
- package/dist/index.cjs +1 -1
- package/dist/index.js +31 -31
- package/dist/public-component-surface.cjs +1 -1
- package/dist/public-component-surface.js +15 -0
- package/dist/showcase/component-api-schema.cjs +1 -1
- package/dist/showcase/component-api-schema.js +187 -10
- package/dist/showcase/create-demo.cjs +5 -4
- package/dist/showcase/create-demo.js +2 -2
- package/dist/showcase/fallback.cjs +3 -3
- package/dist/showcase/fallback.js +221 -243
- package/dist/showcase/premium/alert/showcase.cjs +1 -1
- package/dist/showcase/premium/alert/showcase.js +1 -0
- package/dist/showcase/premium/app-sidebar/showcase.cjs +1 -1
- package/dist/showcase/premium/app-sidebar/showcase.js +1 -0
- package/dist/showcase/premium/badge/showcase.cjs +1 -1
- package/dist/showcase/premium/badge/showcase.js +7 -0
- package/dist/showcase/premium/badge/types.d.ts +1 -1
- package/dist/showcase/premium/breadcrumbs/showcase.cjs +1 -1
- package/dist/showcase/premium/breadcrumbs/showcase.js +12 -1
- package/dist/showcase/premium/button/mock.cjs +1 -4
- package/dist/showcase/premium/button/mock.js +1 -1
- package/dist/showcase/premium/button/showcase.cjs +1 -1
- package/dist/showcase/premium/button/showcase.js +2 -2
- package/dist/showcase/premium/card/showcase.cjs +1 -1
- package/dist/showcase/premium/card/showcase.js +96 -47
- package/dist/showcase/premium/carousel/showcase.cjs +1 -1
- package/dist/showcase/premium/carousel/showcase.js +76 -49
- package/dist/showcase/premium/command-bar/showcase.cjs +1 -1
- package/dist/showcase/premium/command-bar/showcase.js +2 -0
- package/dist/showcase/premium/data-table/mock.cjs +12 -11
- package/dist/showcase/premium/data-table/mock.js +1 -1
- package/dist/showcase/premium/data-table/showcase.cjs +1 -1
- package/dist/showcase/premium/data-table/showcase.js +1 -1
- package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
- package/dist/showcase/premium/data-table-parts/showcase.js +3 -1
- package/dist/showcase/premium/file-upload/showcase.cjs +1 -1
- package/dist/showcase/premium/file-upload/showcase.js +25 -4
- package/dist/showcase/premium/image-upload/showcase.cjs +1 -1
- package/dist/showcase/premium/image-upload/showcase.js +4 -1
- package/dist/showcase/premium/index.cjs +1 -1
- package/dist/showcase/premium/index.js +396 -402
- package/dist/showcase/premium/loading-state/showcase.cjs +1 -1
- package/dist/showcase/premium/loading-state/showcase.js +3 -1
- package/dist/showcase/premium/metric-grid/showcase.cjs +1 -1
- package/dist/showcase/premium/metric-grid/showcase.js +96 -28
- package/dist/showcase/premium/notification-center/showcase.cjs +1 -1
- package/dist/showcase/premium/notification-center/showcase.js +7 -3
- package/dist/showcase/premium/page-state/showcase.cjs +1 -1
- package/dist/showcase/premium/page-state/showcase.js +5 -1
- package/dist/showcase/premium/pagination/showcase.cjs +1 -1
- package/dist/showcase/premium/pagination/showcase.js +15 -2
- package/dist/showcase/premium/popover/showcase.cjs +1 -1
- package/dist/showcase/premium/popover/showcase.js +85 -50
- package/dist/showcase/premium/radio-group/showcase.cjs +1 -1
- package/dist/showcase/premium/radio-group/showcase.js +27 -4
- package/dist/showcase/premium/right-click-menu/showcase.cjs +1 -1
- package/dist/showcase/premium/right-click-menu/showcase.js +56 -43
- package/dist/showcase/premium/segmented-control/showcase.cjs +1 -1
- package/dist/showcase/premium/segmented-control/showcase.js +1 -0
- package/dist/showcase/premium/select/data.cjs +1 -1
- package/dist/showcase/premium/select/data.js +69 -34
- package/dist/showcase/premium/select/mock.cjs +20 -8
- package/dist/showcase/premium/select/mock.js +3 -2
- package/dist/showcase/premium/select/showcase.cjs +1 -1
- package/dist/showcase/premium/select/showcase.js +101 -86
- package/dist/showcase/premium/select/types.d.ts +3 -0
- package/dist/showcase/premium/statistic/showcase.cjs +1 -1
- package/dist/showcase/premium/statistic/showcase.js +57 -25
- package/dist/showcase/premium/switch/showcase.cjs +1 -1
- package/dist/showcase/premium/switch/showcase.js +25 -14
- package/dist/showcase/premium/tabs/showcase.cjs +1 -1
- package/dist/showcase/premium/tabs/showcase.js +171 -48
- package/dist/showcase/premium/textarea/mock.cjs +12 -4
- package/dist/showcase/premium/textarea/mock.js +1 -1
- package/dist/showcase/premium/textarea/showcase.cjs +1 -1
- package/dist/showcase/premium/textarea/showcase.js +8 -3
- package/dist/showcase/premium/toast/showcase.cjs +1 -1
- package/dist/showcase/premium/toast/showcase.js +32 -6
- package/dist/showcase/premium/types.d.ts +1 -1
- package/dist/showcase/registry-quality.cjs +1 -1
- package/dist/showcase/registry-quality.js +1 -0
- package/dist/showcase/registry-specific.cjs +1 -1
- package/dist/showcase/registry-specific.js +78 -74
- package/dist/showcase/render-registry-preview.cjs +1 -1
- package/dist/showcase/render-registry-preview.js +90 -108
- package/dist/showcase/site-data.cjs +1 -1
- package/dist/showcase/site-data.js +60 -21
- package/dist/showcase/tembro-registry.json.cjs +1 -1
- package/dist/showcase/tembro-registry.json.js +34 -20
- package/dist/showcase/types.d.ts +1 -1
- package/package.json +1 -1
- package/packages/cli/dist/index.cjs +31 -31
- package/packages/cli/vendor/src/components/calendar/calendar.tsx +59 -50
- package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +7 -4
- package/packages/cli/vendor/src/components/charts/charts.tsx +109 -66
- package/packages/cli/vendor/src/components/charts/progress-ring.tsx +37 -26
- package/packages/cli/vendor/src/components/data-table/data-table-column-visibility-menu.tsx +41 -22
- package/packages/cli/vendor/src/components/data-table/data-table-pagination.tsx +7 -7
- package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +8 -6
- package/packages/cli/vendor/src/components/data-table/data-table.tsx +21 -20
- package/packages/cli/vendor/src/components/display/carousel.tsx +102 -9
- package/packages/cli/vendor/src/components/display/code-block.tsx +22 -2
- package/packages/cli/vendor/src/components/display/delta-badge.tsx +11 -11
- package/packages/cli/vendor/src/components/display/kanban.tsx +103 -57
- package/packages/cli/vendor/src/components/display/metric-grid.tsx +16 -13
- package/packages/cli/vendor/src/components/display/qr-code.tsx +17 -15
- package/packages/cli/vendor/src/components/display/smart-card.tsx +1 -1
- package/packages/cli/vendor/src/components/display/status-legend.tsx +1 -1
- package/packages/cli/vendor/src/components/display/tag.tsx +39 -21
- package/packages/cli/vendor/src/components/display/tree-view.tsx +221 -84
- package/packages/cli/vendor/src/components/display/trend-card.tsx +6 -40
- package/packages/cli/vendor/src/components/feedback/alert.tsx +3 -1
- package/packages/cli/vendor/src/components/feedback/loading-state.tsx +33 -17
- package/packages/cli/vendor/src/components/feedback/page-state.tsx +8 -7
- package/packages/cli/vendor/src/components/form/form-field-shell.tsx +37 -8
- package/packages/cli/vendor/src/components/form/form-input.tsx +11 -12
- package/packages/cli/vendor/src/components/form/form-select.tsx +6 -4
- package/packages/cli/vendor/src/components/form/form-switch.tsx +9 -3
- package/packages/cli/vendor/src/components/form/form-textarea.tsx +6 -2
- package/packages/cli/vendor/src/components/inputs/async-select.tsx +11 -8
- package/packages/cli/vendor/src/components/inputs/search-input.tsx +5 -2
- package/packages/cli/vendor/src/components/inputs/simple-select.tsx +20 -190
- package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +3 -1
- package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +3 -1
- package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +28 -13
- package/packages/cli/vendor/src/components/modern/dual-list-picker.tsx +103 -35
- package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +25 -22
- package/packages/cli/vendor/src/components/modern/tour.tsx +47 -29
- package/packages/cli/vendor/src/components/navigation/command-bar.tsx +6 -0
- package/packages/cli/vendor/src/components/navigation/demo.tsx +0 -1
- package/packages/cli/vendor/src/components/navigation/nav-tabs.tsx +38 -29
- package/packages/cli/vendor/src/components/navigation/page-tabs.tsx +35 -23
- package/packages/cli/vendor/src/components/navigation/pagination.tsx +65 -31
- package/packages/cli/vendor/src/components/notifications/notification-center.tsx +64 -39
- package/packages/cli/vendor/src/components/notifications/toast.tsx +23 -21
- package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +1 -1
- package/packages/cli/vendor/src/components/overlay/confirm-dialog.tsx +45 -22
- package/packages/cli/vendor/src/components/overlay/drawer.tsx +18 -5
- package/packages/cli/vendor/src/components/ui/accordion/index.tsx +4 -0
- package/packages/cli/vendor/src/components/ui/badge/index.tsx +2 -1
- package/packages/cli/vendor/src/components/ui/button/index.tsx +11 -5
- package/packages/cli/vendor/src/components/ui/card/index.tsx +95 -25
- package/packages/cli/vendor/src/components/ui/dialog/index.tsx +2 -1
- package/packages/cli/vendor/src/components/ui/hover-card.tsx +54 -28
- package/packages/cli/vendor/src/components/ui/input/index.tsx +98 -0
- package/packages/cli/vendor/src/components/ui/popover/index.tsx +10 -8
- package/packages/cli/vendor/src/components/ui/radio-group/index.tsx +55 -6
- package/packages/cli/vendor/src/components/ui/right-click-menu/index.tsx +120 -9
- package/packages/cli/vendor/src/components/ui/segmented-control/index.tsx +29 -3
- package/packages/cli/vendor/src/components/ui/select/index.tsx +260 -34
- package/packages/cli/vendor/src/components/ui/switch/index.tsx +71 -6
- package/packages/cli/vendor/src/components/ui/tabs/index.tsx +22 -6
- package/packages/cli/vendor/src/components/ui/textarea/index.tsx +105 -15
- package/packages/cli/vendor/src/components/ui/textarea.tsx +2 -0
- package/packages/cli/vendor/src/components/ui/tooltip/index.tsx +67 -22
- package/packages/cli/vendor/src/components/upload/file-upload.tsx +120 -57
- package/packages/cli/vendor/src/components/upload/image-upload.tsx +71 -24
- package/packages/cli/vendor/src/public-component-surface.ts +3 -0
- package/packages/cli/vendor/src/showcase/component-api-schema.ts +79 -41
- package/packages/cli/vendor/src/showcase/create-demo.tsx +16 -15
- package/packages/cli/vendor/src/showcase/fallback.tsx +4 -19
- package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/app-sidebar/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/badge/showcase.tsx +4 -2
- package/packages/cli/vendor/src/showcase/premium/badge/types.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/breadcrumbs/showcase.tsx +3 -1
- package/packages/cli/vendor/src/showcase/premium/button/mock.ts +2 -5
- package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +2 -2
- package/packages/cli/vendor/src/showcase/premium/card/showcase.tsx +26 -1
- package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +19 -3
- package/packages/cli/vendor/src/showcase/premium/command-bar/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/data-table/mock.ts +26 -25
- package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +3 -3
- package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +3 -3
- package/packages/cli/vendor/src/showcase/premium/file-upload/showcase.tsx +21 -1
- package/packages/cli/vendor/src/showcase/premium/image-upload/showcase.tsx +4 -1
- package/packages/cli/vendor/src/showcase/premium/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/loading-state/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/metric-grid/showcase.tsx +36 -4
- package/packages/cli/vendor/src/showcase/premium/notification-center/showcase.tsx +4 -3
- package/packages/cli/vendor/src/showcase/premium/page-state/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/pagination/showcase.tsx +13 -1
- package/packages/cli/vendor/src/showcase/premium/popover/showcase.tsx +27 -11
- package/packages/cli/vendor/src/showcase/premium/radio-group/showcase.tsx +13 -1
- package/packages/cli/vendor/src/showcase/premium/right-click-menu/showcase.tsx +8 -5
- package/packages/cli/vendor/src/showcase/premium/segmented-control/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/select/data.ts +12 -3
- package/packages/cli/vendor/src/showcase/premium/select/mock.ts +4 -4
- package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +35 -22
- package/packages/cli/vendor/src/showcase/premium/select/types.ts +3 -0
- package/packages/cli/vendor/src/showcase/premium/statistic/showcase.tsx +10 -1
- package/packages/cli/vendor/src/showcase/premium/switch/showcase.tsx +15 -6
- package/packages/cli/vendor/src/showcase/premium/tabs/showcase.tsx +48 -1
- package/packages/cli/vendor/src/showcase/premium/textarea/mock.ts +12 -4
- package/packages/cli/vendor/src/showcase/premium/textarea/showcase.tsx +5 -0
- package/packages/cli/vendor/src/showcase/premium/toast/showcase.tsx +17 -1
- package/packages/cli/vendor/src/showcase/premium/types.ts +1 -1
- package/packages/cli/vendor/src/showcase/registry-quality.ts +3 -2
- package/packages/cli/vendor/src/showcase/registry-specific.tsx +7 -8
- package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +5 -21
- package/packages/cli/vendor/src/showcase/site-data.tsx +21 -15
- package/packages/cli/vendor/src/showcase/tembro-registry.json +42 -20
- package/packages/cli/vendor/src/showcase/types.ts +1 -1
- package/registry.json +18 -6
|
@@ -3,12 +3,12 @@ import { CopyButton as t } from "../actions/copy-button.js";
|
|
|
3
3
|
import * as n from "react";
|
|
4
4
|
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/display/code-block.tsx
|
|
6
|
-
function a({ code: a, language: o, title: s, showCopy: c = !0, wrap: l = !1, lineNumbers: u = !1,
|
|
7
|
-
let
|
|
6
|
+
function a({ code: a, language: o, title: s, showCopy: c = !0, wrap: l = !1, lineNumbers: u = !1, highlightLines: d = [], maxHeight: f, className: p, ...m }) {
|
|
7
|
+
let h = n.useMemo(() => a.split("\n"), [a]), g = n.useMemo(() => new Set(d), [d]);
|
|
8
8
|
return /* @__PURE__ */ i("div", {
|
|
9
9
|
"data-slot": "code-block",
|
|
10
|
-
className: e("overflow-hidden rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-card",
|
|
11
|
-
...
|
|
10
|
+
className: e("overflow-hidden rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-card", p),
|
|
11
|
+
...m,
|
|
12
12
|
children: [(s || o || c) && /* @__PURE__ */ i("div", {
|
|
13
13
|
className: "flex items-center justify-between gap-3 border-b border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_72%)] px-3 py-2 text-xs text-muted-foreground",
|
|
14
14
|
children: [/* @__PURE__ */ i("div", {
|
|
@@ -29,20 +29,25 @@ function a({ code: a, language: o, title: s, showCopy: c = !0, wrap: l = !1, lin
|
|
|
29
29
|
})]
|
|
30
30
|
}), /* @__PURE__ */ r("pre", {
|
|
31
31
|
className: e("overflow-x-auto p-3 text-sm leading-6", l && "whitespace-pre-wrap break-words"),
|
|
32
|
-
style:
|
|
33
|
-
maxHeight:
|
|
32
|
+
style: f ? {
|
|
33
|
+
maxHeight: f,
|
|
34
34
|
overflowY: "auto"
|
|
35
35
|
} : void 0,
|
|
36
36
|
children: u ? /* @__PURE__ */ r("code", {
|
|
37
37
|
className: "grid",
|
|
38
|
-
children:
|
|
39
|
-
|
|
38
|
+
children: h.map((t, n) => /* @__PURE__ */ i("span", {
|
|
39
|
+
"data-highlighted": g.has(n + 1) || void 0,
|
|
40
|
+
className: e("grid grid-cols-[auto_1fr] gap-4 rounded px-1", g.has(n + 1) && "bg-primary/10 text-foreground"),
|
|
40
41
|
children: [/* @__PURE__ */ r("span", {
|
|
41
42
|
className: "select-none text-right text-xs text-muted-foreground/75",
|
|
42
|
-
children:
|
|
43
|
-
}), /* @__PURE__ */ r("span", { children:
|
|
44
|
-
}, `${
|
|
45
|
-
}) : /* @__PURE__ */ r("code", { children:
|
|
43
|
+
children: n + 1
|
|
44
|
+
}), /* @__PURE__ */ r("span", { children: t || " " })]
|
|
45
|
+
}, `${n}-${t}`))
|
|
46
|
+
}) : /* @__PURE__ */ r("code", { children: h.map((t, n) => /* @__PURE__ */ r("span", {
|
|
47
|
+
"data-highlighted": g.has(n + 1) || void 0,
|
|
48
|
+
className: e("block rounded px-1", g.has(n + 1) && "bg-primary/10 text-foreground"),
|
|
49
|
+
children: t || " "
|
|
50
|
+
}, `${n}-${t}`)) })
|
|
46
51
|
})]
|
|
47
52
|
});
|
|
48
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/badge/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");function o({value:e,trend:r=`neutral`,size:o=`default`,icon:s=!0,className:c,...l}){return(0,a.jsx)(n.Badge,{"data-slot":`delta-badge`,variant:`soft`,tone:r===`up`?`success`:r===`down`?`danger`:`muted`,size:o,leftIcon:s?(0,a.jsx)(r===`up`?i.ArrowUpIcon:r===`down`?i.ArrowDownIcon:i.MinusIcon,{className:t.cn(`shrink-0`,o===`sm`?`size-2.5`:`size-3`)}):void 0,label:e,className:t.cn(o===`sm`&&`min-h-5 px-1.5 text-[10px]`,c),...l})}exports.DeltaBadge=o;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
import { type BadgeProps } from "@/components/ui/badge";
|
|
3
|
+
export type DeltaBadgeProps = Omit<BadgeProps, "children" | "label" | "tone" | "status" | "leftIcon" | "variant" | "size"> & {
|
|
3
4
|
value: React.ReactNode;
|
|
4
5
|
trend?: "up" | "down" | "neutral";
|
|
5
6
|
size?: "sm" | "default";
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { cn as e } from "../../lib/utils.js";
|
|
2
|
+
import { Badge as t } from "../ui/badge/index.js";
|
|
2
3
|
import "react";
|
|
3
|
-
import { ArrowDownIcon as
|
|
4
|
-
import { jsx as
|
|
4
|
+
import { ArrowDownIcon as n, ArrowUpIcon as r, MinusIcon as i } from "lucide-react";
|
|
5
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
5
6
|
//#region src/components/display/delta-badge.tsx
|
|
6
7
|
function o({ value: o, trend: s = "neutral", size: c = "default", icon: l = !0, className: u, ...d }) {
|
|
7
|
-
|
|
8
|
-
return /* @__PURE__ */ a("span", {
|
|
8
|
+
return /* @__PURE__ */ a(t, {
|
|
9
9
|
"data-slot": "delta-badge",
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
variant: "soft",
|
|
11
|
+
tone: s === "up" ? "success" : s === "down" ? "danger" : "muted",
|
|
12
|
+
size: c,
|
|
13
|
+
leftIcon: l ? /* @__PURE__ */ a(s === "up" ? r : s === "down" ? n : i, { className: e("shrink-0", c === "sm" ? "size-2.5" : "size-3") }) : void 0,
|
|
14
|
+
label: o,
|
|
15
|
+
className: e(c === "sm" && "min-h-5 px-1.5 text-[10px]", u),
|
|
16
|
+
...d
|
|
13
17
|
});
|
|
14
18
|
}
|
|
15
19
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/card/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");function a({columns:e,renderCard:n,onCardClick:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/card/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");function a({columns:e,renderCard:n,onCardClick:a,onCardMove:s,emptyColumn:c=`No cards yet.`,columnClassName:l,cardClassName:u,className:d,...f}){let p=r.useMemo(()=>new Map(e.map(e=>[e.key,e])),[e]);return(0,i.jsx)(`div`,{"data-slot":`kanban-board`,className:t.cn(`grid auto-cols-[minmax(280px,1fr)] grid-flow-col gap-4 overflow-x-auto pb-2`,d),...f,children:e.map(e=>(0,i.jsx)(o,{column:e,renderCard:n,onCardClick:a,onCardMove:s,columnByKey:p,emptyColumn:c,columnClassName:l,cardClassName:u},e.key))})}function o({column:e,renderCard:r,onCardClick:a,onCardMove:o,columnByKey:s,emptyColumn:c,columnClassName:l,cardClassName:u}){return(0,i.jsxs)(`section`,{"data-slot":`kanban-column`,className:t.cn(`grid min-h-40 content-start gap-3 rounded-lg border bg-muted/35 p-3`,l),onDragOver:e=>{o&&e.preventDefault()},onDrop:t=>{let n=t.dataTransfer.getData(`application/x-tembro-kanban-card`),r=t.dataTransfer.getData(`application/x-tembro-kanban-column`),i=s.get(r),a=i?.cards.find(e=>e.key===n);a&&i&&i.key!==e.key&&o?.(a,i,e)},children:[(0,i.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,i.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,i.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:e.title}),e.description&&(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),(0,i.jsx)(`div`,{className:`rounded-full bg-background px-2 py-0.5 text-xs text-muted-foreground`,children:e.count??e.cards.length})]}),(0,i.jsx)(`div`,{className:`grid gap-2`,children:e.cards.length===0?(0,i.jsx)(`div`,{"data-slot":`kanban-column-empty`,className:`rounded-md border border-dashed bg-background/60 px-3 py-6 text-center text-sm text-muted-foreground`,children:typeof c==`function`?c(e):c}):e.cards.map(s=>r?.(s,e)??(0,i.jsxs)(n.Card,{"data-slot":`kanban-card`,role:a?`button`:void 0,tabIndex:a&&!s.disabled?0:void 0,draggable:!!(o&&!s.disabled),className:t.cn(`transition-colors hover:bg-muted/40`,a&&!s.disabled&&`cursor-pointer`,o&&!s.disabled&&`cursor-grab active:cursor-grabbing`,s.disabled&&`pointer-events-none opacity-55`,u),onDragStart:t=>{t.dataTransfer.setData(`application/x-tembro-kanban-card`,s.key),t.dataTransfer.setData(`application/x-tembro-kanban-column`,e.key),t.dataTransfer.effectAllowed=`move`},onClick:()=>a?.(s,e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&a&&!s.disabled&&(t.preventDefault(),a(s,e))},children:[(0,i.jsx)(n.CardHeader,{className:`p-3 pb-1`,children:(0,i.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,i.jsx)(n.CardTitle,{className:`text-sm`,children:s.title}),(s.extra||s.actions)&&(0,i.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[s.extra,s.actions]})]})}),(s.description||s.meta)&&(0,i.jsxs)(n.CardContent,{className:`grid gap-2 p-3 pt-0 text-xs text-muted-foreground`,children:[s.description,s.meta&&(0,i.jsx)(`div`,{children:s.meta})]})]},s.key))})]})}exports.KanbanBoard=a;
|
|
@@ -5,6 +5,7 @@ export type KanbanCard = {
|
|
|
5
5
|
description?: React.ReactNode;
|
|
6
6
|
meta?: React.ReactNode;
|
|
7
7
|
extra?: React.ReactNode;
|
|
8
|
+
actions?: React.ReactNode;
|
|
8
9
|
disabled?: boolean;
|
|
9
10
|
};
|
|
10
11
|
export type KanbanColumn = {
|
|
@@ -18,8 +19,10 @@ export type KanbanBoardProps = React.ComponentProps<"div"> & {
|
|
|
18
19
|
columns: KanbanColumn[];
|
|
19
20
|
renderCard?: (card: KanbanCard, column: KanbanColumn) => React.ReactNode;
|
|
20
21
|
onCardClick?: (card: KanbanCard, column: KanbanColumn) => void;
|
|
22
|
+
onCardMove?: (card: KanbanCard, fromColumn: KanbanColumn, toColumn: KanbanColumn) => void;
|
|
23
|
+
emptyColumn?: React.ReactNode | ((column: KanbanColumn) => React.ReactNode);
|
|
21
24
|
columnClassName?: string;
|
|
22
25
|
cardClassName?: string;
|
|
23
26
|
};
|
|
24
|
-
declare function KanbanBoard({ columns, renderCard, onCardClick, columnClassName, cardClassName, className, ...props }: KanbanBoardProps): React.JSX.Element;
|
|
27
|
+
declare function KanbanBoard({ columns, renderCard, onCardClick, onCardMove, emptyColumn, columnClassName, cardClassName, className, ...props }: KanbanBoardProps): React.JSX.Element;
|
|
25
28
|
export { KanbanBoard };
|
|
@@ -1,63 +1,90 @@
|
|
|
1
1
|
import { cn as e } from "../../lib/utils.js";
|
|
2
2
|
import { Card as t, CardContent as n, CardHeader as r, CardTitle as i } from "../ui/card/index.js";
|
|
3
|
-
import "react";
|
|
4
|
-
import { jsx as
|
|
3
|
+
import * as a from "react";
|
|
4
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/display/kanban.tsx
|
|
6
|
-
function
|
|
7
|
-
|
|
6
|
+
function c({ columns: t, renderCard: n, onCardClick: r, onCardMove: i, emptyColumn: s = "No cards yet.", columnClassName: c, cardClassName: u, className: d, ...f }) {
|
|
7
|
+
let p = a.useMemo(() => new Map(t.map((e) => [e.key, e])), [t]);
|
|
8
|
+
return /* @__PURE__ */ o("div", {
|
|
8
9
|
"data-slot": "kanban-board",
|
|
9
|
-
className: e("grid auto-cols-[minmax(280px,1fr)] grid-flow-col gap-4 overflow-x-auto pb-2",
|
|
10
|
-
...
|
|
11
|
-
children: t.map((e) => /* @__PURE__ */
|
|
10
|
+
className: e("grid auto-cols-[minmax(280px,1fr)] grid-flow-col gap-4 overflow-x-auto pb-2", d),
|
|
11
|
+
...f,
|
|
12
|
+
children: t.map((e) => /* @__PURE__ */ o(l, {
|
|
12
13
|
column: e,
|
|
13
14
|
renderCard: n,
|
|
14
15
|
onCardClick: r,
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
onCardMove: i,
|
|
17
|
+
columnByKey: p,
|
|
18
|
+
emptyColumn: s,
|
|
19
|
+
columnClassName: c,
|
|
20
|
+
cardClassName: u
|
|
17
21
|
}, e.key))
|
|
18
22
|
});
|
|
19
23
|
}
|
|
20
|
-
function
|
|
21
|
-
return /* @__PURE__ */
|
|
24
|
+
function l({ column: a, renderCard: c, onCardClick: l, onCardMove: u, columnByKey: d, emptyColumn: f, columnClassName: p, cardClassName: m }) {
|
|
25
|
+
return /* @__PURE__ */ s("section", {
|
|
22
26
|
"data-slot": "kanban-column",
|
|
23
|
-
className: e("grid min-h-40 content-start gap-3 rounded-lg border bg-muted/35 p-3",
|
|
24
|
-
|
|
27
|
+
className: e("grid min-h-40 content-start gap-3 rounded-lg border bg-muted/35 p-3", p),
|
|
28
|
+
onDragOver: (e) => {
|
|
29
|
+
u && e.preventDefault();
|
|
30
|
+
},
|
|
31
|
+
onDrop: (e) => {
|
|
32
|
+
let t = e.dataTransfer.getData("application/x-tembro-kanban-card"), n = e.dataTransfer.getData("application/x-tembro-kanban-column"), r = d.get(n), i = r?.cards.find((e) => e.key === t);
|
|
33
|
+
i && r && r.key !== a.key && u?.(i, r, a);
|
|
34
|
+
},
|
|
35
|
+
children: [/* @__PURE__ */ s("div", {
|
|
25
36
|
className: "flex items-start justify-between gap-3",
|
|
26
|
-
children: [/* @__PURE__ */
|
|
37
|
+
children: [/* @__PURE__ */ s("div", {
|
|
27
38
|
className: "grid gap-0.5",
|
|
28
|
-
children: [/* @__PURE__ */
|
|
39
|
+
children: [/* @__PURE__ */ o("h3", {
|
|
29
40
|
className: "text-sm font-semibold text-foreground",
|
|
30
|
-
children:
|
|
31
|
-
}),
|
|
41
|
+
children: a.title
|
|
42
|
+
}), a.description && /* @__PURE__ */ o("p", {
|
|
32
43
|
className: "text-xs text-muted-foreground",
|
|
33
|
-
children:
|
|
44
|
+
children: a.description
|
|
34
45
|
})]
|
|
35
|
-
}), /* @__PURE__ */
|
|
46
|
+
}), /* @__PURE__ */ o("div", {
|
|
36
47
|
className: "rounded-full bg-background px-2 py-0.5 text-xs text-muted-foreground",
|
|
37
|
-
children:
|
|
48
|
+
children: a.count ?? a.cards.length
|
|
38
49
|
})]
|
|
39
|
-
}), /* @__PURE__ */
|
|
50
|
+
}), /* @__PURE__ */ o("div", {
|
|
40
51
|
className: "grid gap-2",
|
|
41
|
-
children:
|
|
52
|
+
children: a.cards.length === 0 ? /* @__PURE__ */ o("div", {
|
|
53
|
+
"data-slot": "kanban-column-empty",
|
|
54
|
+
className: "rounded-md border border-dashed bg-background/60 px-3 py-6 text-center text-sm text-muted-foreground",
|
|
55
|
+
children: typeof f == "function" ? f(a) : f
|
|
56
|
+
}) : a.cards.map((d) => c?.(d, a) ?? /* @__PURE__ */ s(t, {
|
|
42
57
|
"data-slot": "kanban-card",
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
58
|
+
role: l ? "button" : void 0,
|
|
59
|
+
tabIndex: l && !d.disabled ? 0 : void 0,
|
|
60
|
+
draggable: !!(u && !d.disabled),
|
|
61
|
+
className: e("transition-colors hover:bg-muted/40", l && !d.disabled && "cursor-pointer", u && !d.disabled && "cursor-grab active:cursor-grabbing", d.disabled && "pointer-events-none opacity-55", m),
|
|
62
|
+
onDragStart: (e) => {
|
|
63
|
+
e.dataTransfer.setData("application/x-tembro-kanban-card", d.key), e.dataTransfer.setData("application/x-tembro-kanban-column", a.key), e.dataTransfer.effectAllowed = "move";
|
|
64
|
+
},
|
|
65
|
+
onClick: () => l?.(d, a),
|
|
66
|
+
onKeyDown: (e) => {
|
|
67
|
+
(e.key === "Enter" || e.key === " ") && l && !d.disabled && (e.preventDefault(), l(d, a));
|
|
68
|
+
},
|
|
69
|
+
children: [/* @__PURE__ */ o(r, {
|
|
46
70
|
className: "p-3 pb-1",
|
|
47
|
-
children: /* @__PURE__ */
|
|
71
|
+
children: /* @__PURE__ */ s("div", {
|
|
48
72
|
className: "flex items-start justify-between gap-2",
|
|
49
|
-
children: [/* @__PURE__ */
|
|
73
|
+
children: [/* @__PURE__ */ o(i, {
|
|
50
74
|
className: "text-sm",
|
|
51
|
-
children:
|
|
52
|
-
}),
|
|
75
|
+
children: d.title
|
|
76
|
+
}), (d.extra || d.actions) && /* @__PURE__ */ s("div", {
|
|
77
|
+
className: "flex shrink-0 items-center gap-1",
|
|
78
|
+
children: [d.extra, d.actions]
|
|
79
|
+
})]
|
|
53
80
|
})
|
|
54
|
-
}), (
|
|
81
|
+
}), (d.description || d.meta) && /* @__PURE__ */ s(n, {
|
|
55
82
|
className: "grid gap-2 p-3 pt-0 text-xs text-muted-foreground",
|
|
56
|
-
children: [
|
|
83
|
+
children: [d.description, d.meta && /* @__PURE__ */ o("div", { children: d.meta })]
|
|
57
84
|
})]
|
|
58
|
-
},
|
|
85
|
+
}, d.key))
|
|
59
86
|
})]
|
|
60
87
|
});
|
|
61
88
|
}
|
|
62
89
|
//#endregion
|
|
63
|
-
export {
|
|
90
|
+
export { c as KanbanBoard };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/card/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 xl:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 xl:grid-cols-4`},o={default:``,success:`border-emerald-500/20 bg-emerald-500/5`,warning:`border-amber-500/20 bg-amber-500/5`,danger:`border-destructive/20 bg-destructive/5`,info:`border-blue-500/20 bg-blue-500/5`,muted:`bg-muted/40`};function s({className:e,items:r,columns:s=4,compact:c=!1,itemClassName:l,...u}){let d=r.filter(e=>!e.hidden);return(0,i.jsx)(`div`,{"data-slot":`metric-grid`,className:t.cn(`grid gap-3`,a[s],e),...u,children:d.map(e=>(0,i.jsxs)(n.Card,{"data-slot":`stat-card`,"data-tone":e.tone??`default`,className:t.cn(`min-w-0 overflow-hidden`,o[e.tone??`default`],l,e.className),children:[(0,i.jsxs)(n.CardHeader,{className:t.cn(`flex flex-row items-start justify-between gap-3 space-y-0`,c?`p-3 pb-1`:`pb-2`),children:[(0,i.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,i.jsx)(n.CardDescription,{className:`truncate`,children:e.label}),(0,i.jsx)(n.CardTitle,{className:t.cn(`truncate`,c?`text-xl`:`text-2xl`),children:e.value})]}),e.icon&&(0,i.jsx)(`div`,{className:`shrink-0 rounded-lg bg-muted p-2 text-muted-foreground [&_svg]:size-4`,children:e.icon})]}),(e.description||e.trend)&&(0,i.jsxs)(n.CardContent,{className:t.cn(`flex min-w-0 items-center justify-between gap-2`,c?`p-3 pt-1`:`pt-0`),children:[e.description&&(0,i.jsx)(`div`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:e.description}),e.trend&&(0,i.jsx)(`div`,{className:`shrink-0 text-xs font-medium`,children:e.trend})]})]},e.key))})}exports.MetricGrid=s;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/card/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 xl:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 xl:grid-cols-4`},o={default:``,success:`border-emerald-500/20 bg-emerald-500/5`,warning:`border-amber-500/20 bg-amber-500/5`,danger:`border-destructive/20 bg-destructive/5`,info:`border-blue-500/20 bg-blue-500/5`,muted:`bg-muted/40`};function s({className:e,items:r,columns:s=4,compact:c=!1,itemClassName:l,...u}){let d=r.filter(e=>!e.hidden);return(0,i.jsx)(`div`,{"data-slot":`metric-grid`,className:t.cn(`grid gap-3`,a[s],e),...u,children:d.map(e=>(0,i.jsxs)(n.Card,{"data-slot":`stat-card`,"data-tone":e.tone??`default`,className:t.cn(`min-w-0 overflow-hidden`,o[e.tone??`default`],l,e.className),children:[(0,i.jsxs)(n.CardHeader,{className:t.cn(`flex flex-row items-start justify-between gap-3 space-y-0`,c?`p-3 pb-1`:`pb-2`),children:[(0,i.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,i.jsx)(n.CardDescription,{className:`truncate`,children:e.label}),(0,i.jsx)(n.CardTitle,{className:t.cn(`truncate`,c?`text-xl`:`text-2xl`),children:e.loading?(0,i.jsx)(`span`,{className:`block h-8 w-24 animate-pulse rounded bg-muted`}):e.value})]}),e.icon&&(0,i.jsx)(`div`,{className:`shrink-0 rounded-lg bg-muted p-2 text-muted-foreground [&_svg]:size-4`,children:e.icon})]}),(e.description||e.trend)&&(0,i.jsxs)(n.CardContent,{className:t.cn(`flex min-w-0 items-center justify-between gap-2`,c?`p-3 pt-1`:`pt-0`),children:[e.description&&(0,i.jsx)(`div`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:e.description}),e.trend&&(0,i.jsx)(`div`,{className:`shrink-0 text-xs font-medium`,children:e.trend})]})]},e.key))})}exports.MetricGrid=s;
|
|
@@ -35,7 +35,7 @@ function u({ className: u, items: d, columns: f = 4, compact: p = !1, itemClassN
|
|
|
35
35
|
children: c.label
|
|
36
36
|
}), /* @__PURE__ */ o(a, {
|
|
37
37
|
className: e("truncate", p ? "text-xl" : "text-2xl"),
|
|
38
|
-
children: c.value
|
|
38
|
+
children: c.loading ? /* @__PURE__ */ o("span", { className: "block h-8 w-24 animate-pulse rounded bg-muted" }) : c.value
|
|
39
39
|
})]
|
|
40
40
|
}), c.icon && /* @__PURE__ */ o("div", {
|
|
41
41
|
className: "shrink-0 rounded-lg bg-muted p-2 text-muted-foreground [&_svg]:size-4",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function a(e,t,n){return e<7&&t<7||e<7&&t>20||e>20&&t<7?!1:((Math.imul(e+17,73856093)^Math.imul(t+31,19349663)^n)>>>0)%5<2}function o({x:e,y:t}){return(0,r.jsxs)(`g`,{children:[(0,r.jsx)(`rect`,{x:e,y:t,width:`7`,height:`7`,fill:`currentColor`}),(0,r.jsx)(`rect`,{x:e+1,y:t+1,width:`5`,height:`5`,fill:`white`}),(0,r.jsx)(`rect`,{x:e+2,y:t+2,width:`3`,height:`3`,fill:`currentColor`})]})}function s({value:e,cells:t=29,title:n}){let s=i(e),c=`0 0 ${t} ${t}`,l=Array.from({length:t},(e,t)=>t),u=Array.from({length:t},(e,t)=>t);return(0,r.jsxs)(`svg`,{role:`img`,"aria-label":n??e,viewBox:c,className:`size-full text-foreground`,shapeRendering:`crispEdges`,children:[(0,r.jsx)(`rect`,{width:t,height:t,fill:`white`}),(0,r.jsx)(o,{x:0,y:0}),(0,r.jsx)(o,{x:t-7,y:0}),(0,r.jsx)(o,{x:0,y:t-7}),l.map(e=>u.map(t=>a(e,t,s)?(0,r.jsx)(`rect`,{x:t,y:e,width:`1`,height:`1`,fill:`currentColor`},`${e}-${t}`):null))]})}function c({value:e,src:n,alt:i,size:a=160,cells:o=29,className:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function a(e,t,n){return e<7&&t<7||e<7&&t>20||e>20&&t<7?!1:((Math.imul(e+17,73856093)^Math.imul(t+31,19349663)^n)>>>0)%5<2}function o({x:e,y:t}){return(0,r.jsxs)(`g`,{children:[(0,r.jsx)(`rect`,{x:e,y:t,width:`7`,height:`7`,fill:`currentColor`}),(0,r.jsx)(`rect`,{x:e+1,y:t+1,width:`5`,height:`5`,fill:`white`}),(0,r.jsx)(`rect`,{x:e+2,y:t+2,width:`3`,height:`3`,fill:`currentColor`})]})}function s({value:e,cells:t=29,title:n}){let s=i(e),c=`0 0 ${t} ${t}`,l=Array.from({length:t},(e,t)=>t),u=Array.from({length:t},(e,t)=>t);return(0,r.jsxs)(`svg`,{role:`img`,"aria-label":n??e,viewBox:c,className:`size-full text-foreground`,shapeRendering:`crispEdges`,children:[(0,r.jsx)(`rect`,{width:t,height:t,fill:`white`}),(0,r.jsx)(o,{x:0,y:0}),(0,r.jsx)(o,{x:t-7,y:0}),(0,r.jsx)(o,{x:0,y:t-7}),l.map(e=>u.map(t=>a(e,t,s)?(0,r.jsx)(`rect`,{x:t,y:e,width:`1`,height:`1`,fill:`currentColor`},`${e}-${t}`):null))]})}function c({value:e,src:n,alt:i,size:a=160,cells:o=29,visualOnlyLabel:c=`Visual preview only. Provide src from a certified QR encoder for scan-critical use.`,className:l,...u}){return(0,r.jsxs)(`div`,{"data-slot":`qr-code`,className:t.cn(`inline-flex flex-col items-center gap-2 rounded-xl border bg-background p-3`,l),...u,children:[(0,r.jsx)(`div`,{className:`rounded-md bg-white p-2`,style:{width:a,height:a},children:n?(0,r.jsx)(`img`,{src:n,alt:i??e,width:a,height:a,className:`size-full rounded-sm object-contain`}):(0,r.jsx)(s,{value:e,cells:o,title:i})}),!n&&c&&(0,r.jsx)(`div`,{className:`max-w-48 text-center text-xs text-muted-foreground`,children:c})]})}exports.QRCode=c,exports.QRCodeSvg=s;
|
|
@@ -5,11 +5,12 @@ export type QRCodeProps = React.ComponentProps<"div"> & {
|
|
|
5
5
|
alt?: string;
|
|
6
6
|
size?: number;
|
|
7
7
|
cells?: number;
|
|
8
|
+
visualOnlyLabel?: React.ReactNode;
|
|
8
9
|
};
|
|
9
10
|
declare function QRCodeSvg({ value, cells, title }: {
|
|
10
11
|
value: string;
|
|
11
12
|
cells?: number;
|
|
12
13
|
title?: string;
|
|
13
14
|
}): React.JSX.Element;
|
|
14
|
-
declare function QRCode({ value, src, alt, size, cells, className, ...props }: QRCodeProps): React.JSX.Element;
|
|
15
|
+
declare function QRCode({ value, src, alt, size, cells, visualOnlyLabel, className, ...props }: QRCodeProps): React.JSX.Element;
|
|
15
16
|
export { QRCode, QRCodeSvg };
|
|
@@ -71,29 +71,32 @@ function o({ value: e, cells: o = 29, title: s }) {
|
|
|
71
71
|
]
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
|
-
function s({ value:
|
|
75
|
-
return /* @__PURE__ */
|
|
74
|
+
function s({ value: r, src: i, alt: a, size: s = 160, cells: c = 29, visualOnlyLabel: l = "Visual preview only. Provide src from a certified QR encoder for scan-critical use.", className: u, ...d }) {
|
|
75
|
+
return /* @__PURE__ */ n("div", {
|
|
76
76
|
"data-slot": "qr-code",
|
|
77
|
-
className: e("inline-flex flex-col items-center gap-2 rounded-xl border bg-background p-3",
|
|
78
|
-
...
|
|
79
|
-
children: /* @__PURE__ */ t("div", {
|
|
77
|
+
className: e("inline-flex flex-col items-center gap-2 rounded-xl border bg-background p-3", u),
|
|
78
|
+
...d,
|
|
79
|
+
children: [/* @__PURE__ */ t("div", {
|
|
80
80
|
className: "rounded-md bg-white p-2",
|
|
81
81
|
style: {
|
|
82
|
-
width:
|
|
83
|
-
height:
|
|
82
|
+
width: s,
|
|
83
|
+
height: s
|
|
84
84
|
},
|
|
85
|
-
children:
|
|
86
|
-
src:
|
|
87
|
-
alt:
|
|
88
|
-
width:
|
|
89
|
-
height:
|
|
85
|
+
children: i ? /* @__PURE__ */ t("img", {
|
|
86
|
+
src: i,
|
|
87
|
+
alt: a ?? r,
|
|
88
|
+
width: s,
|
|
89
|
+
height: s,
|
|
90
90
|
className: "size-full rounded-sm object-contain"
|
|
91
91
|
}) : /* @__PURE__ */ t(o, {
|
|
92
|
-
value:
|
|
93
|
-
cells:
|
|
94
|
-
title:
|
|
92
|
+
value: r,
|
|
93
|
+
cells: c,
|
|
94
|
+
title: a
|
|
95
95
|
})
|
|
96
|
-
})
|
|
96
|
+
}), !i && l && /* @__PURE__ */ t("div", {
|
|
97
|
+
className: "max-w-48 text-center text-xs text-muted-foreground",
|
|
98
|
+
children: l
|
|
99
|
+
})]
|
|
97
100
|
});
|
|
98
101
|
}
|
|
99
102
|
//#endregion
|
|
@@ -31,7 +31,7 @@ export type InfoCardRenderContext = {
|
|
|
31
31
|
content?: React.ReactNode;
|
|
32
32
|
footer?: React.ReactNode;
|
|
33
33
|
};
|
|
34
|
-
export type InfoCardProps = Omit<React.ComponentProps<typeof Card>, "title" | "content" | "size"> & InfoCardRenderContext & {
|
|
34
|
+
export type InfoCardProps = Omit<React.ComponentProps<typeof Card>, "title" | "content" | "size" | "orientation"> & InfoCardRenderContext & {
|
|
35
35
|
orientation?: InfoCardOrientation;
|
|
36
36
|
variant?: InfoCardVariant;
|
|
37
37
|
size?: InfoCardSize;
|
|
@@ -12,7 +12,7 @@ export type StatusLegendItem = {
|
|
|
12
12
|
hidden?: boolean;
|
|
13
13
|
className?: string;
|
|
14
14
|
};
|
|
15
|
-
export type StatusLegendProps = React.ComponentProps<typeof Card> & {
|
|
15
|
+
export type StatusLegendProps = Omit<React.ComponentProps<typeof Card>, "orientation"> & {
|
|
16
16
|
title?: React.ReactNode;
|
|
17
17
|
description?: React.ReactNode;
|
|
18
18
|
actions?: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");var
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime");var a={neutral:`border-border bg-muted text-foreground`,info:`border-sky-200 bg-sky-50 text-sky-700 dark:border-sky-900 dark:bg-sky-950 dark:text-sky-300`,success:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-300`,warning:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-300`,danger:`border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300`},o={sm:`h-6 px-2 text-xs`,default:`h-7 px-2.5 text-sm`,lg:`h-8 px-3 text-sm`};function s({tone:e=`neutral`,size:n=`default`,removable:s,selected:c,onRemove:l,removeLabel:u=`Remove tag`,className:d,children:f,onKeyDown:p,...m}){let h=e=>{t.stopInteractivePropagation(e),l?.()};return(0,i.jsxs)(`span`,{"data-slot":`tag`,"data-tone":e,"data-selected":c?`true`:void 0,tabIndex:s?0:m.tabIndex,className:t.cn(`inline-flex items-center gap-1.5 rounded-full border font-medium transition-colors outline-none focus-visible:ring-3 focus-visible:ring-ring/35`,a[e],o[n],c&&`ring-2 ring-ring ring-offset-1`,d),onKeyDown:e=>{s&&(e.key===`Backspace`||e.key===`Delete`)&&(e.preventDefault(),l?.()),p?.(e)},...m,children:[(0,i.jsx)(`span`,{children:f}),s&&(0,i.jsx)(`button`,{type:`button`,"aria-label":u,className:`-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full opacity-80 transition hover:bg-black/10 hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current/35 dark:hover:bg-white/10`,onClick:h,onMouseDown:t.stopInteractivePropagation,onDoubleClick:t.stopInteractivePropagation,children:(0,i.jsx)(r.XIcon,{className:`size-3`})})]})}function c(e){return(0,i.jsx)(s,{...e})}function l({gap:e=`default`,className:n,...r}){return(0,i.jsx)(`div`,{"data-slot":`tag-group`,className:t.cn(`flex flex-wrap items-center`,e===`sm`&&`gap-1`,e==="default"&&`gap-2`,e===`lg`&&`gap-3`,n),...r})}exports.Chip=c,exports.Tag=s,exports.TagGroup=l;
|
|
@@ -7,11 +7,12 @@ export type TagProps = React.ComponentProps<"span"> & {
|
|
|
7
7
|
removable?: boolean;
|
|
8
8
|
selected?: boolean;
|
|
9
9
|
onRemove?: () => void;
|
|
10
|
+
removeLabel?: string;
|
|
10
11
|
};
|
|
11
12
|
export type TagGroupProps = React.ComponentProps<"div"> & {
|
|
12
13
|
gap?: "sm" | "default" | "lg";
|
|
13
14
|
};
|
|
14
|
-
declare function Tag({ tone, size, removable, selected, onRemove, className, children, ...props }: TagProps): React.JSX.Element;
|
|
15
|
+
declare function Tag({ tone, size, removable, selected, onRemove, removeLabel, className, children, onKeyDown, ...props }: TagProps): React.JSX.Element;
|
|
15
16
|
declare function Chip(props: TagProps): React.JSX.Element;
|
|
16
17
|
declare function TagGroup({ gap, className, ...props }: TagGroupProps): React.JSX.Element;
|
|
17
18
|
export { Chip, Tag, TagGroup };
|
|
@@ -1,47 +1,53 @@
|
|
|
1
1
|
import { cn as e, stopInteractivePropagation as t } from "../../lib/utils.js";
|
|
2
2
|
import "react";
|
|
3
|
-
import {
|
|
3
|
+
import { XIcon as n } from "lucide-react";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
5
|
//#region src/components/display/tag.tsx
|
|
5
|
-
var
|
|
6
|
+
var a = {
|
|
6
7
|
neutral: "border-border bg-muted text-foreground",
|
|
7
8
|
info: "border-sky-200 bg-sky-50 text-sky-700 dark:border-sky-900 dark:bg-sky-950 dark:text-sky-300",
|
|
8
9
|
success: "border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-300",
|
|
9
10
|
warning: "border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-300",
|
|
10
11
|
danger: "border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300"
|
|
11
|
-
},
|
|
12
|
+
}, o = {
|
|
12
13
|
sm: "h-6 px-2 text-xs",
|
|
13
14
|
default: "h-7 px-2.5 text-sm",
|
|
14
15
|
lg: "h-8 px-3 text-sm"
|
|
15
16
|
};
|
|
16
|
-
function
|
|
17
|
-
|
|
17
|
+
function s({ tone: s = "neutral", size: c = "default", removable: l, selected: u, onRemove: d, removeLabel: f = "Remove tag", className: p, children: m, onKeyDown: h, ...g }) {
|
|
18
|
+
let _ = (e) => {
|
|
19
|
+
t(e), d?.();
|
|
20
|
+
};
|
|
21
|
+
return /* @__PURE__ */ i("span", {
|
|
18
22
|
"data-slot": "tag",
|
|
19
|
-
"data-tone":
|
|
20
|
-
"data-selected":
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
"data-tone": s,
|
|
24
|
+
"data-selected": u ? "true" : void 0,
|
|
25
|
+
tabIndex: l ? 0 : g.tabIndex,
|
|
26
|
+
className: e("inline-flex items-center gap-1.5 rounded-full border font-medium transition-colors outline-none focus-visible:ring-3 focus-visible:ring-ring/35", a[s], o[c], u && "ring-2 ring-ring ring-offset-1", p),
|
|
27
|
+
onKeyDown: (e) => {
|
|
28
|
+
l && (e.key === "Backspace" || e.key === "Delete") && (e.preventDefault(), d?.()), h?.(e);
|
|
29
|
+
},
|
|
30
|
+
...g,
|
|
31
|
+
children: [/* @__PURE__ */ r("span", { children: m }), l && /* @__PURE__ */ r("button", {
|
|
24
32
|
type: "button",
|
|
25
|
-
"aria-label":
|
|
26
|
-
className: "-mr-1 inline-flex size-4 items-center justify-center rounded-full hover:bg-black/10 dark:hover:bg-white/10",
|
|
27
|
-
onClick:
|
|
28
|
-
t(e), u?.();
|
|
29
|
-
},
|
|
33
|
+
"aria-label": f,
|
|
34
|
+
className: "-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full opacity-80 transition hover:bg-black/10 hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current/35 dark:hover:bg-white/10",
|
|
35
|
+
onClick: _,
|
|
30
36
|
onMouseDown: t,
|
|
31
37
|
onDoubleClick: t,
|
|
32
|
-
children: "
|
|
38
|
+
children: /* @__PURE__ */ r(n, { className: "size-3" })
|
|
33
39
|
})]
|
|
34
40
|
});
|
|
35
41
|
}
|
|
36
|
-
function
|
|
37
|
-
return /* @__PURE__ */
|
|
42
|
+
function c(e) {
|
|
43
|
+
return /* @__PURE__ */ r(s, { ...e });
|
|
38
44
|
}
|
|
39
|
-
function
|
|
40
|
-
return /* @__PURE__ */
|
|
45
|
+
function l({ gap: t = "default", className: n, ...i }) {
|
|
46
|
+
return /* @__PURE__ */ r("div", {
|
|
41
47
|
"data-slot": "tag-group",
|
|
42
|
-
className: e("flex flex-wrap items-center", t === "sm" && "gap-1", t === "default" && "gap-2", t === "lg" && "gap-3",
|
|
48
|
+
className: e("flex flex-wrap items-center", t === "sm" && "gap-1", t === "default" && "gap-2", t === "lg" && "gap-3", n),
|
|
43
49
|
...i
|
|
44
50
|
});
|
|
45
51
|
}
|
|
46
52
|
//#endregion
|
|
47
|
-
export {
|
|
53
|
+
export { c as Chip, s as Tag, l as TagGroup };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime");function a({items:e,defaultExpandedKeys:r=[],expandedKeys:a,onExpandedKeysChange:s,selectedKey:c,onSelect:l,className:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime");function a({items:e,defaultExpandedKeys:r=[],expandedKeys:a,onExpandedKeysChange:s,selectedKey:c,onSelect:l,checkedKeys:d,defaultCheckedKeys:f=[],onCheckedKeysChange:p,checkable:m=!1,searchQuery:h,onLoadChildren:g,className:_,...v}){let[y,b]=n.useState(r),[x,S]=n.useState(f),C=a??y,w=d??x,T=h?.trim().toLowerCase(),E=n.useCallback(e=>{a===void 0&&b(e),s?.(e)},[a,s]),D=(e,t)=>{let n=t?[...new Set([...w,e])]:w.filter(t=>t!==e);d===void 0&&S(n),p?.(n)},O=n.useCallback(e=>{E(C.includes(e)?C.filter(t=>t!==e):[...C,e])},[C,E]),k=n.useMemo(()=>o(e,C,T),[e,C,T]);return(0,i.jsx)(`div`,{"data-slot":`tree-view`,role:`tree`,className:t.cn(`grid gap-1 text-sm`,_),onKeyDown:e=>{let t=e.target.dataset.treeNodeKey;if(!t)return;let n=k.indexOf(t),r=t=>{if(!t)return;let n=t.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`);e.currentTarget.querySelector(`[data-tree-node-key="${n}"]`)?.focus()};e.key===`ArrowDown`?(e.preventDefault(),r(k[Math.min(n+1,k.length-1)])):e.key===`ArrowUp`?(e.preventDefault(),r(k[Math.max(n-1,0)])):e.key===`ArrowRight`?(e.preventDefault(),C.includes(t)||O(t)):e.key===`ArrowLeft`&&(e.preventDefault(),C.includes(t)&&O(t)),v.onKeyDown?.(e)},...v,children:e.map(e=>(0,i.jsx)(u,{item:e,level:1,expandedKeys:C,selectedKey:c,onToggle:O,onSelect:l,checkedKeys:w,onCheckedChange:D,checkable:m,searchQuery:T,onLoadChildren:g},e.key))})}function o(e,t,n){return e.flatMap(e=>c(e,n)?[e.key,...e.children&&t.includes(e.key)?o(e.children,t,n):[]]:[])}function s(e){return e.searchText??(typeof e.label==`string`?e.label:e.key)}function c(e,t){return t?s(e).toLowerCase().includes(t)||!!e.children?.some(e=>c(e,t)):!0}function l(e,t){if(!t||typeof e!=`string`)return e;let n=e.toLowerCase().indexOf(t);return n<0?e:(0,i.jsxs)(i.Fragment,{children:[e.slice(0,n),(0,i.jsx)(`mark`,{className:`rounded bg-primary/15 px-0.5 text-foreground`,children:e.slice(n,n+t.length)}),e.slice(n+t.length)]})}function u({item:e,level:n,expandedKeys:a,selectedKey:o,onToggle:d,onSelect:f,checkedKeys:p,onCheckedChange:m,checkable:h,searchQuery:g,onLoadChildren:_}){if(!c(e,g))return null;let v=!!e.children?.length||!!_,y=a.includes(e.key),b=o===e.key,x=p.includes(e.key);return(0,i.jsxs)(`div`,{"data-slot":`tree-node`,role:`treeitem`,"aria-expanded":v?y:void 0,"aria-selected":b||void 0,children:[(0,i.jsxs)(`div`,{className:t.cn(`flex items-center gap-1 rounded-md px-2 py-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,b&&`bg-muted text-foreground`,e.disabled&&`pointer-events-none opacity-50`),style:{paddingLeft:`${n*.75}rem`},children:[(0,i.jsx)(`button`,{type:`button`,"aria-label":y?`Collapse`:`Expand`,className:t.cn(`flex size-5 items-center justify-center rounded-sm`,!v&&`invisible`),onClick:()=>{!y&&!e.children?.length&&_?.(e),d(e.key)},children:(0,i.jsx)(r.ChevronRightIcon,{className:t.cn(`size-4 transition-transform`,y&&`rotate-90`)})}),h&&(0,i.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border-border accent-primary`,checked:x,disabled:e.disabled,"aria-label":`Select ${s(e)}`,onChange:t=>m(e.key,t.currentTarget.checked)}),e.icon,(0,i.jsx)(`button`,{type:`button`,"data-tree-node-key":e.key,className:`min-w-0 flex-1 truncate rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,disabled:e.disabled,onClick:()=>f?.(e),children:l(e.label,g)}),e.loading?(0,i.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Loading...`}):e.extra]}),v&&y&&(0,i.jsx)(`div`,{role:`group`,className:`grid gap-1`,children:e.children?.map(e=>(0,i.jsx)(u,{item:e,level:n+1,expandedKeys:a,selectedKey:o,onToggle:d,onSelect:f,checkedKeys:p,onCheckedChange:m,checkable:h,searchQuery:g,onLoadChildren:_},e.key))})]})}exports.TreeView=a;
|
|
@@ -2,9 +2,11 @@ import * as React from "react";
|
|
|
2
2
|
export type TreeViewItem = {
|
|
3
3
|
key: string;
|
|
4
4
|
label: React.ReactNode;
|
|
5
|
+
searchText?: string;
|
|
5
6
|
icon?: React.ReactNode;
|
|
6
7
|
extra?: React.ReactNode;
|
|
7
8
|
children?: TreeViewItem[];
|
|
9
|
+
loading?: boolean;
|
|
8
10
|
disabled?: boolean;
|
|
9
11
|
};
|
|
10
12
|
export type TreeViewProps = Omit<React.ComponentProps<"div">, "onSelect"> & {
|
|
@@ -14,6 +16,12 @@ export type TreeViewProps = Omit<React.ComponentProps<"div">, "onSelect"> & {
|
|
|
14
16
|
onExpandedKeysChange?: (keys: string[]) => void;
|
|
15
17
|
selectedKey?: string;
|
|
16
18
|
onSelect?: (item: TreeViewItem) => void;
|
|
19
|
+
checkedKeys?: string[];
|
|
20
|
+
defaultCheckedKeys?: string[];
|
|
21
|
+
onCheckedKeysChange?: (keys: string[]) => void;
|
|
22
|
+
checkable?: boolean;
|
|
23
|
+
searchQuery?: string;
|
|
24
|
+
onLoadChildren?: (item: TreeViewItem) => void | Promise<void>;
|
|
17
25
|
};
|
|
18
|
-
declare function TreeView({ items, defaultExpandedKeys, expandedKeys, onExpandedKeysChange, selectedKey, onSelect, className, ...props }: TreeViewProps): React.JSX.Element;
|
|
26
|
+
declare function TreeView({ items, defaultExpandedKeys, expandedKeys, onExpandedKeysChange, selectedKey, onSelect, checkedKeys, defaultCheckedKeys, onCheckedKeysChange, checkable, searchQuery, onLoadChildren, className, ...props }: TreeViewProps): React.JSX.Element;
|
|
19
27
|
export { TreeView };
|