@getmicdrop/svelte-components 5.17.0 → 5.17.3

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 (391) hide show
  1. package/dist/calendar/AboutShow/AboutShow.svelte +187 -187
  2. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
  3. package/dist/calendar/FAQs/FAQs.svelte +77 -77
  4. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
  5. package/dist/calendar/OrderSummary/OrderSummary.svelte +457 -457
  6. package/dist/calendar/PublicCard/PublicCard.svelte +146 -146
  7. package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
  8. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
  9. package/dist/components/Heading.spec.d.ts +2 -0
  10. package/dist/components/Heading.spec.d.ts.map +1 -0
  11. package/dist/components/Heading.spec.js +89 -0
  12. package/dist/components/Heading.svelte +60 -60
  13. package/dist/components/Layout/AppShell.svelte +104 -104
  14. package/dist/components/Layout/ContentSection.svelte +80 -80
  15. package/dist/components/Layout/Grid.svelte +4 -4
  16. package/dist/components/Layout/Heading.svelte +81 -81
  17. package/dist/components/Layout/PageContainer.svelte +69 -69
  18. package/dist/components/Layout/Responsive.svelte +75 -75
  19. package/dist/components/Layout/Section.svelte +80 -80
  20. package/dist/components/Layout/ShowOnDesktop.svelte +37 -37
  21. package/dist/components/Layout/ShowOnMobile.svelte +37 -37
  22. package/dist/components/Layout/Sidebar.svelte +108 -108
  23. package/dist/components/Layout/Stack.spec.js +1 -1
  24. package/dist/components/Layout/Stack.svelte +6 -6
  25. package/dist/components/Layout/Text.svelte +87 -87
  26. package/dist/components/Layout/TwoColumn.svelte +108 -108
  27. package/dist/components/Layout/__tests__/AppShell.test.js +140 -0
  28. package/dist/components/Text.spec.d.ts +2 -0
  29. package/dist/components/Text.spec.d.ts.map +1 -0
  30. package/dist/components/Text.spec.js +89 -0
  31. package/dist/components/Text.svelte +53 -53
  32. package/dist/constants/validation.js +91 -91
  33. package/dist/constants/validation.spec.js +64 -64
  34. package/dist/datetime/__tests__/format.test.js +1 -1
  35. package/dist/datetime/__tests__/parse.test.js +1 -1
  36. package/dist/datetime/__tests__/timezone.test.js +1 -1
  37. package/dist/datetime/parse.js +1 -1
  38. package/dist/datetime/timezone.d.ts.map +1 -1
  39. package/dist/datetime/timezone.js +1 -2
  40. package/dist/forms/createFormStore.svelte.d.ts +1 -1
  41. package/dist/forms/createFormStore.svelte.d.ts.map +1 -1
  42. package/dist/forms/createFormStore.svelte.js +1 -0
  43. package/dist/forms/createFormStore.svelte.spec.d.ts +2 -0
  44. package/dist/forms/createFormStore.svelte.spec.d.ts.map +1 -0
  45. package/dist/forms/createFormStore.svelte.spec.js +388 -0
  46. package/dist/index.js +57 -57
  47. package/dist/index.spec.js +369 -369
  48. package/dist/patterns/chat/ChatActivityNotice.spec.d.ts +2 -0
  49. package/dist/patterns/chat/ChatActivityNotice.spec.d.ts.map +1 -0
  50. package/dist/patterns/chat/ChatActivityNotice.spec.js +59 -0
  51. package/dist/patterns/chat/ChatActivityNotice.svelte +41 -41
  52. package/dist/patterns/chat/ChatBubble.spec.d.ts +2 -0
  53. package/dist/patterns/chat/ChatBubble.spec.d.ts.map +1 -0
  54. package/dist/patterns/chat/ChatBubble.spec.js +91 -0
  55. package/dist/patterns/chat/ChatBubble.svelte +95 -95
  56. package/dist/patterns/chat/ChatContainer.spec.d.ts +2 -0
  57. package/dist/patterns/chat/ChatContainer.spec.d.ts.map +1 -0
  58. package/dist/patterns/chat/ChatContainer.spec.js +30 -0
  59. package/dist/patterns/chat/ChatContainer.svelte +46 -46
  60. package/dist/patterns/chat/ChatDateDivider.spec.d.ts +2 -0
  61. package/dist/patterns/chat/ChatDateDivider.spec.d.ts.map +1 -0
  62. package/dist/patterns/chat/ChatDateDivider.spec.js +30 -0
  63. package/dist/patterns/chat/ChatDateDivider.svelte +27 -27
  64. package/dist/patterns/chat/ChatInvitationBubble.spec.d.ts +2 -0
  65. package/dist/patterns/chat/ChatInvitationBubble.spec.d.ts.map +1 -0
  66. package/dist/patterns/chat/ChatInvitationBubble.spec.js +46 -0
  67. package/dist/patterns/chat/ChatInvitationBubble.svelte +37 -37
  68. package/dist/patterns/chat/ChatInvitationNotice.spec.d.ts +2 -0
  69. package/dist/patterns/chat/ChatInvitationNotice.spec.d.ts.map +1 -0
  70. package/dist/patterns/chat/ChatInvitationNotice.spec.js +32 -0
  71. package/dist/patterns/chat/ChatInvitationNotice.svelte +27 -27
  72. package/dist/patterns/chat/ChatMessageGroup.spec.d.ts +2 -0
  73. package/dist/patterns/chat/ChatMessageGroup.spec.d.ts.map +1 -0
  74. package/dist/patterns/chat/ChatMessageGroup.spec.js +58 -0
  75. package/dist/patterns/chat/ChatMessageGroup.svelte +57 -57
  76. package/dist/patterns/chat/ChatSlotUpdate.spec.d.ts +2 -0
  77. package/dist/patterns/chat/ChatSlotUpdate.spec.d.ts.map +1 -0
  78. package/dist/patterns/chat/ChatSlotUpdate.spec.js +65 -0
  79. package/dist/patterns/chat/ChatSlotUpdate.svelte +46 -46
  80. package/dist/patterns/chat/ChatStatusBadge.spec.d.ts +2 -0
  81. package/dist/patterns/chat/ChatStatusBadge.spec.d.ts.map +1 -0
  82. package/dist/patterns/chat/ChatStatusBadge.spec.js +79 -0
  83. package/dist/patterns/chat/ChatStatusBadge.svelte +91 -91
  84. package/dist/patterns/chat/ChatStatusTransition.spec.d.ts +2 -0
  85. package/dist/patterns/chat/ChatStatusTransition.spec.d.ts.map +1 -0
  86. package/dist/patterns/chat/ChatStatusTransition.spec.js +81 -0
  87. package/dist/patterns/chat/ChatStatusTransition.svelte +64 -64
  88. package/dist/patterns/chat/ChatTextBubble.spec.d.ts +2 -0
  89. package/dist/patterns/chat/ChatTextBubble.spec.d.ts.map +1 -0
  90. package/dist/patterns/chat/ChatTextBubble.spec.js +35 -0
  91. package/dist/patterns/chat/ChatTextBubble.svelte +41 -41
  92. package/dist/patterns/chat/index.js +22 -22
  93. package/dist/patterns/data/DataGrid.svelte +45 -45
  94. package/dist/patterns/data/DataList.svelte +24 -24
  95. package/dist/patterns/data/DataTable.spec.js +61 -0
  96. package/dist/patterns/data/DataTable.svelte +36 -36
  97. package/dist/patterns/forms/FormActions.spec.js +95 -95
  98. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  99. package/dist/patterns/forms/FormActions.svelte +46 -46
  100. package/dist/patterns/forms/FormGrid.spec.js +34 -0
  101. package/dist/patterns/forms/FormGrid.svelte +33 -33
  102. package/dist/patterns/forms/FormSection.svelte +32 -32
  103. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  104. package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
  105. package/dist/patterns/index.js +21 -21
  106. package/dist/patterns/layout/Sidebar.spec.js +240 -1
  107. package/dist/patterns/layout/Sidebar.svelte +39 -39
  108. package/dist/patterns/layout/SidebarTestWrapper.svelte +34 -0
  109. package/dist/patterns/layout/SidebarTestWrapper.svelte.d.ts +23 -0
  110. package/dist/patterns/layout/SidebarTestWrapper.svelte.d.ts.map +1 -0
  111. package/dist/patterns/layout/index.js +29 -29
  112. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  113. package/dist/patterns/navigation/BottomNav.svelte +74 -74
  114. package/dist/patterns/navigation/Header.spec.js +123 -0
  115. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  116. package/dist/patterns/navigation/Header.svelte +251 -251
  117. package/dist/patterns/page/PageHeader.svelte +18 -18
  118. package/dist/patterns/page/PageLayout.svelte +40 -40
  119. package/dist/patterns/page/PageLoader.spec.js +57 -57
  120. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  121. package/dist/patterns/page/PageLoader.svelte +24 -24
  122. package/dist/patterns/page/SectionHeader.svelte +29 -29
  123. package/dist/presets/badges.js +112 -112
  124. package/dist/presets/buttons.js +76 -76
  125. package/dist/presets/index.js +9 -9
  126. package/dist/primitives/Accordion/Accordion.spec.js +112 -2
  127. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  128. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  129. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  130. package/dist/primitives/Accordion/AccordionToggleWrapper.test.svelte +28 -0
  131. package/dist/primitives/Accordion/AccordionToggleWrapper.test.svelte.d.ts +7 -0
  132. package/dist/primitives/Accordion/AccordionToggleWrapper.test.svelte.d.ts.map +1 -0
  133. package/dist/primitives/Alert/Alert.spec.js +173 -173
  134. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  135. package/dist/primitives/Alert/Alert.svelte +27 -27
  136. package/dist/primitives/Avatar/Avatar.spec.js +23 -0
  137. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  138. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  139. package/dist/primitives/AvatarButton/AvatarButton.svelte +57 -57
  140. package/dist/primitives/Badges/Badge.spec.js +144 -144
  141. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  142. package/dist/primitives/Badges/Badge.svelte +99 -99
  143. package/dist/primitives/BottomSheet/BottomSheet.spec.js +238 -136
  144. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  145. package/dist/primitives/BottomSheet/BottomSheet.svelte +115 -115
  146. package/dist/primitives/BottomSheet/BottomSheetWithActions.test.svelte +20 -0
  147. package/dist/primitives/BottomSheet/BottomSheetWithActions.test.svelte.d.ts +10 -0
  148. package/dist/primitives/BottomSheet/BottomSheetWithActions.test.svelte.d.ts.map +1 -0
  149. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +123 -123
  150. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  151. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +99 -99
  152. package/dist/primitives/Button/Button.spec.js +225 -225
  153. package/dist/primitives/Button/Button.stories.svelte +76 -76
  154. package/dist/primitives/Button/Button.svelte +278 -278
  155. package/dist/primitives/Button/ButtonGroup.spec.d.ts +2 -0
  156. package/dist/primitives/Button/ButtonGroup.spec.d.ts.map +1 -0
  157. package/dist/primitives/Button/ButtonGroup.spec.js +44 -0
  158. package/dist/primitives/Button/ButtonGroup.svelte +50 -50
  159. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
  160. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  161. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  162. package/dist/primitives/Card.spec.js +49 -49
  163. package/dist/primitives/Card.stories.svelte +22 -22
  164. package/dist/primitives/Card.svelte +28 -28
  165. package/dist/primitives/CardAction/CardAction.svelte +68 -68
  166. package/dist/primitives/Checkbox/Checkbox.spec.js +32 -0
  167. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  168. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  169. package/dist/primitives/DarkModeToggle.spec.js +390 -390
  170. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  171. package/dist/primitives/DarkModeToggle.svelte +136 -136
  172. package/dist/primitives/Drawer/Drawer.spec.js +437 -0
  173. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  174. package/dist/primitives/Drawer/Drawer.svelte +224 -224
  175. package/dist/primitives/Drawer/DrawerTestWrapper.svelte +86 -0
  176. package/dist/primitives/Drawer/DrawerTestWrapper.svelte.d.ts +26 -0
  177. package/dist/primitives/Drawer/DrawerTestWrapper.svelte.d.ts.map +1 -0
  178. package/dist/primitives/Dropdown/Dropdown.spec.js +116 -0
  179. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  180. package/dist/primitives/Dropdown/Dropdown.svelte +170 -170
  181. package/dist/primitives/Dropdown/DropdownDivider.spec.d.ts +2 -0
  182. package/dist/primitives/Dropdown/DropdownDivider.spec.d.ts.map +1 -0
  183. package/dist/primitives/Dropdown/DropdownDivider.spec.js +30 -0
  184. package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -9
  185. package/dist/primitives/Dropdown/DropdownItem.spec.js +155 -1
  186. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  187. package/dist/primitives/Dropdown/DropdownItemTestWrapper.svelte +43 -0
  188. package/dist/primitives/Dropdown/DropdownItemTestWrapper.svelte.d.ts +17 -0
  189. package/dist/primitives/Dropdown/DropdownItemTestWrapper.svelte.d.ts.map +1 -0
  190. package/dist/primitives/Helper/Helper.spec.d.ts +2 -0
  191. package/dist/primitives/Helper/Helper.spec.d.ts.map +1 -0
  192. package/dist/primitives/Helper/Helper.spec.js +57 -0
  193. package/dist/primitives/Helper/Helper.svelte +33 -33
  194. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  195. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  196. package/dist/primitives/Icons/Availability.svelte +14 -14
  197. package/dist/primitives/Icons/Back.svelte +14 -14
  198. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  199. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  200. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  201. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  202. package/dist/primitives/Icons/Copy.svelte +15 -15
  203. package/dist/primitives/Icons/Cross.svelte +5 -5
  204. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  205. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  206. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  207. package/dist/primitives/Icons/Home.svelte +15 -15
  208. package/dist/primitives/Icons/Icon.spec.js +169 -169
  209. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  210. package/dist/primitives/Icons/Icon.svelte +52 -52
  211. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  212. package/dist/primitives/Icons/Info.svelte +7 -7
  213. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  214. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  215. package/dist/primitives/Icons/Message.svelte +15 -15
  216. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  217. package/dist/primitives/Icons/More.svelte +21 -21
  218. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  219. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  220. package/dist/primitives/Icons/Notification.svelte +14 -14
  221. package/dist/primitives/Icons/Payment.svelte +14 -14
  222. package/dist/primitives/Icons/Profile.svelte +21 -21
  223. package/dist/primitives/Icons/Reload.svelte +29 -29
  224. package/dist/primitives/Icons/Shows.svelte +21 -21
  225. package/dist/primitives/Icons/Signout.svelte +21 -21
  226. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  227. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  228. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  229. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  230. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  231. package/dist/primitives/Input/Input.spec.js +1235 -573
  232. package/dist/primitives/Input/Input.stories.svelte +139 -139
  233. package/dist/primitives/Input/Input.svelte +423 -423
  234. package/dist/primitives/Input/Select.spec.js +632 -218
  235. package/dist/primitives/Input/Select.stories.svelte +112 -112
  236. package/dist/primitives/Input/Select.svelte +252 -252
  237. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  238. package/dist/primitives/Input/Textarea.svelte +105 -105
  239. package/dist/primitives/Label/Label.spec.js +9 -0
  240. package/dist/primitives/Label/Label.svelte +37 -37
  241. package/dist/primitives/LandingButton/LandingButton.spec.d.ts +2 -0
  242. package/dist/primitives/LandingButton/LandingButton.spec.d.ts.map +1 -0
  243. package/dist/primitives/LandingButton/LandingButton.spec.js +61 -0
  244. package/dist/primitives/LandingButton/LandingButton.svelte +92 -92
  245. package/dist/primitives/MenuItem/MenuItem.spec.d.ts +2 -0
  246. package/dist/primitives/MenuItem/MenuItem.spec.d.ts.map +1 -0
  247. package/dist/primitives/MenuItem/MenuItem.spec.js +130 -0
  248. package/dist/primitives/MenuItem/MenuItem.svelte +85 -85
  249. package/dist/primitives/Modal/Modal.spec.js +314 -99
  250. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  251. package/dist/primitives/Modal/Modal.svelte +181 -181
  252. package/dist/primitives/NavItem/NavItem.spec.d.ts +2 -0
  253. package/dist/primitives/NavItem/NavItem.spec.d.ts.map +1 -0
  254. package/dist/primitives/NavItem/NavItem.spec.js +97 -0
  255. package/dist/primitives/NavItem/NavItem.svelte +75 -75
  256. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  257. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  258. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  259. package/dist/primitives/Radio/Radio.svelte +67 -67
  260. package/dist/primitives/SearchResultItem/SearchResultItem.spec.d.ts +2 -0
  261. package/dist/primitives/SearchResultItem/SearchResultItem.spec.d.ts.map +1 -0
  262. package/dist/primitives/SearchResultItem/SearchResultItem.spec.js +78 -0
  263. package/dist/primitives/SearchResultItem/SearchResultItem.svelte +109 -109
  264. package/dist/primitives/SidebarToggle/SidebarToggle.spec.d.ts +2 -0
  265. package/dist/primitives/SidebarToggle/SidebarToggle.spec.d.ts.map +1 -0
  266. package/dist/primitives/SidebarToggle/SidebarToggle.spec.js +61 -0
  267. package/dist/primitives/SidebarToggle/SidebarToggle.svelte +55 -55
  268. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  269. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  270. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  271. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  272. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  273. package/dist/primitives/Spinner/Spinner.spec.js +84 -71
  274. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  275. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  276. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  277. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  278. package/dist/primitives/Tabs/Tabs.svelte +137 -137
  279. package/dist/primitives/Toggle.spec.js +221 -146
  280. package/dist/primitives/Toggle.stories.svelte +92 -92
  281. package/dist/primitives/Toggle.svelte +141 -141
  282. package/dist/primitives/ToggleTestWrapper.svelte +30 -0
  283. package/dist/primitives/ToggleTestWrapper.svelte.d.ts +29 -0
  284. package/dist/primitives/ToggleTestWrapper.svelte.d.ts.map +1 -0
  285. package/dist/primitives/Tooltip/Tooltip.spec.d.ts +2 -0
  286. package/dist/primitives/Tooltip/Tooltip.spec.d.ts.map +1 -0
  287. package/dist/primitives/Tooltip/Tooltip.spec.js +126 -0
  288. package/dist/primitives/Tooltip/Tooltip.svelte +83 -83
  289. package/dist/primitives/Typography/Typography.svelte +53 -53
  290. package/dist/primitives/ValidationError.spec.js +103 -103
  291. package/dist/primitives/ValidationError.stories.svelte +69 -69
  292. package/dist/primitives/ValidationError.svelte +29 -29
  293. package/dist/primitives/index.js +113 -113
  294. package/dist/recipes/CropImage/CropImage.spec.js +208 -208
  295. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  296. package/dist/recipes/CropImage/CropImage.svelte +241 -241
  297. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  298. package/dist/recipes/ImageUploader/ImageUploader.svelte +992 -992
  299. package/dist/recipes/SuperLogin/SuperLogin.spec.js +21 -21
  300. package/dist/recipes/SuperLogin/SuperLogin.svelte +4 -4
  301. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  302. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  303. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  304. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  305. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  306. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
  307. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  308. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  309. package/dist/recipes/fields/FormField.svelte +58 -58
  310. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  311. package/dist/recipes/fields/SelectField.svelte +82 -82
  312. package/dist/recipes/fields/TextareaField.svelte +97 -97
  313. package/dist/recipes/fields/ToggleField.svelte +60 -60
  314. package/dist/recipes/fields/index.js +7 -7
  315. package/dist/recipes/inputs/MultiSelect.spec.js +263 -263
  316. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  317. package/dist/recipes/inputs/MultiSelect.svelte +283 -283
  318. package/dist/recipes/inputs/OTPInput.spec.js +251 -251
  319. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  320. package/dist/recipes/inputs/OTPInput.svelte +117 -117
  321. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  322. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +131 -131
  323. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +19 -19
  324. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  325. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +336 -339
  326. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
  327. package/dist/recipes/inputs/Search.spec.js +66 -2
  328. package/dist/recipes/inputs/Search.svelte +102 -102
  329. package/dist/recipes/inputs/index.js +7 -7
  330. package/dist/recipes/modals/AlertModal.svelte +130 -130
  331. package/dist/recipes/modals/ConfirmationModal.spec.js +396 -206
  332. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  333. package/dist/recipes/modals/ConfirmationModal.svelte +162 -162
  334. package/dist/recipes/modals/InputModal.svelte +182 -182
  335. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  336. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  337. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  338. package/dist/recipes/modals/StatusModal.svelte +206 -206
  339. package/dist/services/EventService.d.ts +1 -1
  340. package/dist/services/EventService.d.ts.map +1 -1
  341. package/dist/services/EventService.js +79 -75
  342. package/dist/services/EventService.spec.js +217 -217
  343. package/dist/services/ShowService.js +144 -143
  344. package/dist/services/ShowService.spec.js +345 -345
  345. package/dist/stores/auth.svelte.spec.d.ts +2 -0
  346. package/dist/stores/auth.svelte.spec.d.ts.map +1 -0
  347. package/dist/stores/auth.svelte.spec.js +112 -0
  348. package/dist/stores/formDataStore.svelte.spec.d.ts +2 -0
  349. package/dist/stores/formDataStore.svelte.spec.d.ts.map +1 -0
  350. package/dist/stores/formDataStore.svelte.spec.js +150 -0
  351. package/dist/stores/formSave.svelte.spec.d.ts +2 -0
  352. package/dist/stores/formSave.svelte.spec.d.ts.map +1 -0
  353. package/dist/stores/formSave.svelte.spec.js +196 -0
  354. package/dist/stores/navigation.spec.d.ts +2 -0
  355. package/dist/stores/navigation.spec.d.ts.map +1 -0
  356. package/dist/stores/navigation.spec.js +53 -0
  357. package/dist/stores/toaster.js +13 -13
  358. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  359. package/dist/stories/ButtonAuditReview.svelte +427 -427
  360. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  361. package/dist/stories/PatternsGallery.svelte +206 -206
  362. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  363. package/dist/stories/PrimitivesGallery.svelte +756 -756
  364. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  365. package/dist/stories/RecipesGallery.svelte +454 -454
  366. package/dist/stories/button-audit-manifest.json +11186 -11186
  367. package/dist/tailwind/preset.cjs +82 -82
  368. package/dist/telemetry.d.ts.map +1 -1
  369. package/dist/telemetry.js +402 -405
  370. package/dist/telemetry.server.js +212 -212
  371. package/dist/telemetry.server.spec.js +437 -438
  372. package/dist/telemetry.spec.js +1168 -1169
  373. package/dist/tokens/tokens.css +87 -87
  374. package/dist/tokens/typography-base.css +163 -163
  375. package/dist/tokens/utilities.css +353 -353
  376. package/dist/utils/apiConfig.js +117 -120
  377. package/dist/utils/apiConfig.spec.js +219 -219
  378. package/dist/utils/greetings.js +187 -187
  379. package/dist/utils/haptic.spec.d.ts +2 -0
  380. package/dist/utils/haptic.spec.d.ts.map +1 -0
  381. package/dist/utils/haptic.spec.js +153 -0
  382. package/dist/utils/imageOptimizer.spec.d.ts +2 -0
  383. package/dist/utils/imageOptimizer.spec.d.ts.map +1 -0
  384. package/dist/utils/imageOptimizer.spec.js +201 -0
  385. package/dist/utils/imageValidation.js +121 -121
  386. package/dist/utils/logger.spec.d.ts +2 -0
  387. package/dist/utils/logger.spec.d.ts.map +1 -0
  388. package/dist/utils/logger.spec.js +95 -0
  389. package/dist/utils/transitions.js +4 -4
  390. package/dist/utils/utils.js +693 -693
  391. package/package.json +292 -294
