mtrl 0.3.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LICENSE +21 -0
- package/dist/README.md +324 -0
- package/dist/components/badge/api.d.ts +48 -0
- package/{src/components/badge/badge.ts → dist/components/badge/badge.d.ts} +14 -57
- package/dist/components/badge/config.d.ts +79 -0
- package/dist/components/badge/constants.d.ts +35 -0
- package/dist/components/badge/features.d.ts +36 -0
- package/dist/components/badge/index.d.ts +8 -0
- package/dist/components/badge/types.d.ts +256 -0
- package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +12 -0
- package/dist/components/bottom-app-bar/config.d.ts +16 -0
- package/dist/components/bottom-app-bar/constants.d.ts +22 -0
- package/{src/components/bottom-app-bar/index.ts → dist/components/bottom-app-bar/index.d.ts} +0 -9
- package/dist/components/bottom-app-bar/types.d.ts +96 -0
- package/dist/components/button/api.d.ts +47 -0
- package/dist/components/button/button.d.ts +25 -0
- package/dist/components/button/config.d.ts +59 -0
- package/dist/components/button/constants.d.ts +43 -0
- package/dist/components/button/index.d.ts +6 -0
- package/dist/components/button/types.d.ts +265 -0
- package/dist/components/card/api.d.ts +11 -0
- package/{src/components/card/card.ts → dist/components/card/card.d.ts} +10 -58
- package/dist/components/card/config.d.ts +105 -0
- package/dist/components/card/constants.d.ts +85 -0
- package/dist/components/card/content.d.ts +92 -0
- package/dist/components/card/features.d.ts +131 -0
- package/{src/components/card/index.ts → dist/components/card/index.d.ts} +13 -74
- package/dist/components/card/types.d.ts +471 -0
- package/dist/components/carousel/api.d.ts +33 -0
- package/dist/components/carousel/carousel.d.ts +75 -0
- package/dist/components/carousel/config.d.ts +45 -0
- package/dist/components/carousel/constants.d.ts +165 -0
- package/dist/components/carousel/features/drag.d.ts +8 -0
- package/{src/components/carousel/features/index.ts → dist/components/carousel/features/index.d.ts} +1 -4
- package/dist/components/carousel/features/slides.d.ts +8 -0
- package/{src/components/carousel/index.ts → dist/components/carousel/index.d.ts} +10 -29
- package/dist/components/carousel/types.d.ts +276 -0
- package/dist/components/checkbox/api.d.ts +7 -0
- package/dist/components/checkbox/checkbox.d.ts +65 -0
- package/dist/components/checkbox/config.d.ts +44 -0
- package/dist/components/checkbox/constants.d.ts +63 -0
- package/{src/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +8 -25
- package/dist/components/checkbox/types.d.ts +242 -0
- package/dist/components/chips/api.d.ts +49 -0
- package/dist/components/chips/chip/api.d.ts +23 -0
- package/dist/components/chips/chip/chip.d.ts +8 -0
- package/dist/components/chips/chip/config.d.ts +57 -0
- package/dist/components/chips/chip/constants.d.ts +38 -0
- package/dist/components/chips/chip/index.d.ts +2 -0
- package/dist/components/chips/chip/types.d.ts +11 -0
- package/dist/components/chips/chips.d.ts +17 -0
- package/dist/components/chips/config.d.ts +67 -0
- package/dist/components/chips/constants.d.ts +46 -0
- package/dist/components/chips/features/chip-items.d.ts +8 -0
- package/dist/components/chips/features/container.d.ts +8 -0
- package/dist/components/chips/features/controller.d.ts +9 -0
- package/{src/components/chips/features/index.ts → dist/components/chips/features/index.d.ts} +1 -2
- package/dist/components/chips/features/label.d.ts +8 -0
- package/dist/components/chips/index.d.ts +4 -0
- package/dist/components/chips/schema.d.ts +34 -0
- package/dist/components/chips/types.d.ts +398 -0
- package/dist/components/datepicker/api.d.ts +9 -0
- package/dist/components/datepicker/config.d.ts +79 -0
- package/dist/components/datepicker/constants.d.ts +97 -0
- package/dist/components/datepicker/datepicker.d.ts +8 -0
- package/dist/components/datepicker/index.d.ts +3 -0
- package/dist/components/datepicker/render.d.ts +43 -0
- package/dist/components/datepicker/types.d.ts +321 -0
- package/dist/components/datepicker/utils.d.ts +84 -0
- package/dist/components/dialog/api.d.ts +59 -0
- package/dist/components/dialog/config.d.ts +91 -0
- package/dist/components/dialog/constants.d.ts +116 -0
- package/{src/components/dialog/dialog.ts → dist/components/dialog/dialog.d.ts} +16 -69
- package/dist/components/dialog/features.d.ts +37 -0
- package/dist/components/dialog/index.d.ts +14 -0
- package/dist/components/dialog/types.d.ts +483 -0
- package/dist/components/divider/config.d.ts +143 -0
- package/dist/components/divider/constants.d.ts +45 -0
- package/{src/components/divider/divider.ts → dist/components/divider/divider.d.ts} +9 -37
- package/dist/components/divider/features.d.ts +50 -0
- package/{src/components/divider/index.ts → dist/components/divider/index.d.ts} +6 -12
- package/dist/components/divider/types.d.ts +124 -0
- package/dist/components/extended-fab/api.d.ts +83 -0
- package/dist/components/extended-fab/config.d.ts +75 -0
- package/dist/components/extended-fab/constants.d.ts +82 -0
- package/dist/components/extended-fab/extended-fab.d.ts +61 -0
- package/{src/components/extended-fab/index.ts → dist/components/extended-fab/index.d.ts} +6 -15
- package/dist/components/extended-fab/types.d.ts +703 -0
- package/dist/components/fab/api.d.ts +64 -0
- package/dist/components/fab/config.d.ts +71 -0
- package/dist/components/fab/constants.d.ts +75 -0
- package/{src/components/fab/fab.ts → dist/components/fab/fab.d.ts} +10 -46
- package/{src/components/fab/index.ts → dist/components/fab/index.d.ts} +6 -15
- package/dist/components/fab/types.d.ts +577 -0
- package/dist/components/index.d.ts +76 -0
- package/dist/components/list/api.d.ts +106 -0
- package/dist/components/list/config.d.ts +61 -0
- package/dist/components/list/constants.d.ts +76 -0
- package/dist/components/list/features/index.d.ts +2 -0
- package/dist/components/list/features/listmanager.d.ts +9 -0
- package/dist/components/list/features/selection.d.ts +9 -0
- package/dist/components/list/index.d.ts +12 -0
- package/dist/components/list/list.d.ts +11 -0
- package/dist/components/list/types.d.ts +294 -0
- package/dist/components/menu/api.d.ts +58 -0
- package/dist/components/menu/config.d.ts +78 -0
- package/dist/components/menu/constants.d.ts +106 -0
- package/dist/components/menu/features/controller.d.ts +10 -0
- package/dist/components/menu/features/index.d.ts +6 -0
- package/dist/components/menu/features/keyboard.d.ts +26 -0
- package/dist/components/menu/features/opener.d.ts +10 -0
- package/dist/components/menu/features/position.d.ts +18 -0
- package/dist/components/menu/features/submenu.d.ts +10 -0
- package/{src/components/menu/index.ts → dist/components/menu/index.d.ts} +11 -27
- package/dist/components/menu/menu.d.ts +29 -0
- package/dist/components/menu/types.d.ts +338 -0
- package/dist/components/navigation/api.d.ts +8 -0
- package/dist/components/navigation/config.d.ts +34 -0
- package/dist/components/navigation/constants.d.ts +137 -0
- package/dist/components/navigation/features/controller.d.ts +30 -0
- package/dist/components/navigation/features/items.d.ts +32 -0
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/nav-item.d.ts +30 -0
- package/dist/components/navigation/navigation.d.ts +8 -0
- package/dist/components/navigation/system/core.d.ts +72 -0
- package/dist/components/navigation/system/events.d.ts +35 -0
- package/dist/components/navigation/system/index.d.ts +10 -0
- package/dist/components/navigation/system/mobile.d.ts +52 -0
- package/dist/components/navigation/system/state.d.ts +22 -0
- package/dist/components/navigation/system/types.d.ts +305 -0
- package/dist/components/navigation/types.d.ts +216 -0
- package/dist/components/progress/api.d.ts +46 -0
- package/dist/components/progress/config.d.ts +72 -0
- package/dist/components/progress/constants.d.ts +139 -0
- package/dist/components/progress/features/canvas.d.ts +32 -0
- package/dist/components/progress/features/circular.d.ts +9 -0
- package/dist/components/progress/features/index.d.ts +8 -0
- package/dist/components/progress/features/linear.d.ts +9 -0
- package/dist/components/progress/features/resize-observer.d.ts +5 -0
- package/dist/components/progress/features/state.d.ts +38 -0
- package/dist/components/progress/features.d.ts +40 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/progress.d.ts +24 -0
- package/dist/components/progress/types.d.ts +272 -0
- package/dist/components/radios/api.d.ts +37 -0
- package/dist/components/radios/config.d.ts +42 -0
- package/dist/components/radios/constants.d.ts +114 -0
- package/dist/components/radios/index.d.ts +3 -0
- package/dist/components/radios/radio.d.ts +8 -0
- package/dist/components/radios/radios.d.ts +8 -0
- package/dist/components/radios/types.d.ts +189 -0
- package/dist/components/search/api.d.ts +55 -0
- package/dist/components/search/config.d.ts +73 -0
- package/dist/components/search/constants.d.ts +128 -0
- package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
- package/dist/components/search/features/search.d.ts +7 -0
- package/dist/components/search/features/states.d.ts +8 -0
- package/dist/components/search/features/structure.d.ts +7 -0
- package/dist/components/search/index.d.ts +3 -0
- package/dist/components/search/search.d.ts +8 -0
- package/dist/components/search/types.d.ts +132 -0
- package/dist/components/segmented-button/config.d.ts +65 -0
- package/dist/components/segmented-button/constants.d.ts +85 -0
- package/dist/components/segmented-button/index.d.ts +4 -0
- package/dist/components/segmented-button/segment.d.ts +15 -0
- package/dist/components/segmented-button/segmented-button.d.ts +49 -0
- package/dist/components/segmented-button/types.d.ts +257 -0
- package/dist/components/select/api.d.ts +8 -0
- package/dist/components/select/config.d.ts +18 -0
- package/dist/components/select/constants.d.ts +113 -0
- package/dist/components/select/features.d.ts +13 -0
- package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
- package/dist/components/select/select.d.ts +36 -0
- package/dist/components/select/types.d.ts +302 -0
- package/dist/components/sheet/api.d.ts +37 -0
- package/dist/components/sheet/config.d.ts +42 -0
- package/dist/components/sheet/constants.d.ts +136 -0
- package/dist/components/sheet/features/content.d.ts +6 -0
- package/dist/components/sheet/features/gestures.d.ts +6 -0
- package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
- package/dist/components/sheet/features/position.d.ts +7 -0
- package/dist/components/sheet/features/state.d.ts +6 -0
- package/dist/components/sheet/features/title.d.ts +6 -0
- package/dist/components/sheet/index.d.ts +3 -0
- package/dist/components/sheet/sheet.d.ts +8 -0
- package/dist/components/sheet/types.d.ts +250 -0
- package/dist/components/slider/api.d.ts +57 -0
- package/dist/components/slider/config.d.ts +75 -0
- package/dist/components/slider/constants.d.ts +138 -0
- package/dist/components/slider/features/controller.d.ts +9 -0
- package/dist/components/slider/features/handlers.d.ts +25 -0
- package/dist/components/slider/features/index.d.ts +3 -0
- package/dist/components/slider/features/range.d.ts +8 -0
- package/dist/components/slider/features/states.d.ts +9 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/schema.d.ts +108 -0
- package/dist/components/slider/slider.d.ts +18 -0
- package/dist/components/slider/types.d.ts +170 -0
- package/dist/components/snackbar/api.d.ts +7 -0
- package/dist/components/snackbar/config.d.ts +55 -0
- package/dist/components/snackbar/constants.d.ts +88 -0
- package/dist/components/snackbar/features.d.ts +13 -0
- package/dist/components/snackbar/index.d.ts +3 -0
- package/dist/components/snackbar/position.d.ts +15 -0
- package/dist/components/snackbar/queue.d.ts +7 -0
- package/dist/components/snackbar/snackbar.d.ts +8 -0
- package/dist/components/snackbar/types.d.ts +172 -0
- package/dist/components/switch/api.d.ts +7 -0
- package/dist/components/switch/config.d.ts +34 -0
- package/dist/components/switch/constants.d.ts +88 -0
- package/dist/components/switch/features.d.ts +59 -0
- package/dist/components/switch/index.d.ts +4 -0
- package/dist/components/switch/switch.d.ts +8 -0
- package/dist/components/switch/types.d.ts +131 -0
- package/dist/components/tabs/api.d.ts +52 -0
- package/dist/components/tabs/config.d.ts +39 -0
- package/dist/components/tabs/constants.d.ts +142 -0
- package/dist/components/tabs/features.d.ts +133 -0
- package/dist/components/tabs/index.d.ts +11 -0
- package/dist/components/tabs/indicator.d.ts +49 -0
- package/dist/components/tabs/responsive.d.ts +38 -0
- package/dist/components/tabs/scroll-indicators.d.ts +18 -0
- package/dist/components/tabs/state.d.ts +53 -0
- package/dist/components/tabs/tab-api.d.ts +43 -0
- package/dist/components/tabs/tab.d.ts +7 -0
- package/dist/components/tabs/tabs.d.ts +27 -0
- package/dist/components/tabs/types.d.ts +390 -0
- package/dist/components/tabs/utils.d.ts +17 -0
- package/dist/components/textfield/api.d.ts +8 -0
- package/dist/components/textfield/config.d.ts +34 -0
- package/dist/components/textfield/constants.d.ts +148 -0
- package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
- package/dist/components/textfield/features/leading-icon.d.ts +55 -0
- package/dist/components/textfield/features/placement.d.ts +28 -0
- package/dist/components/textfield/features/prefix-text.d.ts +54 -0
- package/dist/components/textfield/features/suffix-text.d.ts +54 -0
- package/dist/components/textfield/features/supporting-text.d.ts +59 -0
- package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
- package/dist/components/textfield/index.d.ts +3 -0
- package/dist/components/textfield/textfield.d.ts +36 -0
- package/dist/components/textfield/types.d.ts +217 -0
- package/dist/components/timepicker/api.d.ts +24 -0
- package/dist/components/timepicker/clockdial.d.ts +34 -0
- package/dist/components/timepicker/config.d.ts +75 -0
- package/dist/components/timepicker/constants.d.ts +266 -0
- package/dist/components/timepicker/index.d.ts +4 -0
- package/dist/components/timepicker/render.d.ts +9 -0
- package/dist/components/timepicker/timepicker.d.ts +8 -0
- package/dist/components/timepicker/types.d.ts +284 -0
- package/dist/components/timepicker/utils.d.ts +74 -0
- package/dist/components/tooltip/api.d.ts +18 -0
- package/dist/components/tooltip/config.d.ts +38 -0
- package/dist/components/tooltip/constants.d.ts +108 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/tooltip.d.ts +8 -0
- package/dist/components/tooltip/types.d.ts +188 -0
- package/dist/components/top-app-bar/config.d.ts +16 -0
- package/dist/components/top-app-bar/constants.d.ts +74 -0
- package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
- package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
- package/dist/components/top-app-bar/types.d.ts +118 -0
- package/dist/constants.d.ts +30 -0
- package/dist/core/canvas/index.d.ts +5 -0
- package/dist/core/canvas/resize.d.ts +14 -0
- package/dist/core/collection/adapters/base.d.ts +47 -0
- package/dist/core/collection/adapters/route.d.ts +149 -0
- package/dist/core/collection/collection.d.ts +131 -0
- package/dist/core/collection/index.d.ts +10 -0
- package/dist/core/collection/list-manager/config.d.ts +29 -0
- package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
- package/dist/core/collection/list-manager/index.d.ts +61 -0
- package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
- package/dist/core/collection/list-manager/renderer.d.ts +31 -0
- package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
- package/dist/core/collection/list-manager/state.d.ts +60 -0
- package/dist/core/collection/list-manager/types.d.ts +361 -0
- package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
- package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
- package/dist/core/compose/base.d.ts +31 -0
- package/dist/core/compose/component.d.ts +61 -0
- package/dist/core/compose/features/badge.d.ts +43 -0
- package/dist/core/compose/features/checkable.d.ts +59 -0
- package/dist/core/compose/features/constants.d.ts +45 -0
- package/dist/core/compose/features/debounce.d.ts +84 -0
- package/dist/core/compose/features/disabled.d.ts +47 -0
- package/dist/core/compose/features/events.d.ts +37 -0
- package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
- package/dist/core/compose/features/gestures/pan.d.ts +108 -0
- package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
- package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
- package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
- package/dist/core/compose/features/gestures/tap.d.ts +79 -0
- package/dist/core/compose/features/gestures.d.ts +86 -0
- package/dist/core/compose/features/icon.d.ts +71 -0
- package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
- package/dist/core/compose/features/input.d.ts +71 -0
- package/dist/core/compose/features/lifecycle.d.ts +61 -0
- package/dist/core/compose/features/position.d.ts +51 -0
- package/dist/core/compose/features/ripple.d.ts +61 -0
- package/dist/core/compose/features/size.d.ts +17 -0
- package/dist/core/compose/features/style.d.ts +16 -0
- package/dist/core/compose/features/text.d.ts +63 -0
- package/dist/core/compose/features/textinput.d.ts +93 -0
- package/dist/core/compose/features/textlabel.d.ts +57 -0
- package/dist/core/compose/features/throttle.d.ts +75 -0
- package/dist/core/compose/features/track.d.ts +42 -0
- package/dist/core/compose/features/variant.d.ts +17 -0
- package/dist/core/compose/features/withEvents.d.ts +45 -0
- package/dist/core/compose/index.d.ts +17 -0
- package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
- package/dist/core/compose/utils/type-guards.d.ts +27 -0
- package/dist/core/composition/features/dom.d.ts +19 -0
- package/dist/core/composition/features/icon.d.ts +45 -0
- package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
- package/dist/core/composition/features/label.d.ts +49 -0
- package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
- package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
- package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +35 -83
- package/dist/core/config.d.ts +130 -0
- package/dist/core/dom/attributes.d.ts +20 -0
- package/dist/core/dom/classes.d.ts +52 -0
- package/dist/core/dom/create.d.ts +154 -0
- package/dist/core/dom/events.d.ts +69 -0
- package/dist/core/dom/index.d.ts +6 -0
- package/dist/core/dom/utils.d.ts +42 -0
- package/dist/core/gestures/index.d.ts +12 -0
- package/dist/core/gestures/longpress.d.ts +23 -0
- package/dist/core/gestures/manager.d.ts +14 -0
- package/dist/core/gestures/pan.d.ts +12 -0
- package/dist/core/gestures/pinch.d.ts +14 -0
- package/dist/core/gestures/rotate.d.ts +14 -0
- package/dist/core/gestures/swipe.d.ts +20 -0
- package/dist/core/gestures/tap.d.ts +12 -0
- package/dist/core/gestures/types.d.ts +320 -0
- package/dist/core/gestures/utils.d.ts +57 -0
- package/dist/core/index.d.ts +29 -0
- package/dist/core/layout/array.d.ts +15 -0
- package/dist/core/layout/config.d.ts +32 -0
- package/dist/core/layout/create.d.ts +14 -0
- package/dist/core/layout/index.d.ts +13 -0
- package/dist/core/layout/jsx.d.ts +13 -0
- package/dist/core/layout/object.d.ts +14 -0
- package/dist/core/layout/processor.d.ts +28 -0
- package/dist/core/layout/result.d.ts +12 -0
- package/dist/core/layout/template.d.ts +12 -0
- package/dist/core/layout/types.d.ts +137 -0
- package/dist/core/layout/utils.d.ts +38 -0
- package/dist/core/state/disabled.d.ts +32 -0
- package/dist/core/state/emitter.d.ts +40 -0
- package/dist/core/state/events.d.ts +36 -0
- package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
- package/dist/core/state/lifecycle.d.ts +57 -0
- package/dist/core/state/store.d.ts +82 -0
- package/dist/core/utils/background.d.ts +40 -0
- package/dist/core/utils/index.d.ts +18 -0
- package/dist/core/utils/mobile.d.ts +54 -0
- package/dist/core/utils/object.d.ts +13 -0
- package/dist/core/utils/performance.d.ts +79 -0
- package/dist/core/utils/theme.d.ts +38 -0
- package/dist/core/utils/validate.d.ts +73 -0
- package/dist/index.cjs +64 -0
- package/dist/index.cjs.map +291 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +53 -14854
- package/dist/index.js.map +291 -0
- package/dist/package.json +39 -0
- package/dist/styles.css +7 -0
- package/package.json +23 -4
- package/.env +0 -15
- package/.typedocignore +0 -11
- package/CONTRIBUTING.md +0 -218
- package/DOCS.md +0 -153
- package/TESTING.md +0 -214
- package/git-user-stats.js +0 -545
- package/index.ts +0 -10
- package/src/components/badge/api.ts +0 -313
- package/src/components/badge/config.ts +0 -153
- package/src/components/badge/features.ts +0 -194
- package/src/components/badge/index.ts +0 -90
- package/src/components/badge/types.ts +0 -279
- package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
- package/src/components/bottom-app-bar/config.ts +0 -29
- package/src/components/bottom-app-bar/types.ts +0 -114
- package/src/components/button/api.ts +0 -172
- package/src/components/button/button.ts +0 -112
- package/src/components/button/config.ts +0 -96
- package/src/components/button/index.ts +0 -37
- package/src/components/button/types.ts +0 -290
- package/src/components/card/api.ts +0 -222
- package/src/components/card/config.ts +0 -304
- package/src/components/card/content.ts +0 -343
- package/src/components/card/features.ts +0 -407
- package/src/components/card/types.ts +0 -497
- package/src/components/carousel/api.ts +0 -147
- package/src/components/carousel/carousel.ts +0 -242
- package/src/components/carousel/config.ts +0 -91
- package/src/components/carousel/constants.ts +0 -181
- package/src/components/carousel/features/drag.ts +0 -388
- package/src/components/carousel/features/slides.ts +0 -682
- package/src/components/carousel/types.ts +0 -327
- package/src/components/checkbox/api.ts +0 -82
- package/src/components/checkbox/checkbox.ts +0 -142
- package/src/components/checkbox/config.ts +0 -89
- package/src/components/checkbox/types.ts +0 -342
- package/src/components/chips/api.ts +0 -194
- package/src/components/chips/chip/api.ts +0 -233
- package/src/components/chips/chip/chip.ts +0 -131
- package/src/components/chips/chip/config.ts +0 -91
- package/src/components/chips/chip/index.ts +0 -3
- package/src/components/chips/chips.md +0 -481
- package/src/components/chips/chips.ts +0 -75
- package/src/components/chips/config.ts +0 -109
- package/src/components/chips/constants.ts +0 -61
- package/src/components/chips/features/chip-items.ts +0 -33
- package/src/components/chips/features/container.ts +0 -77
- package/src/components/chips/features/controller.ts +0 -448
- package/src/components/chips/features/label.ts +0 -108
- package/src/components/chips/index.ts +0 -11
- package/src/components/chips/schema.ts +0 -61
- package/src/components/chips/types.ts +0 -469
- package/src/components/datepicker/api.ts +0 -265
- package/src/components/datepicker/config.ts +0 -141
- package/src/components/datepicker/datepicker.ts +0 -341
- package/src/components/datepicker/index.ts +0 -12
- package/src/components/datepicker/render.ts +0 -450
- package/src/components/datepicker/types.ts +0 -397
- package/src/components/datepicker/utils.ts +0 -289
- package/src/components/dialog/api.ts +0 -317
- package/src/components/dialog/config.ts +0 -116
- package/src/components/dialog/features.ts +0 -907
- package/src/components/dialog/index.ts +0 -141
- package/src/components/dialog/types.ts +0 -553
- package/src/components/divider/config.ts +0 -165
- package/src/components/divider/features.ts +0 -233
- package/src/components/divider/types.ts +0 -132
- package/src/components/extended-fab/api.ts +0 -193
- package/src/components/extended-fab/config.ts +0 -140
- package/src/components/extended-fab/extended-fab.ts +0 -153
- package/src/components/extended-fab/types.ts +0 -749
- package/src/components/fab/api.ts +0 -137
- package/src/components/fab/config.ts +0 -121
- package/src/components/fab/types.ts +0 -615
- package/src/components/list/api.ts +0 -82
- package/src/components/list/config.ts +0 -63
- package/src/components/list/features.ts +0 -229
- package/src/components/list/index.ts +0 -67
- package/src/components/list/list-item.ts +0 -163
- package/src/components/list/list.ts +0 -108
- package/src/components/list/types.ts +0 -396
- package/src/components/list/utils.ts +0 -98
- package/src/components/menu/api.ts +0 -230
- package/src/components/menu/config.ts +0 -127
- package/src/components/menu/features/anchor.ts +0 -394
- package/src/components/menu/features/controller.ts +0 -1423
- package/src/components/menu/features/index.ts +0 -13
- package/src/components/menu/features/position.ts +0 -353
- package/src/components/menu/menu.ts +0 -121
- package/src/components/menu/types.ts +0 -392
- package/src/components/navigation/api.ts +0 -142
- package/src/components/navigation/config.ts +0 -73
- package/src/components/navigation/features/controller.ts +0 -273
- package/src/components/navigation/features/items.ts +0 -353
- package/src/components/navigation/index.ts +0 -11
- package/src/components/navigation/nav-item.ts +0 -196
- package/src/components/navigation/navigation.ts +0 -115
- package/src/components/navigation/system/core.ts +0 -302
- package/src/components/navigation/system/events.ts +0 -240
- package/src/components/navigation/system/index.ts +0 -184
- package/src/components/navigation/system/mobile.ts +0 -278
- package/src/components/navigation/system/state.ts +0 -77
- package/src/components/navigation/system/types.ts +0 -364
- package/src/components/navigation/types.ts +0 -292
- package/src/components/progress/api.ts +0 -178
- package/src/components/progress/config.ts +0 -122
- package/src/components/progress/index.ts +0 -4
- package/src/components/progress/progress.ts +0 -159
- package/src/components/progress/types.ts +0 -255
- package/src/components/radios/api.ts +0 -125
- package/src/components/radios/config.ts +0 -59
- package/src/components/radios/constants.ts +0 -19
- package/src/components/radios/index.ts +0 -3
- package/src/components/radios/radio.ts +0 -292
- package/src/components/radios/radios.ts +0 -43
- package/src/components/radios/types.ts +0 -219
- package/src/components/search/api.ts +0 -203
- package/src/components/search/config.ts +0 -86
- package/src/components/search/features/search.ts +0 -717
- package/src/components/search/features/states.ts +0 -169
- package/src/components/search/features/structure.ts +0 -197
- package/src/components/search/index.ts +0 -7
- package/src/components/search/search.ts +0 -52
- package/src/components/search/types.ts +0 -175
- package/src/components/segmented-button/config.ts +0 -119
- package/src/components/segmented-button/index.ts +0 -4
- package/src/components/segmented-button/segment.ts +0 -108
- package/src/components/segmented-button/segmented-button.ts +0 -361
- package/src/components/segmented-button/types.ts +0 -306
- package/src/components/select/api.ts +0 -78
- package/src/components/select/config.ts +0 -76
- package/src/components/select/features.ts +0 -331
- package/src/components/select/select.ts +0 -73
- package/src/components/select/types.ts +0 -355
- package/src/components/sheet/api.ts +0 -96
- package/src/components/sheet/config.ts +0 -65
- package/src/components/sheet/features/content.ts +0 -51
- package/src/components/sheet/features/gestures.ts +0 -177
- package/src/components/sheet/features/position.ts +0 -41
- package/src/components/sheet/features/state.ts +0 -116
- package/src/components/sheet/features/title.ts +0 -86
- package/src/components/sheet/index.ts +0 -12
- package/src/components/sheet/sheet.ts +0 -56
- package/src/components/sheet/types.ts +0 -294
- package/src/components/slider/accessibility.md +0 -59
- package/src/components/slider/api.ts +0 -192
- package/src/components/slider/config.ts +0 -118
- package/src/components/slider/features/controller.ts +0 -737
- package/src/components/slider/features/handlers.ts +0 -497
- package/src/components/slider/features/index.ts +0 -5
- package/src/components/slider/features/range.ts +0 -104
- package/src/components/slider/features/states.ts +0 -195
- package/src/components/slider/index.ts +0 -17
- package/src/components/slider/schema.ts +0 -141
- package/src/components/slider/slider.ts +0 -76
- package/src/components/slider/types.ts +0 -223
- package/src/components/snackbar/api.ts +0 -162
- package/src/components/snackbar/config.ts +0 -61
- package/src/components/snackbar/features.ts +0 -76
- package/src/components/snackbar/index.ts +0 -9
- package/src/components/snackbar/position.ts +0 -79
- package/src/components/snackbar/queue.ts +0 -76
- package/src/components/snackbar/snackbar.ts +0 -60
- package/src/components/snackbar/types.ts +0 -159
- package/src/components/switch/api.ts +0 -93
- package/src/components/switch/config.ts +0 -56
- package/src/components/switch/features.ts +0 -198
- package/src/components/switch/index.ts +0 -8
- package/src/components/switch/switch.ts +0 -52
- package/src/components/switch/types.ts +0 -168
- package/src/components/tabs/api.ts +0 -221
- package/src/components/tabs/config.ts +0 -73
- package/src/components/tabs/features.ts +0 -403
- package/src/components/tabs/index.ts +0 -46
- package/src/components/tabs/indicator.ts +0 -285
- package/src/components/tabs/responsive.ts +0 -144
- package/src/components/tabs/scroll-indicators.ts +0 -149
- package/src/components/tabs/state.ts +0 -186
- package/src/components/tabs/tab-api.ts +0 -266
- package/src/components/tabs/tab.ts +0 -267
- package/src/components/tabs/tabs.ts +0 -71
- package/src/components/tabs/types.ts +0 -461
- package/src/components/tabs/utils.ts +0 -107
- package/src/components/textfield/api.ts +0 -197
- package/src/components/textfield/config.ts +0 -52
- package/src/components/textfield/features/leading-icon.ts +0 -127
- package/src/components/textfield/features/placement.ts +0 -149
- package/src/components/textfield/features/prefix-text.ts +0 -107
- package/src/components/textfield/features/suffix-text.ts +0 -100
- package/src/components/textfield/features/supporting-text.ts +0 -113
- package/src/components/textfield/features/trailing-icon.ts +0 -108
- package/src/components/textfield/index.ts +0 -9
- package/src/components/textfield/textfield.ts +0 -92
- package/src/components/textfield/types.ts +0 -265
- package/src/components/timepicker/README.md +0 -277
- package/src/components/timepicker/api.ts +0 -632
- package/src/components/timepicker/clockdial.ts +0 -479
- package/src/components/timepicker/config.ts +0 -228
- package/src/components/timepicker/index.ts +0 -3
- package/src/components/timepicker/render.ts +0 -613
- package/src/components/timepicker/timepicker.ts +0 -117
- package/src/components/timepicker/types.ts +0 -336
- package/src/components/timepicker/utils.ts +0 -241
- package/src/components/tooltip/api.ts +0 -415
- package/src/components/tooltip/config.ts +0 -80
- package/src/components/tooltip/index.ts +0 -12
- package/src/components/tooltip/tooltip.ts +0 -60
- package/src/components/tooltip/types.ts +0 -223
- package/src/components/top-app-bar/config.ts +0 -83
- package/src/components/top-app-bar/top-app-bar.ts +0 -316
- package/src/components/top-app-bar/types.ts +0 -140
- package/src/core/build/constants.ts +0 -48
- package/src/core/build/icon.ts +0 -137
- package/src/core/build/ripple.ts +0 -193
- package/src/core/build/text.ts +0 -91
- package/src/core/collection/adapters/base.ts +0 -62
- package/src/core/collection/adapters/route.ts +0 -201
- package/src/core/collection/collection.ts +0 -300
- package/src/core/collection/index.ts +0 -57
- package/src/core/collection/list-manager.ts +0 -333
- package/src/core/compose/base.ts +0 -43
- package/src/core/compose/component.ts +0 -255
- package/src/core/compose/features/badge.ts +0 -79
- package/src/core/compose/features/checkable.ts +0 -155
- package/src/core/compose/features/disabled.ts +0 -116
- package/src/core/compose/features/events.ts +0 -65
- package/src/core/compose/features/icon.ts +0 -71
- package/src/core/compose/features/input.ts +0 -174
- package/src/core/compose/features/lifecycle.ts +0 -139
- package/src/core/compose/features/position.ts +0 -94
- package/src/core/compose/features/ripple.ts +0 -58
- package/src/core/compose/features/size.ts +0 -29
- package/src/core/compose/features/style.ts +0 -31
- package/src/core/compose/features/text.ts +0 -44
- package/src/core/compose/features/textinput.ts +0 -238
- package/src/core/compose/features/textlabel.ts +0 -113
- package/src/core/compose/features/track.ts +0 -84
- package/src/core/compose/features/variant.ts +0 -29
- package/src/core/compose/features/withEvents.ts +0 -137
- package/src/core/compose/index.ts +0 -54
- package/src/core/composition/features/dom.ts +0 -45
- package/src/core/composition/features/icon.ts +0 -131
- package/src/core/composition/features/label.ts +0 -155
- package/src/core/config.ts +0 -211
- package/src/core/dom/attributes.ts +0 -33
- package/src/core/dom/classes.ts +0 -132
- package/src/core/dom/create.ts +0 -273
- package/src/core/dom/events.ts +0 -209
- package/src/core/dom/index.ts +0 -10
- package/src/core/dom/utils.ts +0 -97
- package/src/core/index.ts +0 -111
- package/src/core/layout/README.md +0 -715
- package/src/core/layout/array.ts +0 -180
- package/src/core/layout/config.ts +0 -193
- package/src/core/layout/create.ts +0 -54
- package/src/core/layout/index.ts +0 -36
- package/src/core/layout/object.ts +0 -123
- package/src/core/layout/processor.ts +0 -106
- package/src/core/layout/result.ts +0 -84
- package/src/core/layout/types.ts +0 -180
- package/src/core/layout/utils.ts +0 -144
- package/src/core/state/disabled.ts +0 -81
- package/src/core/state/emitter.ts +0 -94
- package/src/core/state/events.ts +0 -88
- package/src/core/state/lifecycle.ts +0 -131
- package/src/core/state/store.ts +0 -197
- package/src/core/utils/index.ts +0 -45
- package/src/core/utils/mobile.ts +0 -98
- package/src/core/utils/object.ts +0 -41
- package/src/core/utils/validate.ts +0 -234
- package/src/index.ts +0 -90
- package/src/styles/abstract/_base.scss +0 -2
- package/src/styles/abstract/_config.scss +0 -28
- package/src/styles/abstract/_functions.scss +0 -124
- package/src/styles/abstract/_mixins.scss +0 -352
- package/src/styles/abstract/_theme.scss +0 -269
- package/src/styles/abstract/_variables.scss +0 -305
- package/src/styles/base/_reset.scss +0 -86
- package/src/styles/base/_typography.scss +0 -155
- package/src/styles/components/_badge.scss +0 -182
- package/src/styles/components/_bottom-app-bar.scss +0 -103
- package/src/styles/components/_button.scss +0 -224
- package/src/styles/components/_card.scss +0 -401
- package/src/styles/components/_carousel.scss +0 -645
- package/src/styles/components/_checkbox.scss +0 -231
- package/src/styles/components/_chips.scss +0 -638
- package/src/styles/components/_datepicker.scss +0 -358
- package/src/styles/components/_dialog.scss +0 -259
- package/src/styles/components/_divider.scss +0 -57
- package/src/styles/components/_extended-fab.scss +0 -267
- package/src/styles/components/_fab.scss +0 -225
- package/src/styles/components/_list.scss +0 -248
- package/src/styles/components/_menu.scss +0 -242
- package/src/styles/components/_navigation-mobile.scss +0 -244
- package/src/styles/components/_navigation-system.scss +0 -151
- package/src/styles/components/_navigation.scss +0 -407
- package/src/styles/components/_progress.scss +0 -151
- package/src/styles/components/_radios.scss +0 -187
- package/src/styles/components/_search.scss +0 -306
- package/src/styles/components/_segmented-button.scss +0 -227
- package/src/styles/components/_select.scss +0 -272
- package/src/styles/components/_sheet.scss +0 -236
- package/src/styles/components/_slider.scss +0 -489
- package/src/styles/components/_snackbar.scss +0 -211
- package/src/styles/components/_switch.scss +0 -298
- package/src/styles/components/_tabs.scss +0 -416
- package/src/styles/components/_textfield.scss +0 -773
- package/src/styles/components/_timepicker.scss +0 -451
- package/src/styles/components/_tooltip.scss +0 -241
- package/src/styles/components/_top-app-bar.scss +0 -225
- package/src/styles/main.scss +0 -175
- package/src/styles/themes/_autumn.scss +0 -105
- package/src/styles/themes/_base-theme.scss +0 -85
- package/src/styles/themes/_baseline.scss +0 -173
- package/src/styles/themes/_bluekhaki.scss +0 -125
- package/src/styles/themes/_brownbeige.scss +0 -125
- package/src/styles/themes/_browngreen.scss +0 -125
- package/src/styles/themes/_forest.scss +0 -77
- package/src/styles/themes/_greenbeige.scss +0 -125
- package/src/styles/themes/_index.scss +0 -6
- package/src/styles/themes/_material.scss +0 -125
- package/src/styles/themes/_ocean.scss +0 -77
- package/src/styles/themes/_sageivory.scss +0 -125
- package/src/styles/themes/_spring.scss +0 -77
- package/src/styles/themes/_summer.scss +0 -87
- package/src/styles/themes/_sunset.scss +0 -60
- package/src/styles/themes/_tealcaramel.scss +0 -125
- package/src/styles/themes/_winter.scss +0 -77
- package/src/styles/utilities/_colors.scss +0 -154
- package/src/styles/utilities/_flexbox.scss +0 -194
- package/src/styles/utilities/_layout.scss +0 -665
- package/src/styles/utilities/_ripple.scss +0 -79
- package/src/styles/utilities/_spacing.scss +0 -139
- package/src/styles/utilities/_typography.scss +0 -178
- package/src/styles/utilities/_visibility.scss +0 -142
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
// src/components/carousel/carousel.ts
|
|
2
|
-
/**
|
|
3
|
-
* Creates carousels with different layouts based on Material Design 3 guidelines.
|
|
4
|
-
*
|
|
5
|
-
* This module implements a carousel component that supports four layout types:
|
|
6
|
-
* - Multi-browse: For browsing many visual items at once (photos, feeds)
|
|
7
|
-
* - Uncontained: For customized or text-heavy carousels (traditional)
|
|
8
|
-
* - Hero: For spotlighting large visual items (featured content)
|
|
9
|
-
* - Full-screen: For immersive vertical-scrolling experiences
|
|
10
|
-
*
|
|
11
|
-
* Each layout is optimized for different content types and presentation needs,
|
|
12
|
-
* following the Material Design 3 component guidelines.
|
|
13
|
-
*
|
|
14
|
-
* @module components/carousel
|
|
15
|
-
* @category Components
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import { pipe } from '../../core/compose';
|
|
19
|
-
import { createBase, withElement } from '../../core/compose/component';
|
|
20
|
-
import { withEvents, withLifecycle } from '../../core/compose/features';
|
|
21
|
-
import { withSlides, withDrag } from './features';
|
|
22
|
-
import { withAPI } from './api';
|
|
23
|
-
import {
|
|
24
|
-
CarouselConfig,
|
|
25
|
-
CarouselComponent,
|
|
26
|
-
CarouselLayout,
|
|
27
|
-
CarouselScrollBehavior
|
|
28
|
-
} from './types';
|
|
29
|
-
import { createBaseConfig, getElementConfig } from './config';
|
|
30
|
-
import { CAROUSEL_DEFAULTS } from './constants';
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Creates a new carousel component with the specified configuration.
|
|
34
|
-
*
|
|
35
|
-
* The carousel supports different layout types for various content
|
|
36
|
-
* presentation needs, from image galleries to full-screen experiences.
|
|
37
|
-
* It handles gesture interactions, keyboard navigation, and responsive
|
|
38
|
-
* behavior following Material Design 3 guidelines.
|
|
39
|
-
*
|
|
40
|
-
* @param {CarouselConfig} config - Configuration options for the carousel
|
|
41
|
-
* @returns {CarouselComponent} A fully configured carousel component instance
|
|
42
|
-
* @throws {Error} Throws an error if carousel creation fails
|
|
43
|
-
*
|
|
44
|
-
* @category Components
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* // Create a multi-browse carousel for a photo gallery
|
|
48
|
-
* const photoGallery = createCarousel({
|
|
49
|
-
* layout: 'multi-browse',
|
|
50
|
-
* scrollBehavior: 'snap',
|
|
51
|
-
* slides: [
|
|
52
|
-
* { image: 'image1.jpg', title: 'Recent highlights', accent: '#3C4043' },
|
|
53
|
-
* { image: 'image2.jpg', title: 'La Familia', accent: '#7E5260' }
|
|
54
|
-
* ],
|
|
55
|
-
* showAllLink: true
|
|
56
|
-
* });
|
|
57
|
-
*
|
|
58
|
-
* document.getElementById('gallery-container').appendChild(photoGallery.element);
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* // Create a hero carousel for featured content
|
|
62
|
-
* const featuredContent = createCarousel({
|
|
63
|
-
* layout: 'hero',
|
|
64
|
-
* centered: true,
|
|
65
|
-
* gap: 16,
|
|
66
|
-
* slides: [
|
|
67
|
-
* { image: 'hero1.jpg', title: 'Featured Story', buttonText: 'Read More' },
|
|
68
|
-
* { image: 'hero2.jpg', title: 'Special Offer', buttonText: 'Shop Now' }
|
|
69
|
-
* ]
|
|
70
|
-
* });
|
|
71
|
-
*
|
|
72
|
-
* // Listen for slide changes
|
|
73
|
-
* featuredContent.on('slide-changed', (index) => {
|
|
74
|
-
* console.log(`Now showing featured item ${index}`);
|
|
75
|
-
* });
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* // Create a full-screen immersive carousel
|
|
79
|
-
* const storyViewer = createCarousel({
|
|
80
|
-
* layout: 'full-screen',
|
|
81
|
-
* loop: false,
|
|
82
|
-
* transition: 'fade',
|
|
83
|
-
* slides: [
|
|
84
|
-
* { image: 'story1.jpg', description: 'Chapter 1' },
|
|
85
|
-
* { image: 'story2.jpg', description: 'Chapter 2' }
|
|
86
|
-
* ]
|
|
87
|
-
* });
|
|
88
|
-
*/
|
|
89
|
-
export const createCarousel = (config: CarouselConfig = {}): CarouselComponent => {
|
|
90
|
-
// Ensure layout and scrollBehavior have defaults
|
|
91
|
-
config.layout = config.layout || 'multi-browse';
|
|
92
|
-
config.scrollBehavior = config.scrollBehavior || getDefaultScrollBehavior(config.layout);
|
|
93
|
-
|
|
94
|
-
const baseConfig = createBaseConfig(config);
|
|
95
|
-
|
|
96
|
-
try {
|
|
97
|
-
// Create a safer composition order to avoid circular dependencies
|
|
98
|
-
// First build the core functionality
|
|
99
|
-
const coreComponent = pipe(
|
|
100
|
-
createBase,
|
|
101
|
-
withEvents(),
|
|
102
|
-
withElement(getElementConfig(baseConfig))
|
|
103
|
-
)(baseConfig);
|
|
104
|
-
|
|
105
|
-
// Define the enhanced component early to avoid circular references
|
|
106
|
-
const enhancedComponent = { ...coreComponent };
|
|
107
|
-
|
|
108
|
-
// Apply layout-specific adjustments
|
|
109
|
-
applyLayoutConfig(enhancedComponent, config);
|
|
110
|
-
|
|
111
|
-
// Then add the features that depend on the core
|
|
112
|
-
const slidesComponent = withSlides(baseConfig)(enhancedComponent);
|
|
113
|
-
|
|
114
|
-
// Add drag navigation
|
|
115
|
-
const withDragComponent = withDrag(baseConfig)(slidesComponent);
|
|
116
|
-
const withLifecycleComponent = withLifecycle()(withDragComponent);
|
|
117
|
-
|
|
118
|
-
// Create a simplified API config
|
|
119
|
-
const apiConfig = {
|
|
120
|
-
slides: {
|
|
121
|
-
addSlide: withLifecycleComponent.slides.addSlide,
|
|
122
|
-
removeSlide: withLifecycleComponent.slides.removeSlide,
|
|
123
|
-
updateSlide: withLifecycleComponent.slides.updateSlide,
|
|
124
|
-
getCount: withLifecycleComponent.slides.getCount,
|
|
125
|
-
getElements: withLifecycleComponent.slides.getElements
|
|
126
|
-
},
|
|
127
|
-
lifecycle: {
|
|
128
|
-
destroy: withLifecycleComponent.lifecycle.destroy
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
// Add the API
|
|
133
|
-
const carousel = withAPI(apiConfig)(withLifecycleComponent);
|
|
134
|
-
|
|
135
|
-
// Add layout data attribute for CSS targeting
|
|
136
|
-
carousel.element.dataset.layout = config.layout;
|
|
137
|
-
carousel.element.dataset.scrollBehavior = config.scrollBehavior;
|
|
138
|
-
|
|
139
|
-
return carousel;
|
|
140
|
-
} catch (error) {
|
|
141
|
-
console.error('Carousel creation error:', error);
|
|
142
|
-
throw new Error(`Failed to create carousel: ${(error as Error).message}`);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Determines the optimal scroll behavior based on the selected layout type.
|
|
148
|
-
*
|
|
149
|
-
* Material Design 3 recommendations suggest different scroll behaviors
|
|
150
|
-
* for each layout type to provide the best user experience.
|
|
151
|
-
*
|
|
152
|
-
* @param {CarouselLayout} layout - Carousel layout type
|
|
153
|
-
* @returns {CarouselScrollBehavior} The recommended scroll behavior
|
|
154
|
-
* @category Components
|
|
155
|
-
* @internal
|
|
156
|
-
*/
|
|
157
|
-
function getDefaultScrollBehavior(layout: CarouselLayout): CarouselScrollBehavior {
|
|
158
|
-
switch (layout) {
|
|
159
|
-
// These layouts work best with snap scrolling for defined stops
|
|
160
|
-
case 'multi-browse':
|
|
161
|
-
case 'hero':
|
|
162
|
-
case 'full-screen':
|
|
163
|
-
return 'snap';
|
|
164
|
-
|
|
165
|
-
// Uncontained layout works best with standard scrolling
|
|
166
|
-
case 'uncontained':
|
|
167
|
-
return 'default';
|
|
168
|
-
|
|
169
|
-
// Default to standard scrolling for unknown layouts
|
|
170
|
-
default:
|
|
171
|
-
return 'default';
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Applies layout-specific configurations and styling to the carousel component.
|
|
177
|
-
*
|
|
178
|
-
* Each carousel layout has specific CSS properties, data attributes,
|
|
179
|
-
* and behaviors that optimize it for different content types.
|
|
180
|
-
* This function sets up those properties based on the selected layout.
|
|
181
|
-
*
|
|
182
|
-
* @param {any} component - The component to configure
|
|
183
|
-
* @param {CarouselConfig} config - Carousel configuration
|
|
184
|
-
* @category Components
|
|
185
|
-
* @internal
|
|
186
|
-
*/
|
|
187
|
-
function applyLayoutConfig(component: any, config: CarouselConfig): void {
|
|
188
|
-
// Add layout-specific class for CSS targeting
|
|
189
|
-
component.element.classList.add(`${component.getClass('carousel')}-layout--${config.layout}`);
|
|
190
|
-
|
|
191
|
-
// Apply layout-specific configurations
|
|
192
|
-
switch (config.layout) {
|
|
193
|
-
case 'multi-browse':
|
|
194
|
-
// Multi-browse layout: For browsing many visual items at once
|
|
195
|
-
// Shows items of varying sizes with parallax scrolling effect
|
|
196
|
-
component.element.dataset.enableParallax = 'true';
|
|
197
|
-
component.element.dataset.layout = 'multi-browse';
|
|
198
|
-
break;
|
|
199
|
-
|
|
200
|
-
case 'uncontained':
|
|
201
|
-
// Uncontained layout: For text-heavy or consistent-sized items
|
|
202
|
-
// Allows content to flow past the viewport edges
|
|
203
|
-
component.element.style.overflow = 'visible';
|
|
204
|
-
component.element.dataset.layout = 'uncontained';
|
|
205
|
-
break;
|
|
206
|
-
|
|
207
|
-
case 'hero':
|
|
208
|
-
// Hero layout: For spotlighting featured content
|
|
209
|
-
// Large central item with preview of adjacent items
|
|
210
|
-
component.element.dataset.largeItemFocus = 'true';
|
|
211
|
-
component.element.dataset.layout = 'hero';
|
|
212
|
-
|
|
213
|
-
// Optionally center items for balanced presentation
|
|
214
|
-
if (config.centered) {
|
|
215
|
-
component.element.dataset.centered = 'true';
|
|
216
|
-
}
|
|
217
|
-
break;
|
|
218
|
-
|
|
219
|
-
case 'full-screen':
|
|
220
|
-
// Full-screen layout: For immersive experiences
|
|
221
|
-
// Takes up entire viewport and supports vertical scrolling
|
|
222
|
-
component.element.style.width = '100%';
|
|
223
|
-
component.element.style.height = '100%';
|
|
224
|
-
component.element.style.maxWidth = '100vw';
|
|
225
|
-
component.element.style.maxHeight = '100vh';
|
|
226
|
-
component.element.dataset.verticalScroll = 'true';
|
|
227
|
-
component.element.dataset.layout = 'full-screen';
|
|
228
|
-
|
|
229
|
-
// Full-screen layout always uses snap scrolling for controlled navigation
|
|
230
|
-
config.scrollBehavior = 'snap';
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Apply scroll behavior data attribute for CSS targeting
|
|
235
|
-
if (config.scrollBehavior === 'snap') {
|
|
236
|
-
component.element.dataset.snapScroll = 'true';
|
|
237
|
-
} else {
|
|
238
|
-
component.element.dataset.snapScroll = 'false';
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
export default createCarousel;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
// src/components/carousel/config.ts
|
|
2
|
-
import {
|
|
3
|
-
createComponentConfig,
|
|
4
|
-
createElementConfig,
|
|
5
|
-
BaseComponentConfig
|
|
6
|
-
} from '../../core/config/component-config';
|
|
7
|
-
import { CarouselConfig } from './types';
|
|
8
|
-
import { CAROUSEL_DEFAULTS, CAROUSEL_TRANSITIONS } from './constants';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Default configuration for the Carousel component
|
|
12
|
-
*/
|
|
13
|
-
export const defaultConfig: CarouselConfig = {
|
|
14
|
-
initialSlide: CAROUSEL_DEFAULTS.INITIAL_SLIDE,
|
|
15
|
-
loop: CAROUSEL_DEFAULTS.LOOP,
|
|
16
|
-
transition: CAROUSEL_TRANSITIONS.SLIDE as 'slide' | 'fade' | 'none',
|
|
17
|
-
transitionDuration: CAROUSEL_DEFAULTS.TRANSITION_DURATION,
|
|
18
|
-
borderRadius: CAROUSEL_DEFAULTS.BORDER_RADIUS,
|
|
19
|
-
gap: CAROUSEL_DEFAULTS.GAP,
|
|
20
|
-
prefix: 'carousel',
|
|
21
|
-
showAllLink: true // Show "Show all" button by default
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Creates the base configuration for Carousel component
|
|
26
|
-
* @param {CarouselConfig} config - User provided configuration
|
|
27
|
-
* @returns {CarouselConfig} Complete configuration with defaults applied
|
|
28
|
-
*/
|
|
29
|
-
export const createBaseConfig = (config: CarouselConfig = {}): CarouselConfig =>
|
|
30
|
-
createComponentConfig(defaultConfig, config, 'carousel') as CarouselConfig;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Generates element configuration for the Carousel component
|
|
34
|
-
* @param {CarouselConfig} config - Carousel configuration
|
|
35
|
-
* @returns {Object} Element configuration object for withElement
|
|
36
|
-
*/
|
|
37
|
-
export const getElementConfig = (config: CarouselConfig) => {
|
|
38
|
-
// Create the attributes object
|
|
39
|
-
const attrs: Record<string, any> = {
|
|
40
|
-
role: 'region',
|
|
41
|
-
'aria-roledescription': 'carousel',
|
|
42
|
-
'aria-live': 'polite'
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
// Create data attributes for configuration
|
|
46
|
-
const dataAttrs = {
|
|
47
|
-
'data-transition': config.transition,
|
|
48
|
-
'data-loop': config.loop ? 'true' : 'false'
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
return createElementConfig(config, {
|
|
52
|
-
tag: 'div',
|
|
53
|
-
attrs: { ...attrs, ...dataAttrs },
|
|
54
|
-
className: config.class,
|
|
55
|
-
forwardEvents: {
|
|
56
|
-
keydown: true,
|
|
57
|
-
focus: true,
|
|
58
|
-
blur: true
|
|
59
|
-
},
|
|
60
|
-
style: {
|
|
61
|
-
position: 'relative',
|
|
62
|
-
overflow: 'hidden',
|
|
63
|
-
borderRadius: `${config.borderRadius}px`,
|
|
64
|
-
width: '100%',
|
|
65
|
-
height: 'auto',
|
|
66
|
-
display: 'flex',
|
|
67
|
-
flexDirection: 'column'
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Creates API configuration for the Carousel component
|
|
74
|
-
* @param {Object} comp - Component with slides and lifecycle features
|
|
75
|
-
* @returns {Object} API configuration object
|
|
76
|
-
*/
|
|
77
|
-
export const getApiConfig = (comp) => ({
|
|
78
|
-
// Empty navigation API for compatibility
|
|
79
|
-
slides: {
|
|
80
|
-
addSlide: comp.slides.addSlide,
|
|
81
|
-
removeSlide: comp.slides.removeSlide,
|
|
82
|
-
updateSlide: comp.slides.updateSlide,
|
|
83
|
-
getCount: comp.slides.getCount,
|
|
84
|
-
getElements: comp.slides.getElements
|
|
85
|
-
},
|
|
86
|
-
lifecycle: {
|
|
87
|
-
destroy: comp.lifecycle.destroy
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
export default defaultConfig;
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
// src/components/carousel/constants.ts
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Carousel layout types as defined by Material Design 3
|
|
5
|
-
*
|
|
6
|
-
* Material Design 3 defines specific layout patterns for carousels
|
|
7
|
-
* to accommodate different content presentation needs.
|
|
8
|
-
*
|
|
9
|
-
* @category Components
|
|
10
|
-
* @see https://material.io/components/carousel
|
|
11
|
-
*/
|
|
12
|
-
export const CAROUSEL_LAYOUTS = {
|
|
13
|
-
/**
|
|
14
|
-
* Multi-browse layout: Best for browsing many visual items at once
|
|
15
|
-
* Ideal for photo galleries, product collections, or event feeds
|
|
16
|
-
* Shows multiple items in a single view with varying sizes
|
|
17
|
-
*/
|
|
18
|
-
MULTI_BROWSE: 'multi-browse',
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Uncontained layout: For highly customized or text-heavy carousels
|
|
22
|
-
* Traditional horizontal scrolling behavior without special styling
|
|
23
|
-
* Content can extend beyond viewport edges with consistent sizing
|
|
24
|
-
*/
|
|
25
|
-
UNCONTAINED: 'uncontained',
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Hero layout: For spotlighting very large visual items
|
|
29
|
-
* Highlights featured content with a large central item
|
|
30
|
-
* Shows a partial preview of the next/previous items
|
|
31
|
-
*/
|
|
32
|
-
HERO: 'hero',
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Full-screen layout: For immersive vertical-scrolling experiences
|
|
36
|
-
* Takes up entire viewport with snap scrolling between items
|
|
37
|
-
* Suited for immersive content or focused presentations
|
|
38
|
-
*/
|
|
39
|
-
FULL_SCREEN: 'full-screen'
|
|
40
|
-
} as const;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Carousel scroll behaviors
|
|
44
|
-
*
|
|
45
|
-
* Controls how scrolling behaves when moving between items.
|
|
46
|
-
* Each layout type has a recommended default behavior.
|
|
47
|
-
*
|
|
48
|
-
* @category Components
|
|
49
|
-
*/
|
|
50
|
-
export const CAROUSEL_SCROLL_BEHAVIORS = {
|
|
51
|
-
/**
|
|
52
|
-
* Default: Standard smooth scrolling without snapping
|
|
53
|
-
* Users can stop at any position between items
|
|
54
|
-
* Recommended for uncontained layouts and content browsing
|
|
55
|
-
*/
|
|
56
|
-
DEFAULT: 'default',
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Snap: Items snap to predefined positions when scrolling
|
|
60
|
-
* Ensures items are properly aligned for viewing
|
|
61
|
-
* Recommended for multi-browse, hero, and full-screen layouts
|
|
62
|
-
*/
|
|
63
|
-
SNAP: 'snap'
|
|
64
|
-
} as const;
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Carousel item size constants
|
|
68
|
-
*
|
|
69
|
-
* Defines the available sizes for carousel items.
|
|
70
|
-
* These are used to control the relative sizing of
|
|
71
|
-
* items within different carousel layouts.
|
|
72
|
-
*
|
|
73
|
-
* @category Components
|
|
74
|
-
*/
|
|
75
|
-
export const CAROUSEL_ITEM_SIZES = {
|
|
76
|
-
/** Large featured items (primary content) */
|
|
77
|
-
LARGE: 'large',
|
|
78
|
-
/** Medium-sized items (secondary content) */
|
|
79
|
-
MEDIUM: 'medium',
|
|
80
|
-
/** Small items (tertiary content or thumbnails) */
|
|
81
|
-
SMALL: 'small'
|
|
82
|
-
} as const;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Transition effects for carousel slides
|
|
86
|
-
*
|
|
87
|
-
* Controls the visual transition when moving between slides.
|
|
88
|
-
*
|
|
89
|
-
* @category Components
|
|
90
|
-
*/
|
|
91
|
-
export const CAROUSEL_TRANSITIONS = {
|
|
92
|
-
/** Horizontal sliding animation (default) */
|
|
93
|
-
SLIDE: 'slide',
|
|
94
|
-
/** Fade in/out transition between slides */
|
|
95
|
-
FADE: 'fade',
|
|
96
|
-
/** No animation, immediate change */
|
|
97
|
-
NONE: 'none'
|
|
98
|
-
} as const;
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Event names for the carousel component
|
|
102
|
-
*
|
|
103
|
-
* These events can be listened to using the carousel's
|
|
104
|
-
* `on()` method for custom behavior.
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* carousel.on(CAROUSEL_EVENTS.SLIDE_CHANGED, (index) => {
|
|
108
|
-
* console.log(`Now showing slide ${index}`);
|
|
109
|
-
* });
|
|
110
|
-
*
|
|
111
|
-
* @category Components
|
|
112
|
-
*/
|
|
113
|
-
export const CAROUSEL_EVENTS = {
|
|
114
|
-
/** Fired when a slide change begins */
|
|
115
|
-
SLIDE_CHANGE: 'slide-change',
|
|
116
|
-
/** Fired when a slide change completes */
|
|
117
|
-
SLIDE_CHANGED: 'slide-changed',
|
|
118
|
-
/** Fired when the carousel is resized */
|
|
119
|
-
RESIZE: 'resize'
|
|
120
|
-
} as const;
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Default values for carousel configuration
|
|
124
|
-
*
|
|
125
|
-
* These values will be used when not explicitly specified
|
|
126
|
-
* in the configuration object passed to createCarousel().
|
|
127
|
-
*
|
|
128
|
-
* @category Components
|
|
129
|
-
*/
|
|
130
|
-
export const CAROUSEL_DEFAULTS = {
|
|
131
|
-
/** Start displaying from the first slide (index 0) */
|
|
132
|
-
INITIAL_SLIDE: 0,
|
|
133
|
-
/** Enable infinite looping by default */
|
|
134
|
-
LOOP: true,
|
|
135
|
-
/** Default transition effect is sliding */
|
|
136
|
-
TRANSITION: CAROUSEL_TRANSITIONS.SLIDE,
|
|
137
|
-
/** Transition duration in milliseconds */
|
|
138
|
-
TRANSITION_DURATION: 300,
|
|
139
|
-
/** Border radius for slides following Material Design 3 */
|
|
140
|
-
BORDER_RADIUS: 16,
|
|
141
|
-
/** Gap between slides in pixels */
|
|
142
|
-
GAP: 8,
|
|
143
|
-
/** Default layout is multi-browse for browsing visual content */
|
|
144
|
-
LAYOUT: CAROUSEL_LAYOUTS.MULTI_BROWSE,
|
|
145
|
-
/** Default scroll behavior is snap for controlled movement */
|
|
146
|
-
SCROLL_BEHAVIOR: CAROUSEL_SCROLL_BEHAVIORS.SNAP,
|
|
147
|
-
/** Small item width in pixels (40-56dp range per MD3 guidelines) */
|
|
148
|
-
SMALL_ITEM_WIDTH: 48,
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Item widths for different layouts in pixels
|
|
152
|
-
* These values are optimized for each layout type
|
|
153
|
-
* based on Material Design 3 guidelines
|
|
154
|
-
*/
|
|
155
|
-
ITEM_WIDTHS: {
|
|
156
|
-
// Multi-browse layout uses varying sizes
|
|
157
|
-
[CAROUSEL_LAYOUTS.MULTI_BROWSE]: {
|
|
158
|
-
LARGE: 240, // Large featured items
|
|
159
|
-
MEDIUM: 180, // Medium secondary items
|
|
160
|
-
SMALL: 48 // Small thumbnail/preview items
|
|
161
|
-
},
|
|
162
|
-
// Uncontained layout uses consistent sizing
|
|
163
|
-
[CAROUSEL_LAYOUTS.UNCONTAINED]: {
|
|
164
|
-
LARGE: 240, // All items same size
|
|
165
|
-
MEDIUM: 240, // for consistent scrolling
|
|
166
|
-
SMALL: 240 // experience
|
|
167
|
-
},
|
|
168
|
-
// Hero layout emphasizes the main item
|
|
169
|
-
[CAROUSEL_LAYOUTS.HERO]: {
|
|
170
|
-
LARGE: 300, // Very large for hero spotlight
|
|
171
|
-
MEDIUM: 240, // Medium for preview items
|
|
172
|
-
SMALL: 48 // Small for navigation thumbnails
|
|
173
|
-
},
|
|
174
|
-
// Full-screen takes entire viewport width
|
|
175
|
-
[CAROUSEL_LAYOUTS.FULL_SCREEN]: {
|
|
176
|
-
LARGE: '100%', // Full width immersive
|
|
177
|
-
MEDIUM: '100%', // experience with all
|
|
178
|
-
SMALL: '100%' // items filling viewport
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
} as const;
|