@health-samurai/react-components 0.0.0-alpha.2 → 0.0.0-alpha.21
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/LICENSE +21 -0
- package/README.md +102 -1
- package/dist/bundle.css +2349 -754
- package/dist/src/components/button-dropdown.d.ts +10 -0
- package/dist/src/components/button-dropdown.d.ts.map +1 -0
- package/dist/src/components/button-dropdown.js +70 -0
- package/dist/src/components/button-dropdown.js.map +1 -0
- package/dist/src/components/button-dropdown.stories.js +48 -0
- package/dist/src/components/button-dropdown.stories.js.map +1 -0
- package/dist/src/components/code-editor/fhir-autocomplete.d.ts +70 -0
- package/dist/src/components/code-editor/fhir-autocomplete.d.ts.map +1 -0
- package/dist/src/components/code-editor/fhir-autocomplete.js +1850 -0
- package/dist/src/components/code-editor/fhir-autocomplete.js.map +1 -0
- package/dist/src/components/code-editor/fhir-autocomplete.test.js +1099 -0
- package/dist/src/components/code-editor/fhir-autocomplete.test.js.map +1 -0
- package/dist/src/components/code-editor/http/grammar/http.d.ts +3 -0
- package/dist/src/components/code-editor/http/grammar/http.d.ts.map +1 -0
- package/dist/src/components/code-editor/http/grammar/http.grammar +74 -0
- package/dist/src/components/code-editor/http/grammar/http.js +38 -0
- package/dist/src/components/code-editor/http/grammar/http.js.map +1 -0
- package/dist/src/components/code-editor/http/grammar/http.terms.d.ts +2 -0
- package/dist/src/components/code-editor/http/grammar/http.terms.d.ts.map +1 -0
- package/dist/src/components/code-editor/http/grammar/http.terms.js +4 -0
- package/dist/src/components/code-editor/http/grammar/http.terms.js.map +1 -0
- package/dist/src/components/code-editor/http/grammar/http.test.js +80 -0
- package/dist/src/components/code-editor/http/grammar/http.test.js.map +1 -0
- package/dist/src/components/code-editor/http/index.d.ts +12 -0
- package/dist/src/components/code-editor/http/index.d.ts.map +1 -0
- package/dist/src/components/code-editor/http/index.js +486 -0
- package/dist/src/components/code-editor/http/index.js.map +1 -0
- package/dist/src/components/code-editor/index.d.ts +39 -1
- package/dist/src/components/code-editor/index.d.ts.map +1 -1
- package/dist/src/components/code-editor/index.js +1792 -45
- package/dist/src/components/code-editor/index.js.map +1 -1
- package/dist/src/components/code-editor/json-ast.d.ts +46 -0
- package/dist/src/components/code-editor/json-ast.d.ts.map +1 -0
- package/dist/src/components/code-editor/json-ast.js +465 -0
- package/dist/src/components/code-editor/json-ast.js.map +1 -0
- package/dist/src/components/code-editor/json-ast.test.js +206 -0
- package/dist/src/components/code-editor/json-ast.test.js.map +1 -0
- package/dist/src/components/code-editor/sql-completion.d.ts +22 -0
- package/dist/src/components/code-editor/sql-completion.d.ts.map +1 -0
- package/dist/src/components/code-editor/sql-completion.js +897 -0
- package/dist/src/components/code-editor/sql-completion.js.map +1 -0
- package/dist/src/components/code-editor.stories.js +280 -3
- package/dist/src/components/code-editor.stories.js.map +1 -1
- package/dist/src/components/copy-icon.d.ts +5 -1
- package/dist/src/components/copy-icon.d.ts.map +1 -1
- package/dist/src/components/copy-icon.js +41 -3
- package/dist/src/components/copy-icon.js.map +1 -1
- package/dist/src/components/data-table.d.ts +9 -0
- package/dist/src/components/data-table.d.ts.map +1 -0
- package/dist/src/components/data-table.js +66 -0
- package/dist/src/components/data-table.js.map +1 -0
- package/dist/src/components/data-table.stories.js +240 -0
- package/dist/src/components/data-table.stories.js.map +1 -0
- package/dist/src/components/date-picker-input.d.ts +10 -0
- package/dist/src/components/date-picker-input.d.ts.map +1 -0
- package/dist/src/components/date-picker-input.js +90 -0
- package/dist/src/components/date-picker-input.js.map +1 -0
- package/dist/src/components/date-picker-input.stories.js +76 -0
- package/dist/src/components/date-picker-input.stories.js.map +1 -0
- package/dist/src/components/fhir-structure-view.d.ts +34 -0
- package/dist/src/components/fhir-structure-view.d.ts.map +1 -0
- package/dist/src/components/fhir-structure-view.js +230 -0
- package/dist/src/components/fhir-structure-view.js.map +1 -0
- package/dist/src/components/fhir-structure-view.stories.js +447 -0
- package/dist/src/components/fhir-structure-view.stories.js.map +1 -0
- package/dist/src/components/icon-button.d.ts +12 -0
- package/dist/src/components/icon-button.d.ts.map +1 -0
- package/dist/src/components/icon-button.js +41 -0
- package/dist/src/components/icon-button.js.map +1 -0
- package/dist/src/components/icon-button.stories.js +157 -0
- package/dist/src/components/icon-button.stories.js.map +1 -0
- package/dist/src/components/operation-outcome-view.d.ts +27 -0
- package/dist/src/components/operation-outcome-view.d.ts.map +1 -0
- package/dist/src/components/operation-outcome-view.js +198 -0
- package/dist/src/components/operation-outcome-view.js.map +1 -0
- package/dist/src/components/operation-outcome-view.stories.js +207 -0
- package/dist/src/components/operation-outcome-view.stories.js.map +1 -0
- package/dist/src/components/request-line-editor.d.ts +13 -35
- package/dist/src/components/request-line-editor.d.ts.map +1 -1
- package/dist/src/components/request-line-editor.js +73 -49
- package/dist/src/components/request-line-editor.js.map +1 -1
- package/dist/src/components/request-line-editor.stories.js +17 -53
- package/dist/src/components/request-line-editor.stories.js.map +1 -1
- package/dist/src/components/sandbox.d.ts +13 -0
- package/dist/src/components/sandbox.d.ts.map +1 -0
- package/dist/src/components/sandbox.js +107 -0
- package/dist/src/components/sandbox.js.map +1 -0
- package/dist/src/components/sandbox.stories.js +126 -0
- package/dist/src/components/sandbox.stories.js.map +1 -0
- package/dist/src/components/segment-control.d.ts +13 -0
- package/dist/src/components/segment-control.d.ts.map +1 -0
- package/dist/src/components/segment-control.js +33 -0
- package/dist/src/components/segment-control.js.map +1 -0
- package/dist/src/components/segment-control.stories.js +68 -0
- package/dist/src/components/segment-control.stories.js.map +1 -0
- package/dist/src/components/split-button.d.ts +12 -0
- package/dist/src/components/split-button.d.ts.map +1 -0
- package/dist/src/components/split-button.js +33 -0
- package/dist/src/components/split-button.js.map +1 -0
- package/dist/src/components/split-button.stories.js +84 -0
- package/dist/src/components/split-button.stories.js.map +1 -0
- package/dist/src/components/tag.d.ts +16 -0
- package/dist/src/components/tag.d.ts.map +1 -0
- package/dist/src/components/tag.js +198 -0
- package/dist/src/components/tag.js.map +1 -0
- package/dist/src/components/tag.stories.js +459 -0
- package/dist/src/components/tag.stories.js.map +1 -0
- package/dist/src/components/tile.d.ts +15 -0
- package/dist/src/components/tile.d.ts.map +1 -0
- package/dist/src/components/tile.js +76 -0
- package/dist/src/components/tile.js.map +1 -0
- package/dist/src/components/tile.stories.js +167 -0
- package/dist/src/components/tile.stories.js.map +1 -0
- package/dist/src/components/toolbar.d.ts +18 -0
- package/dist/src/components/toolbar.d.ts.map +1 -0
- package/dist/src/components/toolbar.js +61 -0
- package/dist/src/components/toolbar.js.map +1 -0
- package/dist/src/components/toolbar.stories.js +69 -0
- package/dist/src/components/toolbar.stories.js.map +1 -0
- package/dist/src/components/tree-view.d.ts +47 -0
- package/dist/src/components/tree-view.d.ts.map +1 -0
- package/dist/src/components/tree-view.js +122 -0
- package/dist/src/components/tree-view.js.map +1 -0
- package/dist/src/components/tree-view.stories.js +283 -0
- package/dist/src/components/tree-view.stories.js.map +1 -0
- package/dist/src/icons.d.ts +11 -0
- package/dist/src/icons.d.ts.map +1 -0
- package/dist/src/icons.js +328 -0
- package/dist/src/icons.js.map +1 -0
- package/dist/src/index.css +358 -74
- package/dist/src/index.d.ts +17 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +17 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/shadcn/components/ui/accordion.d.ts +2 -2
- package/dist/src/shadcn/components/ui/accordion.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/accordion.js +35 -9
- package/dist/src/shadcn/components/ui/accordion.js.map +1 -1
- package/dist/src/shadcn/components/ui/alert-dialog.d.ts +12 -4
- package/dist/src/shadcn/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/alert-dialog.js +128 -18
- package/dist/src/shadcn/components/ui/alert-dialog.js.map +1 -1
- package/dist/src/shadcn/components/ui/alert-dialog.stories.js +269 -19
- package/dist/src/shadcn/components/ui/alert-dialog.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/alert.d.ts +29 -6
- package/dist/src/shadcn/components/ui/alert.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/alert.js +50 -19
- package/dist/src/shadcn/components/ui/alert.js.map +1 -1
- package/dist/src/shadcn/components/ui/alert.stories.js +140 -36
- package/dist/src/shadcn/components/ui/alert.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/aspect-ratio.js +1 -0
- package/dist/src/shadcn/components/ui/aspect-ratio.js.map +1 -1
- package/dist/src/shadcn/components/ui/avatar.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/avatar.js +4 -3
- package/dist/src/shadcn/components/ui/avatar.js.map +1 -1
- package/dist/src/shadcn/components/ui/avatar.stories.js +68 -2
- package/dist/src/shadcn/components/ui/avatar.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/badge.d.ts +1 -1
- package/dist/src/shadcn/components/ui/badge.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/badge.js +16 -5
- package/dist/src/shadcn/components/ui/badge.js.map +1 -1
- package/dist/src/shadcn/components/ui/breadcrumb.d.ts +5 -2
- package/dist/src/shadcn/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/breadcrumb.js +98 -13
- package/dist/src/shadcn/components/ui/breadcrumb.js.map +1 -1
- package/dist/src/shadcn/components/ui/breadcrumb.stories.js +205 -45
- package/dist/src/shadcn/components/ui/breadcrumb.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/button.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/button.js +65 -11
- package/dist/src/shadcn/components/ui/button.js.map +1 -1
- package/dist/src/shadcn/components/ui/button.stories.js +99 -17
- package/dist/src/shadcn/components/ui/button.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/calendar.d.ts +1 -1
- package/dist/src/shadcn/components/ui/calendar.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/calendar.js +1 -0
- package/dist/src/shadcn/components/ui/calendar.js.map +1 -1
- package/dist/src/shadcn/components/ui/card.d.ts +5 -1
- package/dist/src/shadcn/components/ui/card.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/card.js +28 -7
- package/dist/src/shadcn/components/ui/card.js.map +1 -1
- package/dist/src/shadcn/components/ui/card.stories.js +23 -2
- package/dist/src/shadcn/components/ui/card.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/carousel.d.ts +1 -1
- package/dist/src/shadcn/components/ui/carousel.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/carousel.js +1 -0
- package/dist/src/shadcn/components/ui/carousel.js.map +1 -1
- package/dist/src/shadcn/components/ui/chart.d.ts +5 -5
- package/dist/src/shadcn/components/ui/chart.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/chart.js +4 -3
- package/dist/src/shadcn/components/ui/chart.js.map +1 -1
- package/dist/src/shadcn/components/ui/checkbox.d.ts +5 -1
- package/dist/src/shadcn/components/ui/checkbox.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/checkbox.js +46 -6
- package/dist/src/shadcn/components/ui/checkbox.js.map +1 -1
- package/dist/src/shadcn/components/ui/checkbox.stories.js +156 -46
- package/dist/src/shadcn/components/ui/checkbox.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/combobox.d.ts +29 -0
- package/dist/src/shadcn/components/ui/combobox.d.ts.map +1 -0
- package/dist/src/shadcn/components/ui/combobox.js +226 -0
- package/dist/src/shadcn/components/ui/combobox.js.map +1 -0
- package/dist/src/shadcn/components/ui/combobox.stories.js +167 -0
- package/dist/src/shadcn/components/ui/combobox.stories.js.map +1 -0
- package/dist/src/shadcn/components/ui/command.d.ts +4 -2
- package/dist/src/shadcn/components/ui/command.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/command.js +75 -13
- package/dist/src/shadcn/components/ui/command.js.map +1 -1
- package/dist/src/shadcn/components/ui/command.stories.js +277 -57
- package/dist/src/shadcn/components/ui/command.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/context-menu.d.ts +7 -3
- package/dist/src/shadcn/components/ui/context-menu.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/context-menu.js +120 -13
- package/dist/src/shadcn/components/ui/context-menu.js.map +1 -1
- package/dist/src/shadcn/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/dialog.js +35 -7
- package/dist/src/shadcn/components/ui/dialog.js.map +1 -1
- package/dist/src/shadcn/components/ui/drawer.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/drawer.js +27 -5
- package/dist/src/shadcn/components/ui/drawer.js.map +1 -1
- package/dist/src/shadcn/components/ui/dropdown-menu.d.ts +7 -3
- package/dist/src/shadcn/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/dropdown-menu.js +122 -14
- package/dist/src/shadcn/components/ui/dropdown-menu.js.map +1 -1
- package/dist/src/shadcn/components/ui/dropdown-menu.stories.js +22 -5
- package/dist/src/shadcn/components/ui/dropdown-menu.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/form.d.ts +2 -2
- package/dist/src/shadcn/components/ui/form.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/form.js +17 -8
- package/dist/src/shadcn/components/ui/form.js.map +1 -1
- package/dist/src/shadcn/components/ui/hover-card.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/hover-card.js +2 -1
- package/dist/src/shadcn/components/ui/hover-card.js.map +1 -1
- package/dist/src/shadcn/components/ui/input-otp.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/input-otp.js +1 -0
- package/dist/src/shadcn/components/ui/input-otp.js.map +1 -1
- package/dist/src/shadcn/components/ui/input.d.ts +3 -1
- package/dist/src/shadcn/components/ui/input.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/input.js +126 -17
- package/dist/src/shadcn/components/ui/input.js.map +1 -1
- package/dist/src/shadcn/components/ui/input.stories.js +218 -29
- package/dist/src/shadcn/components/ui/input.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/label.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/label.js +9 -1
- package/dist/src/shadcn/components/ui/label.js.map +1 -1
- package/dist/src/shadcn/components/ui/menubar.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/menubar.js +35 -13
- package/dist/src/shadcn/components/ui/menubar.js.map +1 -1
- package/dist/src/shadcn/components/ui/pagination.d.ts +9 -2
- package/dist/src/shadcn/components/ui/pagination.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/pagination.js +41 -24
- package/dist/src/shadcn/components/ui/pagination.js.map +1 -1
- package/dist/src/shadcn/components/ui/pagination.stories.js +44 -37
- package/dist/src/shadcn/components/ui/pagination.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/popover.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/popover.js +13 -1
- package/dist/src/shadcn/components/ui/popover.js.map +1 -1
- package/dist/src/shadcn/components/ui/progress.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/progress.js +6 -2
- package/dist/src/shadcn/components/ui/progress.js.map +1 -1
- package/dist/src/shadcn/components/ui/radio-button-group.d.ts +21 -0
- package/dist/src/shadcn/components/ui/radio-button-group.d.ts.map +1 -0
- package/dist/src/shadcn/components/ui/radio-button-group.js +148 -0
- package/dist/src/shadcn/components/ui/radio-button-group.js.map +1 -0
- package/dist/src/shadcn/components/ui/radio-button-group.stories.js +283 -0
- package/dist/src/shadcn/components/ui/radio-button-group.stories.js.map +1 -0
- package/dist/src/shadcn/components/ui/radio-group.d.ts +5 -1
- package/dist/src/shadcn/components/ui/radio-group.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/radio-group.js +40 -7
- package/dist/src/shadcn/components/ui/radio-group.js.map +1 -1
- package/dist/src/shadcn/components/ui/radio-group.stories.js +107 -32
- package/dist/src/shadcn/components/ui/radio-group.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/resizable.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/resizable.js +2 -1
- package/dist/src/shadcn/components/ui/resizable.js.map +1 -1
- package/dist/src/shadcn/components/ui/resizable.stories.js +2 -2
- package/dist/src/shadcn/components/ui/resizable.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/scroll-area.js +10 -3
- package/dist/src/shadcn/components/ui/scroll-area.js.map +1 -1
- package/dist/src/shadcn/components/ui/select.d.ts +1 -2
- package/dist/src/shadcn/components/ui/select.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/select.js +49 -19
- package/dist/src/shadcn/components/ui/select.js.map +1 -1
- package/dist/src/shadcn/components/ui/select.stories.js +193 -70
- package/dist/src/shadcn/components/ui/select.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/separator.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/separator.js +8 -1
- package/dist/src/shadcn/components/ui/separator.js.map +1 -1
- package/dist/src/shadcn/components/ui/sheet.js +1 -1
- package/dist/src/shadcn/components/ui/sheet.js.map +1 -1
- package/dist/src/shadcn/components/ui/sidebar.d.ts +4 -4
- package/dist/src/shadcn/components/ui/sidebar.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/sidebar.js +21 -6
- package/dist/src/shadcn/components/ui/sidebar.js.map +1 -1
- package/dist/src/shadcn/components/ui/skeleton.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/skeleton.js +3 -1
- package/dist/src/shadcn/components/ui/skeleton.js.map +1 -1
- package/dist/src/shadcn/components/ui/slider.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/slider.js +35 -4
- package/dist/src/shadcn/components/ui/slider.js.map +1 -1
- package/dist/src/shadcn/components/ui/sonner.d.ts +24 -2
- package/dist/src/shadcn/components/ui/sonner.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/sonner.js +127 -9
- package/dist/src/shadcn/components/ui/sonner.js.map +1 -1
- package/dist/src/shadcn/components/ui/sonner.stories.js +251 -12
- package/dist/src/shadcn/components/ui/sonner.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/switch.d.ts +7 -1
- package/dist/src/shadcn/components/ui/switch.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/switch.js +55 -3
- package/dist/src/shadcn/components/ui/switch.js.map +1 -1
- package/dist/src/shadcn/components/ui/switch.stories.js +84 -9
- package/dist/src/shadcn/components/ui/switch.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/table.d.ts +23 -6
- package/dist/src/shadcn/components/ui/table.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/table.js +65 -20
- package/dist/src/shadcn/components/ui/table.js.map +1 -1
- package/dist/src/shadcn/components/ui/table.stories.js +217 -97
- package/dist/src/shadcn/components/ui/table.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/tabs.d.ts +30 -5
- package/dist/src/shadcn/components/ui/tabs.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/tabs.js +470 -23
- package/dist/src/shadcn/components/ui/tabs.js.map +1 -1
- package/dist/src/shadcn/components/ui/tabs.stories.js +405 -181
- package/dist/src/shadcn/components/ui/tabs.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/textarea.d.ts +8 -1
- package/dist/src/shadcn/components/ui/textarea.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/textarea.js +30 -2
- package/dist/src/shadcn/components/ui/textarea.js.map +1 -1
- package/dist/src/shadcn/components/ui/textarea.stories.js +85 -4
- package/dist/src/shadcn/components/ui/textarea.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/toggle-group.d.ts +3 -3
- package/dist/src/shadcn/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/toggle-group.js +14 -12
- package/dist/src/shadcn/components/ui/toggle-group.js.map +1 -1
- package/dist/src/shadcn/components/ui/toggle.d.ts +3 -4
- package/dist/src/shadcn/components/ui/toggle.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/toggle.js +44 -16
- package/dist/src/shadcn/components/ui/toggle.js.map +1 -1
- package/dist/src/shadcn/components/ui/toggle.stories.js +130 -7
- package/dist/src/shadcn/components/ui/toggle.stories.js.map +1 -1
- package/dist/src/shadcn/components/ui/tooltip.d.ts.map +1 -1
- package/dist/src/shadcn/components/ui/tooltip.js +12 -1
- package/dist/src/shadcn/components/ui/tooltip.js.map +1 -1
- package/dist/src/shadcn/components/ui/tree.d.ts +29 -0
- package/dist/src/shadcn/components/ui/tree.d.ts.map +1 -0
- package/dist/src/shadcn/components/ui/tree.js +135 -0
- package/dist/src/shadcn/components/ui/tree.js.map +1 -0
- package/dist/src/shadcn/shadcn.css +4 -4
- package/dist/src/tokens.css +50 -20
- package/dist/src/typography.css +78 -15
- package/package.json +84 -64
- package/src/components/button-dropdown.stories.tsx +41 -0
- package/src/components/button-dropdown.tsx +97 -0
- package/src/components/code-editor/fhir-autocomplete.test.ts +993 -0
- package/src/components/code-editor/fhir-autocomplete.ts +2322 -0
- package/src/components/code-editor/http/grammar/http.grammar +74 -0
- package/src/components/code-editor/http/grammar/http.terms.ts +9 -0
- package/src/components/code-editor/http/grammar/http.test.ts +110 -0
- package/src/components/code-editor/http/grammar/http.ts +21 -0
- package/src/components/code-editor/http/index.ts +424 -0
- package/src/components/code-editor/index.tsx +1944 -42
- package/src/components/code-editor/json-ast.test.ts +230 -0
- package/src/components/code-editor/json-ast.ts +590 -0
- package/src/components/code-editor/sql-completion.ts +1112 -0
- package/src/components/code-editor.stories.tsx +325 -2
- package/src/components/copy-icon.tsx +57 -3
- package/src/components/data-table.stories.tsx +91 -0
- package/src/components/data-table.tsx +126 -0
- package/src/components/date-picker-input.stories.tsx +79 -0
- package/src/components/date-picker-input.tsx +104 -0
- package/src/components/fhir-structure-view.stories.tsx +439 -0
- package/src/components/fhir-structure-view.tsx +233 -0
- package/src/components/icon-button.stories.tsx +86 -0
- package/src/components/icon-button.tsx +57 -0
- package/src/components/operation-outcome-view.stories.tsx +163 -0
- package/src/components/operation-outcome-view.tsx +254 -0
- package/src/components/request-line-editor.stories.tsx +17 -27
- package/src/components/request-line-editor.tsx +103 -61
- package/src/components/sandbox.stories.tsx +131 -0
- package/src/components/sandbox.tsx +191 -0
- package/src/components/segment-control.stories.tsx +61 -0
- package/src/components/segment-control.tsx +83 -0
- package/src/components/split-button.stories.tsx +68 -0
- package/src/components/split-button.tsx +74 -0
- package/src/components/tag.stories.tsx +371 -0
- package/src/components/tag.tsx +236 -0
- package/src/components/tile.stories.tsx +149 -0
- package/src/components/tile.tsx +105 -0
- package/src/components/toolbar.stories.tsx +64 -0
- package/src/components/toolbar.tsx +98 -0
- package/src/components/tree-view.stories.tsx +265 -0
- package/src/components/tree-view.tsx +246 -0
- package/src/icons.tsx +331 -0
- package/src/index.css +358 -74
- package/src/index.tsx +17 -3
- package/src/shadcn/components/ui/accordion.tsx +91 -10
- package/src/shadcn/components/ui/alert-dialog.stories.tsx +209 -15
- package/src/shadcn/components/ui/alert-dialog.tsx +236 -26
- package/src/shadcn/components/ui/alert.stories.tsx +120 -21
- package/src/shadcn/components/ui/alert.tsx +125 -28
- package/src/shadcn/components/ui/aspect-ratio.tsx +1 -0
- package/src/shadcn/components/ui/avatar.stories.tsx +74 -1
- package/src/shadcn/components/ui/avatar.tsx +22 -6
- package/src/shadcn/components/ui/badge.tsx +67 -18
- package/src/shadcn/components/ui/breadcrumb.stories.tsx +161 -41
- package/src/shadcn/components/ui/breadcrumb.tsx +172 -23
- package/src/shadcn/components/ui/button.stories.tsx +106 -18
- package/src/shadcn/components/ui/button.tsx +151 -55
- package/src/shadcn/components/ui/calendar.tsx +1 -0
- package/src/shadcn/components/ui/card.stories.tsx +17 -3
- package/src/shadcn/components/ui/card.tsx +89 -14
- package/src/shadcn/components/ui/carousel.tsx +1 -0
- package/src/shadcn/components/ui/chart.tsx +9 -5
- package/src/shadcn/components/ui/checkbox.stories.tsx +78 -30
- package/src/shadcn/components/ui/checkbox.tsx +91 -8
- package/src/shadcn/components/ui/combobox.stories.tsx +148 -0
- package/src/shadcn/components/ui/combobox.tsx +324 -0
- package/src/shadcn/components/ui/command.stories.tsx +184 -39
- package/src/shadcn/components/ui/command.tsx +218 -37
- package/src/shadcn/components/ui/context-menu.tsx +333 -40
- package/src/shadcn/components/ui/dialog.tsx +101 -13
- package/src/shadcn/components/ui/drawer.tsx +94 -18
- package/src/shadcn/components/ui/dropdown-menu.stories.tsx +18 -2
- package/src/shadcn/components/ui/dropdown-menu.tsx +334 -68
- package/src/shadcn/components/ui/form.tsx +22 -11
- package/src/shadcn/components/ui/hover-card.tsx +2 -1
- package/src/shadcn/components/ui/input-otp.tsx +1 -0
- package/src/shadcn/components/ui/input.stories.tsx +235 -27
- package/src/shadcn/components/ui/input.tsx +400 -29
- package/src/shadcn/components/ui/label.tsx +22 -4
- package/src/shadcn/components/ui/menubar.tsx +188 -43
- package/src/shadcn/components/ui/pagination.stories.tsx +8 -2
- package/src/shadcn/components/ui/pagination.tsx +65 -8
- package/src/shadcn/components/ui/popover.tsx +36 -4
- package/src/shadcn/components/ui/progress.tsx +21 -5
- package/src/shadcn/components/ui/radio-button-group.stories.tsx +247 -0
- package/src/shadcn/components/ui/radio-button-group.tsx +188 -0
- package/src/shadcn/components/ui/radio-group.stories.tsx +70 -14
- package/src/shadcn/components/ui/radio-group.tsx +85 -9
- package/src/shadcn/components/ui/resizable.stories.tsx +2 -2
- package/src/shadcn/components/ui/resizable.tsx +2 -1
- package/src/shadcn/components/ui/scroll-area.tsx +34 -5
- package/src/shadcn/components/ui/select.stories.tsx +108 -32
- package/src/shadcn/components/ui/select.tsx +182 -36
- package/src/shadcn/components/ui/separator.tsx +16 -5
- package/src/shadcn/components/ui/sheet.tsx +1 -1
- package/src/shadcn/components/ui/sidebar.tsx +69 -26
- package/src/shadcn/components/ui/skeleton.tsx +4 -1
- package/src/shadcn/components/ui/slider.tsx +83 -11
- package/src/shadcn/components/ui/sonner.stories.tsx +238 -17
- package/src/shadcn/components/ui/sonner.tsx +254 -11
- package/src/shadcn/components/ui/switch.stories.tsx +52 -5
- package/src/shadcn/components/ui/switch.tsx +92 -7
- package/src/shadcn/components/ui/table.stories.tsx +252 -72
- package/src/shadcn/components/ui/table.tsx +204 -26
- package/src/shadcn/components/ui/tabs.stories.tsx +235 -123
- package/src/shadcn/components/ui/tabs.tsx +694 -36
- package/src/shadcn/components/ui/textarea.stories.tsx +94 -2
- package/src/shadcn/components/ui/textarea.tsx +70 -5
- package/src/shadcn/components/ui/toggle-group.tsx +35 -13
- package/src/shadcn/components/ui/toggle.stories.tsx +92 -5
- package/src/shadcn/components/ui/toggle.tsx +96 -23
- package/src/shadcn/components/ui/tooltip.tsx +34 -8
- package/src/shadcn/components/ui/tree.tsx +257 -0
- package/src/shadcn/shadcn.css +4 -4
- package/src/tokens.css +50 -20
- package/src/typography.css +78 -15
- package/dist/src/components/code-editor.stories.d.ts +0 -7
- package/dist/src/components/code-editor.stories.d.ts.map +0 -1
- package/dist/src/components/request-line-editor.stories.d.ts +0 -11
- package/dist/src/components/request-line-editor.stories.d.ts.map +0 -1
- package/dist/src/index.stories.d.ts +0 -14
- package/dist/src/index.stories.d.ts.map +0 -1
- package/dist/src/index.stories.js +0 -19
- package/dist/src/index.stories.js.map +0 -1
- package/dist/src/shadcn/components/ui/accordion.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/accordion.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/alert-dialog.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/alert-dialog.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/alert.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/alert.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/aspect-ratio.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/aspect-ratio.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/avatar.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/avatar.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/badge.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/badge.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/breadcrumb.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/breadcrumb.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/button.stories.d.ts +0 -23
- package/dist/src/shadcn/components/ui/button.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/calendar.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/calendar.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/card.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/card.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/carousel.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/carousel.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/chart.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/chart.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/checkbox.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/checkbox.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/collapsible.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/collapsible.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/command.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/command.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/context-menu.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/context-menu.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/dialog.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/dialog.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/drawer.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/drawer.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/dropdown-menu.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/dropdown-menu.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/form.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/form.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/hover-card.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/hover-card.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/input-otp.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/input-otp.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/input.stories.d.ts +0 -18
- package/dist/src/shadcn/components/ui/input.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/label.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/label.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/menubar.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/menubar.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/navigation-menu.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/navigation-menu.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/pagination.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/pagination.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/popover.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/popover.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/progress.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/progress.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/radio-group.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/radio-group.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/resizable.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/resizable.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/scroll-area.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/scroll-area.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/select.stories.d.ts +0 -11
- package/dist/src/shadcn/components/ui/select.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/separator.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/separator.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/sheet.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/sheet.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/sidebar.stories.d.ts +0 -11
- package/dist/src/shadcn/components/ui/sidebar.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/skeleton.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/skeleton.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/slider.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/slider.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/sonner.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/sonner.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/switch.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/switch.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/table.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/table.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/tabs.stories.d.ts +0 -32
- package/dist/src/shadcn/components/ui/tabs.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/textarea.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/textarea.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/toggle-group.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/toggle-group.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/toggle.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/toggle.stories.d.ts.map +0 -1
- package/dist/src/shadcn/components/ui/tooltip.stories.d.ts +0 -8
- package/dist/src/shadcn/components/ui/tooltip.stories.d.ts.map +0 -1
- package/src/index.stories.tsx +0 -21
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { CheckIcon, X } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { Command, CommandEmpty, CommandInput, CommandItem, CommandList } from "./command.js";
|
|
6
|
+
import { Select, SelectContent, SelectTrigger, SelectValue } from "./select.js";
|
|
7
|
+
import { cn } from "../../lib/utils.js";
|
|
8
|
+
import { Tag } from "../../../components/tag.js";
|
|
9
|
+
/* ==========================================================================
|
|
10
|
+
Styles
|
|
11
|
+
========================================================================== */ const selectContentStyles = cn(// Spacing
|
|
12
|
+
"p-0", // Radix viewport reset
|
|
13
|
+
"[&_[data-radix-select-viewport]]:p-0");
|
|
14
|
+
const commandStyles = cn(// Layout
|
|
15
|
+
"w-full");
|
|
16
|
+
const checkIconStyles = cn(// Layout
|
|
17
|
+
"ml-auto", // Size
|
|
18
|
+
"size-4");
|
|
19
|
+
const checkIconVisibleStyles = cn(checkIconStyles, "opacity-100");
|
|
20
|
+
const checkIconHiddenStyles = cn(checkIconStyles, "opacity-0");
|
|
21
|
+
const triggerWithValueStyles = cn("text-text-primary");
|
|
22
|
+
const triggerWithTagsStyles = cn("pl-2");
|
|
23
|
+
const clearButtonStyles = cn(// Layout
|
|
24
|
+
"ml-auto", "shrink-0", // Size
|
|
25
|
+
"size-4", // Colors
|
|
26
|
+
"text-text-tertiary", "hover:text-text-primary", // Interactions
|
|
27
|
+
"cursor-pointer", "pointer-events-auto", "z-10", // Transitions
|
|
28
|
+
"transition-colors");
|
|
29
|
+
/* ==========================================================================
|
|
30
|
+
Components
|
|
31
|
+
========================================================================== */ export function Combobox({ options, value, onValueChange, placeholder = "Select option...", searchPlaceholder = "Search...", emptyText = "No options found.", disabled = false, className }) {
|
|
32
|
+
const [open, setOpen] = React.useState(false);
|
|
33
|
+
const [searchValue, setSearchValue] = React.useState("");
|
|
34
|
+
const inputRef = React.useRef(null);
|
|
35
|
+
const filteredOptions = React.useMemo(()=>{
|
|
36
|
+
if (!searchValue) return options;
|
|
37
|
+
return options.filter((option)=>option.label.toLowerCase().includes(searchValue.toLowerCase()));
|
|
38
|
+
}, [
|
|
39
|
+
options,
|
|
40
|
+
searchValue
|
|
41
|
+
]);
|
|
42
|
+
const selectedOption = options.find((option)=>option.value === value);
|
|
43
|
+
const changeOpen = (newOpen)=>{
|
|
44
|
+
if (!newOpen) {
|
|
45
|
+
setSearchValue("");
|
|
46
|
+
} else {
|
|
47
|
+
inputRef.current?.focus();
|
|
48
|
+
}
|
|
49
|
+
setOpen(newOpen);
|
|
50
|
+
};
|
|
51
|
+
return /*#__PURE__*/ _jsxs(Select, {
|
|
52
|
+
value: value || "",
|
|
53
|
+
...onValueChange && {
|
|
54
|
+
onValueChange
|
|
55
|
+
},
|
|
56
|
+
disabled: disabled,
|
|
57
|
+
open: open,
|
|
58
|
+
onOpenChange: changeOpen,
|
|
59
|
+
children: [
|
|
60
|
+
/*#__PURE__*/ _jsx(SelectTrigger, {
|
|
61
|
+
className: className,
|
|
62
|
+
children: /*#__PURE__*/ _jsx(SelectValue, {
|
|
63
|
+
placeholder: placeholder,
|
|
64
|
+
children: selectedOption?.label
|
|
65
|
+
})
|
|
66
|
+
}),
|
|
67
|
+
/*#__PURE__*/ _jsx(SelectContent, {
|
|
68
|
+
className: selectContentStyles,
|
|
69
|
+
children: /*#__PURE__*/ _jsxs(Command, {
|
|
70
|
+
className: commandStyles,
|
|
71
|
+
children: [
|
|
72
|
+
/*#__PURE__*/ _jsx(CommandInput, {
|
|
73
|
+
ref: inputRef,
|
|
74
|
+
placeholder: searchPlaceholder,
|
|
75
|
+
value: searchValue,
|
|
76
|
+
onValueChange: setSearchValue
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsxs(CommandList, {
|
|
79
|
+
children: [
|
|
80
|
+
/*#__PURE__*/ _jsx(CommandEmpty, {
|
|
81
|
+
children: emptyText
|
|
82
|
+
}),
|
|
83
|
+
filteredOptions.map((option)=>/*#__PURE__*/ _jsxs(CommandItem, {
|
|
84
|
+
value: option.value,
|
|
85
|
+
"data-state": value === option.value ? "checked" : undefined,
|
|
86
|
+
onSelect: (currentValue)=>{
|
|
87
|
+
onValueChange?.(currentValue);
|
|
88
|
+
changeOpen(false);
|
|
89
|
+
},
|
|
90
|
+
children: [
|
|
91
|
+
option.label,
|
|
92
|
+
/*#__PURE__*/ _jsx(CheckIcon, {
|
|
93
|
+
className: value === option.value ? checkIconVisibleStyles : checkIconHiddenStyles
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
}, option.value))
|
|
97
|
+
]
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
export function MultiCombobox({ options, value = [], onValueChange, placeholder = "Select options...", searchPlaceholder = "Search...", emptyText = "No options found.", disabled = false, className, maxDisplay = 2 }) {
|
|
106
|
+
const [open, setOpen] = React.useState(false);
|
|
107
|
+
const [searchValue, setSearchValue] = React.useState("");
|
|
108
|
+
const inputRef = React.useRef(null);
|
|
109
|
+
const filteredOptions = React.useMemo(()=>{
|
|
110
|
+
if (!searchValue) return options;
|
|
111
|
+
return options.filter((option)=>option.label.toLowerCase().includes(searchValue.toLowerCase()));
|
|
112
|
+
}, [
|
|
113
|
+
options,
|
|
114
|
+
searchValue
|
|
115
|
+
]);
|
|
116
|
+
const selectedOptions = React.useMemo(()=>options.filter((option)=>value.includes(option.value)), [
|
|
117
|
+
options,
|
|
118
|
+
value
|
|
119
|
+
]);
|
|
120
|
+
const handleSelect = (selectedValue)=>{
|
|
121
|
+
const newValue = value.includes(selectedValue) ? value.filter((v)=>v !== selectedValue) : [
|
|
122
|
+
...value,
|
|
123
|
+
selectedValue
|
|
124
|
+
];
|
|
125
|
+
onValueChange?.(newValue);
|
|
126
|
+
};
|
|
127
|
+
const handleClear = (e)=>{
|
|
128
|
+
e.stopPropagation();
|
|
129
|
+
onValueChange?.([]);
|
|
130
|
+
};
|
|
131
|
+
const changeOpen = (newOpen)=>{
|
|
132
|
+
if (!newOpen) {
|
|
133
|
+
setSearchValue("");
|
|
134
|
+
} else {
|
|
135
|
+
inputRef.current?.focus();
|
|
136
|
+
}
|
|
137
|
+
setOpen(newOpen);
|
|
138
|
+
};
|
|
139
|
+
const hasValue = selectedOptions.length > 0;
|
|
140
|
+
const displayedOptions = selectedOptions.slice(0, maxDisplay);
|
|
141
|
+
const remainingCount = selectedOptions.length - maxDisplay;
|
|
142
|
+
return /*#__PURE__*/ _jsxs(Select, {
|
|
143
|
+
open: open,
|
|
144
|
+
onOpenChange: changeOpen,
|
|
145
|
+
children: [
|
|
146
|
+
/*#__PURE__*/ _jsx(SelectTrigger, {
|
|
147
|
+
className: cn(className, hasValue && triggerWithValueStyles, hasValue && triggerWithTagsStyles),
|
|
148
|
+
disabled: disabled,
|
|
149
|
+
children: hasValue ? /*#__PURE__*/ _jsxs(_Fragment, {
|
|
150
|
+
children: [
|
|
151
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
152
|
+
className: "flex items-center gap-1 overflow-hidden",
|
|
153
|
+
children: [
|
|
154
|
+
displayedOptions.map((opt)=>/*#__PURE__*/ _jsx(Tag, {
|
|
155
|
+
size: "small",
|
|
156
|
+
color: "gray",
|
|
157
|
+
vibrance: "subtle",
|
|
158
|
+
showIcon: false,
|
|
159
|
+
children: opt.label
|
|
160
|
+
}, opt.value)),
|
|
161
|
+
remainingCount > 0 && /*#__PURE__*/ _jsxs(Tag, {
|
|
162
|
+
size: "small",
|
|
163
|
+
color: "gray",
|
|
164
|
+
vibrance: "subtle",
|
|
165
|
+
showIcon: false,
|
|
166
|
+
children: [
|
|
167
|
+
"+",
|
|
168
|
+
remainingCount
|
|
169
|
+
]
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
}),
|
|
173
|
+
/*#__PURE__*/ _jsx("button", {
|
|
174
|
+
type: "button",
|
|
175
|
+
className: clearButtonStyles,
|
|
176
|
+
onClick: handleClear,
|
|
177
|
+
onPointerDown: (e)=>e.stopPropagation(),
|
|
178
|
+
children: /*#__PURE__*/ _jsx(X, {
|
|
179
|
+
className: "size-4"
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
]
|
|
183
|
+
}) : /*#__PURE__*/ _jsx(SelectValue, {
|
|
184
|
+
placeholder: placeholder
|
|
185
|
+
})
|
|
186
|
+
}),
|
|
187
|
+
/*#__PURE__*/ _jsx(SelectContent, {
|
|
188
|
+
className: selectContentStyles,
|
|
189
|
+
children: /*#__PURE__*/ _jsxs(Command, {
|
|
190
|
+
className: commandStyles,
|
|
191
|
+
children: [
|
|
192
|
+
/*#__PURE__*/ _jsx(CommandInput, {
|
|
193
|
+
ref: inputRef,
|
|
194
|
+
placeholder: searchPlaceholder,
|
|
195
|
+
value: searchValue,
|
|
196
|
+
onValueChange: setSearchValue
|
|
197
|
+
}),
|
|
198
|
+
/*#__PURE__*/ _jsxs(CommandList, {
|
|
199
|
+
children: [
|
|
200
|
+
/*#__PURE__*/ _jsx(CommandEmpty, {
|
|
201
|
+
children: emptyText
|
|
202
|
+
}),
|
|
203
|
+
filteredOptions.map((option)=>{
|
|
204
|
+
const isSelected = value.includes(option.value);
|
|
205
|
+
return /*#__PURE__*/ _jsxs(CommandItem, {
|
|
206
|
+
value: option.value,
|
|
207
|
+
"data-state": isSelected ? "checked" : undefined,
|
|
208
|
+
onSelect: handleSelect,
|
|
209
|
+
children: [
|
|
210
|
+
option.label,
|
|
211
|
+
/*#__PURE__*/ _jsx(CheckIcon, {
|
|
212
|
+
className: isSelected ? checkIconVisibleStyles : checkIconHiddenStyles
|
|
213
|
+
})
|
|
214
|
+
]
|
|
215
|
+
}, option.value);
|
|
216
|
+
})
|
|
217
|
+
]
|
|
218
|
+
})
|
|
219
|
+
]
|
|
220
|
+
})
|
|
221
|
+
})
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
//# sourceMappingURL=combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/shadcn/components/ui/combobox.tsx"],"sourcesContent":["\"use client\";\n\nimport { CheckIcon, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"#shadcn/components/ui/command\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectTrigger,\n\tSelectValue,\n} from \"#shadcn/components/ui/select\";\nimport { cn } from \"#shadcn/lib/utils\";\nimport { Tag } from \"../../../components/tag\";\n\n/* ==========================================================================\n Styles\n ========================================================================== */\n\nconst selectContentStyles = cn(\n\t// Spacing\n\t\"p-0\",\n\t// Radix viewport reset\n\t\"[&_[data-radix-select-viewport]]:p-0\",\n);\n\nconst commandStyles = cn(\n\t// Layout\n\t\"w-full\",\n);\n\nconst checkIconStyles = cn(\n\t// Layout\n\t\"ml-auto\",\n\t// Size\n\t\"size-4\",\n);\n\nconst checkIconVisibleStyles = cn(checkIconStyles, \"opacity-100\");\n\nconst checkIconHiddenStyles = cn(checkIconStyles, \"opacity-0\");\n\nconst triggerWithValueStyles = cn(\"text-text-primary\");\n\nconst triggerWithTagsStyles = cn(\"pl-2\");\n\nconst clearButtonStyles = cn(\n\t// Layout\n\t\"ml-auto\",\n\t\"shrink-0\",\n\t// Size\n\t\"size-4\",\n\t// Colors\n\t\"text-text-tertiary\",\n\t\"hover:text-text-primary\",\n\t// Interactions\n\t\"cursor-pointer\",\n\t\"pointer-events-auto\",\n\t\"z-10\",\n\t// Transitions\n\t\"transition-colors\",\n);\n\n/* ==========================================================================\n Types\n ========================================================================== */\n\nexport interface ComboboxOption {\n\tvalue: string;\n\tlabel: string;\n}\n\ninterface ComboboxProps {\n\toptions: ComboboxOption[];\n\tvalue?: string;\n\tonValueChange?: (value: string) => void;\n\tplaceholder?: string;\n\tsearchPlaceholder?: string;\n\temptyText?: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n}\n\n/* ==========================================================================\n Components\n ========================================================================== */\n\nexport function Combobox({\n\toptions,\n\tvalue,\n\tonValueChange,\n\tplaceholder = \"Select option...\",\n\tsearchPlaceholder = \"Search...\",\n\temptyText = \"No options found.\",\n\tdisabled = false,\n\tclassName,\n}: ComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst [searchValue, setSearchValue] = React.useState(\"\");\n\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\n\tconst filteredOptions = React.useMemo(() => {\n\t\tif (!searchValue) return options;\n\t\treturn options.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(searchValue.toLowerCase()),\n\t\t);\n\t}, [options, searchValue]);\n\n\tconst selectedOption = options.find((option) => option.value === value);\n\n\tconst changeOpen = (newOpen: boolean) => {\n\t\tif (!newOpen) {\n\t\t\tsetSearchValue(\"\");\n\t\t} else {\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t\tsetOpen(newOpen);\n\t};\n\n\treturn (\n\t\t<Select\n\t\t\tvalue={value || \"\"}\n\t\t\t{...(onValueChange && { onValueChange })}\n\t\t\tdisabled={disabled}\n\t\t\topen={open}\n\t\t\tonOpenChange={changeOpen}\n\t\t>\n\t\t\t<SelectTrigger className={className}>\n\t\t\t\t<SelectValue placeholder={placeholder}>\n\t\t\t\t\t{selectedOption?.label}\n\t\t\t\t</SelectValue>\n\t\t\t</SelectTrigger>\n\t\t\t<SelectContent className={selectContentStyles}>\n\t\t\t\t<Command className={commandStyles}>\n\t\t\t\t\t<CommandInput\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={searchValue}\n\t\t\t\t\t\tonValueChange={setSearchValue}\n\t\t\t\t\t/>\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\n\t\t\t\t\t\t{filteredOptions.map((option) => (\n\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\t\tdata-state={value === option.value ? \"checked\" : undefined}\n\t\t\t\t\t\t\t\tonSelect={(currentValue) => {\n\t\t\t\t\t\t\t\t\tonValueChange?.(currentValue);\n\t\t\t\t\t\t\t\t\tchangeOpen(false);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tvalue === option.value\n\t\t\t\t\t\t\t\t\t\t\t? checkIconVisibleStyles\n\t\t\t\t\t\t\t\t\t\t\t: checkIconHiddenStyles\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</SelectContent>\n\t\t</Select>\n\t);\n}\n\ninterface MultiComboboxProps {\n\toptions: ComboboxOption[];\n\tvalue?: string[];\n\tonValueChange?: (value: string[]) => void;\n\tplaceholder?: string;\n\tsearchPlaceholder?: string;\n\temptyText?: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tmaxDisplay?: number;\n}\n\nexport function MultiCombobox({\n\toptions,\n\tvalue = [],\n\tonValueChange,\n\tplaceholder = \"Select options...\",\n\tsearchPlaceholder = \"Search...\",\n\temptyText = \"No options found.\",\n\tdisabled = false,\n\tclassName,\n\tmaxDisplay = 2,\n}: MultiComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst [searchValue, setSearchValue] = React.useState(\"\");\n\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\n\tconst filteredOptions = React.useMemo(() => {\n\t\tif (!searchValue) return options;\n\t\treturn options.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(searchValue.toLowerCase()),\n\t\t);\n\t}, [options, searchValue]);\n\n\tconst selectedOptions = React.useMemo(\n\t\t() => options.filter((option) => value.includes(option.value)),\n\t\t[options, value],\n\t);\n\n\tconst handleSelect = (selectedValue: string) => {\n\t\tconst newValue = value.includes(selectedValue)\n\t\t\t? value.filter((v) => v !== selectedValue)\n\t\t\t: [...value, selectedValue];\n\t\tonValueChange?.(newValue);\n\t};\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tonValueChange?.([]);\n\t};\n\n\tconst changeOpen = (newOpen: boolean) => {\n\t\tif (!newOpen) {\n\t\t\tsetSearchValue(\"\");\n\t\t} else {\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t\tsetOpen(newOpen);\n\t};\n\n\tconst hasValue = selectedOptions.length > 0;\n\tconst displayedOptions = selectedOptions.slice(0, maxDisplay);\n\tconst remainingCount = selectedOptions.length - maxDisplay;\n\n\treturn (\n\t\t<Select open={open} onOpenChange={changeOpen}>\n\t\t\t<SelectTrigger\n\t\t\t\tclassName={cn(\n\t\t\t\t\tclassName,\n\t\t\t\t\thasValue && triggerWithValueStyles,\n\t\t\t\t\thasValue && triggerWithTagsStyles,\n\t\t\t\t)}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{hasValue ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"flex items-center gap-1 overflow-hidden\">\n\t\t\t\t\t\t\t{displayedOptions.map((opt) => (\n\t\t\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t\t\t\t\tvibrance=\"subtle\"\n\t\t\t\t\t\t\t\t\tshowIcon={false}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</Tag>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{remainingCount > 0 && (\n\t\t\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t\t\t\t\tvibrance=\"subtle\"\n\t\t\t\t\t\t\t\t\tshowIcon={false}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t+{remainingCount}\n\t\t\t\t\t\t\t\t</Tag>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName={clearButtonStyles}\n\t\t\t\t\t\t\tonClick={handleClear}\n\t\t\t\t\t\t\tonPointerDown={(e) => e.stopPropagation()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<SelectValue placeholder={placeholder} />\n\t\t\t\t)}\n\t\t\t</SelectTrigger>\n\t\t\t<SelectContent className={selectContentStyles}>\n\t\t\t\t<Command className={commandStyles}>\n\t\t\t\t\t<CommandInput\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={searchValue}\n\t\t\t\t\t\tonValueChange={setSearchValue}\n\t\t\t\t\t/>\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\n\t\t\t\t\t\t{filteredOptions.map((option) => {\n\t\t\t\t\t\t\tconst isSelected = value.includes(option.value);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\t\t\tdata-state={isSelected ? \"checked\" : undefined}\n\t\t\t\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tisSelected\n\t\t\t\t\t\t\t\t\t\t\t\t? checkIconVisibleStyles\n\t\t\t\t\t\t\t\t\t\t\t\t: checkIconHiddenStyles\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</SelectContent>\n\t\t</Select>\n\t);\n}\n"],"names":["CheckIcon","X","React","Command","CommandEmpty","CommandInput","CommandItem","CommandList","Select","SelectContent","SelectTrigger","SelectValue","cn","Tag","selectContentStyles","commandStyles","checkIconStyles","checkIconVisibleStyles","checkIconHiddenStyles","triggerWithValueStyles","triggerWithTagsStyles","clearButtonStyles","Combobox","options","value","onValueChange","placeholder","searchPlaceholder","emptyText","disabled","className","open","setOpen","useState","searchValue","setSearchValue","inputRef","useRef","filteredOptions","useMemo","filter","option","label","toLowerCase","includes","selectedOption","find","changeOpen","newOpen","current","focus","onOpenChange","ref","map","data-state","undefined","onSelect","currentValue","MultiCombobox","maxDisplay","selectedOptions","handleSelect","selectedValue","newValue","v","handleClear","e","stopPropagation","hasValue","length","displayedOptions","slice","remainingCount","div","opt","size","color","vibrance","showIcon","button","type","onClick","onPointerDown","isSelected"],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Controls, Primary, Title } from "@storybook/addon-docs/blocks";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Combobox, MultiCombobox } from "./combobox.js";
|
|
5
|
+
const demoOptions = [
|
|
6
|
+
{
|
|
7
|
+
value: "next.js",
|
|
8
|
+
label: "Next.js"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
value: "sveltekit",
|
|
12
|
+
label: "SvelteKit"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "nuxt.js",
|
|
16
|
+
label: "Nuxt.js"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: "remix",
|
|
20
|
+
label: "Remix"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
value: "astro",
|
|
24
|
+
label: "Astro"
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
function ComboboxWrapper({ multi = false, disabled = false }) {
|
|
28
|
+
const [value, setValue] = useState("");
|
|
29
|
+
const [multiValue, setMultiValue] = useState([]);
|
|
30
|
+
if (multi) {
|
|
31
|
+
return /*#__PURE__*/ _jsx(MultiCombobox, {
|
|
32
|
+
options: demoOptions,
|
|
33
|
+
value: multiValue,
|
|
34
|
+
onValueChange: setMultiValue,
|
|
35
|
+
placeholder: "Select frameworks...",
|
|
36
|
+
searchPlaceholder: "Search framework...",
|
|
37
|
+
disabled: disabled
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return /*#__PURE__*/ _jsx(Combobox, {
|
|
41
|
+
options: demoOptions,
|
|
42
|
+
value: value,
|
|
43
|
+
onValueChange: setValue,
|
|
44
|
+
placeholder: "Select framework...",
|
|
45
|
+
searchPlaceholder: "Search framework...",
|
|
46
|
+
disabled: disabled
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const meta = {
|
|
50
|
+
title: "Component/Combobox",
|
|
51
|
+
component: ComboboxWrapper,
|
|
52
|
+
parameters: {
|
|
53
|
+
layout: "centered",
|
|
54
|
+
docs: {
|
|
55
|
+
page: ()=>/*#__PURE__*/ _jsxs(_Fragment, {
|
|
56
|
+
children: [
|
|
57
|
+
/*#__PURE__*/ _jsx(Title, {}),
|
|
58
|
+
/*#__PURE__*/ _jsxs("p", {
|
|
59
|
+
className: "sbdocs-p",
|
|
60
|
+
children: [
|
|
61
|
+
"Combobox is a searchable select component. When the dropdown opens, it displays a ",
|
|
62
|
+
/*#__PURE__*/ _jsx("strong", {
|
|
63
|
+
children: "Command"
|
|
64
|
+
}),
|
|
65
|
+
" component for search and selection. See the Command component for all available styling options."
|
|
66
|
+
]
|
|
67
|
+
}),
|
|
68
|
+
/*#__PURE__*/ _jsx(Primary, {}),
|
|
69
|
+
/*#__PURE__*/ _jsx(Controls, {})
|
|
70
|
+
]
|
|
71
|
+
})
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
argTypes: {
|
|
75
|
+
multi: {
|
|
76
|
+
control: "boolean"
|
|
77
|
+
},
|
|
78
|
+
disabled: {
|
|
79
|
+
control: "boolean"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
args: {
|
|
83
|
+
multi: false,
|
|
84
|
+
disabled: false
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
export default meta;
|
|
88
|
+
export const Default = {
|
|
89
|
+
tags: [
|
|
90
|
+
"!dev"
|
|
91
|
+
],
|
|
92
|
+
render: ({ multi = false, disabled = false })=>/*#__PURE__*/ _jsx("div", {
|
|
93
|
+
className: "w-[300px]",
|
|
94
|
+
children: /*#__PURE__*/ _jsx(ComboboxWrapper, {
|
|
95
|
+
multi: multi,
|
|
96
|
+
disabled: disabled
|
|
97
|
+
})
|
|
98
|
+
})
|
|
99
|
+
};
|
|
100
|
+
export const Demo = {
|
|
101
|
+
tags: [
|
|
102
|
+
"!autodocs"
|
|
103
|
+
],
|
|
104
|
+
render: ()=>{
|
|
105
|
+
const [value, setValue] = useState("");
|
|
106
|
+
const [multiValue, setMultiValue] = useState([]);
|
|
107
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
108
|
+
className: "space-y-8",
|
|
109
|
+
children: [
|
|
110
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
111
|
+
children: [
|
|
112
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
113
|
+
className: "typo-label mb-4",
|
|
114
|
+
children: "Single select"
|
|
115
|
+
}),
|
|
116
|
+
/*#__PURE__*/ _jsx("div", {
|
|
117
|
+
className: "w-[300px]",
|
|
118
|
+
children: /*#__PURE__*/ _jsx(Combobox, {
|
|
119
|
+
options: demoOptions,
|
|
120
|
+
value: value,
|
|
121
|
+
onValueChange: setValue,
|
|
122
|
+
placeholder: "Select framework...",
|
|
123
|
+
searchPlaceholder: "Search framework..."
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
]
|
|
127
|
+
}),
|
|
128
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
129
|
+
children: [
|
|
130
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
131
|
+
className: "typo-label mb-4",
|
|
132
|
+
children: "Multi select"
|
|
133
|
+
}),
|
|
134
|
+
/*#__PURE__*/ _jsx("div", {
|
|
135
|
+
className: "w-[300px]",
|
|
136
|
+
children: /*#__PURE__*/ _jsx(MultiCombobox, {
|
|
137
|
+
options: demoOptions,
|
|
138
|
+
value: multiValue,
|
|
139
|
+
onValueChange: setMultiValue,
|
|
140
|
+
placeholder: "Select frameworks...",
|
|
141
|
+
searchPlaceholder: "Search framework..."
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
]
|
|
145
|
+
}),
|
|
146
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
147
|
+
children: [
|
|
148
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
149
|
+
className: "typo-label mb-4",
|
|
150
|
+
children: "Disabled"
|
|
151
|
+
}),
|
|
152
|
+
/*#__PURE__*/ _jsx("div", {
|
|
153
|
+
className: "w-[300px]",
|
|
154
|
+
children: /*#__PURE__*/ _jsx(Combobox, {
|
|
155
|
+
options: demoOptions,
|
|
156
|
+
placeholder: "Select framework...",
|
|
157
|
+
disabled: true
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
})
|
|
162
|
+
]
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
//# sourceMappingURL=combobox.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/shadcn/components/ui/combobox.stories.tsx"],"sourcesContent":["import { Controls, Primary, Title } from \"@storybook/addon-docs/blocks\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport { useState } from \"react\";\nimport { Combobox, MultiCombobox } from \"./combobox\";\n\nconst demoOptions = [\n\t{ value: \"next.js\", label: \"Next.js\" },\n\t{ value: \"sveltekit\", label: \"SvelteKit\" },\n\t{ value: \"nuxt.js\", label: \"Nuxt.js\" },\n\t{ value: \"remix\", label: \"Remix\" },\n\t{ value: \"astro\", label: \"Astro\" },\n];\n\ninterface ComboboxWrapperProps {\n\tmulti?: boolean;\n\tdisabled?: boolean;\n}\n\nfunction ComboboxWrapper({\n\tmulti = false,\n\tdisabled = false,\n}: ComboboxWrapperProps) {\n\tconst [value, setValue] = useState(\"\");\n\tconst [multiValue, setMultiValue] = useState<string[]>([]);\n\n\tif (multi) {\n\t\treturn (\n\t\t\t<MultiCombobox\n\t\t\t\toptions={demoOptions}\n\t\t\t\tvalue={multiValue}\n\t\t\t\tonValueChange={setMultiValue}\n\t\t\t\tplaceholder=\"Select frameworks...\"\n\t\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Combobox\n\t\t\toptions={demoOptions}\n\t\t\tvalue={value}\n\t\t\tonValueChange={setValue}\n\t\t\tplaceholder=\"Select framework...\"\n\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\tdisabled={disabled}\n\t\t/>\n\t);\n}\n\nconst meta = {\n\ttitle: \"Component/Combobox\",\n\tcomponent: ComboboxWrapper,\n\tparameters: {\n\t\tlayout: \"centered\",\n\t\tdocs: {\n\t\t\tpage: () => (\n\t\t\t\t<>\n\t\t\t\t\t<Title />\n\t\t\t\t\t<p className=\"sbdocs-p\">\n\t\t\t\t\t\tCombobox is a searchable select component. When the dropdown opens,\n\t\t\t\t\t\tit displays a <strong>Command</strong> component for search and\n\t\t\t\t\t\tselection. See the Command component for all available styling\n\t\t\t\t\t\toptions.\n\t\t\t\t\t</p>\n\t\t\t\t\t<Primary />\n\t\t\t\t\t<Controls />\n\t\t\t\t</>\n\t\t\t),\n\t\t},\n\t},\n\targTypes: {\n\t\tmulti: {\n\t\t\tcontrol: \"boolean\",\n\t\t},\n\t\tdisabled: {\n\t\t\tcontrol: \"boolean\",\n\t\t},\n\t},\n\targs: {\n\t\tmulti: false,\n\t\tdisabled: false,\n\t},\n} satisfies Meta<typeof ComboboxWrapper>;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default = {\n\ttags: [\"!dev\"],\n\trender: ({ multi = false, disabled = false }) => (\n\t\t<div className=\"w-[300px]\">\n\t\t\t<ComboboxWrapper multi={multi} disabled={disabled} />\n\t\t</div>\n\t),\n} satisfies Story;\n\nexport const Demo = {\n\ttags: [\"!autodocs\"],\n\trender: () => {\n\t\tconst [value, setValue] = useState(\"\");\n\t\tconst [multiValue, setMultiValue] = useState<string[]>([]);\n\n\t\treturn (\n\t\t\t<div className=\"space-y-8\">\n\t\t\t\t{/* Single */}\n\t\t\t\t<div>\n\t\t\t\t\t<h3 className=\"typo-label mb-4\">Single select</h3>\n\t\t\t\t\t<div className=\"w-[300px]\">\n\t\t\t\t\t\t<Combobox\n\t\t\t\t\t\t\toptions={demoOptions}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\tonValueChange={setValue}\n\t\t\t\t\t\t\tplaceholder=\"Select framework...\"\n\t\t\t\t\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Multi */}\n\t\t\t\t<div>\n\t\t\t\t\t<h3 className=\"typo-label mb-4\">Multi select</h3>\n\t\t\t\t\t<div className=\"w-[300px]\">\n\t\t\t\t\t\t<MultiCombobox\n\t\t\t\t\t\t\toptions={demoOptions}\n\t\t\t\t\t\t\tvalue={multiValue}\n\t\t\t\t\t\t\tonValueChange={setMultiValue}\n\t\t\t\t\t\t\tplaceholder=\"Select frameworks...\"\n\t\t\t\t\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Disabled */}\n\t\t\t\t<div>\n\t\t\t\t\t<h3 className=\"typo-label mb-4\">Disabled</h3>\n\t\t\t\t\t<div className=\"w-[300px]\">\n\t\t\t\t\t\t<Combobox\n\t\t\t\t\t\t\toptions={demoOptions}\n\t\t\t\t\t\t\tplaceholder=\"Select framework...\"\n\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n} satisfies Story;\n"],"names":["Controls","Primary","Title","useState","Combobox","MultiCombobox","demoOptions","value","label","ComboboxWrapper","multi","disabled","setValue","multiValue","setMultiValue","options","onValueChange","placeholder","searchPlaceholder","meta","title","component","parameters","layout","docs","page","p","className","strong","argTypes","control","args","Default","tags","render","div","Demo","h3"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,OAAO,EAAEC,KAAK,QAAQ,+BAA+B;AAExE,SAASC,QAAQ,QAAQ,QAAQ;AACjC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,gBAAa;AAErD,MAAMC,cAAc;IACnB;QAAEC,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAASC,OAAO;IAAQ;CACjC;AAOD,SAASC,gBAAgB,EACxBC,QAAQ,KAAK,EACbC,WAAW,KAAK,EACM;IACtB,MAAM,CAACJ,OAAOK,SAAS,GAAGT,SAAS;IACnC,MAAM,CAACU,YAAYC,cAAc,GAAGX,SAAmB,EAAE;IAEzD,IAAIO,OAAO;QACV,qBACC,KAACL;YACAU,SAAST;YACTC,OAAOM;YACPG,eAAeF;YACfG,aAAY;YACZC,mBAAkB;YAClBP,UAAUA;;IAGb;IAEA,qBACC,KAACP;QACAW,SAAST;QACTC,OAAOA;QACPS,eAAeJ;QACfK,aAAY;QACZC,mBAAkB;QAClBP,UAAUA;;AAGb;AAEA,MAAMQ,OAAO;IACZC,OAAO;IACPC,WAAWZ;IACXa,YAAY;QACXC,QAAQ;QACRC,MAAM;YACLC,MAAM,kBACL;;sCACC,KAACvB;sCACD,MAACwB;4BAAEC,WAAU;;gCAAW;8CAET,KAACC;8CAAO;;gCAAgB;;;sCAIvC,KAAC3B;sCACD,KAACD;;;QAGJ;IACD;IACA6B,UAAU;QACTnB,OAAO;YACNoB,SAAS;QACV;QACAnB,UAAU;YACTmB,SAAS;QACV;IACD;IACAC,MAAM;QACLrB,OAAO;QACPC,UAAU;IACX;AACD;AACA,eAAeQ,KAAK;AAIpB,OAAO,MAAMa,UAAU;IACtBC,MAAM;QAAC;KAAO;IACdC,QAAQ,CAAC,EAAExB,QAAQ,KAAK,EAAEC,WAAW,KAAK,EAAE,iBAC3C,KAACwB;YAAIR,WAAU;sBACd,cAAA,KAAClB;gBAAgBC,OAAOA;gBAAOC,UAAUA;;;AAG5C,EAAkB;AAElB,OAAO,MAAMyB,OAAO;IACnBH,MAAM;QAAC;KAAY;IACnBC,QAAQ;QACP,MAAM,CAAC3B,OAAOK,SAAS,GAAGT,SAAS;QACnC,MAAM,CAACU,YAAYC,cAAc,GAAGX,SAAmB,EAAE;QAEzD,qBACC,MAACgC;YAAIR,WAAU;;8BAEd,MAACQ;;sCACA,KAACE;4BAAGV,WAAU;sCAAkB;;sCAChC,KAACQ;4BAAIR,WAAU;sCACd,cAAA,KAACvB;gCACAW,SAAST;gCACTC,OAAOA;gCACPS,eAAeJ;gCACfK,aAAY;gCACZC,mBAAkB;;;;;8BAMrB,MAACiB;;sCACA,KAACE;4BAAGV,WAAU;sCAAkB;;sCAChC,KAACQ;4BAAIR,WAAU;sCACd,cAAA,KAACtB;gCACAU,SAAST;gCACTC,OAAOM;gCACPG,eAAeF;gCACfG,aAAY;gCACZC,mBAAkB;;;;;8BAMrB,MAACiB;;sCACA,KAACE;4BAAGV,WAAU;sCAAkB;;sCAChC,KAACQ;4BAAIR,WAAU;sCACd,cAAA,KAACvB;gCACAW,SAAST;gCACTW,aAAY;gCACZN,QAAQ;;;;;;;IAMd;AACD,EAAkB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command as CommandPrimitive } from "cmdk";
|
|
2
2
|
import type * as React from "react";
|
|
3
|
-
import { Dialog } from "
|
|
3
|
+
import { Dialog } from "../../components/ui/dialog";
|
|
4
4
|
declare function Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: React.ComponentProps<typeof Dialog> & {
|
|
6
6
|
title?: string;
|
|
@@ -8,7 +8,9 @@ declare function CommandDialog({ title, description, children, className, showCl
|
|
|
8
8
|
className?: string;
|
|
9
9
|
showCloseButton?: boolean;
|
|
10
10
|
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
declare function CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>
|
|
11
|
+
declare function CommandInput({ className, wrapperClassName, ...props }: React.ComponentProps<typeof CommandPrimitive.Input> & {
|
|
12
|
+
wrapperClassName?: string;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
14
|
declare function CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>): import("react/jsx-runtime").JSX.Element;
|
|
13
15
|
declare function CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>): import("react/jsx-runtime").JSX.Element;
|
|
14
16
|
declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/shadcn/components/ui/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EACN,MAAM,EAKN,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/shadcn/components/ui/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EACN,MAAM,EAKN,MAAM,8BAA8B,CAAC;AA6MtC,iBAAS,OAAO,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAQ/C;AAED,iBAAS,aAAa,CAAC,EACtB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,SAAS,EACT,eAAsB,EACtB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,2CAeA;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,gBAAgB,EAChB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,2CAcA;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAQpD;AAED,iBAAS,YAAY,CAAC,EACrB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQrD;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQrD;AAED,iBAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,2CAQzD;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAQpD;AAED,iBAAS,eAAe,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAQ9B;AAED,OAAO,EACN,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GAChB,CAAC"}
|
|
@@ -3,10 +3,72 @@ import { Command as CommandPrimitive } from "cmdk";
|
|
|
3
3
|
import { SearchIcon } from "lucide-react";
|
|
4
4
|
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./dialog.js";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
|
+
// Command Root
|
|
7
|
+
const commandStyles = cn(// Layout
|
|
8
|
+
"flex", "h-full", "w-full", "flex-col", "overflow-hidden", "rounded-md", // Colors
|
|
9
|
+
"bg-bg-primary", "text-text-primary", // Group heading styles
|
|
10
|
+
"[&_*[cmdk-group-heading]]:flex", "[&_*[cmdk-group-heading]]:items-center", "[&_*[cmdk-group-heading]]:h-7", "[&_*[cmdk-group-heading]]:px-3", "[&_*[cmdk-group-heading]]:py-0", "[&_*[cmdk-group-heading]]:typo-label-tiny", "[&_*[cmdk-group-heading]]:text-[color:var(--color-text-secondary)]");
|
|
11
|
+
// Command Dialog
|
|
12
|
+
const commandDialogContentStyles = cn(// Layout
|
|
13
|
+
"overflow-hidden", "p-0");
|
|
14
|
+
const commandDialogCommandStyles = cn(// Group headings
|
|
15
|
+
"[&_[cmdk-group-heading]]:flex", "[&_[cmdk-group-heading]]:items-center", "[&_[cmdk-group-heading]]:h-7", "[&_[cmdk-group-heading]]:px-3", "[&_[cmdk-group-heading]]:py-0", "[&_[cmdk-group-heading]]:typo-label-tiny", "[&_[cmdk-group-heading]]:text-text-secondary", // Groups
|
|
16
|
+
"[&_[cmdk-group]]:p-2", "[&_[cmdk-group]]:gap-1", "[&_[cmdk-group]]:flex", "[&_[cmdk-group]]:flex-col", "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0", // Input wrapper
|
|
17
|
+
"[&_[cmdk-input-wrapper]]:h-12", "**:data-[slot=command-input-wrapper]:h-12", // Input wrapper SVG
|
|
18
|
+
"[&_[cmdk-input-wrapper]_svg]:h-5", "[&_[cmdk-input-wrapper]_svg]:w-5", // Input
|
|
19
|
+
"[&_[cmdk-input]]:h-12", // Items
|
|
20
|
+
"[&_[cmdk-item]]:px-2", "[&_[cmdk-item]]:py-3", // Item SVG
|
|
21
|
+
"[&_[cmdk-item]_svg]:h-5", "[&_[cmdk-item]_svg]:w-5");
|
|
22
|
+
// Command Input Wrapper
|
|
23
|
+
const commandInputWrapperStyles = cn(// Layout
|
|
24
|
+
"flex", "h-9", "items-center", "gap-2", "px-3", // Border
|
|
25
|
+
"border-b", "border-border-separator", // Animation
|
|
26
|
+
"transition-colors", "duration-300");
|
|
27
|
+
// Command Input Icon
|
|
28
|
+
const commandInputIconStyles = cn(// Size
|
|
29
|
+
"size-4", "shrink-0", // Colors
|
|
30
|
+
"text-text-tertiary");
|
|
31
|
+
// Command Input
|
|
32
|
+
const commandInputStyles = cn(// Layout
|
|
33
|
+
"flex", "h-10", "w-full", "rounded-md", "py-3", // Background
|
|
34
|
+
"bg-transparent", // Typography
|
|
35
|
+
"typo-body", // Colors
|
|
36
|
+
"text-text-primary", "placeholder:text-text-quternary", "file:text-text-primary", // States
|
|
37
|
+
"outline-hidden", "disabled:cursor-not-allowed", "disabled:opacity-50");
|
|
38
|
+
// Command List
|
|
39
|
+
const commandListStyles = cn(// Layout
|
|
40
|
+
"max-h-[300px]", "scroll-py-1", // Overflow
|
|
41
|
+
"overflow-x-hidden", "overflow-y-auto", "p-2");
|
|
42
|
+
// Command Empty
|
|
43
|
+
const commandEmptyStyles = cn(// Layout
|
|
44
|
+
"py-6", "text-center", // Typography
|
|
45
|
+
"typo-body", // Colors
|
|
46
|
+
"text-text-tertiary");
|
|
47
|
+
// Command Group
|
|
48
|
+
const commandGroupStyles = cn(// Layout
|
|
49
|
+
"overflow-hidden", "p-2", "gap-1", "flex", "flex-col", "group", // Colors
|
|
50
|
+
"text-text-tertiary", // Group heading styles
|
|
51
|
+
"[&_*[cmdk-group-heading]]:flex", "[&_*[cmdk-group-heading]]:items-center", "[&_*[cmdk-group-heading]]:h-7", "[&_*[cmdk-group-heading]]:px-3", "[&_*[cmdk-group-heading]]:py-0", "[&_*[cmdk-group-heading]]:typo-label-tiny", "[&_*[cmdk-group-heading]]:text-[var(--color-text-secondary)]");
|
|
52
|
+
// Command Separator
|
|
53
|
+
const commandSeparatorStyles = cn(// Layout
|
|
54
|
+
"-mx-1", "h-px", // Colors
|
|
55
|
+
"bg-border-separator");
|
|
56
|
+
// Command Item
|
|
57
|
+
const commandItemStyles = cn(// Layout
|
|
58
|
+
"relative", "flex", "cursor-pointer", "items-center", "gap-2", "rounded", "px-2", "py-1.5", "select-none", // Typography
|
|
59
|
+
"typo-body", // Colors
|
|
60
|
+
"text-text-primary", // States
|
|
61
|
+
"outline-hidden", "data-[state=checked]:bg-bg-tertiary", "data-[state=checked]:hover:bg-bg-secondary", "hover:bg-bg-secondary", "hover:text-text-primary", "data-[state=checked]:text-text-primary", "data-[disabled=true]:pointer-events-none", "data-[disabled=true]:opacity-50", // SVG styles
|
|
62
|
+
"[&_svg:not([class*='text-'])]:text-text-quaternary", "[&_svg]:pointer-events-none", "[&_svg]:shrink-0", "[&_svg:not([class*='size-'])]:size-4");
|
|
63
|
+
// Command Shortcut
|
|
64
|
+
const commandShortcutStyles = cn(// Layout
|
|
65
|
+
"ml-auto", // Typography
|
|
66
|
+
"typo-body", "tracking-widest", // Colors
|
|
67
|
+
"text-text-quaternary");
|
|
6
68
|
function Command({ className, ...props }) {
|
|
7
69
|
return /*#__PURE__*/ _jsx(CommandPrimitive, {
|
|
8
70
|
"data-slot": "command",
|
|
9
|
-
className: cn(
|
|
71
|
+
className: cn(commandStyles, className),
|
|
10
72
|
...props
|
|
11
73
|
});
|
|
12
74
|
}
|
|
@@ -26,27 +88,27 @@ function CommandDialog({ title = "Command Palette", description = "Search for a
|
|
|
26
88
|
]
|
|
27
89
|
}),
|
|
28
90
|
/*#__PURE__*/ _jsx(DialogContent, {
|
|
29
|
-
className: cn(
|
|
91
|
+
className: cn(commandDialogContentStyles, className),
|
|
30
92
|
showCloseButton: showCloseButton,
|
|
31
93
|
children: /*#__PURE__*/ _jsx(Command, {
|
|
32
|
-
className:
|
|
94
|
+
className: commandDialogCommandStyles,
|
|
33
95
|
children: children
|
|
34
96
|
})
|
|
35
97
|
})
|
|
36
98
|
]
|
|
37
99
|
});
|
|
38
100
|
}
|
|
39
|
-
function CommandInput({ className, ...props }) {
|
|
101
|
+
function CommandInput({ className, wrapperClassName, ...props }) {
|
|
40
102
|
return /*#__PURE__*/ _jsxs("div", {
|
|
41
103
|
"data-slot": "command-input-wrapper",
|
|
42
|
-
className:
|
|
104
|
+
className: cn(commandInputWrapperStyles, wrapperClassName),
|
|
43
105
|
children: [
|
|
44
106
|
/*#__PURE__*/ _jsx(SearchIcon, {
|
|
45
|
-
className:
|
|
107
|
+
className: commandInputIconStyles
|
|
46
108
|
}),
|
|
47
109
|
/*#__PURE__*/ _jsx(CommandPrimitive.Input, {
|
|
48
110
|
"data-slot": "command-input",
|
|
49
|
-
className: cn(
|
|
111
|
+
className: cn(commandInputStyles, className),
|
|
50
112
|
...props
|
|
51
113
|
})
|
|
52
114
|
]
|
|
@@ -55,42 +117,42 @@ function CommandInput({ className, ...props }) {
|
|
|
55
117
|
function CommandList({ className, ...props }) {
|
|
56
118
|
return /*#__PURE__*/ _jsx(CommandPrimitive.List, {
|
|
57
119
|
"data-slot": "command-list",
|
|
58
|
-
className: cn(
|
|
120
|
+
className: cn(commandListStyles, className),
|
|
59
121
|
...props
|
|
60
122
|
});
|
|
61
123
|
}
|
|
62
124
|
function CommandEmpty({ ...props }) {
|
|
63
125
|
return /*#__PURE__*/ _jsx(CommandPrimitive.Empty, {
|
|
64
126
|
"data-slot": "command-empty",
|
|
65
|
-
className:
|
|
127
|
+
className: commandEmptyStyles,
|
|
66
128
|
...props
|
|
67
129
|
});
|
|
68
130
|
}
|
|
69
131
|
function CommandGroup({ className, ...props }) {
|
|
70
132
|
return /*#__PURE__*/ _jsx(CommandPrimitive.Group, {
|
|
71
133
|
"data-slot": "command-group",
|
|
72
|
-
className: cn(
|
|
134
|
+
className: cn(commandGroupStyles, className),
|
|
73
135
|
...props
|
|
74
136
|
});
|
|
75
137
|
}
|
|
76
138
|
function CommandSeparator({ className, ...props }) {
|
|
77
139
|
return /*#__PURE__*/ _jsx(CommandPrimitive.Separator, {
|
|
78
140
|
"data-slot": "command-separator",
|
|
79
|
-
className: cn(
|
|
141
|
+
className: cn(commandSeparatorStyles, className),
|
|
80
142
|
...props
|
|
81
143
|
});
|
|
82
144
|
}
|
|
83
145
|
function CommandItem({ className, ...props }) {
|
|
84
146
|
return /*#__PURE__*/ _jsx(CommandPrimitive.Item, {
|
|
85
147
|
"data-slot": "command-item",
|
|
86
|
-
className: cn(
|
|
148
|
+
className: cn(commandItemStyles, className),
|
|
87
149
|
...props
|
|
88
150
|
});
|
|
89
151
|
}
|
|
90
152
|
function CommandShortcut({ className, ...props }) {
|
|
91
153
|
return /*#__PURE__*/ _jsx("span", {
|
|
92
154
|
"data-slot": "command-shortcut",
|
|
93
|
-
className: cn(
|
|
155
|
+
className: cn(commandShortcutStyles, className),
|
|
94
156
|
...props
|
|
95
157
|
});
|
|
96
158
|
}
|