@@ -0,0 +1,388 @@
1
+ import { describe, it, expect, vi, afterEach } from 'vitest';
2
+ import { z } from 'zod';
3
+ import { createFormStore } from './createFormStore.svelte';
4
+ import { flushSync } from 'svelte';
5
+ const testSchema = z.object({
6
+ name: z.string().min(1, 'Name is required'),
7
+ email: z.string().email('Invalid email'),
8
+ age: z.number().min(0, 'Age must be positive').optional(),
9
+ });
10
+ const defaultData = {
11
+ name: '',
12
+ email: '',
13
+ age: undefined,
14
+ };
15
+ const validData = {
16
+ name: 'John',
17
+ email: 'john@example.com',
18
+ age: 30,
19
+ };
20
+ /**
21
+ * Helper to create a form store within an effect root context.
22
+ * Required because createFormStore uses $effect internally.
23
+ */
24
+ function createTestStore(schema, initialData, options = {}) {
25
+ let store;
26
+ const cleanup = $effect.root(() => {
27
+ store = createFormStore(schema, initialData, options);
28
+ });
29
+ return { store: store, cleanup };
30
+ }
31
+ describe('createFormStore', () => {
32
+ let cleanups = [];
33
+ function makeStore(data = defaultData, options = {}) {
34
+ const { store, cleanup } = createTestStore(testSchema, data, options);
35
+ cleanups.push(cleanup);
36
+ return store;
37
+ }
38
+ afterEach(() => {
39
+ cleanups.forEach(fn => fn());
40
+ cleanups = [];
41
+ });
42
+ describe('initial state', () => {
43
+ it('creates a store with default data', () => {
44
+ const store = makeStore();
45
+ expect(store.data).toEqual(defaultData);
46
+ });
47
+ it('starts with null originalData', () => {
48
+ const store = makeStore();
49
+ expect(store.originalData).toBeNull();
50
+ });
51
+ it('starts with empty errors', () => {
52
+ const store = makeStore();
53
+ expect(store.errors).toEqual({});
54
+ });
55
+ it('starts with all UI states as false', () => {
56
+ const store = makeStore();
57
+ expect(store.isLoading).toBe(false);
58
+ expect(store.isSaving).toBe(false);
59
+ expect(store.isSaved).toBe(false);
60
+ expect(store.showErrors).toBe(false);
61
+ });
62
+ it('isDirty is false initially (edit mode)', () => {
63
+ const store = makeStore();
64
+ expect(store.isDirty).toBe(false);
65
+ });
66
+ it('isValid reflects schema validation', () => {
67
+ const store = makeStore();
68
+ expect(store.isValid).toBe(false);
69
+ });
70
+ it('isValid is true for valid data', () => {
71
+ const store = makeStore(validData);
72
+ expect(store.isValid).toBe(true);
73
+ });
74
+ it('canSave is false when not dirty', () => {
75
+ const store = makeStore(validData);
76
+ expect(store.canSave).toBe(false);
77
+ });
78
+ });
79
+ describe('data manipulation', () => {
80
+ it('can set data', () => {
81
+ const store = makeStore();
82
+ store.data = validData;
83
+ expect(store.data).toEqual(validData);
84
+ });
85
+ it('can set originalData', () => {
86
+ const store = makeStore();
87
+ store.originalData = validData;
88
+ expect(store.originalData).toEqual(validData);
89
+ });
90
+ it('can set errors', () => {
91
+ const store = makeStore();
92
+ store.errors = { name: 'Required' };
93
+ expect(store.errors).toEqual({ name: 'Required' });
94
+ });
95
+ it('can set UI state flags', () => {
96
+ const store = makeStore();
97
+ store.isLoading = true;
98
+ expect(store.isLoading).toBe(true);
99
+ store.isSaving = true;
100
+ expect(store.isSaving).toBe(true);
101
+ store.isSaved = true;
102
+ expect(store.isSaved).toBe(true);
103
+ store.showErrors = true;
104
+ expect(store.showErrors).toBe(true);
105
+ });
106
+ });
107
+ describe('setOriginal', () => {
108
+ it('sets both original and current data', () => {
109
+ const store = makeStore();
110
+ store.setOriginal(validData);
111
+ expect(store.originalData).toEqual(validData);
112
+ expect(store.data).toEqual(validData);
113
+ });
114
+ it('clears errors and showErrors', () => {
115
+ const store = makeStore();
116
+ store.errors = { name: 'err' };
117
+ store.showErrors = true;
118
+ store.setOriginal(validData);
119
+ expect(store.errors).toEqual({});
120
+ expect(store.showErrors).toBe(false);
121
+ });
122
+ it('resets isSaved', () => {
123
+ const store = makeStore();
124
+ store.isSaved = true;
125
+ store.setOriginal(validData);
126
+ expect(store.isSaved).toBe(false);
127
+ });
128
+ });
129
+ describe('isDirty', () => {
130
+ it('is false when data matches original (edit mode)', () => {
131
+ const store = makeStore();
132
+ store.setOriginal(validData);
133
+ expect(store.isDirty).toBe(false);
134
+ });
135
+ it('is true when data differs from original (edit mode)', () => {
136
+ const store = makeStore();
137
+ store.setOriginal(validData);
138
+ store.data = { ...validData, name: 'Jane' };
139
+ expect(store.isDirty).toBe(true);
140
+ });
141
+ it('is false when no originalData set (edit mode)', () => {
142
+ const store = makeStore();
143
+ store.data = validData;
144
+ expect(store.isDirty).toBe(false);
145
+ });
146
+ });
147
+ describe('isDirty (create mode)', () => {
148
+ it('is false when all fields empty', () => {
149
+ const store = makeStore(defaultData, { mode: 'create' });
150
+ expect(store.isDirty).toBe(false);
151
+ });
152
+ it('is true when string field has value', () => {
153
+ const store = makeStore(defaultData, { mode: 'create' });
154
+ store.data = { ...defaultData, name: 'test' };
155
+ expect(store.isDirty).toBe(true);
156
+ });
157
+ it('is true when number field has value', () => {
158
+ const store = makeStore(defaultData, { mode: 'create' });
159
+ store.data = { ...defaultData, age: 25 };
160
+ expect(store.isDirty).toBe(true);
161
+ });
162
+ it('handles array fields', () => {
163
+ const arraySchema = z.object({ tags: z.array(z.string()), name: z.string() });
164
+ const { store, cleanup } = createTestStore(arraySchema, { tags: [], name: '' }, { mode: 'create' });
165
+ cleanups.push(cleanup);
166
+ expect(store.isDirty).toBe(false);
167
+ store.data = { tags: ['test'], name: '' };
168
+ expect(store.isDirty).toBe(true);
169
+ });
170
+ it('handles boolean fields', () => {
171
+ const boolSchema = z.object({ active: z.boolean(), name: z.string() });
172
+ const { store, cleanup } = createTestStore(boolSchema, { active: false, name: '' }, { mode: 'create' });
173
+ cleanups.push(cleanup);
174
+ expect(store.isDirty).toBe(false);
175
+ store.data = { active: true, name: '' };
176
+ expect(store.isDirty).toBe(true);
177
+ });
178
+ it('handles null values', () => {
179
+ const nullSchema = z.object({ value: z.string().nullable() });
180
+ const { store, cleanup } = createTestStore(nullSchema, { value: null }, { mode: 'create' });
181
+ cleanups.push(cleanup);
182
+ expect(store.isDirty).toBe(false);
183
+ });
184
+ });
185
+ describe('validate', () => {
186
+ it('returns false and sets errors for invalid data', () => {
187
+ const store = makeStore();
188
+ const result = store.validate();
189
+ expect(result).toBe(false);
190
+ expect(store.showErrors).toBe(true);
191
+ expect(store.errors.name).toBeDefined();
192
+ expect(store.errors.email).toBeDefined();
193
+ });
194
+ it('returns true and clears errors for valid data', () => {
195
+ const store = makeStore(validData);
196
+ const result = store.validate();
197
+ expect(result).toBe(true);
198
+ expect(store.errors).toEqual({});
199
+ });
200
+ it('only keeps first error per field', () => {
201
+ const store = makeStore({ name: '', email: 'bad', age: undefined });
202
+ store.validate();
203
+ expect(typeof store.errors.name).toBe('string');
204
+ expect(typeof store.errors.email).toBe('string');
205
+ });
206
+ });
207
+ describe('validateField', () => {
208
+ it('returns undefined for valid field', () => {
209
+ const store = makeStore(validData);
210
+ expect(store.validateField('name')).toBeUndefined();
211
+ });
212
+ it('returns error message for invalid field', () => {
213
+ const store = makeStore();
214
+ expect(store.validateField('name')).toBeDefined();
215
+ });
216
+ });
217
+ describe('fieldError', () => {
218
+ it('returns undefined when showErrors is false', () => {
219
+ const store = makeStore();
220
+ store.errors = { name: 'Required' };
221
+ expect(store.fieldError('name')).toBeUndefined();
222
+ });
223
+ it('returns error when showErrors is true', () => {
224
+ const store = makeStore();
225
+ store.errors = { name: 'Required' };
226
+ store.showErrors = true;
227
+ expect(store.fieldError('name')).toBe('Required');
228
+ });
229
+ it('returns undefined for fields without errors', () => {
230
+ const store = makeStore();
231
+ store.showErrors = true;
232
+ expect(store.fieldError('age')).toBeUndefined();
233
+ });
234
+ });
235
+ describe('sections', () => {
236
+ const sections = {
237
+ basics: ['name', 'email'],
238
+ details: ['age'],
239
+ };
240
+ it('isSectionValid returns true for unknown section', () => {
241
+ const store = makeStore(defaultData, { sections });
242
+ expect(store.isSectionValid('nonexistent')).toBe(true);
243
+ });
244
+ it('isSectionValid returns false when section has errors', () => {
245
+ const store = makeStore(defaultData, { sections });
246
+ expect(store.isSectionValid('basics')).toBe(false);
247
+ });
248
+ it('isSectionValid returns true when section fields are valid', () => {
249
+ const store = makeStore({ name: 'John', email: 'john@test.com', age: undefined }, { sections });
250
+ expect(store.isSectionValid('basics')).toBe(true);
251
+ });
252
+ it('isSectionDirty returns false when no original data', () => {
253
+ const store = makeStore(defaultData, { sections });
254
+ expect(store.isSectionDirty('basics')).toBe(false);
255
+ });
256
+ it('isSectionDirty returns false when section has no changes', () => {
257
+ const store = makeStore(defaultData, { sections });
258
+ store.setOriginal(validData);
259
+ expect(store.isSectionDirty('basics')).toBe(false);
260
+ });
261
+ it('isSectionDirty returns true when section field changed', () => {
262
+ const store = makeStore(defaultData, { sections });
263
+ store.setOriginal(validData);
264
+ store.data = { ...validData, name: 'Changed' };
265
+ expect(store.isSectionDirty('basics')).toBe(true);
266
+ });
267
+ it('isSectionDirty returns false for unchanged section', () => {
268
+ const store = makeStore(defaultData, { sections });
269
+ store.setOriginal(validData);
270
+ store.data = { ...validData, name: 'Changed' };
271
+ expect(store.isSectionDirty('details')).toBe(false);
272
+ });
273
+ it('isSectionDirty returns false for unknown section', () => {
274
+ const store = makeStore(defaultData, { sections });
275
+ expect(store.isSectionDirty('nonexistent')).toBe(false);
276
+ });
277
+ });
278
+ describe('reset', () => {
279
+ it('restores data to initial values', () => {
280
+ const store = makeStore();
281
+ store.data = validData;
282
+ store.reset();
283
+ expect(store.data).toEqual(defaultData);
284
+ });
285
+ it('clears all state', () => {
286
+ const store = makeStore();
287
+ store.setOriginal(validData);
288
+ store.isLoading = true;
289
+ store.isSaving = true;
290
+ store.isSaved = true;
291
+ store.showErrors = true;
292
+ store.errors = { name: 'err' };
293
+ store.reset();
294
+ expect(store.originalData).toBeNull();
295
+ expect(store.errors).toEqual({});
296
+ expect(store.isLoading).toBe(false);
297
+ expect(store.isSaving).toBe(false);
298
+ expect(store.isSaved).toBe(false);
299
+ expect(store.showErrors).toBe(false);
300
+ });
301
+ });
302
+ describe('resetToOriginal', () => {
303
+ it('restores data to original values', () => {
304
+ const store = makeStore();
305
+ store.setOriginal(validData);
306
+ store.data = { ...validData, name: 'Changed' };
307
+ store.resetToOriginal();
308
+ expect(store.data).toEqual(validData);
309
+ });
310
+ it('clears errors and showErrors', () => {
311
+ const store = makeStore();
312
+ store.setOriginal(validData);
313
+ store.showErrors = true;
314
+ store.errors = { name: 'err' };
315
+ store.resetToOriginal();
316
+ expect(store.errors).toEqual({});
317
+ expect(store.showErrors).toBe(false);
318
+ });
319
+ it('does nothing when no original data', () => {
320
+ const store = makeStore();
321
+ store.data = validData;
322
+ store.resetToOriginal();
323
+ expect(store.data).toEqual(validData);
324
+ });
325
+ });
326
+ describe('save', () => {
327
+ it('runs save function on valid data', async () => {
328
+ const store = makeStore(validData);
329
+ store.setOriginal(validData);
330
+ store.data = { ...validData, name: 'Updated' };
331
+ const saveFn = vi.fn().mockResolvedValue({ id: 1 });
332
+ const result = await store.save(saveFn);
333
+ expect(saveFn).toHaveBeenCalled();
334
+ expect(result).toEqual({ id: 1 });
335
+ expect(store.isSaved).toBe(true);
336
+ expect(store.isSaving).toBe(false);
337
+ });
338
+ it('returns undefined when validation fails', async () => {
339
+ const store = makeStore();
340
+ const saveFn = vi.fn();
341
+ const result = await store.save(saveFn);
342
+ expect(result).toBeUndefined();
343
+ expect(saveFn).not.toHaveBeenCalled();
344
+ });
345
+ it('updates originalData after successful save', async () => {
346
+ const store = makeStore(validData);
347
+ store.setOriginal(validData);
348
+ const updatedData = { ...validData, name: 'Updated' };
349
+ store.data = updatedData;
350
+ await store.save(async () => 'ok');
351
+ expect(store.originalData).toEqual(updatedData);
352
+ });
353
+ it('resets isSaving even on error', async () => {
354
+ const store = makeStore(validData);
355
+ store.setOriginal(validData);
356
+ store.data = { ...validData, name: 'Updated' };
357
+ const saveFn = vi.fn().mockRejectedValue(new Error('fail'));
358
+ await expect(store.save(saveFn)).rejects.toThrow('fail');
359
+ expect(store.isSaving).toBe(false);
360
+ });
361
+ });
362
+ describe('canSave', () => {
363
+ it('is true when dirty, valid, and not saving', () => {
364
+ const store = makeStore(validData);
365
+ store.setOriginal(validData);
366
+ store.data = { ...validData, name: 'Updated' };
367
+ expect(store.canSave).toBe(true);
368
+ });
369
+ it('is false when not dirty', () => {
370
+ const store = makeStore(validData);
371
+ store.setOriginal(validData);
372
+ expect(store.canSave).toBe(false);
373
+ });
374
+ it('is false when not valid', () => {
375
+ const store = makeStore();
376
+ store.setOriginal(validData);
377
+ store.data = { ...validData, name: '' };
378
+ expect(store.canSave).toBe(false);
379
+ });
380
+ it('is false when saving', () => {
381
+ const store = makeStore(validData);
382
+ store.setOriginal(validData);
383
+ store.data = { ...validData, name: 'Updated' };
384
+ store.isSaving = true;
385
+ expect(store.canSave).toBe(false);
386
+ });
387
+ });
388
+ });
package/dist/index.js CHANGED
@@ -1,57 +1,57 @@
1
- // =============================================================================
2
- // PRIMITIVES - Pure visual components (Layer 1)
3
- // =============================================================================
4
-
5
- export * from './primitives/index.js';
6
-
7
- // =============================================================================
8
- // COMPONENTS - Semantic wrappers and layout components
9
- // =============================================================================
10
-
11
- export * from './components/index.js';
12
-
13
- // =============================================================================
14
- // RECIPES - Domain-agnostic compositions (Layer 2)
15
- // =============================================================================
16
-
17
- export * from './recipes/index.js';
18
-
19
- // =============================================================================
20
- // PATTERNS - Layout & flow components (Layer 3)
21
- // =============================================================================
22
-
23
- export * from './patterns/index.js';
24
-
25
- // =============================================================================
26
- // CALENDAR - Domain components (deferred migration to apps)
27
- // =============================================================================
28
-
29
- export * from './calendar/index.js';
30
-
31
- // =============================================================================
32
- // NON-COMPONENT EXPORTS
33
- // =============================================================================
34
-
35
- // Note: config.js and telemetry.js removed - they use import.meta.env which
36
- // is Vite-specific. Apps should define their own config/telemetry locally.
37
-
38
- // Constants
39
- export * from './constants/formOptions.js';
40
- export * from './constants/validation.js';
41
-
42
- // Presets - Domain-to-color mappings for migration
43
- export * from './presets/index.js';
44
-
45
- // Utils / Actions
46
- export { portal } from './utils/portal.js';
47
- export { safeSlide, bloom } from './utils/transitions.js';
48
- export { optimizeImage, supportsWebP, createImage } from './utils/imageOptimizer.js';
49
- export {
50
- triggerHaptic,
51
- isHapticAvailable,
52
- getHapticForButtonVariant,
53
- } from './utils/haptic.js';
54
- /** @typedef {import('./utils/haptic.js').HapticStyle} HapticStyle */
55
-
56
- // Design Tokens
57
- export { typography } from './tokens/typography.js';
1
+ // =============================================================================
2
+ // PRIMITIVES - Pure visual components (Layer 1)
3
+ // =============================================================================
4
+
5
+ export * from './primitives/index.js';
6
+
7
+ // =============================================================================
8
+ // COMPONENTS - Semantic wrappers and layout components
9
+ // =============================================================================
10
+
11
+ export * from './components/index.js';
12
+
13
+ // =============================================================================
14
+ // RECIPES - Domain-agnostic compositions (Layer 2)
15
+ // =============================================================================
16
+
17
+ export * from './recipes/index.js';
18
+
19
+ // =============================================================================
20
+ // PATTERNS - Layout & flow components (Layer 3)
21
+ // =============================================================================
22
+
23
+ export * from './patterns/index.js';
24
+
25
+ // =============================================================================
26
+ // CALENDAR - Domain components (deferred migration to apps)
27
+ // =============================================================================
28
+
29
+ export * from './calendar/index.js';
30
+
31
+ // =============================================================================
32
+ // NON-COMPONENT EXPORTS
33
+ // =============================================================================
34
+
35
+ // Note: config.js and telemetry.js removed - they use import.meta.env which
36
+ // is Vite-specific. Apps should define their own config/telemetry locally.
37
+
38
+ // Constants
39
+ export * from './constants/formOptions.js';
40
+ export * from './constants/validation.js';
41
+
42
+ // Presets - Domain-to-color mappings for migration
43
+ export * from './presets/index.js';
44
+
45
+ // Utils / Actions
46
+ export { portal } from './utils/portal.js';
47
+ export { safeSlide, bloom } from './utils/transitions.js';
48
+ export { optimizeImage, supportsWebP, createImage } from './utils/imageOptimizer.js';
49
+ export {
50
+ triggerHaptic,
51
+ isHapticAvailable,
52
+ getHapticForButtonVariant,
53
+ } from './utils/haptic.js';
54
+ /** @typedef {import('./utils/haptic.js').HapticStyle} HapticStyle */
55
+
56
+ // Design Tokens
57
+ export { typography } from './tokens/typography.js';