mtrl 0.3.7 → 0.3.9

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 (691) 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 +63 -0
  134. package/dist/components/progress/constants.d.ts +58 -0
  135. package/dist/components/progress/index.d.ts +3 -0
  136. package/dist/components/progress/progress.d.ts +24 -0
  137. package/dist/components/progress/types.d.ts +199 -0
  138. package/dist/components/radios/api.d.ts +37 -0
  139. package/dist/components/radios/config.d.ts +42 -0
  140. package/dist/components/radios/constants.d.ts +114 -0
  141. package/dist/components/radios/index.d.ts +3 -0
  142. package/dist/components/radios/radio.d.ts +8 -0
  143. package/dist/components/radios/radios.d.ts +8 -0
  144. package/dist/components/radios/types.d.ts +189 -0
  145. package/dist/components/search/api.d.ts +55 -0
  146. package/dist/components/search/config.d.ts +73 -0
  147. package/dist/components/search/constants.d.ts +128 -0
  148. package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
  149. package/dist/components/search/features/search.d.ts +7 -0
  150. package/dist/components/search/features/states.d.ts +8 -0
  151. package/dist/components/search/features/structure.d.ts +7 -0
  152. package/dist/components/search/index.d.ts +3 -0
  153. package/dist/components/search/search.d.ts +8 -0
  154. package/dist/components/search/types.d.ts +132 -0
  155. package/dist/components/segmented-button/config.d.ts +65 -0
  156. package/dist/components/segmented-button/constants.d.ts +85 -0
  157. package/dist/components/segmented-button/index.d.ts +4 -0
  158. package/dist/components/segmented-button/segment.d.ts +15 -0
  159. package/dist/components/segmented-button/segmented-button.d.ts +49 -0
  160. package/dist/components/segmented-button/types.d.ts +257 -0
  161. package/dist/components/select/api.d.ts +8 -0
  162. package/dist/components/select/config.d.ts +18 -0
  163. package/dist/components/select/constants.d.ts +113 -0
  164. package/dist/components/select/features.d.ts +13 -0
  165. package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
  166. package/dist/components/select/select.d.ts +36 -0
  167. package/dist/components/select/types.d.ts +302 -0
  168. package/dist/components/sheet/api.d.ts +37 -0
  169. package/dist/components/sheet/config.d.ts +42 -0
  170. package/dist/components/sheet/constants.d.ts +136 -0
  171. package/dist/components/sheet/features/content.d.ts +6 -0
  172. package/dist/components/sheet/features/gestures.d.ts +6 -0
  173. package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
  174. package/dist/components/sheet/features/position.d.ts +7 -0
  175. package/dist/components/sheet/features/state.d.ts +6 -0
  176. package/dist/components/sheet/features/title.d.ts +6 -0
  177. package/dist/components/sheet/index.d.ts +3 -0
  178. package/dist/components/sheet/sheet.d.ts +8 -0
  179. package/dist/components/sheet/types.d.ts +250 -0
  180. package/dist/components/slider/api.d.ts +57 -0
  181. package/dist/components/slider/config.d.ts +75 -0
  182. package/dist/components/slider/constants.d.ts +138 -0
  183. package/dist/components/slider/features/controller.d.ts +9 -0
  184. package/dist/components/slider/features/handlers.d.ts +25 -0
  185. package/dist/components/slider/features/index.d.ts +3 -0
  186. package/dist/components/slider/features/range.d.ts +8 -0
  187. package/dist/components/slider/features/states.d.ts +9 -0
  188. package/dist/components/slider/index.d.ts +3 -0
  189. package/dist/components/slider/schema.d.ts +108 -0
  190. package/dist/components/slider/slider.d.ts +18 -0
  191. package/dist/components/slider/types.d.ts +170 -0
  192. package/dist/components/snackbar/api.d.ts +7 -0
  193. package/dist/components/snackbar/config.d.ts +55 -0
  194. package/dist/components/snackbar/constants.d.ts +88 -0
  195. package/dist/components/snackbar/features.d.ts +13 -0
  196. package/dist/components/snackbar/index.d.ts +3 -0
  197. package/dist/components/snackbar/position.d.ts +15 -0
  198. package/dist/components/snackbar/queue.d.ts +7 -0
  199. package/dist/components/snackbar/snackbar.d.ts +8 -0
  200. package/dist/components/snackbar/types.d.ts +172 -0
  201. package/dist/components/switch/api.d.ts +7 -0
  202. package/dist/components/switch/config.d.ts +34 -0
  203. package/dist/components/switch/constants.d.ts +88 -0
  204. package/dist/components/switch/features.d.ts +59 -0
  205. package/dist/components/switch/index.d.ts +4 -0
  206. package/dist/components/switch/switch.d.ts +8 -0
  207. package/dist/components/switch/types.d.ts +131 -0
  208. package/dist/components/tabs/api.d.ts +52 -0
  209. package/dist/components/tabs/config.d.ts +39 -0
  210. package/dist/components/tabs/constants.d.ts +142 -0
  211. package/dist/components/tabs/features.d.ts +133 -0
  212. package/dist/components/tabs/index.d.ts +11 -0
  213. package/dist/components/tabs/indicator.d.ts +49 -0
  214. package/dist/components/tabs/responsive.d.ts +38 -0
  215. package/dist/components/tabs/scroll-indicators.d.ts +18 -0
  216. package/dist/components/tabs/state.d.ts +53 -0
  217. package/dist/components/tabs/tab-api.d.ts +43 -0
  218. package/dist/components/tabs/tab.d.ts +7 -0
  219. package/dist/components/tabs/tabs.d.ts +27 -0
  220. package/dist/components/tabs/types.d.ts +390 -0
  221. package/dist/components/tabs/utils.d.ts +17 -0
  222. package/dist/components/textfield/api.d.ts +8 -0
  223. package/dist/components/textfield/config.d.ts +34 -0
  224. package/dist/components/textfield/constants.d.ts +148 -0
  225. package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
  226. package/dist/components/textfield/features/leading-icon.d.ts +55 -0
  227. package/dist/components/textfield/features/placement.d.ts +28 -0
  228. package/dist/components/textfield/features/prefix-text.d.ts +54 -0
  229. package/dist/components/textfield/features/suffix-text.d.ts +54 -0
  230. package/dist/components/textfield/features/supporting-text.d.ts +59 -0
  231. package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
  232. package/dist/components/textfield/index.d.ts +3 -0
  233. package/dist/components/textfield/textfield.d.ts +36 -0
  234. package/dist/components/textfield/types.d.ts +217 -0
  235. package/dist/components/timepicker/api.d.ts +24 -0
  236. package/dist/components/timepicker/clockdial.d.ts +34 -0
  237. package/dist/components/timepicker/config.d.ts +75 -0
  238. package/dist/components/timepicker/constants.d.ts +266 -0
  239. package/dist/components/timepicker/index.d.ts +4 -0
  240. package/dist/components/timepicker/render.d.ts +9 -0
  241. package/dist/components/timepicker/timepicker.d.ts +8 -0
  242. package/dist/components/timepicker/types.d.ts +284 -0
  243. package/dist/components/timepicker/utils.d.ts +74 -0
  244. package/dist/components/tooltip/api.d.ts +18 -0
  245. package/dist/components/tooltip/config.d.ts +38 -0
  246. package/dist/components/tooltip/constants.d.ts +108 -0
  247. package/dist/components/tooltip/index.d.ts +3 -0
  248. package/dist/components/tooltip/tooltip.d.ts +8 -0
  249. package/dist/components/tooltip/types.d.ts +188 -0
  250. package/dist/components/top-app-bar/config.d.ts +16 -0
  251. package/dist/components/top-app-bar/constants.d.ts +74 -0
  252. package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
  253. package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
  254. package/dist/components/top-app-bar/types.d.ts +118 -0
  255. package/dist/constants.d.ts +30 -0
  256. package/dist/core/collection/adapters/base.d.ts +47 -0
  257. package/dist/core/collection/adapters/route.d.ts +149 -0
  258. package/dist/core/collection/collection.d.ts +131 -0
  259. package/dist/core/collection/index.d.ts +10 -0
  260. package/dist/core/collection/list-manager/config.d.ts +29 -0
  261. package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
  262. package/dist/core/collection/list-manager/index.d.ts +61 -0
  263. package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
  264. package/dist/core/collection/list-manager/renderer.d.ts +31 -0
  265. package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
  266. package/dist/core/collection/list-manager/state.d.ts +60 -0
  267. package/dist/core/collection/list-manager/types.d.ts +361 -0
  268. package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
  269. package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
  270. package/dist/core/compose/base.d.ts +31 -0
  271. package/dist/core/compose/component.d.ts +61 -0
  272. package/dist/core/compose/features/badge.d.ts +43 -0
  273. package/dist/core/compose/features/checkable.d.ts +59 -0
  274. package/dist/core/compose/features/constants.d.ts +45 -0
  275. package/dist/core/compose/features/debounce.d.ts +84 -0
  276. package/dist/core/compose/features/disabled.d.ts +47 -0
  277. package/dist/core/compose/features/events.d.ts +37 -0
  278. package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
  279. package/dist/core/compose/features/gestures/pan.d.ts +108 -0
  280. package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
  281. package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
  282. package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
  283. package/dist/core/compose/features/gestures/tap.d.ts +79 -0
  284. package/dist/core/compose/features/gestures.d.ts +86 -0
  285. package/dist/core/compose/features/icon.d.ts +71 -0
  286. package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
  287. package/dist/core/compose/features/input.d.ts +71 -0
  288. package/dist/core/compose/features/lifecycle.d.ts +61 -0
  289. package/dist/core/compose/features/position.d.ts +51 -0
  290. package/dist/core/compose/features/ripple.d.ts +61 -0
  291. package/dist/core/compose/features/size.d.ts +17 -0
  292. package/dist/core/compose/features/style.d.ts +16 -0
  293. package/dist/core/compose/features/text.d.ts +63 -0
  294. package/dist/core/compose/features/textinput.d.ts +93 -0
  295. package/dist/core/compose/features/textlabel.d.ts +57 -0
  296. package/dist/core/compose/features/throttle.d.ts +75 -0
  297. package/dist/core/compose/features/track.d.ts +42 -0
  298. package/dist/core/compose/features/variant.d.ts +17 -0
  299. package/dist/core/compose/features/withEvents.d.ts +45 -0
  300. package/dist/core/compose/index.d.ts +17 -0
  301. package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
  302. package/dist/core/compose/utils/type-guards.d.ts +27 -0
  303. package/dist/core/composition/features/dom.d.ts +19 -0
  304. package/dist/core/composition/features/icon.d.ts +45 -0
  305. package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
  306. package/dist/core/composition/features/label.d.ts +49 -0
  307. package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
  308. package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
  309. package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +34 -82
  310. package/dist/core/config.d.ts +130 -0
  311. package/{src/core/dom/attributes.ts → dist/core/dom/attributes.d.ts} +2 -13
  312. package/dist/core/dom/classes.d.ts +42 -0
  313. package/dist/core/dom/create.d.ts +124 -0
  314. package/dist/core/dom/events.d.ts +69 -0
  315. package/{src/core/dom/index.ts → dist/core/dom/index.d.ts} +1 -5
  316. package/dist/core/dom/utils.d.ts +42 -0
  317. package/dist/core/gestures/index.d.ts +12 -0
  318. package/dist/core/gestures/longpress.d.ts +23 -0
  319. package/dist/core/gestures/manager.d.ts +14 -0
  320. package/dist/core/gestures/pan.d.ts +12 -0
  321. package/dist/core/gestures/pinch.d.ts +14 -0
  322. package/dist/core/gestures/rotate.d.ts +14 -0
  323. package/dist/core/gestures/swipe.d.ts +20 -0
  324. package/dist/core/gestures/tap.d.ts +12 -0
  325. package/dist/core/gestures/types.d.ts +320 -0
  326. package/dist/core/gestures/utils.d.ts +57 -0
  327. package/dist/core/index.d.ts +29 -0
  328. package/dist/core/layout/array.d.ts +15 -0
  329. package/dist/core/layout/config.d.ts +32 -0
  330. package/dist/core/layout/create.d.ts +14 -0
  331. package/dist/core/layout/index.d.ts +13 -0
  332. package/dist/core/layout/jsx.d.ts +13 -0
  333. package/dist/core/layout/object.d.ts +14 -0
  334. package/dist/core/layout/processor.d.ts +28 -0
  335. package/dist/core/layout/result.d.ts +12 -0
  336. package/dist/core/layout/template.d.ts +12 -0
  337. package/dist/core/layout/types.d.ts +137 -0
  338. package/dist/core/layout/utils.d.ts +38 -0
  339. package/dist/core/state/disabled.d.ts +32 -0
  340. package/dist/core/state/emitter.d.ts +40 -0
  341. package/dist/core/state/events.d.ts +36 -0
  342. package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
  343. package/dist/core/state/lifecycle.d.ts +57 -0
  344. package/dist/core/state/store.d.ts +82 -0
  345. package/dist/core/utils/background.d.ts +40 -0
  346. package/dist/core/utils/index.d.ts +23 -0
  347. package/dist/core/utils/mobile.d.ts +54 -0
  348. package/dist/core/utils/object.d.ts +13 -0
  349. package/dist/core/utils/performance.d.ts +79 -0
  350. package/dist/core/utils/validate.d.ts +73 -0
  351. package/dist/index.cjs +64 -0
  352. package/dist/index.cjs.map +285 -0
  353. package/dist/index.d.ts +15 -0
  354. package/dist/index.js +53 -14854
  355. package/dist/index.js.map +285 -0
  356. package/dist/package.json +39 -0
  357. package/dist/styles.css +7 -0
  358. package/package.json +24 -5
  359. package/.env +0 -15
  360. package/.typedocignore +0 -11
  361. package/CONTRIBUTING.md +0 -218
  362. package/DOCS.md +0 -153
  363. package/TESTING.md +0 -214
  364. package/git-user-stats.js +0 -545
  365. package/index.ts +0 -10
  366. package/src/components/badge/api.ts +0 -313
  367. package/src/components/badge/config.ts +0 -153
  368. package/src/components/badge/features.ts +0 -194
  369. package/src/components/badge/index.ts +0 -90
  370. package/src/components/badge/types.ts +0 -279
  371. package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
  372. package/src/components/bottom-app-bar/config.ts +0 -29
  373. package/src/components/bottom-app-bar/types.ts +0 -114
  374. package/src/components/button/api.ts +0 -172
  375. package/src/components/button/button.ts +0 -112
  376. package/src/components/button/config.ts +0 -96
  377. package/src/components/button/index.ts +0 -37
  378. package/src/components/button/types.ts +0 -290
  379. package/src/components/card/api.ts +0 -222
  380. package/src/components/card/config.ts +0 -304
  381. package/src/components/card/content.ts +0 -343
  382. package/src/components/card/features.ts +0 -407
  383. package/src/components/card/types.ts +0 -497
  384. package/src/components/carousel/api.ts +0 -147
  385. package/src/components/carousel/carousel.ts +0 -242
  386. package/src/components/carousel/config.ts +0 -91
  387. package/src/components/carousel/constants.ts +0 -181
  388. package/src/components/carousel/features/drag.ts +0 -388
  389. package/src/components/carousel/features/slides.ts +0 -682
  390. package/src/components/carousel/types.ts +0 -327
  391. package/src/components/checkbox/api.ts +0 -82
  392. package/src/components/checkbox/checkbox.ts +0 -142
  393. package/src/components/checkbox/config.ts +0 -89
  394. package/src/components/checkbox/types.ts +0 -342
  395. package/src/components/chips/api.ts +0 -194
  396. package/src/components/chips/chip/api.ts +0 -233
  397. package/src/components/chips/chip/chip.ts +0 -131
  398. package/src/components/chips/chip/config.ts +0 -91
  399. package/src/components/chips/chip/index.ts +0 -3
  400. package/src/components/chips/chips.md +0 -481
  401. package/src/components/chips/chips.ts +0 -75
  402. package/src/components/chips/config.ts +0 -109
  403. package/src/components/chips/constants.ts +0 -61
  404. package/src/components/chips/features/chip-items.ts +0 -33
  405. package/src/components/chips/features/container.ts +0 -77
  406. package/src/components/chips/features/controller.ts +0 -448
  407. package/src/components/chips/features/label.ts +0 -108
  408. package/src/components/chips/index.ts +0 -11
  409. package/src/components/chips/schema.ts +0 -61
  410. package/src/components/chips/types.ts +0 -469
  411. package/src/components/datepicker/api.ts +0 -265
  412. package/src/components/datepicker/config.ts +0 -141
  413. package/src/components/datepicker/datepicker.ts +0 -341
  414. package/src/components/datepicker/index.ts +0 -12
  415. package/src/components/datepicker/render.ts +0 -450
  416. package/src/components/datepicker/types.ts +0 -397
  417. package/src/components/datepicker/utils.ts +0 -289
  418. package/src/components/dialog/api.ts +0 -317
  419. package/src/components/dialog/config.ts +0 -116
  420. package/src/components/dialog/features.ts +0 -907
  421. package/src/components/dialog/index.ts +0 -141
  422. package/src/components/dialog/types.ts +0 -553
  423. package/src/components/divider/config.ts +0 -165
  424. package/src/components/divider/features.ts +0 -233
  425. package/src/components/divider/types.ts +0 -132
  426. package/src/components/extended-fab/api.ts +0 -193
  427. package/src/components/extended-fab/config.ts +0 -140
  428. package/src/components/extended-fab/extended-fab.ts +0 -153
  429. package/src/components/extended-fab/types.ts +0 -749
  430. package/src/components/fab/api.ts +0 -137
  431. package/src/components/fab/config.ts +0 -121
  432. package/src/components/fab/types.ts +0 -615
  433. package/src/components/list/api.ts +0 -82
  434. package/src/components/list/config.ts +0 -63
  435. package/src/components/list/features.ts +0 -229
  436. package/src/components/list/index.ts +0 -67
  437. package/src/components/list/list-item.ts +0 -163
  438. package/src/components/list/list.ts +0 -108
  439. package/src/components/list/types.ts +0 -396
  440. package/src/components/list/utils.ts +0 -98
  441. package/src/components/menu/api.ts +0 -193
  442. package/src/components/menu/config.ts +0 -125
  443. package/src/components/menu/features/anchor.ts +0 -243
  444. package/src/components/menu/features/controller.ts +0 -1167
  445. package/src/components/menu/features/index.ts +0 -5
  446. package/src/components/menu/features/position.ts +0 -353
  447. package/src/components/menu/menu.ts +0 -119
  448. package/src/components/menu/types.ts +0 -379
  449. package/src/components/navigation/api.ts +0 -142
  450. package/src/components/navigation/config.ts +0 -73
  451. package/src/components/navigation/features/controller.ts +0 -273
  452. package/src/components/navigation/features/items.ts +0 -353
  453. package/src/components/navigation/index.ts +0 -11
  454. package/src/components/navigation/nav-item.ts +0 -196
  455. package/src/components/navigation/navigation.ts +0 -115
  456. package/src/components/navigation/system/core.ts +0 -302
  457. package/src/components/navigation/system/events.ts +0 -240
  458. package/src/components/navigation/system/index.ts +0 -184
  459. package/src/components/navigation/system/mobile.ts +0 -278
  460. package/src/components/navigation/system/state.ts +0 -77
  461. package/src/components/navigation/system/types.ts +0 -364
  462. package/src/components/navigation/types.ts +0 -292
  463. package/src/components/progress/api.ts +0 -178
  464. package/src/components/progress/config.ts +0 -122
  465. package/src/components/progress/index.ts +0 -4
  466. package/src/components/progress/progress.ts +0 -159
  467. package/src/components/progress/types.ts +0 -255
  468. package/src/components/radios/api.ts +0 -125
  469. package/src/components/radios/config.ts +0 -59
  470. package/src/components/radios/constants.ts +0 -19
  471. package/src/components/radios/index.ts +0 -3
  472. package/src/components/radios/radio.ts +0 -292
  473. package/src/components/radios/radios.ts +0 -43
  474. package/src/components/radios/types.ts +0 -219
  475. package/src/components/search/api.ts +0 -203
  476. package/src/components/search/config.ts +0 -86
  477. package/src/components/search/features/search.ts +0 -717
  478. package/src/components/search/features/states.ts +0 -169
  479. package/src/components/search/features/structure.ts +0 -197
  480. package/src/components/search/index.ts +0 -7
  481. package/src/components/search/search.ts +0 -52
  482. package/src/components/search/types.ts +0 -175
  483. package/src/components/segmented-button/config.ts +0 -119
  484. package/src/components/segmented-button/index.ts +0 -4
  485. package/src/components/segmented-button/segment.ts +0 -108
  486. package/src/components/segmented-button/segmented-button.ts +0 -361
  487. package/src/components/segmented-button/types.ts +0 -306
  488. package/src/components/select/api.ts +0 -78
  489. package/src/components/select/config.ts +0 -76
  490. package/src/components/select/features.ts +0 -317
  491. package/src/components/select/select.ts +0 -73
  492. package/src/components/select/types.ts +0 -355
  493. package/src/components/sheet/api.ts +0 -96
  494. package/src/components/sheet/config.ts +0 -65
  495. package/src/components/sheet/features/content.ts +0 -51
  496. package/src/components/sheet/features/gestures.ts +0 -177
  497. package/src/components/sheet/features/position.ts +0 -41
  498. package/src/components/sheet/features/state.ts +0 -116
  499. package/src/components/sheet/features/title.ts +0 -86
  500. package/src/components/sheet/index.ts +0 -12
  501. package/src/components/sheet/sheet.ts +0 -56
  502. package/src/components/sheet/types.ts +0 -294
  503. package/src/components/slider/accessibility.md +0 -59
  504. package/src/components/slider/api.ts +0 -192
  505. package/src/components/slider/config.ts +0 -118
  506. package/src/components/slider/features/controller.ts +0 -737
  507. package/src/components/slider/features/handlers.ts +0 -497
  508. package/src/components/slider/features/index.ts +0 -5
  509. package/src/components/slider/features/range.ts +0 -104
  510. package/src/components/slider/features/states.ts +0 -195
  511. package/src/components/slider/index.ts +0 -17
  512. package/src/components/slider/schema.ts +0 -141
  513. package/src/components/slider/slider.ts +0 -76
  514. package/src/components/slider/types.ts +0 -223
  515. package/src/components/snackbar/api.ts +0 -162
  516. package/src/components/snackbar/config.ts +0 -61
  517. package/src/components/snackbar/features.ts +0 -76
  518. package/src/components/snackbar/index.ts +0 -9
  519. package/src/components/snackbar/position.ts +0 -79
  520. package/src/components/snackbar/queue.ts +0 -76
  521. package/src/components/snackbar/snackbar.ts +0 -60
  522. package/src/components/snackbar/types.ts +0 -159
  523. package/src/components/switch/api.ts +0 -93
  524. package/src/components/switch/config.ts +0 -56
  525. package/src/components/switch/features.ts +0 -198
  526. package/src/components/switch/index.ts +0 -8
  527. package/src/components/switch/switch.ts +0 -52
  528. package/src/components/switch/types.ts +0 -168
  529. package/src/components/tabs/api.ts +0 -221
  530. package/src/components/tabs/config.ts +0 -73
  531. package/src/components/tabs/features.ts +0 -403
  532. package/src/components/tabs/index.ts +0 -46
  533. package/src/components/tabs/indicator.ts +0 -285
  534. package/src/components/tabs/responsive.ts +0 -144
  535. package/src/components/tabs/scroll-indicators.ts +0 -149
  536. package/src/components/tabs/state.ts +0 -186
  537. package/src/components/tabs/tab-api.ts +0 -266
  538. package/src/components/tabs/tab.ts +0 -267
  539. package/src/components/tabs/tabs.ts +0 -71
  540. package/src/components/tabs/types.ts +0 -461
  541. package/src/components/tabs/utils.ts +0 -107
  542. package/src/components/textfield/api.ts +0 -197
  543. package/src/components/textfield/config.ts +0 -52
  544. package/src/components/textfield/features/leading-icon.ts +0 -127
  545. package/src/components/textfield/features/placement.ts +0 -149
  546. package/src/components/textfield/features/prefix-text.ts +0 -107
  547. package/src/components/textfield/features/suffix-text.ts +0 -100
  548. package/src/components/textfield/features/supporting-text.ts +0 -113
  549. package/src/components/textfield/features/trailing-icon.ts +0 -108
  550. package/src/components/textfield/index.ts +0 -9
  551. package/src/components/textfield/textfield.ts +0 -92
  552. package/src/components/textfield/types.ts +0 -265
  553. package/src/components/timepicker/README.md +0 -277
  554. package/src/components/timepicker/api.ts +0 -632
  555. package/src/components/timepicker/clockdial.ts +0 -479
  556. package/src/components/timepicker/config.ts +0 -228
  557. package/src/components/timepicker/index.ts +0 -3
  558. package/src/components/timepicker/render.ts +0 -613
  559. package/src/components/timepicker/timepicker.ts +0 -117
  560. package/src/components/timepicker/types.ts +0 -336
  561. package/src/components/timepicker/utils.ts +0 -241
  562. package/src/components/tooltip/api.ts +0 -415
  563. package/src/components/tooltip/config.ts +0 -80
  564. package/src/components/tooltip/index.ts +0 -12
  565. package/src/components/tooltip/tooltip.ts +0 -60
  566. package/src/components/tooltip/types.ts +0 -223
  567. package/src/components/top-app-bar/config.ts +0 -83
  568. package/src/components/top-app-bar/top-app-bar.ts +0 -316
  569. package/src/components/top-app-bar/types.ts +0 -140
  570. package/src/core/build/constants.ts +0 -48
  571. package/src/core/build/icon.ts +0 -137
  572. package/src/core/build/ripple.ts +0 -193
  573. package/src/core/build/text.ts +0 -91
  574. package/src/core/collection/adapters/base.ts +0 -62
  575. package/src/core/collection/adapters/route.ts +0 -201
  576. package/src/core/collection/collection.ts +0 -300
  577. package/src/core/collection/index.ts +0 -57
  578. package/src/core/collection/list-manager.ts +0 -333
  579. package/src/core/compose/base.ts +0 -43
  580. package/src/core/compose/component.ts +0 -255
  581. package/src/core/compose/features/badge.ts +0 -79
  582. package/src/core/compose/features/checkable.ts +0 -155
  583. package/src/core/compose/features/disabled.ts +0 -116
  584. package/src/core/compose/features/events.ts +0 -65
  585. package/src/core/compose/features/icon.ts +0 -71
  586. package/src/core/compose/features/input.ts +0 -174
  587. package/src/core/compose/features/lifecycle.ts +0 -139
  588. package/src/core/compose/features/position.ts +0 -94
  589. package/src/core/compose/features/ripple.ts +0 -58
  590. package/src/core/compose/features/size.ts +0 -29
  591. package/src/core/compose/features/style.ts +0 -31
  592. package/src/core/compose/features/text.ts +0 -44
  593. package/src/core/compose/features/textinput.ts +0 -238
  594. package/src/core/compose/features/textlabel.ts +0 -113
  595. package/src/core/compose/features/track.ts +0 -84
  596. package/src/core/compose/features/variant.ts +0 -29
  597. package/src/core/compose/features/withEvents.ts +0 -137
  598. package/src/core/compose/index.ts +0 -54
  599. package/src/core/composition/features/dom.ts +0 -45
  600. package/src/core/composition/features/icon.ts +0 -131
  601. package/src/core/composition/features/label.ts +0 -155
  602. package/src/core/config.ts +0 -211
  603. package/src/core/dom/classes.ts +0 -132
  604. package/src/core/dom/create.ts +0 -273
  605. package/src/core/dom/events.ts +0 -209
  606. package/src/core/dom/utils.ts +0 -97
  607. package/src/core/index.ts +0 -111
  608. package/src/core/layout/README.md +0 -715
  609. package/src/core/layout/array.ts +0 -180
  610. package/src/core/layout/config.ts +0 -193
  611. package/src/core/layout/create.ts +0 -54
  612. package/src/core/layout/index.ts +0 -36
  613. package/src/core/layout/object.ts +0 -123
  614. package/src/core/layout/processor.ts +0 -106
  615. package/src/core/layout/result.ts +0 -84
  616. package/src/core/layout/types.ts +0 -180
  617. package/src/core/layout/utils.ts +0 -144
  618. package/src/core/state/disabled.ts +0 -81
  619. package/src/core/state/emitter.ts +0 -94
  620. package/src/core/state/events.ts +0 -88
  621. package/src/core/state/lifecycle.ts +0 -131
  622. package/src/core/state/store.ts +0 -197
  623. package/src/core/utils/index.ts +0 -45
  624. package/src/core/utils/mobile.ts +0 -98
  625. package/src/core/utils/object.ts +0 -41
  626. package/src/core/utils/validate.ts +0 -234
  627. package/src/index.ts +0 -134
  628. package/src/styles/abstract/_base.scss +0 -2
  629. package/src/styles/abstract/_config.scss +0 -28
  630. package/src/styles/abstract/_functions.scss +0 -124
  631. package/src/styles/abstract/_mixins.scss +0 -352
  632. package/src/styles/abstract/_theme.scss +0 -269
  633. package/src/styles/abstract/_variables.scss +0 -305
  634. package/src/styles/base/_reset.scss +0 -86
  635. package/src/styles/base/_typography.scss +0 -155
  636. package/src/styles/components/_badge.scss +0 -182
  637. package/src/styles/components/_bottom-app-bar.scss +0 -103
  638. package/src/styles/components/_button.scss +0 -224
  639. package/src/styles/components/_card.scss +0 -401
  640. package/src/styles/components/_carousel.scss +0 -645
  641. package/src/styles/components/_checkbox.scss +0 -231
  642. package/src/styles/components/_chips.scss +0 -638
  643. package/src/styles/components/_datepicker.scss +0 -358
  644. package/src/styles/components/_dialog.scss +0 -259
  645. package/src/styles/components/_divider.scss +0 -57
  646. package/src/styles/components/_extended-fab.scss +0 -267
  647. package/src/styles/components/_fab.scss +0 -225
  648. package/src/styles/components/_list.scss +0 -248
  649. package/src/styles/components/_menu.scss +0 -248
  650. package/src/styles/components/_navigation-mobile.scss +0 -244
  651. package/src/styles/components/_navigation-system.scss +0 -151
  652. package/src/styles/components/_navigation.scss +0 -407
  653. package/src/styles/components/_progress.scss +0 -151
  654. package/src/styles/components/_radios.scss +0 -187
  655. package/src/styles/components/_search.scss +0 -306
  656. package/src/styles/components/_segmented-button.scss +0 -227
  657. package/src/styles/components/_select.scss +0 -265
  658. package/src/styles/components/_sheet.scss +0 -236
  659. package/src/styles/components/_slider.scss +0 -489
  660. package/src/styles/components/_snackbar.scss +0 -211
  661. package/src/styles/components/_switch.scss +0 -298
  662. package/src/styles/components/_tabs.scss +0 -416
  663. package/src/styles/components/_textfield.scss +0 -773
  664. package/src/styles/components/_timepicker.scss +0 -451
  665. package/src/styles/components/_tooltip.scss +0 -241
  666. package/src/styles/components/_top-app-bar.scss +0 -225
  667. package/src/styles/main.scss +0 -175
  668. package/src/styles/themes/_autumn.scss +0 -105
  669. package/src/styles/themes/_base-theme.scss +0 -85
  670. package/src/styles/themes/_baseline.scss +0 -173
  671. package/src/styles/themes/_bluekhaki.scss +0 -125
  672. package/src/styles/themes/_brownbeige.scss +0 -125
  673. package/src/styles/themes/_browngreen.scss +0 -125
  674. package/src/styles/themes/_forest.scss +0 -77
  675. package/src/styles/themes/_greenbeige.scss +0 -125
  676. package/src/styles/themes/_index.scss +0 -6
  677. package/src/styles/themes/_material.scss +0 -125
  678. package/src/styles/themes/_ocean.scss +0 -77
  679. package/src/styles/themes/_sageivory.scss +0 -125
  680. package/src/styles/themes/_spring.scss +0 -77
  681. package/src/styles/themes/_summer.scss +0 -87
  682. package/src/styles/themes/_sunset.scss +0 -60
  683. package/src/styles/themes/_tealcaramel.scss +0 -125
  684. package/src/styles/themes/_winter.scss +0 -77
  685. package/src/styles/utilities/_colors.scss +0 -154
  686. package/src/styles/utilities/_flexbox.scss +0 -194
  687. package/src/styles/utilities/_layout.scss +0 -665
  688. package/src/styles/utilities/_ripple.scss +0 -79
  689. package/src/styles/utilities/_spacing.scss +0 -139
  690. package/src/styles/utilities/_typography.scss +0 -178
  691. 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
- });