@puzzle-ui/ui 0.0.0-stage → 0.2.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 +97 -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/resizable-panels/index.cjs +226 -0
- package/dist/components/layout/resizable-panels/index.cjs.map +1 -0
- package/dist/components/layout/resizable-panels/index.d.cts +59 -0
- package/dist/components/layout/resizable-panels/index.d.ts +59 -0
- package/dist/components/layout/resizable-panels/index.js +224 -0
- package/dist/components/layout/resizable-panels/index.js.map +1 -0
- package/dist/components/layout/resizable-panels/resizable-panels.css +121 -0
- package/dist/components/layout/resizable-panels/resizable-panels.utils.cjs +107 -0
- package/dist/components/layout/resizable-panels/resizable-panels.utils.cjs.map +1 -0
- package/dist/components/layout/resizable-panels/resizable-panels.utils.js +105 -0
- package/dist/components/layout/resizable-panels/resizable-panels.utils.js.map +1 -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 +132 -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 +132 -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 +196 -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 +195 -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 +159 -0
- package/dist/index.d.cts +86 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +70 -0
- package/package.json +65 -4
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ButtonNativeProps, ButtonSize } from "../button/button.types.js";
|
|
2
|
+
import { ComponentPropsWithoutRef, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, ReactNode } from "react";
|
|
3
|
+
type ToggleGroupOrientation = "horizontal" | "vertical";
|
|
4
|
+
type ToggleGroupSize = ButtonSize;
|
|
5
|
+
type ToggleGroupBaseProps = Omit<ComponentPropsWithoutRef<"div">, "children" | "dir"> & {
|
|
6
|
+
/** Layout direction of the items. Defaults to horizontal. */
|
|
7
|
+
orientation?: ToggleGroupOrientation;
|
|
8
|
+
/** Size of every item. Defaults to medium. */
|
|
9
|
+
size?: ToggleGroupSize;
|
|
10
|
+
/** Text direction, used to interpret horizontal arrow keys. */
|
|
11
|
+
dir?: "ltr" | "rtl";
|
|
12
|
+
/** Disables every item in the group. */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Whether keyboard navigation wraps at the first and last item. */
|
|
15
|
+
loop?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Prevents the last selected value from being deselected.
|
|
18
|
+
* It does not force an initial selection.
|
|
19
|
+
*/
|
|
20
|
+
required?: boolean;
|
|
21
|
+
/** Joins the item borders and removes the inner corner radii. */
|
|
22
|
+
attached?: boolean;
|
|
23
|
+
/** Makes the group fill its available inline size. */
|
|
24
|
+
fullWidth?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Space between items. A number is interpreted as pixels.
|
|
27
|
+
* Defaults to the Puzzle spacing token.
|
|
28
|
+
*/
|
|
29
|
+
spacing?: number | string;
|
|
30
|
+
children: ReactNode;
|
|
31
|
+
};
|
|
32
|
+
type ToggleGroupSingleProps = ToggleGroupBaseProps & {
|
|
33
|
+
type?: "single";
|
|
34
|
+
value?: string | null;
|
|
35
|
+
defaultValue?: string;
|
|
36
|
+
onValueChange?: (value: string | undefined) => void;
|
|
37
|
+
};
|
|
38
|
+
type ToggleGroupMultipleProps = ToggleGroupBaseProps & {
|
|
39
|
+
type: "multiple";
|
|
40
|
+
value?: string[];
|
|
41
|
+
defaultValue?: string[];
|
|
42
|
+
onValueChange?: (value: string[]) => void;
|
|
43
|
+
};
|
|
44
|
+
type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;
|
|
45
|
+
type ToggleGroupItemProps = Omit<ButtonNativeProps, "value" | "variant" | "disabled" | "size" | "onClick" | "onFocus" | "onKeyDown" | "tabIndex" | "aria-pressed" | "type" | "ref"> & {
|
|
46
|
+
/** Unique value identifying this item within the group. */
|
|
47
|
+
value: string;
|
|
48
|
+
/** Disables this item without disabling the rest of the group. */
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
51
|
+
onFocus?: FocusEventHandler<HTMLButtonElement>;
|
|
52
|
+
onKeyDown?: KeyboardEventHandler<HTMLButtonElement>;
|
|
53
|
+
};
|
|
54
|
+
export type { ToggleGroupBaseProps, ToggleGroupItemProps, ToggleGroupMultipleProps, ToggleGroupOrientation, ToggleGroupProps, ToggleGroupSingleProps, ToggleGroupSize };
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
.puzzle-alert {
|
|
2
|
+
--alert-color: var(--puzzle-color-info, #3b82f6);
|
|
3
|
+
--alert-background: color-mix(in srgb, var(--alert-color) 10%, transparent);
|
|
4
|
+
--alert-border: color-mix(in srgb, var(--alert-color) 30%, transparent);
|
|
5
|
+
align-items: flex-start;
|
|
6
|
+
gap: var(--puzzle-space-3, .75rem);
|
|
7
|
+
width: 100%;
|
|
8
|
+
padding: var(--puzzle-space-4, 1rem);
|
|
9
|
+
border-radius: var(--puzzle-radius-md, .5rem);
|
|
10
|
+
color: var(--puzzle-color-text, inherit);
|
|
11
|
+
background: var(--alert-background);
|
|
12
|
+
font-family: var(--puzzle-font-family-body, inherit);
|
|
13
|
+
font-size: var(--puzzle-font-size-sm, .875rem);
|
|
14
|
+
line-height: var(--puzzle-font-line-height-normal, 1.5);
|
|
15
|
+
border: 1px solid #0000;
|
|
16
|
+
display: flex;
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.puzzle-alert--success {
|
|
21
|
+
--alert-color: var(--puzzle-color-success, #22c55e);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.puzzle-alert--info {
|
|
25
|
+
--alert-color: var(--puzzle-color-info, #3b82f6);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.puzzle-alert--warning {
|
|
29
|
+
--alert-color: var(--puzzle-color-warning, #f59e0b);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.puzzle-alert--error {
|
|
33
|
+
--alert-color: var(--puzzle-color-danger, #ef4444);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.puzzle-alert--standard {
|
|
37
|
+
border-color: var(--alert-border);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.puzzle-alert--outlined {
|
|
41
|
+
border-color: var(--alert-color);
|
|
42
|
+
background: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.puzzle-alert--filled {
|
|
46
|
+
background: var(--alert-color);
|
|
47
|
+
color: var(--puzzle-color-primary-foreground, #fff);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.puzzle-alert--filled .puzzle-alert__icon, .puzzle-alert--filled .puzzle-alert__close {
|
|
51
|
+
color: inherit;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.puzzle-alert__icon-wrapper {
|
|
55
|
+
color: var(--alert-color);
|
|
56
|
+
flex-shrink: 0;
|
|
57
|
+
align-items: flex-start;
|
|
58
|
+
padding-top: .125rem;
|
|
59
|
+
display: flex;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.puzzle-alert--filled .puzzle-alert__icon-wrapper {
|
|
63
|
+
color: inherit;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.puzzle-alert__icon {
|
|
67
|
+
flex-shrink: 0;
|
|
68
|
+
display: block;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.puzzle-alert__content {
|
|
72
|
+
gap: var(--puzzle-space-1, .25rem);
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
flex: 1;
|
|
75
|
+
min-width: 0;
|
|
76
|
+
display: flex;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.puzzle-alert__title {
|
|
80
|
+
font-weight: var(--puzzle-font-weight-semibold, 600);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.puzzle-alert__description {
|
|
84
|
+
min-width: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.puzzle-alert__description > :first-child {
|
|
88
|
+
margin-top: 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.puzzle-alert__description > :last-child {
|
|
92
|
+
margin-bottom: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.puzzle-alert__close {
|
|
96
|
+
border-radius: var(--puzzle-radius-sm, .25rem);
|
|
97
|
+
width: 2rem;
|
|
98
|
+
height: 2rem;
|
|
99
|
+
color: var(--alert-color);
|
|
100
|
+
cursor: pointer;
|
|
101
|
+
background: none;
|
|
102
|
+
border: 0;
|
|
103
|
+
flex-shrink: 0;
|
|
104
|
+
justify-content: center;
|
|
105
|
+
align-items: center;
|
|
106
|
+
margin: -.375rem -.375rem 0 0;
|
|
107
|
+
padding: 0;
|
|
108
|
+
display: inline-flex;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.puzzle-alert--filled .puzzle-alert__close {
|
|
112
|
+
color: inherit;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.puzzle-alert__close:hover {
|
|
116
|
+
background: color-mix(in srgb, currentColor 10%, transparent);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.puzzle-alert__close:focus-visible {
|
|
120
|
+
outline-offset: 2px;
|
|
121
|
+
outline: 2px solid;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
125
|
+
.puzzle-alert__close {
|
|
126
|
+
transition: background-color .12s;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
type AlertSeverity = "success" | "info" | "warning" | "error";
|
|
3
|
+
type AlertVariant = "standard" | "outlined" | "filled";
|
|
4
|
+
type AlertProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
|
|
5
|
+
severity?: AlertSeverity;
|
|
6
|
+
variant?: AlertVariant;
|
|
7
|
+
title?: ReactNode;
|
|
8
|
+
icon?: ReactNode | false;
|
|
9
|
+
closable?: boolean;
|
|
10
|
+
closeLabel?: string;
|
|
11
|
+
onClose?: () => void;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
};
|
|
14
|
+
export type { AlertProps, AlertSeverity, AlertVariant };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
type AlertSeverity = "success" | "info" | "warning" | "error";
|
|
3
|
+
type AlertVariant = "standard" | "outlined" | "filled";
|
|
4
|
+
type AlertProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
|
|
5
|
+
severity?: AlertSeverity;
|
|
6
|
+
variant?: AlertVariant;
|
|
7
|
+
title?: ReactNode;
|
|
8
|
+
icon?: ReactNode | false;
|
|
9
|
+
closable?: boolean;
|
|
10
|
+
closeLabel?: string;
|
|
11
|
+
onClose?: () => void;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
};
|
|
14
|
+
export type { AlertProps, AlertSeverity, AlertVariant };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/components/data-display/alert/alert.utils.ts
|
|
2
|
+
const getAlertSemantics = (severity) => {
|
|
3
|
+
const isUrgent = severity === "error" || severity === "warning";
|
|
4
|
+
return {
|
|
5
|
+
role: isUrgent ? "alert" : "status",
|
|
6
|
+
ariaLive: isUrgent ? "assertive" : "polite"
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
exports.getAlertSemantics = getAlertSemantics;
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=alert.utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.utils.cjs","names":[],"sources":["../../../../src/components/data-display/alert/alert.utils.ts"],"sourcesContent":["import type { AlertSeverity } from \"./alert.types\";\n\ntype AlertSemantics = {\n role: \"alert\" | \"status\";\n ariaLive: \"assertive\" | \"polite\";\n};\n\nconst getAlertSemantics = (severity: AlertSeverity): AlertSemantics => {\n const isUrgent = severity === \"error\" || severity === \"warning\";\n\n return {\n role: isUrgent ? \"alert\" : \"status\",\n ariaLive: isUrgent ? \"assertive\" : \"polite\",\n };\n};\n\nexport { getAlertSemantics };\nexport type { AlertSemantics };\n"],"mappings":";AAOA,MAAM,qBAAqB,aAA4C;CACrE,MAAM,WAAW,aAAa,WAAW,aAAa;CAEtD,OAAO;EACL,MAAM,WAAW,UAAU;EAC3B,UAAU,WAAW,cAAc;CACrC;AACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/components/data-display/alert/alert.utils.ts
|
|
2
|
+
const getAlertSemantics = (severity) => {
|
|
3
|
+
const isUrgent = severity === "error" || severity === "warning";
|
|
4
|
+
return {
|
|
5
|
+
role: isUrgent ? "alert" : "status",
|
|
6
|
+
ariaLive: isUrgent ? "assertive" : "polite"
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export { getAlertSemantics };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=alert.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.utils.js","names":[],"sources":["../../../../src/components/data-display/alert/alert.utils.ts"],"sourcesContent":["import type { AlertSeverity } from \"./alert.types\";\n\ntype AlertSemantics = {\n role: \"alert\" | \"status\";\n ariaLive: \"assertive\" | \"polite\";\n};\n\nconst getAlertSemantics = (severity: AlertSeverity): AlertSemantics => {\n const isUrgent = severity === \"error\" || severity === \"warning\";\n\n return {\n role: isUrgent ? \"alert\" : \"status\",\n ariaLive: isUrgent ? \"assertive\" : \"polite\",\n };\n};\n\nexport { getAlertSemantics };\nexport type { AlertSemantics };\n"],"mappings":";AAOA,MAAM,qBAAqB,aAA4C;CACrE,MAAM,WAAW,aAAa,WAAW,aAAa;CAEtD,OAAO;EACL,MAAM,WAAW,UAAU;EAC3B,UAAU,WAAW,cAAc;CACrC;AACF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
;/* empty css */
|
|
2
|
+
const require_alert_utils = require("./alert.utils.cjs");
|
|
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/data-display/alert/index.tsx
|
|
7
|
+
const AlertIcon = ({ severity }) => {
|
|
8
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
9
|
+
className: "puzzle-alert__icon",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
width: "20",
|
|
12
|
+
height: "20",
|
|
13
|
+
fill: "none",
|
|
14
|
+
stroke: "currentColor",
|
|
15
|
+
strokeWidth: "2",
|
|
16
|
+
strokeLinecap: "round",
|
|
17
|
+
strokeLinejoin: "round",
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
focusable: "false",
|
|
20
|
+
children: {
|
|
21
|
+
success: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m5 12 4 4L19 6" }) }),
|
|
22
|
+
info: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
23
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
24
|
+
cx: "12",
|
|
25
|
+
cy: "12",
|
|
26
|
+
r: "10"
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 16v-4" }),
|
|
29
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 8h.01" })
|
|
30
|
+
] }),
|
|
31
|
+
warning: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
32
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M10.3 3.9 1.8 18.1A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-2.9L13.7 3.9a2 2 0 0 0-3.4 0Z" }),
|
|
33
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 9v4" }),
|
|
34
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 17h.01" })
|
|
35
|
+
] }),
|
|
36
|
+
error: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
37
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
38
|
+
cx: "12",
|
|
39
|
+
cy: "12",
|
|
40
|
+
r: "10"
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m15 9-6 6" }),
|
|
43
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m9 9 6 6" })
|
|
44
|
+
] })
|
|
45
|
+
}[severity]
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const CloseIcon = () => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
49
|
+
viewBox: "0 0 24 24",
|
|
50
|
+
width: "18",
|
|
51
|
+
height: "18",
|
|
52
|
+
fill: "none",
|
|
53
|
+
stroke: "currentColor",
|
|
54
|
+
strokeWidth: "2",
|
|
55
|
+
strokeLinecap: "round",
|
|
56
|
+
"aria-hidden": "true",
|
|
57
|
+
focusable: "false",
|
|
58
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m18 6-12 12M6 6l12 12" })
|
|
59
|
+
});
|
|
60
|
+
const Alert = ({ severity = "info", variant = "standard", title, icon, closable = false, closeLabel = "Dismiss alert", onClose, children, className, style, ...props }) => {
|
|
61
|
+
const [dismissed, setDismissed] = (0, react.useState)(false);
|
|
62
|
+
if (dismissed) return null;
|
|
63
|
+
const handleClose = () => {
|
|
64
|
+
setDismissed(true);
|
|
65
|
+
onClose?.();
|
|
66
|
+
};
|
|
67
|
+
const classes = (0, _puzzle_ui_core.cn)("puzzle-alert", `puzzle-alert--${severity}`, `puzzle-alert--${variant}`, className);
|
|
68
|
+
const semantics = require_alert_utils.getAlertSemantics(severity);
|
|
69
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
70
|
+
...props,
|
|
71
|
+
className: classes,
|
|
72
|
+
style,
|
|
73
|
+
role: semantics.role,
|
|
74
|
+
"aria-live": semantics.ariaLive,
|
|
75
|
+
"aria-atomic": "true",
|
|
76
|
+
children: [
|
|
77
|
+
icon !== false && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
78
|
+
className: "puzzle-alert__icon-wrapper",
|
|
79
|
+
children: icon ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AlertIcon, { severity })
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
82
|
+
className: "puzzle-alert__content",
|
|
83
|
+
children: [title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
84
|
+
className: "puzzle-alert__title",
|
|
85
|
+
children: title
|
|
86
|
+
}), children && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
87
|
+
className: "puzzle-alert__description",
|
|
88
|
+
children
|
|
89
|
+
})]
|
|
90
|
+
}),
|
|
91
|
+
closable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
92
|
+
type: "button",
|
|
93
|
+
className: "puzzle-alert__close",
|
|
94
|
+
"aria-label": closeLabel,
|
|
95
|
+
onClick: handleClose,
|
|
96
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CloseIcon, {})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
exports.Alert = Alert;
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["useState","cn","getAlertSemantics"],"sources":["../../../../src/components/data-display/alert/index.tsx"],"sourcesContent":["import { type ReactNode, useState } from \"react\";\nimport { cn } from \"@puzzle-ui/core\";\n\nimport type { AlertProps, AlertSeverity, AlertVariant } from \"./alert.types\";\n\nimport \"./alert.css\";\nimport { getAlertSemantics } from \"./alert.utils\";\n\nconst AlertIcon = ({ severity }: { severity: AlertSeverity }) => {\n const paths: Record<AlertSeverity, ReactNode> = {\n success: (\n <>\n <path d=\"m5 12 4 4L19 6\" />\n </>\n ),\n info: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </>\n ),\n warning: (\n <>\n <path d=\"M10.3 3.9 1.8 18.1A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-2.9L13.7 3.9a2 2 0 0 0-3.4 0Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </>\n ),\n error: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6\" />\n <path d=\"m9 9 6 6\" />\n </>\n ),\n };\n\n return (\n <svg\n className=\"puzzle-alert__icon\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n {paths[severity]}\n </svg>\n );\n};\n\nconst CloseIcon = () => (\n <svg\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 focusable=\"false\"\n >\n <path d=\"m18 6-12 12M6 6l12 12\" />\n </svg>\n);\n\nconst Alert = ({\n severity = \"info\",\n variant = \"standard\",\n title,\n icon,\n closable = false,\n closeLabel = \"Dismiss alert\",\n onClose,\n children,\n className,\n style,\n ...props\n}: AlertProps) => {\n const [dismissed, setDismissed] = useState(false);\n\n if (dismissed) {\n return null;\n }\n\n const handleClose = () => {\n setDismissed(true);\n onClose?.();\n };\n\n const classes = cn(\n \"puzzle-alert\",\n `puzzle-alert--${severity}`,\n `puzzle-alert--${variant}`,\n className,\n );\n\n const semantics = getAlertSemantics(severity);\n\n return (\n <div\n {...props}\n className={classes}\n style={style}\n role={semantics.role}\n aria-live={semantics.ariaLive}\n aria-atomic=\"true\"\n >\n {icon !== false && (\n <div className=\"puzzle-alert__icon-wrapper\">\n {icon ?? <AlertIcon severity={severity} />}\n </div>\n )}\n\n <div className=\"puzzle-alert__content\">\n {title && <div className=\"puzzle-alert__title\">{title}</div>}\n\n {children && (\n <div className=\"puzzle-alert__description\">{children}</div>\n )}\n </div>\n\n {closable && (\n <button\n type=\"button\"\n className=\"puzzle-alert__close\"\n aria-label={closeLabel}\n onClick={handleClose}\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n};\n\nexport { Alert, type AlertProps, type AlertSeverity, type AlertVariant };\n"],"mappings":";;;;;;AAQA,MAAM,aAAa,EAAE,eAA4C;CA8B/D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,WAAU;EACV,SAAQ;EACR,OAAM;EACN,QAAO;EACP,MAAK;EACL,QAAO;EACP,aAAY;EACZ,eAAc;EACd,gBAAe;EACf,eAAY;EACZ,WAAU;EAET,UAAA;GA1CH,SACE,iBAAA,GAAA,kBAAA,IAAA,CAAA,kBAAA,UAAA,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,iBAAkB,CAAA,EAC1B,CAAA;GAEJ,MACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;IAAM,CAAA;IAChC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,YAAa,CAAA;IACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,YAAa,CAAA;GACrB,EAAA,CAAA;GAEJ,SACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,qFAAsF,CAAA;IAC9F,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,UAAW,CAAA;IACnB,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,aAAc,CAAA;GACtB,EAAA,CAAA;GAEJ,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;IAAM,CAAA;IAChC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,YAAa,CAAA;IACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,WAAY,CAAA;GACpB,EAAA,CAAA;EAkBG,EAAE;CACJ,CAAA;AAET;AAEA,MAAM,kBACJ,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;CACE,SAAQ;CACR,OAAM;CACN,QAAO;CACP,MAAK;CACL,QAAO;CACP,aAAY;CACZ,eAAc;CACd,eAAY;CACZ,WAAU;CAEV,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA;AAC9B,CAAA;AAGP,MAAM,SAAS,EACb,WAAW,QACX,UAAU,YACV,OACA,MACA,WAAW,OACX,aAAa,iBACb,SACA,UACA,WACA,OACA,GAAG,YACa;CAChB,MAAM,CAAC,WAAW,iBAAA,GAAgBA,MAAAA,SAAAA,CAAS,KAAK;CAEhD,IAAI,WACF,OAAO;CAGT,MAAM,oBAAoB;EACxB,aAAa,IAAI;EACjB,UAAU;CACZ;CAEA,MAAM,WAAA,GAAUC,gBAAAA,GAAAA,CACd,gBACA,iBAAiB,YACjB,iBAAiB,WACjB,SACF;CAEA,MAAM,YAAYC,oBAAAA,kBAAkB,QAAQ;CAE5C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EACE,GAAI;EACJ,WAAW;EACJ;EACP,MAAM,UAAU;EAChB,aAAW,UAAU;EACrB,eAAY;EANd,UAAA;GAQG,SAAS,SACR,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IACZ,UAAA,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD,EAAqB,SAAW,CAAA;GACtC,CAAA;GAGP,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAU;KAAuB,UAAA;IAAW,CAAA,GAE1D,YACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAU;KAA6B;IAAc,CAAA,CAEzD;;GAEJ,YACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,cAAY;IACZ,SAAS;IAET,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD,CAAY,CAAA;GACN,CAAA;EAEP;;AAET"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AlertProps, AlertSeverity, AlertVariant } from "./alert.types.cjs";
|
|
2
|
+
declare const Alert: ({ severity, variant, title, icon, closable, closeLabel, onClose, children, className, style, ...props }: AlertProps) => import("react").JSX.Element | null;
|
|
3
|
+
export { Alert, type AlertProps, type AlertSeverity, type AlertVariant };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AlertProps, AlertSeverity, AlertVariant } from "./alert.types.js";
|
|
2
|
+
declare const Alert: ({ severity, variant, title, icon, closable, closeLabel, onClose, children, className, style, ...props }: AlertProps) => import("react").JSX.Element | null;
|
|
3
|
+
export { Alert, type AlertProps, type AlertSeverity, type AlertVariant };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import "./alert.css";
|
|
2
|
+
import { getAlertSemantics } from "./alert.utils.js";
|
|
3
|
+
import { cn } from "@puzzle-ui/core";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
// src/components/data-display/alert/index.tsx
|
|
7
|
+
const AlertIcon = ({ severity }) => {
|
|
8
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
9
|
+
className: "puzzle-alert__icon",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
width: "20",
|
|
12
|
+
height: "20",
|
|
13
|
+
fill: "none",
|
|
14
|
+
stroke: "currentColor",
|
|
15
|
+
strokeWidth: "2",
|
|
16
|
+
strokeLinecap: "round",
|
|
17
|
+
strokeLinejoin: "round",
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
focusable: "false",
|
|
20
|
+
children: {
|
|
21
|
+
success: /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("path", { d: "m5 12 4 4L19 6" }) }),
|
|
22
|
+
info: /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
23
|
+
/* @__PURE__ */ jsx("circle", {
|
|
24
|
+
cx: "12",
|
|
25
|
+
cy: "12",
|
|
26
|
+
r: "10"
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ jsx("path", { d: "M12 16v-4" }),
|
|
29
|
+
/* @__PURE__ */ jsx("path", { d: "M12 8h.01" })
|
|
30
|
+
] }),
|
|
31
|
+
warning: /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
32
|
+
/* @__PURE__ */ jsx("path", { d: "M10.3 3.9 1.8 18.1A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-2.9L13.7 3.9a2 2 0 0 0-3.4 0Z" }),
|
|
33
|
+
/* @__PURE__ */ jsx("path", { d: "M12 9v4" }),
|
|
34
|
+
/* @__PURE__ */ jsx("path", { d: "M12 17h.01" })
|
|
35
|
+
] }),
|
|
36
|
+
error: /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
37
|
+
/* @__PURE__ */ jsx("circle", {
|
|
38
|
+
cx: "12",
|
|
39
|
+
cy: "12",
|
|
40
|
+
r: "10"
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ jsx("path", { d: "m15 9-6 6" }),
|
|
43
|
+
/* @__PURE__ */ jsx("path", { d: "m9 9 6 6" })
|
|
44
|
+
] })
|
|
45
|
+
}[severity]
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const CloseIcon = () => /* @__PURE__ */ jsx("svg", {
|
|
49
|
+
viewBox: "0 0 24 24",
|
|
50
|
+
width: "18",
|
|
51
|
+
height: "18",
|
|
52
|
+
fill: "none",
|
|
53
|
+
stroke: "currentColor",
|
|
54
|
+
strokeWidth: "2",
|
|
55
|
+
strokeLinecap: "round",
|
|
56
|
+
"aria-hidden": "true",
|
|
57
|
+
focusable: "false",
|
|
58
|
+
children: /* @__PURE__ */ jsx("path", { d: "m18 6-12 12M6 6l12 12" })
|
|
59
|
+
});
|
|
60
|
+
const Alert = ({ severity = "info", variant = "standard", title, icon, closable = false, closeLabel = "Dismiss alert", onClose, children, className, style, ...props }) => {
|
|
61
|
+
const [dismissed, setDismissed] = useState(false);
|
|
62
|
+
if (dismissed) return null;
|
|
63
|
+
const handleClose = () => {
|
|
64
|
+
setDismissed(true);
|
|
65
|
+
onClose?.();
|
|
66
|
+
};
|
|
67
|
+
const classes = cn("puzzle-alert", `puzzle-alert--${severity}`, `puzzle-alert--${variant}`, className);
|
|
68
|
+
const semantics = getAlertSemantics(severity);
|
|
69
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
70
|
+
...props,
|
|
71
|
+
className: classes,
|
|
72
|
+
style,
|
|
73
|
+
role: semantics.role,
|
|
74
|
+
"aria-live": semantics.ariaLive,
|
|
75
|
+
"aria-atomic": "true",
|
|
76
|
+
children: [
|
|
77
|
+
icon !== false && /* @__PURE__ */ jsx("div", {
|
|
78
|
+
className: "puzzle-alert__icon-wrapper",
|
|
79
|
+
children: icon ?? /* @__PURE__ */ jsx(AlertIcon, { severity })
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ jsxs("div", {
|
|
82
|
+
className: "puzzle-alert__content",
|
|
83
|
+
children: [title && /* @__PURE__ */ jsx("div", {
|
|
84
|
+
className: "puzzle-alert__title",
|
|
85
|
+
children: title
|
|
86
|
+
}), children && /* @__PURE__ */ jsx("div", {
|
|
87
|
+
className: "puzzle-alert__description",
|
|
88
|
+
children
|
|
89
|
+
})]
|
|
90
|
+
}),
|
|
91
|
+
closable && /* @__PURE__ */ jsx("button", {
|
|
92
|
+
type: "button",
|
|
93
|
+
className: "puzzle-alert__close",
|
|
94
|
+
"aria-label": closeLabel,
|
|
95
|
+
onClick: handleClose,
|
|
96
|
+
children: /* @__PURE__ */ jsx(CloseIcon, {})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
export { Alert };
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/data-display/alert/index.tsx"],"sourcesContent":["import { type ReactNode, useState } from \"react\";\nimport { cn } from \"@puzzle-ui/core\";\n\nimport type { AlertProps, AlertSeverity, AlertVariant } from \"./alert.types\";\n\nimport \"./alert.css\";\nimport { getAlertSemantics } from \"./alert.utils\";\n\nconst AlertIcon = ({ severity }: { severity: AlertSeverity }) => {\n const paths: Record<AlertSeverity, ReactNode> = {\n success: (\n <>\n <path d=\"m5 12 4 4L19 6\" />\n </>\n ),\n info: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </>\n ),\n warning: (\n <>\n <path d=\"M10.3 3.9 1.8 18.1A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-2.9L13.7 3.9a2 2 0 0 0-3.4 0Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </>\n ),\n error: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6\" />\n <path d=\"m9 9 6 6\" />\n </>\n ),\n };\n\n return (\n <svg\n className=\"puzzle-alert__icon\"\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n {paths[severity]}\n </svg>\n );\n};\n\nconst CloseIcon = () => (\n <svg\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 focusable=\"false\"\n >\n <path d=\"m18 6-12 12M6 6l12 12\" />\n </svg>\n);\n\nconst Alert = ({\n severity = \"info\",\n variant = \"standard\",\n title,\n icon,\n closable = false,\n closeLabel = \"Dismiss alert\",\n onClose,\n children,\n className,\n style,\n ...props\n}: AlertProps) => {\n const [dismissed, setDismissed] = useState(false);\n\n if (dismissed) {\n return null;\n }\n\n const handleClose = () => {\n setDismissed(true);\n onClose?.();\n };\n\n const classes = cn(\n \"puzzle-alert\",\n `puzzle-alert--${severity}`,\n `puzzle-alert--${variant}`,\n className,\n );\n\n const semantics = getAlertSemantics(severity);\n\n return (\n <div\n {...props}\n className={classes}\n style={style}\n role={semantics.role}\n aria-live={semantics.ariaLive}\n aria-atomic=\"true\"\n >\n {icon !== false && (\n <div className=\"puzzle-alert__icon-wrapper\">\n {icon ?? <AlertIcon severity={severity} />}\n </div>\n )}\n\n <div className=\"puzzle-alert__content\">\n {title && <div className=\"puzzle-alert__title\">{title}</div>}\n\n {children && (\n <div className=\"puzzle-alert__description\">{children}</div>\n )}\n </div>\n\n {closable && (\n <button\n type=\"button\"\n className=\"puzzle-alert__close\"\n aria-label={closeLabel}\n onClick={handleClose}\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n};\n\nexport { Alert, type AlertProps, type AlertSeverity, type AlertVariant };\n"],"mappings":";;;;;;AAQA,MAAM,aAAa,EAAE,eAA4C;CA8B/D,OACE,oBAAC,OAAD;EACE,WAAU;EACV,SAAQ;EACR,OAAM;EACN,QAAO;EACP,MAAK;EACL,QAAO;EACP,aAAY;EACZ,eAAc;EACd,gBAAe;EACf,eAAY;EACZ,WAAU;EAET,UAAA;GA1CH,SACE,oBAAA,YAAA,EAAA,UACE,oBAAC,QAAD,EAAM,GAAE,iBAAkB,CAAA,EAC1B,CAAA;GAEJ,MACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;IAAM,CAAA;IAChC,oBAAC,QAAD,EAAM,GAAE,YAAa,CAAA;IACrB,oBAAC,QAAD,EAAM,GAAE,YAAa,CAAA;GACrB,EAAA,CAAA;GAEJ,SACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,QAAD,EAAM,GAAE,qFAAsF,CAAA;IAC9F,oBAAC,QAAD,EAAM,GAAE,UAAW,CAAA;IACnB,oBAAC,QAAD,EAAM,GAAE,aAAc,CAAA;GACtB,EAAA,CAAA;GAEJ,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;IAAM,CAAA;IAChC,oBAAC,QAAD,EAAM,GAAE,YAAa,CAAA;IACrB,oBAAC,QAAD,EAAM,GAAE,WAAY,CAAA;GACpB,EAAA,CAAA;EAkBG,EAAE;CACJ,CAAA;AAET;AAEA,MAAM,kBACJ,oBAAC,OAAD;CACE,SAAQ;CACR,OAAM;CACN,QAAO;CACP,MAAK;CACL,QAAO;CACP,aAAY;CACZ,eAAc;CACd,eAAY;CACZ,WAAU;CAEV,UAAA,oBAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA;AAC9B,CAAA;AAGP,MAAM,SAAS,EACb,WAAW,QACX,UAAU,YACV,OACA,MACA,WAAW,OACX,aAAa,iBACb,SACA,UACA,WACA,OACA,GAAG,YACa;CAChB,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAEhD,IAAI,WACF,OAAO;CAGT,MAAM,oBAAoB;EACxB,aAAa,IAAI;EACjB,UAAU;CACZ;CAEA,MAAM,UAAU,GACd,gBACA,iBAAiB,YACjB,iBAAiB,WACjB,SACF;CAEA,MAAM,YAAY,kBAAkB,QAAQ;CAE5C,OACE,qBAAC,OAAD;EACE,GAAI;EACJ,WAAW;EACJ;EACP,MAAM,UAAU;EAChB,aAAW,UAAU;EACrB,eAAY;EANd,UAAA;GAQG,SAAS,SACR,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA,QAAQ,oBAAC,WAAD,EAAqB,SAAW,CAAA;GACtC,CAAA;GAGP,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,SAAS,oBAAC,OAAD;KAAK,WAAU;KAAuB,UAAA;IAAW,CAAA,GAE1D,YACC,oBAAC,OAAD;KAAK,WAAU;KAA6B;IAAc,CAAA,CAEzD;;GAEJ,YACC,oBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,cAAY;IACZ,SAAS;IAET,UAAA,oBAAC,WAAD,CAAY,CAAA;GACN,CAAA;EAEP;;AAET"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.puzzle-avatar {
|
|
2
|
+
background-color: var(--puzzle-color-secondary);
|
|
3
|
+
border: var(--puzzle-border-width-strong, 2px) solid var(--puzzle-color-border);
|
|
4
|
+
border-radius: var(--puzzle-radius-full, 50%);
|
|
5
|
+
color: var(--puzzle-color-secondary-foreground);
|
|
6
|
+
font-weight: var(--puzzle-font-weight-bold, 700);
|
|
7
|
+
justify-content: center;
|
|
8
|
+
align-items: center;
|
|
9
|
+
display: inline-flex;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
container-type: inline-size;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.puzzle-avatar-square {
|
|
15
|
+
border-radius: var(--puzzle-radius-md, .5rem);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.puzzle-avatar-circle {
|
|
19
|
+
border-radius: var(--puzzle-radius-full, 9999px);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.puzzle-avatar-initials {
|
|
23
|
+
font-size: clamp(.5rem, 32cqw, 4rem);
|
|
24
|
+
font-weight: var(--puzzle-font-weight-bold, 700);
|
|
25
|
+
line-height: var(--puzzle-font-line-height-none, 1);
|
|
26
|
+
font-synthesis: none;
|
|
27
|
+
text-rendering: auto;
|
|
28
|
+
-webkit-font-smoothing: antialiased;
|
|
29
|
+
-moz-osx-font-smoothing: grayscale;
|
|
30
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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/data-display/avatar/index.tsx
|
|
7
|
+
const Avatar = ({ src, alt, size: propsSize = 32, shape = "circle", className, onError, ...rest }) => {
|
|
8
|
+
const [failedSrc, setFailedSrc] = (0, react.useState)(null);
|
|
9
|
+
const classes = (0, _puzzle_ui_core.cn)("puzzle-avatar", `puzzle-avatar-${shape}`, className);
|
|
10
|
+
const size = Math.max(propsSize, 1);
|
|
11
|
+
if (src && failedSrc !== src) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
12
|
+
src,
|
|
13
|
+
alt,
|
|
14
|
+
width: size,
|
|
15
|
+
height: size,
|
|
16
|
+
className: classes,
|
|
17
|
+
...rest,
|
|
18
|
+
onError: (event) => {
|
|
19
|
+
onError?.(event);
|
|
20
|
+
setFailedSrc(src);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
24
|
+
role: "img",
|
|
25
|
+
"aria-label": alt || void 0,
|
|
26
|
+
"aria-hidden": alt ? void 0 : true,
|
|
27
|
+
className: classes,
|
|
28
|
+
style: {
|
|
29
|
+
width: size,
|
|
30
|
+
height: size
|
|
31
|
+
},
|
|
32
|
+
...rest,
|
|
33
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
34
|
+
"aria-hidden": "true",
|
|
35
|
+
className: "puzzle-avatar-initials",
|
|
36
|
+
children: (0, _puzzle_ui_core.nameToInitials)(alt ?? "")
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
exports.Avatar = Avatar;
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["useState","cn","nameToInitials"],"sources":["../../../../src/components/data-display/avatar/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, nameToInitials } from \"@puzzle-ui/core\";\nimport { useState, type ComponentPropsWithRef } from \"react\";\nimport \"./avatar.css\";\n\ntype AvatarShape = \"circle\" | \"square\";\ntype AvatarProps = Omit<\n ComponentPropsWithRef<\"img\">,\n \"src\" | \"alt\" | \"width\" | \"height\"\n> & {\n src?: string;\n alt?: string;\n size?: number;\n shape?: AvatarShape;\n};\n\nconst Avatar = ({\n src,\n alt,\n size: propsSize = 32,\n shape = \"circle\",\n className,\n onError,\n ...rest\n}: AvatarProps) => {\n const [failedSrc, setFailedSrc] = useState<string | null>(null);\n const classes = cn(\"puzzle-avatar\", `puzzle-avatar-${shape}`, className);\n const size = Math.max(propsSize, 1);\n if (src && failedSrc !== src) {\n return (\n <img\n src={src}\n alt={alt}\n width={size}\n height={size}\n className={classes}\n {...rest}\n onError={(event) => {\n onError?.(event);\n setFailedSrc(src);\n }}\n />\n );\n }\n return (\n <span\n role=\"img\"\n aria-label={alt || undefined}\n aria-hidden={alt ? undefined : true}\n className={classes}\n style={{ width: size, height: size }}\n {...(rest as object)}\n >\n <span aria-hidden=\"true\" className=\"puzzle-avatar-initials\">\n {nameToInitials(alt ?? \"\")}\n </span>\n </span>\n );\n};\n\nexport { Avatar, type AvatarProps, type AvatarShape };\n"],"mappings":";;;;;;AAiBA,MAAM,UAAU,EACd,KACA,KACA,MAAM,YAAY,IAClB,QAAQ,UACR,WACA,SACA,GAAG,WACc;CACjB,MAAM,CAAC,WAAW,iBAAA,GAAgBA,MAAAA,SAAAA,CAAwB,IAAI;CAC9D,MAAM,WAAA,GAAUC,gBAAAA,GAAAA,CAAG,iBAAiB,iBAAiB,SAAS,SAAS;CACvE,MAAM,OAAO,KAAK,IAAI,WAAW,CAAC;CAClC,IAAI,OAAO,cAAc,KACvB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACO;EACA;EACL,OAAO;EACP,QAAQ;EACR,WAAW;EACX,GAAI;EACJ,UAAU,UAAU;GAClB,UAAU,KAAK;GACf,aAAa,GAAG;EAClB;CACD,CAAA;CAGL,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;EACE,MAAK;EACL,cAAY,OAAO,KAAA;EACnB,eAAa,MAAM,KAAA,IAAY;EAC/B,WAAW;EACX,OAAO;GAAE,OAAO;GAAM,QAAQ;EAAK;EACnC,GAAK;EAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,eAAY;GAAO,WAAU;GAChCC,WAAAA,GAAAA,gBAAAA,eAAAA,CAAe,OAAO,EAAE;EACrB,CAAA;CACF,CAAA;AAEV"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
type AvatarShape = "circle" | "square";
|
|
3
|
+
type AvatarProps = Omit<ComponentPropsWithRef<"img">, "src" | "alt" | "width" | "height"> & {
|
|
4
|
+
src?: string;
|
|
5
|
+
alt?: string;
|
|
6
|
+
size?: number;
|
|
7
|
+
shape?: AvatarShape;
|
|
8
|
+
};
|
|
9
|
+
declare const Avatar: ({ src, alt, size: propsSize, shape, className, onError, ...rest }: AvatarProps) => import("react").JSX.Element;
|
|
10
|
+
export { Avatar, type AvatarProps, type AvatarShape };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
type AvatarShape = "circle" | "square";
|
|
3
|
+
type AvatarProps = Omit<ComponentPropsWithRef<"img">, "src" | "alt" | "width" | "height"> & {
|
|
4
|
+
src?: string;
|
|
5
|
+
alt?: string;
|
|
6
|
+
size?: number;
|
|
7
|
+
shape?: AvatarShape;
|
|
8
|
+
};
|
|
9
|
+
declare const Avatar: ({ src, alt, size: propsSize, shape, className, onError, ...rest }: AvatarProps) => import("react").JSX.Element;
|
|
10
|
+
export { Avatar, type AvatarProps, type AvatarShape };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "./avatar.css";
|
|
3
|
+
import { cn, nameToInitials } from "@puzzle-ui/core";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
// src/components/data-display/avatar/index.tsx
|
|
7
|
+
const Avatar = ({ src, alt, size: propsSize = 32, shape = "circle", className, onError, ...rest }) => {
|
|
8
|
+
const [failedSrc, setFailedSrc] = useState(null);
|
|
9
|
+
const classes = cn("puzzle-avatar", `puzzle-avatar-${shape}`, className);
|
|
10
|
+
const size = Math.max(propsSize, 1);
|
|
11
|
+
if (src && failedSrc !== src) return /* @__PURE__ */ jsx("img", {
|
|
12
|
+
src,
|
|
13
|
+
alt,
|
|
14
|
+
width: size,
|
|
15
|
+
height: size,
|
|
16
|
+
className: classes,
|
|
17
|
+
...rest,
|
|
18
|
+
onError: (event) => {
|
|
19
|
+
onError?.(event);
|
|
20
|
+
setFailedSrc(src);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return /* @__PURE__ */ jsx("span", {
|
|
24
|
+
role: "img",
|
|
25
|
+
"aria-label": alt || void 0,
|
|
26
|
+
"aria-hidden": alt ? void 0 : true,
|
|
27
|
+
className: classes,
|
|
28
|
+
style: {
|
|
29
|
+
width: size,
|
|
30
|
+
height: size
|
|
31
|
+
},
|
|
32
|
+
...rest,
|
|
33
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
34
|
+
"aria-hidden": "true",
|
|
35
|
+
className: "puzzle-avatar-initials",
|
|
36
|
+
children: nameToInitials(alt ?? "")
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
export { Avatar };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/data-display/avatar/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn, nameToInitials } from \"@puzzle-ui/core\";\nimport { useState, type ComponentPropsWithRef } from \"react\";\nimport \"./avatar.css\";\n\ntype AvatarShape = \"circle\" | \"square\";\ntype AvatarProps = Omit<\n ComponentPropsWithRef<\"img\">,\n \"src\" | \"alt\" | \"width\" | \"height\"\n> & {\n src?: string;\n alt?: string;\n size?: number;\n shape?: AvatarShape;\n};\n\nconst Avatar = ({\n src,\n alt,\n size: propsSize = 32,\n shape = \"circle\",\n className,\n onError,\n ...rest\n}: AvatarProps) => {\n const [failedSrc, setFailedSrc] = useState<string | null>(null);\n const classes = cn(\"puzzle-avatar\", `puzzle-avatar-${shape}`, className);\n const size = Math.max(propsSize, 1);\n if (src && failedSrc !== src) {\n return (\n <img\n src={src}\n alt={alt}\n width={size}\n height={size}\n className={classes}\n {...rest}\n onError={(event) => {\n onError?.(event);\n setFailedSrc(src);\n }}\n />\n );\n }\n return (\n <span\n role=\"img\"\n aria-label={alt || undefined}\n aria-hidden={alt ? undefined : true}\n className={classes}\n style={{ width: size, height: size }}\n {...(rest as object)}\n >\n <span aria-hidden=\"true\" className=\"puzzle-avatar-initials\">\n {nameToInitials(alt ?? \"\")}\n </span>\n </span>\n );\n};\n\nexport { Avatar, type AvatarProps, type AvatarShape };\n"],"mappings":";;;;;;AAiBA,MAAM,UAAU,EACd,KACA,KACA,MAAM,YAAY,IAClB,QAAQ,UACR,WACA,SACA,GAAG,WACc;CACjB,MAAM,CAAC,WAAW,gBAAgB,SAAwB,IAAI;CAC9D,MAAM,UAAU,GAAG,iBAAiB,iBAAiB,SAAS,SAAS;CACvE,MAAM,OAAO,KAAK,IAAI,WAAW,CAAC;CAClC,IAAI,OAAO,cAAc,KACvB,OACE,oBAAC,OAAD;EACO;EACA;EACL,OAAO;EACP,QAAQ;EACR,WAAW;EACX,GAAI;EACJ,UAAU,UAAU;GAClB,UAAU,KAAK;GACf,aAAa,GAAG;EAClB;CACD,CAAA;CAGL,OACE,oBAAC,QAAD;EACE,MAAK;EACL,cAAY,OAAO,KAAA;EACnB,eAAa,MAAM,KAAA,IAAY;EAC/B,WAAW;EACX,OAAO;GAAE,OAAO;GAAM,QAAQ;EAAK;EACnC,GAAK;EAEL,UAAA,oBAAC,QAAD;GAAM,eAAY;GAAO,WAAU;GAChC,UAAA,eAAe,OAAO,EAAE;EACrB,CAAA;CACF,CAAA;AAEV"}
|