@getmicdrop/svelte-components 5.5.4 → 5.6.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 (512) hide show
  1. package/dist/calendar/AboutShow/AboutShow.spec.d.ts +2 -0
  2. package/dist/calendar/AboutShow/AboutShow.spec.d.ts.map +1 -0
  3. package/dist/calendar/AboutShow/AboutShow.spec.js +791 -0
  4. package/dist/calendar/AboutShow/AboutShow.svelte +172 -172
  5. package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts +2 -0
  6. package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts.map +1 -0
  7. package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +1191 -0
  8. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
  9. package/dist/calendar/FAQs/FAQs.spec.d.ts +2 -0
  10. package/dist/calendar/FAQs/FAQs.spec.d.ts.map +1 -0
  11. package/dist/calendar/FAQs/FAQs.spec.js +238 -0
  12. package/dist/calendar/FAQs/FAQs.svelte +75 -75
  13. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts +2 -0
  14. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts.map +1 -0
  15. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.js +420 -0
  16. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
  17. package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts +2 -0
  18. package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts.map +1 -0
  19. package/dist/calendar/OrderSummary/OrderSummary.spec.js +808 -0
  20. package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
  21. package/dist/calendar/PublicCard/PublicCard.spec.d.ts +2 -0
  22. package/dist/calendar/PublicCard/PublicCard.spec.d.ts.map +1 -0
  23. package/dist/calendar/PublicCard/PublicCard.spec.js +301 -0
  24. package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
  25. package/dist/calendar/ShowCard/ShowCard.spec.d.ts +2 -0
  26. package/dist/calendar/ShowCard/ShowCard.spec.d.ts.map +1 -0
  27. package/dist/calendar/ShowCard/ShowCard.spec.js +714 -0
  28. package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
  29. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts +2 -0
  30. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts.map +1 -0
  31. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +241 -0
  32. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
  33. package/dist/components/Layout/AppShell.svelte +104 -0
  34. package/dist/components/Layout/AppShell.svelte.d.ts +26 -0
  35. package/dist/components/Layout/AppShell.svelte.d.ts.map +1 -0
  36. package/dist/components/Layout/ContentSection.svelte +80 -0
  37. package/dist/components/Layout/ContentSection.svelte.d.ts +23 -0
  38. package/dist/components/Layout/ContentSection.svelte.d.ts.map +1 -0
  39. package/dist/components/Layout/Grid.svelte +4 -4
  40. package/dist/components/Layout/Heading.svelte +81 -0
  41. package/dist/components/Layout/Heading.svelte.d.ts +24 -0
  42. package/dist/components/Layout/Heading.svelte.d.ts.map +1 -0
  43. package/dist/components/Layout/PageContainer.svelte +69 -0
  44. package/dist/components/Layout/PageContainer.svelte.d.ts +23 -0
  45. package/dist/components/Layout/PageContainer.svelte.d.ts.map +1 -0
  46. package/dist/components/Layout/Responsive.svelte +75 -0
  47. package/dist/components/Layout/Responsive.svelte.d.ts +19 -0
  48. package/dist/components/Layout/Responsive.svelte.d.ts.map +1 -0
  49. package/dist/components/Layout/Section.spec.d.ts +2 -0
  50. package/dist/components/Layout/Section.spec.d.ts.map +1 -0
  51. package/dist/components/Layout/Section.spec.js +149 -0
  52. package/dist/components/Layout/Section.svelte +80 -80
  53. package/dist/components/Layout/ShowOnDesktop.svelte +37 -0
  54. package/dist/components/Layout/ShowOnDesktop.svelte.d.ts +16 -0
  55. package/dist/components/Layout/ShowOnDesktop.svelte.d.ts.map +1 -0
  56. package/dist/components/Layout/ShowOnMobile.svelte +37 -0
  57. package/dist/components/Layout/ShowOnMobile.svelte.d.ts +16 -0
  58. package/dist/components/Layout/ShowOnMobile.svelte.d.ts.map +1 -0
  59. package/dist/components/Layout/Sidebar.spec.d.ts +2 -0
  60. package/dist/components/Layout/Sidebar.spec.d.ts.map +1 -0
  61. package/dist/components/Layout/Sidebar.spec.js +186 -0
  62. package/dist/components/Layout/Sidebar.svelte +108 -108
  63. package/dist/components/Layout/Stack.spec.js +2 -2
  64. package/dist/components/Layout/Stack.svelte +6 -6
  65. package/dist/components/Layout/Text.svelte +87 -0
  66. package/dist/components/Layout/Text.svelte.d.ts +28 -0
  67. package/dist/components/Layout/Text.svelte.d.ts.map +1 -0
  68. package/dist/components/Layout/TwoColumn.svelte +108 -0
  69. package/dist/components/Layout/TwoColumn.svelte.d.ts +28 -0
  70. package/dist/components/Layout/TwoColumn.svelte.d.ts.map +1 -0
  71. package/dist/components/Layout/__tests__/Heading.test.d.ts +2 -0
  72. package/dist/components/Layout/__tests__/Heading.test.d.ts.map +1 -0
  73. package/dist/components/Layout/__tests__/Heading.test.js +123 -0
  74. package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts +2 -0
  75. package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts.map +1 -0
  76. package/dist/components/Layout/__tests__/ShowOnDesktop.test.js +84 -0
  77. package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts +2 -0
  78. package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts.map +1 -0
  79. package/dist/components/Layout/__tests__/ShowOnMobile.test.js +80 -0
  80. package/dist/components/Layout/__tests__/Text.test.d.ts +2 -0
  81. package/dist/components/Layout/__tests__/Text.test.d.ts.map +1 -0
  82. package/dist/components/Layout/__tests__/Text.test.js +146 -0
  83. package/dist/components/Layout/__tests__/TwoColumn.test.d.ts +2 -0
  84. package/dist/components/Layout/__tests__/TwoColumn.test.d.ts.map +1 -0
  85. package/dist/components/Layout/__tests__/TwoColumn.test.js +129 -0
  86. package/dist/constants/formOptions.spec.js +9 -5
  87. package/dist/constants/validation.js +91 -91
  88. package/dist/constants/validation.spec.js +64 -64
  89. package/dist/datetime/__tests__/timezone.test.js +123 -1
  90. package/dist/forms/createFieldTracker.spec.d.ts +2 -0
  91. package/dist/forms/createFieldTracker.spec.d.ts.map +1 -0
  92. package/dist/forms/createFieldTracker.spec.js +343 -0
  93. package/dist/forms/createFormStore.spec.d.ts +2 -0
  94. package/dist/forms/createFormStore.spec.d.ts.map +1 -0
  95. package/dist/forms/createFormStore.spec.js +689 -0
  96. package/dist/index.d.ts +4 -112
  97. package/dist/index.js +40 -226
  98. package/dist/patterns/data/DataGrid.spec.d.ts +2 -0
  99. package/dist/patterns/data/DataGrid.spec.d.ts.map +1 -0
  100. package/dist/patterns/data/DataGrid.spec.js +159 -0
  101. package/dist/patterns/data/DataGrid.svelte +45 -45
  102. package/dist/patterns/data/DataList.spec.d.ts +2 -0
  103. package/dist/patterns/data/DataList.spec.d.ts.map +1 -0
  104. package/dist/patterns/data/DataList.spec.js +158 -0
  105. package/dist/patterns/data/DataList.svelte +24 -24
  106. package/dist/patterns/data/DataTable.spec.d.ts +2 -0
  107. package/dist/patterns/data/DataTable.spec.d.ts.map +1 -0
  108. package/dist/patterns/data/DataTable.spec.js +196 -0
  109. package/dist/patterns/data/DataTable.svelte +36 -36
  110. package/dist/patterns/forms/FormActions.spec.js +95 -88
  111. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  112. package/dist/patterns/forms/FormActions.svelte +46 -46
  113. package/dist/patterns/forms/FormGrid.spec.d.ts +2 -0
  114. package/dist/patterns/forms/FormGrid.spec.d.ts.map +1 -0
  115. package/dist/patterns/forms/FormGrid.spec.js +125 -0
  116. package/dist/patterns/forms/FormGrid.svelte +33 -33
  117. package/dist/patterns/forms/FormSection.spec.d.ts +2 -0
  118. package/dist/patterns/forms/FormSection.spec.d.ts.map +1 -0
  119. package/dist/patterns/forms/FormSection.spec.js +153 -0
  120. package/dist/patterns/forms/FormSection.svelte +32 -32
  121. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  122. package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
  123. package/dist/patterns/layout/Sidebar.spec.d.ts +2 -0
  124. package/dist/patterns/layout/Sidebar.spec.d.ts.map +1 -0
  125. package/dist/patterns/layout/Sidebar.spec.js +159 -0
  126. package/dist/patterns/layout/Sidebar.svelte +39 -39
  127. package/dist/patterns/layout/index.d.ts +9 -0
  128. package/dist/patterns/layout/index.js +22 -0
  129. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  130. package/dist/patterns/navigation/BottomNav.svelte +64 -64
  131. package/dist/patterns/navigation/Header.spec.js +33 -24
  132. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  133. package/dist/patterns/navigation/Header.svelte +193 -193
  134. package/dist/patterns/page/PageHeader.spec.d.ts +2 -0
  135. package/dist/patterns/page/PageHeader.spec.d.ts.map +1 -0
  136. package/dist/patterns/page/PageHeader.spec.js +167 -0
  137. package/dist/patterns/page/PageHeader.svelte +18 -18
  138. package/dist/patterns/page/PageLayout.spec.d.ts +2 -0
  139. package/dist/patterns/page/PageLayout.spec.d.ts.map +1 -0
  140. package/dist/patterns/page/PageLayout.spec.js +145 -0
  141. package/dist/patterns/page/PageLayout.svelte +40 -40
  142. package/dist/patterns/page/PageLoader.spec.js +57 -54
  143. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  144. package/dist/patterns/page/PageLoader.svelte +24 -24
  145. package/dist/patterns/page/SectionHeader.spec.d.ts +2 -0
  146. package/dist/patterns/page/SectionHeader.spec.d.ts.map +1 -0
  147. package/dist/patterns/page/SectionHeader.spec.js +197 -0
  148. package/dist/patterns/page/SectionHeader.svelte +29 -29
  149. package/dist/presets/badges.js +112 -112
  150. package/dist/presets/badges.spec.d.ts +2 -0
  151. package/dist/presets/badges.spec.d.ts.map +1 -0
  152. package/dist/presets/badges.spec.js +172 -0
  153. package/dist/presets/buttons.js +76 -76
  154. package/dist/presets/buttons.spec.d.ts +2 -0
  155. package/dist/presets/buttons.spec.d.ts.map +1 -0
  156. package/dist/presets/buttons.spec.js +135 -0
  157. package/dist/presets/index.js +9 -9
  158. package/dist/primitives/Accordion/Accordion.spec.d.ts +2 -0
  159. package/dist/primitives/Accordion/Accordion.spec.d.ts.map +1 -0
  160. package/dist/primitives/Accordion/Accordion.spec.js +83 -0
  161. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  162. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  163. package/dist/primitives/Accordion/AccordionItem.spec.d.ts +2 -0
  164. package/dist/primitives/Accordion/AccordionItem.spec.d.ts.map +1 -0
  165. package/dist/primitives/Accordion/AccordionItem.spec.js +661 -0
  166. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  167. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -0
  168. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +35 -0
  169. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -0
  170. package/dist/primitives/Alert/Alert.spec.js +173 -170
  171. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  172. package/dist/primitives/Alert/Alert.svelte +27 -27
  173. package/dist/primitives/Avatar/Avatar.spec.d.ts +2 -0
  174. package/dist/primitives/Avatar/Avatar.spec.d.ts.map +1 -0
  175. package/dist/primitives/Avatar/Avatar.spec.js +211 -0
  176. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  177. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  178. package/dist/primitives/Badges/Badge.spec.js +144 -103
  179. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  180. package/dist/primitives/Badges/Badge.svelte +79 -79
  181. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -127
  182. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  183. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  184. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte +13 -0
  185. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts +7 -0
  186. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts.map +1 -0
  187. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -120
  188. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  189. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  190. package/dist/primitives/Button/Button.spec.js +223 -211
  191. package/dist/primitives/Button/Button.stories.svelte +76 -76
  192. package/dist/primitives/Button/Button.svelte +270 -270
  193. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -48
  194. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  195. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts +2 -0
  196. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts.map +1 -0
  197. package/dist/primitives/Button/ButtonVariantShowcase.spec.js +202 -0
  198. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  199. package/dist/primitives/Card.spec.js +49 -49
  200. package/dist/primitives/Card.stories.svelte +22 -22
  201. package/dist/primitives/Card.svelte +28 -28
  202. package/dist/primitives/Checkbox/Checkbox.spec.d.ts +2 -0
  203. package/dist/primitives/Checkbox/Checkbox.spec.d.ts.map +1 -0
  204. package/dist/primitives/Checkbox/Checkbox.spec.js +252 -0
  205. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  206. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  207. package/dist/primitives/DarkModeToggle.spec.js +390 -357
  208. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  209. package/dist/primitives/DarkModeToggle.svelte +136 -136
  210. package/dist/primitives/Drawer/Drawer.spec.d.ts +2 -0
  211. package/dist/primitives/Drawer/Drawer.spec.d.ts.map +1 -0
  212. package/dist/primitives/Drawer/Drawer.spec.js +212 -0
  213. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  214. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  215. package/dist/primitives/Dropdown/Dropdown.spec.d.ts +2 -0
  216. package/dist/primitives/Dropdown/Dropdown.spec.d.ts.map +1 -0
  217. package/dist/primitives/Dropdown/Dropdown.spec.js +366 -0
  218. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  219. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  220. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts +2 -0
  221. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts.map +1 -0
  222. package/dist/primitives/Dropdown/DropdownItem.spec.js +182 -0
  223. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  224. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  225. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  226. package/dist/primitives/Icons/Availability.svelte +14 -14
  227. package/dist/primitives/Icons/Back.svelte +14 -14
  228. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  229. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  230. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  231. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  232. package/dist/primitives/Icons/Copy.svelte +15 -15
  233. package/dist/primitives/Icons/Cross.svelte +5 -5
  234. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  235. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  236. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  237. package/dist/primitives/Icons/Home.svelte +15 -15
  238. package/dist/primitives/Icons/Icon.spec.js +169 -169
  239. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  240. package/dist/primitives/Icons/Icon.svelte +52 -52
  241. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  242. package/dist/primitives/Icons/Info.svelte +7 -7
  243. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  244. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  245. package/dist/primitives/Icons/Message.svelte +15 -15
  246. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  247. package/dist/primitives/Icons/More.svelte +21 -21
  248. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  249. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  250. package/dist/primitives/Icons/Notification.svelte +14 -14
  251. package/dist/primitives/Icons/Payment.svelte +14 -14
  252. package/dist/primitives/Icons/Profile.svelte +21 -21
  253. package/dist/primitives/Icons/Reload.svelte +29 -29
  254. package/dist/primitives/Icons/Shows.svelte +21 -21
  255. package/dist/primitives/Icons/Signout.svelte +21 -21
  256. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  257. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  258. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  259. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  260. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  261. package/dist/primitives/Icons/iconTestUtils.spec.d.ts +2 -0
  262. package/dist/primitives/Icons/iconTestUtils.spec.d.ts.map +1 -0
  263. package/dist/primitives/Icons/iconTestUtils.spec.js +235 -0
  264. package/dist/primitives/Input/Input.spec.js +573 -573
  265. package/dist/primitives/Input/Input.stories.svelte +139 -139
  266. package/dist/primitives/Input/Input.svelte +418 -431
  267. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  268. package/dist/primitives/Input/Select.spec.js +212 -218
  269. package/dist/primitives/Input/Select.stories.svelte +112 -112
  270. package/dist/primitives/Input/Select.svelte +128 -128
  271. package/dist/primitives/Input/Textarea.spec.d.ts +2 -0
  272. package/dist/primitives/Input/Textarea.spec.d.ts.map +1 -0
  273. package/dist/primitives/Input/Textarea.spec.js +255 -0
  274. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  275. package/dist/primitives/Input/Textarea.svelte +35 -35
  276. package/dist/primitives/Label/Label.spec.d.ts +2 -0
  277. package/dist/primitives/Label/Label.spec.d.ts.map +1 -0
  278. package/dist/primitives/Label/Label.spec.js +157 -0
  279. package/dist/primitives/Label/Label.svelte +37 -37
  280. package/dist/primitives/Modal/Modal.spec.js +99 -95
  281. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  282. package/dist/primitives/Modal/Modal.svelte +158 -158
  283. package/dist/primitives/Modal/ModalTestWrapper.svelte +65 -0
  284. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts +23 -0
  285. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts.map +1 -0
  286. package/dist/primitives/NumberInput/NumberInput.spec.d.ts +2 -0
  287. package/dist/primitives/NumberInput/NumberInput.spec.d.ts.map +1 -0
  288. package/dist/primitives/NumberInput/NumberInput.spec.js +235 -0
  289. package/dist/primitives/NumberInput/NumberInput.svelte +106 -106
  290. package/dist/primitives/Pagination/Pagination.spec.d.ts +2 -0
  291. package/dist/primitives/Pagination/Pagination.spec.d.ts.map +1 -0
  292. package/dist/primitives/Pagination/Pagination.spec.js +266 -0
  293. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  294. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  295. package/dist/primitives/Radio/Radio.spec.d.ts +2 -0
  296. package/dist/primitives/Radio/Radio.spec.d.ts.map +1 -0
  297. package/dist/primitives/Radio/Radio.spec.js +206 -0
  298. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  299. package/dist/primitives/Radio/Radio.svelte +67 -67
  300. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts +2 -0
  301. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts.map +1 -0
  302. package/dist/primitives/Skeleton/CardPlaceholder.spec.js +156 -0
  303. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  304. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts +2 -0
  305. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts.map +1 -0
  306. package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +120 -0
  307. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  308. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts +2 -0
  309. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts.map +1 -0
  310. package/dist/primitives/Skeleton/ListPlaceholder.spec.js +220 -0
  311. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  312. package/dist/primitives/Skeleton/Skeleton.spec.d.ts +2 -0
  313. package/dist/primitives/Skeleton/Skeleton.spec.d.ts.map +1 -0
  314. package/dist/primitives/Skeleton/Skeleton.spec.js +173 -0
  315. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  316. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  317. package/dist/primitives/Spinner/Spinner.spec.js +71 -75
  318. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  319. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  320. package/dist/primitives/Tabs/TabItem.spec.d.ts +2 -0
  321. package/dist/primitives/Tabs/TabItem.spec.d.ts.map +1 -0
  322. package/dist/primitives/Tabs/TabItem.spec.js +130 -0
  323. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  324. package/dist/primitives/Tabs/Tabs.spec.d.ts +2 -0
  325. package/dist/primitives/Tabs/Tabs.spec.d.ts.map +1 -0
  326. package/dist/primitives/Tabs/Tabs.spec.js +295 -0
  327. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  328. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  329. package/dist/primitives/Tabs/TabsWithItems.test.svelte +18 -0
  330. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts +16 -0
  331. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts.map +1 -0
  332. package/dist/primitives/Toggle.spec.js +143 -127
  333. package/dist/primitives/Toggle.stories.svelte +92 -92
  334. package/dist/primitives/Toggle.svelte +71 -71
  335. package/dist/primitives/Typography/Typography.spec.d.ts +2 -0
  336. package/dist/primitives/Typography/Typography.spec.d.ts.map +1 -0
  337. package/dist/primitives/Typography/Typography.spec.js +183 -0
  338. package/dist/primitives/Typography/Typography.svelte +53 -53
  339. package/dist/primitives/ValidationError.spec.js +103 -103
  340. package/dist/primitives/ValidationError.stories.svelte +69 -69
  341. package/dist/primitives/ValidationError.svelte +29 -29
  342. package/dist/primitives/index.d.ts +1 -0
  343. package/dist/primitives/index.js +84 -81
  344. package/dist/recipes/CropImage/CropImage.spec.js +208 -216
  345. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  346. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  347. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts +2 -0
  348. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts.map +1 -0
  349. package/dist/recipes/ImageUploader/ImageUploader.spec.js +1351 -0
  350. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  351. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  352. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts +2 -0
  353. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts.map +1 -0
  354. package/dist/recipes/SuperLogin/SuperLogin.spec.js +1436 -0
  355. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  356. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts +2 -0
  357. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts.map +1 -0
  358. package/dist/recipes/feedback/EmptyState/EmptyState.spec.js +202 -0
  359. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  360. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  361. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  362. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  363. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -129
  364. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  365. package/dist/recipes/fields/CheckboxField.spec.d.ts +2 -0
  366. package/dist/recipes/fields/CheckboxField.spec.d.ts.map +1 -0
  367. package/dist/recipes/fields/CheckboxField.spec.js +135 -0
  368. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  369. package/dist/recipes/fields/FormField.spec.d.ts +2 -0
  370. package/dist/recipes/fields/FormField.spec.d.ts.map +1 -0
  371. package/dist/recipes/fields/FormField.spec.js +159 -0
  372. package/dist/recipes/fields/FormField.svelte +58 -58
  373. package/dist/recipes/fields/RadioGroup.spec.d.ts +2 -0
  374. package/dist/recipes/fields/RadioGroup.spec.d.ts.map +1 -0
  375. package/dist/recipes/fields/RadioGroup.spec.js +199 -0
  376. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  377. package/dist/recipes/fields/SelectField.spec.d.ts +2 -0
  378. package/dist/recipes/fields/SelectField.spec.d.ts.map +1 -0
  379. package/dist/recipes/fields/SelectField.spec.js +188 -0
  380. package/dist/recipes/fields/SelectField.svelte +80 -80
  381. package/dist/recipes/fields/TextareaField.spec.d.ts +2 -0
  382. package/dist/recipes/fields/TextareaField.spec.d.ts.map +1 -0
  383. package/dist/recipes/fields/TextareaField.spec.js +205 -0
  384. package/dist/recipes/fields/TextareaField.svelte +97 -97
  385. package/dist/recipes/fields/ToggleField.spec.d.ts +2 -0
  386. package/dist/recipes/fields/ToggleField.spec.d.ts.map +1 -0
  387. package/dist/recipes/fields/ToggleField.spec.js +153 -0
  388. package/dist/recipes/fields/ToggleField.svelte +60 -60
  389. package/dist/recipes/fields/index.js +7 -7
  390. package/dist/recipes/inputs/MultiSelect.spec.js +258 -257
  391. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  392. package/dist/recipes/inputs/MultiSelect.svelte +256 -249
  393. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +2 -0
  394. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  395. package/dist/recipes/inputs/OTPInput.spec.js +251 -238
  396. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  397. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  398. package/dist/recipes/inputs/PasswordInput.spec.d.ts +2 -0
  399. package/dist/recipes/inputs/PasswordInput.spec.d.ts.map +1 -0
  400. package/dist/recipes/inputs/PasswordInput.spec.js +410 -0
  401. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  402. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +253 -173
  403. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
  404. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +71 -0
  405. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts +9 -0
  406. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts.map +1 -0
  407. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +1246 -300
  408. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  409. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +326 -326
  410. package/dist/recipes/inputs/Search.spec.d.ts +2 -0
  411. package/dist/recipes/inputs/Search.spec.d.ts.map +1 -0
  412. package/dist/recipes/inputs/Search.spec.js +177 -0
  413. package/dist/recipes/inputs/Search.svelte +37 -37
  414. package/dist/recipes/inputs/SelectDropdown.spec.d.ts +2 -0
  415. package/dist/recipes/inputs/SelectDropdown.spec.d.ts.map +1 -0
  416. package/dist/recipes/inputs/SelectDropdown.spec.js +512 -0
  417. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  418. package/dist/recipes/modals/AlertModal.spec.d.ts +2 -0
  419. package/dist/recipes/modals/AlertModal.spec.d.ts.map +1 -0
  420. package/dist/recipes/modals/AlertModal.spec.js +432 -0
  421. package/dist/recipes/modals/AlertModal.svelte +130 -130
  422. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -191
  423. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  424. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  425. package/dist/recipes/modals/InputModal.spec.d.ts +2 -0
  426. package/dist/recipes/modals/InputModal.spec.d.ts.map +1 -0
  427. package/dist/recipes/modals/InputModal.spec.js +872 -0
  428. package/dist/recipes/modals/InputModal.svelte +182 -182
  429. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  430. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  431. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts +2 -0
  432. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts.map +1 -0
  433. package/dist/recipes/modals/ModalTestWrapper.spec.js +502 -0
  434. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  435. package/dist/recipes/modals/StatusModal.spec.d.ts +2 -0
  436. package/dist/recipes/modals/StatusModal.spec.d.ts.map +1 -0
  437. package/dist/recipes/modals/StatusModal.spec.js +599 -0
  438. package/dist/recipes/modals/StatusModal.svelte +206 -206
  439. package/dist/services/EventService.js +75 -75
  440. package/dist/services/EventService.spec.js +217 -217
  441. package/dist/services/ShowService.spec.js +345 -342
  442. package/dist/stores/auth.js +36 -36
  443. package/dist/stores/auth.spec.js +139 -139
  444. package/dist/stores/toaster.js +13 -13
  445. package/dist/stories/ButtonAuditDashboard.spec.d.ts +2 -0
  446. package/dist/stories/ButtonAuditDashboard.spec.d.ts.map +1 -0
  447. package/dist/stories/ButtonAuditDashboard.spec.js +913 -0
  448. package/dist/stories/ButtonAuditReview.spec.d.ts +2 -0
  449. package/dist/stories/ButtonAuditReview.spec.d.ts.map +1 -0
  450. package/dist/stories/ButtonAuditReview.spec.js +422 -0
  451. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  452. package/dist/stories/ButtonAuditReview.svelte +427 -427
  453. package/dist/stories/ButtonGridView.spec.d.ts +2 -0
  454. package/dist/stories/ButtonGridView.spec.d.ts.map +1 -0
  455. package/dist/stories/ButtonGridView.spec.js +667 -0
  456. package/dist/stories/ButtonShowcase.spec.d.ts +2 -0
  457. package/dist/stories/ButtonShowcase.spec.d.ts.map +1 -0
  458. package/dist/stories/ButtonShowcase.spec.js +499 -0
  459. package/dist/stories/PatternsGallery.spec.d.ts +2 -0
  460. package/dist/stories/PatternsGallery.spec.d.ts.map +1 -0
  461. package/dist/stories/PatternsGallery.spec.js +514 -0
  462. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  463. package/dist/stories/PatternsGallery.svelte +206 -206
  464. package/dist/stories/PrimitivesGallery.spec.d.ts +2 -0
  465. package/dist/stories/PrimitivesGallery.spec.d.ts.map +1 -0
  466. package/dist/stories/PrimitivesGallery.spec.js +813 -0
  467. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  468. package/dist/stories/PrimitivesGallery.svelte +725 -725
  469. package/dist/stories/RecipesGallery.spec.d.ts +2 -0
  470. package/dist/stories/RecipesGallery.spec.d.ts.map +1 -0
  471. package/dist/stories/RecipesGallery.spec.js +299 -0
  472. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  473. package/dist/stories/RecipesGallery.svelte +271 -271
  474. package/dist/stories/button-audit-manifest.json +11186 -11186
  475. package/dist/stripe/useStripeTheme.spec.d.ts +2 -0
  476. package/dist/stripe/useStripeTheme.spec.d.ts.map +1 -0
  477. package/dist/stripe/useStripeTheme.spec.js +793 -0
  478. package/dist/tailwind/preset.cjs +82 -82
  479. package/dist/telemetry.d.ts.map +1 -1
  480. package/dist/telemetry.js +405 -404
  481. package/dist/telemetry.spec.js +1144 -661
  482. package/dist/tokens/__tests__/colors.test.d.ts +2 -0
  483. package/dist/tokens/__tests__/colors.test.d.ts.map +1 -0
  484. package/dist/tokens/__tests__/colors.test.js +152 -0
  485. package/dist/tokens/__tests__/radius.test.d.ts +2 -0
  486. package/dist/tokens/__tests__/radius.test.d.ts.map +1 -0
  487. package/dist/tokens/__tests__/radius.test.js +118 -0
  488. package/dist/tokens/__tests__/shadows.test.d.ts +2 -0
  489. package/dist/tokens/__tests__/shadows.test.d.ts.map +1 -0
  490. package/dist/tokens/__tests__/shadows.test.js +105 -0
  491. package/dist/tokens/__tests__/spacing.test.js +11 -8
  492. package/dist/tokens/__tests__/typography-base.test.d.ts +2 -0
  493. package/dist/tokens/__tests__/typography-base.test.d.ts.map +1 -0
  494. package/dist/tokens/__tests__/typography-base.test.js +138 -0
  495. package/dist/tokens/__tests__/typography.test.d.ts +2 -0
  496. package/dist/tokens/__tests__/typography.test.d.ts.map +1 -0
  497. package/dist/tokens/__tests__/typography.test.js +156 -0
  498. package/dist/tokens/__tests__/z-index.test.d.ts +2 -0
  499. package/dist/tokens/__tests__/z-index.test.d.ts.map +1 -0
  500. package/dist/tokens/__tests__/z-index.test.js +121 -0
  501. package/dist/tokens/tokens.css +87 -87
  502. package/dist/tokens/typography-base.css +163 -0
  503. package/dist/utils/apiConfig.spec.js +219 -118
  504. package/dist/utils/formatters.spec.d.ts +2 -0
  505. package/dist/utils/formatters.spec.d.ts.map +1 -0
  506. package/dist/utils/formatters.spec.js +82 -0
  507. package/dist/utils/transitions.js +62 -62
  508. package/dist/utils/transitions.spec.d.ts +2 -0
  509. package/dist/utils/transitions.spec.d.ts.map +1 -0
  510. package/dist/utils/transitions.spec.js +130 -0
  511. package/dist/utils/utils.js +354 -354
  512. package/package.json +292 -286
