@puzzle-ui/ui 0.0.0-stage → 0.1.0
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/README.md +16 -2
- package/dist/LICENSE +21 -0
- package/dist/components/actions/button/button-content.cjs +41 -0
- package/dist/components/actions/button/button-content.cjs.map +1 -0
- package/dist/components/actions/button/button-content.js +41 -0
- package/dist/components/actions/button/button-content.js.map +1 -0
- package/dist/components/actions/button/button.css +191 -0
- package/dist/components/actions/button/button.types.d.cts +30 -0
- package/dist/components/actions/button/button.types.d.ts +30 -0
- package/dist/components/actions/button/index.cjs +80 -0
- package/dist/components/actions/button/index.cjs.map +1 -0
- package/dist/components/actions/button/index.d.cts +3 -0
- package/dist/components/actions/button/index.d.ts +3 -0
- package/dist/components/actions/button/index.js +80 -0
- package/dist/components/actions/button/index.js.map +1 -0
- package/dist/components/actions/button-group/button-group.css +64 -0
- package/dist/components/actions/button-group/index.cjs +25 -0
- package/dist/components/actions/button-group/index.cjs.map +1 -0
- package/dist/components/actions/button-group/index.d.cts +14 -0
- package/dist/components/actions/button-group/index.d.ts +14 -0
- package/dist/components/actions/button-group/index.js +25 -0
- package/dist/components/actions/button-group/index.js.map +1 -0
- package/dist/components/actions/toggle-group/index.cjs +124 -0
- package/dist/components/actions/toggle-group/index.cjs.map +1 -0
- package/dist/components/actions/toggle-group/index.d.cts +10 -0
- package/dist/components/actions/toggle-group/index.d.ts +10 -0
- package/dist/components/actions/toggle-group/index.js +124 -0
- package/dist/components/actions/toggle-group/index.js.map +1 -0
- package/dist/components/actions/toggle-group/toggle-group.css +67 -0
- package/dist/components/actions/toggle-group/toggle-group.types.d.cts +54 -0
- package/dist/components/actions/toggle-group/toggle-group.types.d.ts +54 -0
- package/dist/components/data-display/alert/alert.css +128 -0
- package/dist/components/data-display/alert/alert.types.d.cts +14 -0
- package/dist/components/data-display/alert/alert.types.d.ts +14 -0
- package/dist/components/data-display/alert/alert.utils.cjs +11 -0
- package/dist/components/data-display/alert/alert.utils.cjs.map +1 -0
- package/dist/components/data-display/alert/alert.utils.js +11 -0
- package/dist/components/data-display/alert/alert.utils.js.map +1 -0
- package/dist/components/data-display/alert/index.cjs +103 -0
- package/dist/components/data-display/alert/index.cjs.map +1 -0
- package/dist/components/data-display/alert/index.d.cts +3 -0
- package/dist/components/data-display/alert/index.d.ts +3 -0
- package/dist/components/data-display/alert/index.js +103 -0
- package/dist/components/data-display/alert/index.js.map +1 -0
- package/dist/components/data-display/avatar/avatar.css +30 -0
- package/dist/components/data-display/avatar/index.cjs +42 -0
- package/dist/components/data-display/avatar/index.cjs.map +1 -0
- package/dist/components/data-display/avatar/index.d.cts +10 -0
- package/dist/components/data-display/avatar/index.d.ts +10 -0
- package/dist/components/data-display/avatar/index.js +42 -0
- package/dist/components/data-display/avatar/index.js.map +1 -0
- package/dist/components/data-display/badge/badge.css +91 -0
- package/dist/components/data-display/badge/index.cjs +31 -0
- package/dist/components/data-display/badge/index.cjs.map +1 -0
- package/dist/components/data-display/badge/index.d.cts +18 -0
- package/dist/components/data-display/badge/index.d.ts +18 -0
- package/dist/components/data-display/badge/index.js +31 -0
- package/dist/components/data-display/badge/index.js.map +1 -0
- package/dist/components/data-display/card/card.css +164 -0
- package/dist/components/data-display/card/index.cjs +42 -0
- package/dist/components/data-display/card/index.cjs.map +1 -0
- package/dist/components/data-display/card/index.d.cts +29 -0
- package/dist/components/data-display/card/index.d.ts +29 -0
- package/dist/components/data-display/card/index.js +35 -0
- package/dist/components/data-display/card/index.js.map +1 -0
- package/dist/components/data-display/image/image.css +80 -0
- package/dist/components/data-display/image/image.types.d.cts +154 -0
- package/dist/components/data-display/image/image.types.d.ts +154 -0
- package/dist/components/data-display/image/image.utils.cjs +55 -0
- package/dist/components/data-display/image/image.utils.cjs.map +1 -0
- package/dist/components/data-display/image/image.utils.js +51 -0
- package/dist/components/data-display/image/image.utils.js.map +1 -0
- package/dist/components/data-display/image/index.cjs +176 -0
- package/dist/components/data-display/image/index.cjs.map +1 -0
- package/dist/components/data-display/image/index.d.cts +3 -0
- package/dist/components/data-display/image/index.d.ts +3 -0
- package/dist/components/data-display/image/index.js +176 -0
- package/dist/components/data-display/image/index.js.map +1 -0
- package/dist/components/data-display/image/use-image-state.cjs +54 -0
- package/dist/components/data-display/image/use-image-state.cjs.map +1 -0
- package/dist/components/data-display/image/use-image-state.js +54 -0
- package/dist/components/data-display/image/use-image-state.js.map +1 -0
- package/dist/components/data-display/paper/index.cjs +16 -0
- package/dist/components/data-display/paper/index.cjs.map +1 -0
- package/dist/components/data-display/paper/index.d.cts +8 -0
- package/dist/components/data-display/paper/index.d.ts +8 -0
- package/dist/components/data-display/paper/index.js +16 -0
- package/dist/components/data-display/paper/index.js.map +1 -0
- package/dist/components/data-display/paper/paper.css +40 -0
- package/dist/components/data-display/progress/circular-progress.cjs +75 -0
- package/dist/components/data-display/progress/circular-progress.cjs.map +1 -0
- package/dist/components/data-display/progress/circular-progress.css +21 -0
- package/dist/components/data-display/progress/circular-progress.d.cts +9 -0
- package/dist/components/data-display/progress/circular-progress.d.ts +9 -0
- package/dist/components/data-display/progress/circular-progress.js +75 -0
- package/dist/components/data-display/progress/circular-progress.js.map +1 -0
- package/dist/components/data-display/progress/linear-progress.cjs +32 -0
- package/dist/components/data-display/progress/linear-progress.cjs.map +1 -0
- package/dist/components/data-display/progress/linear-progress.css +39 -0
- package/dist/components/data-display/progress/linear-progress.d.cts +5 -0
- package/dist/components/data-display/progress/linear-progress.d.ts +5 -0
- package/dist/components/data-display/progress/linear-progress.js +32 -0
- package/dist/components/data-display/progress/linear-progress.js.map +1 -0
- package/dist/components/data-display/progress/types.d.cts +5 -0
- package/dist/components/data-display/progress/types.d.ts +5 -0
- package/dist/components/data-display/progress/utils.cjs +16 -0
- package/dist/components/data-display/progress/utils.cjs.map +1 -0
- package/dist/components/data-display/progress/utils.js +15 -0
- package/dist/components/data-display/progress/utils.js.map +1 -0
- package/dist/components/data-display/skeleton/index.cjs +18 -0
- package/dist/components/data-display/skeleton/index.cjs.map +1 -0
- package/dist/components/data-display/skeleton/index.d.cts +10 -0
- package/dist/components/data-display/skeleton/index.d.ts +10 -0
- package/dist/components/data-display/skeleton/index.js +18 -0
- package/dist/components/data-display/skeleton/index.js.map +1 -0
- package/dist/components/data-display/skeleton/skeleton.css +47 -0
- package/dist/components/editors/text-editor/editor.cjs +620 -0
- package/dist/components/editors/text-editor/editor.cjs.map +1 -0
- package/dist/components/editors/text-editor/editor.d.cts +1 -0
- package/dist/components/editors/text-editor/editor.d.ts +1 -0
- package/dist/components/editors/text-editor/editor.js +620 -0
- package/dist/components/editors/text-editor/editor.js.map +1 -0
- package/dist/components/editors/text-editor/index.cjs +39 -0
- package/dist/components/editors/text-editor/index.cjs.map +1 -0
- package/dist/components/editors/text-editor/index.d.cts +13 -0
- package/dist/components/editors/text-editor/index.d.ts +13 -0
- package/dist/components/editors/text-editor/index.js +38 -0
- package/dist/components/editors/text-editor/index.js.map +1 -0
- package/dist/components/editors/text-editor/text-document.cjs +406 -0
- package/dist/components/editors/text-editor/text-document.cjs.map +1 -0
- package/dist/components/editors/text-editor/text-document.js +391 -0
- package/dist/components/editors/text-editor/text-document.js.map +1 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.cjs +251 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.cjs.map +1 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.css +16 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.d.cts +7 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.d.ts +7 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.js +251 -0
- package/dist/components/editors/text-editor/text-editor-toolbar.js.map +1 -0
- package/dist/components/editors/text-editor/text-editor.css +116 -0
- package/dist/components/editors/text-editor/text-editor.types.d.cts +37 -0
- package/dist/components/editors/text-editor/text-editor.types.d.ts +37 -0
- package/dist/components/editors/text-editor/text-parser.cjs +262 -0
- package/dist/components/editors/text-editor/text-parser.cjs.map +1 -0
- package/dist/components/editors/text-editor/text-parser.js +261 -0
- package/dist/components/editors/text-editor/text-parser.js.map +1 -0
- package/dist/components/editors/text-editor/text-renderer.cjs +85 -0
- package/dist/components/editors/text-editor/text-renderer.cjs.map +1 -0
- package/dist/components/editors/text-editor/text-renderer.d.cts +7 -0
- package/dist/components/editors/text-editor/text-renderer.d.ts +7 -0
- package/dist/components/editors/text-editor/text-renderer.js +85 -0
- package/dist/components/editors/text-editor/text-renderer.js.map +1 -0
- package/dist/components/forms/autocomplete/autocomplete.css +384 -0
- package/dist/components/forms/autocomplete/autocomplete.types.d.cts +86 -0
- package/dist/components/forms/autocomplete/autocomplete.types.d.ts +86 -0
- package/dist/components/forms/autocomplete/autocomplete.utils.cjs +47 -0
- package/dist/components/forms/autocomplete/autocomplete.utils.cjs.map +1 -0
- package/dist/components/forms/autocomplete/autocomplete.utils.js +44 -0
- package/dist/components/forms/autocomplete/autocomplete.utils.js.map +1 -0
- package/dist/components/forms/autocomplete/index.cjs +532 -0
- package/dist/components/forms/autocomplete/index.cjs.map +1 -0
- package/dist/components/forms/autocomplete/index.d.cts +3 -0
- package/dist/components/forms/autocomplete/index.d.ts +3 -0
- package/dist/components/forms/autocomplete/index.js +532 -0
- package/dist/components/forms/autocomplete/index.js.map +1 -0
- package/dist/components/forms/checkbox/checkbox.css +146 -0
- package/dist/components/forms/checkbox/index.cjs +80 -0
- package/dist/components/forms/checkbox/index.cjs.map +1 -0
- package/dist/components/forms/checkbox/index.d.cts +20 -0
- package/dist/components/forms/checkbox/index.d.ts +20 -0
- package/dist/components/forms/checkbox/index.js +80 -0
- package/dist/components/forms/checkbox/index.js.map +1 -0
- package/dist/components/forms/date-picker/date-picker.css +478 -0
- package/dist/components/forms/date-picker/date-picker.types.d.cts +75 -0
- package/dist/components/forms/date-picker/date-picker.types.d.ts +75 -0
- package/dist/components/forms/date-picker/date-picker.utils.cjs +76 -0
- package/dist/components/forms/date-picker/date-picker.utils.cjs.map +1 -0
- package/dist/components/forms/date-picker/date-picker.utils.js +64 -0
- package/dist/components/forms/date-picker/date-picker.utils.js.map +1 -0
- package/dist/components/forms/date-picker/index.cjs +572 -0
- package/dist/components/forms/date-picker/index.cjs.map +1 -0
- package/dist/components/forms/date-picker/index.d.cts +3 -0
- package/dist/components/forms/date-picker/index.d.ts +3 -0
- package/dist/components/forms/date-picker/index.js +572 -0
- package/dist/components/forms/date-picker/index.js.map +1 -0
- package/dist/components/forms/file-upload/file-upload.css +290 -0
- package/dist/components/forms/file-upload/file-upload.types.d.cts +51 -0
- package/dist/components/forms/file-upload/file-upload.types.d.ts +51 -0
- package/dist/components/forms/file-upload/file-upload.utils.cjs +76 -0
- package/dist/components/forms/file-upload/file-upload.utils.cjs.map +1 -0
- package/dist/components/forms/file-upload/file-upload.utils.js +72 -0
- package/dist/components/forms/file-upload/file-upload.utils.js.map +1 -0
- package/dist/components/forms/file-upload/index.cjs +346 -0
- package/dist/components/forms/file-upload/index.cjs.map +1 -0
- package/dist/components/forms/file-upload/index.d.cts +3 -0
- package/dist/components/forms/file-upload/index.d.ts +3 -0
- package/dist/components/forms/file-upload/index.js +346 -0
- package/dist/components/forms/file-upload/index.js.map +1 -0
- package/dist/components/forms/form-field/form-field-state.cjs +25 -0
- package/dist/components/forms/form-field/form-field-state.cjs.map +1 -0
- package/dist/components/forms/form-field/form-field-state.js +25 -0
- package/dist/components/forms/form-field/form-field-state.js.map +1 -0
- package/dist/components/forms/form-field/form-field.css +44 -0
- package/dist/components/forms/form-field/index.cjs +61 -0
- package/dist/components/forms/form-field/index.cjs.map +1 -0
- package/dist/components/forms/form-field/index.d.cts +23 -0
- package/dist/components/forms/form-field/index.d.ts +23 -0
- package/dist/components/forms/form-field/index.js +61 -0
- package/dist/components/forms/form-field/index.js.map +1 -0
- package/dist/components/forms/input/index.d.cts +4 -0
- package/dist/components/forms/input/index.d.ts +4 -0
- package/dist/components/forms/input/input.css +153 -0
- package/dist/components/forms/input/number-input.cjs +192 -0
- package/dist/components/forms/input/number-input.cjs.map +1 -0
- package/dist/components/forms/input/number-input.d.cts +20 -0
- package/dist/components/forms/input/number-input.d.ts +20 -0
- package/dist/components/forms/input/number-input.js +192 -0
- package/dist/components/forms/input/number-input.js.map +1 -0
- package/dist/components/forms/input/text-area-input.cjs +47 -0
- package/dist/components/forms/input/text-area-input.cjs.map +1 -0
- package/dist/components/forms/input/text-area-input.d.cts +8 -0
- package/dist/components/forms/input/text-area-input.d.ts +8 -0
- package/dist/components/forms/input/text-area-input.js +47 -0
- package/dist/components/forms/input/text-area-input.js.map +1 -0
- package/dist/components/forms/input/text-input.cjs +47 -0
- package/dist/components/forms/input/text-input.cjs.map +1 -0
- package/dist/components/forms/input/text-input.d.cts +9 -0
- package/dist/components/forms/input/text-input.d.ts +9 -0
- package/dist/components/forms/input/text-input.js +47 -0
- package/dist/components/forms/input/text-input.js.map +1 -0
- package/dist/components/forms/label/index.cjs +26 -0
- package/dist/components/forms/label/index.cjs.map +1 -0
- package/dist/components/forms/label/index.d.cts +8 -0
- package/dist/components/forms/label/index.d.ts +8 -0
- package/dist/components/forms/label/index.js +26 -0
- package/dist/components/forms/label/index.js.map +1 -0
- package/dist/components/forms/label/label.css +22 -0
- package/dist/components/forms/radio-group/index.cjs +226 -0
- package/dist/components/forms/radio-group/index.cjs.map +1 -0
- package/dist/components/forms/radio-group/index.d.cts +5 -0
- package/dist/components/forms/radio-group/index.d.ts +5 -0
- package/dist/components/forms/radio-group/index.js +225 -0
- package/dist/components/forms/radio-group/index.js.map +1 -0
- package/dist/components/forms/radio-group/radio-group.css +222 -0
- package/dist/components/forms/radio-group/radio-group.types.d.cts +51 -0
- package/dist/components/forms/radio-group/radio-group.types.d.ts +51 -0
- package/dist/components/forms/radio-group/radio-group.utils.cjs +22 -0
- package/dist/components/forms/radio-group/radio-group.utils.cjs.map +1 -0
- package/dist/components/forms/radio-group/radio-group.utils.js +21 -0
- package/dist/components/forms/radio-group/radio-group.utils.js.map +1 -0
- package/dist/components/forms/select/index.cjs +468 -0
- package/dist/components/forms/select/index.cjs.map +1 -0
- package/dist/components/forms/select/index.d.cts +112 -0
- package/dist/components/forms/select/index.d.ts +112 -0
- package/dist/components/forms/select/index.js +468 -0
- package/dist/components/forms/select/index.js.map +1 -0
- package/dist/components/forms/select/select.css +363 -0
- package/dist/components/forms/slider/index.cjs +93 -0
- package/dist/components/forms/slider/index.cjs.map +1 -0
- package/dist/components/forms/slider/index.d.cts +37 -0
- package/dist/components/forms/slider/index.d.ts +37 -0
- package/dist/components/forms/slider/index.js +93 -0
- package/dist/components/forms/slider/index.js.map +1 -0
- package/dist/components/forms/slider/slider.css +202 -0
- package/dist/components/forms/stepper/index.cjs +113 -0
- package/dist/components/forms/stepper/index.cjs.map +1 -0
- package/dist/components/forms/stepper/index.d.cts +48 -0
- package/dist/components/forms/stepper/index.d.ts +48 -0
- package/dist/components/forms/stepper/index.js +113 -0
- package/dist/components/forms/stepper/index.js.map +1 -0
- package/dist/components/forms/stepper/stepper.css +241 -0
- package/dist/components/forms/switch/index.cjs +45 -0
- package/dist/components/forms/switch/index.cjs.map +1 -0
- package/dist/components/forms/switch/index.d.cts +11 -0
- package/dist/components/forms/switch/index.d.ts +11 -0
- package/dist/components/forms/switch/index.js +45 -0
- package/dist/components/forms/switch/index.js.map +1 -0
- package/dist/components/forms/switch/switch.css +142 -0
- package/dist/components/layout/app-bar/app-bar.css +197 -0
- package/dist/components/layout/app-bar/index.cjs +150 -0
- package/dist/components/layout/app-bar/index.cjs.map +1 -0
- package/dist/components/layout/app-bar/index.d.cts +21 -0
- package/dist/components/layout/app-bar/index.d.ts +21 -0
- package/dist/components/layout/app-bar/index.js +150 -0
- package/dist/components/layout/app-bar/index.js.map +1 -0
- package/dist/components/layout/background/background.css +160 -0
- package/dist/components/layout/background/index.cjs +34 -0
- package/dist/components/layout/background/index.cjs.map +1 -0
- package/dist/components/layout/background/index.d.cts +23 -0
- package/dist/components/layout/background/index.d.ts +23 -0
- package/dist/components/layout/background/index.js +34 -0
- package/dist/components/layout/background/index.js.map +1 -0
- package/dist/components/layout/bottom-navigation/bottom-navigation.css +108 -0
- package/dist/components/layout/bottom-navigation/index.cjs +51 -0
- package/dist/components/layout/bottom-navigation/index.cjs.map +1 -0
- package/dist/components/layout/bottom-navigation/index.d.cts +19 -0
- package/dist/components/layout/bottom-navigation/index.d.ts +19 -0
- package/dist/components/layout/bottom-navigation/index.js +50 -0
- package/dist/components/layout/bottom-navigation/index.js.map +1 -0
- package/dist/components/layout/breadcrumbs/breadcrumbs.css +80 -0
- package/dist/components/layout/breadcrumbs/index.cjs +38 -0
- package/dist/components/layout/breadcrumbs/index.cjs.map +1 -0
- package/dist/components/layout/breadcrumbs/index.d.cts +18 -0
- package/dist/components/layout/breadcrumbs/index.d.ts +18 -0
- package/dist/components/layout/breadcrumbs/index.js +38 -0
- package/dist/components/layout/breadcrumbs/index.js.map +1 -0
- package/dist/components/layout/collapsable-sidebar/collapsable-sidebar.css +240 -0
- package/dist/components/layout/collapsable-sidebar/index.cjs +107 -0
- package/dist/components/layout/collapsable-sidebar/index.cjs.map +1 -0
- package/dist/components/layout/collapsable-sidebar/index.d.cts +35 -0
- package/dist/components/layout/collapsable-sidebar/index.d.ts +35 -0
- package/dist/components/layout/collapsable-sidebar/index.js +107 -0
- package/dist/components/layout/collapsable-sidebar/index.js.map +1 -0
- package/dist/components/layout/container/container.css +24 -0
- package/dist/components/layout/container/container.utils.cjs +11 -0
- package/dist/components/layout/container/container.utils.cjs.map +1 -0
- package/dist/components/layout/container/container.utils.d.cts +1 -0
- package/dist/components/layout/container/container.utils.d.ts +1 -0
- package/dist/components/layout/container/container.utils.js +11 -0
- package/dist/components/layout/container/container.utils.js.map +1 -0
- package/dist/components/layout/container/index.cjs +17 -0
- package/dist/components/layout/container/index.cjs.map +1 -0
- package/dist/components/layout/container/index.d.cts +11 -0
- package/dist/components/layout/container/index.d.ts +11 -0
- package/dist/components/layout/container/index.js +17 -0
- package/dist/components/layout/container/index.js.map +1 -0
- package/dist/components/layout/page-layout/index.cjs +80 -0
- package/dist/components/layout/page-layout/index.cjs.map +1 -0
- package/dist/components/layout/page-layout/index.d.cts +61 -0
- package/dist/components/layout/page-layout/index.d.ts +61 -0
- package/dist/components/layout/page-layout/index.js +80 -0
- package/dist/components/layout/page-layout/index.js.map +1 -0
- package/dist/components/layout/page-layout/page-layout.css +88 -0
- package/dist/components/layout/section/index.cjs +15 -0
- package/dist/components/layout/section/index.cjs.map +1 -0
- package/dist/components/layout/section/index.d.cts +2 -0
- package/dist/components/layout/section/index.d.ts +2 -0
- package/dist/components/layout/section/index.js +15 -0
- package/dist/components/layout/section/index.js.map +1 -0
- package/dist/components/layout/section/section.css +71 -0
- package/dist/components/layout/section/types.d.cts +13 -0
- package/dist/components/layout/section/types.d.ts +13 -0
- package/dist/components/layout/section-stack/index.cjs +29 -0
- package/dist/components/layout/section-stack/index.cjs.map +1 -0
- package/dist/components/layout/section-stack/index.d.cts +8 -0
- package/dist/components/layout/section-stack/index.d.ts +8 -0
- package/dist/components/layout/section-stack/index.js +29 -0
- package/dist/components/layout/section-stack/index.js.map +1 -0
- package/dist/components/layout/sidebar/index.cjs +16 -0
- package/dist/components/layout/sidebar/index.cjs.map +1 -0
- package/dist/components/layout/sidebar/index.d.cts +7 -0
- package/dist/components/layout/sidebar/index.d.ts +7 -0
- package/dist/components/layout/sidebar/index.js +16 -0
- package/dist/components/layout/sidebar/index.js.map +1 -0
- package/dist/components/layout/sidebar/sidebar.css +21 -0
- package/dist/components/layout/stack/index.cjs +30 -0
- package/dist/components/layout/stack/index.cjs.map +1 -0
- package/dist/components/layout/stack/index.d.cts +31 -0
- package/dist/components/layout/stack/index.d.ts +31 -0
- package/dist/components/layout/stack/index.js +30 -0
- package/dist/components/layout/stack/index.js.map +1 -0
- package/dist/components/layout/stack/stack.css +303 -0
- package/dist/components/navigation/accordion/accordion.css +97 -0
- package/dist/components/navigation/accordion/index.cjs +107 -0
- package/dist/components/navigation/accordion/index.cjs.map +1 -0
- package/dist/components/navigation/accordion/index.d.cts +48 -0
- package/dist/components/navigation/accordion/index.d.ts +48 -0
- package/dist/components/navigation/accordion/index.js +107 -0
- package/dist/components/navigation/accordion/index.js.map +1 -0
- package/dist/components/navigation/carousel/carousel.css +283 -0
- package/dist/components/navigation/carousel/controller.cjs +46 -0
- package/dist/components/navigation/carousel/controller.cjs.map +1 -0
- package/dist/components/navigation/carousel/controller.d.cts +16 -0
- package/dist/components/navigation/carousel/controller.d.ts +16 -0
- package/dist/components/navigation/carousel/controller.js +45 -0
- package/dist/components/navigation/carousel/controller.js.map +1 -0
- package/dist/components/navigation/carousel/index.cjs +494 -0
- package/dist/components/navigation/carousel/index.cjs.map +1 -0
- package/dist/components/navigation/carousel/index.d.cts +27 -0
- package/dist/components/navigation/carousel/index.d.ts +27 -0
- package/dist/components/navigation/carousel/index.js +494 -0
- package/dist/components/navigation/carousel/index.js.map +1 -0
- package/dist/components/navigation/link/index.cjs +40 -0
- package/dist/components/navigation/link/index.cjs.map +1 -0
- package/dist/components/navigation/link/index.d.cts +3 -0
- package/dist/components/navigation/link/index.d.ts +3 -0
- package/dist/components/navigation/link/index.js +40 -0
- package/dist/components/navigation/link/index.js.map +1 -0
- package/dist/components/navigation/link/link.css +31 -0
- package/dist/components/navigation/link/types.d.cts +12 -0
- package/dist/components/navigation/link/types.d.ts +12 -0
- package/dist/components/navigation/tabs/index.cjs +111 -0
- package/dist/components/navigation/tabs/index.cjs.map +1 -0
- package/dist/components/navigation/tabs/index.d.cts +30 -0
- package/dist/components/navigation/tabs/index.d.ts +30 -0
- package/dist/components/navigation/tabs/index.js +110 -0
- package/dist/components/navigation/tabs/index.js.map +1 -0
- package/dist/components/navigation/tabs/tabs.css +216 -0
- package/dist/components/navigation/tree-view/index.cjs +455 -0
- package/dist/components/navigation/tree-view/index.cjs.map +1 -0
- package/dist/components/navigation/tree-view/index.d.cts +96 -0
- package/dist/components/navigation/tree-view/index.d.ts +96 -0
- package/dist/components/navigation/tree-view/index.js +455 -0
- package/dist/components/navigation/tree-view/index.js.map +1 -0
- package/dist/components/navigation/tree-view/tree-view.css +258 -0
- package/dist/components/overlays/backdrop/backdrop.css +10 -0
- package/dist/components/overlays/backdrop/index.cjs +70 -0
- package/dist/components/overlays/backdrop/index.cjs.map +1 -0
- package/dist/components/overlays/backdrop/index.d.cts +12 -0
- package/dist/components/overlays/backdrop/index.d.ts +12 -0
- package/dist/components/overlays/backdrop/index.js +70 -0
- package/dist/components/overlays/backdrop/index.js.map +1 -0
- package/dist/components/overlays/command/command.css +154 -0
- package/dist/components/overlays/command/command.types.d.cts +36 -0
- package/dist/components/overlays/command/command.types.d.ts +36 -0
- package/dist/components/overlays/command/command.utils.cjs +39 -0
- package/dist/components/overlays/command/command.utils.cjs.map +1 -0
- package/dist/components/overlays/command/command.utils.js +35 -0
- package/dist/components/overlays/command/command.utils.js.map +1 -0
- package/dist/components/overlays/command/index.cjs +274 -0
- package/dist/components/overlays/command/index.cjs.map +1 -0
- package/dist/components/overlays/command/index.d.cts +4 -0
- package/dist/components/overlays/command/index.d.ts +4 -0
- package/dist/components/overlays/command/index.js +273 -0
- package/dist/components/overlays/command/index.js.map +1 -0
- package/dist/components/overlays/dialog/dialog.css +121 -0
- package/dist/components/overlays/dialog/index.cjs +80 -0
- package/dist/components/overlays/dialog/index.cjs.map +1 -0
- package/dist/components/overlays/dialog/index.d.cts +35 -0
- package/dist/components/overlays/dialog/index.d.ts +35 -0
- package/dist/components/overlays/dialog/index.js +80 -0
- package/dist/components/overlays/dialog/index.js.map +1 -0
- package/dist/components/overlays/drawer/drawer.css +133 -0
- package/dist/components/overlays/drawer/index.cjs +90 -0
- package/dist/components/overlays/drawer/index.cjs.map +1 -0
- package/dist/components/overlays/drawer/index.d.cts +11 -0
- package/dist/components/overlays/drawer/index.d.ts +11 -0
- package/dist/components/overlays/drawer/index.js +90 -0
- package/dist/components/overlays/drawer/index.js.map +1 -0
- package/dist/components/overlays/drawer/use-resize-bar.cjs +152 -0
- package/dist/components/overlays/drawer/use-resize-bar.cjs.map +1 -0
- package/dist/components/overlays/drawer/use-resize-bar.js +152 -0
- package/dist/components/overlays/drawer/use-resize-bar.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.cjs +120 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.d.cts +3 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.d.ts +3 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.js +120 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-content.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-items.cjs +136 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-items.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-items.d.cts +7 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-items.d.ts +7 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-items.js +132 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-items.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.cjs +76 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.d.cts +4 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.d.ts +4 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.js +75 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-radio.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.cjs +96 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.d.cts +3 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.d.ts +3 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.js +96 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu-trigger.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.cjs +111 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.context.cjs +21 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.context.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.context.js +18 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.context.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.css +127 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.d.cts +3 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.d.ts +3 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.js +111 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.types.d.cts +66 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.types.d.ts +66 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.cjs +44 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.js +39 -0
- package/dist/components/overlays/dropdown-menu/dropdown-menu.utils.js.map +1 -0
- package/dist/components/overlays/dropdown-menu/index.cjs +31 -0
- package/dist/components/overlays/dropdown-menu/index.cjs.map +1 -0
- package/dist/components/overlays/dropdown-menu/index.d.cts +19 -0
- package/dist/components/overlays/dropdown-menu/index.d.ts +19 -0
- package/dist/components/overlays/dropdown-menu/index.js +22 -0
- package/dist/components/overlays/dropdown-menu/index.js.map +1 -0
- package/dist/components/overlays/floating-position/calculate-position.cjs +94 -0
- package/dist/components/overlays/floating-position/calculate-position.cjs.map +1 -0
- package/dist/components/overlays/floating-position/calculate-position.js +89 -0
- package/dist/components/overlays/floating-position/calculate-position.js.map +1 -0
- package/dist/components/overlays/floating-position/use-floating-position.cjs +89 -0
- package/dist/components/overlays/floating-position/use-floating-position.cjs.map +1 -0
- package/dist/components/overlays/floating-position/use-floating-position.js +89 -0
- package/dist/components/overlays/floating-position/use-floating-position.js.map +1 -0
- package/dist/components/overlays/notification/index.cjs +142 -0
- package/dist/components/overlays/notification/index.cjs.map +1 -0
- package/dist/components/overlays/notification/index.d.cts +16 -0
- package/dist/components/overlays/notification/index.d.ts +16 -0
- package/dist/components/overlays/notification/index.js +139 -0
- package/dist/components/overlays/notification/index.js.map +1 -0
- package/dist/components/overlays/notification/notification-provider.cjs +69 -0
- package/dist/components/overlays/notification/notification-provider.cjs.map +1 -0
- package/dist/components/overlays/notification/notification-provider.d.cts +3 -0
- package/dist/components/overlays/notification/notification-provider.d.ts +3 -0
- package/dist/components/overlays/notification/notification-provider.js +68 -0
- package/dist/components/overlays/notification/notification-provider.js.map +1 -0
- package/dist/components/overlays/notification/notification.css +172 -0
- package/dist/components/overlays/notification/notification.types.d.cts +41 -0
- package/dist/components/overlays/notification/notification.types.d.ts +41 -0
- package/dist/components/overlays/notification/notification.utils.cjs +23 -0
- package/dist/components/overlays/notification/notification.utils.cjs.map +1 -0
- package/dist/components/overlays/notification/notification.utils.js +22 -0
- package/dist/components/overlays/notification/notification.utils.js.map +1 -0
- package/dist/components/overlays/notification/use-notification.cjs +12 -0
- package/dist/components/overlays/notification/use-notification.cjs.map +1 -0
- package/dist/components/overlays/notification/use-notification.d.cts +3 -0
- package/dist/components/overlays/notification/use-notification.d.ts +3 -0
- package/dist/components/overlays/notification/use-notification.js +12 -0
- package/dist/components/overlays/notification/use-notification.js.map +1 -0
- package/dist/components/overlays/overlay-stack/index.cjs +195 -0
- package/dist/components/overlays/overlay-stack/index.cjs.map +1 -0
- package/dist/components/overlays/overlay-stack/index.js +193 -0
- package/dist/components/overlays/overlay-stack/index.js.map +1 -0
- package/dist/components/overlays/popout/index.cjs +190 -0
- package/dist/components/overlays/popout/index.cjs.map +1 -0
- package/dist/components/overlays/popout/index.d.cts +26 -0
- package/dist/components/overlays/popout/index.d.ts +26 -0
- package/dist/components/overlays/popout/index.js +190 -0
- package/dist/components/overlays/popout/index.js.map +1 -0
- package/dist/components/overlays/popout/popout.css +15 -0
- package/dist/components/overlays/popover/index.cjs +163 -0
- package/dist/components/overlays/popover/index.cjs.map +1 -0
- package/dist/components/overlays/popover/index.d.cts +28 -0
- package/dist/components/overlays/popover/index.d.ts +28 -0
- package/dist/components/overlays/popover/index.js +163 -0
- package/dist/components/overlays/popover/index.js.map +1 -0
- package/dist/components/overlays/popover/popover.css +56 -0
- package/dist/components/overlays/portal/index.cjs +33 -0
- package/dist/components/overlays/portal/index.cjs.map +1 -0
- package/dist/components/overlays/portal/index.d.cts +15 -0
- package/dist/components/overlays/portal/index.d.ts +15 -0
- package/dist/components/overlays/portal/index.js +33 -0
- package/dist/components/overlays/portal/index.js.map +1 -0
- package/dist/components/overlays/portal/target.cjs +17 -0
- package/dist/components/overlays/portal/target.cjs.map +1 -0
- package/dist/components/overlays/portal/target.css +3 -0
- package/dist/components/overlays/portal/target.d.cts +7 -0
- package/dist/components/overlays/portal/target.d.ts +7 -0
- package/dist/components/overlays/portal/target.js +17 -0
- package/dist/components/overlays/portal/target.js.map +1 -0
- package/dist/components/overlays/tooltip/index.cjs +71 -0
- package/dist/components/overlays/tooltip/index.cjs.map +1 -0
- package/dist/components/overlays/tooltip/index.d.cts +24 -0
- package/dist/components/overlays/tooltip/index.d.ts +24 -0
- package/dist/components/overlays/tooltip/index.js +71 -0
- package/dist/components/overlays/tooltip/index.js.map +1 -0
- package/dist/components/overlays/tooltip/tooltip.css +67 -0
- package/dist/components/typography/heading.cjs +14 -0
- package/dist/components/typography/heading.cjs.map +1 -0
- package/dist/components/typography/heading.d.cts +11 -0
- package/dist/components/typography/heading.d.ts +11 -0
- package/dist/components/typography/heading.js +14 -0
- package/dist/components/typography/heading.js.map +1 -0
- package/dist/components/typography/text.cjs +14 -0
- package/dist/components/typography/text.cjs.map +1 -0
- package/dist/components/typography/text.d.cts +12 -0
- package/dist/components/typography/text.d.ts +12 -0
- package/dist/components/typography/text.js +14 -0
- package/dist/components/typography/text.js.map +1 -0
- package/dist/components/utilities/preview/highlight.cjs +79 -0
- package/dist/components/utilities/preview/highlight.cjs.map +1 -0
- package/dist/components/utilities/preview/highlight.js +79 -0
- package/dist/components/utilities/preview/highlight.js.map +1 -0
- package/dist/components/utilities/preview/index.cjs +391 -0
- package/dist/components/utilities/preview/index.cjs.map +1 -0
- package/dist/components/utilities/preview/index.d.cts +20 -0
- package/dist/components/utilities/preview/index.d.ts +20 -0
- package/dist/components/utilities/preview/index.js +391 -0
- package/dist/components/utilities/preview/index.js.map +1 -0
- package/dist/components/utilities/preview/preview.css +268 -0
- package/dist/components/utilities/scroll-lock/index.cjs +124 -0
- package/dist/components/utilities/scroll-lock/index.cjs.map +1 -0
- package/dist/components/utilities/scroll-lock/index.d.cts +6 -0
- package/dist/components/utilities/scroll-lock/index.d.ts +6 -0
- package/dist/components/utilities/scroll-lock/index.js +124 -0
- package/dist/components/utilities/scroll-lock/index.js.map +1 -0
- package/dist/components/utilities/transition/index.cjs +171 -0
- package/dist/components/utilities/transition/index.cjs.map +1 -0
- package/dist/components/utilities/transition/index.d.cts +27 -0
- package/dist/components/utilities/transition/index.d.ts +27 -0
- package/dist/components/utilities/transition/index.js +171 -0
- package/dist/components/utilities/transition/index.js.map +1 -0
- package/dist/components/utilities/transition/transition.css +130 -0
- package/dist/index.cjs +155 -0
- package/dist/index.d.cts +85 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.js +69 -0
- package/package.json +65 -4
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/components/overlays/command/command.utils.ts
|
|
2
|
+
const normalizeCommandText = (value) => value.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLocaleLowerCase().trim();
|
|
3
|
+
const filterCommands = (commands, query) => {
|
|
4
|
+
const normalizedQuery = normalizeCommandText(query);
|
|
5
|
+
if (!normalizedQuery) return commands;
|
|
6
|
+
const terms = normalizedQuery.split(/\s+/);
|
|
7
|
+
return commands.filter((command) => {
|
|
8
|
+
const searchableText = normalizeCommandText([
|
|
9
|
+
command.label,
|
|
10
|
+
command.description ?? "",
|
|
11
|
+
...command.keywords ?? [],
|
|
12
|
+
command.group ?? ""
|
|
13
|
+
].join(" "));
|
|
14
|
+
return terms.every((term) => searchableText.includes(term));
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
const getNextEnabledIndex = (commands, currentIndex, direction, loop = true) => {
|
|
18
|
+
if (commands.length === 0) return -1;
|
|
19
|
+
let index = currentIndex;
|
|
20
|
+
for (let attempt = 0; attempt < commands.length; attempt++) {
|
|
21
|
+
index += direction;
|
|
22
|
+
if (loop) index = (index + commands.length) % commands.length;
|
|
23
|
+
else if (index < 0 || index >= commands.length) return currentIndex;
|
|
24
|
+
if (!commands[index]?.disabled) return index;
|
|
25
|
+
}
|
|
26
|
+
return -1;
|
|
27
|
+
};
|
|
28
|
+
const findFirstEnabledIndex = (commands) => commands.findIndex((command) => !command.disabled);
|
|
29
|
+
const findLastEnabledIndex = (commands) => {
|
|
30
|
+
for (let index = commands.length - 1; index >= 0; index--) if (!commands[index]?.disabled) return index;
|
|
31
|
+
return -1;
|
|
32
|
+
};
|
|
33
|
+
exports.filterCommands = filterCommands;
|
|
34
|
+
exports.findFirstEnabledIndex = findFirstEnabledIndex;
|
|
35
|
+
exports.findLastEnabledIndex = findLastEnabledIndex;
|
|
36
|
+
exports.getNextEnabledIndex = getNextEnabledIndex;
|
|
37
|
+
exports.normalizeCommandText = normalizeCommandText;
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=command.utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.utils.cjs","names":[],"sources":["../../../../src/components/overlays/command/command.utils.ts"],"sourcesContent":["import type { CommandItem } from \"./command.types\";\n\nconst normalizeCommandText = (value: string): string =>\n value\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLocaleLowerCase()\n .trim();\n\nconst filterCommands = (\n commands: CommandItem[],\n query: string,\n): CommandItem[] => {\n const normalizedQuery = normalizeCommandText(query);\n\n if (!normalizedQuery) {\n return commands;\n }\n\n const terms = normalizedQuery.split(/\\s+/);\n\n return commands.filter((command) => {\n const searchableText = normalizeCommandText(\n [\n command.label,\n command.description ?? \"\",\n ...(command.keywords ?? []),\n command.group ?? \"\",\n ].join(\" \"),\n );\n\n return terms.every((term) => searchableText.includes(term));\n });\n};\n\nconst getNextEnabledIndex = (\n commands: CommandItem[],\n currentIndex: number,\n direction: 1 | -1,\n loop = true,\n): number => {\n if (commands.length === 0) {\n return -1;\n }\n\n let index = currentIndex;\n\n for (let attempt = 0; attempt < commands.length; attempt++) {\n index += direction;\n\n if (loop) {\n index = (index + commands.length) % commands.length;\n } else if (index < 0 || index >= commands.length) {\n return currentIndex;\n }\n\n if (!commands[index]?.disabled) {\n return index;\n }\n }\n\n return -1;\n};\n\nconst findFirstEnabledIndex = (commands: CommandItem[]): number =>\n commands.findIndex((command) => !command.disabled);\n\nconst findLastEnabledIndex = (commands: CommandItem[]): number => {\n for (let index = commands.length - 1; index >= 0; index--) {\n if (!commands[index]?.disabled) {\n return index;\n }\n }\n\n return -1;\n};\n\nexport {\n filterCommands,\n findFirstEnabledIndex,\n findLastEnabledIndex,\n getNextEnabledIndex,\n normalizeCommandText,\n};\n"],"mappings":";AAEA,MAAM,wBAAwB,UAC5B,MACG,UAAU,KAAK,CAAC,CAChB,QAAQ,oBAAoB,EAAE,CAAC,CAC/B,kBAAkB,CAAC,CACnB,KAAK;AAEV,MAAM,kBACJ,UACA,UACkB;CAClB,MAAM,kBAAkB,qBAAqB,KAAK;CAElD,IAAI,CAAC,iBACH,OAAO;CAGT,MAAM,QAAQ,gBAAgB,MAAM,KAAK;CAEzC,OAAO,SAAS,QAAQ,YAAY;EAClC,MAAM,iBAAiB,qBACrB;GACE,QAAQ;GACR,QAAQ,eAAe;GACvB,GAAI,QAAQ,YAAY,CAAC;GACzB,QAAQ,SAAS;EACnB,CAAC,CAAC,KAAK,GAAG,CACZ;EAEA,OAAO,MAAM,OAAO,SAAS,eAAe,SAAS,IAAI,CAAC;CAC5D,CAAC;AACH;AAEA,MAAM,uBACJ,UACA,cACA,WACA,OAAO,SACI;CACX,IAAI,SAAS,WAAW,GACtB,OAAO;CAGT,IAAI,QAAQ;CAEZ,KAAK,IAAI,UAAU,GAAG,UAAU,SAAS,QAAQ,WAAW;EAC1D,SAAS;EAET,IAAI,MACF,SAAS,QAAQ,SAAS,UAAU,SAAS;OACxC,IAAI,QAAQ,KAAK,SAAS,SAAS,QACxC,OAAO;EAGT,IAAI,CAAC,SAAS,MAAM,EAAE,UACpB,OAAO;CAEX;CAEA,OAAO;AACT;AAEA,MAAM,yBAAyB,aAC7B,SAAS,WAAW,YAAY,CAAC,QAAQ,QAAQ;AAEnD,MAAM,wBAAwB,aAAoC;CAChE,KAAK,IAAI,QAAQ,SAAS,SAAS,GAAG,SAAS,GAAG,SAChD,IAAI,CAAC,SAAS,MAAM,EAAE,UACpB,OAAO;CAIX,OAAO;AACT"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/components/overlays/command/command.utils.ts
|
|
2
|
+
const normalizeCommandText = (value) => value.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLocaleLowerCase().trim();
|
|
3
|
+
const filterCommands = (commands, query) => {
|
|
4
|
+
const normalizedQuery = normalizeCommandText(query);
|
|
5
|
+
if (!normalizedQuery) return commands;
|
|
6
|
+
const terms = normalizedQuery.split(/\s+/);
|
|
7
|
+
return commands.filter((command) => {
|
|
8
|
+
const searchableText = normalizeCommandText([
|
|
9
|
+
command.label,
|
|
10
|
+
command.description ?? "",
|
|
11
|
+
...command.keywords ?? [],
|
|
12
|
+
command.group ?? ""
|
|
13
|
+
].join(" "));
|
|
14
|
+
return terms.every((term) => searchableText.includes(term));
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
const getNextEnabledIndex = (commands, currentIndex, direction, loop = true) => {
|
|
18
|
+
if (commands.length === 0) return -1;
|
|
19
|
+
let index = currentIndex;
|
|
20
|
+
for (let attempt = 0; attempt < commands.length; attempt++) {
|
|
21
|
+
index += direction;
|
|
22
|
+
if (loop) index = (index + commands.length) % commands.length;
|
|
23
|
+
else if (index < 0 || index >= commands.length) return currentIndex;
|
|
24
|
+
if (!commands[index]?.disabled) return index;
|
|
25
|
+
}
|
|
26
|
+
return -1;
|
|
27
|
+
};
|
|
28
|
+
const findFirstEnabledIndex = (commands) => commands.findIndex((command) => !command.disabled);
|
|
29
|
+
const findLastEnabledIndex = (commands) => {
|
|
30
|
+
for (let index = commands.length - 1; index >= 0; index--) if (!commands[index]?.disabled) return index;
|
|
31
|
+
return -1;
|
|
32
|
+
};
|
|
33
|
+
export { filterCommands, findFirstEnabledIndex, findLastEnabledIndex, getNextEnabledIndex, normalizeCommandText };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=command.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.utils.js","names":[],"sources":["../../../../src/components/overlays/command/command.utils.ts"],"sourcesContent":["import type { CommandItem } from \"./command.types\";\n\nconst normalizeCommandText = (value: string): string =>\n value\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLocaleLowerCase()\n .trim();\n\nconst filterCommands = (\n commands: CommandItem[],\n query: string,\n): CommandItem[] => {\n const normalizedQuery = normalizeCommandText(query);\n\n if (!normalizedQuery) {\n return commands;\n }\n\n const terms = normalizedQuery.split(/\\s+/);\n\n return commands.filter((command) => {\n const searchableText = normalizeCommandText(\n [\n command.label,\n command.description ?? \"\",\n ...(command.keywords ?? []),\n command.group ?? \"\",\n ].join(\" \"),\n );\n\n return terms.every((term) => searchableText.includes(term));\n });\n};\n\nconst getNextEnabledIndex = (\n commands: CommandItem[],\n currentIndex: number,\n direction: 1 | -1,\n loop = true,\n): number => {\n if (commands.length === 0) {\n return -1;\n }\n\n let index = currentIndex;\n\n for (let attempt = 0; attempt < commands.length; attempt++) {\n index += direction;\n\n if (loop) {\n index = (index + commands.length) % commands.length;\n } else if (index < 0 || index >= commands.length) {\n return currentIndex;\n }\n\n if (!commands[index]?.disabled) {\n return index;\n }\n }\n\n return -1;\n};\n\nconst findFirstEnabledIndex = (commands: CommandItem[]): number =>\n commands.findIndex((command) => !command.disabled);\n\nconst findLastEnabledIndex = (commands: CommandItem[]): number => {\n for (let index = commands.length - 1; index >= 0; index--) {\n if (!commands[index]?.disabled) {\n return index;\n }\n }\n\n return -1;\n};\n\nexport {\n filterCommands,\n findFirstEnabledIndex,\n findLastEnabledIndex,\n getNextEnabledIndex,\n normalizeCommandText,\n};\n"],"mappings":";AAEA,MAAM,wBAAwB,UAC5B,MACG,UAAU,KAAK,CAAC,CAChB,QAAQ,oBAAoB,EAAE,CAAC,CAC/B,kBAAkB,CAAC,CACnB,KAAK;AAEV,MAAM,kBACJ,UACA,UACkB;CAClB,MAAM,kBAAkB,qBAAqB,KAAK;CAElD,IAAI,CAAC,iBACH,OAAO;CAGT,MAAM,QAAQ,gBAAgB,MAAM,KAAK;CAEzC,OAAO,SAAS,QAAQ,YAAY;EAClC,MAAM,iBAAiB,qBACrB;GACE,QAAQ;GACR,QAAQ,eAAe;GACvB,GAAI,QAAQ,YAAY,CAAC;GACzB,QAAQ,SAAS;EACnB,CAAC,CAAC,KAAK,GAAG,CACZ;EAEA,OAAO,MAAM,OAAO,SAAS,eAAe,SAAS,IAAI,CAAC;CAC5D,CAAC;AACH;AAEA,MAAM,uBACJ,UACA,cACA,WACA,OAAO,SACI;CACX,IAAI,SAAS,WAAW,GACtB,OAAO;CAGT,IAAI,QAAQ;CAEZ,KAAK,IAAI,UAAU,GAAG,UAAU,SAAS,QAAQ,WAAW;EAC1D,SAAS;EAET,IAAI,MACF,SAAS,QAAQ,SAAS,UAAU,SAAS;OACxC,IAAI,QAAQ,KAAK,SAAS,SAAS,QACxC,OAAO;EAGT,IAAI,CAAC,SAAS,MAAM,EAAE,UACpB,OAAO;CAEX;CAEA,OAAO;AACT;AAEA,MAAM,yBAAyB,aAC7B,SAAS,WAAW,YAAY,CAAC,QAAQ,QAAQ;AAEnD,MAAM,wBAAwB,aAAoC;CAChE,KAAK,IAAI,QAAQ,SAAS,SAAS,GAAG,SAAS,GAAG,SAChD,IAAI,CAAC,SAAS,MAAM,EAAE,UACpB,OAAO;CAIX,OAAO;AACT"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const require_index = require("../dialog/index.cjs");
|
|
3
|
+
const require_command_utils = require("./command.utils.cjs");
|
|
4
|
+
;/* empty css */
|
|
5
|
+
let _puzzle_ui_core = require("@puzzle-ui/core");
|
|
6
|
+
let react = require("react");
|
|
7
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
|
+
// src/components/overlays/command/index.tsx
|
|
9
|
+
const Command = ({ commands, placeholder = "Search commands...", label = "Search commands", emptyMessage = "No commands found.", loading = false, loadingMessage = "Searching...", filter, onSelect, onQueryChange, query, defaultQuery = "", loop = true, autoFocus = true, className, ...props }) => {
|
|
10
|
+
const baseId = (0, react.useId)();
|
|
11
|
+
const inputId = `${baseId}-input`;
|
|
12
|
+
const listId = `${baseId}-list`;
|
|
13
|
+
const statusId = `${baseId}-status`;
|
|
14
|
+
const inputRef = (0, react.useRef)(null);
|
|
15
|
+
const controlledQuery = query !== void 0;
|
|
16
|
+
const [internalQuery, setInternalQuery] = (0, react.useState)(defaultQuery);
|
|
17
|
+
const [activeIndex, setActiveIndex] = (0, react.useState)(-1);
|
|
18
|
+
const currentQuery = controlledQuery ? query : internalQuery;
|
|
19
|
+
const filteredCommands = (0, react.useMemo)(() => filter ? commands.filter((command) => filter(command, currentQuery)) : require_command_utils.filterCommands(commands, currentQuery), [
|
|
20
|
+
commands,
|
|
21
|
+
currentQuery,
|
|
22
|
+
filter
|
|
23
|
+
]);
|
|
24
|
+
const enabledCommands = (0, react.useMemo)(() => filteredCommands.filter((command) => !command.disabled), [filteredCommands]);
|
|
25
|
+
const groupedCommands = (0, react.useMemo)(() => {
|
|
26
|
+
const groups = /* @__PURE__ */ new Map();
|
|
27
|
+
filteredCommands.forEach((command) => {
|
|
28
|
+
const group = command.group ?? "";
|
|
29
|
+
const items = groups.get(group) ?? [];
|
|
30
|
+
items.push(command);
|
|
31
|
+
groups.set(group, items);
|
|
32
|
+
});
|
|
33
|
+
return Array.from(groups.entries());
|
|
34
|
+
}, [filteredCommands]);
|
|
35
|
+
const activeCommand = filteredCommands[activeIndex];
|
|
36
|
+
const changeQuery = (0, react.useCallback)((nextQuery) => {
|
|
37
|
+
if (!controlledQuery) setInternalQuery(nextQuery);
|
|
38
|
+
setActiveIndex(-1);
|
|
39
|
+
onQueryChange?.(nextQuery);
|
|
40
|
+
}, [controlledQuery, onQueryChange]);
|
|
41
|
+
const selectCommand = (0, react.useCallback)((command) => {
|
|
42
|
+
if (command.disabled) return;
|
|
43
|
+
command.onSelect?.();
|
|
44
|
+
onSelect?.(command);
|
|
45
|
+
}, [onSelect]);
|
|
46
|
+
const handleInputChange = (event) => {
|
|
47
|
+
changeQuery(event.currentTarget.value);
|
|
48
|
+
};
|
|
49
|
+
const handleKeyDown = (event) => {
|
|
50
|
+
switch (event.key) {
|
|
51
|
+
case "ArrowDown":
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
setActiveIndex((current) => require_command_utils.getNextEnabledIndex(filteredCommands, current, 1, loop));
|
|
54
|
+
break;
|
|
55
|
+
case "ArrowUp":
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
setActiveIndex((current) => require_command_utils.getNextEnabledIndex(filteredCommands, current < 0 ? filteredCommands.length : current, -1, loop));
|
|
58
|
+
break;
|
|
59
|
+
case "Home":
|
|
60
|
+
if (event.ctrlKey || event.metaKey) {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
setActiveIndex(require_command_utils.findFirstEnabledIndex(filteredCommands));
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case "End":
|
|
66
|
+
if (event.ctrlKey || event.metaKey) {
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
setActiveIndex(require_command_utils.findLastEnabledIndex(filteredCommands));
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case "Enter":
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
if (activeCommand && !activeCommand.disabled) selectCommand(activeCommand);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
(0, react.useEffect)(() => {
|
|
77
|
+
if (!autoFocus) return;
|
|
78
|
+
inputRef.current?.focus({ preventScroll: true });
|
|
79
|
+
}, [autoFocus]);
|
|
80
|
+
(0, react.useEffect)(() => {
|
|
81
|
+
if (activeIndex >= filteredCommands.length || filteredCommands[activeIndex]?.disabled) setActiveIndex(require_command_utils.findFirstEnabledIndex(filteredCommands));
|
|
82
|
+
}, [activeIndex, filteredCommands]);
|
|
83
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
84
|
+
...props,
|
|
85
|
+
className: (0, _puzzle_ui_core.cn)("puzzle-command", className),
|
|
86
|
+
"data-command": "",
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
89
|
+
className: "puzzle-command__search",
|
|
90
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
91
|
+
className: "puzzle-command__search-icon",
|
|
92
|
+
viewBox: "0 0 24 24",
|
|
93
|
+
width: "18",
|
|
94
|
+
height: "18",
|
|
95
|
+
fill: "none",
|
|
96
|
+
stroke: "currentColor",
|
|
97
|
+
strokeWidth: "2",
|
|
98
|
+
strokeLinecap: "round",
|
|
99
|
+
"aria-hidden": "true",
|
|
100
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
101
|
+
cx: "11",
|
|
102
|
+
cy: "11",
|
|
103
|
+
r: "8"
|
|
104
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m21 21-4.35-4.35" })]
|
|
105
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
106
|
+
ref: inputRef,
|
|
107
|
+
id: inputId,
|
|
108
|
+
className: "puzzle-command__input",
|
|
109
|
+
type: "text",
|
|
110
|
+
role: "combobox",
|
|
111
|
+
"aria-label": label,
|
|
112
|
+
"aria-autocomplete": "list",
|
|
113
|
+
"aria-expanded": true,
|
|
114
|
+
"aria-controls": listId,
|
|
115
|
+
"aria-activedescendant": activeCommand ? `${baseId}-item-${encodeURIComponent(activeCommand.id)}` : void 0,
|
|
116
|
+
"aria-describedby": statusId,
|
|
117
|
+
placeholder,
|
|
118
|
+
value: currentQuery,
|
|
119
|
+
onChange: handleInputChange,
|
|
120
|
+
onKeyDown: handleKeyDown,
|
|
121
|
+
autoComplete: "off",
|
|
122
|
+
spellCheck: false
|
|
123
|
+
})]
|
|
124
|
+
}),
|
|
125
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
126
|
+
id: listId,
|
|
127
|
+
className: "puzzle-command__list",
|
|
128
|
+
role: "listbox",
|
|
129
|
+
"aria-label": "Commands",
|
|
130
|
+
"aria-busy": loading,
|
|
131
|
+
children: loading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
132
|
+
className: "puzzle-command__empty",
|
|
133
|
+
role: "status",
|
|
134
|
+
children: loadingMessage
|
|
135
|
+
}) : filteredCommands.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
136
|
+
className: "puzzle-command__empty",
|
|
137
|
+
role: "status",
|
|
138
|
+
children: emptyMessage
|
|
139
|
+
}) : groupedCommands.map(([group, items]) => {
|
|
140
|
+
const groupId = group ? `${baseId}-group-${encodeURIComponent(group)}` : void 0;
|
|
141
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
142
|
+
className: "puzzle-command__group",
|
|
143
|
+
role: "group",
|
|
144
|
+
"aria-labelledby": groupId,
|
|
145
|
+
children: [group && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
146
|
+
id: groupId,
|
|
147
|
+
className: "puzzle-command__group-heading",
|
|
148
|
+
children: group
|
|
149
|
+
}), items.map((command) => {
|
|
150
|
+
const index = filteredCommands.indexOf(command);
|
|
151
|
+
const selected = index === activeIndex;
|
|
152
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
153
|
+
id: `${baseId}-item-${encodeURIComponent(command.id)}`,
|
|
154
|
+
className: (0, _puzzle_ui_core.cn)("puzzle-command__item", selected && "puzzle-command__item--active", command.disabled && "puzzle-command__item--disabled"),
|
|
155
|
+
role: "option",
|
|
156
|
+
"aria-selected": selected,
|
|
157
|
+
"aria-disabled": command.disabled || void 0,
|
|
158
|
+
"data-active": selected || void 0,
|
|
159
|
+
onMouseEnter: () => {
|
|
160
|
+
if (!command.disabled) setActiveIndex(index);
|
|
161
|
+
},
|
|
162
|
+
onMouseDown: (event) => {
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
},
|
|
165
|
+
onClick: () => {
|
|
166
|
+
selectCommand(command);
|
|
167
|
+
},
|
|
168
|
+
children: [
|
|
169
|
+
command.icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
170
|
+
className: "puzzle-command__item-icon",
|
|
171
|
+
"aria-hidden": "true",
|
|
172
|
+
children: command.icon
|
|
173
|
+
}),
|
|
174
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
175
|
+
className: "puzzle-command__item-content",
|
|
176
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
177
|
+
className: "puzzle-command__item-label",
|
|
178
|
+
children: command.label
|
|
179
|
+
}), command.description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
180
|
+
className: "puzzle-command__item-description",
|
|
181
|
+
children: command.description
|
|
182
|
+
})]
|
|
183
|
+
}),
|
|
184
|
+
command.shortcut && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
185
|
+
className: "puzzle-command__shortcut",
|
|
186
|
+
children: command.shortcut
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
}, command.id);
|
|
190
|
+
})]
|
|
191
|
+
}, group || "__default");
|
|
192
|
+
})
|
|
193
|
+
}),
|
|
194
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
195
|
+
id: statusId,
|
|
196
|
+
className: "puzzle-command__sr-only",
|
|
197
|
+
role: "status",
|
|
198
|
+
"aria-live": "polite",
|
|
199
|
+
"aria-atomic": "true",
|
|
200
|
+
children: loading ? loadingMessage : enabledCommands.length === 0 ? emptyMessage : `${enabledCommands.length} ${enabledCommands.length === 1 ? "command" : "commands"} available`
|
|
201
|
+
})
|
|
202
|
+
]
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
const CommandDialog = ({ open, defaultOpen = false, onOpenChange, title = "Command palette", description, shortcut = "k", commands, onSelect, ...commandProps }) => {
|
|
206
|
+
const controlled = open !== void 0;
|
|
207
|
+
const [internalOpen, setInternalOpen] = (0, react.useState)(defaultOpen);
|
|
208
|
+
const isOpen = controlled ? open : internalOpen;
|
|
209
|
+
const [ownerDocument, setOwnerDocument] = (0, react.useState)(null);
|
|
210
|
+
const rootRef = (0, react.useCallback)((node) => {
|
|
211
|
+
setOwnerDocument(node?.ownerDocument ?? null);
|
|
212
|
+
}, []);
|
|
213
|
+
const changeOpen = (0, react.useCallback)((nextOpen) => {
|
|
214
|
+
if (!controlled) setInternalOpen(nextOpen);
|
|
215
|
+
onOpenChange?.(nextOpen);
|
|
216
|
+
}, [controlled, onOpenChange]);
|
|
217
|
+
(0, react.useEffect)(() => {
|
|
218
|
+
if (shortcut === false || !ownerDocument) return;
|
|
219
|
+
const view = ownerDocument.defaultView;
|
|
220
|
+
if (!view) return;
|
|
221
|
+
const handleGlobalKeyDown = (event) => {
|
|
222
|
+
if (!(event instanceof view.KeyboardEvent)) return;
|
|
223
|
+
const keyboardEvent = event;
|
|
224
|
+
if (keyboardEvent.defaultPrevented || keyboardEvent.isComposing || keyboardEvent.key.toLowerCase() !== shortcut.toLowerCase() || !(keyboardEvent.metaKey || keyboardEvent.ctrlKey) || keyboardEvent.shiftKey || keyboardEvent.altKey) return;
|
|
225
|
+
const target = keyboardEvent.target;
|
|
226
|
+
if (target instanceof view.HTMLElement) {
|
|
227
|
+
if (target.isContentEditable || target.closest([
|
|
228
|
+
"input",
|
|
229
|
+
"textarea",
|
|
230
|
+
"select",
|
|
231
|
+
"[contenteditable=\"true\"]",
|
|
232
|
+
"[role=\"textbox\"]"
|
|
233
|
+
].join(", ")) !== null) return;
|
|
234
|
+
}
|
|
235
|
+
keyboardEvent.preventDefault();
|
|
236
|
+
changeOpen(!isOpen);
|
|
237
|
+
};
|
|
238
|
+
ownerDocument.addEventListener("keydown", handleGlobalKeyDown);
|
|
239
|
+
return () => {
|
|
240
|
+
ownerDocument.removeEventListener("keydown", handleGlobalKeyDown);
|
|
241
|
+
};
|
|
242
|
+
}, [
|
|
243
|
+
ownerDocument,
|
|
244
|
+
shortcut,
|
|
245
|
+
isOpen,
|
|
246
|
+
changeOpen
|
|
247
|
+
]);
|
|
248
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
249
|
+
ref: rootRef,
|
|
250
|
+
"data-command-dialog-root": "",
|
|
251
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.Dialog, {
|
|
252
|
+
open: isOpen,
|
|
253
|
+
onOpenChange: changeOpen,
|
|
254
|
+
title,
|
|
255
|
+
description,
|
|
256
|
+
size: "md",
|
|
257
|
+
closeButton: false,
|
|
258
|
+
className: "puzzle-command-dialog",
|
|
259
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Command, {
|
|
260
|
+
...commandProps,
|
|
261
|
+
commands,
|
|
262
|
+
autoFocus: isOpen,
|
|
263
|
+
onSelect: (command) => {
|
|
264
|
+
onSelect?.(command);
|
|
265
|
+
changeOpen(false);
|
|
266
|
+
}
|
|
267
|
+
})
|
|
268
|
+
})
|
|
269
|
+
});
|
|
270
|
+
};
|
|
271
|
+
exports.Command = Command;
|
|
272
|
+
exports.CommandDialog = CommandDialog;
|
|
273
|
+
|
|
274
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["useId","useRef","useState","useMemo","filterCommands","useCallback","getNextEnabledIndex","findFirstEnabledIndex","findLastEnabledIndex","cn","Dialog"],"sources":["../../../../src/components/overlays/command/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n} from \"react\";\n\nimport { cn } from \"@puzzle-ui/core\";\n\nimport { Dialog } from \"../dialog\";\n\nimport {\n filterCommands,\n findFirstEnabledIndex,\n findLastEnabledIndex,\n getNextEnabledIndex,\n} from \"./command.utils\";\n\nimport type {\n CommandDialogProps,\n CommandItem,\n CommandProps,\n} from \"./command.types\";\n\nimport \"./command.css\";\n\nconst Command = ({\n commands,\n placeholder = \"Search commands...\",\n label = \"Search commands\",\n emptyMessage = \"No commands found.\",\n loading = false,\n loadingMessage = \"Searching...\",\n filter,\n onSelect,\n onQueryChange,\n query,\n defaultQuery = \"\",\n loop = true,\n autoFocus = true,\n className,\n ...props\n}: CommandProps) => {\n const baseId = useId();\n const inputId = `${baseId}-input`;\n const listId = `${baseId}-list`;\n const statusId = `${baseId}-status`;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const controlledQuery = query !== undefined;\n\n const [internalQuery, setInternalQuery] = useState(defaultQuery);\n\n const [activeIndex, setActiveIndex] = useState(-1);\n\n const currentQuery = controlledQuery ? query : internalQuery;\n\n const filteredCommands = useMemo(\n () =>\n filter\n ? commands.filter((command) => filter(command, currentQuery))\n : filterCommands(commands, currentQuery),\n [commands, currentQuery, filter],\n );\n\n const enabledCommands = useMemo(\n () => filteredCommands.filter((command) => !command.disabled),\n [filteredCommands],\n );\n\n const groupedCommands = useMemo(() => {\n const groups = new Map<string, CommandItem[]>();\n\n filteredCommands.forEach((command) => {\n const group = command.group ?? \"\";\n const items = groups.get(group) ?? [];\n\n items.push(command);\n groups.set(group, items);\n });\n\n return Array.from(groups.entries());\n }, [filteredCommands]);\n\n const activeCommand = filteredCommands[activeIndex];\n\n const changeQuery = useCallback(\n (nextQuery: string) => {\n if (!controlledQuery) {\n setInternalQuery(nextQuery);\n }\n\n setActiveIndex(-1);\n onQueryChange?.(nextQuery);\n },\n [controlledQuery, onQueryChange],\n );\n\n const selectCommand = useCallback(\n (command: CommandItem) => {\n if (command.disabled) {\n return;\n }\n\n command.onSelect?.();\n onSelect?.(command);\n },\n [onSelect],\n );\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n changeQuery(event.currentTarget.value);\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n\n setActiveIndex((current) =>\n getNextEnabledIndex(filteredCommands, current, 1, loop),\n );\n\n break;\n }\n\n case \"ArrowUp\": {\n event.preventDefault();\n\n setActiveIndex((current) =>\n getNextEnabledIndex(\n filteredCommands,\n current < 0 ? filteredCommands.length : current,\n -1,\n loop,\n ),\n );\n\n break;\n }\n\n case \"Home\": {\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault();\n\n setActiveIndex(findFirstEnabledIndex(filteredCommands));\n }\n\n break;\n }\n\n case \"End\": {\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault();\n\n setActiveIndex(findLastEnabledIndex(filteredCommands));\n }\n\n break;\n }\n\n case \"Enter\": {\n event.preventDefault();\n\n if (activeCommand && !activeCommand.disabled) {\n selectCommand(activeCommand);\n }\n\n break;\n }\n }\n };\n\n useEffect(() => {\n if (!autoFocus) {\n return;\n }\n\n inputRef.current?.focus({\n preventScroll: true,\n });\n }, [autoFocus]);\n\n useEffect(() => {\n if (\n activeIndex >= filteredCommands.length ||\n filteredCommands[activeIndex]?.disabled\n ) {\n setActiveIndex(findFirstEnabledIndex(filteredCommands));\n }\n }, [activeIndex, filteredCommands]);\n\n return (\n <div {...props} className={cn(\"puzzle-command\", className)} data-command=\"\">\n <div className=\"puzzle-command__search\">\n <svg\n className=\"puzzle-command__search-icon\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n\n <input\n ref={inputRef}\n id={inputId}\n className=\"puzzle-command__input\"\n type=\"text\"\n role=\"combobox\"\n aria-label={label}\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-controls={listId}\n aria-activedescendant={\n activeCommand\n ? `${baseId}-item-${encodeURIComponent(activeCommand.id)}`\n : undefined\n }\n aria-describedby={statusId}\n placeholder={placeholder}\n value={currentQuery}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n autoComplete=\"off\"\n spellCheck={false}\n />\n </div>\n\n <div\n id={listId}\n className=\"puzzle-command__list\"\n role=\"listbox\"\n aria-label=\"Commands\"\n aria-busy={loading}\n >\n {loading ? (\n <div className=\"puzzle-command__empty\" role=\"status\">\n {loadingMessage}\n </div>\n ) : filteredCommands.length === 0 ? (\n <div className=\"puzzle-command__empty\" role=\"status\">\n {emptyMessage}\n </div>\n ) : (\n groupedCommands.map(([group, items]) => {\n const groupId = group\n ? `${baseId}-group-${encodeURIComponent(group)}`\n : undefined;\n\n return (\n <div\n key={group || \"__default\"}\n className=\"puzzle-command__group\"\n role=\"group\"\n aria-labelledby={groupId}\n >\n {group && (\n <div id={groupId} className=\"puzzle-command__group-heading\">\n {group}\n </div>\n )}\n\n {items.map((command) => {\n const index = filteredCommands.indexOf(command);\n\n const selected = index === activeIndex;\n\n return (\n <div\n key={command.id}\n id={`${baseId}-item-${encodeURIComponent(command.id)}`}\n className={cn(\n \"puzzle-command__item\",\n selected && \"puzzle-command__item--active\",\n command.disabled && \"puzzle-command__item--disabled\",\n )}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={command.disabled || undefined}\n data-active={selected || undefined}\n onMouseEnter={() => {\n if (!command.disabled) {\n setActiveIndex(index);\n }\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n onClick={() => {\n selectCommand(command);\n }}\n >\n {command.icon && (\n <span\n className=\"puzzle-command__item-icon\"\n aria-hidden=\"true\"\n >\n {command.icon}\n </span>\n )}\n\n <span className=\"puzzle-command__item-content\">\n <span className=\"puzzle-command__item-label\">\n {command.label}\n </span>\n\n {command.description && (\n <span className=\"puzzle-command__item-description\">\n {command.description}\n </span>\n )}\n </span>\n\n {command.shortcut && (\n <span className=\"puzzle-command__shortcut\">\n {command.shortcut}\n </span>\n )}\n </div>\n );\n })}\n </div>\n );\n })\n )}\n </div>\n\n <div\n id={statusId}\n className=\"puzzle-command__sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {loading\n ? loadingMessage\n : enabledCommands.length === 0\n ? emptyMessage\n : `${enabledCommands.length} ${\n enabledCommands.length === 1 ? \"command\" : \"commands\"\n } available`}\n </div>\n </div>\n );\n};\n\nconst CommandDialog = ({\n open,\n defaultOpen = false,\n onOpenChange,\n title = \"Command palette\",\n description,\n shortcut = \"k\",\n commands,\n onSelect,\n ...commandProps\n}: CommandDialogProps) => {\n const controlled = open !== undefined;\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n const isOpen = controlled ? open : internalOpen;\n\n const [ownerDocument, setOwnerDocument] = useState<Document | null>(null);\n\n const rootRef = useCallback((node: HTMLDivElement | null) => {\n setOwnerDocument(node?.ownerDocument ?? null);\n }, []);\n\n const changeOpen = useCallback(\n (nextOpen: boolean) => {\n if (!controlled) {\n setInternalOpen(nextOpen);\n }\n\n onOpenChange?.(nextOpen);\n },\n [controlled, onOpenChange],\n );\n\n useEffect(() => {\n if (shortcut === false || !ownerDocument) {\n return;\n }\n\n const view = ownerDocument.defaultView;\n\n if (!view) {\n return;\n }\n\n const handleGlobalKeyDown: EventListener = (event) => {\n if (!(event instanceof view.KeyboardEvent)) {\n return;\n }\n\n const keyboardEvent = event;\n\n if (\n keyboardEvent.defaultPrevented ||\n keyboardEvent.isComposing ||\n keyboardEvent.key.toLowerCase() !== shortcut.toLowerCase() ||\n !(keyboardEvent.metaKey || keyboardEvent.ctrlKey) ||\n keyboardEvent.shiftKey ||\n keyboardEvent.altKey\n ) {\n return;\n }\n\n const target = keyboardEvent.target;\n\n if (target instanceof view.HTMLElement) {\n const isEditable =\n target.isContentEditable ||\n target.closest(\n [\n \"input\",\n \"textarea\",\n \"select\",\n '[contenteditable=\"true\"]',\n '[role=\"textbox\"]',\n ].join(\", \"),\n ) !== null;\n\n if (isEditable) {\n return;\n }\n }\n\n keyboardEvent.preventDefault();\n changeOpen(!isOpen);\n };\n\n ownerDocument.addEventListener(\"keydown\", handleGlobalKeyDown);\n\n return () => {\n ownerDocument.removeEventListener(\"keydown\", handleGlobalKeyDown);\n };\n }, [ownerDocument, shortcut, isOpen, changeOpen]);\n\n return (\n <div ref={rootRef} data-command-dialog-root=\"\">\n <Dialog\n open={isOpen}\n onOpenChange={changeOpen}\n title={title}\n description={description}\n size=\"md\"\n closeButton={false}\n className=\"puzzle-command-dialog\"\n >\n <Command\n {...commandProps}\n commands={commands}\n autoFocus={isOpen}\n onSelect={(command) => {\n onSelect?.(command);\n changeOpen(false);\n }}\n />\n </Dialog>\n </div>\n );\n};\n\nexport {\n Command,\n CommandDialog,\n type CommandItem,\n type CommandProps,\n type CommandDialogProps,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CommandDialogProps, CommandItem, CommandProps } from "./command.types.cjs";
|
|
2
|
+
declare const Command: ({ commands, placeholder, label, emptyMessage, loading, loadingMessage, filter, onSelect, onQueryChange, query, defaultQuery, loop, autoFocus, className, ...props }: CommandProps) => import("react").JSX.Element;
|
|
3
|
+
declare const CommandDialog: ({ open, defaultOpen, onOpenChange, title, description, shortcut, commands, onSelect, ...commandProps }: CommandDialogProps) => import("react").JSX.Element;
|
|
4
|
+
export { Command, CommandDialog, type CommandDialogProps, type CommandItem, type CommandProps };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CommandDialogProps, CommandItem, CommandProps } from "./command.types.js";
|
|
2
|
+
declare const Command: ({ commands, placeholder, label, emptyMessage, loading, loadingMessage, filter, onSelect, onQueryChange, query, defaultQuery, loop, autoFocus, className, ...props }: CommandProps) => import("react").JSX.Element;
|
|
3
|
+
declare const CommandDialog: ({ open, defaultOpen, onOpenChange, title, description, shortcut, commands, onSelect, ...commandProps }: CommandDialogProps) => import("react").JSX.Element;
|
|
4
|
+
export { Command, CommandDialog, type CommandDialogProps, type CommandItem, type CommandProps };
|