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,313 +0,0 @@
1
- // src/components/badge/api.ts
2
- import { BadgeComponent, BadgeColor, BadgeVariant, BadgePosition } from './types';
3
- import { formatBadgeLabel } from './config';
4
-
5
- /**
6
- * API configuration options for badge component
7
- * @category Components
8
- * @internal
9
- */
10
- interface ApiOptions {
11
- visibility: {
12
- show: () => void;
13
- hide: () => void;
14
- toggle: (visible?: boolean) => void;
15
- isVisible: () => boolean;
16
- };
17
- lifecycle: {
18
- destroy: () => void;
19
- };
20
- }
21
-
22
- /**
23
- * Component with required elements and methods for API enhancement
24
- * @category Components
25
- * @internal
26
- */
27
- interface ComponentWithElements {
28
- element: HTMLElement;
29
- wrapper?: HTMLElement;
30
- config: {
31
- max?: number;
32
- label?: string | number;
33
- variant?: string;
34
- };
35
- getClass: (name: string) => string;
36
- addClass: (...classes: string[]) => any;
37
- removeClass: (...classes: string[]) => any;
38
- on: (event: string, handler: Function) => any;
39
- off: (event: string, handler: Function) => any;
40
- }
41
-
42
- // Common variant constants for internal use
43
- const VARIANT_SMALL = 'small';
44
-
45
- // Map of all badge colors for class removal
46
- const ALL_COLORS = [
47
- 'error', 'primary', 'secondary', 'tertiary', 'success', 'warning', 'info'
48
- ];
49
-
50
- // Map of all badge variants for class removal
51
- const ALL_VARIANTS = ['small', 'large'];
52
-
53
- // Map of all badge positions for class removal
54
- const ALL_POSITIONS = ['top-right', 'top-left', 'bottom-right', 'bottom-left'];
55
-
56
- /**
57
- * Enhances a badge component with API methods.
58
- * This follows the higher-order function pattern to add public API methods
59
- * to the component, making them available to the end user.
60
- *
61
- * @param {ApiOptions} options - API configuration options
62
- * @returns {Function} Higher-order function that adds API methods to component
63
- * @category Components
64
- * @internal This is an internal utility for the Badge component
65
- */
66
- export const withAPI = ({ visibility, lifecycle }: ApiOptions) =>
67
- (component: ComponentWithElements): BadgeComponent => ({
68
- ...component as any,
69
-
70
- /**
71
- * Sets the badge label
72
- * @param {string|number} label - Label to display in the badge
73
- * @returns {BadgeComponent} Badge component instance for chaining
74
- */
75
- setLabel(label: string | number) {
76
- component.config.label = label;
77
-
78
- // Small badges (dot variant) don't have text
79
- if (component.config.variant === VARIANT_SMALL) {
80
- component.element.textContent = '';
81
- return this;
82
- }
83
-
84
- // Format the label
85
- const formattedLabel = formatBadgeLabel(label, component.config.max);
86
- component.element.textContent = formattedLabel;
87
-
88
- // Add overflow class if label was truncated
89
- component.element.classList.remove(`${component.getClass('badge')}--overflow`);
90
- if (typeof label === 'number' &&
91
- component.config.max !== undefined &&
92
- label > component.config.max) {
93
- component.element.classList.add(`${component.getClass('badge')}--overflow`);
94
- }
95
-
96
- // Toggle visibility based on whether label is empty
97
- if (formattedLabel === '' || formattedLabel === '0') {
98
- this.hide();
99
- } else {
100
- this.show();
101
- }
102
-
103
- return this;
104
- },
105
-
106
- /**
107
- * Gets the badge label
108
- * @returns {string} Current badge label
109
- */
110
- getLabel() {
111
- return component.element.textContent || '';
112
- },
113
-
114
- /**
115
- * Shows the badge
116
- * @returns {BadgeComponent} Badge component instance for chaining
117
- */
118
- show() {
119
- visibility.show();
120
- return this;
121
- },
122
-
123
- /**
124
- * Hides the badge
125
- * @returns {BadgeComponent} Badge component instance for chaining
126
- */
127
- hide() {
128
- visibility.hide();
129
- return this;
130
- },
131
-
132
- /**
133
- * Toggles badge visibility
134
- * @param {boolean} [visible] - Optional flag to force visibility state
135
- * @returns {BadgeComponent} Badge component instance for chaining
136
- */
137
- toggle(visible?: boolean) {
138
- visibility.toggle(visible);
139
- return this;
140
- },
141
-
142
- /**
143
- * Checks if the badge is visible
144
- * @returns {boolean} True if badge is visible
145
- */
146
- isVisible() {
147
- return visibility.isVisible();
148
- },
149
-
150
- /**
151
- * Sets maximum value (after which badge shows max+)
152
- *
153
- * @param {number} max - Maximum value to display
154
- * @returns {BadgeComponent} Badge component instance for chaining
155
- */
156
- setMax(max: number) {
157
- component.config.max = max;
158
-
159
- // Apply max formatting if current label exceeds max
160
- if (component.config.label !== undefined) {
161
- this.setLabel(component.config.label);
162
- }
163
-
164
- return this;
165
- },
166
-
167
- /**
168
- * Sets badge color
169
- * @param {string} color - Color variant to apply
170
- * @returns {BadgeComponent} Badge component instance for chaining
171
- */
172
- setColor(color: BadgeColor | string) {
173
- // Remove existing color classes
174
- ALL_COLORS.forEach(colorName => {
175
- component.element.classList.remove(`${component.getClass('badge')}--${colorName}`);
176
- });
177
-
178
- // Add new color class
179
- component.element.classList.add(`${component.getClass('badge')}--${color}`);
180
- return this;
181
- },
182
-
183
- /**
184
- * Sets badge variant
185
- * @param {string} variant - Variant to apply (small or large)
186
- * @returns {BadgeComponent} Badge component instance for chaining
187
- */
188
- setVariant(variant: BadgeVariant | string) {
189
- // Remove existing variant classes
190
- ALL_VARIANTS.forEach(variantName => {
191
- component.element.classList.remove(`${component.getClass('badge')}--${variantName}`);
192
- });
193
-
194
- // Add new variant class
195
- component.element.classList.add(`${component.getClass('badge')}--${variant}`);
196
-
197
- // Update component config
198
- component.config.variant = variant;
199
-
200
- // Update accessibility attributes
201
- if (variant === VARIANT_SMALL) {
202
- component.element.textContent = '';
203
- component.element.setAttribute('aria-hidden', 'true');
204
- } else {
205
- component.element.setAttribute('role', 'status');
206
-
207
- // Restore label for large badges
208
- if (component.config.label !== undefined) {
209
- this.setLabel(component.config.label);
210
- }
211
- }
212
-
213
- return this;
214
- },
215
-
216
- /**
217
- * Sets badge position
218
- * @param {string} position - Position variant to apply
219
- * @returns {BadgeComponent} Badge component instance for chaining
220
- */
221
- setPosition(position: BadgePosition | string) {
222
- // Remove existing position classes
223
- ALL_POSITIONS.forEach(posName => {
224
- component.element.classList.remove(`${component.getClass('badge')}--${posName}`);
225
- });
226
-
227
- // Add new position class
228
- component.element.classList.add(`${component.getClass('badge')}--${position}`);
229
-
230
- return this;
231
- },
232
-
233
- /**
234
- * Attaches badge to a target element
235
- * @param {HTMLElement} target - Element to attach badge to
236
- * @returns {BadgeComponent} Badge component instance for chaining
237
- */
238
- attachTo(target: HTMLElement) {
239
- // If we already have a wrapper, remove the badge from it
240
- if (component.wrapper && component.wrapper.contains(component.element)) {
241
- component.wrapper.removeChild(component.element);
242
- }
243
-
244
- // Create a new wrapper to hold the target and badge
245
- const wrapper = document.createElement('div');
246
- wrapper.classList.add(component.getClass('badge-wrapper'));
247
- wrapper.style.position = 'relative';
248
-
249
- // Replace the target with the wrapper
250
- const parent = target.parentNode;
251
- if (parent) {
252
- parent.replaceChild(wrapper, target);
253
- wrapper.appendChild(target);
254
- wrapper.appendChild(component.element);
255
-
256
- // Make sure the badge is positioned
257
- component.element.classList.add(`${component.getClass('badge')}--positioned`);
258
-
259
- // Save the wrapper reference
260
- component.wrapper = wrapper;
261
- }
262
-
263
- return this;
264
- },
265
-
266
- /**
267
- * Makes badge standalone (removes from wrapper)
268
- * @returns {BadgeComponent} Badge component instance for chaining
269
- */
270
- detach() {
271
- if (component.wrapper && component.wrapper.contains(component.element)) {
272
- // Remove the badge from the wrapper
273
- component.wrapper.removeChild(component.element);
274
-
275
- // Remove the positioned class
276
- component.element.classList.remove(`${component.getClass('badge')}--positioned`);
277
-
278
- // Add the badge to the document body or another container
279
- document.body.appendChild(component.element);
280
-
281
- // Clear the wrapper reference
282
- component.wrapper = undefined;
283
- }
284
-
285
- return this;
286
- },
287
-
288
- /**
289
- * Destroys the badge component and cleans up resources
290
- */
291
- destroy() {
292
- lifecycle.destroy();
293
-
294
- // If badge is in a wrapper, restore the original DOM structure
295
- if (component.wrapper) {
296
- const target = component.wrapper.firstChild as HTMLElement;
297
- const parent = component.wrapper.parentNode;
298
-
299
- if (parent && target) {
300
- parent.replaceChild(target, component.wrapper);
301
- }
302
- }
303
- },
304
-
305
- // Forward basic component methods for API consistency
306
- getClass: component.getClass,
307
- addClass: component.addClass,
308
- removeClass: component.removeClass,
309
- on: component.on,
310
- off: component.off,
311
- element: component.element,
312
- wrapper: component.wrapper
313
- });
@@ -1,153 +0,0 @@
1
- // src/components/badge/config.ts
2
- import {
3
- createComponentConfig,
4
- createElementConfig
5
- } from '../../core/config/component-config';
6
- import { BadgeConfig } from './types';
7
-
8
- /**
9
- * Maximum character count for badge labels
10
- * @category Components
11
- * @internal
12
- */
13
- export const BADGE_MAX_CHARACTERS = 4;
14
-
15
- /**
16
- * Default configuration for the Badge component
17
- * These values will be used when not explicitly specified by the user.
18
- *
19
- * @category Components
20
- */
21
- export const defaultConfig: BadgeConfig = {
22
- /** Default to large badge (with text capability) */
23
- variant: 'large',
24
- /** Default to error (red) color */
25
- color: 'error',
26
- /** Default to top-right corner positioning */
27
- position: 'top-right',
28
- /** Default to empty label */
29
- label: '',
30
- /** Default to visible */
31
- visible: true
32
- };
33
-
34
- /**
35
- * Creates the base configuration for Badge component by merging user-provided
36
- * config with default values.
37
- *
38
- * @param {BadgeConfig} config - User provided configuration
39
- * @returns {BadgeConfig} Complete configuration with defaults applied
40
- * @category Components
41
- * @internal
42
- */
43
- export const createBaseConfig = (config: BadgeConfig = {}): BadgeConfig =>
44
- createComponentConfig(defaultConfig, config, 'badge') as BadgeConfig;
45
-
46
- /**
47
- * Generates element configuration for the Badge component.
48
- * This function creates the necessary attributes and configuration
49
- * for the DOM element creation process.
50
- *
51
- * @param {BadgeConfig} config - Badge configuration
52
- * @returns {Object} Element configuration object for withElement
53
- * @category Components
54
- * @internal
55
- */
56
- export const getElementConfig = (config: BadgeConfig) => {
57
- // Create the attributes object
58
- const attrs: Record<string, any> = {};
59
-
60
- // For large badges, set appropriate ARIA attributes for screen readers
61
- if (config.variant !== 'small') {
62
- attrs.role = 'status';
63
- }
64
-
65
- // Format the label if needed - small badges have no text
66
- const formattedLabel = config.variant === 'small'
67
- ? ''
68
- : formatBadgeLabel(config.label || '', config.max);
69
-
70
- return createElementConfig(config, {
71
- tag: 'span',
72
- attrs,
73
- className: config.class,
74
- text: formattedLabel // Use the formatted label
75
- });
76
- };
77
-
78
- /**
79
- * Creates API configuration for the Badge component.
80
- * This connects the core component features (like visibility)
81
- * to the public API methods exposed to users.
82
- *
83
- * @param {Object} comp - Component with visibility and lifecycle features
84
- * @returns {Object} API configuration object
85
- * @category Components
86
- * @internal
87
- */
88
- export const getApiConfig = (comp) => ({
89
- visibility: {
90
- show: () => comp.visibility.show(),
91
- hide: () => comp.visibility.hide(),
92
- toggle: (visible?: boolean) => comp.visibility.toggle(visible),
93
- isVisible: () => comp.visibility.isVisible()
94
- },
95
- lifecycle: {
96
- destroy: () => comp.lifecycle.destroy()
97
- }
98
- });
99
-
100
- /**
101
- * Format a badge label following Material Design 3 guidelines:
102
- * - Max 4 characters including "+" for overflow
103
- * - Add "+" for numeric values exceeding max
104
- *
105
- * @param {string|number} label - Original label
106
- * @param {number} max - Maximum value before using "+"
107
- * @returns {string} Formatted label that fits within badge constraints
108
- * @category Components
109
- * @internal
110
- *
111
- * @example
112
- * formatBadgeLabel(5) // "5"
113
- * formatBadgeLabel(1250, 999) // "999+"
114
- * formatBadgeLabel("New") // "New"
115
- * formatBadgeLabel("VeryLong") // "Very" (truncated)
116
- */
117
- export const formatBadgeLabel = (label: string | number, max?: number): string => {
118
- // Handle empty or undefined labels
119
- if (label === undefined || label === null || label === '') {
120
- return '';
121
- }
122
-
123
- let formattedLabel = String(label);
124
-
125
- const numericLabel = Number(label);
126
-
127
- // Apply max value formatting for numbers
128
- if (max !== undefined && !isNaN(numericLabel) && numericLabel > max) {
129
- formattedLabel = `${max}+`;
130
- }
131
-
132
- // Ensure label doesn't exceed max characters
133
- if (formattedLabel.length > BADGE_MAX_CHARACTERS) {
134
- // Try to preserve as much information as possible
135
- // For large numbers, use abbreviated format with "+"
136
- const numericValue = Number(label);
137
- if (!isNaN(numericValue)) {
138
- if (numericValue >= 1000) {
139
- formattedLabel = '999+';
140
- } else {
141
- // For numbers under 1000 but still too long, truncate
142
- formattedLabel = formattedLabel.substring(0, BADGE_MAX_CHARACTERS - 1) + '+';
143
- }
144
- } else {
145
- // For non-numeric values, simply truncate
146
- formattedLabel = formattedLabel.substring(0, BADGE_MAX_CHARACTERS);
147
- }
148
- }
149
-
150
- return formattedLabel;
151
- };
152
-
153
- export default defaultConfig;
@@ -1,194 +0,0 @@
1
- // src/components/badge/features.ts
2
- import { BadgeConfig } from './types';
3
- import { formatBadgeLabel } from './config';
4
-
5
- // Common badge variants
6
- const VARIANT_SMALL = 'small';
7
- const VARIANT_LARGE = 'large';
8
-
9
- // Common badge colors
10
- const COLOR_ERROR = 'error';
11
-
12
- // Common badge positions
13
- const POSITION_TOP_RIGHT = 'top-right';
14
-
15
- /**
16
- * Higher-order function that adds visibility control features to a component
17
- * @returns {Function} Component enhancer with visibility features
18
- */
19
- export const withVisibility = () => component => {
20
- // Get config values
21
- const visible = component.config.visible !== false; // Default to true if not specified
22
-
23
- // Initialize visibility state based on config
24
- if (!visible) {
25
- component.element.classList.add(`${component.getClass('badge')}--invisible`);
26
- }
27
-
28
- return {
29
- ...component,
30
- visibility: {
31
- /**
32
- * Shows the badge
33
- */
34
- show() {
35
- component.element.classList.remove(`${component.getClass('badge')}--invisible`);
36
- },
37
-
38
- /**
39
- * Hides the badge
40
- */
41
- hide() {
42
- component.element.classList.add(`${component.getClass('badge')}--invisible`);
43
- },
44
-
45
- /**
46
- * Toggles badge visibility
47
- * @param {boolean} [visible] - Optional flag to force visibility state
48
- */
49
- toggle(visible?: boolean) {
50
- if (visible === undefined) {
51
- component.element.classList.toggle(`${component.getClass('badge')}--invisible`);
52
- } else if (visible) {
53
- this.show();
54
- } else {
55
- this.hide();
56
- }
57
- },
58
-
59
- /**
60
- * Checks if the badge is visible
61
- * @returns {boolean} True if badge is visible
62
- */
63
- isVisible() {
64
- return !component.element.classList.contains(`${component.getClass('badge')}--invisible`);
65
- }
66
- }
67
- };
68
- };
69
-
70
- /**
71
- * Higher-order function that adds variant features to a badge component
72
- * @param {BadgeConfig} config - Badge configuration
73
- * @returns {Function} Component enhancer with variant features
74
- */
75
- export const withVariant = (config: BadgeConfig) => component => {
76
- // Get variant from config with fallback to default
77
- const variant = config.variant || VARIANT_LARGE;
78
-
79
- // Apply variant class
80
- component.element.classList.add(`${component.getClass('badge')}--${variant}`);
81
-
82
- // Small badges (dot variant) don't have text
83
- if (variant === VARIANT_SMALL) {
84
- component.element.textContent = '';
85
- component.element.setAttribute('aria-hidden', 'true');
86
- } else {
87
- // Add accessibility for large badges
88
- component.element.setAttribute('role', 'status');
89
-
90
- // Set the label if available and variant is large
91
- if (config.label !== undefined && config.label !== '') {
92
- // Format the label according to max value
93
- const formattedLabel = formatBadgeLabel(config.label, config.max);
94
- component.element.textContent = formattedLabel;
95
- }
96
- }
97
-
98
- return component;
99
- };
100
-
101
- /**
102
- * Higher-order function that adds color features to a badge component
103
- * @param {BadgeConfig} config - Badge configuration
104
- * @returns {Function} Component enhancer with color features
105
- */
106
- export const withColor = (config: BadgeConfig) => component => {
107
- // Get color from config with fallback to default
108
- const color = config.color || COLOR_ERROR;
109
-
110
- // Apply color class
111
- component.element.classList.add(`${component.getClass('badge')}--${color}`);
112
-
113
- return component;
114
- };
115
-
116
- /**
117
- * Higher-order function that adds positioning features to a badge component
118
- * @param {BadgeConfig} config - Badge configuration
119
- * @returns {Function} Component enhancer with positioning features
120
- */
121
- export const withPosition = (config: BadgeConfig) => component => {
122
- // Get position from config with fallback to default
123
- const position = config.position || POSITION_TOP_RIGHT;
124
-
125
- // Apply position class
126
- component.element.classList.add(`${component.getClass('badge')}--${position}`);
127
-
128
- // If there's a target, add positioned class
129
- if (config.target) {
130
- component.element.classList.add(`${component.getClass('badge')}--positioned`);
131
- }
132
-
133
- return component;
134
- };
135
-
136
- /**
137
- * Higher-order function that adds max value features to a badge component
138
- * @param {BadgeConfig} config - Badge configuration
139
- * @returns {Function} Component enhancer with max value features
140
- */
141
- export const withMax = (config: BadgeConfig) => component => {
142
- // Skip if no max is defined or for small badges
143
- if (config.max === undefined || config.variant === VARIANT_SMALL) {
144
- return component;
145
- }
146
-
147
- // Store max value in config for later use
148
- component.config.max = config.max;
149
-
150
- // Apply max formatting if needed
151
- if (config.label !== undefined && config.label !== '') {
152
- const formattedLabel = formatBadgeLabel(config.label, config.max);
153
- component.element.textContent = formattedLabel;
154
-
155
- // Add overflow class if label was truncated
156
- if (typeof config.label === 'number' && config.label > config.max) {
157
- component.element.classList.add(`${component.getClass('badge')}--overflow`);
158
- }
159
- }
160
-
161
- return component;
162
- };
163
-
164
- /**
165
- * Higher-order function that attaches badge to a target element
166
- * @param {BadgeConfig} config - Badge configuration
167
- * @returns {Function} Component enhancer with attachment features
168
- */
169
- export const withAttachment = (config: BadgeConfig) => component => {
170
- // Skip if no target is provided
171
- if (!config.target) {
172
- return component;
173
- }
174
-
175
- // Create wrapper to hold the target and badge
176
- const wrapper = document.createElement('div');
177
- wrapper.classList.add(component.getClass('badge-wrapper'));
178
-
179
- // Make sure positioning context is correct
180
- wrapper.style.position = 'relative';
181
-
182
- // Replace the target with the wrapper
183
- const parent = config.target.parentNode;
184
- if (parent) {
185
- parent.replaceChild(wrapper, config.target);
186
- wrapper.appendChild(config.target);
187
- wrapper.appendChild(component.element);
188
-
189
- // Save the wrapper reference
190
- component.wrapper = wrapper;
191
- }
192
-
193
- return component;
194
- };