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 type { ColumnDef, RowSelectionState } from "@tanstack/react-table"
|
|
2
|
+
import type { ColumnDef, Row, RowSelectionState } from "@tanstack/react-table"
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
Badge,
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
DataTable,
|
|
8
8
|
DataTableBulkActions,
|
|
9
9
|
DataTableColumnVisibilityMenu,
|
|
10
|
-
DataTableSavedFilters,
|
|
11
10
|
DataTableSortableHeader,
|
|
12
11
|
DataTableViewPresets,
|
|
13
12
|
SearchInput,
|
|
14
|
-
createDataTableActionsColumn,
|
|
15
|
-
createDataTableSelectColumn,
|
|
16
13
|
} from "@/index"
|
|
14
|
+
import { createDataTableActionsColumn } from "@/components/data-table/data-table-actions-column"
|
|
15
|
+
import { DataTableSavedFilters } from "@/components/data-table/data-table-saved-filters"
|
|
16
|
+
import { createDataTableSelectColumn } from "@/components/data-table/data-table-select-column"
|
|
17
17
|
|
|
18
18
|
import { buildDataTableDemoRows, dataTableDemoPresets, type DataTableDemoRow } from "./data"
|
|
19
19
|
|
|
@@ -40,9 +40,9 @@ function buildColumns(setNotes: (value: string) => void): ColumnDef<DataTableDem
|
|
|
40
40
|
accessorKey: "customer",
|
|
41
41
|
header: ({ column }) => <DataTableSortableHeader column={column}>Customer</DataTableSortableHeader>,
|
|
42
42
|
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
{
|
|
44
|
+
accessorKey: "status",
|
|
45
|
+
header: "Status",
|
|
46
46
|
cell: ({ row }) => (
|
|
47
47
|
<Badge variant={row.original.status === "Paid" ? "secondary" : row.original.status === "Review" ? "outline" : "destructive"}>
|
|
48
48
|
{row.original.status}
|
|
@@ -54,7 +54,7 @@ function buildColumns(setNotes: (value: string) => void): ColumnDef<DataTableDem
|
|
|
54
54
|
header: ({ column }) => <DataTableSortableHeader column={column}>Amount</DataTableSortableHeader>,
|
|
55
55
|
},
|
|
56
56
|
createDataTableActionsColumn<DataTableDemoRow>({
|
|
57
|
-
getActions: (_row
|
|
57
|
+
getActions: (_row: Row<DataTableDemoRow>, original: DataTableDemoRow) => [
|
|
58
58
|
{ key: "open", label: "Open detail", onSelect: () => setNotes(`${original.invoice} opened from row action`) },
|
|
59
59
|
{ key: "archive", label: "Archive", destructive: true, onSelect: () => setNotes(`${original.invoice} sent to archive`) },
|
|
60
60
|
],
|
|
@@ -129,9 +129,9 @@ export function DataTablePartShowcase({
|
|
|
129
129
|
{ id: "risk", name: "At risk", filters: {} },
|
|
130
130
|
]}
|
|
131
131
|
activeFilterId={view === "all" ? "all" : view === "finance" ? "finance" : "risk"}
|
|
132
|
-
onSelectFilter={(id) => setView(id === "finance" ? "finance" : id === "risk" ? "at-risk" : "all")}
|
|
133
|
-
onSaveFilter={(name) => setNotes(`Saved filter created: ${name}`)}
|
|
134
|
-
onDeleteFilter={(id) => setNotes(`Saved filter deleted: ${id}`)}
|
|
132
|
+
onSelectFilter={(id: string) => setView(id === "finance" ? "finance" : id === "risk" ? "at-risk" : "all")}
|
|
133
|
+
onSaveFilter={(name: string) => setNotes(`Saved filter created: ${name}`)}
|
|
134
|
+
onDeleteFilter={(id: string) => setNotes(`Saved filter deleted: ${id}`)}
|
|
135
135
|
onClearFilters={() => setView("all")}
|
|
136
136
|
/>
|
|
137
137
|
</div>
|
|
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const dateInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import { useState } from "react"
|
|
5
|
-
import { DateInput } from "
|
|
5
|
+
import { DateInput } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [value, setValue] = useState("2026-06-19")
|
|
@@ -15,6 +15,13 @@ export function DateRangePickerShowcase({ mode }: ComponentDemoProps) {
|
|
|
15
15
|
min="2026-06-01"
|
|
16
16
|
max="2026-12-31"
|
|
17
17
|
disabledDates={["2026-06-21", "2026-06-22"]}
|
|
18
|
+
closeOnPresetSelect
|
|
19
|
+
presets={[
|
|
20
|
+
{ label: "This week", value: { from: "2026-06-01", to: "2026-06-07" } },
|
|
21
|
+
{ label: "Next 14 days", value: { from: "2026-06-08", to: "2026-06-20" } },
|
|
22
|
+
{ label: "Q3", value: { from: "2026-07-01", to: "2026-09-30" } },
|
|
23
|
+
]}
|
|
24
|
+
labels={{ placeholder: "Choose reporting range", apply: "Apply range", clear: "Clear", start: "Start", end: "End" }}
|
|
18
25
|
/>
|
|
19
26
|
<p className="aui-text-subtle text-sm">Range: {value.from} → {value.to}</p>
|
|
20
27
|
<p className="aui-text-muted text-sm">Mode: {mode}</p>
|
|
@@ -7,11 +7,15 @@ import {
|
|
|
7
7
|
DropdownMenuContent,
|
|
8
8
|
DropdownMenuGroup,
|
|
9
9
|
DropdownMenuItem,
|
|
10
|
+
DropdownMenuItemDescription,
|
|
10
11
|
DropdownMenuLabel,
|
|
11
12
|
DropdownMenuRadioGroup,
|
|
12
13
|
DropdownMenuRadioItem,
|
|
13
14
|
DropdownMenuSeparator,
|
|
14
15
|
DropdownMenuShortcut,
|
|
16
|
+
DropdownMenuSub,
|
|
17
|
+
DropdownMenuSubContent,
|
|
18
|
+
DropdownMenuSubTrigger,
|
|
15
19
|
DropdownMenuTrigger,
|
|
16
20
|
} from "@/index"
|
|
17
21
|
|
|
@@ -22,6 +26,8 @@ const panelClass = "border-t border-[color:var(--aui-divider)] py-6"
|
|
|
22
26
|
export function DropdownMenuShowcase({ mode }: ComponentDemoProps) {
|
|
23
27
|
const [status, setStatus] = React.useState("private")
|
|
24
28
|
const [notifications, setNotifications] = React.useState(true)
|
|
29
|
+
const [compact, setCompact] = React.useState(false)
|
|
30
|
+
const [keepOpen, setKeepOpen] = React.useState(false)
|
|
25
31
|
|
|
26
32
|
return (
|
|
27
33
|
<div className="space-y-0">
|
|
@@ -46,6 +52,10 @@ export function DropdownMenuShowcase({ mode }: ComponentDemoProps) {
|
|
|
46
52
|
<p className="text-xs font-semibold uppercase tracking-[0.22em] aui-text-muted">Route</p>
|
|
47
53
|
<p className="mt-2 text-lg font-semibold aui-text-strong">{mode === "playground" ? "Interactive" : "Docs"}</p>
|
|
48
54
|
</div>
|
|
55
|
+
<div className="rounded-[18px] border border-[color:var(--aui-divider)] px-4 py-3">
|
|
56
|
+
<p className="text-xs font-semibold uppercase tracking-[0.22em] aui-text-muted">Menu close</p>
|
|
57
|
+
<p className="mt-2 text-lg font-semibold aui-text-strong">{keepOpen ? "Pinned open" : "Auto close"}</p>
|
|
58
|
+
</div>
|
|
49
59
|
</div>
|
|
50
60
|
</div>
|
|
51
61
|
</section>
|
|
@@ -63,12 +73,45 @@ export function DropdownMenuShowcase({ mode }: ComponentDemoProps) {
|
|
|
63
73
|
</DropdownMenuTrigger>
|
|
64
74
|
<DropdownMenuContent>
|
|
65
75
|
<DropdownMenuLabel>Workspace actions</DropdownMenuLabel>
|
|
66
|
-
<DropdownMenuItem>
|
|
67
|
-
|
|
76
|
+
<DropdownMenuItem>
|
|
77
|
+
<span className="grid gap-0.5">
|
|
78
|
+
<span>Open workspace</span>
|
|
79
|
+
<DropdownMenuItemDescription>Go to the main dashboard route</DropdownMenuItemDescription>
|
|
80
|
+
</span>
|
|
81
|
+
<DropdownMenuShortcut>↵</DropdownMenuShortcut>
|
|
82
|
+
</DropdownMenuItem>
|
|
83
|
+
<DropdownMenuItem disabled>
|
|
84
|
+
<span className="grid gap-0.5">
|
|
85
|
+
<span>Delete from archive</span>
|
|
86
|
+
<DropdownMenuItemDescription>Locked until retention expires</DropdownMenuItemDescription>
|
|
87
|
+
</span>
|
|
88
|
+
</DropdownMenuItem>
|
|
68
89
|
<DropdownMenuSeparator />
|
|
69
|
-
<DropdownMenuCheckboxItem
|
|
90
|
+
<DropdownMenuCheckboxItem
|
|
91
|
+
checked={notifications}
|
|
92
|
+
closeOnSelect={!keepOpen}
|
|
93
|
+
onCheckedChange={(value) => setNotifications(Boolean(value))}
|
|
94
|
+
>
|
|
70
95
|
Notification access
|
|
71
96
|
</DropdownMenuCheckboxItem>
|
|
97
|
+
<DropdownMenuCheckboxItem
|
|
98
|
+
checked={compact}
|
|
99
|
+
closeOnSelect={!keepOpen}
|
|
100
|
+
onCheckedChange={(value) => setCompact(Boolean(value))}
|
|
101
|
+
>
|
|
102
|
+
Compact density
|
|
103
|
+
</DropdownMenuCheckboxItem>
|
|
104
|
+
<DropdownMenuCheckboxItem checked={keepOpen} closeOnSelect={false} onCheckedChange={(value) => setKeepOpen(Boolean(value))}>
|
|
105
|
+
Keep menu open
|
|
106
|
+
</DropdownMenuCheckboxItem>
|
|
107
|
+
<DropdownMenuSub>
|
|
108
|
+
<DropdownMenuSubTrigger>Export</DropdownMenuSubTrigger>
|
|
109
|
+
<DropdownMenuSubContent>
|
|
110
|
+
<DropdownMenuItem>CSV</DropdownMenuItem>
|
|
111
|
+
<DropdownMenuItem>PDF summary</DropdownMenuItem>
|
|
112
|
+
<DropdownMenuItem>JSON payload</DropdownMenuItem>
|
|
113
|
+
</DropdownMenuSubContent>
|
|
114
|
+
</DropdownMenuSub>
|
|
72
115
|
<DropdownMenuGroup>
|
|
73
116
|
<DropdownMenuRadioGroup value={status} onValueChange={(value) => setStatus(value)}>
|
|
74
117
|
<DropdownMenuRadioItem value="public">Public</DropdownMenuRadioItem>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { ComponentDemoMock } from "../types"
|
|
2
2
|
|
|
3
|
-
export const formRHFWrapperMock: ComponentDemoMock = {
|
|
4
|
-
code: `import { useForm } from "react-hook-form"
|
|
5
|
-
import { Button,
|
|
6
|
-
|
|
7
|
-
type DemoValues = {
|
|
8
|
-
name: string
|
|
3
|
+
export const formRHFWrapperMock: ComponentDemoMock = {
|
|
4
|
+
code: `import { useForm } from "react-hook-form"
|
|
5
|
+
import { Button, FormInput, FormSwitch, FormTextarea } from "tembro"
|
|
6
|
+
|
|
7
|
+
type DemoValues = {
|
|
8
|
+
name: string
|
|
9
9
|
ownerPhone: string
|
|
10
10
|
price: number | null
|
|
11
11
|
notes: string
|
|
@@ -27,24 +27,22 @@ export function Example() {
|
|
|
27
27
|
console.log(values)
|
|
28
28
|
})
|
|
29
29
|
|
|
30
|
-
return (
|
|
31
|
-
<form onSubmit={onSubmit} className="space-y-4">
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<FormInput
|
|
47
|
-
control={form.control}
|
|
30
|
+
return (
|
|
31
|
+
<form onSubmit={onSubmit} className="space-y-4">
|
|
32
|
+
<FormInput
|
|
33
|
+
control={form.control}
|
|
34
|
+
name="name"
|
|
35
|
+
label="Workspace name"
|
|
36
|
+
required
|
|
37
|
+
placeholder="Write a workspace title"
|
|
38
|
+
rules={{
|
|
39
|
+
required: "Workspace name is required",
|
|
40
|
+
minLength: { value: 3, message: "At least 3 characters" },
|
|
41
|
+
}}
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
<FormInput
|
|
45
|
+
control={form.control}
|
|
48
46
|
name="ownerPhone"
|
|
49
47
|
kind="phone"
|
|
50
48
|
label="Owner phone"
|
|
@@ -75,10 +73,10 @@ export function Example() {
|
|
|
75
73
|
|
|
76
74
|
<Button type="submit">Save</Button>
|
|
77
75
|
</form>
|
|
78
|
-
)`
|
|
79
|
-
,
|
|
80
|
-
htmlCode: '<form><label for="workspace">Workspace</label><input id="workspace" value="Azamat UI" /></form>',
|
|
81
|
-
cliCommand: "npx tembro add form-
|
|
76
|
+
)`
|
|
77
|
+
,
|
|
78
|
+
htmlCode: '<form><label for="workspace">Workspace</label><input id="workspace" value="Azamat UI" /></form>',
|
|
79
|
+
cliCommand: "npx tembro add form-input form-textarea form-switch",
|
|
82
80
|
highlights: ["control + name contract", "Universal `kind` variants", "Error display and required markers", "Consistent wrapper shell behavior"],
|
|
83
81
|
relatedBlockSlugs: ["settings-form", "crm-dashboard", "users-table"],
|
|
84
82
|
scenarios: [
|
|
@@ -96,17 +94,31 @@ export function Example() {
|
|
|
96
94
|
],
|
|
97
95
|
}
|
|
98
96
|
|
|
99
|
-
export const formSelectMock: ComponentDemoMock = {
|
|
100
|
-
code: `import { useForm } from "react-hook-form"
|
|
101
|
-
import { Button, FormSelect } from "tembro"
|
|
102
|
-
|
|
103
|
-
const statusOptions = [
|
|
104
|
-
{ label: "Draft", value: "draft" },
|
|
105
|
-
{ label: "Review", value: "review" },
|
|
106
|
-
{ label: "Live", value: "live" },
|
|
107
|
-
]
|
|
108
|
-
|
|
109
|
-
|
|
97
|
+
export const formSelectMock: ComponentDemoMock = {
|
|
98
|
+
code: `import { useForm } from "react-hook-form"
|
|
99
|
+
import { Button, FormSelect } from "tembro"
|
|
100
|
+
|
|
101
|
+
const statusOptions = [
|
|
102
|
+
{ label: "Draft", value: "draft" },
|
|
103
|
+
{ label: "Review", value: "review" },
|
|
104
|
+
{ label: "Live", value: "live" },
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
const workspaceOptions = [
|
|
108
|
+
{ value: "workspace-alpha", label: "Workspace Alpha", description: "Core design system route" },
|
|
109
|
+
{ value: "workspace-beta", label: "Workspace Beta", description: "CRM rollout workspace" },
|
|
110
|
+
]
|
|
111
|
+
|
|
112
|
+
async function loadWorkspaces(search: string) {
|
|
113
|
+
const query = search.trim().toLowerCase()
|
|
114
|
+
return workspaceOptions.filter((option) => !query || option.label.toLowerCase().includes(query))
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function loadWorkspace(value: string) {
|
|
118
|
+
return workspaceOptions.find((option) => option.value === value) ?? null
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export function Example() {
|
|
110
122
|
const form = useForm({
|
|
111
123
|
defaultValues: {
|
|
112
124
|
status: "review",
|
|
@@ -152,11 +164,25 @@ export function Example() {
|
|
|
152
164
|
],
|
|
153
165
|
}
|
|
154
166
|
|
|
155
|
-
export const formAsyncSelectMock: ComponentDemoMock = {
|
|
156
|
-
code: `import { useForm } from "react-hook-form"
|
|
157
|
-
import { Button, FormAsyncSelect } from "tembro"
|
|
158
|
-
|
|
159
|
-
|
|
167
|
+
export const formAsyncSelectMock: ComponentDemoMock = {
|
|
168
|
+
code: `import { useForm } from "react-hook-form"
|
|
169
|
+
import { Button, FormAsyncSelect } from "tembro"
|
|
170
|
+
|
|
171
|
+
const workspaceOptions = [
|
|
172
|
+
{ value: "workspace-alpha", label: "Workspace Alpha", description: "Core design system route" },
|
|
173
|
+
{ value: "workspace-beta", label: "Workspace Beta", description: "CRM rollout workspace" },
|
|
174
|
+
]
|
|
175
|
+
|
|
176
|
+
async function loadWorkspaces(search: string) {
|
|
177
|
+
const query = search.trim().toLowerCase()
|
|
178
|
+
return workspaceOptions.filter((option) => !query || option.label.toLowerCase().includes(query))
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
async function loadWorkspace(value: string) {
|
|
182
|
+
return workspaceOptions.find((option) => option.value === value) ?? null
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export function Example() {
|
|
160
186
|
const form = useForm({
|
|
161
187
|
defaultValues: {
|
|
162
188
|
ownerId: "workspace-alpha",
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import * as React from "react"
|
|
2
2
|
import { useForm, useWatch } from "react-hook-form"
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Badge,
|
|
6
|
+
Button,
|
|
7
|
+
FormInput,
|
|
8
|
+
FormSelect,
|
|
9
|
+
FormSwitch,
|
|
10
|
+
FormTextarea,
|
|
11
|
+
} from "@/index"
|
|
12
|
+
import { FormDatePicker } from "@/components/form/form-date-picker"
|
|
13
|
+
import { FormDateRangePicker } from "@/components/form/form-date-range-picker"
|
|
5
14
|
|
|
6
15
|
import type { ComponentDemoProps } from "../types"
|
|
7
16
|
|
|
@@ -11,6 +20,15 @@ type DemoValues = {
|
|
|
11
20
|
budget: number | null
|
|
12
21
|
notes: string
|
|
13
22
|
active: boolean
|
|
23
|
+
query: string
|
|
24
|
+
password: string
|
|
25
|
+
dueDate: string
|
|
26
|
+
period: {
|
|
27
|
+
from: string
|
|
28
|
+
to: string
|
|
29
|
+
}
|
|
30
|
+
periodFrom: string
|
|
31
|
+
periodTo: string
|
|
14
32
|
status: string
|
|
15
33
|
ownerId: string
|
|
16
34
|
}
|
|
@@ -55,6 +73,15 @@ export function FormWrapperShowcase({ mode }: ComponentDemoProps) {
|
|
|
55
73
|
budget: 120,
|
|
56
74
|
notes: "RHF wrapper coverage for control, name, and validation.",
|
|
57
75
|
active: true,
|
|
76
|
+
query: "billing",
|
|
77
|
+
password: "",
|
|
78
|
+
dueDate: "2026-07-18",
|
|
79
|
+
period: {
|
|
80
|
+
from: "2026-07-01",
|
|
81
|
+
to: "2026-07-14",
|
|
82
|
+
},
|
|
83
|
+
periodFrom: "2026-07-01",
|
|
84
|
+
periodTo: "2026-07-14",
|
|
58
85
|
status: "review",
|
|
59
86
|
ownerId: "workspace-alpha",
|
|
60
87
|
},
|
|
@@ -63,7 +90,7 @@ export function FormWrapperShowcase({ mode }: ComponentDemoProps) {
|
|
|
63
90
|
const activeValue = useWatch({ control: form.control, name: "active" })
|
|
64
91
|
const slug = pathname.split("/").filter(Boolean).at(-1)
|
|
65
92
|
|
|
66
|
-
if (slug === "form-select") {
|
|
93
|
+
if (slug === "form-select" || slug === "form-async-select") {
|
|
67
94
|
return (
|
|
68
95
|
<div className="grid gap-4 xl:grid-cols-2">
|
|
69
96
|
<FormSelect control={form.control} name="status" label="Release status" options={[...statusOptions]} />
|
|
@@ -80,15 +107,101 @@ export function FormWrapperShowcase({ mode }: ComponentDemoProps) {
|
|
|
80
107
|
)
|
|
81
108
|
}
|
|
82
109
|
|
|
83
|
-
if (slug === "form-
|
|
110
|
+
if (slug === "form-search-input") {
|
|
111
|
+
return (
|
|
112
|
+
<FormInput
|
|
113
|
+
control={form.control}
|
|
114
|
+
name="query"
|
|
115
|
+
kind="search"
|
|
116
|
+
label="Search query"
|
|
117
|
+
description="Search wrapper should keep label, hint and result-ready spacing together."
|
|
118
|
+
placeholder="Search workspaces"
|
|
119
|
+
/>
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (slug === "form-password-input") {
|
|
84
124
|
return (
|
|
85
|
-
<
|
|
125
|
+
<FormInput
|
|
86
126
|
control={form.control}
|
|
87
|
-
name="
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
127
|
+
name="password"
|
|
128
|
+
kind="password"
|
|
129
|
+
label="Workspace password"
|
|
130
|
+
description="Password wrapper keeps toggle behavior inside the same form shell."
|
|
131
|
+
placeholder="Enter secure password"
|
|
132
|
+
/>
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (slug === "form-number-input") {
|
|
137
|
+
return (
|
|
138
|
+
<FormInput
|
|
139
|
+
control={form.control}
|
|
140
|
+
name="budget"
|
|
141
|
+
kind="number"
|
|
142
|
+
label="Budget"
|
|
143
|
+
description="Numeric wrapper keeps parsed value handling inside the field contract."
|
|
144
|
+
min={0}
|
|
145
|
+
max={999999}
|
|
146
|
+
/>
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (slug === "form-phone-input") {
|
|
151
|
+
return (
|
|
152
|
+
<FormInput
|
|
153
|
+
control={form.control}
|
|
154
|
+
name="ownerPhone"
|
|
155
|
+
kind="phone"
|
|
156
|
+
label="Owner phone"
|
|
157
|
+
description="Phone wrapper preserves stable raw value while showing a formatted UI."
|
|
158
|
+
/>
|
|
159
|
+
)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (slug === "form-date-input") {
|
|
163
|
+
return (
|
|
164
|
+
<FormInput
|
|
165
|
+
control={form.control}
|
|
166
|
+
name="dueDate"
|
|
167
|
+
kind="date"
|
|
168
|
+
label="Due date"
|
|
169
|
+
description="Use the lightweight date input wrapper when string date entry is enough."
|
|
170
|
+
/>
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (slug === "form-date-range-input") {
|
|
175
|
+
return (
|
|
176
|
+
<FormInput
|
|
177
|
+
control={form.control}
|
|
178
|
+
name="period"
|
|
179
|
+
kind="date-range"
|
|
180
|
+
label="Reporting period"
|
|
181
|
+
description="Range input wrapper keeps from/to fields under one shell."
|
|
182
|
+
/>
|
|
183
|
+
)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (slug === "form-date-picker") {
|
|
187
|
+
return (
|
|
188
|
+
<FormDatePicker
|
|
189
|
+
control={form.control}
|
|
190
|
+
name="dueDate"
|
|
191
|
+
label="Launch date"
|
|
192
|
+
description="Use the picker wrapper when calendar selection matters more than raw typing."
|
|
193
|
+
/>
|
|
194
|
+
)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (slug === "form-date-range-picker") {
|
|
198
|
+
return (
|
|
199
|
+
<FormDateRangePicker
|
|
200
|
+
control={form.control}
|
|
201
|
+
fromName="periodFrom"
|
|
202
|
+
toName="periodTo"
|
|
203
|
+
label="Launch window"
|
|
204
|
+
description="Popover range picker keeps both fields synchronized inside one wrapper."
|
|
92
205
|
/>
|
|
93
206
|
)
|
|
94
207
|
}
|
|
@@ -96,9 +209,13 @@ export function FormWrapperShowcase({ mode }: ComponentDemoProps) {
|
|
|
96
209
|
return (
|
|
97
210
|
<form className="space-y-5">
|
|
98
211
|
<div className="grid gap-4 xl:grid-cols-2">
|
|
99
|
-
<
|
|
100
|
-
|
|
101
|
-
|
|
212
|
+
<FormInput
|
|
213
|
+
control={form.control}
|
|
214
|
+
name="name"
|
|
215
|
+
label="Workspace name"
|
|
216
|
+
description="Shared shell keeps required marker, helper text and error spacing aligned."
|
|
217
|
+
required
|
|
218
|
+
/>
|
|
102
219
|
|
|
103
220
|
<FormInput control={form.control} name="ownerPhone" kind="phone" label="Owner phone" />
|
|
104
221
|
<FormInput control={form.control} name="budget" kind="number" label="Budget" min={0} max={999999} />
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
1
|
import type { ComponentDemoBundle } from "./types"
|
|
4
2
|
|
|
5
3
|
import { alertMock, AlertShowcase } from "./alert"
|
|
@@ -9,10 +7,11 @@ import { activityFeedMock, ActivityFeedShowcase } from "./activity-feed"
|
|
|
9
7
|
import { ActionMenuShowcase, actionMenuMock } from "./action-menu"
|
|
10
8
|
import { appShellMock, AppShellShowcase } from "./app-shell"
|
|
11
9
|
import { appSidebarMock, AppSidebarShowcase } from "./app-sidebar"
|
|
12
|
-
import { asyncMultiSelectMock, AsyncMultiSelectShowcase } from "./async-multi-select"
|
|
13
10
|
import { asyncSelectMock, AsyncSelectShowcase } from "./async-select"
|
|
11
|
+
import { asyncMultiSelectMock, AsyncMultiSelectShowcase } from "./async-multi-select"
|
|
14
12
|
import { avatarMock, AvatarShowcase } from "./avatar"
|
|
15
13
|
import { carouselMock, CarouselShowcase } from "./carousel"
|
|
14
|
+
import { clearableInputMock, ClearableInputShowcase } from "./clearable-input"
|
|
16
15
|
import { jsonInputMock, JsonInputShowcase } from "./json-input"
|
|
17
16
|
import { qrCodeMock, QRCodeShowcase } from "./qr-code"
|
|
18
17
|
import { menubarMock, MenubarShowcase } from "./menubar"
|
|
@@ -28,25 +27,15 @@ import { cardMock, CardShowcase } from "./card"
|
|
|
28
27
|
import { checkboxMock, CheckboxShowcase } from "./checkbox"
|
|
29
28
|
import { codeBlockMock, CodeBlockShowcase } from "./code-block"
|
|
30
29
|
import { dualListPickerMock, DualListPickerShowcase } from "./dual-list-picker"
|
|
31
|
-
import { ClearableInputShowcase, clearableInputMock } from "./clearable-input"
|
|
32
30
|
import { collapseMock, CollapseShowcase } from "./collapse"
|
|
33
31
|
import { comboboxMock, ComboboxShowcase } from "./combobox"
|
|
34
32
|
import { commandBarMock, CommandBarShowcase } from "./command-bar"
|
|
35
|
-
import { ConfirmDialogShowcase, confirmDialogMock } from "./confirm-dialog"
|
|
36
33
|
import { commandPaletteMock, CommandPaletteShowcase } from "./command-palette"
|
|
34
|
+
import { ConfirmDialogShowcase, confirmDialogMock } from "./confirm-dialog"
|
|
37
35
|
import { copyButtonMock, CopyButtonShowcase } from "./copy-button"
|
|
38
36
|
import { copyFieldMock, CopyFieldShowcase } from "./copy-field"
|
|
39
37
|
import { dataStateMock, DataStateShowcase } from "./data-state"
|
|
40
38
|
import { dataTableMock, DataTableShowcase } from "./data-table"
|
|
41
|
-
import {
|
|
42
|
-
DataTablePartShowcase,
|
|
43
|
-
dataTableActionsColumnMock,
|
|
44
|
-
dataTablePaginationMock,
|
|
45
|
-
dataTableRowActionsMock,
|
|
46
|
-
dataTableSavedFiltersMock,
|
|
47
|
-
dataTableSelectColumnMock,
|
|
48
|
-
dataTableToolbarMock,
|
|
49
|
-
} from "./data-table-parts"
|
|
50
39
|
import { dateInputMock, DateInputShowcase } from "./date-input"
|
|
51
40
|
import { DatePickerShowcase, datePickerMock } from "./date-picker"
|
|
52
41
|
import { DateRangeInputShowcase, dateRangeInputMock } from "./date-range-input"
|
|
@@ -56,8 +45,6 @@ import { descriptionsMock, DescriptionsShowcase } from "./descriptions"
|
|
|
56
45
|
import { dialogMock, DialogShowcase } from "./dialog"
|
|
57
46
|
import { dropdownMenuMock, DropdownMenuShowcase } from "./dropdown-menu"
|
|
58
47
|
import { DrawerShowcase, drawerMock } from "./drawer"
|
|
59
|
-
import { emptyStateMock, EmptyStateShowcase } from "./empty-state"
|
|
60
|
-
import { FormBuilderShowcase, formBuilderMock } from "./form-builder"
|
|
61
48
|
import { FormWrapperShowcase, formAsyncSelectMock, formRHFWrapperMock, formSelectMock } from "./form-wrapper"
|
|
62
49
|
import { hoverCardMock, HoverCardShowcase } from "./hover-card"
|
|
63
50
|
import { kanbanBoardMock, KanbanBoardShowcase } from "./kanban-board"
|
|
@@ -190,12 +177,10 @@ export const premiumShowcaseDemoRegistry: Record<string, ComponentDemoBundle> =
|
|
|
190
177
|
"hover-card": { mock: hoverCardMock, Showcase: HoverCardShowcase },
|
|
191
178
|
"right-click-menu": { mock: rightClickMenuMock, Showcase: RightClickMenuShowcase },
|
|
192
179
|
"data-table": { mock: dataTableMock, Showcase: DataTableShowcase },
|
|
193
|
-
"data-table-
|
|
194
|
-
"data-table-
|
|
195
|
-
"data-table-
|
|
196
|
-
"data-table-
|
|
197
|
-
"data-table-select-column": { mock: dataTableSelectColumnMock, Showcase: (props) => React.createElement(DataTablePartShowcase, { ...props, slug: "data-table-select-column" }) },
|
|
198
|
-
"data-table-saved-filters": { mock: dataTableSavedFiltersMock, Showcase: (props) => React.createElement(DataTablePartShowcase, { ...props, slug: "data-table-saved-filters" }) },
|
|
180
|
+
"data-table-column-visibility-menu": { mock: dataTableMock, Showcase: DataTableShowcase },
|
|
181
|
+
"data-table-sortable-header": { mock: dataTableMock, Showcase: DataTableShowcase },
|
|
182
|
+
"data-table-bulk-actions": { mock: dataTableMock, Showcase: DataTableShowcase },
|
|
183
|
+
"data-table-view-presets": { mock: dataTableMock, Showcase: DataTableShowcase },
|
|
199
184
|
"saved-filter-select": { mock: savedFilterSelectMock, Showcase: SavedFilterSelectShowcase },
|
|
200
185
|
"form-field": { mock: formRHFWrapperMock, Showcase: FormWrapperShowcase },
|
|
201
186
|
"form-field-shell": { mock: formRHFWrapperMock, Showcase: FormWrapperShowcase },
|
|
@@ -212,7 +197,6 @@ export const premiumShowcaseDemoRegistry: Record<string, ComponentDemoBundle> =
|
|
|
212
197
|
"form-date-range-input": { mock: formRHFWrapperMock, Showcase: FormWrapperShowcase },
|
|
213
198
|
"form-date-picker": { mock: formRHFWrapperMock, Showcase: FormWrapperShowcase },
|
|
214
199
|
"form-date-range-picker": { mock: formRHFWrapperMock, Showcase: FormWrapperShowcase },
|
|
215
|
-
"form-builder": { mock: formBuilderMock, Showcase: FormBuilderShowcase },
|
|
216
200
|
"segmented-control": { mock: segmentedControlMock, Showcase: SegmentedControlShowcase },
|
|
217
201
|
skeleton: { mock: skeletonMock, Showcase: SkeletonShowcase },
|
|
218
202
|
spinner: { mock: spinnerMock, Showcase: SpinnerShowcase },
|
|
@@ -233,7 +217,6 @@ export const premiumShowcaseDemoRegistry: Record<string, ComponentDemoBundle> =
|
|
|
233
217
|
list: { mock: listMock, Showcase: ListShowcase },
|
|
234
218
|
"property-grid": { mock: propertyGridMock, Showcase: PropertyGridShowcase },
|
|
235
219
|
"activity-feed": { mock: activityFeedMock, Showcase: ActivityFeedShowcase },
|
|
236
|
-
"empty-state": { mock: emptyStateMock, Showcase: EmptyStateShowcase },
|
|
237
220
|
"loading-state": { mock: loadingStateMock, Showcase: LoadingStateShowcase },
|
|
238
221
|
"data-state": { mock: dataStateMock, Showcase: DataStateShowcase },
|
|
239
222
|
progress: { mock: progressMock, Showcase: ProgressShowcase },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentDemoMock } from "../types"
|
|
2
2
|
|
|
3
|
-
export const inputMock: ComponentDemoMock = {
|
|
4
|
-
code: `import { Label, Input } from "tembro"\n\nexport function Example() {\n return (\n <form className="space-y-4">\n <div>\n <Label htmlFor="support-email">Support email</Label>\n <Input id="support-email" type="email" defaultValue="team@acme.io" required />\n </div>\n\n <div>\n <Label htmlFor="component-search">Search components</Label>\n <Input\n id="component-search"\n value={query}\n onValueChange={setQuery}\n placeholder="Search by slug or title"\n clearable\n trailingAction={<span className="text-xs text-muted-foreground">12 results</span>}\n replaceTrailingWhenClear={false}\n />\n </div>\n\n <div>\n <Label htmlFor="api-prefix">Cost estimate</Label>\n <Input\n id="api-prefix"\n defaultValue="120"\n readOnly\n trailing={<span className="text-sm aui-text-muted">USD</span>}\n />\n </div>\n\n <div>\n <Label htmlFor="disabled-input">Locked status</Label>\n <Input id="disabled-input" disabled value="Locked while syncing" />\n </div>\n </form>\n )\n}\n`,
|
|
3
|
+
export const inputMock: ComponentDemoMock = {
|
|
4
|
+
code: `import { useState } from "react"\nimport { Label, Input } from "tembro"\n\nexport function Example() {\n const [query, setQuery] = useState("buttons")\n\n return (\n <form className="space-y-4">\n <div>\n <Label htmlFor="support-email">Support email</Label>\n <Input id="support-email" type="email" defaultValue="team@acme.io" required />\n </div>\n\n <div>\n <Label htmlFor="component-search">Search components</Label>\n <Input\n id="component-search"\n value={query}\n onValueChange={setQuery}\n placeholder="Search by slug or title"\n clearable\n trailingAction={<span className="text-xs text-muted-foreground">12 results</span>}\n replaceTrailingWhenClear={false}\n />\n </div>\n\n <div>\n <Label htmlFor="api-prefix">Cost estimate</Label>\n <Input\n id="api-prefix"\n defaultValue="120"\n readOnly\n trailing={<span className="text-sm aui-text-muted">USD</span>}\n />\n </div>\n\n <div>\n <Label htmlFor="disabled-input">Locked status</Label>\n <Input id="disabled-input" disabled value="Locked while syncing" />\n </div>\n </form>\n )\n}\n`,
|
|
5
5
|
htmlCode: `<label for="example">Search components</label>\n<input id="example" data-slot="input" type="text" placeholder="Search components..." />`,
|
|
6
6
|
cliCommand: "npx tembro add input",
|
|
7
7
|
highlights: [
|
|
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const maskedInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import { useState } from "react"
|
|
5
|
-
import { MaskedInput } from "
|
|
5
|
+
import { MaskedInput } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [value, setValue] = useState("AA-123")
|
|
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const moneyInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import { useState } from "react"
|
|
5
|
-
import { MoneyInput } from "
|
|
5
|
+
import { MoneyInput } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [value, setValue] = useState<number | null>(2990.5)
|
|
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const numberInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import { useState } from "react"
|
|
5
|
-
import { NumberInput, parseNumberInput } from "
|
|
5
|
+
import { NumberInput, parseNumberInput } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [value, setValue] = useState<number | null>(14)
|
|
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const phoneInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import { useState } from "react"
|
|
5
|
-
import { PhoneInput } from "
|
|
5
|
+
import { PhoneInput } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [value, setValue] = useState("+998 90 123 45 67")
|
|
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
|
|
|
2
2
|
|
|
3
3
|
export const quantityInputMock: ComponentDemoMock = {
|
|
4
4
|
code: `import { useState } from "react"
|
|
5
|
-
import { QuantityInput } from "
|
|
5
|
+
import { QuantityInput } from "tembro"
|
|
6
6
|
|
|
7
7
|
export function Example() {
|
|
8
8
|
const [quantity, setQuantity] = useState<number | null>(3)
|