@mozaic-ds/web-components 1.0.0-beta.6 → 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 (482) 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/Cross24.js.map +1 -1
  6. package/dist/CrossCircleFilled24.js +1 -1
  7. package/dist/CrossCircleFilled24.js.map +1 -1
  8. package/dist/attributes.js +1 -1
  9. package/dist/attributes.js.map +1 -1
  10. package/dist/bundle.d.ts +24 -23
  11. package/dist/bundle.d.ts.map +1 -1
  12. package/dist/bundle.js +24 -23
  13. package/dist/components/avatar/Avatar.js +2 -5
  14. package/dist/components/avatar/Avatar.js.map +1 -1
  15. package/dist/components/avatar/Avatar.spec.js +17 -0
  16. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  17. package/dist/components/avatar/Avatar.stories.js +3 -29
  18. package/dist/components/avatar/Avatar.svelte +9 -10
  19. package/dist/components/avatar/Avatar.svelte.d.ts +2 -0
  20. package/dist/components/avatar/Avatar.svelte.d.ts.map +1 -1
  21. package/dist/components/avatar/README.md +16 -0
  22. package/dist/components/breadcrumb/Breadcrumb.js +6 -9
  23. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  24. package/dist/components/breadcrumb/Breadcrumb.spec.js +42 -0
  25. package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  26. package/dist/components/breadcrumb/Breadcrumb.stories.js +6 -35
  27. package/dist/components/breadcrumb/Breadcrumb.svelte +26 -34
  28. package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  29. package/dist/components/breadcrumb/README.md +11 -0
  30. package/dist/components/button/Button.js +3 -6
  31. package/dist/components/button/Button.js.map +1 -1
  32. package/dist/components/button/Button.spec.js +74 -0
  33. package/dist/components/button/Button.stories.d.ts +9 -13
  34. package/dist/components/button/Button.stories.d.ts.map +1 -1
  35. package/dist/components/button/Button.stories.js +46 -146
  36. package/dist/components/button/Button.svelte +186 -168
  37. package/dist/components/button/Button.svelte.d.ts +36 -8
  38. package/dist/components/button/Button.svelte.d.ts.map +1 -1
  39. package/dist/components/button/README.md +26 -0
  40. package/dist/components/callout/Callout.js +2 -5
  41. package/dist/components/callout/Callout.js.map +1 -1
  42. package/dist/components/callout/Callout.spec.js +33 -0
  43. package/dist/components/callout/Callout.stories.d.ts.map +1 -1
  44. package/dist/components/callout/Callout.stories.js +2 -55
  45. package/dist/components/callout/Callout.svelte +15 -14
  46. package/dist/components/callout/Callout.svelte.d.ts +4 -0
  47. package/dist/components/callout/Callout.svelte.d.ts.map +1 -1
  48. package/dist/components/callout/README.md +20 -0
  49. package/dist/components/checkbox/Checkbox.js +3 -6
  50. package/dist/components/checkbox/Checkbox.js.map +1 -1
  51. package/dist/components/checkbox/Checkbox.spec.js +70 -0
  52. package/dist/components/checkbox/Checkbox.stories.d.ts +11 -16
  53. package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
  54. package/dist/components/checkbox/Checkbox.stories.js +67 -124
  55. package/dist/components/checkbox/Checkbox.svelte +75 -58
  56. package/dist/components/checkbox/Checkbox.svelte.d.ts +31 -6
  57. package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
  58. package/dist/components/checkbox/README.md +17 -0
  59. package/dist/components/checkboxgroup/CheckboxGroup.js +4 -7
  60. package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
  61. package/dist/components/checkboxgroup/CheckboxGroup.spec.js +113 -0
  62. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +5 -13
  63. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
  64. package/dist/components/checkboxgroup/CheckboxGroup.stories.js +56 -140
  65. package/dist/components/checkboxgroup/CheckboxGroup.svelte +89 -81
  66. package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts +30 -6
  67. package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts.map +1 -1
  68. package/dist/components/checkboxgroup/README.md +14 -0
  69. package/dist/components/circularprogressbar/CircularProgressbar.js +4 -7
  70. package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
  71. package/dist/components/circularprogressbar/CircularProgressbar.spec.js +74 -0
  72. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +6 -6
  73. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
  74. package/dist/components/circularprogressbar/CircularProgressbar.stories.js +29 -68
  75. package/dist/components/circularprogressbar/CircularProgressbar.svelte +46 -30
  76. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts +18 -0
  77. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts.map +1 -1
  78. package/dist/components/circularprogressbar/README.md +14 -0
  79. package/dist/components/datepicker/Datepicker.js +3 -6
  80. package/dist/components/datepicker/Datepicker.js.map +1 -1
  81. package/dist/components/datepicker/Datepicker.spec.js +95 -0
  82. package/dist/components/datepicker/Datepicker.stories.d.ts +7 -6
  83. package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
  84. package/dist/components/datepicker/Datepicker.stories.js +58 -75
  85. package/dist/components/datepicker/Datepicker.svelte +103 -79
  86. package/dist/components/datepicker/Datepicker.svelte.d.ts +30 -1
  87. package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
  88. package/dist/components/datepicker/README.md +18 -0
  89. package/dist/components/drawer/Drawer.js +12 -15
  90. package/dist/components/drawer/Drawer.js.map +1 -1
  91. package/dist/components/drawer/Drawer.spec.js +101 -0
  92. package/dist/components/drawer/Drawer.stories.d.ts +29 -8
  93. package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
  94. package/dist/components/drawer/Drawer.stories.js +86 -87
  95. package/dist/components/drawer/Drawer.svelte +185 -161
  96. package/dist/components/drawer/Drawer.svelte.d.ts +26 -3
  97. package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
  98. package/dist/components/drawer/README.md +29 -0
  99. package/dist/components/field/Field.js +3 -6
  100. package/dist/components/field/Field.js.map +1 -1
  101. package/dist/components/field/Field.spec.js +51 -0
  102. package/dist/components/field/Field.stories.d.ts +9 -15
  103. package/dist/components/field/Field.stories.d.ts.map +1 -1
  104. package/dist/components/field/Field.stories.js +86 -142
  105. package/dist/components/field/Field.svelte +63 -30
  106. package/dist/components/field/Field.svelte.d.ts +38 -7
  107. package/dist/components/field/Field.svelte.d.ts.map +1 -1
  108. package/dist/components/field/README.md +24 -0
  109. package/dist/components/flag/Flag.js +2 -5
  110. package/dist/components/flag/Flag.js.map +1 -1
  111. package/dist/components/flag/Flag.spec.js +30 -0
  112. package/dist/components/flag/Flag.stories.d.ts +8 -18
  113. package/dist/components/flag/Flag.stories.d.ts.map +1 -1
  114. package/dist/components/flag/Flag.stories.js +28 -106
  115. package/dist/components/flag/Flag.svelte +23 -24
  116. package/dist/components/flag/Flag.svelte.d.ts +10 -28
  117. package/dist/components/flag/Flag.svelte.d.ts.map +1 -1
  118. package/dist/components/flag/README.md +11 -0
  119. package/dist/components/iconbutton/IconButton.js +2 -5
  120. package/dist/components/iconbutton/IconButton.js.map +1 -1
  121. package/dist/components/iconbutton/IconButton.stories.d.ts +11 -11
  122. package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
  123. package/dist/components/iconbutton/IconButton.stories.js +51 -67
  124. package/dist/components/iconbutton/IconButton.svelte +157 -152
  125. package/dist/components/iconbutton/IconButton.svelte.d.ts +28 -7
  126. package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
  127. package/dist/components/iconbutton/README.md +21 -0
  128. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -5
  129. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
  130. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.spec.js +28 -0
  131. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +5 -7
  132. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
  133. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +18 -49
  134. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +19 -12
  135. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts +10 -1
  136. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts.map +1 -1
  137. package/dist/components/linearprogressbarbuffer/README.md +11 -0
  138. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -5
  139. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
  140. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.spec.js +26 -0
  141. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +4 -5
  142. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
  143. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +15 -33
  144. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +19 -16
  145. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts +6 -0
  146. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts.map +1 -1
  147. package/dist/components/linearprogressbarpercentage/README.md +10 -0
  148. package/dist/components/link/Link.js +2 -5
  149. package/dist/components/link/Link.js.map +1 -1
  150. package/dist/components/link/Link.spec.js +51 -0
  151. package/dist/components/link/Link.stories.d.ts +12 -12
  152. package/dist/components/link/Link.stories.d.ts.map +1 -1
  153. package/dist/components/link/Link.stories.js +61 -74
  154. package/dist/components/link/Link.svelte +54 -52
  155. package/dist/components/link/Link.svelte.d.ts +29 -8
  156. package/dist/components/link/Link.svelte.d.ts.map +1 -1
  157. package/dist/components/link/README.md +23 -0
  158. package/dist/components/loader/Loader.js +7 -10
  159. package/dist/components/loader/Loader.js.map +1 -1
  160. package/dist/components/loader/Loader.spec.js +54 -0
  161. package/dist/components/loader/Loader.stories.d.ts +8 -10
  162. package/dist/components/loader/Loader.stories.d.ts.map +1 -1
  163. package/dist/components/loader/Loader.stories.js +27 -43
  164. package/dist/components/loader/Loader.svelte +42 -43
  165. package/dist/components/loader/Loader.svelte.d.ts +14 -3
  166. package/dist/components/loader/Loader.svelte.d.ts.map +1 -1
  167. package/dist/components/loader/README.md +12 -0
  168. package/dist/components/loadingoverlay/LoadingOverlay.js +4 -0
  169. package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -0
  170. package/dist/components/loadingoverlay/LoadingOverlay.spec.js +38 -0
  171. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +7 -0
  172. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -0
  173. package/dist/components/loadingoverlay/LoadingOverlay.stories.js +39 -0
  174. package/dist/components/loadingoverlay/LoadingOverlay.svelte +50 -0
  175. package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts +17 -0
  176. package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts.map +1 -0
  177. package/dist/components/loadingoverlay/README.md +11 -0
  178. package/dist/components/modal/Modal.js +14 -17
  179. package/dist/components/modal/Modal.js.map +1 -1
  180. package/dist/components/modal/Modal.spec.js +50 -0
  181. package/dist/components/modal/Modal.stories.d.ts +36 -9
  182. package/dist/components/modal/Modal.stories.d.ts.map +1 -1
  183. package/dist/components/modal/Modal.stories.js +54 -83
  184. package/dist/components/modal/Modal.svelte +167 -166
  185. package/dist/components/modal/Modal.svelte.d.ts +22 -5
  186. package/dist/components/modal/Modal.svelte.d.ts.map +1 -1
  187. package/dist/components/modal/README.md +28 -0
  188. package/dist/components/numberbadge/NumberBadge.js +2 -5
  189. package/dist/components/numberbadge/NumberBadge.js.map +1 -1
  190. package/dist/components/numberbadge/NumberBadge.spec.js +28 -0
  191. package/dist/components/numberbadge/NumberBadge.stories.d.ts +9 -13
  192. package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
  193. package/dist/components/numberbadge/NumberBadge.stories.js +28 -56
  194. package/dist/components/numberbadge/NumberBadge.svelte +36 -35
  195. package/dist/components/numberbadge/NumberBadge.svelte.d.ts +15 -4
  196. package/dist/components/numberbadge/NumberBadge.svelte.d.ts.map +1 -1
  197. package/dist/components/numberbadge/README.md +12 -0
  198. package/dist/components/overlay/Overlay.js +2 -5
  199. package/dist/components/overlay/Overlay.js.map +1 -1
  200. package/dist/components/overlay/Overlay.spec.js +29 -0
  201. package/dist/components/overlay/Overlay.stories.d.ts +5 -7
  202. package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
  203. package/dist/components/overlay/Overlay.stories.js +32 -40
  204. package/dist/components/overlay/Overlay.svelte +21 -12
  205. package/dist/components/overlay/Overlay.svelte.d.ts +11 -0
  206. package/dist/components/overlay/Overlay.svelte.d.ts.map +1 -1
  207. package/dist/components/overlay/README.md +17 -0
  208. package/dist/components/pagination/Pagination.js +8 -11
  209. package/dist/components/pagination/Pagination.js.map +1 -1
  210. package/dist/components/pagination/Pagination.spec.js +65 -0
  211. package/dist/components/pagination/Pagination.stories.d.ts +8 -11
  212. package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
  213. package/dist/components/pagination/Pagination.stories.js +37 -91
  214. package/dist/components/pagination/Pagination.svelte +53 -35
  215. package/dist/components/pagination/Pagination.svelte.d.ts +27 -4
  216. package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
  217. package/dist/components/pagination/README.md +16 -0
  218. package/dist/components/passwordinput/PasswordInput.js +4 -9
  219. package/dist/components/passwordinput/PasswordInput.js.map +1 -1
  220. package/dist/components/passwordinput/PasswordInput.spec.js +84 -0
  221. package/dist/components/passwordinput/PasswordInput.stories.d.ts +10 -13
  222. package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
  223. package/dist/components/passwordinput/PasswordInput.stories.js +67 -124
  224. package/dist/components/passwordinput/PasswordInput.svelte +424 -60
  225. package/dist/components/passwordinput/PasswordInput.svelte.d.ts +34 -2
  226. package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
  227. package/dist/components/passwordinput/README.md +19 -0
  228. package/dist/components/pincode/Pincode.js +4 -7
  229. package/dist/components/pincode/Pincode.js.map +1 -1
  230. package/dist/components/pincode/Pincode.spec.js +99 -0
  231. package/dist/components/pincode/Pincode.stories.d.ts +9 -13
  232. package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
  233. package/dist/components/pincode/Pincode.stories.js +62 -127
  234. package/dist/components/pincode/Pincode.svelte +72 -60
  235. package/dist/components/pincode/Pincode.svelte.d.ts +30 -24
  236. package/dist/components/pincode/Pincode.svelte.d.ts.map +1 -1
  237. package/dist/components/pincode/README.md +22 -0
  238. package/dist/components/quantityselector/QuantitySelector.js +3 -7
  239. package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
  240. package/dist/components/quantityselector/QuantitySelector.spec.js +104 -0
  241. package/dist/components/quantityselector/QuantitySelector.stories.d.ts +11 -15
  242. package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
  243. package/dist/components/quantityselector/QuantitySelector.stories.js +77 -145
  244. package/dist/components/quantityselector/QuantitySelector.svelte +136 -112
  245. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts +49 -17
  246. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
  247. package/dist/components/quantityselector/README.md +21 -0
  248. package/dist/components/radio/README.md +15 -0
  249. package/dist/components/radio/Radio.js +2 -5
  250. package/dist/components/radio/Radio.js.map +1 -1
  251. package/dist/components/radio/Radio.spec.js +60 -0
  252. package/dist/components/radio/Radio.stories.d.ts +9 -13
  253. package/dist/components/radio/Radio.stories.d.ts.map +1 -1
  254. package/dist/components/radio/Radio.stories.js +54 -70
  255. package/dist/components/radio/Radio.svelte +58 -39
  256. package/dist/components/radio/Radio.svelte.d.ts +27 -5
  257. package/dist/components/radio/Radio.svelte.d.ts.map +1 -1
  258. package/dist/components/radiogroup/README.md +14 -0
  259. package/dist/components/radiogroup/RadioGroup.js +4 -7
  260. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  261. package/dist/components/radiogroup/RadioGroup.spec.js +65 -0
  262. package/dist/components/radiogroup/RadioGroup.stories.d.ts +5 -12
  263. package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
  264. package/dist/components/radiogroup/RadioGroup.stories.js +56 -151
  265. package/dist/components/radiogroup/RadioGroup.svelte +81 -77
  266. package/dist/components/radiogroup/RadioGroup.svelte.d.ts +28 -9
  267. package/dist/components/radiogroup/RadioGroup.svelte.d.ts.map +1 -1
  268. package/dist/components/select/README.md +18 -0
  269. package/dist/components/select/Select.js +3 -6
  270. package/dist/components/select/Select.js.map +1 -1
  271. package/dist/components/select/Select.spec.js +76 -0
  272. package/dist/components/select/Select.stories.d.ts +10 -14
  273. package/dist/components/select/Select.stories.d.ts.map +1 -1
  274. package/dist/components/select/Select.stories.js +87 -92
  275. package/dist/components/select/Select.svelte +77 -67
  276. package/dist/components/select/Select.svelte.d.ts +41 -10
  277. package/dist/components/select/Select.svelte.d.ts.map +1 -1
  278. package/dist/components/statusbadge/README.md +11 -0
  279. package/dist/components/statusbadge/StatusBadge.js +2 -5
  280. package/dist/components/statusbadge/StatusBadge.js.map +1 -1
  281. package/dist/components/statusbadge/StatusBadge.spec.js +31 -0
  282. package/dist/components/statusbadge/StatusBadge.stories.d.ts +9 -12
  283. package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
  284. package/dist/components/statusbadge/StatusBadge.stories.js +21 -44
  285. package/dist/components/statusbadge/StatusBadge.svelte +34 -29
  286. package/dist/components/statusbadge/StatusBadge.svelte.d.ts +13 -28
  287. package/dist/components/statusbadge/StatusBadge.svelte.d.ts.map +1 -1
  288. package/dist/components/statusdot/README.md +11 -0
  289. package/dist/components/statusdot/StatusDot.js +2 -5
  290. package/dist/components/statusdot/StatusDot.js.map +1 -1
  291. package/dist/components/statusdot/StatusDot.spec.js +42 -0
  292. package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
  293. package/dist/components/statusdot/StatusDot.stories.js +9 -37
  294. package/dist/components/statusdot/StatusDot.svelte +15 -16
  295. package/dist/components/statusdot/StatusDot.svelte.d.ts +2 -2
  296. package/dist/components/statusdot/StatusDot.svelte.d.ts.map +1 -1
  297. package/dist/components/statusnotification/README.md +25 -0
  298. package/dist/components/statusnotification/StatusNotification.js +3 -6
  299. package/dist/components/statusnotification/StatusNotification.js.map +1 -1
  300. package/dist/components/statusnotification/StatusNotification.spec.js +54 -0
  301. package/dist/components/statusnotification/StatusNotification.stories.d.ts +16 -14
  302. package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
  303. package/dist/components/statusnotification/StatusNotification.stories.js +53 -86
  304. package/dist/components/statusnotification/StatusNotification.svelte +186 -187
  305. package/dist/components/statusnotification/StatusNotification.svelte.d.ts +21 -18
  306. package/dist/components/statusnotification/StatusNotification.svelte.d.ts.map +1 -1
  307. package/dist/components/tab/README.md +20 -0
  308. package/dist/components/tab/Tab.js +4 -0
  309. package/dist/components/tab/Tab.js.map +1 -0
  310. package/dist/components/tab/Tab.spec.js +58 -0
  311. package/dist/components/tab/Tab.svelte +154 -0
  312. package/dist/components/{tabs → tab}/Tab.svelte.d.ts +20 -3
  313. package/dist/components/tab/Tab.svelte.d.ts.map +1 -0
  314. package/dist/components/tabs/README.md +18 -0
  315. package/dist/components/tabs/Tabs.js +2 -5
  316. package/dist/components/tabs/Tabs.js.map +1 -1
  317. package/dist/components/tabs/Tabs.spec.js +51 -0
  318. package/dist/components/tabs/Tabs.stories.d.ts +9 -6
  319. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  320. package/dist/components/tabs/Tabs.stories.js +59 -115
  321. package/dist/components/tabs/Tabs.svelte +46 -29
  322. package/dist/components/tabs/Tabs.svelte.d.ts +21 -7
  323. package/dist/components/tabs/Tabs.svelte.d.ts.map +1 -1
  324. package/dist/components/tags/README.md +9 -0
  325. package/dist/components/tags/Tag.js +2 -5
  326. package/dist/components/tags/Tag.js.map +1 -1
  327. package/dist/components/tags/Tag.svelte +35 -38
  328. package/dist/components/tags/TagContextualised.js +2 -5
  329. package/dist/components/tags/TagContextualised.js.map +1 -1
  330. package/dist/components/tags/TagContextualised.svelte +35 -38
  331. package/dist/components/tags/TagInteractive.js +2 -5
  332. package/dist/components/tags/TagInteractive.js.map +1 -1
  333. package/dist/components/tags/TagInteractive.svelte +35 -38
  334. package/dist/components/tags/TagRemovable.js +2 -5
  335. package/dist/components/tags/TagRemovable.js.map +1 -1
  336. package/dist/components/tags/TagRemovable.svelte +35 -38
  337. package/dist/components/tags/TagSelectable.js +2 -5
  338. package/dist/components/tags/TagSelectable.js.map +1 -1
  339. package/dist/components/tags/TagSelectable.svelte +35 -38
  340. package/dist/components/tags/Tags.stories.d.ts.map +1 -1
  341. package/dist/components/tags/Tags.stories.js +7 -1
  342. package/dist/components/tags/TagsContextualised.stories.d.ts.map +1 -1
  343. package/dist/components/tags/TagsContextualised.stories.js +7 -1
  344. package/dist/components/tags/TagsInteractive.stories.d.ts.map +1 -1
  345. package/dist/components/tags/TagsInteractive.stories.js +7 -1
  346. package/dist/components/tags/TagsRemovable.stories.d.ts.map +1 -1
  347. package/dist/components/tags/TagsRemovable.stories.js +7 -1
  348. package/dist/components/tags/TagsSelectable.stories.d.ts.map +1 -1
  349. package/dist/components/tags/TagsSelectable.stories.js +7 -1
  350. package/dist/components/textarea/README.md +19 -0
  351. package/dist/components/textarea/Textarea.js +2 -8
  352. package/dist/components/textarea/Textarea.js.map +1 -1
  353. package/dist/components/textarea/Textarea.spec.js +67 -0
  354. package/dist/components/textarea/Textarea.stories.d.ts +9 -13
  355. package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
  356. package/dist/components/textarea/Textarea.stories.js +61 -92
  357. package/dist/components/textarea/Textarea.svelte +70 -117
  358. package/dist/components/textarea/Textarea.svelte.d.ts +43 -13
  359. package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
  360. package/dist/components/textinput/README.md +26 -0
  361. package/dist/components/textinput/Textinput.js +5 -9
  362. package/dist/components/textinput/Textinput.js.map +1 -1
  363. package/dist/components/textinput/Textinput.spec.js +89 -0
  364. package/dist/components/textinput/Textinput.stories.d.ts +11 -12
  365. package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
  366. package/dist/components/textinput/Textinput.stories.js +78 -137
  367. package/dist/components/textinput/Textinput.svelte +107 -148
  368. package/dist/components/textinput/Textinput.svelte.d.ts +46 -22
  369. package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
  370. package/dist/components/toaster/README.md +28 -0
  371. package/dist/components/toaster/Toaster.js +5 -8
  372. package/dist/components/toaster/Toaster.js.map +1 -1
  373. package/dist/components/toaster/Toaster.spec.js +100 -0
  374. package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
  375. package/dist/components/toaster/Toaster.stories.js +5 -73
  376. package/dist/components/toaster/Toaster.svelte +157 -146
  377. package/dist/components/toaster/Toaster.svelte.d.ts +3 -0
  378. package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
  379. package/dist/components/toggle/README.md +15 -0
  380. package/dist/components/toggle/Toggle.js +2 -5
  381. package/dist/components/toggle/Toggle.js.map +1 -1
  382. package/dist/components/toggle/Toggle.spec.js +69 -0
  383. package/dist/components/toggle/Toggle.stories.d.ts +9 -14
  384. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
  385. package/dist/components/toggle/Toggle.stories.js +55 -64
  386. package/dist/components/toggle/Toggle.svelte +59 -48
  387. package/dist/components/toggle/Toggle.svelte.d.ts +26 -7
  388. package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
  389. package/dist/components/togglegroup/README.md +13 -0
  390. package/dist/components/togglegroup/ToggleGroup.js +3 -6
  391. package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
  392. package/dist/components/togglegroup/ToggleGroup.spec.js +50 -0
  393. package/dist/components/togglegroup/ToggleGroup.stories.d.ts +5 -13
  394. package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
  395. package/dist/components/togglegroup/ToggleGroup.stories.js +56 -104
  396. package/dist/components/togglegroup/ToggleGroup.svelte +91 -97
  397. package/dist/components/togglegroup/ToggleGroup.svelte.d.ts +25 -14
  398. package/dist/components/togglegroup/ToggleGroup.svelte.d.ts.map +1 -1
  399. package/dist/components/tooltip/README.md +19 -0
  400. package/dist/components/tooltip/Tooltip.js +4 -7
  401. package/dist/components/tooltip/Tooltip.js.map +1 -1
  402. package/dist/components/tooltip/Tooltip.spec.js +38 -0
  403. package/dist/components/tooltip/Tooltip.stories.d.ts +6 -7
  404. package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
  405. package/dist/components/tooltip/Tooltip.stories.js +45 -59
  406. package/dist/components/tooltip/Tooltip.svelte +31 -25
  407. package/dist/components/tooltip/Tooltip.svelte.d.ts +17 -0
  408. package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
  409. package/dist/custom-element-forward-events.js.map +1 -1
  410. package/dist/custom-element.js +3 -3
  411. package/dist/custom-element.js.map +1 -1
  412. package/dist/documentation/Contributing.mdx +1 -1
  413. package/dist/documentation/Introduction.mdx +45 -11
  414. package/dist/documentation/SupportAndOnboarding.mdx +2 -2
  415. package/dist/each.js +1 -1
  416. package/dist/each.js.map +1 -1
  417. package/dist/if.js +1 -1
  418. package/dist/if.js.map +1 -1
  419. package/dist/input.js +1 -1
  420. package/dist/input.js.map +1 -1
  421. package/dist/legacy.js +1 -1
  422. package/dist/legacy.js.map +1 -1
  423. package/dist/main.d.ts +24 -23
  424. package/dist/main.d.ts.map +1 -1
  425. package/dist/main.js +24 -23
  426. package/dist/slot.js +1 -1
  427. package/dist/slot.js.map +1 -1
  428. package/dist/this.js +2 -0
  429. package/dist/this.js.map +1 -0
  430. package/package.json +12 -4
  431. package/dist/components/button/button.types.d.ts +0 -13
  432. package/dist/components/button/button.types.d.ts.map +0 -1
  433. package/dist/components/button/button.types.js +0 -1
  434. package/dist/components/checkboxgroup/checkboxgroup.types.d.ts +0 -9
  435. package/dist/components/checkboxgroup/checkboxgroup.types.d.ts.map +0 -1
  436. package/dist/components/checkboxgroup/checkboxgroup.types.js +0 -1
  437. package/dist/components/link/link.types.d.ts +0 -4
  438. package/dist/components/link/link.types.d.ts.map +0 -1
  439. package/dist/components/link/link.types.js +0 -1
  440. package/dist/components/loader/loader.types.d.ts +0 -3
  441. package/dist/components/loader/loader.types.d.ts.map +0 -1
  442. package/dist/components/loader/loader.types.js +0 -1
  443. package/dist/components/numberbadge/NumberBadge.types.d.ts +0 -3
  444. package/dist/components/numberbadge/NumberBadge.types.d.ts.map +0 -1
  445. package/dist/components/numberbadge/NumberBadge.types.js +0 -1
  446. package/dist/components/overlayloader/OverlayLoader.js +0 -30
  447. package/dist/components/overlayloader/OverlayLoader.js.map +0 -1
  448. package/dist/components/overlayloader/OverlayLoader.stories.d.ts +0 -8
  449. package/dist/components/overlayloader/OverlayLoader.stories.d.ts.map +0 -1
  450. package/dist/components/overlayloader/OverlayLoader.stories.js +0 -50
  451. package/dist/components/overlayloader/OverlayLoader.svelte +0 -159
  452. package/dist/components/overlayloader/OverlayLoader.svelte.d.ts +0 -9
  453. package/dist/components/overlayloader/OverlayLoader.svelte.d.ts.map +0 -1
  454. package/dist/components/quantityselector/quantitySelector.types.d.ts +0 -2
  455. package/dist/components/quantityselector/quantitySelector.types.d.ts.map +0 -1
  456. package/dist/components/quantityselector/quantitySelector.types.js +0 -1
  457. package/dist/components/radiogroup/radioGroup.types.d.ts +0 -9
  458. package/dist/components/radiogroup/radioGroup.types.d.ts.map +0 -1
  459. package/dist/components/radiogroup/radioGroup.types.js +0 -1
  460. package/dist/components/select/select.types.d.ts +0 -9
  461. package/dist/components/select/select.types.d.ts.map +0 -1
  462. package/dist/components/select/select.types.js +0 -1
  463. package/dist/components/statusbadge/StatusBadge.types.d.ts +0 -2
  464. package/dist/components/statusbadge/StatusBadge.types.d.ts.map +0 -1
  465. package/dist/components/statusbadge/StatusBadge.types.js +0 -1
  466. package/dist/components/statusdot/StatusDot.types.d.ts +0 -3
  467. package/dist/components/statusdot/StatusDot.types.d.ts.map +0 -1
  468. package/dist/components/statusdot/StatusDot.types.js +0 -1
  469. package/dist/components/tabs/Tab.js +0 -7
  470. package/dist/components/tabs/Tab.js.map +0 -1
  471. package/dist/components/tabs/Tab.svelte +0 -137
  472. package/dist/components/tabs/Tab.svelte.d.ts.map +0 -1
  473. package/dist/components/textinput/textinput.types.d.ts +0 -3
  474. package/dist/components/textinput/textinput.types.d.ts.map +0 -1
  475. package/dist/components/textinput/textinput.types.js +0 -1
  476. package/dist/components/toggle/toggle.types.d.ts +0 -2
  477. package/dist/components/toggle/toggle.types.d.ts.map +0 -1
  478. package/dist/components/toggle/toggle.types.js +0 -1
  479. package/dist/index-client.js +0 -2
  480. package/dist/index-client.js.map +0 -1
  481. package/dist/snippet.js +0 -2
  482. package/dist/snippet.js.map +0 -1
