@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
@@ -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,4 +1,4 @@
1
- import{n as Q,c as R,p as U,a as V,b as l,f as m,s as i,d as r,t as M,e as W,g as S,h as c,i as X,j as s,r as a}from"../../custom-element.js";import{i as b}from"../../if.js";import{s as f}from"../../slot.js";import{s as Z}from"../../attributes.js";import{C as $}from"../../Cross24.js";import{O as ee}from"../overlay/Overlay.js";import"../../legacy.js";function te(g,o){o(!1);const n=new CustomEvent("update:open",{detail:o(),bubbles:!0,composed:!0});this.dispatchEvent(n)}var oe=m('<span class="mc-modal__icon svelte-1tduk3b"><!></span>'),re=m('<button type="button" class="mc-modal__close mc-button mc-button--icon-button mc-button--ghost svelte-1tduk3b" aria-label="Close"><span class="mc-modal__icon svelte-1tduk3b"><!></span></button>'),ae=m('<p class="svelte-1tduk3b"> </p>'),de=m('<span class="mc-modal__link svelte-1tduk3b"><!></span>'),ne=m('<footer class="mc-modal__footer svelte-1tduk3b"><!> <!></footer>'),le=m('<section tabindex="-1" aria-labelledby="modalTitle"><div class="mc-modal__dialog svelte-1tduk3b" role="document"><header class="mc-modal__header svelte-1tduk3b"><!> <h2 class="mc-modal__title svelte-1tduk3b" id="modalTitle"> </h2> <!></header> <main class="mc-modal__body svelte-1tduk3b"><!> <!></main> <!></div> <!></section>');const ie={hash:"svelte-1tduk3b",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
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
4
  @media (width >= 680px) {.mc-modal.svelte-1tduk3b {align-items:center;}
@@ -12,5 +12,5 @@ import{n as Q,c as R,p as U,a as V,b as l,f as m,s as i,d as r,t as M,e as W,g a
12
12
  @media (width >= 680px) {.mc-modal__footer.svelte-1tduk3b {flex-direction:row;padding:0.5rem 1.5rem 1.5rem 1.5rem;}
13
13
  }.mc-modal__link.svelte-1tduk3b {order:1;}
14
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;}`};function se(g,o){U(o,!0),V(g,ie);let n=l(o,"open",7,!1),_=l(o,"title",7,""),v=l(o,"description",7,""),k=l(o,"closable",7,!0),p=l(o,"icon",7,void 0),h=l(o,"footer",7,void 0),x=l(o,"link",7,void 0);var q={get open(){return n()},set open(e=!1){n(e),s()},get title(){return _()},set title(e=""){_(e),s()},get description(){return v()},set description(e=""){v(e),s()},get closable(){return k()},set closable(e=!0){k(e),s()},get icon(){return p()},set icon(e=void 0){p(e),s()},get footer(){return h()},set footer(e=void 0){h(e),s()},get link(){return x()},set link(e=void 0){x(e),s()}},u=le();let T;var y=r(u),w=r(y),Y=r(w);{var A=e=>{var t=oe(),d=r(t);f(d,o,"icon",{}),a(t),c(e,t)};b(Y,e=>{p()&&e(A)})}var z=i(Y,2),B=r(z,!0);a(z);var F=i(z,2);{var G=e=>{var t=re();t.__click=[te,n];var d=r(t),j=r(d);$(j,{"aria-hidden":"true"}),a(d),a(t),c(e,t)};b(F,e=>{k()&&e(G)})}a(w);var C=i(w,2),D=r(C);{var H=e=>{var t=ae(),d=r(t,!0);a(t),M(()=>S(d,v())),c(e,t)};b(D,e=>{v()&&e(H)})}var I=i(D,2);f(I,o,"default",{}),a(C);var J=i(C,2);{var K=e=>{var t=ne(),d=r(t);{var j=E=>{var O=de(),P=r(O);f(P,o,"link",{}),a(O),c(E,O)};b(d,E=>{x()&&E(j)})}var N=i(d,2);f(N,o,"footer",{}),a(t),c(e,t)};b(J,e=>{h()&&e(K)})}a(y);var L=i(y,2);return ee(L,{get isvisible(){return n()},dialoglabel:"modal"}),a(u),M(e=>{T=W(u,1,"mc-modal svelte-1tduk3b",null,T,e),Z(u,"aria-hidden",!n()),S(B,_())},[()=>({"is-open":n()})]),c(g,u),X(q)}Q(["click"]);customElements.define("m-modal",R(se,{open:{},title:{},description:{},closable:{},icon:{},footer:{},link:{}},["icon","default","link","footer"],[],!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));
16
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":"gWA2BW,SAAAA,GAAOC,EAAAC,EAAG,CACjBA,EAAO,EAAK,EAEN,MAAAC,EAAK,IAAO,YAAY,eAC5B,OAAQD,EAAI,EACZ,QAAS,GACT,SAAU,EAAI,CAAA,EAGhB,KAAK,cAAcC,CAAK,CAC1B;;;;;;;;;;;;;;6vEArCF,iBAkBI,IAAAD,eAAO,EAAK,EACZE,gBAAQ,EAAE,EACVC,sBAAc,EAAE,EAChBC,mBAAW,EAAI,EACfC,eAAO,MAAS,EAChBC,iBAAS,MAAS,EAClBC,eAAO,MAAS,2CANT,GAAK,+CACJ,GAAE,2DACI,GAAE,qDACL,GAAI,6CACR,OAAS,iDACP,OAAS,6CACX,OAAS,qHA4BTF,EAAI,GAAAG,EAAAC,CAAA,8EAWIX,GAAOE,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,0DAYQb,EAAI,mGA3CXA,EAAI,CAAA,MAS+BE,GAAK,oBAZvCF,EAAI,GAAA,cAJrB"}
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
+ });
@@ -1,12 +1,39 @@
1
- import type { Meta, StoryObj } from '@storybook/html-vite';
2
- declare const _default: Meta;
3
- export default _default;
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import '@mozaic-ds/icons-svelte/custom-elements/InfoCircle32/InfoCircle32.js';
3
+ import '@mozaic-ds/icons-svelte/custom-elements/ExternalLink24/ExternalLink24.js';
4
+ declare const meta: Meta;
5
+ export default meta;
4
6
  type Story = StoryObj;
5
7
  export declare const Default: Story;
6
- export declare const Icon: Story;
7
- export declare const ValidationOnly: Story;
8
- export declare const TwoOptions: Story;
9
- export declare const Cancel: Story;
10
- export declare const Link: Story;
11
- export declare const Danger: Story;
8
+ export declare const Icon: {
9
+ args: {
10
+ icon: string;
11
+ };
12
+ };
13
+ export declare const ValidationOnly: {
14
+ args: {
15
+ footer: string;
16
+ };
17
+ };
18
+ export declare const TwoOptions: {
19
+ args: {
20
+ footer: string;
21
+ };
22
+ };
23
+ export declare const Cancel: {
24
+ args: {
25
+ footer: string;
26
+ };
27
+ };
28
+ export declare const Link: {
29
+ args: {
30
+ link: string;
31
+ footer: string;
32
+ };
33
+ };
34
+ export declare const Danger: {
35
+ args: {
36
+ footer: string;
37
+ };
38
+ };
12
39
  //# sourceMappingURL=Modal.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.stories.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;wBA6BtD,IAAI;AAzBT,wBAyBU;AAEV,KAAK,KAAK,GAAG,QAAQ,CAAC;AAiEtB,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAO5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KASpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAalB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAQpB,CAAC"}
1
+ {"version":3,"file":"Modal.stories.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,sEAAsE,CAAC;AAC9E,OAAO,0EAA0E,CAAC;AAElF,QAAA,MAAM,IAAI,EAAE,IAkDX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,IAAI;;;;CAIhB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAM1B,CAAC;AAEF,eAAO,MAAM,UAAU;;;;CAOtB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;CAQlB,CAAC;AAEF,eAAO,MAAM,IAAI;;;;;CAahB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;CAOlB,CAAC"}
@@ -1,138 +1,109 @@
1
+ import { html } from 'lit';
2
+ import { ifDefined } from 'lit-html/directives/if-defined.js';
3
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
1
4
  import { action } from 'storybook/actions';
2
- import HelpCircle32 from '@mozaic-ds/icons-svelte/custom-elements/HelpCircle32/HelpCircle32.js';
3
- export default {
5
+ import '@mozaic-ds/icons-svelte/custom-elements/InfoCircle32/InfoCircle32.js';
6
+ import '@mozaic-ds/icons-svelte/custom-elements/ExternalLink24/ExternalLink24.js';
7
+ const meta = {
4
8
  title: 'Overlay/Modal',
5
- tags: ['autodocs', 'beta'],
9
+ component: 'm-modal',
6
10
  parameters: {
7
11
  layout: 'fullscreen',
8
12
  docs: {
9
13
  story: { height: '400px' },
10
- description: {
11
- component: '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.',
12
- },
13
14
  },
14
15
  },
15
16
  args: {
16
17
  open: true,
17
18
  title: 'Modal title',
18
- description: 'A short description',
19
+ description: `A modal is a dialog window allowing you to focus the user's attention on a specific task, a piece of information or a mandatory action. It must be used for single action only and must have a call to action button in the bottom.`,
19
20
  footer: `
20
- <m-button ghost="true">Cancel</m-button>
21
- <m-button>Primary action</m-button>
21
+ <m-button ghost="true" slot="footer">Cancel</m-button>
22
+ <m-button slot="footer">Primary action</m-button>
22
23
  `,
23
24
  },
24
25
  argTypes: {
25
- $slots: { table: { disable: true } },
26
+ 'update:open': {
27
+ control: false,
28
+ },
29
+ '--modal-z-index': {
30
+ description: 'Customise the z-index of the modal',
31
+ control: false,
32
+ table: {
33
+ category: 'Custom Properties',
34
+ type: { summary: 'number' },
35
+ defaultValue: { summary: '3' },
36
+ },
37
+ },
38
+ },
39
+ render: (args) => {
40
+ const handleUpdateOpen = action('update:open');
41
+ return html `
42
+ <m-modal
43
+ open=${ifDefined(args.open)}
44
+ title=${ifDefined(args.title)}
45
+ description=${ifDefined(args.description)}
46
+ closable=${ifDefined(args.closable)}
47
+ @update:open=${handleUpdateOpen}
48
+ >
49
+ ${unsafeHTML(ifDefined(args.icon))}
50
+ ${unsafeHTML(ifDefined(args.default))}
51
+ ${unsafeHTML(ifDefined(args.link))}
52
+ ${unsafeHTML(ifDefined(args.footer))}
53
+ </m-modal>
54
+ `;
26
55
  },
27
56
  };
