@marwes-ui/svelte 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 (371) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +518 -0
  4. package/dist/components/accordion/Accordion.svelte +56 -0
  5. package/dist/components/accordion/Accordion.svelte.d.ts +4 -0
  6. package/dist/components/accordion/AccordionField.svelte +90 -0
  7. package/dist/components/accordion/AccordionField.svelte.d.ts +4 -0
  8. package/dist/components/accordion/FAQAccordion.svelte +21 -0
  9. package/dist/components/accordion/FAQAccordion.svelte.d.ts +20 -0
  10. package/dist/components/accordion/README.md +19 -0
  11. package/dist/components/accordion/SectionsAccordion.svelte +22 -0
  12. package/dist/components/accordion/SectionsAccordion.svelte.d.ts +21 -0
  13. package/dist/components/accordion/SettingsAccordion.svelte +21 -0
  14. package/dist/components/accordion/SettingsAccordion.svelte.d.ts +20 -0
  15. package/dist/components/accordion/index.d.ts +2 -0
  16. package/dist/components/accordion/index.js +1 -0
  17. package/dist/components/accordion/types.d.ts +28 -0
  18. package/dist/components/accordion/types.js +1 -0
  19. package/dist/components/avatar/Avatar.svelte +45 -0
  20. package/dist/components/avatar/Avatar.svelte.d.ts +4 -0
  21. package/dist/components/avatar/AvatarBadge.svelte +47 -0
  22. package/dist/components/avatar/AvatarBadge.svelte.d.ts +7 -0
  23. package/dist/components/avatar/AvatarGroup.svelte +50 -0
  24. package/dist/components/avatar/AvatarGroup.svelte.d.ts +15 -0
  25. package/dist/components/avatar/PresenceAvatar.svelte +12 -0
  26. package/dist/components/avatar/PresenceAvatar.svelte.d.ts +7 -0
  27. package/dist/components/avatar/ProfileAvatar.svelte +7 -0
  28. package/dist/components/avatar/ProfileAvatar.svelte.d.ts +4 -0
  29. package/dist/components/avatar/README.md +19 -0
  30. package/dist/components/avatar/TeamAvatarGroup.svelte +21 -0
  31. package/dist/components/avatar/TeamAvatarGroup.svelte.d.ts +15 -0
  32. package/dist/components/avatar/index.d.ts +2 -0
  33. package/dist/components/avatar/index.js +1 -0
  34. package/dist/components/avatar/types.d.ts +6 -0
  35. package/dist/components/avatar/types.js +1 -0
  36. package/dist/components/badge/Badge.svelte +26 -0
  37. package/dist/components/badge/Badge.svelte.d.ts +4 -0
  38. package/dist/components/badge/BadgeGroup.svelte +25 -0
  39. package/dist/components/badge/BadgeGroup.svelte.d.ts +4 -0
  40. package/dist/components/badge/NotificationBadge.svelte +7 -0
  41. package/dist/components/badge/NotificationBadge.svelte.d.ts +4 -0
  42. package/dist/components/badge/PriorityBadge.svelte +7 -0
  43. package/dist/components/badge/PriorityBadge.svelte.d.ts +4 -0
  44. package/dist/components/badge/README.md +16 -0
  45. package/dist/components/badge/StatusBadge.svelte +7 -0
  46. package/dist/components/badge/StatusBadge.svelte.d.ts +4 -0
  47. package/dist/components/badge/index.d.ts +3 -0
  48. package/dist/components/badge/index.js +2 -0
  49. package/dist/components/badge/types.d.ts +15 -0
  50. package/dist/components/badge/types.js +1 -0
  51. package/dist/components/button/Button.svelte +92 -0
  52. package/dist/components/button/Button.svelte.d.ts +4 -0
  53. package/dist/components/button/CancelButton.svelte +8 -0
  54. package/dist/components/button/CancelButton.svelte.d.ts +5 -0
  55. package/dist/components/button/CloseButton.svelte +8 -0
  56. package/dist/components/button/CloseButton.svelte.d.ts +5 -0
  57. package/dist/components/button/ConfirmButton.svelte +8 -0
  58. package/dist/components/button/ConfirmButton.svelte.d.ts +5 -0
  59. package/dist/components/button/CopyButton.svelte +8 -0
  60. package/dist/components/button/CopyButton.svelte.d.ts +5 -0
  61. package/dist/components/button/CreateButton.svelte +7 -0
  62. package/dist/components/button/CreateButton.svelte.d.ts +5 -0
  63. package/dist/components/button/DestructiveButton.svelte +8 -0
  64. package/dist/components/button/DestructiveButton.svelte.d.ts +5 -0
  65. package/dist/components/button/DownloadButton.svelte +8 -0
  66. package/dist/components/button/DownloadButton.svelte.d.ts +5 -0
  67. package/dist/components/button/DropdownButton.svelte +8 -0
  68. package/dist/components/button/DropdownButton.svelte.d.ts +5 -0
  69. package/dist/components/button/EditButton.svelte +8 -0
  70. package/dist/components/button/EditButton.svelte.d.ts +5 -0
  71. package/dist/components/button/FilterButton.svelte +8 -0
  72. package/dist/components/button/FilterButton.svelte.d.ts +5 -0
  73. package/dist/components/button/LinkButton.svelte +8 -0
  74. package/dist/components/button/LinkButton.svelte.d.ts +5 -0
  75. package/dist/components/button/PrimaryButton.svelte +7 -0
  76. package/dist/components/button/PrimaryButton.svelte.d.ts +5 -0
  77. package/dist/components/button/README.md +21 -0
  78. package/dist/components/button/RefreshButton.svelte +8 -0
  79. package/dist/components/button/RefreshButton.svelte.d.ts +5 -0
  80. package/dist/components/button/SaveButton.svelte +8 -0
  81. package/dist/components/button/SaveButton.svelte.d.ts +5 -0
  82. package/dist/components/button/SearchButton.svelte +8 -0
  83. package/dist/components/button/SearchButton.svelte.d.ts +5 -0
  84. package/dist/components/button/SecondaryButton.svelte +7 -0
  85. package/dist/components/button/SecondaryButton.svelte.d.ts +5 -0
  86. package/dist/components/button/SortButton.svelte +8 -0
  87. package/dist/components/button/SortButton.svelte.d.ts +5 -0
  88. package/dist/components/button/SubmitButton.svelte +7 -0
  89. package/dist/components/button/SubmitButton.svelte.d.ts +5 -0
  90. package/dist/components/button/SuccessButton.svelte +7 -0
  91. package/dist/components/button/SuccessButton.svelte.d.ts +5 -0
  92. package/dist/components/button/TextButton.svelte +7 -0
  93. package/dist/components/button/TextButton.svelte.d.ts +5 -0
  94. package/dist/components/button/UploadButton.svelte +8 -0
  95. package/dist/components/button/UploadButton.svelte.d.ts +5 -0
  96. package/dist/components/button/VerifyButton.svelte +8 -0
  97. package/dist/components/button/VerifyButton.svelte.d.ts +5 -0
  98. package/dist/components/button/index.d.ts +2 -0
  99. package/dist/components/button/index.js +1 -0
  100. package/dist/components/button/types.d.ts +8 -0
  101. package/dist/components/button/types.js +1 -0
  102. package/dist/components/card/Card.svelte +33 -0
  103. package/dist/components/card/Card.svelte.d.ts +4 -0
  104. package/dist/components/card/ProductCard.svelte +6 -0
  105. package/dist/components/card/ProductCard.svelte.d.ts +4 -0
  106. package/dist/components/card/ProfileCard.svelte +6 -0
  107. package/dist/components/card/ProfileCard.svelte.d.ts +4 -0
  108. package/dist/components/card/README.md +15 -0
  109. package/dist/components/card/StatCard.svelte +6 -0
  110. package/dist/components/card/StatCard.svelte.d.ts +4 -0
  111. package/dist/components/card/index.d.ts +2 -0
  112. package/dist/components/card/index.js +1 -0
  113. package/dist/components/card/types.d.ts +10 -0
  114. package/dist/components/card/types.js +1 -0
  115. package/dist/components/checkbox/Checkbox.svelte +54 -0
  116. package/dist/components/checkbox/Checkbox.svelte.d.ts +4 -0
  117. package/dist/components/checkbox/CheckboxField.svelte +74 -0
  118. package/dist/components/checkbox/CheckboxField.svelte.d.ts +4 -0
  119. package/dist/components/checkbox/CheckboxGroupField.svelte +50 -0
  120. package/dist/components/checkbox/CheckboxGroupField.svelte.d.ts +4 -0
  121. package/dist/components/checkbox/README.md +17 -0
  122. package/dist/components/checkbox/index.d.ts +3 -0
  123. package/dist/components/checkbox/index.js +2 -0
  124. package/dist/components/checkbox/types.d.ts +30 -0
  125. package/dist/components/checkbox/types.js +1 -0
  126. package/dist/components/date-picker/DatePicker.svelte +108 -0
  127. package/dist/components/date-picker/DatePicker.svelte.d.ts +4 -0
  128. package/dist/components/date-picker/README.md +17 -0
  129. package/dist/components/date-picker/index.d.ts +2 -0
  130. package/dist/components/date-picker/index.js +1 -0
  131. package/dist/components/date-picker/types.d.ts +13 -0
  132. package/dist/components/date-picker/types.js +1 -0
  133. package/dist/components/dialog/ConfirmDialog.svelte +28 -0
  134. package/dist/components/dialog/ConfirmDialog.svelte.d.ts +4 -0
  135. package/dist/components/dialog/DestructiveDialog.svelte +28 -0
  136. package/dist/components/dialog/DestructiveDialog.svelte.d.ts +4 -0
  137. package/dist/components/dialog/Dialog.svelte +114 -0
  138. package/dist/components/dialog/Dialog.svelte.d.ts +4 -0
  139. package/dist/components/dialog/DialogModal.svelte +120 -0
  140. package/dist/components/dialog/DialogModal.svelte.d.ts +4 -0
  141. package/dist/components/dialog/InfoDialog.svelte +24 -0
  142. package/dist/components/dialog/InfoDialog.svelte.d.ts +4 -0
  143. package/dist/components/dialog/README.md +23 -0
  144. package/dist/components/dialog/index.d.ts +6 -0
  145. package/dist/components/dialog/index.js +5 -0
  146. package/dist/components/dialog/types.d.ts +42 -0
  147. package/dist/components/dialog/types.js +1 -0
  148. package/dist/components/divider/Divider.svelte +25 -0
  149. package/dist/components/divider/Divider.svelte.d.ts +4 -0
  150. package/dist/components/divider/README.md +15 -0
  151. package/dist/components/divider/index.d.ts +2 -0
  152. package/dist/components/divider/index.js +1 -0
  153. package/dist/components/divider/types.d.ts +5 -0
  154. package/dist/components/divider/types.js +1 -0
  155. package/dist/components/heading/H1.svelte +23 -0
  156. package/dist/components/heading/H1.svelte.d.ts +4 -0
  157. package/dist/components/heading/H2.svelte +23 -0
  158. package/dist/components/heading/H2.svelte.d.ts +4 -0
  159. package/dist/components/heading/H3.svelte +23 -0
  160. package/dist/components/heading/H3.svelte.d.ts +4 -0
  161. package/dist/components/heading/README.md +13 -0
  162. package/dist/components/heading/index.d.ts +4 -0
  163. package/dist/components/heading/index.js +3 -0
  164. package/dist/components/heading/types.d.ts +26 -0
  165. package/dist/components/heading/types.js +1 -0
  166. package/dist/components/icon/Icon.svelte +65 -0
  167. package/dist/components/icon/Icon.svelte.d.ts +4 -0
  168. package/dist/components/icon/README.md +18 -0
  169. package/dist/components/icon/index.d.ts +2 -0
  170. package/dist/components/icon/index.js +1 -0
  171. package/dist/components/icon/types.d.ts +12 -0
  172. package/dist/components/icon/types.js +1 -0
  173. package/dist/components/input/CurrencyField.svelte +12 -0
  174. package/dist/components/input/CurrencyField.svelte.d.ts +7 -0
  175. package/dist/components/input/DateOfBirthField.svelte +21 -0
  176. package/dist/components/input/DateOfBirthField.svelte.d.ts +14 -0
  177. package/dist/components/input/DropdownField.svelte +29 -0
  178. package/dist/components/input/DropdownField.svelte.d.ts +14 -0
  179. package/dist/components/input/EmailField.svelte +9 -0
  180. package/dist/components/input/EmailField.svelte.d.ts +7 -0
  181. package/dist/components/input/Input.svelte +49 -0
  182. package/dist/components/input/Input.svelte.d.ts +4 -0
  183. package/dist/components/input/InputField.svelte +139 -0
  184. package/dist/components/input/InputField.svelte.d.ts +4 -0
  185. package/dist/components/input/InputOtp.svelte +140 -0
  186. package/dist/components/input/InputOtp.svelte.d.ts +4 -0
  187. package/dist/components/input/PasswordField.svelte +9 -0
  188. package/dist/components/input/PasswordField.svelte.d.ts +7 -0
  189. package/dist/components/input/PhoneField.svelte +9 -0
  190. package/dist/components/input/PhoneField.svelte.d.ts +7 -0
  191. package/dist/components/input/README.md +24 -0
  192. package/dist/components/input/RichText.svelte +177 -0
  193. package/dist/components/input/RichText.svelte.d.ts +4 -0
  194. package/dist/components/input/RichTextField.svelte +84 -0
  195. package/dist/components/input/RichTextField.svelte.d.ts +4 -0
  196. package/dist/components/input/SearchField.svelte +9 -0
  197. package/dist/components/input/SearchField.svelte.d.ts +7 -0
  198. package/dist/components/input/Select.svelte +88 -0
  199. package/dist/components/input/Select.svelte.d.ts +4 -0
  200. package/dist/components/input/SelectField.svelte +395 -0
  201. package/dist/components/input/SelectField.svelte.d.ts +4 -0
  202. package/dist/components/input/Textarea.svelte +50 -0
  203. package/dist/components/input/Textarea.svelte.d.ts +4 -0
  204. package/dist/components/input/TextareaField.svelte +57 -0
  205. package/dist/components/input/TextareaField.svelte.d.ts +4 -0
  206. package/dist/components/input/URLField.svelte +9 -0
  207. package/dist/components/input/URLField.svelte.d.ts +7 -0
  208. package/dist/components/input/ZipCodeField.svelte +21 -0
  209. package/dist/components/input/ZipCodeField.svelte.d.ts +14 -0
  210. package/dist/components/input/index.d.ts +7 -0
  211. package/dist/components/input/index.js +6 -0
  212. package/dist/components/input/types.d.ts +104 -0
  213. package/dist/components/input/types.js +1 -0
  214. package/dist/components/paragraph/Paragraph.svelte +23 -0
  215. package/dist/components/paragraph/Paragraph.svelte.d.ts +4 -0
  216. package/dist/components/paragraph/README.md +13 -0
  217. package/dist/components/paragraph/index.d.ts +2 -0
  218. package/dist/components/paragraph/index.js +1 -0
  219. package/dist/components/paragraph/types.d.ts +9 -0
  220. package/dist/components/paragraph/types.js +1 -0
  221. package/dist/components/radio/OptionRadioGroup.svelte +52 -0
  222. package/dist/components/radio/OptionRadioGroup.svelte.d.ts +21 -0
  223. package/dist/components/radio/README.md +16 -0
  224. package/dist/components/radio/Radio.svelte +38 -0
  225. package/dist/components/radio/Radio.svelte.d.ts +4 -0
  226. package/dist/components/radio/RadioGroupField.svelte +75 -0
  227. package/dist/components/radio/RadioGroupField.svelte.d.ts +4 -0
  228. package/dist/components/radio/RatingRadioGroup.svelte +51 -0
  229. package/dist/components/radio/RatingRadioGroup.svelte.d.ts +17 -0
  230. package/dist/components/radio/YesNoRadioGroup.svelte +48 -0
  231. package/dist/components/radio/YesNoRadioGroup.svelte.d.ts +16 -0
  232. package/dist/components/radio/index.d.ts +3 -0
  233. package/dist/components/radio/index.js +2 -0
  234. package/dist/components/radio/types.d.ts +22 -0
  235. package/dist/components/radio/types.js +1 -0
  236. package/dist/components/skeleton/README.md +16 -0
  237. package/dist/components/skeleton/Skeleton.svelte +29 -0
  238. package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -0
  239. package/dist/components/skeleton/index.d.ts +2 -0
  240. package/dist/components/skeleton/index.js +1 -0
  241. package/dist/components/skeleton/types.d.ts +6 -0
  242. package/dist/components/skeleton/types.js +1 -0
  243. package/dist/components/slider/BrightnessSlider.svelte +31 -0
  244. package/dist/components/slider/BrightnessSlider.svelte.d.ts +11 -0
  245. package/dist/components/slider/README.md +20 -0
  246. package/dist/components/slider/RadiusSlider.svelte +31 -0
  247. package/dist/components/slider/RadiusSlider.svelte.d.ts +11 -0
  248. package/dist/components/slider/Slider.svelte +67 -0
  249. package/dist/components/slider/Slider.svelte.d.ts +4 -0
  250. package/dist/components/slider/SliderField.svelte +115 -0
  251. package/dist/components/slider/SliderField.svelte.d.ts +4 -0
  252. package/dist/components/slider/VolumeSlider.svelte +31 -0
  253. package/dist/components/slider/VolumeSlider.svelte.d.ts +11 -0
  254. package/dist/components/slider/index.d.ts +2 -0
  255. package/dist/components/slider/index.js +1 -0
  256. package/dist/components/slider/types.d.ts +28 -0
  257. package/dist/components/slider/types.js +1 -0
  258. package/dist/components/spacing/README.md +15 -0
  259. package/dist/components/spacing/Spacer.svelte +8 -0
  260. package/dist/components/spacing/Spacer.svelte.d.ts +3 -0
  261. package/dist/components/spacing/Spacing.svelte +23 -0
  262. package/dist/components/spacing/Spacing.svelte.d.ts +4 -0
  263. package/dist/components/spacing/index.d.ts +3 -0
  264. package/dist/components/spacing/index.js +2 -0
  265. package/dist/components/spacing/types.d.ts +7 -0
  266. package/dist/components/spacing/types.js +1 -0
  267. package/dist/components/spinner/ButtonSpinner.svelte +35 -0
  268. package/dist/components/spinner/ButtonSpinner.svelte.d.ts +4 -0
  269. package/dist/components/spinner/EmptyStateSpinner.svelte +20 -0
  270. package/dist/components/spinner/EmptyStateSpinner.svelte.d.ts +4 -0
  271. package/dist/components/spinner/README.md +19 -0
  272. package/dist/components/spinner/Spinner.svelte +60 -0
  273. package/dist/components/spinner/Spinner.svelte.d.ts +4 -0
  274. package/dist/components/spinner/index.d.ts +3 -0
  275. package/dist/components/spinner/index.js +2 -0
  276. package/dist/components/spinner/types.d.ts +9 -0
  277. package/dist/components/spinner/types.js +1 -0
  278. package/dist/components/stat-tile/README.md +15 -0
  279. package/dist/components/stat-tile/StatTile.svelte +44 -0
  280. package/dist/components/stat-tile/StatTile.svelte.d.ts +4 -0
  281. package/dist/components/stat-tile/index.d.ts +2 -0
  282. package/dist/components/stat-tile/index.js +1 -0
  283. package/dist/components/stat-tile/types.d.ts +14 -0
  284. package/dist/components/stat-tile/types.js +1 -0
  285. package/dist/components/switch/FeatureToggle.svelte +19 -0
  286. package/dist/components/switch/FeatureToggle.svelte.d.ts +13 -0
  287. package/dist/components/switch/PermissionSwitch.svelte +19 -0
  288. package/dist/components/switch/PermissionSwitch.svelte.d.ts +13 -0
  289. package/dist/components/switch/PreferenceSwitch.svelte +19 -0
  290. package/dist/components/switch/PreferenceSwitch.svelte.d.ts +13 -0
  291. package/dist/components/switch/README.md +17 -0
  292. package/dist/components/switch/Switch.svelte +52 -0
  293. package/dist/components/switch/Switch.svelte.d.ts +4 -0
  294. package/dist/components/switch/SwitchField.svelte +71 -0
  295. package/dist/components/switch/SwitchField.svelte.d.ts +4 -0
  296. package/dist/components/switch/index.d.ts +3 -0
  297. package/dist/components/switch/index.js +2 -0
  298. package/dist/components/switch/types.d.ts +20 -0
  299. package/dist/components/switch/types.js +1 -0
  300. package/dist/components/tab/ContentTabs.svelte +11 -0
  301. package/dist/components/tab/ContentTabs.svelte.d.ts +3 -0
  302. package/dist/components/tab/NavigationTabs.svelte +11 -0
  303. package/dist/components/tab/NavigationTabs.svelte.d.ts +3 -0
  304. package/dist/components/tab/README.md +26 -0
  305. package/dist/components/tab/SettingsTabs.svelte +11 -0
  306. package/dist/components/tab/SettingsTabs.svelte.d.ts +3 -0
  307. package/dist/components/tab/Tab.svelte +32 -0
  308. package/dist/components/tab/Tab.svelte.d.ts +4 -0
  309. package/dist/components/tab/TabGroup.svelte +132 -0
  310. package/dist/components/tab/TabGroup.svelte.d.ts +4 -0
  311. package/dist/components/tab/TabPanel.svelte +25 -0
  312. package/dist/components/tab/TabPanel.svelte.d.ts +4 -0
  313. package/dist/components/tab/index.d.ts +7 -0
  314. package/dist/components/tab/index.js +6 -0
  315. package/dist/components/tab/types.d.ts +36 -0
  316. package/dist/components/tab/types.js +1 -0
  317. package/dist/components/toast/ErrorToast.svelte +24 -0
  318. package/dist/components/toast/ErrorToast.svelte.d.ts +4 -0
  319. package/dist/components/toast/InfoToast.svelte +24 -0
  320. package/dist/components/toast/InfoToast.svelte.d.ts +4 -0
  321. package/dist/components/toast/README.md +35 -0
  322. package/dist/components/toast/SuccessToast.svelte +25 -0
  323. package/dist/components/toast/SuccessToast.svelte.d.ts +4 -0
  324. package/dist/components/toast/Toast.svelte +53 -0
  325. package/dist/components/toast/Toast.svelte.d.ts +4 -0
  326. package/dist/components/toast/ToastContainer.svelte +212 -0
  327. package/dist/components/toast/ToastContainer.svelte.d.ts +4 -0
  328. package/dist/components/toast/ToastProvider.svelte +71 -0
  329. package/dist/components/toast/ToastProvider.svelte.d.ts +7 -0
  330. package/dist/components/toast/WarningToast.svelte +24 -0
  331. package/dist/components/toast/WarningToast.svelte.d.ts +4 -0
  332. package/dist/components/toast/index.d.ts +9 -0
  333. package/dist/components/toast/index.js +8 -0
  334. package/dist/components/toast/types.d.ts +48 -0
  335. package/dist/components/toast/types.js +1 -0
  336. package/dist/components/tooltip/README.md +22 -0
  337. package/dist/components/tooltip/Tooltip.svelte +29 -0
  338. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  339. package/dist/components/tooltip/TooltipGroup.svelte +100 -0
  340. package/dist/components/tooltip/TooltipGroup.svelte.d.ts +4 -0
  341. package/dist/components/tooltip/index.d.ts +3 -0
  342. package/dist/components/tooltip/index.js +2 -0
  343. package/dist/components/tooltip/types.d.ts +22 -0
  344. package/dist/components/tooltip/types.js +1 -0
  345. package/dist/index.d.ts +149 -0
  346. package/dist/index.js +149 -0
  347. package/dist/internal/attrs.d.ts +2 -0
  348. package/dist/internal/attrs.js +5 -0
  349. package/dist/internal/css-vars.d.ts +5 -0
  350. package/dist/internal/css-vars.js +20 -0
  351. package/dist/internal/merge-class.d.ts +1 -0
  352. package/dist/internal/merge-class.js +4 -0
  353. package/dist/internal/svg-attrs.d.ts +9 -0
  354. package/dist/internal/svg-attrs.js +16 -0
  355. package/dist/provider/MarwesProvider.svelte +186 -0
  356. package/dist/provider/MarwesProvider.svelte.d.ts +4 -0
  357. package/dist/provider/context.d.ts +3 -0
  358. package/dist/provider/context.js +12 -0
  359. package/dist/provider/runtime-theme.d.ts +5 -0
  360. package/dist/provider/runtime-theme.js +63 -0
  361. package/dist/provider/theme-mode-runtime.d.ts +15 -0
  362. package/dist/provider/theme-mode-runtime.js +84 -0
  363. package/dist/provider/types.d.ts +32 -0
  364. package/dist/provider/types.js +1 -0
  365. package/dist/provider/use-theme-mode.d.ts +24 -0
  366. package/dist/provider/use-theme-mode.js +38 -0
  367. package/dist/provider/use-theme.d.ts +15 -0
  368. package/dist/provider/use-theme.js +19 -0
  369. package/dist/ssr.d.ts +2 -0
  370. package/dist/ssr.js +1 -0
  371. package/package.json +59 -0
