@mozaic-ds/web-components 1.0.0-beta.7 → 1.0.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 (467) hide show
  1. package/README.md +36 -68
  2. package/dist/Cross20.js +1 -1
  3. package/dist/Cross20.js.map +1 -1
  4. package/dist/Cross24.js +1 -1
  5. package/dist/CrossCircleFilled24.js +1 -1
  6. package/dist/attributes.js +1 -1
  7. package/dist/attributes.js.map +1 -1
  8. package/dist/bundle.d.ts +24 -23
  9. package/dist/bundle.d.ts.map +1 -1
  10. package/dist/bundle.js +24 -23
  11. package/dist/components/avatar/Avatar.js +2 -2
  12. package/dist/components/avatar/Avatar.js.map +1 -1
  13. package/dist/components/avatar/Avatar.spec.js +17 -0
  14. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  15. package/dist/components/avatar/Avatar.stories.js +3 -29
  16. package/dist/components/avatar/Avatar.svelte +2 -0
  17. package/dist/components/avatar/Avatar.svelte.d.ts +2 -0
  18. package/dist/components/avatar/Avatar.svelte.d.ts.map +1 -1
  19. package/dist/components/avatar/README.md +16 -0
  20. package/dist/components/breadcrumb/Breadcrumb.js +2 -2
  21. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  22. package/dist/components/breadcrumb/Breadcrumb.spec.js +42 -0
  23. package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  24. package/dist/components/breadcrumb/Breadcrumb.stories.js +6 -35
  25. package/dist/components/breadcrumb/Breadcrumb.svelte +11 -16
  26. package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  27. package/dist/components/breadcrumb/README.md +11 -0
  28. package/dist/components/button/Button.js +2 -2
  29. package/dist/components/button/Button.js.map +1 -1
  30. package/dist/components/button/Button.spec.js +74 -0
  31. package/dist/components/button/Button.stories.d.ts +9 -13
  32. package/dist/components/button/Button.stories.d.ts.map +1 -1
  33. package/dist/components/button/Button.stories.js +46 -146
  34. package/dist/components/button/Button.svelte +70 -53
  35. package/dist/components/button/Button.svelte.d.ts +36 -8
  36. package/dist/components/button/Button.svelte.d.ts.map +1 -1
  37. package/dist/components/button/README.md +26 -0
  38. package/dist/components/callout/Callout.js +1 -1
  39. package/dist/components/callout/Callout.js.map +1 -1
  40. package/dist/components/callout/Callout.spec.js +33 -0
  41. package/dist/components/callout/Callout.stories.d.ts.map +1 -1
  42. package/dist/components/callout/Callout.stories.js +2 -55
  43. package/dist/components/callout/Callout.svelte +4 -0
  44. package/dist/components/callout/Callout.svelte.d.ts +4 -0
  45. package/dist/components/callout/Callout.svelte.d.ts.map +1 -1
  46. package/dist/components/callout/README.md +20 -0
  47. package/dist/components/checkbox/Checkbox.js +3 -3
  48. package/dist/components/checkbox/Checkbox.js.map +1 -1
  49. package/dist/components/checkbox/Checkbox.spec.js +70 -0
  50. package/dist/components/checkbox/Checkbox.stories.d.ts +11 -16
  51. package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
  52. package/dist/components/checkbox/Checkbox.stories.js +67 -124
  53. package/dist/components/checkbox/Checkbox.svelte +42 -22
  54. package/dist/components/checkbox/Checkbox.svelte.d.ts +31 -6
  55. package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
  56. package/dist/components/checkbox/README.md +17 -0
  57. package/dist/components/checkboxgroup/CheckboxGroup.js +3 -3
  58. package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
  59. package/dist/components/checkboxgroup/CheckboxGroup.spec.js +113 -0
  60. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +5 -13
  61. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
  62. package/dist/components/checkboxgroup/CheckboxGroup.stories.js +56 -140
  63. package/dist/components/checkboxgroup/CheckboxGroup.svelte +56 -45
  64. package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts +30 -6
  65. package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts.map +1 -1
  66. package/dist/components/checkboxgroup/README.md +14 -0
  67. package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
  68. package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
  69. package/dist/components/circularprogressbar/CircularProgressbar.spec.js +74 -0
  70. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +6 -6
  71. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
  72. package/dist/components/circularprogressbar/CircularProgressbar.stories.js +29 -68
  73. package/dist/components/circularprogressbar/CircularProgressbar.svelte +25 -6
  74. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts +18 -0
  75. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts.map +1 -1
  76. package/dist/components/circularprogressbar/README.md +14 -0
  77. package/dist/components/datepicker/Datepicker.js +3 -3
  78. package/dist/components/datepicker/Datepicker.js.map +1 -1
  79. package/dist/components/datepicker/Datepicker.spec.js +95 -0
  80. package/dist/components/datepicker/Datepicker.stories.d.ts +7 -6
  81. package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
  82. package/dist/components/datepicker/Datepicker.stories.js +58 -75
  83. package/dist/components/datepicker/Datepicker.svelte +48 -25
  84. package/dist/components/datepicker/Datepicker.svelte.d.ts +30 -1
  85. package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
  86. package/dist/components/datepicker/README.md +18 -0
  87. package/dist/components/drawer/Drawer.js +2 -2
  88. package/dist/components/drawer/Drawer.js.map +1 -1
  89. package/dist/components/drawer/Drawer.spec.js +101 -0
  90. package/dist/components/drawer/Drawer.stories.d.ts +29 -8
  91. package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
  92. package/dist/components/drawer/Drawer.stories.js +86 -87
  93. package/dist/components/drawer/Drawer.svelte +61 -38
  94. package/dist/components/drawer/Drawer.svelte.d.ts +26 -3
  95. package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
  96. package/dist/components/drawer/README.md +29 -0
  97. package/dist/components/field/Field.js +2 -2
  98. package/dist/components/field/Field.js.map +1 -1
  99. package/dist/components/field/Field.spec.js +51 -0
  100. package/dist/components/field/Field.stories.d.ts +9 -15
  101. package/dist/components/field/Field.stories.d.ts.map +1 -1
  102. package/dist/components/field/Field.stories.js +86 -142
  103. package/dist/components/field/Field.svelte +48 -12
  104. package/dist/components/field/Field.svelte.d.ts +38 -7
  105. package/dist/components/field/Field.svelte.d.ts.map +1 -1
  106. package/dist/components/field/README.md +24 -0
  107. package/dist/components/flag/Flag.js +2 -2
  108. package/dist/components/flag/Flag.js.map +1 -1
  109. package/dist/components/flag/Flag.spec.js +30 -0
  110. package/dist/components/flag/Flag.stories.d.ts +8 -18
  111. package/dist/components/flag/Flag.stories.d.ts.map +1 -1
  112. package/dist/components/flag/Flag.stories.js +28 -106
  113. package/dist/components/flag/Flag.svelte +11 -9
  114. package/dist/components/flag/Flag.svelte.d.ts +10 -28
  115. package/dist/components/flag/Flag.svelte.d.ts.map +1 -1
  116. package/dist/components/flag/README.md +11 -0
  117. package/dist/components/iconbutton/IconButton.js +2 -2
  118. package/dist/components/iconbutton/IconButton.js.map +1 -1
  119. package/dist/components/iconbutton/IconButton.stories.d.ts +11 -11
  120. package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
  121. package/dist/components/iconbutton/IconButton.stories.js +51 -67
  122. package/dist/components/iconbutton/IconButton.svelte +41 -37
  123. package/dist/components/iconbutton/IconButton.svelte.d.ts +28 -7
  124. package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
  125. package/dist/components/iconbutton/README.md +21 -0
  126. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
  127. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
  128. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.spec.js +28 -0
  129. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +5 -7
  130. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
  131. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +18 -49
  132. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +15 -5
  133. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts +10 -1
  134. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts.map +1 -1
  135. package/dist/components/linearprogressbarbuffer/README.md +11 -0
  136. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
  137. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
  138. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.spec.js +26 -0
  139. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +4 -5
  140. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
  141. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +15 -33
  142. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +6 -0
  143. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts +6 -0
  144. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts.map +1 -1
  145. package/dist/components/linearprogressbarpercentage/README.md +10 -0
  146. package/dist/components/link/Link.js +2 -2
  147. package/dist/components/link/Link.js.map +1 -1
  148. package/dist/components/link/Link.spec.js +51 -0
  149. package/dist/components/link/Link.stories.d.ts +12 -12
  150. package/dist/components/link/Link.stories.d.ts.map +1 -1
  151. package/dist/components/link/Link.stories.js +61 -74
  152. package/dist/components/link/Link.svelte +45 -40
  153. package/dist/components/link/Link.svelte.d.ts +29 -8
  154. package/dist/components/link/Link.svelte.d.ts.map +1 -1
  155. package/dist/components/link/README.md +23 -0
  156. package/dist/components/loader/Loader.js +2 -2
  157. package/dist/components/loader/Loader.js.map +1 -1
  158. package/dist/components/loader/Loader.spec.js +54 -0
  159. package/dist/components/loader/Loader.stories.d.ts +8 -10
  160. package/dist/components/loader/Loader.stories.d.ts.map +1 -1
  161. package/dist/components/loader/Loader.stories.js +27 -43
  162. package/dist/components/loader/Loader.svelte +31 -31
  163. package/dist/components/loader/Loader.svelte.d.ts +14 -3
  164. package/dist/components/loader/Loader.svelte.d.ts.map +1 -1
  165. package/dist/components/loader/README.md +12 -0
  166. package/dist/components/loadingoverlay/LoadingOverlay.js +4 -0
  167. package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -0
  168. package/dist/components/loadingoverlay/LoadingOverlay.spec.js +38 -0
  169. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +7 -0
  170. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -0
  171. package/dist/components/loadingoverlay/LoadingOverlay.stories.js +39 -0
  172. package/dist/components/loadingoverlay/LoadingOverlay.svelte +50 -0
  173. package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts +17 -0
  174. package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts.map +1 -0
  175. package/dist/components/loadingoverlay/README.md +11 -0
  176. package/dist/components/modal/Modal.js +2 -2
  177. package/dist/components/modal/Modal.js.map +1 -1
  178. package/dist/components/modal/Modal.spec.js +50 -0
  179. package/dist/components/modal/Modal.stories.d.ts +36 -9
  180. package/dist/components/modal/Modal.stories.d.ts.map +1 -1
  181. package/dist/components/modal/Modal.stories.js +54 -83
  182. package/dist/components/modal/Modal.svelte +42 -41
  183. package/dist/components/modal/Modal.svelte.d.ts +22 -5
  184. package/dist/components/modal/Modal.svelte.d.ts.map +1 -1
  185. package/dist/components/modal/README.md +28 -0
  186. package/dist/components/numberbadge/NumberBadge.js +2 -2
  187. package/dist/components/numberbadge/NumberBadge.js.map +1 -1
  188. package/dist/components/numberbadge/NumberBadge.spec.js +28 -0
  189. package/dist/components/numberbadge/NumberBadge.stories.d.ts +9 -13
  190. package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
  191. package/dist/components/numberbadge/NumberBadge.stories.js +28 -56
  192. package/dist/components/numberbadge/NumberBadge.svelte +24 -20
  193. package/dist/components/numberbadge/NumberBadge.svelte.d.ts +15 -4
  194. package/dist/components/numberbadge/NumberBadge.svelte.d.ts.map +1 -1
  195. package/dist/components/numberbadge/README.md +12 -0
  196. package/dist/components/overlay/Overlay.js +2 -2
  197. package/dist/components/overlay/Overlay.js.map +1 -1
  198. package/dist/components/overlay/Overlay.spec.js +29 -0
  199. package/dist/components/overlay/Overlay.stories.d.ts +5 -7
  200. package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
  201. package/dist/components/overlay/Overlay.stories.js +32 -40
  202. package/dist/components/overlay/Overlay.svelte +14 -4
  203. package/dist/components/overlay/Overlay.svelte.d.ts +11 -0
  204. package/dist/components/overlay/Overlay.svelte.d.ts.map +1 -1
  205. package/dist/components/overlay/README.md +17 -0
  206. package/dist/components/pagination/Pagination.js +6 -6
  207. package/dist/components/pagination/Pagination.js.map +1 -1
  208. package/dist/components/pagination/Pagination.spec.js +65 -0
  209. package/dist/components/pagination/Pagination.stories.d.ts +8 -11
  210. package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
  211. package/dist/components/pagination/Pagination.stories.js +37 -91
  212. package/dist/components/pagination/Pagination.svelte +33 -12
  213. package/dist/components/pagination/Pagination.svelte.d.ts +27 -4
  214. package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
  215. package/dist/components/pagination/README.md +16 -0
  216. package/dist/components/passwordinput/PasswordInput.js +3 -4
  217. package/dist/components/passwordinput/PasswordInput.js.map +1 -1
  218. package/dist/components/passwordinput/PasswordInput.spec.js +84 -0
  219. package/dist/components/passwordinput/PasswordInput.stories.d.ts +10 -13
  220. package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
  221. package/dist/components/passwordinput/PasswordInput.stories.js +67 -124
  222. package/dist/components/passwordinput/PasswordInput.svelte +387 -24
  223. package/dist/components/passwordinput/PasswordInput.svelte.d.ts +34 -2
  224. package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
  225. package/dist/components/passwordinput/README.md +19 -0
  226. package/dist/components/pincode/Pincode.js +2 -2
  227. package/dist/components/pincode/Pincode.js.map +1 -1
  228. package/dist/components/pincode/Pincode.spec.js +99 -0
  229. package/dist/components/pincode/Pincode.stories.d.ts +9 -13
  230. package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
  231. package/dist/components/pincode/Pincode.stories.js +62 -127
  232. package/dist/components/pincode/Pincode.svelte +56 -41
  233. package/dist/components/pincode/Pincode.svelte.d.ts +30 -24
  234. package/dist/components/pincode/Pincode.svelte.d.ts.map +1 -1
  235. package/dist/components/pincode/README.md +22 -0
  236. package/dist/components/quantityselector/QuantitySelector.js +2 -2
  237. package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
  238. package/dist/components/quantityselector/QuantitySelector.spec.js +104 -0
  239. package/dist/components/quantityselector/QuantitySelector.stories.d.ts +11 -15
  240. package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
  241. package/dist/components/quantityselector/QuantitySelector.stories.js +77 -145
  242. package/dist/components/quantityselector/QuantitySelector.svelte +100 -77
  243. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts +49 -17
  244. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
  245. package/dist/components/quantityselector/README.md +21 -0
  246. package/dist/components/radio/README.md +15 -0
  247. package/dist/components/radio/Radio.js +2 -2
  248. package/dist/components/radio/Radio.js.map +1 -1
  249. package/dist/components/radio/Radio.spec.js +60 -0
  250. package/dist/components/radio/Radio.stories.d.ts +9 -13
  251. package/dist/components/radio/Radio.stories.d.ts.map +1 -1
  252. package/dist/components/radio/Radio.stories.js +54 -70
  253. package/dist/components/radio/Radio.svelte +42 -20
  254. package/dist/components/radio/Radio.svelte.d.ts +27 -5
  255. package/dist/components/radio/Radio.svelte.d.ts.map +1 -1
  256. package/dist/components/radiogroup/README.md +14 -0
  257. package/dist/components/radiogroup/RadioGroup.js +3 -3
  258. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  259. package/dist/components/radiogroup/RadioGroup.spec.js +65 -0
  260. package/dist/components/radiogroup/RadioGroup.stories.d.ts +5 -12
  261. package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
  262. package/dist/components/radiogroup/RadioGroup.stories.js +56 -151
  263. package/dist/components/radiogroup/RadioGroup.svelte +50 -43
  264. package/dist/components/radiogroup/RadioGroup.svelte.d.ts +28 -9
  265. package/dist/components/radiogroup/RadioGroup.svelte.d.ts.map +1 -1
  266. package/dist/components/select/README.md +18 -0
  267. package/dist/components/select/Select.js +2 -2
  268. package/dist/components/select/Select.js.map +1 -1
  269. package/dist/components/select/Select.spec.js +76 -0
  270. package/dist/components/select/Select.stories.d.ts +10 -14
  271. package/dist/components/select/Select.stories.d.ts.map +1 -1
  272. package/dist/components/select/Select.stories.js +87 -92
  273. package/dist/components/select/Select.svelte +57 -44
  274. package/dist/components/select/Select.svelte.d.ts +41 -10
  275. package/dist/components/select/Select.svelte.d.ts.map +1 -1
  276. package/dist/components/statusbadge/README.md +11 -0
  277. package/dist/components/statusbadge/StatusBadge.js +2 -2
  278. package/dist/components/statusbadge/StatusBadge.js.map +1 -1
  279. package/dist/components/statusbadge/StatusBadge.spec.js +31 -0
  280. package/dist/components/statusbadge/StatusBadge.stories.d.ts +9 -12
  281. package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
  282. package/dist/components/statusbadge/StatusBadge.stories.js +21 -44
  283. package/dist/components/statusbadge/StatusBadge.svelte +14 -6
  284. package/dist/components/statusbadge/StatusBadge.svelte.d.ts +13 -28
  285. package/dist/components/statusbadge/StatusBadge.svelte.d.ts.map +1 -1
  286. package/dist/components/statusdot/README.md +11 -0
  287. package/dist/components/statusdot/StatusDot.js +2 -2
  288. package/dist/components/statusdot/StatusDot.js.map +1 -1
  289. package/dist/components/statusdot/StatusDot.spec.js +42 -0
  290. package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
  291. package/dist/components/statusdot/StatusDot.stories.js +9 -37
  292. package/dist/components/statusdot/StatusDot.svelte +9 -7
  293. package/dist/components/statusdot/StatusDot.svelte.d.ts +2 -2
  294. package/dist/components/statusdot/StatusDot.svelte.d.ts.map +1 -1
  295. package/dist/components/statusnotification/README.md +25 -0
  296. package/dist/components/statusnotification/StatusNotification.js +3 -3
  297. package/dist/components/statusnotification/StatusNotification.js.map +1 -1
  298. package/dist/components/statusnotification/StatusNotification.spec.js +54 -0
  299. package/dist/components/statusnotification/StatusNotification.stories.d.ts +16 -14
  300. package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
  301. package/dist/components/statusnotification/StatusNotification.stories.js +53 -86
  302. package/dist/components/statusnotification/StatusNotification.svelte +49 -51
  303. package/dist/components/statusnotification/StatusNotification.svelte.d.ts +21 -18
  304. package/dist/components/statusnotification/StatusNotification.svelte.d.ts.map +1 -1
  305. package/dist/components/tab/README.md +20 -0
  306. package/dist/components/tab/Tab.js +4 -0
  307. package/dist/components/tab/Tab.js.map +1 -0
  308. package/dist/components/tab/Tab.spec.js +58 -0
  309. package/dist/components/{tabs → tab}/Tab.svelte +46 -26
  310. package/dist/components/{tabs → tab}/Tab.svelte.d.ts +20 -3
  311. package/dist/components/tab/Tab.svelte.d.ts.map +1 -0
  312. package/dist/components/tabs/README.md +18 -0
  313. package/dist/components/tabs/Tabs.js +2 -2
  314. package/dist/components/tabs/Tabs.js.map +1 -1
  315. package/dist/components/tabs/Tabs.spec.js +51 -0
  316. package/dist/components/tabs/Tabs.stories.d.ts +9 -6
  317. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  318. package/dist/components/tabs/Tabs.stories.js +59 -115
  319. package/dist/components/tabs/Tabs.svelte +27 -7
  320. package/dist/components/tabs/Tabs.svelte.d.ts +21 -7
  321. package/dist/components/tabs/Tabs.svelte.d.ts.map +1 -1
  322. package/dist/components/tags/README.md +9 -0
  323. package/dist/components/tags/Tag.js +1 -1
  324. package/dist/components/tags/TagContextualised.js +2 -2
  325. package/dist/components/tags/TagInteractive.js +1 -1
  326. package/dist/components/tags/TagRemovable.js +2 -2
  327. package/dist/components/tags/TagSelectable.js +2 -2
  328. package/dist/components/tags/Tags.stories.d.ts.map +1 -1
  329. package/dist/components/tags/Tags.stories.js +7 -1
  330. package/dist/components/tags/TagsContextualised.stories.d.ts.map +1 -1
  331. package/dist/components/tags/TagsContextualised.stories.js +7 -1
  332. package/dist/components/tags/TagsInteractive.stories.d.ts.map +1 -1
  333. package/dist/components/tags/TagsInteractive.stories.js +7 -1
  334. package/dist/components/tags/TagsRemovable.stories.d.ts.map +1 -1
  335. package/dist/components/tags/TagsRemovable.stories.js +7 -1
  336. package/dist/components/tags/TagsSelectable.stories.d.ts.map +1 -1
  337. package/dist/components/tags/TagsSelectable.stories.js +7 -1
  338. package/dist/components/textarea/README.md +19 -0
  339. package/dist/components/textarea/Textarea.js +2 -5
  340. package/dist/components/textarea/Textarea.js.map +1 -1
  341. package/dist/components/textarea/Textarea.spec.js +67 -0
  342. package/dist/components/textarea/Textarea.stories.d.ts +9 -13
  343. package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
  344. package/dist/components/textarea/Textarea.stories.js +61 -92
  345. package/dist/components/textarea/Textarea.svelte +53 -97
  346. package/dist/components/textarea/Textarea.svelte.d.ts +43 -13
  347. package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
  348. package/dist/components/textinput/README.md +26 -0
  349. package/dist/components/textinput/Textinput.js +2 -2
  350. package/dist/components/textinput/Textinput.js.map +1 -1
  351. package/dist/components/textinput/Textinput.spec.js +89 -0
  352. package/dist/components/textinput/Textinput.stories.d.ts +11 -12
  353. package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
  354. package/dist/components/textinput/Textinput.stories.js +78 -137
  355. package/dist/components/textinput/Textinput.svelte +70 -112
  356. package/dist/components/textinput/Textinput.svelte.d.ts +46 -22
  357. package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
  358. package/dist/components/toaster/README.md +28 -0
  359. package/dist/components/toaster/Toaster.js +2 -2
  360. package/dist/components/toaster/Toaster.js.map +1 -1
  361. package/dist/components/toaster/Toaster.spec.js +100 -0
  362. package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
  363. package/dist/components/toaster/Toaster.stories.js +5 -73
  364. package/dist/components/toaster/Toaster.svelte +17 -7
  365. package/dist/components/toaster/Toaster.svelte.d.ts +3 -0
  366. package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
  367. package/dist/components/toggle/README.md +15 -0
  368. package/dist/components/toggle/Toggle.js +2 -2
  369. package/dist/components/toggle/Toggle.js.map +1 -1
  370. package/dist/components/toggle/Toggle.spec.js +69 -0
  371. package/dist/components/toggle/Toggle.stories.d.ts +9 -14
  372. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
  373. package/dist/components/toggle/Toggle.stories.js +55 -64
  374. package/dist/components/toggle/Toggle.svelte +38 -24
  375. package/dist/components/toggle/Toggle.svelte.d.ts +26 -7
  376. package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
  377. package/dist/components/togglegroup/README.md +13 -0
  378. package/dist/components/togglegroup/ToggleGroup.js +3 -3
  379. package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
  380. package/dist/components/togglegroup/ToggleGroup.spec.js +50 -0
  381. package/dist/components/togglegroup/ToggleGroup.stories.d.ts +5 -13
  382. package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
  383. package/dist/components/togglegroup/ToggleGroup.stories.js +56 -104
  384. package/dist/components/togglegroup/ToggleGroup.svelte +55 -58
  385. package/dist/components/togglegroup/ToggleGroup.svelte.d.ts +25 -14
  386. package/dist/components/togglegroup/ToggleGroup.svelte.d.ts.map +1 -1
  387. package/dist/components/tooltip/README.md +19 -0
  388. package/dist/components/tooltip/Tooltip.js +2 -2
  389. package/dist/components/tooltip/Tooltip.js.map +1 -1
  390. package/dist/components/tooltip/Tooltip.spec.js +38 -0
  391. package/dist/components/tooltip/Tooltip.stories.d.ts +6 -7
  392. package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
  393. package/dist/components/tooltip/Tooltip.stories.js +45 -59
  394. package/dist/components/tooltip/Tooltip.svelte +23 -14
  395. package/dist/components/tooltip/Tooltip.svelte.d.ts +17 -0
  396. package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
  397. package/dist/custom-element.js +3 -3
  398. package/dist/custom-element.js.map +1 -1
  399. package/dist/documentation/Contributing.mdx +1 -1
  400. package/dist/documentation/Introduction.mdx +45 -11
  401. package/dist/documentation/SupportAndOnboarding.mdx +2 -2
  402. package/dist/each.js +1 -1
  403. package/dist/each.js.map +1 -1
  404. package/dist/if.js +1 -1
  405. package/dist/if.js.map +1 -1
  406. package/dist/input.js +1 -1
  407. package/dist/input.js.map +1 -1
  408. package/dist/legacy.js +1 -1
  409. package/dist/main.d.ts +24 -23
  410. package/dist/main.d.ts.map +1 -1
  411. package/dist/main.js +24 -23
  412. package/dist/slot.js +1 -1
  413. package/dist/slot.js.map +1 -1
  414. package/dist/this.js +2 -0
  415. package/dist/this.js.map +1 -0
  416. package/package.json +11 -3
  417. package/dist/components/button/button.types.d.ts +0 -13
  418. package/dist/components/button/button.types.d.ts.map +0 -1
  419. package/dist/components/button/button.types.js +0 -1
  420. package/dist/components/checkboxgroup/checkboxgroup.types.d.ts +0 -9
  421. package/dist/components/checkboxgroup/checkboxgroup.types.d.ts.map +0 -1
  422. package/dist/components/checkboxgroup/checkboxgroup.types.js +0 -1
  423. package/dist/components/link/link.types.d.ts +0 -4
  424. package/dist/components/link/link.types.d.ts.map +0 -1
  425. package/dist/components/link/link.types.js +0 -1
  426. package/dist/components/loader/loader.types.d.ts +0 -3
  427. package/dist/components/loader/loader.types.d.ts.map +0 -1
  428. package/dist/components/loader/loader.types.js +0 -1
  429. package/dist/components/numberbadge/NumberBadge.types.d.ts +0 -3
  430. package/dist/components/numberbadge/NumberBadge.types.d.ts.map +0 -1
  431. package/dist/components/numberbadge/NumberBadge.types.js +0 -1
  432. package/dist/components/overlayloader/OverlayLoader.js +0 -27
  433. package/dist/components/overlayloader/OverlayLoader.js.map +0 -1
  434. package/dist/components/overlayloader/OverlayLoader.stories.d.ts +0 -8
  435. package/dist/components/overlayloader/OverlayLoader.stories.d.ts.map +0 -1
  436. package/dist/components/overlayloader/OverlayLoader.stories.js +0 -50
  437. package/dist/components/overlayloader/OverlayLoader.svelte +0 -160
  438. package/dist/components/overlayloader/OverlayLoader.svelte.d.ts +0 -9
  439. package/dist/components/overlayloader/OverlayLoader.svelte.d.ts.map +0 -1
  440. package/dist/components/quantityselector/quantitySelector.types.d.ts +0 -2
  441. package/dist/components/quantityselector/quantitySelector.types.d.ts.map +0 -1
  442. package/dist/components/quantityselector/quantitySelector.types.js +0 -1
  443. package/dist/components/radiogroup/radioGroup.types.d.ts +0 -9
  444. package/dist/components/radiogroup/radioGroup.types.d.ts.map +0 -1
  445. package/dist/components/radiogroup/radioGroup.types.js +0 -1
  446. package/dist/components/select/select.types.d.ts +0 -9
  447. package/dist/components/select/select.types.d.ts.map +0 -1
  448. package/dist/components/select/select.types.js +0 -1
  449. package/dist/components/statusbadge/StatusBadge.types.d.ts +0 -2
  450. package/dist/components/statusbadge/StatusBadge.types.d.ts.map +0 -1
  451. package/dist/components/statusbadge/StatusBadge.types.js +0 -1
  452. package/dist/components/statusdot/StatusDot.types.d.ts +0 -3
  453. package/dist/components/statusdot/StatusDot.types.d.ts.map +0 -1
  454. package/dist/components/statusdot/StatusDot.types.js +0 -1
  455. package/dist/components/tabs/Tab.js +0 -4
  456. package/dist/components/tabs/Tab.js.map +0 -1
  457. package/dist/components/tabs/Tab.svelte.d.ts.map +0 -1
  458. package/dist/components/textinput/textinput.types.d.ts +0 -3
  459. package/dist/components/textinput/textinput.types.d.ts.map +0 -1
  460. package/dist/components/textinput/textinput.types.js +0 -1
  461. package/dist/components/toggle/toggle.types.d.ts +0 -2
  462. package/dist/components/toggle/toggle.types.d.ts.map +0 -1
  463. package/dist/components/toggle/toggle.types.js +0 -1
  464. package/dist/index-client.js +0 -2
  465. package/dist/index-client.js.map +0 -1
  466. package/dist/snippet.js +0 -2
  467. package/dist/snippet.js.map +0 -1
