@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,7 @@
1
+ export { default as Tab } from "./Tab.svelte";
2
+ export { default as TabPanel } from "./TabPanel.svelte";
3
+ export { default as TabGroup } from "./TabGroup.svelte";
4
+ export { default as NavigationTabs } from "./NavigationTabs.svelte";
5
+ export { default as ContentTabs } from "./ContentTabs.svelte";
6
+ export { default as SettingsTabs } from "./SettingsTabs.svelte";
7
+ export type { TabProps, TabPanelProps, TabGroupProps, TabGroupItem, NavigationTabsProps, ContentTabsProps, SettingsTabsProps, } from "./types.js";
@@ -0,0 +1,6 @@
1
+ export { default as Tab } from "./Tab.svelte";
2
+ export { default as TabPanel } from "./TabPanel.svelte";
3
+ export { default as TabGroup } from "./TabGroup.svelte";
4
+ export { default as NavigationTabs } from "./NavigationTabs.svelte";
5
+ export { default as ContentTabs } from "./ContentTabs.svelte";
6
+ export { default as SettingsTabs } from "./SettingsTabs.svelte";
@@ -0,0 +1,36 @@
1
+ import type { TabOptions } from "@marwes-ui/core";
2
+ import type { Snippet } from "svelte";
3
+ export interface TabProps extends TabOptions {
4
+ children?: Snippet;
5
+ class?: string;
6
+ id?: string;
7
+ onclick?: (e: MouseEvent) => void;
8
+ }
9
+ export interface TabPanelProps {
10
+ id: string;
11
+ tabId: string;
12
+ hidden?: boolean;
13
+ children?: Snippet;
14
+ class?: string;
15
+ }
16
+ export interface TabGroupItem {
17
+ value: string;
18
+ label: string;
19
+ panel: Snippet | string;
20
+ disabled?: boolean;
21
+ ariaLabel?: string;
22
+ }
23
+ export interface TabGroupProps {
24
+ id?: string;
25
+ label?: string;
26
+ ariaLabel?: string;
27
+ tabs: TabGroupItem[];
28
+ activeTab?: string;
29
+ defaultActiveTab?: string;
30
+ onactivetabchange?: (value: string) => void;
31
+ dataAttributes?: Record<string, string>;
32
+ class?: string;
33
+ }
34
+ export type NavigationTabsProps = TabGroupProps;
35
+ export type ContentTabsProps = TabGroupProps;
36
+ export type SettingsTabsProps = TabGroupProps;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { IconName, createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import Icon from "../icon/Icon.svelte";
4
+ import Toast from "./Toast.svelte";
5
+ import type { ToastProps } from "./types.js";
6
+
7
+ let { dataAttributes, variant, ariaLive, icon, ...props }: ToastProps = $props();
8
+ const hasCustomIcon = $derived(icon !== undefined);
9
+ </script>
10
+
11
+ <Toast
12
+ {...props}
13
+ variant={variant ?? "outline"}
14
+ ariaLive={ariaLive ?? "assertive"}
15
+ dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("error-toast") }}
16
+ >
17
+ {#snippet icon()}
18
+ {#if hasCustomIcon}
19
+ {@render icon?.()}
20
+ {:else}
21
+ <Icon name={IconName.XCircle} decorative />
22
+ {/if}
23
+ {/snippet}
24
+ </Toast>
@@ -0,0 +1,4 @@
1
+ import type { ToastProps } from "./types.js";
2
+ declare const ErrorToast: import("svelte").Component<ToastProps, {}, "">;
3
+ type ErrorToast = ReturnType<typeof ErrorToast>;
4
+ export default ErrorToast;
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { IconName, createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import Icon from "../icon/Icon.svelte";
4
+ import Toast from "./Toast.svelte";
5
+ import type { ToastProps } from "./types.js";
6
+
7
+ let { dataAttributes, variant, ariaLive, icon, ...props }: ToastProps = $props();
8
+ const hasCustomIcon = $derived(icon !== undefined);
9
+ </script>
10
+
11
+ <Toast
12
+ {...props}
13
+ variant={variant ?? "outline"}
14
+ ariaLive={ariaLive ?? "polite"}
15
+ dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("info-toast") }}
16
+ >
17
+ {#snippet icon()}
18
+ {#if hasCustomIcon}
19
+ {@render icon?.()}
20
+ {:else}
21
+ <Icon name={IconName.Info} decorative />
22
+ {/if}
23
+ {/snippet}
24
+ </Toast>
@@ -0,0 +1,4 @@
1
+ import type { ToastProps } from "./types.js";
2
+ declare const InfoToast: import("svelte").Component<ToastProps, {}, "">;
3
+ type InfoToast = ReturnType<typeof InfoToast>;
4
+ export default InfoToast;
@@ -0,0 +1,35 @@
1
+ # Toast
2
+
3
+ Svelte toast components are aligned with the React and Vue toast family.
4
+
5
+ ## Public Components
6
+
7
+ - `Toast` — atom for a single live-region notification.
8
+ - `ToastContainer` — positioned viewport that renders managed toasts.
9
+ - `ToastProvider` — context provider with the imperative toast controller.
10
+ - `SuccessToast` — purpose toast with success semantics.
11
+ - `ErrorToast` — purpose toast with assertive error semantics.
12
+ - `WarningToast` — purpose toast with warning semantics.
13
+ - `InfoToast` — purpose toast with informational semantics.
14
+
15
+ ## Shared Contract
16
+
17
+ - Uses `createToastRecipe` from `@marwes-ui/core`.
18
+ - Wires `role="status"` or `role="alert"` from `ariaLive`.
19
+ - Sets `aria-live` and `aria-atomic="true"`.
20
+ - Supports icon, action, and dismiss slots.
21
+ - Renders a dismiss button only when `ondismiss` is provided.
22
+ - Applies canonical `data-component`, `data-purpose`, and `data-intent` attributes.
23
+ - Keeps `ToastContainer` placement classes and `maxVisible` behavior aligned with React and Vue.
24
+ - Keeps provider-managed toasts on the shared imperative API: `show()`, `dismiss()`, and `clear()`.
25
+ - Defaults provider-managed toast duration to `4000ms`.
26
+ - Keeps `duration={null}` toasts visible until product code dismisses them.
27
+ - Pauses auto-dismiss while pointer hover or focus is inside the toast, then resumes with remaining time.
28
+
29
+ ## Svelte Notes
30
+
31
+ - `useToast()` uses Svelte context through `getContext` and `setContext`.
32
+ - Icon, action, and children content use Svelte snippets.
33
+ - `ManagedToast.message` is a string, while React/Vue use framework-native node children.
34
+ - Event naming follows Svelte conventions: `ondismiss`.
35
+ - Class passthrough uses `class`, matching Svelte component conventions.
@@ -0,0 +1,25 @@
1
+ <script lang="ts">
2
+ import { IconName, createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import Icon from "../icon/Icon.svelte";
4
+ import Toast from "./Toast.svelte";
5
+ import type { ToastProps } from "./types.js";
6
+
7
+ let { dataAttributes, variant, ariaLive, icon, ...props }: ToastProps = $props();
8
+
9
+ const hasCustomIcon = $derived(icon !== undefined);
10
+ </script>
11
+
12
+ <Toast
13
+ {...props}
14
+ variant={variant ?? "outline"}
15
+ ariaLive={ariaLive ?? "polite"}
16
+ dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("success-toast") }}
17
+ >
18
+ {#snippet icon()}
19
+ {#if hasCustomIcon}
20
+ {@render icon?.()}
21
+ {:else}
22
+ <Icon name={IconName.Check} decorative />
23
+ {/if}
24
+ {/snippet}
25
+ </Toast>
@@ -0,0 +1,4 @@
1
+ import type { ToastProps } from "./types.js";
2
+ declare const SuccessToast: import("svelte").Component<ToastProps, {}, "">;
3
+ type SuccessToast = ReturnType<typeof SuccessToast>;
4
+ export default SuccessToast;
@@ -0,0 +1,53 @@
1
+ <script lang="ts">
2
+ import { createToastRecipe } from "@marwes-ui/core";
3
+ import { mergeClass } from "../../internal/merge-class.js";
4
+ import type { ToastProps } from "./types.js";
5
+
6
+ let {
7
+ children,
8
+ icon,
9
+ action,
10
+ ondismiss,
11
+ class: className,
12
+ id,
13
+ dataAttributes,
14
+ ...coreProps
15
+ }: ToastProps = $props();
16
+
17
+ const kit = $derived(createToastRecipe(coreProps));
18
+ const mergedClass = $derived(mergeClass(kit.className, className));
19
+ </script>
20
+
21
+ <div
22
+ {id}
23
+ class={mergedClass}
24
+ role={kit.a11y.role}
25
+ aria-live={kit.a11y.ariaLive}
26
+ aria-atomic="true"
27
+ {...kit.dataAttributes}
28
+ {...dataAttributes}
29
+ >
30
+ {#if icon}
31
+ <span class="mw-toast__icon" aria-hidden="true">
32
+ {@render icon()}
33
+ </span>
34
+ {/if}
35
+ <div class="mw-toast__body">
36
+ <span class="mw-toast__text">
37
+ {@render children?.()}
38
+ </span>
39
+ {#if action}
40
+ <span class="mw-toast__action">
41
+ {@render action()}
42
+ </span>
43
+ {/if}
44
+ </div>
45
+ {#if ondismiss}
46
+ <button
47
+ type="button"
48
+ class="mw-toast__dismiss"
49
+ aria-label="Dismiss"
50
+ onclick={ondismiss}
51
+ ></button>
52
+ {/if}
53
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { ToastProps } from "./types.js";
2
+ declare const Toast: import("svelte").Component<ToastProps, {}, "">;
3
+ type Toast = ReturnType<typeof Toast>;
4
+ export default Toast;
@@ -0,0 +1,212 @@
1
+ <script lang="ts">
2
+ import { mergeClass } from "../../internal/merge-class.js";
3
+ import ErrorToast from "./ErrorToast.svelte";
4
+ import InfoToast from "./InfoToast.svelte";
5
+ import SuccessToast from "./SuccessToast.svelte";
6
+ import Toast from "./Toast.svelte";
7
+ import WarningToast from "./WarningToast.svelte";
8
+ import type { ManagedToast, ToastContainerProps } from "./types.js";
9
+
10
+ let {
11
+ toasts,
12
+ placement = "top-right",
13
+ maxVisible,
14
+ class: className,
15
+ ondismiss,
16
+ }: ToastContainerProps = $props();
17
+
18
+ const mergedClass = $derived(
19
+ mergeClass("mw-toast-container", `mw-toast-container--${placement}`, className)
20
+ );
21
+
22
+ const visibleToasts = $derived(
23
+ maxVisible && maxVisible > 0 ? toasts.slice(-maxVisible) : toasts
24
+ );
25
+
26
+ type TimerState = {
27
+ duration: number | null | undefined;
28
+ focusInside: boolean;
29
+ handle: ReturnType<typeof setTimeout> | null;
30
+ pointerInside: boolean;
31
+ remaining: number | null;
32
+ startedAt: number | null;
33
+ };
34
+
35
+ const timerStates = new Map<string, TimerState>();
36
+
37
+ function getTimerState(toast: ManagedToast): TimerState {
38
+ let state = timerStates.get(toast.id);
39
+ if (!state) {
40
+ state = {
41
+ duration: undefined,
42
+ focusInside: false,
43
+ handle: null,
44
+ pointerInside: false,
45
+ remaining: null,
46
+ startedAt: null,
47
+ };
48
+ timerStates.set(toast.id, state);
49
+ }
50
+ return state;
51
+ }
52
+
53
+ function clearDismissTimer(state: TimerState): void {
54
+ if (state.handle === null) return;
55
+ clearTimeout(state.handle);
56
+ state.handle = null;
57
+ state.startedAt = null;
58
+ }
59
+
60
+ function scheduleDismissTimer(toast: ManagedToast, delay: number): void {
61
+ const state = getTimerState(toast);
62
+ if (!ondismiss || delay <= 0 || state.pointerInside || state.focusInside || state.handle !== null) {
63
+ return;
64
+ }
65
+
66
+ state.startedAt = Date.now();
67
+ state.handle = setTimeout(() => {
68
+ state.handle = null;
69
+ state.startedAt = null;
70
+ state.remaining = 0;
71
+ ondismiss?.(toast.id);
72
+ }, delay);
73
+ }
74
+
75
+ function pauseDismissTimer(toast: ManagedToast): void {
76
+ const state = getTimerState(toast);
77
+ if (state.handle === null || state.startedAt === null) return;
78
+
79
+ const elapsed = Date.now() - state.startedAt;
80
+ state.remaining = Math.max((state.remaining ?? 0) - elapsed, 0);
81
+ clearDismissTimer(state);
82
+ }
83
+
84
+ function resumeDismissTimer(toast: ManagedToast): void {
85
+ const state = getTimerState(toast);
86
+ if (state.pointerInside || state.focusInside || state.remaining === null || state.remaining <= 0) {
87
+ return;
88
+ }
89
+
90
+ scheduleDismissTimer(toast, state.remaining);
91
+ }
92
+
93
+ $effect(() => {
94
+ const visibleIds = new Set(visibleToasts.map((toast) => toast.id));
95
+
96
+ for (const [id, state] of timerStates) {
97
+ if (!visibleIds.has(id)) {
98
+ clearDismissTimer(state);
99
+ timerStates.delete(id);
100
+ }
101
+ }
102
+
103
+ for (const toast of visibleToasts) {
104
+ const state = getTimerState(toast);
105
+ if (state.duration === toast.duration) continue;
106
+
107
+ clearDismissTimer(state);
108
+ state.duration = toast.duration;
109
+ state.focusInside = false;
110
+ state.pointerInside = false;
111
+ state.remaining = toast.duration ?? null;
112
+
113
+ if (toast.duration !== null && toast.duration !== undefined && toast.duration > 0) {
114
+ scheduleDismissTimer(toast, toast.duration);
115
+ }
116
+ }
117
+ });
118
+ </script>
119
+
120
+ <div class={mergedClass}>
121
+ {#each visibleToasts as toast (toast.id)}
122
+ <div
123
+ class="mw-toast-container__item"
124
+ role="presentation"
125
+ onmouseenter={() => {
126
+ const state = getTimerState(toast);
127
+ state.pointerInside = true;
128
+ pauseDismissTimer(toast);
129
+ }}
130
+ onmouseleave={() => {
131
+ const state = getTimerState(toast);
132
+ state.pointerInside = false;
133
+ resumeDismissTimer(toast);
134
+ }}
135
+ onfocusin={() => {
136
+ const state = getTimerState(toast);
137
+ state.focusInside = true;
138
+ pauseDismissTimer(toast);
139
+ }}
140
+ onfocusout={(event) => {
141
+ const related = event.relatedTarget;
142
+ if (related instanceof Node && event.currentTarget.contains(related)) return;
143
+
144
+ const state = getTimerState(toast);
145
+ state.focusInside = false;
146
+ resumeDismissTimer(toast);
147
+ }}
148
+ >
149
+ {#if toast.intent === "success"}
150
+ <SuccessToast
151
+ id={toast.id}
152
+ {...(toast.class ? { class: toast.class } : {})}
153
+ {...(toast.variant ? { variant: toast.variant } : {})}
154
+ {...(toast.ariaLive ? { ariaLive: toast.ariaLive } : {})}
155
+ {...(ondismiss ? { ondismiss: () => ondismiss(toast.id) } : {})}
156
+ {...(toast.dataAttributes ? { dataAttributes: toast.dataAttributes } : {})}
157
+ >
158
+ {#snippet children()}{toast.message}{/snippet}
159
+ </SuccessToast>
160
+ {:else if toast.intent === "error"}
161
+ <ErrorToast
162
+ id={toast.id}
163
+ {...(toast.class ? { class: toast.class } : {})}
164
+ {...(toast.variant ? { variant: toast.variant } : {})}
165
+ {...(toast.ariaLive ? { ariaLive: toast.ariaLive } : {})}
166
+ {...(ondismiss ? { ondismiss: () => ondismiss(toast.id) } : {})}
167
+ {...(toast.dataAttributes ? { dataAttributes: toast.dataAttributes } : {})}
168
+ >
169
+ {#snippet children()}{toast.message}{/snippet}
170
+ </ErrorToast>
171
+ {:else if toast.intent === "warning"}
172
+ <WarningToast
173
+ id={toast.id}
174
+ {...(toast.class ? { class: toast.class } : {})}
175
+ {...(toast.variant ? { variant: toast.variant } : {})}
176
+ {...(toast.ariaLive ? { ariaLive: toast.ariaLive } : {})}
177
+ {...(ondismiss ? { ondismiss: () => ondismiss(toast.id) } : {})}
178
+ {...(toast.dataAttributes ? { dataAttributes: toast.dataAttributes } : {})}
179
+ >
180
+ {#snippet children()}{toast.message}{/snippet}
181
+ </WarningToast>
182
+ {:else if toast.intent === "info"}
183
+ <InfoToast
184
+ id={toast.id}
185
+ {...(toast.class ? { class: toast.class } : {})}
186
+ {...(toast.variant ? { variant: toast.variant } : {})}
187
+ {...(toast.ariaLive ? { ariaLive: toast.ariaLive } : {})}
188
+ {...(ondismiss ? { ondismiss: () => ondismiss(toast.id) } : {})}
189
+ {...(toast.dataAttributes ? { dataAttributes: toast.dataAttributes } : {})}
190
+ >
191
+ {#snippet children()}{toast.message}{/snippet}
192
+ </InfoToast>
193
+ {:else}
194
+ <Toast
195
+ id={toast.id}
196
+ {...(toast.class ? { class: toast.class } : {})}
197
+ {...(toast.variant ? { variant: toast.variant } : {})}
198
+ {...(toast.ariaLive ? { ariaLive: toast.ariaLive } : {})}
199
+ {...(ondismiss ? { ondismiss: () => ondismiss(toast.id) } : {})}
200
+ {...(toast.dataAttributes ? {
201
+ dataAttributes: {
202
+ ...toast.dataAttributes,
203
+ ...(toast.intent ? { "data-intent": toast.intent } : {}),
204
+ },
205
+ } : (toast.intent ? { dataAttributes: { "data-intent": toast.intent } } : {}))}
206
+ >
207
+ {#snippet children()}{toast.message}{/snippet}
208
+ </Toast>
209
+ {/if}
210
+ </div>
211
+ {/each}
212
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { ToastContainerProps } from "./types.js";
2
+ declare const ToastContainer: import("svelte").Component<ToastContainerProps, {}, "">;
3
+ type ToastContainer = ReturnType<typeof ToastContainer>;
4
+ export default ToastContainer;
@@ -0,0 +1,71 @@
1
+ <script lang="ts" module>
2
+ import { getContext, setContext } from "svelte";
3
+ import type { ToastController } from "./types.js";
4
+
5
+ const TOAST_CONTEXT_KEY = Symbol("marwes-toast");
6
+
7
+ export function setToastContext(controller: ToastController): void {
8
+ setContext(TOAST_CONTEXT_KEY, controller);
9
+ }
10
+
11
+ export function useToast(): ToastController {
12
+ const ctx = getContext<ToastController | undefined>(TOAST_CONTEXT_KEY);
13
+ if (!ctx) {
14
+ throw new Error("ToastProvider is missing. Wrap your app in <ToastProvider />.");
15
+ }
16
+ return ctx;
17
+ }
18
+ </script>
19
+
20
+ <script lang="ts">
21
+ import ToastContainer from "./ToastContainer.svelte";
22
+ import type { ManagedToast, ShowToastOptions, ToastProviderProps } from "./types.js";
23
+
24
+ let {
25
+ children,
26
+ placement,
27
+ maxVisible,
28
+ defaultDuration,
29
+ class: className,
30
+ }: ToastProviderProps = $props();
31
+
32
+ let toasts = $state<ManagedToast[]>([]);
33
+ let nextId = $state(0);
34
+
35
+ function show(options: ShowToastOptions): string {
36
+ nextId += 1;
37
+ const id = `mw-toast-${nextId}`;
38
+ const duration = options.duration === undefined
39
+ ? (defaultDuration === undefined ? 4000 : defaultDuration)
40
+ : options.duration;
41
+
42
+ toasts = [...toasts, { ...options, id, duration }];
43
+
44
+ return id;
45
+ }
46
+
47
+ function dismiss(id: string): void {
48
+ const toast = toasts.find((t) => t.id === id);
49
+ toast?.ondismiss?.();
50
+ toasts = toasts.filter((t) => t.id !== id);
51
+ }
52
+
53
+ function clear(): void {
54
+ for (const toast of toasts) {
55
+ toast.ondismiss?.();
56
+ }
57
+ toasts = [];
58
+ }
59
+
60
+ const controller: ToastController = { show, dismiss, clear };
61
+ setToastContext(controller);
62
+ </script>
63
+
64
+ {@render children?.()}
65
+ <ToastContainer
66
+ {toasts}
67
+ ondismiss={dismiss}
68
+ {...(placement ? { placement } : {})}
69
+ {...(maxVisible !== undefined ? { maxVisible } : {})}
70
+ {...(className ? { class: className } : {})}
71
+ />
@@ -0,0 +1,7 @@
1
+ import type { ToastController } from "./types.js";
2
+ export declare function setToastContext(controller: ToastController): void;
3
+ export declare function useToast(): ToastController;
4
+ import type { ToastProviderProps } from "./types.js";
5
+ declare const ToastProvider: import("svelte").Component<ToastProviderProps, {}, "">;
6
+ type ToastProvider = ReturnType<typeof ToastProvider>;
7
+ export default ToastProvider;
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { IconName, createPurposeSemanticAttributes } from "@marwes-ui/core";
3
+ import Icon from "../icon/Icon.svelte";
4
+ import Toast from "./Toast.svelte";
5
+ import type { ToastProps } from "./types.js";
6
+
7
+ let { dataAttributes, variant, ariaLive, icon, ...props }: ToastProps = $props();
8
+ const hasCustomIcon = $derived(icon !== undefined);
9
+ </script>
10
+
11
+ <Toast
12
+ {...props}
13
+ variant={variant ?? "outline"}
14
+ ariaLive={ariaLive ?? "polite"}
15
+ dataAttributes={{ ...dataAttributes, ...createPurposeSemanticAttributes("warning-toast") }}
16
+ >
17
+ {#snippet icon()}
18
+ {#if hasCustomIcon}
19
+ {@render icon?.()}
20
+ {:else}
21
+ <Icon name={IconName.AlertTriangle} decorative />
22
+ {/if}
23
+ {/snippet}
24
+ </Toast>
@@ -0,0 +1,4 @@
1
+ import type { ToastProps } from "./types.js";
2
+ declare const WarningToast: import("svelte").Component<ToastProps, {}, "">;
3
+ type WarningToast = ReturnType<typeof WarningToast>;
4
+ export default WarningToast;
@@ -0,0 +1,9 @@
1
+ export { default as Toast } from "./Toast.svelte";
2
+ export { default as ToastContainer } from "./ToastContainer.svelte";
3
+ export { default as ToastProvider } from "./ToastProvider.svelte";
4
+ export { useToast } from "./ToastProvider.svelte";
5
+ export { default as SuccessToast } from "./SuccessToast.svelte";
6
+ export { default as ErrorToast } from "./ErrorToast.svelte";
7
+ export { default as WarningToast } from "./WarningToast.svelte";
8
+ export { default as InfoToast } from "./InfoToast.svelte";
9
+ export type { ManagedToast, ShowToastOptions, ToastContainerProps, ToastController, ToastProps, ToastProviderProps, SuccessToastProps, ErrorToastProps, WarningToastProps, InfoToastProps, } from "./types.js";
@@ -0,0 +1,8 @@
1
+ export { default as Toast } from "./Toast.svelte";
2
+ export { default as ToastContainer } from "./ToastContainer.svelte";
3
+ export { default as ToastProvider } from "./ToastProvider.svelte";
4
+ export { useToast } from "./ToastProvider.svelte";
5
+ export { default as SuccessToast } from "./SuccessToast.svelte";
6
+ export { default as ErrorToast } from "./ErrorToast.svelte";
7
+ export { default as WarningToast } from "./WarningToast.svelte";
8
+ export { default as InfoToast } from "./InfoToast.svelte";
@@ -0,0 +1,48 @@
1
+ import type { ToastIntent, ToastOptions, ToastPlacement, ToastVariant } from "@marwes-ui/core";
2
+ import type { Snippet } from "svelte";
3
+ export interface ToastProps extends ToastOptions {
4
+ children?: Snippet;
5
+ icon?: Snippet;
6
+ action?: Snippet;
7
+ ondismiss?: () => void;
8
+ class?: string;
9
+ id?: string;
10
+ dataAttributes?: Record<string, string>;
11
+ }
12
+ export interface ManagedToast {
13
+ id: string;
14
+ message: string;
15
+ icon?: Snippet;
16
+ action?: Snippet;
17
+ ondismiss?: () => void;
18
+ class?: string;
19
+ variant?: ToastVariant;
20
+ ariaLive?: "polite" | "assertive";
21
+ intent?: ToastIntent;
22
+ duration?: number | null;
23
+ dataAttributes?: Record<string, string>;
24
+ }
25
+ export type ShowToastOptions = Omit<ManagedToast, "id">;
26
+ export interface ToastContainerProps {
27
+ toasts: ManagedToast[];
28
+ placement?: ToastPlacement;
29
+ maxVisible?: number;
30
+ class?: string;
31
+ ondismiss?: (id: string) => void;
32
+ }
33
+ export interface ToastProviderProps {
34
+ children?: Snippet;
35
+ placement?: ToastPlacement;
36
+ maxVisible?: number;
37
+ defaultDuration?: number | null;
38
+ class?: string;
39
+ }
40
+ export interface ToastController {
41
+ show: (toast: ShowToastOptions) => string;
42
+ dismiss: (id: string) => void;
43
+ clear: () => void;
44
+ }
45
+ export type SuccessToastProps = ToastProps;
46
+ export type ErrorToastProps = ToastProps;
47
+ export type WarningToastProps = ToastProps;
48
+ export type InfoToastProps = ToastProps;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ # Tooltip — Parity Findings
2
+
3
+ ## Svelte vs React/Vue
4
+
5
+ ### Aligned ✅
6
+ - `Tooltip` atom with `createTooltipRecipe`
7
+ - `role="tooltip"`, CSS vars for positioning
8
+ - `TooltipGroup` molecule with icon trigger, hover/focus reveal
9
+ - Controlled (`open`) and uncontrolled (`defaultOpen`) modes
10
+ - `onopenchange` callback
11
+ - Dismiss on pointer leave, focus leave, and Escape
12
+ - Exit animation delay (160ms) before unmounting
13
+ - Default icon: `IconName.HelpCircle`, swappable via `icon` prop
14
+ - `triggerLabel` for accessible trigger button name
15
+ - `aria-describedby` wired from trigger to tooltip when open
16
+
17
+ ### Svelte-specific
18
+ - `content` prop accepts `Snippet | string` (React uses `ReactNode`)
19
+ - Uses `$props.id()` for stable unique IDs
20
+
21
+ ### Notes
22
+ - Tooltip is for non-interactive contextual help only. For interactive content, use a popover or dialog pattern.