@mozaic-ds/web-components 1.1.0 → 1.3.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 (406) hide show
  1. package/README.md +26 -104
  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/Less24.js +2 -0
  7. package/dist/Less24.js.map +1 -0
  8. package/dist/attributes.js +1 -1
  9. package/dist/attributes.js.map +1 -1
  10. package/dist/bundle.d.ts +8 -5
  11. package/dist/bundle.d.ts.map +1 -1
  12. package/dist/bundle.js +8 -5
  13. package/dist/components/avatar/Avatar.js +2 -2
  14. package/dist/components/avatar/Avatar.js.map +1 -1
  15. package/dist/components/avatar/Avatar.stories.d.ts +2 -1
  16. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  17. package/dist/components/avatar/Avatar.stories.js +2 -1
  18. package/dist/components/avatar/Avatar.svelte +3 -3
  19. package/dist/components/breadcrumb/Breadcrumb.js +2 -2
  20. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  21. package/dist/components/breadcrumb/Breadcrumb.stories.d.ts +1 -0
  22. package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  23. package/dist/components/breadcrumb/Breadcrumb.stories.js +1 -0
  24. package/dist/components/breadcrumb/Breadcrumb.svelte +3 -3
  25. package/dist/components/button/Button.js +3 -3
  26. package/dist/components/button/Button.js.map +1 -1
  27. package/dist/components/button/Button.stories.d.ts +2 -0
  28. package/dist/components/button/Button.stories.d.ts.map +1 -1
  29. package/dist/components/button/Button.stories.js +2 -0
  30. package/dist/components/button/Button.svelte +2 -3
  31. package/dist/components/button/Button.svelte.d.ts +0 -1
  32. package/dist/components/button/Button.svelte.d.ts.map +1 -1
  33. package/dist/components/callout/Callout.js +2 -2
  34. package/dist/components/callout/Callout.js.map +1 -1
  35. package/dist/components/callout/Callout.stories.d.ts +5 -2
  36. package/dist/components/callout/Callout.stories.d.ts.map +1 -1
  37. package/dist/components/callout/Callout.stories.js +5 -2
  38. package/dist/components/callout/Callout.svelte +3 -3
  39. package/dist/components/carousel/Carousel.js +4 -0
  40. package/dist/components/carousel/Carousel.js.map +1 -0
  41. package/dist/components/carousel/Carousel.spec.js +49 -0
  42. package/dist/components/carousel/Carousel.stories.d.ts +9 -0
  43. package/dist/components/carousel/Carousel.stories.d.ts.map +1 -0
  44. package/dist/components/carousel/Carousel.stories.js +72 -0
  45. package/dist/components/carousel/Carousel.svelte +187 -0
  46. package/dist/components/carousel/Carousel.svelte.d.ts +46 -0
  47. package/dist/components/carousel/Carousel.svelte.d.ts.map +1 -0
  48. package/dist/components/carousel/README.md +18 -0
  49. package/dist/components/checkbox/Checkbox.js +4 -4
  50. package/dist/components/checkbox/Checkbox.js.map +1 -1
  51. package/dist/components/checkbox/Checkbox.stories.d.ts +1 -0
  52. package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
  53. package/dist/components/checkbox/Checkbox.stories.js +1 -0
  54. package/dist/components/checkbox/Checkbox.svelte +4 -2
  55. package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
  56. package/dist/components/checkboxgroup/CheckboxGroup.js +4 -4
  57. package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
  58. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +1 -0
  59. package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
  60. package/dist/components/checkboxgroup/CheckboxGroup.stories.js +1 -0
  61. package/dist/components/checkboxgroup/CheckboxGroup.svelte +4 -4
  62. package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
  63. package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
  64. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +1 -0
  65. package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
  66. package/dist/components/circularprogressbar/CircularProgressbar.stories.js +3 -2
  67. package/dist/components/circularprogressbar/CircularProgressbar.svelte +9 -1
  68. package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts.map +1 -1
  69. package/dist/components/container/Container.js +14 -0
  70. package/dist/components/container/Container.js.map +1 -0
  71. package/dist/components/container/Container.spec.js +26 -0
  72. package/dist/components/container/Container.stories.d.ts +8 -0
  73. package/dist/components/container/Container.stories.d.ts.map +1 -0
  74. package/dist/components/container/Container.stories.js +24 -0
  75. package/dist/components/container/Container.svelte +60 -0
  76. package/dist/components/container/Container.svelte.d.ts +39 -0
  77. package/dist/components/container/Container.svelte.d.ts.map +1 -0
  78. package/dist/components/container/README.md +16 -0
  79. package/dist/components/datepicker/Datepicker.js +3 -3
  80. package/dist/components/datepicker/Datepicker.js.map +1 -1
  81. package/dist/components/datepicker/Datepicker.stories.d.ts +1 -0
  82. package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
  83. package/dist/components/datepicker/Datepicker.stories.js +1 -0
  84. package/dist/components/datepicker/Datepicker.svelte +11 -9
  85. package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
  86. package/dist/components/divider/Divider.js +4 -0
  87. package/dist/components/divider/Divider.js.map +1 -0
  88. package/dist/components/divider/Divider.spec.js +50 -0
  89. package/dist/components/divider/Divider.stories.d.ts +10 -0
  90. package/dist/components/divider/Divider.stories.d.ts.map +1 -0
  91. package/dist/components/divider/Divider.stories.js +58 -0
  92. package/dist/components/divider/Divider.svelte +90 -0
  93. package/dist/components/divider/Divider.svelte.d.ts +47 -0
  94. package/dist/components/divider/Divider.svelte.d.ts.map +1 -0
  95. package/dist/components/divider/README.md +18 -0
  96. package/dist/components/drawer/Drawer.js +4 -4
  97. package/dist/components/drawer/Drawer.js.map +1 -1
  98. package/dist/components/drawer/Drawer.stories.d.ts +2 -0
  99. package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
  100. package/dist/components/drawer/Drawer.stories.js +2 -0
  101. package/dist/components/drawer/Drawer.svelte +16 -6
  102. package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
  103. package/dist/components/field/Field.js +2 -2
  104. package/dist/components/field/Field.stories.d.ts +2 -0
  105. package/dist/components/field/Field.stories.d.ts.map +1 -1
  106. package/dist/components/field/Field.stories.js +2 -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.stories.d.ts +1 -0
  110. package/dist/components/flag/Flag.stories.d.ts.map +1 -1
  111. package/dist/components/flag/Flag.stories.js +1 -0
  112. package/dist/components/flag/Flag.svelte +3 -3
  113. package/dist/components/iconbutton/IconButton.js +2 -2
  114. package/dist/components/iconbutton/IconButton.js.map +1 -1
  115. package/dist/components/iconbutton/IconButton.stories.d.ts +4 -2
  116. package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
  117. package/dist/components/iconbutton/IconButton.stories.js +4 -2
  118. package/dist/components/iconbutton/IconButton.svelte +2 -3
  119. package/dist/components/iconbutton/IconButton.svelte.d.ts +0 -1
  120. package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
  121. package/dist/components/kpiitem/KpiItem.js +5 -0
  122. package/dist/components/kpiitem/KpiItem.js.map +1 -0
  123. package/dist/components/kpiitem/KpiItem.spec.js +60 -0
  124. package/dist/components/kpiitem/KpiItem.stories.d.ts +9 -0
  125. package/dist/components/kpiitem/KpiItem.stories.d.ts.map +1 -0
  126. package/dist/components/kpiitem/KpiItem.stories.js +57 -0
  127. package/dist/components/kpiitem/KpiItem.svelte +231 -0
  128. package/dist/components/kpiitem/KpiItem.svelte.d.ts +34 -0
  129. package/dist/components/kpiitem/KpiItem.svelte.d.ts.map +1 -0
  130. package/dist/components/kpiitem/README.md +15 -0
  131. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
  132. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
  133. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +1 -0
  134. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
  135. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +1 -0
  136. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +4 -3
  137. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
  138. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
  139. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +1 -0
  140. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
  141. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +1 -0
  142. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +5 -4
  143. package/dist/components/link/Link.js +2 -2
  144. package/dist/components/link/Link.js.map +1 -1
  145. package/dist/components/link/Link.stories.d.ts +3 -0
  146. package/dist/components/link/Link.stories.d.ts.map +1 -1
  147. package/dist/components/link/Link.stories.js +3 -0
  148. package/dist/components/link/Link.svelte +3 -1
  149. package/dist/components/link/Link.svelte.d.ts.map +1 -1
  150. package/dist/components/loader/Loader.js +2 -2
  151. package/dist/components/loader/Loader.js.map +1 -1
  152. package/dist/components/loader/Loader.stories.d.ts +1 -0
  153. package/dist/components/loader/Loader.stories.d.ts.map +1 -1
  154. package/dist/components/loader/Loader.stories.js +1 -0
  155. package/dist/components/loader/Loader.svelte +2 -1
  156. package/dist/components/loadingoverlay/LoadingOverlay.js +2 -2
  157. package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -1
  158. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +1 -0
  159. package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -1
  160. package/dist/components/loadingoverlay/LoadingOverlay.stories.js +1 -0
  161. package/dist/components/loadingoverlay/LoadingOverlay.svelte +2 -2
  162. package/dist/components/modal/Modal.js +4 -4
  163. package/dist/components/modal/Modal.js.map +1 -1
  164. package/dist/components/modal/Modal.stories.d.ts +5 -2
  165. package/dist/components/modal/Modal.stories.d.ts.map +1 -1
  166. package/dist/components/modal/Modal.stories.js +5 -2
  167. package/dist/components/modal/Modal.svelte +6 -5
  168. package/dist/components/numberbadge/NumberBadge.js +2 -2
  169. package/dist/components/numberbadge/NumberBadge.js.map +1 -1
  170. package/dist/components/numberbadge/NumberBadge.stories.d.ts +1 -0
  171. package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
  172. package/dist/components/numberbadge/NumberBadge.stories.js +1 -0
  173. package/dist/components/numberbadge/NumberBadge.svelte +6 -3
  174. package/dist/components/overlay/Overlay.js +2 -2
  175. package/dist/components/overlay/Overlay.stories.d.ts +1 -0
  176. package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
  177. package/dist/components/overlay/Overlay.stories.js +1 -0
  178. package/dist/components/pagination/Pagination.js +6 -6
  179. package/dist/components/pagination/Pagination.js.map +1 -1
  180. package/dist/components/pagination/Pagination.stories.d.ts +1 -0
  181. package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
  182. package/dist/components/pagination/Pagination.stories.js +1 -0
  183. package/dist/components/pagination/Pagination.svelte +5 -5
  184. package/dist/components/passwordinput/PasswordInput.js +4 -3
  185. package/dist/components/passwordinput/PasswordInput.js.map +1 -1
  186. package/dist/components/passwordinput/PasswordInput.stories.d.ts +1 -0
  187. package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
  188. package/dist/components/passwordinput/PasswordInput.stories.js +1 -0
  189. package/dist/components/passwordinput/PasswordInput.svelte +10 -8
  190. package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
  191. package/dist/components/phonenumber/PhoneNumber.js +22 -0
  192. package/dist/components/phonenumber/PhoneNumber.js.map +1 -0
  193. package/dist/components/phonenumber/PhoneNumber.spec.js +103 -0
  194. package/dist/components/phonenumber/PhoneNumber.stories.d.ts +14 -0
  195. package/dist/components/phonenumber/PhoneNumber.stories.d.ts.map +1 -0
  196. package/dist/components/phonenumber/PhoneNumber.stories.js +116 -0
  197. package/dist/components/phonenumber/PhoneNumber.svelte +896 -0
  198. package/dist/components/phonenumber/PhoneNumber.svelte.d.ts +60 -0
  199. package/dist/components/phonenumber/PhoneNumber.svelte.d.ts.map +1 -0
  200. package/dist/components/phonenumber/README.md +27 -0
  201. package/dist/components/pincode/Pincode.js +2 -2
  202. package/dist/components/pincode/Pincode.js.map +1 -1
  203. package/dist/components/pincode/Pincode.stories.d.ts +1 -0
  204. package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
  205. package/dist/components/pincode/Pincode.stories.js +1 -0
  206. package/dist/components/pincode/Pincode.svelte +5 -5
  207. package/dist/components/quantityselector/QuantitySelector.js +3 -3
  208. package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
  209. package/dist/components/quantityselector/QuantitySelector.stories.d.ts +1 -0
  210. package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
  211. package/dist/components/quantityselector/QuantitySelector.stories.js +1 -0
  212. package/dist/components/quantityselector/QuantitySelector.svelte +11 -9
  213. package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
  214. package/dist/components/radio/Radio.js +2 -2
  215. package/dist/components/radio/Radio.js.map +1 -1
  216. package/dist/components/radio/Radio.stories.d.ts +1 -0
  217. package/dist/components/radio/Radio.stories.d.ts.map +1 -1
  218. package/dist/components/radio/Radio.stories.js +1 -0
  219. package/dist/components/radio/Radio.svelte +12 -3
  220. package/dist/components/radio/Radio.svelte.d.ts.map +1 -1
  221. package/dist/components/radiogroup/RadioGroup.js +2 -2
  222. package/dist/components/radiogroup/RadioGroup.stories.d.ts +1 -0
  223. package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
  224. package/dist/components/radiogroup/RadioGroup.stories.js +1 -0
  225. package/dist/components/radiogroup/RadioGroup.svelte +2 -2
  226. package/dist/components/segmentedcontrol/SegmentedControl.js +2 -2
  227. package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts +1 -0
  228. package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts.map +1 -1
  229. package/dist/components/segmentedcontrol/SegmentedControl.stories.js +1 -0
  230. package/dist/components/select/Select.js +3 -3
  231. package/dist/components/select/Select.js.map +1 -1
  232. package/dist/components/select/Select.stories.d.ts +1 -0
  233. package/dist/components/select/Select.stories.d.ts.map +1 -1
  234. package/dist/components/select/Select.stories.js +1 -0
  235. package/dist/components/select/Select.svelte +7 -5
  236. package/dist/components/select/Select.svelte.d.ts.map +1 -1
  237. package/dist/components/starrating/README.md +22 -0
  238. package/dist/components/starrating/StarRating.js +4 -0
  239. package/dist/components/starrating/StarRating.js.map +1 -0
  240. package/dist/components/starrating/StarRating.spec.js +108 -0
  241. package/dist/components/starrating/StarRating.stories.d.ts +13 -0
  242. package/dist/components/starrating/StarRating.stories.d.ts.map +1 -0
  243. package/dist/components/starrating/StarRating.stories.js +82 -0
  244. package/dist/components/starrating/StarRating.svelte +227 -0
  245. package/dist/components/starrating/StarRating.svelte.d.ts +46 -0
  246. package/dist/components/starrating/StarRating.svelte.d.ts.map +1 -0
  247. package/dist/components/statusbadge/StatusBadge.js +2 -2
  248. package/dist/components/statusbadge/StatusBadge.js.map +1 -1
  249. package/dist/components/statusbadge/StatusBadge.stories.d.ts +1 -0
  250. package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
  251. package/dist/components/statusbadge/StatusBadge.stories.js +1 -0
  252. package/dist/components/statusbadge/StatusBadge.svelte +11 -11
  253. package/dist/components/statusdot/StatusDot.js +2 -2
  254. package/dist/components/statusdot/StatusDot.js.map +1 -1
  255. package/dist/components/statusdot/StatusDot.stories.d.ts +1 -0
  256. package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
  257. package/dist/components/statusdot/StatusDot.stories.js +1 -0
  258. package/dist/components/statusdot/StatusDot.svelte +7 -4
  259. package/dist/components/statusmessage/README.md +11 -0
  260. package/dist/components/statusmessage/StatusMessage.js +4 -0
  261. package/dist/components/statusmessage/StatusMessage.js.map +1 -0
  262. package/dist/components/statusmessage/StatusMessage.spec.js +47 -0
  263. package/dist/components/statusmessage/StatusMessage.stories.d.ts +12 -0
  264. package/dist/components/statusmessage/StatusMessage.stories.d.ts.map +1 -0
  265. package/dist/components/statusmessage/StatusMessage.stories.js +38 -0
  266. package/dist/components/statusmessage/StatusMessage.svelte +84 -0
  267. package/dist/components/statusmessage/StatusMessage.svelte.d.ts +17 -0
  268. package/dist/components/statusmessage/StatusMessage.svelte.d.ts.map +1 -0
  269. package/dist/components/statusnotification/StatusNotification.js +2 -2
  270. package/dist/components/statusnotification/StatusNotification.js.map +1 -1
  271. package/dist/components/statusnotification/StatusNotification.stories.d.ts +4 -0
  272. package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
  273. package/dist/components/statusnotification/StatusNotification.stories.js +4 -0
  274. package/dist/components/statusnotification/StatusNotification.svelte +14 -13
  275. package/dist/components/steppercompact/README.md +13 -0
  276. package/dist/components/steppercompact/StepperCompact.js +4 -0
  277. package/dist/components/steppercompact/StepperCompact.js.map +1 -0
  278. package/dist/components/steppercompact/StepperCompact.spec.js +119 -0
  279. package/dist/components/steppercompact/StepperCompact.stories.d.ts +7 -0
  280. package/dist/components/steppercompact/StepperCompact.stories.d.ts.map +1 -0
  281. package/dist/components/steppercompact/StepperCompact.stories.js +29 -0
  282. package/dist/components/steppercompact/StepperCompact.svelte +123 -0
  283. package/dist/components/steppercompact/StepperCompact.svelte.d.ts +25 -0
  284. package/dist/components/steppercompact/StepperCompact.svelte.d.ts.map +1 -0
  285. package/dist/components/tab/Tab.js +2 -2
  286. package/dist/components/tab/Tab.js.map +1 -1
  287. package/dist/components/tab/Tab.svelte +1 -2
  288. package/dist/components/tab/Tab.svelte.d.ts +0 -1
  289. package/dist/components/tab/Tab.svelte.d.ts.map +1 -1
  290. package/dist/components/tabs/Tabs.js +2 -2
  291. package/dist/components/tabs/Tabs.stories.d.ts +3 -0
  292. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  293. package/dist/components/tabs/Tabs.stories.js +3 -0
  294. package/dist/components/tabs/Tabs.svelte +1 -1
  295. package/dist/components/tag/README.md +30 -0
  296. package/dist/components/tag/Tag.js +4 -0
  297. package/dist/components/tag/Tag.js.map +1 -0
  298. package/dist/components/tag/Tag.stories.d.ts +13 -0
  299. package/dist/components/tag/Tag.stories.d.ts.map +1 -0
  300. package/dist/components/tag/Tag.stories.js +71 -0
  301. package/dist/components/{tags/TagRemovable.svelte → tag/Tag.svelte} +122 -26
  302. package/dist/components/tag/Tag.svelte.d.ts +65 -0
  303. package/dist/components/tag/Tag.svelte.d.ts.map +1 -0
  304. package/dist/components/textarea/Textarea.js +2 -2
  305. package/dist/components/textarea/Textarea.js.map +1 -1
  306. package/dist/components/textarea/Textarea.stories.d.ts +1 -0
  307. package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
  308. package/dist/components/textarea/Textarea.stories.js +1 -0
  309. package/dist/components/textarea/Textarea.svelte +7 -5
  310. package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
  311. package/dist/components/textinput/Textinput.js +5 -5
  312. package/dist/components/textinput/Textinput.js.map +1 -1
  313. package/dist/components/textinput/Textinput.stories.d.ts +1 -0
  314. package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
  315. package/dist/components/textinput/Textinput.stories.js +1 -0
  316. package/dist/components/textinput/Textinput.svelte +8 -6
  317. package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
  318. package/dist/components/toaster/Toaster.js +3 -3
  319. package/dist/components/toaster/Toaster.js.map +1 -1
  320. package/dist/components/toaster/Toaster.stories.d.ts +3 -0
  321. package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
  322. package/dist/components/toaster/Toaster.stories.js +3 -0
  323. package/dist/components/toaster/Toaster.svelte +13 -11
  324. package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
  325. package/dist/components/toggle/Toggle.js +2 -2
  326. package/dist/components/toggle/Toggle.js.map +1 -1
  327. package/dist/components/toggle/Toggle.stories.d.ts +1 -0
  328. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
  329. package/dist/components/toggle/Toggle.stories.js +1 -0
  330. package/dist/components/toggle/Toggle.svelte +20 -4
  331. package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
  332. package/dist/components/togglegroup/ToggleGroup.js +2 -2
  333. package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
  334. package/dist/components/togglegroup/ToggleGroup.stories.d.ts +1 -0
  335. package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
  336. package/dist/components/togglegroup/ToggleGroup.stories.js +1 -0
  337. package/dist/components/togglegroup/ToggleGroup.svelte +2 -2
  338. package/dist/components/tooltip/Tooltip.js +3 -3
  339. package/dist/components/tooltip/Tooltip.js.map +1 -1
  340. package/dist/components/tooltip/Tooltip.stories.d.ts +1 -0
  341. package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
  342. package/dist/components/tooltip/Tooltip.stories.js +1 -0
  343. package/dist/components/tooltip/Tooltip.svelte +4 -3
  344. package/dist/custom-element-forward-events.js +1 -1
  345. package/dist/custom-element-forward-events.js.map +1 -1
  346. package/dist/custom-element.js +3 -3
  347. package/dist/custom-element.js.map +1 -1
  348. package/dist/documentation/Svelte/usingPresets.mdx +2 -3
  349. package/dist/documentation/WebComponents/usingPresets.mdx +2 -3
  350. package/dist/each.js +1 -1
  351. package/dist/each.js.map +1 -1
  352. package/dist/if.js +1 -1
  353. package/dist/if.js.map +1 -1
  354. package/dist/input.js +1 -1
  355. package/dist/input.js.map +1 -1
  356. package/dist/legacy.js +1 -1
  357. package/dist/main.d.ts +10 -6
  358. package/dist/main.d.ts.map +1 -1
  359. package/dist/main.js +10 -6
  360. package/dist/slot.js +1 -1
  361. package/dist/slot.js.map +1 -1
  362. package/dist/svelte-component.js +2 -0
  363. package/dist/svelte-component.js.map +1 -0
  364. package/dist/this.js +1 -1
  365. package/dist/this.js.map +1 -1
  366. package/package.json +16 -18
  367. package/dist/components/tags/README.md +0 -9
  368. package/dist/components/tags/Tag.js +0 -4
  369. package/dist/components/tags/Tag.js.map +0 -1
  370. package/dist/components/tags/Tag.svelte +0 -218
  371. package/dist/components/tags/Tag.svelte.d.ts +0 -9
  372. package/dist/components/tags/Tag.svelte.d.ts.map +0 -1
  373. package/dist/components/tags/TagContextualised.js +0 -4
  374. package/dist/components/tags/TagContextualised.js.map +0 -1
  375. package/dist/components/tags/TagContextualised.svelte +0 -235
  376. package/dist/components/tags/TagContextualised.svelte.d.ts +0 -11
  377. package/dist/components/tags/TagContextualised.svelte.d.ts.map +0 -1
  378. package/dist/components/tags/TagInteractive.js +0 -4
  379. package/dist/components/tags/TagInteractive.js.map +0 -1
  380. package/dist/components/tags/TagInteractive.svelte +0 -223
  381. package/dist/components/tags/TagInteractive.svelte.d.ts +0 -10
  382. package/dist/components/tags/TagInteractive.svelte.d.ts.map +0 -1
  383. package/dist/components/tags/TagRemovable.js +0 -4
  384. package/dist/components/tags/TagRemovable.js.map +0 -1
  385. package/dist/components/tags/TagRemovable.svelte.d.ts +0 -11
  386. package/dist/components/tags/TagRemovable.svelte.d.ts.map +0 -1
  387. package/dist/components/tags/TagSelectable.js +0 -4
  388. package/dist/components/tags/TagSelectable.js.map +0 -1
  389. package/dist/components/tags/TagSelectable.svelte +0 -243
  390. package/dist/components/tags/TagSelectable.svelte.d.ts +0 -13
  391. package/dist/components/tags/TagSelectable.svelte.d.ts.map +0 -1
  392. package/dist/components/tags/Tags.stories.d.ts +0 -5
  393. package/dist/components/tags/Tags.stories.d.ts.map +0 -1
  394. package/dist/components/tags/Tags.stories.js +0 -41
  395. package/dist/components/tags/TagsContextualised.stories.d.ts +0 -5
  396. package/dist/components/tags/TagsContextualised.stories.d.ts.map +0 -1
  397. package/dist/components/tags/TagsContextualised.stories.js +0 -57
  398. package/dist/components/tags/TagsInteractive.stories.d.ts +0 -5
  399. package/dist/components/tags/TagsInteractive.stories.d.ts.map +0 -1
  400. package/dist/components/tags/TagsInteractive.stories.js +0 -61
  401. package/dist/components/tags/TagsRemovable.stories.d.ts +0 -5
  402. package/dist/components/tags/TagsRemovable.stories.d.ts.map +0 -1
  403. package/dist/components/tags/TagsRemovable.stories.js +0 -60
  404. package/dist/components/tags/TagsSelectable.stories.d.ts +0 -5
  405. package/dist/components/tags/TagsSelectable.stories.d.ts.map +0 -1
  406. package/dist/components/tags/TagsSelectable.stories.js +0 -76