@@ -0,0 +1,599 @@
1
+ import { render, screen, waitFor } from "@testing-library/svelte";
2
+ import userEvent from "@testing-library/user-event";
3
+ import { expect, describe, test, vi, beforeEach, afterEach } from "vitest";
4
+ import StatusModal from "./StatusModal.svelte";
5
+
6
+ function setupTest(args = {}) {
7
+ const user = userEvent.setup();
8
+ const { component } = render(StatusModal, {
9
+ props: {
10
+ show: true,
11
+ title: "Test Status",
12
+ description: "This is a test description",
13
+ ...args,
14
+ },
15
+ });
16
+ return { user, component };
17
+ }
18
+
19
+ describe("StatusModal Component Tests", () => {
20
+ afterEach(() => {
21
+ vi.restoreAllMocks();
22
+ });
23
+
24
+ // Note: Modal renders both mobile sheet and desktop centered versions
25
+ // CSS hides one based on viewport, but in tests both are in DOM
26
+ // Use getAllByText/queryAllByText and check length or first element
27
+
28
+ describe("Basic Rendering", () => {
29
+ test("Does not render when show is false", () => {
30
+ render(StatusModal, { props: { show: false } });
31
+ expect(screen.queryByText("Test Status")).not.toBeInTheDocument();
32
+ });
33
+
34
+ test("Renders when show is true", () => {
35
+ setupTest();
36
+ expect(screen.getAllByText("Test Status").length).toBeGreaterThan(0);
37
+ });
38
+
39
+ test("Displays title", () => {
40
+ setupTest({ title: "Operation Complete" });
41
+ expect(screen.getAllByText("Operation Complete").length).toBeGreaterThan(0);
42
+ });
43
+
44
+ test("Displays description", () => {
45
+ setupTest({ description: "Your changes have been saved" });
46
+ expect(screen.getAllByText("Your changes have been saved").length).toBeGreaterThan(0);
47
+ });
48
+
49
+ test("Hides title when not provided", () => {
50
+ setupTest({ title: "" });
51
+ const headings = screen.queryAllByRole("heading", { level: 2 });
52
+ expect(headings.length).toBe(0);
53
+ });
54
+
55
+ test("Hides description when not provided", () => {
56
+ setupTest({ description: "" });
57
+ const paragraphs = document.querySelectorAll("p");
58
+ expect(paragraphs.length).toBe(0);
59
+ });
60
+
61
+ test("Displays subtitle in profile mode", () => {
62
+ setupTest({
63
+ subtitle: "Test Subtitle",
64
+ image: "https://example.com/image.jpg"
65
+ });
66
+ expect(screen.getAllByText("Test Subtitle").length).toBeGreaterThan(0);
67
+ });
68
+ });
69
+
70
+ describe("Icon Types", () => {
71
+ test("Renders success icon by default", () => {
72
+ setupTest();
73
+ // Success icon should be present
74
+ const container = document.querySelector(".bg-green-100");
75
+ expect(container).toBeInTheDocument();
76
+ });
77
+
78
+ test("Renders success icon when iconType is success", () => {
79
+ setupTest({ iconType: "success" });
80
+ const container = document.querySelector(".bg-green-100");
81
+ expect(container).toBeInTheDocument();
82
+ });
83
+
84
+ test("Renders error icon when iconType is error", () => {
85
+ setupTest({ iconType: "error" });
86
+ const container = document.querySelector(".bg-red-100");
87
+ expect(container).toBeInTheDocument();
88
+ });
89
+
90
+ test("Renders warning icon when iconType is warning", () => {
91
+ setupTest({ iconType: "warning" });
92
+ const container = document.querySelector(".bg-amber-100");
93
+ expect(container).toBeInTheDocument();
94
+ });
95
+
96
+ test("Renders info icon when iconType is info", () => {
97
+ setupTest({ iconType: "info" });
98
+ const container = document.querySelector(".bg-blue-100");
99
+ expect(container).toBeInTheDocument();
100
+ });
101
+
102
+ test("Renders custom icon when provided", () => {
103
+ setupTest({ customIcon: "https://example.com/icon.svg" });
104
+ const icon = screen.getAllByAltText("Status icon")[0];
105
+ expect(icon).toBeInTheDocument();
106
+ expect(icon.src).toContain("icon.svg");
107
+ });
108
+ });
109
+
110
+ describe("Profile Mode", () => {
111
+ test("Enables profile mode when image is provided", () => {
112
+ setupTest({
113
+ image: "https://example.com/profile.jpg",
114
+ title: "Profile Test"
115
+ });
116
+ const profileImage = screen.getAllByAltText("Profile Test")[0];
117
+ expect(profileImage).toBeInTheDocument();
118
+ expect(profileImage.src).toContain("profile.jpg");
119
+ });
120
+
121
+ test("Disables profile mode when image is not provided", () => {
122
+ setupTest({ title: "Standard Test" });
123
+ expect(screen.queryByAltText("Standard Test")).not.toBeInTheDocument();
124
+ });
125
+ });
126
+
127
+ describe("Button Behavior", () => {
128
+ test("Displays custom button text", () => {
129
+ setupTest({ buttonText: "Continue" });
130
+ expect(screen.getAllByText("Continue").length).toBeGreaterThan(0);
131
+ });
132
+
133
+ test("Displays default button text", () => {
134
+ setupTest();
135
+ expect(screen.getAllByText("Ok").length).toBeGreaterThan(0);
136
+ });
137
+
138
+ test("Calls onconfirm when button is clicked", async () => {
139
+ const onconfirm = vi.fn();
140
+ const { user } = setupTest({ onconfirm });
141
+
142
+ const button = screen.getAllByText("Ok")[0];
143
+ await user.click(button);
144
+
145
+ await waitFor(() => {
146
+ expect(onconfirm).toHaveBeenCalledOnce();
147
+ });
148
+ });
149
+
150
+ test("Calls onclose when button is clicked", async () => {
151
+ const onclose = vi.fn();
152
+ const { user } = setupTest({ onclose });
153
+
154
+ const button = screen.getAllByText("Ok")[0];
155
+ await user.click(button);
156
+
157
+ await waitFor(() => {
158
+ expect(onclose).toHaveBeenCalledOnce();
159
+ });
160
+ });
161
+
162
+ test("Calls both onconfirm and onclose when button is clicked", async () => {
163
+ const onconfirm = vi.fn();
164
+ const onclose = vi.fn();
165
+ const { user } = setupTest({ onconfirm, onclose });
166
+
167
+ const button = screen.getAllByText("Ok")[0];
168
+ await user.click(button);
169
+
170
+ await waitFor(() => {
171
+ expect(onconfirm).toHaveBeenCalledOnce();
172
+ expect(onclose).toHaveBeenCalledOnce();
173
+ });
174
+ });
175
+
176
+ test("Does not call callbacks when disabled", async () => {
177
+ const onconfirm = vi.fn();
178
+ const { user } = setupTest({ onconfirm, disabled: true });
179
+
180
+ const button = screen.getAllByText("Ok")[0];
181
+ await user.click(button);
182
+
183
+ await waitFor(() => {
184
+ expect(onconfirm).not.toHaveBeenCalled();
185
+ });
186
+ });
187
+
188
+ test("Does not call callbacks when loading", async () => {
189
+ const onconfirm = vi.fn();
190
+ const { user } = setupTest({ onconfirm, loading: true });
191
+
192
+ const button = screen.getAllByText("Ok")[0];
193
+ await user.click(button);
194
+
195
+ await waitFor(() => {
196
+ expect(onconfirm).not.toHaveBeenCalled();
197
+ });
198
+ });
199
+
200
+ test("Sets correct button variant for error type", () => {
201
+ setupTest({ iconType: "error", buttonText: "Retry" });
202
+ const buttons = screen.getAllByText("Retry");
203
+ expect(buttons.length).toBeGreaterThan(0);
204
+ });
205
+
206
+ test("Sets correct button variant for warning type", () => {
207
+ setupTest({ iconType: "warning", buttonText: "Proceed" });
208
+ const buttons = screen.getAllByText("Proceed");
209
+ expect(buttons.length).toBeGreaterThan(0);
210
+ });
211
+
212
+ test("Sets correct button variant for success type", () => {
213
+ setupTest({ iconType: "success", buttonText: "Done" });
214
+ const buttons = screen.getAllByText("Done");
215
+ expect(buttons.length).toBeGreaterThan(0);
216
+ });
217
+ });
218
+
219
+ describe("Close Button", () => {
220
+ test("Does not render close button by default", () => {
221
+ setupTest();
222
+ const closeButtons = screen.queryAllByAltText("Close");
223
+ expect(closeButtons.length).toBe(0);
224
+ });
225
+
226
+ test("Renders close button when closeBtn is true", () => {
227
+ setupTest({ closeBtn: true });
228
+ const closeButtons = screen.getAllByAltText("Close");
229
+ expect(closeButtons.length).toBeGreaterThan(0);
230
+ });
231
+
232
+ test("Calls onclose when close button is clicked", async () => {
233
+ const onclose = vi.fn();
234
+ const { user } = setupTest({ closeBtn: true, onclose });
235
+
236
+ const closeButton = screen.getAllByAltText("Close")[0];
237
+ await user.click(closeButton);
238
+
239
+ await waitFor(() => {
240
+ expect(onclose).toHaveBeenCalledOnce();
241
+ });
242
+ });
243
+
244
+ test("Does not call onclose when disabled and close button clicked", async () => {
245
+ const onclose = vi.fn();
246
+ const { user } = setupTest({ closeBtn: true, onclose, disabled: true });
247
+
248
+ const closeButton = screen.getAllByAltText("Close")[0];
249
+ await user.click(closeButton);
250
+
251
+ await waitFor(() => {
252
+ expect(onclose).not.toHaveBeenCalled();
253
+ });
254
+ });
255
+ });
256
+
257
+ describe("Custom Actions", () => {
258
+ test("Renders custom actions when provided", () => {
259
+ setupTest({
260
+ actions: [
261
+ { label: "Cancel", onClick: vi.fn() },
262
+ { label: "Confirm", onClick: vi.fn() }
263
+ ]
264
+ });
265
+
266
+ expect(screen.getAllByText("Cancel").length).toBeGreaterThan(0);
267
+ expect(screen.getAllByText("Confirm").length).toBeGreaterThan(0);
268
+ });
269
+
270
+ test("Calls action onClick when action button is clicked", async () => {
271
+ const onClick = vi.fn();
272
+ const { user } = setupTest({
273
+ actions: [
274
+ { label: "Action", onClick }
275
+ ]
276
+ });
277
+
278
+ const button = screen.getAllByText("Action")[0];
279
+ await user.click(button);
280
+
281
+ await waitFor(() => {
282
+ expect(onClick).toHaveBeenCalledOnce();
283
+ });
284
+ });
285
+
286
+ test("Closes modal after action unless keepOpen is true", async () => {
287
+ const onclose = vi.fn();
288
+ const { user } = setupTest({
289
+ actions: [
290
+ { label: "Action", onClick: vi.fn() }
291
+ ],
292
+ onclose
293
+ });
294
+
295
+ const button = screen.getAllByText("Action")[0];
296
+ await user.click(button);
297
+
298
+ await waitFor(() => {
299
+ expect(onclose).toHaveBeenCalledOnce();
300
+ });
301
+ });
302
+
303
+ test("Does not close modal when keepOpen is true", async () => {
304
+ const onclose = vi.fn();
305
+ const { user } = setupTest({
306
+ actions: [
307
+ { label: "Action", onClick: vi.fn(), keepOpen: true }
308
+ ],
309
+ onclose
310
+ });
311
+
312
+ const button = screen.getAllByText("Action")[0];
313
+ await user.click(button);
314
+
315
+ await waitFor(() => {
316
+ expect(onclose).not.toHaveBeenCalled();
317
+ });
318
+ });
319
+
320
+ test("Applies red variant to delete actions", () => {
321
+ setupTest({
322
+ actions: [
323
+ { label: "Delete Item", onClick: vi.fn() }
324
+ ]
325
+ });
326
+
327
+ const button = screen.getAllByText("Delete Item")[0];
328
+ expect(button).toBeInTheDocument();
329
+ });
330
+
331
+ test("Applies red variant to archive actions", () => {
332
+ setupTest({
333
+ actions: [
334
+ { label: "Archive Item", onClick: vi.fn() }
335
+ ]
336
+ });
337
+
338
+ const button = screen.getAllByText("Archive Item")[0];
339
+ expect(button).toBeInTheDocument();
340
+ });
341
+
342
+ test("Applies red variant when danger flag is true", () => {
343
+ setupTest({
344
+ actions: [
345
+ { label: "Dangerous Action", onClick: vi.fn(), danger: true }
346
+ ]
347
+ });
348
+
349
+ const button = screen.getAllByText("Dangerous Action")[0];
350
+ expect(button).toBeInTheDocument();
351
+ });
352
+
353
+ test("Applies default variant to continue actions", () => {
354
+ setupTest({
355
+ actions: [
356
+ { label: "Continue", onClick: vi.fn() }
357
+ ]
358
+ });
359
+
360
+ const button = screen.getAllByText("Continue")[0];
361
+ expect(button).toBeInTheDocument();
362
+ });
363
+
364
+ test("Applies default variant to finish actions", () => {
365
+ setupTest({
366
+ actions: [
367
+ { label: "Finish", onClick: vi.fn() }
368
+ ]
369
+ });
370
+
371
+ const button = screen.getAllByText("Finish")[0];
372
+ expect(button).toBeInTheDocument();
373
+ });
374
+
375
+ test("Applies default variant to done actions", () => {
376
+ setupTest({
377
+ actions: [
378
+ { label: "Done", onClick: vi.fn() }
379
+ ]
380
+ });
381
+
382
+ const button = screen.getAllByText("Done")[0];
383
+ expect(button).toBeInTheDocument();
384
+ });
385
+
386
+ test("Applies alternative variant to other actions", () => {
387
+ setupTest({
388
+ actions: [
389
+ { label: "Other Action", onClick: vi.fn() }
390
+ ]
391
+ });
392
+
393
+ const button = screen.getAllByText("Other Action")[0];
394
+ expect(button).toBeInTheDocument();
395
+ });
396
+
397
+ test("Respects custom variant on actions", () => {
398
+ setupTest({
399
+ actions: [
400
+ { label: "Custom", onClick: vi.fn(), variant: "default" }
401
+ ]
402
+ });
403
+
404
+ const button = screen.getAllByText("Custom")[0];
405
+ expect(button).toBeInTheDocument();
406
+ });
407
+
408
+ test("Disables action button when action.disabled is true", async () => {
409
+ const onClick = vi.fn();
410
+ const { user } = setupTest({
411
+ actions: [
412
+ { label: "Disabled Action", onClick, disabled: true }
413
+ ]
414
+ });
415
+
416
+ const button = screen.getAllByText("Disabled Action")[0].closest('button');
417
+ expect(button).toBeDisabled();
418
+ });
419
+
420
+ test("Disables action button when modal is disabled", () => {
421
+ setupTest({
422
+ actions: [
423
+ { label: "Action", onClick: vi.fn() }
424
+ ],
425
+ disabled: true
426
+ });
427
+
428
+ const button = screen.getAllByText("Action")[0].closest('button');
429
+ expect(button).toBeDisabled();
430
+ });
431
+
432
+ test("Shows loading on primary action when modal is loading", () => {
433
+ setupTest({
434
+ actions: [
435
+ { label: "Primary", onClick: vi.fn(), primary: true }
436
+ ],
437
+ loading: true
438
+ });
439
+
440
+ const button = screen.getAllByText("Primary")[0];
441
+ expect(button).toBeInTheDocument();
442
+ });
443
+
444
+ test("Shows loading on action when action.loading is true", () => {
445
+ setupTest({
446
+ actions: [
447
+ { label: "Loading Action", onClick: vi.fn(), loading: true }
448
+ ]
449
+ });
450
+
451
+ const button = screen.getAllByText("Loading Action")[0];
452
+ expect(button).toBeInTheDocument();
453
+ });
454
+
455
+ test("Does not call action onClick when disabled", async () => {
456
+ const onClick = vi.fn();
457
+ const { user } = setupTest({
458
+ actions: [
459
+ { label: "Action", onClick }
460
+ ],
461
+ disabled: true
462
+ });
463
+
464
+ const button = screen.getAllByText("Action")[0];
465
+ await user.click(button);
466
+
467
+ await waitFor(() => {
468
+ expect(onClick).not.toHaveBeenCalled();
469
+ });
470
+ });
471
+
472
+ test("Does not call action onClick when loading", async () => {
473
+ const onClick = vi.fn();
474
+ const { user } = setupTest({
475
+ actions: [
476
+ { label: "Action", onClick }
477
+ ],
478
+ loading: true
479
+ });
480
+
481
+ const button = screen.getAllByText("Action")[0];
482
+ await user.click(button);
483
+
484
+ await waitFor(() => {
485
+ expect(onClick).not.toHaveBeenCalled();
486
+ });
487
+ });
488
+ });
489
+
490
+ describe("Size Prop", () => {
491
+ test("Accepts small size prop", () => {
492
+ setupTest({ size: "small" });
493
+ expect(screen.getAllByText("Test Status").length).toBeGreaterThan(0);
494
+ });
495
+
496
+ test("Accepts medium size prop", () => {
497
+ setupTest({ size: "medium" });
498
+ expect(screen.getAllByText("Test Status").length).toBeGreaterThan(0);
499
+ });
500
+
501
+ test("Accepts large size prop", () => {
502
+ setupTest({ size: "large" });
503
+ expect(screen.getAllByText("Test Status").length).toBeGreaterThan(0);
504
+ });
505
+ });
506
+
507
+ describe("Variant Override", () => {
508
+ test("Uses variant prop over iconType when both provided", () => {
509
+ setupTest({ iconType: "success", variant: "error" });
510
+ const container = document.querySelector(".bg-red-100");
511
+ expect(container).toBeInTheDocument();
512
+ });
513
+
514
+ test("Falls back to iconType when variant not provided", () => {
515
+ setupTest({ iconType: "warning" });
516
+ const container = document.querySelector(".bg-amber-100");
517
+ expect(container).toBeInTheDocument();
518
+ });
519
+ });
520
+
521
+ describe("Modal Close Behavior", () => {
522
+ test("Closes modal when backdrop is clicked", async () => {
523
+ const onclose = vi.fn();
524
+ const { user } = setupTest({ onclose });
525
+
526
+ // Find backdrop and click it
527
+ const backdrop = document.querySelector('[data-testid="modal-backdrop"]');
528
+ if (backdrop) {
529
+ await user.click(backdrop);
530
+ await waitFor(() => {
531
+ expect(onclose).toHaveBeenCalled();
532
+ });
533
+ }
534
+ });
535
+
536
+ test("Does not close when disabled and backdrop clicked", async () => {
537
+ const onclose = vi.fn();
538
+ const { user } = setupTest({ onclose, disabled: true });
539
+
540
+ const backdrop = document.querySelector('[data-testid="modal-backdrop"]');
541
+ if (backdrop) {
542
+ await user.click(backdrop);
543
+ await waitFor(() => {
544
+ expect(onclose).not.toHaveBeenCalled();
545
+ });
546
+ }
547
+ });
548
+ });
549
+
550
+ describe("Edge Cases", () => {
551
+ test("Handles undefined callbacks gracefully", async () => {
552
+ const { user } = setupTest({ onconfirm: undefined, onclose: undefined });
553
+
554
+ const button = screen.getAllByText("Ok")[0];
555
+ await user.click(button);
556
+
557
+ // Should not throw error
558
+ expect(button).toBeInTheDocument();
559
+ });
560
+
561
+ test("Handles empty actions array", () => {
562
+ setupTest({ actions: [] });
563
+ // Should render default button
564
+ expect(screen.getAllByText("Ok").length).toBeGreaterThan(0);
565
+ });
566
+
567
+ test("Handles all props together", () => {
568
+ setupTest({
569
+ title: "Complete Title",
570
+ subtitle: "Complete Subtitle",
571
+ description: "Complete Description",
572
+ buttonText: "Complete Button",
573
+ iconType: "success",
574
+ image: "https://example.com/image.jpg",
575
+ closeBtn: true,
576
+ disabled: false,
577
+ loading: false,
578
+ size: "large"
579
+ });
580
+
581
+ expect(screen.getAllByText("Complete Title").length).toBeGreaterThan(0);
582
+ expect(screen.getAllByText("Complete Subtitle").length).toBeGreaterThan(0);
583
+ expect(screen.getAllByText("Complete Description").length).toBeGreaterThan(0);
584
+ });
585
+
586
+ test("Handles empty strings for all text props", () => {
587
+ setupTest({
588
+ title: "",
589
+ subtitle: "",
590
+ description: "",
591
+ buttonText: ""
592
+ });
593
+
594
+ // Should still render with empty button text
595
+ const buttons = document.querySelectorAll("button");
596
+ expect(buttons.length).toBeGreaterThan(0);
597
+ });
598
+ });
599
+ });