mtrl 0.8.0-next.8 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -283
- package/dist/README.md +112 -283
- package/dist/components/badge/api.d.ts +1 -1
- package/dist/components/badge/api.js +162 -0
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/badge/badge.js +18 -0
- package/dist/components/badge/config.d.ts +1 -1
- package/dist/components/badge/config.js +63 -0
- package/dist/components/badge/constants.js +20 -0
- package/dist/components/badge/features.d.ts +1 -1
- package/dist/components/badge/features.js +95 -0
- package/dist/components/badge/index.d.ts +2 -2
- package/dist/components/badge/index.js +1 -0
- package/dist/components/badge/types.js +1 -0
- package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +1 -1
- package/dist/components/bottom-app-bar/bottom-app-bar.js +91 -0
- package/dist/components/bottom-app-bar/config.d.ts +1 -1
- package/dist/components/bottom-app-bar/config.js +10 -0
- package/dist/components/bottom-app-bar/constants.js +13 -0
- package/dist/components/bottom-app-bar/index.d.ts +2 -2
- package/dist/components/bottom-app-bar/index.js +3 -0
- package/dist/components/bottom-app-bar/types.d.ts +1 -1
- package/dist/components/bottom-app-bar/types.js +1 -0
- package/dist/components/bottom-sheet/api.d.ts +43 -0
- package/dist/components/bottom-sheet/api.js +56 -0
- package/dist/components/bottom-sheet/bottom-sheet.d.ts +24 -0
- package/dist/components/bottom-sheet/bottom-sheet.js +18 -0
- package/dist/components/bottom-sheet/config.d.ts +34 -0
- package/dist/components/bottom-sheet/config.js +19 -0
- package/dist/components/bottom-sheet/constants.d.ts +65 -0
- package/dist/components/bottom-sheet/constants.js +35 -0
- package/dist/components/bottom-sheet/features/drag.d.ts +32 -0
- package/dist/components/bottom-sheet/features/drag.js +71 -0
- package/dist/components/bottom-sheet/features/index.d.ts +3 -0
- package/dist/components/bottom-sheet/features/index.js +3 -0
- package/dist/components/bottom-sheet/features/state.d.ts +31 -0
- package/dist/components/bottom-sheet/features/state.js +82 -0
- package/dist/components/bottom-sheet/features/structure.d.ts +26 -0
- package/dist/components/bottom-sheet/features/structure.js +88 -0
- package/dist/components/bottom-sheet/index.d.ts +2 -0
- package/dist/components/bottom-sheet/index.js +1 -0
- package/dist/components/bottom-sheet/types.d.ts +116 -0
- package/dist/components/bottom-sheet/types.js +1 -0
- package/dist/components/button/api.d.ts +2 -2
- package/dist/components/button/api.js +265 -0
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/button/button.js +25 -0
- package/dist/components/button/config.d.ts +1 -1
- package/dist/components/button/config.js +51 -0
- package/dist/components/button/constants.js +35 -0
- package/dist/components/button/features/progress.d.ts +2 -2
- package/dist/components/button/features/progress.js +163 -0
- package/dist/components/button/features/toggle.d.ts +1 -1
- package/dist/components/button/features/toggle.js +33 -0
- package/dist/components/button/index.d.ts +3 -3
- package/dist/components/button/index.js +1 -0
- package/dist/components/button/types.d.ts +3 -3
- package/dist/components/button/types.js +1 -0
- package/dist/components/button-group/button-group.d.ts +1 -1
- package/dist/components/button-group/button-group.js +358 -0
- package/dist/components/button-group/config.d.ts +10 -10
- package/dist/components/button-group/config.js +123 -0
- package/dist/components/button-group/constants.d.ts +8 -0
- package/dist/components/button-group/constants.js +94 -0
- package/dist/components/button-group/index.d.ts +4 -4
- package/dist/components/button-group/index.js +3 -0
- package/dist/components/button-group/types.d.ts +1 -1
- package/dist/components/button-group/types.js +1 -0
- package/dist/components/card/api.d.ts +1 -1
- package/dist/components/card/api.js +74 -0
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/card/card.js +20 -0
- package/dist/components/card/config.d.ts +1 -1
- package/dist/components/card/config.js +161 -0
- package/dist/components/card/constants.js +55 -0
- package/dist/components/card/content.d.ts +1 -1
- package/dist/components/card/content.js +195 -0
- package/dist/components/card/features.d.ts +1 -1
- package/dist/components/card/features.js +225 -0
- package/dist/components/card/index.d.ts +5 -5
- package/dist/components/card/index.js +4 -0
- package/dist/components/card/types.js +1 -0
- package/dist/components/carousel/api.d.ts +1 -1
- package/dist/components/carousel/api.js +46 -0
- package/dist/components/carousel/arrangement.js +61 -0
- package/dist/components/carousel/carousel.d.ts +1 -1
- package/dist/components/carousel/carousel.js +11 -0
- package/dist/components/carousel/config.d.ts +1 -1
- package/dist/components/carousel/config.js +40 -0
- package/dist/components/carousel/constants.js +23 -0
- package/dist/components/carousel/features/index.d.ts +2 -2
- package/dist/components/carousel/features/index.js +2 -0
- package/dist/components/carousel/features/scroll.d.ts +2 -2
- package/dist/components/carousel/features/scroll.js +345 -0
- package/dist/components/carousel/features/slides.d.ts +1 -1
- package/dist/components/carousel/features/slides.js +127 -0
- package/dist/components/carousel/index.d.ts +3 -3
- package/dist/components/carousel/index.js +2 -0
- package/dist/components/carousel/keylines.js +292 -0
- package/dist/components/carousel/strategy.d.ts +1 -1
- package/dist/components/carousel/strategy.js +207 -0
- package/dist/components/carousel/types.js +1 -0
- package/dist/components/checkbox/api.d.ts +1 -1
- package/dist/components/checkbox/api.js +82 -0
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/checkbox/checkbox.js +29 -0
- package/dist/components/checkbox/config.d.ts +1 -1
- package/dist/components/checkbox/config.js +44 -0
- package/dist/components/checkbox/constants.js +20 -0
- package/dist/components/checkbox/index.d.ts +3 -3
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/checkbox/types.js +1 -0
- package/dist/components/chips/api.d.ts +1 -1
- package/dist/components/chips/api.js +153 -0
- package/dist/components/chips/chip/api.d.ts +1 -1
- package/dist/components/chips/chip/api.js +186 -0
- package/dist/components/chips/chip/chip.d.ts +1 -1
- package/dist/components/chips/chip/chip.js +78 -0
- package/dist/components/chips/chip/config.d.ts +1 -1
- package/dist/components/chips/chip/config.js +53 -0
- package/dist/components/chips/chip/constants.js +18 -0
- package/dist/components/chips/chip/index.d.ts +2 -2
- package/dist/components/chips/chip/index.js +2 -0
- package/dist/components/chips/chip/types.d.ts +1 -1
- package/dist/components/chips/chip/types.js +1 -0
- package/dist/components/chips/chips.d.ts +1 -1
- package/dist/components/chips/chips.js +32 -0
- package/dist/components/chips/config.d.ts +1 -1
- package/dist/components/chips/config.js +82 -0
- package/dist/components/chips/constants.js +20 -0
- package/dist/components/chips/features/chip-items.d.ts +1 -1
- package/dist/components/chips/features/chip-items.js +17 -0
- package/dist/components/chips/features/container.d.ts +1 -1
- package/dist/components/chips/features/container.js +41 -0
- package/dist/components/chips/features/controller.d.ts +1 -1
- package/dist/components/chips/features/controller.js +309 -0
- package/dist/components/chips/features/dom.d.ts +2 -2
- package/dist/components/chips/features/dom.js +27 -0
- package/dist/components/chips/features/index.d.ts +5 -5
- package/dist/components/chips/features/index.js +5 -0
- package/dist/components/chips/features/label.d.ts +1 -1
- package/dist/components/chips/features/label.js +63 -0
- package/dist/components/chips/index.d.ts +3 -3
- package/dist/components/chips/index.js +2 -0
- package/dist/components/chips/schema.d.ts +1 -1
- package/dist/components/chips/schema.js +46 -0
- package/dist/components/chips/types.js +11 -0
- package/dist/components/datepicker/api.d.ts +1 -1
- package/dist/components/datepicker/api.js +180 -0
- package/dist/components/datepicker/config.d.ts +1 -1
- package/dist/components/datepicker/config.js +89 -0
- package/dist/components/datepicker/constants.js +50 -0
- package/dist/components/datepicker/datepicker.d.ts +1 -1
- package/dist/components/datepicker/datepicker.js +238 -0
- package/dist/components/datepicker/index.d.ts +3 -3
- package/dist/components/datepicker/index.js +2 -0
- package/dist/components/datepicker/render.js +290 -0
- package/dist/components/datepicker/types.js +18 -0
- package/dist/components/datepicker/utils.d.ts +1 -1
- package/dist/components/datepicker/utils.js +156 -0
- package/dist/components/dialog/api.d.ts +1 -1
- package/dist/components/dialog/api.js +106 -0
- package/dist/components/dialog/config.d.ts +2 -6
- package/dist/components/dialog/config.js +84 -0
- package/dist/components/dialog/constants.js +51 -0
- package/dist/components/dialog/dialog.d.ts +1 -1
- package/dist/components/dialog/dialog.js +25 -0
- package/dist/components/dialog/features.d.ts +1 -6
- package/dist/components/dialog/features.js +619 -0
- package/dist/components/dialog/index.d.ts +2 -2
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/dialog/types.d.ts +14 -3
- package/dist/components/dialog/types.js +1 -0
- package/dist/components/divider/config.js +9 -0
- package/dist/components/divider/constants.js +18 -0
- package/dist/components/divider/divider.d.ts +3 -3
- package/dist/components/divider/divider.js +11 -0
- package/dist/components/divider/features.d.ts +3 -3
- package/dist/components/divider/features.js +141 -0
- package/dist/components/divider/index.d.ts +3 -3
- package/dist/components/divider/index.js +2 -0
- package/dist/components/divider/types.d.ts +1 -1
- package/dist/components/divider/types.js +1 -0
- package/dist/components/drawer/api.d.ts +1 -1
- package/dist/components/drawer/api.js +73 -0
- package/dist/components/drawer/config.d.ts +3 -2
- package/dist/components/drawer/config.js +66 -0
- package/dist/components/drawer/constants.d.ts +2 -0
- package/dist/components/drawer/constants.js +46 -0
- package/dist/components/drawer/drawer.d.ts +1 -1
- package/dist/components/drawer/drawer.js +42 -0
- package/dist/components/drawer/features/headline.d.ts +1 -1
- package/dist/components/drawer/features/headline.js +36 -0
- package/dist/components/drawer/features/index.d.ts +3 -3
- package/dist/components/drawer/features/index.js +3 -0
- package/dist/components/drawer/features/items.d.ts +1 -1
- package/dist/components/drawer/features/items.js +215 -0
- package/dist/components/drawer/features/state.d.ts +2 -10
- package/dist/components/drawer/features/state.js +170 -0
- package/dist/components/drawer/index.d.ts +2 -2
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/drawer/types.d.ts +8 -2
- package/dist/components/drawer/types.js +1 -0
- package/dist/components/extended-fab/api.d.ts +1 -1
- package/dist/components/extended-fab/api.js +77 -0
- package/dist/components/extended-fab/config.d.ts +1 -1
- package/dist/components/extended-fab/config.js +73 -0
- package/dist/components/extended-fab/constants.d.ts +16 -4
- package/dist/components/extended-fab/constants.js +47 -0
- package/dist/components/extended-fab/extended-fab.d.ts +1 -1
- package/dist/components/extended-fab/extended-fab.js +59 -0
- package/dist/components/extended-fab/index.d.ts +2 -2
- package/dist/components/extended-fab/index.js +1 -0
- package/dist/components/extended-fab/types.d.ts +13 -6
- package/dist/components/extended-fab/types.js +1 -0
- package/dist/components/fab/api.d.ts +1 -1
- package/dist/components/fab/api.js +52 -0
- package/dist/components/fab/config.d.ts +1 -1
- package/dist/components/fab/config.js +53 -0
- package/dist/components/fab/constants.d.ts +18 -7
- package/dist/components/fab/constants.js +43 -0
- package/dist/components/fab/fab.d.ts +1 -1
- package/dist/components/fab/fab.js +17 -0
- package/dist/components/fab/index.d.ts +3 -3
- package/dist/components/fab/index.js +1 -0
- package/dist/components/fab/types.d.ts +10 -9
- package/dist/components/fab/types.js +1 -0
- package/dist/components/icon-button/api.d.ts +1 -1
- package/dist/components/icon-button/api.js +204 -0
- package/dist/components/icon-button/config.d.ts +1 -1
- package/dist/components/icon-button/config.js +91 -0
- package/dist/components/icon-button/constants.d.ts +21 -21
- package/dist/components/icon-button/constants.js +67 -0
- package/dist/components/icon-button/features/toggle.d.ts +1 -1
- package/dist/components/icon-button/features/toggle.js +122 -0
- package/dist/components/icon-button/icon-button.d.ts +1 -1
- package/dist/components/icon-button/icon-button.js +24 -0
- package/dist/components/icon-button/index.d.ts +4 -4
- package/dist/components/icon-button/index.js +2 -0
- package/dist/components/icon-button/types.d.ts +2 -2
- package/dist/components/icon-button/types.js +1 -0
- package/dist/components/index.d.ts +83 -69
- package/dist/components/index.js +41 -0
- package/dist/components/list/api.js +53 -0
- package/dist/components/list/config.d.ts +2 -2
- package/dist/components/list/config.js +80 -0
- package/dist/components/list/constants.js +35 -0
- package/dist/components/list/features/index.d.ts +2 -2
- package/dist/components/list/features/index.js +2 -0
- package/dist/components/list/features/renderer.js +120 -0
- package/dist/components/list/features/selection.js +160 -0
- package/dist/components/list/index.d.ts +3 -3
- package/dist/components/list/index.js +2 -0
- package/dist/components/list/list.js +19 -0
- package/dist/components/list/types.js +1 -0
- package/dist/components/loading-indicator/api.d.ts +14 -0
- package/dist/components/loading-indicator/api.js +122 -0
- package/dist/components/loading-indicator/config.d.ts +44 -0
- package/dist/components/loading-indicator/config.js +25 -0
- package/dist/components/loading-indicator/constants.d.ts +60 -0
- package/dist/components/loading-indicator/constants.js +32 -0
- package/dist/components/loading-indicator/features/motion.d.ts +22 -0
- package/dist/components/loading-indicator/features/motion.js +47 -0
- package/dist/components/loading-indicator/features/renderer.d.ts +29 -0
- package/dist/components/loading-indicator/features/renderer.js +115 -0
- package/dist/components/loading-indicator/index.d.ts +3 -0
- package/dist/components/loading-indicator/index.js +2 -0
- package/dist/components/loading-indicator/loading-indicator.d.ts +9 -0
- package/dist/components/loading-indicator/loading-indicator.js +17 -0
- package/dist/components/loading-indicator/types.d.ts +65 -0
- package/dist/components/loading-indicator/types.js +1 -0
- package/dist/components/menu/api.d.ts +1 -1
- package/dist/components/menu/api.js +79 -0
- package/dist/components/menu/config.d.ts +1 -1
- package/dist/components/menu/config.js +82 -0
- package/dist/components/menu/constants.d.ts +32 -0
- package/dist/components/menu/constants.js +61 -0
- package/dist/components/menu/features/controller.d.ts +1 -1
- package/dist/components/menu/features/controller.js +542 -0
- package/dist/components/menu/features/index.d.ts +5 -5
- package/dist/components/menu/features/index.js +6 -0
- package/dist/components/menu/features/keyboard.d.ts +3 -1
- package/dist/components/menu/features/keyboard.js +296 -0
- package/dist/components/menu/features/opener.d.ts +1 -1
- package/dist/components/menu/features/opener.js +300 -0
- package/dist/components/menu/features/position.d.ts +1 -1
- package/dist/components/menu/features/position.js +276 -0
- package/dist/components/menu/features/registry.d.ts +37 -0
- package/dist/components/menu/features/registry.js +13 -0
- package/dist/components/menu/features/submenu.d.ts +1 -1
- package/dist/components/menu/features/submenu.js +386 -0
- package/dist/components/menu/features/tasks.d.ts +9 -0
- package/dist/components/menu/features/tasks.js +47 -0
- package/dist/components/menu/index.d.ts +3 -3
- package/dist/components/menu/index.js +2 -0
- package/dist/components/menu/menu.d.ts +1 -1
- package/dist/components/menu/menu.js +25 -0
- package/dist/components/menu/types.d.ts +46 -3
- package/dist/components/menu/types.js +14 -0
- package/dist/components/navigation/api.d.ts +1 -1
- package/dist/components/navigation/api.js +117 -0
- package/dist/components/navigation/config.d.ts +1 -1
- package/dist/components/navigation/config.js +39 -0
- package/dist/components/navigation/constants.js +65 -0
- package/dist/components/navigation/features/controller.d.ts +1 -1
- package/dist/components/navigation/features/controller.js +173 -0
- package/dist/components/navigation/features/items.d.ts +2 -2
- package/dist/components/navigation/features/items.js +236 -0
- package/dist/components/navigation/index.d.ts +3 -3
- package/dist/components/navigation/index.js +2 -0
- package/dist/components/navigation/nav-item.d.ts +1 -1
- package/dist/components/navigation/nav-item.js +118 -0
- package/dist/components/navigation/navigation.d.ts +1 -1
- package/dist/components/navigation/navigation.js +52 -0
- package/dist/components/navigation/system/core.d.ts +1 -1
- package/dist/components/navigation/system/core.js +148 -0
- package/dist/components/navigation/system/events.d.ts +1 -1
- package/dist/components/navigation/system/events.js +126 -0
- package/dist/components/navigation/system/index.d.ts +2 -2
- package/dist/components/navigation/system/index.js +92 -0
- package/dist/components/navigation/system/mobile.d.ts +1 -1
- package/dist/components/navigation/system/mobile.js +139 -0
- package/dist/components/navigation/system/state.d.ts +1 -1
- package/dist/components/navigation/system/state.js +44 -0
- package/dist/components/navigation/system/types.js +1 -0
- package/dist/components/navigation/types.js +33 -0
- package/dist/components/navigation-rail/config.d.ts +2 -0
- package/dist/components/navigation-rail/config.js +15 -0
- package/dist/components/navigation-rail/constants.d.ts +14 -0
- package/dist/components/navigation-rail/constants.js +12 -0
- package/dist/components/navigation-rail/index.d.ts +2 -0
- package/dist/components/navigation-rail/index.js +1 -0
- package/dist/components/navigation-rail/navigation-rail.d.ts +7 -0
- package/dist/components/navigation-rail/navigation-rail.js +341 -0
- package/dist/components/navigation-rail/ripple.d.ts +2 -0
- package/dist/components/navigation-rail/ripple.js +41 -0
- package/dist/components/navigation-rail/types.d.ts +72 -0
- package/dist/components/navigation-rail/types.js +1 -0
- package/dist/components/progress/api.d.ts +3 -3
- package/dist/components/progress/api.js +205 -0
- package/dist/components/progress/config.d.ts +1 -1
- package/dist/components/progress/config.js +162 -0
- package/dist/components/progress/constants.d.ts +103 -84
- package/dist/components/progress/constants.js +110 -0
- package/dist/components/progress/features/canvas.d.ts +18 -29
- package/dist/components/progress/features/canvas.js +300 -0
- package/dist/components/progress/features/circular.d.ts +17 -7
- package/dist/components/progress/features/circular.js +71 -0
- package/dist/components/progress/features/colors.d.ts +16 -0
- package/dist/components/progress/features/colors.js +40 -0
- package/dist/components/progress/features/index.d.ts +4 -4
- package/dist/components/progress/features/index.js +4 -0
- package/dist/components/progress/features/linear.d.ts +23 -7
- package/dist/components/progress/features/linear.js +104 -0
- package/dist/components/progress/features/motion.d.ts +43 -0
- package/dist/components/progress/features/motion.js +105 -0
- package/dist/components/progress/features/resize-observer.js +40 -0
- package/dist/components/progress/features/state.d.ts +1 -1
- package/dist/components/progress/features/state.js +37 -0
- package/dist/components/progress/index.d.ts +2 -2
- package/dist/components/progress/index.js +1 -0
- package/dist/components/progress/progress.d.ts +1 -1
- package/dist/components/progress/progress.js +21 -0
- package/dist/components/progress/types.d.ts +19 -2
- package/dist/components/progress/types.js +1 -0
- package/dist/components/radios/api.d.ts +1 -1
- package/dist/components/radios/api.js +73 -0
- package/dist/components/radios/config.d.ts +1 -1
- package/dist/components/radios/config.js +28 -0
- package/dist/components/radios/constants.js +53 -0
- package/dist/components/radios/index.d.ts +3 -3
- package/dist/components/radios/index.js +2 -0
- package/dist/components/radios/radio.d.ts +1 -1
- package/dist/components/radios/radio.js +186 -0
- package/dist/components/radios/radios.d.ts +1 -1
- package/dist/components/radios/radios.js +21 -0
- package/dist/components/radios/types.js +1 -0
- package/dist/components/search/api.d.ts +1 -1
- package/dist/components/search/api.js +110 -0
- package/dist/components/search/config.d.ts +1 -1
- package/dist/components/search/config.js +66 -0
- package/dist/components/search/constants.js +84 -0
- package/dist/components/search/features/index.d.ts +4 -4
- package/dist/components/search/features/index.js +4 -0
- package/dist/components/search/features/input.d.ts +1 -1
- package/dist/components/search/features/input.js +245 -0
- package/dist/components/search/features/states.d.ts +1 -1
- package/dist/components/search/features/states.js +182 -0
- package/dist/components/search/features/structure.d.ts +1 -1
- package/dist/components/search/features/structure.js +165 -0
- package/dist/components/search/features/suggestions.d.ts +1 -1
- package/dist/components/search/features/suggestions.js +223 -0
- package/dist/components/search/index.d.ts +2 -2
- package/dist/components/search/index.js +1 -0
- package/dist/components/search/search.d.ts +1 -1
- package/dist/components/search/search.js +27 -0
- package/dist/components/search/types.js +1 -0
- package/dist/components/segmented-button/config.d.ts +1 -8
- package/dist/components/segmented-button/config.js +54 -0
- package/dist/components/segmented-button/constants.js +40 -0
- package/dist/components/segmented-button/index.d.ts +3 -3
- package/dist/components/segmented-button/index.js +2 -0
- package/dist/components/segmented-button/segment.d.ts +2 -1
- package/dist/components/segmented-button/segment.js +94 -0
- package/dist/components/segmented-button/segmented-button.d.ts +12 -1
- package/dist/components/segmented-button/segmented-button.js +195 -0
- package/dist/components/segmented-button/types.d.ts +11 -11
- package/dist/components/segmented-button/types.js +11 -0
- package/dist/components/select/api.d.ts +1 -1
- package/dist/components/select/api.js +89 -0
- package/dist/components/select/config.d.ts +1 -1
- package/dist/components/select/config.js +54 -0
- package/dist/components/select/constants.js +53 -0
- package/dist/components/select/features.d.ts +1 -1
- package/dist/components/select/features.js +246 -0
- package/dist/components/select/index.d.ts +3 -3
- package/dist/components/select/index.js +2 -0
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/select/select.js +26 -0
- package/dist/components/select/types.d.ts +21 -0
- package/dist/components/select/types.js +4 -0
- package/dist/components/side-sheet/api.d.ts +33 -0
- package/dist/components/side-sheet/api.js +50 -0
- package/dist/components/side-sheet/config.d.ts +34 -0
- package/dist/components/side-sheet/config.js +20 -0
- package/dist/components/side-sheet/constants.d.ts +60 -0
- package/dist/components/side-sheet/constants.js +32 -0
- package/dist/components/side-sheet/features/index.d.ts +2 -0
- package/dist/components/side-sheet/features/index.js +2 -0
- package/dist/components/side-sheet/features/state.d.ts +28 -0
- package/dist/components/side-sheet/features/state.js +67 -0
- package/dist/components/side-sheet/features/structure.d.ts +21 -0
- package/dist/components/side-sheet/features/structure.js +97 -0
- package/dist/components/side-sheet/index.d.ts +2 -0
- package/dist/components/side-sheet/index.js +1 -0
- package/dist/components/side-sheet/side-sheet.d.ts +24 -0
- package/dist/components/side-sheet/side-sheet.js +17 -0
- package/dist/components/side-sheet/types.d.ts +102 -0
- package/dist/components/side-sheet/types.js +1 -0
- package/dist/components/slider/api.d.ts +2 -2
- package/dist/components/slider/api.js +104 -0
- package/dist/components/slider/config.d.ts +1 -1
- package/dist/components/slider/config.js +106 -0
- package/dist/components/slider/constants.js +74 -0
- package/dist/components/slider/features/controller.d.ts +1 -1
- package/dist/components/slider/features/controller.js +291 -0
- package/dist/components/slider/features/dom.d.ts +2 -2
- package/dist/components/slider/features/dom.js +113 -0
- package/dist/components/slider/features/handlers.d.ts +1 -1
- package/dist/components/slider/features/handlers.js +389 -0
- package/dist/components/slider/features/index.d.ts +5 -5
- package/dist/components/slider/features/index.js +5 -0
- package/dist/components/slider/features/range.d.ts +1 -1
- package/dist/components/slider/features/range.js +70 -0
- package/dist/components/slider/features/states.d.ts +1 -1
- package/dist/components/slider/features/states.js +119 -0
- package/dist/components/slider/features/tracks.d.ts +13 -0
- package/dist/components/slider/features/tracks.js +174 -0
- package/dist/components/slider/index.d.ts +2 -2
- package/dist/components/slider/index.js +1 -0
- package/dist/components/slider/slider.d.ts +2 -2
- package/dist/components/slider/slider.js +27 -0
- package/dist/components/slider/types.d.ts +4 -3
- package/dist/components/slider/types.js +2 -0
- package/dist/components/snackbar/api.d.ts +2 -2
- package/dist/components/snackbar/api.js +173 -0
- package/dist/components/snackbar/config.d.ts +26 -11
- package/dist/components/snackbar/config.js +33 -0
- package/dist/components/snackbar/constants.d.ts +73 -47
- package/dist/components/snackbar/constants.js +60 -0
- package/dist/components/snackbar/features.d.ts +17 -4
- package/dist/components/snackbar/features.js +125 -0
- package/dist/components/snackbar/index.d.ts +4 -4
- package/dist/components/snackbar/index.js +3 -0
- package/dist/components/snackbar/position.d.ts +3 -2
- package/dist/components/snackbar/position.js +24 -0
- package/dist/components/snackbar/queue.d.ts +1 -1
- package/dist/components/snackbar/queue.js +79 -0
- package/dist/components/snackbar/snackbar.d.ts +1 -1
- package/dist/components/snackbar/snackbar.js +25 -0
- package/dist/components/snackbar/types.d.ts +56 -57
- package/dist/components/snackbar/types.js +1 -0
- package/dist/components/split-button/api.d.ts +14 -0
- package/dist/components/split-button/api.js +122 -0
- package/dist/components/split-button/config.d.ts +40 -0
- package/dist/components/split-button/config.js +19 -0
- package/dist/components/split-button/constants.d.ts +67 -0
- package/dist/components/split-button/constants.js +35 -0
- package/dist/components/split-button/features/buttons.d.ts +7 -0
- package/dist/components/split-button/features/buttons.js +39 -0
- package/dist/components/split-button/features/menu.d.ts +7 -0
- package/dist/components/split-button/features/menu.js +19 -0
- package/dist/components/split-button/index.d.ts +3 -0
- package/dist/components/split-button/index.js +2 -0
- package/dist/components/split-button/split-button.d.ts +24 -0
- package/dist/components/split-button/split-button.js +21 -0
- package/dist/components/split-button/types.d.ts +116 -0
- package/dist/components/split-button/types.js +1 -0
- package/dist/components/switch/api.d.ts +1 -1
- package/dist/components/switch/api.js +91 -0
- package/dist/components/switch/config.d.ts +1 -1
- package/dist/components/switch/config.js +27 -0
- package/dist/components/switch/constants.js +39 -0
- package/dist/components/switch/features.d.ts +3 -3
- package/dist/components/switch/features.js +101 -0
- package/dist/components/switch/index.d.ts +5 -4
- package/dist/components/switch/index.js +3 -0
- package/dist/components/switch/switch.d.ts +1 -1
- package/dist/components/switch/switch.js +18 -0
- package/dist/components/switch/types.js +4 -0
- package/dist/components/tabs/api.d.ts +1 -1
- package/dist/components/tabs/api.js +98 -0
- package/dist/components/tabs/config.d.ts +2 -2
- package/dist/components/tabs/config.js +42 -0
- package/dist/components/tabs/constants.js +62 -0
- package/dist/components/tabs/features.d.ts +2 -2
- package/dist/components/tabs/features.js +179 -0
- package/dist/components/tabs/index.d.ts +10 -9
- package/dist/components/tabs/index.js +10 -0
- package/dist/components/tabs/indicator.d.ts +1 -1
- package/dist/components/tabs/indicator.js +134 -0
- package/dist/components/tabs/responsive.d.ts +1 -1
- package/dist/components/tabs/responsive.js +72 -0
- package/dist/components/tabs/scroll-indicators.d.ts +1 -1
- package/dist/components/tabs/scroll-indicators.js +83 -0
- package/dist/components/tabs/state.d.ts +2 -2
- package/dist/components/tabs/state.js +84 -0
- package/dist/components/tabs/tab-api.d.ts +2 -2
- package/dist/components/tabs/tab-api.js +139 -0
- package/dist/components/tabs/tab.d.ts +1 -1
- package/dist/components/tabs/tab.js +185 -0
- package/dist/components/tabs/tabs.d.ts +1 -1
- package/dist/components/tabs/tabs.js +22 -0
- package/dist/components/tabs/types.d.ts +2 -2
- package/dist/components/tabs/types.js +1 -0
- package/dist/components/tabs/utils.d.ts +1 -1
- package/dist/components/tabs/utils.js +67 -0
- package/dist/components/textfield/api.d.ts +2 -1
- package/dist/components/textfield/api.js +190 -0
- package/dist/components/textfield/config.d.ts +1 -1
- package/dist/components/textfield/config.js +21 -0
- package/dist/components/textfield/constants.js +63 -0
- package/dist/components/textfield/features/density.d.ts +1 -1
- package/dist/components/textfield/features/density.js +38 -0
- package/dist/components/textfield/features/error.d.ts +1 -1
- package/dist/components/textfield/features/error.js +35 -0
- package/dist/components/textfield/features/index.d.ts +14 -14
- package/dist/components/textfield/features/index.js +8 -0
- package/dist/components/textfield/features/leading-icon.d.ts +1 -1
- package/dist/components/textfield/features/leading-icon.js +55 -0
- package/dist/components/textfield/features/placement.d.ts +3 -1
- package/dist/components/textfield/features/placement.js +184 -0
- package/dist/components/textfield/features/prefix-text.d.ts +1 -1
- package/dist/components/textfield/features/prefix-text.js +38 -0
- package/dist/components/textfield/features/suffix-text.d.ts +1 -1
- package/dist/components/textfield/features/suffix-text.js +34 -0
- package/dist/components/textfield/features/supporting-text.d.ts +1 -1
- package/dist/components/textfield/features/supporting-text.js +58 -0
- package/dist/components/textfield/features/trailing-icon.d.ts +1 -1
- package/dist/components/textfield/features/trailing-icon.js +40 -0
- package/dist/components/textfield/index.d.ts +2 -2
- package/dist/components/textfield/index.js +1 -0
- package/dist/components/textfield/textfield.d.ts +1 -1
- package/dist/components/textfield/textfield.js +18 -0
- package/dist/components/textfield/types.js +18 -0
- package/dist/components/timepicker/api.d.ts +1 -1
- package/dist/components/timepicker/api.js +426 -0
- package/dist/components/timepicker/clockdial.d.ts +1 -1
- package/dist/components/timepicker/clockdial.js +277 -0
- package/dist/components/timepicker/config.d.ts +1 -1
- package/dist/components/timepicker/config.js +81 -0
- package/dist/components/timepicker/constants.js +135 -0
- package/dist/components/timepicker/index.d.ts +4 -4
- package/dist/components/timepicker/index.js +3 -0
- package/dist/components/timepicker/render.d.ts +1 -1
- package/dist/components/timepicker/render.js +476 -0
- package/dist/components/timepicker/timepicker.d.ts +1 -1
- package/dist/components/timepicker/timepicker.js +68 -0
- package/dist/components/timepicker/types.js +20 -0
- package/dist/components/timepicker/utils.d.ts +1 -1
- package/dist/components/timepicker/utils.js +131 -0
- package/dist/components/tooltip/api.d.ts +1 -1
- package/dist/components/tooltip/api.js +293 -0
- package/dist/components/tooltip/config.d.ts +1 -1
- package/dist/components/tooltip/config.js +38 -0
- package/dist/components/tooltip/constants.js +49 -0
- package/dist/components/tooltip/index.d.ts +3 -3
- package/dist/components/tooltip/index.js +2 -0
- package/dist/components/tooltip/tooltip.d.ts +1 -1
- package/dist/components/tooltip/tooltip.js +31 -0
- package/dist/components/tooltip/types.js +23 -0
- package/dist/components/top-app-bar/config.d.ts +1 -1
- package/dist/components/top-app-bar/config.js +10 -0
- package/dist/components/top-app-bar/constants.js +33 -0
- package/dist/components/top-app-bar/index.d.ts +3 -3
- package/dist/components/top-app-bar/index.js +4 -0
- package/dist/components/top-app-bar/top-app-bar.d.ts +2 -2
- package/dist/components/top-app-bar/top-app-bar.js +155 -0
- package/dist/components/top-app-bar/types.d.ts +1 -1
- package/dist/components/top-app-bar/types.js +1 -0
- package/dist/core/canvas/animation.js +36 -0
- package/dist/core/canvas/drawing.js +62 -0
- package/dist/core/canvas/index.d.ts +4 -4
- package/dist/core/canvas/index.js +4 -0
- package/dist/core/canvas/resize.js +35 -0
- package/dist/core/canvas/utils.d.ts +5 -4
- package/dist/core/canvas/utils.js +116 -0
- package/dist/core/compose/base.js +7 -0
- package/dist/core/compose/cleanup.d.ts +14 -0
- package/dist/core/compose/cleanup.js +51 -0
- package/dist/core/compose/component.d.ts +2 -0
- package/dist/core/compose/component.js +144 -0
- package/dist/core/compose/features/badge.d.ts +1 -1
- package/dist/core/compose/features/badge.js +20 -0
- package/dist/core/compose/features/checkable.d.ts +1 -1
- package/dist/core/compose/features/checkable.js +55 -0
- package/dist/core/compose/features/constants.js +36 -0
- package/dist/core/compose/features/debounce.d.ts +1 -1
- package/dist/core/compose/features/debounce.js +44 -0
- package/dist/core/compose/features/disabled.d.ts +1 -1
- package/dist/core/compose/features/disabled.js +63 -0
- package/dist/core/compose/features/events.d.ts +1 -1
- package/dist/core/compose/features/events.js +23 -0
- package/dist/core/compose/features/icon.d.ts +1 -1
- package/dist/core/compose/features/icon.js +70 -0
- package/dist/core/compose/features/index.d.ts +34 -34
- package/dist/core/compose/features/index.js +19 -0
- package/dist/core/compose/features/input.d.ts +1 -1
- package/dist/core/compose/features/input.js +67 -0
- package/dist/core/compose/features/lifecycle.d.ts +1 -1
- package/dist/core/compose/features/lifecycle.js +82 -0
- package/dist/core/compose/features/position.d.ts +1 -1
- package/dist/core/compose/features/position.js +36 -0
- package/dist/core/compose/features/ripple.d.ts +8 -8
- package/dist/core/compose/features/ripple.js +87 -0
- package/dist/core/compose/features/size.d.ts +1 -1
- package/dist/core/compose/features/size.js +7 -0
- package/dist/core/compose/features/style.d.ts +1 -1
- package/dist/core/compose/features/style.js +9 -0
- package/dist/core/compose/features/text.d.ts +1 -1
- package/dist/core/compose/features/text.js +47 -0
- package/dist/core/compose/features/textinput.d.ts +1 -1
- package/dist/core/compose/features/textinput.js +162 -0
- package/dist/core/compose/features/textlabel.d.ts +1 -1
- package/dist/core/compose/features/textlabel.js +44 -0
- package/dist/core/compose/features/throttle.d.ts +1 -1
- package/dist/core/compose/features/throttle.js +44 -0
- package/dist/core/compose/features/track.d.ts +1 -1
- package/dist/core/compose/features/track.js +23 -0
- package/dist/core/compose/features/variant.d.ts +1 -1
- package/dist/core/compose/features/variant.js +7 -0
- package/dist/core/compose/features/withEvents.d.ts +1 -1
- package/dist/core/compose/features/withEvents.js +46 -0
- package/dist/core/compose/index.d.ts +9 -9
- package/dist/core/compose/index.js +5 -0
- package/dist/core/compose/pipe.js +6 -0
- package/dist/core/compose/utils/type-guards.d.ts +1 -1
- package/dist/core/compose/utils/type-guards.js +10 -0
- package/dist/core/config/component.js +71 -0
- package/dist/core/config/global.d.ts +4 -2
- package/dist/core/config/global.js +15 -0
- package/dist/core/config.js +72 -0
- package/dist/core/dom/attributes.js +39 -0
- package/dist/core/dom/classes.js +207 -0
- package/dist/core/dom/create.js +250 -0
- package/dist/core/dom/events.js +82 -0
- package/dist/core/dom/index.d.ts +6 -6
- package/dist/core/dom/index.js +4 -0
- package/dist/core/dom/utils.d.ts +1 -1
- package/dist/core/dom/utils.js +45 -0
- package/dist/core/index.d.ts +20 -20
- package/dist/core/index.js +13 -0
- package/dist/core/shapes/cubic.d.ts +30 -0
- package/dist/core/shapes/cubic.js +62 -0
- package/dist/core/shapes/index.d.ts +6 -0
- package/dist/core/shapes/index.js +3 -0
- package/dist/core/shapes/material.d.ts +24 -0
- package/dist/core/shapes/material.js +119 -0
- package/dist/core/shapes/polygon.d.ts +35 -0
- package/dist/core/shapes/polygon.js +221 -0
- package/dist/core/state/disabled.js +26 -0
- package/dist/core/state/emitter.js +24 -0
- package/dist/core/state/events.js +32 -0
- package/dist/core/state/index.d.ts +10 -10
- package/dist/core/state/index.js +5 -0
- package/dist/core/state/lifecycle.js +51 -0
- package/dist/core/state/store.js +61 -0
- package/dist/core/utils/background.js +35 -0
- package/dist/core/utils/color.js +23 -0
- package/dist/core/utils/index.d.ts +6 -6
- package/dist/core/utils/index.js +8 -0
- package/dist/core/utils/mobile.js +63 -0
- package/dist/core/utils/object.js +21 -0
- package/dist/core/utils/performance.d.ts +5 -2
- package/dist/core/utils/performance.js +117 -0
- package/dist/core/utils/theme.js +78 -0
- package/dist/core/utils/validate.js +113 -0
- package/dist/index.cjs +12 -18
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -57
- package/dist/package.json +40 -11
- package/dist/styles/badge.css +2 -0
- package/dist/styles/badge.d.ts +1 -0
- package/dist/styles/badge.js +2 -0
- package/dist/styles/base.css +2 -0
- package/dist/styles/base.d.ts +1 -0
- package/dist/styles/base.js +2 -0
- package/dist/styles/bottom-app-bar.css +2 -0
- package/dist/styles/bottom-app-bar.d.ts +1 -0
- package/dist/styles/bottom-app-bar.js +2 -0
- package/dist/styles/bottom-sheet.css +2 -0
- package/dist/styles/bottom-sheet.d.ts +1 -0
- package/dist/styles/bottom-sheet.js +2 -0
- package/dist/styles/button-group.css +2 -0
- package/dist/styles/button-group.d.ts +1 -0
- package/dist/styles/button-group.js +3 -0
- package/dist/styles/button.css +2 -0
- package/dist/styles/button.d.ts +1 -0
- package/dist/styles/button.js +2 -0
- package/dist/styles/card.css +2 -0
- package/dist/styles/card.d.ts +1 -0
- package/dist/styles/card.js +2 -0
- package/dist/styles/carousel.css +2 -0
- package/dist/styles/carousel.d.ts +1 -0
- package/dist/styles/carousel.js +2 -0
- package/dist/styles/checkbox.css +2 -0
- package/dist/styles/checkbox.d.ts +1 -0
- package/dist/styles/checkbox.js +2 -0
- package/dist/styles/chips.css +2 -0
- package/dist/styles/chips.d.ts +1 -0
- package/dist/styles/chips.js +2 -0
- package/dist/styles/dialog.css +2 -0
- package/dist/styles/dialog.d.ts +1 -0
- package/dist/styles/dialog.js +3 -0
- package/dist/styles/divider.css +2 -0
- package/dist/styles/divider.d.ts +1 -0
- package/dist/styles/divider.js +2 -0
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/drawer.d.ts +1 -0
- package/dist/styles/drawer.js +2 -0
- package/dist/styles/extended-fab.css +2 -0
- package/dist/styles/extended-fab.d.ts +1 -0
- package/dist/styles/extended-fab.js +2 -0
- package/dist/styles/fab.css +2 -0
- package/dist/styles/fab.d.ts +1 -0
- package/dist/styles/fab.js +2 -0
- package/dist/styles/icon-button.css +2 -0
- package/dist/styles/icon-button.d.ts +1 -0
- package/dist/styles/icon-button.js +2 -0
- package/dist/styles/list.css +2 -0
- package/dist/styles/list.d.ts +1 -0
- package/dist/styles/list.js +2 -0
- package/dist/styles/loading-indicator.css +2 -0
- package/dist/styles/loading-indicator.d.ts +1 -0
- package/dist/styles/loading-indicator.js +2 -0
- package/dist/styles/menu.css +2 -0
- package/dist/styles/menu.d.ts +1 -0
- package/dist/styles/menu.js +2 -0
- package/dist/styles/navigation-rail.css +2 -0
- package/dist/styles/navigation-rail.d.ts +1 -0
- package/dist/styles/navigation-rail.js +2 -0
- package/dist/styles/navigation.css +2 -0
- package/dist/styles/navigation.d.ts +1 -0
- package/dist/styles/navigation.js +2 -0
- package/dist/styles/progress.css +2 -0
- package/dist/styles/progress.d.ts +1 -0
- package/dist/styles/progress.js +2 -0
- package/dist/styles/radios.css +2 -0
- package/dist/styles/radios.d.ts +1 -0
- package/dist/styles/radios.js +2 -0
- package/dist/styles/search.css +2 -0
- package/dist/styles/search.d.ts +1 -0
- package/dist/styles/search.js +2 -0
- package/dist/styles/segmented-button.css +2 -0
- package/dist/styles/segmented-button.d.ts +1 -0
- package/dist/styles/segmented-button.js +2 -0
- package/dist/styles/select.css +2 -0
- package/dist/styles/select.d.ts +1 -0
- package/dist/styles/select.js +3 -0
- package/dist/styles/side-sheet.css +2 -0
- package/dist/styles/side-sheet.d.ts +1 -0
- package/dist/styles/side-sheet.js +2 -0
- package/dist/styles/slider.css +2 -0
- package/dist/styles/slider.d.ts +1 -0
- package/dist/styles/slider.js +2 -0
- package/dist/styles/snackbar.css +2 -0
- package/dist/styles/snackbar.d.ts +1 -0
- package/dist/styles/snackbar.js +3 -0
- package/dist/styles/split-button.css +2 -0
- package/dist/styles/split-button.d.ts +1 -0
- package/dist/styles/split-button.js +3 -0
- package/dist/styles/switch.css +2 -0
- package/dist/styles/switch.d.ts +1 -0
- package/dist/styles/switch.js +2 -0
- package/dist/styles/tabs.css +2 -0
- package/dist/styles/tabs.d.ts +1 -0
- package/dist/styles/tabs.js +3 -0
- package/dist/styles/textfield.css +2 -0
- package/dist/styles/textfield.d.ts +1 -0
- package/dist/styles/textfield.js +2 -0
- package/dist/styles/timepicker.css +2 -0
- package/dist/styles/timepicker.d.ts +1 -0
- package/dist/styles/timepicker.js +2 -0
- package/dist/styles/top-app-bar.css +2 -0
- package/dist/styles/top-app-bar.d.ts +1 -0
- package/dist/styles/top-app-bar.js +2 -0
- package/dist/styles/utilities.css +2 -0
- package/dist/styles/utilities.d.ts +1 -0
- package/dist/styles/utilities.js +2 -0
- package/dist/styles.css +2 -7
- package/dist/themes/autumn.css +2 -0
- package/dist/themes/baseline.css +2 -0
- package/dist/themes/brownbeige.css +2 -0
- package/dist/themes/browngreen.css +2 -0
- package/dist/themes/desert.css +2 -0
- package/dist/themes/forest.css +2 -0
- package/dist/themes/highcontrast.css +2 -0
- package/dist/themes/legacy.css +2 -0
- package/dist/themes/material.css +2 -0
- package/dist/themes/ocean.css +2 -0
- package/dist/themes/sageivory.css +2 -0
- package/dist/themes/spring.css +2 -0
- package/dist/themes/summer.css +2 -0
- package/dist/themes/sunset.css +2 -0
- package/dist/themes/tealcaramel.css +2 -0
- package/dist/themes/winter.css +2 -0
- package/package.json +44 -7
- package/src/styles/abstract/_variables.scss +18 -2
- package/src/styles/base/_document.scss +54 -0
- package/src/styles/components/_bottom-sheet.scss +167 -0
- package/src/styles/components/_button-group.scss +58 -38
- package/src/styles/components/_button.scss +9 -3
- package/src/styles/components/_card.scss +79 -20
- package/src/styles/components/_carousel.scss +3 -3
- package/src/styles/components/_chips.scss +2 -2
- package/src/styles/components/_dialog.scss +86 -22
- package/src/styles/components/_drawer.scss +85 -95
- package/src/styles/components/_extended-fab.scss +95 -111
- package/src/styles/components/_fab.scss +70 -87
- package/src/styles/components/_icon-button.scss +115 -104
- package/src/styles/components/_list.scss +2 -2
- package/src/styles/components/_loading-indicator.scss +41 -0
- package/src/styles/components/_menu.scss +324 -16
- package/src/styles/components/_navigation-rail.scss +307 -0
- package/src/styles/components/_navigation-system.scss +3 -1
- package/src/styles/components/_progress.scss +46 -53
- package/src/styles/components/_segmented-button.scss +71 -113
- package/src/styles/components/_side-sheet.scss +175 -0
- package/src/styles/components/_slider.scss +50 -20
- package/src/styles/components/_snackbar.scss +153 -167
- package/src/styles/components/_split-button.scss +229 -0
- package/src/styles/components/_textfield.scss +4 -1
- package/src/styles/main.scss +6 -51
- package/src/styles/themes/_baseline.scss +8 -0
- package/src/styles/utilities/_ripple.scss +12 -3
- package/dist/components/sheet/api.d.ts +0 -37
- package/dist/components/sheet/config.d.ts +0 -53
- package/dist/components/sheet/constants.d.ts +0 -136
- package/dist/components/sheet/features/content.d.ts +0 -6
- package/dist/components/sheet/features/gestures.d.ts +0 -6
- package/dist/components/sheet/features/index.d.ts +0 -5
- package/dist/components/sheet/features/position.d.ts +0 -7
- package/dist/components/sheet/features/state.d.ts +0 -6
- package/dist/components/sheet/features/title.d.ts +0 -6
- package/dist/components/sheet/index.d.ts +0 -3
- package/dist/components/sheet/sheet.d.ts +0 -8
- package/dist/components/sheet/types.d.ts +0 -250
- package/dist/components/slider/features/canvas.d.ts +0 -47
- package/dist/index.cjs.map +0 -269
- package/dist/index.js.map +0 -269
- package/src/styles/components/_sheet.scss +0 -236
package/README.md
CHANGED
|
@@ -1,364 +1,193 @@
|
|
|
1
|
-
# mtrl
|
|
1
|
+
# mtrl
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Material Design 3 components for the web, written in TypeScript with zero dependencies.
|
|
4
4
|
|
|
5
|
-
mtrl
|
|
5
|
+
mtrl implements the M3 expressive update: component sizes, shapes, colours and spring motion follow the Material 3 tokens. Each component is a plain function that returns a DOM element and a small API, so mtrl works with any framework or none. The documentation site, [mtrl.app](https://mtrl.app), shows every component with live examples.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Quick start
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
### Design Philosophy
|
|
12
|
-
|
|
13
|
-
mtrl is built on several core principles:
|
|
14
|
-
|
|
15
|
-
1. **Composition Over Inheritance**: Components are constructed through functional composition with full type safety.
|
|
16
|
-
2. **Zero Dependencies**: The entire library is built with vanilla TypeScript, ensuring minimal bundle size and maximum compatibility.
|
|
17
|
-
3. **Material Design Inspiration**: While inspired by Material Design, mtrl provides flexibility in styling and behavior.
|
|
18
|
-
4. **Accessibility First**: Built-in accessibility features ensure your applications are usable by everyone.
|
|
19
|
-
5. **TypeScript First**: Comprehensive type definitions for better developer experience and code reliability.
|
|
20
|
-
|
|
21
|
-
## Core Components
|
|
22
|
-
|
|
23
|
-
mtrl provides a comprehensive set of components, each following Material Design principles:
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { createButton, createTextField } from "mtrl";
|
|
27
|
-
|
|
28
|
-
// Create a material button with ripple effect
|
|
29
|
-
const button = createButton({
|
|
30
|
-
text: "Submit",
|
|
31
|
-
variant: "filled",
|
|
32
|
-
ripple: true,
|
|
33
|
-
class: "custom-button",
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
// className will be: mtrl-button mtrl-button--filled custom-button
|
|
9
|
+
```bash
|
|
10
|
+
npm install mtrl
|
|
37
11
|
```
|
|
38
12
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
```typescript
|
|
14
|
+
import 'mtrl/styles';
|
|
15
|
+
import { createButton, createTextfield } from 'mtrl';
|
|
42
16
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- `mtrl-navigation` - Navigation components
|
|
47
|
-
- `mtrl-list` - List components with selection
|
|
48
|
-
- `mtrl-snackbar` - Toast notifications
|
|
49
|
-
- `mtrl-container` - Layout containers
|
|
17
|
+
const name = createTextfield({ label: 'Name' });
|
|
18
|
+
const save = createButton({ text: 'Save', variant: 'filled' });
|
|
19
|
+
save.disabled.disable();
|
|
50
20
|
|
|
51
|
-
|
|
21
|
+
name.on('input', ({ value }: { value: string }) => {
|
|
22
|
+
if (value.trim()) save.disabled.enable();
|
|
23
|
+
else save.disabled.disable();
|
|
24
|
+
});
|
|
52
25
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
26
|
+
save.on('click', () => {
|
|
27
|
+
console.log('Saved', name.getValue());
|
|
28
|
+
});
|
|
56
29
|
|
|
57
|
-
|
|
58
|
-
yarn add mtrl
|
|
30
|
+
document.body.append(name.element, save.element);
|
|
59
31
|
|
|
60
|
-
|
|
61
|
-
|
|
32
|
+
// When the view goes away, release listeners and DOM
|
|
33
|
+
name.destroy();
|
|
34
|
+
save.destroy();
|
|
62
35
|
```
|
|
63
36
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
mtrl is optimized for tree-shaking. Constants are exported separately from component creators to minimize bundle size.
|
|
37
|
+
`mtrl/styles` loads every component and theme. For a smaller bundle, import only what you use (see [Styles](#styles)).
|
|
67
38
|
|
|
68
|
-
|
|
39
|
+
## Components
|
|
69
40
|
|
|
70
|
-
|
|
71
|
-
|-------------|------|
|
|
72
|
-
| Component creators | `import { createButton } from 'mtrl'` |
|
|
73
|
-
| Button constants | `import { BUTTON_VARIANTS } from 'mtrl/components/button/constants'` |
|
|
74
|
-
| Slider constants | `import { SLIDER_SIZES } from 'mtrl/components/slider/constants'` |
|
|
75
|
-
| Card constants | `import { CARD_VARIANTS } from 'mtrl/components/card/constants'` |
|
|
76
|
-
| Direct component import | `import createButton from 'mtrl/components/button'` |
|
|
77
|
-
| Core utilities | `import { addClass, removeClass } from 'mtrl/core/dom'` |
|
|
41
|
+
Every component is created by a `create*` function exported from `mtrl`, and renders with `mtrl-` prefixed classes.
|
|
78
42
|
|
|
79
|
-
|
|
43
|
+
- **Actions:** `createButton`, `createButtonGroup`, `createSplitButton`, `createIconButton`, `createFab`, `createExtendedFab`
|
|
44
|
+
- **Selection and input:** `createCheckbox`, `createChips` and `createChip`, `createRadios`, `createSwitch`, `createSlider`, `createSelect`, `createTextfield`, `createSearch`, `createDatePicker`, `createTimePicker`
|
|
45
|
+
- **Navigation:** `createNavigationRail`, `createDrawer`, `createTabs` and `createTab`, `createTopAppBar`, `createBottomAppBar`, `createMenu`, `createNavigation`, `createNavigationSystem`
|
|
46
|
+
- **Containment:** `createCard` with `createCardHeader`, `createCardContent`, `createCardMedia` and `createCardActions`, `createCarousel`, `createList`, `createDivider`, `createDialog`, `createBottomSheet`, `createSideSheet`
|
|
47
|
+
- **Communication:** `createSnackbar`, `createTooltip`, `createBadge`, `createProgress`, `createLoadingIndicator`
|
|
48
|
+
- **Deprecated:** `createSegmentedButton` and `createSegment`, replaced by `createButtonGroup` with `kind: 'connected'`
|
|
80
49
|
|
|
81
|
-
|
|
82
|
-
// ✅ Optimal - only imports what you need
|
|
83
|
-
import { createButton } from 'mtrl';
|
|
84
|
-
import { BUTTON_VARIANTS, BUTTON_SIZES } from 'mtrl/components/button/constants';
|
|
50
|
+
Virtual scrolling and data-driven lists live in [mtrl-addons](https://github.com/floor/mtrl-addons).
|
|
85
51
|
|
|
86
|
-
|
|
87
|
-
text: 'Submit',
|
|
88
|
-
variant: BUTTON_VARIANTS.FILLED,
|
|
89
|
-
size: BUTTON_SIZES.LARGE
|
|
90
|
-
});
|
|
52
|
+
## Styles
|
|
91
53
|
|
|
92
|
-
|
|
93
|
-
import createSlider from 'mtrl/components/slider';
|
|
94
|
-
import { SLIDER_COLORS } from 'mtrl/components/slider/constants';
|
|
54
|
+
Import the full stylesheet once:
|
|
95
55
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
});
|
|
56
|
+
```typescript
|
|
57
|
+
import 'mtrl/styles';
|
|
99
58
|
```
|
|
100
59
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
## Component Architecture
|
|
104
|
-
|
|
105
|
-
Let's look at how mtrl components are constructed:
|
|
60
|
+
Or import the base once, followed by the components you use:
|
|
106
61
|
|
|
107
62
|
```typescript
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
});
|
|
63
|
+
import 'mtrl/styles/base';
|
|
64
|
+
import 'mtrl/styles/button';
|
|
65
|
+
import 'mtrl/styles/textfield';
|
|
66
|
+
|
|
67
|
+
// Optional: an alternate theme and the utility classes
|
|
68
|
+
import 'mtrl/themes/ocean';
|
|
69
|
+
import 'mtrl/styles/utilities';
|
|
116
70
|
```
|
|
117
71
|
|
|
118
|
-
|
|
72
|
+
The base includes the baseline theme in light and dark, the tokens, a reset, typography and the ripple. Each selective entry imports what it depends on (the select brings the text field and the menu), so use a CSS-capable bundler to resolve and deduplicate them. Choose either the full stylesheet or selective imports, not both. The date picker has no selective entry yet; it is in the full stylesheet.
|
|
119
73
|
|
|
120
|
-
mtrl
|
|
74
|
+
Library styles sit in ordered `mtrl` cascade layers, so unlayered application CSS overrides them without specificity battles.
|
|
121
75
|
|
|
122
|
-
|
|
123
|
-
// Internal component creation
|
|
124
|
-
const createButton = (config: ButtonConfig): ButtonComponent => {
|
|
125
|
-
return pipe(
|
|
126
|
-
createBase, // Base component structure
|
|
127
|
-
withEvents(), // Event handling capability
|
|
128
|
-
withElement({
|
|
129
|
-
// DOM element creation
|
|
130
|
-
tag: "button",
|
|
131
|
-
componentName: "button",
|
|
132
|
-
prefix: "mtrl",
|
|
133
|
-
}),
|
|
134
|
-
withVariant(config), // Visual variant support
|
|
135
|
-
withText(config), // Text content management
|
|
136
|
-
withIcon(config), // Icon support
|
|
137
|
-
withRipple(config) // Ripple animation
|
|
138
|
-
)(config);
|
|
139
|
-
};
|
|
140
|
-
```
|
|
76
|
+
### Themes
|
|
141
77
|
|
|
142
|
-
|
|
78
|
+
The baseline theme applies by default and follows the system light or dark preference. Choose a theme and mode on the root element:
|
|
143
79
|
|
|
144
|
-
|
|
80
|
+
```html
|
|
81
|
+
<html data-theme="ocean" data-theme-mode="dark">
|
|
82
|
+
```
|
|
145
83
|
|
|
146
84
|
```typescript
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
extends BaseComponent,
|
|
150
|
-
ElementComponent,
|
|
151
|
-
TextComponent,
|
|
152
|
-
IconComponent,
|
|
153
|
-
DisabledComponent,
|
|
154
|
-
LifecycleComponent {
|
|
155
|
-
// Button-specific properties and methods
|
|
156
|
-
getValue: () => string;
|
|
157
|
-
setValue: (value: string) => ButtonComponent;
|
|
158
|
-
enable: () => ButtonComponent;
|
|
159
|
-
disable: () => ButtonComponent;
|
|
160
|
-
setText: (content: string) => ButtonComponent;
|
|
161
|
-
getText: () => string;
|
|
162
|
-
setIcon: (icon: string) => ButtonComponent;
|
|
163
|
-
getIcon: () => string;
|
|
164
|
-
destroy: () => void;
|
|
165
|
-
updateCircularStyle: () => void;
|
|
166
|
-
}
|
|
85
|
+
document.documentElement.dataset.theme = 'ocean';
|
|
86
|
+
document.documentElement.dataset.themeMode = 'dark';
|
|
167
87
|
```
|
|
168
88
|
|
|
169
|
-
|
|
89
|
+
Available themes: `baseline`, `ocean`, `desert`, `forest`, `sunset`, `spring`, `summer`, `autumn`, `winter`, `brownbeige`, `browngreen`, `sageivory`, `tealcaramel`, `material`, `legacy` and `highcontrast`. With selective styles, import the theme's entry, for example `mtrl/themes/ocean`.
|
|
90
|
+
|
|
91
|
+
### Custom properties
|
|
170
92
|
|
|
171
|
-
|
|
93
|
+
Components read the theme's colour roles, so overriding a role restyles every component that uses it:
|
|
172
94
|
|
|
173
95
|
```css
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
.mtrl-component-element; /* Child element */
|
|
96
|
+
:root {
|
|
97
|
+
--mtrl-sys-color-primary: #6750a4;
|
|
98
|
+
--mtrl-sys-color-on-primary: #ffffff;
|
|
99
|
+
}
|
|
179
100
|
```
|
|
180
101
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
mtrl provides several approaches to state management:
|
|
102
|
+
The type scale and shape scale are custom properties too (`--mtrl-sys-typescale-*`, `--mtrl-sys-shape-*`). Component hooks follow one convention, `--mtrl-<component>-<name>`:
|
|
184
103
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
textField.on("input", ({ value }) => {
|
|
193
|
-
console.log("Current value:", value);
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
textField.setValue("New value");
|
|
104
|
+
```css
|
|
105
|
+
.brand-slider {
|
|
106
|
+
--mtrl-slider-color: #006a6a;
|
|
107
|
+
--mtrl-slider-on-color: #ffffff;
|
|
108
|
+
}
|
|
197
109
|
```
|
|
198
110
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
For managing lists and datasets:
|
|
111
|
+
## Imports and tree-shaking
|
|
202
112
|
|
|
203
|
-
|
|
204
|
-
const collection = new Collection<User>({
|
|
205
|
-
transform: (item) => ({
|
|
206
|
-
...item,
|
|
207
|
-
displayName: `${item.firstName} ${item.lastName}`,
|
|
208
|
-
}),
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
collection.subscribe(({ event, data }) => {
|
|
212
|
-
console.log(`Collection ${event}:`, data);
|
|
213
|
-
});
|
|
214
|
-
```
|
|
113
|
+
mtrl publishes ESM with type declarations, so bundlers drop unused exports and split dynamic imports. CommonJS remains available through `require('mtrl')`.
|
|
215
114
|
|
|
216
|
-
|
|
115
|
+
| Import | Path |
|
|
116
|
+
|--------|------|
|
|
117
|
+
| Component creators | `import { createButton } from 'mtrl'` |
|
|
118
|
+
| One component directly | `import createSlider from 'mtrl/components/slider'` |
|
|
119
|
+
| Component constants | `import { BUTTON_VARIANTS } from 'mtrl/components/button/constants'` |
|
|
120
|
+
| Core utilities | `import { addClass, removeClass } from 'mtrl/core/dom'` |
|
|
217
121
|
|
|
218
|
-
|
|
122
|
+
Constants are not exported from the root; import them from the component's `constants` entry:
|
|
219
123
|
|
|
220
124
|
```typescript
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
uri: "mongodb://localhost:27017",
|
|
224
|
-
dbName: "mtrl-app",
|
|
225
|
-
collection: "users",
|
|
226
|
-
});
|
|
125
|
+
import { createButton } from 'mtrl';
|
|
126
|
+
import { BUTTON_VARIANTS, BUTTON_SIZES } from 'mtrl/components/button/constants';
|
|
227
127
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
list: "/users",
|
|
233
|
-
create: "/users",
|
|
234
|
-
},
|
|
128
|
+
const button = createButton({
|
|
129
|
+
text: 'Submit',
|
|
130
|
+
variant: BUTTON_VARIANTS.FILLED,
|
|
131
|
+
size: BUTTON_SIZES.L,
|
|
235
132
|
});
|
|
236
133
|
```
|
|
237
134
|
|
|
238
|
-
|
|
135
|
+
Button progress and card actions load on demand; enable code splitting in your build to keep them out of the initial chunk.
|
|
239
136
|
|
|
240
|
-
|
|
137
|
+
## Building your own components
|
|
241
138
|
|
|
242
|
-
|
|
139
|
+
Components are composed from small features with `pipe`. The same building blocks are public:
|
|
243
140
|
|
|
244
141
|
```typescript
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
142
|
+
import { pipe, createBase, withEvents, withElement } from 'mtrl/core/compose';
|
|
143
|
+
import type { ElementComponent } from 'mtrl/core/compose';
|
|
144
|
+
|
|
145
|
+
interface NoteConfig {
|
|
146
|
+
text?: string;
|
|
248
147
|
}
|
|
249
148
|
|
|
250
|
-
interface
|
|
251
|
-
|
|
149
|
+
interface NoteComponent extends ElementComponent {
|
|
150
|
+
setText: (text: string) => NoteComponent;
|
|
252
151
|
}
|
|
253
152
|
|
|
254
|
-
const
|
|
255
|
-
|
|
153
|
+
const createNote = (config: NoteConfig): NoteComponent =>
|
|
154
|
+
pipe(
|
|
256
155
|
createBase,
|
|
257
156
|
withEvents(),
|
|
258
|
-
withElement({
|
|
259
|
-
tag: "div",
|
|
260
|
-
componentName: "card",
|
|
261
|
-
prefix: "mtrl",
|
|
262
|
-
}),
|
|
263
|
-
// Add custom features
|
|
157
|
+
withElement({ tag: 'div', componentName: 'note' }),
|
|
264
158
|
(component) => ({
|
|
265
159
|
...component,
|
|
266
|
-
|
|
267
|
-
component.element.
|
|
160
|
+
setText(text: string) {
|
|
161
|
+
component.element.textContent = text;
|
|
268
162
|
return this;
|
|
269
163
|
},
|
|
270
164
|
})
|
|
271
165
|
)(config);
|
|
272
|
-
};
|
|
273
166
|
```
|
|
274
167
|
|
|
275
|
-
|
|
168
|
+
The element gets the `mtrl-note` class, `withEvents` adds `on`, `off` and `emit`, and `destroy()` removes the element. Add `withLifecycle()` from `mtrl/core/compose/features` when features need to register cleanup.
|
|
276
169
|
|
|
277
|
-
|
|
170
|
+
## Upgrading from 0.7
|
|
278
171
|
|
|
279
|
-
|
|
280
|
-
:root {
|
|
281
|
-
--mtrl-primary: #6200ee;
|
|
282
|
-
--mtrl-surface: #ffffff;
|
|
283
|
-
--mtrl-on-surface: #000000;
|
|
284
|
-
--mtrl-elevation-1: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
285
|
-
}
|
|
286
|
-
```
|
|
172
|
+
0.8.0 aligns the components with Material 3 expressive, and some of that changes the API or the styles:
|
|
287
173
|
|
|
288
|
-
|
|
174
|
+
- `createSheet` is removed; use `createBottomSheet` or `createSideSheet`.
|
|
175
|
+
- FAB and extended FAB: `variant: 'primary'`, `'secondary'` and `'tertiary'` are now the tone styles; the former look is `'primary-container'` (the default), `'secondary-container'` and `'tertiary-container'`.
|
|
176
|
+
- `createSegmentedButton` is deprecated in favour of `createButtonGroup({ kind: 'connected' })`; its heights are now 40, 36 and 32px by density.
|
|
177
|
+
- Component custom properties are renamed to `--mtrl-<component>-<name>`, for example `--drawer-width` to `--mtrl-drawer-width` and `--item-offset` to `--mtrl-list-item-offset`.
|
|
178
|
+
- `title-large` uses weight 400, as M3 specifies.
|
|
179
|
+
- The slider draws with DOM and CSS; styles for `.mtrl-slider-canvas` no longer apply.
|
|
289
180
|
|
|
290
|
-
|
|
181
|
+
The full list, with every renamed property, is in [changelog.txt](changelog.txt).
|
|
291
182
|
|
|
292
|
-
|
|
183
|
+
## Browser support
|
|
293
184
|
|
|
294
|
-
|
|
295
|
-
- Efficient event handling
|
|
296
|
-
- Automatic cleanup of resources
|
|
297
|
-
- Lazy initialization of features
|
|
298
|
-
|
|
299
|
-
### Type Safety
|
|
300
|
-
|
|
301
|
-
mtrl leverages TypeScript for better developer experience:
|
|
302
|
-
|
|
303
|
-
- Clear component interfaces
|
|
304
|
-
- Type-safe method chaining
|
|
305
|
-
- Intelligent code completion
|
|
306
|
-
- Compile-time error checking
|
|
307
|
-
- Self-documenting code
|
|
308
|
-
|
|
309
|
-
### Accessibility
|
|
310
|
-
|
|
311
|
-
Built-in accessibility features include:
|
|
312
|
-
|
|
313
|
-
- ARIA attributes management
|
|
314
|
-
- Keyboard navigation
|
|
315
|
-
- Focus management
|
|
316
|
-
- Screen reader support
|
|
317
|
-
|
|
318
|
-
## Browser Support
|
|
319
|
-
|
|
320
|
-
mtrl supports modern browsers:
|
|
321
|
-
|
|
322
|
-
- Chrome (latest)
|
|
323
|
-
- Firefox (latest)
|
|
324
|
-
- Safari (latest)
|
|
325
|
-
- Edge (latest)
|
|
185
|
+
Current Chrome, Edge, Firefox and Safari. The spring motion uses CSS `linear()` easing (Safari 17.2 or later); older browsers render every component but skip those transitions.
|
|
326
186
|
|
|
327
187
|
## Contributing
|
|
328
188
|
|
|
329
|
-
|
|
189
|
+
Contributions are welcome. [CONTRIBUTING.md](CONTRIBUTING.md) covers the development setup, conventions and the distribution checks; [TESTING.md](TESTING.md) covers the test suite.
|
|
330
190
|
|
|
331
191
|
## License
|
|
332
192
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
## Testing
|
|
336
|
-
|
|
337
|
-
mtrl comes with a comprehensive test suite using Bun's test runner. The tests are written in TypeScript and use JSDOM for DOM testing.
|
|
338
|
-
|
|
339
|
-
```bash
|
|
340
|
-
# Run all tests
|
|
341
|
-
bun test
|
|
342
|
-
|
|
343
|
-
# Run tests in watch mode
|
|
344
|
-
bun test --watch
|
|
345
|
-
|
|
346
|
-
# Run tests with coverage report
|
|
347
|
-
bun test --coverage
|
|
348
|
-
|
|
349
|
-
# Run tests with UI
|
|
350
|
-
bun test --watch --ui
|
|
351
|
-
|
|
352
|
-
# Run a specific test file
|
|
353
|
-
bun test test/components/button.test.ts
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
For more details on writing and running tests, see our [Testing Guide](TESTING.md).
|
|
357
|
-
|
|
358
|
-
## Documentation
|
|
359
|
-
|
|
360
|
-
For detailed API documentation, examples, and guides, visit our [documentation site](https://mtrl.app).
|
|
361
|
-
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
This library is designed to provide a solid foundation for building modern web interfaces with TypeScript while maintaining flexibility for custom implementations. For questions, issues, or contributions, please visit our GitHub repository.
|
|
193
|
+
MIT, see [LICENSE](LICENSE).
|