@@ -0,0 +1,90 @@
1
+ <script lang="ts">
2
+ import { buildAccordionFieldA11yIds } from "@marwes-ui/core";
3
+ import { mergeClass } from "../../internal/merge-class.js";
4
+ import Accordion from "./Accordion.svelte";
5
+ import type { AccordionFieldItem, AccordionFieldProps } from "./types.js";
6
+
7
+ let {
8
+ id: userProvidedId,
9
+ label,
10
+ description,
11
+ error,
12
+ items,
13
+ openItems: controlledOpen,
14
+ defaultOpenItems,
15
+ onopenitemschange,
16
+ multiple = true,
17
+ ariaDescribedBy,
18
+ class: className,
19
+ }: AccordionFieldProps = $props();
20
+
21
+ const uniqueId = $props.id();
22
+ const fieldId = $derived(userProvidedId ?? `mw-accordion-field-${uniqueId}`);
23
+
24
+ function hasTextContent(text: string | undefined): boolean {
25
+ return text !== undefined && text.trim().length > 0;
26
+ }
27
+
28
+ const hasDescription = $derived(hasTextContent(description));
29
+ const hasError = $derived(hasTextContent(error));
30
+
31
+ const a11yIds = $derived(
32
+ buildAccordionFieldA11yIds({ id: fieldId, hasDescription, hasError, externalDescribedBy: ariaDescribedBy })
33
+ );
34
+
35
+ let internalOpen = $state<string[]>(defaultOpenItems ?? []);
36
+ const activeOpen = $derived(controlledOpen ?? internalOpen);
37
+
38
+ function toggleItem(value: string): void {
39
+ let next: string[];
40
+ if (activeOpen.includes(value)) {
41
+ next = activeOpen.filter((v) => v !== value);
42
+ } else {
43
+ next = multiple ? [...activeOpen, value] : [value];
44
+ }
45
+ if (controlledOpen === undefined) {
46
+ internalOpen = next;
47
+ }
48
+ onopenitemschange?.(next);
49
+ }
50
+
51
+ const wrapperClass = $derived(mergeClass("mw-accordion-field", className));
52
+ </script>
53
+
54
+ <div
55
+ class={wrapperClass}
56
+ role="group"
57
+ aria-labelledby={a11yIds.labelId}
58
+ aria-describedby={a11yIds.describedBy}
59
+ aria-invalid={hasError ? true : undefined}
60
+ >
61
+ <div class="mw-accordion-field__label" id={a11yIds.labelId}>
62
+ <p class="mw-p mw-p--md">{label}</p>
63
+ </div>
64
+
65
+ {#if hasDescription && !hasError}
66
+ <div class="mw-accordion-field__description" id={a11yIds.descriptionId}>
67
+ <p class="mw-p mw-p--sm">{description}</p>
68
+ </div>
69
+ {/if}
70
+
71
+ <div class="mw-accordion-field__items">
72
+ {#each items as item}
73
+ <Accordion
74
+ id={`${fieldId}-${item.value}`}
75
+ title={item.title}
76
+ open={activeOpen.includes(item.value)}
77
+ disabled={item.disabled ?? false}
78
+ ontoggle={() => toggleItem(item.value)}
79
+ >
80
+ {item.content}
81
+ </Accordion>
82
+ {/each}
83
+ </div>
84
+
85
+ {#if hasError}
86
+ <div class="mw-accordion-field__error" id={a11yIds.errorId} aria-live="polite">
87
+ <p class="mw-p mw-p--sm">{error}</p>
88
+ </div>
89
+ {/if}
90
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { AccordionFieldProps } from "./types.js";
2
+ declare const AccordionField: import("svelte").Component<AccordionFieldProps, {}, "">;
3
+ type AccordionField = ReturnType<typeof AccordionField>;
4
+ export default AccordionField;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import AccordionField from "./AccordionField.svelte";
3
+
4
+ interface FAQAccordionProps {
5
+ id?: string;
6
+ label: string;
7
+ description?: string;
8
+ error?: string;
9
+ items: Array<{ value: string; title: string; content: string; disabled?: boolean }>;
10
+ openItems?: string[];
11
+ defaultOpenItems?: string[];
12
+ onopenitemschange?: (items: string[]) => void;
13
+ ariaDescribedBy?: string;
14
+ class?: string;
15
+ }
16
+
17
+ let props: FAQAccordionProps = $props();
18
+ </script>
19
+ <div data-purpose="faq">
20
+ <AccordionField {...props} multiple={false} />
21
+ </div>
@@ -0,0 +1,20 @@
1
+ interface FAQAccordionProps {
2
+ id?: string;
3
+ label: string;
4
+ description?: string;
5
+ error?: string;
6
+ items: Array<{
7
+ value: string;
8
+ title: string;
9
+ content: string;
10
+ disabled?: boolean;
11
+ }>;
12
+ openItems?: string[];
13
+ defaultOpenItems?: string[];
14
+ onopenitemschange?: (items: string[]) => void;
15
+ ariaDescribedBy?: string;
16
+ class?: string;
17
+ }
18
+ declare const FAQAccordion: import("svelte").Component<FAQAccordionProps, {}, "">;
19
+ type FAQAccordion = ReturnType<typeof FAQAccordion>;
20
+ export default FAQAccordion;
@@ -0,0 +1,19 @@
1
+ # Accordion — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - `createAccordionRecipe` integration
7
+ - Open/closed state with `ontoggle` callback
8
+ - Disabled state
9
+ - Proper aria wiring: aria-expanded, aria-controls, aria-labelledby
10
+ - Trigger + panel compound structure
11
+ - Generated IDs via `$props.id()`
12
+ - Icon placeholder for expand/collapse indicator
13
+
14
+ ### Missing ❌
15
+ - **`AccordionField`** molecule (wraps accordion with label/description)
16
+ - **Purpose variants**: React/Vue have some accordion variants
17
+
18
+ ### Notes
19
+ - The base accordion is fully functional. `AccordionField` adds a thin label/description wrapper around a group of accordions.
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import AccordionField from "./AccordionField.svelte";
3
+
4
+ interface SectionsAccordionProps {
5
+ id?: string;
6
+ label: string;
7
+ description?: string;
8
+ error?: string;
9
+ items: Array<{ value: string; title: string; content: string; disabled?: boolean }>;
10
+ openItems?: string[];
11
+ defaultOpenItems?: string[];
12
+ onopenitemschange?: (items: string[]) => void;
13
+ multiple?: boolean;
14
+ ariaDescribedBy?: string;
15
+ class?: string;
16
+ }
17
+
18
+ let props: SectionsAccordionProps = $props();
19
+ </script>
20
+ <div data-purpose="sections">
21
+ <AccordionField {...props} />
22
+ </div>
@@ -0,0 +1,21 @@
1
+ interface SectionsAccordionProps {
2
+ id?: string;
3
+ label: string;
4
+ description?: string;
5
+ error?: string;
6
+ items: Array<{
7
+ value: string;
8
+ title: string;
9
+ content: string;
10
+ disabled?: boolean;
11
+ }>;
12
+ openItems?: string[];
13
+ defaultOpenItems?: string[];
14
+ onopenitemschange?: (items: string[]) => void;
15
+ multiple?: boolean;
16
+ ariaDescribedBy?: string;
17
+ class?: string;
18
+ }
19
+ declare const SectionsAccordion: import("svelte").Component<SectionsAccordionProps, {}, "">;
20
+ type SectionsAccordion = ReturnType<typeof SectionsAccordion>;
21
+ export default SectionsAccordion;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import AccordionField from "./AccordionField.svelte";
3
+
4
+ interface SettingsAccordionProps {
5
+ id?: string;
6
+ label: string;
7
+ description?: string;
8
+ error?: string;
9
+ items: Array<{ value: string; title: string; content: string; disabled?: boolean }>;
10
+ openItems?: string[];
11
+ defaultOpenItems?: string[];
12
+ onopenitemschange?: (items: string[]) => void;
13
+ ariaDescribedBy?: string;
14
+ class?: string;
15
+ }
16
+
17
+ let props: SettingsAccordionProps = $props();
18
+ </script>
19
+ <div data-purpose="settings">
20
+ <AccordionField {...props} multiple={true} />
21
+ </div>
@@ -0,0 +1,20 @@
1
+ interface SettingsAccordionProps {
2
+ id?: string;
3
+ label: string;
4
+ description?: string;
5
+ error?: string;
6
+ items: Array<{
7
+ value: string;
8
+ title: string;
9
+ content: string;
10
+ disabled?: boolean;
11
+ }>;
12
+ openItems?: string[];
13
+ defaultOpenItems?: string[];
14
+ onopenitemschange?: (items: string[]) => void;
15
+ ariaDescribedBy?: string;
16
+ class?: string;
17
+ }
18
+ declare const SettingsAccordion: import("svelte").Component<SettingsAccordionProps, {}, "">;
19
+ type SettingsAccordion = ReturnType<typeof SettingsAccordion>;
20
+ export default SettingsAccordion;
@@ -0,0 +1,2 @@
1
+ export { default as Accordion } from "./Accordion.svelte";
2
+ export type { AccordionProps, AccordionFieldItem, AccordionFieldProps } from "./types.js";
@@ -0,0 +1 @@
1
+ export { default as Accordion } from "./Accordion.svelte";
@@ -0,0 +1,28 @@
1
+ import type { AccordionOptions } from "@marwes-ui/core";
2
+ import type { Snippet } from "svelte";
3
+ export interface AccordionProps extends Partial<AccordionOptions> {
4
+ title: string;
5
+ children?: Snippet;
6
+ class?: string;
7
+ ontoggle?: () => void;
8
+ }
9
+ export interface AccordionFieldItem {
10
+ value: string;
11
+ title: string;
12
+ content: string;
13
+ disabled?: boolean;
14
+ }
15
+ export interface AccordionFieldProps {
16
+ id?: string;
17
+ label: string;
18
+ description?: string;
19
+ error?: string;
20
+ items: AccordionFieldItem[];
21
+ openItems?: string[];
22
+ defaultOpenItems?: string[];
23
+ onopenitemschange?: (items: string[]) => void;
24
+ multiple?: boolean;
25
+ ariaDescribedBy?: string;
26
+ class?: string;
27
+ disabled?: boolean;
28
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import { createAvatarRecipe } from "@marwes-ui/core";
3
+ import { mergeClass } from "../../internal/merge-class.js";
4
+ import Icon from "../icon/Icon.svelte";
5
+ import type { AvatarProps } from "./types.js";
6
+
7
+ let {
8
+ class: className,
9
+ style,
10
+ dataAttributes,
11
+ ...options
12
+ }: AvatarProps = $props();
13
+
14
+ const kit = $derived(createAvatarRecipe(options));
15
+ const mergedClass = $derived(mergeClass(kit.className, className));
16
+ const isDecorative = $derived(kit.a11y.ariaHidden === true);
17
+ const isOuterAccessible = $derived(kit.a11y.role === "img");
18
+ </script>
19
+
20
+ <span
21
+ class={mergedClass}
22
+ {style}
23
+ role={kit.a11y.role}
24
+ aria-hidden={isDecorative ? "true" : undefined}
25
+ aria-label={kit.a11y.ariaLabel}
26
+ {...kit.dataAttributes}
27
+ {...dataAttributes}
28
+ >
29
+ {#if kit.content.type === "image"}
30
+ <img
31
+ class="mw-avatar__image"
32
+ src={kit.content.src}
33
+ alt={isDecorative ? "" : (kit.content.alt ?? "")}
34
+ />
35
+ {:else if kit.content.type === "initials"}
36
+ <span
37
+ aria-hidden={isOuterAccessible ? "true" : undefined}
38
+ class="mw-avatar__initials"
39
+ >
40
+ {kit.content.initials}
41
+ </span>
42
+ {:else}
43
+ <Icon name={kit.content.iconName ?? "user"} class="mw-avatar__icon" decorative />
44
+ {/if}
45
+ </span>
@@ -0,0 +1,4 @@
1
+ import type { AvatarProps } from "./types.js";
2
+ declare const Avatar: import("svelte").Component<AvatarProps, {}, "">;
3
+ type Avatar = ReturnType<typeof Avatar>;
4
+ export default Avatar;
@@ -0,0 +1,47 @@
1
+ <script lang="ts">
2
+ import { createAvatarRecipe } from "@marwes-ui/core";
3
+ import { mergeClass } from "../../internal/merge-class.js";
4
+ import Avatar from "./Avatar.svelte";
5
+ import type { AvatarProps } from "./types.js";
6
+
7
+ interface AvatarBadgeProps extends AvatarProps {
8
+ statusLabel?: string;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ statusLabel = "Online",
14
+ decorative,
15
+ dataAttributes,
16
+ ...avatarProps
17
+ }: AvatarBadgeProps = $props();
18
+
19
+ const kit = $derived(createAvatarRecipe(avatarProps));
20
+ const resolvedSize = $derived(kit.dataAttributes["data-size"]);
21
+
22
+ const accessibleLabel = $derived.by(() => {
23
+ if (kit.a11y.ariaHidden) return undefined;
24
+ if (kit.content.type === "image") {
25
+ return kit.content.alt ? `${kit.content.alt}, ${statusLabel}` : statusLabel;
26
+ }
27
+ return kit.a11y.ariaLabel ? `${kit.a11y.ariaLabel}, ${statusLabel}` : statusLabel;
28
+ });
29
+
30
+ const mergedClass = $derived(
31
+ mergeClass("mw-avatar-badge", `mw-avatar-badge--${resolvedSize}`, className)
32
+ );
33
+ </script>
34
+
35
+ <span
36
+ class={mergedClass}
37
+ data-component="avatar-badge"
38
+ data-size={resolvedSize}
39
+ data-status="online"
40
+ role={decorative ? undefined : "img"}
41
+ aria-hidden={decorative ? "true" : undefined}
42
+ aria-label={decorative ? undefined : accessibleLabel}
43
+ {...dataAttributes}
44
+ >
45
+ <Avatar {...avatarProps} decorative />
46
+ <span aria-hidden="true" class="mw-avatar-badge__indicator"></span>
47
+ </span>
@@ -0,0 +1,7 @@
1
+ import type { AvatarProps } from "./types.js";
2
+ interface AvatarBadgeProps extends AvatarProps {
3
+ statusLabel?: string;
4
+ }
5
+ declare const AvatarBadge: import("svelte").Component<AvatarBadgeProps, {}, "">;
6
+ type AvatarBadge = ReturnType<typeof AvatarBadge>;
7
+ export default AvatarBadge;
@@ -0,0 +1,50 @@
1
+ <script lang="ts">
2
+ import { mergeClass } from "../../internal/merge-class.js";
3
+ import Avatar from "./Avatar.svelte";
4
+ import type { AvatarProps } from "./types.js";
5
+
6
+ interface AvatarGroupItem extends Omit<AvatarProps, "size" | "class" | "style"> {
7
+ id?: string;
8
+ }
9
+
10
+ interface AvatarGroupProps {
11
+ items: AvatarGroupItem[];
12
+ overflowCount?: number;
13
+ overflowLabel?: string;
14
+ ariaLabel?: string;
15
+ dataAttributes?: Record<string, string>;
16
+ class?: string;
17
+ }
18
+
19
+ let {
20
+ items,
21
+ overflowCount,
22
+ overflowLabel,
23
+ ariaLabel = "Avatar group",
24
+ dataAttributes,
25
+ class: className,
26
+ }: AvatarGroupProps = $props();
27
+
28
+ const mergedClass = $derived(mergeClass("mw-avatar-group", className));
29
+ const shouldRenderOverflow = $derived(overflowCount !== undefined && overflowCount > 0);
30
+ const resolvedOverflowLabel = $derived(overflowLabel ?? `${overflowCount} more people`);
31
+ </script>
32
+
33
+ <fieldset
34
+ class={mergedClass}
35
+ data-component="avatar-group"
36
+ aria-label={ariaLabel}
37
+ {...dataAttributes}
38
+ >
39
+ {#each items as item, i}
40
+ <span class="mw-avatar-group__item">
41
+ <Avatar {...item} size="medium" />
42
+ </span>
43
+ {/each}
44
+
45
+ {#if shouldRenderOverflow}
46
+ <span aria-label={resolvedOverflowLabel} class="mw-avatar-group__counter" role="img">
47
+ +{overflowCount}
48
+ </span>
49
+ {/if}
50
+ </fieldset>
@@ -0,0 +1,15 @@
1
+ import type { AvatarProps } from "./types.js";
2
+ interface AvatarGroupItem extends Omit<AvatarProps, "size" | "class" | "style"> {
3
+ id?: string;
4
+ }
5
+ interface AvatarGroupProps {
6
+ items: AvatarGroupItem[];
7
+ overflowCount?: number;
8
+ overflowLabel?: string;
9
+ ariaLabel?: string;
10
+ dataAttributes?: Record<string, string>;
11
+ class?: string;
12
+ }
13
+ declare const AvatarGroup: import("svelte").Component<AvatarGroupProps, {}, "">;
14
+ type AvatarGroup = ReturnType<typeof AvatarGroup>;
15
+ export default AvatarGroup;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ import { createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import AvatarBadge from "./AvatarBadge.svelte";
4
+ import type { AvatarProps } from "./types.js";
5
+
6
+ interface PresenceAvatarProps extends AvatarProps {
7
+ statusLabel?: string;
8
+ }
9
+
10
+ let { dataAttributes, ...props }: PresenceAvatarProps = $props();
11
+ </script>
12
+ <AvatarBadge {...props} dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("presence") }} />
@@ -0,0 +1,7 @@
1
+ import type { AvatarProps } from "./types.js";
2
+ interface PresenceAvatarProps extends AvatarProps {
3
+ statusLabel?: string;
4
+ }
5
+ declare const PresenceAvatar: import("svelte").Component<PresenceAvatarProps, {}, "">;
6
+ type PresenceAvatar = ReturnType<typeof PresenceAvatar>;
7
+ export default PresenceAvatar;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import Avatar from "./Avatar.svelte";
4
+ import type { AvatarProps } from "./types.js";
5
+ let { dataAttributes, ...props }: AvatarProps = $props();
6
+ </script>
7
+ <Avatar {...props} dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("profile") }} />
@@ -0,0 +1,4 @@
1
+ import type { AvatarProps } from "./types.js";
2
+ declare const ProfileAvatar: import("svelte").Component<AvatarProps, {}, "">;
3
+ type ProfileAvatar = ReturnType<typeof ProfileAvatar>;
4
+ export default ProfileAvatar;
@@ -0,0 +1,19 @@
1
+ # Avatar — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - `createAvatarRecipe` integration
7
+ - All types: icon, initials, image (auto-detected)
8
+ - All sizes: small, medium, large
9
+ - Proper content rendering per type (img, span with initials, Icon)
10
+ - Accessibility: role="img", aria-hidden for decorative, aria-label
11
+ - Initials normalization (max 2 chars, uppercase)
12
+
13
+ ### Missing ❌
14
+ - **`AvatarBadge`** component (small indicator overlaid on avatar)
15
+ - **`AvatarGroup`** component (stacked avatar row with overlap)
16
+ - **Purpose variants**
17
+
18
+ ### Notes
19
+ - `AvatarBadge` and `AvatarGroup` are layout/positioning components. Medium complexity. They rely on CSS positioning rather than core recipes.
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import AvatarGroup from "./AvatarGroup.svelte";
4
+ import type { AvatarProps } from "./types.js";
5
+
6
+ interface AvatarGroupItem extends Omit<AvatarProps, "size" | "class" | "style"> {
7
+ id?: string;
8
+ }
9
+
10
+ interface TeamAvatarGroupProps {
11
+ items: AvatarGroupItem[];
12
+ overflowCount?: number;
13
+ overflowLabel?: string;
14
+ ariaLabel?: string;
15
+ dataAttributes?: Record<string, string>;
16
+ class?: string;
17
+ }
18
+
19
+ let { dataAttributes, ...props }: TeamAvatarGroupProps = $props();
20
+ </script>
21
+ <AvatarGroup {...props} dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("team") }} />
@@ -0,0 +1,15 @@
1
+ import type { AvatarProps } from "./types.js";
2
+ interface AvatarGroupItem extends Omit<AvatarProps, "size" | "class" | "style"> {
3
+ id?: string;
4
+ }
5
+ interface TeamAvatarGroupProps {
6
+ items: AvatarGroupItem[];
7
+ overflowCount?: number;
8
+ overflowLabel?: string;
9
+ ariaLabel?: string;
10
+ dataAttributes?: Record<string, string>;
11
+ class?: string;
12
+ }
13
+ declare const TeamAvatarGroup: import("svelte").Component<TeamAvatarGroupProps, {}, "">;
14
+ type TeamAvatarGroup = ReturnType<typeof TeamAvatarGroup>;
15
+ export default TeamAvatarGroup;
@@ -0,0 +1,2 @@
1
+ export { default as Avatar } from "./Avatar.svelte";
2
+ export type { AvatarProps } from "./types.js";
@@ -0,0 +1 @@
1
+ export { default as Avatar } from "./Avatar.svelte";
@@ -0,0 +1,6 @@
1
+ import type { AvatarOptions } from "@marwes-ui/core";
2
+ export interface AvatarProps extends AvatarOptions {
3
+ class?: string;
4
+ style?: string | undefined;
5
+ dataAttributes?: Record<string, string>;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import { createBadgeRecipe } from "@marwes-ui/core";
3
+ import { mergeClass } from "../../internal/merge-class.js";
4
+ import type { BadgeProps } from "./types.js";
5
+
6
+ let {
7
+ children,
8
+ class: className,
9
+ id,
10
+ dataAttributes,
11
+ ...coreProps
12
+ }: BadgeProps = $props();
13
+
14
+ const kit = $derived(createBadgeRecipe(coreProps));
15
+ const mergedClass = $derived(mergeClass(kit.className, className));
16
+ </script>
17
+
18
+ <span
19
+ {id}
20
+ class={mergedClass}
21
+ aria-label={kit.a11y.ariaLabel}
22
+ {...kit.dataAttributes}
23
+ {...dataAttributes}
24
+ >
25
+ {@render children?.()}
26
+ </span>
@@ -0,0 +1,4 @@
1
+ import type { BadgeProps } from "./types.js";
2
+ declare const Badge: import("svelte").Component<BadgeProps, {}, "">;
3
+ type Badge = ReturnType<typeof Badge>;
4
+ export default Badge;
@@ -0,0 +1,25 @@
1
+ <script lang="ts">
2
+ import { mergeClass } from "../../internal/merge-class.js";
3
+ import type { BadgeGroupProps } from "./types.js";
4
+
5
+ let {
6
+ label,
7
+ children,
8
+ class: className,
9
+ id: userProvidedId,
10
+ }: BadgeGroupProps = $props();
11
+
12
+ const uniqueId = $props.id();
13
+ const groupId = $derived(userProvidedId ?? `mw-badge-group-${uniqueId}`);
14
+ const labelId = $derived(`${groupId}-label`);
15
+ const mergedClass = $derived(mergeClass("mw-badge-group", className));
16
+ </script>
17
+
18
+ <fieldset class={mergedClass} aria-labelledby={labelId}>
19
+ <legend class="mw-badge-group__label" id={labelId}>
20
+ <p class="mw-p mw-p--sm">{label}</p>
21
+ </legend>
22
+ <div class="mw-badge-group__items">
23
+ {@render children?.()}
24
+ </div>
25
+ </fieldset>
@@ -0,0 +1,4 @@
1
+ import type { BadgeGroupProps } from "./types.js";
2
+ declare const BadgeGroup: import("svelte").Component<BadgeGroupProps, {}, "">;
3
+ type BadgeGroup = ReturnType<typeof BadgeGroup>;
4
+ export default BadgeGroup;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import Badge from "./Badge.svelte";
4
+ import type { BadgeProps } from "./types.js";
5
+ let { dataAttributes, ...props }: BadgeProps = $props();
6
+ </script>
7
+ <Badge {...props} dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("notification") }} />
@@ -0,0 +1,4 @@
1
+ import type { BadgeProps } from "./types.js";
2
+ declare const NotificationBadge: import("svelte").Component<BadgeProps, {}, "">;
3
+ type NotificationBadge = ReturnType<typeof NotificationBadge>;
4
+ export default NotificationBadge;