28
- const createModalTemplate = (args) => {
29
- const wrapper = document.createElement('div');
30
- const button = document.createElement('m-button');
31
- button.textContent = 'Open Modal';
32
- const modal = document.createElement('m-modal');
33
- modal.setAttribute('title', args.title);
34
- modal.setAttribute('description', args.description);
35
- modal.setAttribute('open', 'true');
36
- modal.addEventListener('update:open', (e) => {
37
- if (!e.detail)
38
- modal.removeAttribute('open');
39
- action('update:open')(e.detail);
40
- });
41
- // Inject default slot content
42
- const contentSlot = document.createElement('div');
43
- contentSlot.innerHTML =
44
- args.default ??
45
- '<p>A modal is a dialog window allowing you to focus the users attention on a specific task, a piece of information or a mandatory action. It must be used for single action only and must have a call to action button in the bottom.</p>';
46
- modal.appendChild(contentSlot);
47
- // Inject icon
48
- if (args.icon) {
49
- const iconSlot = document.createElement('div');
50
- iconSlot.slot = 'icon';
51
- iconSlot.innerHTML = args.icon;
52
- modal.appendChild(iconSlot);
53
- }
54
- // Inject footer
55
- if (args.footer) {
56
- modal.setAttribute('footer', 'true');
57
- const footerSlot = document.createElement('div');
58
- footerSlot.setAttribute('slot', 'footer');
59
- footerSlot.innerHTML = args.footer;
60
- modal.appendChild(footerSlot);
61
- }
62
- // Inject link
63
- if (args.link) {
64
- const linkSlot = document.createElement('div');
65
- modal.setAttribute('link', 'true');
66
- linkSlot.setAttribute('slot', 'link');
67
- linkSlot.innerHTML = args.link;
68
- modal.appendChild(linkSlot);
69
- }
70
- // Inject icon
71
- if (args.icon) {
72
- modal.setAttribute('icon', 'true');
73
- }
74
- // Open modal on button click
75
- button.onclick = () => modal.setAttribute('open', 'true');
76
- wrapper.appendChild(button);
77
- wrapper.appendChild(modal);
78
- return wrapper;
79
- };
80
- export const Default = {
81
- render: (args) => createModalTemplate(args),
82
- };
57
+ export default meta;
58
+ export const Default = {};
83
59
  export const Icon = {
84
60
  args: {
85
- icon: '<help-circle-32 />',
61
+ icon: '<info-circle-32 slot="icon"/>',
86
62
  },
87
- render: (args) => createModalTemplate(args),
88
63
  };
