@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 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.js","sources":["../../../../src/components/navigation/dropdown/dropdown.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useLayoutEffect, useCallback, createContext, useContext } from 'react';\nimport { createPortal } from 'react-dom';\nimport Button, { type ButtonProps } from '../../forms/button/button';\nimport { Icon } from '@/components/system/icon';\nimport { gapSizes, Size } from '@/theme/size-tokens';\n\nexport type DropdownTriggerProps = {\n /** Main label text */\n title: string;\n /** Optional secondary text shown below the title */\n subtitle?: string;\n /** Optional leading icon */\n icon?: string;\n /** Size of the leading icon */\n iconSize?: Size;\n /** Size variant for the trigger button */\n triggerSize?: ButtonProps['size'];\n /** Optional trailing icon */\n endIcon?: string;\n};\n\nexport type DropdownProps = {\n /** Trigger configuration - rendered as an accessible Button */\n trigger: DropdownTriggerProps;\n children: React.ReactNode;\n className?: string;\n align?: 'start' | 'center' | 'end';\n autoClose?: boolean; // close on item select\n /** Size of the dropdown panel and items */\n size?: ButtonProps['size'];\n /** Button variant for the trigger */\n variant?: ButtonProps['variant'];\n /** Button style for the trigger */\n buttonStyle?: ButtonProps['style'];\n /** Minimum width for the dropdown menu and all items (e.g., '200px', '16rem') */\n minWidth?: string;\n /** Maximum width for the dropdown menu (e.g., '400px', '24rem') */\n maxWidth?: string;\n /** Additional styles for the dropdown menu */\n menuClassName?: string;\n};\n\ntype DropdownContextValue = {\n requestClose: () => void;\n autoClose: boolean;\n registerItem?: (el: HTMLButtonElement | null, index?: number) => void;\n minWidth?: string;\n size?: ButtonProps['size'];\n};\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) throw new Error('useDropdown must be used within <Dropdown>');\n return ctx;\n}\n\n/**\n * Dropdown component with click-outside handling\n */\nfunction Dropdown({\n trigger,\n children,\n className = '',\n align = 'start',\n autoClose = true,\n size = 'md',\n variant = 'neutral',\n buttonStyle = 'solid',\n minWidth,\n maxWidth,\n menuClassName = ''\n}: Readonly<DropdownProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const itemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const [menuPosition, setMenuPosition] = useState<{ top: number; left: number; width: number } | null>(null);\n\n const close = useCallback(() => setIsOpen(false), []);\n const open = useCallback(() => setIsOpen(true), []);\n\n // Handle keyboard navigation\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (!menuRef.current) return;\n const itemEls = itemsRef.current.filter(Boolean);\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n if (itemEls.length === 0) return;\n let nextIndex = activeIndex;\n if (e.key === 'ArrowDown') nextIndex = (activeIndex + 1) % itemEls.length;\n if (e.key === 'ArrowUp') nextIndex = (activeIndex - 1 + itemEls.length) % itemEls.length;\n if (e.key === 'Home') nextIndex = 0;\n if (e.key === 'End') nextIndex = itemEls.length - 1;\n setActiveIndex(nextIndex);\n itemEls[nextIndex]?.focus();\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n close();\n triggerRef.current?.focus();\n }\n if (e.key === 'Tab') {\n // trap focus\n e.preventDefault();\n const itemEls = itemsRef.current.filter(Boolean);\n if (itemEls.length === 0) return;\n const dir = e.shiftKey ? -1 : 1;\n const nextIndex = (activeIndex + dir + itemEls.length) % itemEls.length;\n setActiveIndex(nextIndex);\n itemEls[nextIndex]?.focus();\n }\n };\n document.addEventListener('keydown', handleKey);\n return () => document.removeEventListener('keydown', handleKey);\n }, [isOpen, activeIndex, close]);\n\n // Outside click close\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event: MouseEvent) => {\n const isClickInTrigger = dropdownRef.current && dropdownRef.current.contains(event.target as Node);\n const isClickInMenu = menuRef.current && menuRef.current.contains(event.target as Node);\n\n if (!isClickInTrigger && !isClickInMenu) {\n close();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, close]);\n\n useLayoutEffect(() => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n setMenuPosition({\n top: rect.bottom,\n left: rect.left,\n width: rect.width\n });\n } else {\n setMenuPosition(null);\n }\n }, [isOpen]);\n\n // Close on scroll or resize (simpler than tracking position)\n useEffect(() => {\n if (!isOpen) return;\n\n const handleScrollOrResize = (event?: Event) => {\n // Allow scrolling inside the menu itself\n if (event && event.target && menuRef.current?.contains(event.target as Node)) {\n return;\n }\n close();\n };\n\n window.addEventListener('scroll', handleScrollOrResize, true);\n window.addEventListener('resize', handleScrollOrResize);\n\n return () => {\n window.removeEventListener('scroll', handleScrollOrResize, true);\n window.removeEventListener('resize', handleScrollOrResize);\n };\n }, [isOpen, close]);\n\n // Auto-focus first item on open (useLayoutEffect to avoid cascading re-renders)\n useLayoutEffect(() => {\n let raf: number | undefined;\n if (isOpen) {\n const itemEls = itemsRef.current.filter(Boolean);\n if (itemEls.length) {\n // schedule the focus and state update to avoid cascading synchronous renders\n raf = requestAnimationFrame(() => {\n setActiveIndex(0);\n itemEls[0]?.focus();\n });\n }\n } else {\n raf = requestAnimationFrame(() => setActiveIndex(-1));\n }\n return () => {\n if (raf) cancelAnimationFrame(raf);\n };\n }, [isOpen]);\n\n const registerItem = useCallback((el: HTMLButtonElement | null, index?: number) => {\n // If index provided, set at index; otherwise push/remove based on presence\n if (typeof index === 'number' && index >= 0) {\n itemsRef.current[index] = el;\n return;\n }\n if (el === null) {\n // remove element references\n itemsRef.current = itemsRef.current.filter((x) => x !== el && x != null);\n return;\n }\n // Push new element at the end if not already present\n if (!itemsRef.current.includes(el)) itemsRef.current.push(el);\n }, []);\n\n const { title, subtitle, icon, iconSize = 'md', triggerSize = size, endIcon } = trigger;\n\n const iconNode = icon ? <Icon name={icon} size={iconSize} color=\"currentColor\" /> : null;\n const endIconNode = endIcon ? <Icon name={endIcon} size={iconSize} color=\"currentColor\" /> : null;\n\n const getAlignmentStyle = (): React.CSSProperties => {\n if (!menuPosition) return {};\n const baseStyle: React.CSSProperties = {\n top: menuPosition.top + 4, // slightly lower than trigger\n minWidth: minWidth || undefined,\n maxWidth: maxWidth || undefined\n };\n\n if (align === 'start') {\n baseStyle.left = menuPosition.left;\n } else if (align === 'end') {\n baseStyle.right = window.innerWidth - (menuPosition.left + menuPosition.width);\n } else {\n baseStyle.left = menuPosition.left + menuPosition.width / 2;\n baseStyle.transform = 'translateX(-50%)';\n }\n\n return baseStyle;\n };\n\n return (\n <>\n <div ref={dropdownRef} className={`inline-block ${className}`}>\n <Button\n ref={triggerRef}\n variant={variant}\n style={buttonStyle}\n onClick={() => (isOpen ? close() : open())}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n aria-controls={isOpen ? 'dropdown-menu' : undefined}\n size={triggerSize}\n >\n <span className={`flex items-center ${gapSizes[iconSize]}`}>\n {iconNode && <span className=\"shrink-0\">{iconNode}</span>}\n {(title || subtitle) && (\n <span className={subtitle ? 'text-left' : ''}>\n <span className={subtitle ? 'block font-semibold' : ''}>{title}</span>\n {subtitle && <span className=\"block text-xs text-muted-foreground font-normal\">{subtitle}</span>}\n </span>\n )}\n {endIconNode && <span className=\"shrink-0\">{endIconNode}</span>}\n </span>\n </Button>\n </div>\n {isOpen &&\n menuPosition &&\n createPortal(\n <DropdownContext.Provider value={{ requestClose: close, autoClose, registerItem, minWidth, size }}>\n <div\n id=\"dropdown-menu\"\n ref={menuRef}\n className={`fixed bg-popover text-popover-foreground border border-border rounded-md shadow-lg z-50 ${size === 'sm' ? 'min-w-36 text-xs py-1' : 'min-w-44'} max-h-80 overflow-y-auto origin-top animate-scaleIn focus:outline-none ${menuClassName}`}\n style={getAlignmentStyle()}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n >\n {children}\n </div>\n </DropdownContext.Provider>,\n document.body\n )}\n </>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\nexport default Dropdown;\n\n// DropdownItem size mapping constants\n// Map size to text classes for main content\nconst sizeTextMap: Record<string, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n} as const;\n\n// Map size to description text classes (one step smaller)\nconst descriptionTextMap: Record<string, string> = {\n xs: 'text-[10px]', // smaller than xs\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-lg'\n} as const;\n\n// Map size to padding\nconst sizePaddingMap: Record<string, string> = {\n xs: 'px-2 py-1',\n sm: 'px-2.5 py-1.5',\n md: 'px-3.5 py-2',\n lg: 'px-4 py-2.5',\n xl: 'px-5 py-3'\n} as const;\n\n// DropdownItem component (simple abstraction)\nexport type DropdownItemProps = {\n children: React.ReactNode;\n onSelect?: () => void;\n /** Semantic color variant */\n variant?: 'neutral' | 'primary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n disabled?: boolean;\n className?: string;\n /** Optional muted description below main label */\n description?: string;\n /** Leading icon */\n icon?: string;\n iconSize?: Size;\n /** Trailing icon (e.g., checkmark for selected items) */\n endIcon?: string;\n /** Inherit size from dropdown or override */\n size?: 'sm' | 'md';\n /** Marks item as selected with enhanced background and optional checkmark */\n selected?: boolean;\n __dropdownIndex?: number; // injected\n __registerItem?: (el: HTMLButtonElement | null, index: number) => void; // injected (deprecated)\n};\n\nexport function DropdownItem({\n children,\n onSelect,\n variant = 'neutral',\n disabled = false,\n className = '',\n description,\n icon,\n iconSize,\n endIcon,\n size,\n selected = false\n}: Readonly<DropdownItemProps>) {\n const ctx = useContext(DropdownContext);\n const effectiveSize = size ?? ctx?.size ?? 'md';\n const effectiveIconSize = iconSize ?? effectiveSize;\n\n const base = `${sizeTextMap[effectiveSize] || sizeTextMap.md} ${sizePaddingMap[effectiveSize] || sizePaddingMap.md} w-full text-left select-none transition-colors outline-none disabled:opacity-40 disabled:pointer-events-none`;\n const focus =\n 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-popover';\n\n // Base palette for non-selected state\n const palette: Record<string, string> = {\n default: 'text-foreground/90 hover:bg-muted active:bg-muted/80',\n primary: 'text-primary hover:bg-primary/15 active:bg-primary/25 focus-visible:ring-primary',\n accent: 'text-accent hover:bg-accent/15 active:bg-accent/25 focus-visible:ring-accent',\n info: 'text-info hover:bg-info/15 active:bg-info/25 focus-visible:ring-info',\n success: 'text-success hover:bg-success/15 active:bg-success/25 focus-visible:ring-success',\n warning: 'text-warning hover:bg-warning/18 active:bg-warning/28 focus-visible:ring-warning',\n error: 'text-error hover:bg-error/15 active:bg-error/25 focus-visible:ring-error'\n };\n\n // Selected state palette - solid button style with foreground text\n const selectedPalette: Record<string, string> = {\n default: 'bg-muted text-foreground hover:bg-muted-hover hover:text-foreground',\n primary: 'bg-primary text-primary-foreground hover:bg-primary-hover hover:text-primary-foreground',\n accent: 'bg-accent text-accent-foreground hover:bg-accent-hover hover:text-accent-foreground',\n info: 'bg-info text-info-foreground hover:bg-info-hover hover:text-info-foreground',\n success: 'bg-success text-success-foreground hover:bg-success-hover hover:text-success-foreground',\n warning: 'bg-warning text-warning-foreground hover:bg-warning-hover hover:text-warning-foreground',\n error: 'bg-error text-error-foreground hover:bg-error-hover hover:text-error-foreground'\n };\n\n const variantClasses = selected\n ? selectedPalette[variant] || selectedPalette.default\n : palette[variant] || palette.default;\n\n // Determine layout: if we have icons, use horizontal layout, otherwise vertical\n const hasIcons = icon || endIcon;\n const iconNode = icon ? <Icon name={icon} size={effectiveIconSize} color=\"currentColor\" /> : null;\n const endIconNode = endIcon ? <Icon name={endIcon} size={effectiveIconSize} color=\"currentColor\" /> : null;\n\n return (\n <button\n ref={(el) => ctx?.registerItem?.(el)}\n role=\"menuitem\"\n type=\"button\"\n disabled={disabled}\n aria-current={selected ? 'true' : undefined}\n onClick={() => {\n if (disabled) return;\n onSelect?.();\n if (ctx?.autoClose) ctx.requestClose();\n }}\n className={`${base} ${focus} ${variantClasses} ${hasIcons ? 'flex flex-row items-center gap-2.5' : 'flex flex-col'} ${className} cursor-pointer`}\n >\n {iconNode && <span className=\"shrink-0\">{iconNode}</span>}\n <span className=\"flex-1 min-w-0\">\n <span className={`block font-medium leading-snug`}>{children}</span>\n {description && (\n <span\n className={`block ${descriptionTextMap[effectiveSize] || descriptionTextMap.md} text-foreground/60 mt-0.5 line-clamp-2`}\n >\n {description}\n </span>\n )}\n </span>\n {endIconNode && <span className=\"shrink-0\">{endIconNode}</span>}\n </button>\n );\n}\n\n/**\n * DropdownSeparator - Visual divider for grouping dropdown items\n * Use between items to create visual separation (e.g., separating error actions)\n */\nexport function DropdownSeparator({ className = '' }: Readonly<{ className?: string }>) {\n return <div role=\"separator\" className={`h-px bg-border ${className}`} />;\n}\n"],"names":["itemEls"],"mappings":";;;;;;AAkDA,MAAM,kBAAkB,cAA2C,IAAI;AAWvE,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,GAA4B;AAC1B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,cAAc,OAAuB,IAAI;AAC/C,QAAM,aAAa,OAA0B,IAAI;AACjD,QAAM,UAAU,OAAuB,IAAI;AAC3C,QAAM,WAAW,OAAwC,EAAE;AAC3D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiB,EAAE;AACzD,QAAM,CAAC,cAAc,eAAe,IAAI,SAA8D,IAAI;AAE1G,QAAM,QAAQ,YAAY,MAAM,UAAU,KAAK,GAAG,CAAA,CAAE;AACpD,QAAM,OAAO,YAAY,MAAM,UAAU,IAAI,GAAG,CAAA,CAAE;AAGlD,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,YAAY,CAAC,MAAqB;AACtC,UAAI,CAAC,QAAQ,QAAS;AACtB,YAAM,UAAU,SAAS,QAAQ,OAAO,OAAO;AAC/C,UAAI,CAAC,aAAa,WAAW,QAAQ,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG;AAC3D,UAAE,eAAA;AACF,YAAI,QAAQ,WAAW,EAAG;AAC1B,YAAI,YAAY;AAChB,YAAI,EAAE,QAAQ,YAAa,cAAa,cAAc,KAAK,QAAQ;AACnE,YAAI,EAAE,QAAQ,UAAW,cAAa,cAAc,IAAI,QAAQ,UAAU,QAAQ;AAClF,YAAI,EAAE,QAAQ,OAAQ,aAAY;AAClC,YAAI,EAAE,QAAQ,MAAO,aAAY,QAAQ,SAAS;AAClD,uBAAe,SAAS;AACxB,gBAAQ,SAAS,GAAG,MAAA;AACpB;AAAA,MACF;AACA,UAAI,EAAE,QAAQ,UAAU;AACtB,UAAE,eAAA;AACF,cAAA;AACA,mBAAW,SAAS,MAAA;AAAA,MACtB;AACA,UAAI,EAAE,QAAQ,OAAO;AAEnB,UAAE,eAAA;AACF,cAAMA,WAAU,SAAS,QAAQ,OAAO,OAAO;AAC/C,YAAIA,SAAQ,WAAW,EAAG;AAC1B,cAAM,MAAM,EAAE,WAAW,KAAK;AAC9B,cAAM,aAAa,cAAc,MAAMA,SAAQ,UAAUA,SAAQ;AACjE,uBAAe,SAAS;AACxBA,iBAAQ,SAAS,GAAG,MAAA;AAAA,MACtB;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,SAAS;AAC9C,WAAO,MAAM,SAAS,oBAAoB,WAAW,SAAS;AAAA,EAChE,GAAG,CAAC,QAAQ,aAAa,KAAK,CAAC;AAG/B,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,qBAAqB,CAAC,UAAsB;AAChD,YAAM,mBAAmB,YAAY,WAAW,YAAY,QAAQ,SAAS,MAAM,MAAc;AACjG,YAAM,gBAAgB,QAAQ,WAAW,QAAQ,QAAQ,SAAS,MAAM,MAAc;AAEtF,UAAI,CAAC,oBAAoB,CAAC,eAAe;AACvC,cAAA;AAAA,MACF;AAAA,IACF;AACA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM,SAAS,oBAAoB,aAAa,kBAAkB;AAAA,EAC3E,GAAG,CAAC,QAAQ,KAAK,CAAC;AAElB,kBAAgB,MAAM;AACpB,QAAI,UAAU,WAAW,SAAS;AAChC,YAAM,OAAO,WAAW,QAAQ,sBAAA;AAChC,sBAAgB;AAAA,QACd,KAAK,KAAK;AAAA,QACV,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,MAAA,CACb;AAAA,IACH,OAAO;AACL,sBAAgB,IAAI;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAGX,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AAEb,UAAM,uBAAuB,CAAC,UAAkB;AAE9C,UAAI,SAAS,MAAM,UAAU,QAAQ,SAAS,SAAS,MAAM,MAAc,GAAG;AAC5E;AAAA,MACF;AACA,YAAA;AAAA,IACF;AAEA,WAAO,iBAAiB,UAAU,sBAAsB,IAAI;AAC5D,WAAO,iBAAiB,UAAU,oBAAoB;AAEtD,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,sBAAsB,IAAI;AAC/D,aAAO,oBAAoB,UAAU,oBAAoB;AAAA,IAC3D;AAAA,EACF,GAAG,CAAC,QAAQ,KAAK,CAAC;AAGlB,kBAAgB,MAAM;AACpB,QAAI;AACJ,QAAI,QAAQ;AACV,YAAM,UAAU,SAAS,QAAQ,OAAO,OAAO;AAC/C,UAAI,QAAQ,QAAQ;AAElB,cAAM,sBAAsB,MAAM;AAChC,yBAAe,CAAC;AAChB,kBAAQ,CAAC,GAAG,MAAA;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,YAAM,sBAAsB,MAAM,eAAe,EAAE,CAAC;AAAA,IACtD;AACA,WAAO,MAAM;AACX,UAAI,0BAA0B,GAAG;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,eAAe,YAAY,CAAC,IAA8B,UAAmB;AAEjF,QAAI,OAAO,UAAU,YAAY,SAAS,GAAG;AAC3C,eAAS,QAAQ,KAAK,IAAI;AAC1B;AAAA,IACF;AACA,QAAI,OAAO,MAAM;AAEf,eAAS,UAAU,SAAS,QAAQ,OAAO,CAAC,MAAM,MAAM,MAAM,KAAK,IAAI;AACvE;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,QAAQ,SAAS,EAAE,EAAG,UAAS,QAAQ,KAAK,EAAE;AAAA,EAC9D,GAAG,CAAA,CAAE;AAEL,QAAM,EAAE,OAAO,UAAU,MAAM,WAAW,MAAM,cAAc,MAAM,QAAA,IAAY;AAEhF,QAAM,WAAW,OAAO,oBAAC,MAAA,EAAK,MAAM,MAAM,MAAM,UAAU,OAAM,eAAA,CAAe,IAAK;AACpF,QAAM,cAAc,UAAU,oBAAC,MAAA,EAAK,MAAM,SAAS,MAAM,UAAU,OAAM,eAAA,CAAe,IAAK;AAE7F,QAAM,oBAAoB,MAA2B;AACnD,QAAI,CAAC,aAAc,QAAO,CAAA;AAC1B,UAAM,YAAiC;AAAA,MACrC,KAAK,aAAa,MAAM;AAAA;AAAA,MACxB,UAAU,YAAY;AAAA,MACtB,UAAU,YAAY;AAAA,IAAA;AAGxB,QAAI,UAAU,SAAS;AACrB,gBAAU,OAAO,aAAa;AAAA,IAChC,WAAW,UAAU,OAAO;AAC1B,gBAAU,QAAQ,OAAO,cAAc,aAAa,OAAO,aAAa;AAAA,IAC1E,OAAO;AACL,gBAAU,OAAO,aAAa,OAAO,aAAa,QAAQ;AAC1D,gBAAU,YAAY;AAAA,IACxB;AAEA,WAAO;AAAA,EACT;AAEA,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,SAAI,KAAK,aAAa,WAAW,gBAAgB,SAAS,IACzD,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,SAAS,MAAO,SAAS,MAAA,IAAU,KAAA;AAAA,QACnC,iBAAe;AAAA,QACf,iBAAc;AAAA,QACd,iBAAe,SAAS,kBAAkB;AAAA,QAC1C,MAAM;AAAA,QAEN,+BAAC,QAAA,EAAK,WAAW,qBAAqB,SAAS,QAAQ,CAAC,IACrD,UAAA;AAAA,UAAA,YAAY,oBAAC,QAAA,EAAK,WAAU,YAAY,UAAA,UAAS;AAAA,WAChD,SAAS,aACT,qBAAC,UAAK,WAAW,WAAW,cAAc,IACxC,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAK,WAAW,WAAW,wBAAwB,IAAK,UAAA,OAAM;AAAA,YAC9D,YAAY,oBAAC,QAAA,EAAK,WAAU,mDAAmD,UAAA,SAAA,CAAS;AAAA,UAAA,GAC3F;AAAA,UAED,eAAe,oBAAC,QAAA,EAAK,WAAU,YAAY,UAAA,YAAA,CAAY;AAAA,QAAA,EAAA,CAC1D;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACC,UACC,gBACA;AAAA,MACE,oBAAC,gBAAgB,UAAhB,EAAyB,OAAO,EAAE,cAAc,OAAO,WAAW,cAAc,UAAU,KAAA,GACzF,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAG;AAAA,UACH,KAAK;AAAA,UACL,WAAW,2FAA2F,SAAS,OAAO,0BAA0B,UAAU,2EAA2E,aAAa;AAAA,UAClP,OAAO,kBAAA;AAAA,UACP,MAAK;AAAA,UACL,oBAAiB;AAAA,UACjB,UAAU;AAAA,UAET;AAAA,QAAA;AAAA,MAAA,GAEL;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EACX,GACJ;AAEJ;AAEA,SAAS,cAAc;AAMvB,MAAM,cAAsC;AAAA,EAC1C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAGA,MAAM,qBAA6C;AAAA,EACjD,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAGA,MAAM,iBAAyC;AAAA,EAC7C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAyBO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAAgC;AAC9B,QAAM,MAAM,WAAW,eAAe;AACtC,QAAM,gBAAgB,QAAQ,KAAK,QAAQ;AAC3C,QAAM,oBAAoB,YAAY;AAEtC,QAAM,OAAO,GAAG,YAAY,aAAa,KAAK,YAAY,EAAE,IAAI,eAAe,aAAa,KAAK,eAAe,EAAE;AAClH,QAAM,QACJ;AAGF,QAAM,UAAkC;AAAA,IACtC,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAIT,QAAM,kBAA0C;AAAA,IAC9C,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAGT,QAAM,iBAAiB,WACnB,gBAAgB,OAAO,KAAK,gBAAgB,UAC5C,QAAQ,OAAO,KAAK,QAAQ;AAGhC,QAAM,WAAW,QAAQ;AACzB,QAAM,WAAW,OAAO,oBAAC,MAAA,EAAK,MAAM,MAAM,MAAM,mBAAmB,OAAM,eAAA,CAAe,IAAK;AAC7F,QAAM,cAAc,UAAU,oBAAC,MAAA,EAAK,MAAM,SAAS,MAAM,mBAAmB,OAAM,eAAA,CAAe,IAAK;AAEtG,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,OAAO,KAAK,eAAe,EAAE;AAAA,MACnC,MAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACA,gBAAc,WAAW,SAAS;AAAA,MAClC,SAAS,MAAM;AACb,YAAI,SAAU;AACd,mBAAA;AACA,YAAI,KAAK,UAAW,KAAI,aAAA;AAAA,MAC1B;AAAA,MACA,WAAW,GAAG,IAAI,IAAI,KAAK,IAAI,cAAc,IAAI,WAAW,uCAAuC,eAAe,IAAI,SAAS;AAAA,MAE9H,UAAA;AAAA,QAAA,YAAY,oBAAC,QAAA,EAAK,WAAU,YAAY,UAAA,UAAS;AAAA,QAClD,qBAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAW,kCAAmC,UAAS;AAAA,UAC5D,eACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,SAAS,mBAAmB,aAAa,KAAK,mBAAmB,EAAE;AAAA,cAE7E,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,GAEJ;AAAA,QACC,eAAe,oBAAC,QAAA,EAAK,WAAU,YAAY,UAAA,YAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9D;AAMO,SAAS,kBAAkB,EAAE,YAAY,MAAwC;AACtF,6BAAQ,OAAA,EAAI,MAAK,aAAY,WAAW,kBAAkB,SAAS,IAAI;AACzE;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/nav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type NavProps = {
|
|
3
|
+
/** Navigation items to render (typically NavbarLink or other nav elements) */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Additional CSS classes (kept for backward compatibility) */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Accessibility label */
|
|
8
|
+
ariaLabel?: string;
|
|
9
|
+
/** Layout direction for the nav - horizontal (default) or vertical */
|
|
10
|
+
direction?: 'horizontal' | 'vertical';
|
|
11
|
+
/** Spacing variant between children */
|
|
12
|
+
spacing?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
13
|
+
/** Alignment of items along cross axis */
|
|
14
|
+
align?: 'start' | 'center' | 'end' | 'stretch';
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Accessible navigation component
|
|
18
|
+
*/
|
|
19
|
+
declare function Nav({ children, className, ariaLabel, direction, spacing, align }: Readonly<NavProps>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare namespace Nav {
|
|
21
|
+
var displayName: string;
|
|
22
|
+
}
|
|
23
|
+
export default Nav;
|
|
24
|
+
//# sourceMappingURL=nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/nav/nav.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,QAAQ,GAAG;IACrB,8EAA8E;IAC9E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7C,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF;;GAEG;AACH,iBAAS,GAAG,CAAC,EACX,QAAQ,EACR,SAAc,EACd,SAA6B,EAC7B,SAAwB,EACxB,OAAc,EACd,KAAgB,EACjB,EAAE,QAAQ,CAAC,QAAQ,CAAC,2CAyBpB;kBAhCQ,GAAG;;;AAoCZ,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
function Nav({
|
|
3
|
+
children,
|
|
4
|
+
className = "",
|
|
5
|
+
ariaLabel = "Main navigation",
|
|
6
|
+
direction = "horizontal",
|
|
7
|
+
spacing = "md",
|
|
8
|
+
align = "center"
|
|
9
|
+
}) {
|
|
10
|
+
const spacingClasses = {
|
|
11
|
+
none: "gap-0",
|
|
12
|
+
sm: "gap-3 sm:gap-2",
|
|
13
|
+
md: "gap-5 sm:gap-4",
|
|
14
|
+
lg: "gap-7 sm:gap-6",
|
|
15
|
+
xl: "gap-10 sm:gap-8"
|
|
16
|
+
};
|
|
17
|
+
const alignClasses = {
|
|
18
|
+
start: "items-start",
|
|
19
|
+
center: "items-center",
|
|
20
|
+
end: "items-end",
|
|
21
|
+
stretch: "items-stretch"
|
|
22
|
+
};
|
|
23
|
+
const directionClass = direction === "horizontal" ? "flex-row" : "flex-col";
|
|
24
|
+
const spacingClass = spacingClasses[spacing];
|
|
25
|
+
const alignClass = alignClasses[align];
|
|
26
|
+
return /* @__PURE__ */ jsx("nav", { "aria-label": ariaLabel, className: `flex ${directionClass} ${spacingClass} ${alignClass} ${className}`, children });
|
|
27
|
+
}
|
|
28
|
+
Nav.displayName = "Nav";
|
|
29
|
+
export {
|
|
30
|
+
Nav as default
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav.js","sources":["../../../../src/components/navigation/nav/nav.tsx"],"sourcesContent":["import React from 'react';\n\nexport type NavProps = {\n /** Navigation items to render (typically NavbarLink or other nav elements) */\n children: React.ReactNode;\n /** Additional CSS classes (kept for backward compatibility) */\n className?: string;\n /** Accessibility label */\n ariaLabel?: string;\n /** Layout direction for the nav - horizontal (default) or vertical */\n direction?: 'horizontal' | 'vertical';\n /** Spacing variant between children */\n spacing?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n /** Alignment of items along cross axis */\n align?: 'start' | 'center' | 'end' | 'stretch';\n};\n\n/**\n * Accessible navigation component\n */\nfunction Nav({\n children,\n className = '',\n ariaLabel = 'Main navigation',\n direction = 'horizontal',\n spacing = 'md',\n align = 'center'\n}: Readonly<NavProps>) {\n const spacingClasses: Record<NonNullable<NavProps['spacing']>, string> = {\n none: 'gap-0',\n sm: 'gap-3 sm:gap-2',\n md: 'gap-5 sm:gap-4',\n lg: 'gap-7 sm:gap-6',\n xl: 'gap-10 sm:gap-8'\n };\n\n const alignClasses: Record<NonNullable<NavProps['align']>, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch'\n };\n\n const directionClass = direction === 'horizontal' ? 'flex-row' : 'flex-col';\n const spacingClass = spacingClasses[spacing];\n const alignClass = alignClasses[align as NonNullable<NavProps['align']>];\n\n return (\n <nav aria-label={ariaLabel} className={`flex ${directionClass} ${spacingClass} ${alignClass} ${className}`}>\n {children}\n </nav>\n );\n}\n\nNav.displayName = 'Nav';\n\nexport default Nav;\n"],"names":[],"mappings":";AAoBA,SAAS,IAAI;AAAA,EACX;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AACV,GAAuB;AACrB,QAAM,iBAAmE;AAAA,IACvE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA;AAGN,QAAM,eAA+D;AAAA,IACnE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,SAAS;AAAA,EAAA;AAGX,QAAM,iBAAiB,cAAc,eAAe,aAAa;AACjE,QAAM,eAAe,eAAe,OAAO;AAC3C,QAAM,aAAa,aAAa,KAAuC;AAEvE,SACE,oBAAC,OAAA,EAAI,cAAY,WAAW,WAAW,QAAQ,cAAc,IAAI,YAAY,IAAI,UAAU,IAAI,SAAS,IACrG,UACH;AAEJ;AAEA,IAAI,cAAc;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default } from './nav-dropdown';
|
|
2
|
+
export { default as NavDropdownItem } from './nav-dropdown-item';
|
|
3
|
+
export type { NavDropdownProps } from './nav-dropdown';
|
|
4
|
+
export type { NavDropdownItemProps } from './nav-dropdown-item';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/nav-dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type NavDropdownItemProps = {
|
|
2
|
+
/** The route path */
|
|
3
|
+
to: string;
|
|
4
|
+
/** The label text or content */
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
/** Additional CSS classes for the menu item */
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Navigation dropdown menu item with consistent styling
|
|
11
|
+
*/
|
|
12
|
+
declare function NavDropdownItem({ to, children, className }: Readonly<NavDropdownItemProps>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare namespace NavDropdownItem {
|
|
14
|
+
var displayName: string;
|
|
15
|
+
}
|
|
16
|
+
export default NavDropdownItem;
|
|
17
|
+
//# sourceMappingURL=nav-dropdown-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-dropdown-item.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/nav-dropdown/nav-dropdown-item.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG;IACjC,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,iBAAS,eAAe,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAc,EAAE,EAAE,QAAQ,CAAC,oBAAoB,CAAC,2CAaxF;kBAbQ,eAAe;;;AAiBxB,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { NavLink } from "react-router-dom";
|
|
3
|
+
function NavDropdownItem({ to, children, className = "" }) {
|
|
4
|
+
return /* @__PURE__ */ jsx(
|
|
5
|
+
NavLink,
|
|
6
|
+
{
|
|
7
|
+
to,
|
|
8
|
+
className: ({ isActive }) => `block px-4 py-2 hover:bg-muted/50 no-underline transition-colors ${isActive ? "text-primary font-semibold bg-muted/30" : "text-foreground"} ${className}`,
|
|
9
|
+
children
|
|
10
|
+
}
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
NavDropdownItem.displayName = "NavDropdownItem";
|
|
14
|
+
export {
|
|
15
|
+
NavDropdownItem as default
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=nav-dropdown-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-dropdown-item.js","sources":["../../../../src/components/navigation/nav-dropdown/nav-dropdown-item.tsx"],"sourcesContent":["import { NavLink } from 'react-router-dom';\n\nexport type NavDropdownItemProps = {\n /** The route path */\n to: string;\n /** The label text or content */\n children: React.ReactNode;\n /** Additional CSS classes for the menu item */\n className?: string;\n};\n\n/**\n * Navigation dropdown menu item with consistent styling\n */\nfunction NavDropdownItem({ to, children, className = '' }: Readonly<NavDropdownItemProps>) {\n return (\n <NavLink\n to={to}\n className={({ isActive }) =>\n `block px-4 py-2 hover:bg-muted/50 no-underline transition-colors ${\n isActive ? 'text-primary font-semibold bg-muted/30' : 'text-foreground'\n } ${className}`\n }\n >\n {children}\n </NavLink>\n );\n}\n\nNavDropdownItem.displayName = 'NavDropdownItem';\n\nexport default NavDropdownItem;\n"],"names":[],"mappings":";;AAcA,SAAS,gBAAgB,EAAE,IAAI,UAAU,YAAY,MAAsC;AACzF,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAW,CAAC,EAAE,SAAA,MACZ,oEACE,WAAW,2CAA2C,iBACxD,IAAI,SAAS;AAAA,MAGd;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,gBAAgB,cAAc;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type NavDropdownProps = {
|
|
2
|
+
/** The label text for the dropdown trigger */
|
|
3
|
+
label: string;
|
|
4
|
+
/** The path prefix to match for active state (e.g., '/showcase') */
|
|
5
|
+
activePathPrefix: string;
|
|
6
|
+
/** The dropdown menu items */
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/** Optional additional className for the wrapper */
|
|
9
|
+
className?: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Navigation dropdown with smart active state detection
|
|
13
|
+
* Displays a labeled trigger that highlights when any child route is active
|
|
14
|
+
*/
|
|
15
|
+
declare function NavDropdown({ label, activePathPrefix, children, className }: Readonly<NavDropdownProps>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare namespace NavDropdown {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
export default NavDropdown;
|
|
20
|
+
//# sourceMappingURL=nav-dropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/nav-dropdown/nav-dropdown.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAc,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,2CAgBrG;kBAhBQ,WAAW;;;AAoBpB,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useLocation } from "react-router-dom";
|
|
3
|
+
import Dropdown from "../dropdown/dropdown.js";
|
|
4
|
+
function NavDropdown({ label, activePathPrefix, children, className = "" }) {
|
|
5
|
+
const location = useLocation();
|
|
6
|
+
const isActive = location.pathname.startsWith(activePathPrefix);
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
Dropdown,
|
|
9
|
+
{
|
|
10
|
+
trigger: {
|
|
11
|
+
title: label,
|
|
12
|
+
endIcon: "chevron-down"
|
|
13
|
+
},
|
|
14
|
+
buttonStyle: "link",
|
|
15
|
+
className: `${isActive ? "text-primary font-semibold" : "text-foreground hover:text-primary"} ${className}`,
|
|
16
|
+
children: /* @__PURE__ */ jsx("div", { className: "py-2 flex flex-col", children })
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
NavDropdown.displayName = "NavDropdown";
|
|
21
|
+
export {
|
|
22
|
+
NavDropdown as default
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=nav-dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-dropdown.js","sources":["../../../../src/components/navigation/nav-dropdown/nav-dropdown.tsx"],"sourcesContent":["import { useLocation } from 'react-router-dom';\nimport Dropdown from '../dropdown/dropdown';\n\nexport type NavDropdownProps = {\n /** The label text for the dropdown trigger */\n label: string;\n /** The path prefix to match for active state (e.g., '/showcase') */\n activePathPrefix: string;\n /** The dropdown menu items */\n children: React.ReactNode;\n /** Optional additional className for the wrapper */\n className?: string;\n};\n\n/**\n * Navigation dropdown with smart active state detection\n * Displays a labeled trigger that highlights when any child route is active\n */\nfunction NavDropdown({ label, activePathPrefix, children, className = '' }: Readonly<NavDropdownProps>) {\n const location = useLocation();\n const isActive = location.pathname.startsWith(activePathPrefix);\n\n return (\n <Dropdown\n trigger={{\n title: label,\n endIcon: 'chevron-down'\n }}\n buttonStyle=\"link\"\n className={`${isActive ? 'text-primary font-semibold' : 'text-foreground hover:text-primary'} ${className}`}\n >\n <div className=\"py-2 flex flex-col\">{children}</div>\n </Dropdown>\n );\n}\n\nNavDropdown.displayName = 'NavDropdown';\n\nexport default NavDropdown;\n"],"names":[],"mappings":";;;AAkBA,SAAS,YAAY,EAAE,OAAO,kBAAkB,UAAU,YAAY,MAAkC;AACtG,QAAM,WAAW,YAAA;AACjB,QAAM,WAAW,SAAS,SAAS,WAAW,gBAAgB;AAE9D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,MAEX,aAAY;AAAA,MACZ,WAAW,GAAG,WAAW,+BAA+B,oCAAoC,IAAI,SAAS;AAAA,MAEzG,UAAA,oBAAC,OAAA,EAAI,WAAU,sBAAsB,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGpD;AAEA,YAAY,cAAc;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as Navbar } from './navbar';
|
|
2
|
+
export { default as NavbarBrand } from './navbar-brand';
|
|
3
|
+
export { default as NavbarLink } from './navbar-link';
|
|
4
|
+
export { default as NavbarToggle } from './navbar-toggle';
|
|
5
|
+
export type { NavbarProps } from './navbar';
|
|
6
|
+
export type { NavbarToggleProps } from './navbar-toggle';
|
|
7
|
+
export type { NavbarBrandProps } from './navbar-brand';
|
|
8
|
+
export type { NavbarLinkProps } from './navbar-link';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/navbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type NavbarBrandProps = {
|
|
3
|
+
/** Brand content (typically logo image or text) */
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** Optional navigation link URL */
|
|
6
|
+
href?: string;
|
|
7
|
+
/** Whether the link points to an external site */
|
|
8
|
+
external?: boolean;
|
|
9
|
+
/** Click handler for interactive brand (when not using href) */
|
|
10
|
+
onClick?: () => void;
|
|
11
|
+
/** Additional CSS classes for the brand text */
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* NavbarBrand Component - Brand/logo section for Navbar
|
|
16
|
+
* Uses React Router Link for internal navigation
|
|
17
|
+
*/
|
|
18
|
+
declare function NavbarBrand({ children, href, external, onClick, className }: Readonly<NavbarBrandProps>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare namespace NavbarBrand {
|
|
20
|
+
var displayName: string;
|
|
21
|
+
}
|
|
22
|
+
export default NavbarBrand;
|
|
23
|
+
//# sourceMappingURL=navbar-brand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-brand.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/navbar/navbar-brand.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mDAAmD;IACnD,QAAQ,EAAE,SAAS,CAAC;IACpB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,iBAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAgB,EAAE,OAAO,EAAE,SAAc,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,2CAgC7G;kBAhCQ,WAAW;;;AAoCpB,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Link } from "react-router-dom";
|
|
3
|
+
function NavbarBrand({ children, href, external = false, onClick, className = "" }) {
|
|
4
|
+
const content = /* @__PURE__ */ jsx("span", { className: `text-lg md:text-xl font-bold ${className}`, children });
|
|
5
|
+
const linkClassName = "no-underline text-foreground hover:text-primary transition-colors";
|
|
6
|
+
if (href) {
|
|
7
|
+
if (external) {
|
|
8
|
+
return /* @__PURE__ */ jsx("a", { href, className: linkClassName, target: "_blank", rel: "noopener noreferrer", children: content });
|
|
9
|
+
}
|
|
10
|
+
return /* @__PURE__ */ jsx(Link, { to: href, className: linkClassName, children: content });
|
|
11
|
+
}
|
|
12
|
+
if (onClick) {
|
|
13
|
+
return /* @__PURE__ */ jsx("button", { onClick, className: linkClassName, children: content });
|
|
14
|
+
}
|
|
15
|
+
return content;
|
|
16
|
+
}
|
|
17
|
+
NavbarBrand.displayName = "NavbarBrand";
|
|
18
|
+
export {
|
|
19
|
+
NavbarBrand as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=navbar-brand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-brand.js","sources":["../../../../src/components/navigation/navbar/navbar-brand.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\n\nexport type NavbarBrandProps = {\n /** Brand content (typically logo image or text) */\n children: ReactNode;\n /** Optional navigation link URL */\n href?: string;\n /** Whether the link points to an external site */\n external?: boolean;\n /** Click handler for interactive brand (when not using href) */\n onClick?: () => void;\n /** Additional CSS classes for the brand text */\n className?: string;\n};\n\n/**\n * NavbarBrand Component - Brand/logo section for Navbar\n * Uses React Router Link for internal navigation\n */\nfunction NavbarBrand({ children, href, external = false, onClick, className = '' }: Readonly<NavbarBrandProps>) {\n const content = <span className={`text-lg md:text-xl font-bold ${className}`}>{children}</span>;\n\n const linkClassName = 'no-underline text-foreground hover:text-primary transition-colors';\n\n if (href) {\n // External links use regular anchor tag\n if (external) {\n return (\n <a href={href} className={linkClassName} target=\"_blank\" rel=\"noopener noreferrer\">\n {content}\n </a>\n );\n }\n\n // Internal links use React Router Link\n return (\n <Link to={href} className={linkClassName}>\n {content}\n </Link>\n );\n }\n\n if (onClick) {\n return (\n <button onClick={onClick} className={linkClassName}>\n {content}\n </button>\n );\n }\n\n return content;\n}\n\nNavbarBrand.displayName = 'NavbarBrand';\n\nexport default NavbarBrand;\n"],"names":[],"mappings":";;AAoBA,SAAS,YAAY,EAAE,UAAU,MAAM,WAAW,OAAO,SAAS,YAAY,MAAkC;AAC9G,QAAM,UAAU,oBAAC,QAAA,EAAK,WAAW,gCAAgC,SAAS,IAAK,UAAS;AAExF,QAAM,gBAAgB;AAEtB,MAAI,MAAM;AAER,QAAI,UAAU;AACZ,aACE,oBAAC,OAAE,MAAY,WAAW,eAAe,QAAO,UAAS,KAAI,uBAC1D,UAAA,QAAA,CACH;AAAA,IAEJ;AAGA,+BACG,MAAA,EAAK,IAAI,MAAM,WAAW,eACxB,UAAA,SACH;AAAA,EAEJ;AAEA,MAAI,SAAS;AACX,WACE,oBAAC,UAAA,EAAO,SAAkB,WAAW,eAClC,UAAA,SACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAEA,YAAY,cAAc;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type NavbarLinkProps = {
|
|
3
|
+
/** Navigation destination URL */
|
|
4
|
+
href: string;
|
|
5
|
+
/** Link text or content */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
/** Whether the link points to an external site */
|
|
8
|
+
external?: boolean;
|
|
9
|
+
/** Additional CSS classes for the link */
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Match only exact path for active state (React Router NavLink prop) */
|
|
12
|
+
end?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* NavbarLink Component - Navigation link for Navbar
|
|
16
|
+
* Uses React Router's NavLink for automatic active state management
|
|
17
|
+
*/
|
|
18
|
+
declare function NavbarLink({ href, children, external, className, end }: Readonly<NavbarLinkProps>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare namespace NavbarLink {
|
|
20
|
+
var displayName: string;
|
|
21
|
+
}
|
|
22
|
+
export default NavbarLink;
|
|
23
|
+
//# sourceMappingURL=navbar-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-link.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/navbar/navbar-link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,MAAM,MAAM,eAAe,GAAG;IAC5B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,iBAAS,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAgB,EAAE,SAAc,EAAE,GAAW,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,2CAwC/G;kBAxCQ,UAAU;;;AA4CnB,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { NavLink } from "react-router-dom";
|
|
3
|
+
function NavbarLink({ href, children, external = false, className = "", end = false }) {
|
|
4
|
+
const baseClassName = `block md:inline-block py-2 md:py-0 font-medium transition-colors no-underline ${className}`;
|
|
5
|
+
if (external) {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
"a",
|
|
8
|
+
{
|
|
9
|
+
href,
|
|
10
|
+
target: "_blank",
|
|
11
|
+
rel: "noopener noreferrer",
|
|
12
|
+
className: `${baseClassName} text-foreground hover:text-primary`,
|
|
13
|
+
children
|
|
14
|
+
}
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
if (href.startsWith("#")) {
|
|
18
|
+
return /* @__PURE__ */ jsx("a", { href, className: `${baseClassName} text-foreground hover:text-primary`, children });
|
|
19
|
+
}
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
NavLink,
|
|
22
|
+
{
|
|
23
|
+
to: href,
|
|
24
|
+
end,
|
|
25
|
+
className: ({ isActive }) => `${baseClassName} ${isActive ? "text-primary font-semibold border-b-2 border-primary" : "text-foreground hover:text-primary"}`,
|
|
26
|
+
children
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
NavbarLink.displayName = "NavbarLink";
|
|
31
|
+
export {
|
|
32
|
+
NavbarLink as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=navbar-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-link.js","sources":["../../../../src/components/navigation/navbar/navbar-link.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { NavLink } from 'react-router-dom';\n\nexport type NavbarLinkProps = {\n /** Navigation destination URL */\n href: string;\n /** Link text or content */\n children: ReactNode;\n /** Whether the link points to an external site */\n external?: boolean;\n /** Additional CSS classes for the link */\n className?: string;\n /** Match only exact path for active state (React Router NavLink prop) */\n end?: boolean;\n};\n\n/**\n * NavbarLink Component - Navigation link for Navbar\n * Uses React Router's NavLink for automatic active state management\n */\nfunction NavbarLink({ href, children, external = false, className = '', end = false }: Readonly<NavbarLinkProps>) {\n const baseClassName = `block md:inline-block py-2 md:py-0 font-medium transition-colors no-underline ${className}`;\n\n // External links use regular anchor tag\n if (external) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${baseClassName} text-foreground hover:text-primary`}\n >\n {children}\n </a>\n );\n }\n\n // Hash anchors should be plain anchors (in-page navigation), not NavLink\n if (href.startsWith('#')) {\n return (\n <a href={href} className={`${baseClassName} text-foreground hover:text-primary`}>\n {children}\n </a>\n );\n }\n\n // Internal links use React Router NavLink with automatic active state\n return (\n <NavLink\n to={href}\n end={end}\n className={({ isActive }) =>\n `${baseClassName} ${\n isActive ? 'text-primary font-semibold border-b-2 border-primary' : 'text-foreground hover:text-primary'\n }`\n }\n >\n {children}\n </NavLink>\n );\n}\n\nNavbarLink.displayName = 'NavbarLink';\n\nexport default NavbarLink;\n"],"names":[],"mappings":";;AAoBA,SAAS,WAAW,EAAE,MAAM,UAAU,WAAW,OAAO,YAAY,IAAI,MAAM,SAAoC;AAChH,QAAM,gBAAgB,iFAAiF,SAAS;AAGhH,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,QAAO;AAAA,QACP,KAAI;AAAA,QACJ,WAAW,GAAG,aAAa;AAAA,QAE1B;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGA,MAAI,KAAK,WAAW,GAAG,GAAG;AACxB,+BACG,KAAA,EAAE,MAAY,WAAW,GAAG,aAAa,uCACvC,UACH;AAAA,EAEJ;AAGA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,MACJ;AAAA,MACA,WAAW,CAAC,EAAE,SAAA,MACZ,GAAG,aAAa,IACd,WAAW,yDAAyD,oCACtE;AAAA,MAGD;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,WAAW,cAAc;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface NavbarToggleProps {
|
|
2
|
+
/**
|
|
3
|
+
* Whether the mobile menu is open (for mobile view)
|
|
4
|
+
*/
|
|
5
|
+
mobileMenuOpen?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Whether the sidebar is collapsed (for desktop sidebar view)
|
|
8
|
+
*/
|
|
9
|
+
sidebarCollapsed?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Click handler for mobile menu toggle (mobile view)
|
|
12
|
+
*/
|
|
13
|
+
onMobileMenuToggle?: () => void;
|
|
14
|
+
/**
|
|
15
|
+
* Click handler for sidebar toggle (desktop view)
|
|
16
|
+
*/
|
|
17
|
+
onSidebarToggle?: () => void;
|
|
18
|
+
/**
|
|
19
|
+
* Optional custom className
|
|
20
|
+
*/
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* NavbarToggle - A responsive toggle button that switches between mobile menu and sidebar collapse icons
|
|
25
|
+
*
|
|
26
|
+
* On mobile (< lg): Shows hamburger menu / close icon and calls onMobileMenuToggle
|
|
27
|
+
* On desktop (>= lg): Shows sidebar expand / collapse icon and calls onSidebarToggle
|
|
28
|
+
*/
|
|
29
|
+
declare function NavbarToggle({ mobileMenuOpen, sidebarCollapsed, onMobileMenuToggle, onSidebarToggle, className }: NavbarToggleProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
declare namespace NavbarToggle {
|
|
31
|
+
var displayName: string;
|
|
32
|
+
}
|
|
33
|
+
export default NavbarToggle;
|
|
34
|
+
//# sourceMappingURL=navbar-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-toggle.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/navbar/navbar-toggle.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,EACpB,cAAsB,EACtB,gBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,SAAc,EACf,EAAE,iBAAiB,2CA4BnB;kBAlCQ,YAAY;;;AAsCrB,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Icon } from "../../system/icon/icon.js";
|
|
3
|
+
function NavbarToggle({
|
|
4
|
+
mobileMenuOpen = false,
|
|
5
|
+
sidebarCollapsed = false,
|
|
6
|
+
onMobileMenuToggle,
|
|
7
|
+
onSidebarToggle,
|
|
8
|
+
className = ""
|
|
9
|
+
}) {
|
|
10
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11
|
+
/* @__PURE__ */ jsx(
|
|
12
|
+
"button",
|
|
13
|
+
{
|
|
14
|
+
onClick: onMobileMenuToggle,
|
|
15
|
+
className: `lg:hidden flex items-center justify-center w-9 h-9 md:w-8 md:h-8 rounded text-foreground/70 hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring ${className}`.trim(),
|
|
16
|
+
"aria-label": mobileMenuOpen ? "Close menu" : "Open menu",
|
|
17
|
+
type: "button",
|
|
18
|
+
children: mobileMenuOpen ? /* @__PURE__ */ jsx(Icon, { name: "x", size: "sm" }) : /* @__PURE__ */ jsx(Icon, { name: "menu-2", size: "sm" })
|
|
19
|
+
}
|
|
20
|
+
),
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
"button",
|
|
23
|
+
{
|
|
24
|
+
onClick: onSidebarToggle,
|
|
25
|
+
className: `hidden lg:flex items-center justify-center w-8 h-8 rounded text-foreground/70 hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring ${className}`.trim(),
|
|
26
|
+
"aria-label": sidebarCollapsed ? "Expand sidebar" : "Collapse sidebar",
|
|
27
|
+
type: "button",
|
|
28
|
+
children: sidebarCollapsed ? /* @__PURE__ */ jsx(Icon, { name: "layout-sidebar-right-expand", size: "sm" }) : /* @__PURE__ */ jsx(Icon, { name: "layout-sidebar-right-collapse", size: "sm" })
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
] });
|
|
32
|
+
}
|
|
33
|
+
NavbarToggle.displayName = "NavbarToggle";
|
|
34
|
+
export {
|
|
35
|
+
NavbarToggle as default
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=navbar-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-toggle.js","sources":["../../../../src/components/navigation/navbar/navbar-toggle.tsx"],"sourcesContent":["import Icon from '../../system/icon/icon';\n\nexport interface NavbarToggleProps {\n /**\n * Whether the mobile menu is open (for mobile view)\n */\n mobileMenuOpen?: boolean;\n /**\n * Whether the sidebar is collapsed (for desktop sidebar view)\n */\n sidebarCollapsed?: boolean;\n /**\n * Click handler for mobile menu toggle (mobile view)\n */\n onMobileMenuToggle?: () => void;\n /**\n * Click handler for sidebar toggle (desktop view)\n */\n onSidebarToggle?: () => void;\n /**\n * Optional custom className\n */\n className?: string;\n}\n\n/**\n * NavbarToggle - A responsive toggle button that switches between mobile menu and sidebar collapse icons\n *\n * On mobile (< lg): Shows hamburger menu / close icon and calls onMobileMenuToggle\n * On desktop (>= lg): Shows sidebar expand / collapse icon and calls onSidebarToggle\n */\nfunction NavbarToggle({\n mobileMenuOpen = false,\n sidebarCollapsed = false,\n onMobileMenuToggle,\n onSidebarToggle,\n className = ''\n}: NavbarToggleProps) {\n return (\n <>\n {/* Mobile toggle - visible on lg breakpoint and below */}\n <button\n onClick={onMobileMenuToggle}\n className={`lg:hidden flex items-center justify-center w-9 h-9 md:w-8 md:h-8 rounded text-foreground/70 hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring ${className}`.trim()}\n aria-label={mobileMenuOpen ? 'Close menu' : 'Open menu'}\n type=\"button\"\n >\n {mobileMenuOpen ? <Icon name=\"x\" size=\"sm\" /> : <Icon name=\"menu-2\" size=\"sm\" />}\n </button>\n\n {/* Desktop toggle - visible on lg breakpoint and above */}\n <button\n onClick={onSidebarToggle}\n className={`hidden lg:flex items-center justify-center w-8 h-8 rounded text-foreground/70 hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring ${className}`.trim()}\n aria-label={sidebarCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n type=\"button\"\n >\n {sidebarCollapsed ? (\n <Icon name=\"layout-sidebar-right-expand\" size=\"sm\" />\n ) : (\n <Icon name=\"layout-sidebar-right-collapse\" size=\"sm\" />\n )}\n </button>\n </>\n );\n}\n\nNavbarToggle.displayName = 'NavbarToggle';\n\nexport default NavbarToggle;\n"],"names":[],"mappings":";;AA+BA,SAAS,aAAa;AAAA,EACpB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAAsB;AACpB,SACE,qBAAA,UAAA,EAEE,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW,sMAAsM,SAAS,GAAG,KAAA;AAAA,QAC7N,cAAY,iBAAiB,eAAe;AAAA,QAC5C,MAAK;AAAA,QAEJ,UAAA,iBAAiB,oBAAC,MAAA,EAAK,MAAK,KAAI,MAAK,KAAA,CAAK,IAAK,oBAAC,MAAA,EAAK,MAAK,UAAS,MAAK,KAAA,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAIhF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW,wLAAwL,SAAS,GAAG,KAAA;AAAA,QAC/M,cAAY,mBAAmB,mBAAmB;AAAA,QAClD,MAAK;AAAA,QAEJ,UAAA,mBACC,oBAAC,MAAA,EAAK,MAAK,+BAA8B,MAAK,KAAA,CAAK,IAEnD,oBAAC,MAAA,EAAK,MAAK,iCAAgC,MAAK,KAAA,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAEzD,GACF;AAEJ;AAEA,aAAa,cAAc;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type NavbarProps = {
|
|
3
|
+
/** Brand logo or text to display on the left side */
|
|
4
|
+
brand?: ReactNode;
|
|
5
|
+
/** Navigation links or items to display in the center */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
/** Enable sticky positioning at the top of viewport */
|
|
8
|
+
sticky?: boolean;
|
|
9
|
+
/** Additional CSS classes for the navbar container */
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Action buttons or elements to display on the right side */
|
|
12
|
+
actions?: ReactNode;
|
|
13
|
+
/** Visual style variant for the navbar background */
|
|
14
|
+
appearance?: 'solid' | 'blur' | 'transparent';
|
|
15
|
+
/** Border configuration for top and/or bottom edges */
|
|
16
|
+
border?: 'none' | 'bottom' | 'top' | 'both';
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Navbar Component - Responsive navigation
|
|
20
|
+
* - Sticky positioning option
|
|
21
|
+
* - Brand logo section
|
|
22
|
+
* - Action buttons area
|
|
23
|
+
* - Fully responsive
|
|
24
|
+
* - Configurable container size
|
|
25
|
+
* - Appearance modes: solid, blur (frosted glass), transparent
|
|
26
|
+
* - Configurable borders: none, bottom, top, or both
|
|
27
|
+
*/
|
|
28
|
+
declare function Navbar({ brand, children, sticky, className, actions, appearance, border }: Readonly<NavbarProps>): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
declare namespace Navbar {
|
|
30
|
+
var displayName: string;
|
|
31
|
+
}
|
|
32
|
+
export default Navbar;
|
|
33
|
+
//# sourceMappingURL=navbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/navbar/navbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,MAAM,MAAM,WAAW,GAAG;IACxB,qDAAqD;IACrD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,QAAQ,EAAE,SAAS,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;IAC9C,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;GASG;AACH,iBAAS,MAAM,CAAC,EACd,KAAK,EACL,QAAQ,EACR,MAAa,EACb,SAAc,EACd,OAAO,EACP,UAAoB,EACpB,MAAe,EAChB,EAAE,QAAQ,CAAC,WAAW,CAAC,2CAkCvB;kBA1CQ,MAAM;;;AA8Cf,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Container from "../../layout/container/container.js";
|
|
3
|
+
function Navbar({
|
|
4
|
+
brand,
|
|
5
|
+
children,
|
|
6
|
+
sticky = true,
|
|
7
|
+
className = "",
|
|
8
|
+
actions,
|
|
9
|
+
appearance = "solid",
|
|
10
|
+
border = "none"
|
|
11
|
+
}) {
|
|
12
|
+
const appearanceClasses = {
|
|
13
|
+
solid: "bg-background shadow-sm",
|
|
14
|
+
blur: "bg-background/70 backdrop-blur-md supports-[backdrop-filter]:bg-background/60 border border-border/60",
|
|
15
|
+
transparent: "bg-transparent"
|
|
16
|
+
};
|
|
17
|
+
const borderClasses = {
|
|
18
|
+
none: "",
|
|
19
|
+
bottom: "border-b border-border",
|
|
20
|
+
top: "border-t border-border",
|
|
21
|
+
both: "border-y border-border"
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
"nav",
|
|
25
|
+
{
|
|
26
|
+
"data-appearance": appearance,
|
|
27
|
+
className: `${sticky ? "sticky top-0 z-50" : ""} ${appearanceClasses[appearance]} ${borderClasses[border]} ${className}`,
|
|
28
|
+
children: /* @__PURE__ */ jsx(Container, { marginX: "sm", size: "full", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between h-14 md:h-16 px-3 md:px-0", children: [
|
|
29
|
+
brand && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: brand }),
|
|
30
|
+
/* @__PURE__ */ jsx("div", { className: "hidden md:flex md:items-center md:space-x-6 md:flex-1 md:ml-10", children }),
|
|
31
|
+
actions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: actions })
|
|
32
|
+
] }) })
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
Navbar.displayName = "Navbar";
|
|
37
|
+
export {
|
|
38
|
+
Navbar as default
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=navbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar.js","sources":["../../../../src/components/navigation/navbar/navbar.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport Container from '../../layout/container/container';\n\nexport type NavbarProps = {\n /** Brand logo or text to display on the left side */\n brand?: ReactNode;\n /** Navigation links or items to display in the center */\n children: ReactNode;\n /** Enable sticky positioning at the top of viewport */\n sticky?: boolean;\n /** Additional CSS classes for the navbar container */\n className?: string;\n /** Action buttons or elements to display on the right side */\n actions?: ReactNode;\n /** Visual style variant for the navbar background */\n appearance?: 'solid' | 'blur' | 'transparent';\n /** Border configuration for top and/or bottom edges */\n border?: 'none' | 'bottom' | 'top' | 'both';\n};\n\n/**\n * Navbar Component - Responsive navigation\n * - Sticky positioning option\n * - Brand logo section\n * - Action buttons area\n * - Fully responsive\n * - Configurable container size\n * - Appearance modes: solid, blur (frosted glass), transparent\n * - Configurable borders: none, bottom, top, or both\n */\nfunction Navbar({\n brand,\n children,\n sticky = true,\n className = '',\n actions,\n appearance = 'solid',\n border = 'none'\n}: Readonly<NavbarProps>) {\n // Appearance styles\n const appearanceClasses = {\n solid: 'bg-background shadow-sm',\n blur: 'bg-background/70 backdrop-blur-md supports-[backdrop-filter]:bg-background/60 border border-border/60',\n transparent: 'bg-transparent'\n } as const;\n\n const borderClasses = {\n none: '',\n bottom: 'border-b border-border',\n top: 'border-t border-border',\n both: 'border-y border-border'\n };\n\n return (\n <nav\n data-appearance={appearance}\n className={`${sticky ? 'sticky top-0 z-50' : ''} ${appearanceClasses[appearance]} ${borderClasses[border]} ${className}`}\n >\n <Container marginX=\"sm\" size=\"full\">\n <div className=\"flex items-center justify-between h-14 md:h-16 px-3 md:px-0\">\n {/* Brand */}\n {brand && <div className=\"shrink-0\">{brand}</div>}\n\n {/* Navigation */}\n <div className=\"hidden md:flex md:items-center md:space-x-6 md:flex-1 md:ml-10\">{children}</div>\n\n {/* Actions */}\n {actions && <div className=\"flex items-center gap-1\">{actions}</div>}\n </div>\n </Container>\n </nav>\n );\n}\n\nNavbar.displayName = 'Navbar';\n\nexport default Navbar;\n"],"names":[],"mappings":";;AA+BA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,YAAY;AAAA,EACZ;AAAA,EACA,aAAa;AAAA,EACb,SAAS;AACX,GAA0B;AAExB,QAAM,oBAAoB;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EAAA;AAGf,QAAM,gBAAgB;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAGR,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,mBAAiB;AAAA,MACjB,WAAW,GAAG,SAAS,sBAAsB,EAAE,IAAI,kBAAkB,UAAU,CAAC,IAAI,cAAc,MAAM,CAAC,IAAI,SAAS;AAAA,MAEtH,UAAA,oBAAC,aAAU,SAAQ,MAAK,MAAK,QAC3B,UAAA,qBAAC,OAAA,EAAI,WAAU,+DAEZ,UAAA;AAAA,QAAA,SAAS,oBAAC,OAAA,EAAI,WAAU,YAAY,UAAA,OAAM;AAAA,QAG3C,oBAAC,OAAA,EAAI,WAAU,kEAAkE,SAAA,CAAS;AAAA,QAGzF,WAAW,oBAAC,OAAA,EAAI,WAAU,2BAA2B,UAAA,QAAA,CAAQ;AAAA,MAAA,EAAA,CAChE,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,OAAO,cAAc;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/notification-dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,cAAc,yBAAyB,CAAC"}
|