tembro 2.0.4 → 2.0.6
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-pagination.cjs +1 -1
- package/dist/components/data-table/data-table-pagination.js +4 -4
- package/dist/components/data-table/data-table-toolbar.cjs +1 -1
- package/dist/components/data-table/data-table-toolbar.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 +8 -6
- package/dist/components/data-table/data-table.js +89 -80
- 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 +16 -1
- package/dist/components/display/carousel.js +71 -26
- 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/display/smart-card.d.ts +1 -1
- package/dist/components/display/status-legend.d.ts +1 -1
- 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.d.ts +3 -4
- package/dist/components/form/form-input.js +285 -224
- package/dist/components/form/form-select.cjs +1 -1
- package/dist/components/form/form-select.d.ts +2 -2
- package/dist/components/form/form-select.js +49 -35
- 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 +14 -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/search-input.d.ts +3 -0
- package/dist/components/inputs/simple-select.cjs +1 -1
- package/dist/components/inputs/simple-select.d.ts +10 -31
- package/dist/components/inputs/simple-select.js +5 -85
- 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/card/index.cjs +1 -1
- package/dist/components/ui/card/index.d.ts +13 -2
- package/dist/components/ui/card/index.js +74 -49
- package/dist/components/ui/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/components/ui/input/index.cjs +1 -1
- package/dist/components/ui/input/index.d.ts +8 -0
- package/dist/components/ui/input/index.js +63 -30
- package/dist/components/ui/select/index.cjs +1 -1
- package/dist/components/ui/select/index.d.ts +33 -1
- package/dist/components/ui/select/index.js +154 -48
- 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 +23 -36
- 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 +16 -14
- 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/select/mock.cjs +8 -9
- package/dist/showcase/premium/select/mock.js +1 -1
- package/dist/showcase/premium/select/showcase.cjs +1 -1
- package/dist/showcase/premium/select/showcase.js +76 -86
- 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 +153 -383
- package/dist/showcase/render-registry-preview.cjs +1 -1
- package/dist/showcase/render-registry-preview.js +169 -197
- 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-pagination.tsx +7 -7
- 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 +86 -73
- 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 +104 -6
- 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/display/smart-card.tsx +1 -1
- package/packages/cli/vendor/src/components/display/status-legend.tsx +1 -1
- 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 +127 -23
- package/packages/cli/vendor/src/components/form/form-select.tsx +30 -7
- 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 +138 -91
- package/packages/cli/vendor/src/components/inputs/combobox.tsx +66 -9
- package/packages/cli/vendor/src/components/inputs/search-input.tsx +5 -2
- package/packages/cli/vendor/src/components/inputs/simple-select.tsx +20 -162
- 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/card/index.tsx +95 -25
- 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/components/ui/input/index.tsx +98 -0
- package/packages/cli/vendor/src/components/ui/select/index.tsx +227 -34
- 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 +44 -58
- 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 +14 -14
- 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/select/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +13 -21
- 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 +10 -186
- package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +23 -57
- 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
|
@@ -7,9 +7,21 @@ export type CollapseProps = React.ComponentProps<"details"> & {
|
|
|
7
7
|
defaultOpen?: boolean
|
|
8
8
|
open?: boolean
|
|
9
9
|
onOpenChange?: (open: boolean) => void
|
|
10
|
+
variant?: "default" | "soft" | "ghost"
|
|
11
|
+
size?: "sm" | "md" | "lg"
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
function Collapse({
|
|
14
|
+
function Collapse({
|
|
15
|
+
open,
|
|
16
|
+
defaultOpen,
|
|
17
|
+
onOpenChange,
|
|
18
|
+
onToggle,
|
|
19
|
+
className,
|
|
20
|
+
children,
|
|
21
|
+
variant = "default",
|
|
22
|
+
size = "md",
|
|
23
|
+
...props
|
|
24
|
+
}: CollapseProps) {
|
|
13
25
|
const isControlled = open !== undefined
|
|
14
26
|
const [internalOpen, setInternalOpen] = React.useState(defaultOpen ?? false)
|
|
15
27
|
const currentOpen = isControlled ? open : internalOpen
|
|
@@ -17,8 +29,10 @@ function Collapse({ open, defaultOpen, onOpenChange, onToggle, className, childr
|
|
|
17
29
|
return (
|
|
18
30
|
<details
|
|
19
31
|
data-slot="collapse"
|
|
32
|
+
data-variant={variant}
|
|
33
|
+
data-size={size}
|
|
20
34
|
className={cn(
|
|
21
|
-
"group rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-card text-card-foreground shadow-[var(--aui-card-shadow,var(--aui-control-shadow,none))] transition-[background-color,border-color,box-shadow] open:border-[color:var(--aui-control-hover-border,var(--ring))]",
|
|
35
|
+
"group overflow-hidden rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-card text-card-foreground shadow-[var(--aui-card-shadow,var(--aui-control-shadow,none))] transition-[background-color,border-color,box-shadow] hover:border-[color:var(--aui-control-hover-border,var(--ring))] open:border-[color:var(--aui-control-hover-border,var(--ring))] data-[variant=soft]:bg-[color:color-mix(in_oklch,var(--muted),transparent_58%)] data-[variant=soft]:shadow-none data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:shadow-none",
|
|
22
36
|
className
|
|
23
37
|
)}
|
|
24
38
|
onToggle={(event) => {
|
|
@@ -26,6 +40,8 @@ function Collapse({ open, defaultOpen, onOpenChange, onToggle, className, childr
|
|
|
26
40
|
const nextOpen = event.currentTarget.open
|
|
27
41
|
if (!isControlled) {
|
|
28
42
|
setInternalOpen(nextOpen)
|
|
43
|
+
} else if (nextOpen !== currentOpen) {
|
|
44
|
+
event.currentTarget.open = currentOpen
|
|
29
45
|
}
|
|
30
46
|
onOpenChange?.(nextOpen)
|
|
31
47
|
}}
|
|
@@ -40,24 +56,51 @@ function Collapse({ open, defaultOpen, onOpenChange, onToggle, className, childr
|
|
|
40
56
|
export type CollapseTriggerProps = React.ComponentProps<"summary"> & {
|
|
41
57
|
icon?: React.ReactNode
|
|
42
58
|
hideIcon?: boolean
|
|
59
|
+
size?: "sm" | "md" | "lg"
|
|
60
|
+
inset?: boolean
|
|
61
|
+
indicatorPosition?: "start" | "end"
|
|
43
62
|
}
|
|
44
63
|
|
|
45
|
-
function CollapseTrigger({
|
|
64
|
+
function CollapseTrigger({
|
|
65
|
+
icon,
|
|
66
|
+
hideIcon = false,
|
|
67
|
+
size = "md",
|
|
68
|
+
inset = false,
|
|
69
|
+
indicatorPosition = "end",
|
|
70
|
+
className,
|
|
71
|
+
children,
|
|
72
|
+
onClick,
|
|
73
|
+
...props
|
|
74
|
+
}: CollapseTriggerProps) {
|
|
75
|
+
const indicator = !hideIcon ? (
|
|
76
|
+
<span className="shrink-0 rounded-md text-muted-foreground transition-[color,transform] group-open:rotate-180 group-open:text-foreground">
|
|
77
|
+
{icon ?? <ChevronDownIcon className="size-4" />}
|
|
78
|
+
</span>
|
|
79
|
+
) : null
|
|
80
|
+
|
|
46
81
|
return (
|
|
47
82
|
<summary
|
|
48
83
|
data-slot="collapse-trigger"
|
|
84
|
+
data-size={size}
|
|
85
|
+
data-inset={inset || undefined}
|
|
86
|
+
data-indicator-position={indicatorPosition}
|
|
49
87
|
className={cn(
|
|
50
|
-
"
|
|
88
|
+
"rounded-[calc(var(--aui-card-radius,var(--radius-xl))-1px)] group-open:rounded-b-none flex cursor-pointer list-none items-start gap-3 px-4 text-sm font-semibold outline-none transition-[background-color,color,box-shadow,border-radius] hover:bg-[color:var(--aui-control-surface-hover,var(--muted))] focus-visible:bg-[color:var(--aui-control-surface-hover,var(--muted))] focus-visible:shadow-[0_0_0_1px_var(--aui-focus-ring,var(--ring)),0_0_0_5px_var(--aui-focus-ring-soft,transparent)] group-open:text-foreground data-[indicator-position=end]:justify-between data-[indicator-position=start]:justify-start data-[size=sm]:py-2.5 data-[size=md]:py-3.5 data-[size=lg]:py-4.5 data-[inset=true]:px-5 [&::-webkit-details-marker]:hidden",
|
|
89
|
+
props["aria-disabled"] && "cursor-not-allowed opacity-75 hover:bg-transparent",
|
|
51
90
|
className
|
|
52
91
|
)}
|
|
92
|
+
onClick={(event) => {
|
|
93
|
+
if (props["aria-disabled"]) {
|
|
94
|
+
event.preventDefault()
|
|
95
|
+
return
|
|
96
|
+
}
|
|
97
|
+
onClick?.(event)
|
|
98
|
+
}}
|
|
53
99
|
{...props}
|
|
54
100
|
>
|
|
101
|
+
{indicatorPosition === "start" ? indicator : null}
|
|
55
102
|
<span className="min-w-0 flex-1">{children}</span>
|
|
56
|
-
{
|
|
57
|
-
<span className="shrink-0 rounded-md text-muted-foreground transition-[color,transform] group-open:rotate-180 group-open:text-foreground">
|
|
58
|
-
{icon ?? <ChevronDownIcon className="size-4" />}
|
|
59
|
-
</span>
|
|
60
|
-
)}
|
|
103
|
+
{indicatorPosition === "end" ? indicator : null}
|
|
61
104
|
</summary>
|
|
62
105
|
)
|
|
63
106
|
}
|
|
@@ -67,7 +110,7 @@ function CollapseContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
67
110
|
<div
|
|
68
111
|
data-slot="collapse-content"
|
|
69
112
|
className={cn(
|
|
70
|
-
"border-t border-[color:var(--aui-card-border,var(--border))] px-4 py-3 text-sm leading-6 text-muted-foreground",
|
|
113
|
+
"border-t border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_70%)] px-4 py-3.5 text-sm leading-6 text-muted-foreground",
|
|
71
114
|
className
|
|
72
115
|
)}
|
|
73
116
|
{...props}
|
|
@@ -80,7 +123,14 @@ export type CollapseItem = {
|
|
|
80
123
|
title: React.ReactNode
|
|
81
124
|
content: React.ReactNode
|
|
82
125
|
description?: React.ReactNode
|
|
126
|
+
meta?: React.ReactNode
|
|
127
|
+
badge?: React.ReactNode
|
|
83
128
|
disabled?: boolean
|
|
129
|
+
disabledReason?: React.ReactNode
|
|
130
|
+
icon?: React.ReactNode
|
|
131
|
+
indicatorPosition?: CollapseTriggerProps["indicatorPosition"]
|
|
132
|
+
triggerClassName?: string
|
|
133
|
+
contentClassName?: string
|
|
84
134
|
}
|
|
85
135
|
|
|
86
136
|
export type CollapseGroupProps = React.ComponentProps<"div"> & {
|
|
@@ -89,9 +139,21 @@ export type CollapseGroupProps = React.ComponentProps<"div"> & {
|
|
|
89
139
|
value?: string | string[]
|
|
90
140
|
defaultValue?: string | string[]
|
|
91
141
|
onValueChange?: (value: string | string[]) => void
|
|
142
|
+
variant?: CollapseProps["variant"]
|
|
143
|
+
size?: CollapseTriggerProps["size"]
|
|
92
144
|
}
|
|
93
145
|
|
|
94
|
-
function CollapseGroup({
|
|
146
|
+
function CollapseGroup({
|
|
147
|
+
items,
|
|
148
|
+
type = "multiple",
|
|
149
|
+
value,
|
|
150
|
+
defaultValue,
|
|
151
|
+
onValueChange,
|
|
152
|
+
variant = "default",
|
|
153
|
+
size = "md",
|
|
154
|
+
className,
|
|
155
|
+
...props
|
|
156
|
+
}: CollapseGroupProps) {
|
|
95
157
|
const initialValue = React.useMemo(() => {
|
|
96
158
|
if (value !== undefined) return value
|
|
97
159
|
if (defaultValue !== undefined) return defaultValue
|
|
@@ -119,16 +181,35 @@ function CollapseGroup({ items, type = "multiple", value, defaultValue, onValueC
|
|
|
119
181
|
<Collapse
|
|
120
182
|
key={item.key}
|
|
121
183
|
open={isOpen(item.key)}
|
|
122
|
-
onOpenChange={(open) =>
|
|
184
|
+
onOpenChange={(open) => {
|
|
185
|
+
if (item.disabled) return
|
|
186
|
+
updateValue(item.key, open)
|
|
187
|
+
}}
|
|
188
|
+
variant={variant}
|
|
189
|
+
size={size}
|
|
123
190
|
className={cn(item.disabled && "pointer-events-none opacity-60")}
|
|
124
191
|
>
|
|
125
|
-
<CollapseTrigger
|
|
126
|
-
|
|
127
|
-
|
|
192
|
+
<CollapseTrigger
|
|
193
|
+
size={size}
|
|
194
|
+
icon={item.icon}
|
|
195
|
+
indicatorPosition={item.indicatorPosition}
|
|
196
|
+
className={item.triggerClassName}
|
|
197
|
+
aria-disabled={item.disabled || undefined}
|
|
198
|
+
title={typeof item.disabledReason === "string" ? item.disabledReason : undefined}
|
|
199
|
+
>
|
|
200
|
+
<span className="grid min-w-0 gap-0.5">
|
|
201
|
+
<span className="flex min-w-0 items-center gap-2">
|
|
202
|
+
<span className="truncate">{item.title}</span>
|
|
203
|
+
{item.badge ? <span className="shrink-0">{item.badge}</span> : null}
|
|
204
|
+
{item.meta ? <span className="ml-auto shrink-0 text-[11px] font-medium text-muted-foreground">{item.meta}</span> : null}
|
|
205
|
+
</span>
|
|
128
206
|
{item.description && <span className="text-xs font-normal text-muted-foreground">{item.description}</span>}
|
|
207
|
+
{item.disabled && item.disabledReason ? (
|
|
208
|
+
<span className="text-[11px] font-medium text-muted-foreground">{item.disabledReason}</span>
|
|
209
|
+
) : null}
|
|
129
210
|
</span>
|
|
130
211
|
</CollapseTrigger>
|
|
131
|
-
<CollapseContent>{item.content}</CollapseContent>
|
|
212
|
+
<CollapseContent className={item.contentClassName}>{item.content}</CollapseContent>
|
|
132
213
|
</Collapse>
|
|
133
214
|
))}
|
|
134
215
|
</div>
|
|
@@ -13,6 +13,7 @@ export type DialogOverlayProps = DialogPrimitive.Backdrop.Props
|
|
|
13
13
|
export type DialogPopupProps = DialogPrimitive.Popup.Props & {
|
|
14
14
|
showCloseButton?: boolean
|
|
15
15
|
size?: "xs" | "sm" | "md" | "lg" | "xl" | "full"
|
|
16
|
+
surface?: "default" | "plain"
|
|
16
17
|
}
|
|
17
18
|
export type DialogHeaderProps = React.ComponentProps<"div">
|
|
18
19
|
export type DialogFooterProps = React.ComponentProps<"div"> & {
|
|
@@ -58,6 +59,7 @@ function DialogContent({
|
|
|
58
59
|
children,
|
|
59
60
|
showCloseButton = true,
|
|
60
61
|
size = "md",
|
|
62
|
+
surface = "default",
|
|
61
63
|
...props
|
|
62
64
|
}: DialogPopupProps) {
|
|
63
65
|
return (
|
|
@@ -66,8 +68,10 @@ function DialogContent({
|
|
|
66
68
|
<DialogPrimitive.Popup
|
|
67
69
|
data-slot="dialog-content"
|
|
68
70
|
data-size={size}
|
|
71
|
+
data-surface={surface}
|
|
72
|
+
role="dialog"
|
|
69
73
|
className={cn(
|
|
70
|
-
"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-5 rounded-[var(--radius-3xl)] border p-6 text-sm text-popover-foreground backdrop-blur duration-100 outline-none data-[size=xs]:sm:max-w-sm data-[size=sm]:sm:max-w-md data-[size=md]:sm:max-w-lg data-[size=lg]:sm:max-w-2xl data-[size=xl]:sm:max-w-4xl data-[size=full]:h-[min(92vh,56rem)] data-[size=full]:max-w-[min(96vw,84rem)] data-[size=full]:grid-rows-[
|
|
74
|
+
"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-5 overflow-hidden rounded-[var(--radius-3xl)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:var(--aui-overlay-surface,var(--popover))] p-6 text-sm text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_24px_70px_rgba(15,23,42,0.22))] backdrop-blur duration-100 outline-none data-[surface=plain]:overflow-visible data-[surface=plain]:border-transparent data-[surface=plain]:bg-transparent data-[surface=plain]:p-0 data-[surface=plain]:shadow-none data-[size=xs]:sm:max-w-sm data-[size=sm]:sm:max-w-md data-[size=md]:sm:max-w-lg data-[size=lg]:sm:max-w-2xl data-[size=xl]:sm:max-w-4xl data-[size=full]:h-[min(92vh,56rem)] data-[size=full]:max-w-[min(96vw,84rem)] data-[size=full]:grid-rows-[auto_minmax(0,1fr)] data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
71
75
|
className
|
|
72
76
|
)}
|
|
73
77
|
{...props}
|
|
@@ -77,11 +81,11 @@ function DialogContent({
|
|
|
77
81
|
<DialogPrimitive.Close
|
|
78
82
|
data-slot="dialog-close"
|
|
79
83
|
render={
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
<Button
|
|
85
|
+
variant="ghost"
|
|
86
|
+
className="absolute top-3 right-3 rounded-full border border-transparent hover:border-border/50 hover:bg-muted/50"
|
|
87
|
+
size="icon-sm"
|
|
88
|
+
/>
|
|
85
89
|
}
|
|
86
90
|
>
|
|
87
91
|
<XIcon />
|
|
@@ -110,10 +114,10 @@ function DialogFooter({
|
|
|
110
114
|
...props
|
|
111
115
|
}: DialogFooterProps) {
|
|
112
116
|
return (
|
|
113
|
-
|
|
117
|
+
<div
|
|
114
118
|
data-slot="dialog-footer"
|
|
115
119
|
className={cn(
|
|
116
|
-
"-mx-6 -mb-6 flex flex-col-reverse gap-2
|
|
120
|
+
"-mx-6 -mb-6 flex flex-col-reverse gap-2 border-t border-border/70 bg-muted/20 p-5 sm:flex-row sm:justify-end",
|
|
117
121
|
className
|
|
118
122
|
)}
|
|
119
123
|
{...props}
|
|
@@ -17,6 +17,7 @@ export type DropdownMenuLabelProps = React.ComponentProps<"div"> & { inset?: boo
|
|
|
17
17
|
export type DropdownMenuItemProps = MenuPrimitive.Item.Props & {
|
|
18
18
|
inset?: boolean
|
|
19
19
|
variant?: "default" | "destructive"
|
|
20
|
+
closeOnSelect?: boolean
|
|
20
21
|
}
|
|
21
22
|
export type DropdownMenuSubmenuProps = MenuPrimitive.SubmenuRoot.Props
|
|
22
23
|
export type DropdownMenuSubmenuTriggerProps = MenuPrimitive.SubmenuTrigger.Props & {
|
|
@@ -25,13 +26,19 @@ export type DropdownMenuSubmenuTriggerProps = MenuPrimitive.SubmenuTrigger.Props
|
|
|
25
26
|
export type DropdownMenuSubmenuContentProps = React.ComponentProps<typeof DropdownMenuContent>
|
|
26
27
|
export type DropdownMenuCheckboxItemProps = MenuPrimitive.CheckboxItem.Props & {
|
|
27
28
|
inset?: boolean
|
|
29
|
+
closeOnSelect?: boolean
|
|
28
30
|
}
|
|
29
31
|
export type DropdownMenuRadioGroupProps = MenuPrimitive.RadioGroup.Props
|
|
30
32
|
export type DropdownMenuRadioItemProps = MenuPrimitive.RadioItem.Props & {
|
|
31
33
|
inset?: boolean
|
|
34
|
+
closeOnSelect?: boolean
|
|
32
35
|
}
|
|
33
36
|
export type DropdownMenuSeparatorProps = MenuPrimitive.Separator.Props
|
|
34
37
|
export type DropdownMenuShortcutProps = React.ComponentProps<"span">
|
|
38
|
+
export type DropdownMenuItemDescriptionProps = React.ComponentProps<"span">
|
|
39
|
+
|
|
40
|
+
const menuItemClassName =
|
|
41
|
+
"relative flex cursor-default items-center gap-2 rounded-[var(--radius-md)] border border-transparent px-3 py-2.5 text-sm text-popover-foreground outline-hidden select-none transition-[background-color,border-color,color,box-shadow] data-[highlighted]:border-[color:color-mix(in_oklch,var(--primary),transparent_72%)] data-[highlighted]:bg-[color:color-mix(in_oklch,var(--primary),transparent_92%)] data-[highlighted]:text-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-[highlighted]:border-[color:color-mix(in_oklch,var(--destructive),transparent_70%)] data-[variant=destructive]:data-[highlighted]:bg-[color:color-mix(in_oklch,var(--destructive),transparent_90%)] data-[variant=destructive]:data-[highlighted]:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
|
|
35
42
|
|
|
36
43
|
function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {
|
|
37
44
|
return <MenuPrimitive.Root data-slot="dropdown-menu" {...props} />
|
|
@@ -42,6 +49,11 @@ function DropdownMenuPortal({ ...props }: DropdownMenuPortalProps) {
|
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
function DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {
|
|
52
|
+
if (!("render" in props) && React.isValidElement(props.children)) {
|
|
53
|
+
const { children, ...rest } = props
|
|
54
|
+
return <MenuPrimitive.Trigger data-slot="dropdown-menu-trigger" render={children} {...rest} />
|
|
55
|
+
}
|
|
56
|
+
|
|
45
57
|
return <MenuPrimitive.Trigger data-slot="dropdown-menu-trigger" {...props} />
|
|
46
58
|
}
|
|
47
59
|
|
|
@@ -64,7 +76,7 @@ function DropdownMenuContent({
|
|
|
64
76
|
>
|
|
65
77
|
<MenuPrimitive.Popup
|
|
66
78
|
data-slot="dropdown-menu-content"
|
|
67
|
-
className={cn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-
|
|
79
|
+
className={cn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-56 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-[color:var(--aui-overlay-surface,var(--popover))] p-2 text-popover-foreground shadow-[var(--aui-popover-shadow,0_18px_42px_rgba(15,23,42,0.16))] duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95", className)}
|
|
68
80
|
{...props}
|
|
69
81
|
/>
|
|
70
82
|
</MenuPrimitive.Positioner>
|
|
@@ -98,21 +110,30 @@ function DropdownMenuItem({
|
|
|
98
110
|
className,
|
|
99
111
|
inset,
|
|
100
112
|
variant = "default",
|
|
113
|
+
closeOnSelect = true,
|
|
114
|
+
onSelect,
|
|
101
115
|
...props
|
|
102
116
|
}: DropdownMenuItemProps) {
|
|
103
|
-
return (
|
|
104
|
-
<MenuPrimitive.Item
|
|
117
|
+
return (
|
|
118
|
+
<MenuPrimitive.Item
|
|
105
119
|
data-slot="dropdown-menu-item"
|
|
106
120
|
data-inset={inset}
|
|
107
121
|
data-variant={variant}
|
|
108
122
|
className={cn(
|
|
109
|
-
"group/dropdown-menu-item
|
|
123
|
+
"group/dropdown-menu-item data-inset:pl-8",
|
|
124
|
+
menuItemClassName,
|
|
110
125
|
className
|
|
111
126
|
)}
|
|
127
|
+
onSelect={(event) => {
|
|
128
|
+
if (!closeOnSelect) {
|
|
129
|
+
event.preventDefault()
|
|
130
|
+
}
|
|
131
|
+
onSelect?.(event)
|
|
132
|
+
}}
|
|
112
133
|
{...props}
|
|
113
|
-
/>
|
|
114
|
-
)
|
|
115
|
-
}
|
|
134
|
+
/>
|
|
135
|
+
)
|
|
136
|
+
}
|
|
116
137
|
|
|
117
138
|
function DropdownMenuSub({ ...props }: DropdownMenuSubmenuProps) {
|
|
118
139
|
return <MenuPrimitive.SubmenuRoot data-slot="dropdown-menu-sub" {...props} />
|
|
@@ -129,13 +150,14 @@ function DropdownMenuSubTrigger({
|
|
|
129
150
|
data-slot="dropdown-menu-sub-trigger"
|
|
130
151
|
data-inset={inset}
|
|
131
152
|
className={cn(
|
|
132
|
-
"
|
|
153
|
+
"group/dropdown-menu-item data-inset:pl-8",
|
|
154
|
+
menuItemClassName,
|
|
133
155
|
className
|
|
134
156
|
)}
|
|
135
157
|
{...props}
|
|
136
158
|
>
|
|
137
159
|
{children}
|
|
138
|
-
<ChevronRightIcon className="ml-auto" />
|
|
160
|
+
<ChevronRightIcon className="ml-auto text-muted-foreground group-data-[highlighted]/dropdown-menu-item:text-foreground" />
|
|
139
161
|
</MenuPrimitive.SubmenuTrigger>
|
|
140
162
|
)
|
|
141
163
|
}
|
|
@@ -166,19 +188,28 @@ function DropdownMenuCheckboxItem({
|
|
|
166
188
|
children,
|
|
167
189
|
checked,
|
|
168
190
|
inset,
|
|
191
|
+
closeOnSelect = true,
|
|
192
|
+
onSelect,
|
|
169
193
|
...props
|
|
170
194
|
}: DropdownMenuCheckboxItemProps) {
|
|
171
|
-
return (
|
|
172
|
-
<MenuPrimitive.CheckboxItem
|
|
195
|
+
return (
|
|
196
|
+
<MenuPrimitive.CheckboxItem
|
|
173
197
|
data-slot="dropdown-menu-checkbox-item"
|
|
174
198
|
data-inset={inset}
|
|
175
199
|
className={cn(
|
|
176
|
-
"
|
|
200
|
+
"group/dropdown-menu-item pr-9 data-inset:pl-8 data-[checked]:bg-muted/70 data-[checked]:font-medium",
|
|
201
|
+
menuItemClassName,
|
|
177
202
|
className
|
|
178
203
|
)}
|
|
179
|
-
checked={checked}
|
|
180
|
-
{
|
|
181
|
-
|
|
204
|
+
checked={checked}
|
|
205
|
+
onSelect={(event) => {
|
|
206
|
+
if (!closeOnSelect) {
|
|
207
|
+
event.preventDefault()
|
|
208
|
+
}
|
|
209
|
+
onSelect?.(event)
|
|
210
|
+
}}
|
|
211
|
+
{...props}
|
|
212
|
+
>
|
|
182
213
|
<span
|
|
183
214
|
className="pointer-events-none absolute right-2 flex items-center justify-center"
|
|
184
215
|
data-slot="dropdown-menu-checkbox-item-indicator"
|
|
@@ -206,18 +237,27 @@ function DropdownMenuRadioItem({
|
|
|
206
237
|
className,
|
|
207
238
|
children,
|
|
208
239
|
inset,
|
|
240
|
+
closeOnSelect = true,
|
|
241
|
+
onSelect,
|
|
209
242
|
...props
|
|
210
243
|
}: DropdownMenuRadioItemProps) {
|
|
211
|
-
return (
|
|
212
|
-
<MenuPrimitive.RadioItem
|
|
244
|
+
return (
|
|
245
|
+
<MenuPrimitive.RadioItem
|
|
213
246
|
data-slot="dropdown-menu-radio-item"
|
|
214
247
|
data-inset={inset}
|
|
215
248
|
className={cn(
|
|
216
|
-
"
|
|
249
|
+
"group/dropdown-menu-item pr-9 data-inset:pl-8 data-[checked]:bg-muted/70 data-[checked]:font-medium",
|
|
250
|
+
menuItemClassName,
|
|
217
251
|
className
|
|
218
252
|
)}
|
|
219
|
-
{
|
|
220
|
-
|
|
253
|
+
onSelect={(event) => {
|
|
254
|
+
if (!closeOnSelect) {
|
|
255
|
+
event.preventDefault()
|
|
256
|
+
}
|
|
257
|
+
onSelect?.(event)
|
|
258
|
+
}}
|
|
259
|
+
{...props}
|
|
260
|
+
>
|
|
221
261
|
<span
|
|
222
262
|
className="pointer-events-none absolute right-2 flex items-center justify-center"
|
|
223
263
|
data-slot="dropdown-menu-radio-item-indicator"
|
|
@@ -252,14 +292,27 @@ function DropdownMenuShortcut({
|
|
|
252
292
|
return (
|
|
253
293
|
<span
|
|
254
294
|
data-slot="dropdown-menu-shortcut"
|
|
255
|
-
className={cn(
|
|
256
|
-
"ml-auto text-[11px] tracking-[0.
|
|
295
|
+
className={cn(
|
|
296
|
+
"ml-auto rounded bg-muted/70 px-1.5 py-0.5 text-[11px] font-medium tracking-[0.08em] text-muted-foreground group-data-[highlighted]/dropdown-menu-item:text-foreground",
|
|
257
297
|
className
|
|
258
298
|
)}
|
|
259
299
|
{...props}
|
|
260
300
|
/>
|
|
261
|
-
)
|
|
262
|
-
}
|
|
301
|
+
)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function DropdownMenuItemDescription({
|
|
305
|
+
className,
|
|
306
|
+
...props
|
|
307
|
+
}: DropdownMenuItemDescriptionProps) {
|
|
308
|
+
return (
|
|
309
|
+
<span
|
|
310
|
+
data-slot="dropdown-menu-item-description"
|
|
311
|
+
className={cn("block text-xs leading-5 text-muted-foreground group-data-[highlighted]/dropdown-menu-item:text-foreground/70", className)}
|
|
312
|
+
{...props}
|
|
313
|
+
/>
|
|
314
|
+
)
|
|
315
|
+
}
|
|
263
316
|
|
|
264
317
|
export {
|
|
265
318
|
DropdownMenu,
|
|
@@ -271,10 +324,11 @@ export {
|
|
|
271
324
|
DropdownMenuItem,
|
|
272
325
|
DropdownMenuCheckboxItem,
|
|
273
326
|
DropdownMenuRadioGroup,
|
|
274
|
-
DropdownMenuRadioItem,
|
|
275
|
-
DropdownMenuSeparator,
|
|
276
|
-
DropdownMenuShortcut,
|
|
277
|
-
|
|
327
|
+
DropdownMenuRadioItem,
|
|
328
|
+
DropdownMenuSeparator,
|
|
329
|
+
DropdownMenuShortcut,
|
|
330
|
+
DropdownMenuItemDescription,
|
|
331
|
+
DropdownMenuSub,
|
|
278
332
|
DropdownMenuSubTrigger,
|
|
279
333
|
DropdownMenuSubContent,
|
|
280
334
|
}
|
|
@@ -39,6 +39,7 @@ export type InputTextProps = Omit<InputPrimitiveProps, "value"> & {
|
|
|
39
39
|
kind?: "text"
|
|
40
40
|
value?: string | number | readonly string[] | null
|
|
41
41
|
onValueChange?: (value: string) => void
|
|
42
|
+
onDebouncedValueChange?: (value: string) => void
|
|
42
43
|
leading?: React.ReactNode
|
|
43
44
|
trailing?: React.ReactNode
|
|
44
45
|
trailingAction?: React.ReactNode
|
|
@@ -57,6 +58,13 @@ export type InputTextProps = Omit<InputPrimitiveProps, "value"> & {
|
|
|
57
58
|
helperClassName?: string
|
|
58
59
|
leadingPointerEvents?: boolean
|
|
59
60
|
trailingPointerEvents?: boolean
|
|
61
|
+
searchIcon?: React.ReactNode
|
|
62
|
+
loading?: boolean
|
|
63
|
+
loadingLabel?: string
|
|
64
|
+
resultCount?: number
|
|
65
|
+
shortcut?: React.ReactNode
|
|
66
|
+
debounceMs?: number
|
|
67
|
+
showMetaOnClear?: boolean
|
|
60
68
|
}
|
|
61
69
|
|
|
62
70
|
export type InputClearableProps = Omit<ClearableInputProps, "kind"> & {
|
|
@@ -121,6 +129,20 @@ function getInputTextLength(value: InputTextProps["value"] | InputTextProps["def
|
|
|
121
129
|
return 0
|
|
122
130
|
}
|
|
123
131
|
|
|
132
|
+
function shouldRenderSearchInput(props: InputTextProps) {
|
|
133
|
+
return (
|
|
134
|
+
props.type === "search" ||
|
|
135
|
+
props.searchIcon !== undefined ||
|
|
136
|
+
props.loading !== undefined ||
|
|
137
|
+
props.loadingLabel !== undefined ||
|
|
138
|
+
props.resultCount !== undefined ||
|
|
139
|
+
props.shortcut !== undefined ||
|
|
140
|
+
props.debounceMs !== undefined ||
|
|
141
|
+
props.showMetaOnClear !== undefined ||
|
|
142
|
+
props.onDebouncedValueChange !== undefined
|
|
143
|
+
)
|
|
144
|
+
}
|
|
145
|
+
|
|
124
146
|
const Input = React.forwardRef<HTMLInputElement | HTMLDivElement, InputProps>((props, ref) => {
|
|
125
147
|
const kind = props.kind ?? "text"
|
|
126
148
|
|
|
@@ -210,6 +232,82 @@ const Input = React.forwardRef<HTMLInputElement | HTMLDivElement, InputProps>((p
|
|
|
210
232
|
}
|
|
211
233
|
|
|
212
234
|
const inputProps = props as Omit<InputTextProps, "kind">
|
|
235
|
+
|
|
236
|
+
if (shouldRenderSearchInput(inputProps)) {
|
|
237
|
+
const {
|
|
238
|
+
leading,
|
|
239
|
+
searchIcon,
|
|
240
|
+
helperText,
|
|
241
|
+
errorText,
|
|
242
|
+
showCharacterCount,
|
|
243
|
+
countFormatter,
|
|
244
|
+
helperClassName,
|
|
245
|
+
inputClassName,
|
|
246
|
+
...searchInputProps
|
|
247
|
+
} = inputProps
|
|
248
|
+
const searchValue: SearchInputProps["value"] = Array.isArray(inputProps.value)
|
|
249
|
+
? inputProps.value.join(" ")
|
|
250
|
+
: inputProps.value == null || typeof inputProps.value === "string" || typeof inputProps.value === "number"
|
|
251
|
+
? inputProps.value
|
|
252
|
+
: String(inputProps.value)
|
|
253
|
+
const searchDefaultValue: SearchInputProps["defaultValue"] = Array.isArray(inputProps.defaultValue)
|
|
254
|
+
? inputProps.defaultValue.join(" ")
|
|
255
|
+
: inputProps.defaultValue == null ||
|
|
256
|
+
typeof inputProps.defaultValue === "string" ||
|
|
257
|
+
typeof inputProps.defaultValue === "number"
|
|
258
|
+
? inputProps.defaultValue
|
|
259
|
+
: String(inputProps.defaultValue)
|
|
260
|
+
|
|
261
|
+
const searchInput = (
|
|
262
|
+
<SearchInput
|
|
263
|
+
ref={ref as React.ForwardedRef<HTMLInputElement>}
|
|
264
|
+
searchIcon={searchIcon ?? leading}
|
|
265
|
+
inputClassName={inputClassName}
|
|
266
|
+
{...searchInputProps}
|
|
267
|
+
value={searchValue}
|
|
268
|
+
defaultValue={searchDefaultValue}
|
|
269
|
+
/>
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
if (!helperText && !errorText && !showCharacterCount) {
|
|
273
|
+
return searchInput
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const currentLength = getInputTextLength(inputProps.value ?? inputProps.defaultValue)
|
|
277
|
+
|
|
278
|
+
return (
|
|
279
|
+
<div data-slot="input-field" className="grid gap-1.5">
|
|
280
|
+
{searchInput}
|
|
281
|
+
<div data-slot="input-meta" className="flex items-start justify-between gap-3 px-1">
|
|
282
|
+
<div
|
|
283
|
+
data-slot="input-helper"
|
|
284
|
+
className={cn(
|
|
285
|
+
"min-w-0 text-xs leading-5",
|
|
286
|
+
errorText ? "text-destructive" : "text-muted-foreground",
|
|
287
|
+
helperClassName
|
|
288
|
+
)}
|
|
289
|
+
>
|
|
290
|
+
{errorText ?? helperText}
|
|
291
|
+
</div>
|
|
292
|
+
{showCharacterCount ? (
|
|
293
|
+
<div
|
|
294
|
+
data-slot="input-count"
|
|
295
|
+
className={cn(
|
|
296
|
+
"shrink-0 text-[11px] font-medium tabular-nums",
|
|
297
|
+
errorText ? "text-destructive" : "text-muted-foreground"
|
|
298
|
+
)}
|
|
299
|
+
>
|
|
300
|
+
{countFormatter?.(currentLength, inputProps.maxLength) ??
|
|
301
|
+
(typeof inputProps.maxLength === "number"
|
|
302
|
+
? `${currentLength}/${inputProps.maxLength}`
|
|
303
|
+
: currentLength)}
|
|
304
|
+
</div>
|
|
305
|
+
) : null}
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
)
|
|
309
|
+
}
|
|
310
|
+
|
|
213
311
|
const {
|
|
214
312
|
value,
|
|
215
313
|
defaultValue,
|