89
64
  export const ValidationOnly = {
90
65
  args: {
91
66
  footer: `
92
- <m-button>Primary action</m-button>
67
+ <m-button slot="footer">Primary action</m-button>
93
68
  `,
94
69
  },
95
- render: (args) => createModalTemplate(args),
96
70
  };
97
71
  export const TwoOptions = {
98
72
  args: {
99
73
  footer: `
100
- <m-button outlined="true">Secondary action</m-button>
101
- <m-button>Primary action</m-button>
74
+ <m-button outlined="true" slot="footer">Secondary action</m-button>
75
+ <m-button slot="footer">Primary action</m-button>
102
76
  `,
103
77
  },
104
- render: (args) => createModalTemplate(args),
105
78
  };
106
79
  export const Cancel = {
107
80
  args: {
108
81
  footer: `
109
- <m-button ghost="true">Cancel</m-button>
110
- <m-button outlined="true">Secondary action</m-button>
111
- <m-button>Primary action</m-button>
82
+ <m-button ghost="true" slot="footer">Cancel</m-button>
83
+ <m-button outlined="true" slot="footer">Secondary action</m-button>
84
+ <m-button slot="footer">Primary action</m-button>
112
85
  `,
113
86
  },
114
- render: (args) => createModalTemplate(args),
115
87
  };
