mtrl 0.8.0-next.35 → 0.8.0-next.37
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 +87 -1
- package/dist/README.md +87 -1
- 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 +1 -1
- package/dist/components/bottom-sheet/api.js +56 -0
- package/dist/components/bottom-sheet/bottom-sheet.d.ts +1 -1
- package/dist/components/bottom-sheet/bottom-sheet.js +18 -0
- package/dist/components/bottom-sheet/config.d.ts +1 -1
- package/dist/components/bottom-sheet/config.js +19 -0
- package/dist/components/bottom-sheet/constants.js +35 -0
- package/dist/components/bottom-sheet/features/drag.d.ts +1 -1
- package/dist/components/bottom-sheet/features/drag.js +71 -0
- package/dist/components/bottom-sheet/features/index.d.ts +3 -3
- package/dist/components/bottom-sheet/features/index.js +3 -0
- package/dist/components/bottom-sheet/features/state.d.ts +1 -1
- package/dist/components/bottom-sheet/features/state.js +82 -0
- package/dist/components/bottom-sheet/features/structure.d.ts +1 -1
- package/dist/components/bottom-sheet/features/structure.js +88 -0
- package/dist/components/bottom-sheet/index.d.ts +2 -2
- package/dist/components/bottom-sheet/index.js +1 -0
- package/dist/components/bottom-sheet/types.d.ts +1 -1
- 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 +350 -0
- package/dist/components/button-group/config.d.ts +9 -9
- package/dist/components/button-group/config.js +123 -0
- package/dist/components/button-group/constants.js +93 -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 +1 -1
- 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 -1
- 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.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 +2 -2
- 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 +2 -2
- package/dist/components/drawer/config.js +65 -0
- package/dist/components/drawer/constants.js +45 -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 +33 -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 +225 -0
- package/dist/components/drawer/features/state.d.ts +1 -1
- package/dist/components/drawer/features/state.js +95 -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 +1 -1
- 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 +64 -0
- package/dist/components/extended-fab/constants.js +39 -0
- package/dist/components/extended-fab/extended-fab.d.ts +1 -1
- package/dist/components/extended-fab/extended-fab.js +54 -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.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.js +37 -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 +2 -2
- package/dist/components/fab/index.js +1 -0
- 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.js +67 -0
- package/dist/components/icon-button/features/toggle.d.ts +1 -1
- package/dist/components/icon-button/features/toggle.js +131 -0
- package/dist/components/icon-button/icon-button.d.ts +1 -1
- package/dist/components/icon-button/icon-button.js +30 -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 +77 -77
- 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 +1 -1
- package/dist/components/loading-indicator/api.js +122 -0
- package/dist/components/loading-indicator/config.d.ts +1 -1
- package/dist/components/loading-indicator/config.js +25 -0
- package/dist/components/loading-indicator/constants.d.ts +1 -1
- package/dist/components/loading-indicator/constants.js +32 -0
- package/dist/components/loading-indicator/features/motion.js +47 -0
- package/dist/components/loading-indicator/features/renderer.d.ts +2 -2
- package/dist/components/loading-indicator/features/renderer.js +115 -0
- package/dist/components/loading-indicator/index.d.ts +3 -3
- package/dist/components/loading-indicator/index.js +2 -0
- package/dist/components/loading-indicator/loading-indicator.d.ts +1 -1
- package/dist/components/loading-indicator/loading-indicator.js +17 -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.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 +274 -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.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/progress/api.d.ts +1 -1
- 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.js +110 -0
- package/dist/components/progress/features/canvas.d.ts +1 -1
- package/dist/components/progress/features/canvas.js +300 -0
- package/dist/components/progress/features/circular.d.ts +2 -2
- package/dist/components/progress/features/circular.js +71 -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 +2 -2
- package/dist/components/progress/features/linear.js +104 -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.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 -1
- package/dist/components/segmented-button/config.js +77 -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 +1 -1
- package/dist/components/segmented-button/segment.js +94 -0
- package/dist/components/segmented-button/segmented-button.d.ts +1 -1
- package/dist/components/segmented-button/segmented-button.js +204 -0
- 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 +245 -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.js +4 -0
- package/dist/components/sheet/api.d.ts +1 -1
- package/dist/components/sheet/api.js +46 -0
- package/dist/components/sheet/config.d.ts +1 -1
- package/dist/components/sheet/config.js +36 -0
- package/dist/components/sheet/constants.js +64 -0
- package/dist/components/sheet/features/content.js +25 -0
- package/dist/components/sheet/features/gestures.js +126 -0
- package/dist/components/sheet/features/index.d.ts +5 -5
- package/dist/components/sheet/features/index.js +5 -0
- package/dist/components/sheet/features/position.d.ts +1 -1
- package/dist/components/sheet/features/position.js +19 -0
- package/dist/components/sheet/features/state.js +70 -0
- package/dist/components/sheet/features/title.js +45 -0
- package/dist/components/sheet/index.d.ts +3 -3
- package/dist/components/sheet/index.js +2 -0
- package/dist/components/sheet/sheet.d.ts +1 -1
- package/dist/components/sheet/sheet.js +25 -0
- package/dist/components/sheet/types.js +17 -0
- package/dist/components/side-sheet/api.d.ts +1 -1
- package/dist/components/side-sheet/api.js +50 -0
- package/dist/components/side-sheet/config.d.ts +1 -1
- package/dist/components/side-sheet/config.js +20 -0
- package/dist/components/side-sheet/constants.js +32 -0
- package/dist/components/side-sheet/features/index.d.ts +2 -2
- package/dist/components/side-sheet/features/index.js +2 -0
- package/dist/components/side-sheet/features/state.d.ts +1 -1
- package/dist/components/side-sheet/features/state.js +67 -0
- package/dist/components/side-sheet/features/structure.d.ts +1 -1
- package/dist/components/side-sheet/features/structure.js +97 -0
- package/dist/components/side-sheet/index.d.ts +2 -2
- package/dist/components/side-sheet/index.js +1 -0
- package/dist/components/side-sheet/side-sheet.d.ts +1 -1
- package/dist/components/side-sheet/side-sheet.js +17 -0
- package/dist/components/side-sheet/types.d.ts +1 -1
- 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 +2 -2
- package/dist/components/slider/types.js +2 -0
- package/dist/components/snackbar/api.d.ts +1 -1
- package/dist/components/snackbar/api.js +173 -0
- package/dist/components/snackbar/config.d.ts +7 -7
- package/dist/components/snackbar/config.js +33 -0
- package/dist/components/snackbar/constants.js +60 -0
- package/dist/components/snackbar/features.d.ts +1 -1
- 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 +1 -1
- 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 +2 -2
- package/dist/components/snackbar/types.js +1 -0
- package/dist/components/split-button/api.d.ts +1 -1
- package/dist/components/split-button/api.js +122 -0
- package/dist/components/split-button/config.d.ts +1 -1
- package/dist/components/split-button/config.js +19 -0
- package/dist/components/split-button/constants.js +35 -0
- package/dist/components/split-button/features/buttons.d.ts +1 -1
- package/dist/components/split-button/features/buttons.js +39 -0
- package/dist/components/split-button/features/menu.d.ts +1 -1
- package/dist/components/split-button/features/menu.js +19 -0
- package/dist/components/split-button/index.d.ts +3 -3
- package/dist/components/split-button/index.js +2 -0
- package/dist/components/split-button/split-button.d.ts +1 -1
- package/dist/components/split-button/split-button.js +21 -0
- package/dist/components/split-button/types.d.ts +1 -1
- 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 -5
- 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 -10
- 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 +1 -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 +54 -0
- package/dist/components/textfield/features/placement.d.ts +1 -1
- package/dist/components/textfield/features/placement.js +162 -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/component.js +131 -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 +53 -0
- package/dist/core/compose/features/disabled.d.ts +1 -1
- package/dist/core/compose/features/disabled.js +65 -0
- package/dist/core/compose/features/events.d.ts +1 -1
- package/dist/core/compose/features/events.js +19 -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 +71 -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 +2 -2
- package/dist/core/compose/features/ripple.js +137 -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 +46 -0
- package/dist/core/compose/features/textinput.d.ts +1 -1
- package/dist/core/compose/features/textinput.js +161 -0
- package/dist/core/compose/features/textlabel.d.ts +1 -1
- package/dist/core/compose/features/textlabel.js +38 -0
- package/dist/core/compose/features/throttle.d.ts +1 -1
- package/dist/core/compose/features/throttle.js +47 -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 +51 -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 +2 -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 +247 -0
- package/dist/core/dom/events.js +68 -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.js +62 -0
- package/dist/core/shapes/index.d.ts +6 -6
- package/dist/core/shapes/index.js +3 -0
- package/dist/core/shapes/material.d.ts +1 -1
- package/dist/core/shapes/material.js +119 -0
- package/dist/core/shapes/polygon.d.ts +1 -1
- 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 +24 -0
- package/dist/core/state/index.d.ts +10 -10
- package/dist/core/state/index.js +5 -0
- package/dist/core/state/lifecycle.js +46 -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.js +103 -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 +35 -10
- 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.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 +36 -5
- package/src/styles/base/_document.scss +54 -0
- package/src/styles/components/_slider.scss +39 -10
- package/src/styles/main.scss +1 -51
- package/dist/components/slider/features/canvas.d.ts +0 -47
- package/dist/index.cjs.map +0 -300
- package/dist/index.js.map +0 -300
package/README.md
CHANGED
|
@@ -63,7 +63,9 @@ bun add mtrl
|
|
|
63
63
|
|
|
64
64
|
## Tree-Shaking Optimized Imports
|
|
65
65
|
|
|
66
|
-
mtrl
|
|
66
|
+
mtrl publishes ESM modules so application bundlers can remove unused exports and
|
|
67
|
+
split dynamic imports. The root and direct component imports use the same modules.
|
|
68
|
+
CommonJS remains available through `require('mtrl')`.
|
|
67
69
|
|
|
68
70
|
### Import Patterns
|
|
69
71
|
|
|
@@ -100,6 +102,90 @@ const slider = createSlider({
|
|
|
100
102
|
|
|
101
103
|
**Note:** Constants are NOT exported from main entry points. Always import them from the component's constants file.
|
|
102
104
|
|
|
105
|
+
### Selective styles
|
|
106
|
+
|
|
107
|
+
The full stylesheet remains available:
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
import 'mtrl/styles';
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
For smaller applications, import the base once, followed by the components you use:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import 'mtrl/styles/base';
|
|
117
|
+
import 'mtrl/styles/button';
|
|
118
|
+
import 'mtrl/styles/textfield';
|
|
119
|
+
|
|
120
|
+
// Optional: alternate themes and utility classes
|
|
121
|
+
import 'mtrl/themes/ocean';
|
|
122
|
+
import 'mtrl/styles/utilities';
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The base includes the baseline light/dark theme, tokens, reset, typography, and
|
|
126
|
+
ripple styles. Selective style entry points are JavaScript modules that import
|
|
127
|
+
their CSS and dependencies (for example, button imports progress; select imports
|
|
128
|
+
textfield and menu). Use a CSS-capable application bundler to resolve and
|
|
129
|
+
deduplicate these imports. Their ordered `mtrl` cascade layers preserve component
|
|
130
|
+
overrides even when a bundler reorders CSS chunks. Unlayered application CSS can
|
|
131
|
+
override these library styles. Load optional themes after the base.
|
|
132
|
+
Choose either the full stylesheet or selective imports to avoid
|
|
133
|
+
duplicating styles. DatePicker remains available through the full stylesheet;
|
|
134
|
+
it has no separate style entry while in development.
|
|
135
|
+
|
|
136
|
+
Button progress and card action buttons retain their dynamic imports in ESM.
|
|
137
|
+
Enable code splitting in your application build to load those features on demand.
|
|
138
|
+
The CommonJS compatibility bundle includes them eagerly.
|
|
139
|
+
|
|
140
|
+
Slider decoration uses DOM tracks and CSS backgrounds for ticks; it no longer
|
|
141
|
+
creates a canvas or subscribes to theme changes. Its public slider API and
|
|
142
|
+
accessible handles remain. Themes and per-slider colour overrides apply through
|
|
143
|
+
CSS. Custom styling that targets the former `.mtrl-slider-canvas` element must be
|
|
144
|
+
updated. Run `bun run slider:check` after building for slider geometry, keyboard,
|
|
145
|
+
pointer, resize, and lifecycle checks. For comparison with a previous canvas
|
|
146
|
+
build, pass `--reference=/path/to/reference` to `scripts/check-slider.ts`; that
|
|
147
|
+
directory must contain an ESM `slider.js` exporting `createSlider` and its full
|
|
148
|
+
`styles.css`. Comparison screenshots and measurements go to `analysis/slider-dom`.
|
|
149
|
+
CSS rounded corners differ slightly from the previous canvas curves.
|
|
150
|
+
|
|
151
|
+
### Checking distribution size
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
bun run build
|
|
155
|
+
bun run size:check
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The size check packs and installs the local distribution in a temporary directory,
|
|
159
|
+
checks Node ESM/CommonJS and TypeScript imports, and measures minified consumer
|
|
160
|
+
bundles with gzip and Brotli. It enforces budgets for individual imports, a form,
|
|
161
|
+
CSS, and the initial button chunks. Results are saved to
|
|
162
|
+
`analysis/package-size.json`. Run it after building; it does not rebuild dist.
|
|
163
|
+
|
|
164
|
+
For a second bundler and real-browser checks:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
node node_modules/playwright/cli.js install chromium
|
|
168
|
+
bun run consumer:check
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
This builds a packed Vite application and checks tree-shaking, CSS deduplication,
|
|
172
|
+
and on-demand progress loading. Chromium compares full and selective CSS with
|
|
173
|
+
screenshots and computed styles across component states, baseline/ocean themes,
|
|
174
|
+
light/dark modes, and desktop/mobile widths. It also exercises pointer and keyboard
|
|
175
|
+
interactions. Reports and screenshots are saved to `analysis/browser`; CI runs
|
|
176
|
+
these checks and uploads the artifacts. Comparisons use the full stylesheet from
|
|
177
|
+
the same build as their reference, so they test distribution equivalence rather
|
|
178
|
+
than establish a separate design baseline.
|
|
179
|
+
|
|
180
|
+
`scripts/style-manifest.ts` declares selective entries and their dependencies.
|
|
181
|
+
The build rejects missing dependencies and cycles, checks the manifest against
|
|
182
|
+
Sass's parsed full-stylesheet imports, and verifies component dependencies retained
|
|
183
|
+
by tree-shaking, including lazy imports. Vite and Playwright are development-only
|
|
184
|
+
dependencies, pinned along with the existing tools in `bun.lock`.
|
|
185
|
+
|
|
186
|
+
Builds fail on TypeScript or Sass errors. Published ESM is readable and includes
|
|
187
|
+
declarations; source maps are omitted from the package to reduce installation size.
|
|
188
|
+
|
|
103
189
|
## Component Architecture
|
|
104
190
|
|
|
105
191
|
Let's look at how mtrl components are constructed:
|
package/dist/README.md
CHANGED
|
@@ -63,7 +63,9 @@ bun add mtrl
|
|
|
63
63
|
|
|
64
64
|
## Tree-Shaking Optimized Imports
|
|
65
65
|
|
|
66
|
-
mtrl
|
|
66
|
+
mtrl publishes ESM modules so application bundlers can remove unused exports and
|
|
67
|
+
split dynamic imports. The root and direct component imports use the same modules.
|
|
68
|
+
CommonJS remains available through `require('mtrl')`.
|
|
67
69
|
|
|
68
70
|
### Import Patterns
|
|
69
71
|
|
|
@@ -100,6 +102,90 @@ const slider = createSlider({
|
|
|
100
102
|
|
|
101
103
|
**Note:** Constants are NOT exported from main entry points. Always import them from the component's constants file.
|
|
102
104
|
|
|
105
|
+
### Selective styles
|
|
106
|
+
|
|
107
|
+
The full stylesheet remains available:
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
import 'mtrl/styles';
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
For smaller applications, import the base once, followed by the components you use:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import 'mtrl/styles/base';
|
|
117
|
+
import 'mtrl/styles/button';
|
|
118
|
+
import 'mtrl/styles/textfield';
|
|
119
|
+
|
|
120
|
+
// Optional: alternate themes and utility classes
|
|
121
|
+
import 'mtrl/themes/ocean';
|
|
122
|
+
import 'mtrl/styles/utilities';
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The base includes the baseline light/dark theme, tokens, reset, typography, and
|
|
126
|
+
ripple styles. Selective style entry points are JavaScript modules that import
|
|
127
|
+
their CSS and dependencies (for example, button imports progress; select imports
|
|
128
|
+
textfield and menu). Use a CSS-capable application bundler to resolve and
|
|
129
|
+
deduplicate these imports. Their ordered `mtrl` cascade layers preserve component
|
|
130
|
+
overrides even when a bundler reorders CSS chunks. Unlayered application CSS can
|
|
131
|
+
override these library styles. Load optional themes after the base.
|
|
132
|
+
Choose either the full stylesheet or selective imports to avoid
|
|
133
|
+
duplicating styles. DatePicker remains available through the full stylesheet;
|
|
134
|
+
it has no separate style entry while in development.
|
|
135
|
+
|
|
136
|
+
Button progress and card action buttons retain their dynamic imports in ESM.
|
|
137
|
+
Enable code splitting in your application build to load those features on demand.
|
|
138
|
+
The CommonJS compatibility bundle includes them eagerly.
|
|
139
|
+
|
|
140
|
+
Slider decoration uses DOM tracks and CSS backgrounds for ticks; it no longer
|
|
141
|
+
creates a canvas or subscribes to theme changes. Its public slider API and
|
|
142
|
+
accessible handles remain. Themes and per-slider colour overrides apply through
|
|
143
|
+
CSS. Custom styling that targets the former `.mtrl-slider-canvas` element must be
|
|
144
|
+
updated. Run `bun run slider:check` after building for slider geometry, keyboard,
|
|
145
|
+
pointer, resize, and lifecycle checks. For comparison with a previous canvas
|
|
146
|
+
build, pass `--reference=/path/to/reference` to `scripts/check-slider.ts`; that
|
|
147
|
+
directory must contain an ESM `slider.js` exporting `createSlider` and its full
|
|
148
|
+
`styles.css`. Comparison screenshots and measurements go to `analysis/slider-dom`.
|
|
149
|
+
CSS rounded corners differ slightly from the previous canvas curves.
|
|
150
|
+
|
|
151
|
+
### Checking distribution size
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
bun run build
|
|
155
|
+
bun run size:check
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The size check packs and installs the local distribution in a temporary directory,
|
|
159
|
+
checks Node ESM/CommonJS and TypeScript imports, and measures minified consumer
|
|
160
|
+
bundles with gzip and Brotli. It enforces budgets for individual imports, a form,
|
|
161
|
+
CSS, and the initial button chunks. Results are saved to
|
|
162
|
+
`analysis/package-size.json`. Run it after building; it does not rebuild dist.
|
|
163
|
+
|
|
164
|
+
For a second bundler and real-browser checks:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
node node_modules/playwright/cli.js install chromium
|
|
168
|
+
bun run consumer:check
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
This builds a packed Vite application and checks tree-shaking, CSS deduplication,
|
|
172
|
+
and on-demand progress loading. Chromium compares full and selective CSS with
|
|
173
|
+
screenshots and computed styles across component states, baseline/ocean themes,
|
|
174
|
+
light/dark modes, and desktop/mobile widths. It also exercises pointer and keyboard
|
|
175
|
+
interactions. Reports and screenshots are saved to `analysis/browser`; CI runs
|
|
176
|
+
these checks and uploads the artifacts. Comparisons use the full stylesheet from
|
|
177
|
+
the same build as their reference, so they test distribution equivalence rather
|
|
178
|
+
than establish a separate design baseline.
|
|
179
|
+
|
|
180
|
+
`scripts/style-manifest.ts` declares selective entries and their dependencies.
|
|
181
|
+
The build rejects missing dependencies and cycles, checks the manifest against
|
|
182
|
+
Sass's parsed full-stylesheet imports, and verifies component dependencies retained
|
|
183
|
+
by tree-shaking, including lazy imports. Vite and Playwright are development-only
|
|
184
|
+
dependencies, pinned along with the existing tools in `bun.lock`.
|
|
185
|
+
|
|
186
|
+
Builds fail on TypeScript or Sass errors. Published ESM is readable and includes
|
|
187
|
+
declarations; source maps are omitted from the package to reduce installation size.
|
|
188
|
+
|
|
103
189
|
## Component Architecture
|
|
104
190
|
|
|
105
191
|
Let's look at how mtrl components are constructed:
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { formatBadgeLabel } from "./config.js";
|
|
2
|
+
const VARIANT_SMALL = "small";
|
|
3
|
+
const ALL_COLORS = [
|
|
4
|
+
"error",
|
|
5
|
+
"primary",
|
|
6
|
+
"secondary",
|
|
7
|
+
"tertiary",
|
|
8
|
+
"success",
|
|
9
|
+
"warning",
|
|
10
|
+
"info",
|
|
11
|
+
];
|
|
12
|
+
const ALL_VARIANTS = ["small", "large"];
|
|
13
|
+
const ALL_POSITIONS = ["top-right", "top-left", "bottom-right", "bottom-left"];
|
|
14
|
+
export const withAPI = ({ visibility, lifecycle }) => (component) => {
|
|
15
|
+
const badgeComponent = {
|
|
16
|
+
element: component.element,
|
|
17
|
+
wrapper: component.wrapper,
|
|
18
|
+
getClass: component.getClass,
|
|
19
|
+
setLabel(label) {
|
|
20
|
+
component.config.label = label;
|
|
21
|
+
if (component.config.variant === VARIANT_SMALL) {
|
|
22
|
+
component.element.textContent = "";
|
|
23
|
+
return badgeComponent;
|
|
24
|
+
}
|
|
25
|
+
const formattedLabel = formatBadgeLabel(label, component.config.max);
|
|
26
|
+
component.element.textContent = formattedLabel;
|
|
27
|
+
component.element.classList.remove(`${component.getClass("badge")}--overflow`);
|
|
28
|
+
if (typeof label === "number" &&
|
|
29
|
+
component.config.max !== undefined &&
|
|
30
|
+
label > component.config.max) {
|
|
31
|
+
component.element.classList.add(`${component.getClass("badge")}--overflow`);
|
|
32
|
+
}
|
|
33
|
+
if (formattedLabel === "" || formattedLabel === "0") {
|
|
34
|
+
badgeComponent.hide();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
badgeComponent.show();
|
|
38
|
+
}
|
|
39
|
+
return badgeComponent;
|
|
40
|
+
},
|
|
41
|
+
getLabel() {
|
|
42
|
+
return component.element.textContent || "";
|
|
43
|
+
},
|
|
44
|
+
setContent(content) {
|
|
45
|
+
return badgeComponent.setLabel(content);
|
|
46
|
+
},
|
|
47
|
+
getContent() {
|
|
48
|
+
return badgeComponent.getLabel();
|
|
49
|
+
},
|
|
50
|
+
show() {
|
|
51
|
+
visibility.show();
|
|
52
|
+
return badgeComponent;
|
|
53
|
+
},
|
|
54
|
+
hide() {
|
|
55
|
+
visibility.hide();
|
|
56
|
+
return badgeComponent;
|
|
57
|
+
},
|
|
58
|
+
toggle(visible) {
|
|
59
|
+
visibility.toggle(visible);
|
|
60
|
+
return badgeComponent;
|
|
61
|
+
},
|
|
62
|
+
isVisible() {
|
|
63
|
+
return visibility.isVisible();
|
|
64
|
+
},
|
|
65
|
+
setMax(max) {
|
|
66
|
+
component.config.max = max;
|
|
67
|
+
if (component.config.label !== undefined) {
|
|
68
|
+
badgeComponent.setLabel(component.config.label);
|
|
69
|
+
}
|
|
70
|
+
return badgeComponent;
|
|
71
|
+
},
|
|
72
|
+
setColor(color) {
|
|
73
|
+
ALL_COLORS.forEach((colorName) => {
|
|
74
|
+
component.element.classList.remove(`${component.getClass("badge")}--${colorName}`);
|
|
75
|
+
});
|
|
76
|
+
component.element.classList.add(`${component.getClass("badge")}--${color}`);
|
|
77
|
+
return badgeComponent;
|
|
78
|
+
},
|
|
79
|
+
setVariant(variant) {
|
|
80
|
+
ALL_VARIANTS.forEach((variantName) => {
|
|
81
|
+
component.element.classList.remove(`${component.getClass("badge")}--${variantName}`);
|
|
82
|
+
});
|
|
83
|
+
component.element.classList.add(`${component.getClass("badge")}--${variant}`);
|
|
84
|
+
component.config.variant = variant;
|
|
85
|
+
if (variant === VARIANT_SMALL) {
|
|
86
|
+
component.element.textContent = "";
|
|
87
|
+
component.element.setAttribute("aria-hidden", "true");
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
component.element.setAttribute("role", "status");
|
|
91
|
+
if (component.config.label !== undefined) {
|
|
92
|
+
badgeComponent.setLabel(component.config.label);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return badgeComponent;
|
|
96
|
+
},
|
|
97
|
+
setPosition(position) {
|
|
98
|
+
ALL_POSITIONS.forEach((posName) => {
|
|
99
|
+
component.element.classList.remove(`${component.getClass("badge")}--${posName}`);
|
|
100
|
+
});
|
|
101
|
+
component.element.classList.add(`${component.getClass("badge")}--${position}`);
|
|
102
|
+
return badgeComponent;
|
|
103
|
+
},
|
|
104
|
+
attachTo(target) {
|
|
105
|
+
if (component.wrapper &&
|
|
106
|
+
component.wrapper.contains(component.element)) {
|
|
107
|
+
component.wrapper.removeChild(component.element);
|
|
108
|
+
}
|
|
109
|
+
const wrapper = document.createElement("div");
|
|
110
|
+
wrapper.classList.add(component.getClass("badge-wrapper"));
|
|
111
|
+
wrapper.style.position = "relative";
|
|
112
|
+
const parent = target.parentNode;
|
|
113
|
+
if (parent) {
|
|
114
|
+
parent.replaceChild(wrapper, target);
|
|
115
|
+
wrapper.appendChild(target);
|
|
116
|
+
wrapper.appendChild(component.element);
|
|
117
|
+
component.element.classList.add(`${component.getClass("badge")}--positioned`);
|
|
118
|
+
component.wrapper = wrapper;
|
|
119
|
+
badgeComponent.wrapper = wrapper;
|
|
120
|
+
}
|
|
121
|
+
return badgeComponent;
|
|
122
|
+
},
|
|
123
|
+
detach() {
|
|
124
|
+
if (component.wrapper &&
|
|
125
|
+
component.wrapper.contains(component.element)) {
|
|
126
|
+
component.wrapper.removeChild(component.element);
|
|
127
|
+
component.element.classList.remove(`${component.getClass("badge")}--positioned`);
|
|
128
|
+
document.body.appendChild(component.element);
|
|
129
|
+
component.wrapper = undefined;
|
|
130
|
+
badgeComponent.wrapper = undefined;
|
|
131
|
+
}
|
|
132
|
+
return badgeComponent;
|
|
133
|
+
},
|
|
134
|
+
destroy() {
|
|
135
|
+
lifecycle.destroy();
|
|
136
|
+
if (component.wrapper) {
|
|
137
|
+
const target = component.wrapper.firstChild;
|
|
138
|
+
const parent = component.wrapper.parentNode;
|
|
139
|
+
if (parent && target) {
|
|
140
|
+
parent.replaceChild(target, component.wrapper);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
addClass: (...classes) => {
|
|
145
|
+
component.addClass(...classes);
|
|
146
|
+
return badgeComponent;
|
|
147
|
+
},
|
|
148
|
+
removeClass: (...classes) => {
|
|
149
|
+
component.removeClass(...classes);
|
|
150
|
+
return badgeComponent;
|
|
151
|
+
},
|
|
152
|
+
on: (event, handler) => {
|
|
153
|
+
component.on(event, handler);
|
|
154
|
+
return badgeComponent;
|
|
155
|
+
},
|
|
156
|
+
off: (event, handler) => {
|
|
157
|
+
component.off(event, handler);
|
|
158
|
+
return badgeComponent;
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
return badgeComponent;
|
|
162
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { pipe } from "../../core/compose/index.js";
|
|
2
|
+
import { createBase, withElement } from "../../core/compose/component.js";
|
|
3
|
+
import { withEvents, withLifecycle } from "../../core/compose/features/index.js";
|
|
4
|
+
import { withVisibility, withVariant, withColor, withPosition, withMax, withAttachment } from "./features.js";
|
|
5
|
+
import { withAPI } from "./api.js";
|
|
6
|
+
import { createBaseConfig, getElementConfig, getApiConfig } from "./config.js";
|
|
7
|
+
const createBadge = (config = {}) => {
|
|
8
|
+
const baseConfig = createBaseConfig(config);
|
|
9
|
+
try {
|
|
10
|
+
const badge = pipe(createBase, withEvents(), withElement(getElementConfig(baseConfig)), withVariant(baseConfig), withColor(baseConfig), withPosition(baseConfig), withMax(baseConfig), withVisibility(), withAttachment(baseConfig), withLifecycle(), comp => withAPI(getApiConfig(comp))(comp))(baseConfig);
|
|
11
|
+
return badge;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
console.error('Badge creation error:', error);
|
|
15
|
+
throw new Error(`Failed to create badge: ${error.message}`);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export default createBadge;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { createComponentConfig, createElementConfig, } from "../../core/config/component.js";
|
|
2
|
+
import { BADGE_VARIANTS, BADGE_COLORS, BADGE_POSITIONS, BADGE_MAX_CHARACTERS, } from "./constants.js";
|
|
3
|
+
export const defaultConfig = {
|
|
4
|
+
variant: BADGE_VARIANTS.LARGE,
|
|
5
|
+
color: BADGE_COLORS.ERROR,
|
|
6
|
+
position: BADGE_POSITIONS.TOP_RIGHT,
|
|
7
|
+
label: "",
|
|
8
|
+
visible: true,
|
|
9
|
+
};
|
|
10
|
+
export const createBaseConfig = (config = {}) => createComponentConfig(defaultConfig, config, "badge");
|
|
11
|
+
export const getElementConfig = (config) => {
|
|
12
|
+
const attributes = {};
|
|
13
|
+
if (config.variant !== "small") {
|
|
14
|
+
attributes.role = "status";
|
|
15
|
+
}
|
|
16
|
+
const formattedLabel = config.variant === "small"
|
|
17
|
+
? ""
|
|
18
|
+
: formatBadgeLabel(config.label || "", config.max);
|
|
19
|
+
return createElementConfig(config, {
|
|
20
|
+
tag: "span",
|
|
21
|
+
attributes,
|
|
22
|
+
className: config.class,
|
|
23
|
+
text: formattedLabel,
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
export const getApiConfig = (comp) => ({
|
|
27
|
+
visibility: {
|
|
28
|
+
show: () => comp.visibility.show(),
|
|
29
|
+
hide: () => comp.visibility.hide(),
|
|
30
|
+
toggle: (visible) => comp.visibility.toggle(visible),
|
|
31
|
+
isVisible: () => comp.visibility.isVisible(),
|
|
32
|
+
},
|
|
33
|
+
lifecycle: {
|
|
34
|
+
destroy: () => comp.lifecycle.destroy(),
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
export const formatBadgeLabel = (label, max) => {
|
|
38
|
+
if (label === undefined || label === null || label === "") {
|
|
39
|
+
return "";
|
|
40
|
+
}
|
|
41
|
+
let formattedLabel = String(label);
|
|
42
|
+
const numericLabel = Number(label);
|
|
43
|
+
if (max !== undefined && !isNaN(numericLabel) && numericLabel > max) {
|
|
44
|
+
formattedLabel = `${max}+`;
|
|
45
|
+
}
|
|
46
|
+
if (formattedLabel.length > BADGE_MAX_CHARACTERS) {
|
|
47
|
+
const numericValue = Number(label);
|
|
48
|
+
if (!isNaN(numericValue)) {
|
|
49
|
+
if (numericValue >= 1000) {
|
|
50
|
+
formattedLabel = "999+";
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
formattedLabel =
|
|
54
|
+
formattedLabel.substring(0, BADGE_MAX_CHARACTERS - 1) + "+";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
formattedLabel = formattedLabel.substring(0, BADGE_MAX_CHARACTERS);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return formattedLabel;
|
|
62
|
+
};
|
|
63
|
+
export default defaultConfig;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const BADGE_VARIANTS = {
|
|
2
|
+
SMALL: 'small',
|
|
3
|
+
LARGE: 'large'
|
|
4
|
+
};
|
|
5
|
+
export const BADGE_COLORS = {
|
|
6
|
+
ERROR: 'error',
|
|
7
|
+
PRIMARY: 'primary',
|
|
8
|
+
SECONDARY: 'secondary',
|
|
9
|
+
TERTIARY: 'tertiary',
|
|
10
|
+
SUCCESS: 'success',
|
|
11
|
+
WARNING: 'warning',
|
|
12
|
+
INFO: 'info'
|
|
13
|
+
};
|
|
14
|
+
export const BADGE_POSITIONS = {
|
|
15
|
+
TOP_RIGHT: 'top-right',
|
|
16
|
+
TOP_LEFT: 'top-left',
|
|
17
|
+
BOTTOM_RIGHT: 'bottom-right',
|
|
18
|
+
BOTTOM_LEFT: 'bottom-left'
|
|
19
|
+
};
|
|
20
|
+
export const BADGE_MAX_CHARACTERS = 4;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { formatBadgeLabel } from "./config.js";
|
|
2
|
+
const VARIANT_SMALL = 'small';
|
|
3
|
+
const VARIANT_LARGE = 'large';
|
|
4
|
+
const COLOR_ERROR = 'error';
|
|
5
|
+
const POSITION_TOP_RIGHT = 'top-right';
|
|
6
|
+
export const withVisibility = () => component => {
|
|
7
|
+
const visible = component.config.visible !== false;
|
|
8
|
+
if (!visible) {
|
|
9
|
+
component.element.classList.add(`${component.getClass('badge')}--invisible`);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
...component,
|
|
13
|
+
visibility: {
|
|
14
|
+
show() {
|
|
15
|
+
component.element.classList.remove(`${component.getClass('badge')}--invisible`);
|
|
16
|
+
},
|
|
17
|
+
hide() {
|
|
18
|
+
component.element.classList.add(`${component.getClass('badge')}--invisible`);
|
|
19
|
+
},
|
|
20
|
+
toggle(visible) {
|
|
21
|
+
if (visible === undefined) {
|
|
22
|
+
component.element.classList.toggle(`${component.getClass('badge')}--invisible`);
|
|
23
|
+
}
|
|
24
|
+
else if (visible) {
|
|
25
|
+
this.show();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.hide();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
isVisible() {
|
|
32
|
+
return !component.element.classList.contains(`${component.getClass('badge')}--invisible`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export const withVariant = (config) => component => {
|
|
38
|
+
const variant = config.variant || VARIANT_LARGE;
|
|
39
|
+
component.element.classList.add(`${component.getClass('badge')}--${variant}`);
|
|
40
|
+
if (variant === VARIANT_SMALL) {
|
|
41
|
+
component.element.textContent = '';
|
|
42
|
+
component.element.setAttribute('aria-hidden', 'true');
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
component.element.setAttribute('role', 'status');
|
|
46
|
+
if (config.label !== undefined && config.label !== '') {
|
|
47
|
+
const formattedLabel = formatBadgeLabel(config.label, config.max);
|
|
48
|
+
component.element.textContent = formattedLabel;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return component;
|
|
52
|
+
};
|
|
53
|
+
export const withColor = (config) => component => {
|
|
54
|
+
const color = config.color || COLOR_ERROR;
|
|
55
|
+
component.element.classList.add(`${component.getClass('badge')}--${color}`);
|
|
56
|
+
return component;
|
|
57
|
+
};
|
|
58
|
+
export const withPosition = (config) => component => {
|
|
59
|
+
const position = config.position || POSITION_TOP_RIGHT;
|
|
60
|
+
component.element.classList.add(`${component.getClass('badge')}--${position}`);
|
|
61
|
+
if (config.target) {
|
|
62
|
+
component.element.classList.add(`${component.getClass('badge')}--positioned`);
|
|
63
|
+
}
|
|
64
|
+
return component;
|
|
65
|
+
};
|
|
66
|
+
export const withMax = (config) => component => {
|
|
67
|
+
if (config.max === undefined || config.variant === VARIANT_SMALL) {
|
|
68
|
+
return component;
|
|
69
|
+
}
|
|
70
|
+
component.config.max = config.max;
|
|
71
|
+
if (config.label !== undefined && config.label !== '') {
|
|
72
|
+
const formattedLabel = formatBadgeLabel(config.label, config.max);
|
|
73
|
+
component.element.textContent = formattedLabel;
|
|
74
|
+
if (typeof config.label === 'number' && config.label > config.max) {
|
|
75
|
+
component.element.classList.add(`${component.getClass('badge')}--overflow`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return component;
|
|
79
|
+
};
|
|
80
|
+
export const withAttachment = (config) => component => {
|
|
81
|
+
if (!config.target) {
|
|
82
|
+
return component;
|
|
83
|
+
}
|
|
84
|
+
const wrapper = document.createElement('div');
|
|
85
|
+
wrapper.classList.add(component.getClass('badge-wrapper'));
|
|
86
|
+
wrapper.style.position = 'relative';
|
|
87
|
+
const parent = config.target.parentNode;
|
|
88
|
+
if (parent) {
|
|
89
|
+
parent.replaceChild(wrapper, config.target);
|
|
90
|
+
wrapper.appendChild(config.target);
|
|
91
|
+
wrapper.appendChild(component.element);
|
|
92
|
+
component.wrapper = wrapper;
|
|
93
|
+
}
|
|
94
|
+
return component;
|
|
95
|
+
};
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* @description A small element that communicates status, shows a count,
|
|
5
5
|
* or highlights an element requiring attention.
|
|
6
6
|
*/
|
|
7
|
-
export { default } from "./badge";
|
|
8
|
-
export type { BadgeConfig, BadgeComponent, BadgeVariant, BadgeColor, BadgePosition, } from "./types";
|
|
7
|
+
export { default } from "./badge.js";
|
|
8
|
+
export type { BadgeConfig, BadgeComponent, BadgeVariant, BadgeColor, BadgePosition, } from "./types.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./badge.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|