@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,72 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
function Pagination({
|
|
3
|
+
currentPage,
|
|
4
|
+
totalPages,
|
|
5
|
+
onPageChange,
|
|
6
|
+
siblingCount = 1,
|
|
7
|
+
className = ""
|
|
8
|
+
}) {
|
|
9
|
+
const getPageNumbers = () => {
|
|
10
|
+
const pages = [];
|
|
11
|
+
const leftSibling = Math.max(currentPage - siblingCount, 1);
|
|
12
|
+
const rightSibling = Math.min(currentPage + siblingCount, totalPages);
|
|
13
|
+
if (leftSibling > 2) {
|
|
14
|
+
pages.push(1, "...");
|
|
15
|
+
} else {
|
|
16
|
+
for (let i = 1; i < leftSibling; i++) {
|
|
17
|
+
pages.push(i);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
for (let i = leftSibling; i <= rightSibling; i++) {
|
|
21
|
+
pages.push(i);
|
|
22
|
+
}
|
|
23
|
+
if (rightSibling < totalPages - 1) {
|
|
24
|
+
pages.push("...", totalPages);
|
|
25
|
+
} else {
|
|
26
|
+
for (let i = rightSibling + 1; i <= totalPages; i++) {
|
|
27
|
+
pages.push(i);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return pages;
|
|
31
|
+
};
|
|
32
|
+
return /* @__PURE__ */ jsx("nav", { "aria-label": "Pagination", className, children: /* @__PURE__ */ jsxs("ul", { className: "flex items-center space-x-1", children: [
|
|
33
|
+
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
34
|
+
"button",
|
|
35
|
+
{
|
|
36
|
+
onClick: () => onPageChange(currentPage - 1),
|
|
37
|
+
disabled: currentPage === 1,
|
|
38
|
+
className: "px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring",
|
|
39
|
+
"aria-label": "Previous page",
|
|
40
|
+
children: "←"
|
|
41
|
+
}
|
|
42
|
+
) }),
|
|
43
|
+
getPageNumbers().map((page, index) => {
|
|
44
|
+
const key = typeof page === "number" ? `page-${page}` : `ellipsis-${index}`;
|
|
45
|
+
return /* @__PURE__ */ jsx("li", { children: typeof page === "number" ? /* @__PURE__ */ jsx(
|
|
46
|
+
"button",
|
|
47
|
+
{
|
|
48
|
+
onClick: () => onPageChange(page),
|
|
49
|
+
className: `px-3 py-2 rounded-lg border cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring ${page === currentPage ? "bg-primary text-primary-foreground border-primary shadow-sm" : "border-border hover:bg-accent hover:text-accent-foreground hover:border-accent"}`,
|
|
50
|
+
"aria-label": `Page ${page}`,
|
|
51
|
+
"aria-current": page === currentPage ? "page" : void 0,
|
|
52
|
+
children: page
|
|
53
|
+
}
|
|
54
|
+
) : /* @__PURE__ */ jsx("span", { className: "px-3 py-2 text-muted-foreground", children: "..." }) }, key);
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
57
|
+
"button",
|
|
58
|
+
{
|
|
59
|
+
onClick: () => onPageChange(currentPage + 1),
|
|
60
|
+
disabled: currentPage === totalPages,
|
|
61
|
+
className: "px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring",
|
|
62
|
+
"aria-label": "Next page",
|
|
63
|
+
children: "→"
|
|
64
|
+
}
|
|
65
|
+
) })
|
|
66
|
+
] }) });
|
|
67
|
+
}
|
|
68
|
+
Pagination.displayName = "Pagination";
|
|
69
|
+
export {
|
|
70
|
+
Pagination as default
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sources":["../../../../src/components/navigation/pagination/pagination.tsx"],"sourcesContent":["export type PaginationProps = {\n /** The currently active page number */\n currentPage: number;\n /** Total number of pages available */\n totalPages: number;\n /** Callback fired when a page is selected */\n onPageChange: (page: number) => void;\n /** Number of page buttons to show on each side of current page (defaults to 1) */\n siblingCount?: number;\n /** Additional CSS classes for the pagination container */\n className?: string;\n};\n\n/**\n * Pagination - Page controls with active state\n */\nfunction Pagination({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n className = ''\n}: Readonly<PaginationProps>) {\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const leftSibling = Math.max(currentPage - siblingCount, 1);\n const rightSibling = Math.min(currentPage + siblingCount, totalPages);\n\n if (leftSibling > 2) {\n pages.push(1, '...');\n } else {\n for (let i = 1; i < leftSibling; i++) {\n pages.push(i);\n }\n }\n\n for (let i = leftSibling; i <= rightSibling; i++) {\n pages.push(i);\n }\n\n if (rightSibling < totalPages - 1) {\n pages.push('...', totalPages);\n } else {\n for (let i = rightSibling + 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n };\n\n return (\n <nav aria-label=\"Pagination\" className={className}>\n <ul className=\"flex items-center space-x-1\">\n <li>\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n className=\"px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Previous page\"\n >\n ←\n </button>\n </li>\n {getPageNumbers().map((page, index) => {\n const key = typeof page === 'number' ? `page-${page}` : `ellipsis-${index}`;\n return (\n <li key={key}>\n {typeof page === 'number' ? (\n <button\n onClick={() => onPageChange(page)}\n className={`px-3 py-2 rounded-lg border cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring ${\n page === currentPage\n ? 'bg-primary text-primary-foreground border-primary shadow-sm'\n : 'border-border hover:bg-accent hover:text-accent-foreground hover:border-accent'\n }`}\n aria-label={`Page ${page}`}\n aria-current={page === currentPage ? 'page' : undefined}\n >\n {page}\n </button>\n ) : (\n <span className=\"px-3 py-2 text-muted-foreground\">...</span>\n )}\n </li>\n );\n })}\n <li>\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n className=\"px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Next page\"\n >\n →\n </button>\n </li>\n </ul>\n </nav>\n );\n}\n\nPagination.displayName = 'Pagination';\n\nexport default Pagination;\n"],"names":[],"mappings":";AAgBA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,YAAY;AACd,GAA8B;AAC5B,QAAM,iBAAiB,MAAM;AAC3B,UAAM,QAA6B,CAAA;AACnC,UAAM,cAAc,KAAK,IAAI,cAAc,cAAc,CAAC;AAC1D,UAAM,eAAe,KAAK,IAAI,cAAc,cAAc,UAAU;AAEpE,QAAI,cAAc,GAAG;AACnB,YAAM,KAAK,GAAG,KAAK;AAAA,IACrB,OAAO;AACL,eAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AACpC,cAAM,KAAK,CAAC;AAAA,MACd;AAAA,IACF;AAEA,aAAS,IAAI,aAAa,KAAK,cAAc,KAAK;AAChD,YAAM,KAAK,CAAC;AAAA,IACd;AAEA,QAAI,eAAe,aAAa,GAAG;AACjC,YAAM,KAAK,OAAO,UAAU;AAAA,IAC9B,OAAO;AACL,eAAS,IAAI,eAAe,GAAG,KAAK,YAAY,KAAK;AACnD,cAAM,KAAK,CAAC;AAAA,MACd;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SACE,oBAAC,SAAI,cAAW,cAAa,WAC3B,UAAA,qBAAC,MAAA,EAAG,WAAU,+BACZ,UAAA;AAAA,IAAA,oBAAC,MAAA,EACC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,aAAa,cAAc,CAAC;AAAA,QAC3C,UAAU,gBAAgB;AAAA,QAC1B,WAAU;AAAA,QACV,cAAW;AAAA,QACZ,UAAA;AAAA,MAAA;AAAA,IAAA,GAGH;AAAA,IACC,iBAAiB,IAAI,CAAC,MAAM,UAAU;AACrC,YAAM,MAAM,OAAO,SAAS,WAAW,QAAQ,IAAI,KAAK,YAAY,KAAK;AACzE,aACE,oBAAC,MAAA,EACE,UAAA,OAAO,SAAS,WACf;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM,aAAa,IAAI;AAAA,UAChC,WAAW,0HACT,SAAS,cACL,gEACA,gFACN;AAAA,UACA,cAAY,QAAQ,IAAI;AAAA,UACxB,gBAAc,SAAS,cAAc,SAAS;AAAA,UAE7C,UAAA;AAAA,QAAA;AAAA,MAAA,IAGH,oBAAC,QAAA,EAAK,WAAU,mCAAkC,UAAA,MAAA,CAAG,KAfhD,GAiBT;AAAA,IAEJ,CAAC;AAAA,wBACA,MAAA,EACC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,aAAa,cAAc,CAAC;AAAA,QAC3C,UAAU,gBAAgB;AAAA,QAC1B,WAAU;AAAA,QACV,cAAW;AAAA,QACZ,UAAA;AAAA,MAAA;AAAA,IAAA,EAED,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AAEA,WAAW,cAAc;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/scroll-nav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type ScrollNavItem = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
};
|
|
6
|
+
export type ScrollNavProps = {
|
|
7
|
+
/** Array of navigation items with id and label */
|
|
8
|
+
items: ScrollNavItem[];
|
|
9
|
+
/** Whether the nav should stick to the top when scrolling */
|
|
10
|
+
sticky?: boolean;
|
|
11
|
+
/** Custom CSS class name for the container */
|
|
12
|
+
className?: string;
|
|
13
|
+
/** Custom CSS class name for the scroll container */
|
|
14
|
+
scrollContainerClassName?: string;
|
|
15
|
+
/** Show border on the bottom */
|
|
16
|
+
showBorder?: boolean;
|
|
17
|
+
/** Background blur effect */
|
|
18
|
+
blur?: boolean;
|
|
19
|
+
/** Spacing between nav items */
|
|
20
|
+
spacing?: 'xs' | 'sm' | 'md' | 'lg';
|
|
21
|
+
/** Custom render function for nav items */
|
|
22
|
+
renderItem?: (item: ScrollNavItem, isActive: boolean, onClick: () => void) => ReactNode;
|
|
23
|
+
/** Callback when active item changes */
|
|
24
|
+
onActiveChange?: (activeId: string) => void;
|
|
25
|
+
/** Root margin for IntersectionObserver (controls when sections are considered "active") */
|
|
26
|
+
observerRootMargin?: string;
|
|
27
|
+
/** Threshold for IntersectionObserver */
|
|
28
|
+
observerThreshold?: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* ScrollNav - Scrollable navigation with scroll-spy highlighting
|
|
32
|
+
*
|
|
33
|
+
* A horizontal navigation component that automatically highlights the active section
|
|
34
|
+
* based on scroll position. Includes visual indicators when content overflows.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <ScrollNav
|
|
39
|
+
* items={[
|
|
40
|
+
* { id: 'overview', label: 'Overview' },
|
|
41
|
+
* { id: 'features', label: 'Features' },
|
|
42
|
+
* { id: 'pricing', label: 'Pricing' },
|
|
43
|
+
* ]}
|
|
44
|
+
* sticky
|
|
45
|
+
* />
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
declare function ScrollNav({ items, sticky, className, scrollContainerClassName, showBorder, blur, spacing, renderItem, onActiveChange, observerRootMargin, observerThreshold }: Readonly<ScrollNavProps>): import("react/jsx-runtime").JSX.Element | null;
|
|
49
|
+
declare namespace ScrollNav {
|
|
50
|
+
var displayName: string;
|
|
51
|
+
}
|
|
52
|
+
export default ScrollNav;
|
|
53
|
+
//# sourceMappingURL=scroll-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-nav.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/scroll-nav/scroll-nav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4C,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5E,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,kDAAkD;IAClD,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gCAAgC;IAChC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACpC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC;IACxF,wCAAwC;IACxC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,4FAA4F;IAC5F,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,MAAa,EACb,SAAc,EACd,wBAA6B,EAC7B,UAAiB,EACjB,IAAW,EACX,OAAc,EACd,UAAU,EACV,cAAc,EACd,kBAA0C,EAC1C,iBAAqB,EACtB,EAAE,QAAQ,CAAC,cAAc,CAAC,kDAwN1B;kBApOQ,SAAS;;;AAwOlB,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useCallback, useEffect } from "react";
|
|
3
|
+
import { gapSizes } from "../../../theme/size-tokens.js";
|
|
4
|
+
function ScrollNav({
|
|
5
|
+
items,
|
|
6
|
+
sticky = true,
|
|
7
|
+
className = "",
|
|
8
|
+
scrollContainerClassName = "",
|
|
9
|
+
showBorder = true,
|
|
10
|
+
blur = true,
|
|
11
|
+
spacing = "sm",
|
|
12
|
+
renderItem,
|
|
13
|
+
onActiveChange,
|
|
14
|
+
observerRootMargin = "-100px 0px -50% 0px",
|
|
15
|
+
observerThreshold = 0
|
|
16
|
+
}) {
|
|
17
|
+
const [activeId, setActiveId] = useState(items[0]?.id || "");
|
|
18
|
+
const [showLeftShadow, setShowLeftShadow] = useState(false);
|
|
19
|
+
const [showRightShadow, setShowRightShadow] = useState(false);
|
|
20
|
+
const scrollContainerRef = useRef(null);
|
|
21
|
+
const handleClick = useCallback((id) => {
|
|
22
|
+
const element = document.getElementById(id);
|
|
23
|
+
if (element) {
|
|
24
|
+
element.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
25
|
+
}
|
|
26
|
+
}, []);
|
|
27
|
+
const scrollLeft = useCallback(() => {
|
|
28
|
+
const container = scrollContainerRef.current;
|
|
29
|
+
if (!container) return;
|
|
30
|
+
container.scrollBy({ left: -container.clientWidth * 0.75, behavior: "smooth" });
|
|
31
|
+
}, []);
|
|
32
|
+
const scrollRight = useCallback(() => {
|
|
33
|
+
const container = scrollContainerRef.current;
|
|
34
|
+
if (!container) return;
|
|
35
|
+
container.scrollBy({ left: container.clientWidth * 0.75, behavior: "smooth" });
|
|
36
|
+
}, []);
|
|
37
|
+
const updateScrollShadows = useCallback(() => {
|
|
38
|
+
const container = scrollContainerRef.current;
|
|
39
|
+
if (!container) return;
|
|
40
|
+
const { scrollLeft: scrollLeft2, scrollWidth, clientWidth } = container;
|
|
41
|
+
const isScrollable = scrollWidth > clientWidth;
|
|
42
|
+
setShowLeftShadow(isScrollable && scrollLeft2 > 0);
|
|
43
|
+
setShowRightShadow(isScrollable && scrollLeft2 < scrollWidth - clientWidth - 20);
|
|
44
|
+
}, []);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
const container = scrollContainerRef.current;
|
|
47
|
+
if (!container) return;
|
|
48
|
+
const resizeObserver = new ResizeObserver(updateScrollShadows);
|
|
49
|
+
resizeObserver.observe(container);
|
|
50
|
+
return () => resizeObserver.disconnect();
|
|
51
|
+
}, [updateScrollShadows]);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
const timer = setTimeout(updateScrollShadows, 0);
|
|
54
|
+
return () => clearTimeout(timer);
|
|
55
|
+
}, [updateScrollShadows]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const container = scrollContainerRef.current;
|
|
58
|
+
if (!container) return;
|
|
59
|
+
container.addEventListener("scroll", updateScrollShadows);
|
|
60
|
+
return () => container.removeEventListener("scroll", updateScrollShadows);
|
|
61
|
+
}, [updateScrollShadows]);
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
const observer = new IntersectionObserver(
|
|
64
|
+
(entries) => {
|
|
65
|
+
const visibleEntries = entries.filter((entry) => entry.isIntersecting);
|
|
66
|
+
if (visibleEntries.length > 0) {
|
|
67
|
+
const sortedVisible = visibleEntries.sort((a, b) => {
|
|
68
|
+
const aIndex = items.findIndex((item) => item.id === a.target.id);
|
|
69
|
+
const bIndex = items.findIndex((item) => item.id === b.target.id);
|
|
70
|
+
return aIndex - bIndex;
|
|
71
|
+
});
|
|
72
|
+
const newActiveId = sortedVisible[0].target.id;
|
|
73
|
+
setActiveId(newActiveId);
|
|
74
|
+
onActiveChange?.(newActiveId);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
rootMargin: observerRootMargin,
|
|
79
|
+
threshold: observerThreshold
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
items.forEach(({ id }) => {
|
|
83
|
+
const element = document.getElementById(id);
|
|
84
|
+
if (element) {
|
|
85
|
+
observer.observe(element);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
return () => observer.disconnect();
|
|
89
|
+
}, [items, observerRootMargin, observerThreshold, onActiveChange]);
|
|
90
|
+
if (items.length === 0) return null;
|
|
91
|
+
const baseClasses = [
|
|
92
|
+
"relative",
|
|
93
|
+
sticky && "sticky top-0 z-99",
|
|
94
|
+
blur && "bg-background/95 backdrop-blur-sm",
|
|
95
|
+
!blur && "bg-background",
|
|
96
|
+
showBorder && "border-b border-border",
|
|
97
|
+
className
|
|
98
|
+
].filter(Boolean).join(" ");
|
|
99
|
+
const scrollClasses = [
|
|
100
|
+
"flex flex-row flex-nowrap items-stretch",
|
|
101
|
+
gapSizes[spacing],
|
|
102
|
+
"overflow-x-auto scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent",
|
|
103
|
+
scrollContainerClassName
|
|
104
|
+
].filter(Boolean).join(" ");
|
|
105
|
+
return /* @__PURE__ */ jsxs("div", { className: baseClasses, children: [
|
|
106
|
+
showLeftShadow && /* @__PURE__ */ jsx(
|
|
107
|
+
"button",
|
|
108
|
+
{
|
|
109
|
+
onClick: scrollLeft,
|
|
110
|
+
className: `absolute left-0 top-0 bottom-0 w-8 flex items-center justify-center cursor-pointer ${blur ? "bg-background/95" : "bg-background"} hover:bg-muted transition-colors z-10 border-r border-border`,
|
|
111
|
+
"aria-label": "Scroll left",
|
|
112
|
+
children: /* @__PURE__ */ jsx(
|
|
113
|
+
"svg",
|
|
114
|
+
{
|
|
115
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
116
|
+
width: "16",
|
|
117
|
+
height: "16",
|
|
118
|
+
viewBox: "0 0 24 24",
|
|
119
|
+
fill: "none",
|
|
120
|
+
stroke: "currentColor",
|
|
121
|
+
strokeWidth: "2",
|
|
122
|
+
strokeLinecap: "round",
|
|
123
|
+
strokeLinejoin: "round",
|
|
124
|
+
className: "text-foreground/70",
|
|
125
|
+
children: /* @__PURE__ */ jsx("polyline", { points: "15 18 9 12 15 6" })
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
),
|
|
130
|
+
showLeftShadow && /* @__PURE__ */ jsx(
|
|
131
|
+
"div",
|
|
132
|
+
{
|
|
133
|
+
className: `absolute left-8 top-0 bottom-0 w-8 ${blur ? "bg-linear-to-r from-background/95" : "bg-linear-to-r from-background"} to-transparent pointer-events-none z-10`
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
showRightShadow && /* @__PURE__ */ jsx(
|
|
137
|
+
"div",
|
|
138
|
+
{
|
|
139
|
+
className: `absolute right-8 top-0 bottom-0 w-8 ${blur ? "bg-linear-to-l from-background/95" : "bg-linear-to-l from-background"} to-transparent pointer-events-none z-10`
|
|
140
|
+
}
|
|
141
|
+
),
|
|
142
|
+
showRightShadow && /* @__PURE__ */ jsx(
|
|
143
|
+
"button",
|
|
144
|
+
{
|
|
145
|
+
onClick: scrollRight,
|
|
146
|
+
className: `absolute right-0 top-0 bottom-0 w-8 flex items-center justify-center cursor-pointer ${blur ? "bg-background/95" : "bg-background"} hover:bg-muted transition-colors z-10 border-l border-border`,
|
|
147
|
+
"aria-label": "Scroll right",
|
|
148
|
+
children: /* @__PURE__ */ jsx(
|
|
149
|
+
"svg",
|
|
150
|
+
{
|
|
151
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
152
|
+
width: "16",
|
|
153
|
+
height: "16",
|
|
154
|
+
viewBox: "0 0 24 24",
|
|
155
|
+
fill: "none",
|
|
156
|
+
stroke: "currentColor",
|
|
157
|
+
strokeWidth: "2",
|
|
158
|
+
strokeLinecap: "round",
|
|
159
|
+
strokeLinejoin: "round",
|
|
160
|
+
className: "text-foreground/70",
|
|
161
|
+
children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" })
|
|
162
|
+
}
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
),
|
|
166
|
+
/* @__PURE__ */ jsx("div", { ref: scrollContainerRef, className: scrollClasses, children: items.map((item) => {
|
|
167
|
+
const isActive = activeId === item.id;
|
|
168
|
+
const onClick = () => handleClick(item.id);
|
|
169
|
+
if (renderItem) {
|
|
170
|
+
return /* @__PURE__ */ jsx("div", { children: renderItem(item, isActive, onClick) }, item.id);
|
|
171
|
+
}
|
|
172
|
+
return /* @__PURE__ */ jsx(
|
|
173
|
+
"button",
|
|
174
|
+
{
|
|
175
|
+
onClick,
|
|
176
|
+
className: `px-3 py-2 text-sm font-medium whitespace-nowrap rounded-md transition-colors ${isActive ? "bg-primary text-primary-fg" : "text-foreground/70 hover:text-foreground hover:bg-muted"}`,
|
|
177
|
+
children: item.label
|
|
178
|
+
},
|
|
179
|
+
item.id
|
|
180
|
+
);
|
|
181
|
+
}) })
|
|
182
|
+
] });
|
|
183
|
+
}
|
|
184
|
+
ScrollNav.displayName = "ScrollNav";
|
|
185
|
+
export {
|
|
186
|
+
ScrollNav as default
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=scroll-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-nav.js","sources":["../../../../src/components/navigation/scroll-nav/scroll-nav.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useRef, ReactNode } from 'react';\nimport { gapSizes } from '../../../theme/size-tokens';\n\nexport type ScrollNavItem = {\n id: string;\n label: string;\n};\n\nexport type ScrollNavProps = {\n /** Array of navigation items with id and label */\n items: ScrollNavItem[];\n /** Whether the nav should stick to the top when scrolling */\n sticky?: boolean;\n /** Custom CSS class name for the container */\n className?: string;\n /** Custom CSS class name for the scroll container */\n scrollContainerClassName?: string;\n /** Show border on the bottom */\n showBorder?: boolean;\n /** Background blur effect */\n blur?: boolean;\n /** Spacing between nav items */\n spacing?: 'xs' | 'sm' | 'md' | 'lg';\n /** Custom render function for nav items */\n renderItem?: (item: ScrollNavItem, isActive: boolean, onClick: () => void) => ReactNode;\n /** Callback when active item changes */\n onActiveChange?: (activeId: string) => void;\n /** Root margin for IntersectionObserver (controls when sections are considered \"active\") */\n observerRootMargin?: string;\n /** Threshold for IntersectionObserver */\n observerThreshold?: number;\n};\n\n/**\n * ScrollNav - Scrollable navigation with scroll-spy highlighting\n *\n * A horizontal navigation component that automatically highlights the active section\n * based on scroll position. Includes visual indicators when content overflows.\n *\n * @example\n * ```tsx\n * <ScrollNav\n * items={[\n * { id: 'overview', label: 'Overview' },\n * { id: 'features', label: 'Features' },\n * { id: 'pricing', label: 'Pricing' },\n * ]}\n * sticky\n * />\n * ```\n */\nfunction ScrollNav({\n items,\n sticky = true,\n className = '',\n scrollContainerClassName = '',\n showBorder = true,\n blur = true,\n spacing = 'sm',\n renderItem,\n onActiveChange,\n observerRootMargin = '-100px 0px -50% 0px',\n observerThreshold = 0\n}: Readonly<ScrollNavProps>) {\n const [activeId, setActiveId] = useState<string>(items[0]?.id || '');\n const [showLeftShadow, setShowLeftShadow] = useState(false);\n const [showRightShadow, setShowRightShadow] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback((id: string) => {\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }, []);\n\n const scrollLeft = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n container.scrollBy({ left: -container.clientWidth * 0.75, behavior: 'smooth' });\n }, []);\n\n const scrollRight = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n container.scrollBy({ left: container.clientWidth * 0.75, behavior: 'smooth' });\n }, []);\n\n const updateScrollShadows = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = container;\n const isScrollable = scrollWidth > clientWidth;\n\n setShowLeftShadow(isScrollable && scrollLeft > 0);\n setShowRightShadow(isScrollable && scrollLeft < scrollWidth - clientWidth - 20);\n }, []);\n\n // Initial check and on resize\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const resizeObserver = new ResizeObserver(updateScrollShadows);\n resizeObserver.observe(container);\n\n return () => resizeObserver.disconnect();\n }, [updateScrollShadows]);\n\n // Run initial check after mount\n useEffect(() => {\n // Use setTimeout to defer until after paint\n const timer = setTimeout(updateScrollShadows, 0);\n return () => clearTimeout(timer);\n }, [updateScrollShadows]);\n\n // Listen to scroll events\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n container.addEventListener('scroll', updateScrollShadows);\n return () => container.removeEventListener('scroll', updateScrollShadows);\n }, [updateScrollShadows]);\n\n // Scroll spy: update active item based on visible sections\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n // Find the first visible section\n const visibleEntries = entries.filter((entry) => entry.isIntersecting);\n if (visibleEntries.length > 0) {\n // Sort by their position in the items array to get the topmost visible one\n const sortedVisible = visibleEntries.sort((a, b) => {\n const aIndex = items.findIndex((item) => item.id === a.target.id);\n const bIndex = items.findIndex((item) => item.id === b.target.id);\n return aIndex - bIndex;\n });\n const newActiveId = sortedVisible[0].target.id;\n setActiveId(newActiveId);\n onActiveChange?.(newActiveId);\n }\n },\n {\n rootMargin: observerRootMargin,\n threshold: observerThreshold\n }\n );\n\n // Observe all sections\n items.forEach(({ id }) => {\n const element = document.getElementById(id);\n if (element) {\n observer.observe(element);\n }\n });\n\n return () => observer.disconnect();\n }, [items, observerRootMargin, observerThreshold, onActiveChange]);\n\n if (items.length === 0) return null;\n\n const baseClasses = [\n 'relative',\n sticky && 'sticky top-0 z-99',\n blur && 'bg-background/95 backdrop-blur-sm',\n !blur && 'bg-background',\n showBorder && 'border-b border-border',\n className\n ]\n .filter(Boolean)\n .join(' ');\n\n const scrollClasses = [\n 'flex flex-row flex-nowrap items-stretch',\n gapSizes[spacing],\n 'overflow-x-auto scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent',\n scrollContainerClassName\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={baseClasses}>\n {showLeftShadow && (\n <button\n onClick={scrollLeft}\n className={`absolute left-0 top-0 bottom-0 w-8 flex items-center justify-center cursor-pointer ${\n blur ? 'bg-background/95' : 'bg-background'\n } hover:bg-muted transition-colors z-10 border-r border-border`}\n aria-label=\"Scroll left\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-foreground/70\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n )}\n\n {/* Left shadow indicator */}\n {showLeftShadow && (\n <div\n className={`absolute left-8 top-0 bottom-0 w-8 ${\n blur ? 'bg-linear-to-r from-background/95' : 'bg-linear-to-r from-background'\n } to-transparent pointer-events-none z-10`}\n />\n )}\n\n {/* Right shadow indicator */}\n {showRightShadow && (\n <div\n className={`absolute right-8 top-0 bottom-0 w-8 ${\n blur ? 'bg-linear-to-l from-background/95' : 'bg-linear-to-l from-background'\n } to-transparent pointer-events-none z-10`}\n />\n )}\n\n {/* Right scroll button */}\n {showRightShadow && (\n <button\n onClick={scrollRight}\n className={`absolute right-0 top-0 bottom-0 w-8 flex items-center justify-center cursor-pointer ${\n blur ? 'bg-background/95' : 'bg-background'\n } hover:bg-muted transition-colors z-10 border-l border-border`}\n aria-label=\"Scroll right\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-foreground/70\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n )}\n\n <div ref={scrollContainerRef} className={scrollClasses}>\n {items.map((item) => {\n const isActive = activeId === item.id;\n const onClick = () => handleClick(item.id);\n\n if (renderItem) {\n return <div key={item.id}>{renderItem(item, isActive, onClick)}</div>;\n }\n\n // Default rendering\n return (\n <button\n key={item.id}\n onClick={onClick}\n className={`px-3 py-2 text-sm font-medium whitespace-nowrap rounded-md transition-colors ${\n isActive ? 'bg-primary text-primary-fg' : 'text-foreground/70 hover:text-foreground hover:bg-muted'\n }`}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nScrollNav.displayName = 'ScrollNav';\n\nexport default ScrollNav;\n"],"names":["scrollLeft"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/sidebar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type SidebarProps = {
|
|
3
|
+
/** Navigation items to render (typically NavbarLink or anchor elements) */
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** Additional CSS classes for the sidebar container */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Width of the sidebar (e.g., '16rem', '4rem') */
|
|
8
|
+
width?: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Sidebar - Vertical navigation with sections
|
|
12
|
+
*/
|
|
13
|
+
declare function Sidebar({ children, className, width }: Readonly<SidebarProps>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare namespace Sidebar {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
export default Sidebar;
|
|
18
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/sidebar/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG;IACzB,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,iBAAS,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAc,EAAE,KAAe,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,2CA+CrF;kBA/CQ,OAAO;;;AAmDhB,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
function Sidebar({ children, className = "", width = "16rem" }) {
|
|
4
|
+
const widthClass = width === "16rem" ? "w-64" : width === "4rem" ? "w-16" : "";
|
|
5
|
+
const enhancedChildren = React.Children.map(children, (child) => {
|
|
6
|
+
if (!React.isValidElement(child)) return child;
|
|
7
|
+
const childProps = child.props || {};
|
|
8
|
+
if ("href" in childProps) {
|
|
9
|
+
const existing = typeof childProps.className === "string" ? childProps.className : "";
|
|
10
|
+
const sidebarItemClasses = "flex items-center w-full justify-start gap-2 px-2 py-1.5 rounded hover:bg-muted";
|
|
11
|
+
const childInner = child.props.children;
|
|
12
|
+
const wrappedChildren = /* @__PURE__ */ jsx("span", { className: "flex items-center gap-2", children: childInner });
|
|
13
|
+
const newProps = {
|
|
14
|
+
...child.props,
|
|
15
|
+
className: `${existing} ${sidebarItemClasses}`.trim()
|
|
16
|
+
};
|
|
17
|
+
return React.cloneElement(child, newProps, wrappedChildren);
|
|
18
|
+
}
|
|
19
|
+
return child;
|
|
20
|
+
});
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
"nav",
|
|
23
|
+
{
|
|
24
|
+
className: `
|
|
25
|
+
${widthClass || ""}
|
|
26
|
+
bg-card border-r border-border
|
|
27
|
+
flex flex-col
|
|
28
|
+
overflow-hidden
|
|
29
|
+
${className}
|
|
30
|
+
`.replace(/\s+/g, " "),
|
|
31
|
+
style: !widthClass ? { width } : void 0,
|
|
32
|
+
"aria-label": "Sidebar navigation",
|
|
33
|
+
children: /* @__PURE__ */ jsx("div", { className: "flex-1 px-4 py-3 flex flex-col gap-2", children: enhancedChildren })
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
Sidebar.displayName = "Sidebar";
|
|
38
|
+
export {
|
|
39
|
+
Sidebar as default
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","sources":["../../../../src/components/navigation/sidebar/sidebar.tsx"],"sourcesContent":["import React, { ReactNode, ReactElement } from 'react';\n\nexport type SidebarProps = {\n /** Navigation items to render (typically NavbarLink or anchor elements) */\n children: ReactNode;\n /** Additional CSS classes for the sidebar container */\n className?: string;\n /** Width of the sidebar (e.g., '16rem', '4rem') */\n width?: string;\n};\n\n/**\n * Sidebar - Vertical navigation with sections\n */\nfunction Sidebar({ children, className = '', width = '16rem' }: Readonly<SidebarProps>) {\n const widthClass = width === '16rem' ? 'w-64' : width === '4rem' ? 'w-16' : '';\n // Enhance children that look like navigation links (have `href`) by\n // cloning them and adding sidebar-specific item classes so showcase\n // pages don't need to set `className` manually.\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child;\n\n // If the child has an `href` prop (NavbarLink or anchor), append sidebar item classes\n const childProps = (child.props || {}) as Record<string, unknown>;\n if ('href' in childProps) {\n const existing = typeof childProps.className === 'string' ? (childProps.className as string) : '';\n // Ensure sidebar links are full-width and laid out as flex rows with icon+label\n const sidebarItemClasses = 'flex items-center w-full justify-start gap-2 px-2 py-1.5 rounded hover:bg-muted';\n // Wrap the child's content in a flex container so icon + text line up,\n // and set item-level classes (without forcing display:flex on the root link,\n // because NavbarLink includes a 'block' class). This avoids conflicting\n // display utilities while ensuring the visual layout.\n const childInner = (child.props as Record<string, unknown>).children as React.ReactNode;\n // Always wrap the child's content to ensure icon + text are inline\n const wrappedChildren = <span className=\"flex items-center gap-2\">{childInner}</span>;\n\n const newProps = {\n ...(child.props as Record<string, unknown>),\n className: `${existing} ${sidebarItemClasses}`.trim()\n };\n return React.cloneElement(child as ReactElement, newProps as unknown as Record<string, unknown>, wrappedChildren);\n }\n\n return child;\n });\n\n return (\n <nav\n className={`\n ${widthClass || ''}\n bg-card border-r border-border\n flex flex-col\n overflow-hidden\n ${className}\n `.replace(/\\s+/g, ' ')}\n style={!widthClass ? ({ width } as React.CSSProperties) : undefined}\n aria-label=\"Sidebar navigation\"\n >\n <div className=\"flex-1 px-4 py-3 flex flex-col gap-2\">{enhancedChildren}</div>\n </nav>\n );\n}\n\nSidebar.displayName = 'Sidebar';\n\nexport default Sidebar;\n"],"names":[],"mappings":";;AAcA,SAAS,QAAQ,EAAE,UAAU,YAAY,IAAI,QAAQ,WAAmC;AACtF,QAAM,aAAa,UAAU,UAAU,SAAS,UAAU,SAAS,SAAS;AAI5E,QAAM,mBAAmB,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU;AAC/D,QAAI,CAAC,MAAM,eAAe,KAAK,EAAG,QAAO;AAGzC,UAAM,aAAc,MAAM,SAAS,CAAA;AACnC,QAAI,UAAU,YAAY;AACxB,YAAM,WAAW,OAAO,WAAW,cAAc,WAAY,WAAW,YAAuB;AAE/F,YAAM,qBAAqB;AAK3B,YAAM,aAAc,MAAM,MAAkC;AAE5D,YAAM,kBAAkB,oBAAC,QAAA,EAAK,WAAU,2BAA2B,UAAA,YAAW;AAE9E,YAAM,WAAW;AAAA,QACf,GAAI,MAAM;AAAA,QACV,WAAW,GAAG,QAAQ,IAAI,kBAAkB,GAAG,KAAA;AAAA,MAAK;AAEtD,aAAO,MAAM,aAAa,OAAuB,UAAgD,eAAe;AAAA,IAClH;AAEA,WAAO;AAAA,EACT,CAAC;AAED,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,UACP,cAAc,EAAE;AAAA;AAAA;AAAA;AAAA,UAIhB,SAAS;AAAA,QACX,QAAQ,QAAQ,GAAG;AAAA,MACrB,OAAO,CAAC,aAAc,EAAE,UAAkC;AAAA,MAC1D,cAAW;AAAA,MAEX,UAAA,oBAAC,OAAA,EAAI,WAAU,wCAAwC,UAAA,iBAAA,CAAiB;AAAA,IAAA;AAAA,EAAA;AAG9E;AAEA,QAAQ,cAAc;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type StepProps = {
|
|
3
|
+
/** Primary text label for the step */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Optional secondary description text */
|
|
6
|
+
description?: string;
|
|
7
|
+
/** Custom icon to display instead of step number */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
/** Current status of the step (auto-determined from currentStep if not set) */
|
|
10
|
+
status?: 'pending' | 'current' | 'completed' | 'error';
|
|
11
|
+
/** Whether this step can be skipped */
|
|
12
|
+
optional?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type StepperProps = {
|
|
15
|
+
/** Array of step configurations */
|
|
16
|
+
steps: StepProps[];
|
|
17
|
+
/** Zero-based index of the currently active step */
|
|
18
|
+
currentStep: number;
|
|
19
|
+
/** Additional CSS classes for the stepper container */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** Layout direction for the stepper */
|
|
22
|
+
orientation?: 'horizontal' | 'vertical';
|
|
23
|
+
/** Callback fired when a step is clicked (only when clickable is true) */
|
|
24
|
+
onStepClick?: (step: number) => void;
|
|
25
|
+
/** Enable clicking on steps for navigation */
|
|
26
|
+
clickable?: boolean;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Stepper - Multi-step progress indicator
|
|
30
|
+
*
|
|
31
|
+
* Features:
|
|
32
|
+
* - Horizontal and vertical orientations
|
|
33
|
+
* - Current, completed, and pending states
|
|
34
|
+
* - Optional steps
|
|
35
|
+
* - Custom icons
|
|
36
|
+
* - Clickable steps (for navigation)
|
|
37
|
+
* - Error states
|
|
38
|
+
*
|
|
39
|
+
* Common uses:
|
|
40
|
+
* - Multi-step forms
|
|
41
|
+
* - Checkout processes
|
|
42
|
+
* - Onboarding flows
|
|
43
|
+
* - Wizards
|
|
44
|
+
*/
|
|
45
|
+
declare function Stepper({ steps, currentStep, className, orientation, onStepClick, clickable }: Readonly<StepperProps>): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
declare namespace Stepper {
|
|
47
|
+
var displayName: string;
|
|
48
|
+
}
|
|
49
|
+
export default Stepper;
|
|
50
|
+
//# sourceMappingURL=stepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/stepper/stepper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,MAAM,MAAM,SAAS,GAAG;IACtB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACvD,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,mCAAmC;IACnC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,OAAO,CAAC,EACf,KAAK,EACL,WAAW,EACX,SAAc,EACd,WAA0B,EAC1B,WAAW,EACX,SAAiB,EAClB,EAAE,QAAQ,CAAC,YAAY,CAAC,2CAwLxB;kBA/LQ,OAAO;;;AAmMhB,eAAe,OAAO,CAAC"}
|