116
88
  export const Link = {
117
89
  args: {
118
90
  link: `
119
- <m-link href="#" size="m">
91
+ <m-link href="#" size="m" iconPosition="right" slot="link">
120
92
  Learn more
93
+ <external-link-24 slot="icon"></external-link-24>
121
94
  </m-link>
122
95
  `,
123
96
  footer: `
124
- <m-button ghost="true">Cancel</m-button>
125
- <m-button>Primary action</m-button>
97
+ <m-button ghost="true" slot="footer">Cancel</m-button>
98
+ <m-button slot="footer">Primary action</m-button>
126
99
  `,
127
100
  },
128
- render: (args) => createModalTemplate(args),
129
101
  };
130
102
  export const Danger = {
131
103
  args: {
132
104
  footer: `
133
- <m-button ghost="true">Cancel</m-button>
134
- <m-button appearance="danger">Primary action</m-button>
105
+ <m-button ghost="true" slot="footer">Cancel</m-button>
106
+ <m-button appearance="danger" slot="footer">Primary action</m-button>
135
107
  `,
136
108
  },
137
- render: (args) => createModalTemplate(args),
138
109
  };
@@ -3,58 +3,61 @@
3
3
  <script lang="ts">
4
4
  import Cross24 from '@mozaic-ds/icons-svelte/svelte/Cross24/Cross24.svelte';
5
5
  import MOverlay from '../overlay/Overlay.svelte';
6
-
6
+ /**
7
+ * 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.
8
+ *
9
+ * @slot icon - Use this slot to insert an icon next to the title of the modal.
10
+ * @slot default - Use this slot to insert the content of the modal.
11
+ * @slot link - Use this slot to insert a link in the footer.
12
+ * @slot footer - Use this slot to insert buttons in the footer.
13
+ * @event update:open {CustomEvent<boolean>} - Fired when the open state changes.
14
+ */
7
15
  interface Props {
16
+ /**
17
+ * if `true`, display the modal.
18
+ */
8
19
  open?: boolean;
9
- title?: string;
20
+ /**
21
+ * Title of the modal.
22
+ */
23
+ title: string;
24
+ /**
25
+ * Description of the modal.
26
+ */
10
27
  description?: string;
28
+ /**
29
+ * if `true`, display the close button.
30
+ */
11
31
  closable?: boolean;
12
- icon?: any;
13
- footer?: any;
14
- link?: any;
15
- [key: string]: any;
16
32
  }
17
33
 
18
- let {
19
- open = false,
20
- title = '',
21
- description = '',
22
- closable = true,
23
- icon = undefined,
24
- footer = undefined,
25
- link = undefined,
26
- }: Props = $props();
34
+ let { open, title, description, closable = true }: Props = $props();
35
+ let element: HTMLElement;
27
36
 
28
37
  function onClose() {
29
38
  open = false;
30
- // Manually emit event from the custom element
39
+
31
40
  const event = new CustomEvent('update:open', {
32
41
  detail: open,
33
42
  bubbles: true,
34
43
  composed: true,
35
44
  });
36
- // @ts-ignore: `this` is the custom element instance
37
- this.dispatchEvent(event);
45
+ element.dispatchEvent(event);
38
46
  }