@@ -1,11 +1,9 @@
1
- import type { Meta } from '@storybook/html-vite';
2
- /**
3
- * The `MLoader` component is the **Svelte / WebComponent** implementation of the **Loader** component of Mozaic Design System.
4
- * The full specification of this component is available in [the associated documentation](https://mozaic.adeo.cloud/components/loader/).
5
- */
6
- declare const _default: Meta;
7
- export default _default;
8
- export declare const Default: any;
9
- export declare const Sizes: any;
10
- export declare const Themes: any;
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj;
5
+ export declare const Standard: Story;
6
+ export declare const Accent: Story;
7
+ export declare const Inverse: Story;
8
+ export declare const Size: Story;
11
9
  //# sourceMappingURL=Loader.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Loader.stories.d.ts","sourceRoot":"","sources":["../../../src/components/loader/Loader.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;GAGG;wBAqBE,IAAI;AAnBT,wBAmBU;AAUV,eAAO,MAAM,OAAO,KAAoB,CAAC;AAOzC,eAAO,MAAM,KAAK,KAAoB,CAAC;AAOvC,eAAO,MAAM,MAAM,KAAoB,CAAC"}
1
+ {"version":3,"file":"Loader.stories.d.ts","sourceRoot":"","sources":["../../../src/components/loader/Loader.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,QAAA,MAAM,IAAI,EAAE,IAoBX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,QAAQ,EAAE,KAAU,CAAC;AAElC,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC"}
@@ -1,53 +1,37 @@
1
- import { userEvent, within, expect } from 'storybook/test';
2
- /**
3
- * The `MLoader` component is the **Svelte / WebComponent** implementation of the **Loader** component of Mozaic Design System.
4
- * The full specification of this component is available in [the associated documentation](https://mozaic.adeo.cloud/components/loader/).
5
- */
6
- export default {
7
- title: 'Loading/Loader',
8
- tags: ['autodocs', 'beta'],
1
+ import { html } from 'lit';
2
+ import { ifDefined } from 'lit-html/directives/if-defined.js';
3
+ const meta = {
4
+ title: 'Indicators/Loader',
5
+ component: 'm-loader',
9
6
  argTypes: {
10
7
  size: {
11
- description: 'Loader size',
12
- control: { type: 'radio' },
13
- options: ['xs', 's', 'm', 'l'],
8
+ control: 'radio',
9
+ options: ['s', 'm', 'l'],
14
10
  },
15
- theme: {
16
- description: 'Loader theme',
17
- control: { type: 'radio' },
11
+ appearance: {
12
+ control: 'radio',
18
13
  options: ['standard', 'accent', 'inverse'],
19
14
  },
20
- text: {
21
- description: 'Loader text - when using the loader inside an overlay',
22
- control: 'text',
23
- },
24
15
  },
16
+ render: (args) => html `
17
+ <m-loader
18
+ appearance=${ifDefined(args.appearance)}
19
+ size=${ifDefined(args.size)}
20
+ text=${ifDefined(args.text)}
21
+ ></m-loader>
22
+ `,
25
23
  };
26
- const Template = (args) => {
27
- const loader = document.createElement('m-loader');
28
- if (args.size)
29
- loader.setAttribute('size', args.size);
30
- if (args.theme)
31
- loader.setAttribute('theme', args.theme);
32
- if (args.text)
33
- loader.setAttribute('text', args.text);
34
- return loader;
35
- };
36
- export const Default = Template.bind({});
37
- Default.args = {};
38
- Default.play = async ({ canvasElement }) => {
39
- const loader = canvasElement.querySelector('m-loader');
40
- expect(loader).not.toBeNull();
24
+ export default meta;
25
+ export const Standard = {};
26
+ export const Accent = {
27
+ args: { appearance: 'accent' },
41
28
  };
42
- export const Sizes = Template.bind({});
43
- Sizes.args = { size: 'm' };
44
- Sizes.play = async ({ canvasElement }) => {
45
- const loader = canvasElement.querySelector('m-loader');
46
- expect(loader).toHaveAttribute('size', 'm');
29
+ export const Inverse = {
30
+ globals: {
31
+ backgrounds: { value: 'inverse' },
32
+ },
33
+ args: { appearance: 'inverse' },
47
34
  };
48
- export const Themes = Template.bind({});
49
- Themes.args = { theme: 'accent' };
50
- Themes.play = async ({ canvasElement }) => {
51
- const loader = canvasElement.querySelector('m-loader');
52
- expect(loader).toHaveAttribute('theme', 'accent');
35
+ export const Size = {
36
+ args: { size: 's' },
53
37
  };
@@ -1,31 +1,29 @@
1
1
  <svelte:options customElement={{ tag: 'm-loader' }} />
2
2
 
3
3
  <script lang="ts">
4
- import type { LoaderSize, LoaderTheme } from './loader.types';
5
-
4
+ /**
5
+ * A loader is a visual indicator used to inform users that a process is in progress, typically during data fetching, page loading, or background operations. It provides feedback that the system is working, helping to manage user expectations and reduce perceived wait time.
6
+ */
6
7
  interface Props {
7
- size: LoaderSize;
8
- theme: LoaderTheme;
8
+ /**
9
+ * Specifies the visual appearance of the loader.
10
+ */
11
+ appearance?: 'standard' | 'accent' | 'inverse';
12
+
13
+ /**
14
+ * Defines the size of the loader.
15
+ */
16
+ size?: 's' | 'm' | 'l';
17
+
18
+ /**
19
+ * Text to display alongside the loader when using the loader inside an `Overlay`.
20
+ */
9
21
  text?: string;
10
22
  }
11
23
 
12
- let { size, theme, text }: Props = $props();
13
-
14
- function setClasses(size: LoaderSize, theme: LoaderTheme) {
15
- const classes = ['mc-loader'];
16
-
17
- if (size) {
18
- classes.push(`mc-loader--${size}`);
19
- }
20
-
21
- if (theme) {
22
- classes.push(`mc-loader--${theme}`);
23
- }
24
-
25
- return classes.join(' ');
26
- }
24
+ let { size = 'm', appearance = 'standard', text }: Props = $props();
27
25
 
28
- function setViewBox(size: LoaderSize) {
26
+ const setViewBox = () => {
29
27
  let viewBox: string;
30
28
 
31
29
  switch (size) {
@@ -40,9 +38,9 @@
40
38
  }
41
39
 
42
40
  return viewBox;
43
- }
41
+ };
44
42
 
45
- function setCircleRadius(size: LoaderSize) {
43
+ const setCircleRadius = () => {
46
44
  let circleRadius: number;
47
45
 
48
46
  switch (size) {
@@ -57,22 +55,24 @@
57
55
  }
58
56
 
59
57
  return circleRadius;
60
- }
58
+ };
61
59
  </script>
62
60
 
63
- <div class={setClasses(size, theme)}>
61
+ <div
62
+ class={[
63
+ 'mc-loader',
64
+ `mc-loader--${size}`,
65
+ `mc-loader--${appearance}`,
66
+ text && 'mc-loader--text-visible',
67
+ ]}
68
+ >
64
69
  <span class="mc-loader__spinner">
65
70
  <svg
66
71
  class="mc-loader__icon"
67
72
  xmlns="http://www.w3.org/2000/svg"
68
- viewBox={setViewBox(size)}
73
+ viewBox={setViewBox()}
69
74
  >
70
- <circle
71
- class="mc-loader__path"
72
- cx="50%"
73
- cy="50%"
74
- r={setCircleRadius(size)}
75
- />
75
+ <circle class="mc-loader__path" cx="50%" cy="50%" r={setCircleRadius()} />
76
76
  </svg>
77
77
  </span>
78
78
 
@@ -86,15 +86,6 @@
86
86
  <style>/**
87
87
  * Do not edit directly, this file was auto-generated.
88
88
  */
89
- /**
90
- * Do not edit directly, this file was auto-generated.
91
- */
92
- .mc-loader {
93
- color: #464e63;
94
- align-items: center;
95
- display: inline-flex;
96
- flex-direction: column;
97
- }
98
89
  .mc-loader .mc-loader__spinner {
99
90
  height: 2rem;
100
91
  width: 2rem;
@@ -102,9 +93,17 @@
102
93
  .mc-loader .mc-loader__path {
103
94
  stroke-width: 4;
104
95
  }
96
+ .mc-loader {
97
+ color: var(--loader-color-standard, #464e63);
98
+ }
105
99
  .mc-loader .mc-loader__path {
106
100
  stroke: currentColor;
107
101
  }
102
+ .mc-loader {
103
+ align-items: center;
104
+ display: inline-flex;
105
+ flex-direction: column;
106
+ }
108
107
  .mc-loader__spinner:not(:only-child) {
109
108
  margin-bottom: 1rem;
110
109
  }
@@ -120,7 +119,7 @@
120
119
  animation: animate-dash-loader 2s ease-in-out infinite;
121
120
  }
122
121
  .mc-loader__text {
123
- font-size: 1rem;
122
+ font-size: var(--font-size-150, 1rem);
124
123
  color: currentcolor;
125
124
  }
126
125
  .mc-loader:not(.mc-loader--text-visible) .mc-loader__text {
@@ -155,13 +154,13 @@
155
154
  stroke-width: 8;
156
155
  }
157
156
  .mc-loader--accent {
158
- color: #117f03;
157
+ color: var(--loader-color-accent, #117f03);
159
158
  }
160
159
  .mc-loader--accent .mc-loader__path {
161
160
  stroke: currentColor;
162
161
  }
163
162
  .mc-loader--inverse {
164
- color: #ffffff;
163
+ color: var(--loader-color-inverse, #ffffff);
165
164
  }
166
165
  .mc-loader--inverse .mc-loader__path {
167
166
  stroke: currentColor;
@@ -1,7 +1,18 @@
1
- import type { LoaderSize, LoaderTheme } from './loader.types';
1
+ /**
2
+ * A loader is a visual indicator used to inform users that a process is in progress, typically during data fetching, page loading, or background operations. It provides feedback that the system is working, helping to manage user expectations and reduce perceived wait time.
3
+ */
2
4
  interface Props {
3
- size: LoaderSize;
4
- theme: LoaderTheme;
5
+ /**
6
+ * Specifies the visual appearance of the loader.
7
+ */
8
+ appearance?: 'standard' | 'accent' | 'inverse';
9
+ /**
10
+ * Defines the size of the loader.
11
+ */
12
+ size?: 's' | 'm' | 'l';
13
+ /**
14
+ * Text to display alongside the loader when using the loader inside an `Overlay`.
15
+ */
5
16
  text?: string;
6
17
  }
7
18
  declare const Loader: import("svelte").Component<Props, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"Loader.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/loader/Loader.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG5D,UAAU,KAAK;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4EH,QAAA,MAAM,MAAM,2CAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Loader.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/loader/Loader.svelte.ts"],"names":[],"mappings":"AAGE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAE/C;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAkEH,QAAA,MAAM,MAAM,2CAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
@@ -0,0 +1,12 @@
1
+ # `m-loader`
2
+
3
+ A loader is a visual indicator used to inform users that a process is in progress, typically during data fetching, page loading, or background operations. It provides feedback that the system is working, helping to manage user expectations and reduce perceived wait time.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `appearance` | Specifies the visual appearance of the loader. | `'standard'` `'accent'` `'inverse'` | `standard` |
10
+ | `size` | Defines the size of the loader. | `'s'` `'m'` `'l'` | `m` |
11
+ | `text` | Text to display alongside the loader when using the loader inside an `Overlay`. | `string` | |
12
+
@@ -0,0 +1,4 @@
1
+ import{c as p,p as b,a as g,b as o,f as u,d as n,t as y,i as f,j as x,k as v,r as d,e as z,g as _}from"../../custom-element.js";import{s as h}from"../../attributes.js";import{L as k}from"../loader/Loader.js";import"../../if.js";var L=u('<div><div role="dialog" tabindex="-1"><!></div></div>');const j={hash:"svelte-111c1z1",code:`/**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */.mc-loading-loader.svelte-111c1z1 {background-color:var(--overlay-color-background, rgba(0, 0, 0, 0.5));inset:0;opacity:0;position:fixed;pointer-events:none;transition:opacity 0.4s ease, visibility 0ms 0.4s;z-index:var(--overlay-z-index, 2);}.mc-loading-loader.is-visible.svelte-111c1z1 {opacity:1;pointer-events:all;transition:opacity 0.4s ease, visibility 0ms;visibility:visible;}.mc-loading-loader.svelte-111c1z1 {align-items:center;display:flex;justify-content:center;}`};function w(l,t){b(t,!0),g(l,j);let s=o(t,"isvisible",7),e=o(t,"text",7);var c={get isvisible(){return s()},set isvisible(r){s(r),v()},get text(){return e()},set text(r){e(r),v()}},i=L(),a=n(i),m=n(a);return k(m,{size:"l",appearance:"inverse",get text(){return e()}}),d(a),d(i),y(()=>{z(i,1,_(["mc-loading-loader",s()&&"is-visible"]),"svelte-111c1z1"),h(a,"aria-label",e())}),f(l,i),x(c)}customElements.define("m-loading-overlay",p(w,{isvisible:{},text:{}},[],[],!0));
4
+ //# sourceMappingURL=LoadingOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingOverlay.js","sources":["../../../src/components/loadingoverlay/LoadingOverlay.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-loading-overlay' }} />\n\n<script lang=\"ts\">\n import Loader from '../loader/Loader.svelte';\n /**\n * A loading overlay is a full-screen or container-level layer that indicates a process is in progress, preventing user interaction until the task is completed. It includes a progress indicator, and a message to inform users about the loading state. Loading Overlays are commonly used in data-heavy applications, form submissions, and page transitions to enhance user experience by managing wait times effectively.\n */\n interface Props {\n /**\n * Controls the visibility of the loading overlay.\n */\n isvisible?: boolean;\n /**\n * Text of the loading overlay.\n */\n text?: string;\n }\n\n let { isvisible, text }: Props = $props();\n</script>\n\n<div class={['mc-loading-loader', isvisible && 'is-visible']}>\n <div role=\"dialog\" tabindex=\"-1\" aria-label={text}>\n <Loader size=\"l\" appearance=\"inverse\" {text} />\n </div>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/loading-overlay';\n</style>\n"],"names":["isvisible","$.prop","$$props","text"],"mappings":";;8eAAA,oBAkBQA,EAASC,EAAAC,EAAA,YAAA,CAAA,EAAEC,EAAIF,EAAAC,EAAA,OAAA,CAAA,+NAGV,oBAAqBF,KAAa,YAAY,CAAA,EAAA,gBAAA,mBACZG,GAAI,eAHnD"}
@@ -0,0 +1,38 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { render } from '@testing-library/svelte';
3
+ import LoadingOverlay from './LoadingOverlay.svelte';
4
+ describe('m-loading-overlay component', () => {
5
+ it('does not have visible class by default', () => {
6
+ const { container } = render(LoadingOverlay);
7
+ const overlay = container.querySelector('.mc-loading-loader');
8
+ expect(overlay).toBeTruthy();
9
+ expect(overlay?.classList).not.toContain('is-visible');
10
+ });
11
+ it('adds visible class when isvisible is true', () => {
12
+ const { container } = render(LoadingOverlay, {
13
+ props: { isvisible: true },
14
+ });
15
+ const overlay = container.querySelector('.mc-loading-loader');
16
+ expect(overlay?.classList).toContain('is-visible');
17
+ });
18
+ it('renders with provided text and sets aria-label', () => {
19
+ const text = 'Loading data...';
20
+ const { container, getByRole } = render(LoadingOverlay, {
21
+ props: { isvisible: true, text },
22
+ });
23
+ const dialog = getByRole('dialog');
24
+ expect(dialog).toBeTruthy();
25
+ expect(dialog.getAttribute('aria-label')).toBe(text);
26
+ const loader = container.querySelector('.mc-loader');
27
+ expect(loader).toBeTruthy();
28
+ const loaderText = container.querySelector('.mc-loader__text');
29
+ expect(loaderText?.textContent).toBe(text);
30
+ });
31
+ it('does not render aria-label when no text is provided', () => {
32
+ const { getByRole } = render(LoadingOverlay, {
33
+ props: { isvisible: true },
34
+ });
35
+ const dialog = getByRole('dialog');
36
+ expect(dialog.getAttribute('aria-label')).toBe(null);
37
+ });
38
+ });
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj;
5
+ export declare const Default: Story;
6
+ export declare const text: Story;
7
+ //# sourceMappingURL=LoadingOverlay.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingOverlay.stories.d.ts","sourceRoot":"","sources":["../../../src/components/loadingoverlay/LoadingOverlay.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,QAAA,MAAM,IAAI,EAAE,IA6BX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,IAAI,EAAE,KAIlB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { html } from 'lit';
2
+ import { ifDefined } from 'lit-html/directives/if-defined.js';
3
+ const meta = {
4
+ title: 'Overlay/Loading Overlay',
5
+ component: 'm-loading-overlay',
6
+ parameters: {
7
+ layout: 'fullscreen',
8
+ docs: {
9
+ story: { height: '400px' },
10
+ },
11
+ },
12
+ args: {
13
+ isvisible: true,
14
+ },
15
+ argTypes: {
16
+ '--overlay-z-index': {
17
+ description: 'Customise the z-index of the overlay',
18
+ control: false,
19
+ table: {
20
+ category: 'Custom Properties',
21
+ type: { summary: 'number' },
22
+ defaultValue: { summary: '2' },
23
+ },
24
+ },
25
+ },
26
+ render: (args) => html `
27
+ <m-loading-overlay
28
+ isvisible=${ifDefined(args.isvisible)}
29
+ text=${ifDefined(args.text)}
30
+ ></m-loading-overlay>
31
+ `,
32
+ };
33
+ export default meta;
34
+ export const Default = {};
35
+ export const text = {
36
+ args: {
37
+ text: 'Insert your text here',
38
+ },
39
+ };
@@ -0,0 +1,50 @@
1
+ <svelte:options customElement={{ tag: 'm-loading-overlay' }} />
2
+
3
+ <script lang="ts">
4
+ import Loader from '../loader/Loader.svelte';
5
+ /**
6
+ * A loading overlay is a full-screen or container-level layer that indicates a process is in progress, preventing user interaction until the task is completed. It includes a progress indicator, and a message to inform users about the loading state. Loading Overlays are commonly used in data-heavy applications, form submissions, and page transitions to enhance user experience by managing wait times effectively.
7
+ */
8
+ interface Props {
9
+ /**
10
+ * Controls the visibility of the loading overlay.
11
+ */
12
+ isvisible?: boolean;
13
+ /**
14
+ * Text of the loading overlay.
15
+ */
16
+ text?: string;
17
+ }
18
+
19
+ let { isvisible, text }: Props = $props();
20
+ </script>
21
+
22
+ <div class={['mc-loading-loader', isvisible && 'is-visible']}>
23
+ <div role="dialog" tabindex="-1" aria-label={text}>
24
+ <Loader size="l" appearance="inverse" {text} />
25
+ </div>
26
+ </div>
27
+
28
+ <style>/**
29
+ * Do not edit directly, this file was auto-generated.
30
+ */
31
+ .mc-loading-loader {
32
+ background-color: var(--overlay-color-background, rgba(0, 0, 0, 0.5));
33
+ inset: 0;
34
+ opacity: 0;
35
+ position: fixed;
36
+ pointer-events: none;
37
+ transition: opacity 0.4s ease, visibility 0ms 0.4s;
38
+ z-index: var(--overlay-z-index, 2);
39
+ }
40
+ .mc-loading-loader.is-visible {
41
+ opacity: 1;
42
+ pointer-events: all;
43
+ transition: opacity 0.4s ease, visibility 0ms;
44
+ visibility: visible;
45
+ }
46
+ .mc-loading-loader {
47
+ align-items: center;
48
+ display: flex;
49
+ justify-content: center;
50
+ }</style>
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A loading overlay is a full-screen or container-level layer that indicates a process is in progress, preventing user interaction until the task is completed. It includes a progress indicator, and a message to inform users about the loading state. Loading Overlays are commonly used in data-heavy applications, form submissions, and page transitions to enhance user experience by managing wait times effectively.
3
+ */
4
+ interface Props {
5
+ /**
6
+ * Controls the visibility of the loading overlay.
7
+ */
8
+ isvisible?: boolean;
9
+ /**
10
+ * Text of the loading overlay.
11
+ */
12
+ text?: string;
13
+ }
14
+ declare const LoadingOverlay: import("svelte").Component<Props, {}, "">;
15
+ type LoadingOverlay = ReturnType<typeof LoadingOverlay>;
16
+ export default LoadingOverlay;
17
+ //# sourceMappingURL=LoadingOverlay.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingOverlay.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/loadingoverlay/LoadingOverlay.svelte.ts"],"names":[],"mappings":"AAKE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAoBH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ # `m-loading-overlay`
2
+
3
+ A loading overlay is a full-screen or container-level layer that indicates a process is in progress, preventing user interaction until the task is completed. It includes a progress indicator, and a message to inform users about the loading state. Loading Overlays are commonly used in data-heavy applications, form submissions, and page transitions to enhance user experience by managing wait times effectively.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `isvisible` | Controls the visibility of the loading overlay. | `boolean` | |
10
+ | `text` | Text of the loading overlay. | `string` | |
11
+
@@ -1,19 +1,16 @@
1
- import{n as P,c as Q,p as R,a as U,b as l,f as c,s,d as r,t as M,e as V,g as S,h as m,i as W,j as d,r as a}from"../../custom-element.js";import{i as f}from"../../if.js";import{s as b}from"../../slot.js";import{s as X}from"../../attributes.js";import{C as Z}from"../../Cross24.js";import{O as $}from"../overlay/Overlay.js";import"../../legacy.js";function ee(_,o){o(!1);const n=new CustomEvent("update:open",{detail:o(),bubbles:!0,composed:!0});this.dispatchEvent(n)}var te=c('<span class="mc-modal__icon svelte-19ke250"><!></span>'),oe=c('<button type="button" class="mc-modal__close mc-button mc-button--icon-button mc-button--ghost svelte-19ke250" aria-label="Close"><span class="mc-modal__icon svelte-19ke250"><!></span></button>'),re=c('<p class="svelte-19ke250"> </p>'),ae=c('<span class="mc-modal__link svelte-19ke250"><!></span>'),ie=c('<footer class="mc-modal__footer svelte-19ke250"><!> <!></footer>'),ne=c('<section tabindex="-1" aria-labelledby="modalTitle"><div class="mc-modal__dialog svelte-19ke250" role="document"><header class="mc-modal__header svelte-19ke250"><!> <h2 class="mc-modal__title svelte-19ke250" id="modalTitle"> </h2> <!></header> <main class="mc-modal__body svelte-19ke250"><!> <!></main> <!></div> <!></section>');const le={hash:"svelte-19ke250",code:`/**
1
+ import{v as J,c as K,p as L,a as N,b as s,f as w,d as t,s as l,t as E,i as y,j as P,k as c,r as o,h as O,e as Q,g as R}from"../../custom-element.js";import{i as T}from"../../if.js";import{s as m}from"../../slot.js";import{s as U}from"../../attributes.js";import{b as V}from"../../this.js";import{C as W}from"../../Cross24.js";import{O as X}from"../overlay/Overlay.js";import"../../legacy.js";var Z=w('<button type="button" class="mc-modal__close mc-button mc-button--icon-button mc-button--ghost svelte-1tduk3b" aria-label="Close"><!></button>'),$=w('<p class="svelte-1tduk3b"> </p>'),ee=w('<section tabindex="-1" aria-labelledby="modalTitle"><div class="mc-modal__dialog svelte-1tduk3b" role="document"><header class="mc-modal__header svelte-1tduk3b"><span class="mc-modal__icon svelte-1tduk3b"><!></span> <h2 class="mc-modal__title svelte-1tduk3b" id="modalTitle"> </h2> <!></header> <main class="mc-modal__body svelte-1tduk3b"><!> <!></main> <footer class="mc-modal__footer svelte-1tduk3b"><span class="mc-modal__link svelte-1tduk3b"><!></span> <!></footer></div> <!></section>');const te={hash:"svelte-1tduk3b",code:`/**
2
2
  * Do not edit directly, this file was auto-generated.
3
- */
4
- /**
5
- * Do not edit directly, this file was auto-generated.
6
- */.mc-modal.svelte-19ke250 {box-sizing:border-box;inset:0;outline:0;pointer-events:none;position:fixed;z-index:var(--modal-z-index, 3);display:flex;justify-content:center;align-items:flex-end;overflow:hidden auto;}
7
- @media (width >= 680px) {.mc-modal.svelte-19ke250 {align-items:center;}
8
- }.mc-modal__dialog.svelte-19ke250 {background:#ffffff;display:flex;flex-direction:column;opacity:0;position:relative;transform:translateY(-25%);transition:visibility 0s linear 0.4s, transform 0.4s ease, opacity 0.4s ease;visibility:hidden;width:100%;border-radius:1rem 1rem 0 0;z-index:3;box-shadow:0px 10px 20px -4px rgba(36, 41, 56, 0.2);}
9
- @media (width >= 680px) {.mc-modal__dialog.svelte-19ke250 {width:38rem;border-radius:1rem;}
10
- }.mc-modal.is-open.svelte-19ke250 .mc-modal__dialog:where(.svelte-19ke250) {opacity:1;pointer-events:all;transform:translateY(0);transition:visibility 0s linear 0s, transform 0.4s ease, opacity 0.4s ease;visibility:visible;}.mc-modal__header.svelte-19ke250 {align-items:center;display:flex;gap:0.5rem;min-height:3rem;padding:1rem;position:relative;}
11
- @media (width >= 680px) {.mc-modal__header.svelte-19ke250 {padding:1.5rem 1.5rem 1rem 1.5rem;}
12
- }.mc-modal__icon.svelte-19ke250 {width:2rem;height:2rem;}.mc-modal__title.svelte-19ke250 {font-size:1.5rem;font-weight:600;color:#000000;margin-bottom:0.5rem;margin-top:0.5rem;padding-right:3rem;}.mc-modal__close.svelte-19ke250 {position:absolute;top:0.75rem;right:0.75rem;}.mc-modal__body.svelte-19ke250 {font-size:1rem;color:#404040;padding:0 1rem;margin-bottom:1rem;}
13
- @media (width >= 680px) {.mc-modal__body.svelte-19ke250 {padding:0 1.5rem;}
14
- }.mc-modal__body.svelte-19ke250 p:where(.svelte-19ke250) {margin:0;line-height:1.3;}.mc-modal__footer.svelte-19ke250 {align-items:stretch;display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:1rem;padding:0.5rem 1rem 1rem 1rem;}
15
- @media (width >= 680px) {.mc-modal__footer.svelte-19ke250 {flex-direction:row;padding:0.5rem 1.5rem 1.5rem 1.5rem;}
16
- }.mc-modal__link.svelte-19ke250 {order:1;}
17
- @media (width >= 680px) {.mc-modal__link.svelte-19ke250 {margin-right:auto;order:0;}
18
- }.mc-button.svelte-19ke250 {color:#ffffff;background-color:#464e63;font-weight:600;padding:0 calc(1rem - 0.125rem);min-height:3rem;min-width:3rem;display:inline-flex;justify-content:center;vertical-align:middle;text-align:center;border:2px solid transparent;border-radius:0.25rem;transition:all ease 200ms;transition:box-shadow 200ms ease;align-items:center;box-sizing:border-box;font-family:inherit;fill:currentcolor;gap:0.25rem;cursor:pointer;}.mc-button.svelte-19ke250:hover {background-color:#343b4c;}.mc-button.svelte-19ke250:active {background-color:#242938;}.mc-button.svelte-19ke250:disabled {background-color:#d9d9d9;border-color:transparent;color:#737373;cursor:not-allowed;}.mc-button.svelte-19ke250:disabled {background-color:#d9d9d9;border-color:transparent;color:#737373;cursor:not-allowed;}.mc-button.svelte-19ke250:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, #ffffff), 0 0 0 0.25rem var(--focus-color-outer, #000000);outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-button--ghost.svelte-19ke250 {color:#242938;background-color:rgba(255, 255, 255, 0.01);}.mc-button--ghost.svelte-19ke250:hover {background-color:rgba(70, 78, 99, 0.1);}.mc-button--ghost.svelte-19ke250:active {background-color:rgba(70, 78, 99, 0.2);}.mc-button--ghost.svelte-19ke250:disabled {background-color:#d9d9d9;border-color:transparent;color:#737373;cursor:not-allowed;}.mc-button--icon-button.svelte-19ke250 {border-radius:100%;padding:0;}`};function se(_,o){R(o,!0),U(_,le);let n=l(o,"open",7,!1),g=l(o,"title",7,""),u=l(o,"description",7,""),p=l(o,"closable",7,!0),k=l(o,"icon",7,void 0),h=l(o,"footer",7,void 0),x=l(o,"link",7,void 0);var v=ne();let O;var y=r(v),w=r(y),T=r(w);{var q=e=>{var t=te(),i=r(t);b(i,o,"icon",{}),a(t),m(e,t)};f(T,e=>{k()&&e(q)})}var z=s(T,2),A=r(z,!0);a(z);var B=s(z,2);{var F=e=>{var t=oe();t.__click=[ee,n];var i=r(t),j=r(i);Z(j,{"aria-hidden":"true"}),a(i),a(t),m(e,t)};f(B,e=>{p()&&e(F)})}a(w);var C=s(w,2),Y=r(C);{var G=e=>{var t=re(),i=r(t,!0);a(t),M(()=>S(i,u())),m(e,t)};f(Y,e=>{u()&&e(G)})}var H=s(Y,2);b(H,o,"default",{}),a(C);var I=s(C,2);{var J=e=>{var t=ie(),i=r(t);{var j=E=>{var D=ae(),N=r(D);b(N,o,"link",{}),a(D),m(E,D)};f(i,E=>{x()&&E(j)})}var L=s(i,2);b(L,o,"footer",{}),a(t),m(e,t)};f(I,e=>{h()&&e(J)})}a(y);var K=s(y,2);return $(K,{get isvisible(){return n()},dialoglabel:"modal"}),a(v),M(e=>{O=V(v,1,"mc-modal svelte-19ke250",null,O,e),X(v,"aria-hidden",!n()),S(A,g())},[()=>({"is-open":n()})]),m(_,v),W({get open(){return n()},set open(e=!1){n(e),d()},get title(){return g()},set title(e=""){g(e),d()},get description(){return u()},set description(e=""){u(e),d()},get closable(){return p()},set closable(e=!0){p(e),d()},get icon(){return k()},set icon(e=void 0){k(e),d()},get footer(){return h()},set footer(e=void 0){h(e),d()},get link(){return x()},set link(e=void 0){x(e),d()}})}P(["click"]);customElements.define("m-modal",Q(se,{open:{},title:{},description:{},closable:{},icon:{},footer:{},link:{}},["icon","default","link","footer"],[],!0));
3
+ */.mc-modal.svelte-1tduk3b {box-sizing:border-box;inset:0;outline:0;pointer-events:none;position:fixed;z-index:var(--modal-z-index, 3);display:flex;justify-content:center;align-items:flex-end;overflow:hidden auto;}
4
+ @media (width >= 680px) {.mc-modal.svelte-1tduk3b {align-items:center;}
5
+ }.mc-modal__dialog.svelte-1tduk3b {background:var(--modal-color-background, #ffffff);display:flex;flex-direction:column;opacity:0;position:relative;transform:translateY(-25%);transition:visibility 0s linear 0.4s, transform 0.4s ease, opacity 0.4s ease;visibility:hidden;width:100%;border-radius:var(--radius-l, 1rem) var(--radius-l, 1rem) 0 0;z-index:3;}
6
+ @media (width >= 680px) {.mc-modal__dialog.svelte-1tduk3b {width:38rem;border-radius:var(--radius-l, 1rem);}
7
+ }.mc-modal.is-open.svelte-1tduk3b .mc-modal__dialog:where(.svelte-1tduk3b) {opacity:1;pointer-events:all;transform:translateY(0);transition:visibility 0s linear 0s, transform 0.4s ease, opacity 0.4s ease;visibility:visible;}.mc-modal__header.svelte-1tduk3b {align-items:center;display:flex;gap:0.5rem;min-height:3rem;padding:1rem;position:relative;}
8
+ @media (width >= 680px) {.mc-modal__header.svelte-1tduk3b {padding:1.5rem 1.5rem 1rem 1.5rem;}
9
+ }.mc-modal__icon.svelte-1tduk3b {width:2rem;height:2rem;}.mc-modal__title.svelte-1tduk3b {font-size:var(--font-title-m, 1.5rem);font-weight:var(--font-weight-semi-bold, 600);color:var(--modal-color-title, #000000);margin-bottom:0.5rem;margin-top:0.5rem;padding-right:3rem;}.mc-modal__close.svelte-1tduk3b {position:absolute;top:0.75rem;right:0.75rem;}.mc-modal__body.svelte-1tduk3b {font-size:var(--font-size-150, 1rem);color:var(--modal-color-paragraph, #404040);padding:0 1rem;margin-bottom:1rem;}
10
+ @media (width >= 680px) {.mc-modal__body.svelte-1tduk3b {padding:0 1.5rem;}
11
+ }.mc-modal__body.svelte-1tduk3b p:where(.svelte-1tduk3b) {margin:0;line-height:var(--line-height-s, 1.3);}.mc-modal__footer.svelte-1tduk3b {align-items:stretch;display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:1rem;padding:0.5rem 1rem 1rem 1rem;}
12
+ @media (width >= 680px) {.mc-modal__footer.svelte-1tduk3b {flex-direction:row;padding:0.5rem 1.5rem 1.5rem 1.5rem;}
13
+ }.mc-modal__link.svelte-1tduk3b {order:1;}
14
+ @media (width >= 680px) {.mc-modal__link.svelte-1tduk3b {margin-right:auto;order:0;}
15
+ }.mc-button.svelte-1tduk3b {color:var(--button-color-filled-standard-font, #ffffff);background-color:var(--button-color-filled-standard-background, #464e63);}.mc-button.svelte-1tduk3b:hover {background-color:var(--button-color-filled-standard-hover-background, #343b4c);}.mc-button.svelte-1tduk3b:active {background-color:var(--button-color-filled-standard-active-background, #242938);}.mc-button.svelte-1tduk3b:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button.svelte-1tduk3b {font-weight:var(--font-weight-semi-bold, 600);padding:0 calc(1rem - 0.125rem);min-height:3rem;min-width:3rem;}.mc-button.svelte-1tduk3b {display:inline-flex;justify-content:center;vertical-align:middle;text-align:center;border:2px solid transparent;border-radius:var(--button-radius, 0.25rem);transition:all ease 200ms;transition:box-shadow 200ms ease;align-items:center;box-sizing:border-box;font-family:inherit;fill:currentcolor;gap:0.25rem;cursor:pointer;}.mc-button.svelte-1tduk3b:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button.svelte-1tduk3b: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-button--ghost.svelte-1tduk3b {color:var(--button-color-ghost-standard-font, #242938);background-color:var(--button-color-ghost-standard-background, rgba(255, 255, 255, 0.01));}.mc-button--ghost.svelte-1tduk3b:hover {background-color:var(--button-color-ghost-standard-hover-background, rgba(70, 78, 99, 0.1));}.mc-button--ghost.svelte-1tduk3b:active {background-color:var(--button-color-ghost-standard-active-background, rgba(70, 78, 99, 0.2));}.mc-button--ghost.svelte-1tduk3b:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button--icon-button.svelte-1tduk3b {border-radius:var(--radius-full, 100%);padding:0;}.mc-modal__icon.svelte-1tduk3b:empty {display:none;}`};function oe(z,r){L(r,!0),N(z,te);let d=s(r,"open",7),b=s(r,"title",7),n=s(r,"description",7),u=s(r,"closable",7,!0),v;function Y(){d(!1);const e=new CustomEvent("update:open",{detail:d(),bubbles:!0,composed:!0});v.dispatchEvent(e)}var D={get open(){return d()},set open(e){d(e),c()},get title(){return b()},set title(e){b(e),c()},get description(){return n()},set description(e){n(e),c()},get closable(){return u()},set closable(e=!0){u(e),c()}},i=ee(),f=t(i),g=t(f),p=t(g),M=t(p);m(M,r,"icon",{}),o(p);var k=l(p,2),S=t(k,!0);o(k);var q=l(k,2);{var A=e=>{var a=Z();a.__click=Y;var x=t(a);W(x,{class:"mc-modal__close","aria-hidden":"true"}),o(a),y(e,a)};T(q,e=>{u()&&e(A)})}o(g);var _=l(g,2),C=t(_);{var B=e=>{var a=$(),x=t(a,!0);o(a),E(()=>O(x,n())),y(e,a)};T(C,e=>{n()&&e(B)})}var F=l(C,2);m(F,r,"default",{}),o(_);var j=l(_,2),h=t(j),G=t(h);m(G,r,"link",{}),o(h);var H=l(h,2);m(H,r,"footer",{}),o(j),o(f);var I=l(f,2);return X(I,{get isvisible(){return d()},dialoglabel:"modal"}),o(i),V(i,e=>v=e,()=>v),E(()=>{Q(i,1,R(["mc-modal",d()&&"is-open"]),"svelte-1tduk3b"),U(i,"aria-hidden",!d()),O(S,b())}),y(z,i),P(D)}J(["click"]);customElements.define("m-modal",K(oe,{open:{},title:{},description:{},closable:{}},["icon","default","link","footer"],[],!0));
19
16
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../src/components/modal/Modal.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-modal' }} />\n\n<script lang=\"ts\">\n import Cross24 from '@mozaic-ds/icons-svelte/svelte/Cross24/Cross24.svelte';\n import MOverlay from '../overlay/Overlay.svelte';\n\n interface Props {\n open?: boolean;\n title?: string;\n description?: string;\n closable?: boolean;\n icon?: any;\n footer?: any;\n link?: any;\n [key: string]: any;\n }\n\n let {\n open = false,\n title = '',\n description = '',\n closable = true,\n icon = undefined,\n footer = undefined,\n link = undefined,\n }: Props = $props();\n\n function onClose() {\n open = false;\n // Manually emit event from the custom element\n const event = new CustomEvent('update:open', {\n detail: open,\n bubbles: true,\n composed: true,\n });\n // @ts-ignore: `this` is the custom element instance\n this.dispatchEvent(event);\n }\n // afterUpdate(() => {\n // dispatch('update:open', open);\n // });\n</script>\n\n<section\n class=\"mc-modal\"\n class:is-open={open}\n tabindex=\"-1\"\n aria-labelledby=\"modalTitle\"\n aria-hidden={!open}\n>\n <div class=\"mc-modal__dialog\" role=\"document\">\n <header class=\"mc-modal__header\">\n {#if icon}\n <span class=\"mc-modal__icon\">\n <slot name=\"icon\" />\n </span>\n {/if}\n <h2 class=\"mc-modal__title\" id=\"modalTitle\">{title}</h2>\n {#if closable}\n <button\n type=\"button\"\n class=\"mc-modal__close mc-button mc-button--icon-button mc-button--ghost\"\n aria-label=\"Close\"\n onclick={onClose}\n >\n <span class=\"mc-modal__icon\">\n <Cross24 aria-hidden=\"true\" />\n </span>\n </button>\n {/if}\n </header>\n\n <main class=\"mc-modal__body\">\n {#if description}\n <p>{description}</p>\n {/if}\n <slot />\n </main>\n\n {#if footer}\n <footer class=\"mc-modal__footer\">\n {#if link}\n <span class=\"mc-modal__link\">\n <slot name=\"link\" />\n </span>\n {/if}\n <slot name=\"footer\" />\n </footer>\n {/if}\n </div>\n\n <MOverlay isvisible={open} dialoglabel=\"modal\" />\n</section>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/modal';\n @use '@mozaic-ds/styles/components/button';\n</style>\n"],"names":["onClose","open","event","title","description","closable","icon","footer","link","$$render","consequent","consequent_1","consequent_2","consequent_3","consequent_4"],"mappings":"0VA2BW,SAAAA,GAAU,EAAAC,EAAA,CACjBA,EAAO,EAAK,EAEN,MAAAC,EAAY,IAAA,YAAY,eAC5B,OAAQD,EAAI,EACZ,QAAS,GACT,SAAU,EAAI,CAAA,EAGhB,KAAK,cAAcC,CAAK,CAC1B;;;;;;;;;;;;;;;;;08CArCF,iBAkBI,IAAAD,eAAO,EAAK,EACZE,gBAAQ,EAAE,EACVC,sBAAc,EAAE,EAChBC,mBAAW,EAAI,EACfC,eAAO,MAAS,EAChBC,iBAAS,MAAS,EAClBC,eAAO,MAAS,+GA4BTF,EAAI,GAAAG,EAAAC,CAAA,8EAWIV,GAAOC,CAAA,0EALfI,EAAQ,GAAAI,EAAAE,CAAA,4EAgBPP,EAAW,CAAA,CAAA,kBADZA,EAAW,GAAAK,EAAAG,CAAA,uJAQTJ,EAAI,GAAAC,EAAAI,CAAA,yDAFRN,EAAM,GAAAE,EAAAK,CAAA,yDAYQb,EAAI,mGA3CXA,EAAI,CAAA,MAS+BE,GAAK,oBAZvCF,EAAI,GAAA,+CA3BV,GAAK,+CACJ,GAAE,2DACI,GAAE,qDACL,GAAI,6CACR,OAAS,iDACP,OAAS,6CACX,OAAS,YAiBpB"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../src/components/modal/Modal.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-modal' }} />\n\n<script lang=\"ts\">\n import Cross24 from '@mozaic-ds/icons-svelte/svelte/Cross24/Cross24.svelte';\n import MOverlay from '../overlay/Overlay.svelte';\n /**\n * A modal is a dialog window that appears on top of the main content, requiring user interaction before returning to the main interface. It is used to focus attention on a specific task, provide important information, or request confirmation for an action. Modals typically include a title, description, and primary/secondary actions and should be used for single, focused tasks to avoid disrupting the user experience.\n *\n * @slot icon - Use this slot to insert an icon next to the title of the modal.\n * @slot default - Use this slot to insert the content of the modal.\n * @slot link - Use this slot to insert a link in the footer.\n * @slot footer - Use this slot to insert buttons in the footer.\n * @event update:open {CustomEvent<boolean>} - Fired when the open state changes.\n */\n interface Props {\n /**\n * if `true`, display the modal.\n */\n open?: boolean;\n /**\n * Title of the modal.\n */\n title: string;\n /**\n * Description of the modal.\n */\n description?: string;\n /**\n * if `true`, display the close button.\n */\n closable?: boolean;\n }\n\n let { open, title, description, closable = true }: Props = $props();\n let element: HTMLElement;\n\n function onClose() {\n open = false;\n\n const event = new CustomEvent('update:open', {\n detail: open,\n bubbles: true,\n composed: true,\n });\n element.dispatchEvent(event);\n }\n</script>\n\n<section\n class={['mc-modal', open && 'is-open']}\n tabindex=\"-1\"\n aria-labelledby=\"modalTitle\"\n aria-hidden={!open}\n bind:this={element}\n>\n <div class=\"mc-modal__dialog\" role=\"document\">\n <header class=\"mc-modal__header\">\n <span class=\"mc-modal__icon\">\n <slot name=\"icon\" />\n </span>\n <h2 class=\"mc-modal__title\" id=\"modalTitle\">{title}</h2>\n {#if closable}\n <button\n type=\"button\"\n class=\"mc-modal__close mc-button mc-button--icon-button mc-button--ghost\"\n aria-label=\"Close\"\n onclick={onClose}\n >\n <Cross24 class=\"mc-modal__close\" aria-hidden=\"true\" />\n </button>\n {/if}\n </header>\n\n <main class=\"mc-modal__body\">\n {#if description}\n <p>{description}</p>\n {/if}\n <slot />\n </main>\n\n <footer class=\"mc-modal__footer\">\n <span class=\"mc-modal__link\">\n <slot name=\"link\" />\n </span>\n <slot name=\"footer\" />\n </footer>\n </div>\n\n <MOverlay isvisible={open} dialoglabel=\"modal\" />\n</section>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/modal';\n @use '@mozaic-ds/styles/components/button';\n\n .mc-modal__icon:empty {\n display: none;\n }\n</style>\n"],"names":["open","$.prop","$$props","title","description","closable","element","onClose","event","$$render","consequent","consequent_1","$.bind_this","section","$$value"],"mappings":";;;;;;;;;;;;;;izEAAA,qBAiCQA,EAAIC,EAAAC,EAAA,OAAA,CAAA,EAAEC,EAAKF,EAAAC,EAAA,QAAA,CAAA,EAAEE,EAAWH,EAAAC,EAAA,cAAA,CAAA,EAAEG,mBAAW,EAAI,EAC3CC,EAEK,SAAAC,GAAU,CACjBP,EAAO,EAAK,EAEN,MAAAQ,EAAK,IAAO,YAAY,eAC5B,OAAQR,EAAI,EACZ,QAAS,GACT,SAAU,EAAI,CAAA,EAEhBM,EAAQ,cAAcE,CAAK,CAC7B,yMAZ2C,GAAI,6IAiC9BD,sFALRF,EAAQ,GAAAI,EAAAC,CAAA,2EAcPN,EAAW,CAAA,CAAA,kBADZA,EAAW,GAAAK,EAAAE,CAAA,qLAcCX,EAAI,8BAnCdY,EAAAC,EAAAC,GAAAR,QAAAA,CAAO,kBAJV,WAAYN,KAAQ,SAAS,CAAA,EAAA,gBAAA,qBAGvBA,EAAI,CAAA,MAQ+BG,GAAK,eAdxD"}
@@ -0,0 +1,50 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { render, fireEvent } from '@testing-library/svelte';
3
+ import Modal from './Modal.svelte';
4
+ describe('m-modal component', () => {
5
+ const title = 'Test Modal';
6
+ const description = 'Modal description';
7
+ it('renders the title and description', () => {
8
+ const { getByText } = render(Modal, {
9
+ props: {
10
+ open: true,
11
+ title,
12
+ description,
13
+ },
14
+ });
15
+ expect(getByText(title)).toBeTruthy();
16
+ expect(getByText(description)).toBeTruthy();
17
+ });
18
+ it('applies is-open class when open is true', () => {
19
+ const { container } = render(Modal, {
20
+ props: { open: true, title },
21
+ });
22
+ expect(container.querySelector('.mc-modal')).toHaveClass('is-open');
23
+ });
24
+ it('does not show close button if closable is false', () => {
25
+ const { queryByRole } = render(Modal, {
26
+ props: { open: true, title, closable: false },
27
+ });
28
+ expect(queryByRole('button', { name: 'Close' })).toBeNull();
29
+ });
30
+ it('emits update:open event with false when close button is clicked', async () => {
31
+ const { container } = render(Modal, {
32
+ props: { open: true, title },
33
+ });
34
+ const closeButton = container.querySelector('button[aria-label="Close"]');
35
+ const handler = vi.fn();
36
+ container.addEventListener('update:open', handler);
37
+ await fireEvent.click(closeButton);
38
+ expect(handler).toHaveBeenCalledTimes(1);
39
+ expect(handler.mock.calls[0][0].detail).toBe(false);
40
+ });
41
+ it('sets aria-hidden to false when open and true when closed', async () => {
42
+ const { container, rerender } = render(Modal, {
43
+ props: { open: false, title },
44
+ });
45
+ const modal = container.querySelector('.mc-modal');
46
+ expect(modal.getAttribute('aria-hidden')).toBe('true');
47
+ await rerender({ open: true, title });
48
+ expect(modal.getAttribute('aria-hidden')).toBe('false');
49
+ });
50
+ });