@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,113 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "./stepper.css";
|
|
3
|
+
import { cn, resolveResponsiveValue } from "@puzzle-ui/core";
|
|
4
|
+
import { Children, isValidElement, useState } from "react";
|
|
5
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useRovingFocus } from "@puzzle-ui/hooks";
|
|
7
|
+
// src/components/forms/stepper/index.tsx
|
|
8
|
+
const StepperStep = (_props) => null;
|
|
9
|
+
const isStepperStep = (child) => isValidElement(child) && child.type === StepperStep;
|
|
10
|
+
const StepperRoot = ({ activeStep, activeStepId, defaultActiveStep = 0, defaultActiveStepId, onStepChange, onStepIdChange, orientation = "horizontal", clickable = false, linear = true, children, className, ...rootProps }) => {
|
|
11
|
+
const [uncontrolledActiveStep, setUncontrolledActiveStep] = useState(defaultActiveStep);
|
|
12
|
+
const [uncontrolledActiveStepId, setUncontrolledActiveStepId] = useState(defaultActiveStepId);
|
|
13
|
+
const orientations = resolveResponsiveValue(orientation);
|
|
14
|
+
const steps = Children.toArray(children).filter(isStepperStep);
|
|
15
|
+
const isIdSelection = activeStepId !== void 0 || defaultActiveStepId !== void 0;
|
|
16
|
+
const requestedActiveStepId = activeStepId ?? uncontrolledActiveStepId;
|
|
17
|
+
if (isIdSelection) {
|
|
18
|
+
const stepIds = /* @__PURE__ */ new Set();
|
|
19
|
+
for (const step of steps) {
|
|
20
|
+
const id = step.props.id;
|
|
21
|
+
if (id === void 0) throw new Error("Stepper ID-based selection requires an id on every step.");
|
|
22
|
+
const key = `${typeof id}:${id}`;
|
|
23
|
+
if (stepIds.has(key)) throw new Error("Stepper step IDs must be unique.");
|
|
24
|
+
stepIds.add(key);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const requestedActiveStep = activeStep ?? uncontrolledActiveStep;
|
|
28
|
+
const requestedActiveStepIndex = isIdSelection ? steps.findIndex((step) => step.props.id === requestedActiveStepId) : void 0;
|
|
29
|
+
if (isIdSelection && steps.length > 0 && requestedActiveStepIndex === -1) throw new Error("Stepper activeStepId must match an available step ID.");
|
|
30
|
+
const currentActiveStep = isIdSelection ? requestedActiveStepIndex ?? -1 : steps.length === 0 ? -1 : Number.isFinite(requestedActiveStep) ? Math.min(steps.length - 1, Math.max(0, Math.trunc(requestedActiveStep))) : 0;
|
|
31
|
+
const direction = rootProps.dir === "rtl" ? "rtl" : "ltr";
|
|
32
|
+
const focusItems = steps.map((step, index) => {
|
|
33
|
+
const selectable = clickable && !step.props.disabled && (!linear || index <= currentActiveStep);
|
|
34
|
+
return {
|
|
35
|
+
id: step.props.id === void 0 ? `index:${index}` : `${typeof step.props.id}:${step.props.id}`,
|
|
36
|
+
disabled: !selectable
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
const activeFocusId = currentActiveStep >= 0 ? focusItems[currentActiveStep]?.id : void 0;
|
|
40
|
+
const rovingFocus = useRovingFocus({
|
|
41
|
+
items: focusItems,
|
|
42
|
+
orientation: "both",
|
|
43
|
+
dir: direction,
|
|
44
|
+
initialActiveId: activeFocusId
|
|
45
|
+
});
|
|
46
|
+
return /* @__PURE__ */ jsx("ol", {
|
|
47
|
+
...rootProps,
|
|
48
|
+
className: cn("puzzle-stepper", className),
|
|
49
|
+
"data-orientation-mobile": orientations.mobile,
|
|
50
|
+
"data-orientation-tablet": orientations.tablet,
|
|
51
|
+
"data-orientation-desktop": orientations.desktop,
|
|
52
|
+
children: steps.map((step, index) => {
|
|
53
|
+
const { id, label, description, icon, completed: completedProp, error, disabled = false, optional, className: stepClassName } = step.props;
|
|
54
|
+
const state = error ? "error" : completedProp ?? index < currentActiveStep ? "completed" : index === currentActiveStep ? "active" : "upcoming";
|
|
55
|
+
const selectable = !disabled && (!linear || index <= currentActiveStep);
|
|
56
|
+
const focusId = id === void 0 ? `index:${index}` : `${typeof id}:${id}`;
|
|
57
|
+
const handleClick = () => {
|
|
58
|
+
if (!selectable || index === currentActiveStep) return;
|
|
59
|
+
if (isIdSelection) {
|
|
60
|
+
if (activeStepId === void 0) setUncontrolledActiveStepId(id);
|
|
61
|
+
} else if (activeStep === void 0) setUncontrolledActiveStep(index);
|
|
62
|
+
onStepChange?.(index);
|
|
63
|
+
if (isIdSelection && id !== void 0) onStepIdChange?.(id);
|
|
64
|
+
};
|
|
65
|
+
const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
66
|
+
className: "puzzle-stepper__indicator",
|
|
67
|
+
"data-has-icon": icon != null ? "true" : "false",
|
|
68
|
+
"aria-hidden": "true",
|
|
69
|
+
children: icon ?? (state === "completed" || state === "error" ? null : index + 1)
|
|
70
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
71
|
+
className: "puzzle-stepper__label",
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ jsx("span", {
|
|
74
|
+
className: "puzzle-stepper__label-text",
|
|
75
|
+
children: label
|
|
76
|
+
}),
|
|
77
|
+
description != null && /* @__PURE__ */ jsx("span", {
|
|
78
|
+
className: "puzzle-stepper__description",
|
|
79
|
+
children: description
|
|
80
|
+
}),
|
|
81
|
+
optional != null && /* @__PURE__ */ jsx("span", {
|
|
82
|
+
className: "puzzle-stepper__optional",
|
|
83
|
+
children: optional
|
|
84
|
+
})
|
|
85
|
+
]
|
|
86
|
+
})] });
|
|
87
|
+
return /* @__PURE__ */ jsx("li", {
|
|
88
|
+
className: cn("puzzle-stepper__item", stepClassName),
|
|
89
|
+
"data-state": state,
|
|
90
|
+
"data-disabled": disabled || clickable && !selectable ? "true" : void 0,
|
|
91
|
+
"aria-current": index === currentActiveStep ? "step" : void 0,
|
|
92
|
+
children: clickable ? /* @__PURE__ */ jsx("button", {
|
|
93
|
+
type: "button",
|
|
94
|
+
className: "puzzle-stepper__step",
|
|
95
|
+
disabled: !selectable,
|
|
96
|
+
ref: rovingFocus.getItemRef(focusId),
|
|
97
|
+
tabIndex: rovingFocus.getItemTabIndex(focusId, !selectable),
|
|
98
|
+
onFocus: () => rovingFocus.onItemFocus(focusId),
|
|
99
|
+
onKeyDown: (event) => rovingFocus.onItemKeyDown(event, focusId),
|
|
100
|
+
onClick: handleClick,
|
|
101
|
+
children: content
|
|
102
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
103
|
+
className: "puzzle-stepper__step",
|
|
104
|
+
children: content
|
|
105
|
+
})
|
|
106
|
+
}, id === void 0 ? step.key ?? index : `${typeof id}:${id}`);
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
const Stepper = Object.assign(StepperRoot, { Step: StepperStep });
|
|
111
|
+
export { Stepper };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/forms/stepper/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n cn,\n resolveResponsiveValue,\n type ResponsiveValue,\n} from \"@puzzle-ui/core\";\nimport { useRovingFocus } from \"@puzzle-ui/hooks\";\nimport {\n Children,\n isValidElement,\n useState,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport \"./stepper.css\";\n\ntype StepperOrientation = \"horizontal\" | \"vertical\";\n\ntype StepperStepProps = {\n /** Stable identifier, useful when steps are reordered. */\n id?: string | number;\n\n /** Visible label of the step. */\n label: ReactNode;\n\n /** Optional supporting text below the label. */\n description?: ReactNode;\n\n /** Custom indicator content. */\n icon?: ReactNode;\n\n /** Overrides the automatically calculated completed state. */\n completed?: boolean;\n\n /** Displays the step as an error. */\n error?: boolean;\n\n /** Prevents navigation to this step. */\n disabled?: boolean;\n\n /** Optional content displayed below the label. */\n optional?: ReactNode;\n\n /** Class applied to the step item. */\n className?: string;\n};\n\ntype StepperProps = Omit<ComponentPropsWithoutRef<\"ol\">, \"children\"> & {\n /** Active step index. Values are clamped to available steps. Defaults to 0. */\n activeStep?: number;\n\n /** Active step ID. Enables controlled ID-based selection. */\n activeStepId?: string | number;\n\n /** Initial active step for uncontrolled usage. Defaults to 0. */\n defaultActiveStep?: number;\n\n /** Initial active step ID for uncontrolled ID-based selection. */\n defaultActiveStepId?: string | number;\n\n /** Called when the active step changes. */\n onStepChange?: (step: number) => void;\n\n /** Called when an ID-based active step changes. */\n onStepIdChange?: (stepId: string | number) => void;\n\n /** Layout direction, optionally responsive. */\n orientation?: ResponsiveValue<StepperOrientation>;\n\n /** Allows users to select steps. Defaults to false. */\n clickable?: boolean;\n\n /** Prevents selecting steps ahead of the active step. Defaults to true. */\n linear?: boolean;\n\n children: ReactNode;\n};\n\nconst StepperStep = (_props: StepperStepProps) => null;\n\ntype StepperStepElement = ReactElement<StepperStepProps, typeof StepperStep>;\n\nconst isStepperStep = (child: ReactNode): child is StepperStepElement =>\n isValidElement<StepperStepProps>(child) && child.type === StepperStep;\n\nconst StepperRoot = ({\n activeStep,\n activeStepId,\n defaultActiveStep = 0,\n defaultActiveStepId,\n onStepChange,\n onStepIdChange,\n orientation = \"horizontal\",\n clickable = false,\n linear = true,\n children,\n className,\n ...rootProps\n}: StepperProps) => {\n const [uncontrolledActiveStep, setUncontrolledActiveStep] =\n useState(defaultActiveStep);\n const [uncontrolledActiveStepId, setUncontrolledActiveStepId] =\n useState(defaultActiveStepId);\n\n const orientations = resolveResponsiveValue(orientation);\n const steps = Children.toArray(children).filter(isStepperStep);\n const isIdSelection =\n activeStepId !== undefined || defaultActiveStepId !== undefined;\n const requestedActiveStepId = activeStepId ?? uncontrolledActiveStepId;\n\n if (isIdSelection) {\n const stepIds = new Set<string>();\n\n for (const step of steps) {\n const id = step.props.id;\n\n if (id === undefined) {\n throw new Error(\n \"Stepper ID-based selection requires an id on every step.\",\n );\n }\n\n const key = `${typeof id}:${id}`;\n\n if (stepIds.has(key)) {\n throw new Error(\"Stepper step IDs must be unique.\");\n }\n\n stepIds.add(key);\n }\n }\n\n const requestedActiveStep = activeStep ?? uncontrolledActiveStep;\n const requestedActiveStepIndex = isIdSelection\n ? steps.findIndex((step) => step.props.id === requestedActiveStepId)\n : undefined;\n\n if (\n isIdSelection &&\n steps.length > 0 &&\n requestedActiveStepIndex === -1\n ) {\n throw new Error(\"Stepper activeStepId must match an available step ID.\");\n }\n\n const currentActiveStep = isIdSelection\n ? (requestedActiveStepIndex ?? -1)\n : steps.length === 0\n ? -1\n : Number.isFinite(requestedActiveStep)\n ? Math.min(\n steps.length - 1,\n Math.max(0, Math.trunc(requestedActiveStep)),\n )\n : 0;\n const direction = rootProps.dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n const focusItems = steps.map((step, index) => {\n const selectable =\n clickable &&\n !step.props.disabled &&\n (!linear || index <= currentActiveStep);\n\n return {\n id:\n step.props.id === undefined\n ? `index:${index}`\n : `${typeof step.props.id}:${step.props.id}`,\n disabled: !selectable,\n };\n });\n\n const activeFocusId =\n currentActiveStep >= 0\n ? focusItems[currentActiveStep]?.id\n : undefined;\n const rovingFocus = useRovingFocus<HTMLButtonElement>({\n items: focusItems,\n orientation: \"both\",\n dir: direction,\n initialActiveId: activeFocusId,\n });\n\n return (\n <ol\n {...rootProps}\n className={cn(\"puzzle-stepper\", className)}\n data-orientation-mobile={orientations.mobile}\n data-orientation-tablet={orientations.tablet}\n data-orientation-desktop={orientations.desktop}\n >\n {steps.map((step, index) => {\n const {\n id,\n label,\n description,\n icon,\n completed: completedProp,\n error,\n disabled = false,\n optional,\n className: stepClassName,\n } = step.props;\n\n const completed = completedProp ?? index < currentActiveStep;\n\n const state = error\n ? \"error\"\n : completed\n ? \"completed\"\n : index === currentActiveStep\n ? \"active\"\n : \"upcoming\";\n\n const selectable = !disabled && (!linear || index <= currentActiveStep);\n const focusId =\n id === undefined ? `index:${index}` : `${typeof id}:${id}`;\n\n const handleClick = () => {\n if (!selectable || index === currentActiveStep) {\n return;\n }\n\n if (isIdSelection) {\n if (activeStepId === undefined) {\n setUncontrolledActiveStepId(id);\n }\n } else if (activeStep === undefined) {\n setUncontrolledActiveStep(index);\n }\n\n onStepChange?.(index);\n if (isIdSelection && id !== undefined) {\n onStepIdChange?.(id);\n }\n };\n\n const content = (\n <>\n <span\n className=\"puzzle-stepper__indicator\"\n data-has-icon={icon != null ? \"true\" : \"false\"}\n aria-hidden=\"true\"\n >\n {icon ??\n (state === \"completed\" || state === \"error\" ? null : index + 1)}\n </span>\n\n <span className=\"puzzle-stepper__label\">\n <span className=\"puzzle-stepper__label-text\">{label}</span>\n\n {description != null && (\n <span className=\"puzzle-stepper__description\">\n {description}\n </span>\n )}\n\n {optional != null && (\n <span className=\"puzzle-stepper__optional\">{optional}</span>\n )}\n </span>\n </>\n );\n\n return (\n <li\n key={\n id === undefined ? (step.key ?? index) : `${typeof id}:${id}`\n }\n className={cn(\"puzzle-stepper__item\", stepClassName)}\n data-state={state}\n data-disabled={\n disabled || (clickable && !selectable) ? \"true\" : undefined\n }\n aria-current={index === currentActiveStep ? \"step\" : undefined}\n >\n {clickable ? (\n <button\n type=\"button\"\n className=\"puzzle-stepper__step\"\n disabled={!selectable}\n ref={rovingFocus.getItemRef(focusId)}\n tabIndex={rovingFocus.getItemTabIndex(focusId, !selectable)}\n onFocus={() => rovingFocus.onItemFocus(focusId)}\n onKeyDown={(event) =>\n rovingFocus.onItemKeyDown(event, focusId)\n }\n onClick={handleClick}\n >\n {content}\n </button>\n ) : (\n <div className=\"puzzle-stepper__step\">{content}</div>\n )}\n </li>\n );\n })}\n </ol>\n );\n};\n\nconst Stepper = Object.assign(StepperRoot, {\n Step: StepperStep,\n});\n\nexport {\n Stepper,\n type StepperProps,\n type StepperStepProps,\n type StepperOrientation,\n};\n"],"mappings":";;;;;;;AAgFA,MAAM,eAAe,WAA6B;AAIlD,MAAM,iBAAiB,UACrB,eAAiC,KAAK,KAAK,MAAM,SAAS;AAE5D,MAAM,eAAe,EACnB,YACA,cACA,oBAAoB,GACpB,qBACA,cACA,gBACA,cAAc,cACd,YAAY,OACZ,SAAS,MACT,UACA,WACA,GAAG,gBACe;CAClB,MAAM,CAAC,wBAAwB,6BAC7B,SAAS,iBAAiB;CAC5B,MAAM,CAAC,0BAA0B,+BAC/B,SAAS,mBAAmB;CAE9B,MAAM,eAAe,uBAAuB,WAAW;CACvD,MAAM,QAAQ,SAAS,QAAQ,QAAQ,CAAC,CAAC,OAAO,aAAa;CAC7D,MAAM,gBACJ,iBAAiB,KAAA,KAAa,wBAAwB,KAAA;CACxD,MAAM,wBAAwB,gBAAgB;CAE9C,IAAI,eAAe;EACjB,MAAM,0BAAU,IAAI,IAAY;EAEhC,KAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,KAAK,KAAK,MAAM;GAEtB,IAAI,OAAO,KAAA,GACT,MAAM,IAAI,MACR,0DACF;GAGF,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;GAE5B,IAAI,QAAQ,IAAI,GAAG,GACjB,MAAM,IAAI,MAAM,kCAAkC;GAGpD,QAAQ,IAAI,GAAG;EACjB;CACF;CAEA,MAAM,sBAAsB,cAAc;CAC1C,MAAM,2BAA2B,gBAC7B,MAAM,WAAW,SAAS,KAAK,MAAM,OAAO,qBAAqB,IACjE,KAAA;CAEJ,IACE,iBACA,MAAM,SAAS,KACf,6BAA6B,IAE7B,MAAM,IAAI,MAAM,uDAAuD;CAGzE,MAAM,oBAAoB,gBACrB,4BAA4B,KAC7B,MAAM,WAAW,IACf,KACA,OAAO,SAAS,mBAAmB,IACjC,KAAK,IACH,MAAM,SAAS,GACf,KAAK,IAAI,GAAG,KAAK,MAAM,mBAAmB,CAAC,CAC7C,IACA;CACR,MAAM,YAAY,UAAU,QAAQ,QAAQ,QAAQ;CAEpD,MAAM,aAAa,MAAM,KAAK,MAAM,UAAU;EAC5C,MAAM,aACJ,aACA,CAAC,KAAK,MAAM,aACX,CAAC,UAAU,SAAS;EAEvB,OAAO;GACL,IACE,KAAK,MAAM,OAAO,KAAA,IACd,SAAS,UACT,GAAG,OAAO,KAAK,MAAM,GAAG,GAAG,KAAK,MAAM;GAC5C,UAAU,CAAC;EACb;CACF,CAAC;CAED,MAAM,gBACJ,qBAAqB,IACjB,WAAW,kBAAkB,EAAE,KAC/B,KAAA;CACN,MAAM,cAAc,eAAkC;EACpD,OAAO;EACP,aAAa;EACb,KAAK;EACL,iBAAiB;CACnB,CAAC;CAED,OACE,oBAAC,MAAD;EACE,GAAI;EACJ,WAAW,GAAG,kBAAkB,SAAS;EACzC,2BAAyB,aAAa;EACtC,2BAAyB,aAAa;EACtC,4BAA0B,aAAa;EAEtC,UAAA,MAAM,KAAK,MAAM,UAAU;GAC1B,MAAM,EACJ,IACA,OACA,aACA,MACA,WAAW,eACX,OACA,WAAW,OACX,UACA,WAAW,kBACT,KAAK;GAIT,MAAM,QAAQ,QACV,UAHc,iBAAiB,QAAQ,oBAKrC,cACA,UAAU,oBACR,WACA;GAER,MAAM,aAAa,CAAC,aAAa,CAAC,UAAU,SAAS;GACrD,MAAM,UACJ,OAAO,KAAA,IAAY,SAAS,UAAU,GAAG,OAAO,GAAG,GAAG;GAExD,MAAM,oBAAoB;IACxB,IAAI,CAAC,cAAc,UAAU,mBAC3B;IAGF,IAAI,eACE;SAAA,iBAAiB,KAAA,GACnB,4BAA4B,EAAE;IAAA,OAE3B,IAAI,eAAe,KAAA,GACxB,0BAA0B,KAAK;IAGjC,eAAe,KAAK;IACpB,IAAI,iBAAiB,OAAO,KAAA,GAC1B,iBAAiB,EAAE;GAEvB;GAEA,MAAM,UACJ,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;IACE,WAAU;IACV,iBAAe,QAAQ,OAAO,SAAS;IACvC,eAAY;IAEX,UAAA,SACE,UAAU,eAAe,UAAU,UAAU,OAAO,QAAQ;GAC3D,CAAA,GAEN,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA;KACE,oBAAC,QAAD;MAAM,WAAU;MAA8B,UAAA;KAAY,CAAA;KAEzD,eAAe,QACd,oBAAC,QAAD;MAAM,WAAU;MACb,UAAA;KACG,CAAA;KAGP,YAAY,QACX,oBAAC,QAAD;MAAM,WAAU;MAA4B,UAAA;KAAe,CAAA;IAEzD;GACN,CAAA,CAAA,EAAA,CAAA;GAGJ,OACE,oBAAC,MAAD;IAIE,WAAW,GAAG,wBAAwB,aAAa;IACnD,cAAY;IACZ,iBACE,YAAa,aAAa,CAAC,aAAc,SAAS,KAAA;IAEpD,gBAAc,UAAU,oBAAoB,SAAS,KAAA;IAEpD,UAAA,YACC,oBAAC,UAAD;KACE,MAAK;KACL,WAAU;KACV,UAAU,CAAC;KACX,KAAK,YAAY,WAAW,OAAO;KACnC,UAAU,YAAY,gBAAgB,SAAS,CAAC,UAAU;KAC1D,eAAe,YAAY,YAAY,OAAO;KAC9C,YAAY,UACV,YAAY,cAAc,OAAO,OAAO;KAE1C,SAAS;KAER,UAAA;IACK,CAAA,IAER,oBAAC,OAAD;KAAK,WAAU;KAAwB,UAAA;IAAa,CAAA;GAEpD,GA3BA,OAAO,KAAA,IAAa,KAAK,OAAO,QAAS,GAAG,OAAO,GAAG,GAAG,IA2BzD;EAER,CAAC;CACC,CAAA;AAER;AAEA,MAAM,UAAU,OAAO,OAAO,aAAa,EACzC,MAAM,YACR,CAAC"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
.puzzle-stepper {
|
|
2
|
+
--puzzle-stepper-indicator-size: 2rem;
|
|
3
|
+
flex-direction: var(--puzzle-stepper-direction, row);
|
|
4
|
+
min-width: 0;
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: 0;
|
|
7
|
+
list-style: none;
|
|
8
|
+
display: flex;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.puzzle-stepper__item {
|
|
12
|
+
flex: var(--puzzle-stepper-item-flex, 1 1 0);
|
|
13
|
+
min-width: 0;
|
|
14
|
+
padding-block-end: var(--puzzle-stepper-item-padding, 0);
|
|
15
|
+
display: flex;
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.puzzle-stepper__item:not(:last-child):after {
|
|
20
|
+
z-index: 0;
|
|
21
|
+
content: "";
|
|
22
|
+
background: var(--puzzle-color-border);
|
|
23
|
+
inline-size: var(--puzzle-stepper-connector-inline-size, auto);
|
|
24
|
+
block-size: var(--puzzle-stepper-connector-block-size, 2px);
|
|
25
|
+
position: absolute;
|
|
26
|
+
inset-block-start: var(--puzzle-stepper-connector-block-start, calc(var(--puzzle-stepper-indicator-size) / 2 - 1px));
|
|
27
|
+
inset-block-end: var(--puzzle-stepper-connector-block-end, auto);
|
|
28
|
+
inset-inline-start: var(--puzzle-stepper-connector-inline-start, calc(50% + var(--puzzle-stepper-indicator-size) / 2));
|
|
29
|
+
inset-inline-end: var(--puzzle-stepper-connector-inline-end, calc(-50% + var(--puzzle-stepper-indicator-size) / 2));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.puzzle-stepper__item[data-state="completed"]:after {
|
|
33
|
+
background: var(--puzzle-color-success);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.puzzle-stepper__step {
|
|
37
|
+
z-index: 1;
|
|
38
|
+
flex-direction: var(--puzzle-stepper-step-direction, column);
|
|
39
|
+
align-items: var(--puzzle-stepper-step-align, center);
|
|
40
|
+
gap: var(--puzzle-space-2, .5rem);
|
|
41
|
+
width: 100%;
|
|
42
|
+
min-width: 0;
|
|
43
|
+
color: inherit;
|
|
44
|
+
font: inherit;
|
|
45
|
+
text-align: var(--puzzle-stepper-step-text-align, center);
|
|
46
|
+
background: none;
|
|
47
|
+
border: 0;
|
|
48
|
+
padding: 0;
|
|
49
|
+
display: flex;
|
|
50
|
+
position: relative;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.puzzle-stepper__indicator {
|
|
54
|
+
flex: 0 0 var(--puzzle-stepper-indicator-size);
|
|
55
|
+
width: var(--puzzle-stepper-indicator-size);
|
|
56
|
+
height: var(--puzzle-stepper-indicator-size);
|
|
57
|
+
border: var(--puzzle-border-width, 1px) solid var(--puzzle-color-border-strong, var(--puzzle-color-border));
|
|
58
|
+
border-radius: var(--puzzle-radius-full, 9999px);
|
|
59
|
+
background: var(--puzzle-color-surface);
|
|
60
|
+
color: var(--puzzle-color-text-muted);
|
|
61
|
+
font-size: var(--puzzle-font-size-body2, .875rem);
|
|
62
|
+
font-weight: var(--puzzle-font-weight-medium, 500);
|
|
63
|
+
transition: background-color var(--puzzle-duration-fast, .15s) ease,
|
|
64
|
+
border-color var(--puzzle-duration-fast, .15s) ease,
|
|
65
|
+
color var(--puzzle-duration-fast, .15s) ease;
|
|
66
|
+
place-items: center;
|
|
67
|
+
line-height: 1;
|
|
68
|
+
display: grid;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.puzzle-stepper__item[data-state="active"] .puzzle-stepper__indicator {
|
|
72
|
+
border-color: var(--puzzle-color-primary);
|
|
73
|
+
background: var(--puzzle-color-primary);
|
|
74
|
+
color: var(--puzzle-color-primary-foreground);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.puzzle-stepper__item[data-state="completed"] .puzzle-stepper__indicator {
|
|
78
|
+
border-color: var(--puzzle-color-success);
|
|
79
|
+
background: var(--puzzle-color-success);
|
|
80
|
+
color: var(--puzzle-color-success-foreground);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.puzzle-stepper__item[data-state="error"] .puzzle-stepper__indicator {
|
|
84
|
+
border-color: var(--puzzle-color-danger);
|
|
85
|
+
background: var(--puzzle-color-danger);
|
|
86
|
+
color: var(--puzzle-color-danger-foreground);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.puzzle-stepper__item[data-state="completed"] .puzzle-stepper__indicator[data-has-icon="false"]:after {
|
|
90
|
+
content: "";
|
|
91
|
+
border-block-end: 2px solid;
|
|
92
|
+
border-inline-end: 2px solid;
|
|
93
|
+
width: .375rem;
|
|
94
|
+
height: .625rem;
|
|
95
|
+
transform: translateY(-.1rem) rotate(45deg);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.puzzle-stepper__item[data-state="error"] .puzzle-stepper__indicator[data-has-icon="false"]:after {
|
|
99
|
+
content: "!";
|
|
100
|
+
font-weight: 700;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.puzzle-stepper__label {
|
|
104
|
+
gap: var(--puzzle-space-1, .25rem);
|
|
105
|
+
flex-direction: column;
|
|
106
|
+
min-width: 0;
|
|
107
|
+
display: flex;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.puzzle-stepper__label-text {
|
|
111
|
+
color: var(--puzzle-color-text);
|
|
112
|
+
font-size: var(--puzzle-font-size-body2, .875rem);
|
|
113
|
+
font-weight: var(--puzzle-font-weight-medium, 500);
|
|
114
|
+
line-height: var(--puzzle-font-line-height-body2, 1.4);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.puzzle-stepper__item[data-state="active"] .puzzle-stepper__label-text {
|
|
118
|
+
font-weight: var(--puzzle-font-weight-semibold, 600);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.puzzle-stepper__item[data-state="upcoming"] .puzzle-stepper__label-text {
|
|
122
|
+
color: var(--puzzle-color-text-muted);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.puzzle-stepper__item[data-state="error"] .puzzle-stepper__label-text {
|
|
126
|
+
color: var(--puzzle-color-danger);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.puzzle-stepper__description, .puzzle-stepper__optional {
|
|
130
|
+
color: var(--puzzle-color-text-subtle);
|
|
131
|
+
font-size: var(--puzzle-font-size-caption, .75rem);
|
|
132
|
+
line-height: var(--puzzle-font-line-height-caption, 1.4);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.puzzle-stepper__item[data-disabled="true"] .puzzle-stepper__label {
|
|
136
|
+
opacity: .6;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
button.puzzle-stepper__step {
|
|
140
|
+
cursor: pointer;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
button.puzzle-stepper__step:disabled {
|
|
144
|
+
cursor: not-allowed;
|
|
145
|
+
opacity: .6;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
button.puzzle-stepper__step:not(:disabled):hover .puzzle-stepper__label-text {
|
|
149
|
+
color: var(--puzzle-color-primary);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
button.puzzle-stepper__step:focus-visible {
|
|
153
|
+
border-radius: var(--puzzle-radius-sm, .25rem);
|
|
154
|
+
outline: 2px solid var(--puzzle-color-ring);
|
|
155
|
+
outline-offset: 4px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.puzzle-stepper[data-orientation-mobile="vertical"] {
|
|
159
|
+
--puzzle-stepper-direction: column;
|
|
160
|
+
--puzzle-stepper-item-flex: 0 0 auto;
|
|
161
|
+
--puzzle-stepper-item-padding: var(--puzzle-space-6, 1.5rem);
|
|
162
|
+
--puzzle-stepper-step-direction: row;
|
|
163
|
+
--puzzle-stepper-step-align: flex-start;
|
|
164
|
+
--puzzle-stepper-step-text-align: start;
|
|
165
|
+
--puzzle-stepper-connector-block-start: var(--puzzle-stepper-indicator-size);
|
|
166
|
+
--puzzle-stepper-connector-block-end: calc(var(--puzzle-stepper-indicator-size) / -2);
|
|
167
|
+
--puzzle-stepper-connector-inline-start: calc(var(--puzzle-stepper-indicator-size) / 2 - 1px);
|
|
168
|
+
--puzzle-stepper-connector-inline-end: auto;
|
|
169
|
+
--puzzle-stepper-connector-inline-size: 2px;
|
|
170
|
+
--puzzle-stepper-connector-block-size: auto;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@media (width >= 768px) {
|
|
174
|
+
.puzzle-stepper:not([data-orientation-tablet="vertical"]) {
|
|
175
|
+
--puzzle-stepper-direction: initial;
|
|
176
|
+
--puzzle-stepper-item-flex: initial;
|
|
177
|
+
--puzzle-stepper-item-padding: initial;
|
|
178
|
+
--puzzle-stepper-step-direction: initial;
|
|
179
|
+
--puzzle-stepper-step-align: initial;
|
|
180
|
+
--puzzle-stepper-step-text-align: initial;
|
|
181
|
+
--puzzle-stepper-connector-block-start: initial;
|
|
182
|
+
--puzzle-stepper-connector-block-end: initial;
|
|
183
|
+
--puzzle-stepper-connector-inline-start: initial;
|
|
184
|
+
--puzzle-stepper-connector-inline-end: initial;
|
|
185
|
+
--puzzle-stepper-connector-inline-size: initial;
|
|
186
|
+
--puzzle-stepper-connector-block-size: initial;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.puzzle-stepper[data-orientation-tablet="vertical"] {
|
|
190
|
+
--puzzle-stepper-direction: column;
|
|
191
|
+
--puzzle-stepper-item-flex: 0 0 auto;
|
|
192
|
+
--puzzle-stepper-item-padding: var(--puzzle-space-6, 1.5rem);
|
|
193
|
+
--puzzle-stepper-step-direction: row;
|
|
194
|
+
--puzzle-stepper-step-align: flex-start;
|
|
195
|
+
--puzzle-stepper-step-text-align: start;
|
|
196
|
+
--puzzle-stepper-connector-block-start: var(--puzzle-stepper-indicator-size);
|
|
197
|
+
--puzzle-stepper-connector-block-end: calc(var(--puzzle-stepper-indicator-size) / -2);
|
|
198
|
+
--puzzle-stepper-connector-inline-start: calc(var(--puzzle-stepper-indicator-size) / 2 - 1px);
|
|
199
|
+
--puzzle-stepper-connector-inline-end: auto;
|
|
200
|
+
--puzzle-stepper-connector-inline-size: 2px;
|
|
201
|
+
--puzzle-stepper-connector-block-size: auto;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@media (width >= 1024px) {
|
|
206
|
+
.puzzle-stepper:not([data-orientation-desktop="vertical"]) {
|
|
207
|
+
--puzzle-stepper-direction: initial;
|
|
208
|
+
--puzzle-stepper-item-flex: initial;
|
|
209
|
+
--puzzle-stepper-item-padding: initial;
|
|
210
|
+
--puzzle-stepper-step-direction: initial;
|
|
211
|
+
--puzzle-stepper-step-align: initial;
|
|
212
|
+
--puzzle-stepper-step-text-align: initial;
|
|
213
|
+
--puzzle-stepper-connector-block-start: initial;
|
|
214
|
+
--puzzle-stepper-connector-block-end: initial;
|
|
215
|
+
--puzzle-stepper-connector-inline-start: initial;
|
|
216
|
+
--puzzle-stepper-connector-inline-end: initial;
|
|
217
|
+
--puzzle-stepper-connector-inline-size: initial;
|
|
218
|
+
--puzzle-stepper-connector-block-size: initial;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.puzzle-stepper[data-orientation-desktop="vertical"] {
|
|
222
|
+
--puzzle-stepper-direction: column;
|
|
223
|
+
--puzzle-stepper-item-flex: 0 0 auto;
|
|
224
|
+
--puzzle-stepper-item-padding: var(--puzzle-space-6, 1.5rem);
|
|
225
|
+
--puzzle-stepper-step-direction: row;
|
|
226
|
+
--puzzle-stepper-step-align: flex-start;
|
|
227
|
+
--puzzle-stepper-step-text-align: start;
|
|
228
|
+
--puzzle-stepper-connector-block-start: var(--puzzle-stepper-indicator-size);
|
|
229
|
+
--puzzle-stepper-connector-block-end: calc(var(--puzzle-stepper-indicator-size) / -2);
|
|
230
|
+
--puzzle-stepper-connector-inline-start: calc(var(--puzzle-stepper-indicator-size) / 2 - 1px);
|
|
231
|
+
--puzzle-stepper-connector-inline-end: auto;
|
|
232
|
+
--puzzle-stepper-connector-inline-size: 2px;
|
|
233
|
+
--puzzle-stepper-connector-block-size: auto;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@media (prefers-reduced-motion: reduce) {
|
|
238
|
+
.puzzle-stepper__indicator {
|
|
239
|
+
transition: none;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
;/* empty css */
|
|
3
|
+
let _puzzle_ui_core = require("@puzzle-ui/core");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
// src/components/forms/switch/index.tsx
|
|
7
|
+
const Switch = ({ size = "md", label, description, checked, defaultChecked, disabled = false, required = false, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }) => {
|
|
8
|
+
const generatedId = (0, react.useId)();
|
|
9
|
+
const inputId = id ?? (description != null ? generatedId : void 0);
|
|
10
|
+
const descriptionId = description != null ? `${inputId ?? generatedId}-description` : void 0;
|
|
11
|
+
const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
|
|
12
|
+
const classes = (0, _puzzle_ui_core.cn)("puzzle-switch", `puzzle-switch--${size}`, disabled && "puzzle-switch--disabled", className);
|
|
13
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
14
|
+
className: classes,
|
|
15
|
+
children: [
|
|
16
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
17
|
+
...rest,
|
|
18
|
+
id: inputId,
|
|
19
|
+
className: "puzzle-switch__input",
|
|
20
|
+
type: "checkbox",
|
|
21
|
+
role: "switch",
|
|
22
|
+
...checked !== void 0 ? { checked } : defaultChecked !== void 0 ? { defaultChecked } : {},
|
|
23
|
+
disabled,
|
|
24
|
+
required,
|
|
25
|
+
"aria-describedby": describedBy,
|
|
26
|
+
onChange
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
29
|
+
className: "puzzle-switch__control",
|
|
30
|
+
"aria-hidden": "true"
|
|
31
|
+
}),
|
|
32
|
+
(label != null || description != null) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
33
|
+
className: (0, _puzzle_ui_core.cn)("puzzle-switch__content", label == null && "puzzle-switch__content--description-only"),
|
|
34
|
+
children: [label, description != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
35
|
+
id: descriptionId,
|
|
36
|
+
className: "puzzle-switch__description",
|
|
37
|
+
children: description
|
|
38
|
+
})]
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.Switch = Switch;
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["useId","cn"],"sources":["../../../../src/components/forms/switch/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from \"react\";\n\nimport { cn } from \"@puzzle-ui/core\";\n\nimport \"./switch.css\";\n\ntype SwitchSize = \"sm\" | \"md\";\n\ntype SwitchProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\" | \"children\" | \"onChange\"\n> & {\n size?: SwitchSize;\n label?: ReactNode;\n description?: ReactNode;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n className?: string;\n};\n\nconst Switch = ({\n size = \"md\",\n label,\n description,\n checked,\n defaultChecked,\n disabled = false,\n required = false,\n className,\n id,\n onChange,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: SwitchProps) => {\n const generatedId = useId();\n\n const inputId = id ?? (description != null ? generatedId : undefined);\n const descriptionId =\n description != null ? `${inputId ?? generatedId}-description` : undefined;\n\n const describedBy =\n [ariaDescribedBy, descriptionId].filter(Boolean).join(\" \") || undefined;\n\n const classes = cn(\n \"puzzle-switch\",\n `puzzle-switch--${size}`,\n disabled && \"puzzle-switch--disabled\",\n className,\n );\n\n return (\n <label className={classes}>\n <input\n {...rest}\n id={inputId}\n className=\"puzzle-switch__input\"\n type=\"checkbox\"\n role=\"switch\"\n {...(checked !== undefined\n ? { checked }\n : defaultChecked !== undefined\n ? { defaultChecked }\n : {})}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n onChange={onChange}\n />\n\n <span className=\"puzzle-switch__control\" aria-hidden=\"true\" />\n\n {(label != null || description != null) && (\n <span\n className={cn(\n \"puzzle-switch__content\",\n label == null && \"puzzle-switch__content--description-only\",\n )}\n >\n {label}\n\n {description != null && (\n <span id={descriptionId} className=\"puzzle-switch__description\">\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n};\n\nexport { Switch, type SwitchProps, type SwitchSize };\n"],"mappings":";;;;;;AAsBA,MAAM,UAAU,EACd,OAAO,MACP,OACA,aACA,SACA,gBACA,WAAW,OACX,WAAW,OACX,WACA,IACA,UACA,oBAAoB,iBACpB,GAAG,WACc;CACjB,MAAM,eAAA,GAAcA,MAAAA,MAAAA,CAAM;CAE1B,MAAM,UAAU,OAAO,eAAe,OAAO,cAAc,KAAA;CAC3D,MAAM,gBACJ,eAAe,OAAO,GAAG,WAAW,YAAY,gBAAgB,KAAA;CAElE,MAAM,cACJ,CAAC,iBAAiB,aAAa,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CAEhE,MAAM,WAAA,GAAUC,gBAAAA,GAAAA,CACd,iBACA,kBAAkB,QAClB,YAAY,2BACZ,SACF;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,SAAD;EAAO,WAAW;EAAlB,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;IACE,GAAI;IACJ,IAAI;IACJ,WAAU;IACV,MAAK;IACL,MAAK;IACL,GAAK,YAAY,KAAA,IACb,EAAE,QAAQ,IACV,mBAAmB,KAAA,IACjB,EAAE,eAAe,IACjB,CAAC;IACG;IACA;IACV,oBAAkB;IACR;GACX,CAAA;GAED,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAU;IAAyB,eAAY;GAAQ,CAAA;IAE3D,SAAS,QAAQ,eAAe,SAChC,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;IACE,YAAA,GAAWA,gBAAAA,GAAAA,CACT,0BACA,SAAS,QAAQ,0CACnB;IAJF,UAAA,CAMG,OAEA,eAAe,QACd,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,IAAI;KAAe,WAAU;KAChC,UAAA;IACG,CAAA,CAEJ;;EAEH;;AAEX"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChangeEventHandler, InputHTMLAttributes, ReactNode } from "react";
|
|
2
|
+
type SwitchSize = "sm" | "md";
|
|
3
|
+
type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "size" | "children" | "onChange"> & {
|
|
4
|
+
size?: SwitchSize;
|
|
5
|
+
label?: ReactNode;
|
|
6
|
+
description?: ReactNode;
|
|
7
|
+
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const Switch: ({ size, label, description, checked, defaultChecked, disabled, required, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }: SwitchProps) => import("react").JSX.Element;
|
|
11
|
+
export { Switch, type SwitchProps, type SwitchSize };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChangeEventHandler, InputHTMLAttributes, ReactNode } from "react";
|
|
2
|
+
type SwitchSize = "sm" | "md";
|
|
3
|
+
type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "size" | "children" | "onChange"> & {
|
|
4
|
+
size?: SwitchSize;
|
|
5
|
+
label?: ReactNode;
|
|
6
|
+
description?: ReactNode;
|
|
7
|
+
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const Switch: ({ size, label, description, checked, defaultChecked, disabled, required, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }: SwitchProps) => import("react").JSX.Element;
|
|
11
|
+
export { Switch, type SwitchProps, type SwitchSize };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "./switch.css";
|
|
3
|
+
import { cn } from "@puzzle-ui/core";
|
|
4
|
+
import { useId } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
// src/components/forms/switch/index.tsx
|
|
7
|
+
const Switch = ({ size = "md", label, description, checked, defaultChecked, disabled = false, required = false, className, id, onChange, "aria-describedby": ariaDescribedBy, ...rest }) => {
|
|
8
|
+
const generatedId = useId();
|
|
9
|
+
const inputId = id ?? (description != null ? generatedId : void 0);
|
|
10
|
+
const descriptionId = description != null ? `${inputId ?? generatedId}-description` : void 0;
|
|
11
|
+
const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
|
|
12
|
+
const classes = cn("puzzle-switch", `puzzle-switch--${size}`, disabled && "puzzle-switch--disabled", className);
|
|
13
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
14
|
+
className: classes,
|
|
15
|
+
children: [
|
|
16
|
+
/* @__PURE__ */ jsx("input", {
|
|
17
|
+
...rest,
|
|
18
|
+
id: inputId,
|
|
19
|
+
className: "puzzle-switch__input",
|
|
20
|
+
type: "checkbox",
|
|
21
|
+
role: "switch",
|
|
22
|
+
...checked !== void 0 ? { checked } : defaultChecked !== void 0 ? { defaultChecked } : {},
|
|
23
|
+
disabled,
|
|
24
|
+
required,
|
|
25
|
+
"aria-describedby": describedBy,
|
|
26
|
+
onChange
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ jsx("span", {
|
|
29
|
+
className: "puzzle-switch__control",
|
|
30
|
+
"aria-hidden": "true"
|
|
31
|
+
}),
|
|
32
|
+
(label != null || description != null) && /* @__PURE__ */ jsxs("span", {
|
|
33
|
+
className: cn("puzzle-switch__content", label == null && "puzzle-switch__content--description-only"),
|
|
34
|
+
children: [label, description != null && /* @__PURE__ */ jsx("span", {
|
|
35
|
+
id: descriptionId,
|
|
36
|
+
className: "puzzle-switch__description",
|
|
37
|
+
children: description
|
|
38
|
+
})]
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
export { Switch };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/forms/switch/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from \"react\";\n\nimport { cn } from \"@puzzle-ui/core\";\n\nimport \"./switch.css\";\n\ntype SwitchSize = \"sm\" | \"md\";\n\ntype SwitchProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\" | \"children\" | \"onChange\"\n> & {\n size?: SwitchSize;\n label?: ReactNode;\n description?: ReactNode;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n className?: string;\n};\n\nconst Switch = ({\n size = \"md\",\n label,\n description,\n checked,\n defaultChecked,\n disabled = false,\n required = false,\n className,\n id,\n onChange,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: SwitchProps) => {\n const generatedId = useId();\n\n const inputId = id ?? (description != null ? generatedId : undefined);\n const descriptionId =\n description != null ? `${inputId ?? generatedId}-description` : undefined;\n\n const describedBy =\n [ariaDescribedBy, descriptionId].filter(Boolean).join(\" \") || undefined;\n\n const classes = cn(\n \"puzzle-switch\",\n `puzzle-switch--${size}`,\n disabled && \"puzzle-switch--disabled\",\n className,\n );\n\n return (\n <label className={classes}>\n <input\n {...rest}\n id={inputId}\n className=\"puzzle-switch__input\"\n type=\"checkbox\"\n role=\"switch\"\n {...(checked !== undefined\n ? { checked }\n : defaultChecked !== undefined\n ? { defaultChecked }\n : {})}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n onChange={onChange}\n />\n\n <span className=\"puzzle-switch__control\" aria-hidden=\"true\" />\n\n {(label != null || description != null) && (\n <span\n className={cn(\n \"puzzle-switch__content\",\n label == null && \"puzzle-switch__content--description-only\",\n )}\n >\n {label}\n\n {description != null && (\n <span id={descriptionId} className=\"puzzle-switch__description\">\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n};\n\nexport { Switch, type SwitchProps, type SwitchSize };\n"],"mappings":";;;;;;AAsBA,MAAM,UAAU,EACd,OAAO,MACP,OACA,aACA,SACA,gBACA,WAAW,OACX,WAAW,OACX,WACA,IACA,UACA,oBAAoB,iBACpB,GAAG,WACc;CACjB,MAAM,cAAc,MAAM;CAE1B,MAAM,UAAU,OAAO,eAAe,OAAO,cAAc,KAAA;CAC3D,MAAM,gBACJ,eAAe,OAAO,GAAG,WAAW,YAAY,gBAAgB,KAAA;CAElE,MAAM,cACJ,CAAC,iBAAiB,aAAa,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CAEhE,MAAM,UAAU,GACd,iBACA,kBAAkB,QAClB,YAAY,2BACZ,SACF;CAEA,OACE,qBAAC,SAAD;EAAO,WAAW;EAAlB,UAAA;GACE,oBAAC,SAAD;IACE,GAAI;IACJ,IAAI;IACJ,WAAU;IACV,MAAK;IACL,MAAK;IACL,GAAK,YAAY,KAAA,IACb,EAAE,QAAQ,IACV,mBAAmB,KAAA,IACjB,EAAE,eAAe,IACjB,CAAC;IACG;IACA;IACV,oBAAkB;IACR;GACX,CAAA;GAED,oBAAC,QAAD;IAAM,WAAU;IAAyB,eAAY;GAAQ,CAAA;IAE3D,SAAS,QAAQ,eAAe,SAChC,qBAAC,QAAD;IACE,WAAW,GACT,0BACA,SAAS,QAAQ,0CACnB;IAJF,UAAA,CAMG,OAEA,eAAe,QACd,oBAAC,QAAD;KAAM,IAAI;KAAe,WAAU;KAChC,UAAA;IACG,CAAA,CAEJ;;EAEH;;AAEX"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
.puzzle-switch {
|
|
2
|
+
--puzzle-switch-width: 2.5rem;
|
|
3
|
+
--puzzle-switch-height: 1.375rem;
|
|
4
|
+
--puzzle-switch-thumb-size: 1rem;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: var(--puzzle-space-3, .75rem);
|
|
7
|
+
width: fit-content;
|
|
8
|
+
color: var(--puzzle-color-text);
|
|
9
|
+
cursor: pointer;
|
|
10
|
+
user-select: none;
|
|
11
|
+
-webkit-tap-highlight-color: transparent;
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
position: relative;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.puzzle-switch--sm {
|
|
17
|
+
--puzzle-switch-width: 2rem;
|
|
18
|
+
--puzzle-switch-height: 1.125rem;
|
|
19
|
+
--puzzle-switch-thumb-size: .75rem;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.puzzle-switch--disabled {
|
|
23
|
+
cursor: not-allowed;
|
|
24
|
+
opacity: .6;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.puzzle-switch__input {
|
|
28
|
+
clip: rect(0, 0, 0, 0);
|
|
29
|
+
clip-path: inset(50%);
|
|
30
|
+
white-space: nowrap;
|
|
31
|
+
border: 0;
|
|
32
|
+
width: 1px;
|
|
33
|
+
height: 1px;
|
|
34
|
+
margin: -1px;
|
|
35
|
+
padding: 0;
|
|
36
|
+
position: absolute;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.puzzle-switch__control {
|
|
41
|
+
box-sizing: border-box;
|
|
42
|
+
width: var(--puzzle-switch-width);
|
|
43
|
+
height: var(--puzzle-switch-height);
|
|
44
|
+
border: 1px solid var(--puzzle-color-border-strong);
|
|
45
|
+
border-radius: var(--puzzle-radius-full, 9999px);
|
|
46
|
+
background-color: var(--puzzle-color-surface-sunken);
|
|
47
|
+
transition: background-color var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease),
|
|
48
|
+
border-color var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease);
|
|
49
|
+
flex: none;
|
|
50
|
+
align-items: center;
|
|
51
|
+
padding: 2px;
|
|
52
|
+
display: inline-flex;
|
|
53
|
+
position: relative;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.puzzle-switch__control:after {
|
|
57
|
+
width: var(--puzzle-switch-thumb-size);
|
|
58
|
+
height: var(--puzzle-switch-thumb-size);
|
|
59
|
+
background-color: var(--puzzle-color-surface);
|
|
60
|
+
content: "";
|
|
61
|
+
transition: transform var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease),
|
|
62
|
+
background-color var(--puzzle-duration-fast, .15s) var(--puzzle-easing-standard, ease);
|
|
63
|
+
border-radius: 50%;
|
|
64
|
+
display: block;
|
|
65
|
+
box-shadow: 0 1px 2px #0000002e;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.puzzle-switch__input:checked + .puzzle-switch__control {
|
|
69
|
+
border-color: var(--puzzle-color-primary);
|
|
70
|
+
background-color: var(--puzzle-color-primary);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.puzzle-switch__input:checked + .puzzle-switch__control:after {
|
|
74
|
+
background-color: var(--puzzle-color-primary-foreground);
|
|
75
|
+
transform: translateX(calc(var(--puzzle-switch-width) - var(--puzzle-switch-thumb-size) - 6px));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.puzzle-switch__input:focus-visible + .puzzle-switch__control {
|
|
79
|
+
outline: 2px solid var(--puzzle-color-ring);
|
|
80
|
+
outline-offset: 2px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.puzzle-switch__content {
|
|
84
|
+
min-width: 0;
|
|
85
|
+
color: var(--puzzle-color-text);
|
|
86
|
+
font-size: var(--puzzle-font-size-sm, .875rem);
|
|
87
|
+
font-weight: var(--puzzle-font-weight-medium, 500);
|
|
88
|
+
line-height: var(--puzzle-font-line-height-body2, 1.5);
|
|
89
|
+
flex-direction: column;
|
|
90
|
+
gap: .125rem;
|
|
91
|
+
display: flex;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.puzzle-switch__description, .puzzle-switch__content--description-only {
|
|
95
|
+
color: var(--puzzle-color-text-muted);
|
|
96
|
+
font-size: var(--puzzle-font-size-xs, .75rem);
|
|
97
|
+
font-weight: var(--puzzle-font-weight-normal, 400);
|
|
98
|
+
line-height: var(--puzzle-font-line-height-body2, 1.5);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@media (forced-colors: active) {
|
|
102
|
+
.puzzle-switch--disabled {
|
|
103
|
+
opacity: 1;
|
|
104
|
+
color: graytext;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.puzzle-switch--disabled .puzzle-switch__content, .puzzle-switch--disabled .puzzle-switch__description {
|
|
108
|
+
color: graytext;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.puzzle-switch__control {
|
|
112
|
+
background-color: canvas;
|
|
113
|
+
border-color: canvastext;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.puzzle-switch__control:after {
|
|
117
|
+
box-shadow: none;
|
|
118
|
+
background-color: canvastext;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.puzzle-switch__input:checked + .puzzle-switch__control {
|
|
122
|
+
background-color: highlight;
|
|
123
|
+
border-color: highlight;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.puzzle-switch__input:checked + .puzzle-switch__control:after {
|
|
127
|
+
background-color: highlighttext;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.puzzle-switch__input:disabled + .puzzle-switch__control, .puzzle-switch__input:disabled:checked + .puzzle-switch__control {
|
|
131
|
+
background-color: canvas;
|
|
132
|
+
border-color: graytext;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.puzzle-switch__input:disabled + .puzzle-switch__control:after {
|
|
136
|
+
background-color: graytext;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.puzzle-switch__input:focus-visible + .puzzle-switch__control {
|
|
140
|
+
outline-color: highlight;
|
|
141
|
+
}
|
|
142
|
+
}
|