@@ -1,159 +1,91 @@
1
+ import { html } from 'lit';
2
+ import { ifDefined } from 'lit-html/directives/if-defined.js';
1
3
  import { action } from 'storybook/actions';
2
- import { userEvent, expect } from 'storybook/test';
3
- /**
4
- * The quantity selector is a form element used to enter or select a number.
5
- * This type of input is best used when the user needs to choose the quantity of a selected item, like a product before adding to cart.
6
- *
7
- * The `MQuantitySelector` component is the **Svelte / WebComponent** implementation of the **Quantity Selector** component of Mozaic Design System.
8
- * The full specification of this component is available in [the associated documentation](https://mozaic.adeo.cloud/components/form/quantity-selector/).
9
- */
10
- export default {
4
+ const meta = {
11
5
  title: 'Form Elements/Quantity Selector',
12
- tags: ['autodocs', 'beta'],
6
+ component: 'm-quantityselector',
7
+ args: {
8
+ id: 'quantitySelectorId',
9
+ value: 10,
10
+ min: 5,
11
+ max: 20,
12
+ },
13
13
  argTypes: {
14
- id: {
15
- description: 'Specify id for qty selector',
16
- control: 'text',
17
- },
18
- name: {
19
- description: 'Specify name attr for qty selector',
20
- control: 'text',
21
- },
22
14
  size: {
23
- description: 'Specify the text qty selector size',
24
- control: { type: 'radio' },
15
+ control: 'radio',
25
16
  options: ['s', 'm'],
26
17
  },
27
- disabled: {
28
- description: 'Specify whether the qty selector is disabled',
29
- control: { type: 'boolean' },
30
- },
31
- isinvalid: {
32
- description: 'Determine whether the qty selector is invalid',
33
- control: 'boolean',
34
- },
35
- required: {
36
- description: 'Determine whether the qty selector is required',
37
- control: 'boolean',
38
- },
39
- quantity: {
40
- description: 'Specify the quantity. Default is 1',
41
- control: 'number',
42
- },
43
- step: {
44
- description: 'Determines how much the value will change per click when the quantity is increased or decreased. Default is 1',
45
- control: 'number',
46
- },
47
- valuemin: {
48
- description: 'Specify the minimum quantity. Default is 1',
49
- control: 'number',
50
- },
51
- valuemax: {
52
- description: 'Specify the maximum quantity. Default is 100',
53
- control: 'number',
54
- },
55
- decrementlabel: {
56
- description: 'Specify the decrement label for a11y',
57
- control: 'number',
58
- },
59
- inputarialabel: {
60
- description: 'Specify the input aria label for a11y.',
61
- control: 'number',
62
- },
63
- incrementlabel: {
64
- description: 'Specify the increment label for a11y',
65
- control: 'number',
66
- },
67
- increment: {
68
- description: 'Event that occurs when the increment button is clicked',
69
- action: 'on:increment',
70
- table: {
71
- category: 'Events',
72
- },
73
- },
74
- decrement: {
75
- description: 'Event that occurs when the decrement button is clicked',
76
- action: 'on:decrement',
77
- table: {
78
- category: 'Events',
79
- },
80
- },
81
- inputQty: {
82
- description: 'Event that occurs when a quantity is entered in the input field',
83
- action: 'oninputqty',
84
- table: {
85
- category: 'Events',
86
- },
87
- },
18
+ },
19
+ render: (args) => {
20
+ const onInput = action('input');
21
+ const onChange = action('change');
22
+ const onFocus = action('focus');
23
+ const onBlur = action('blur');
24
+ return html `
25
+ <m-quantityselector
26
+ id=${ifDefined(args.id)}
27
+ name=${ifDefined(args.name)}
28
+ value=${ifDefined(args.value)}
29
+ isinvalid=${ifDefined(args.isinvalid)}
30
+ disabled=${ifDefined(args.disabled)}
31
+ size=${ifDefined(args.size)}
32
+ min=${ifDefined(args.min)}
33
+ max=${ifDefined(args.max)}
34
+ step=${ifDefined(args.step)}
35
+ readonly=${ifDefined(args.readonly)}
36
+ incrementlabel=${ifDefined(args.incrementlabel)}
37
+ decrementlabel=${ifDefined(args.decrementlabel)}
38
+ @input=${(event) => {
39
+ onInput(event);
40
+ }}
41
+ @change=${(event) => {
42
+ onChange(event);
43
+ }}
44
+ @focus=${(event) => {
45
+ onFocus(event);
46
+ }}
47
+ @blur=${(event) => {
48
+ onBlur(event);
49
+ }}
50
+ ></m-quantityselector>
51
+ `;
88
52
  },
89
53
  };
90
- const Template = (args) => {
91
- const MQuantitySelector = document.createElement('m-quantityselector');
92
- MQuantitySelector.setAttribute('id', args.id || 'quantityID');
93
- MQuantitySelector.setAttribute('quantity', args.quantity || '1');
94
- if (args.size)
95
- MQuantitySelector.setAttribute('size', args.size);
96
- if (args.disabled)
97
- MQuantitySelector.setAttribute('disabled', 'true');
98
- if (args.isinvalid)
99
- MQuantitySelector.setAttribute('isinvalid', 'true');
100
- if (args.required)
101
- MQuantitySelector.setAttribute('required', 'true');
102
- if (args.step)
103
- MQuantitySelector.setAttribute('step', args.step);
104
- if (args.valuemax)
105
- MQuantitySelector.setAttribute('valuemax', args.valuemax.toString());
106
- if (args.valuemin)
107
- MQuantitySelector.setAttribute('valuemin', args.valuemin.toString());
108
- MQuantitySelector.increment = action('increment');
109
- MQuantitySelector.decrement = action('decrement');
110
- MQuantitySelector.inputqty = action('inputqty');
111
- return MQuantitySelector;
112
- };
113
- export const Default = Template.bind({});
114
- Default.args = {};
115
- Default.play = async ({ canvasElement }) => {
116
- const qtySelector = canvasElement.querySelector('m-quantityselector');
117
- const input = qtySelector?.shadowRoot?.querySelector('input');
118
- const button = qtySelector?.shadowRoot?.querySelector('button');
119
- expect(qtySelector).not.toBeNull();
120
- await userEvent.type(input, '5');
121
- expect(input).toHaveValue(15);
122
- await userEvent.click(button);
123
- expect(input).toHaveValue(16);
124
- };
125
- export const Small = Template.bind({});
126
- Small.args = {
127
- size: 's',
128
- };
129
- Small.play = async ({ canvasElement }) => {
130
- const qtySelector = canvasElement.querySelector('m-quantityselector');
131
- expect(qtySelector).toHaveAttribute('size', 's');
132
- };
133
- export const Disabled = Template.bind({});
134
- Disabled.args = {
135
- disabled: true,
54
+ export default meta;
55
+ export const Default = {};
56
+ export const Step = {
57
+ args: {
58
+ id: 'stepId',
59
+ step: 5,
60
+ },
136
61
  };
137
- Disabled.play = async ({ canvasElement }) => {
138
- const qtySelector = canvasElement.querySelector('m-quantityselector');
139
- const input = qtySelector?.shadowRoot?.querySelector('input');
140
- expect(input).toBeDisabled();
62
+ export const Small = {
63
+ args: {
64
+ id: 'smallId',
65
+ size: 's',
66
+ },
141
67
  };
142
- export const Invalid = Template.bind({});
143
- Invalid.args = {
144
- isinvalid: true,
68
+ export const Disabled = {
69
+ args: {
70
+ id: 'disableId',
71
+ disabled: true,
72
+ },
145
73
  };
146
- Invalid.play = async ({ canvasElement }) => {
147
- const qtySelector = canvasElement.querySelector('m-quantityselector');
148
- const input = qtySelector?.shadowRoot?.querySelector('input');
149
- expect(input).toHaveAttribute('aria-invalid', 'true');
74
+ export const ReadOnly = {
75
+ args: {
76
+ id: 'readonlyId',
77
+ readonly: true,
78
+ },
150
79
  };
151
- export const Required = Template.bind({});
152
- Required.args = {
153
- required: true,
80
+ export const Invalid = {
81
+ args: {
82
+ id: 'invalidId',
83
+ isinvalid: true,
84
+ },
154
85
  };
155
- Required.play = async ({ canvasElement }) => {
156
- const qtySelector = canvasElement.querySelector('m-quantityselector');
157
- const input = qtySelector?.shadowRoot?.querySelector('input');
158
- expect(input).toHaveAttribute('required');
86
+ export const readOnly = {
87
+ args: {
88
+ id: 'readonlyId',
89
+ readonly: true,
90
+ },
159
91
  };
@@ -1,140 +1,163 @@
1
1
  <svelte:options
2
2
  customElement={{
3
3
  tag: 'm-quantityselector',
4
+ extend: customElementForwardEvents,
4
5
  }}
5
6
  />
6
7
 
7
8
  <script lang="ts">
9
+ import { customElementForwardEvents } from '../../utils';
8
10
  import Less24 from '@mozaic-ds/icons-svelte/svelte/Less24/Less24.svelte';
9
11
  import More24 from '@mozaic-ds/icons-svelte/svelte/More24/More24.svelte';
10
- import type { QuantitySelectorSize } from './quantitySelector.types';
12
+ /**
13
+ * A quantity selector is an input component that allows users to increment or decrement a numeric value, typically using plus (+) and minus (−) buttons. It provides a simple and efficient way to adjust quantities without manual typing, ensuring controlled input. This component is commonly used in e-commerce, inventory management, and settings where users need to specify amounts.
14
+ */
11
15
  interface Props {
12
- id?: string | undefined;
13
- quantity?: number;
16
+ /**
17
+ * A unique identifier for the quantity selector element, used to associate the label with the form element.
18
+ */
19
+ id: string;
20
+ /**
21
+ * The name attribute for the quantity selector element, typically used for form submission.
22
+ */
23
+ name?: string;
24
+ /**
25
+ * The current value of the quantity selector field.
26
+ */
27
+ value?: number;
28
+ /**
29
+ * If `true`, applies an invalid state to the quantity selector.
30
+ */
31
+ isinvalid?: boolean;
32
+ /**
33
+ * If `true`, disables the quantity selector, making it non-interactive.
34
+ */
35
+ disabled?: boolean;
36
+ /**
37
+ * Determines the size of the quantity selector.
38
+ */
39
+ size?: 's' | 'm';
40
+ /**
41
+ * Minimum acceptable value for the quantity selector.
42
+ */
14
43
  min?: number;
44
+ /**
45
+ * Maximum acceptable value for the quantity selector.
46
+ */
15
47
  max?: number;
16
- size?: QuantitySelectorSize;
17
- decrementlabel?: string;
18
- inputarialabel?: string;
19
- incrementlabel?: string;
20
- disabled?: boolean;
21
- isinvalid?: boolean;
22
- required?: boolean;
23
- name?: string;
48
+ /**
49
+ * Determines how much the value will change per click when the quantity is increased or decreased.
50
+ */
24
51
  step?: number;
25
- increment?: (qty: number) => void;
26
- decrement?: (qty: number) => void;
27
- inputqty?: (qty: number) => void;
28
- oninput?: (event: Event) => void;
29
- onblur?: (event: FocusEvent) => void;
52
+ /**
53
+ * If `true`, the quantity selector is read-only (cannot be edited).
54
+ */
55
+ readonly?: boolean;
56
+ /**
57
+ * The label text for the increment button.
58
+ */
59
+ incrementlabel?: string;
60
+ /**
61
+ * The label text for the decrement button.
62
+ */
63
+ decrementlabel?: string;
30
64
  }
31
65
 
32
66
  let {
33
- id = undefined,
34
- quantity = $bindable(1),
67
+ id,
68
+ value = $bindable(1),
35
69
  min = 1,
36
70
  max = 100,
71
+ step = 1,
37
72
  size = 'm',
38
- decrementlabel = 'Decrement',
39
- inputarialabel = 'Quantity Selector',
40
- incrementlabel = 'Increment',
41
- disabled = false,
73
+ disabled,
42
74
  isinvalid = false,
43
- required = false,
44
75
  name = 'quantity-selector-input',
45
- step = 1,
46
- increment,
47
- decrement,
48
- inputqty,
49
- oninput,
50
- onblur,
76
+ readonly,
77
+ decrementlabel = 'Decrement',
78
+ incrementlabel = 'Increment',
51
79
  }: Props = $props();
52
80
 
53
- function handleValue(event: Event): void {
54
- if (quantity > max) {
55
- quantity = max;
81
+ const onValue = (): void => {
82
+ const numericValue = Number(value);
83
+ if (numericValue > max) {
84
+ value = max;
85
+ } else if (numericValue < min) {
86
+ value = min;
87
+ } else {
88
+ value = numericValue;
56
89
  }
57
- if (quantity < min) {
58
- quantity = min;
59
- }
60
- inputqty?.(quantity);
61
- oninput?.(event);
62
- }
90
+ };
63
91
 
64
- function handleDecrement(): void {
65
- if (quantity - Number(step) > min) {
66
- quantity = quantity - Number(step);
67
- }
68
- decrement?.(quantity);
69
- }
92
+ const onIncrement = (): void => {
93
+ const numericValue = Number(value);
94
+ const numericStep = Number(step);
70
95
 
71
- function handleIncrement(): void {
72
- if (quantity + Number(step) < max) {
73
- quantity = quantity + Number(step);
96
+ if (numericValue + numericStep <= max) {
97
+ value = numericValue + numericStep;
98
+ } else {
99
+ value = max;
74
100
  }
75
- increment?.(quantity);
76
- }
101
+ };
77
102
 
78
- function getClasses(
79
- isInvalid: boolean,
80
- size: QuantitySelectorSize,
81
- ): string {
82
- const classes = ['mc-quantity-selector'];
83
- if (isInvalid) {
84
- classes.push('is-invalid');
85
- }
103
+ const onDecrement = (): void => {
104
+ const numericValue = Number(value);
105
+ const numericStep = Number(step);
86
106
 
87
- if (size === 's') {
88
- classes.push('mc-quantity-selector--s');
107
+ if (numericValue - numericStep >= min) {
108
+ value = numericValue - numericStep;
109
+ } else {
110
+ value = min;
89
111
  }
90
-
91
- return classes.join(' ');
92
- }
112
+ };
93
113
  </script>
94
114
 
95
- <div class="{getClasses(isinvalid, size)}">
115
+ <div
116
+ class={[
117
+ 'mc-quantity-selector',
118
+ `mc-quantity-selector--${size}`,
119
+ isinvalid && 'is-invalid',
120
+ ]}
121
+ >
96
122
  <input
97
123
  type="number"
98
124
  {id}
99
125
  {name}
100
- bind:value={quantity}
101
- oninput={handleValue}
102
- {onblur}
126
+ bind:value
127
+ oninput={onValue}
103
128
  class="mc-quantity-selector__control"
104
- aria-label={inputarialabel}
105
129
  aria-valuemin={min}
106
130
  aria-valuemax={max}
107
- aria-valuenow={quantity}
108
- aria-invalid={isinvalid}
109
- spellcheck="false"
131
+ aria-valuenow={value}
132
+ aria-invalid={`${isinvalid}`}
133
+ {readonly}
110
134
  {disabled}
111
- {required}
112
135
  />
113
136
  <button
114
137
  type="button"
115
138
  aria-controls={id}
116
139
  class="mc-quantity-selector__button mc-quantity-selector__button--increase"
117
140
  tabindex="-1"
118
- onclick={handleIncrement}
119
- disabled={quantity === max || disabled}
141
+ disabled={value === max || disabled}
142
+ onclick={onIncrement}
120
143
  >
121
144
  <span class="mc-quantity-selector__icon">
122
145
  <More24 />
123
146
  </span>
124
- <span class="mc-quantity-selector__label">{decrementlabel}</span>
147
+ <span class="mc-quantity-selector__label">{incrementlabel}</span>
125
148
  </button>
126
149
  <button
127
150
  type="button"
128
151
  aria-controls={id}
129
152
  class="mc-quantity-selector__button mc-quantity-selector__button--decrease"
130
153
  tabindex="-1"
131
- onclick={handleDecrement}
132
- disabled={quantity === min || disabled}
154
+ disabled={value === min || disabled}
155
+ onclick={onDecrement}
133
156
  >
134
157
  <span class="mc-quantity-selector__icon">
135
158
  <Less24 />
136
159
  </span>
137
- <span class="mc-quantity-selector__label">{incrementlabel}</span>
160
+ <span class="mc-quantity-selector__label">{decrementlabel}</span>
138
161
  </button>
139
162
  </div>
140
163
 
@@ -1,25 +1,57 @@
1
- import type { QuantitySelectorSize } from './quantitySelector.types';
1
+ /**
2
+ * A quantity selector is an input component that allows users to increment or decrement a numeric value, typically using plus (+) and minus (−) buttons. It provides a simple and efficient way to adjust quantities without manual typing, ensuring controlled input. This component is commonly used in e-commerce, inventory management, and settings where users need to specify amounts.
3
+ */
2
4
  interface Props {
3
- id?: string | undefined;
4
- quantity?: number;
5
+ /**
6
+ * A unique identifier for the quantity selector element, used to associate the label with the form element.
7
+ */
8
+ id: string;
9
+ /**
10
+ * The name attribute for the quantity selector element, typically used for form submission.
11
+ */
12
+ name?: string;
13
+ /**
14
+ * The current value of the quantity selector field.
15
+ */
16
+ value?: number;
17
+ /**
18
+ * If `true`, applies an invalid state to the quantity selector.
19
+ */
20
+ isinvalid?: boolean;
21
+ /**
22
+ * If `true`, disables the quantity selector, making it non-interactive.
23
+ */
24
+ disabled?: boolean;
25
+ /**
26
+ * Determines the size of the quantity selector.
27
+ */
28
+ size?: 's' | 'm';
29
+ /**
30
+ * Minimum acceptable value for the quantity selector.
31
+ */
5
32
  min?: number;
33
+ /**
34
+ * Maximum acceptable value for the quantity selector.
35
+ */
6
36
  max?: number;
7
- size?: QuantitySelectorSize;
8
- decrementlabel?: string;
9
- inputarialabel?: string;
10
- incrementlabel?: string;
11
- disabled?: boolean;
12
- isinvalid?: boolean;
13
- required?: boolean;
14
- name?: string;
37
+ /**
38
+ * Determines how much the value will change per click when the quantity is increased or decreased.
39
+ */
15
40
  step?: number;
16
- increment?: (qty: number) => void;
17
- decrement?: (qty: number) => void;
18
- inputqty?: (qty: number) => void;
19
- oninput?: (event: Event) => void;
20
- onblur?: (event: FocusEvent) => void;
41
+ /**
42
+ * If `true`, the quantity selector is read-only (cannot be edited).
43
+ */
44
+ readonly?: boolean;
45
+ /**
46
+ * The label text for the increment button.
47
+ */
48
+ incrementlabel?: string;
49
+ /**
50
+ * The label text for the decrement button.
51
+ */
52
+ decrementlabel?: string;
21
53
  }
22
- declare const QuantitySelector: import("svelte").Component<Props, {}, "quantity">;
54
+ declare const QuantitySelector: import("svelte").Component<Props, {}, "value">;
23
55
  type QuantitySelector = ReturnType<typeof QuantitySelector>;
24
56
  export default QuantitySelector;
25
57
  //# sourceMappingURL=QuantitySelector.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuantitySelector.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/quantityselector/QuantitySelector.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,UAAU,KAAK;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC;AA8FH,QAAA,MAAM,gBAAgB,mDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"QuantitySelector.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/quantityselector/QuantitySelector.svelte.ts"],"names":[],"mappings":"AAOE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqFH,QAAA,MAAM,gBAAgB,gDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,21 @@
1
+ # `m-quantityselector`
2
+
3
+ A quantity selector is an input component that allows users to increment or decrement a numeric value, typically using plus (+) and minus (−) buttons. It provides a simple and efficient way to adjust quantities without manual typing, ensuring controlled input. This component is commonly used in e-commerce, inventory management, and settings where users need to specify amounts.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `id*` | A unique identifier for the quantity selector element, used to associate the label with the form element. | `string` | |
10
+ | `name` | The name attribute for the quantity selector element, typically used for form submission. | `string` | `quantity-selector-input` |
11
+ | `value` | The current value of the quantity selector field. | `number` | `$bindable(1)` |
12
+ | `isinvalid` | If `true`, applies an invalid state to the quantity selector. | `boolean` | `false` |
13
+ | `disabled` | If `true`, disables the quantity selector, making it non-interactive. | `boolean` | |
14
+ | `size` | Determines the size of the quantity selector. | `'s'` `'m'` | `m` |
15
+ | `min` | Minimum acceptable value for the quantity selector. | `number` | `1` |
16
+ | `max` | Maximum acceptable value for the quantity selector. | `number` | `100` |
17
+ | `step` | Determines how much the value will change per click when the quantity is increased or decreased. | `number` | `1` |
18
+ | `readonly` | If `true`, the quantity selector is read-only (cannot be edited). | `boolean` | |
19
+ | `incrementlabel` | The label text for the increment button. | `string` | `Increment` |
20
+ | `decrementlabel` | The label text for the decrement button. | `string` | `Decrement` |
21
+
@@ -0,0 +1,15 @@
1
+ # `m-radio`
2
+
3
+ A radio button is a selection control that allows users to choose a single option from a list of mutually exclusive choices. Unlike checkboxes, only one option can be selected at a time within the same group. Radio Buttons are commonly used in forms, surveys, and settings where a single choice must be made.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `id*` | A unique identifier for the radio, used to associate the label with the form element. | `string` | |
10
+ | `name` | The name attribute for the radio element, typically used for form submission. | `string` | |
11
+ | `label` | The text label displayed next to the radio. | `string` | |
12
+ | `checked` | The radio's checked state. | `boolean` | `$bindable(false)` |
13
+ | `isinvalid` | If `true`, applies an invalid state to the radio. | `boolean` | |
14
+ | `disabled` | If `true`, disables the radio, making it non-interactive. | `boolean` | |
15
+
@@ -1,4 +1,4 @@
1
- import{c as k,p as q,a as x,b as o,f as y,D as E,d as v,s as j,t as z,h as D,i as C,j as a,r as _,g as F}from"../../custom-element.js";import{b as R,s as S}from"../../attributes.js";import{c as A}from"../../custom-element-forward-events.js";var B=y('<div class="mc-radio svelte-1bwbq3n"><input/> <label class="mc-radio__label svelte-1bwbq3n"> </label></div>');const G={hash:"svelte-1bwbq3n",code:`/**
1
+ import{c as k,p as w,a as g,b as a,f as q,s as x,d as f,t as y,i as E,j as z,k as t,r as _,e as j,g as B,h as D}from"../../custom-element.js";import{r as F,s as u,c as R}from"../../attributes.js";import{c as S}from"../../custom-element-forward-events.js";var A=q('<div class="mc-radio svelte-1bwbq3n"><input type="radio"/> <label class="mc-radio__label svelte-1bwbq3n"> </label></div>');const C={hash:"svelte-1bwbq3n",code:`/**
2
2
  * Do not edit directly, this file was auto-generated.
3
- */.mc-radio.svelte-1bwbq3n {align-items:center;display:flex;gap:0.5rem;padding:0.375rem;}.mc-radio__label.svelte-1bwbq3n {font-size:var(--font-size-150, 1rem);line-height:var(--line-height-s, 1.3);color:var(--forms-color-text-default, #000000);cursor:pointer;}.mc-radio__input.svelte-1bwbq3n {appearance:none;margin:0;cursor:pointer;flex-shrink:0;transition:box-shadow 200ms ease;background-color:var(--forms-color-background-default, #ffffff);border:var(--border-m, 0.125rem) solid var(--forms-color-border-default, #666666);border-radius:100%;transition:all ease 200ms;height:1.25rem;width:1.25rem;position:relative;}.mc-radio__input.svelte-1bwbq3n::before {border-radius:var(--radius-full, 100%);content:"";display:block;height:0.5rem;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:0.5rem;}.mc-radio__input.svelte-1bwbq3n:hover {border-color:var(--forms-color-border-hover, #4d4d4d);}.mc-radio__input.svelte-1bwbq3n:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, var(--focus-color-outline-mid, #ffffff)), 0 0 0 0.25rem var(--focus-color-outer, var(--focus-color-outline-outer, #000000));outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-radio__input.svelte-1bwbq3n:checked {background-color:var(--forms-color-background-checked, #117f03);}.mc-radio__input.svelte-1bwbq3n:checked::before {background-color:var(--forms-color-background-default, #ffffff);}.mc-radio__input.svelte-1bwbq3n:checked, .mc-radio__input.svelte-1bwbq3n:disabled {border-color:transparent;}.mc-radio__input.svelte-1bwbq3n:disabled {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:disabled:checked::before {background-color:var(--forms-color-icon-disabled, #737373);}.mc-radio__input.svelte-1bwbq3n:disabled + .mc-radio__label:where(.svelte-1bwbq3n) {color:var(--forms-color-text-disabled, #737373);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:not(:disabled):checked:hover {background-color:var(--forms-color-background-checked-hover, #006902);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked) {border-color:var(--forms-color-border-invalid, #ea302d);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked):hover {border-color:var(--forms-color-border-invalid-hover, #c61112);}`};function H(m,r){q(r,!0),x(m,G);let t=o(r,"id",7,""),s=o(r,"name",7,""),i=o(r,"checked",7,!1),l=o(r,"disabled",7,!1),d=o(r,"isinvalid",7,!1),n=o(r,"label",7,""),h=E(r,["$$slots","$$events","$$legacy","$$host","id","name","checked","disabled","isinvalid","label"]);function p(e){const f=["mc-radio__input"];return e&&f.push("is-invalid"),f.join(" ")}var g={get id(){return t()},set id(e=""){t(e),a()},get name(){return s()},set name(e=""){s(e),a()},get checked(){return i()},set checked(e=!1){i(e),a()},get disabled(){return l()},set disabled(e=!1){l(e),a()},get isinvalid(){return d()},set isinvalid(e=!1){d(e),a()},get label(){return n()},set label(e=""){n(e),a()}},c=B(),u=v(c);R(u,e=>({id:t(),type:"radio",class:e,name:s(),checked:i(),disabled:l(),...h}),[()=>p(d())],void 0,"svelte-1bwbq3n",!0);var b=j(u,2),w=v(b,!0);return _(b),_(c),z(()=>{S(b,"for",t()),F(w,n())}),D(m,c),C(g)}customElements.define("m-radio",k(H,{id:{},name:{},checked:{},disabled:{},isinvalid:{},label:{}},[],[],!0,A));
3
+ */.mc-radio.svelte-1bwbq3n {align-items:center;display:flex;gap:0.5rem;padding:0.375rem;}.mc-radio__label.svelte-1bwbq3n {font-size:var(--font-size-150, 1rem);line-height:var(--line-height-s, 1.3);color:var(--forms-color-text-default, #000000);cursor:pointer;}.mc-radio__input.svelte-1bwbq3n {appearance:none;margin:0;cursor:pointer;flex-shrink:0;transition:box-shadow 200ms ease;background-color:var(--forms-color-background-default, #ffffff);border:var(--border-m, 0.125rem) solid var(--forms-color-border-default, #666666);border-radius:100%;transition:all ease 200ms;height:1.25rem;width:1.25rem;position:relative;}.mc-radio__input.svelte-1bwbq3n::before {border-radius:var(--radius-full, 100%);content:"";display:block;height:0.5rem;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:0.5rem;}.mc-radio__input.svelte-1bwbq3n:hover {border-color:var(--forms-color-border-hover, #4d4d4d);}.mc-radio__input.svelte-1bwbq3n:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, var(--focus-color-outline-mid, #ffffff)), 0 0 0 0.25rem var(--focus-color-outer, var(--focus-color-outline-outer, #000000));outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-radio__input.svelte-1bwbq3n:checked {background-color:var(--forms-color-background-checked, #117f03);}.mc-radio__input.svelte-1bwbq3n:checked::before {background-color:var(--forms-color-background-default, #ffffff);}.mc-radio__input.svelte-1bwbq3n:checked, .mc-radio__input.svelte-1bwbq3n:disabled {border-color:transparent;}.mc-radio__input.svelte-1bwbq3n:disabled {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:disabled:checked::before {background-color:var(--forms-color-icon-disabled, #737373);}.mc-radio__input.svelte-1bwbq3n:disabled + .mc-radio__label:where(.svelte-1bwbq3n) {color:var(--forms-color-text-disabled, #737373);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:not(:disabled):checked:hover {background-color:var(--forms-color-background-checked-hover, #006902);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked) {border-color:var(--forms-color-border-invalid, #ea302d);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked):hover {border-color:var(--forms-color-border-invalid-hover, #c61112);}`};function G(v,r){w(r,!0),g(v,C);let i=a(r,"id",7),d=a(r,"name",7),l=a(r,"label",7),s=a(r,"checked",15,!1),n=a(r,"disabled",7),c=a(r,"isinvalid",7);var h={get id(){return i()},set id(e){i(e),t()},get name(){return d()},set name(e){d(e),t()},get label(){return l()},set label(e){l(e),t()},get checked(){return s()},set checked(e=!1){s(e),t()},get disabled(){return n()},set disabled(e){n(e),t()},get isinvalid(){return c()},set isinvalid(e){c(e),t()}},b=A(),o=f(b);F(o);var m=x(o,2),p=f(m,!0);return _(m),_(b),y(()=>{u(o,"id",i()),j(o,1,B(["mc-radio__input",c()&&"is-invalid"]),"svelte-1bwbq3n"),u(o,"name",d()),o.disabled=n(),R(o,s()),u(m,"for",i()),D(p,l())}),E(v,b),z(h)}customElements.define("m-radio",k(G,{checked:{attribute:"checked",reflect:!0,type:"Boolean"},id:{},name:{},label:{},disabled:{},isinvalid:{}},[],[],!0,S));
4
4
  //# sourceMappingURL=Radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.js","sources":["../../../src/components/radio/Radio.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-radio',\n extend: customElementForwardEvents,\n }}\n/>\n\n<script lang=\"ts\">\n import { customElementForwardEvents } from '../../utils';\n let {\n id = '',\n name = '',\n checked = false,\n disabled = false,\n isinvalid = false,\n label = '',\n ...events\n } = $props();\n\n function getClasses(isInvalid: boolean): string {\n const classes = ['mc-radio__input'];\n if (isInvalid) {\n classes.push('is-invalid');\n }\n return classes.join(' ');\n }\n</script>\n\n<!-- svelte-ignore a11y_click_events_have_key_events -->\n<div class=\"mc-radio\">\n <input\n {id}\n type=\"radio\"\n class={getClasses(isinvalid)}\n {name}\n {checked}\n {disabled}\n {...events}\n />\n <label for={id} class=\"mc-radio__label\">{label}</label>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/radio';\n</style>\n"],"names":["id","name","checked","disabled","isinvalid","label","events","$.rest_props","$$props","getClasses","isInvalid","classes","customElementForwardEvents"],"mappings":";;ywEAAA,gBAUI,IAAAA,aAAK,EAAE,EACPC,eAAO,EAAE,EACTC,kBAAU,EAAK,EACfC,mBAAW,EAAK,EAChBC,oBAAY,EAAK,EACjBC,gBAAQ,EAAE,EACPC,EAAAC,EAAAC,EAAA,0GAGIC,EAAWC,EAA4B,CACxC,MAAAC,GAAW,iBAAiB,EAC9B,OAAAD,GACFC,EAAQ,KAAK,YAAY,EAEpBA,EAAQ,KAAK,GAAG,CACzB,sCAfO,GAAE,6CACA,GAAE,mDACC,GAAK,qDACJ,GAAK,uDACJ,GAAK,+CACT,GAAE,mGAsBNL,IAJG,CAAA,IAAAG,EAAWL,EAAS,CAAA,CAAA,uFAMjBJ,GAAE,MAA2BK,GAAK,eAbhD,2GAvBYO"}
1
+ {"version":3,"file":"Radio.js","sources":["../../../src/components/radio/Radio.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-radio',\n props: {\n checked: { reflect: true, type: 'Boolean', attribute: 'checked' },\n },\n extend: customElementForwardEvents,\n }}\n/>\n\n<script lang=\"ts\">\n import { customElementForwardEvents } from '../../utils';\n /**\n * A radio button is a selection control that allows users to choose a single option from a list of mutually exclusive choices. Unlike checkboxes, only one option can be selected at a time within the same group. Radio Buttons are commonly used in forms, surveys, and settings where a single choice must be made.\n */\n interface Props {\n /**\n * A unique identifier for the radio, used to associate the label with the form element.\n */\n id: string;\n /**\n * The name attribute for the radio element, typically used for form submission.\n */\n name?: string;\n /**\n * The text label displayed next to the radio.\n */\n label?: string;\n /**\n * The radio's checked state.\n */\n checked?: boolean;\n /**\n * If `true`, applies an invalid state to the radio.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the radio, making it non-interactive.\n */\n disabled?: boolean;\n }\n\n let {\n id,\n name,\n label,\n checked = $bindable(false),\n disabled,\n isinvalid,\n }: Props = $props();\n</script>\n\n<div class=\"mc-radio\">\n <input\n {id}\n type=\"radio\"\n class={['mc-radio__input', isinvalid && 'is-invalid']}\n {name}\n {disabled}\n {checked}\n />\n <label for={id} class=\"mc-radio__label\">{label}</label>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/radio';\n</style>\n"],"names":["id","$.prop","$$props","name","label","checked","disabled","isinvalid","customElementForwardEvents"],"mappings":";;ywEAAA,oBA2CIA,EAAEC,EAAAC,EAAA,KAAA,CAAA,EACFC,EAAIF,EAAAC,EAAA,OAAA,CAAA,EACJE,EAAKH,EAAAC,EAAA,QAAA,CAAA,EACLG,mBAAoB,EAAK,EACzBC,EAAQL,EAAAC,EAAA,WAAA,CAAA,EACRK,EAASN,EAAAC,EAAA,YAAA,CAAA,sLAFW,GAAK,gNAUjB,kBAAmBK,KAAa,YAAY,CAAA,EAAA,gBAAA,oDAK1CP,GAAE,MAA2BI,GAAK,eAXhD,wJA5CYI"}