tembro 2.0.4 → 2.0.5
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/actions/action-menu.cjs +1 -1
- package/dist/components/actions/action-menu.d.ts +13 -1
- package/dist/components/actions/action-menu.js +87 -61
- package/dist/components/actions/button-group.cjs +1 -1
- package/dist/components/actions/button-group.d.ts +9 -1
- package/dist/components/actions/button-group.js +58 -14
- package/dist/components/actions/copy-button.cjs +1 -1
- package/dist/components/actions/copy-button.d.ts +2 -1
- package/dist/components/actions/copy-button.js +13 -11
- package/dist/components/calendar/calendar.cjs +1 -1
- package/dist/components/calendar/calendar.d.ts +14 -1
- package/dist/components/calendar/calendar.js +207 -128
- package/dist/components/calendar/date-picker.cjs +1 -1
- package/dist/components/calendar/date-picker.d.ts +3 -1
- package/dist/components/calendar/date-picker.js +57 -27
- package/dist/components/calendar/date-range-picker.cjs +1 -1
- package/dist/components/calendar/date-range-picker.d.ts +10 -1
- package/dist/components/calendar/date-range-picker.js +149 -64
- package/dist/components/data-table/data-table-toolbar.cjs +1 -1
- package/dist/components/data-table/data-table-toolbar.d.ts +5 -1
- package/dist/components/data-table/data-table-toolbar.js +36 -23
- package/dist/components/data-table/data-table.cjs +1 -1
- package/dist/components/data-table/data-table.d.ts +6 -4
- package/dist/components/data-table/data-table.js +87 -79
- package/dist/components/data-table/demo.cjs +1 -1
- package/dist/components/data-table/demo.js +3 -13
- package/dist/components/data-table/index.cjs +1 -1
- package/dist/components/data-table/index.js +5 -5
- package/dist/components/data-table/public.cjs +1 -1
- package/dist/components/data-table/public.d.ts +1 -6
- package/dist/components/data-table/public.js +7 -12
- package/dist/components/display/activity-feed.cjs +1 -1
- package/dist/components/display/activity-feed.d.ts +12 -1
- package/dist/components/display/activity-feed.js +69 -47
- package/dist/components/display/carousel.cjs +1 -1
- package/dist/components/display/carousel.d.ts +10 -1
- package/dist/components/display/carousel.js +68 -23
- package/dist/components/display/code-block.cjs +2 -1
- package/dist/components/display/code-block.d.ts +3 -1
- package/dist/components/display/code-block.js +33 -19
- package/dist/components/display/comparison-card.cjs +1 -1
- package/dist/components/display/comparison-card.d.ts +3 -3
- package/dist/components/display/comparison-card.js +14 -38
- package/dist/components/display/data-state.cjs +1 -1
- package/dist/components/display/data-state.d.ts +12 -2
- package/dist/components/display/data-state.js +80 -42
- package/dist/components/display/demo.cjs +1 -1
- package/dist/components/display/demo.js +1 -5
- package/dist/components/display/index.cjs +1 -1
- package/dist/components/display/index.d.ts +0 -3
- package/dist/components/display/index.js +21 -24
- package/dist/components/feedback/alert.cjs +1 -1
- package/dist/components/feedback/alert.d.ts +6 -1
- package/dist/components/feedback/alert.js +49 -19
- package/dist/components/feedback/index.cjs +1 -1
- package/dist/components/feedback/index.d.ts +0 -2
- package/dist/components/feedback/index.js +3 -5
- package/dist/components/filters/demo.cjs +1 -1
- package/dist/components/filters/demo.js +1 -5
- package/dist/components/filters/filter-bar.cjs +1 -1
- package/dist/components/filters/filter-bar.d.ts +15 -1
- package/dist/components/filters/filter-bar.js +94 -50
- package/dist/components/filters/index.cjs +1 -1
- package/dist/components/filters/index.d.ts +0 -1
- package/dist/components/filters/index.js +3 -4
- package/dist/components/form/form-field-shell.cjs +1 -1
- package/dist/components/form/form-field-shell.d.ts +17 -3
- package/dist/components/form/form-field-shell.js +54 -40
- package/dist/components/form/form-input.cjs +1 -1
- package/dist/components/form/form-input.js +278 -217
- package/dist/components/form/form-select.cjs +1 -1
- package/dist/components/form/form-select.js +47 -33
- package/dist/components/form/form-switch.cjs +1 -1
- package/dist/components/form/form-switch.js +79 -66
- package/dist/components/form/form-textarea.cjs +1 -1
- package/dist/components/form/form-textarea.js +59 -48
- package/dist/components/form/index.cjs +1 -1
- package/dist/components/form/index.js +14 -14
- package/dist/components/form/public.cjs +1 -1
- package/dist/components/form/public.d.ts +0 -8
- package/dist/components/form/public.js +7 -15
- package/dist/components/inputs/async-select.cjs +1 -1
- package/dist/components/inputs/async-select.d.ts +11 -2
- package/dist/components/inputs/async-select.js +278 -270
- package/dist/components/inputs/combobox.cjs +1 -1
- package/dist/components/inputs/combobox.d.ts +5 -1
- package/dist/components/inputs/combobox.js +52 -19
- package/dist/components/inputs/simple-select.cjs +1 -1
- package/dist/components/inputs/simple-select.d.ts +2 -1
- package/dist/components/inputs/simple-select.js +32 -16
- package/dist/components/layout/app-sidebar.cjs +1 -1
- package/dist/components/layout/app-sidebar.d.ts +4 -1
- package/dist/components/layout/app-sidebar.js +152 -132
- package/dist/components/layout/breadcrumbs.cjs +1 -1
- package/dist/components/layout/breadcrumbs.d.ts +2 -1
- package/dist/components/layout/breadcrumbs.js +10 -10
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +3 -3
- package/dist/components/layout/stat-card.cjs +1 -1
- package/dist/components/layout/stat-card.d.ts +8 -1
- package/dist/components/layout/stat-card.js +33 -11
- package/dist/components/modern/calendar-scheduler.cjs +1 -1
- package/dist/components/modern/calendar-scheduler.d.ts +2 -1
- package/dist/components/modern/calendar-scheduler.js +21 -12
- package/dist/components/overlay/alert-dialog.cjs +1 -1
- package/dist/components/overlay/alert-dialog.d.ts +15 -1
- package/dist/components/overlay/alert-dialog.js +102 -27
- package/dist/components/overlay/drawer.cjs +1 -1
- package/dist/components/overlay/drawer.d.ts +4 -1
- package/dist/components/overlay/drawer.js +20 -17
- package/dist/components/patterns/index.cjs +1 -1
- package/dist/components/patterns/index.d.ts +0 -1
- package/dist/components/patterns/index.js +1 -2
- package/dist/components/patterns/public.cjs +1 -1
- package/dist/components/patterns/public.d.ts +0 -1
- package/dist/components/patterns/public.js +1 -2
- package/dist/components/ui/button/index.cjs +1 -1
- package/dist/components/ui/button/index.d.ts +3 -1
- package/dist/components/ui/button/index.js +7 -5
- package/dist/components/ui/checkbox/index.cjs +1 -1
- package/dist/components/ui/checkbox/index.d.ts +8 -0
- package/dist/components/ui/checkbox/index.js +16 -14
- package/dist/components/ui/collapse/index.cjs +1 -1
- package/dist/components/ui/collapse/index.d.ts +17 -3
- package/dist/components/ui/collapse/index.js +88 -33
- package/dist/components/ui/dialog/index.cjs +1 -1
- package/dist/components/ui/dialog/index.d.ts +2 -1
- package/dist/components/ui/dialog/index.js +6 -4
- package/dist/components/ui/dropdown-menu/index.cjs +1 -1
- package/dist/components/ui/dropdown-menu/index.d.ts +9 -4
- package/dist/components/ui/dropdown-menu/index.js +87 -62
- package/dist/index.cjs +1 -1
- package/dist/index.js +137 -156
- package/dist/public-component-surface.cjs +1 -1
- package/dist/public-component-surface.js +0 -15
- package/dist/showcase/component-api-schema.cjs +1 -1
- package/dist/showcase/component-api-schema.js +2 -2
- package/dist/showcase/create-demo.cjs +20 -34
- package/dist/showcase/create-demo.js +15 -16
- package/dist/showcase/fallback.cjs +3 -3
- package/dist/showcase/fallback.js +275 -265
- package/dist/showcase/premium/accordion/showcase.cjs +1 -1
- package/dist/showcase/premium/accordion/showcase.js +36 -5
- package/dist/showcase/premium/action-menu/showcase.cjs +1 -1
- package/dist/showcase/premium/action-menu/showcase.js +26 -8
- package/dist/showcase/premium/activity-feed/showcase.cjs +1 -1
- package/dist/showcase/premium/activity-feed/showcase.js +60 -36
- package/dist/showcase/premium/alert/showcase.cjs +1 -1
- package/dist/showcase/premium/alert/showcase.js +41 -18
- package/dist/showcase/premium/alert-dialog/showcase.cjs +1 -1
- package/dist/showcase/premium/alert-dialog/showcase.js +35 -7
- package/dist/showcase/premium/async-multi-select/mock.cjs +4 -3
- package/dist/showcase/premium/async-multi-select/mock.js +5 -5
- package/dist/showcase/premium/async-multi-select/showcase.cjs +1 -1
- package/dist/showcase/premium/async-multi-select/showcase.js +4 -3
- package/dist/showcase/premium/async-select/mock.cjs +1 -1
- package/dist/showcase/premium/async-select/mock.js +1 -1
- package/dist/showcase/premium/async-select/showcase.cjs +1 -1
- package/dist/showcase/premium/async-select/showcase.js +69 -22
- package/dist/showcase/premium/button/showcase.cjs +1 -1
- package/dist/showcase/premium/button/showcase.js +49 -3
- package/dist/showcase/premium/button-group/showcase.cjs +1 -1
- package/dist/showcase/premium/button-group/showcase.js +53 -29
- package/dist/showcase/premium/calendar/showcase.cjs +1 -1
- package/dist/showcase/premium/calendar/showcase.js +7 -2
- package/dist/showcase/premium/carousel/showcase.cjs +1 -1
- package/dist/showcase/premium/carousel/showcase.js +95 -47
- package/dist/showcase/premium/checkbox/showcase.cjs +1 -1
- package/dist/showcase/premium/checkbox/showcase.js +143 -67
- package/dist/showcase/premium/clearable-input/mock.cjs +4 -3
- package/dist/showcase/premium/clearable-input/mock.js +3 -2
- package/dist/showcase/premium/clearable-input/showcase.cjs +1 -1
- package/dist/showcase/premium/clearable-input/showcase.js +8 -2
- package/dist/showcase/premium/collapse/showcase.cjs +1 -1
- package/dist/showcase/premium/collapse/showcase.js +7 -0
- package/dist/showcase/premium/combobox/showcase.cjs +1 -1
- package/dist/showcase/premium/combobox/showcase.d.ts +2 -1
- package/dist/showcase/premium/combobox/showcase.js +56 -47
- package/dist/showcase/premium/data-table/showcase.cjs +1 -1
- package/dist/showcase/premium/data-table/showcase.js +138 -46
- package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
- package/dist/showcase/premium/data-table-parts/showcase.js +13 -13
- package/dist/showcase/premium/date-input/mock.cjs +1 -1
- package/dist/showcase/premium/date-input/mock.js +1 -1
- package/dist/showcase/premium/date-range-picker/showcase.cjs +1 -1
- package/dist/showcase/premium/date-range-picker/showcase.js +32 -1
- package/dist/showcase/premium/dropdown-menu/showcase.cjs +1 -1
- package/dist/showcase/premium/dropdown-menu/showcase.js +88 -54
- package/dist/showcase/premium/form-wrapper/mock.cjs +41 -15
- package/dist/showcase/premium/form-wrapper/mock.js +4 -4
- package/dist/showcase/premium/form-wrapper/showcase.cjs +1 -1
- package/dist/showcase/premium/form-wrapper/showcase.js +77 -28
- package/dist/showcase/premium/index.cjs +1 -1
- package/dist/showcase/premium/index.js +426 -467
- package/dist/showcase/premium/input/mock.cjs +4 -1
- package/dist/showcase/premium/input/mock.js +1 -1
- package/dist/showcase/premium/masked-input/mock.cjs +1 -1
- package/dist/showcase/premium/masked-input/mock.js +1 -1
- package/dist/showcase/premium/money-input/mock.cjs +1 -1
- package/dist/showcase/premium/money-input/mock.js +1 -1
- package/dist/showcase/premium/number-input/mock.cjs +1 -1
- package/dist/showcase/premium/number-input/mock.js +1 -1
- package/dist/showcase/premium/phone-input/mock.cjs +1 -1
- package/dist/showcase/premium/phone-input/mock.js +1 -1
- package/dist/showcase/premium/quantity-input/mock.cjs +1 -1
- package/dist/showcase/premium/quantity-input/mock.js +1 -1
- package/dist/showcase/premium/simple-select/mock.cjs +1 -1
- package/dist/showcase/premium/simple-select/mock.js +1 -1
- package/dist/showcase/premium/simple-select/showcase.cjs +1 -1
- package/dist/showcase/premium/simple-select/showcase.js +4 -2
- package/dist/showcase/preview-catalog.cjs +7 -10
- package/dist/showcase/preview-catalog.js +7 -7
- package/dist/showcase/registry-quality.cjs +1 -1
- package/dist/showcase/registry-quality.js +0 -23
- package/dist/showcase/registry-specific.cjs +1 -1
- package/dist/showcase/registry-specific.js +149 -383
- package/dist/showcase/render-registry-preview.cjs +1 -1
- package/dist/showcase/render-registry-preview.js +163 -195
- package/dist/showcase/site-data.cjs +1 -1
- package/dist/showcase/site-data.js +197 -941
- package/dist/showcase/supplemental.cjs +1 -1
- package/dist/showcase/supplemental.js +1 -1
- package/dist/showcase/tembro-registry.json.cjs +1 -1
- package/dist/showcase/tembro-registry.json.js +33 -51
- package/package.json +1 -1
- package/packages/cli/dist/index.cjs +2 -2
- package/packages/cli/vendor/src/components/actions/action-menu.tsx +149 -83
- package/packages/cli/vendor/src/components/actions/button-group.tsx +141 -33
- package/packages/cli/vendor/src/components/actions/copy-button.tsx +21 -16
- package/packages/cli/vendor/src/components/calendar/calendar.tsx +223 -88
- package/packages/cli/vendor/src/components/calendar/date-picker.tsx +73 -29
- package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +154 -49
- package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +71 -50
- package/packages/cli/vendor/src/components/data-table/data-table.tsx +65 -53
- package/packages/cli/vendor/src/components/data-table/demo.tsx +2 -12
- package/packages/cli/vendor/src/components/data-table/public.ts +1 -6
- package/packages/cli/vendor/src/components/display/activity-feed.tsx +98 -40
- package/packages/cli/vendor/src/components/display/carousel.tsx +88 -2
- package/packages/cli/vendor/src/components/display/code-block.tsx +58 -26
- package/packages/cli/vendor/src/components/display/comparison-card.tsx +15 -41
- package/packages/cli/vendor/src/components/display/data-state.tsx +119 -50
- package/packages/cli/vendor/src/components/display/demo.tsx +0 -4
- package/packages/cli/vendor/src/components/display/index.ts +0 -3
- package/packages/cli/vendor/src/components/feedback/alert.tsx +86 -28
- package/packages/cli/vendor/src/components/feedback/index.ts +0 -2
- package/packages/cli/vendor/src/components/filters/demo.tsx +0 -1
- package/packages/cli/vendor/src/components/filters/filter-bar.tsx +126 -54
- package/packages/cli/vendor/src/components/filters/index.ts +0 -1
- package/packages/cli/vendor/src/components/form/form-field-shell.tsx +72 -34
- package/packages/cli/vendor/src/components/form/form-input.tsx +118 -11
- package/packages/cli/vendor/src/components/form/form-select.tsx +26 -3
- package/packages/cli/vendor/src/components/form/form-switch.tsx +77 -58
- package/packages/cli/vendor/src/components/form/form-textarea.tsx +65 -51
- package/packages/cli/vendor/src/components/form/public.ts +0 -9
- package/packages/cli/vendor/src/components/inputs/async-select.tsx +126 -82
- package/packages/cli/vendor/src/components/inputs/combobox.tsx +66 -9
- package/packages/cli/vendor/src/components/inputs/simple-select.tsx +52 -24
- package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +42 -1
- package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +17 -8
- package/packages/cli/vendor/src/components/layout/stat-card.tsx +63 -23
- package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +32 -22
- package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +148 -24
- package/packages/cli/vendor/src/components/overlay/drawer.tsx +42 -30
- package/packages/cli/vendor/src/components/patterns/index.ts +0 -1
- package/packages/cli/vendor/src/components/patterns/public.ts +0 -1
- package/packages/cli/vendor/src/components/ui/button/index.tsx +27 -17
- package/packages/cli/vendor/src/components/ui/checkbox/index.tsx +22 -5
- package/packages/cli/vendor/src/components/ui/collapse/index.tsx +97 -16
- package/packages/cli/vendor/src/components/ui/dialog/index.tsx +12 -8
- package/packages/cli/vendor/src/components/ui/dropdown-menu/index.tsx +82 -28
- package/packages/cli/vendor/src/public-component-surface.ts +0 -3
- package/packages/cli/vendor/src/showcase/component-api-schema.ts +2 -2
- package/packages/cli/vendor/src/showcase/create-demo.tsx +31 -46
- package/packages/cli/vendor/src/showcase/fallback.tsx +80 -99
- package/packages/cli/vendor/src/showcase/premium/accordion/showcase.tsx +32 -2
- package/packages/cli/vendor/src/showcase/premium/action-menu/showcase.tsx +12 -3
- package/packages/cli/vendor/src/showcase/premium/activity-feed/showcase.tsx +15 -2
- package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +32 -17
- package/packages/cli/vendor/src/showcase/premium/alert-dialog/showcase.tsx +28 -3
- package/packages/cli/vendor/src/showcase/premium/async-multi-select/mock.ts +6 -5
- package/packages/cli/vendor/src/showcase/premium/async-multi-select/showcase.tsx +5 -4
- package/packages/cli/vendor/src/showcase/premium/async-select/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/async-select/showcase.tsx +36 -0
- package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +26 -5
- package/packages/cli/vendor/src/showcase/premium/button-group/showcase.tsx +20 -3
- package/packages/cli/vendor/src/showcase/premium/calendar/showcase.tsx +5 -0
- package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +33 -5
- package/packages/cli/vendor/src/showcase/premium/checkbox/showcase.tsx +46 -3
- package/packages/cli/vendor/src/showcase/premium/clearable-input/mock.ts +5 -3
- package/packages/cli/vendor/src/showcase/premium/clearable-input/showcase.tsx +5 -2
- package/packages/cli/vendor/src/showcase/premium/collapse/showcase.tsx +4 -0
- package/packages/cli/vendor/src/showcase/premium/combobox/showcase.tsx +8 -0
- package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +77 -27
- package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +11 -11
- package/packages/cli/vendor/src/showcase/premium/date-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/date-range-picker/showcase.tsx +7 -0
- package/packages/cli/vendor/src/showcase/premium/dropdown-menu/showcase.tsx +46 -3
- package/packages/cli/vendor/src/showcase/premium/form-wrapper/mock.ts +70 -44
- package/packages/cli/vendor/src/showcase/premium/form-wrapper/showcase.tsx +129 -12
- package/packages/cli/vendor/src/showcase/premium/index.ts +7 -24
- package/packages/cli/vendor/src/showcase/premium/input/mock.ts +2 -2
- package/packages/cli/vendor/src/showcase/premium/masked-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/money-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/number-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/phone-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/quantity-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/simple-select/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/simple-select/showcase.tsx +2 -1
- package/packages/cli/vendor/src/showcase/preview-catalog.tsx +7 -7
- package/packages/cli/vendor/src/showcase/registry-quality.ts +4 -28
- package/packages/cli/vendor/src/showcase/registry-specific.tsx +3 -178
- package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +18 -51
- package/packages/cli/vendor/src/showcase/site-data.tsx +2443 -2761
- package/packages/cli/vendor/src/showcase/supplemental.tsx +2 -42
- package/packages/cli/vendor/src/showcase/tembro-registry.json +11 -58
- package/registry.json +11 -61
- package/dist/components/display/entity-card.cjs +0 -1
- package/dist/components/display/entity-card.d.ts +0 -18
- package/dist/components/display/entity-card.js +0 -61
- package/dist/components/display/entity-header.cjs +0 -1
- package/dist/components/display/entity-header.d.ts +0 -13
- package/dist/components/display/entity-header.js +0 -52
- package/dist/components/display/file-card.cjs +0 -1
- package/dist/components/display/file-card.d.ts +0 -14
- package/dist/components/display/file-card.js +0 -59
- package/dist/components/feedback/empty-search-state.cjs +0 -1
- package/dist/components/feedback/empty-search-state.d.ts +0 -11
- package/dist/components/feedback/empty-search-state.js +0 -45
- package/dist/components/feedback/empty-state.cjs +0 -1
- package/dist/components/feedback/empty-state.d.ts +0 -11
- package/dist/components/feedback/empty-state.js +0 -38
- package/dist/components/filters/filter-chips.cjs +0 -1
- package/dist/components/filters/filter-chips.d.ts +0 -18
- package/dist/components/filters/filter-chips.js +0 -61
- package/dist/components/patterns/form-builder-presets.cjs +0 -1
- package/dist/components/patterns/form-builder-presets.d.ts +0 -1
- package/dist/components/patterns/form-builder-presets.js +0 -2
- package/dist/components/patterns/form-builder.cjs +0 -1
- package/dist/components/patterns/form-builder.d.ts +0 -109
- package/dist/components/patterns/form-builder.js +0 -263
- package/dist/showcase/premium/empty-state/index.cjs +0 -1
- package/dist/showcase/premium/empty-state/index.d.ts +0 -2
- package/dist/showcase/premium/empty-state/index.js +0 -3
- package/dist/showcase/premium/empty-state/mock.cjs +0 -14
- package/dist/showcase/premium/empty-state/mock.d.ts +0 -2
- package/dist/showcase/premium/empty-state/mock.js +0 -31
- package/dist/showcase/premium/empty-state/showcase.cjs +0 -1
- package/dist/showcase/premium/empty-state/showcase.d.ts +0 -3
- package/dist/showcase/premium/empty-state/showcase.js +0 -99
- package/dist/showcase/premium/form-builder/index.cjs +0 -1
- package/dist/showcase/premium/form-builder/index.d.ts +0 -2
- package/dist/showcase/premium/form-builder/index.js +0 -3
- package/dist/showcase/premium/form-builder/mock.cjs +0 -57
- package/dist/showcase/premium/form-builder/mock.d.ts +0 -2
- package/dist/showcase/premium/form-builder/mock.js +0 -40
- package/dist/showcase/premium/form-builder/showcase.cjs +0 -1
- package/dist/showcase/premium/form-builder/showcase.d.ts +0 -3
- package/dist/showcase/premium/form-builder/showcase.js +0 -69
- package/packages/cli/vendor/src/components/display/entity-card.tsx +0 -80
- package/packages/cli/vendor/src/components/display/entity-header.tsx +0 -80
- package/packages/cli/vendor/src/components/display/file-card.tsx +0 -61
- package/packages/cli/vendor/src/components/feedback/empty-search-state.tsx +0 -65
- package/packages/cli/vendor/src/components/feedback/empty-state.tsx +0 -56
- package/packages/cli/vendor/src/components/filters/filter-chips.tsx +0 -89
- package/packages/cli/vendor/src/components/patterns/form-builder-presets.ts +0 -13
- package/packages/cli/vendor/src/components/patterns/form-builder.tsx +0 -443
- package/packages/cli/vendor/src/showcase/premium/empty-state/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/empty-state/mock.ts +0 -30
- package/packages/cli/vendor/src/showcase/premium/empty-state/showcase.tsx +0 -65
- package/packages/cli/vendor/src/showcase/premium/form-builder/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/form-builder/mock.ts +0 -79
- package/packages/cli/vendor/src/showcase/premium/form-builder/showcase.tsx +0 -55
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react"
|
|
2
|
-
import { CalendarIcon } from "lucide-react"
|
|
2
|
+
import { CalendarIcon, XIcon } from "lucide-react"
|
|
3
3
|
|
|
4
4
|
import { Calendar, type CalendarDateRange, type CalendarProps } from "@/components/calendar/calendar"
|
|
5
5
|
import { Button } from "@/components/ui/button"
|
|
@@ -10,10 +10,17 @@ import { parseDateKey } from "./date-utils"
|
|
|
10
10
|
export type DateRangePickerValue = CalendarDateRange
|
|
11
11
|
|
|
12
12
|
export type DateRangePickerLabels = CalendarProps["labels"] & {
|
|
13
|
-
placeholder?: string
|
|
14
|
-
apply?: React.ReactNode
|
|
15
|
-
clear?: React.ReactNode
|
|
16
|
-
|
|
13
|
+
placeholder?: string
|
|
14
|
+
apply?: React.ReactNode
|
|
15
|
+
clear?: React.ReactNode
|
|
16
|
+
start?: string
|
|
17
|
+
end?: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type DateRangePickerPreset = {
|
|
21
|
+
label: React.ReactNode
|
|
22
|
+
value: DateRangePickerValue
|
|
23
|
+
}
|
|
17
24
|
|
|
18
25
|
export type DateRangePickerProps = Omit<
|
|
19
26
|
CalendarProps,
|
|
@@ -23,31 +30,41 @@ export type DateRangePickerProps = Omit<
|
|
|
23
30
|
onValueChange?: (value: DateRangePickerValue) => void
|
|
24
31
|
labels?: DateRangePickerLabels
|
|
25
32
|
placeholder?: string
|
|
26
|
-
disabled?: boolean
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
disabled?: boolean
|
|
34
|
+
clearable?: boolean
|
|
35
|
+
formatValue?: (value: string) => React.ReactNode
|
|
36
|
+
closeOnSelect?: boolean
|
|
37
|
+
closeOnPresetSelect?: boolean
|
|
38
|
+
showFooter?: boolean
|
|
39
|
+
presets?: DateRangePickerPreset[]
|
|
40
|
+
triggerClassName?: string
|
|
41
|
+
contentClassName?: string
|
|
42
|
+
}
|
|
33
43
|
|
|
34
|
-
function defaultFormatValue(value: string) {
|
|
35
|
-
const date = parseDateKey(value)
|
|
36
|
-
if (!date) return value
|
|
37
|
-
return new Intl.DateTimeFormat("en-US", { dateStyle: "medium" }).format(date)
|
|
38
|
-
}
|
|
44
|
+
function defaultFormatValue(value: string) {
|
|
45
|
+
const date = parseDateKey(value)
|
|
46
|
+
if (!date) return value
|
|
47
|
+
return new Intl.DateTimeFormat("en-US", { dateStyle: "medium" }).format(date)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function getTextLabel(value: React.ReactNode, fallback: string) {
|
|
51
|
+
return typeof value === "string" ? value : fallback
|
|
52
|
+
}
|
|
39
53
|
|
|
40
54
|
function DateRangePicker({
|
|
41
55
|
className,
|
|
42
56
|
value,
|
|
43
57
|
onValueChange,
|
|
44
|
-
labels,
|
|
45
|
-
placeholder,
|
|
46
|
-
disabled = false,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
58
|
+
labels,
|
|
59
|
+
placeholder,
|
|
60
|
+
disabled = false,
|
|
61
|
+
clearable = true,
|
|
62
|
+
formatValue = defaultFormatValue,
|
|
63
|
+
closeOnSelect = false,
|
|
64
|
+
closeOnPresetSelect = false,
|
|
65
|
+
showFooter = true,
|
|
66
|
+
presets,
|
|
67
|
+
triggerClassName,
|
|
51
68
|
contentClassName,
|
|
52
69
|
numberOfMonths = 2,
|
|
53
70
|
pagedNavigation = true,
|
|
@@ -98,16 +115,44 @@ function DateRangePicker({
|
|
|
98
115
|
setOpen(false)
|
|
99
116
|
}
|
|
100
117
|
|
|
101
|
-
const clearDraftValue = () => {
|
|
102
|
-
const nextValue = {}
|
|
118
|
+
const clearDraftValue = () => {
|
|
119
|
+
const nextValue = {}
|
|
103
120
|
|
|
104
121
|
if (showFooter) {
|
|
105
122
|
setDraftValue(nextValue)
|
|
106
123
|
return
|
|
107
124
|
}
|
|
108
125
|
|
|
109
|
-
onValueChange?.(nextValue)
|
|
110
|
-
}
|
|
126
|
+
onValueChange?.(nextValue)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const resetValue = () => {
|
|
130
|
+
const nextValue = {}
|
|
131
|
+
setDraftValue(nextValue)
|
|
132
|
+
onValueChange?.(nextValue)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const clearValue = (event: React.MouseEvent<HTMLElement>) => {
|
|
136
|
+
event.preventDefault()
|
|
137
|
+
event.stopPropagation()
|
|
138
|
+
resetValue()
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const selectPreset = (presetValue: DateRangePickerValue) => {
|
|
142
|
+
if (showFooter) {
|
|
143
|
+
setDraftValue(presetValue)
|
|
144
|
+
if (closeOnPresetSelect) {
|
|
145
|
+
onValueChange?.(presetValue)
|
|
146
|
+
setOpen(false)
|
|
147
|
+
}
|
|
148
|
+
return
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
onValueChange?.(presetValue)
|
|
152
|
+
if ((closeOnSelect || closeOnPresetSelect) && presetValue.from && presetValue.to) {
|
|
153
|
+
setOpen(false)
|
|
154
|
+
}
|
|
155
|
+
}
|
|
111
156
|
|
|
112
157
|
return (
|
|
113
158
|
<div data-slot="date-range-picker" className={cn("w-full", className)}>
|
|
@@ -118,33 +163,93 @@ function DateRangePicker({
|
|
|
118
163
|
type="button"
|
|
119
164
|
variant="outline"
|
|
120
165
|
disabled={disabled}
|
|
121
|
-
className={cn(
|
|
122
|
-
"min-h-11 w-full justify-start rounded-[var(--aui-control-radius,var(--radius-md))] border-border/80 bg-background/96 text-left font-normal shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))]",
|
|
123
|
-
!hasValue && "text-muted-foreground",
|
|
124
|
-
triggerClassName
|
|
125
|
-
)}
|
|
126
|
-
/>
|
|
127
|
-
}
|
|
128
|
-
>
|
|
129
|
-
<CalendarIcon data-icon="inline-start" />
|
|
130
|
-
|
|
131
|
-
|
|
166
|
+
className={cn(
|
|
167
|
+
"group min-h-11 w-full justify-start gap-3 rounded-[var(--aui-control-radius,var(--radius-md))] border-border/80 bg-background/96 px-3 text-left font-normal shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))]",
|
|
168
|
+
!hasValue && "text-muted-foreground",
|
|
169
|
+
triggerClassName
|
|
170
|
+
)}
|
|
171
|
+
/>
|
|
172
|
+
}
|
|
173
|
+
>
|
|
174
|
+
<CalendarIcon data-icon="inline-start" className={cn(hasValue && "text-primary")} />
|
|
175
|
+
{hasValue ? (
|
|
176
|
+
<span className="grid min-w-0 flex-1 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-2">
|
|
177
|
+
<span className="grid min-w-0 gap-0.5">
|
|
178
|
+
<span className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">{labels?.start ?? "Start"}</span>
|
|
179
|
+
<span className="truncate text-sm font-semibold text-foreground">{from ? formatValue(from) : "..."}</span>
|
|
180
|
+
</span>
|
|
181
|
+
<span className="text-muted-foreground">-</span>
|
|
182
|
+
<span className="grid min-w-0 gap-0.5">
|
|
183
|
+
<span className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">{labels?.end ?? "End"}</span>
|
|
184
|
+
<span className="truncate text-sm font-semibold text-foreground">{to ? formatValue(to) : "..."}</span>
|
|
185
|
+
</span>
|
|
186
|
+
</span>
|
|
187
|
+
) : (
|
|
188
|
+
<span className="grid min-w-0 flex-1 gap-0.5">
|
|
189
|
+
<span className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">Range</span>
|
|
190
|
+
<span className="truncate text-sm">{label}</span>
|
|
191
|
+
</span>
|
|
192
|
+
)}
|
|
193
|
+
{clearable && hasValue ? (
|
|
194
|
+
<span
|
|
195
|
+
role="button"
|
|
196
|
+
tabIndex={0}
|
|
197
|
+
aria-label={getTextLabel(labels?.clear, "Clear date range")}
|
|
198
|
+
className="ml-auto inline-flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] text-muted-foreground opacity-80 transition hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring"
|
|
199
|
+
onClick={clearValue}
|
|
200
|
+
onKeyDown={(event) => {
|
|
201
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
202
|
+
event.preventDefault()
|
|
203
|
+
resetValue()
|
|
204
|
+
}
|
|
205
|
+
}}
|
|
206
|
+
>
|
|
207
|
+
<XIcon className="size-3.5" />
|
|
208
|
+
</span>
|
|
209
|
+
) : null}
|
|
210
|
+
</PopoverTrigger>
|
|
132
211
|
<PopoverContent
|
|
133
212
|
align="start"
|
|
134
213
|
className={cn(
|
|
135
214
|
"w-auto overflow-hidden rounded-[var(--aui-card-radius,var(--radius-lg))] border-border/70 bg-popover p-0 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur",
|
|
136
215
|
contentClassName
|
|
137
216
|
)}
|
|
138
|
-
>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
217
|
+
>
|
|
218
|
+
{presets?.length ? (
|
|
219
|
+
<div className="flex flex-wrap gap-2 border-b border-border/70 bg-muted/20 px-3 py-3">
|
|
220
|
+
{presets.map((preset, index) => (
|
|
221
|
+
<Button
|
|
222
|
+
key={index}
|
|
223
|
+
type="button"
|
|
224
|
+
variant="outline"
|
|
225
|
+
size="sm"
|
|
226
|
+
className="h-7 rounded-full px-3 text-xs"
|
|
227
|
+
onClick={() => selectPreset(preset.value)}
|
|
228
|
+
>
|
|
229
|
+
{preset.label}
|
|
230
|
+
</Button>
|
|
231
|
+
))}
|
|
232
|
+
</div>
|
|
233
|
+
) : null}
|
|
234
|
+
<Calendar
|
|
235
|
+
mode="range"
|
|
236
|
+
range={activeValue}
|
|
237
|
+
onRangeChange={handleRangeChange}
|
|
238
|
+
labels={labels}
|
|
239
|
+
renderSelectionSummary={({ range }) => {
|
|
240
|
+
const fromValue = range?.from ? formatValue(range.from) : null
|
|
241
|
+
const toValue = range?.to ? formatValue(range.to) : null
|
|
242
|
+
|
|
243
|
+
if (fromValue && toValue) return `${fromValue} -> ${toValue}`
|
|
244
|
+
if (fromValue) return `${fromValue} -> ...`
|
|
245
|
+
return "No range selected"
|
|
246
|
+
}}
|
|
247
|
+
numberOfMonths={numberOfMonths}
|
|
248
|
+
pagedNavigation={pagedNavigation}
|
|
249
|
+
showClearShortcut={!showFooter && clearable}
|
|
250
|
+
showSelectionSummary
|
|
251
|
+
{...calendarProps}
|
|
252
|
+
/>
|
|
148
253
|
{showFooter && (
|
|
149
254
|
<div className="flex flex-wrap items-center justify-between gap-3 border-t border-border/70 bg-muted/24 px-4 py-3">
|
|
150
255
|
<div className="min-w-0 text-sm text-muted-foreground">
|
|
@@ -22,46 +22,55 @@ const dataTableToolbarVariants = cva("flex flex-col", {
|
|
|
22
22
|
},
|
|
23
23
|
})
|
|
24
24
|
|
|
25
|
-
export type DataTableToolbarProps = React.ComponentProps<"div"> &
|
|
26
|
-
VariantProps<typeof dataTableToolbarVariants> & {
|
|
27
|
-
title?: React.ReactNode
|
|
28
|
-
description?: React.ReactNode
|
|
29
|
-
search?: React.ReactNode
|
|
30
|
-
filters?: React.ReactNode
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
export type DataTableToolbarProps = React.ComponentProps<"div"> &
|
|
26
|
+
VariantProps<typeof dataTableToolbarVariants> & {
|
|
27
|
+
title?: React.ReactNode
|
|
28
|
+
description?: React.ReactNode
|
|
29
|
+
search?: React.ReactNode
|
|
30
|
+
filters?: React.ReactNode
|
|
31
|
+
summary?: React.ReactNode
|
|
32
|
+
actions?: React.ReactNode
|
|
33
|
+
selectionActions?: React.ReactNode
|
|
34
|
+
selectedCount?: number
|
|
35
|
+
totalCount?: number
|
|
36
|
+
selectedLabel?: (selectedCount: number, totalCount?: number) => React.ReactNode
|
|
37
|
+
titleClassName?: string
|
|
38
|
+
descriptionClassName?: string
|
|
39
|
+
searchClassName?: string
|
|
40
|
+
filtersClassName?: string
|
|
41
|
+
summaryClassName?: string
|
|
42
|
+
actionsClassName?: string
|
|
43
|
+
}
|
|
40
44
|
|
|
41
45
|
function DataTableToolbar({
|
|
42
46
|
className,
|
|
43
47
|
variant,
|
|
44
48
|
density,
|
|
45
49
|
title,
|
|
46
|
-
description,
|
|
47
|
-
search,
|
|
48
|
-
filters,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
description,
|
|
51
|
+
search,
|
|
52
|
+
filters,
|
|
53
|
+
summary,
|
|
54
|
+
actions,
|
|
55
|
+
selectionActions,
|
|
56
|
+
selectedCount = 0,
|
|
57
|
+
totalCount,
|
|
58
|
+
selectedLabel = (selected, total) =>
|
|
59
|
+
total === undefined ? `${selected} selected` : `${selected} of ${total} selected`,
|
|
60
|
+
titleClassName,
|
|
61
|
+
descriptionClassName,
|
|
62
|
+
searchClassName,
|
|
63
|
+
filtersClassName,
|
|
64
|
+
summaryClassName,
|
|
65
|
+
actionsClassName,
|
|
66
|
+
children,
|
|
67
|
+
...props
|
|
68
|
+
}: DataTableToolbarProps) {
|
|
69
|
+
const hasHeading = Boolean(title || description)
|
|
70
|
+
const hasSelection = selectedCount > 0 && Boolean(selectionActions)
|
|
71
|
+
const hasMainControls = Boolean(search || filters || children)
|
|
72
|
+
|
|
73
|
+
return (
|
|
65
74
|
<div
|
|
66
75
|
data-slot="data-table-toolbar"
|
|
67
76
|
data-variant={variant ?? "plain"}
|
|
@@ -69,8 +78,8 @@ function DataTableToolbar({
|
|
|
69
78
|
className={cn(dataTableToolbarVariants({ variant, density }), className)}
|
|
70
79
|
{...props}
|
|
71
80
|
>
|
|
72
|
-
{(hasHeading || actions) && (
|
|
73
|
-
<div className="flex flex-col gap-3
|
|
81
|
+
{(hasHeading || actions) && (
|
|
82
|
+
<div className="flex flex-col gap-3 xl:flex-row xl:items-start xl:justify-between">
|
|
74
83
|
{hasHeading && (
|
|
75
84
|
<div className="grid gap-1">
|
|
76
85
|
{title && <h2 className={cn("text-lg font-semibold tracking-tight text-foreground", titleClassName)}>{title}</h2>}
|
|
@@ -78,24 +87,36 @@ function DataTableToolbar({
|
|
|
78
87
|
</div>
|
|
79
88
|
)}
|
|
80
89
|
|
|
81
|
-
{actions && <div className={cn("flex shrink-0 flex-wrap items-center gap-2", actionsClassName)}>{actions}</div>}
|
|
82
|
-
</div>
|
|
83
|
-
)}
|
|
84
|
-
|
|
85
|
-
{(
|
|
86
|
-
<div className="flex flex-col gap-
|
|
87
|
-
<div className="flex min-w-0 flex-1 flex-col gap-
|
|
88
|
-
{
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
{actions && <div className={cn("flex min-w-0 shrink-0 flex-wrap items-center gap-2 xl:justify-end", actionsClassName)}>{actions}</div>}
|
|
91
|
+
</div>
|
|
92
|
+
)}
|
|
93
|
+
|
|
94
|
+
{(hasMainControls || summary || hasSelection) && (
|
|
95
|
+
<div className="flex flex-col gap-3 xl:flex-row xl:items-start xl:justify-between">
|
|
96
|
+
<div className="flex min-w-0 flex-1 flex-col gap-3">
|
|
97
|
+
{hasMainControls && (
|
|
98
|
+
<div className="flex min-w-0 flex-1 flex-col gap-2 lg:flex-row lg:flex-wrap lg:items-center">
|
|
99
|
+
{search ? <div className={cn("min-w-[16rem] max-w-xl flex-1", searchClassName)}>{search}</div> : null}
|
|
100
|
+
{filters ? <div className={cn("flex min-w-0 flex-1 flex-wrap items-center gap-2", filtersClassName)}>{filters}</div> : null}
|
|
101
|
+
{children}
|
|
102
|
+
</div>
|
|
103
|
+
)}
|
|
104
|
+
{summary ? (
|
|
105
|
+
<div
|
|
106
|
+
data-slot="data-table-summary"
|
|
107
|
+
className={cn("flex flex-wrap items-center gap-2 text-sm text-muted-foreground", summaryClassName)}
|
|
108
|
+
>
|
|
109
|
+
{summary}
|
|
110
|
+
</div>
|
|
111
|
+
) : null}
|
|
112
|
+
</div>
|
|
113
|
+
|
|
93
114
|
{hasSelection && (
|
|
94
|
-
<div data-slot="data-table-selection-bar" className="flex shrink-0 items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-control-border-strong,var(--border))] bg-[color:var(--aui-control-surface,var(--background))] px-2.5 py-1.5 text-sm shadow-[var(--aui-control-shadow,none)] backdrop-blur">
|
|
115
|
+
<div data-slot="data-table-selection-bar" className="flex shrink-0 flex-wrap items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-control-border-strong,var(--border))] bg-[color:var(--aui-control-surface,var(--background))] px-2.5 py-1.5 text-sm shadow-[var(--aui-control-shadow,none)] backdrop-blur">
|
|
95
116
|
<span className="text-muted-foreground">{selectedLabel(selectedCount, totalCount)}</span>
|
|
96
117
|
{selectionActions}
|
|
97
118
|
</div>
|
|
98
|
-
)}
|
|
119
|
+
)}
|
|
99
120
|
</div>
|
|
100
121
|
)}
|
|
101
122
|
</div>
|
|
@@ -24,7 +24,7 @@ import { DataTableColumnVisibilityMenu } from "@/components/data-table/data-tabl
|
|
|
24
24
|
import { DataTablePagination, type DataTablePaginationProps } from "@/components/data-table/data-table-pagination"
|
|
25
25
|
import { type DataTableRowAction } from "@/components/data-table/data-table-row-actions"
|
|
26
26
|
import { DataTableToolbar, type DataTableToolbarProps } from "@/components/data-table/data-table-toolbar"
|
|
27
|
-
import {
|
|
27
|
+
import { DataState, type DataStateProps } from "@/components/display/data-state"
|
|
28
28
|
import { LoadingState, type LoadingStateProps } from "@/components/feedback/loading-state"
|
|
29
29
|
import { SearchInput, type SearchInputProps } from "@/components/inputs/search-input"
|
|
30
30
|
import { Button } from "@/components/ui/button"
|
|
@@ -87,28 +87,30 @@ export type DataTablePaginationConfig = Pick<
|
|
|
87
87
|
onPageSizeChange?: (pageSize: number) => void
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
export type DataTableProps<TData, TValue = unknown> = Omit<
|
|
91
|
-
React.ComponentProps<"div">,
|
|
92
|
-
"children"
|
|
93
|
-
> & {
|
|
90
|
+
export type DataTableProps<TData, TValue = unknown> = Omit<
|
|
91
|
+
React.ComponentProps<"div">,
|
|
92
|
+
"children"
|
|
93
|
+
> & {
|
|
94
94
|
columns: ColumnDef<TData, TValue>[]
|
|
95
95
|
data: TData[]
|
|
96
|
-
title?: React.ReactNode
|
|
97
|
-
description?: React.ReactNode
|
|
98
|
-
features?: DataTableFeatureConfig
|
|
99
|
-
search?: DataTableSearchConfig
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
title?: React.ReactNode
|
|
97
|
+
description?: React.ReactNode
|
|
98
|
+
features?: DataTableFeatureConfig
|
|
99
|
+
search?: DataTableSearchConfig
|
|
100
|
+
filters?: React.ReactNode | ((context: DataTableActionContext<TData>) => React.ReactNode)
|
|
101
|
+
summary?: React.ReactNode | ((context: DataTableActionContext<TData>) => React.ReactNode)
|
|
102
|
+
toolbarActions?: React.ReactNode | ((context: DataTableActionContext<TData>) => React.ReactNode)
|
|
103
|
+
rowActions?: (row: Row<TData>, original: TData) => DataTableRowAction<TData>[]
|
|
102
104
|
bulkActions?: DataTableBulkAction<TData>[]
|
|
103
105
|
onRefresh?: (context: DataTableActionContext<TData>) => void
|
|
104
|
-
onExport?: (context: DataTableActionContext<TData>) => void
|
|
106
|
+
onExport?: (context: DataTableActionContext<TData>) => void
|
|
105
107
|
refreshLabel?: React.ReactNode
|
|
106
108
|
exportLabel?: React.ReactNode
|
|
107
109
|
getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string
|
|
108
110
|
isLoading?: boolean
|
|
109
111
|
isError?: boolean
|
|
110
|
-
emptyState?:
|
|
111
|
-
errorState?:
|
|
112
|
+
emptyState?: Omit<DataStateProps, "status">
|
|
113
|
+
errorState?: Omit<DataStateProps, "status">
|
|
112
114
|
loadingState?: LoadingStateProps
|
|
113
115
|
loadingVariant?: DataTableLoadingVariant
|
|
114
116
|
toolbar?: React.ReactNode | ((table: TanStackTable<TData>) => React.ReactNode)
|
|
@@ -189,11 +191,13 @@ function DataTable<TData, TValue = unknown>({
|
|
|
189
191
|
columns,
|
|
190
192
|
data,
|
|
191
193
|
title,
|
|
192
|
-
description,
|
|
193
|
-
features,
|
|
194
|
-
search,
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
description,
|
|
195
|
+
features,
|
|
196
|
+
search,
|
|
197
|
+
filters,
|
|
198
|
+
summary,
|
|
199
|
+
toolbarActions,
|
|
200
|
+
rowActions,
|
|
197
201
|
bulkActions,
|
|
198
202
|
onRefresh,
|
|
199
203
|
onExport,
|
|
@@ -259,11 +263,10 @@ function DataTable<TData, TValue = unknown>({
|
|
|
259
263
|
pageSize: paginationConfig.pageSize,
|
|
260
264
|
}
|
|
261
265
|
: undefined
|
|
262
|
-
const manualPagination = Boolean(paginationConfig && paginationConfig.manual !== false)
|
|
263
|
-
const resolvedRowSelection = rowSelection ?? {}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
// TanStack Table returns imperative helpers that React Compiler flags by design.
|
|
266
|
+
const manualPagination = Boolean(paginationConfig && paginationConfig.manual !== false)
|
|
267
|
+
const resolvedRowSelection = rowSelection ?? {}
|
|
268
|
+
|
|
269
|
+
// TanStack Table returns imperative helpers that React Compiler flags by design.
|
|
267
270
|
// eslint-disable-next-line react-hooks/incompatible-library
|
|
268
271
|
const table = useReactTable({
|
|
269
272
|
data,
|
|
@@ -291,18 +294,21 @@ function DataTable<TData, TValue = unknown>({
|
|
|
291
294
|
getExpandedRowModel: getExpandedRowModel(),
|
|
292
295
|
})
|
|
293
296
|
|
|
294
|
-
const rows = table.getRowModel().rows
|
|
295
|
-
const selectedRows = table.getSelectedRowModel().rows.map((row) => row.original)
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
const
|
|
302
|
-
const
|
|
303
|
-
const
|
|
304
|
-
const
|
|
305
|
-
const
|
|
297
|
+
const rows = table.getRowModel().rows
|
|
298
|
+
const selectedRows = table.getSelectedRowModel().rows.map((row) => row.original)
|
|
299
|
+
const selectedRowCount = selectedRows.length
|
|
300
|
+
const actionContext = React.useMemo<DataTableActionContext<TData>>(
|
|
301
|
+
() => ({ table, data, selectedRows }),
|
|
302
|
+
[data, selectedRows, table]
|
|
303
|
+
)
|
|
304
|
+
const visibleColumns = table.getVisibleLeafColumns()
|
|
305
|
+
const visibleColumnCount = Math.max(visibleColumns.length, 1)
|
|
306
|
+
const resolvedToolbar = typeof toolbar === "function" ? toolbar(table) : toolbar
|
|
307
|
+
const resolvedToolbarProps = typeof toolbarProps === "function" ? toolbarProps(table) : toolbarProps
|
|
308
|
+
const resolvedFilters = typeof filters === "function" ? filters(actionContext) : filters
|
|
309
|
+
const resolvedSummary = typeof summary === "function" ? summary(actionContext) : summary
|
|
310
|
+
const shouldShowSearch = Boolean(search && features?.search !== false)
|
|
311
|
+
const shouldShowColumnVisibility = Boolean(features?.columnVisibility && table.getAllLeafColumns().some((column) => column.getCanHide()))
|
|
306
312
|
const shouldShowRefresh = Boolean(features?.refresh && onRefresh)
|
|
307
313
|
const shouldShowExport = Boolean(features?.export && onExport)
|
|
308
314
|
const shouldShowBulkActions = Boolean(features?.bulkActions !== false && bulkActions?.length)
|
|
@@ -310,6 +316,8 @@ function DataTable<TData, TValue = unknown>({
|
|
|
310
316
|
title ||
|
|
311
317
|
description ||
|
|
312
318
|
search ||
|
|
319
|
+
resolvedFilters ||
|
|
320
|
+
resolvedSummary ||
|
|
313
321
|
toolbarActions ||
|
|
314
322
|
shouldShowRefresh ||
|
|
315
323
|
shouldShowExport
|
|
@@ -355,9 +363,11 @@ function DataTable<TData, TValue = unknown>({
|
|
|
355
363
|
/>
|
|
356
364
|
) : undefined
|
|
357
365
|
const hasDefaultToolbarContent = Boolean(
|
|
358
|
-
title ||
|
|
359
|
-
description ||
|
|
366
|
+
title ||
|
|
367
|
+
description ||
|
|
360
368
|
defaultSearch ||
|
|
369
|
+
resolvedFilters ||
|
|
370
|
+
resolvedSummary ||
|
|
361
371
|
toolbarActions ||
|
|
362
372
|
shouldShowColumnVisibilityInToolbar ||
|
|
363
373
|
shouldShowRefresh ||
|
|
@@ -400,26 +410,28 @@ function DataTable<TData, TValue = unknown>({
|
|
|
400
410
|
</TableRow>
|
|
401
411
|
))
|
|
402
412
|
|
|
403
|
-
const stateContent = shouldRenderSkeleton ? null : isLoading ? (
|
|
404
|
-
<LoadingState label="Loading data..." {...loadingState} />
|
|
405
|
-
) : isError ? (
|
|
406
|
-
<
|
|
407
|
-
) : rows.length === 0 ? (
|
|
408
|
-
<
|
|
409
|
-
) : null
|
|
413
|
+
const stateContent = shouldRenderSkeleton ? null : isLoading ? (
|
|
414
|
+
<LoadingState label="Loading data..." {...loadingState} />
|
|
415
|
+
) : isError ? (
|
|
416
|
+
<DataState status="error" title="Could not load data" description="Please try again." variant="plain" {...errorState} />
|
|
417
|
+
) : rows.length === 0 ? (
|
|
418
|
+
<DataState status="empty" variant="plain" {...emptyState} />
|
|
419
|
+
) : null
|
|
410
420
|
|
|
411
421
|
return (
|
|
412
422
|
<div data-slot="data-table" className={cn("grid gap-3", className)} {...props}>
|
|
413
423
|
{hasToolbar &&
|
|
414
424
|
(resolvedToolbar ?? (
|
|
415
|
-
<DataTableToolbar
|
|
416
|
-
title={title}
|
|
417
|
-
description={description}
|
|
418
|
-
search={defaultSearch}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
425
|
+
<DataTableToolbar
|
|
426
|
+
title={title}
|
|
427
|
+
description={description}
|
|
428
|
+
search={defaultSearch}
|
|
429
|
+
filters={resolvedFilters}
|
|
430
|
+
summary={resolvedSummary}
|
|
431
|
+
actions={defaultActions}
|
|
432
|
+
selectionActions={defaultSelectionActions}
|
|
433
|
+
selectedCount={selectedRowCount}
|
|
434
|
+
totalCount={paginationConfig ? paginationConfig.rowCount ?? data.length : data.length}
|
|
423
435
|
variant="plain"
|
|
424
436
|
{...resolvedToolbarProps}
|
|
425
437
|
/>
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createShowcaseDemoRegistry } from "@/showcase/create-demo"
|
|
2
2
|
|
|
3
|
-
export const dataTableShowcaseDemoRegistry = createShowcaseDemoRegistry([
|
|
4
|
-
component("data-table-pagination", "DataTablePagination", "data-table", "Pagination control used by DataTable pages."),
|
|
5
|
-
component("data-table-toolbar", "DataTableToolbar", "data-table", "Toolbar surface for DataTable search, filters and actions."),
|
|
6
|
-
component("data-table-column-visibility-menu", "DataTableColumnVisibilityMenu", "data-table", "Column visibility menu pattern for table views."),
|
|
7
|
-
component("data-table-select-column", "DataTableSelectColumn", "data-table", "Selection column pattern for bulk table workflows."),
|
|
8
|
-
component("data-table-sortable-header", "DataTableSortableHeader", "data-table", "Sortable header trigger with clear visual state."),
|
|
9
|
-
component("data-table-row-actions", "DataTableRowActions", "data-table", "Row action menu for inspect, duplicate and archive operations."),
|
|
10
|
-
component("data-table-actions-column", "DataTableActionsColumn", "data-table", "Reusable actions column for DataTable definitions."),
|
|
11
|
-
component("data-table-bulk-actions", "DataTableBulkActions", "data-table", "Bulk action bar for selected rows."),
|
|
12
|
-
component("data-table-view-presets", "DataTableViewPresets", "data-table", "Saved table view presets for operational dashboards."),
|
|
13
|
-
])
|
|
3
|
+
export const dataTableShowcaseDemoRegistry = createShowcaseDemoRegistry([])
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
export * from "./data-table"
|
|
2
|
-
export * from "./data-table-
|
|
2
|
+
export * from "./data-table-pagination"
|
|
3
3
|
export * from "./data-table-bulk-actions"
|
|
4
4
|
export * from "./data-table-column-visibility-menu"
|
|
5
|
-
export * from "./data-table-pagination"
|
|
6
|
-
export * from "./data-table-row-actions"
|
|
7
|
-
export * from "./data-table-select-column"
|
|
8
5
|
export * from "./data-table-sortable-header"
|
|
9
|
-
export * from "./data-table-toolbar"
|
|
10
6
|
export * from "./data-table-view-presets"
|
|
11
|
-
export * from "./data-table-saved-filters"
|