@@ -0,0 +1,60 @@
1
+ import { type CountryCode } from 'libphonenumber-js';
2
+ /**
3
+ * A phone number input is a specialized input field designed to capture and validate phone numbers, ensuring correct formatting based on country-specific dialing codes. It often includes a country selector that automatically adjusts the international dialing code. This component improves user experience by standardizing phone number entries, reducing errors, and facilitating global compatibility. It is commonly used in registration forms, authentication flows, and contact information fields.
4
+ *
5
+ * @event valid {CustomEvent<boolean>} - Emits the validity of the value when the PhoneNumber changes.
6
+ */
7
+ interface Props {
8
+ /**
9
+ * A unique identifier for the phone number input element, used to associate the label with the form element.
10
+ */
11
+ id: string;
12
+ /**
13
+ * The current value of the phone number input field.
14
+ */
15
+ value?: string;
16
+ /**
17
+ * Default country code for phone number formatting (e.g., 'FR', 'US', 'PT').
18
+ */
19
+ defaultcountry?: CountryCode;
20
+ /**
21
+ * A placeholder text to show in the phone number input when it is empty.
22
+ */
23
+ placeholder?: string;
24
+ /**
25
+ * Determines the size of the phone number input.
26
+ */
27
+ size?: 's' | 'm';
28
+ /**
29
+ * If `true`, applies an invalid state to the password input.
30
+ */
31
+ isinvalid?: boolean;
32
+ /**
33
+ * If `true`, disables the input, making it non-interactive.
34
+ */
35
+ disabled?: boolean;
36
+ /**
37
+ * If `true`, the input is read-only (cannot be edited).
38
+ */
39
+ readonly?: boolean;
40
+ /**
41
+ * If `true`, display the country calling code prefix (+33, +1, etc.).
42
+ */
43
+ prefix?: boolean;
44
+ /**
45
+ * If `true`, display the country flag selector
46
+ */
47
+ flag?: boolean;
48
+ /**
49
+ * Locale for displaying country names (e.g., 'fr', 'en', 'es', 'pt').
50
+ */
51
+ locale?: string;
52
+ /**
53
+ * List of country codes to display in the selector. If not provided, all countries will be shown.
54
+ */
55
+ countrycodes?: CountryCode[];
56
+ }
57
+ declare const PhoneNumber: import("svelte").Component<Props, {}, "value">;
58
+ type PhoneNumber = ReturnType<typeof PhoneNumber>;
59
+ export default PhoneNumber;
60
+ //# sourceMappingURL=PhoneNumber.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhoneNumber.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/phonenumber/PhoneNumber.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAMH,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAI3B;;;;GAIG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B;AAkJH,QAAA,MAAM,WAAW,gDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,27 @@
1
+ # `m-phone-number`
2
+
3
+ A phone number input is a specialized input field designed to capture and validate phone numbers, ensuring correct formatting based on country-specific dialing codes. It often includes a country selector that automatically adjusts the international dialing code. This component improves user experience by standardizing phone number entries, reducing errors, and facilitating global compatibility. It is commonly used in registration forms, authentication flows, and contact information fields.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `id*` | A unique identifier for the phone number input element, used to associate the label with the form element. | `string` | |
10
+ | `value` | The current value of the phone number input field. | `string` | `$bindable('')` |
11
+ | `defaultcountry` | Default country code for phone number formatting (e.g., 'FR', 'US', 'PT'). | `CountryCode` | `FR` |
12
+ | `placeholder` | A placeholder text to show in the phone number input when it is empty. | `string` | |
13
+ | `size` | Determines the size of the phone number input. | `'s'` `'m'` | `m` |
14
+ | `isinvalid` | If `true`, applies an invalid state to the password input. | `boolean` | |
15
+ | `disabled` | If `true`, disables the input, making it non-interactive. | `boolean` | |
16
+ | `readonly` | If `true`, the input is read-only (cannot be edited). | `boolean` | |
17
+ | `prefix` | If `true`, display the country calling code prefix (+33, +1, etc.). | `boolean` | `true` |
18
+ | `flag` | If `true`, display the country flag selector | `boolean` | `true` |
19
+ | `locale` | Locale for displaying country names (e.g., 'fr', 'en', 'es', 'pt'). | `string` | `en` |
20
+ | `countrycodes` | List of country codes to display in the selector. If not provided, all countries will be shown. | `CountryCode[]` | |
21
+
22
+ ## Events
23
+
24
+ | Name | Description | Type |
25
+ |------|------|-------------|
26
+ | `valid` | Emits the validity of the value when the PhoneNumber changes. | `CustomEvent<boolean>` |
27
+
@@ -1,6 +1,6 @@
1
- import{v as B,c as C,p as K,a as O,b as d,w as z,l as D,m as t,L as R,u as F,x as A,f as L,M as G,i as I,j as H,k as c,r as J,t as N,e as Q,g as T}from"../../custom-element.js";import{e as U}from"../../each.js";import{r as V,s as j,e as W}from"../../attributes.js";import{b as E}from"../../this.js";var X=(u,s,n)=>s(u,n),Y=(u,s,n)=>s(u,n),Z=L('<input type="text" inputmode="numeric" maxlength="1" pattern="\\d*" autocomplete="one-time-code"/>'),$=L('<div class="mc-pincode-input svelte-h63szf"></div>');const ee={hash:"svelte-h63szf",code:`/**
1
+ import{w as B,c as C,p as K,a as O,b as l,x as k,k as x,n as r,D as R,u as T,y as D,f as E,T as F,h as A,i as G,j as d,e as H,t as J,l as N,m as Q}from"../../custom-element.js";import{e as U}from"../../each.js";import{r as V,s as I,d as W}from"../../attributes.js";import{b as j}from"../../this.js";var X=E('<input type="text" inputmode="numeric" maxlength="1" pattern="\\d*" autocomplete="one-time-code"/>'),Y=E('<div class="mc-pincode-input svelte-h63szf"></div>');const Z={hash:"svelte-h63szf",code:`/**
2
2
  * Do not edit directly, this file was auto-generated.
3
3
  */.mc-pincode-input.svelte-h63szf {display:inline-flex;column-gap:0.5rem;}
4
4
  @media screen and (width <= 1024px) {.mc-pincode-input.svelte-h63szf {flex-wrap:wrap;row-gap:0.75rem;}
5
- }.mc-pincode-input__control.svelte-h63szf {font-size:var(--font-size-400, 1.75rem);transition:box-shadow 200ms ease;background-color:var(--forms-color-background-default, #ffffff);border:var(--border-s, 1px) solid var(--forms-color-border-default, #666666);border-radius:var(--forms-radius-border, 0.25rem);transition:all ease 200ms;color:var(--forms-color-text-default, #000000);display:block;width:3rem;box-sizing:border-box;height:4rem;text-align:center;line-height:var(--line-height-s, 1.3);}.mc-pincode-input__control.svelte-h63szf::placeholder {color:var(--forms-color-placeholder, #666666);}.mc-pincode-input__control.svelte-h63szf:focus-within {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-pincode-input__control.svelte-h63szf:hover:not(:focus-within) {border-color:var(--forms-color-border-hover, #4d4d4d);box-shadow:0 0 0 var(--border-s, 1px) var(--forms-color-border-hover, #4d4d4d);}.mc-pincode-input__control.svelte-h63szf:disabled {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;border-color:transparent;box-shadow:none;color:var(--forms-color-text-disabled, #737373);pointer-events:none;}.mc-pincode-input__control.is-invalid.svelte-h63szf {border-color:var(--forms-color-border-invalid, #ea302d);box-shadow:0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid, #ea302d);}.mc-pincode-input__control.is-invalid.svelte-h63szf:hover:not(:focus-within) {border-color:var(--forms-color-border-invalid-hover, #c61112);box-shadow:0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid-hover, #c61112);}`};function oe(u,s){K(s,!0),O(u,ee);let n=d(s,"id",7),v=d(s,"length",7,6),h=d(s,"name",7),b=d(s,"value",7),g=d(s,"isinvalid",7),_=d(s,"disabled",7),y=d(s,"readonly",7);const a=R(()=>typeof v()=="string"?parseInt(v(),10)||6:v());let l=z(D(Array(t(a)).fill(""))),w=z(D([])),x;F(()=>{const e=String(b()??"");A(l,Array.from({length:t(a)},(o,r)=>e[r]??""),!0)});const m=e=>{queueMicrotask(()=>{var o,r;return(r=(o=t(w))==null?void 0:o[e])==null?void 0:r.focus()})},k=()=>{const e=t(l).join(""),o=new CustomEvent("input",{detail:{value:e},bubbles:!0,composed:!0});x.dispatchEvent(o)},M=(e,o)=>{const i=e.target.value.replace(/\D/g,"").slice(0,1);t(l)[o]=i,k(),i&&o+1<t(a)&&m(o+1)},P=(e,o)=>{e.key==="ArrowLeft"&&o>0?(e.preventDefault(),m(o-1)):e.key==="ArrowRight"&&o<t(a)-1?(e.preventDefault(),m(o+1)):e.key==="Backspace"&&t(l)[o]===""&&o>0&&(t(l)[o-1]="",k(),m(o-1))},S=e=>{var r;e.preventDefault();const o=(((r=e.clipboardData)==null?void 0:r.getData("text"))??"").replace(/\D/g,"").slice(0,t(a));A(l,Array.from({length:t(a)},(i,f)=>o[f]??""),!0),k(),m(Math.min(o.length,t(a)-1))};var q={get id(){return n()},set id(e){n(e),c()},get length(){return v()},set length(e=6){v(e),c()},get name(){return h()},set name(e){h(e),c()},get value(){return b()},set value(e){b(e),c()},get isinvalid(){return g()},set isinvalid(e){g(e),c()},get disabled(){return _()},set disabled(e){_(e),c()},get readonly(){return y()},set readonly(e){y(e),c()}},p=$();return U(p,20,()=>[...Array(t(a)).keys()],e=>e,(e,o)=>{var r=Z();V(r),r.__input=[X,M,o],r.__keydown=[Y,P,o],E(r,(i,f)=>t(w)[f]=i,i=>{var f;return(f=t(w))==null?void 0:f[i]},()=>[o]),N(()=>{j(r,"id",`pincodeItem${o}`),Q(r,1,T(["mc-pincode-input__control",g()&&"is-invalid"]),"svelte-h63szf"),j(r,"name",h()??`pincode-${n()}`),r.disabled=_(),r.readOnly=y(),W(r,t(l)[o])}),I(e,r)}),J(p),E(p,e=>x=e,()=>x),G("paste",p,S),I(u,p),H(q)}B(["input","keydown"]);customElements.define("m-pincode",C(oe,{id:{},length:{},name:{},value:{},isinvalid:{},disabled:{},readonly:{}},[],[],!0));
5
+ }.mc-pincode-input__control.svelte-h63szf {font-size:var(--font-size-400, 1.75rem);transition:box-shadow 200ms ease;background-color:var(--forms-color-background-default, #ffffff);border:var(--border-width-s, 0.0625rem) solid var(--forms-color-border-default, #666666);border-radius:var(--forms-border-radius, 0.25rem);transition:all ease 200ms;color:var(--forms-color-text-default, #000000);display:block;width:3rem;box-sizing:border-box;height:4rem;text-align:center;line-height:var(--line-height-s, 1.3);}.mc-pincode-input__control.svelte-h63szf::placeholder {color:var(--forms-color-placeholder, #666666);}.mc-pincode-input__control.svelte-h63szf:focus-within {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-pincode-input__control.svelte-h63szf:hover:not(:focus-within) {border-color:var(--forms-color-border-hover, #4d4d4d);box-shadow:0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-hover, #4d4d4d);}.mc-pincode-input__control.svelte-h63szf:disabled {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;border-color:transparent;box-shadow:none;color:var(--forms-color-text-disabled, #737373);pointer-events:none;}.mc-pincode-input__control.is-invalid.svelte-h63szf {border-color:var(--forms-color-border-invalid, #ea302d);box-shadow:0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid, #ea302d);}.mc-pincode-input__control.is-invalid.svelte-h63szf:hover:not(:focus-within) {border-color:var(--forms-color-border-invalid-hover, #c61112);box-shadow:0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid-hover, #c61112);}`};function $(z,a){K(a,!0),O(z,Z);let m=l(a,"id",7),c=l(a,"length",7,6),v=l(a,"name",7),p=l(a,"value",7),h=l(a,"isinvalid",7),b=l(a,"disabled",7),g=l(a,"readonly",7);const n=R(()=>typeof c()=="string"?parseInt(c(),10)||6:c());let i=k(x(Array(r(n)).fill(""))),_=k(x([])),w;T(()=>{const e=String(p()??"");D(i,Array.from({length:r(n)},(o,t)=>e[t]??""),!0)});const u=e=>{queueMicrotask(()=>r(_)?.[e]?.focus())},y=()=>{const e=r(i).join(""),o=new CustomEvent("input",{detail:{value:e},bubbles:!0,composed:!0});w.dispatchEvent(o)},L=(e,o)=>{const s=e.target.value.replace(/\D/g,"").slice(0,1);r(i)[o]=s,y(),s&&o+1<r(n)&&u(o+1)},M=(e,o)=>{e.key==="ArrowLeft"&&o>0?(e.preventDefault(),u(o-1)):e.key==="ArrowRight"&&o<r(n)-1?(e.preventDefault(),u(o+1)):e.key==="Backspace"&&r(i)[o]===""&&o>0&&(r(i)[o-1]="",y(),u(o-1))},P=e=>{e.preventDefault();const o=(e.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,r(n));D(i,Array.from({length:r(n)},(t,s)=>o[s]??""),!0),y(),u(Math.min(o.length,r(n)-1))};var S={get id(){return m()},set id(e){m(e),d()},get length(){return c()},set length(e=6){c(e),d()},get name(){return v()},set name(e){v(e),d()},get value(){return p()},set value(e){p(e),d()},get isinvalid(){return h()},set isinvalid(e){h(e),d()},get disabled(){return b()},set disabled(e){b(e),d()},get readonly(){return g()},set readonly(e){g(e),d()}},f=Y();return U(f,20,()=>[...Array(r(n)).keys()],e=>e,(e,o)=>{var t=X();V(t),t.__input=s=>L(s,o),t.__keydown=s=>M(s,o),j(t,(s,q)=>r(_)[q]=s,s=>r(_)?.[s],()=>[o]),J(()=>{I(t,"id",`pincodeItem${o}`),N(t,1,Q(["mc-pincode-input__control",h()&&"is-invalid"]),"svelte-h63szf"),I(t,"name",v()??`pincode-${m()}`),t.disabled=b(),t.readOnly=g(),W(t,r(i)[o])}),A(e,t)}),H(f),j(f,e=>w=e,()=>w),F("paste",f,P),A(z,f),G(S)}B(["input","keydown"]);customElements.define("m-pincode",C($,{id:{},length:{},name:{},value:{},isinvalid:{},disabled:{},readonly:{}},[],[],!0));
6
6
  //# sourceMappingURL=Pincode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pincode.js","sources":["../../../src/components/pincode/Pincode.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-pincode' }} />\n\n<script lang=\"ts\">\n /**\n * A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.\n *\n * @event input {CustomEvent<{ value: string }>} - Emits when the pincode value changes.\n */\n interface Props {\n /**\n * A unique identifier for the pincode element, used to associate the label with the form element.\n */\n id: string;\n /**\n * The number of input displayed in the pincode element.\n */\n length?: 4 | 5 | 6;\n /**\n * The name attribute for the pincode element, typically used for form submission.\n */\n name?: string;\n /**\n * The current value of the pincode field.\n */\n value?: string | number;\n /**\n * If `true`, applies an invalid state to the pincode.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the pincode, making it non-interactive.\n */\n disabled?: boolean;\n /**\n * If `true`, the pincode is read-only (cannot be edited).\n */\n readonly?: boolean;\n }\n\n let { id, length = 6, name, value, isinvalid, disabled, readonly }: Props = $props();\n\n const L = $derived(typeof length === 'string' ? parseInt(length, 10) || 6 : length);\n\n let otp = $state<string[]>(Array(L).fill(''));\n let inputs = $state<HTMLInputElement[]>([]);\n let element: HTMLElement;\n\n $effect(() => {\n const incoming = String(value ?? '');\n otp = Array.from({ length: L }, (_, i) => incoming[i] ?? '');\n });\n\n const focusInput = (i: number) => {\n queueMicrotask(() => inputs?.[i]?.focus());\n };\n\n const emitInput = () => {\n const joined = otp.join('');\n const event = new CustomEvent('input', {\n detail: { value: joined },\n bubbles: true,\n composed: true,\n });\n element.dispatchEvent(event);\n };\n\n const onInput = (e: Event, index: number) => {\n const el = e.target as HTMLInputElement;\n const digit = el.value.replace(/\\D/g, '').slice(0, 1);\n otp[index] = digit;\n emitInput();\n if (digit && index + 1 < L) focusInput(index + 1);\n };\n\n const onKeyDown = (e: KeyboardEvent, index: number) => {\n if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault();\n focusInput(index - 1);\n } else if (e.key === 'ArrowRight' && index < L - 1) {\n e.preventDefault();\n focusInput(index + 1);\n } else if (e.key === 'Backspace' && otp[index] === '' && index > 0) {\n otp[index - 1] = '';\n emitInput();\n focusInput(index - 1);\n }\n };\n\n const onPaste = (e: ClipboardEvent) => {\n e.preventDefault();\n const pasted = (e.clipboardData?.getData('text') ?? '').replace(/\\D/g, '').slice(0, L);\n otp = Array.from({ length: L }, (_, i) => pasted[i] ?? '');\n emitInput();\n focusInput(Math.min(pasted.length, L - 1));\n };\n</script>\n\n<div class=\"mc-pincode-input\" onpaste={onPaste} bind:this={element}>\n {#each [...Array(L).keys()] as i (i)}\n <input\n id={`pincodeItem${i}`}\n bind:this={inputs[i]}\n class={['mc-pincode-input__control', isinvalid && 'is-invalid']}\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n pattern=\"\\d*\"\n autocomplete=\"one-time-code\"\n name={name ?? `pincode-${id}`}\n {disabled}\n {readonly}\n value={otp[i]}\n oninput={(e) => onInput(e, i)}\n onkeydown={(e) => onKeyDown(e as KeyboardEvent, i)}\n />\n {/each}\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/pincode-input';\n</style>\n"],"names":["on_input","e","onInput","i","on_keydown","onKeyDown","id","$.prop","$$props","length","name","value","isinvalid","disabled","readonly","L","$.derived","otp","$.get","inputs","$.state","$.proxy","element","$.user_effect","incoming","$.set","_","focusInput","emitInput","joined","event","index","digit","onPaste","pasted","_a","$$anchor","$$value","$.set_attribute","input","$.set_value","$.bind_this","div"],"mappings":"2SAgHgB,IAAAA,EAAA,CAAAC,EAACC,EAAAC,IAAKD,EAAQD,EAAGE,CAAC,EAChBC,EAAA,CAAAH,EAACI,EAAAF,IAAKE,EAAUJ,EAAoBE,CAAC;;;;0uDAjHvD,qBAuCQG,EAAEC,EAAAC,EAAA,KAAA,CAAA,EAAEC,iBAAS,CAAC,EAAEC,EAAIH,EAAAC,EAAA,OAAA,CAAA,EAAEG,EAAKJ,EAAAC,EAAA,QAAA,CAAA,EAAEI,EAASL,EAAAC,EAAA,YAAA,CAAA,EAAEK,EAAQN,EAAAC,EAAA,WAAA,CAAA,EAAEM,EAAQP,EAAAC,EAAA,WAAA,CAAA,EAE1D,MAAAO,EAACC,EAAA,IAAA,OAAmBP,EAAM,GAAK,SAAW,SAASA,EAAM,EAAE,EAAE,GAAK,EAAIA,EAAM,CAAA,EAE9E,IAAAQ,MAAuB,MAAKC,EAACH,CAAC,CAAA,EAAE,KAAK,EAAE,CAAA,CAAA,EACvCI,EAAMC,EAAAC,EAAA,CAAA,CAAA,CAAA,EACNC,EAEJC,EAAO,IAAO,CACN,MAAAC,EAAW,OAAOb,EAAK,GAAI,EAAE,EACnCc,EAAAR,EAAM,MAAM,KAAI,CAAG,OAAMC,EAAEH,CAAC,CAAA,EAAA,CAAKW,EAAGvB,IAAMqB,EAASrB,CAAC,GAAK,EAAE,EAAA,EAAA,CAC7D,CAAC,QAEKwB,EAAcxB,GAAc,CAChC,eAAc,IAAA,SAAAe,OAAAA,GAAAA,EAAAA,EAAOC,CAAM,IAAbD,YAAAA,EAAgBf,KAAhBe,YAAAA,EAAoB,QAAK,CACzC,EAEMU,EAAS,IAAS,CAChB,MAAAC,EAAMX,EAAGD,CAAG,EAAC,KAAK,EAAE,EACpBa,MAAY,YAAY,QAAO,CACnC,OAAM,CAAI,MAAOD,CAAM,EACvB,QAAS,GACT,SAAU,EAAI,CAAA,EAEhBP,EAAQ,cAAcQ,CAAK,CAC7B,EAEM5B,EAAO,CAAI,EAAU6B,IAAkB,CAErC,MAAAC,EADK,EAAE,OACI,MAAM,QAAQ,MAAO,EAAE,EAAE,MAAM,EAAG,CAAC,IACpDf,CAAG,EAACc,CAAK,EAAIC,EACbJ,EAAS,EACLI,GAASD,EAAQ,EAACb,EAAGH,CAAC,GAAEY,EAAWI,EAAQ,CAAC,CAClD,EAEM1B,EAAS,CAAI,EAAkB0B,IAAkB,CACjD,EAAE,MAAQ,aAAeA,EAAQ,GACnC,EAAE,eAAc,EAChBJ,EAAWI,EAAQ,CAAC,GACX,EAAE,MAAQ,cAAgBA,EAAKb,EAAGH,CAAC,EAAG,GAC/C,EAAE,eAAc,EAChBY,EAAWI,EAAQ,CAAC,GACX,EAAE,MAAQ,aAAWb,EAAID,CAAG,EAACc,CAAK,IAAM,IAAMA,EAAQ,IAC/Db,EAAAD,CAAG,EAACc,EAAQ,CAAC,EAAI,GACjBH,EAAS,EACTD,EAAWI,EAAQ,CAAC,EAExB,EAEME,EAAW,GAAsB,OACrC,EAAE,eAAc,QACVC,KAAUC,EAAA,EAAE,gBAAF,YAAAA,EAAiB,QAAQ,UAAW,IAAI,QAAQ,MAAO,EAAE,EAAE,MAAM,EAACjB,EAAEH,CAAC,CAAA,EACrFU,EAAAR,EAAM,MAAM,KAAI,CAAG,OAAMC,EAAEH,CAAC,CAAA,EAAA,CAAKW,EAAGvB,IAAM+B,EAAO/B,CAAC,GAAK,EAAE,EAAA,EAAA,EACzDyB,EAAS,EACTD,EAAW,KAAK,IAAIO,EAAO,OAAMhB,EAAEH,CAAC,EAAG,CAAC,CAAA,CAC1C,wFAvDmB,EAAC,qSA2DT,MAAKG,EAACH,CAAC,CAAA,EAAE,KAAI,GAAOZ,GAAGA,EAAC,CAAAiC,EAAJjC,IAAC,6DAGVA,IAACe,EAARC,CAAM,EAAChB,CAAC,EAAAkC,EAAD,GAAC,OAAAnB,OAAAA,EAAAA,EAARC,CAAM,IAAED,YAAAA,EAAD,IAAC,IAAA,CAADf,CAAC,CAAA,gCADDA,CAAC,EAAA,WAEX,4BAA6BS,KAAa,YAAY,CAAA,EAAA,eAAA,EAMxD0B,EAAAC,EAAA,OAAA7B,EAAI,cAAeJ,EAAE,CAAA,EAAA,gCAGpBkC,EAAAD,EAAArB,EAAAD,CAAG,EAACd,CAAC,CAAA,kBAdyCsC,EAAAC,EAAAL,GAAAf,QAAAA,CAAO,cAA3BW,CAAO,aAF9C"}
1
+ {"version":3,"file":"Pincode.js","sources":["../../../src/components/pincode/Pincode.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-pincode' }} />\n\n<script lang=\"ts\">\n /**\n * A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.\n *\n * @event input {CustomEvent<{ value: string }>} - Emits when the pincode value changes.\n */\n interface Props {\n /**\n * A unique identifier for the pincode element, used to associate the label with the form element.\n */\n id: string;\n /**\n * The number of input displayed in the pincode element.\n */\n length?: 4 | 5 | 6;\n /**\n * The name attribute for the pincode element, typically used for form submission.\n */\n name?: string;\n /**\n * The current value of the pincode field.\n */\n value?: string | number;\n /**\n * If `true`, applies an invalid state to the pincode.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the pincode, making it non-interactive.\n */\n disabled?: boolean;\n /**\n * If `true`, the pincode is read-only (cannot be edited).\n */\n readonly?: boolean;\n }\n\n let { id, length = 6, name, value, isinvalid, disabled, readonly }: Props = $props();\n\n const L = $derived(typeof length === 'string' ? parseInt(length, 10) || 6 : length);\n\n let otp = $state<string[]>(Array(L).fill(''));\n let inputs = $state<HTMLInputElement[]>([]);\n let element: HTMLElement;\n\n $effect(() => {\n const incoming = String(value ?? '');\n otp = Array.from({ length: L }, (_, i) => incoming[i] ?? '');\n });\n\n const focusInput = (i: number) => {\n queueMicrotask(() => inputs?.[i]?.focus());\n };\n\n const emitInput = () => {\n const joined = otp.join('');\n const event = new CustomEvent('input', {\n detail: { value: joined },\n bubbles: true,\n composed: true,\n });\n element.dispatchEvent(event);\n };\n\n const onInput = (e: Event, index: number) => {\n const el = e.target as HTMLInputElement;\n const digit = el.value.replace(/\\D/g, '').slice(0, 1);\n otp[index] = digit;\n emitInput();\n if (digit && index + 1 < L) focusInput(index + 1);\n };\n\n const onKeyDown = (e: KeyboardEvent, index: number) => {\n if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault();\n focusInput(index - 1);\n } else if (e.key === 'ArrowRight' && index < L - 1) {\n e.preventDefault();\n focusInput(index + 1);\n } else if (e.key === 'Backspace' && otp[index] === '' && index > 0) {\n otp[index - 1] = '';\n emitInput();\n focusInput(index - 1);\n }\n };\n\n const onPaste = (e: ClipboardEvent) => {\n e.preventDefault();\n const pasted = (e.clipboardData?.getData('text') ?? '').replace(/\\D/g, '').slice(0, L);\n otp = Array.from({ length: L }, (_, i) => pasted[i] ?? '');\n emitInput();\n focusInput(Math.min(pasted.length, L - 1));\n };\n</script>\n\n<div class=\"mc-pincode-input\" onpaste={onPaste} bind:this={element}>\n {#each [...Array(L).keys()] as i (i)}\n <input\n id={`pincodeItem${i}`}\n bind:this={inputs[i]}\n class={['mc-pincode-input__control', isinvalid && 'is-invalid']}\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n pattern=\"\\d*\"\n autocomplete=\"one-time-code\"\n name={name ?? `pincode-${id}`}\n {disabled}\n {readonly}\n value={otp[i]}\n oninput={(e) => onInput(e, i)}\n onkeydown={(e) => onKeyDown(e as KeyboardEvent, i)}\n />\n {/each}\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/pincode-input';\n</style>\n"],"names":["id","$.prop","$$props","length","name","value","isinvalid","disabled","readonly","L","$.derived","otp","$.get","inputs","$.state","$.proxy","element","$.user_effect","incoming","$.set","_","i","focusInput","emitInput","joined","event","onInput","index","digit","onKeyDown","onPaste","pasted","$$anchor","input","e","$$value","$.set_attribute","$.set_value","$.bind_this","div"],"mappings":";;;;yxDAAA,oBAuCQA,EAAEC,EAAAC,EAAA,KAAA,CAAA,EAAEC,iBAAS,CAAC,EAAEC,EAAIH,EAAAC,EAAA,OAAA,CAAA,EAAEG,EAAKJ,EAAAC,EAAA,QAAA,CAAA,EAAEI,EAASL,EAAAC,EAAA,YAAA,CAAA,EAAEK,EAAQN,EAAAC,EAAA,WAAA,CAAA,EAAEM,EAAQP,EAAAC,EAAA,WAAA,CAAA,EAE1D,MAAAO,EAACC,EAAA,IAAA,OAAmBP,EAAM,GAAK,SAAW,SAASA,EAAM,EAAE,EAAE,GAAK,EAAIA,EAAM,CAAA,EAE9E,IAAAQ,MAAuB,MAAKC,EAACH,CAAC,CAAA,EAAE,KAAK,EAAE,CAAA,CAAA,EACvCI,EAAMC,EAAAC,EAAA,CAAA,CAAA,CAAA,EACNC,EAEJC,EAAO,IAAO,CACN,MAAAC,EAAW,OAAOb,EAAK,GAAI,EAAE,EACnCc,EAAAR,EAAM,MAAM,KAAI,CAAG,OAAMC,EAAEH,CAAC,CAAA,EAAA,CAAKW,EAAGC,IAAMH,EAASG,CAAC,GAAK,EAAE,EAAA,EAAA,CAC7D,CAAC,QAEKC,EAAcD,GAAc,CAChC,eAAc,IAAAT,EAAOC,CAAM,IAAGQ,CAAC,GAAG,OAAK,CACzC,EAEME,EAAS,IAAS,CAChB,MAAAC,EAAMZ,EAAGD,CAAG,EAAC,KAAK,EAAE,EACpBc,MAAY,YAAY,QAAO,CACnC,OAAM,CAAI,MAAOD,CAAM,EACvB,QAAS,GACT,SAAU,EAAI,CAAA,EAEhBR,EAAQ,cAAcS,CAAK,CAC7B,EAEMC,EAAO,CAAI,EAAUC,IAAkB,CAErC,MAAAC,EADK,EAAE,OACI,MAAM,QAAQ,MAAO,EAAE,EAAE,MAAM,EAAG,CAAC,IACpDjB,CAAG,EAACgB,CAAK,EAAIC,EACbL,EAAS,EACLK,GAASD,EAAQ,EAACf,EAAGH,CAAC,GAAEa,EAAWK,EAAQ,CAAC,CAClD,EAEME,EAAS,CAAI,EAAkBF,IAAkB,CACjD,EAAE,MAAQ,aAAeA,EAAQ,GACnC,EAAE,eAAc,EAChBL,EAAWK,EAAQ,CAAC,GACX,EAAE,MAAQ,cAAgBA,EAAKf,EAAGH,CAAC,EAAG,GAC/C,EAAE,eAAc,EAChBa,EAAWK,EAAQ,CAAC,GACX,EAAE,MAAQ,aAAWf,EAAID,CAAG,EAACgB,CAAK,IAAM,IAAMA,EAAQ,IAC/Df,EAAAD,CAAG,EAACgB,EAAQ,CAAC,EAAI,GACjBJ,EAAS,EACTD,EAAWK,EAAQ,CAAC,EAExB,EAEMG,EAAW,GAAsB,CACrC,EAAE,eAAc,QACVC,GAAU,EAAE,eAAe,QAAQ,MAAM,GAAK,IAAI,QAAQ,MAAO,EAAE,EAAE,MAAM,EAACnB,EAAEH,CAAC,CAAA,EACrFU,EAAAR,EAAM,MAAM,KAAI,CAAG,OAAMC,EAAEH,CAAC,CAAA,EAAA,CAAKW,EAAGC,IAAMU,EAAOV,CAAC,GAAK,EAAE,EAAA,EAAA,EACzDE,EAAS,EACTD,EAAW,KAAK,IAAIS,EAAO,OAAMnB,EAAEH,CAAC,EAAG,CAAC,CAAA,CAC1C,wFAvDmB,EAAC,qSA2DT,MAAKG,EAACH,CAAC,CAAA,EAAE,KAAI,GAAOY,GAAGA,EAAC,CAAAW,EAAJX,IAAC,gBAclBY,EAAA,QAAAC,GAAMR,EAAQQ,EAAGb,CAAC,EAChBY,EAAA,UAAAC,GAAML,EAAUK,EAAoBb,CAAC,SAZ/BA,IAACT,EAARC,CAAM,EAACQ,CAAC,EAAAc,EAADd,GAACT,EAARC,CAAM,IAACQ,CAAC,EAAA,IAAA,CAADA,CAAC,CAAA,gCADDA,CAAC,EAAA,WAEX,4BAA6Bf,KAAa,YAAY,CAAA,EAAA,eAAA,EAMxD8B,EAAAH,EAAA,OAAA7B,EAAI,cAAeJ,EAAE,CAAA,EAAA,gCAGpBqC,EAAAJ,EAAArB,EAAAD,CAAG,EAACU,CAAC,CAAA,kBAdyCiB,EAAAC,EAAAJ,GAAAnB,QAAAA,CAAO,cAA3Bc,CAAO,aAF9C"}
@@ -1,4 +1,5 @@
1
1
  import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import './Pincode.svelte';
2
3
  declare const meta: Meta;
3
4
  export default meta;
4
5
  type Story = StoryObj;
@@ -1 +1 @@
1
- {"version":3,"file":"Pincode.stories.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,QAAA,MAAM,IAAI,EAAE,IA6CX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
1
+ {"version":3,"file":"Pincode.stories.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,kBAAkB,CAAC;AAE1B,QAAA,MAAM,IAAI,EAAE,IA6CX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { html } from 'lit';
2
2
  import { ifDefined } from 'lit-html/directives/if-defined.js';
3
3
  import { action } from 'storybook/actions';
4
+ import './Pincode.svelte';
4
5
  const meta = {
5
6
  title: 'Form Elements/Pincode',
6
7
  component: 'm-pincode',
@@ -133,8 +133,8 @@
133
133
  font-size: var(--font-size-400, 1.75rem);
134
134
  transition: box-shadow 200ms ease;
135
135
  background-color: var(--forms-color-background-default, #ffffff);
136
- border: var(--border-s, 1px) solid var(--forms-color-border-default, #666666);
137
- border-radius: var(--forms-radius-border, 0.25rem);
136
+ border: var(--border-width-s, 0.0625rem) solid var(--forms-color-border-default, #666666);
137
+ border-radius: var(--forms-border-radius, 0.25rem);
138
138
  transition: all ease 200ms;
139
139
  color: var(--forms-color-text-default, #000000);
140
140
  display: block;
@@ -154,7 +154,7 @@
154
154
  }
155
155
  .mc-pincode-input__control:hover:not(:focus-within) {
156
156
  border-color: var(--forms-color-border-hover, #4d4d4d);
157
- box-shadow: 0 0 0 var(--border-s, 1px) var(--forms-color-border-hover, #4d4d4d);
157
+ box-shadow: 0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-hover, #4d4d4d);
158
158
  }
159
159
  .mc-pincode-input__control:disabled {
160
160
  background-color: var(--forms-color-background-disabled, #d9d9d9);
@@ -166,9 +166,9 @@
166
166
  }
167
167
  .mc-pincode-input__control.is-invalid {
168
168
  border-color: var(--forms-color-border-invalid, #ea302d);
169
- box-shadow: 0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid, #ea302d);
169
+ box-shadow: 0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid, #ea302d);
170
170
  }
171
171
  .mc-pincode-input__control.is-invalid:hover:not(:focus-within) {
172
172
  border-color: var(--forms-color-border-invalid-hover, #c61112);
173
- box-shadow: 0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid-hover, #c61112);
173
+ box-shadow: 0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid-hover, #c61112);
174
174
  }</style>
@@ -1,5 +1,5 @@
1
- import{c as E,p as D,b as n,A,t as S,i as V,j as I,k as a,e as M,g as j,v as R,a as T,f as U,d as p,s as g,r as f,h as H}from"../../custom-element.js";import{s as u,a as G,r as W}from"../../attributes.js";import{c as X}from"../../input.js";import{c as Y}from"../../custom-element-forward-events.js";import"../../legacy.js";var Z=A('<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px"><path fill-rule="evenodd" d="M6 12a1 1 0 0 1 1-1h10a1 1 0 1 1 0 2H7a1 1 0 0 1-1-1"></path></svg>');function L(v,e){D(e,!1);let o=n(e,"id",12,void 0),t=n(e,"style",12,void 0),r=n(e,"className",12,void 0),i=n(e,"fill",12,void 0),m=n(e,"size",12,"1.5rem");var b={get id(){return o()},set id(s){o(s),a()},get style(){return t()},set style(s){t(s),a()},get className(){return r()},set className(s){r(s),a()},get fill(){return i()},set fill(s){i(s),a()},get size(){return m()},set size(s){m(s),a()}},d=Z();return S(()=>{u(d,"id",o()),G(d,t()),M(d,0,j(r())),u(d,"fill",i())}),V(v,d),I(b)}customElements.define("less-24",E(L,{id:{},style:{},className:{},fill:{},size:{}},[],[],!1));var $=A('<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px"><path fill-rule="evenodd" d="M13 5a1 1 0 1 0-2 0v6H5a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6z"></path></svg>');function O(v,e){D(e,!1);let o=n(e,"id",12,void 0),t=n(e,"style",12,void 0),r=n(e,"className",12,void 0),i=n(e,"fill",12,void 0),m=n(e,"size",12,"1.5rem");var b={get id(){return o()},set id(s){o(s),a()},get style(){return t()},set style(s){t(s),a()},get className(){return r()},set className(s){r(s),a()},get fill(){return i()},set fill(s){i(s),a()},get size(){return m()},set size(s){m(s),a()}},d=$();return S(()=>{u(d,"id",o()),G(d,t()),M(d,0,j(r())),u(d,"fill",i())}),V(v,d),I(b)}customElements.define("more-24",E(O,{id:{},style:{},className:{},fill:{},size:{}},[],[],!1));const ee=(v,e,o,t)=>{const r=Number(e());r>o()?e(o()):r<t()?e(t()):e(r)},te=(v,e,o,t)=>{const r=Number(e()),i=Number(o());r+i<=t()?e(r+i):e(t())},re=(v,e,o,t)=>{const r=Number(e()),i=Number(o());r-i>=t()?e(r-i):e(t())};var se=U('<div><input type="number" class="mc-quantity-selector__control svelte-ptlds1"/> <button type="button" class="mc-quantity-selector__button mc-quantity-selector__button--increase svelte-ptlds1" tabindex="-1"><span class="mc-quantity-selector__icon svelte-ptlds1"><!></span> <span class="mc-quantity-selector__label svelte-ptlds1"> </span></button> <button type="button" class="mc-quantity-selector__button mc-quantity-selector__button--decrease svelte-ptlds1" tabindex="-1"><span class="mc-quantity-selector__icon svelte-ptlds1"><!></span> <span class="mc-quantity-selector__label svelte-ptlds1"> </span></button></div>');const le={hash:"svelte-ptlds1",code:`/**
1
+ import{c as I,p as j,b as s,A as U,t as F,h as L,i as M,j as l,l as A,m as B,w as W,a as X,f as Y,r as Z,d as u,s as _,e as m,g as V}from"../../custom-element.js";import{s as g,b as $,a as ee}from"../../attributes.js";import{c as te}from"../../input.js";import{c as re}from"../../custom-element-forward-events.js";import"../../legacy.js";import{L as se}from"../../Less24.js";var le=U('<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px"><path fill-rule="evenodd" d="M13 5a1 1 0 1 0-2 0v6H5a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6z"></path></svg>');function G(h,t){j(t,!1);let d=s(t,"id",12,void 0),r=s(t,"style",12,void 0),a=s(t,"className",12,void 0),n=s(t,"fill",12,void 0),c=s(t,"size",12,"1.5rem");var b={get id(){return d()},set id(o){d(o),l()},get style(){return r()},set style(o){r(o),l()},get className(){return a()},set className(o){a(o),l()},get fill(){return n()},set fill(o){n(o),l()},get size(){return c()},set size(o){c(o),l()}},i=le();return F(()=>{g(i,"id",d()),$(i,r()),A(i,0,B(a())),g(i,"fill",n())}),L(h,i),M(b)}customElements.define("more-24",I(G,{id:{},style:{},className:{},fill:{},size:{}},[],[],!1));var oe=Y('<div><input/> <button type="button" class="mc-quantity-selector__button mc-quantity-selector__button--increase svelte-ptlds1" tabindex="-1"><span class="mc-quantity-selector__icon svelte-ptlds1"><!></span> <span class="mc-quantity-selector__label svelte-ptlds1"> </span></button> <button type="button" class="mc-quantity-selector__button mc-quantity-selector__button--decrease svelte-ptlds1" tabindex="-1"><span class="mc-quantity-selector__icon svelte-ptlds1"><!></span> <span class="mc-quantity-selector__label svelte-ptlds1"> </span></button></div>');const ae={hash:"svelte-ptlds1",code:`/**
2
2
  * Do not edit directly, this file was auto-generated.
3
- */.mc-quantity-selector.svelte-ptlds1 {background-color:var(--forms-color-background-default, #ffffff);border:var(--border-s, 1px) solid var(--forms-color-border-default, #666666);border-radius:var(--forms-radius-border, 0.25rem);transition:all ease 200ms;color:var(--forms-color-text-default, #000000);display:block;width:100%;height:3rem;border-radius:var(--radius-s, 0.25rem);box-sizing:border-box;display:flex;gap:0.25rem;padding:0.1875rem;position:relative;}.mc-quantity-selector__control.svelte-ptlds1 {background-color:transparent;border-width:0;color:inherit;font-family:inherit;outline:none;}.mc-quantity-selector__control[type=number].svelte-ptlds1::-webkit-inner-spin-button, .mc-quantity-selector__control[type=number].svelte-ptlds1::-webkit-outer-spin-button {appearance:none;margin:0;}.mc-quantity-selector__control[type=number].svelte-ptlds1 {
4
- /* For Gecko rendering engine */appearance:textfield;}.mc-quantity-selector__control.svelte-ptlds1 {padding:0;font-size:inherit;font-size:var(--font-size-150, 1rem);line-height:var(--line-height-m, 1.5);font-weight:var(--font-weight-semi-bold, 600);cursor:inherit;text-align:center;flex-grow:1;}.mc-quantity-selector__control.svelte-ptlds1::placeholder {color:var(--forms-color-placeholder, #666666);}.mc-quantity-selector__button.svelte-ptlds1 {background-color:transparent;border-width:0;color:initial;font-family:inherit;outline:none;appearance:none;cursor:pointer;padding:0;height:2.5rem;width:2.5rem;border-radius:var(--radius-full, 100%);color:var(--quantity-selector-color-button-text-default, #242938);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}.mc-quantity-selector__button.svelte-ptlds1:disabled {color:var(--quantity-selector-color-button-text-disabled, #d9d9d9);cursor:not-allowed;}.mc-quantity-selector__button.svelte-ptlds1:hover:not(:disabled) {background-color:var(--quantity-selector-color-button-background-hover, rgba(255, 255, 255, 0.1));}.mc-quantity-selector__button--decrease.svelte-ptlds1 {order:-1;}.mc-quantity-selector__icon.svelte-ptlds1 {height:1.5rem;width:1.5rem;fill:currentcolor;}.mc-quantity-selector__label.svelte-ptlds1 {clip-path:inset(100%);clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;padding:0;width:1px;}.mc-quantity-selector.svelte-ptlds1::after {transition:box-shadow 200ms ease;border-radius:var(--radius-s, 0.25rem);content:"";position:absolute;inset:-0.125rem var(--inset-x, 3rem);pointer-events:none;display:block;}.mc-quantity-selector.svelte-ptlds1:hover:not(:focus-within) {border-color:var(--forms-color-border-hover, #4d4d4d);box-shadow:0 0 0 var(--border-s, 1px) var(--forms-color-border-hover, #4d4d4d);}.mc-quantity-selector.svelte-ptlds1:has(input:where(.svelte-ptlds1):disabled) {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;border-color:transparent;box-shadow:none;color:var(--forms-color-text-disabled, #737373);pointer-events:none;}.mc-quantity-selector.svelte-ptlds1:has(input:where(.svelte-ptlds1):disabled) .mc-quantity-selector__button:where(.svelte-ptlds1):disabled {color:var(--forms-color-icon-disabled, #737373);}.mc-quantity-selector.svelte-ptlds1:has(input[readonly]:where(.svelte-ptlds1)) {border-color:var(--forms-color-border-read-only, #cccccc);pointer-events:none;}.mc-quantity-selector.svelte-ptlds1:has(input[readonly]:where(.svelte-ptlds1)) .mc-quantity-selector__control[readonly]:where(.svelte-ptlds1) {text-align:left;padding-left:0.5rem;}.mc-quantity-selector.svelte-ptlds1:has(input:where(.svelte-ptlds1):focus)::after {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-quantity-selector--s.svelte-ptlds1 {--inset-x: 2rem;height:2rem;}.mc-quantity-selector--s.svelte-ptlds1 .mc-quantity-selector__button:where(.svelte-ptlds1) {height:1.5rem;width:1.5rem;}.mc-quantity-selector--s.svelte-ptlds1 .mc-quantity-selector__icon:where(.svelte-ptlds1) {height:1.25rem;width:1.25rem;}.mc-quantity-selector.is-invalid.svelte-ptlds1 {border-color:var(--forms-color-border-invalid, #ea302d);box-shadow:0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid, #ea302d);}.mc-quantity-selector.is-invalid.svelte-ptlds1:hover:not(:focus-within) {border-color:var(--forms-color-border-invalid-hover, #c61112);box-shadow:0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid-hover, #c61112);}.mc-quantity-selector.svelte-ptlds1 :where(.svelte-ptlds1) {box-sizing:border-box;}`};function ne(v,e){D(e,!0),T(v,le);let o=n(e,"id",7),t=n(e,"value",15,1),r=n(e,"min",7,1),i=n(e,"max",7,100),m=n(e,"step",7,1),b=n(e,"size",7,"m"),d=n(e,"disabled",7),s=n(e,"isinvalid",7,!1),x=n(e,"name",7,"quantity-selector-input"),w=n(e,"readonly",7),q=n(e,"decrementlabel",7,"Decrement"),z=n(e,"incrementlabel",7,"Increment");var Q={get id(){return o()},set id(l){o(l),a()},get value(){return t()},set value(l=1){t(l),a()},get min(){return r()},set min(l=1){r(l),a()},get max(){return i()},set max(l=100){i(l),a()},get step(){return m()},set step(l=1){m(l),a()},get size(){return b()},set size(l="m"){b(l),a()},get disabled(){return d()},set disabled(l){d(l),a()},get isinvalid(){return s()},set isinvalid(l=!1){s(l),a()},get name(){return x()},set name(l="quantity-selector-input"){x(l),a()},get readonly(){return w()},set readonly(l){w(l),a()},get decrementlabel(){return q()},set decrementlabel(l="Decrement"){q(l),a()},get incrementlabel(){return z()},set incrementlabel(l="Increment"){z(l),a()}},_=se(),c=p(_);W(c),c.__input=[ee,t,i,r];var h=g(c,2);h.__click=[te,t,m,i];var k=p(h),C=p(k);O(C,{}),f(k);var B=g(k,2),J=p(B,!0);f(B),f(h);var y=g(h,2);y.__click=[re,t,m,r];var N=p(y),K=p(N);L(K,{}),f(N);var F=g(N,2),P=p(F,!0);return f(F),f(y),f(_),S(()=>{M(_,1,j(["mc-quantity-selector",`mc-quantity-selector--${b()}`,s()&&"is-invalid"]),"svelte-ptlds1"),u(c,"id",o()),u(c,"name",x()),u(c,"aria-valuemin",r()),u(c,"aria-valuemax",i()),u(c,"aria-valuenow",t()),u(c,"aria-invalid",`${s()}`),c.readOnly=w(),c.disabled=d(),u(h,"aria-controls",o()),h.disabled=t()===i()||d(),H(J,z()),u(y,"aria-controls",o()),y.disabled=t()===r()||d(),H(P,q())}),X(c,t),V(v,_),I(Q)}R(["input","click"]);customElements.define("m-quantityselector",E(ne,{id:{},value:{},min:{},max:{},step:{},size:{},disabled:{},isinvalid:{},name:{},readonly:{},decrementlabel:{},incrementlabel:{}},[],[],!0,Y));
3
+ */.mc-quantity-selector.svelte-ptlds1 {background-color:var(--forms-color-background-default, #ffffff);border:var(--border-width-s, 0.0625rem) solid var(--forms-color-border-default, #666666);border-radius:var(--forms-border-radius, 0.25rem);transition:all ease 200ms;color:var(--forms-color-text-default, #000000);display:block;width:100%;height:3rem;box-sizing:border-box;display:flex;gap:0.25rem;padding:0.1875rem;position:relative;border-radius:var(--border-radius-s, 0.25rem);}.mc-quantity-selector__control.svelte-ptlds1 {background-color:transparent;border-width:0;color:inherit;font-family:inherit;outline:none;}.mc-quantity-selector__control[type=number].svelte-ptlds1::-webkit-inner-spin-button, .mc-quantity-selector__control[type=number].svelte-ptlds1::-webkit-outer-spin-button {appearance:none;margin:0;}.mc-quantity-selector__control[type=number].svelte-ptlds1 {
4
+ /* For Gecko rendering engine */appearance:textfield;}.mc-quantity-selector__control.svelte-ptlds1 {padding:0;font-size:inherit;font-size:var(--font-size-150, 1rem);line-height:var(--line-height-m, 1.5);font-weight:var(--font-weight-semi-bold, 600);cursor:inherit;text-align:center;flex-grow:1;}.mc-quantity-selector__control.svelte-ptlds1::placeholder {color:var(--forms-color-placeholder, #666666);}.mc-quantity-selector__button.svelte-ptlds1 {background-color:transparent;border-width:0;color:initial;font-family:inherit;outline:none;appearance:none;cursor:pointer;padding:0;height:2.5rem;width:2.5rem;border-radius:var(--border-radius-full, 100%);color:var(--quantity-selector-color-button-text-default, #242938);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}.mc-quantity-selector__button.svelte-ptlds1:disabled {color:var(--quantity-selector-color-button-text-disabled, #d9d9d9);cursor:not-allowed;}.mc-quantity-selector__button.svelte-ptlds1:hover:not(:disabled) {background-color:var(--quantity-selector-color-button-background-hover, rgba(255, 255, 255, 0.1));}.mc-quantity-selector__button--decrease.svelte-ptlds1 {order:-1;}.mc-quantity-selector__icon.svelte-ptlds1 {height:1.5rem;width:1.5rem;fill:currentcolor;}.mc-quantity-selector__label.svelte-ptlds1 {clip-path:inset(100%);clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;padding:0;width:1px;}.mc-quantity-selector.svelte-ptlds1::after {transition:box-shadow 200ms ease;content:"";position:absolute;inset:-0.125rem var(--inset-x, 3rem);pointer-events:none;display:block;border-radius:var(--border-radius-s, 0.25rem);}.mc-quantity-selector.svelte-ptlds1:hover:not(:focus-within) {border-color:var(--forms-color-border-hover, #4d4d4d);box-shadow:0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-hover, #4d4d4d);}.mc-quantity-selector.svelte-ptlds1:has(input:where(.svelte-ptlds1):disabled) {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;border-color:transparent;box-shadow:none;color:var(--forms-color-text-disabled, #737373);pointer-events:none;}.mc-quantity-selector.svelte-ptlds1:has(input:where(.svelte-ptlds1):disabled) .mc-quantity-selector__button:where(.svelte-ptlds1):disabled {color:var(--forms-color-icon-disabled, #737373);}.mc-quantity-selector.svelte-ptlds1:has(input[readonly]:where(.svelte-ptlds1)) {border-color:var(--forms-color-border-read-only, #cccccc);pointer-events:none;}.mc-quantity-selector.svelte-ptlds1:has(input[readonly]:where(.svelte-ptlds1)) .mc-quantity-selector__control[readonly]:where(.svelte-ptlds1) {text-align:left;padding-left:0.5rem;}.mc-quantity-selector.svelte-ptlds1:has(input:where(.svelte-ptlds1):focus)::after {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-quantity-selector--s.svelte-ptlds1 {--inset-x: 2rem;height:2rem;}.mc-quantity-selector--s.svelte-ptlds1 .mc-quantity-selector__button:where(.svelte-ptlds1) {height:1.5rem;width:1.5rem;}.mc-quantity-selector--s.svelte-ptlds1 .mc-quantity-selector__icon:where(.svelte-ptlds1) {height:1.25rem;width:1.25rem;}.mc-quantity-selector.is-invalid.svelte-ptlds1 {border-color:var(--forms-color-border-invalid, #ea302d);box-shadow:0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid, #ea302d);}.mc-quantity-selector.is-invalid.svelte-ptlds1:hover:not(:focus-within) {border-color:var(--forms-color-border-invalid-hover, #c61112);box-shadow:0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid-hover, #c61112);}.mc-quantity-selector.svelte-ptlds1 :where(.svelte-ptlds1) {box-sizing:border-box;}`};function ne(h,t){j(t,!0),X(h,ae);let d=s(t,"id",7),r=s(t,"value",15,1),a=s(t,"min",7,1),n=s(t,"max",7,100),c=s(t,"step",7,1),b=s(t,"size",7,"m"),i=s(t,"disabled",7),o=s(t,"isinvalid",7,!1),w=s(t,"name",7,"quantity-selector-input"),x=s(t,"readonly",7),q=s(t,"decrementlabel",7,"Decrement"),k=s(t,"incrementlabel",7,"Increment"),H=Z(t,["$$slots","$$events","$$legacy","$$host","id","value","min","max","step","size","disabled","isinvalid","name","readonly","decrementlabel","incrementlabel"]);const Q=()=>{const e=Number(r());e>n()?r(n()):e<a()?r(a()):r(e)},C=()=>{const e=Number(r()),f=Number(c());e+f<=n()?r(e+f):r(n())},J=()=>{const e=Number(r()),f=Number(c());e-f>=a()?r(e-f):r(a())};var K={get id(){return d()},set id(e){d(e),l()},get value(){return r()},set value(e=1){r(e),l()},get min(){return a()},set min(e=1){a(e),l()},get max(){return n()},set max(e=100){n(e),l()},get step(){return c()},set step(e=1){c(e),l()},get size(){return b()},set size(e="m"){b(e),l()},get disabled(){return i()},set disabled(e){i(e),l()},get isinvalid(){return o()},set isinvalid(e=!1){o(e),l()},get name(){return w()},set name(e="quantity-selector-input"){w(e),l()},get readonly(){return x()},set readonly(e){x(e),l()},get decrementlabel(){return q()},set decrementlabel(e="Decrement"){q(e),l()},get incrementlabel(){return k()},set incrementlabel(e="Increment"){k(e),l()}},y=oe(),z=u(y);ee(z,()=>({type:"number",id:d(),name:w(),oninput:Q,class:"mc-quantity-selector__control","aria-valuemin":a(),"aria-valuemax":n(),"aria-valuenow":r(),"aria-invalid":`${o()}`,readonly:x(),disabled:i(),...H}),void 0,void 0,void 0,"svelte-ptlds1",!0);var v=_(z,2);v.__click=C;var N=u(v),O=u(N);G(O,{}),m(N);var E=_(N,2),P=u(E,!0);m(E),m(v);var p=_(v,2);p.__click=J;var D=u(p),R=u(D);se(R,{}),m(D);var S=_(D,2),T=u(S,!0);return m(S),m(p),m(y),F(()=>{A(y,1,B(["mc-quantity-selector",`mc-quantity-selector--${b()}`,o()&&"is-invalid"]),"svelte-ptlds1"),g(v,"aria-controls",d()),v.disabled=r()===n()||i(),V(P,k()),g(p,"aria-controls",d()),p.disabled=r()===a()||i(),V(T,q())}),te(z,r),L(h,y),M(K)}W(["click"]);customElements.define("m-quantityselector",I(ne,{id:{},value:{},min:{},max:{},step:{},size:{},disabled:{},isinvalid:{},name:{},readonly:{},decrementlabel:{},incrementlabel:{}},[],[],!0,re));
5
5
  //# sourceMappingURL=QuantitySelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuantitySelector.js","sources":["../../../node_modules/@mozaic-ds/icons-svelte/dist/components/Less24/Less24.svelte","../../../node_modules/@mozaic-ds/icons-svelte/dist/components/More24/More24.svelte","../../../src/components/quantityselector/QuantitySelector.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'less-24', shadow: 'none' }} />\n<script>\n export let id = undefined;\n export let style = undefined;\n export let className = undefined;\n export let fill = undefined;\n export let size = \"1.5rem\";\n</script>\n\n<svg aria-hidden=\"true\" id={id} style={style} class={className} fill={fill} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\"><path fill-rule=\"evenodd\" d=\"M6 12a1 1 0 0 1 1-1h10a1 1 0 1 1 0 2H7a1 1 0 0 1-1-1\"/></svg>","<svelte:options customElement={{ tag: 'more-24', shadow: 'none' }} />\n<script>\n export let id = undefined;\n export let style = undefined;\n export let className = undefined;\n export let fill = undefined;\n export let size = \"1.5rem\";\n</script>\n\n<svg aria-hidden=\"true\" id={id} style={style} class={className} fill={fill} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\"><path fill-rule=\"evenodd\" d=\"M13 5a1 1 0 1 0-2 0v6H5a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6z\"/></svg>","<svelte:options\n customElement={{\n tag: 'm-quantityselector',\n extend: customElementForwardEvents,\n }}\n/>\n\n<script lang=\"ts\">\n import { customElementForwardEvents } from '../../utils';\n import Less24 from '@mozaic-ds/icons-svelte/svelte/Less24/Less24.svelte';\n import More24 from '@mozaic-ds/icons-svelte/svelte/More24/More24.svelte';\n /**\n * A quantity selector is an input component that allows users to increment or decrement a numeric value, typically using plus (+) and minus (−) buttons. It provides a simple and efficient way to adjust quantities without manual typing, ensuring controlled input. This component is commonly used in e-commerce, inventory management, and settings where users need to specify amounts.\n */\n interface Props {\n /**\n * A unique identifier for the quantity selector element, used to associate the label with the form element.\n */\n id: string;\n /**\n * The name attribute for the quantity selector element, typically used for form submission.\n */\n name?: string;\n /**\n * The current value of the quantity selector field.\n */\n value?: number;\n /**\n * If `true`, applies an invalid state to the quantity selector.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the quantity selector, making it non-interactive.\n */\n disabled?: boolean;\n /**\n * Determines the size of the quantity selector.\n */\n size?: 's' | 'm';\n /**\n * Minimum acceptable value for the quantity selector.\n */\n min?: number;\n /**\n * Maximum acceptable value for the quantity selector.\n */\n max?: number;\n /**\n * Determines how much the value will change per click when the quantity is increased or decreased.\n */\n step?: number;\n /**\n * If `true`, the quantity selector is read-only (cannot be edited).\n */\n readonly?: boolean;\n /**\n * The label text for the increment button.\n */\n incrementlabel?: string;\n /**\n * The label text for the decrement button.\n */\n decrementlabel?: string;\n }\n\n let {\n id,\n value = $bindable(1),\n min = 1,\n max = 100,\n step = 1,\n size = 'm',\n disabled,\n isinvalid = false,\n name = 'quantity-selector-input',\n readonly,\n decrementlabel = 'Decrement',\n incrementlabel = 'Increment',\n }: Props = $props();\n\n const onValue = (): void => {\n const numericValue = Number(value);\n if (numericValue > max) {\n value = max;\n } else if (numericValue < min) {\n value = min;\n } else {\n value = numericValue;\n }\n };\n\n const onIncrement = (): void => {\n const numericValue = Number(value);\n const numericStep = Number(step);\n\n if (numericValue + numericStep <= max) {\n value = numericValue + numericStep;\n } else {\n value = max;\n }\n };\n\n const onDecrement = (): void => {\n const numericValue = Number(value);\n const numericStep = Number(step);\n\n if (numericValue - numericStep >= min) {\n value = numericValue - numericStep;\n } else {\n value = min;\n }\n };\n</script>\n\n<div class={['mc-quantity-selector', `mc-quantity-selector--${size}`, isinvalid && 'is-invalid']}>\n <input\n type=\"number\"\n {id}\n {name}\n bind:value\n oninput={onValue}\n class=\"mc-quantity-selector__control\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-invalid={`${isinvalid}`}\n {readonly}\n {disabled}\n />\n <button\n type=\"button\"\n aria-controls={id}\n class=\"mc-quantity-selector__button mc-quantity-selector__button--increase\"\n tabindex=\"-1\"\n disabled={value === max || disabled}\n onclick={onIncrement}\n >\n <span class=\"mc-quantity-selector__icon\">\n <More24 />\n </span>\n <span class=\"mc-quantity-selector__label\">{incrementlabel}</span>\n </button>\n <button\n type=\"button\"\n aria-controls={id}\n class=\"mc-quantity-selector__button mc-quantity-selector__button--decrease\"\n tabindex=\"-1\"\n disabled={value === min || disabled}\n onclick={onDecrement}\n >\n <span class=\"mc-quantity-selector__icon\">\n <Less24 />\n </span>\n <span class=\"mc-quantity-selector__label\">{decrementlabel}</span>\n </button>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/quantity-selector';\n</style>\n"],"names":["id","style","className","fill","size","onValue","_","value","max","min","numericValue","onIncrement","__1","step","numericStep","onDecrement","__2","$.prop","$$props","disabled","isinvalid","name","readonly","decrementlabel","incrementlabel","customElementForwardEvents"],"mappings":"wiBAAA,SAEa,IAAAA,cAAK,MAAS,EACdC,iBAAQ,MAAS,EACjBC,qBAAY,MAAS,EACrBC,gBAAO,MAAS,EAChBC,gBAAO,QAAQ,gRAGAJ,GAAE,MAAUC,GAAK,UAASC,EAAS,CAAA,CAAA,aAAQC,GAAI,eAF3E,6VCPA,SAEa,IAAAH,cAAK,MAAS,EACdC,iBAAQ,MAAS,EACjBC,qBAAY,MAAS,EACrBC,gBAAO,MAAS,EAChBC,gBAAO,QAAQ,gRAGAJ,GAAE,MAAUC,GAAK,UAASC,EAAS,CAAA,CAAA,aAAQC,GAAI,eAF3E,8FCyEQ,MAAAE,GAAO,CAAAC,EAAAC,EAAAC,EAAAC,IAAe,OACpBC,EAAe,OAAOH,GAAK,EAC7BG,EAAeF,IACjBD,EAAQC,EAAG,CAAA,EACFE,EAAeD,IACxBF,EAAQE,EAAG,CAAA,EAEXF,EAAQG,CAAY,CAExB,EAEMC,GAAW,CAAAC,EAAAL,EAAAM,EAAAL,IAAe,OACxBE,EAAe,OAAOH,GAAK,EAC3BO,EAAc,OAAOD,GAAI,EAE3BH,EAAeI,GAAeN,IAChCD,EAAQG,EAAeI,CAAW,EAElCP,EAAQC,EAAG,CAAA,CAEf,EAEMO,GAAW,CAAAC,EAAAT,EAAAM,EAAAJ,IAAe,OACxBC,EAAe,OAAOH,GAAK,EAC3BO,EAAc,OAAOD,GAAI,EAE3BH,EAAeI,GAAeL,IAChCF,EAAQG,EAAeI,CAAW,EAElCP,EAAQE,EAAG,CAAA,CAEf;;;osHA/GF,qBAkEIT,EAAEiB,EAAAC,EAAA,KAAA,CAAA,EACFX,iBAAkB,CAAC,EACnBE,cAAM,CAAC,EACPD,cAAM,GAAG,EACTK,eAAO,CAAC,EACRT,eAAO,GAAG,EACVe,EAAQF,EAAAC,EAAA,WAAA,CAAA,EACRE,oBAAY,EAAK,EACjBC,eAAO,yBAAyB,EAChCC,EAAQL,EAAAC,EAAA,WAAA,CAAA,EACRK,yBAAiB,WAAW,EAC5BC,yBAAiB,WAAW,sFAVV,EAAC,2CACb,EAAC,2CACD,IAAG,6CACF,EAAC,6CACD,IAAG,4GAEE,GAAK,6CACV,0BAAyB,sHAEf,YAAW,iEACX,YAAW,0CA2CnBnB,GAAOE,EAAAC,EAAAC,CAAA,0BAePE,GAAWJ,EAAAM,EAAAL,CAAA,0FAaXO,GAAWR,EAAAM,EAAAJ,CAAA,8FAlCX,gDAAiDL,EAAI,CAAA,GAAIgB,KAAa,kFAQhEX,GAAG,sBACHD,GAAG,sBACHD,GAAK,wBACHa,EAAS,CAAA,EAAA,oDAMXpB,GAAE,aAGPO,EAAK,IAAKC,EAAG,GAAIW,EAAQ,MAMQK,GAAc,sBAI1CxB,GAAE,aAGPO,EAAK,IAAKE,EAAG,GAAIU,EAAQ,MAMQI,GAAc,sBAzC7D,+MA7GYE","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"QuantitySelector.js","sources":["../../../node_modules/@mozaic-ds/icons-svelte/dist/components/More24/More24.svelte","../../../src/components/quantityselector/QuantitySelector.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'more-24', shadow: 'none' }} />\n<script>\n export let id = undefined;\n export let style = undefined;\n export let className = undefined;\n export let fill = undefined;\n export let size = \"1.5rem\";\n</script>\n\n<svg aria-hidden=\"true\" id={id} style={style} class={className} fill={fill} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\"><path fill-rule=\"evenodd\" d=\"M13 5a1 1 0 1 0-2 0v6H5a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6z\"/></svg>","<svelte:options\n customElement={{\n tag: 'm-quantityselector',\n extend: customElementForwardEvents,\n }}\n/>\n\n<script lang=\"ts\">\n import { customElementForwardEvents } from '../../utils';\n import More24 from '@mozaic-ds/icons-svelte/svelte/More24/More24.svelte';\n import Less24 from '@mozaic-ds/icons-svelte/svelte/Less24/Less24.svelte';\n /**\n * A quantity selector is an input component that allows users to increment or decrement a numeric value, typically using plus (+) and minus (−) buttons. It provides a simple and efficient way to adjust quantities without manual typing, ensuring controlled input. This component is commonly used in e-commerce, inventory management, and settings where users need to specify amounts.\n */\n interface Props {\n /**\n * A unique identifier for the quantity selector element, used to associate the label with the form element.\n */\n id: string;\n /**\n * The name attribute for the quantity selector element, typically used for form submission.\n */\n name?: string;\n /**\n * The current value of the quantity selector field.\n */\n value?: number;\n /**\n * If `true`, applies an invalid state to the quantity selector.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the quantity selector, making it non-interactive.\n */\n disabled?: boolean;\n /**\n * Determines the size of the quantity selector.\n */\n size?: 's' | 'm';\n /**\n * Minimum acceptable value for the quantity selector.\n */\n min?: number;\n /**\n * Maximum acceptable value for the quantity selector.\n */\n max?: number;\n /**\n * Determines how much the value will change per click when the quantity is increased or decreased.\n */\n step?: number;\n /**\n * If `true`, the quantity selector is read-only (cannot be edited).\n */\n readonly?: boolean;\n /**\n * The label text for the increment button.\n */\n incrementlabel?: string;\n /**\n * The label text for the decrement button.\n */\n decrementlabel?: string;\n }\n\n let {\n id,\n value = $bindable(1),\n min = 1,\n max = 100,\n step = 1,\n size = 'm',\n disabled,\n isinvalid = false,\n name = 'quantity-selector-input',\n readonly,\n decrementlabel = 'Decrement',\n incrementlabel = 'Increment',\n ...attrs\n }: Props = $props();\n\n const onValue = (): void => {\n const numericValue = Number(value);\n if (numericValue > max) {\n value = max;\n } else if (numericValue < min) {\n value = min;\n } else {\n value = numericValue;\n }\n };\n\n const onIncrement = (): void => {\n const numericValue = Number(value);\n const numericStep = Number(step);\n\n if (numericValue + numericStep <= max) {\n value = numericValue + numericStep;\n } else {\n value = max;\n }\n };\n\n const onDecrement = (): void => {\n const numericValue = Number(value);\n const numericStep = Number(step);\n\n if (numericValue - numericStep >= min) {\n value = numericValue - numericStep;\n } else {\n value = min;\n }\n };\n</script>\n\n<div class={['mc-quantity-selector', `mc-quantity-selector--${size}`, isinvalid && 'is-invalid']}>\n <input\n type=\"number\"\n {id}\n {name}\n bind:value\n oninput={onValue}\n class=\"mc-quantity-selector__control\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-invalid={`${isinvalid}`}\n {readonly}\n {disabled}\n {...attrs}\n />\n <button\n type=\"button\"\n aria-controls={id}\n class=\"mc-quantity-selector__button mc-quantity-selector__button--increase\"\n tabindex=\"-1\"\n disabled={value === max || disabled}\n onclick={onIncrement}\n >\n <span class=\"mc-quantity-selector__icon\">\n <More24 />\n </span>\n <span class=\"mc-quantity-selector__label\">{incrementlabel}</span>\n </button>\n <button\n type=\"button\"\n aria-controls={id}\n class=\"mc-quantity-selector__button mc-quantity-selector__button--decrease\"\n tabindex=\"-1\"\n disabled={value === min || disabled}\n onclick={onDecrement}\n >\n <span class=\"mc-quantity-selector__icon\">\n <Less24 />\n </span>\n <span class=\"mc-quantity-selector__label\">{decrementlabel}</span>\n </button>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/quantity-selector';\n</style>\n"],"names":["id","style","className","fill","size","$.prop","$$props","value","min","max","step","disabled","isinvalid","name","readonly","decrementlabel","incrementlabel","attrs","$.rest_props","onValue","numericValue","onIncrement","numericStep","onDecrement","customElementForwardEvents"],"mappings":"unBAAA,SAEa,IAAAA,cAAK,MAAS,EACdC,iBAAQ,MAAS,EACjBC,qBAAY,MAAS,EACrBC,gBAAO,MAAS,EAChBC,gBAAO,QAAQ,iRAGAJ,GAAE,MAAUC,GAAK,UAASC,EAAS,CAAA,CAAA,aAAQC,GAAI,eAF3E;;;svHCPA,qBAkEIH,EAAEK,EAAAC,EAAA,KAAA,CAAA,EACFC,iBAAkB,CAAC,EACnBC,cAAM,CAAC,EACPC,cAAM,GAAG,EACTC,eAAO,CAAC,EACRN,eAAO,GAAG,EACVO,EAAQN,EAAAC,EAAA,WAAA,CAAA,EACRM,oBAAY,EAAK,EACjBC,eAAO,yBAAyB,EAChCC,EAAQT,EAAAC,EAAA,WAAA,CAAA,EACRS,yBAAiB,WAAW,EAC5BC,yBAAiB,WAAW,EACzBC,EAAAC,EAAAZ,EAAA,8JAGC,MAAAa,EAAO,IAAe,OACpBC,EAAe,OAAOb,GAAK,EAC7Ba,EAAeX,IACjBF,EAAQE,EAAG,CAAA,EACFW,EAAeZ,IACxBD,EAAQC,EAAG,CAAA,EAEXD,EAAQa,CAAY,CAExB,EAEMC,EAAW,IAAe,OACxBD,EAAe,OAAOb,GAAK,EAC3Be,EAAc,OAAOZ,GAAI,EAE3BU,EAAeE,GAAeb,IAChCF,EAAQa,EAAeE,CAAW,EAElCf,EAAQE,EAAG,CAAA,CAEf,EAEMc,EAAW,IAAe,OACxBH,EAAe,OAAOb,GAAK,EAC3Be,EAAc,OAAOZ,GAAI,EAE3BU,EAAeE,GAAed,IAChCD,EAAQa,EAAeE,CAAW,EAElCf,EAAQC,EAAG,CAAA,CAEf,sFA7CoB,EAAC,2CACb,EAAC,2CACD,IAAG,6CACF,EAAC,6CACD,IAAG,4GAEE,GAAK,6CACV,0BAAyB,sHAEf,YAAW,iEACX,YAAW,2EA4CnBW,wDAEMX,EAAG,kBACHC,EAAG,kBACHF,EAAK,oBACHK,EAAS,CAAA,gCAGtBK,oEAQKI,yFAaAE,+FAnCA,gDAAiDnB,EAAI,CAAA,GAAIQ,KAAa,oDAkBhEZ,GAAE,aAGPO,EAAK,IAAKE,EAAG,GAAIE,EAAQ,MAMQK,GAAc,sBAI1ChB,GAAE,aAGPO,EAAK,IAAKC,EAAG,GAAIG,EAAQ,MAMQI,GAAc,uBA1C7D,uMA9GYS","x_google_ignoreList":[0]}
@@ -1,4 +1,5 @@
1
1
  import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import './QuantitySelector.svelte';
2
3
  declare const meta: Meta;
3
4
  export default meta;
4
5
  type Story = StoryObj;
@@ -1 +1 @@
1
- {"version":3,"file":"QuantitySelector.stories.d.ts","sourceRoot":"","sources":["../../../src/components/quantityselector/QuantitySelector.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,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,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
1
+ {"version":3,"file":"QuantitySelector.stories.d.ts","sourceRoot":"","sources":["../../../src/components/quantityselector/QuantitySelector.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,2BAA2B,CAAC;AAEnC,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,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { html } from 'lit';
2
2
  import { ifDefined } from 'lit-html/directives/if-defined.js';
3
3
  import { action } from 'storybook/actions';
4
+ import './QuantitySelector.svelte';
4
5
  const meta = {
5
6
  title: 'Form Elements/Quantity Selector',
6
7
  component: 'm-quantityselector',
@@ -7,8 +7,8 @@
7
7
 
8
8
  <script lang="ts">
9
9
  import { customElementForwardEvents } from '../../utils';
10
- import Less24 from '@mozaic-ds/icons-svelte/svelte/Less24/Less24.svelte';
11
10
  import More24 from '@mozaic-ds/icons-svelte/svelte/More24/More24.svelte';
11
+ import Less24 from '@mozaic-ds/icons-svelte/svelte/Less24/Less24.svelte';
12
12
  /**
13
13
  * A quantity selector is an input component that allows users to increment or decrement a numeric value, typically using plus (+) and minus (−) buttons. It provides a simple and efficient way to adjust quantities without manual typing, ensuring controlled input. This component is commonly used in e-commerce, inventory management, and settings where users need to specify amounts.
14
14
  */
@@ -76,6 +76,7 @@
76
76
  readonly,
77
77
  decrementlabel = 'Decrement',
78
78
  incrementlabel = 'Increment',
79
+ ...attrs
79
80
  }: Props = $props();
80
81
 
81
82
  const onValue = (): void => {
@@ -126,6 +127,7 @@
126
127
  aria-invalid={`${isinvalid}`}
127
128
  {readonly}
128
129
  {disabled}
130
+ {...attrs}
129
131
  />
130
132
  <button
131
133
  type="button"
@@ -160,19 +162,19 @@
160
162
  */
161
163
  .mc-quantity-selector {
162
164
  background-color: var(--forms-color-background-default, #ffffff);
163
- border: var(--border-s, 1px) solid var(--forms-color-border-default, #666666);
164
- border-radius: var(--forms-radius-border, 0.25rem);
165
+ border: var(--border-width-s, 0.0625rem) solid var(--forms-color-border-default, #666666);
166
+ border-radius: var(--forms-border-radius, 0.25rem);
165
167
  transition: all ease 200ms;
166
168
  color: var(--forms-color-text-default, #000000);
167
169
  display: block;
168
170
  width: 100%;
169
171
  height: 3rem;
170
- border-radius: var(--radius-s, 0.25rem);
171
172
  box-sizing: border-box;
172
173
  display: flex;
173
174
  gap: 0.25rem;
174
175
  padding: 0.1875rem;
175
176
  position: relative;
177
+ border-radius: var(--border-radius-s, 0.25rem);
176
178
  }
177
179
  .mc-quantity-selector__control {
178
180
  background-color: transparent;
@@ -219,7 +221,7 @@
219
221
  padding: 0;
220
222
  height: 2.5rem;
221
223
  width: 2.5rem;
222
- border-radius: var(--radius-full, 100%);
224
+ border-radius: var(--border-radius-full, 100%);
223
225
  color: var(--quantity-selector-color-button-text-default, #242938);
224
226
  display: inline-flex;
225
227
  align-items: center;
@@ -253,16 +255,16 @@
253
255
  }
254
256
  .mc-quantity-selector::after {
255
257
  transition: box-shadow 200ms ease;
256
- border-radius: var(--radius-s, 0.25rem);
257
258
  content: "";
258
259
  position: absolute;
259
260
  inset: -0.125rem var(--inset-x, 3rem);
260
261
  pointer-events: none;
261
262
  display: block;
263
+ border-radius: var(--border-radius-s, 0.25rem);
262
264
  }
263
265
  .mc-quantity-selector:hover:not(:focus-within) {
264
266
  border-color: var(--forms-color-border-hover, #4d4d4d);
265
- box-shadow: 0 0 0 var(--border-s, 1px) var(--forms-color-border-hover, #4d4d4d);
267
+ box-shadow: 0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-hover, #4d4d4d);
266
268
  }
267
269
  .mc-quantity-selector:has(input:disabled) {
268
270
  background-color: var(--forms-color-background-disabled, #d9d9d9);
@@ -302,11 +304,11 @@
302
304
  }
303
305
  .mc-quantity-selector.is-invalid {
304
306
  border-color: var(--forms-color-border-invalid, #ea302d);
305
- box-shadow: 0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid, #ea302d);
307
+ box-shadow: 0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid, #ea302d);
306
308
  }
307
309
  .mc-quantity-selector.is-invalid:hover:not(:focus-within) {
308
310
  border-color: var(--forms-color-border-invalid-hover, #c61112);
309
- box-shadow: 0 0 0 var(--border-s, 1px) var(--forms-color-border-invalid-hover, #c61112);
311
+ box-shadow: 0 0 0 var(--border-width-s, 0.0625rem) var(--forms-color-border-invalid-hover, #c61112);
310
312
  }
311
313
  .mc-quantity-selector * {
312
314
  box-sizing: border-box;
@@ -1 +1 @@
1
- {"version":3,"file":"QuantitySelector.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/quantityselector/QuantitySelector.svelte.ts"],"names":[],"mappings":"AAOE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiFH,QAAA,MAAM,gBAAgB,gDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"QuantitySelector.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/quantityselector/QuantitySelector.svelte.ts"],"names":[],"mappings":"AAOE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkFH,QAAA,MAAM,gBAAgB,gDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- import{c as k,p as w,a as g,b as a,f as q,s as x,d as f,t as y,i as E,j as z,k as t,r as _,e as j,g as B,h as D}from"../../custom-element.js";import{r as F,s as u,c as R}from"../../attributes.js";import{c as S}from"../../custom-element-forward-events.js";var A=q('<div class="mc-radio svelte-1bwbq3n"><input type="radio"/> <label class="mc-radio__label svelte-1bwbq3n"> </label></div>');const C={hash:"svelte-1bwbq3n",code:`/**
1
+ import{c as w,p as k,a as g,b as o,f as q,r as x,d as v,s as y,t as E,h as z,i as j,j as a,e as f,g as B}from"../../custom-element.js";import{a as D,s as F}from"../../attributes.js";import{c as R}from"../../custom-element-forward-events.js";var S=q('<div class="mc-radio svelte-1bwbq3n"><input/> <label class="mc-radio__label svelte-1bwbq3n"> </label></div>');const A={hash:"svelte-1bwbq3n",code:`/**
2
2
  * Do not edit directly, this file was auto-generated.
3
- */.mc-radio.svelte-1bwbq3n {align-items:center;display:flex;gap:0.5rem;padding:0.375rem;}.mc-radio__label.svelte-1bwbq3n {font-size:var(--font-size-150, 1rem);line-height:var(--line-height-s, 1.3);color:var(--forms-color-text-default, #000000);cursor:pointer;}.mc-radio__input.svelte-1bwbq3n {appearance:none;margin:0;cursor:pointer;flex-shrink:0;transition:box-shadow 200ms ease;background-color:var(--forms-color-background-default, #ffffff);border:var(--border-m, 0.125rem) solid var(--forms-color-border-default, #666666);border-radius:100%;transition:all ease 200ms;height:1.25rem;width:1.25rem;position:relative;}.mc-radio__input.svelte-1bwbq3n::before {border-radius:var(--radius-full, 100%);content:"";display:block;height:0.5rem;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:0.5rem;}.mc-radio__input.svelte-1bwbq3n:hover {border-color:var(--forms-color-border-hover, #4d4d4d);}.mc-radio__input.svelte-1bwbq3n:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, var(--focus-color-outline-mid, #ffffff)), 0 0 0 0.25rem var(--focus-color-outer, var(--focus-color-outline-outer, #000000));outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-radio__input.svelte-1bwbq3n:checked {background-color:var(--forms-color-background-checked, #117f03);}.mc-radio__input.svelte-1bwbq3n:checked::before {background-color:var(--forms-color-background-default, #ffffff);}.mc-radio__input.svelte-1bwbq3n:checked, .mc-radio__input.svelte-1bwbq3n:disabled {border-color:transparent;}.mc-radio__input.svelte-1bwbq3n:disabled {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:disabled:checked::before {background-color:var(--forms-color-icon-disabled, #737373);}.mc-radio__input.svelte-1bwbq3n:disabled + .mc-radio__label:where(.svelte-1bwbq3n) {color:var(--forms-color-text-disabled, #737373);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:not(:disabled):checked:hover {background-color:var(--forms-color-background-checked-hover, #006902);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked) {border-color:var(--forms-color-border-invalid, #ea302d);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked):hover {border-color:var(--forms-color-border-invalid-hover, #c61112);}`};function G(v,r){w(r,!0),g(v,C);let i=a(r,"id",7),d=a(r,"name",7),l=a(r,"label",7),s=a(r,"checked",15,!1),n=a(r,"disabled",7),c=a(r,"isinvalid",7);var h={get id(){return i()},set id(e){i(e),t()},get name(){return d()},set name(e){d(e),t()},get label(){return l()},set label(e){l(e),t()},get checked(){return s()},set checked(e=!1){s(e),t()},get disabled(){return n()},set disabled(e){n(e),t()},get isinvalid(){return c()},set isinvalid(e){c(e),t()}},b=A(),o=f(b);F(o);var m=x(o,2),p=f(m,!0);return _(m),_(b),y(()=>{u(o,"id",i()),j(o,1,B(["mc-radio__input",c()&&"is-invalid"]),"svelte-1bwbq3n"),u(o,"name",d()),o.disabled=n(),R(o,s()),u(m,"for",i()),D(p,l())}),E(v,b),z(h)}customElements.define("m-radio",k(G,{checked:{attribute:"checked",reflect:!0,type:"Boolean"},id:{},name:{},label:{},disabled:{},isinvalid:{}},[],[],!0,S));
3
+ */.mc-radio.svelte-1bwbq3n {align-items:center;display:flex;gap:0.5rem;padding:0.375rem;}.mc-radio__label.svelte-1bwbq3n {font-size:var(--font-size-150, 1rem);line-height:var(--line-height-s, 1.3);color:var(--forms-color-text-default, #000000);cursor:pointer;}.mc-radio__input.svelte-1bwbq3n {appearance:none;margin:0;cursor:pointer;flex-shrink:0;transition:box-shadow 200ms ease;background-color:var(--forms-color-background-default, #ffffff);border:var(--border-width-m, 0.125rem) solid var(--forms-color-border-default, #666666);border-radius:100%;transition:all ease 200ms;height:1.25rem;width:1.25rem;position:relative;}.mc-radio__input.svelte-1bwbq3n::before {border-radius:var(--border-radius-full, 100%);content:"";display:block;height:0.5rem;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:0.5rem;}.mc-radio__input.svelte-1bwbq3n:hover {border-color:var(--forms-color-border-hover, #4d4d4d);}.mc-radio__input.svelte-1bwbq3n:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, var(--focus-color-outline-mid, #ffffff)), 0 0 0 0.25rem var(--focus-color-outer, var(--focus-color-outline-outer, #000000));outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-radio__input.svelte-1bwbq3n:checked {background-color:var(--forms-color-background-checked, #117f03);}.mc-radio__input.svelte-1bwbq3n:checked::before {background-color:var(--forms-color-background-default, #ffffff);}.mc-radio__input.svelte-1bwbq3n:checked, .mc-radio__input.svelte-1bwbq3n:disabled {border-color:transparent;}.mc-radio__input.svelte-1bwbq3n:disabled {background-color:var(--forms-color-background-disabled, #d9d9d9);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:disabled:checked::before {background-color:var(--forms-color-icon-disabled, #737373);}.mc-radio__input.svelte-1bwbq3n:disabled + .mc-radio__label:where(.svelte-1bwbq3n) {color:var(--forms-color-text-disabled, #737373);cursor:not-allowed;}.mc-radio__input.svelte-1bwbq3n:not(:disabled):checked:hover {background-color:var(--forms-color-background-checked-hover, #006902);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked) {border-color:var(--forms-color-border-invalid, #ea302d);}.mc-radio__input.is-invalid.svelte-1bwbq3n:not(:checked):hover {border-color:var(--forms-color-border-invalid-hover, #c61112);}`};function C(m,r){k(r,!0),g(m,A);let t=o(r,"id",7),i=o(r,"name",7),d=o(r,"label",7),l=o(r,"checked",15,!1),s=o(r,"disabled",7),n=o(r,"isinvalid",7),h=x(r,["$$slots","$$events","$$legacy","$$host","id","name","label","checked","disabled","isinvalid"]);var _={get id(){return t()},set id(e){t(e),a()},get name(){return i()},set name(e){i(e),a()},get label(){return d()},set label(e){d(e),a()},get checked(){return l()},set checked(e=!1){l(e),a()},get disabled(){return s()},set disabled(e){s(e),a()},get isinvalid(){return n()},set isinvalid(e){n(e),a()}},c=S(),u=v(c);D(u,()=>({id:t(),type:"radio",class:["mc-radio__input",n()&&"is-invalid"],name:i(),disabled:s(),checked:l(),...h}),void 0,void 0,void 0,"svelte-1bwbq3n",!0);var b=y(u,2),p=v(b,!0);return f(b),f(c),E(()=>{F(b,"for",t()),B(p,d())}),z(m,c),j(_)}customElements.define("m-radio",w(C,{checked:{attribute:"checked",reflect:!0,type:"Boolean"},id:{},name:{},label:{},disabled:{},isinvalid:{}},[],[],!0,R));
4
4
  //# sourceMappingURL=Radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.js","sources":["../../../src/components/radio/Radio.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-radio',\n props: {\n checked: { reflect: true, type: 'Boolean', attribute: 'checked' },\n },\n extend: customElementForwardEvents,\n }}\n/>\n\n<script lang=\"ts\">\n import { customElementForwardEvents } from '../../utils';\n /**\n * A radio button is a selection control that allows users to choose a single option from a list of mutually exclusive choices. Unlike checkboxes, only one option can be selected at a time within the same group. Radio Buttons are commonly used in forms, surveys, and settings where a single choice must be made.\n */\n interface Props {\n /**\n * A unique identifier for the radio, used to associate the label with the form element.\n */\n id: string;\n /**\n * The name attribute for the radio element, typically used for form submission.\n */\n name?: string;\n /**\n * The text label displayed next to the radio.\n */\n label?: string;\n /**\n * The radio's checked state.\n */\n checked?: boolean;\n /**\n * If `true`, applies an invalid state to the radio.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the radio, making it non-interactive.\n */\n disabled?: boolean;\n }\n\n let { id, name, label, checked = $bindable(false), disabled, isinvalid }: Props = $props();\n</script>\n\n<div class=\"mc-radio\">\n <input\n {id}\n type=\"radio\"\n class={['mc-radio__input', isinvalid && 'is-invalid']}\n {name}\n {disabled}\n {checked}\n />\n <label for={id} class=\"mc-radio__label\">{label}</label>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/radio';\n</style>\n"],"names":["id","$.prop","$$props","name","label","checked","disabled","isinvalid","customElementForwardEvents"],"mappings":";;ywEAAA,oBA0CQA,EAAEC,EAAAC,EAAA,KAAA,CAAA,EAAEC,EAAIF,EAAAC,EAAA,OAAA,CAAA,EAAEE,EAAKH,EAAAC,EAAA,QAAA,CAAA,EAAEG,mBAAoB,EAAK,EAAGC,EAAQL,EAAAC,EAAA,WAAA,CAAA,EAAEK,EAASN,EAAAC,EAAA,YAAA,CAAA,sLAA3B,GAAK,gNAOtC,kBAAmBK,KAAa,YAAY,CAAA,EAAA,gBAAA,oDAK1CP,GAAE,MAA2BI,GAAK,eAXhD,wJArCYI"}
1
+ {"version":3,"file":"Radio.js","sources":["../../../src/components/radio/Radio.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-radio',\n props: {\n checked: { reflect: true, type: 'Boolean', attribute: 'checked' },\n },\n extend: customElementForwardEvents,\n }}\n/>\n\n<script lang=\"ts\">\n import { customElementForwardEvents } from '../../utils';\n /**\n * A radio button is a selection control that allows users to choose a single option from a list of mutually exclusive choices. Unlike checkboxes, only one option can be selected at a time within the same group. Radio Buttons are commonly used in forms, surveys, and settings where a single choice must be made.\n */\n interface Props {\n /**\n * A unique identifier for the radio, used to associate the label with the form element.\n */\n id: string;\n /**\n * The name attribute for the radio element, typically used for form submission.\n */\n name?: string;\n /**\n * The text label displayed next to the radio.\n */\n label?: string;\n /**\n * The radio's checked state.\n */\n checked?: boolean;\n /**\n * If `true`, applies an invalid state to the radio.\n */\n isinvalid?: boolean;\n /**\n * If `true`, disables the radio, making it non-interactive.\n */\n disabled?: boolean;\n }\n\n let {\n id,\n name,\n label,\n checked = $bindable(false),\n disabled,\n isinvalid,\n ...attrs\n }: Props = $props();\n</script>\n\n<div class=\"mc-radio\">\n <input\n {id}\n type=\"radio\"\n class={['mc-radio__input', isinvalid && 'is-invalid']}\n {name}\n {disabled}\n {checked}\n {...attrs}\n />\n <label for={id} class=\"mc-radio__label\">{label}</label>\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/radio';\n</style>\n"],"names":["id","$.prop","$$props","name","label","checked","disabled","isinvalid","attrs","$.rest_props","customElementForwardEvents"],"mappings":";;sxEAAA,oBA2CIA,EAAEC,EAAAC,EAAA,KAAA,CAAA,EACFC,EAAIF,EAAAC,EAAA,OAAA,CAAA,EACJE,EAAKH,EAAAC,EAAA,QAAA,CAAA,EACLG,mBAAoB,EAAK,EACzBC,EAAQL,EAAAC,EAAA,WAAA,CAAA,EACRK,EAASN,EAAAC,EAAA,YAAA,CAAA,EACNM,EAAAC,EAAAP,EAAA,qRAHiB,GAAK,0KAWjB,kBAAmBK,EAAS,GAAI,YAAY,uCAIhDC,uGAEMR,GAAE,MAA2BI,GAAK,eAZhD,wJA7CYM"}
@@ -1,4 +1,5 @@
1
1
  import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import './Radio.svelte';
2
3
  declare const meta: Meta;
3
4
  export default meta;
4
5
  type Story = StoryObj;
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.stories.d.ts","sourceRoot":"","sources":["../../../src/components/radio/Radio.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,QAAA,MAAM,IAAI,EAAE,IAgCX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAM7B,CAAC"}
1
+ {"version":3,"file":"Radio.stories.d.ts","sourceRoot":"","sources":["../../../src/components/radio/Radio.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,gBAAgB,CAAC;AAExB,QAAA,MAAM,IAAI,EAAE,IAgCX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAM7B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { html } from 'lit';
2
2
  import { ifDefined } from 'lit-html/directives/if-defined.js';
3
3
  import { action } from 'storybook/actions';
4
+ import './Radio.svelte';
4
5
  const meta = {
5
6
  title: 'Form Elements/Radio',
6
7
  component: 'm-radio',
@@ -40,7 +40,15 @@
40
40
  disabled?: boolean;
41
41
  }
42
42
 
43
- let { id, name, label, checked = $bindable(false), disabled, isinvalid }: Props = $props();
43
+ let {
44
+ id,
45
+ name,
46
+ label,
47
+ checked = $bindable(false),
48
+ disabled,
49
+ isinvalid,
50
+ ...attrs
51
+ }: Props = $props();
44
52
  </script>
45
53
 
46
54
  <div class="mc-radio">
@@ -51,6 +59,7 @@
51
59
  {name}
52
60
  {disabled}
53
61
  {checked}
62
+ {...attrs}
54
63
  />
55
64
  <label for={id} class="mc-radio__label">{label}</label>
56
65
  </div>
@@ -77,7 +86,7 @@
77
86
  flex-shrink: 0;
78
87
  transition: box-shadow 200ms ease;
79
88
  background-color: var(--forms-color-background-default, #ffffff);
80
- border: var(--border-m, 0.125rem) solid var(--forms-color-border-default, #666666);
89
+ border: var(--border-width-m, 0.125rem) solid var(--forms-color-border-default, #666666);
81
90
  border-radius: 100%;
82
91
  transition: all ease 200ms;
83
92
  height: 1.25rem;
@@ -85,7 +94,7 @@
85
94
  position: relative;
86
95
  }
87
96
  .mc-radio__input::before {
88
- border-radius: var(--radius-full, 100%);
97
+ border-radius: var(--border-radius-full, 100%);
89
98
  content: "";
90
99
  display: block;
91
100
  height: 0.5rem;
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/radio/Radio.svelte.ts"],"names":[],"mappings":"AAKE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyBH,QAAA,MAAM,KAAK,kDAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Radio.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/radio/Radio.svelte.ts"],"names":[],"mappings":"AAKE;;GAEG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiCH,QAAA,MAAM,KAAK,kDAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}