mtrl 0.3.8 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. package/dist/LICENSE +21 -0
  2. package/dist/README.md +324 -0
  3. package/dist/components/badge/api.d.ts +48 -0
  4. package/{src/components/badge/badge.ts → dist/components/badge/badge.d.ts} +14 -57
  5. package/dist/components/badge/config.d.ts +79 -0
  6. package/dist/components/badge/constants.d.ts +35 -0
  7. package/dist/components/badge/features.d.ts +36 -0
  8. package/dist/components/badge/index.d.ts +8 -0
  9. package/dist/components/badge/types.d.ts +256 -0
  10. package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +12 -0
  11. package/dist/components/bottom-app-bar/config.d.ts +16 -0
  12. package/dist/components/bottom-app-bar/constants.d.ts +22 -0
  13. package/{src/components/bottom-app-bar/index.ts → dist/components/bottom-app-bar/index.d.ts} +0 -9
  14. package/dist/components/bottom-app-bar/types.d.ts +96 -0
  15. package/dist/components/button/api.d.ts +47 -0
  16. package/dist/components/button/button.d.ts +25 -0
  17. package/dist/components/button/config.d.ts +59 -0
  18. package/dist/components/button/constants.d.ts +43 -0
  19. package/dist/components/button/index.d.ts +6 -0
  20. package/dist/components/button/types.d.ts +265 -0
  21. package/dist/components/card/api.d.ts +11 -0
  22. package/{src/components/card/card.ts → dist/components/card/card.d.ts} +10 -58
  23. package/dist/components/card/config.d.ts +105 -0
  24. package/dist/components/card/constants.d.ts +85 -0
  25. package/dist/components/card/content.d.ts +92 -0
  26. package/dist/components/card/features.d.ts +131 -0
  27. package/{src/components/card/index.ts → dist/components/card/index.d.ts} +13 -74
  28. package/dist/components/card/types.d.ts +471 -0
  29. package/dist/components/carousel/api.d.ts +33 -0
  30. package/dist/components/carousel/carousel.d.ts +75 -0
  31. package/dist/components/carousel/config.d.ts +45 -0
  32. package/dist/components/carousel/constants.d.ts +165 -0
  33. package/dist/components/carousel/features/drag.d.ts +8 -0
  34. package/{src/components/carousel/features/index.ts → dist/components/carousel/features/index.d.ts} +1 -4
  35. package/dist/components/carousel/features/slides.d.ts +8 -0
  36. package/{src/components/carousel/index.ts → dist/components/carousel/index.d.ts} +10 -29
  37. package/dist/components/carousel/types.d.ts +276 -0
  38. package/dist/components/checkbox/api.d.ts +7 -0
  39. package/dist/components/checkbox/checkbox.d.ts +65 -0
  40. package/dist/components/checkbox/config.d.ts +44 -0
  41. package/dist/components/checkbox/constants.d.ts +63 -0
  42. package/{src/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +8 -25
  43. package/dist/components/checkbox/types.d.ts +242 -0
  44. package/dist/components/chips/api.d.ts +49 -0
  45. package/dist/components/chips/chip/api.d.ts +23 -0
  46. package/dist/components/chips/chip/chip.d.ts +8 -0
  47. package/dist/components/chips/chip/config.d.ts +57 -0
  48. package/dist/components/chips/chip/constants.d.ts +38 -0
  49. package/dist/components/chips/chip/index.d.ts +2 -0
  50. package/dist/components/chips/chip/types.d.ts +11 -0
  51. package/dist/components/chips/chips.d.ts +17 -0
  52. package/dist/components/chips/config.d.ts +67 -0
  53. package/dist/components/chips/constants.d.ts +46 -0
  54. package/dist/components/chips/features/chip-items.d.ts +8 -0
  55. package/dist/components/chips/features/container.d.ts +8 -0
  56. package/dist/components/chips/features/controller.d.ts +9 -0
  57. package/{src/components/chips/features/index.ts → dist/components/chips/features/index.d.ts} +1 -2
  58. package/dist/components/chips/features/label.d.ts +8 -0
  59. package/dist/components/chips/index.d.ts +4 -0
  60. package/dist/components/chips/schema.d.ts +34 -0
  61. package/dist/components/chips/types.d.ts +398 -0
  62. package/dist/components/datepicker/api.d.ts +9 -0
  63. package/dist/components/datepicker/config.d.ts +79 -0
  64. package/dist/components/datepicker/constants.d.ts +97 -0
  65. package/dist/components/datepicker/datepicker.d.ts +8 -0
  66. package/dist/components/datepicker/index.d.ts +3 -0
  67. package/dist/components/datepicker/render.d.ts +43 -0
  68. package/dist/components/datepicker/types.d.ts +321 -0
  69. package/dist/components/datepicker/utils.d.ts +84 -0
  70. package/dist/components/dialog/api.d.ts +59 -0
  71. package/dist/components/dialog/config.d.ts +91 -0
  72. package/dist/components/dialog/constants.d.ts +116 -0
  73. package/{src/components/dialog/dialog.ts → dist/components/dialog/dialog.d.ts} +16 -69
  74. package/dist/components/dialog/features.d.ts +37 -0
  75. package/dist/components/dialog/index.d.ts +14 -0
  76. package/dist/components/dialog/types.d.ts +483 -0
  77. package/dist/components/divider/config.d.ts +143 -0
  78. package/dist/components/divider/constants.d.ts +45 -0
  79. package/{src/components/divider/divider.ts → dist/components/divider/divider.d.ts} +9 -37
  80. package/dist/components/divider/features.d.ts +50 -0
  81. package/{src/components/divider/index.ts → dist/components/divider/index.d.ts} +6 -12
  82. package/dist/components/divider/types.d.ts +124 -0
  83. package/dist/components/extended-fab/api.d.ts +83 -0
  84. package/dist/components/extended-fab/config.d.ts +75 -0
  85. package/dist/components/extended-fab/constants.d.ts +82 -0
  86. package/dist/components/extended-fab/extended-fab.d.ts +61 -0
  87. package/{src/components/extended-fab/index.ts → dist/components/extended-fab/index.d.ts} +6 -15
  88. package/dist/components/extended-fab/types.d.ts +703 -0
  89. package/dist/components/fab/api.d.ts +64 -0
  90. package/dist/components/fab/config.d.ts +71 -0
  91. package/dist/components/fab/constants.d.ts +75 -0
  92. package/{src/components/fab/fab.ts → dist/components/fab/fab.d.ts} +10 -46
  93. package/{src/components/fab/index.ts → dist/components/fab/index.d.ts} +6 -15
  94. package/dist/components/fab/types.d.ts +577 -0
  95. package/dist/components/index.d.ts +76 -0
  96. package/dist/components/list/api.d.ts +106 -0
  97. package/dist/components/list/config.d.ts +61 -0
  98. package/dist/components/list/constants.d.ts +76 -0
  99. package/dist/components/list/features/index.d.ts +2 -0
  100. package/dist/components/list/features/listmanager.d.ts +9 -0
  101. package/dist/components/list/features/selection.d.ts +9 -0
  102. package/dist/components/list/index.d.ts +12 -0
  103. package/dist/components/list/list.d.ts +11 -0
  104. package/dist/components/list/types.d.ts +294 -0
  105. package/dist/components/menu/api.d.ts +58 -0
  106. package/dist/components/menu/config.d.ts +78 -0
  107. package/dist/components/menu/constants.d.ts +106 -0
  108. package/dist/components/menu/features/controller.d.ts +10 -0
  109. package/dist/components/menu/features/index.d.ts +6 -0
  110. package/dist/components/menu/features/keyboard.d.ts +26 -0
  111. package/dist/components/menu/features/opener.d.ts +10 -0
  112. package/dist/components/menu/features/position.d.ts +18 -0
  113. package/dist/components/menu/features/submenu.d.ts +10 -0
  114. package/{src/components/menu/index.ts → dist/components/menu/index.d.ts} +11 -27
  115. package/dist/components/menu/menu.d.ts +29 -0
  116. package/dist/components/menu/types.d.ts +338 -0
  117. package/dist/components/navigation/api.d.ts +8 -0
  118. package/dist/components/navigation/config.d.ts +34 -0
  119. package/dist/components/navigation/constants.d.ts +137 -0
  120. package/dist/components/navigation/features/controller.d.ts +30 -0
  121. package/dist/components/navigation/features/items.d.ts +32 -0
  122. package/dist/components/navigation/index.d.ts +3 -0
  123. package/dist/components/navigation/nav-item.d.ts +30 -0
  124. package/dist/components/navigation/navigation.d.ts +8 -0
  125. package/dist/components/navigation/system/core.d.ts +72 -0
  126. package/dist/components/navigation/system/events.d.ts +35 -0
  127. package/dist/components/navigation/system/index.d.ts +10 -0
  128. package/dist/components/navigation/system/mobile.d.ts +52 -0
  129. package/dist/components/navigation/system/state.d.ts +22 -0
  130. package/dist/components/navigation/system/types.d.ts +305 -0
  131. package/dist/components/navigation/types.d.ts +216 -0
  132. package/dist/components/progress/api.d.ts +46 -0
  133. package/dist/components/progress/config.d.ts +72 -0
  134. package/dist/components/progress/constants.d.ts +139 -0
  135. package/dist/components/progress/features/canvas.d.ts +32 -0
  136. package/dist/components/progress/features/circular.d.ts +9 -0
  137. package/dist/components/progress/features/index.d.ts +8 -0
  138. package/dist/components/progress/features/linear.d.ts +9 -0
  139. package/dist/components/progress/features/resize-observer.d.ts +5 -0
  140. package/dist/components/progress/features/state.d.ts +38 -0
  141. package/dist/components/progress/features.d.ts +40 -0
  142. package/dist/components/progress/index.d.ts +3 -0
  143. package/dist/components/progress/progress.d.ts +24 -0
  144. package/dist/components/progress/types.d.ts +272 -0
  145. package/dist/components/radios/api.d.ts +37 -0
  146. package/dist/components/radios/config.d.ts +42 -0
  147. package/dist/components/radios/constants.d.ts +114 -0
  148. package/dist/components/radios/index.d.ts +3 -0
  149. package/dist/components/radios/radio.d.ts +8 -0
  150. package/dist/components/radios/radios.d.ts +8 -0
  151. package/dist/components/radios/types.d.ts +189 -0
  152. package/dist/components/search/api.d.ts +55 -0
  153. package/dist/components/search/config.d.ts +73 -0
  154. package/dist/components/search/constants.d.ts +128 -0
  155. package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
  156. package/dist/components/search/features/search.d.ts +7 -0
  157. package/dist/components/search/features/states.d.ts +8 -0
  158. package/dist/components/search/features/structure.d.ts +7 -0
  159. package/dist/components/search/index.d.ts +3 -0
  160. package/dist/components/search/search.d.ts +8 -0
  161. package/dist/components/search/types.d.ts +132 -0
  162. package/dist/components/segmented-button/config.d.ts +65 -0
  163. package/dist/components/segmented-button/constants.d.ts +85 -0
  164. package/dist/components/segmented-button/index.d.ts +4 -0
  165. package/dist/components/segmented-button/segment.d.ts +15 -0
  166. package/dist/components/segmented-button/segmented-button.d.ts +49 -0
  167. package/dist/components/segmented-button/types.d.ts +257 -0
  168. package/dist/components/select/api.d.ts +8 -0
  169. package/dist/components/select/config.d.ts +18 -0
  170. package/dist/components/select/constants.d.ts +113 -0
  171. package/dist/components/select/features.d.ts +13 -0
  172. package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
  173. package/dist/components/select/select.d.ts +36 -0
  174. package/dist/components/select/types.d.ts +302 -0
  175. package/dist/components/sheet/api.d.ts +37 -0
  176. package/dist/components/sheet/config.d.ts +42 -0
  177. package/dist/components/sheet/constants.d.ts +136 -0
  178. package/dist/components/sheet/features/content.d.ts +6 -0
  179. package/dist/components/sheet/features/gestures.d.ts +6 -0
  180. package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
  181. package/dist/components/sheet/features/position.d.ts +7 -0
  182. package/dist/components/sheet/features/state.d.ts +6 -0
  183. package/dist/components/sheet/features/title.d.ts +6 -0
  184. package/dist/components/sheet/index.d.ts +3 -0
  185. package/dist/components/sheet/sheet.d.ts +8 -0
  186. package/dist/components/sheet/types.d.ts +250 -0
  187. package/dist/components/slider/api.d.ts +57 -0
  188. package/dist/components/slider/config.d.ts +75 -0
  189. package/dist/components/slider/constants.d.ts +138 -0
  190. package/dist/components/slider/features/controller.d.ts +9 -0
  191. package/dist/components/slider/features/handlers.d.ts +25 -0
  192. package/dist/components/slider/features/index.d.ts +3 -0
  193. package/dist/components/slider/features/range.d.ts +8 -0
  194. package/dist/components/slider/features/states.d.ts +9 -0
  195. package/dist/components/slider/index.d.ts +3 -0
  196. package/dist/components/slider/schema.d.ts +108 -0
  197. package/dist/components/slider/slider.d.ts +18 -0
  198. package/dist/components/slider/types.d.ts +170 -0
  199. package/dist/components/snackbar/api.d.ts +7 -0
  200. package/dist/components/snackbar/config.d.ts +55 -0
  201. package/dist/components/snackbar/constants.d.ts +88 -0
  202. package/dist/components/snackbar/features.d.ts +13 -0
  203. package/dist/components/snackbar/index.d.ts +3 -0
  204. package/dist/components/snackbar/position.d.ts +15 -0
  205. package/dist/components/snackbar/queue.d.ts +7 -0
  206. package/dist/components/snackbar/snackbar.d.ts +8 -0
  207. package/dist/components/snackbar/types.d.ts +172 -0
  208. package/dist/components/switch/api.d.ts +7 -0
  209. package/dist/components/switch/config.d.ts +34 -0
  210. package/dist/components/switch/constants.d.ts +88 -0
  211. package/dist/components/switch/features.d.ts +59 -0
  212. package/dist/components/switch/index.d.ts +4 -0
  213. package/dist/components/switch/switch.d.ts +8 -0
  214. package/dist/components/switch/types.d.ts +131 -0
  215. package/dist/components/tabs/api.d.ts +52 -0
  216. package/dist/components/tabs/config.d.ts +39 -0
  217. package/dist/components/tabs/constants.d.ts +142 -0
  218. package/dist/components/tabs/features.d.ts +133 -0
  219. package/dist/components/tabs/index.d.ts +11 -0
  220. package/dist/components/tabs/indicator.d.ts +49 -0
  221. package/dist/components/tabs/responsive.d.ts +38 -0
  222. package/dist/components/tabs/scroll-indicators.d.ts +18 -0
  223. package/dist/components/tabs/state.d.ts +53 -0
  224. package/dist/components/tabs/tab-api.d.ts +43 -0
  225. package/dist/components/tabs/tab.d.ts +7 -0
  226. package/dist/components/tabs/tabs.d.ts +27 -0
  227. package/dist/components/tabs/types.d.ts +390 -0
  228. package/dist/components/tabs/utils.d.ts +17 -0
  229. package/dist/components/textfield/api.d.ts +8 -0
  230. package/dist/components/textfield/config.d.ts +34 -0
  231. package/dist/components/textfield/constants.d.ts +148 -0
  232. package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
  233. package/dist/components/textfield/features/leading-icon.d.ts +55 -0
  234. package/dist/components/textfield/features/placement.d.ts +28 -0
  235. package/dist/components/textfield/features/prefix-text.d.ts +54 -0
  236. package/dist/components/textfield/features/suffix-text.d.ts +54 -0
  237. package/dist/components/textfield/features/supporting-text.d.ts +59 -0
  238. package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
  239. package/dist/components/textfield/index.d.ts +3 -0
  240. package/dist/components/textfield/textfield.d.ts +36 -0
  241. package/dist/components/textfield/types.d.ts +217 -0
  242. package/dist/components/timepicker/api.d.ts +24 -0
  243. package/dist/components/timepicker/clockdial.d.ts +34 -0
  244. package/dist/components/timepicker/config.d.ts +75 -0
  245. package/dist/components/timepicker/constants.d.ts +266 -0
  246. package/dist/components/timepicker/index.d.ts +4 -0
  247. package/dist/components/timepicker/render.d.ts +9 -0
  248. package/dist/components/timepicker/timepicker.d.ts +8 -0
  249. package/dist/components/timepicker/types.d.ts +284 -0
  250. package/dist/components/timepicker/utils.d.ts +74 -0
  251. package/dist/components/tooltip/api.d.ts +18 -0
  252. package/dist/components/tooltip/config.d.ts +38 -0
  253. package/dist/components/tooltip/constants.d.ts +108 -0
  254. package/dist/components/tooltip/index.d.ts +3 -0
  255. package/dist/components/tooltip/tooltip.d.ts +8 -0
  256. package/dist/components/tooltip/types.d.ts +188 -0
  257. package/dist/components/top-app-bar/config.d.ts +16 -0
  258. package/dist/components/top-app-bar/constants.d.ts +74 -0
  259. package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
  260. package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
  261. package/dist/components/top-app-bar/types.d.ts +118 -0
  262. package/dist/constants.d.ts +30 -0
  263. package/dist/core/canvas/index.d.ts +5 -0
  264. package/dist/core/canvas/resize.d.ts +14 -0
  265. package/dist/core/collection/adapters/base.d.ts +47 -0
  266. package/dist/core/collection/adapters/route.d.ts +149 -0
  267. package/dist/core/collection/collection.d.ts +131 -0
  268. package/dist/core/collection/index.d.ts +10 -0
  269. package/dist/core/collection/list-manager/config.d.ts +29 -0
  270. package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
  271. package/dist/core/collection/list-manager/index.d.ts +61 -0
  272. package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
  273. package/dist/core/collection/list-manager/renderer.d.ts +31 -0
  274. package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
  275. package/dist/core/collection/list-manager/state.d.ts +60 -0
  276. package/dist/core/collection/list-manager/types.d.ts +361 -0
  277. package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
  278. package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
  279. package/dist/core/compose/base.d.ts +31 -0
  280. package/dist/core/compose/component.d.ts +61 -0
  281. package/dist/core/compose/features/badge.d.ts +43 -0
  282. package/dist/core/compose/features/checkable.d.ts +59 -0
  283. package/dist/core/compose/features/constants.d.ts +45 -0
  284. package/dist/core/compose/features/debounce.d.ts +84 -0
  285. package/dist/core/compose/features/disabled.d.ts +47 -0
  286. package/dist/core/compose/features/events.d.ts +37 -0
  287. package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
  288. package/dist/core/compose/features/gestures/pan.d.ts +108 -0
  289. package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
  290. package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
  291. package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
  292. package/dist/core/compose/features/gestures/tap.d.ts +79 -0
  293. package/dist/core/compose/features/gestures.d.ts +86 -0
  294. package/dist/core/compose/features/icon.d.ts +71 -0
  295. package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
  296. package/dist/core/compose/features/input.d.ts +71 -0
  297. package/dist/core/compose/features/lifecycle.d.ts +61 -0
  298. package/dist/core/compose/features/position.d.ts +51 -0
  299. package/dist/core/compose/features/ripple.d.ts +61 -0
  300. package/dist/core/compose/features/size.d.ts +17 -0
  301. package/dist/core/compose/features/style.d.ts +16 -0
  302. package/dist/core/compose/features/text.d.ts +63 -0
  303. package/dist/core/compose/features/textinput.d.ts +93 -0
  304. package/dist/core/compose/features/textlabel.d.ts +57 -0
  305. package/dist/core/compose/features/throttle.d.ts +75 -0
  306. package/dist/core/compose/features/track.d.ts +42 -0
  307. package/dist/core/compose/features/variant.d.ts +17 -0
  308. package/dist/core/compose/features/withEvents.d.ts +45 -0
  309. package/dist/core/compose/index.d.ts +17 -0
  310. package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
  311. package/dist/core/compose/utils/type-guards.d.ts +27 -0
  312. package/dist/core/composition/features/dom.d.ts +19 -0
  313. package/dist/core/composition/features/icon.d.ts +45 -0
  314. package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
  315. package/dist/core/composition/features/label.d.ts +49 -0
  316. package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
  317. package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
  318. package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +35 -83
  319. package/dist/core/config.d.ts +130 -0
  320. package/dist/core/dom/attributes.d.ts +20 -0
  321. package/dist/core/dom/classes.d.ts +52 -0
  322. package/dist/core/dom/create.d.ts +154 -0
  323. package/dist/core/dom/events.d.ts +69 -0
  324. package/dist/core/dom/index.d.ts +6 -0
  325. package/dist/core/dom/utils.d.ts +42 -0
  326. package/dist/core/gestures/index.d.ts +12 -0
  327. package/dist/core/gestures/longpress.d.ts +23 -0
  328. package/dist/core/gestures/manager.d.ts +14 -0
  329. package/dist/core/gestures/pan.d.ts +12 -0
  330. package/dist/core/gestures/pinch.d.ts +14 -0
  331. package/dist/core/gestures/rotate.d.ts +14 -0
  332. package/dist/core/gestures/swipe.d.ts +20 -0
  333. package/dist/core/gestures/tap.d.ts +12 -0
  334. package/dist/core/gestures/types.d.ts +320 -0
  335. package/dist/core/gestures/utils.d.ts +57 -0
  336. package/dist/core/index.d.ts +29 -0
  337. package/dist/core/layout/array.d.ts +15 -0
  338. package/dist/core/layout/config.d.ts +32 -0
  339. package/dist/core/layout/create.d.ts +14 -0
  340. package/dist/core/layout/index.d.ts +13 -0
  341. package/dist/core/layout/jsx.d.ts +13 -0
  342. package/dist/core/layout/object.d.ts +14 -0
  343. package/dist/core/layout/processor.d.ts +28 -0
  344. package/dist/core/layout/result.d.ts +12 -0
  345. package/dist/core/layout/template.d.ts +12 -0
  346. package/dist/core/layout/types.d.ts +137 -0
  347. package/dist/core/layout/utils.d.ts +38 -0
  348. package/dist/core/state/disabled.d.ts +32 -0
  349. package/dist/core/state/emitter.d.ts +40 -0
  350. package/dist/core/state/events.d.ts +36 -0
  351. package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
  352. package/dist/core/state/lifecycle.d.ts +57 -0
  353. package/dist/core/state/store.d.ts +82 -0
  354. package/dist/core/utils/background.d.ts +40 -0
  355. package/dist/core/utils/index.d.ts +18 -0
  356. package/dist/core/utils/mobile.d.ts +54 -0
  357. package/dist/core/utils/object.d.ts +13 -0
  358. package/dist/core/utils/performance.d.ts +79 -0
  359. package/dist/core/utils/theme.d.ts +38 -0
  360. package/dist/core/utils/validate.d.ts +73 -0
  361. package/dist/index.cjs +64 -0
  362. package/dist/index.cjs.map +291 -0
  363. package/dist/index.d.ts +15 -0
  364. package/dist/index.js +53 -14854
  365. package/dist/index.js.map +291 -0
  366. package/dist/package.json +39 -0
  367. package/dist/styles.css +7 -0
  368. package/package.json +23 -4
  369. package/.env +0 -15
  370. package/.typedocignore +0 -11
  371. package/CONTRIBUTING.md +0 -218
  372. package/DOCS.md +0 -153
  373. package/TESTING.md +0 -214
  374. package/git-user-stats.js +0 -545
  375. package/index.ts +0 -10
  376. package/src/components/badge/api.ts +0 -313
  377. package/src/components/badge/config.ts +0 -153
  378. package/src/components/badge/features.ts +0 -194
  379. package/src/components/badge/index.ts +0 -90
  380. package/src/components/badge/types.ts +0 -279
  381. package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
  382. package/src/components/bottom-app-bar/config.ts +0 -29
  383. package/src/components/bottom-app-bar/types.ts +0 -114
  384. package/src/components/button/api.ts +0 -172
  385. package/src/components/button/button.ts +0 -112
  386. package/src/components/button/config.ts +0 -96
  387. package/src/components/button/index.ts +0 -37
  388. package/src/components/button/types.ts +0 -290
  389. package/src/components/card/api.ts +0 -222
  390. package/src/components/card/config.ts +0 -304
  391. package/src/components/card/content.ts +0 -343
  392. package/src/components/card/features.ts +0 -407
  393. package/src/components/card/types.ts +0 -497
  394. package/src/components/carousel/api.ts +0 -147
  395. package/src/components/carousel/carousel.ts +0 -242
  396. package/src/components/carousel/config.ts +0 -91
  397. package/src/components/carousel/constants.ts +0 -181
  398. package/src/components/carousel/features/drag.ts +0 -388
  399. package/src/components/carousel/features/slides.ts +0 -682
  400. package/src/components/carousel/types.ts +0 -327
  401. package/src/components/checkbox/api.ts +0 -82
  402. package/src/components/checkbox/checkbox.ts +0 -142
  403. package/src/components/checkbox/config.ts +0 -89
  404. package/src/components/checkbox/types.ts +0 -342
  405. package/src/components/chips/api.ts +0 -194
  406. package/src/components/chips/chip/api.ts +0 -233
  407. package/src/components/chips/chip/chip.ts +0 -131
  408. package/src/components/chips/chip/config.ts +0 -91
  409. package/src/components/chips/chip/index.ts +0 -3
  410. package/src/components/chips/chips.md +0 -481
  411. package/src/components/chips/chips.ts +0 -75
  412. package/src/components/chips/config.ts +0 -109
  413. package/src/components/chips/constants.ts +0 -61
  414. package/src/components/chips/features/chip-items.ts +0 -33
  415. package/src/components/chips/features/container.ts +0 -77
  416. package/src/components/chips/features/controller.ts +0 -448
  417. package/src/components/chips/features/label.ts +0 -108
  418. package/src/components/chips/index.ts +0 -11
  419. package/src/components/chips/schema.ts +0 -61
  420. package/src/components/chips/types.ts +0 -469
  421. package/src/components/datepicker/api.ts +0 -265
  422. package/src/components/datepicker/config.ts +0 -141
  423. package/src/components/datepicker/datepicker.ts +0 -341
  424. package/src/components/datepicker/index.ts +0 -12
  425. package/src/components/datepicker/render.ts +0 -450
  426. package/src/components/datepicker/types.ts +0 -397
  427. package/src/components/datepicker/utils.ts +0 -289
  428. package/src/components/dialog/api.ts +0 -317
  429. package/src/components/dialog/config.ts +0 -116
  430. package/src/components/dialog/features.ts +0 -907
  431. package/src/components/dialog/index.ts +0 -141
  432. package/src/components/dialog/types.ts +0 -553
  433. package/src/components/divider/config.ts +0 -165
  434. package/src/components/divider/features.ts +0 -233
  435. package/src/components/divider/types.ts +0 -132
  436. package/src/components/extended-fab/api.ts +0 -193
  437. package/src/components/extended-fab/config.ts +0 -140
  438. package/src/components/extended-fab/extended-fab.ts +0 -153
  439. package/src/components/extended-fab/types.ts +0 -749
  440. package/src/components/fab/api.ts +0 -137
  441. package/src/components/fab/config.ts +0 -121
  442. package/src/components/fab/types.ts +0 -615
  443. package/src/components/list/api.ts +0 -82
  444. package/src/components/list/config.ts +0 -63
  445. package/src/components/list/features.ts +0 -229
  446. package/src/components/list/index.ts +0 -67
  447. package/src/components/list/list-item.ts +0 -163
  448. package/src/components/list/list.ts +0 -108
  449. package/src/components/list/types.ts +0 -396
  450. package/src/components/list/utils.ts +0 -98
  451. package/src/components/menu/api.ts +0 -230
  452. package/src/components/menu/config.ts +0 -127
  453. package/src/components/menu/features/anchor.ts +0 -394
  454. package/src/components/menu/features/controller.ts +0 -1423
  455. package/src/components/menu/features/index.ts +0 -13
  456. package/src/components/menu/features/position.ts +0 -353
  457. package/src/components/menu/menu.ts +0 -121
  458. package/src/components/menu/types.ts +0 -392
  459. package/src/components/navigation/api.ts +0 -142
  460. package/src/components/navigation/config.ts +0 -73
  461. package/src/components/navigation/features/controller.ts +0 -273
  462. package/src/components/navigation/features/items.ts +0 -353
  463. package/src/components/navigation/index.ts +0 -11
  464. package/src/components/navigation/nav-item.ts +0 -196
  465. package/src/components/navigation/navigation.ts +0 -115
  466. package/src/components/navigation/system/core.ts +0 -302
  467. package/src/components/navigation/system/events.ts +0 -240
  468. package/src/components/navigation/system/index.ts +0 -184
  469. package/src/components/navigation/system/mobile.ts +0 -278
  470. package/src/components/navigation/system/state.ts +0 -77
  471. package/src/components/navigation/system/types.ts +0 -364
  472. package/src/components/navigation/types.ts +0 -292
  473. package/src/components/progress/api.ts +0 -178
  474. package/src/components/progress/config.ts +0 -122
  475. package/src/components/progress/index.ts +0 -4
  476. package/src/components/progress/progress.ts +0 -159
  477. package/src/components/progress/types.ts +0 -255
  478. package/src/components/radios/api.ts +0 -125
  479. package/src/components/radios/config.ts +0 -59
  480. package/src/components/radios/constants.ts +0 -19
  481. package/src/components/radios/index.ts +0 -3
  482. package/src/components/radios/radio.ts +0 -292
  483. package/src/components/radios/radios.ts +0 -43
  484. package/src/components/radios/types.ts +0 -219
  485. package/src/components/search/api.ts +0 -203
  486. package/src/components/search/config.ts +0 -86
  487. package/src/components/search/features/search.ts +0 -717
  488. package/src/components/search/features/states.ts +0 -169
  489. package/src/components/search/features/structure.ts +0 -197
  490. package/src/components/search/index.ts +0 -7
  491. package/src/components/search/search.ts +0 -52
  492. package/src/components/search/types.ts +0 -175
  493. package/src/components/segmented-button/config.ts +0 -119
  494. package/src/components/segmented-button/index.ts +0 -4
  495. package/src/components/segmented-button/segment.ts +0 -108
  496. package/src/components/segmented-button/segmented-button.ts +0 -361
  497. package/src/components/segmented-button/types.ts +0 -306
  498. package/src/components/select/api.ts +0 -78
  499. package/src/components/select/config.ts +0 -76
  500. package/src/components/select/features.ts +0 -331
  501. package/src/components/select/select.ts +0 -73
  502. package/src/components/select/types.ts +0 -355
  503. package/src/components/sheet/api.ts +0 -96
  504. package/src/components/sheet/config.ts +0 -65
  505. package/src/components/sheet/features/content.ts +0 -51
  506. package/src/components/sheet/features/gestures.ts +0 -177
  507. package/src/components/sheet/features/position.ts +0 -41
  508. package/src/components/sheet/features/state.ts +0 -116
  509. package/src/components/sheet/features/title.ts +0 -86
  510. package/src/components/sheet/index.ts +0 -12
  511. package/src/components/sheet/sheet.ts +0 -56
  512. package/src/components/sheet/types.ts +0 -294
  513. package/src/components/slider/accessibility.md +0 -59
  514. package/src/components/slider/api.ts +0 -192
  515. package/src/components/slider/config.ts +0 -118
  516. package/src/components/slider/features/controller.ts +0 -737
  517. package/src/components/slider/features/handlers.ts +0 -497
  518. package/src/components/slider/features/index.ts +0 -5
  519. package/src/components/slider/features/range.ts +0 -104
  520. package/src/components/slider/features/states.ts +0 -195
  521. package/src/components/slider/index.ts +0 -17
  522. package/src/components/slider/schema.ts +0 -141
  523. package/src/components/slider/slider.ts +0 -76
  524. package/src/components/slider/types.ts +0 -223
  525. package/src/components/snackbar/api.ts +0 -162
  526. package/src/components/snackbar/config.ts +0 -61
  527. package/src/components/snackbar/features.ts +0 -76
  528. package/src/components/snackbar/index.ts +0 -9
  529. package/src/components/snackbar/position.ts +0 -79
  530. package/src/components/snackbar/queue.ts +0 -76
  531. package/src/components/snackbar/snackbar.ts +0 -60
  532. package/src/components/snackbar/types.ts +0 -159
  533. package/src/components/switch/api.ts +0 -93
  534. package/src/components/switch/config.ts +0 -56
  535. package/src/components/switch/features.ts +0 -198
  536. package/src/components/switch/index.ts +0 -8
  537. package/src/components/switch/switch.ts +0 -52
  538. package/src/components/switch/types.ts +0 -168
  539. package/src/components/tabs/api.ts +0 -221
  540. package/src/components/tabs/config.ts +0 -73
  541. package/src/components/tabs/features.ts +0 -403
  542. package/src/components/tabs/index.ts +0 -46
  543. package/src/components/tabs/indicator.ts +0 -285
  544. package/src/components/tabs/responsive.ts +0 -144
  545. package/src/components/tabs/scroll-indicators.ts +0 -149
  546. package/src/components/tabs/state.ts +0 -186
  547. package/src/components/tabs/tab-api.ts +0 -266
  548. package/src/components/tabs/tab.ts +0 -267
  549. package/src/components/tabs/tabs.ts +0 -71
  550. package/src/components/tabs/types.ts +0 -461
  551. package/src/components/tabs/utils.ts +0 -107
  552. package/src/components/textfield/api.ts +0 -197
  553. package/src/components/textfield/config.ts +0 -52
  554. package/src/components/textfield/features/leading-icon.ts +0 -127
  555. package/src/components/textfield/features/placement.ts +0 -149
  556. package/src/components/textfield/features/prefix-text.ts +0 -107
  557. package/src/components/textfield/features/suffix-text.ts +0 -100
  558. package/src/components/textfield/features/supporting-text.ts +0 -113
  559. package/src/components/textfield/features/trailing-icon.ts +0 -108
  560. package/src/components/textfield/index.ts +0 -9
  561. package/src/components/textfield/textfield.ts +0 -92
  562. package/src/components/textfield/types.ts +0 -265
  563. package/src/components/timepicker/README.md +0 -277
  564. package/src/components/timepicker/api.ts +0 -632
  565. package/src/components/timepicker/clockdial.ts +0 -479
  566. package/src/components/timepicker/config.ts +0 -228
  567. package/src/components/timepicker/index.ts +0 -3
  568. package/src/components/timepicker/render.ts +0 -613
  569. package/src/components/timepicker/timepicker.ts +0 -117
  570. package/src/components/timepicker/types.ts +0 -336
  571. package/src/components/timepicker/utils.ts +0 -241
  572. package/src/components/tooltip/api.ts +0 -415
  573. package/src/components/tooltip/config.ts +0 -80
  574. package/src/components/tooltip/index.ts +0 -12
  575. package/src/components/tooltip/tooltip.ts +0 -60
  576. package/src/components/tooltip/types.ts +0 -223
  577. package/src/components/top-app-bar/config.ts +0 -83
  578. package/src/components/top-app-bar/top-app-bar.ts +0 -316
  579. package/src/components/top-app-bar/types.ts +0 -140
  580. package/src/core/build/constants.ts +0 -48
  581. package/src/core/build/icon.ts +0 -137
  582. package/src/core/build/ripple.ts +0 -193
  583. package/src/core/build/text.ts +0 -91
  584. package/src/core/collection/adapters/base.ts +0 -62
  585. package/src/core/collection/adapters/route.ts +0 -201
  586. package/src/core/collection/collection.ts +0 -300
  587. package/src/core/collection/index.ts +0 -57
  588. package/src/core/collection/list-manager.ts +0 -333
  589. package/src/core/compose/base.ts +0 -43
  590. package/src/core/compose/component.ts +0 -255
  591. package/src/core/compose/features/badge.ts +0 -79
  592. package/src/core/compose/features/checkable.ts +0 -155
  593. package/src/core/compose/features/disabled.ts +0 -116
  594. package/src/core/compose/features/events.ts +0 -65
  595. package/src/core/compose/features/icon.ts +0 -71
  596. package/src/core/compose/features/input.ts +0 -174
  597. package/src/core/compose/features/lifecycle.ts +0 -139
  598. package/src/core/compose/features/position.ts +0 -94
  599. package/src/core/compose/features/ripple.ts +0 -58
  600. package/src/core/compose/features/size.ts +0 -29
  601. package/src/core/compose/features/style.ts +0 -31
  602. package/src/core/compose/features/text.ts +0 -44
  603. package/src/core/compose/features/textinput.ts +0 -238
  604. package/src/core/compose/features/textlabel.ts +0 -113
  605. package/src/core/compose/features/track.ts +0 -84
  606. package/src/core/compose/features/variant.ts +0 -29
  607. package/src/core/compose/features/withEvents.ts +0 -137
  608. package/src/core/compose/index.ts +0 -54
  609. package/src/core/composition/features/dom.ts +0 -45
  610. package/src/core/composition/features/icon.ts +0 -131
  611. package/src/core/composition/features/label.ts +0 -155
  612. package/src/core/config.ts +0 -211
  613. package/src/core/dom/attributes.ts +0 -33
  614. package/src/core/dom/classes.ts +0 -132
  615. package/src/core/dom/create.ts +0 -273
  616. package/src/core/dom/events.ts +0 -209
  617. package/src/core/dom/index.ts +0 -10
  618. package/src/core/dom/utils.ts +0 -97
  619. package/src/core/index.ts +0 -111
  620. package/src/core/layout/README.md +0 -715
  621. package/src/core/layout/array.ts +0 -180
  622. package/src/core/layout/config.ts +0 -193
  623. package/src/core/layout/create.ts +0 -54
  624. package/src/core/layout/index.ts +0 -36
  625. package/src/core/layout/object.ts +0 -123
  626. package/src/core/layout/processor.ts +0 -106
  627. package/src/core/layout/result.ts +0 -84
  628. package/src/core/layout/types.ts +0 -180
  629. package/src/core/layout/utils.ts +0 -144
  630. package/src/core/state/disabled.ts +0 -81
  631. package/src/core/state/emitter.ts +0 -94
  632. package/src/core/state/events.ts +0 -88
  633. package/src/core/state/lifecycle.ts +0 -131
  634. package/src/core/state/store.ts +0 -197
  635. package/src/core/utils/index.ts +0 -45
  636. package/src/core/utils/mobile.ts +0 -98
  637. package/src/core/utils/object.ts +0 -41
  638. package/src/core/utils/validate.ts +0 -234
  639. package/src/index.ts +0 -90
  640. package/src/styles/abstract/_base.scss +0 -2
  641. package/src/styles/abstract/_config.scss +0 -28
  642. package/src/styles/abstract/_functions.scss +0 -124
  643. package/src/styles/abstract/_mixins.scss +0 -352
  644. package/src/styles/abstract/_theme.scss +0 -269
  645. package/src/styles/abstract/_variables.scss +0 -305
  646. package/src/styles/base/_reset.scss +0 -86
  647. package/src/styles/base/_typography.scss +0 -155
  648. package/src/styles/components/_badge.scss +0 -182
  649. package/src/styles/components/_bottom-app-bar.scss +0 -103
  650. package/src/styles/components/_button.scss +0 -224
  651. package/src/styles/components/_card.scss +0 -401
  652. package/src/styles/components/_carousel.scss +0 -645
  653. package/src/styles/components/_checkbox.scss +0 -231
  654. package/src/styles/components/_chips.scss +0 -638
  655. package/src/styles/components/_datepicker.scss +0 -358
  656. package/src/styles/components/_dialog.scss +0 -259
  657. package/src/styles/components/_divider.scss +0 -57
  658. package/src/styles/components/_extended-fab.scss +0 -267
  659. package/src/styles/components/_fab.scss +0 -225
  660. package/src/styles/components/_list.scss +0 -248
  661. package/src/styles/components/_menu.scss +0 -242
  662. package/src/styles/components/_navigation-mobile.scss +0 -244
  663. package/src/styles/components/_navigation-system.scss +0 -151
  664. package/src/styles/components/_navigation.scss +0 -407
  665. package/src/styles/components/_progress.scss +0 -151
  666. package/src/styles/components/_radios.scss +0 -187
  667. package/src/styles/components/_search.scss +0 -306
  668. package/src/styles/components/_segmented-button.scss +0 -227
  669. package/src/styles/components/_select.scss +0 -272
  670. package/src/styles/components/_sheet.scss +0 -236
  671. package/src/styles/components/_slider.scss +0 -489
  672. package/src/styles/components/_snackbar.scss +0 -211
  673. package/src/styles/components/_switch.scss +0 -298
  674. package/src/styles/components/_tabs.scss +0 -416
  675. package/src/styles/components/_textfield.scss +0 -773
  676. package/src/styles/components/_timepicker.scss +0 -451
  677. package/src/styles/components/_tooltip.scss +0 -241
  678. package/src/styles/components/_top-app-bar.scss +0 -225
  679. package/src/styles/main.scss +0 -175
  680. package/src/styles/themes/_autumn.scss +0 -105
  681. package/src/styles/themes/_base-theme.scss +0 -85
  682. package/src/styles/themes/_baseline.scss +0 -173
  683. package/src/styles/themes/_bluekhaki.scss +0 -125
  684. package/src/styles/themes/_brownbeige.scss +0 -125
  685. package/src/styles/themes/_browngreen.scss +0 -125
  686. package/src/styles/themes/_forest.scss +0 -77
  687. package/src/styles/themes/_greenbeige.scss +0 -125
  688. package/src/styles/themes/_index.scss +0 -6
  689. package/src/styles/themes/_material.scss +0 -125
  690. package/src/styles/themes/_ocean.scss +0 -77
  691. package/src/styles/themes/_sageivory.scss +0 -125
  692. package/src/styles/themes/_spring.scss +0 -77
  693. package/src/styles/themes/_summer.scss +0 -87
  694. package/src/styles/themes/_sunset.scss +0 -60
  695. package/src/styles/themes/_tealcaramel.scss +0 -125
  696. package/src/styles/themes/_winter.scss +0 -77
  697. package/src/styles/utilities/_colors.scss +0 -154
  698. package/src/styles/utilities/_flexbox.scss +0 -194
  699. package/src/styles/utilities/_layout.scss +0 -665
  700. package/src/styles/utilities/_ripple.scss +0 -79
  701. package/src/styles/utilities/_spacing.scss +0 -139
  702. package/src/styles/utilities/_typography.scss +0 -178
  703. package/src/styles/utilities/_visibility.scss +0 -142
@@ -1,715 +0,0 @@
1
- # Layout Module Documentation
2
-
3
- ## Overview
4
-
5
- The Layout Module is a lightweight, flexible system for creating and managing visual arrangements and component hierarchies. It provides a declarative approach to building UI layouts using either arrays or objects, with efficient DOM operations, component instantiation, and visual arrangement.
6
-
7
- ## Features
8
-
9
- - **Multiple Schema Formats** - Support for array-based, object-based, and HTML string schemas
10
- - **Efficient DOM Operations** - Batched DOM manipulations with DocumentFragment
11
- - **Component Management** - Easy access to component instances via consistent API
12
- - **Layout System Integration** - Direct access to powerful CSS layout classes
13
- - **Customizable Creation** - Control class prefixing and specify default creators
14
- - **Optimized for Bundle Size** - Minimal footprint with maximum functionality
15
- - **TypeScript Support** - Full type definitions for developer experience
16
-
17
- ## Installation
18
-
19
- ```bash
20
- npm install mtrl
21
- ```
22
-
23
- ## Core Concepts
24
-
25
- The Layout Module consists of several key parts:
26
-
27
- 1. **Schema Definition** - A declarative way to describe your layout
28
- 2. **Layout Processing** - Converting the schema into DOM elements
29
- 3. **Layout Configuration** - Setting up responsive layouts and grids
30
- 4. **Component Instance Management** - Accessing and controlling created components
31
-
32
- ## Basic Usage
33
-
34
- ### Array-based Layout
35
-
36
- ```javascript
37
- import { createLayout, createButton, createDialog } from 'mtrl';
38
-
39
- const layout = createLayout([
40
- // Root level contains primary components
41
- createButton, 'submitButton', { text: 'Submit', variant: 'primary' },
42
-
43
- // Dialog is a root component, not nested inside other elements
44
- createDialog, 'confirmDialog', {
45
- title: 'Confirm Action',
46
- closeOnBackdrop: true,
47
- width: '350px'
48
- }
49
- ]);
50
-
51
- // Access components
52
- const submitButton = layout.get('submitButton');
53
- const confirmDialog = layout.get('confirmDialog');
54
-
55
- // Handle events
56
- submitButton.on('click', () => confirmDialog.open());
57
- ```
58
-
59
- ### Object-based Layout
60
-
61
- ```javascript
62
- import { createLayout, createTopAppBar, createList, createListItem } from 'mtrl';
63
-
64
- const layout = createLayout({
65
- element: {
66
- creator: createTopAppBar,
67
- options: {
68
- title: 'Profile Settings',
69
- variant: 'small'
70
- },
71
- children: {
72
- navigation: {
73
- creator: createNavigation,
74
- options: {
75
- variant: 'drawer',
76
- persistent: true,
77
- // CSS layout configuration
78
- layout: {
79
- type: 'stack',
80
- gap: 4,
81
- align: 'stretch'
82
- }
83
- },
84
- children: {
85
- navList: {
86
- creator: createList,
87
- options: { interactive: true },
88
- children: {
89
- profileLink: {
90
- creator: createListItem,
91
- options: { text: 'Profile', leading: 'person' }
92
- },
93
- settingsLink: {
94
- creator: createListItem,
95
- options: { text: 'Settings', leading: 'settings' }
96
- }
97
- }
98
- }
99
- }
100
- },
101
- content: {
102
- options: {
103
- tag: 'main',
104
- className: 'content',
105
- // Grid layout configuration
106
- layout: {
107
- type: 'grid',
108
- columns: 3,
109
- gap: 6,
110
- autoHeight: true
111
- }
112
- }
113
- }
114
- }
115
- }
116
- });
117
- ```
118
-
119
- ### HTML String Layout
120
-
121
- ```javascript
122
- import { createLayout } from 'mtrl';
123
-
124
- const layout = createLayout(`
125
- <div class="notification">
126
- <h3>Welcome!</h3>
127
- <p>Thank you for joining our platform.</p>
128
- </div>
129
- `);
130
-
131
- // Access the root element
132
- const notification = layout.element;
133
- document.body.appendChild(notification);
134
- ```
135
-
136
- ## Layout Configuration
137
-
138
- The layout module supports direct integration with the CSS layout system through the `layout` property:
139
-
140
- ### Grid Layout
141
-
142
- ```javascript
143
- createLayout({
144
- gridContainer: {
145
- options: {
146
- className: 'container',
147
- layout: {
148
- type: 'grid',
149
- columns: 3, // Number of columns
150
- gap: 4, // Gap size (using the gap scale)
151
- autoHeight: true, // Allow natural heights
152
- dense: true, // Dense packing algorithm
153
- align: 'center' // Alignment of items
154
- }
155
- },
156
- children: {
157
- item1: {
158
- options: {
159
- text: 'Item 1',
160
- // Individual item layout configuration
161
- layoutItem: {
162
- span: 2, // Span 2 columns
163
- rowSpan: 1, // Span 1 row
164
- align: 'start' // Self-alignment
165
- }
166
- }
167
- }
168
- }
169
- }
170
- });
171
- ```
172
-
173
- ### Stack Layout (Vertical)
174
-
175
- ```javascript
176
- createLayout({
177
- stack: {
178
- options: {
179
- layout: {
180
- type: 'stack',
181
- gap: 4, // Space between items
182
- align: 'center', // Center items horizontally
183
- justify: 'between' // Space between items vertically
184
- }
185
- },
186
- children: {
187
- header: { options: { text: 'Header' } },
188
- content: { options: { text: 'Content' } },
189
- footer: { options: { text: 'Footer' } }
190
- }
191
- }
192
- });
193
- ```
194
-
195
- ### Row Layout (Horizontal)
196
-
197
- ```javascript
198
- createLayout({
199
- row: {
200
- options: {
201
- layout: {
202
- type: 'row',
203
- gap: 4, // Space between items
204
- align: 'center', // Center items vertically
205
- justify: 'between', // Space between items horizontally
206
- wrap: true, // Allow wrapping
207
- mobileStack: true // Stack on mobile devices
208
- }
209
- },
210
- children: {
211
- // Row items...
212
- }
213
- }
214
- });
215
- ```
216
-
217
- ## Layout Types
218
-
219
- The layout system supports several layout types that can be used in the `layout.type` property:
220
-
221
- | Type | Description | Key Options |
222
- |------|-------------|------------|
223
- | `stack` | Vertical column of elements | `align`, `justify`, `gap` |
224
- | `row` | Horizontal row of elements | `align`, `justify`, `wrap`, `gap`, `mobileStack` |
225
- | `grid` | CSS Grid-based layout | `columns`, `gap`, `autoHeight`, `dense` |
226
- | `masonry` | Masonry-style layout | `masonryColumns`, `gap` |
227
- | `split` | Two-column split layout | `ratio`, `gap` |
228
- | `sidebar` | Sidebar with main content | `sidebarPosition`, `sidebarWidth` |
229
-
230
- ## Layout Item Properties
231
-
232
- When using the `layoutItem` property to configure individual items:
233
-
234
- | Property | Description | Example Values |
235
- |----------|-------------|----------------|
236
- | `width` | Column width in 12-column grid | `1` through `12` |
237
- | `span` | Grid column span | `1` through `12` |
238
- | `rowSpan` | Grid row span | `1` through `12` |
239
- | `sm`, `md`, `lg`, `xl` | Responsive widths | `1` through `12` |
240
- | `order` | Item ordering | `'first'`, `'last'`, or a number |
241
- | `align` | Self-alignment | `'start'`, `'center'`, `'end'`, `'stretch'` |
242
- | `auto` | Auto width (flex) | `true`, `false` |
243
-
244
- ## Layout Functions
245
-
246
- ### `createLayout(schema, parentElement?, options?)`
247
-
248
- Creates a layout from a schema definition.
249
-
250
- - **Parameters**:
251
- - `schema`: Array, object, HTML string, or function returning one of these
252
- - `parentElement` (optional): Parent element to attach the layout to
253
- - `options` (optional): Configuration options for layout creation
254
- - **Returns**: Layout result object with components and utility methods
255
-
256
- ```javascript
257
- const layout = createLayout(schema, document.getElementById('container'), {
258
- creator: createCard, // Default creator for elements without a specific one
259
- prefix: true, // Whether to apply automatic class prefixing
260
- theme: 'dark' // Custom options (passed to components)
261
- });
262
- ```
263
-
264
- ### Layout Result Object
265
-
266
- The object returned by `createLayout` contains:
267
-
268
- - `layout`: Raw layout object with all components
269
- - `element`: Reference to the root element
270
- - `component`: Flattened component map for easy access
271
- - `get(name)`: Function to get a component by name
272
- - `getAll()`: Function to get all components
273
- - `destroy()`: Function to clean up the layout
274
-
275
- ```javascript
276
- // Access components in different ways
277
- const header = layout.get('header'); // By name
278
- const footer = layout.component.footer; // Via flattened map
279
- const rootElement = layout.element; // Root element
280
- ```
281
-
282
- ## Examples
283
-
284
- ### Array Schema Examples
285
-
286
- #### Grid Layout with Array Schema
287
-
288
- ```javascript
289
- import { createLayout, createElement, createCard } from 'mtrl';
290
-
291
- // Create a grid layout using array syntax
292
- const dashboard = createLayout([
293
- // Container element with layout configuration
294
- 'dashboardGrid', {
295
- className: 'dashboard-grid',
296
- layout: {
297
- type: 'grid',
298
- columns: 3,
299
- gap: 4,
300
- autoHeight: true
301
- }
302
- },
303
- [
304
- // First card
305
- createCard, 'statsCard', {
306
- title: 'Statistics',
307
- outlined: true,
308
- layoutItem: {
309
- span: 2, // Span 2 columns
310
- sm: 12, // Full width on small screens
311
- md: 6 // Half width on medium screens
312
- }
313
- },
314
- // Second card
315
- createCard, 'activityCard', {
316
- title: 'Recent Activity',
317
- outlined: true,
318
- layoutItem: {
319
- span: 1, // Span 1 column
320
- sm: 12, // Full width on small screens
321
- md: 6 // Half width on medium screens
322
- }
323
- },
324
- // Third card
325
- createCard, 'revenueCard', {
326
- title: 'Revenue',
327
- outlined: true,
328
- layoutItem: {
329
- span: 3, // Full width
330
- md: 6 // Half width on medium screens
331
- }
332
- }
333
- ]
334
- ]);
335
-
336
- // Access components
337
- const statsCard = dashboard.get('statsCard');
338
- statsCard.update({ content: 'Updated statistics data' });
339
- ```
340
-
341
- #### Application Layout with Array Schema
342
-
343
- ```javascript
344
- import { createLayout, createTopAppBar, createDrawer, createList, createListItem, createElement } from 'mtrl';
345
-
346
- // Create an application layout using array syntax
347
- const appLayout = createLayout([
348
- // Create a container element
349
- 'appContainer', {
350
- className: 'app-container',
351
- layout: { type: 'stack', gap: 0 }
352
- },
353
- [
354
- // Header
355
- createTopAppBar, 'header', {
356
- title: 'My Application',
357
- actions: ['menu', 'account']
358
- },
359
-
360
- // Main content area
361
- 'main', {
362
- className: 'app-main',
363
- layout: { type: 'row', gap: 0 }
364
- },
365
- [
366
- // Sidebar
367
- createDrawer, 'sidebar', {
368
- persistent: true,
369
- layout: { type: 'stack', gap: 2 }
370
- },
371
- [
372
- // Navigation list
373
- createList, 'nav', { interactive: true },
374
- [
375
- createListItem, 'homeLink', { text: 'Home', leading: 'home' },
376
- createListItem, 'settingsLink', { text: 'Settings', leading: 'settings' }
377
- ]
378
- ],
379
-
380
- // Main content
381
- 'content', {
382
- tag: 'main',
383
- className: 'app-content',
384
- layout: {
385
- type: 'grid',
386
- columns: 'auto-fit',
387
- gap: 4
388
- }
389
- }
390
- ]
391
- ]
392
- ]);
393
-
394
- // Access and modify components
395
- const header = appLayout.get('header');
396
- header.setTitle('Dashboard');
397
-
398
- // Add items to the grid content area
399
- const content = appLayout.get('content');
400
- const card = createCard({ title: 'Statistics', content: 'App usage data...' });
401
- content.appendChild(card.element);
402
- ```
403
-
404
- #### Form Layout with Array Schema
405
-
406
- ```javascript
407
- import { createLayout, createTextfield, createButton } from 'mtrl';
408
-
409
- // Create a form with fields and submit button using array syntax
410
- const form = createLayout([
411
- 'formContainer', {
412
- tag: 'form',
413
- className: 'login-form',
414
- layout: { type: 'stack', gap: 4 }
415
- },
416
- [
417
- createTextfield, 'username', {
418
- label: 'Username',
419
- required: true,
420
- layoutItem: {
421
- width: 12 // Full width
422
- }
423
- },
424
- createTextfield, 'password', {
425
- label: 'Password',
426
- type: 'password',
427
- required: true,
428
- layoutItem: {
429
- width: 12 // Full width
430
- }
431
- },
432
- 'buttonRow', {
433
- layout: {
434
- type: 'row',
435
- justify: 'end',
436
- gap: 2
437
- }
438
- },
439
- [
440
- createButton, 'resetButton', {
441
- text: 'Reset',
442
- variant: 'text'
443
- },
444
- createButton, 'submitButton', {
445
- text: 'Login',
446
- variant: 'filled'
447
- }
448
- ]
449
- ]
450
- ]);
451
-
452
- // Access form elements
453
- const usernameField = form.get('username');
454
- const submitButton = form.get('submitButton');
455
-
456
- // Add event handlers
457
- submitButton.on('click', (e) => {
458
- e.preventDefault();
459
- console.log('Username:', usernameField.getValue());
460
- });
461
- ```
462
-
463
- ### Object Schema Examples
464
-
465
- #### Dashboard Grid with Object Schema
466
-
467
- ```javascript
468
- import { createLayout, createElement, createCard } from 'mtrl';
469
-
470
- const dashboard = createLayout({
471
- dashboardGrid: {
472
- options: {
473
- className: 'dashboard-grid',
474
- layout: {
475
- type: 'grid',
476
- columns: 3,
477
- gap: 4,
478
- autoHeight: true
479
- }
480
- },
481
- children: {
482
- statsCard: {
483
- creator: createCard,
484
- options: {
485
- title: 'Statistics',
486
- outlined: true,
487
- layoutItem: {
488
- span: 2, // Span 2 columns
489
- sm: 12, // Full width on small screens
490
- md: 6 // Half width on medium screens
491
- }
492
- }
493
- },
494
- activityCard: {
495
- creator: createCard,
496
- options: {
497
- title: 'Recent Activity',
498
- outlined: true,
499
- layoutItem: {
500
- span: 1, // Span 1 column
501
- sm: 12, // Full width on small screens
502
- md: 6 // Half width on medium screens
503
- }
504
- }
505
- },
506
- // More dashboard cards...
507
- }
508
- }
509
- });
510
- ```
511
-
512
- #### Application Layout with Object Schema
513
-
514
- ```javascript
515
- import { createLayout, createTopAppBar, createDrawer, createList, createListItem, createButton } from 'mtrl';
516
-
517
- const appLayout = createLayout({
518
- app: {
519
- options: {
520
- className: 'app-container',
521
- layout: { type: 'stack', gap: 0 }
522
- },
523
- children: {
524
- header: {
525
- creator: createTopAppBar,
526
- options: {
527
- title: 'My Application',
528
- actions: ['menu', 'account']
529
- }
530
- },
531
- main: {
532
- options: {
533
- className: 'app-main',
534
- layout: { type: 'row', gap: 0 }
535
- },
536
- children: {
537
- sidebar: {
538
- creator: createDrawer,
539
- options: {
540
- persistent: true,
541
- layout: { type: 'stack', gap: 2 }
542
- },
543
- children: {
544
- nav: {
545
- creator: createList,
546
- options: { interactive: true },
547
- children: {
548
- home: {
549
- creator: createListItem,
550
- options: { text: 'Home', leading: 'home' }
551
- },
552
- settings: {
553
- creator: createListItem,
554
- options: { text: 'Settings', leading: 'settings' }
555
- }
556
- }
557
- }
558
- }
559
- },
560
- content: {
561
- options: {
562
- tag: 'main',
563
- className: 'app-content',
564
- layout: {
565
- type: 'grid',
566
- columns: 'auto-fit',
567
- gap: 4
568
- }
569
- }
570
- }
571
- }
572
- }
573
- }
574
- }
575
- });
576
- ```
577
-
578
- ## Performance Considerations
579
-
580
- ### Schema Format Performance
581
-
582
- **Array-based schemas** generally outperform object-based schemas:
583
-
584
- - **Faster processing**: 15-30% faster for large layouts
585
- - **Lower memory usage**: Requires less memory without property names
586
- - **Better bundle size**: More compact representation in code
587
- - **Efficient iteration**: Arrays are optimized for sequential access
588
-
589
- **Object-based schemas** excel in:
590
-
591
- - **Readability**: More explicit structure with named properties
592
- - **Maintainability**: Easier to understand complex nested structures
593
- - **Self-documentation**: Property names describe the layout's purpose
594
-
595
- **Recommendations**:
596
- - For **performance-critical** applications, prefer array-based schemas
597
- - For **complex, deeply nested** structures where maintainability is key, consider object-based schemas
598
- - For the **best balance**, use array-based schemas for large structures and object-based for complex configurations
599
-
600
- ### Options Performance Considerations
601
-
602
- - Setting `prefix: false` can improve performance slightly by avoiding class name processing
603
- - Providing a `creator` function in options is more efficient than having many duplicate creator references in the schema
604
- - Consider memoizing layout creation for frequently used UI patterns with the same options
605
-
606
- ### General Optimization Tips
607
-
608
- - Use DocumentFragment for batch DOM operations
609
- - Create components only when needed
610
- - Consider memoizing frequently created layouts
611
- - For large applications, lazy-load secondary layouts
612
-
613
- ## Responsive Design
614
-
615
- The layout system provides several ways to create responsive designs:
616
-
617
- ### Responsive Grid
618
-
619
- ```javascript
620
- createLayout({
621
- grid: {
622
- options: {
623
- layout: {
624
- type: 'grid',
625
- // Different columns at different breakpoints using CSS media queries
626
- class: 'md:layout--grid-cols-2 lg:layout--grid-cols-3 xl:layout--grid-cols-4'
627
- }
628
- }
629
- }
630
- });
631
- ```
632
-
633
- ### Layout Items with Responsive Widths
634
-
635
- ```javascript
636
- createLayout({
637
- row: {
638
- options: {
639
- layout: { type: 'row', gap: 4 }
640
- },
641
- children: {
642
- sidebar: {
643
- options: {
644
- layoutItem: {
645
- width: 3, // Default: 3/12 (25%)
646
- sm: 12, // Small screens: 12/12 (100%)
647
- md: 4, // Medium screens: 4/12 (33.3%)
648
- lg: 3 // Large screens: 3/12 (25%)
649
- }
650
- }
651
- },
652
- main: {
653
- options: {
654
- layoutItem: {
655
- width: 9, // Default: 9/12 (75%)
656
- sm: 12, // Small screens: 12/12 (100%)
657
- md: 8, // Medium screens: 8/12 (66.6%)
658
- lg: 9 // Large screens: 9/12 (75%)
659
- }
660
- }
661
- }
662
- }
663
- }
664
- });
665
- ```
666
-
667
- ### Mobile Behavior Options
668
-
669
- ```javascript
670
- createLayout({
671
- row: {
672
- options: {
673
- layout: {
674
- type: 'row',
675
- gap: 4,
676
- mobileStack: true, // Stack on mobile instead of row
677
- // OR
678
- mobileScroll: true // Enable horizontal scrolling on mobile
679
- }
680
- },
681
- children: {
682
- // Row items...
683
- }
684
- }
685
- });
686
- ```
687
-
688
- ## Layout CSS Classes
689
-
690
- The layout system uses a consistent naming convention for CSS classes:
691
-
692
- ### Layout Container Classes
693
-
694
- - **Base Layout**: `.layout--[type]` (e.g., `.layout--stack`, `.layout--grid`)
695
- - **Alignment**: `.layout--[type]-[align]` (e.g., `.layout--stack-center`)
696
- - **Justification**: `.layout--[type]-justify-[justify]` (e.g., `.layout--row-justify-between`)
697
- - **Spacing**: `.layout--[type]-gap-[size]` (e.g., `.layout--grid-gap-4`)
698
- - **Specific Options**: `.layout--[type]-[option]` (e.g., `.layout--grid-dense`)
699
-
700
- ### Layout Item Classes
701
-
702
- - **Base Item**: `.layout__item`
703
- - **Width**: `.layout__item--[width]` (e.g., `.layout__item--4` for 4/12 width)
704
- - **Responsive Widths**: `.layout__item--[breakpoint]-[width]` (e.g., `.layout__item--md-6`)
705
- - **Ordering**: `.layout__item--order-[order]` (e.g., `.layout__item--order-first`)
706
- - **Alignment**: `.layout__item--self-[align]` (e.g., `.layout__item--self-center`)
707
- - **Grid Span**: `.layout__item--span-[span]` (e.g., `.layout__item--span-2`)
708
-
709
- ## Browser Compatibility
710
-
711
- The Layout Module is compatible with all modern browsers (Chrome, Firefox, Safari, Edge).
712
-
713
- ## License
714
-
715
- MIT