@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,11 @@
1
+ import type { SliderFieldProps, SliderProps } from "./types.js";
2
+ interface BrightnessSliderProps extends Omit<SliderFieldProps, "label" | "slider" | "minValueLabel" | "maxValueLabel"> {
3
+ label?: string;
4
+ slider?: Omit<SliderProps, "value">;
5
+ orientation?: SliderProps["orientation"];
6
+ minValueLabel?: string;
7
+ maxValueLabel?: string;
8
+ }
9
+ declare const BrightnessSlider: import("svelte").Component<BrightnessSliderProps, {}, "">;
10
+ type BrightnessSlider = ReturnType<typeof BrightnessSlider>;
11
+ export default BrightnessSlider;
@@ -0,0 +1,20 @@
1
+ # Slider — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - `createSliderRecipe` integration
7
+ - `bind:value` + `onvaluechange` callback
8
+ - Native `<input type="range">` with proper a11y
9
+ - All props: min, max, step, disabled, orientation, ariaLabel, ariaValueText
10
+ - CSS var for fill percentage (--mw-slider-fill-percentage)
11
+ - Tooltip support
12
+ - Data attributes
13
+
14
+ ### Missing ❌
15
+ - **`SliderField`** molecule (label, description, error wiring)
16
+ - **Touch area** visual treatment (showTouchArea renders differently in React)
17
+ - **Purpose variants**
18
+
19
+ ### Notes
20
+ - The base slider is fully functional. `SliderField` follows the standard field molecule pattern and can be added easily.
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import SliderField from "./SliderField.svelte";
3
+ import type { SliderFieldProps, SliderProps } from "./types.js";
4
+
5
+ interface RadiusSliderProps extends Omit<SliderFieldProps, "label" | "slider" | "minValueLabel" | "maxValueLabel"> {
6
+ label?: string;
7
+ slider?: Omit<SliderProps, "value">;
8
+ orientation?: SliderProps["orientation"];
9
+ minValueLabel?: string;
10
+ maxValueLabel?: string;
11
+ }
12
+
13
+ let {
14
+ label = "Radius",
15
+ slider,
16
+ orientation,
17
+ minValueLabel = "0px",
18
+ maxValueLabel = "48px",
19
+ dataAttributes,
20
+ ...rest
21
+ }: RadiusSliderProps = $props();
22
+ </script>
23
+
24
+ <SliderField
25
+ {...rest}
26
+ {label}
27
+ {minValueLabel}
28
+ {maxValueLabel}
29
+ slider={{ min: 0, max: 48, step: 2, showTooltip: true, ...(orientation !== undefined ? { orientation } : {}), ...slider }}
30
+ dataAttributes={{ ...dataAttributes, "data-purpose": "radius" }}
31
+ />
@@ -0,0 +1,11 @@
1
+ import type { SliderFieldProps, SliderProps } from "./types.js";
2
+ interface RadiusSliderProps extends Omit<SliderFieldProps, "label" | "slider" | "minValueLabel" | "maxValueLabel"> {
3
+ label?: string;
4
+ slider?: Omit<SliderProps, "value">;
5
+ orientation?: SliderProps["orientation"];
6
+ minValueLabel?: string;
7
+ maxValueLabel?: string;
8
+ }
9
+ declare const RadiusSlider: import("svelte").Component<RadiusSliderProps, {}, "">;
10
+ type RadiusSlider = ReturnType<typeof RadiusSlider>;
11
+ export default RadiusSlider;
@@ -0,0 +1,67 @@
1
+ <script lang="ts">
2
+ import { createSliderRecipe } from "@marwes-ui/core";
3
+ import { cssVarsToStyle, mergeStyle } from "../../internal/css-vars.js";
4
+ import { mergeClass } from "../../internal/merge-class.js";
5
+ import type { SliderProps } from "./types.js";
6
+
7
+ let {
8
+ value = $bindable(50),
9
+ oninput,
10
+ onvaluechange,
11
+ class: className,
12
+ style,
13
+ ariaDescribedBy,
14
+ ariaInvalid,
15
+ ...options
16
+ }: SliderProps = $props();
17
+
18
+ const kit = $derived(createSliderRecipe({
19
+ ...options,
20
+ value,
21
+ ...(ariaDescribedBy ? { ariaDescribedBy } : {}),
22
+ }));
23
+ const mergedClass = $derived(mergeClass(kit.className, className));
24
+ const mergedStyle = $derived(mergeStyle(cssVarsToStyle(kit.vars), style));
25
+
26
+ function handleInput(e: Event & { currentTarget: HTMLInputElement }): void {
27
+ const next = Number(e.currentTarget.value);
28
+ value = next;
29
+ oninput?.(e);
30
+ onvaluechange?.(next);
31
+ }
32
+ </script>
33
+
34
+ <div class={mergedClass} style={mergedStyle} {...kit.dataAttributes}>
35
+ <div class="mw-slider__control">
36
+ <input
37
+ type="range"
38
+ class={kit.inputClassName}
39
+ id={kit.a11y.id}
40
+ name={kit.a11y.name}
41
+ min={kit.a11y.min}
42
+ max={kit.a11y.max}
43
+ step={kit.a11y.step}
44
+ disabled={kit.a11y.disabled}
45
+ required={kit.a11y.required}
46
+ aria-label={kit.a11y.ariaLabel}
47
+ aria-labelledby={kit.a11y.ariaLabelledBy}
48
+ aria-describedby={kit.a11y.ariaDescribedBy}
49
+ aria-valuetext={kit.a11y.ariaValueText}
50
+ aria-orientation={kit.a11y.ariaOrientation}
51
+ aria-invalid={ariaInvalid ? true : undefined}
52
+ value={kit.value}
53
+ oninput={handleInput}
54
+ />
55
+
56
+ <div class="mw-slider__visual" aria-hidden="true">
57
+ <span class="mw-slider__track"></span>
58
+ <span class="mw-slider__fill"></span>
59
+ <span class="mw-slider__touch-area"></span>
60
+ <span class="mw-slider__thumb"></span>
61
+ </div>
62
+
63
+ {#if kit.showTooltip}
64
+ <span class="mw-slider__tooltip" aria-hidden="true">{kit.value}</span>
65
+ {/if}
66
+ </div>
67
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { SliderProps } from "./types.js";
2
+ declare const Slider: import("svelte").Component<SliderProps, {}, "value">;
3
+ type Slider = ReturnType<typeof Slider>;
4
+ export default Slider;
@@ -0,0 +1,115 @@
1
+ <script lang="ts">
2
+ import { buildSliderFieldA11yIds } from "@marwes-ui/core";
3
+ import { mergeClass } from "../../internal/merge-class.js";
4
+ import Slider from "./Slider.svelte";
5
+ import type { SliderFieldProps, SliderProps } from "./types.js";
6
+
7
+ let {
8
+ id: userProvidedId,
9
+ label,
10
+ description,
11
+ helperText,
12
+ error,
13
+ slider = {},
14
+ ariaDescribedBy,
15
+ minValueLabel,
16
+ maxValueLabel,
17
+ labelPosition = "top",
18
+ showEdgeValues = true,
19
+ dataAttributes,
20
+ value = $bindable(50),
21
+ class: className,
22
+ }: SliderFieldProps = $props();
23
+
24
+ const uniqueId = $props.id();
25
+ const fieldId = $derived(userProvidedId ?? `mw-slider-${uniqueId}`);
26
+
27
+ function hasTextContent(text: string | undefined): boolean {
28
+ return text !== undefined && text.trim().length > 0;
29
+ }
30
+
31
+ const descriptionText = $derived(description ?? helperText);
32
+ const hasDescription = $derived(hasTextContent(descriptionText));
33
+ const hasError = $derived(hasTextContent(error));
34
+ const isDisabled = $derived(slider.disabled === true);
35
+ const minEdgeValue = $derived(minValueLabel ?? `${slider.min ?? 0}`);
36
+ const maxEdgeValue = $derived(maxValueLabel ?? `${slider.max ?? 100}`);
37
+
38
+ const a11yIds = $derived(
39
+ buildSliderFieldA11yIds({ id: fieldId, hasDescription, hasError, externalDescribedBy: ariaDescribedBy })
40
+ );
41
+
42
+ const wrapperClass = $derived(
43
+ mergeClass(
44
+ "mw-slider-field",
45
+ labelPosition === "top" && "mw-slider-field--label-top",
46
+ labelPosition === "inline" && "mw-slider-field--label-inline",
47
+ isDisabled && "mw-slider-field--disabled",
48
+ hasError && "mw-slider-field--invalid",
49
+ className
50
+ )
51
+ );
52
+ </script>
53
+
54
+ <div class={wrapperClass} data-label-position={labelPosition} {...dataAttributes}>
55
+ <div class="mw-slider-field__header">
56
+ <div class="mw-slider-field__label" id={a11yIds.labelId}>
57
+ <p class="mw-p mw-p--md">{label}</p>
58
+ </div>
59
+ </div>
60
+
61
+ {#if hasDescription && !hasError}
62
+ <div class="mw-slider-field__description" id={a11yIds.descriptionId}>
63
+ <p class="mw-p mw-p--sm">{descriptionText}</p>
64
+ </div>
65
+ {/if}
66
+
67
+ {#if labelPosition === "top" && showEdgeValues}
68
+ <div class="mw-slider-field__values-row">
69
+ <span class="mw-slider-field__edge-value mw-slider-field__edge-value--min">
70
+ <p class="mw-p mw-p--sm">{minEdgeValue}</p>
71
+ </span>
72
+ <span class="mw-slider-field__edge-value mw-slider-field__edge-value--max">
73
+ <p class="mw-p mw-p--sm">{maxEdgeValue}</p>
74
+ </span>
75
+ </div>
76
+ {/if}
77
+
78
+ <div class="mw-slider-field__control-row">
79
+ {#if labelPosition === "inline" && showEdgeValues}
80
+ <span class="mw-slider-field__edge-value mw-slider-field__edge-value--min">
81
+ <p class="mw-p mw-p--sm">{minEdgeValue}</p>
82
+ </span>
83
+ {/if}
84
+
85
+ <div class="mw-slider-field__slider">
86
+ <Slider
87
+ {...slider}
88
+ id={fieldId}
89
+ ariaLabelledBy={a11yIds.labelId}
90
+ ariaDescribedBy={a11yIds.describedBy || undefined}
91
+ ariaInvalid={hasError}
92
+ style="width: 100%;"
93
+ bind:value
94
+ />
95
+ </div>
96
+
97
+ {#if labelPosition === "inline" && showEdgeValues}
98
+ <span class="mw-slider-field__edge-value mw-slider-field__edge-value--max">
99
+ <p class="mw-p mw-p--sm">{maxEdgeValue}</p>
100
+ </span>
101
+ {/if}
102
+ </div>
103
+
104
+ {#if hasDescription && hasError}
105
+ <div class="mw-slider-field__description" id={a11yIds.descriptionId}>
106
+ <p class="mw-p mw-p--sm">{descriptionText}</p>
107
+ </div>
108
+ {/if}
109
+
110
+ {#if hasError}
111
+ <div class="mw-slider-field__error" id={a11yIds.errorId} aria-live="polite">
112
+ <p class="mw-p mw-p--sm">{error}</p>
113
+ </div>
114
+ {/if}
115
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { SliderFieldProps } from "./types.js";
2
+ declare const SliderField: import("svelte").Component<SliderFieldProps, {}, "value">;
3
+ type SliderField = ReturnType<typeof SliderField>;
4
+ export default SliderField;
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import SliderField from "./SliderField.svelte";
3
+ import type { SliderFieldProps, SliderProps } from "./types.js";
4
+
5
+ interface VolumeSliderProps extends Omit<SliderFieldProps, "label" | "slider" | "minValueLabel" | "maxValueLabel"> {
6
+ label?: string;
7
+ slider?: Omit<SliderProps, "value">;
8
+ orientation?: SliderProps["orientation"];
9
+ minValueLabel?: string;
10
+ maxValueLabel?: string;
11
+ }
12
+
13
+ let {
14
+ label = "Volume",
15
+ slider,
16
+ orientation,
17
+ minValueLabel = "0",
18
+ maxValueLabel = "100",
19
+ dataAttributes,
20
+ ...rest
21
+ }: VolumeSliderProps = $props();
22
+ </script>
23
+
24
+ <SliderField
25
+ {...rest}
26
+ {label}
27
+ {minValueLabel}
28
+ {maxValueLabel}
29
+ slider={{ min: 0, max: 100, step: 1, showTooltip: true, ...(orientation !== undefined ? { orientation } : {}), ...slider }}
30
+ dataAttributes={{ ...dataAttributes, "data-purpose": "volume" }}
31
+ />
@@ -0,0 +1,11 @@
1
+ import type { SliderFieldProps, SliderProps } from "./types.js";
2
+ interface VolumeSliderProps extends Omit<SliderFieldProps, "label" | "slider" | "minValueLabel" | "maxValueLabel"> {
3
+ label?: string;
4
+ slider?: Omit<SliderProps, "value">;
5
+ orientation?: SliderProps["orientation"];
6
+ minValueLabel?: string;
7
+ maxValueLabel?: string;
8
+ }
9
+ declare const VolumeSlider: import("svelte").Component<VolumeSliderProps, {}, "">;
10
+ type VolumeSlider = ReturnType<typeof VolumeSlider>;
11
+ export default VolumeSlider;
@@ -0,0 +1,2 @@
1
+ export { default as Slider } from "./Slider.svelte";
2
+ export type { SliderProps, SliderFieldProps } from "./types.js";
@@ -0,0 +1 @@
1
+ export { default as Slider } from "./Slider.svelte";
@@ -0,0 +1,28 @@
1
+ import type { SliderOptions } from "@marwes-ui/core";
2
+ export interface SliderProps extends Omit<SliderOptions, "ariaDescribedBy"> {
3
+ value?: number;
4
+ oninput?: (e: Event & {
5
+ currentTarget: HTMLInputElement;
6
+ }) => void;
7
+ onvaluechange?: (value: number) => void;
8
+ class?: string;
9
+ style?: string | undefined;
10
+ ariaDescribedBy?: string | undefined;
11
+ ariaInvalid?: boolean;
12
+ }
13
+ export interface SliderFieldProps {
14
+ id?: string;
15
+ label: string;
16
+ description?: string;
17
+ helperText?: string;
18
+ error?: string;
19
+ slider?: Omit<SliderProps, "value">;
20
+ ariaDescribedBy?: string;
21
+ minValueLabel?: string;
22
+ maxValueLabel?: string;
23
+ labelPosition?: "top" | "inline";
24
+ showEdgeValues?: boolean;
25
+ dataAttributes?: Record<string, string>;
26
+ value?: number;
27
+ class?: string;
28
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ # Spacing — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - Full parity with React/Vue
7
+ - `createSpacingRecipe` integration
8
+ - All 18 token sizes (sp-0 through sp-120)
9
+ - `scale` multiplier prop
10
+ - Decorative `<div>` with aria-hidden="true"
11
+ - Data attributes, class/style/CSS vars merging
12
+ - `Spacer` alias component
13
+
14
+ ### Missing ❌
15
+ - None — full parity.
@@ -0,0 +1,8 @@
1
+ <script lang="ts">
2
+ import Spacing from "./Spacing.svelte";
3
+ import type { SpacerProps } from "./types.js";
4
+
5
+ let props: SpacerProps = $props();
6
+ </script>
7
+
8
+ <Spacing {...props} />
@@ -0,0 +1,3 @@
1
+ declare const Spacer: import("svelte").Component<import("./types.js").SpacingProps, {}, "">;
2
+ type Spacer = ReturnType<typeof Spacer>;
3
+ export default Spacer;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { createSpacingRecipe } from "@marwes-ui/core";
3
+ import { cssVarsToStyle, mergeStyle } from "../../internal/css-vars.js";
4
+ import { mergeClass } from "../../internal/merge-class.js";
5
+ import type { SpacingProps } from "./types.js";
6
+
7
+ let {
8
+ class: className,
9
+ style,
10
+ ...options
11
+ }: SpacingProps = $props();
12
+
13
+ const kit = $derived(createSpacingRecipe(options));
14
+ const mergedClass = $derived(mergeClass(kit.className, className));
15
+ const mergedStyle = $derived(mergeStyle(cssVarsToStyle(kit.vars), style));
16
+ </script>
17
+
18
+ <div
19
+ class={mergedClass}
20
+ style={mergedStyle}
21
+ aria-hidden={kit.a11y["aria-hidden"]}
22
+ {...kit.dataAttributes}
23
+ ></div>
@@ -0,0 +1,4 @@
1
+ import type { SpacingProps } from "./types.js";
2
+ declare const Spacing: import("svelte").Component<SpacingProps, {}, "">;
3
+ type Spacing = ReturnType<typeof Spacing>;
4
+ export default Spacing;
@@ -0,0 +1,3 @@
1
+ export { default as Spacing } from "./Spacing.svelte";
2
+ export { default as Spacer } from "./Spacer.svelte";
3
+ export type { SpacingProps, SpacerProps } from "./types.js";
@@ -0,0 +1,2 @@
1
+ export { default as Spacing } from "./Spacing.svelte";
2
+ export { default as Spacer } from "./Spacer.svelte";
@@ -0,0 +1,7 @@
1
+ import type { SpacingOptions } from "@marwes-ui/core";
2
+ export interface SpacingProps extends SpacingOptions {
3
+ class?: string;
4
+ style?: string | undefined;
5
+ }
6
+ /** Spacer is an alias for Spacing. */
7
+ export type SpacerProps = SpacingProps;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ <script lang="ts">
2
+ import { mergeStyle } from "../../internal/css-vars.js";
3
+ import Spinner from "./Spinner.svelte";
4
+ import type { ButtonSpinnerProps } from "./types.js";
5
+
6
+ let {
7
+ inverted = false,
8
+ variant = "classic",
9
+ size = "xs",
10
+ decorative = true,
11
+ style,
12
+ dataAttributes,
13
+ ...rest
14
+ }: ButtonSpinnerProps = $props();
15
+
16
+ const spinnerStyle = $derived(
17
+ mergeStyle(
18
+ `--mw-spinner-track-color: ${inverted ? "color-mix(in srgb, currentColor 80%, transparent)" : "color-mix(in srgb, currentColor 35%, transparent)"}; --mw-spinner-indicator-color: currentColor`,
19
+ style
20
+ )
21
+ );
22
+ </script>
23
+
24
+ <Spinner
25
+ {...rest}
26
+ {variant}
27
+ {size}
28
+ {decorative}
29
+ style={spinnerStyle}
30
+ dataAttributes={{
31
+ ...dataAttributes,
32
+ "data-purpose": "button-loading",
33
+ "data-context": "button-loading",
34
+ }}
35
+ />
@@ -0,0 +1,4 @@
1
+ import type { ButtonSpinnerProps } from "./types.js";
2
+ declare const ButtonSpinner: import("svelte").Component<ButtonSpinnerProps, {}, "">;
3
+ type ButtonSpinner = ReturnType<typeof ButtonSpinner>;
4
+ export default ButtonSpinner;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { mergeStyle } from "../../internal/css-vars.js";
3
+ import Spinner from "./Spinner.svelte";
4
+ import type { SpinnerProps } from "./types.js";
5
+
6
+ type Props = SpinnerProps;
7
+ let { dataAttributes, ...props }: Props = $props();
8
+ </script>
9
+
10
+ <Spinner
11
+ {...props}
12
+ variant={props.variant ?? "dots-round"}
13
+ size={props.size ?? "lg"}
14
+ decorative={props.decorative ?? true}
15
+ dataAttributes={{
16
+ ...dataAttributes,
17
+ "data-purpose": "empty-state",
18
+ "data-context": "empty-state",
19
+ }}
20
+ />
@@ -0,0 +1,4 @@
1
+ import type { SpinnerProps } from "./types.js";
2
+ declare const EmptyStateSpinner: import("svelte").Component<SpinnerProps, {}, "">;
3
+ type EmptyStateSpinner = ReturnType<typeof EmptyStateSpinner>;
4
+ export default EmptyStateSpinner;
@@ -0,0 +1,19 @@
1
+ # Spinner — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - `Spinner` atom with full `createSpinnerRecipe` integration
7
+ - All 7 variants: classic, ring, dual, dots-round, dots-square, lines, cross
8
+ - All sizes: xs, sm, md, lg (and custom numeric)
9
+ - SVG node rendering with kebab-case attribute conversion
10
+ - `ButtonSpinner` purpose wrapper with track/indicator color vars
11
+ - Accessibility: role="status", aria-hidden, aria-label, aria-live
12
+ - Data attributes: data-component, data-variant, data-size
13
+ - Class/style/CSS vars merging
14
+
15
+ ### Missing ❌
16
+ - `EmptyStateSpinner` purpose wrapper (React/Vue have it, low priority)
17
+
18
+ ### Notes
19
+ - `EmptyStateSpinner` is trivial — same as `ButtonSpinner` but defaults to `variant="dots-round"`, `size="lg"`, with `data-purpose="empty-state"`.
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import { createSpinnerRecipe } from "@marwes-ui/core";
3
+ import { cssVarsToStyle, mergeStyle } from "../../internal/css-vars.js";
4
+ import { mergeClass } from "../../internal/merge-class.js";
5
+ import { svgAttrsToKebab } from "../../internal/svg-attrs.js";
6
+ import type { SpinnerProps } from "./types.js";
7
+
8
+ let {
9
+ variant,
10
+ size,
11
+ decorative,
12
+ ariaLabel,
13
+ id,
14
+ class: className,
15
+ style,
16
+ dataAttributes,
17
+ }: SpinnerProps = $props();
18
+
19
+ const kit = $derived(
20
+ createSpinnerRecipe({
21
+ ...(variant !== undefined ? { variant } : {}),
22
+ ...(size !== undefined ? { size } : {}),
23
+ ...(decorative !== undefined ? { decorative } : {}),
24
+ ...(ariaLabel !== undefined ? { ariaLabel } : {}),
25
+ ...(id !== undefined ? { id } : {}),
26
+ })
27
+ );
28
+
29
+ const mergedClass = $derived(mergeClass(kit.className, className));
30
+ const mergedStyle = $derived(mergeStyle(cssVarsToStyle(kit.vars), style));
31
+ </script>
32
+
33
+ <span
34
+ class={mergedClass}
35
+ style={mergedStyle}
36
+ role={kit.a11y.role}
37
+ id={kit.a11y.id}
38
+ aria-hidden={kit.a11y.ariaHidden ? "true" : undefined}
39
+ aria-label={kit.a11y.ariaLabel}
40
+ aria-live={kit.a11y.ariaLive}
41
+ {...kit.dataAttributes}
42
+ {...dataAttributes}
43
+ >
44
+ <svg
45
+ class="mw-spinner__svg"
46
+ viewBox={kit.svg.viewBox}
47
+ aria-hidden="true"
48
+ focusable="false"
49
+ >
50
+ {#each kit.svg.nodes as node}
51
+ {#if node.tag === "circle"}
52
+ <circle {...svgAttrsToKebab(node.attrs)} />
53
+ {:else if node.tag === "path"}
54
+ <path {...svgAttrsToKebab(node.attrs)} />
55
+ {:else if node.tag === "rect"}
56
+ <rect {...svgAttrsToKebab(node.attrs)} />
57
+ {/if}
58
+ {/each}
59
+ </svg>
60
+ </span>
@@ -0,0 +1,4 @@
1
+ import type { SpinnerProps } from "./types.js";
2
+ declare const Spinner: import("svelte").Component<SpinnerProps, {}, "">;
3
+ type Spinner = ReturnType<typeof Spinner>;
4
+ export default Spinner;
@@ -0,0 +1,3 @@
1
+ export { default as Spinner } from "./Spinner.svelte";
2
+ export { default as ButtonSpinner } from "./ButtonSpinner.svelte";
3
+ export type { SpinnerProps, ButtonSpinnerProps } from "./types.js";
@@ -0,0 +1,2 @@
1
+ export { default as Spinner } from "./Spinner.svelte";
2
+ export { default as ButtonSpinner } from "./ButtonSpinner.svelte";
@@ -0,0 +1,9 @@
1
+ import type { SpinnerOptions } from "@marwes-ui/core";
2
+ export interface SpinnerProps extends SpinnerOptions {
3
+ class?: string;
4
+ style?: string | undefined;
5
+ dataAttributes?: Record<string, string>;
6
+ }
7
+ export interface ButtonSpinnerProps extends SpinnerProps {
8
+ inverted?: boolean;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ # StatTile — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - Full parity with React/Vue
7
+ - `createStatTileRecipe` integration
8
+ - All tones: neutral, brand, success, warning, danger
9
+ - Trend direction with icon (↑/↓) and trend value
10
+ - Slots: header, label, value, subtitle, trend
11
+ - aria-label on trend for screen readers
12
+ - Data attributes (data-component, data-tone, data-trend)
13
+
14
+ ### Missing ❌
15
+ - None — full parity.