@hyddenlabs/hydn-ui 0.3.0-alpha.99 → 0.3.1
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 +46 -29
- package/dist/components/branding/google-logo.d.ts +14 -0
- package/dist/components/branding/google-logo.d.ts.map +1 -0
- package/dist/components/branding/google-logo.js +49 -0
- package/dist/components/branding/google-logo.js.map +1 -0
- package/dist/components/branding/hydden-logo.d.ts +14 -0
- package/dist/components/branding/hydden-logo.d.ts.map +1 -0
- package/dist/components/branding/hydden-logo.js +8 -0
- package/dist/components/branding/hydden-logo.js.map +1 -0
- package/dist/components/branding/microsoft-logo.d.ts +14 -0
- package/dist/components/branding/microsoft-logo.d.ts.map +1 -0
- package/dist/components/branding/microsoft-logo.js +25 -0
- package/dist/components/branding/microsoft-logo.js.map +1 -0
- package/dist/components/data-display/avatar/avatar.d.ts +24 -0
- package/dist/components/data-display/avatar/avatar.d.ts.map +1 -0
- package/dist/components/data-display/avatar/avatar.js +25 -0
- package/dist/components/data-display/avatar/avatar.js.map +1 -0
- package/dist/components/data-display/avatar/index.d.ts +3 -0
- package/dist/components/data-display/avatar/index.d.ts.map +1 -0
- package/dist/components/data-display/badge/badge.d.ts +24 -0
- package/dist/components/data-display/badge/badge.d.ts.map +1 -0
- package/dist/components/data-display/badge/badge.js +27 -0
- package/dist/components/data-display/badge/badge.js.map +1 -0
- package/dist/components/data-display/badge/index.d.ts +5 -0
- package/dist/components/data-display/badge/index.d.ts.map +1 -0
- package/dist/components/data-display/badge/status-label.d.ts +25 -0
- package/dist/components/data-display/badge/status-label.d.ts.map +1 -0
- package/dist/components/data-display/badge/status-label.js +63 -0
- package/dist/components/data-display/badge/status-label.js.map +1 -0
- package/dist/components/data-display/chip/chip.d.ts +42 -0
- package/dist/components/data-display/chip/chip.d.ts.map +1 -0
- package/dist/components/data-display/chip/chip.js +79 -0
- package/dist/components/data-display/chip/chip.js.map +1 -0
- package/dist/components/data-display/chip/index.d.ts +3 -0
- package/dist/components/data-display/chip/index.d.ts.map +1 -0
- package/dist/components/data-display/code-block/code-block.d.ts +17 -0
- package/dist/components/data-display/code-block/code-block.d.ts.map +1 -0
- package/dist/components/data-display/code-block/code-block.js +34 -0
- package/dist/components/data-display/code-block/code-block.js.map +1 -0
- package/dist/components/data-display/data-table/data-table.d.ts +226 -0
- package/dist/components/data-display/data-table/data-table.d.ts.map +1 -0
- package/dist/components/data-display/data-table/data-table.js +404 -0
- package/dist/components/data-display/data-table/data-table.js.map +1 -0
- package/dist/components/data-display/data-table/index.d.ts +5 -0
- package/dist/components/data-display/data-table/index.d.ts.map +1 -0
- package/dist/components/data-display/data-table/use-table.d.ts +42 -0
- package/dist/components/data-display/data-table/use-table.d.ts.map +1 -0
- package/dist/components/data-display/data-table/use-table.js +120 -0
- package/dist/components/data-display/data-table/use-table.js.map +1 -0
- package/dist/components/data-display/empty-state/empty-state.d.ts +8 -0
- package/dist/components/data-display/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/data-display/empty-state/empty-state.js +17 -0
- package/dist/components/data-display/empty-state/empty-state.js.map +1 -0
- package/dist/components/data-display/empty-state/index.d.ts +3 -0
- package/dist/components/data-display/empty-state/index.d.ts.map +1 -0
- package/dist/components/data-display/list/index.d.ts +3 -0
- package/dist/components/data-display/list/index.d.ts.map +1 -0
- package/dist/components/data-display/list/list.d.ts +31 -0
- package/dist/components/data-display/list/list.d.ts.map +1 -0
- package/dist/components/data-display/list/list.js +16 -0
- package/dist/components/data-display/list/list.js.map +1 -0
- package/dist/components/data-display/table/index.d.ts +3 -0
- package/dist/components/data-display/table/index.d.ts.map +1 -0
- package/dist/components/data-display/table/table.d.ts +101 -0
- package/dist/components/data-display/table/table.d.ts.map +1 -0
- package/dist/components/data-display/table/table.js +98 -0
- package/dist/components/data-display/table/table.js.map +1 -0
- package/dist/components/data-display/timeline/index.d.ts +3 -0
- package/dist/components/data-display/timeline/index.d.ts.map +1 -0
- package/dist/components/data-display/timeline/timeline.d.ts +57 -0
- package/dist/components/data-display/timeline/timeline.d.ts.map +1 -0
- package/dist/components/data-display/timeline/timeline.js +52 -0
- package/dist/components/data-display/timeline/timeline.js.map +1 -0
- package/dist/components/feedback/alert/alert.d.ts +27 -0
- package/dist/components/feedback/alert/alert.d.ts.map +1 -0
- package/dist/components/feedback/alert/alert.js +86 -0
- package/dist/components/feedback/alert/alert.js.map +1 -0
- package/dist/components/feedback/alert/index.d.ts +3 -0
- package/dist/components/feedback/alert/index.d.ts.map +1 -0
- package/dist/components/feedback/dialog/delete-dialog.d.ts +41 -0
- package/dist/components/feedback/dialog/delete-dialog.d.ts.map +1 -0
- package/dist/components/feedback/dialog/delete-dialog.js +52 -0
- package/dist/components/feedback/dialog/delete-dialog.js.map +1 -0
- package/dist/components/feedback/dialog/dialog.d.ts +24 -0
- package/dist/components/feedback/dialog/dialog.d.ts.map +1 -0
- package/dist/components/feedback/dialog/dialog.js +15 -0
- package/dist/components/feedback/dialog/dialog.js.map +1 -0
- package/dist/components/feedback/dialog/index.d.ts +5 -0
- package/dist/components/feedback/dialog/index.d.ts.map +1 -0
- package/dist/components/feedback/error-page/error-400.d.ts +22 -0
- package/dist/components/feedback/error-page/error-400.d.ts.map +1 -0
- package/dist/components/feedback/error-page/error-400.js +28 -0
- package/dist/components/feedback/error-page/error-400.js.map +1 -0
- package/dist/components/feedback/error-page/error-401.d.ts +26 -0
- package/dist/components/feedback/error-page/error-401.d.ts.map +1 -0
- package/dist/components/feedback/error-page/error-401.js +33 -0
- package/dist/components/feedback/error-page/error-401.js.map +1 -0
- package/dist/components/feedback/error-page/error-403.d.ts +26 -0
- package/dist/components/feedback/error-page/error-403.d.ts.map +1 -0
- package/dist/components/feedback/error-page/error-403.js +33 -0
- package/dist/components/feedback/error-page/error-403.js.map +1 -0
- package/dist/components/feedback/error-page/error-404.d.ts +26 -0
- package/dist/components/feedback/error-page/error-404.d.ts.map +1 -0
- package/dist/components/feedback/error-page/error-404.js +33 -0
- package/dist/components/feedback/error-page/error-404.js.map +1 -0
- package/dist/components/feedback/error-page/index.d.ts +9 -0
- package/dist/components/feedback/error-page/index.d.ts.map +1 -0
- package/dist/components/feedback/loading-container/index.d.ts +3 -0
- package/dist/components/feedback/loading-container/index.d.ts.map +1 -0
- package/dist/components/feedback/loading-container/loading-container.d.ts +16 -0
- package/dist/components/feedback/loading-container/loading-container.d.ts.map +1 -0
- package/dist/components/feedback/loading-container/loading-container.js +28 -0
- package/dist/components/feedback/loading-container/loading-container.js.map +1 -0
- package/dist/components/feedback/modal/index.d.ts +3 -0
- package/dist/components/feedback/modal/index.d.ts.map +1 -0
- package/dist/components/feedback/modal/modal.d.ts +33 -0
- package/dist/components/feedback/modal/modal.d.ts.map +1 -0
- package/dist/components/feedback/modal/modal.js +88 -0
- package/dist/components/feedback/modal/modal.js.map +1 -0
- package/dist/components/feedback/overlay/useOverlay.d.ts +24 -0
- package/dist/components/feedback/overlay/useOverlay.d.ts.map +1 -0
- package/dist/components/feedback/overlay/useOverlay.js +119 -0
- package/dist/components/feedback/overlay/useOverlay.js.map +1 -0
- package/dist/components/feedback/popover/index.d.ts +3 -0
- package/dist/components/feedback/popover/index.d.ts.map +1 -0
- package/dist/components/feedback/popover/popover.d.ts +25 -0
- package/dist/components/feedback/popover/popover.d.ts.map +1 -0
- package/dist/components/feedback/popover/popover.js +118 -0
- package/dist/components/feedback/popover/popover.js.map +1 -0
- package/dist/components/feedback/progress-bar/index.d.ts +3 -0
- package/dist/components/feedback/progress-bar/index.d.ts.map +1 -0
- package/dist/components/feedback/progress-bar/progress-bar.d.ts +22 -0
- package/dist/components/feedback/progress-bar/progress-bar.d.ts.map +1 -0
- package/dist/components/feedback/progress-bar/progress-bar.js +27 -0
- package/dist/components/feedback/progress-bar/progress-bar.js.map +1 -0
- package/dist/components/feedback/skeleton/index.d.ts +3 -0
- package/dist/components/feedback/skeleton/index.d.ts.map +1 -0
- package/dist/components/feedback/skeleton/skeleton.d.ts +19 -0
- package/dist/components/feedback/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/feedback/skeleton/skeleton.js +28 -0
- package/dist/components/feedback/skeleton/skeleton.js.map +1 -0
- package/dist/components/feedback/smooth-transition/index.d.ts +3 -0
- package/dist/components/feedback/smooth-transition/index.d.ts.map +1 -0
- package/dist/components/feedback/smooth-transition/smooth-transition.d.ts +68 -0
- package/dist/components/feedback/smooth-transition/smooth-transition.d.ts.map +1 -0
- package/dist/components/feedback/smooth-transition/smooth-transition.js +89 -0
- package/dist/components/feedback/smooth-transition/smooth-transition.js.map +1 -0
- package/dist/components/feedback/spinner/index.d.ts +3 -0
- package/dist/components/feedback/spinner/index.d.ts.map +1 -0
- package/dist/components/feedback/spinner/spinner.d.ts +21 -0
- package/dist/components/feedback/spinner/spinner.d.ts.map +1 -0
- package/dist/components/feedback/spinner/spinner.js +27 -0
- package/dist/components/feedback/spinner/spinner.js.map +1 -0
- package/dist/components/feedback/toast/index.d.ts +3 -0
- package/dist/components/feedback/toast/index.d.ts.map +1 -0
- package/dist/components/feedback/toast/toast.d.ts +23 -0
- package/dist/components/feedback/toast/toast.d.ts.map +1 -0
- package/dist/components/feedback/toast/toast.js +45 -0
- package/dist/components/feedback/toast/toast.js.map +1 -0
- package/dist/components/feedback/tooltip/index.d.ts +3 -0
- package/dist/components/feedback/tooltip/index.d.ts.map +1 -0
- package/dist/components/feedback/tooltip/tooltip.d.ts +39 -0
- package/dist/components/feedback/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/feedback/tooltip/tooltip.js +129 -0
- package/dist/components/feedback/tooltip/tooltip.js.map +1 -0
- package/dist/components/forms/button/button-with-icon.d.ts +18 -0
- package/dist/components/forms/button/button-with-icon.d.ts.map +1 -0
- package/dist/components/forms/button/button-with-icon.js +15 -0
- package/dist/components/forms/button/button-with-icon.js.map +1 -0
- package/dist/components/forms/button/button.d.ts +66 -0
- package/dist/components/forms/button/button.d.ts.map +1 -0
- package/dist/components/forms/button/button.examples.d.ts +73 -0
- package/dist/components/forms/button/button.examples.d.ts.map +1 -0
- package/dist/components/forms/button/button.js +118 -0
- package/dist/components/forms/button/button.js.map +1 -0
- package/dist/components/forms/button/icon-button.d.ts +23 -0
- package/dist/components/forms/button/icon-button.d.ts.map +1 -0
- package/dist/components/forms/button/icon-button.js +85 -0
- package/dist/components/forms/button/icon-button.js.map +1 -0
- package/dist/components/forms/button/index.d.ts +10 -0
- package/dist/components/forms/button/index.d.ts.map +1 -0
- package/dist/components/forms/button/inline-button.d.ts +45 -0
- package/dist/components/forms/button/inline-button.d.ts.map +1 -0
- package/dist/components/forms/button/inline-button.js +59 -0
- package/dist/components/forms/button/inline-button.js.map +1 -0
- package/dist/components/forms/button-group/button-group.d.ts +20 -0
- package/dist/components/forms/button-group/button-group.d.ts.map +1 -0
- package/dist/components/forms/button-group/button-group.js +24 -0
- package/dist/components/forms/button-group/button-group.js.map +1 -0
- package/dist/components/forms/button-group/index.d.ts +3 -0
- package/dist/components/forms/button-group/index.d.ts.map +1 -0
- package/dist/components/forms/calendar/calendar.d.ts +37 -0
- package/dist/components/forms/calendar/calendar.d.ts.map +1 -0
- package/dist/components/forms/calendar/calendar.js +131 -0
- package/dist/components/forms/calendar/calendar.js.map +1 -0
- package/dist/components/forms/calendar/index.d.ts +3 -0
- package/dist/components/forms/calendar/index.d.ts.map +1 -0
- package/dist/components/forms/checkbox/checkbox.d.ts +31 -0
- package/dist/components/forms/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/forms/checkbox/checkbox.js +39 -0
- package/dist/components/forms/checkbox/checkbox.js.map +1 -0
- package/dist/components/forms/checkbox/index.d.ts +3 -0
- package/dist/components/forms/checkbox/index.d.ts.map +1 -0
- package/dist/components/forms/code/code.d.ts +32 -0
- package/dist/components/forms/code/code.d.ts.map +1 -0
- package/dist/components/forms/code/code.js +31 -0
- package/dist/components/forms/code/code.js.map +1 -0
- package/dist/components/forms/code/index.d.ts +1 -0
- package/dist/components/forms/code/index.d.ts.map +1 -0
- package/dist/components/forms/date-picker/date-picker.d.ts +72 -0
- package/dist/components/forms/date-picker/date-picker.d.ts.map +1 -0
- package/dist/components/forms/date-picker/date-picker.js +173 -0
- package/dist/components/forms/date-picker/date-picker.js.map +1 -0
- package/dist/components/forms/date-picker/index.d.ts +3 -0
- package/dist/components/forms/date-picker/index.d.ts.map +1 -0
- package/dist/components/forms/editable-text/editable-text.d.ts +59 -0
- package/dist/components/forms/editable-text/editable-text.d.ts.map +1 -0
- package/dist/components/forms/editable-text/editable-text.js +188 -0
- package/dist/components/forms/editable-text/editable-text.js.map +1 -0
- package/dist/components/forms/editable-text/index.d.ts +3 -0
- package/dist/components/forms/editable-text/index.d.ts.map +1 -0
- package/dist/components/forms/fieldset/fieldset.d.ts +46 -0
- package/dist/components/forms/fieldset/fieldset.d.ts.map +1 -0
- package/dist/components/forms/fieldset/fieldset.js +40 -0
- package/dist/components/forms/fieldset/fieldset.js.map +1 -0
- package/dist/components/forms/fieldset/index.d.ts +3 -0
- package/dist/components/forms/fieldset/index.d.ts.map +1 -0
- package/dist/components/forms/form/form-example.d.ts +11 -0
- package/dist/components/forms/form/form-example.d.ts.map +1 -0
- package/dist/components/forms/form/form.d.ts +44 -0
- package/dist/components/forms/form/form.d.ts.map +1 -0
- package/dist/components/forms/form/form.js +39 -0
- package/dist/components/forms/form/form.js.map +1 -0
- package/dist/components/forms/form/index.d.ts +3 -0
- package/dist/components/forms/form/index.d.ts.map +1 -0
- package/dist/components/forms/form-checkbox/form-checkbox.d.ts +27 -0
- package/dist/components/forms/form-checkbox/form-checkbox.d.ts.map +1 -0
- package/dist/components/forms/form-checkbox/form-checkbox.js +58 -0
- package/dist/components/forms/form-checkbox/form-checkbox.js.map +1 -0
- package/dist/components/forms/form-checkbox/index.d.ts +3 -0
- package/dist/components/forms/form-checkbox/index.d.ts.map +1 -0
- package/dist/components/forms/form-checkbox-group/form-checkbox-group.d.ts +40 -0
- package/dist/components/forms/form-checkbox-group/form-checkbox-group.d.ts.map +1 -0
- package/dist/components/forms/form-checkbox-group/form-checkbox-group.js +74 -0
- package/dist/components/forms/form-checkbox-group/form-checkbox-group.js.map +1 -0
- package/dist/components/forms/form-field/form-field.d.ts +53 -0
- package/dist/components/forms/form-field/form-field.d.ts.map +1 -0
- package/dist/components/forms/form-field/form-field.js +56 -0
- package/dist/components/forms/form-field/form-field.js.map +1 -0
- package/dist/components/forms/form-field/index.d.ts +3 -0
- package/dist/components/forms/form-field/index.d.ts.map +1 -0
- package/dist/components/forms/form-input/form-input.d.ts +60 -0
- package/dist/components/forms/form-input/form-input.d.ts.map +1 -0
- package/dist/components/forms/form-input/form-input.js +53 -0
- package/dist/components/forms/form-input/form-input.js.map +1 -0
- package/dist/components/forms/form-select/form-select.d.ts +32 -0
- package/dist/components/forms/form-select/form-select.d.ts.map +1 -0
- package/dist/components/forms/form-select/form-select.js +34 -0
- package/dist/components/forms/form-select/form-select.js.map +1 -0
- package/dist/components/forms/form-textarea/form-textarea.d.ts +31 -0
- package/dist/components/forms/form-textarea/form-textarea.d.ts.map +1 -0
- package/dist/components/forms/form-textarea/form-textarea.js +34 -0
- package/dist/components/forms/form-textarea/form-textarea.js.map +1 -0
- package/dist/components/forms/input/index.d.ts +3 -0
- package/dist/components/forms/input/index.d.ts.map +1 -0
- package/dist/components/forms/input/input.d.ts +71 -0
- package/dist/components/forms/input/input.d.ts.map +1 -0
- package/dist/components/forms/input/input.js +64 -0
- package/dist/components/forms/input/input.js.map +1 -0
- package/dist/components/forms/input-group/index.d.ts +3 -0
- package/dist/components/forms/input-group/index.d.ts.map +1 -0
- package/dist/components/forms/input-group/input-group.d.ts +43 -0
- package/dist/components/forms/input-group/input-group.d.ts.map +1 -0
- package/dist/components/forms/input-group/input-group.js +55 -0
- package/dist/components/forms/input-group/input-group.js.map +1 -0
- package/dist/components/forms/multi-select/index.d.ts +3 -0
- package/dist/components/forms/multi-select/index.d.ts.map +1 -0
- package/dist/components/forms/multi-select/multi-select.d.ts +75 -0
- package/dist/components/forms/multi-select/multi-select.d.ts.map +1 -0
- package/dist/components/forms/multi-select/multi-select.js +259 -0
- package/dist/components/forms/multi-select/multi-select.js.map +1 -0
- package/dist/components/forms/radio/index.d.ts +3 -0
- package/dist/components/forms/radio/index.d.ts.map +1 -0
- package/dist/components/forms/radio/radio.d.ts +31 -0
- package/dist/components/forms/radio/radio.d.ts.map +1 -0
- package/dist/components/forms/radio/radio.js +74 -0
- package/dist/components/forms/radio/radio.js.map +1 -0
- package/dist/components/forms/radio-group/index.d.ts +3 -0
- package/dist/components/forms/radio-group/index.d.ts.map +1 -0
- package/dist/components/forms/radio-group/radio-group.d.ts +32 -0
- package/dist/components/forms/radio-group/radio-group.d.ts.map +1 -0
- package/dist/components/forms/radio-group/radio-group.js +28 -0
- package/dist/components/forms/radio-group/radio-group.js.map +1 -0
- package/dist/components/forms/select/index.d.ts +5 -0
- package/dist/components/forms/select/index.d.ts.map +1 -0
- package/dist/components/forms/select/select-item.d.ts +16 -0
- package/dist/components/forms/select/select-item.d.ts.map +1 -0
- package/dist/components/forms/select/select-item.js +9 -0
- package/dist/components/forms/select/select-item.js.map +1 -0
- package/dist/components/forms/select/select.d.ts +52 -0
- package/dist/components/forms/select/select.d.ts.map +1 -0
- package/dist/components/forms/select/select.js +51 -0
- package/dist/components/forms/select/select.js.map +1 -0
- package/dist/components/forms/slider/index.d.ts +3 -0
- package/dist/components/forms/slider/index.d.ts.map +1 -0
- package/dist/components/forms/slider/slider.d.ts +21 -0
- package/dist/components/forms/slider/slider.d.ts.map +1 -0
- package/dist/components/forms/slider/slider.js +65 -0
- package/dist/components/forms/slider/slider.js.map +1 -0
- package/dist/components/forms/switch/index.d.ts +3 -0
- package/dist/components/forms/switch/index.d.ts.map +1 -0
- package/dist/components/forms/switch/switch.d.ts +30 -0
- package/dist/components/forms/switch/switch.d.ts.map +1 -0
- package/dist/components/forms/switch/switch.js +104 -0
- package/dist/components/forms/switch/switch.js.map +1 -0
- package/dist/components/forms/textarea/index.d.ts +3 -0
- package/dist/components/forms/textarea/index.d.ts.map +1 -0
- package/dist/components/forms/textarea/textarea.d.ts +54 -0
- package/dist/components/forms/textarea/textarea.d.ts.map +1 -0
- package/dist/components/forms/textarea/textarea.js +55 -0
- package/dist/components/forms/textarea/textarea.js.map +1 -0
- package/dist/components/index.d.ts +124 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/layout/accordion/accordion.d.ts +30 -0
- package/dist/components/layout/accordion/accordion.d.ts.map +1 -0
- package/dist/components/layout/accordion/accordion.js +38 -0
- package/dist/components/layout/accordion/accordion.js.map +1 -0
- package/dist/components/layout/accordion/index.d.ts +3 -0
- package/dist/components/layout/accordion/index.d.ts.map +1 -0
- package/dist/components/layout/action-card/action-card.d.ts +37 -0
- package/dist/components/layout/action-card/action-card.d.ts.map +1 -0
- package/dist/components/layout/action-card/action-card.js +104 -0
- package/dist/components/layout/action-card/action-card.js.map +1 -0
- package/dist/components/layout/action-card/index.d.ts +3 -0
- package/dist/components/layout/action-card/index.d.ts.map +1 -0
- package/dist/components/layout/card/card-actions.d.ts +47 -0
- package/dist/components/layout/card/card-actions.d.ts.map +1 -0
- package/dist/components/layout/card/card-actions.js +30 -0
- package/dist/components/layout/card/card-actions.js.map +1 -0
- package/dist/components/layout/card/card-body.d.ts +26 -0
- package/dist/components/layout/card/card-body.d.ts.map +1 -0
- package/dist/components/layout/card/card-body.js +22 -0
- package/dist/components/layout/card/card-body.js.map +1 -0
- package/dist/components/layout/card/card-figure.d.ts +50 -0
- package/dist/components/layout/card/card-figure.d.ts.map +1 -0
- package/dist/components/layout/card/card-figure.js +27 -0
- package/dist/components/layout/card/card-figure.js.map +1 -0
- package/dist/components/layout/card/card-footer.d.ts +46 -0
- package/dist/components/layout/card/card-footer.d.ts.map +1 -0
- package/dist/components/layout/card/card-footer.js +39 -0
- package/dist/components/layout/card/card-footer.js.map +1 -0
- package/dist/components/layout/card/card-header.d.ts +41 -0
- package/dist/components/layout/card/card-header.d.ts.map +1 -0
- package/dist/components/layout/card/card-header.js +27 -0
- package/dist/components/layout/card/card-header.js.map +1 -0
- package/dist/components/layout/card/card-title.d.ts +43 -0
- package/dist/components/layout/card/card-title.d.ts.map +1 -0
- package/dist/components/layout/card/card-title.js +21 -0
- package/dist/components/layout/card/card-title.js.map +1 -0
- package/dist/components/layout/card/card.d.ts +74 -0
- package/dist/components/layout/card/card.d.ts.map +1 -0
- package/dist/components/layout/card/card.js +64 -0
- package/dist/components/layout/card/card.js.map +1 -0
- package/dist/components/layout/card/index.d.ts +15 -0
- package/dist/components/layout/card/index.d.ts.map +1 -0
- package/dist/components/layout/container/container.d.ts +33 -0
- package/dist/components/layout/container/container.d.ts.map +1 -0
- package/dist/components/layout/container/container.js +36 -0
- package/dist/components/layout/container/container.js.map +1 -0
- package/dist/components/layout/container/index.d.ts +3 -0
- package/dist/components/layout/container/index.d.ts.map +1 -0
- package/dist/components/layout/divider/divider.d.ts +15 -0
- package/dist/components/layout/divider/divider.d.ts.map +1 -0
- package/dist/components/layout/divider/divider.js +10 -0
- package/dist/components/layout/divider/divider.js.map +1 -0
- package/dist/components/layout/divider/index.d.ts +3 -0
- package/dist/components/layout/divider/index.d.ts.map +1 -0
- package/dist/components/layout/drawer/drawer.d.ts +35 -0
- package/dist/components/layout/drawer/drawer.d.ts.map +1 -0
- package/dist/components/layout/drawer/drawer.js +108 -0
- package/dist/components/layout/drawer/drawer.js.map +1 -0
- package/dist/components/layout/drawer/index.d.ts +3 -0
- package/dist/components/layout/drawer/index.d.ts.map +1 -0
- package/dist/components/layout/feature-section/feature-section.d.ts +36 -0
- package/dist/components/layout/feature-section/feature-section.d.ts.map +1 -0
- package/dist/components/layout/feature-section/feature-section.js +37 -0
- package/dist/components/layout/feature-section/feature-section.js.map +1 -0
- package/dist/components/layout/feature-section/index.d.ts +3 -0
- package/dist/components/layout/feature-section/index.d.ts.map +1 -0
- package/dist/components/layout/footer/footer.d.ts +37 -0
- package/dist/components/layout/footer/footer.d.ts.map +1 -0
- package/dist/components/layout/footer/footer.js +36 -0
- package/dist/components/layout/footer/footer.js.map +1 -0
- package/dist/components/layout/footer/index.d.ts +3 -0
- package/dist/components/layout/footer/index.d.ts.map +1 -0
- package/dist/components/layout/grid/grid.d.ts +66 -0
- package/dist/components/layout/grid/grid.d.ts.map +1 -0
- package/dist/components/layout/grid/grid.js +62 -0
- package/dist/components/layout/grid/grid.js.map +1 -0
- package/dist/components/layout/grid/index.d.ts +3 -0
- package/dist/components/layout/grid/index.d.ts.map +1 -0
- package/dist/components/layout/hero/hero.d.ts +61 -0
- package/dist/components/layout/hero/hero.d.ts.map +1 -0
- package/dist/components/layout/hero/hero.js +79 -0
- package/dist/components/layout/hero/hero.js.map +1 -0
- package/dist/components/layout/hero/index.d.ts +3 -0
- package/dist/components/layout/hero/index.d.ts.map +1 -0
- package/dist/components/layout/left-nav-layout/index.d.ts +7 -0
- package/dist/components/layout/left-nav-layout/index.d.ts.map +1 -0
- package/dist/components/layout/left-nav-layout/left-nav-item.d.ts +56 -0
- package/dist/components/layout/left-nav-layout/left-nav-item.d.ts.map +1 -0
- package/dist/components/layout/left-nav-layout/left-nav-item.js +105 -0
- package/dist/components/layout/left-nav-layout/left-nav-item.js.map +1 -0
- package/dist/components/layout/left-nav-layout/left-nav-layout.d.ts +67 -0
- package/dist/components/layout/left-nav-layout/left-nav-layout.d.ts.map +1 -0
- package/dist/components/layout/left-nav-layout/left-nav-layout.js +182 -0
- package/dist/components/layout/left-nav-layout/left-nav-layout.js.map +1 -0
- package/dist/components/layout/left-nav-layout/left-nav-section.d.ts +40 -0
- package/dist/components/layout/left-nav-layout/left-nav-section.d.ts.map +1 -0
- package/dist/components/layout/left-nav-layout/left-nav-section.js +119 -0
- package/dist/components/layout/left-nav-layout/left-nav-section.js.map +1 -0
- package/dist/components/layout/page/index.d.ts +3 -0
- package/dist/components/layout/page/index.d.ts.map +1 -0
- package/dist/components/layout/page/page.d.ts +17 -0
- package/dist/components/layout/page/page.d.ts.map +1 -0
- package/dist/components/layout/page/page.js +9 -0
- package/dist/components/layout/page/page.js.map +1 -0
- package/dist/components/layout/page-header/index.d.ts +3 -0
- package/dist/components/layout/page-header/index.d.ts.map +1 -0
- package/dist/components/layout/page-header/page-header.d.ts +21 -0
- package/dist/components/layout/page-header/page-header.d.ts.map +1 -0
- package/dist/components/layout/page-header/page-header.js +18 -0
- package/dist/components/layout/page-header/page-header.js.map +1 -0
- package/dist/components/layout/page-transition/index.d.ts +3 -0
- package/dist/components/layout/page-transition/index.d.ts.map +1 -0
- package/dist/components/layout/page-transition/page-transition.d.ts +52 -0
- package/dist/components/layout/page-transition/page-transition.d.ts.map +1 -0
- package/dist/components/layout/page-transition/page-transition.js +43 -0
- package/dist/components/layout/page-transition/page-transition.js.map +1 -0
- package/dist/components/layout/section/index.d.ts +3 -0
- package/dist/components/layout/section/index.d.ts.map +1 -0
- package/dist/components/layout/section/section.d.ts +35 -0
- package/dist/components/layout/section/section.d.ts.map +1 -0
- package/dist/components/layout/section/section.js +18 -0
- package/dist/components/layout/section/section.js.map +1 -0
- package/dist/components/layout/section-header/index.d.ts +3 -0
- package/dist/components/layout/section-header/index.d.ts.map +1 -0
- package/dist/components/layout/section-header/section-header.d.ts +23 -0
- package/dist/components/layout/section-header/section-header.d.ts.map +1 -0
- package/dist/components/layout/section-header/section-header.js +18 -0
- package/dist/components/layout/section-header/section-header.js.map +1 -0
- package/dist/components/layout/settings-page/index.d.ts +4 -0
- package/dist/components/layout/settings-page/index.d.ts.map +1 -0
- package/dist/components/layout/settings-page/setting-item.d.ts +52 -0
- package/dist/components/layout/settings-page/setting-item.d.ts.map +1 -0
- package/dist/components/layout/settings-page/setting-item.js +31 -0
- package/dist/components/layout/settings-page/setting-item.js.map +1 -0
- package/dist/components/layout/settings-page/settings-page.d.ts +37 -0
- package/dist/components/layout/settings-page/settings-page.d.ts.map +1 -0
- package/dist/components/layout/settings-page/settings-page.js +18 -0
- package/dist/components/layout/settings-page/settings-page.js.map +1 -0
- package/dist/components/layout/settings-page/settings-section.d.ts +35 -0
- package/dist/components/layout/settings-page/settings-section.d.ts.map +1 -0
- package/dist/components/layout/settings-page/settings-section.js +17 -0
- package/dist/components/layout/settings-page/settings-section.js.map +1 -0
- package/dist/components/layout/stack/index.d.ts +3 -0
- package/dist/components/layout/stack/index.d.ts.map +1 -0
- package/dist/components/layout/stack/stack.d.ts +33 -0
- package/dist/components/layout/stack/stack.d.ts.map +1 -0
- package/dist/components/layout/stack/stack.js +44 -0
- package/dist/components/layout/stack/stack.js.map +1 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +61 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +30 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/components/navigation/breadcrumbs/index.d.ts +3 -0
- package/dist/components/navigation/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/navigation/dropdown/dropdown.d.ts +83 -0
- package/dist/components/navigation/dropdown/dropdown.d.ts.map +1 -0
- package/dist/components/navigation/dropdown/dropdown.js +295 -0
- package/dist/components/navigation/dropdown/dropdown.js.map +1 -0
- package/dist/components/navigation/dropdown/index.d.ts +5 -0
- package/dist/components/navigation/dropdown/index.d.ts.map +1 -0
- package/dist/components/navigation/nav/index.d.ts +3 -0
- package/dist/components/navigation/nav/index.d.ts.map +1 -0
- package/dist/components/navigation/nav/nav.d.ts +24 -0
- package/dist/components/navigation/nav/nav.d.ts.map +1 -0
- package/dist/components/navigation/nav/nav.js +32 -0
- package/dist/components/navigation/nav/nav.js.map +1 -0
- package/dist/components/navigation/nav-dropdown/index.d.ts +5 -0
- package/dist/components/navigation/nav-dropdown/index.d.ts.map +1 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown-item.d.ts +17 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown-item.d.ts.map +1 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown-item.js +17 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown-item.js.map +1 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown.d.ts +20 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown.d.ts.map +1 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown.js +24 -0
- package/dist/components/navigation/nav-dropdown/nav-dropdown.js.map +1 -0
- package/dist/components/navigation/navbar/index.d.ts +9 -0
- package/dist/components/navigation/navbar/index.d.ts.map +1 -0
- package/dist/components/navigation/navbar/navbar-brand.d.ts +23 -0
- package/dist/components/navigation/navbar/navbar-brand.d.ts.map +1 -0
- package/dist/components/navigation/navbar/navbar-brand.js +21 -0
- package/dist/components/navigation/navbar/navbar-brand.js.map +1 -0
- package/dist/components/navigation/navbar/navbar-link.d.ts +23 -0
- package/dist/components/navigation/navbar/navbar-link.d.ts.map +1 -0
- package/dist/components/navigation/navbar/navbar-link.js +34 -0
- package/dist/components/navigation/navbar/navbar-link.js.map +1 -0
- package/dist/components/navigation/navbar/navbar-toggle.d.ts +34 -0
- package/dist/components/navigation/navbar/navbar-toggle.d.ts.map +1 -0
- package/dist/components/navigation/navbar/navbar-toggle.js +37 -0
- package/dist/components/navigation/navbar/navbar-toggle.js.map +1 -0
- package/dist/components/navigation/navbar/navbar.d.ts +33 -0
- package/dist/components/navigation/navbar/navbar.d.ts.map +1 -0
- package/dist/components/navigation/navbar/navbar.js +40 -0
- package/dist/components/navigation/navbar/navbar.js.map +1 -0
- package/dist/components/navigation/notification-dropdown/index.d.ts +3 -0
- package/dist/components/navigation/notification-dropdown/index.d.ts.map +1 -0
- package/dist/components/navigation/notification-dropdown/notification-dropdown.d.ts +59 -0
- package/dist/components/navigation/notification-dropdown/notification-dropdown.d.ts.map +1 -0
- package/dist/components/navigation/notification-dropdown/notification-dropdown.js +456 -0
- package/dist/components/navigation/notification-dropdown/notification-dropdown.js.map +1 -0
- package/dist/components/navigation/pagination/index.d.ts +3 -0
- package/dist/components/navigation/pagination/index.d.ts.map +1 -0
- package/dist/components/navigation/pagination/pagination.d.ts +21 -0
- package/dist/components/navigation/pagination/pagination.d.ts.map +1 -0
- package/dist/components/navigation/pagination/pagination.js +72 -0
- package/dist/components/navigation/pagination/pagination.js.map +1 -0
- package/dist/components/navigation/scroll-nav/index.d.ts +3 -0
- package/dist/components/navigation/scroll-nav/index.d.ts.map +1 -0
- package/dist/components/navigation/scroll-nav/scroll-nav.d.ts +53 -0
- package/dist/components/navigation/scroll-nav/scroll-nav.d.ts.map +1 -0
- package/dist/components/navigation/scroll-nav/scroll-nav.js +188 -0
- package/dist/components/navigation/scroll-nav/scroll-nav.js.map +1 -0
- package/dist/components/navigation/sidebar/index.d.ts +3 -0
- package/dist/components/navigation/sidebar/index.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.d.ts +18 -0
- package/dist/components/navigation/sidebar/sidebar.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/sidebar.js +41 -0
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -0
- package/dist/components/navigation/stepper/index.d.ts +3 -0
- package/dist/components/navigation/stepper/index.d.ts.map +1 -0
- package/dist/components/navigation/stepper/stepper.d.ts +50 -0
- package/dist/components/navigation/stepper/stepper.d.ts.map +1 -0
- package/dist/components/navigation/stepper/stepper.js +159 -0
- package/dist/components/navigation/stepper/stepper.js.map +1 -0
- package/dist/components/navigation/tabs/index.d.ts +3 -0
- package/dist/components/navigation/tabs/index.d.ts.map +1 -0
- package/dist/components/navigation/tabs/tabs.d.ts +32 -0
- package/dist/components/navigation/tabs/tabs.d.ts.map +1 -0
- package/dist/components/navigation/tabs/tabs.js +61 -0
- package/dist/components/navigation/tabs/tabs.js.map +1 -0
- package/dist/components/system/auth-provider/auth-provider.d.ts +103 -0
- package/dist/components/system/auth-provider/auth-provider.d.ts.map +1 -0
- package/dist/components/system/auth-provider/auth-provider.js +118 -0
- package/dist/components/system/auth-provider/auth-provider.js.map +1 -0
- package/dist/components/system/auth-provider/auth-utils.d.ts +32 -0
- package/dist/components/system/auth-provider/auth-utils.d.ts.map +1 -0
- package/dist/components/system/auth-provider/auth-utils.js +83 -0
- package/dist/components/system/auth-provider/auth-utils.js.map +1 -0
- package/dist/components/system/auth-provider/index.d.ts +4 -0
- package/dist/components/system/auth-provider/index.d.ts.map +1 -0
- package/dist/components/system/color-mode-toggle/color-mode-toggle.d.ts +18 -0
- package/dist/components/system/color-mode-toggle/color-mode-toggle.d.ts.map +1 -0
- package/dist/components/system/color-mode-toggle/color-mode-toggle.js +27 -0
- package/dist/components/system/color-mode-toggle/color-mode-toggle.js.map +1 -0
- package/dist/components/system/color-mode-toggle/index.d.ts +3 -0
- package/dist/components/system/color-mode-toggle/index.d.ts.map +1 -0
- package/dist/components/system/error-boundary/error-boundary.d.ts +21 -0
- package/dist/components/system/error-boundary/error-boundary.d.ts.map +1 -0
- package/dist/components/system/icon/icon.d.ts +35 -0
- package/dist/components/system/icon/icon.d.ts.map +1 -0
- package/dist/components/system/icon/icon.js +83 -0
- package/dist/components/system/icon/icon.js.map +1 -0
- package/dist/components/system/icon/index.d.ts +3 -0
- package/dist/components/system/icon/index.d.ts.map +1 -0
- package/dist/components/system/theme-provider/index.d.ts +3 -0
- package/dist/components/system/theme-provider/index.d.ts.map +1 -0
- package/dist/components/system/theme-provider/theme-provider.d.ts +40 -0
- package/dist/components/system/theme-provider/theme-provider.d.ts.map +1 -0
- package/dist/components/system/theme-provider/theme-provider.js +55 -0
- package/dist/components/system/theme-provider/theme-provider.js.map +1 -0
- package/dist/components/typography/code/code.d.ts +24 -0
- package/dist/components/typography/code/code.d.ts.map +1 -0
- package/dist/components/typography/code/code.js +18 -0
- package/dist/components/typography/code/code.js.map +1 -0
- package/dist/components/typography/code/index.d.ts +3 -0
- package/dist/components/typography/code/index.d.ts.map +1 -0
- package/dist/components/typography/heading/heading.d.ts +32 -0
- package/dist/components/typography/heading/heading.d.ts.map +1 -0
- package/dist/components/typography/heading/heading.js +39 -0
- package/dist/components/typography/heading/heading.js.map +1 -0
- package/dist/components/typography/heading/index.d.ts +3 -0
- package/dist/components/typography/heading/index.d.ts.map +1 -0
- package/dist/components/typography/link/index.d.ts +3 -0
- package/dist/components/typography/link/index.d.ts.map +1 -0
- package/dist/components/typography/link/link.d.ts +44 -0
- package/dist/components/typography/link/link.d.ts.map +1 -0
- package/dist/components/typography/link/link.js +72 -0
- package/dist/components/typography/link/link.js.map +1 -0
- package/dist/components/typography/text/index.d.ts +3 -0
- package/dist/components/typography/text/index.d.ts.map +1 -0
- package/dist/components/typography/text/text.d.ts +104 -0
- package/dist/components/typography/text/text.d.ts.map +1 -0
- package/dist/components/typography/text/text.js +148 -0
- package/dist/components/typography/text/text.js.map +1 -0
- package/dist/components.d.ts +2 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/hooks/useDebounce.d.ts +29 -0
- package/dist/hooks/useDebounce.d.ts.map +1 -0
- package/dist/hooks/useDebounce.js +26 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useScrollReset.d.ts +11 -0
- package/dist/hooks/useScrollReset.d.ts.map +1 -0
- package/dist/hooks/useScrollReset.js +55 -0
- package/dist/hooks/useScrollReset.js.map +1 -0
- package/dist/humans.txt +8 -0
- package/dist/icons/logo.svg +9 -0
- package/dist/index.d.ts +7 -1170
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +287 -4333
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +16 -0
- package/dist/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/robots.txt +5 -0
- package/dist/sitemap.xml +8 -0
- package/dist/staticwebapp.config.json +23 -0
- package/dist/style.css +2 -2
- package/dist/styles.d.ts +9 -0
- package/dist/theme/hydn-presets.d.ts +4 -0
- package/dist/theme/hydn-presets.d.ts.map +1 -0
- package/dist/theme/size-tokens.d.ts +686 -0
- package/dist/theme/size-tokens.d.ts.map +1 -0
- package/dist/theme/size-tokens.js +636 -0
- package/dist/theme/size-tokens.js.map +1 -0
- package/dist/theme/tokens.d.ts +116 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +164 -0
- package/dist/theme/tokens.js.map +1 -0
- package/dist/utils/debounce.d.ts +7 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/debounce.js +40 -0
- package/dist/utils/debounce.js.map +1 -0
- package/package.json +49 -43
- package/dist/index.cjs +0 -4425
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1170
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as Error400 } from './error-400';
|
|
2
|
+
export { default as Error401 } from './error-401';
|
|
3
|
+
export { default as Error403 } from './error-403';
|
|
4
|
+
export { default as Error404 } from './error-404';
|
|
5
|
+
export type { Error400Props } from './error-400';
|
|
6
|
+
export type { Error401Props } from './error-401';
|
|
7
|
+
export type { Error403Props } from './error-403';
|
|
8
|
+
export type { Error404Props } from './error-404';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/error-page/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAElD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/loading-container/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ContainerProps } from '../../layout/container/container';
|
|
3
|
+
import { StackProps } from '../../layout/stack/stack';
|
|
4
|
+
import { SpinnerProps } from '../spinner/spinner';
|
|
5
|
+
export type LoadingContainerProps = {
|
|
6
|
+
/** Minimum height for the loading area */
|
|
7
|
+
minHeight?: React.CSSProperties['minHeight'];
|
|
8
|
+
/** Props forwarded to the Container wrapper */
|
|
9
|
+
containerProps?: Omit<ContainerProps, 'children'>;
|
|
10
|
+
/** Props forwarded to the Stack wrapper */
|
|
11
|
+
stackProps?: Omit<StackProps, 'children'>;
|
|
12
|
+
/** Props forwarded to the Spinner */
|
|
13
|
+
spinnerProps?: SpinnerProps;
|
|
14
|
+
};
|
|
15
|
+
export default function LoadingContainer({ minHeight, containerProps, stackProps, spinnerProps }: LoadingContainerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=loading-container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loading-container.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/loading-container/loading-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,+CAA+C;IAC/C,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAClD,2CAA2C;IAC3C,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1C,qCAAqC;IACrC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,SAAkB,EAClB,cAAc,EACd,UAAU,EACV,YAAY,EACb,EAAE,qBAAqB,2CAiBvB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import Container from "../../layout/container/container.js";
|
|
3
|
+
import Stack from "../../layout/stack/stack.js";
|
|
4
|
+
import Spinner from "../spinner/spinner.js";
|
|
5
|
+
function LoadingContainer({
|
|
6
|
+
minHeight = "50vh",
|
|
7
|
+
containerProps,
|
|
8
|
+
stackProps,
|
|
9
|
+
spinnerProps
|
|
10
|
+
}) {
|
|
11
|
+
const { style: stackStyle, ...restStackProps } = stackProps ?? {};
|
|
12
|
+
return /* @__PURE__ */ jsx(Container, { marginX: "md", paddingY: "sm", ...containerProps, children: /* @__PURE__ */ jsx(
|
|
13
|
+
Stack,
|
|
14
|
+
{
|
|
15
|
+
direction: "vertical",
|
|
16
|
+
align: "center",
|
|
17
|
+
justify: "center",
|
|
18
|
+
spacing: "md",
|
|
19
|
+
style: { minHeight, ...stackStyle },
|
|
20
|
+
...restStackProps,
|
|
21
|
+
children: /* @__PURE__ */ jsx(Spinner, { ...spinnerProps })
|
|
22
|
+
}
|
|
23
|
+
) });
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
LoadingContainer as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=loading-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loading-container.js","sources":["../../../../src/components/feedback/loading-container/loading-container.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { ContainerProps } from '../../layout/container/container';\nimport type { StackProps } from '../../layout/stack/stack';\nimport type { SpinnerProps } from '../spinner/spinner';\nimport Container from '../../layout/container/container';\nimport Stack from '../../layout/stack/stack';\nimport Spinner from '../spinner/spinner';\n\nexport type LoadingContainerProps = {\n /** Minimum height for the loading area */\n minHeight?: React.CSSProperties['minHeight'];\n /** Props forwarded to the Container wrapper */\n containerProps?: Omit<ContainerProps, 'children'>;\n /** Props forwarded to the Stack wrapper */\n stackProps?: Omit<StackProps, 'children'>;\n /** Props forwarded to the Spinner */\n spinnerProps?: SpinnerProps;\n};\n\nexport default function LoadingContainer({\n minHeight = '50vh',\n containerProps,\n stackProps,\n spinnerProps\n}: LoadingContainerProps) {\n const { style: stackStyle, ...restStackProps } = stackProps ?? {};\n\n return (\n <Container marginX=\"md\" paddingY=\"sm\" {...containerProps}>\n <Stack\n direction=\"vertical\"\n align=\"center\"\n justify=\"center\"\n spacing=\"md\"\n style={{ minHeight, ...stackStyle }}\n {...restStackProps}\n >\n <Spinner {...spinnerProps} />\n </Stack>\n </Container>\n );\n}\n"],"names":[],"mappings":";;;;AAoBA,SAAwB,iBAAiB;AAAA,EACvC,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,EAAE,OAAO,YAAY,GAAG,eAAA,IAAmB,cAAc,CAAA;AAE/D,6BACG,WAAA,EAAU,SAAQ,MAAK,UAAS,MAAM,GAAG,gBACxC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,OAAO,EAAE,WAAW,GAAG,WAAA;AAAA,MACtB,GAAG;AAAA,MAEJ,UAAA,oBAAC,SAAA,EAAS,GAAG,aAAA,CAAc;AAAA,IAAA;AAAA,EAAA,GAE/B;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type ModalProps = {
|
|
3
|
+
/** Controls the visibility state of the modal */
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
/** Callback function invoked when the modal should close (ESC key or backdrop click) */
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
/** Raw children (ignored if structured props provided) */
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
/** Structured title (string or React) */
|
|
10
|
+
title?: React.ReactNode;
|
|
11
|
+
/** Optional description text */
|
|
12
|
+
description?: React.ReactNode;
|
|
13
|
+
/** Main body content */
|
|
14
|
+
content?: React.ReactNode;
|
|
15
|
+
/** Footer actions (buttons) */
|
|
16
|
+
actions?: React.ReactNode;
|
|
17
|
+
/** Additional CSS classes to apply to the modal dialog container */
|
|
18
|
+
className?: string;
|
|
19
|
+
/** Accessible label for the modal, used for screen readers */
|
|
20
|
+
ariaLabel?: string;
|
|
21
|
+
/** Center vs top alignment */
|
|
22
|
+
align?: 'center' | 'top';
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Modal - Overlay dialog component using pure Tailwind CSS
|
|
26
|
+
* Achieves DaisyUI modal styling with Tailwind utilities
|
|
27
|
+
*/
|
|
28
|
+
declare function Modal({ isOpen, onClose, children, title, description, content, actions, className, ariaLabel, align }: Readonly<ModalProps>): React.ReactPortal | null;
|
|
29
|
+
declare namespace Modal {
|
|
30
|
+
var displayName: string;
|
|
31
|
+
}
|
|
32
|
+
export default Modal;
|
|
33
|
+
//# sourceMappingURL=modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/modal/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,MAAM,UAAU,GAAG;IACvB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,yCAAyC;IACzC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,gCAAgC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,wBAAwB;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,iBAAS,KAAK,CAAC,EACb,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,SAAc,EACd,SAAS,EACT,KAAgB,EACjB,EAAE,QAAQ,CAAC,UAAU,CAAC,4BAoGtB;kBA/GQ,KAAK;;;AAmHd,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { createPortal } from "react-dom";
|
|
4
|
+
import useOverlay from "../overlay/useOverlay.js";
|
|
5
|
+
import Text from "../../typography/text/text.js";
|
|
6
|
+
function Modal({
|
|
7
|
+
isOpen,
|
|
8
|
+
onClose,
|
|
9
|
+
children,
|
|
10
|
+
title,
|
|
11
|
+
description,
|
|
12
|
+
content,
|
|
13
|
+
actions,
|
|
14
|
+
className = "",
|
|
15
|
+
ariaLabel,
|
|
16
|
+
align = "center"
|
|
17
|
+
}) {
|
|
18
|
+
const {
|
|
19
|
+
phase,
|
|
20
|
+
shouldRender,
|
|
21
|
+
ref: dialogRef,
|
|
22
|
+
getPhaseClass
|
|
23
|
+
} = useOverlay({
|
|
24
|
+
isOpen,
|
|
25
|
+
focusTrap: true,
|
|
26
|
+
lockScroll: true,
|
|
27
|
+
animationFrames: 2,
|
|
28
|
+
restoreFocus: true
|
|
29
|
+
});
|
|
30
|
+
React.useEffect(() => {
|
|
31
|
+
if (!isOpen) return;
|
|
32
|
+
const handleEscape = (e) => {
|
|
33
|
+
if (e.key === "Escape") {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
onClose();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
document.addEventListener("keydown", handleEscape);
|
|
39
|
+
return () => document.removeEventListener("keydown", handleEscape);
|
|
40
|
+
}, [isOpen, onClose]);
|
|
41
|
+
if (!shouldRender) return null;
|
|
42
|
+
const enteringClasses = "scale-100 translate-y-0 opacity-100";
|
|
43
|
+
const exitingClasses = "scale-[0.97] -translate-y-1 opacity-0";
|
|
44
|
+
const scaleClass = getPhaseClass(enteringClasses, exitingClasses);
|
|
45
|
+
const backdropOpacity = phase === "visible" || phase === "animating-in" ? "opacity-100" : "opacity-0 transition-opacity delay-50";
|
|
46
|
+
const hasStructured = title || description || content || actions;
|
|
47
|
+
const alignmentClasses = align === "center" ? "grid place-items-center" : "flex items-start justify-center pt-20";
|
|
48
|
+
const panel = /* @__PURE__ */ jsx(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
"data-phase": phase,
|
|
52
|
+
className: `fixed inset-0 z-[999] ${alignmentClasses} bg-black/40 backdrop-blur-sm p-4 overflow-y-auto overscroll-contain transition-opacity duration-300 will-change-opacity ${backdropOpacity}`,
|
|
53
|
+
onMouseDown: (e) => {
|
|
54
|
+
if (e.target === e.currentTarget) onClose();
|
|
55
|
+
},
|
|
56
|
+
"aria-label": ariaLabel || "Close modal",
|
|
57
|
+
role: "presentation",
|
|
58
|
+
children: /* @__PURE__ */ jsx(
|
|
59
|
+
"div",
|
|
60
|
+
{
|
|
61
|
+
ref: dialogRef,
|
|
62
|
+
"data-phase": phase,
|
|
63
|
+
className: `relative w-11/12 sm:w-full max-w-2xl max-h-[calc(100vh-5em)] sm:max-h-[calc(100vh-8em)] bg-card text-card-foreground rounded-2xl border border-border shadow-2xl focus:outline-none transform transition-[transform,opacity] duration-250 ease-[cubic-bezier(.33,.66,.33,1)] will-change-transform will-change-opacity select-none [backface-visibility:hidden] [transform-style:preserve-3d] overflow-hidden ${scaleClass} ${className}`,
|
|
64
|
+
role: "dialog",
|
|
65
|
+
"aria-modal": "true",
|
|
66
|
+
tabIndex: -1,
|
|
67
|
+
onTransitionEnd: (e) => {
|
|
68
|
+
if (e.target !== dialogRef.current) return;
|
|
69
|
+
},
|
|
70
|
+
children: /* @__PURE__ */ jsx("div", { className: "overflow-y-auto max-h-[calc(100vh-5em)] sm:max-h-[calc(100vh-8em)] p-4 sm:p-6", children: hasStructured ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
71
|
+
title && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
72
|
+
typeof title === "string" ? /* @__PURE__ */ jsx(Text, { weight: "bold", size: "2xl", children: title }) : title,
|
|
73
|
+
description && /* @__PURE__ */ jsx(Text, { variant: "muted", size: "sm", hasMargin: true, children: description })
|
|
74
|
+
] }),
|
|
75
|
+
content && /* @__PURE__ */ jsx("section", { className: "text-sm leading-relaxed space-y-3 mt-4", children: content }),
|
|
76
|
+
actions && /* @__PURE__ */ jsx("footer", { className: "flex justify-end gap-2 pt-2 mt-4 border-t border-border/60", children: actions })
|
|
77
|
+
] }) : children })
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
return createPortal(panel, document.body);
|
|
83
|
+
}
|
|
84
|
+
Modal.displayName = "Modal";
|
|
85
|
+
export {
|
|
86
|
+
Modal as default
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../../../src/components/feedback/modal/modal.tsx"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\nimport useOverlay from '../overlay/useOverlay';\nimport Text from '../../typography/text/text';\n\nexport type ModalProps = {\n /** Controls the visibility state of the modal */\n isOpen: boolean;\n /** Callback function invoked when the modal should close (ESC key or backdrop click) */\n onClose: () => void;\n /** Raw children (ignored if structured props provided) */\n children?: React.ReactNode;\n /** Structured title (string or React) */\n title?: React.ReactNode;\n /** Optional description text */\n description?: React.ReactNode;\n /** Main body content */\n content?: React.ReactNode;\n /** Footer actions (buttons) */\n actions?: React.ReactNode;\n /** Additional CSS classes to apply to the modal dialog container */\n className?: string;\n /** Accessible label for the modal, used for screen readers */\n ariaLabel?: string;\n /** Center vs top alignment */\n align?: 'center' | 'top';\n};\n\n/**\n * Modal - Overlay dialog component using pure Tailwind CSS\n * Achieves DaisyUI modal styling with Tailwind utilities\n */\nfunction Modal({\n isOpen,\n onClose,\n children,\n title,\n description,\n content,\n actions,\n className = '',\n ariaLabel,\n align = 'center'\n}: Readonly<ModalProps>) {\n const {\n phase,\n shouldRender,\n ref: dialogRef,\n getPhaseClass\n } = useOverlay<HTMLDivElement>({\n isOpen,\n focusTrap: true,\n lockScroll: true,\n animationFrames: 2,\n restoreFocus: true\n });\n\n // ESC key handling separate from useOverlay to allow optional close logic\n React.useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n }\n };\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, onClose]);\n\n // Manage mounting phases\n\n // If closed & unmounting, skip render\n if (!shouldRender) return null;\n\n const enteringClasses = 'scale-100 translate-y-0 opacity-100';\n const exitingClasses = 'scale-[0.97] -translate-y-1 opacity-0';\n const scaleClass = getPhaseClass(enteringClasses, exitingClasses);\n // Stagger backdrop fade slightly after panel starts exiting to reduce perceived flicker\n const backdropOpacity =\n phase === 'visible' || phase === 'animating-in' ? 'opacity-100' : 'opacity-0 transition-opacity delay-50';\n\n const hasStructured = title || description || content || actions;\n const alignmentClasses = align === 'center' ? 'grid place-items-center' : 'flex items-start justify-center pt-20';\n\n const panel = (\n <div\n data-phase={phase}\n className={`fixed inset-0 z-[999] ${alignmentClasses} bg-black/40 backdrop-blur-sm p-4 overflow-y-auto overscroll-contain transition-opacity duration-300 will-change-opacity ${backdropOpacity}`}\n onMouseDown={(e) => {\n // close only if clicking backdrop not dialog\n if (e.target === e.currentTarget) onClose();\n }}\n aria-label={ariaLabel || 'Close modal'}\n role=\"presentation\"\n >\n <div\n ref={dialogRef}\n data-phase={phase}\n className={`relative w-11/12 sm:w-full max-w-2xl max-h-[calc(100vh-5em)] sm:max-h-[calc(100vh-8em)] bg-card text-card-foreground rounded-2xl border border-border shadow-2xl focus:outline-none transform transition-[transform,opacity] duration-250 ease-[cubic-bezier(.33,.66,.33,1)] will-change-transform will-change-opacity select-none [backface-visibility:hidden] [transform-style:preserve-3d] overflow-hidden ${scaleClass} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onTransitionEnd={(e) => {\n if (e.target !== dialogRef.current) return;\n if (phase === 'animating-out') {\n // handled by useOverlay via shouldRender state change upstream; keep minimal here\n }\n }}\n >\n <div className=\"overflow-y-auto max-h-[calc(100vh-5em)] sm:max-h-[calc(100vh-8em)] p-4 sm:p-6\">\n {hasStructured ? (\n <>\n {title && (\n <>\n {typeof title === 'string' ? (\n <Text weight=\"bold\" size=\"2xl\">\n {title}\n </Text>\n ) : (\n title\n )}\n {description && (\n <Text variant=\"muted\" size=\"sm\" hasMargin>\n {description}\n </Text>\n )}\n </>\n )}\n {content && <section className=\"text-sm leading-relaxed space-y-3 mt-4\">{content}</section>}\n {actions && (\n <footer className=\"flex justify-end gap-2 pt-2 mt-4 border-t border-border/60\">{actions}</footer>\n )}\n </>\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n );\n\n return createPortal(panel, document.body);\n}\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n"],"names":[],"mappings":";;;;;AAgCA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,QAAQ;AACV,GAAyB;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL;AAAA,EAAA,IACE,WAA2B;AAAA,IAC7B;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,cAAc;AAAA,EAAA,CACf;AAGD,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,OAAQ;AACb,UAAM,eAAe,CAAC,MAAqB;AACzC,UAAI,EAAE,QAAQ,UAAU;AACtB,UAAE,eAAA;AACF,gBAAA;AAAA,MACF;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,YAAY;AACjD,WAAO,MAAM,SAAS,oBAAoB,WAAW,YAAY;AAAA,EACnE,GAAG,CAAC,QAAQ,OAAO,CAAC;AAKpB,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,kBAAkB;AACxB,QAAM,iBAAiB;AACvB,QAAM,aAAa,cAAc,iBAAiB,cAAc;AAEhE,QAAM,kBACJ,UAAU,aAAa,UAAU,iBAAiB,gBAAgB;AAEpE,QAAM,gBAAgB,SAAS,eAAe,WAAW;AACzD,QAAM,mBAAmB,UAAU,WAAW,4BAA4B;AAE1E,QAAM,QACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAY;AAAA,MACZ,WAAW,yBAAyB,gBAAgB,4HAA4H,eAAe;AAAA,MAC/L,aAAa,CAAC,MAAM;AAElB,YAAI,EAAE,WAAW,EAAE,cAAe,SAAA;AAAA,MACpC;AAAA,MACA,cAAY,aAAa;AAAA,MACzB,MAAK;AAAA,MAEL,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,cAAY;AAAA,UACZ,WAAW,iZAAiZ,UAAU,IAAI,SAAS;AAAA,UACnb,MAAK;AAAA,UACL,cAAW;AAAA,UACX,UAAU;AAAA,UACV,iBAAiB,CAAC,MAAM;AACtB,gBAAI,EAAE,WAAW,UAAU,QAAS;AAAA,UAItC;AAAA,UAEA,UAAA,oBAAC,OAAA,EAAI,WAAU,iFACZ,0BACC,qBAAA,UAAA,EACG,UAAA;AAAA,YAAA,SACC,qBAAA,UAAA,EACG,UAAA;AAAA,cAAA,OAAO,UAAU,WAChB,oBAAC,MAAA,EAAK,QAAO,QAAO,MAAK,OACtB,UAAA,MAAA,CACH,IAEA;AAAA,cAED,mCACE,MAAA,EAAK,SAAQ,SAAQ,MAAK,MAAK,WAAS,MACtC,UAAA,YAAA,CACH;AAAA,YAAA,GAEJ;AAAA,YAED,WAAW,oBAAC,WAAA,EAAQ,WAAU,0CAA0C,UAAA,SAAQ;AAAA,YAChF,WACC,oBAAC,UAAA,EAAO,WAAU,8DAA8D,UAAA,QAAA,CAAQ;AAAA,UAAA,EAAA,CAE5F,IAEA,SAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIJ,SAAO,aAAa,OAAO,SAAS,IAAI;AAC1C;AAEA,MAAM,cAAc;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type OverlayPhase = 'mount' | 'animating-in' | 'visible' | 'animating-out';
|
|
2
|
+
export interface UseOverlayOptions {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onClose?: () => void;
|
|
5
|
+
focusTrap?: boolean;
|
|
6
|
+
lockScroll?: boolean;
|
|
7
|
+
animationFrames?: number;
|
|
8
|
+
restoreFocus?: boolean;
|
|
9
|
+
exitDuration?: number;
|
|
10
|
+
unmountOnExit?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface UseOverlayResult<T extends HTMLElement> {
|
|
13
|
+
phase: OverlayPhase;
|
|
14
|
+
shouldRender: boolean;
|
|
15
|
+
ref: React.RefObject<T>;
|
|
16
|
+
getPhaseClass: (openClass: string, closedClass: string) => string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* useOverlay - shared lifecycle for animated overlays (Modal, Drawer, Popover, etc.)
|
|
20
|
+
* Handles phased mounting, focus trap, scroll locking, and focus restoration.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useOverlay<T extends HTMLElement>(options: UseOverlayOptions): UseOverlayResult<T>;
|
|
23
|
+
export default useOverlay;
|
|
24
|
+
//# sourceMappingURL=useOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOverlay.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/overlay/useOverlay.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,WAAW;IACrD,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;CACnE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAuIjG;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { useRef, useState, useLayoutEffect, useEffect, useCallback } from "react";
|
|
2
|
+
function useOverlay(options) {
|
|
3
|
+
const {
|
|
4
|
+
isOpen,
|
|
5
|
+
focusTrap = true,
|
|
6
|
+
lockScroll = true,
|
|
7
|
+
animationFrames = 2,
|
|
8
|
+
restoreFocus = true,
|
|
9
|
+
exitDuration = 300,
|
|
10
|
+
unmountOnExit = true
|
|
11
|
+
} = options;
|
|
12
|
+
const previouslyFocusedRef = useRef(null);
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const [shouldRender, setShouldRender] = useState(isOpen);
|
|
15
|
+
const [phase, setPhase] = useState("mount");
|
|
16
|
+
useLayoutEffect(() => {
|
|
17
|
+
if (isOpen && !shouldRender) {
|
|
18
|
+
setShouldRender(true);
|
|
19
|
+
setPhase("mount");
|
|
20
|
+
} else if (isOpen && shouldRender && phase === "mount") {
|
|
21
|
+
requestAnimationFrame(() => {
|
|
22
|
+
setPhase("animating-in");
|
|
23
|
+
let frame = 0;
|
|
24
|
+
const step = () => {
|
|
25
|
+
frame += 1;
|
|
26
|
+
if (frame >= animationFrames) {
|
|
27
|
+
setPhase("visible");
|
|
28
|
+
} else {
|
|
29
|
+
requestAnimationFrame(step);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
if (animationFrames > 0) {
|
|
33
|
+
requestAnimationFrame(step);
|
|
34
|
+
} else {
|
|
35
|
+
setPhase("visible");
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
} else if (!isOpen && shouldRender && phase !== "animating-out") {
|
|
39
|
+
setPhase("animating-out");
|
|
40
|
+
}
|
|
41
|
+
}, [isOpen, shouldRender, phase, animationFrames]);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (phase === "animating-out" && unmountOnExit) {
|
|
44
|
+
const timeout = setTimeout(() => {
|
|
45
|
+
setShouldRender(false);
|
|
46
|
+
setPhase("mount");
|
|
47
|
+
}, exitDuration);
|
|
48
|
+
return () => clearTimeout(timeout);
|
|
49
|
+
}
|
|
50
|
+
return void 0;
|
|
51
|
+
}, [phase, exitDuration, unmountOnExit]);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (isOpen) {
|
|
54
|
+
if (typeof document !== "undefined") {
|
|
55
|
+
if (restoreFocus) previouslyFocusedRef.current = document.activeElement;
|
|
56
|
+
if (lockScroll) document.body.style.overflow = "hidden";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return () => {
|
|
60
|
+
if (typeof document !== "undefined") {
|
|
61
|
+
if (lockScroll) document.body.style.overflow = "";
|
|
62
|
+
if (!isOpen && restoreFocus && previouslyFocusedRef.current) {
|
|
63
|
+
previouslyFocusedRef.current.focus();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}, [isOpen, lockScroll, restoreFocus]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
if (phase === "visible" && containerRef.current) {
|
|
70
|
+
const el = containerRef.current;
|
|
71
|
+
try {
|
|
72
|
+
el.focus?.({ preventScroll: true });
|
|
73
|
+
} catch {
|
|
74
|
+
el.focus?.();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}, [phase]);
|
|
78
|
+
const handleKeyDown = useCallback(
|
|
79
|
+
(e) => {
|
|
80
|
+
if (!focusTrap || phase !== "visible" || e.key !== "Tab" || !containerRef.current) return;
|
|
81
|
+
const node = containerRef.current;
|
|
82
|
+
const focusable = node.querySelectorAll(
|
|
83
|
+
'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex="-1"])'
|
|
84
|
+
);
|
|
85
|
+
if (!focusable.length) return;
|
|
86
|
+
const first = focusable[0];
|
|
87
|
+
const last = focusable[focusable.length - 1];
|
|
88
|
+
if (e.shiftKey) {
|
|
89
|
+
if (document.activeElement === first || document.activeElement === node) {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
last.focus();
|
|
92
|
+
}
|
|
93
|
+
} else if (document.activeElement === last) {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
first.focus();
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
[focusTrap, phase]
|
|
99
|
+
);
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (focusTrap && phase === "visible") {
|
|
102
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
103
|
+
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
104
|
+
}
|
|
105
|
+
return void 0;
|
|
106
|
+
}, [phase, focusTrap, handleKeyDown]);
|
|
107
|
+
const getPhaseClass = useCallback(
|
|
108
|
+
(openClass, closedClass) => {
|
|
109
|
+
return phase === "animating-in" || phase === "visible" ? openClass : closedClass;
|
|
110
|
+
},
|
|
111
|
+
[phase]
|
|
112
|
+
);
|
|
113
|
+
return { phase, shouldRender, ref: containerRef, getPhaseClass };
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
useOverlay as default,
|
|
117
|
+
useOverlay
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=useOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOverlay.js","sources":["../../../../src/components/feedback/overlay/useOverlay.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useEffect, useRef, useState } from 'react';\n\nexport type OverlayPhase = 'mount' | 'animating-in' | 'visible' | 'animating-out';\n\nexport interface UseOverlayOptions {\n isOpen: boolean;\n onClose?: () => void; // reserved for future outside-click/escape wiring\n focusTrap?: boolean;\n lockScroll?: boolean;\n animationFrames?: number; // number of rAF hops before visible (default 2)\n restoreFocus?: boolean;\n exitDuration?: number; // ms matching CSS transition duration for animating-out\n unmountOnExit?: boolean; // default true\n}\n\nexport interface UseOverlayResult<T extends HTMLElement> {\n phase: OverlayPhase;\n shouldRender: boolean;\n ref: React.RefObject<T>;\n getPhaseClass: (openClass: string, closedClass: string) => string;\n}\n\n/**\n * useOverlay - shared lifecycle for animated overlays (Modal, Drawer, Popover, etc.)\n * Handles phased mounting, focus trap, scroll locking, and focus restoration.\n */\nexport function useOverlay<T extends HTMLElement>(options: UseOverlayOptions): UseOverlayResult<T> {\n const {\n isOpen,\n focusTrap = true,\n lockScroll = true,\n animationFrames = 2,\n restoreFocus = true,\n exitDuration = 300,\n unmountOnExit = true\n } = options;\n const previouslyFocusedRef = useRef<HTMLElement | null>(null);\n // Cast so consumer sees RefObject<T>; internal null checks still done.\n const containerRef = useRef<T>(null as unknown as T);\n const [shouldRender, setShouldRender] = useState(isOpen);\n const [phase, setPhase] = useState<OverlayPhase>('mount');\n\n // Mount / animation phases\n useLayoutEffect(() => {\n if (isOpen && !shouldRender) {\n // Opening: mount first\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setShouldRender(true);\n setPhase('mount');\n } else if (isOpen && shouldRender && phase === 'mount') {\n // Already mounted, start animation\n requestAnimationFrame(() => {\n setPhase('animating-in');\n let frame = 0;\n const step = () => {\n frame += 1;\n if (frame >= animationFrames) {\n setPhase('visible');\n } else {\n requestAnimationFrame(step);\n }\n };\n if (animationFrames > 0) {\n requestAnimationFrame(step);\n } else {\n setPhase('visible');\n }\n });\n } else if (!isOpen && shouldRender && phase !== 'animating-out') {\n // Closing: start exit animation\n setPhase('animating-out');\n }\n }, [isOpen, shouldRender, phase, animationFrames]);\n\n // Handle exit unmount timing aligned with CSS duration\n useEffect(() => {\n if (phase === 'animating-out' && unmountOnExit) {\n const timeout = setTimeout(() => {\n setShouldRender(false);\n setPhase('mount');\n }, exitDuration);\n return () => clearTimeout(timeout);\n }\n return undefined;\n }, [phase, exitDuration, unmountOnExit]);\n\n // Scroll lock & focus capture\n useEffect(() => {\n if (isOpen) {\n if (typeof document !== 'undefined') {\n if (restoreFocus) previouslyFocusedRef.current = document.activeElement as HTMLElement;\n if (lockScroll) document.body.style.overflow = 'hidden';\n }\n }\n return () => {\n if (typeof document !== 'undefined') {\n if (lockScroll) document.body.style.overflow = '';\n if (!isOpen && restoreFocus && previouslyFocusedRef.current) {\n previouslyFocusedRef.current.focus();\n }\n }\n };\n }, [isOpen, lockScroll, restoreFocus]);\n\n // Focus dialog/panel when visible without scrolling document\n useEffect(() => {\n if (phase === 'visible' && containerRef.current) {\n const el = containerRef.current as unknown as HTMLElement;\n try {\n // preventScroll supported in modern browsers; fallback to normal focus\n el.focus?.({ preventScroll: true } as FocusOptions);\n } catch {\n el.focus?.();\n }\n }\n }, [phase]);\n\n // Focus trap\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (!focusTrap || phase !== 'visible' || e.key !== 'Tab' || !containerRef.current) return;\n const node = containerRef.current as unknown as HTMLElement;\n const focusable = node.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (!focusable.length) return;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === node) {\n e.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n },\n [focusTrap, phase]\n );\n\n useEffect(() => {\n if (focusTrap && phase === 'visible') {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }\n return undefined;\n }, [phase, focusTrap, handleKeyDown]);\n\n const getPhaseClass = useCallback(\n (openClass: string, closedClass: string) => {\n // mount: closed (initial state before animation)\n // animating-in: open (CSS transition from closed to open)\n // visible: open (fully open)\n // animating-out: closed (CSS transition from open to closed)\n return phase === 'animating-in' || phase === 'visible' ? openClass : closedClass;\n },\n [phase]\n );\n\n return { phase, shouldRender, ref: containerRef, getPhaseClass };\n}\n\nexport default useOverlay;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type PopoverProps = {
|
|
3
|
+
/** Trigger element to click for opening the popover (alternative to children) */
|
|
4
|
+
trigger?: React.ReactNode;
|
|
5
|
+
/** Trigger element to click for opening the popover (takes precedence over trigger prop) */
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/** Content to display inside the popover panel when opened */
|
|
8
|
+
content: React.ReactNode;
|
|
9
|
+
/** Position of the popover relative to the trigger element */
|
|
10
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
11
|
+
/** Additional CSS classes to apply to the popover wrapper container */
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Popover - Click-to-open content overlay
|
|
16
|
+
*
|
|
17
|
+
* Displays rich content in a floating panel when clicked.
|
|
18
|
+
* Uses portal rendering to escape overflow constraints.
|
|
19
|
+
*/
|
|
20
|
+
declare function Popover({ trigger, children, content, position, className }: Readonly<PopoverProps>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare namespace Popover {
|
|
22
|
+
var displayName: string;
|
|
23
|
+
}
|
|
24
|
+
export default Popover;
|
|
25
|
+
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/popover/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAGxE,MAAM,MAAM,YAAY,GAAG;IACzB,iFAAiF;IACjF,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,iBAAS,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAmB,EAAE,SAAc,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,2CAiI3G;kBAjIQ,OAAO;;;AAqIhB,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useCallback, useEffect } from "react";
|
|
3
|
+
import { createPortal } from "react-dom";
|
|
4
|
+
function Popover({ trigger, children, content, position = "bottom", className = "" }) {
|
|
5
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
6
|
+
const [coords, setCoords] = useState({ top: 0, left: 0 });
|
|
7
|
+
const triggerRef = useRef(null);
|
|
8
|
+
const popoverRef = useRef(null);
|
|
9
|
+
const triggerContent = children || trigger;
|
|
10
|
+
const calculatePosition = useCallback(() => {
|
|
11
|
+
if (!triggerRef.current || !popoverRef.current) return;
|
|
12
|
+
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
13
|
+
const popoverRect = popoverRef.current.getBoundingClientRect();
|
|
14
|
+
const offset = 8;
|
|
15
|
+
let top = 0;
|
|
16
|
+
let left = 0;
|
|
17
|
+
switch (position) {
|
|
18
|
+
case "top":
|
|
19
|
+
top = triggerRect.top - popoverRect.height - offset;
|
|
20
|
+
left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;
|
|
21
|
+
break;
|
|
22
|
+
case "bottom":
|
|
23
|
+
top = triggerRect.bottom + offset;
|
|
24
|
+
left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;
|
|
25
|
+
break;
|
|
26
|
+
case "left":
|
|
27
|
+
top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;
|
|
28
|
+
left = triggerRect.left - popoverRect.width - offset;
|
|
29
|
+
break;
|
|
30
|
+
case "right":
|
|
31
|
+
top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;
|
|
32
|
+
left = triggerRect.right + offset;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
const padding = 8;
|
|
36
|
+
if (left < padding) left = padding;
|
|
37
|
+
if (left + popoverRect.width > window.innerWidth - padding) {
|
|
38
|
+
left = window.innerWidth - popoverRect.width - padding;
|
|
39
|
+
}
|
|
40
|
+
if (top < padding) top = padding;
|
|
41
|
+
if (top + popoverRect.height > window.innerHeight - padding) {
|
|
42
|
+
top = window.innerHeight - popoverRect.height - padding;
|
|
43
|
+
}
|
|
44
|
+
setCoords({ top, left });
|
|
45
|
+
}, [position]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
const handleClickOutside = (event) => {
|
|
48
|
+
if (popoverRef.current && !popoverRef.current.contains(event.target) && triggerRef.current && !triggerRef.current.contains(event.target)) {
|
|
49
|
+
setIsOpen(false);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const handleEscape = (event) => {
|
|
53
|
+
if (event.key === "Escape") {
|
|
54
|
+
setIsOpen(false);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
if (isOpen) {
|
|
58
|
+
requestAnimationFrame(() => {
|
|
59
|
+
calculatePosition();
|
|
60
|
+
});
|
|
61
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
62
|
+
document.addEventListener("keydown", handleEscape);
|
|
63
|
+
window.addEventListener("scroll", calculatePosition, true);
|
|
64
|
+
window.addEventListener("resize", calculatePosition);
|
|
65
|
+
return () => {
|
|
66
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
67
|
+
document.removeEventListener("keydown", handleEscape);
|
|
68
|
+
window.removeEventListener("scroll", calculatePosition, true);
|
|
69
|
+
window.removeEventListener("resize", calculatePosition);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return void 0;
|
|
73
|
+
}, [isOpen, calculatePosition]);
|
|
74
|
+
const popover = isOpen ? /* @__PURE__ */ jsx(
|
|
75
|
+
"div",
|
|
76
|
+
{
|
|
77
|
+
ref: popoverRef,
|
|
78
|
+
role: "dialog",
|
|
79
|
+
"aria-modal": "false",
|
|
80
|
+
className: `
|
|
81
|
+
fixed z-9999
|
|
82
|
+
min-w-[200px] max-w-sm
|
|
83
|
+
bg-popover text-popover-foreground
|
|
84
|
+
border border-border
|
|
85
|
+
rounded-lg
|
|
86
|
+
shadow-xl
|
|
87
|
+
p-4
|
|
88
|
+
animate-in fade-in-0 zoom-in-95
|
|
89
|
+
${className}
|
|
90
|
+
`,
|
|
91
|
+
style: {
|
|
92
|
+
top: `${coords.top}px`,
|
|
93
|
+
left: `${coords.left}px`
|
|
94
|
+
},
|
|
95
|
+
children: content
|
|
96
|
+
}
|
|
97
|
+
) : null;
|
|
98
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
99
|
+
/* @__PURE__ */ jsx(
|
|
100
|
+
"button",
|
|
101
|
+
{
|
|
102
|
+
ref: triggerRef,
|
|
103
|
+
onClick: () => setIsOpen(!isOpen),
|
|
104
|
+
className: "inline-flex bg-transparent border-0 p-0 cursor-pointer",
|
|
105
|
+
type: "button",
|
|
106
|
+
"aria-expanded": isOpen,
|
|
107
|
+
"aria-haspopup": "dialog",
|
|
108
|
+
children: triggerContent
|
|
109
|
+
}
|
|
110
|
+
),
|
|
111
|
+
popover && createPortal(popover, document.body)
|
|
112
|
+
] });
|
|
113
|
+
}
|
|
114
|
+
Popover.displayName = "Popover";
|
|
115
|
+
export {
|
|
116
|
+
Popover as default
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","sources":["../../../../src/components/feedback/popover/popover.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type PopoverProps = {\n /** Trigger element to click for opening the popover (alternative to children) */\n trigger?: React.ReactNode;\n /** Trigger element to click for opening the popover (takes precedence over trigger prop) */\n children?: React.ReactNode;\n /** Content to display inside the popover panel when opened */\n content: React.ReactNode;\n /** Position of the popover relative to the trigger element */\n position?: 'top' | 'bottom' | 'left' | 'right';\n /** Additional CSS classes to apply to the popover wrapper container */\n className?: string;\n};\n\n/**\n * Popover - Click-to-open content overlay\n *\n * Displays rich content in a floating panel when clicked.\n * Uses portal rendering to escape overflow constraints.\n */\nfunction Popover({ trigger, children, content, position = 'bottom', className = '' }: Readonly<PopoverProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const [coords, setCoords] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLButtonElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerContent = children || trigger;\n\n const calculatePosition = useCallback(() => {\n if (!triggerRef.current || !popoverRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const popoverRect = popoverRef.current.getBoundingClientRect();\n const offset = 8;\n\n let top = 0;\n let left = 0;\n\n switch (position) {\n case 'top':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;\n break;\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;\n left = triggerRect.right + offset;\n break;\n }\n\n // Viewport clamping\n const padding = 8;\n if (left < padding) left = padding;\n if (left + popoverRect.width > window.innerWidth - padding) {\n left = window.innerWidth - popoverRect.width - padding;\n }\n if (top < padding) top = padding;\n if (top + popoverRect.height > window.innerHeight - padding) {\n top = window.innerHeight - popoverRect.height - padding;\n }\n\n setCoords({ top, left });\n }, [position]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n // Position on next frame\n requestAnimationFrame(() => {\n calculatePosition();\n });\n\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n window.addEventListener('scroll', calculatePosition, true);\n window.addEventListener('resize', calculatePosition);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n window.removeEventListener('scroll', calculatePosition, true);\n window.removeEventListener('resize', calculatePosition);\n };\n }\n return undefined;\n }, [isOpen, calculatePosition]);\n\n const popover = isOpen ? (\n <div\n ref={popoverRef}\n role=\"dialog\"\n aria-modal=\"false\"\n className={`\n fixed z-9999\n min-w-[200px] max-w-sm\n bg-popover text-popover-foreground \n border border-border \n rounded-lg \n shadow-xl \n p-4\n animate-in fade-in-0 zoom-in-95\n ${className}\n `}\n style={{\n top: `${coords.top}px`,\n left: `${coords.left}px`\n }}\n >\n {content}\n </div>\n ) : null;\n\n return (\n <>\n <button\n ref={triggerRef}\n onClick={() => setIsOpen(!isOpen)}\n className=\"inline-flex bg-transparent border-0 p-0 cursor-pointer\"\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n >\n {triggerContent}\n </button>\n {popover && createPortal(popover, document.body)}\n </>\n );\n}\n\nPopover.displayName = 'Popover';\n\nexport default Popover;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/progress-bar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ColorVariant } from '../../../theme/tokens';
|
|
2
|
+
export type ProgressBarProps = {
|
|
3
|
+
/** Current progress value */
|
|
4
|
+
value: number;
|
|
5
|
+
/** Maximum value for the progress bar (defaults to 100) */
|
|
6
|
+
max?: number;
|
|
7
|
+
/** Whether to display the percentage label next to the progress bar */
|
|
8
|
+
showLabel?: boolean;
|
|
9
|
+
/** Visual style variant indicating the progress state */
|
|
10
|
+
variant?: ColorVariant;
|
|
11
|
+
/** Additional CSS classes to apply to the progress bar container */
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* ProgressBar - Visual representation of completion
|
|
16
|
+
*/
|
|
17
|
+
declare function ProgressBar({ value, max, showLabel, variant, className }: Readonly<ProgressBarProps>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
declare namespace ProgressBar {
|
|
19
|
+
var displayName: string;
|
|
20
|
+
}
|
|
21
|
+
export default ProgressBar;
|
|
22
|
+
//# sourceMappingURL=progress-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/progress-bar/progress-bar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,GAAS,EAAE,SAAS,EAAE,OAAmB,EAAE,SAAc,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,2CAsBpH;kBAtBQ,WAAW;;;AA0BpB,eAAe,WAAW,CAAC"}
|