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
|
@@ -17,7 +17,9 @@ const loadOptions = async (query: string): Promise<typeof workspaceOptions> => {
|
|
|
17
17
|
|
|
18
18
|
export function AsyncSelectShowcase() {
|
|
19
19
|
const [value, setValue] = useState("")
|
|
20
|
+
const [teamValues, setTeamValues] = useState<string[]>(["north", "west"])
|
|
20
21
|
const activeOption = routeWorkspaceOptions.find((item) => item.value === value)
|
|
22
|
+
const selectedTeams = routeWorkspaceOptions.filter((item) => teamValues.includes(String(item.value)))
|
|
21
23
|
|
|
22
24
|
return (
|
|
23
25
|
<div className="space-y-5">
|
|
@@ -49,9 +51,39 @@ export function AsyncSelectShowcase() {
|
|
|
49
51
|
defaultOptions={workspaceOptions}
|
|
50
52
|
minSearchLength={1}
|
|
51
53
|
clearable
|
|
54
|
+
showSelectedDescription
|
|
52
55
|
debounceMs={220}
|
|
56
|
+
labels={{
|
|
57
|
+
placeholder: "Choose service region",
|
|
58
|
+
searchPlaceholder: "Search regions...",
|
|
59
|
+
}}
|
|
53
60
|
/>
|
|
54
61
|
</div>
|
|
62
|
+
<div className="mt-5">
|
|
63
|
+
<p className="text-sm font-medium aui-text-muted">Multi select uses the same component</p>
|
|
64
|
+
<div className="mt-3">
|
|
65
|
+
<AsyncSelect
|
|
66
|
+
isMulti
|
|
67
|
+
value={teamValues}
|
|
68
|
+
onValueChange={(nextValue) => setTeamValues(nextValue)}
|
|
69
|
+
loadOptions={loadOptions}
|
|
70
|
+
defaultOptions={workspaceOptions}
|
|
71
|
+
minSearchLength={1}
|
|
72
|
+
clearable
|
|
73
|
+
showSelectAll
|
|
74
|
+
maxSelected={3}
|
|
75
|
+
maxVisibleTags={2}
|
|
76
|
+
showSelectedDescription
|
|
77
|
+
debounceMs={220}
|
|
78
|
+
labels={{
|
|
79
|
+
multiPlaceholder: "Choose team coverage",
|
|
80
|
+
searchPlaceholder: "Search team regions...",
|
|
81
|
+
selectedCount: (count) => `${count} regions selected`,
|
|
82
|
+
hiddenSelected: (count) => `+${count} more`,
|
|
83
|
+
}}
|
|
84
|
+
/>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
55
87
|
<div className="mt-4 grid gap-3 md:grid-cols-3">
|
|
56
88
|
<div className="rounded-[18px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] px-4 py-3 text-sm">
|
|
57
89
|
<p className="font-medium aui-text-strong">Type to query</p>
|
|
@@ -83,6 +115,10 @@ export function AsyncSelectShowcase() {
|
|
|
83
115
|
<p className="text-xs uppercase tracking-[0.2em] aui-text-muted">Team</p>
|
|
84
116
|
<p className="mt-2 text-sm font-medium aui-text-strong">{activeOption ? routeWorkspaceOptions.find((item) => item.value === activeOption.value)?.team : "No team"}</p>
|
|
85
117
|
</div>
|
|
118
|
+
<div className="rounded-[18px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] px-4 py-3">
|
|
119
|
+
<p className="text-xs uppercase tracking-[0.2em] aui-text-muted">Multi mode</p>
|
|
120
|
+
<p className="mt-2 text-sm font-medium aui-text-strong">{selectedTeams.length ? selectedTeams.map((item) => item.label).join(", ") : "No teams selected"}</p>
|
|
121
|
+
</div>
|
|
86
122
|
</div>
|
|
87
123
|
</div>
|
|
88
124
|
</div>
|
|
@@ -55,11 +55,12 @@ function StateButton({
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
return (
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
<Button
|
|
59
|
+
variant={variant}
|
|
60
|
+
pressed={state === "Focus"}
|
|
61
|
+
disabled={state === "Disabled"}
|
|
62
|
+
className={state === "Focus" ? "ring-2 ring-[color:var(--aui-ring)] ring-offset-2 ring-offset-[color:var(--aui-page-bg)]" : undefined}
|
|
63
|
+
>
|
|
63
64
|
{state}
|
|
64
65
|
</Button>
|
|
65
66
|
)
|
|
@@ -127,6 +128,7 @@ export function ButtonShowcase() {
|
|
|
127
128
|
<Button variant="outline">Preview</Button>
|
|
128
129
|
<Button
|
|
129
130
|
variant={selectedVariant}
|
|
131
|
+
fullWidth
|
|
130
132
|
loading={approvalState === "saving"}
|
|
131
133
|
loadingLabel="Approving"
|
|
132
134
|
onClick={approveInvoice}
|
|
@@ -136,6 +138,25 @@ export function ButtonShowcase() {
|
|
|
136
138
|
</div>
|
|
137
139
|
</div>
|
|
138
140
|
</div>
|
|
141
|
+
|
|
142
|
+
<div className="mt-6 grid gap-3 md:grid-cols-4">
|
|
143
|
+
<div className="rounded-[18px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] px-4 py-3 text-sm">
|
|
144
|
+
<p className="font-medium aui-text-strong">Primary</p>
|
|
145
|
+
<p className="mt-2 leading-6 aui-text-muted">Main action with filled emphasis.</p>
|
|
146
|
+
</div>
|
|
147
|
+
<div className="rounded-[18px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] px-4 py-3 text-sm">
|
|
148
|
+
<p className="font-medium aui-text-strong">Secondary</p>
|
|
149
|
+
<p className="mt-2 leading-6 aui-text-muted">Alternative action without stealing focus.</p>
|
|
150
|
+
</div>
|
|
151
|
+
<div className="rounded-[18px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] px-4 py-3 text-sm">
|
|
152
|
+
<p className="font-medium aui-text-strong">Outline</p>
|
|
153
|
+
<p className="mt-2 leading-6 aui-text-muted">Low-emphasis action for previews and neutral workflows.</p>
|
|
154
|
+
</div>
|
|
155
|
+
<div className="rounded-[18px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] px-4 py-3 text-sm">
|
|
156
|
+
<p className="font-medium aui-text-strong">Destructive</p>
|
|
157
|
+
<p className="mt-2 leading-6 aui-text-muted">Reserved for archive, delete, or dangerous transitions.</p>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
139
160
|
</section>
|
|
140
161
|
|
|
141
162
|
<section className={panelClass}>
|
|
@@ -9,6 +9,7 @@ const panelClass =
|
|
|
9
9
|
|
|
10
10
|
export function ButtonGroupShowcase({ mode }: ComponentDemoProps) {
|
|
11
11
|
const [view, setView] = React.useState<"list" | "board" | "timeline">("list")
|
|
12
|
+
const [density, setDensity] = React.useState<"compact" | "comfortable">("comfortable")
|
|
12
13
|
|
|
13
14
|
return (
|
|
14
15
|
<div className="space-y-5">
|
|
@@ -31,16 +32,32 @@ export function ButtonGroupShowcase({ mode }: ComponentDemoProps) {
|
|
|
31
32
|
<div className="grid gap-4 xl:grid-cols-2">
|
|
32
33
|
<section className={panelClass}>
|
|
33
34
|
<ButtonGroup
|
|
35
|
+
value={view}
|
|
36
|
+
onValueChange={(next) => setView(next as typeof view)}
|
|
34
37
|
items={[
|
|
35
|
-
{ key: "list", label: "List",
|
|
36
|
-
{ key: "board", label: "Board",
|
|
37
|
-
{ key: "timeline", label: "Timeline",
|
|
38
|
+
{ key: "list", label: "List", description: "Rows first" },
|
|
39
|
+
{ key: "board", label: "Board", description: "Kanban view" },
|
|
40
|
+
{ key: "timeline", label: "Timeline", description: "Chronology" },
|
|
38
41
|
]}
|
|
39
42
|
/>
|
|
43
|
+
<div className="mt-4">
|
|
44
|
+
<ButtonGroup
|
|
45
|
+
value={density}
|
|
46
|
+
onValueChange={(next) => setDensity(next as typeof density)}
|
|
47
|
+
size="xs"
|
|
48
|
+
activeVariant="secondary"
|
|
49
|
+
allowDeselect
|
|
50
|
+
items={[
|
|
51
|
+
{ key: "comfortable", label: "Comfortable" },
|
|
52
|
+
{ key: "compact", label: "Compact" },
|
|
53
|
+
]}
|
|
54
|
+
/>
|
|
55
|
+
</div>
|
|
40
56
|
</section>
|
|
41
57
|
<section className={panelClass}>
|
|
42
58
|
<p className="text-sm font-medium aui-text-muted">Selected view</p>
|
|
43
59
|
<p className="mt-3 text-base font-medium aui-text-strong">{view}</p>
|
|
60
|
+
<p className="mt-2 text-sm aui-text-muted">Density: {density || "none"}</p>
|
|
44
61
|
</section>
|
|
45
62
|
</div>
|
|
46
63
|
|
|
@@ -48,6 +48,9 @@ export function CalendarShowcase({ mode }: ComponentDemoProps) {
|
|
|
48
48
|
disabledDates={blockedDates}
|
|
49
49
|
numberOfMonths={monthCount}
|
|
50
50
|
pagedNavigation
|
|
51
|
+
showClearShortcut
|
|
52
|
+
showTodayShortcut
|
|
53
|
+
showSelectionSummary
|
|
51
54
|
/>
|
|
52
55
|
</div>
|
|
53
56
|
</section>
|
|
@@ -63,6 +66,8 @@ export function CalendarShowcase({ mode }: ComponentDemoProps) {
|
|
|
63
66
|
min="2026-07-01"
|
|
64
67
|
max="2026-07-31"
|
|
65
68
|
disabledDates={blockedDates}
|
|
69
|
+
showClearShortcut
|
|
70
|
+
showSelectionSummary
|
|
66
71
|
/>
|
|
67
72
|
</div>
|
|
68
73
|
</section>
|
|
@@ -3,15 +3,17 @@ import * as React from "react"
|
|
|
3
3
|
import { Button, Carousel, CarouselItem } from "@/index"
|
|
4
4
|
|
|
5
5
|
const steps = [
|
|
6
|
-
{ title: "Onboarding", text: "Guide quickly from first login." },
|
|
7
|
-
{ title: "Components", text: "Review ready-made dashboard patterns." },
|
|
8
|
-
{ title: "Release", text: "Publish, test, and iterate faster." },
|
|
6
|
+
{ title: "Onboarding", text: "Guide quickly from first login.", tone: "Launch" },
|
|
7
|
+
{ title: "Components", text: "Review ready-made dashboard patterns.", tone: "Library" },
|
|
8
|
+
{ title: "Release", text: "Publish, test, and iterate faster.", tone: "Ship" },
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
export function CarouselShowcase() {
|
|
12
12
|
const [showArrows, setShowArrows] = React.useState(true)
|
|
13
13
|
const [showDots, setShowDots] = React.useState(true)
|
|
14
|
+
const [autoplay, setAutoplay] = React.useState(false)
|
|
14
15
|
const [index, setIndex] = React.useState(0)
|
|
16
|
+
const [playing, setPlaying] = React.useState(false)
|
|
15
17
|
|
|
16
18
|
return (
|
|
17
19
|
<div className="space-y-5">
|
|
@@ -22,6 +24,23 @@ export function CarouselShowcase() {
|
|
|
22
24
|
<Button size="sm" variant={showDots ? "default" : "outline"} onClick={() => setShowDots((value) => !value)}>
|
|
23
25
|
{showDots ? "Hide" : "Show"} dots
|
|
24
26
|
</Button>
|
|
27
|
+
<Button size="sm" variant={autoplay ? "default" : "outline"} onClick={() => setAutoplay((value) => !value)}>
|
|
28
|
+
{autoplay ? "Stop" : "Start"} autoplay
|
|
29
|
+
</Button>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div className="grid gap-3 md:grid-cols-3">
|
|
33
|
+
{steps.map((step, slideIndex) => (
|
|
34
|
+
<Button
|
|
35
|
+
key={step.title}
|
|
36
|
+
type="button"
|
|
37
|
+
variant={index === slideIndex ? "default" : "outline"}
|
|
38
|
+
className="justify-start"
|
|
39
|
+
onClick={() => setIndex(slideIndex)}
|
|
40
|
+
>
|
|
41
|
+
{slideIndex + 1}. {step.title}
|
|
42
|
+
</Button>
|
|
43
|
+
))}
|
|
25
44
|
</div>
|
|
26
45
|
|
|
27
46
|
<Carousel
|
|
@@ -29,24 +48,33 @@ export function CarouselShowcase() {
|
|
|
29
48
|
loop
|
|
30
49
|
showArrows={showArrows}
|
|
31
50
|
showDots={showDots}
|
|
51
|
+
autoplay={autoplay}
|
|
52
|
+
autoplayInterval={2200}
|
|
53
|
+
showPlaybackControl
|
|
32
54
|
onIndexChange={(next) => setIndex(next)}
|
|
55
|
+
onAutoplayChange={setPlaying}
|
|
33
56
|
previousLabel="Previous slide"
|
|
34
57
|
nextLabel="Next slide"
|
|
35
58
|
>
|
|
36
59
|
{steps.map((step, slideIndex) => (
|
|
37
60
|
<CarouselItem key={step.title}>
|
|
38
|
-
<div className="rounded-xl border border-border bg-card p-8">
|
|
39
|
-
|
|
61
|
+
<div className="min-h-56 rounded-xl border border-border bg-card p-8">
|
|
62
|
+
<div className="flex items-start justify-between gap-3">
|
|
40
63
|
<div className="grid gap-2">
|
|
64
|
+
<p className="text-[11px] font-semibold uppercase tracking-[0.24em] text-primary">{step.tone}</p>
|
|
41
65
|
<p className="text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground">{`Slide ${slideIndex + 1}`}</p>
|
|
42
66
|
<h3 className="text-lg font-semibold text-foreground">{step.title}</h3>
|
|
43
67
|
<p className="text-sm text-muted-foreground">{step.text}</p>
|
|
44
68
|
</div>
|
|
69
|
+
<div className="rounded-full border border-border/70 px-3 py-1 text-xs text-muted-foreground">
|
|
70
|
+
{slideIndex + 1}/{steps.length}
|
|
71
|
+
</div>
|
|
45
72
|
</div>
|
|
46
73
|
</div>
|
|
47
74
|
</CarouselItem>
|
|
48
75
|
))}
|
|
49
76
|
</Carousel>
|
|
77
|
+
<div className="text-sm text-muted-foreground">Playback: {playing || autoplay ? "active" : "paused"}</div>
|
|
50
78
|
</div>
|
|
51
79
|
)
|
|
52
80
|
}
|
|
@@ -8,6 +8,8 @@ const panelClass =
|
|
|
8
8
|
"rounded-[22px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5"
|
|
9
9
|
|
|
10
10
|
export function CheckboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
11
|
+
const triState = state.checked ? "checked" : state.textValue === "mixed" ? "mixed" : "unchecked"
|
|
12
|
+
|
|
11
13
|
return (
|
|
12
14
|
<div className="space-y-5">
|
|
13
15
|
<section className="rounded-[24px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5 sm:p-6">
|
|
@@ -27,13 +29,51 @@ export function CheckboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
|
27
29
|
</div>
|
|
28
30
|
</div>
|
|
29
31
|
|
|
30
|
-
<div className="mt-6 grid gap-3">
|
|
32
|
+
<div className="mt-6 grid gap-3 md:grid-cols-3">
|
|
33
|
+
<div className={`${panelClass} flex items-start gap-3`}>
|
|
34
|
+
<Checkbox
|
|
35
|
+
size="lg"
|
|
36
|
+
allowIndeterminate
|
|
37
|
+
checked={triState === "mixed" ? "indeterminate" : triState === "checked"}
|
|
38
|
+
onCheckedStateChange={(checked) => {
|
|
39
|
+
if (checked === "indeterminate") {
|
|
40
|
+
setState({ checked: false, textValue: "mixed" })
|
|
41
|
+
} else if (checked) {
|
|
42
|
+
setState({ checked: true, textValue: "checked" })
|
|
43
|
+
} else {
|
|
44
|
+
setState({ checked: false, textValue: "unchecked" })
|
|
45
|
+
}
|
|
46
|
+
}}
|
|
47
|
+
/>
|
|
48
|
+
<div>
|
|
49
|
+
<p className="text-sm font-medium aui-text-strong">Approval state</p>
|
|
50
|
+
<p className="mt-1 text-sm aui-text-muted">Use `indeterminate` when not all child tasks are complete.</p>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div className={`${panelClass} flex items-start gap-3`}>
|
|
54
|
+
<Checkbox size="lg" checked="indeterminate" />
|
|
55
|
+
<div>
|
|
56
|
+
<p className="text-sm font-medium aui-text-strong">Indeterminate</p>
|
|
57
|
+
<p className="mt-1 text-sm aui-text-muted">Useful for parent rows and bulk selection summaries.</p>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div className={`${panelClass} flex items-start gap-3`}>
|
|
61
|
+
<Checkbox size="lg" checked disabled />
|
|
62
|
+
<div>
|
|
63
|
+
<p className="text-sm font-medium aui-text-strong">Disabled selected</p>
|
|
64
|
+
<p className="mt-1 text-sm aui-text-muted">Shows permission-locked completion without becoming clickable.</p>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div className="mt-3 grid gap-3">
|
|
31
70
|
{checkboxDemoItems.map((item, index) => (
|
|
32
71
|
<label key={item.label} htmlFor={item.id} className={`${panelClass} flex items-start gap-3`}>
|
|
33
72
|
<Checkbox
|
|
34
73
|
id={item.id}
|
|
35
74
|
checked={index === 0 ? state.checked : item.checked}
|
|
36
75
|
disabled={item.disabled}
|
|
76
|
+
invalid={index === 0 && triState === "unchecked"}
|
|
37
77
|
onCheckedChange={index === 0 ? (checked) => setState({ checked: Boolean(checked) }) : undefined}
|
|
38
78
|
defaultChecked={index > 0 ? item.checked : undefined}
|
|
39
79
|
/>
|
|
@@ -51,10 +91,10 @@ export function CheckboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
|
51
91
|
<div>
|
|
52
92
|
<p className="text-xs font-semibold uppercase tracking-[0.24em] aui-text-muted">Live state</p>
|
|
53
93
|
<h4 className="mt-2 text-lg font-semibold aui-text-strong">
|
|
54
|
-
Release checklist is {
|
|
94
|
+
Release checklist is {triState}
|
|
55
95
|
</h4>
|
|
56
96
|
<p className="mt-2 text-sm leading-6 aui-text-muted">
|
|
57
|
-
Toggle the first row or use these actions to verify controlled checkbox behavior.
|
|
97
|
+
Toggle the first row or use these actions to verify controlled tri-state checkbox behavior.
|
|
58
98
|
</p>
|
|
59
99
|
</div>
|
|
60
100
|
<div className="flex flex-wrap gap-2">
|
|
@@ -64,6 +104,9 @@ export function CheckboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
|
64
104
|
<Button type="button" size="sm" variant="secondary" onClick={() => setState({ checked: false })}>
|
|
65
105
|
Disable
|
|
66
106
|
</Button>
|
|
107
|
+
<Button type="button" size="sm" variant="outline" onClick={() => setState({ checked: false, textValue: "mixed" })}>
|
|
108
|
+
Set mixed
|
|
109
|
+
</Button>
|
|
67
110
|
</div>
|
|
68
111
|
</div>
|
|
69
112
|
</section>
|
|
@@ -2,20 +2,22 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const clearableInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import * as React from "react"
|
|
5
|
-
import {
|
|
5
|
+
import { Input } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [value, setValue] = React.useState("workspace token")
|
|
9
9
|
|
|
10
10
|
return (
|
|
11
|
-
<
|
|
11
|
+
<Input
|
|
12
12
|
value={value}
|
|
13
13
|
onValueChange={setValue}
|
|
14
14
|
placeholder="Filter or paste value..."
|
|
15
|
+
clearable
|
|
15
16
|
clearOnEscape
|
|
16
17
|
/>
|
|
17
18
|
)
|
|
18
19
|
}`,
|
|
20
|
+
cliCommand: "npx tembro add input",
|
|
19
21
|
highlights: ["Inline clear action", "Escape-to-clear support", "Focus restore after clearing", "Small but high-frequency utility input"],
|
|
20
22
|
scenarios: [
|
|
21
23
|
{ title: "Filter reset", description: "Let users clear a short filter without hunting for an extra reset button." },
|
|
@@ -23,7 +25,7 @@ export function Example() {
|
|
|
23
25
|
{ title: "Toolbar utility", description: "Use in dense admin bars where compact cleanup matters." },
|
|
24
26
|
],
|
|
25
27
|
capabilityNotes: [
|
|
26
|
-
"
|
|
28
|
+
"Prefer `Input clearable` for short-lived values like filters and quick entry.",
|
|
27
29
|
"Escape clear is useful only when the input is frequently changed.",
|
|
28
30
|
"Keep the field visually quiet so the clear action feels secondary.",
|
|
29
31
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react"
|
|
2
2
|
|
|
3
|
-
import { Badge,
|
|
3
|
+
import { Badge, Input } from "@/index"
|
|
4
4
|
|
|
5
5
|
import type { ComponentDemoProps } from "../types"
|
|
6
6
|
|
|
@@ -29,11 +29,14 @@ export function ClearableInputShowcase({ mode }: ComponentDemoProps) {
|
|
|
29
29
|
</section>
|
|
30
30
|
|
|
31
31
|
<section className={panelClass}>
|
|
32
|
-
<
|
|
32
|
+
<Input
|
|
33
33
|
value={value}
|
|
34
34
|
onValueChange={setValue}
|
|
35
35
|
placeholder="Filter or paste value..."
|
|
36
|
+
clearable
|
|
36
37
|
clearOnEscape
|
|
38
|
+
trailingAction={<span className="text-xs aui-text-muted">Live filter</span>}
|
|
39
|
+
replaceTrailingWhenClear={false}
|
|
37
40
|
/>
|
|
38
41
|
</section>
|
|
39
42
|
|
|
@@ -9,6 +9,7 @@ const collapseItems = [
|
|
|
9
9
|
{
|
|
10
10
|
key: "permissions",
|
|
11
11
|
title: "Permissions",
|
|
12
|
+
badge: <Badge variant="secondary">Core</Badge>,
|
|
12
13
|
description: "Who can publish, archive, and rename library surfaces.",
|
|
13
14
|
content: "Owners can publish. Editors can update docs. Reviewers can inspect previews and comment on API shape.",
|
|
14
15
|
},
|
|
@@ -16,12 +17,15 @@ const collapseItems = [
|
|
|
16
17
|
key: "release",
|
|
17
18
|
title: "Release notes",
|
|
18
19
|
description: "What changed in the current package cycle.",
|
|
20
|
+
meta: "July",
|
|
19
21
|
content: "This release opened more public docs coverage for interactive form and overlay surfaces.",
|
|
20
22
|
},
|
|
21
23
|
{
|
|
22
24
|
key: "handoff",
|
|
23
25
|
title: "Handoff checklist",
|
|
24
26
|
description: "What must be checked before a public release.",
|
|
27
|
+
disabled: true,
|
|
28
|
+
disabledReason: "Unlock after release branch is cut.",
|
|
25
29
|
content: "Typecheck, lint, build, smoke routes, verify copy feedback, and confirm component docs route integrity.",
|
|
26
30
|
},
|
|
27
31
|
] as const
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
|
|
1
3
|
import { Badge, Button, Combobox } from "@/index"
|
|
2
4
|
|
|
3
5
|
import type { ComponentDemoProps } from "../types"
|
|
@@ -15,6 +17,7 @@ const teammateOptions = [
|
|
|
15
17
|
export function ComboboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
16
18
|
const currentValue = teammateOptions.some((option) => option.value === state.selectValue) ? state.selectValue : "azamat"
|
|
17
19
|
const currentOption = teammateOptions.find((option) => option.value === currentValue) ?? teammateOptions[0]
|
|
20
|
+
const [searchValue, setSearchValue] = React.useState("")
|
|
18
21
|
|
|
19
22
|
return (
|
|
20
23
|
<div className="space-y-5">
|
|
@@ -45,6 +48,10 @@ export function ComboboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
|
45
48
|
onValueChange={(value) => setState({ selectValue: value ?? "azamat" })}
|
|
46
49
|
placeholder="Choose teammate"
|
|
47
50
|
searchPlaceholder="Search teammate..."
|
|
51
|
+
clearable
|
|
52
|
+
allowDeselect
|
|
53
|
+
showSelectedDescription
|
|
54
|
+
onSearchChange={setSearchValue}
|
|
48
55
|
/>
|
|
49
56
|
</div>
|
|
50
57
|
</div>
|
|
@@ -68,6 +75,7 @@ export function ComboboxShowcase({ state, setState }: ComponentDemoProps) {
|
|
|
68
75
|
<p className="mt-2 text-sm leading-6 aui-text-muted">
|
|
69
76
|
Use quick actions below to verify that the value stays controlled outside the dropdown itself.
|
|
70
77
|
</p>
|
|
78
|
+
<p className="mt-2 text-sm leading-6 aui-text-muted">Search query: {searchValue || "empty"}</p>
|
|
71
79
|
</div>
|
|
72
80
|
<div className="flex flex-wrap gap-2">
|
|
73
81
|
<Button type="button" size="sm" onClick={() => setState({ selectValue: "nodira" })}>
|
|
@@ -5,13 +5,12 @@ import {
|
|
|
5
5
|
Badge,
|
|
6
6
|
Button,
|
|
7
7
|
DataTable,
|
|
8
|
-
DataTableBulkActions,
|
|
9
8
|
DataTableColumnVisibilityMenu,
|
|
10
9
|
DataTableSortableHeader,
|
|
11
|
-
|
|
12
|
-
createDataTableActionsColumn,
|
|
13
|
-
createDataTableSelectColumn,
|
|
10
|
+
SimpleSelect,
|
|
14
11
|
} from "@/index"
|
|
12
|
+
import { createDataTableActionsColumn } from "@/components/data-table/data-table-actions-column"
|
|
13
|
+
import { createDataTableSelectColumn } from "@/components/data-table/data-table-select-column"
|
|
15
14
|
|
|
16
15
|
type DataTableDemoRow = {
|
|
17
16
|
invoice: string
|
|
@@ -26,17 +25,25 @@ const rows: DataTableDemoRow[] = [
|
|
|
26
25
|
{ invoice: "INV-4821", customer: "Acme Studio", owner: "Azamat", amount: "$12,420", status: "Paid", updatedAt: "2m ago" },
|
|
27
26
|
{ invoice: "INV-4822", customer: "Northwind", owner: "Madina", amount: "$8,120", status: "Review", updatedAt: "10m ago" },
|
|
28
27
|
{ invoice: "INV-4823", customer: "Globex", owner: "Jasur", amount: "$4,880", status: "Draft", updatedAt: "22m ago" },
|
|
28
|
+
{ invoice: "INV-4824", customer: "Pixel Union", owner: "Azamat", amount: "$17,300", status: "Paid", updatedAt: "44m ago" },
|
|
29
|
+
{ invoice: "INV-4825", customer: "Meridian Labs", owner: "Madina", amount: "$2,180", status: "Review", updatedAt: "1h ago" },
|
|
30
|
+
{ invoice: "INV-4826", customer: "Orbit Cloud", owner: "Jasur", amount: "$9,040", status: "Draft", updatedAt: "3h ago" },
|
|
29
31
|
]
|
|
30
32
|
|
|
31
33
|
export function DataTableShowcase() {
|
|
32
34
|
const [search, setSearch] = React.useState("")
|
|
33
|
-
const [
|
|
35
|
+
const [statusFilter, setStatusFilter] = React.useState("all")
|
|
36
|
+
const [ownerFilter, setOwnerFilter] = React.useState("all")
|
|
37
|
+
const [rowSelection, setRowSelection] = React.useState<Record<string, boolean>>({})
|
|
34
38
|
|
|
35
39
|
const filteredRows = rows.filter((row) => {
|
|
36
40
|
const normalized = search.trim().toLowerCase()
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
const matchesSearch = !normalized || `${row.invoice} ${row.customer} ${row.owner} ${row.amount}`.toLowerCase().includes(normalized)
|
|
42
|
+
const matchesStatus = statusFilter === "all" || row.status === statusFilter
|
|
43
|
+
const matchesOwner = ownerFilter === "all" || row.owner === ownerFilter
|
|
44
|
+
return matchesSearch && matchesStatus && matchesOwner
|
|
39
45
|
})
|
|
46
|
+
const selectedCount = Object.values(rowSelection).filter(Boolean).length
|
|
40
47
|
|
|
41
48
|
const columns = React.useMemo<ColumnDef<DataTableDemoRow>[]>(
|
|
42
49
|
() => [
|
|
@@ -94,7 +101,7 @@ export function DataTableShowcase() {
|
|
|
94
101
|
</div>
|
|
95
102
|
<div className="rounded-[18px] border border-[color:var(--aui-divider)] px-4 py-3">
|
|
96
103
|
<p className="text-xs font-semibold uppercase tracking-[0.22em] aui-text-muted">State</p>
|
|
97
|
-
<p className="mt-2 text-lg font-semibold aui-text-strong">Live</p>
|
|
104
|
+
<p className="mt-2 text-lg font-semibold aui-text-strong">{search || statusFilter !== "all" || ownerFilter !== "all" ? "Filtered" : "Live"}</p>
|
|
98
105
|
</div>
|
|
99
106
|
</div>
|
|
100
107
|
</div>
|
|
@@ -104,24 +111,67 @@ export function DataTableShowcase() {
|
|
|
104
111
|
data={filteredRows}
|
|
105
112
|
getRowId={(row) => row.invoice}
|
|
106
113
|
enableRowSelection
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
rowSelection={rowSelection}
|
|
115
|
+
title="Invoices"
|
|
116
|
+
description="Search, filter, visibility controls, bulk actions and row actions should stay inside one install-ready table surface."
|
|
117
|
+
features={{
|
|
118
|
+
search: true,
|
|
119
|
+
columnVisibility: true,
|
|
120
|
+
bulkActions: true,
|
|
121
|
+
}}
|
|
122
|
+
search={{
|
|
123
|
+
value: search,
|
|
124
|
+
onValueChange: setSearch,
|
|
125
|
+
placeholder: "Search invoice, customer...",
|
|
126
|
+
clearable: true,
|
|
127
|
+
}}
|
|
128
|
+
filters={
|
|
129
|
+
<>
|
|
130
|
+
<SimpleSelect
|
|
131
|
+
value={statusFilter}
|
|
132
|
+
onValueChange={(value) => setStatusFilter(value ?? "all")}
|
|
133
|
+
options={[
|
|
134
|
+
{ value: "all", label: "All statuses" },
|
|
135
|
+
{ value: "Paid", label: "Paid" },
|
|
136
|
+
{ value: "Review", label: "Review" },
|
|
137
|
+
{ value: "Draft", label: "Draft" },
|
|
138
|
+
]}
|
|
139
|
+
triggerClassName="min-w-40"
|
|
140
|
+
/>
|
|
141
|
+
<SimpleSelect
|
|
142
|
+
value={ownerFilter}
|
|
143
|
+
onValueChange={(value) => setOwnerFilter(value ?? "all")}
|
|
144
|
+
options={[
|
|
145
|
+
{ value: "all", label: "All owners" },
|
|
146
|
+
{ value: "Azamat", label: "Azamat" },
|
|
147
|
+
{ value: "Madina", label: "Madina" },
|
|
148
|
+
{ value: "Jasur", label: "Jasur" },
|
|
149
|
+
]}
|
|
150
|
+
triggerClassName="min-w-36"
|
|
151
|
+
/>
|
|
152
|
+
</>
|
|
153
|
+
}
|
|
154
|
+
summary={
|
|
155
|
+
<>
|
|
156
|
+
<Badge variant="outline">{filteredRows.length} rows</Badge>
|
|
157
|
+
<Badge variant="outline">{selectedCount} selected</Badge>
|
|
158
|
+
<Badge variant="outline">
|
|
159
|
+
{search || statusFilter !== "all" || ownerFilter !== "all" ? "Filtered view" : "Live view"}
|
|
160
|
+
</Badge>
|
|
161
|
+
</>
|
|
162
|
+
}
|
|
163
|
+
toolbarActions={({ table }) => (
|
|
164
|
+
<div className="flex items-center gap-2">
|
|
165
|
+
<DataTableColumnVisibilityMenu table={table} />
|
|
166
|
+
<Button size="sm" variant="outline">Export</Button>
|
|
167
|
+
</div>
|
|
168
|
+
)}
|
|
169
|
+
bulkActions={[
|
|
170
|
+
{ key: "export", label: "Export selected", onSelect: () => undefined },
|
|
171
|
+
{ key: "archive", label: "Archive selected", destructive: true, onSelect: () => undefined },
|
|
172
|
+
]}
|
|
122
173
|
onRowSelectionChange={(selection) => {
|
|
123
|
-
|
|
124
|
-
setSelectedCount(Object.values(value).filter(Boolean).length)
|
|
174
|
+
setRowSelection((current) => (typeof selection === "function" ? selection(current) : selection))
|
|
125
175
|
}}
|
|
126
176
|
onRowClick={() => undefined}
|
|
127
177
|
renderMobileCard={(row) => (
|
|
@@ -139,8 +189,8 @@ export function DataTableShowcase() {
|
|
|
139
189
|
pageIndex: 0,
|
|
140
190
|
pageSize: 5,
|
|
141
191
|
rowCount: filteredRows.length,
|
|
142
|
-
pageCount: 1,
|
|
143
|
-
pageSizeOptions: [5],
|
|
192
|
+
pageCount: Math.max(Math.ceil(filteredRows.length / 5), 1),
|
|
193
|
+
pageSizeOptions: [5, 10],
|
|
144
194
|
onPageChange: () => undefined,
|
|
145
195
|
onPageSizeChange: () => undefined,
|
|
146
196
|
}}
|