tembro 2.0.3 → 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 -8
- package/dist/components/display/index.js +21 -29
- 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/demo.cjs +1 -1
- package/dist/components/form/demo.js +1 -2
- 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.d.ts +0 -1
- package/dist/components/form/index.js +11 -12
- package/dist/components/form/public.cjs +1 -1
- package/dist/components/form/public.d.ts +0 -9
- package/dist/components/form/public.js +7 -16
- 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/index.cjs +1 -1
- package/dist/components/inputs/index.d.ts +0 -2
- package/dist/components/inputs/index.js +3 -5
- package/dist/components/inputs/public.cjs +1 -1
- package/dist/components/inputs/public.d.ts +0 -2
- package/dist/components/inputs/public.js +3 -5
- 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.d.ts +0 -1
- package/dist/components/layout/index.js +4 -5
- package/dist/components/layout/public.cjs +1 -1
- package/dist/components/layout/public.d.ts +0 -1
- package/dist/components/layout/public.js +2 -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/modern/index.cjs +1 -1
- package/dist/components/modern/index.d.ts +0 -4
- package/dist/components/modern/index.js +12 -16
- 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 +145 -177
- package/dist/public-component-surface.cjs +1 -1
- package/dist/public-component-surface.js +0 -80
- 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 +287 -451
- 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 +467 -574
- 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 -24
- 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 -59
- 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 -8
- 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/demo.tsx +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/index.ts +0 -1
- package/packages/cli/vendor/src/components/form/public.ts +0 -11
- 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/index.ts +0 -2
- package/packages/cli/vendor/src/components/inputs/public.ts +0 -2
- 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/index.ts +0 -1
- package/packages/cli/vendor/src/components/layout/public.ts +0 -1
- 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/modern/index.ts +1 -5
- 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 -16
- 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 +83 -263
- 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 -46
- 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 -30
- 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 +206 -280
- package/registry.json +251 -329
- package/dist/components/display/aspect-ratio.cjs +0 -1
- package/dist/components/display/aspect-ratio.d.ts +0 -6
- package/dist/components/display/aspect-ratio.js +0 -21
- 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/display/float-button.cjs +0 -1
- package/dist/components/display/float-button.d.ts +0 -6
- package/dist/components/display/float-button.js +0 -20
- package/dist/components/display/key-value-card.cjs +0 -1
- package/dist/components/display/key-value-card.d.ts +0 -16
- package/dist/components/display/key-value-card.js +0 -35
- package/dist/components/display/keyboard-shortcut.cjs +0 -1
- package/dist/components/display/keyboard-shortcut.d.ts +0 -7
- package/dist/components/display/keyboard-shortcut.js +0 -18
- package/dist/components/display/skeleton-form.cjs +0 -1
- package/dist/components/display/skeleton-form.d.ts +0 -9
- package/dist/components/display/skeleton-form.js +0 -31
- package/dist/components/display/skeleton-table.cjs +0 -1
- package/dist/components/display/skeleton-table.d.ts +0 -9
- package/dist/components/display/skeleton-table.js +0 -42
- package/dist/components/display/tag-list.cjs +0 -1
- package/dist/components/display/tag-list.d.ts +0 -17
- package/dist/components/display/tag-list.js +0 -30
- package/dist/components/display/watermark.cjs +0 -1
- package/dist/components/display/watermark.d.ts +0 -6
- package/dist/components/display/watermark.js +0 -23
- 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/form/repeater-field.cjs +0 -1
- package/dist/components/form/repeater-field.d.ts +0 -16
- package/dist/components/form/repeater-field.js +0 -48
- package/dist/components/inputs/cascader.cjs +0 -1
- package/dist/components/inputs/cascader.d.ts +0 -13
- package/dist/components/inputs/cascader.js +0 -58
- package/dist/components/inputs/mention-input.cjs +0 -1
- package/dist/components/inputs/mention-input.d.ts +0 -18
- package/dist/components/inputs/mention-input.js +0 -96
- package/dist/components/layout/stack.cjs +0 -1
- package/dist/components/layout/stack.d.ts +0 -23
- package/dist/components/layout/stack.js +0 -57
- package/dist/components/modern/affix.cjs +0 -1
- package/dist/components/modern/affix.d.ts +0 -7
- package/dist/components/modern/affix.js +0 -18
- 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/affix/index.cjs +0 -1
- package/dist/showcase/premium/affix/index.d.ts +0 -2
- package/dist/showcase/premium/affix/index.js +0 -3
- package/dist/showcase/premium/affix/mock.cjs +0 -12
- package/dist/showcase/premium/affix/mock.d.ts +0 -2
- package/dist/showcase/premium/affix/mock.js +0 -15
- package/dist/showcase/premium/affix/showcase.cjs +0 -1
- package/dist/showcase/premium/affix/showcase.d.ts +0 -2
- package/dist/showcase/premium/affix/showcase.js +0 -64
- package/dist/showcase/premium/aspect-ratio/index.cjs +0 -1
- package/dist/showcase/premium/aspect-ratio/index.d.ts +0 -2
- package/dist/showcase/premium/aspect-ratio/index.js +0 -3
- package/dist/showcase/premium/aspect-ratio/mock.cjs +0 -11
- package/dist/showcase/premium/aspect-ratio/mock.d.ts +0 -2
- package/dist/showcase/premium/aspect-ratio/mock.js +0 -26
- package/dist/showcase/premium/aspect-ratio/showcase.cjs +0 -1
- package/dist/showcase/premium/aspect-ratio/showcase.d.ts +0 -2
- package/dist/showcase/premium/aspect-ratio/showcase.js +0 -53
- package/dist/showcase/premium/cascader/index.cjs +0 -1
- package/dist/showcase/premium/cascader/index.d.ts +0 -2
- package/dist/showcase/premium/cascader/index.js +0 -3
- package/dist/showcase/premium/cascader/mock.cjs +0 -9
- package/dist/showcase/premium/cascader/mock.d.ts +0 -2
- package/dist/showcase/premium/cascader/mock.js +0 -19
- package/dist/showcase/premium/cascader/showcase.cjs +0 -1
- package/dist/showcase/premium/cascader/showcase.d.ts +0 -2
- package/dist/showcase/premium/cascader/showcase.js +0 -43
- 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/float-button/index.cjs +0 -1
- package/dist/showcase/premium/float-button/index.d.ts +0 -2
- package/dist/showcase/premium/float-button/index.js +0 -3
- package/dist/showcase/premium/float-button/mock.cjs +0 -10
- package/dist/showcase/premium/float-button/mock.d.ts +0 -2
- package/dist/showcase/premium/float-button/mock.js +0 -15
- package/dist/showcase/premium/float-button/showcase.cjs +0 -1
- package/dist/showcase/premium/float-button/showcase.d.ts +0 -2
- package/dist/showcase/premium/float-button/showcase.js +0 -28
- 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/dist/showcase/premium/keyboard-shortcut/index.cjs +0 -1
- package/dist/showcase/premium/keyboard-shortcut/index.d.ts +0 -2
- package/dist/showcase/premium/keyboard-shortcut/index.js +0 -3
- package/dist/showcase/premium/keyboard-shortcut/mock.cjs +0 -5
- package/dist/showcase/premium/keyboard-shortcut/mock.d.ts +0 -2
- package/dist/showcase/premium/keyboard-shortcut/mock.js +0 -26
- package/dist/showcase/premium/keyboard-shortcut/showcase.cjs +0 -1
- package/dist/showcase/premium/keyboard-shortcut/showcase.d.ts +0 -1
- package/dist/showcase/premium/keyboard-shortcut/showcase.js +0 -64
- package/dist/showcase/premium/mention-input/index.cjs +0 -1
- package/dist/showcase/premium/mention-input/index.d.ts +0 -2
- package/dist/showcase/premium/mention-input/index.js +0 -3
- package/dist/showcase/premium/mention-input/mock.cjs +0 -11
- package/dist/showcase/premium/mention-input/mock.d.ts +0 -2
- package/dist/showcase/premium/mention-input/mock.js +0 -19
- package/dist/showcase/premium/mention-input/showcase.cjs +0 -1
- package/dist/showcase/premium/mention-input/showcase.d.ts +0 -2
- package/dist/showcase/premium/mention-input/showcase.js +0 -35
- package/dist/showcase/premium/skeleton-form/index.cjs +0 -1
- package/dist/showcase/premium/skeleton-form/index.d.ts +0 -2
- package/dist/showcase/premium/skeleton-form/index.js +0 -3
- package/dist/showcase/premium/skeleton-form/mock.cjs +0 -5
- package/dist/showcase/premium/skeleton-form/mock.d.ts +0 -2
- package/dist/showcase/premium/skeleton-form/mock.js +0 -19
- package/dist/showcase/premium/skeleton-form/showcase.cjs +0 -1
- package/dist/showcase/premium/skeleton-form/showcase.d.ts +0 -2
- package/dist/showcase/premium/skeleton-form/showcase.js +0 -52
- package/dist/showcase/premium/skeleton-table/index.cjs +0 -1
- package/dist/showcase/premium/skeleton-table/index.d.ts +0 -2
- package/dist/showcase/premium/skeleton-table/index.js +0 -3
- package/dist/showcase/premium/skeleton-table/mock.cjs +0 -5
- package/dist/showcase/premium/skeleton-table/mock.d.ts +0 -2
- package/dist/showcase/premium/skeleton-table/mock.js +0 -19
- package/dist/showcase/premium/skeleton-table/showcase.cjs +0 -1
- package/dist/showcase/premium/skeleton-table/showcase.d.ts +0 -2
- package/dist/showcase/premium/skeleton-table/showcase.js +0 -59
- package/dist/showcase/premium/stack/index.cjs +0 -1
- package/dist/showcase/premium/stack/index.d.ts +0 -2
- package/dist/showcase/premium/stack/index.js +0 -3
- package/dist/showcase/premium/stack/mock.cjs +0 -10
- package/dist/showcase/premium/stack/mock.d.ts +0 -2
- package/dist/showcase/premium/stack/mock.js +0 -26
- package/dist/showcase/premium/stack/showcase.cjs +0 -1
- package/dist/showcase/premium/stack/showcase.d.ts +0 -1
- package/dist/showcase/premium/stack/showcase.js +0 -47
- package/dist/showcase/premium/tag-list/index.cjs +0 -1
- package/dist/showcase/premium/tag-list/index.d.ts +0 -2
- package/dist/showcase/premium/tag-list/index.js +0 -3
- package/dist/showcase/premium/tag-list/mock.cjs +0 -12
- package/dist/showcase/premium/tag-list/mock.d.ts +0 -2
- package/dist/showcase/premium/tag-list/mock.js +0 -26
- package/dist/showcase/premium/tag-list/showcase.cjs +0 -1
- package/dist/showcase/premium/tag-list/showcase.d.ts +0 -2
- package/dist/showcase/premium/tag-list/showcase.js +0 -83
- package/dist/showcase/premium/watermark/index.cjs +0 -1
- package/dist/showcase/premium/watermark/index.d.ts +0 -2
- package/dist/showcase/premium/watermark/index.js +0 -3
- package/dist/showcase/premium/watermark/mock.cjs +0 -11
- package/dist/showcase/premium/watermark/mock.d.ts +0 -2
- package/dist/showcase/premium/watermark/mock.js +0 -26
- package/dist/showcase/premium/watermark/showcase.cjs +0 -1
- package/dist/showcase/premium/watermark/showcase.d.ts +0 -2
- package/dist/showcase/premium/watermark/showcase.js +0 -34
- package/packages/cli/vendor/src/components/display/aspect-ratio.tsx +0 -22
- 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/display/float-button.tsx +0 -27
- package/packages/cli/vendor/src/components/display/key-value-card.tsx +0 -50
- package/packages/cli/vendor/src/components/display/keyboard-shortcut.tsx +0 -31
- package/packages/cli/vendor/src/components/display/skeleton-form.tsx +0 -51
- package/packages/cli/vendor/src/components/display/skeleton-table.tsx +0 -59
- package/packages/cli/vendor/src/components/display/tag-list.tsx +0 -52
- package/packages/cli/vendor/src/components/display/watermark.tsx +0 -20
- 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/form/repeater-field.tsx +0 -93
- package/packages/cli/vendor/src/components/inputs/cascader.tsx +0 -41
- package/packages/cli/vendor/src/components/inputs/mention-input.tsx +0 -162
- package/packages/cli/vendor/src/components/layout/stack.tsx +0 -106
- package/packages/cli/vendor/src/components/modern/affix.tsx +0 -21
- 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/affix/index.ts +0 -3
- package/packages/cli/vendor/src/showcase/premium/affix/mock.ts +0 -26
- package/packages/cli/vendor/src/showcase/premium/affix/showcase.tsx +0 -37
- package/packages/cli/vendor/src/showcase/premium/aspect-ratio/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/aspect-ratio/mock.ts +0 -26
- package/packages/cli/vendor/src/showcase/premium/aspect-ratio/showcase.tsx +0 -37
- package/packages/cli/vendor/src/showcase/premium/cascader/index.ts +0 -3
- package/packages/cli/vendor/src/showcase/premium/cascader/mock.ts +0 -24
- package/packages/cli/vendor/src/showcase/premium/cascader/showcase.tsx +0 -20
- 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/float-button/index.ts +0 -3
- package/packages/cli/vendor/src/showcase/premium/float-button/mock.ts +0 -24
- package/packages/cli/vendor/src/showcase/premium/float-button/showcase.tsx +0 -21
- 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
- package/packages/cli/vendor/src/showcase/premium/keyboard-shortcut/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/keyboard-shortcut/mock.ts +0 -20
- package/packages/cli/vendor/src/showcase/premium/keyboard-shortcut/showcase.tsx +0 -42
- package/packages/cli/vendor/src/showcase/premium/mention-input/index.ts +0 -3
- package/packages/cli/vendor/src/showcase/premium/mention-input/mock.ts +0 -26
- package/packages/cli/vendor/src/showcase/premium/mention-input/showcase.tsx +0 -27
- package/packages/cli/vendor/src/showcase/premium/skeleton-form/index.ts +0 -3
- package/packages/cli/vendor/src/showcase/premium/skeleton-form/mock.ts +0 -20
- package/packages/cli/vendor/src/showcase/premium/skeleton-form/showcase.tsx +0 -34
- package/packages/cli/vendor/src/showcase/premium/skeleton-table/index.ts +0 -3
- package/packages/cli/vendor/src/showcase/premium/skeleton-table/mock.ts +0 -20
- package/packages/cli/vendor/src/showcase/premium/skeleton-table/showcase.tsx +0 -37
- package/packages/cli/vendor/src/showcase/premium/stack/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/stack/mock.ts +0 -25
- package/packages/cli/vendor/src/showcase/premium/stack/showcase.tsx +0 -22
- package/packages/cli/vendor/src/showcase/premium/tag-list/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/tag-list/mock.ts +0 -27
- package/packages/cli/vendor/src/showcase/premium/tag-list/showcase.tsx +0 -55
- package/packages/cli/vendor/src/showcase/premium/watermark/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/watermark/mock.ts +0 -26
- package/packages/cli/vendor/src/showcase/premium/watermark/showcase.tsx +0 -26
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { XIcon } from "lucide-react"
|
|
3
|
-
|
|
4
|
-
import { Badge } from "@/components/ui/badge"
|
|
5
|
-
import { cn } from "@/lib/utils"
|
|
6
|
-
|
|
7
|
-
export type TagListItem = {
|
|
8
|
-
key: string
|
|
9
|
-
label: React.ReactNode
|
|
10
|
-
variant?: React.ComponentProps<typeof Badge>["variant"]
|
|
11
|
-
disabled?: boolean
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export type TagListProps = React.ComponentProps<"div"> & {
|
|
15
|
-
items: TagListItem[]
|
|
16
|
-
max?: number
|
|
17
|
-
removable?: boolean
|
|
18
|
-
onRemove?: (item: TagListItem) => void
|
|
19
|
-
overflowLabel?: (count: number) => React.ReactNode
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function TagList({ items, max, removable = false, onRemove, overflowLabel = (count) => `+${count}`, className, ...props }: TagListProps) {
|
|
23
|
-
const visibleItems = typeof max === "number" ? items.slice(0, max) : items
|
|
24
|
-
const overflowCount = typeof max === "number" ? Math.max(items.length - max, 0) : 0
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
<div data-slot="tag-list" className={cn("flex flex-wrap items-center gap-1.5", className)} {...props}>
|
|
28
|
-
{visibleItems.map((item) => (
|
|
29
|
-
<Badge
|
|
30
|
-
key={item.key}
|
|
31
|
-
variant={item.variant}
|
|
32
|
-
className={cn("gap-1", item.disabled && "opacity-55")}
|
|
33
|
-
>
|
|
34
|
-
<span>{item.label}</span>
|
|
35
|
-
{removable && !item.disabled && (
|
|
36
|
-
<button
|
|
37
|
-
type="button"
|
|
38
|
-
aria-label="Remove tag"
|
|
39
|
-
className="rounded-sm text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
40
|
-
onClick={() => onRemove?.(item)}
|
|
41
|
-
>
|
|
42
|
-
<XIcon className="size-3" />
|
|
43
|
-
</button>
|
|
44
|
-
)}
|
|
45
|
-
</Badge>
|
|
46
|
-
))}
|
|
47
|
-
{overflowCount > 0 && <Badge variant="outline">{overflowLabel(overflowCount)}</Badge>}
|
|
48
|
-
</div>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export { TagList }
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
|
-
import { cn } from "@/lib/utils"
|
|
4
|
-
|
|
5
|
-
export type WatermarkProps = React.ComponentProps<"div"> & {
|
|
6
|
-
text?: string
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function Watermark({ text = "Azamat UI", className, children, ...props }: WatermarkProps) {
|
|
10
|
-
return (
|
|
11
|
-
<div data-slot="watermark" className={cn("relative overflow-hidden", className)} {...props}>
|
|
12
|
-
<div className="pointer-events-none absolute inset-0 z-0 grid place-items-center opacity-10">
|
|
13
|
-
<span className="rotate-[-24deg] select-none text-4xl font-bold tracking-widest text-muted-foreground">{text}</span>
|
|
14
|
-
</div>
|
|
15
|
-
<div className="relative z-10">{children}</div>
|
|
16
|
-
</div>
|
|
17
|
-
)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export { Watermark }
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { SearchXIcon } from "lucide-react"
|
|
3
|
-
|
|
4
|
-
import { Button } from "@/components/ui/button"
|
|
5
|
-
import { cn } from "@/lib/utils"
|
|
6
|
-
|
|
7
|
-
export type EmptySearchStateProps = React.ComponentProps<"div"> & {
|
|
8
|
-
query?: string
|
|
9
|
-
title?: React.ReactNode
|
|
10
|
-
description?: React.ReactNode
|
|
11
|
-
suggestions?: React.ReactNode
|
|
12
|
-
onClear?: () => void
|
|
13
|
-
clearLabel?: React.ReactNode
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function EmptySearchState({
|
|
17
|
-
query,
|
|
18
|
-
title = "No results found",
|
|
19
|
-
description,
|
|
20
|
-
suggestions,
|
|
21
|
-
onClear,
|
|
22
|
-
clearLabel = "Clear search",
|
|
23
|
-
className,
|
|
24
|
-
...props
|
|
25
|
-
}: EmptySearchStateProps) {
|
|
26
|
-
return (
|
|
27
|
-
<div
|
|
28
|
-
data-slot="empty-search-state"
|
|
29
|
-
className={cn(
|
|
30
|
-
"flex flex-col items-center justify-center p-8 text-center min-h-[300px]",
|
|
31
|
-
className
|
|
32
|
-
)}
|
|
33
|
-
{...props}
|
|
34
|
-
>
|
|
35
|
-
<div className="mb-4 flex size-12 items-center justify-center rounded-full bg-muted/50 text-muted-foreground">
|
|
36
|
-
<SearchXIcon className="size-6" />
|
|
37
|
-
</div>
|
|
38
|
-
<h3 className="text-lg font-semibold tracking-tight">
|
|
39
|
-
{title} {query ? `for "${query}"` : ""}
|
|
40
|
-
</h3>
|
|
41
|
-
|
|
42
|
-
{description && (
|
|
43
|
-
<p className="mt-2 text-sm text-muted-foreground max-w-sm">
|
|
44
|
-
{description}
|
|
45
|
-
</p>
|
|
46
|
-
)}
|
|
47
|
-
|
|
48
|
-
{suggestions && (
|
|
49
|
-
<div className="mt-4 text-sm text-muted-foreground">
|
|
50
|
-
{suggestions}
|
|
51
|
-
</div>
|
|
52
|
-
)}
|
|
53
|
-
|
|
54
|
-
{onClear && (
|
|
55
|
-
<div className="mt-6">
|
|
56
|
-
<Button variant="outline" onClick={onClear}>
|
|
57
|
-
{clearLabel}
|
|
58
|
-
</Button>
|
|
59
|
-
</div>
|
|
60
|
-
)}
|
|
61
|
-
</div>
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export { EmptySearchState }
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { InboxIcon } from "lucide-react"
|
|
3
|
-
|
|
4
|
-
import { Button } from "@/components/ui/button"
|
|
5
|
-
import { cn } from "@/lib/utils"
|
|
6
|
-
|
|
7
|
-
export type EmptyStateProps = React.ComponentProps<"div"> & {
|
|
8
|
-
icon?: React.ReactNode
|
|
9
|
-
title?: React.ReactNode
|
|
10
|
-
description?: React.ReactNode
|
|
11
|
-
action?: React.ReactNode
|
|
12
|
-
actionLabel?: React.ReactNode
|
|
13
|
-
onAction?: () => void
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function EmptyState({
|
|
17
|
-
className,
|
|
18
|
-
icon,
|
|
19
|
-
title = "No data",
|
|
20
|
-
description,
|
|
21
|
-
action,
|
|
22
|
-
actionLabel,
|
|
23
|
-
onAction,
|
|
24
|
-
...props
|
|
25
|
-
}: EmptyStateProps) {
|
|
26
|
-
return (
|
|
27
|
-
<div
|
|
28
|
-
data-slot="empty-state"
|
|
29
|
-
className={cn(
|
|
30
|
-
"flex min-h-52 flex-col items-center justify-center gap-4 rounded-[var(--radius-3xl)] border border-dashed border-border/80 bg-muted/25 p-10 text-center shadow-sm ring-1 ring-foreground/4",
|
|
31
|
-
className
|
|
32
|
-
)}
|
|
33
|
-
{...props}
|
|
34
|
-
>
|
|
35
|
-
<div className="flex size-12 items-center justify-center rounded-full border border-border/70 bg-background/92 text-muted-foreground shadow-[0_1px_0_rgba(255,255,255,0.08)]">
|
|
36
|
-
{icon ?? <InboxIcon className="size-5" />}
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<div className="grid gap-1.5">
|
|
40
|
-
{title && <h3 className="text-base font-semibold tracking-tight text-foreground">{title}</h3>}
|
|
41
|
-
{description && (
|
|
42
|
-
<p className="max-w-sm text-sm leading-6 text-muted-foreground">{description}</p>
|
|
43
|
-
)}
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
{action ??
|
|
47
|
-
(actionLabel && onAction ? (
|
|
48
|
-
<Button type="button" variant="outline" size="sm" onClick={onAction}>
|
|
49
|
-
{actionLabel}
|
|
50
|
-
</Button>
|
|
51
|
-
) : null)}
|
|
52
|
-
</div>
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export { EmptyState }
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { XIcon } from "lucide-react"
|
|
3
|
-
|
|
4
|
-
import { Badge } from "@/components/ui/badge"
|
|
5
|
-
import { Button } from "@/components/ui/button"
|
|
6
|
-
import { cn, stopInteractivePropagation } from "@/lib/utils"
|
|
7
|
-
|
|
8
|
-
export type FilterChip = {
|
|
9
|
-
key: string
|
|
10
|
-
label: React.ReactNode
|
|
11
|
-
value?: React.ReactNode
|
|
12
|
-
tone?: "default" | "success" | "warning" | "danger" | "info" | "muted"
|
|
13
|
-
disabled?: boolean
|
|
14
|
-
hidden?: boolean
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export type FilterChipsProps = React.ComponentProps<"div"> & {
|
|
18
|
-
chips: FilterChip[]
|
|
19
|
-
clearLabel?: React.ReactNode
|
|
20
|
-
empty?: React.ReactNode
|
|
21
|
-
onRemove?: (key: string) => void
|
|
22
|
-
onClear?: () => void
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const chipVariant: Record<NonNullable<FilterChip["tone"]>, React.ComponentProps<typeof Badge>["variant"]> = {
|
|
26
|
-
default: "secondary",
|
|
27
|
-
success: "secondary",
|
|
28
|
-
warning: "outline",
|
|
29
|
-
danger: "destructive",
|
|
30
|
-
info: "outline",
|
|
31
|
-
muted: "outline",
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function FilterChips({
|
|
35
|
-
chips,
|
|
36
|
-
clearLabel = "Clear all",
|
|
37
|
-
empty = "No active filters",
|
|
38
|
-
onRemove,
|
|
39
|
-
onClear,
|
|
40
|
-
className,
|
|
41
|
-
...props
|
|
42
|
-
}: FilterChipsProps) {
|
|
43
|
-
const visibleChips = chips.filter((chip) => !chip.hidden)
|
|
44
|
-
if (!visibleChips.length) {
|
|
45
|
-
return <div data-slot="filter-chips-empty" className={cn("text-sm text-muted-foreground", className)} {...props}>{empty}</div>
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<div data-slot="filter-chips" className={cn("flex flex-wrap items-center gap-2", className)} {...props}>
|
|
50
|
-
{visibleChips.map((chip) => (
|
|
51
|
-
<Badge key={chip.key} variant={chipVariant[chip.tone ?? "default"]} className={cn("gap-1.5", chip.disabled && "opacity-60")}>
|
|
52
|
-
<span>{chip.label}</span>
|
|
53
|
-
{chip.value !== undefined && <span className="text-muted-foreground">{chip.value}</span>}
|
|
54
|
-
{onRemove && !chip.disabled && (
|
|
55
|
-
<button
|
|
56
|
-
type="button"
|
|
57
|
-
className="rounded-full p-0.5 hover:bg-muted"
|
|
58
|
-
onClick={(event) => {
|
|
59
|
-
stopInteractivePropagation(event)
|
|
60
|
-
onRemove(chip.key)
|
|
61
|
-
}}
|
|
62
|
-
onMouseDown={stopInteractivePropagation}
|
|
63
|
-
onDoubleClick={stopInteractivePropagation}
|
|
64
|
-
>
|
|
65
|
-
<XIcon className="size-3" />
|
|
66
|
-
</button>
|
|
67
|
-
)}
|
|
68
|
-
</Badge>
|
|
69
|
-
))}
|
|
70
|
-
{onClear && (
|
|
71
|
-
<Button
|
|
72
|
-
type="button"
|
|
73
|
-
variant="ghost"
|
|
74
|
-
size="xs"
|
|
75
|
-
onClick={(event) => {
|
|
76
|
-
stopInteractivePropagation(event)
|
|
77
|
-
onClear()
|
|
78
|
-
}}
|
|
79
|
-
onMouseDown={stopInteractivePropagation}
|
|
80
|
-
onDoubleClick={stopInteractivePropagation}
|
|
81
|
-
>
|
|
82
|
-
{clearLabel}
|
|
83
|
-
</Button>
|
|
84
|
-
)}
|
|
85
|
-
</div>
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export { FilterChips }
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { PlusIcon, Trash2Icon } from "lucide-react"
|
|
3
|
-
|
|
4
|
-
import { Button } from "@/components/ui/button"
|
|
5
|
-
import { cn } from "@/lib/utils"
|
|
6
|
-
|
|
7
|
-
export type RepeaterFieldProps<T> = Omit<React.ComponentProps<"div">, "value" | "onChange"> & {
|
|
8
|
-
value: T[]
|
|
9
|
-
onValueChange: (value: T[]) => void
|
|
10
|
-
renderItem: (item: T, index: number, helpers: { remove: () => void; update: (item: T) => void }) => React.ReactNode
|
|
11
|
-
createItem: () => T
|
|
12
|
-
addLabel?: React.ReactNode
|
|
13
|
-
max?: number
|
|
14
|
-
min?: number
|
|
15
|
-
disabled?: boolean
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function RepeaterField<T>({
|
|
19
|
-
value,
|
|
20
|
-
onValueChange,
|
|
21
|
-
renderItem,
|
|
22
|
-
createItem,
|
|
23
|
-
addLabel = "Add item",
|
|
24
|
-
max = Infinity,
|
|
25
|
-
min = 0,
|
|
26
|
-
disabled = false,
|
|
27
|
-
className,
|
|
28
|
-
...props
|
|
29
|
-
}: RepeaterFieldProps<T>) {
|
|
30
|
-
const handleAdd = () => {
|
|
31
|
-
if (value.length < max) {
|
|
32
|
-
onValueChange([...value, createItem()])
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const handleRemove = (indexToRemove: number) => {
|
|
37
|
-
if (value.length > min) {
|
|
38
|
-
onValueChange(value.filter((_, index) => index !== indexToRemove))
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const handleUpdate = (indexToUpdate: number, newItem: T) => {
|
|
43
|
-
const newItems = [...value]
|
|
44
|
-
newItems[indexToUpdate] = newItem
|
|
45
|
-
onValueChange(newItems)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const canAdd = value.length < max && !disabled
|
|
49
|
-
const canRemove = value.length > min && !disabled
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<div data-slot="repeater-field" className={cn("flex flex-col gap-4", className)} {...props}>
|
|
53
|
-
{value.map((item, index) => (
|
|
54
|
-
<div key={index} className="flex items-start gap-2">
|
|
55
|
-
<div className="flex-1 min-w-0">
|
|
56
|
-
{renderItem(item, index, {
|
|
57
|
-
remove: () => handleRemove(index),
|
|
58
|
-
update: (newItem: T) => handleUpdate(index, newItem),
|
|
59
|
-
})}
|
|
60
|
-
</div>
|
|
61
|
-
{canRemove && (
|
|
62
|
-
<Button
|
|
63
|
-
type="button"
|
|
64
|
-
variant="outline"
|
|
65
|
-
size="icon"
|
|
66
|
-
className="shrink-0 text-muted-foreground hover:text-destructive"
|
|
67
|
-
onClick={() => handleRemove(index)}
|
|
68
|
-
aria-label="Remove item"
|
|
69
|
-
>
|
|
70
|
-
<Trash2Icon className="size-4" />
|
|
71
|
-
</Button>
|
|
72
|
-
)}
|
|
73
|
-
</div>
|
|
74
|
-
))}
|
|
75
|
-
{canAdd && (
|
|
76
|
-
<div>
|
|
77
|
-
<Button
|
|
78
|
-
type="button"
|
|
79
|
-
variant="outline"
|
|
80
|
-
size="sm"
|
|
81
|
-
onClick={handleAdd}
|
|
82
|
-
className="w-full sm:w-auto"
|
|
83
|
-
>
|
|
84
|
-
<PlusIcon className="mr-2 size-4" />
|
|
85
|
-
{addLabel}
|
|
86
|
-
</Button>
|
|
87
|
-
</div>
|
|
88
|
-
)}
|
|
89
|
-
</div>
|
|
90
|
-
)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export { RepeaterField }
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
|
-
import { cn } from "@/lib/utils"
|
|
4
|
-
|
|
5
|
-
export type CascaderOption = {
|
|
6
|
-
label: React.ReactNode
|
|
7
|
-
value: string
|
|
8
|
-
children?: CascaderOption[]
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type CascaderProps = React.ComponentProps<"div"> & {
|
|
12
|
-
options: CascaderOption[]
|
|
13
|
-
value?: string[]
|
|
14
|
-
onValueChange?: (value: string[]) => void
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function Cascader({ options, value = [], onValueChange, className, ...props }: CascaderProps) {
|
|
18
|
-
const firstValue = value[0] ?? ""
|
|
19
|
-
const secondOptions = options.find((item) => item.value === firstValue)?.children ?? []
|
|
20
|
-
const secondValue = value[1] ?? ""
|
|
21
|
-
const thirdOptions = secondOptions.find((item) => item.value === secondValue)?.children ?? []
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<div data-slot="cascader" className={cn("grid gap-2 sm:grid-cols-3", className)} {...props}>
|
|
25
|
-
<select className="h-10 rounded-md border bg-background px-3 text-sm" value={firstValue} onChange={(event) => onValueChange?.([event.target.value])}>
|
|
26
|
-
<option value="">Select</option>
|
|
27
|
-
{options.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}
|
|
28
|
-
</select>
|
|
29
|
-
<select className="h-10 rounded-md border bg-background px-3 text-sm" value={secondValue} disabled={!secondOptions.length} onChange={(event) => onValueChange?.([firstValue, event.target.value])}>
|
|
30
|
-
<option value="">Select</option>
|
|
31
|
-
{secondOptions.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}
|
|
32
|
-
</select>
|
|
33
|
-
<select className="h-10 rounded-md border bg-background px-3 text-sm" value={value[2] ?? ""} disabled={!thirdOptions.length} onChange={(event) => onValueChange?.([firstValue, secondValue, event.target.value])}>
|
|
34
|
-
<option value="">Select</option>
|
|
35
|
-
{thirdOptions.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}
|
|
36
|
-
</select>
|
|
37
|
-
</div>
|
|
38
|
-
)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { Cascader }
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
|
-
import { cn } from "@/lib/utils"
|
|
4
|
-
|
|
5
|
-
export type MentionOption = {
|
|
6
|
-
label: React.ReactNode
|
|
7
|
-
value: string
|
|
8
|
-
searchText?: string
|
|
9
|
-
insertValue?: string
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export type MentionInputProps = Omit<React.ComponentProps<"textarea">, "value" | "defaultValue"> & {
|
|
13
|
-
value?: string
|
|
14
|
-
defaultValue?: string
|
|
15
|
-
options?: MentionOption[]
|
|
16
|
-
onMentionSelect?: (value: string) => void
|
|
17
|
-
onValueChange?: (value: string) => void
|
|
18
|
-
trigger?: string
|
|
19
|
-
maxSuggestions?: number
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function getTriggerMatch(value: string, selectionStart: number, trigger: string) {
|
|
23
|
-
const prefix = value.slice(0, selectionStart)
|
|
24
|
-
const triggerIndex = prefix.lastIndexOf(trigger)
|
|
25
|
-
|
|
26
|
-
if (triggerIndex < 0) return null
|
|
27
|
-
|
|
28
|
-
const previousCharacter = prefix[triggerIndex - 1]
|
|
29
|
-
if (previousCharacter && /\S/.test(previousCharacter)) return null
|
|
30
|
-
|
|
31
|
-
const query = prefix.slice(triggerIndex + trigger.length)
|
|
32
|
-
if (/\s/.test(query)) return null
|
|
33
|
-
|
|
34
|
-
return { triggerIndex, query }
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function MentionInput({
|
|
38
|
-
value,
|
|
39
|
-
defaultValue = "",
|
|
40
|
-
options = [],
|
|
41
|
-
onMentionSelect,
|
|
42
|
-
onValueChange,
|
|
43
|
-
className,
|
|
44
|
-
trigger = "@",
|
|
45
|
-
maxSuggestions = 6,
|
|
46
|
-
onChange,
|
|
47
|
-
onKeyDown,
|
|
48
|
-
...props
|
|
49
|
-
}: MentionInputProps) {
|
|
50
|
-
const textareaRef = React.useRef<HTMLTextAreaElement>(null)
|
|
51
|
-
const [internalValue, setInternalValue] = React.useState(defaultValue)
|
|
52
|
-
const [selectionStart, setSelectionStart] = React.useState(0)
|
|
53
|
-
const [activeIndex, setActiveIndex] = React.useState(0)
|
|
54
|
-
const currentValue = value ?? internalValue
|
|
55
|
-
const triggerMatch = getTriggerMatch(currentValue, selectionStart, trigger)
|
|
56
|
-
const filteredOptions = React.useMemo(() => {
|
|
57
|
-
if (!triggerMatch) return []
|
|
58
|
-
const normalizedQuery = triggerMatch.query.trim().toLowerCase()
|
|
59
|
-
|
|
60
|
-
return options
|
|
61
|
-
.filter((option) => {
|
|
62
|
-
if (!normalizedQuery) return true
|
|
63
|
-
const rawLabel = typeof option.label === "string" ? option.label : option.value
|
|
64
|
-
const haystack = `${option.value} ${option.searchText ?? ""} ${rawLabel}`.toLowerCase()
|
|
65
|
-
return haystack.includes(normalizedQuery)
|
|
66
|
-
})
|
|
67
|
-
.slice(0, maxSuggestions)
|
|
68
|
-
}, [maxSuggestions, options, triggerMatch])
|
|
69
|
-
const showSuggestions = filteredOptions.length > 0 && triggerMatch !== null
|
|
70
|
-
|
|
71
|
-
React.useEffect(() => {
|
|
72
|
-
if (!showSuggestions) setActiveIndex(0)
|
|
73
|
-
}, [showSuggestions])
|
|
74
|
-
|
|
75
|
-
function updateValue(nextValue: string, event?: React.ChangeEvent<HTMLTextAreaElement>) {
|
|
76
|
-
if (value === undefined) setInternalValue(nextValue)
|
|
77
|
-
onValueChange?.(nextValue)
|
|
78
|
-
if (event) onChange?.(event)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function insertMention(option: MentionOption) {
|
|
82
|
-
if (!triggerMatch) return
|
|
83
|
-
|
|
84
|
-
const mentionValue = option.insertValue ?? option.value
|
|
85
|
-
const nextValue = `${currentValue.slice(0, triggerMatch.triggerIndex)}${trigger}${mentionValue} ${currentValue.slice(selectionStart)}`
|
|
86
|
-
const nextCursor = triggerMatch.triggerIndex + trigger.length + mentionValue.length + 1
|
|
87
|
-
|
|
88
|
-
if (value === undefined) setInternalValue(nextValue)
|
|
89
|
-
onValueChange?.(nextValue)
|
|
90
|
-
onMentionSelect?.(option.value)
|
|
91
|
-
|
|
92
|
-
requestAnimationFrame(() => {
|
|
93
|
-
textareaRef.current?.focus()
|
|
94
|
-
textareaRef.current?.setSelectionRange(nextCursor, nextCursor)
|
|
95
|
-
setSelectionStart(nextCursor)
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return (
|
|
100
|
-
<div data-slot="mention-input" className="grid gap-2">
|
|
101
|
-
<textarea
|
|
102
|
-
ref={textareaRef}
|
|
103
|
-
value={currentValue}
|
|
104
|
-
className={cn("min-h-24 rounded-md border bg-background p-3 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", className)}
|
|
105
|
-
onChange={(event) => {
|
|
106
|
-
updateValue(event.target.value, event)
|
|
107
|
-
setSelectionStart(event.target.selectionStart ?? event.target.value.length)
|
|
108
|
-
}}
|
|
109
|
-
onClick={(event) => setSelectionStart(event.currentTarget.selectionStart ?? 0)}
|
|
110
|
-
onKeyUp={(event) => setSelectionStart(event.currentTarget.selectionStart ?? 0)}
|
|
111
|
-
onKeyDown={(event) => {
|
|
112
|
-
if (showSuggestions) {
|
|
113
|
-
if (event.key === "ArrowDown") {
|
|
114
|
-
event.preventDefault()
|
|
115
|
-
setActiveIndex((current) => (current + 1) % filteredOptions.length)
|
|
116
|
-
return
|
|
117
|
-
}
|
|
118
|
-
if (event.key === "ArrowUp") {
|
|
119
|
-
event.preventDefault()
|
|
120
|
-
setActiveIndex((current) => (current - 1 + filteredOptions.length) % filteredOptions.length)
|
|
121
|
-
return
|
|
122
|
-
}
|
|
123
|
-
if (event.key === "Enter" || event.key === "Tab") {
|
|
124
|
-
event.preventDefault()
|
|
125
|
-
insertMention(filteredOptions[activeIndex] ?? filteredOptions[0])
|
|
126
|
-
return
|
|
127
|
-
}
|
|
128
|
-
if (event.key === "Escape") {
|
|
129
|
-
event.preventDefault()
|
|
130
|
-
setSelectionStart(currentValue.length)
|
|
131
|
-
return
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
onKeyDown?.(event)
|
|
136
|
-
}}
|
|
137
|
-
{...props}
|
|
138
|
-
/>
|
|
139
|
-
{showSuggestions ? (
|
|
140
|
-
<div className="grid gap-1 rounded-xl border bg-card p-2 shadow-sm">
|
|
141
|
-
{filteredOptions.map((option, index) => (
|
|
142
|
-
<button
|
|
143
|
-
key={option.value}
|
|
144
|
-
type="button"
|
|
145
|
-
className={cn(
|
|
146
|
-
"flex items-center justify-between rounded-lg px-3 py-2 text-left text-sm transition-colors hover:bg-muted",
|
|
147
|
-
index === activeIndex && "bg-muted"
|
|
148
|
-
)}
|
|
149
|
-
onMouseDown={(event) => event.preventDefault()}
|
|
150
|
-
onClick={() => insertMention(option)}
|
|
151
|
-
>
|
|
152
|
-
<span className="font-medium">{option.label}</span>
|
|
153
|
-
<span className="text-xs text-muted-foreground">{trigger}{option.insertValue ?? option.value}</span>
|
|
154
|
-
</button>
|
|
155
|
-
))}
|
|
156
|
-
</div>
|
|
157
|
-
) : null}
|
|
158
|
-
</div>
|
|
159
|
-
)
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
export { MentionInput }
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
|
-
import { cn } from "@/lib/utils"
|
|
4
|
-
|
|
5
|
-
type StackGap = "xs" | "sm" | "md" | "lg" | "xl"
|
|
6
|
-
type InlineAlign = "start" | "center" | "end" | "stretch"
|
|
7
|
-
type InlineJustify = "start" | "center" | "end" | "between"
|
|
8
|
-
type GridColumns = 1 | 2 | 3 | 4 | 5 | 6
|
|
9
|
-
|
|
10
|
-
const stackGapClassName: Record<StackGap, string> = {
|
|
11
|
-
xs: "gap-2",
|
|
12
|
-
sm: "gap-3",
|
|
13
|
-
md: "gap-4",
|
|
14
|
-
lg: "gap-6",
|
|
15
|
-
xl: "gap-8",
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const inlineAlignClassName: Record<InlineAlign, string> = {
|
|
19
|
-
start: "items-start",
|
|
20
|
-
center: "items-center",
|
|
21
|
-
end: "items-end",
|
|
22
|
-
stretch: "items-stretch",
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const inlineJustifyClassName: Record<InlineJustify, string> = {
|
|
26
|
-
start: "justify-start",
|
|
27
|
-
center: "justify-center",
|
|
28
|
-
end: "justify-end",
|
|
29
|
-
between: "justify-between",
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const gridColumnClassName: Record<GridColumns, string> = {
|
|
33
|
-
1: "grid-cols-1",
|
|
34
|
-
2: "grid-cols-2",
|
|
35
|
-
3: "grid-cols-3",
|
|
36
|
-
4: "grid-cols-4",
|
|
37
|
-
5: "grid-cols-5",
|
|
38
|
-
6: "grid-cols-6",
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export type StackProps = React.ComponentProps<"div"> & {
|
|
42
|
-
gap?: StackGap
|
|
43
|
-
splitAfter?: React.ReactNode
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function Stack({ gap = "md", splitAfter, className, children, ...props }: StackProps) {
|
|
47
|
-
return (
|
|
48
|
-
<div data-slot="stack" className={cn("flex min-w-0 flex-col", stackGapClassName[gap], className)} {...props}>
|
|
49
|
-
{children}
|
|
50
|
-
{splitAfter ? <div data-slot="stack-split-after">{splitAfter}</div> : null}
|
|
51
|
-
</div>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export type InlineProps = React.ComponentProps<"div"> & {
|
|
56
|
-
gap?: StackGap
|
|
57
|
-
align?: InlineAlign
|
|
58
|
-
justify?: InlineJustify
|
|
59
|
-
wrap?: boolean
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export type GridProps = React.ComponentProps<"div"> & {
|
|
63
|
-
gap?: StackGap
|
|
64
|
-
columns?: GridColumns
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function Inline({
|
|
68
|
-
gap = "md",
|
|
69
|
-
align = "center",
|
|
70
|
-
justify = "start",
|
|
71
|
-
wrap = true,
|
|
72
|
-
className,
|
|
73
|
-
children,
|
|
74
|
-
...props
|
|
75
|
-
}: InlineProps) {
|
|
76
|
-
return (
|
|
77
|
-
<div
|
|
78
|
-
data-slot="inline"
|
|
79
|
-
className={cn(
|
|
80
|
-
"flex min-w-0",
|
|
81
|
-
stackGapClassName[gap],
|
|
82
|
-
inlineAlignClassName[align],
|
|
83
|
-
inlineJustifyClassName[justify],
|
|
84
|
-
wrap ? "flex-wrap" : "flex-nowrap",
|
|
85
|
-
className
|
|
86
|
-
)}
|
|
87
|
-
{...props}
|
|
88
|
-
>
|
|
89
|
-
{children}
|
|
90
|
-
</div>
|
|
91
|
-
)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function Grid({ gap = "md", columns = 2, className, children, ...props }: GridProps) {
|
|
95
|
-
return (
|
|
96
|
-
<div
|
|
97
|
-
data-slot="grid"
|
|
98
|
-
className={cn("grid min-w-0", stackGapClassName[gap], gridColumnClassName[columns], className)}
|
|
99
|
-
{...props}
|
|
100
|
-
>
|
|
101
|
-
{children}
|
|
102
|
-
</div>
|
|
103
|
-
)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export { Grid, Inline, Stack }
|