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,481 +0,0 @@
1
- # MTRL Chips Component
2
-
3
- ## Overview
4
-
5
- The Chips component is a lightweight, composable UI element used to represent discrete information, such as attributes, selections, filters, or user input. This TypeScript implementation provides a comprehensive API with zero dependencies, focusing on performance, accessibility, and extensibility.
6
-
7
- ## Features
8
-
9
- - **Multiple Variants**: Filled, outlined, elevated, assist, filter, input, and suggestion chips
10
- - **Selection Support**: Single or multi-select modes with clear API for selection management
11
- - **Layout Options**: Horizontal or vertical arrangement with optional scrolling
12
- - **Icon Support**: Leading and trailing icons with customizable click handlers
13
- - **Keyboard Navigation**: Full accessibility support with keyboard controls
14
- - **Type Safety**: Comprehensive TypeScript interfaces for improved developer experience
15
- - **Zero Dependencies**: Built with vanilla TypeScript for minimal bundle size
16
- - **Composition-based Architecture**: Functional composition for extensibility
17
- - **Accessibility**: ARIA attributes and keyboard support built-in
18
-
19
- ## Installation
20
-
21
- ```bash
22
- # Using npm
23
- npm install mtrl
24
-
25
- # Using yarn
26
- yarn add mtrl
27
-
28
- # Using bun
29
- bun add mtrl
30
- ```
31
-
32
- ## Basic Usage
33
-
34
- ### Single Chip
35
-
36
- ```typescript
37
- import { createChip } from 'mtrl';
38
-
39
- // Create a basic chip
40
- const basicChip = createChip({
41
- text: 'Basic Chip',
42
- variant: 'filled'
43
- });
44
-
45
- // Add to DOM
46
- document.querySelector('.container').appendChild(basicChip.element);
47
- ```
48
-
49
- ### Chips Container
50
-
51
- ```typescript
52
- import { createChips } from 'mtrl';
53
-
54
- // Create a chips container with multiple chips
55
- const filterChips = createChips({
56
- multiSelect: true,
57
- label: 'Categories',
58
- chips: [
59
- { text: 'JavaScript', variant: 'filter', value: 'js' },
60
- { text: 'TypeScript', variant: 'filter', value: 'ts' },
61
- { text: 'HTML', variant: 'filter', value: 'html' },
62
- { text: 'CSS', variant: 'filter', value: 'css' }
63
- ],
64
- onChange: (selectedValues) => {
65
- console.log('Selected categories:', selectedValues);
66
- }
67
- });
68
-
69
- // Add to DOM
70
- document.querySelector('.filters').appendChild(filterChips.element);
71
- ```
72
-
73
- ## Component API
74
-
75
- ### Chip Configuration
76
-
77
- ```typescript
78
- interface ChipConfig {
79
- variant?: 'filled' | 'outlined' | 'elevated' | 'assist' | 'filter' | 'input' | 'suggestion';
80
- disabled?: boolean;
81
- selected?: boolean;
82
- text?: string;
83
- icon?: string;
84
- leadingIcon?: string;
85
- trailingIcon?: string;
86
- class?: string;
87
- value?: string;
88
- ripple?: boolean;
89
- selectable?: boolean;
90
- onTrailingIconClick?: (chip: ChipComponent) => void;
91
- onSelect?: (chip: ChipComponent) => void;
92
- onChange?: (selected: boolean, chip: ChipComponent) => void;
93
- }
94
- ```
95
-
96
- ### Chips Configuration
97
-
98
- ```typescript
99
- interface ChipsConfig {
100
- chips?: ChipConfig[];
101
- scrollable?: boolean;
102
- vertical?: boolean;
103
- class?: string;
104
- selector?: string | null;
105
- multiSelect?: boolean;
106
- onChange?: (selectedValues: (string | null)[], changedValue: string | null) => void;
107
- label?: string;
108
- labelPosition?: 'start' | 'end';
109
- }
110
- ```
111
-
112
- ### Chip Variants
113
-
114
- | Variant | Description |
115
- |---------|-------------|
116
- | `filled` | Standard chip with solid background color (default) |
117
- | `outlined` | Transparent background with outlined border |
118
- | `elevated` | Chip with subtle shadow effect |
119
- | `assist` | For suggesting actions to the user |
120
- | `filter` | For filtering content with selection behavior |
121
- | `input` | Represents user input in form fields |
122
- | `suggestion` | For presenting options and suggestions |
123
-
124
- ## Chip API Methods
125
-
126
- ### Content Management
127
-
128
- | Method | Description |
129
- |--------|-------------|
130
- | `setText(content)` | Sets the chip's text content |
131
- | `getText()` | Gets the chip's text content |
132
- | `setIcon(html)` | Sets the chip's leading icon |
133
- | `getIcon()` | Gets the chip's leading icon HTML |
134
- | `setLeadingIcon(html)` | Sets the chip's leading icon |
135
- | `setTrailingIcon(html, onClick?)` | Sets the chip's trailing icon with optional click handler |
136
-
137
- ### State Management
138
-
139
- | Method | Description |
140
- |--------|-------------|
141
- | `setValue(value)` | Sets the chip's value attribute |
142
- | `getValue()` | Gets the chip's value attribute |
143
- | `isSelected()` | Checks if the chip is selected |
144
- | `setSelected(selected)` | Sets the chip's selected state |
145
- | `toggleSelected()` | Toggles the chip's selected state |
146
- | `isDisabled()` | Checks if the chip is disabled |
147
- | `enable()` | Enables the chip |
148
- | `disable()` | Disables the chip |
149
-
150
- ### Event Handling
151
-
152
- | Method | Description |
153
- |--------|-------------|
154
- | `on(event, handler)` | Adds an event listener |
155
- | `off(event, handler)` | Removes an event listener |
156
-
157
- ### Lifecycle
158
-
159
- | Method | Description |
160
- |--------|-------------|
161
- | `destroy()` | Cleans up the chip and removes it from the DOM |
162
-
163
- ## Chips Container API Methods
164
-
165
- ### Chip Management
166
-
167
- | Method | Description |
168
- |--------|-------------|
169
- | `addChip(chipConfig)` | Adds a new chip to the container |
170
- | `removeChip(chipOrIndex)` | Removes a chip by instance or index |
171
- | `getChips()` | Gets all chip instances |
172
- | `scrollToChip(chipOrIndex)` | Scrolls to make a specific chip visible |
173
-
174
- ### Selection Management
175
-
176
- | Method | Description |
177
- |--------|-------------|
178
- | `getSelectedChips()` | Gets currently selected chip instances |
179
- | `getSelectedValues()` | Gets values of selected chips |
180
- | `selectByValue(values, triggerEvent?)` | Selects chips by their values |
181
- | `clearSelection()` | Clears all selections |
182
-
183
- ### Layout Management
184
-
185
- | Method | Description |
186
- |--------|-------------|
187
- | `setScrollable(isScrollable)` | Sets the scrollable state |
188
- | `setVertical(isVertical)` | Sets the vertical layout state |
189
-
190
- ### Label Management
191
-
192
- | Method | Description |
193
- |--------|-------------|
194
- | `setLabel(text)` | Sets the label text |
195
- | `getLabel()` | Gets the label text |
196
- | `setLabelPosition(position)` | Sets the label position ('start' or 'end') |
197
- | `getLabelPosition()` | Gets the label position |
198
-
199
- ### Other Methods
200
-
201
- | Method | Description |
202
- |--------|-------------|
203
- | `enableKeyboardNavigation()` | Enables keyboard navigation between chips |
204
- | `on(event, handler)` | Adds an event listener |
205
- | `off(event, handler)` | Removes an event listener |
206
- | `destroy()` | Destroys the chips container and all contained chips |
207
-
208
- ## Events
209
-
210
- ### Chip Events
211
-
212
- | Event | Description |
213
- |-------|-------------|
214
- | `change` | Fired when chip selection state changes |
215
- | `select` | Fired when a chip is selected |
216
- | `deselect` | Fired when a chip is deselected |
217
- | `remove` | Fired when a chip is about to be removed |
218
-
219
- ### Chips Container Events
220
-
221
- | Event | Description |
222
- |-------|-------------|
223
- | `change` | Fired when any chip selection changes |
224
- | `add` | Fired when a chip is added to the container |
225
- | `remove` | Fired when a chip is removed from the container |
226
-
227
- ## Advanced Examples
228
-
229
- ### Filter Chips with Icons
230
-
231
- ```typescript
232
- import { createChips } from 'mtrl';
233
-
234
- const filterChips = createChips({
235
- multiSelect: true,
236
- scrollable: true,
237
- label: 'Filter by:',
238
- chips: [
239
- {
240
- text: 'Completed',
241
- variant: 'filter',
242
- value: 'completed',
243
- leadingIcon: '<svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>'
244
- },
245
- {
246
- text: 'In Progress',
247
- variant: 'filter',
248
- value: 'in-progress',
249
- leadingIcon: '<svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/><path fill="currentColor" d="M12 5v7l5 5-1.41 1.41L10.59 13H7V11h3.59l3-3H12z"/></svg>'
250
- },
251
- {
252
- text: 'Pending',
253
- variant: 'filter',
254
- value: 'pending',
255
- leadingIcon: '<svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/><path fill="currentColor" d="M7 12h10v2H7z"/></svg>'
256
- }
257
- ],
258
- onChange: (selectedValues) => {
259
- console.log('Selected filters:', selectedValues);
260
- updateTaskList(selectedValues);
261
- }
262
- });
263
-
264
- document.querySelector('.filters-container').appendChild(filterChips.element);
265
-
266
- // Pre-select certain values
267
- filterChips.selectByValue(['completed', 'in-progress']);
268
- ```
269
-
270
- ### Input Chips for Email Tags
271
-
272
- ```typescript
273
- import { createChips } from 'mtrl';
274
-
275
- const emailChips = createChips({
276
- chips: [],
277
- label: 'Recipients:',
278
- onChange: (values) => {
279
- document.querySelector('#recipients-input').value = values.join(',');
280
- }
281
- });
282
-
283
- // Add to form
284
- const emailForm = document.querySelector('.email-form');
285
- emailForm.insertBefore(emailChips.element, emailForm.firstChild);
286
-
287
- // Handle input for adding emails
288
- const input = document.querySelector('#email-input');
289
- input.addEventListener('keydown', (e) => {
290
- if (e.key === 'Enter' || e.key === ',') {
291
- e.preventDefault();
292
-
293
- const email = input.value.trim().replace(',', '');
294
- if (validateEmail(email)) {
295
- emailChips.addChip({
296
- text: email,
297
- variant: 'input',
298
- value: email,
299
- trailingIcon: '<svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>',
300
- onTrailingIconClick: (chip) => {
301
- emailChips.removeChip(chip);
302
- }
303
- });
304
- input.value = '';
305
- }
306
- }
307
- });
308
-
309
- function validateEmail(email) {
310
- return /\S+@\S+\.\S+/.test(email);
311
- }
312
- ```
313
-
314
- ### Theme Selector with Single Selection
315
-
316
- ```typescript
317
- import { createChips } from 'mtrl';
318
-
319
- const themeChips = createChips({
320
- multiSelect: false, // Single selection mode
321
- label: 'Select theme:',
322
- chips: [
323
- {
324
- text: 'Light Theme',
325
- variant: 'filter',
326
- value: 'light',
327
- selected: true // Pre-select Light theme
328
- },
329
- {
330
- text: 'Dark Theme',
331
- variant: 'filter',
332
- value: 'dark'
333
- },
334
- {
335
- text: 'System Theme',
336
- variant: 'filter',
337
- value: 'system'
338
- }
339
- ],
340
- onChange: (selectedValues) => {
341
- if (selectedValues.length > 0) {
342
- applyTheme(selectedValues[0]);
343
- }
344
- }
345
- });
346
-
347
- document.querySelector('.theme-settings').appendChild(themeChips.element);
348
-
349
- function applyTheme(theme) {
350
- document.documentElement.setAttribute('data-theme', theme);
351
- localStorage.setItem('theme', theme);
352
- }
353
- ```
354
-
355
- ### Vertical Layout with Category Groups
356
-
357
- ```typescript
358
- import { createChips } from 'mtrl';
359
-
360
- const categoryChips = createChips({
361
- vertical: true,
362
- multiSelect: true,
363
- label: 'Categories:',
364
- labelPosition: 'start',
365
- chips: [
366
- { text: 'Technology', variant: 'filter', value: 'tech' },
367
- { text: 'Science', variant: 'filter', value: 'science' },
368
- { text: 'Health', variant: 'filter', value: 'health' },
369
- { text: 'Business', variant: 'filter', value: 'business' },
370
- { text: 'Entertainment', variant: 'filter', value: 'entertainment' },
371
- { text: 'Sports', variant: 'filter', value: 'sports' },
372
- { text: 'Politics', variant: 'filter', value: 'politics' },
373
- { text: 'Travel', variant: 'filter', value: 'travel' }
374
- ],
375
- onChange: (selectedValues) => {
376
- updateArticlesList(selectedValues);
377
- }
378
- });
379
-
380
- document.querySelector('.sidebar-filters').appendChild(categoryChips.element);
381
- ```
382
-
383
- ### Dynamic Chip Creation and Removal
384
-
385
- ```typescript
386
- import { createChips } from 'mtrl';
387
-
388
- // Create empty chips container
389
- const dynamicChips = createChips({
390
- scrollable: true,
391
- label: 'Tags:',
392
- onChange: (selectedValues) => {
393
- console.log('Selected tags:', selectedValues);
394
- }
395
- });
396
-
397
- document.querySelector('.tags-container').appendChild(dynamicChips.element);
398
-
399
- // Add new tag button
400
- document.querySelector('#add-tag').addEventListener('click', () => {
401
- const tagInput = document.querySelector('#tag-input');
402
- const tagText = tagInput.value.trim();
403
-
404
- if (tagText) {
405
- dynamicChips.addChip({
406
- text: tagText,
407
- variant: 'input',
408
- value: tagText.toLowerCase().replace(/\s+/g, '-'),
409
- trailingIcon: '<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>',
410
- onTrailingIconClick: (chip) => {
411
- if (confirm(`Remove tag "${chip.getText()}"?`)) {
412
- dynamicChips.removeChip(chip);
413
- }
414
- }
415
- });
416
-
417
- tagInput.value = '';
418
- }
419
- });
420
- ```
421
-
422
- ## Accessibility
423
-
424
- The MTRL Chips component is built with accessibility in mind:
425
-
426
- - **ARIA Attributes**: Proper `aria-selected`, `aria-disabled`, and `aria-multiselectable` attributes
427
- - **Keyboard Navigation**: Navigate between chips using arrow keys, select with Space/Enter
428
- - **Focus Management**: Visible focus indicators and proper focus handling
429
- - **Semantic Structure**: Appropriate roles and accessible names
430
- - **Screen Reader Support**: Meaningful announcements for selection changes
431
-
432
- ## Technical Architecture
433
-
434
- The MTRL Chips component follows a functional composition pattern:
435
-
436
- 1. **Base Component**: Core structure with element creation
437
- 2. **Feature Enhancement**: Functional mixins that add specific capabilities
438
- 3. **DOM Generation**: Creates the actual DOM elements from the structure
439
- 4. **Controller**: Manages state, events, and behavior
440
- 5. **Lifecycle Management**: Handles component lifecycle events
441
- 6. **Public API**: Exposes a clean, consistent interface
442
-
443
- This architecture enables:
444
- - Efficient code reuse and maintainability
445
- - Clear separation of concerns
446
- - Extensibility through composition
447
- - Predictable behavior and clean API surface
448
-
449
- ## CSS Customization
450
-
451
- MTRL Chips use BEM-style class naming for easy styling. Primary classes:
452
-
453
- ```
454
- .mtrl-chip /* Base chip class */
455
- .mtrl-chip--{variant} /* Variant classes */
456
- .mtrl-chip--selected /* Selected state */
457
- .mtrl-chip--disabled /* Disabled state */
458
- .mtrl-chip-content /* Content container */
459
- .mtrl-chip-text /* Text element */
460
- .mtrl-chip-leading-icon /* Leading icon */
461
- .mtrl-chip-trailing-icon /* Trailing icon */
462
-
463
- .mtrl-chips /* Chips container */
464
- .mtrl-chips--scrollable /* Scrollable state */
465
- .mtrl-chips--vertical /* Vertical layout */
466
- .mtrl-chips-container /* Inner container */
467
- .mtrl-chips-label /* Label element */
468
- ```
469
-
470
- ## Browser Support
471
-
472
- This component supports all modern browsers that implement ES6+ standards:
473
-
474
- - Chrome (latest)
475
- - Firefox (latest)
476
- - Safari (latest)
477
- - Edge (latest)
478
-
479
- ## License
480
-
481
- MTRL is licensed under the MIT License.
@@ -1,75 +0,0 @@
1
- // src/components/chips/chips.ts
2
- import { pipe } from '../../core/compose/pipe';
3
- import { createBase } from '../../core/compose/component';
4
- import { withEvents, withLifecycle } from '../../core/compose/features';
5
- import { withLayout, withIcon, withLabel, withDom } from '../../core/composition/features';
6
- import {
7
- withContainer,
8
- withChipItems,
9
- withController,
10
- withLabel
11
- } from './features';
12
- import { withAPI } from './api';
13
- import { ChipsConfig, ChipsComponent } from './types';
14
- import { createBaseConfig, getApiConfig } from './config';
15
-
16
- /**
17
- * Creates a chips container for grouping related chips
18
- *
19
- * Chips follows a clear architectural pattern:
20
- * 1. Structure definition - Describes the DOM structure declaratively
21
- * 2. Feature enhancement - Adds specific capabilities (container, items, etc.)
22
- * 3. DOM creation - Turns the structure into actual DOM elements
23
- * 4. Controller - Manages behavior, events, and UI rendering
24
- * 5. Lifecycle - Handles component lifecycle events
25
- * 6. Public API - Exposes a clean, consistent API
26
- *
27
- * @param {ChipsConfig} config - Chips configuration object
28
- * @returns {ChipsComponent} Chips component instance
29
- */
30
- const createChips = (config: ChipsConfig = {}): ChipsComponent => {
31
- // Process configuration with defaults
32
- const baseConfig = createBaseConfig(config);
33
-
34
- try {
35
- // Create the component by composing features in a specific order
36
- const component = pipe(
37
- // Base component with event system
38
- createBase,
39
- withEvents(),
40
- withLayout(baseConfig),
41
- withContainer(baseConfig),
42
- withLabel(baseConfig),
43
- withChipItems(baseConfig),
44
-
45
- // Now create the actual DOM elements from the complete structure
46
- withDom(),
47
-
48
- // Add state management and behavior
49
- withController(baseConfig),
50
- withLifecycle()
51
- )(baseConfig);
52
-
53
- // Generate the API configuration based on the enhanced component
54
- const apiOptions = getApiConfig(component);
55
-
56
- // Apply the public API layer
57
- const chips = withAPI(apiOptions)(component);
58
-
59
- // Register event handlers from config for convenience
60
- if (baseConfig.on && typeof chips.on === 'function') {
61
- Object.entries(baseConfig.on).forEach(([event, handler]) => {
62
- if (typeof handler === 'function') {
63
- chips.on(event, handler);
64
- }
65
- });
66
- }
67
-
68
- return chips;
69
- } catch (error) {
70
- console.error('Chips creation error:', error);
71
- throw new Error(`Failed to create chip: ${(error as Error).message}`);
72
- }
73
- };
74
-
75
- export default createChips;
@@ -1,109 +0,0 @@
1
- // src/components/chips/config.ts
2
- import {
3
- createComponentConfig,
4
- createElementConfig
5
- } from '../../core/config/component-config';
6
- import { ChipsConfig } from './types';
7
- import { createChipsSchema } from './schema';
8
-
9
- /**
10
- * Default configuration for the Chips component
11
- */
12
- export const defaultConfig: ChipsConfig = {
13
- chips: [],
14
- scrollable: false,
15
- vertical: false,
16
- multiSelect: false,
17
- onChange: null,
18
- selector: null,
19
- labelPosition: 'start'
20
- };
21
-
22
- /**
23
- * Creates the base configuration for Chips component
24
- * @param {ChipsConfig} config - User provided configuration
25
- * @returns {ChipsConfig} Complete configuration with defaults applied
26
- */
27
- export const createBaseConfig = (config: ChipsConfig = {}): ChipsConfig => {
28
- // Create the base config with defaults applied
29
- const baseConfig = createComponentConfig(defaultConfig, config, 'chips') as ChipsConfig;
30
-
31
- // Create a basic component object for structure generation
32
- const baseComponent = {
33
- componentName: 'chips',
34
- config: baseConfig,
35
- getClass: (className) => {
36
- const prefix = baseConfig.prefix || 'mtrl';
37
- return className ? `${prefix}-${className}` : prefix;
38
- }
39
- };
40
-
41
- // Add the structure definition to the config
42
- baseConfig.schema = createChipsSchema(baseComponent, baseConfig);
43
-
44
- return baseConfig;
45
- };
46
-
47
- /**
48
- * Generates element configuration for the Chips component
49
- * @param {ChipsConfig} config - Chips configuration
50
- * @returns {Object} Element configuration object for withElement
51
- */
52
- export const getElementConfig = (config: ChipsConfig) =>
53
- createElementConfig(config, {
54
- tag: 'div',
55
- attrs: {
56
- tabindex: '0',
57
- role: 'group',
58
- 'aria-multiselectable': config.multiSelect === true ? 'true' : 'false'
59
- },
60
- className: [
61
- config.class
62
- ].filter(Boolean)
63
- });
64
-
65
- /**
66
- * Creates API configuration for the Chips component
67
- * @param {Object} comp - Component with chips features
68
- * @returns {Object} API configuration object
69
- */
70
- export const getApiConfig = (comp) => ({
71
- chips: {
72
- addChip: function(chipConfig) {
73
- if (comp.chips && typeof comp.chips.addChip === 'function') {
74
- return comp.chips.addChip(chipConfig);
75
- }
76
- return null;
77
- },
78
- removeChip: (chipOrIndex) => comp.chips?.removeChip?.(chipOrIndex),
79
- getChips: () => comp.chips?.getChips?.() ?? [],
80
- getSelectedChips: () => comp.chips?.getSelectedChips?.() ?? [],
81
- getSelectedValues: () => comp.chips?.getSelectedValues?.() ?? [],
82
- selectByValue: (values) => comp.chips?.selectByValue?.(values),
83
- clearSelection: () => comp.chips?.clearSelection?.(),
84
- scrollToChip: (chipOrIndex) => comp.chips?.scrollToChip?.(chipOrIndex)
85
- },
86
- layout: {
87
- setScrollable: (isScrollable) => comp.layout?.setScrollable?.(isScrollable),
88
- isScrollable: () => comp.layout?.isScrollable?.() ?? false,
89
- setVertical: (isVertical) => comp.layout?.setVertical?.(isVertical),
90
- isVertical: () => comp.layout?.isVertical?.() ?? false
91
- },
92
- label: {
93
- setText: (t) => comp.label?.setText?.(t),
94
- getText: () => comp.label?.getText?.() ?? '',
95
- setPosition: (p) => comp.label?.setPosition?.(p),
96
- getPosition: () => comp.label?.getPosition?.() ?? 'start'
97
- },
98
- keyboard: {
99
- enableKeyboardNavigation: () => comp.keyboard?.enable?.(),
100
- disableKeyboardNavigation: () => comp.keyboard?.disable?.()
101
- },
102
- events: {
103
- on: (e, h) => comp.on?.(e, h),
104
- off: (e, h) => comp.off?.(e, h)
105
- },
106
- lifecycle: {
107
- destroy: () => comp.lifecycle?.destroy?.()
108
- }
109
- });