39
- // afterUpdate(() => {
40
- // dispatch('update:open', open);
41
- // });
42
47
  </script>
43
48
 
44
49
  <section
45
- class="mc-modal"
46
- class:is-open={open}
50
+ class={['mc-modal', open && 'is-open']}
47
51
  tabindex="-1"
48
52
  aria-labelledby="modalTitle"
49
53
  aria-hidden={!open}
54
+ bind:this={element}
50
55
  >
51
56
  <div class="mc-modal__dialog" role="document">
52
57
  <header class="mc-modal__header">
53
- {#if icon}
54
- <span class="mc-modal__icon">
55
- <slot name="icon" />
56
- </span>
57
- {/if}
58
+ <span class="mc-modal__icon">
59
+ <slot name="icon" />
60
+ </span>
58
61
  <h2 class="mc-modal__title" id="modalTitle">{title}</h2>
59
62
  {#if closable}
60
63
  <button
@@ -63,9 +66,7 @@
63
66
  aria-label="Close"
64
67
  onclick={onClose}
65
68
  >
66
- <span class="mc-modal__icon">
67
- <Cross24 aria-hidden="true" />
68
- </span>
69
+ <Cross24 class="mc-modal__close" aria-hidden="true" />
69
70
  </button>
70
71
  {/if}
71
72
  </header>
@@ -77,16 +78,12 @@
77
78
  <slot />
78
79
  </main>
79
80
 
80
- {#if footer}
81
- <footer class="mc-modal__footer">
82
- {#if link}
83
- <span class="mc-modal__link">
84
- <slot name="link" />
85
- </span>
86
- {/if}
87
- <slot name="footer" />
88
- </footer>
89
- {/if}
81
+ <footer class="mc-modal__footer">
82
+ <span class="mc-modal__link">
83
+ <slot name="link" />
84
+ </span>
85
+ <slot name="footer" />
86
+ </footer>
90
87
  </div>
91
88
 
92
89
  <MOverlay isvisible={open} dialoglabel="modal" />
@@ -547,4 +544,8 @@
547
544
  border-color: transparent;
548
545
  color: var(--button-state-disabled-color, #737373);
549
546
  cursor: not-allowed;
547
+ }
548
+
549
+ .mc-modal__icon:empty {
550
+ display: none;
550
551
  }</style>
@@ -1,12 +1,29 @@
1
+ /**
2
+ * 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.
3
+ *
4
+ * @slot icon - Use this slot to insert an icon next to the title of the modal.
5
+ * @slot default - Use this slot to insert the content of the modal.
6
+ * @slot link - Use this slot to insert a link in the footer.
7
+ * @slot footer - Use this slot to insert buttons in the footer.
8
+ * @event update:open {CustomEvent<boolean>} - Fired when the open state changes.
9
+ */
1
10
  interface Props {
11
+ /**
12
+ * if `true`, display the modal.
13
+ */
2
14
  open?: boolean;
3
- title?: string;
15
+ /**
16
+ * Title of the modal.
17
+ */
18
+ title: string;
19
+ /**
20
+ * Description of the modal.
21
+ */
4
22
  description?: string;
23
+ /**
24
+ * if `true`, display the close button.
25
+ */
5
26
  closable?: boolean;
6
- icon?: any;
7
- footer?: any;
8
- link?: any;
9
- [key: string]: any;
10
27
  }
11
28
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
12
29
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.svelte.ts"],"names":[],"mappings":"AAOE,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AA8EH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AACD,KAAK,gCAAgC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,GACvD,CAAC,KAAK,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GACzB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,GAAG,GACH;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAClB,EAAE,CAAC,CAAC;AAId,QAAA,MAAM,KAAK;;;;;;;;;;;;UAAqF,CAAC;AAC/E,KAAK,KAAK,GAAG,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.svelte.ts"],"names":[],"mappings":"AAME;;;;;;;;GAQG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2DH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AACD,KAAK,gCAAgC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,GACvD,CAAC,KAAK,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GACzB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,GAAG,GACH;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAClB,EAAE,CAAC,CAAC;AAId,QAAA,MAAM,KAAK;;;;;;;;;;;;UAAqF,CAAC;AAC/E,KAAK,KAAK,GAAG,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,eAAe,KAAK,CAAC"}