@getmicdrop/svelte-components 5.5.4 → 5.5.5

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 (290) 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/Calendar/MiniMonthCalendar.spec.d.ts +2 -0
  5. package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts.map +1 -0
  6. package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +1191 -0
  7. package/dist/calendar/FAQs/FAQs.spec.d.ts +2 -0
  8. package/dist/calendar/FAQs/FAQs.spec.d.ts.map +1 -0
  9. package/dist/calendar/FAQs/FAQs.spec.js +238 -0
  10. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts +2 -0
  11. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts.map +1 -0
  12. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.js +420 -0
  13. package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts +2 -0
  14. package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts.map +1 -0
  15. package/dist/calendar/OrderSummary/OrderSummary.spec.js +808 -0
  16. package/dist/calendar/PublicCard/PublicCard.spec.d.ts +2 -0
  17. package/dist/calendar/PublicCard/PublicCard.spec.d.ts.map +1 -0
  18. package/dist/calendar/PublicCard/PublicCard.spec.js +301 -0
  19. package/dist/calendar/ShowCard/ShowCard.spec.d.ts +2 -0
  20. package/dist/calendar/ShowCard/ShowCard.spec.d.ts.map +1 -0
  21. package/dist/calendar/ShowCard/ShowCard.spec.js +714 -0
  22. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts +2 -0
  23. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts.map +1 -0
  24. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +241 -0
  25. package/dist/components/Layout/Section.spec.d.ts +2 -0
  26. package/dist/components/Layout/Section.spec.d.ts.map +1 -0
  27. package/dist/components/Layout/Section.spec.js +149 -0
  28. package/dist/components/Layout/Sidebar.spec.d.ts +2 -0
  29. package/dist/components/Layout/Sidebar.spec.d.ts.map +1 -0
  30. package/dist/components/Layout/Sidebar.spec.js +186 -0
  31. package/dist/components/Layout/Stack.spec.js +3 -3
  32. package/dist/constants/formOptions.spec.js +9 -5
  33. package/dist/datetime/__tests__/format.test.js +1 -1
  34. package/dist/datetime/__tests__/parse.test.js +1 -1
  35. package/dist/datetime/__tests__/timezone.test.js +124 -2
  36. package/dist/datetime/parse.js +1 -1
  37. package/dist/forms/createFieldTracker.spec.d.ts +2 -0
  38. package/dist/forms/createFieldTracker.spec.d.ts.map +1 -0
  39. package/dist/forms/createFieldTracker.spec.js +343 -0
  40. package/dist/forms/createFormStore.spec.d.ts +2 -0
  41. package/dist/forms/createFormStore.spec.d.ts.map +1 -0
  42. package/dist/forms/createFormStore.spec.js +689 -0
  43. package/dist/forms/createFormStore.svelte.js +0 -1
  44. package/dist/index.d.ts +4 -112
  45. package/dist/index.js +4 -190
  46. package/dist/patterns/data/DataGrid.spec.d.ts +2 -0
  47. package/dist/patterns/data/DataGrid.spec.d.ts.map +1 -0
  48. package/dist/patterns/data/DataGrid.spec.js +159 -0
  49. package/dist/patterns/data/DataList.spec.d.ts +2 -0
  50. package/dist/patterns/data/DataList.spec.d.ts.map +1 -0
  51. package/dist/patterns/data/DataList.spec.js +158 -0
  52. package/dist/patterns/data/DataTable.spec.d.ts +2 -0
  53. package/dist/patterns/data/DataTable.spec.d.ts.map +1 -0
  54. package/dist/patterns/data/DataTable.spec.js +196 -0
  55. package/dist/patterns/forms/FormActions.spec.js +10 -3
  56. package/dist/patterns/forms/FormGrid.spec.d.ts +2 -0
  57. package/dist/patterns/forms/FormGrid.spec.d.ts.map +1 -0
  58. package/dist/patterns/forms/FormGrid.spec.js +125 -0
  59. package/dist/patterns/forms/FormSection.spec.d.ts +2 -0
  60. package/dist/patterns/forms/FormSection.spec.d.ts.map +1 -0
  61. package/dist/patterns/forms/FormSection.spec.js +153 -0
  62. package/dist/patterns/layout/Sidebar.spec.d.ts +2 -0
  63. package/dist/patterns/layout/Sidebar.spec.d.ts.map +1 -0
  64. package/dist/patterns/layout/Sidebar.spec.js +159 -0
  65. package/dist/patterns/navigation/BottomNav.svelte +4 -4
  66. package/dist/patterns/navigation/Header.spec.js +33 -24
  67. package/dist/patterns/page/PageHeader.spec.d.ts +2 -0
  68. package/dist/patterns/page/PageHeader.spec.d.ts.map +1 -0
  69. package/dist/patterns/page/PageHeader.spec.js +167 -0
  70. package/dist/patterns/page/PageLayout.spec.d.ts +2 -0
  71. package/dist/patterns/page/PageLayout.spec.d.ts.map +1 -0
  72. package/dist/patterns/page/PageLayout.spec.js +145 -0
  73. package/dist/patterns/page/PageLoader.spec.js +5 -2
  74. package/dist/patterns/page/SectionHeader.spec.d.ts +2 -0
  75. package/dist/patterns/page/SectionHeader.spec.d.ts.map +1 -0
  76. package/dist/patterns/page/SectionHeader.spec.js +197 -0
  77. package/dist/presets/badges.spec.d.ts +2 -0
  78. package/dist/presets/badges.spec.d.ts.map +1 -0
  79. package/dist/presets/badges.spec.js +172 -0
  80. package/dist/presets/buttons.spec.d.ts +2 -0
  81. package/dist/presets/buttons.spec.d.ts.map +1 -0
  82. package/dist/presets/buttons.spec.js +135 -0
  83. package/dist/primitives/Accordion/Accordion.spec.d.ts +2 -0
  84. package/dist/primitives/Accordion/Accordion.spec.d.ts.map +1 -0
  85. package/dist/primitives/Accordion/Accordion.spec.js +83 -0
  86. package/dist/primitives/Accordion/AccordionItem.spec.d.ts +2 -0
  87. package/dist/primitives/Accordion/AccordionItem.spec.d.ts.map +1 -0
  88. package/dist/primitives/Accordion/AccordionItem.spec.js +661 -0
  89. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -0
  90. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +35 -0
  91. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -0
  92. package/dist/primitives/Alert/Alert.spec.js +5 -2
  93. package/dist/primitives/Avatar/Avatar.spec.d.ts +2 -0
  94. package/dist/primitives/Avatar/Avatar.spec.d.ts.map +1 -0
  95. package/dist/primitives/Avatar/Avatar.spec.js +211 -0
  96. package/dist/primitives/Badges/Badge.spec.js +109 -68
  97. package/dist/primitives/BottomSheet/BottomSheet.spec.js +36 -27
  98. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte +13 -0
  99. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts +7 -0
  100. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts.map +1 -0
  101. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +15 -13
  102. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +5 -5
  103. package/dist/primitives/Button/Button.spec.js +83 -71
  104. package/dist/primitives/Button/ButtonSaveDemo.spec.js +100 -2
  105. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts +2 -0
  106. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts.map +1 -0
  107. package/dist/primitives/Button/ButtonVariantShowcase.spec.js +202 -0
  108. package/dist/primitives/Card.spec.js +1 -1
  109. package/dist/primitives/Checkbox/Checkbox.spec.d.ts +2 -0
  110. package/dist/primitives/Checkbox/Checkbox.spec.d.ts.map +1 -0
  111. package/dist/primitives/Checkbox/Checkbox.spec.js +252 -0
  112. package/dist/primitives/DarkModeToggle.spec.js +84 -51
  113. package/dist/primitives/Drawer/Drawer.spec.d.ts +2 -0
  114. package/dist/primitives/Drawer/Drawer.spec.d.ts.map +1 -0
  115. package/dist/primitives/Drawer/Drawer.spec.js +212 -0
  116. package/dist/primitives/Dropdown/Dropdown.spec.d.ts +2 -0
  117. package/dist/primitives/Dropdown/Dropdown.spec.d.ts.map +1 -0
  118. package/dist/primitives/Dropdown/Dropdown.spec.js +366 -0
  119. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts +2 -0
  120. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts.map +1 -0
  121. package/dist/primitives/Dropdown/DropdownItem.spec.js +182 -0
  122. package/dist/primitives/Icons/iconTestUtils.spec.d.ts +2 -0
  123. package/dist/primitives/Icons/iconTestUtils.spec.d.ts.map +1 -0
  124. package/dist/primitives/Icons/iconTestUtils.spec.js +235 -0
  125. package/dist/primitives/Input/Input.spec.js +14 -14
  126. package/dist/primitives/Input/Input.svelte +1 -14
  127. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  128. package/dist/primitives/Input/Select.spec.js +11 -17
  129. package/dist/primitives/Input/Textarea.spec.d.ts +2 -0
  130. package/dist/primitives/Input/Textarea.spec.d.ts.map +1 -0
  131. package/dist/primitives/Input/Textarea.spec.js +255 -0
  132. package/dist/primitives/Label/Label.spec.d.ts +2 -0
  133. package/dist/primitives/Label/Label.spec.d.ts.map +1 -0
  134. package/dist/primitives/Label/Label.spec.js +157 -0
  135. package/dist/primitives/Modal/Modal.spec.js +29 -25
  136. package/dist/primitives/Modal/ModalTestWrapper.svelte +65 -0
  137. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts +23 -0
  138. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts.map +1 -0
  139. package/dist/primitives/NumberInput/NumberInput.spec.d.ts +2 -0
  140. package/dist/primitives/NumberInput/NumberInput.spec.d.ts.map +1 -0
  141. package/dist/primitives/NumberInput/NumberInput.spec.js +235 -0
  142. package/dist/primitives/Pagination/Pagination.spec.d.ts +2 -0
  143. package/dist/primitives/Pagination/Pagination.spec.d.ts.map +1 -0
  144. package/dist/primitives/Pagination/Pagination.spec.js +266 -0
  145. package/dist/primitives/Radio/Radio.spec.d.ts +2 -0
  146. package/dist/primitives/Radio/Radio.spec.d.ts.map +1 -0
  147. package/dist/primitives/Radio/Radio.spec.js +206 -0
  148. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts +2 -0
  149. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts.map +1 -0
  150. package/dist/primitives/Skeleton/CardPlaceholder.spec.js +156 -0
  151. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts +2 -0
  152. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts.map +1 -0
  153. package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +120 -0
  154. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts +2 -0
  155. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts.map +1 -0
  156. package/dist/primitives/Skeleton/ListPlaceholder.spec.js +220 -0
  157. package/dist/primitives/Skeleton/Skeleton.spec.d.ts +2 -0
  158. package/dist/primitives/Skeleton/Skeleton.spec.d.ts.map +1 -0
  159. package/dist/primitives/Skeleton/Skeleton.spec.js +173 -0
  160. package/dist/primitives/Spinner/Spinner.spec.js +25 -29
  161. package/dist/primitives/Tabs/TabItem.spec.d.ts +2 -0
  162. package/dist/primitives/Tabs/TabItem.spec.d.ts.map +1 -0
  163. package/dist/primitives/Tabs/TabItem.spec.js +130 -0
  164. package/dist/primitives/Tabs/Tabs.spec.d.ts +2 -0
  165. package/dist/primitives/Tabs/Tabs.spec.d.ts.map +1 -0
  166. package/dist/primitives/Tabs/Tabs.spec.js +295 -0
  167. package/dist/primitives/Tabs/TabsWithItems.test.svelte +18 -0
  168. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts +16 -0
  169. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts.map +1 -0
  170. package/dist/primitives/Toggle.spec.js +93 -77
  171. package/dist/primitives/Typography/Typography.spec.d.ts +2 -0
  172. package/dist/primitives/Typography/Typography.spec.d.ts.map +1 -0
  173. package/dist/primitives/Typography/Typography.spec.js +183 -0
  174. package/dist/primitives/ValidationError.spec.js +1 -1
  175. package/dist/primitives/index.d.ts +1 -0
  176. package/dist/primitives/index.js +3 -0
  177. package/dist/recipes/CropImage/CropImage.spec.js +1 -9
  178. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts +2 -0
  179. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts.map +1 -0
  180. package/dist/recipes/ImageUploader/ImageUploader.spec.js +1351 -0
  181. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts +2 -0
  182. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts.map +1 -0
  183. package/dist/recipes/SuperLogin/SuperLogin.spec.js +1436 -0
  184. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts +2 -0
  185. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts.map +1 -0
  186. package/dist/recipes/feedback/EmptyState/EmptyState.spec.js +202 -0
  187. package/dist/recipes/feedback/ErrorDisplay.spec.js +6 -6
  188. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +21 -17
  189. package/dist/recipes/fields/CheckboxField.spec.d.ts +2 -0
  190. package/dist/recipes/fields/CheckboxField.spec.d.ts.map +1 -0
  191. package/dist/recipes/fields/CheckboxField.spec.js +135 -0
  192. package/dist/recipes/fields/FormField.spec.d.ts +2 -0
  193. package/dist/recipes/fields/FormField.spec.d.ts.map +1 -0
  194. package/dist/recipes/fields/FormField.spec.js +159 -0
  195. package/dist/recipes/fields/RadioGroup.spec.d.ts +2 -0
  196. package/dist/recipes/fields/RadioGroup.spec.d.ts.map +1 -0
  197. package/dist/recipes/fields/RadioGroup.spec.js +199 -0
  198. package/dist/recipes/fields/SelectField.spec.d.ts +2 -0
  199. package/dist/recipes/fields/SelectField.spec.d.ts.map +1 -0
  200. package/dist/recipes/fields/SelectField.spec.js +188 -0
  201. package/dist/recipes/fields/TextareaField.spec.d.ts +2 -0
  202. package/dist/recipes/fields/TextareaField.spec.d.ts.map +1 -0
  203. package/dist/recipes/fields/TextareaField.spec.js +205 -0
  204. package/dist/recipes/fields/ToggleField.spec.d.ts +2 -0
  205. package/dist/recipes/fields/ToggleField.spec.d.ts.map +1 -0
  206. package/dist/recipes/fields/ToggleField.spec.js +153 -0
  207. package/dist/recipes/inputs/MultiSelect.spec.js +4 -3
  208. package/dist/recipes/inputs/MultiSelect.svelte +10 -3
  209. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +2 -0
  210. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  211. package/dist/recipes/inputs/OTPInput.spec.js +52 -39
  212. package/dist/recipes/inputs/PasswordInput.spec.d.ts +2 -0
  213. package/dist/recipes/inputs/PasswordInput.spec.d.ts.map +1 -0
  214. package/dist/recipes/inputs/PasswordInput.spec.js +410 -0
  215. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +253 -173
  216. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +71 -0
  217. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts +9 -0
  218. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts.map +1 -0
  219. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +1246 -300
  220. package/dist/recipes/inputs/Search.spec.d.ts +2 -0
  221. package/dist/recipes/inputs/Search.spec.d.ts.map +1 -0
  222. package/dist/recipes/inputs/Search.spec.js +177 -0
  223. package/dist/recipes/inputs/SelectDropdown.spec.d.ts +2 -0
  224. package/dist/recipes/inputs/SelectDropdown.spec.d.ts.map +1 -0
  225. package/dist/recipes/inputs/SelectDropdown.spec.js +512 -0
  226. package/dist/recipes/modals/AlertModal.spec.d.ts +2 -0
  227. package/dist/recipes/modals/AlertModal.spec.d.ts.map +1 -0
  228. package/dist/recipes/modals/AlertModal.spec.js +432 -0
  229. package/dist/recipes/modals/ConfirmationModal.spec.js +36 -21
  230. package/dist/recipes/modals/InputModal.spec.d.ts +2 -0
  231. package/dist/recipes/modals/InputModal.spec.d.ts.map +1 -0
  232. package/dist/recipes/modals/InputModal.spec.js +872 -0
  233. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts +2 -0
  234. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts.map +1 -0
  235. package/dist/recipes/modals/ModalTestWrapper.spec.js +502 -0
  236. package/dist/recipes/modals/StatusModal.spec.d.ts +2 -0
  237. package/dist/recipes/modals/StatusModal.spec.d.ts.map +1 -0
  238. package/dist/recipes/modals/StatusModal.spec.js +599 -0
  239. package/dist/services/ShowService.spec.js +18 -15
  240. package/dist/stories/ButtonAuditDashboard.spec.d.ts +2 -0
  241. package/dist/stories/ButtonAuditDashboard.spec.d.ts.map +1 -0
  242. package/dist/stories/ButtonAuditDashboard.spec.js +913 -0
  243. package/dist/stories/ButtonAuditReview.spec.d.ts +2 -0
  244. package/dist/stories/ButtonAuditReview.spec.d.ts.map +1 -0
  245. package/dist/stories/ButtonAuditReview.spec.js +422 -0
  246. package/dist/stories/ButtonGridView.spec.d.ts +2 -0
  247. package/dist/stories/ButtonGridView.spec.d.ts.map +1 -0
  248. package/dist/stories/ButtonGridView.spec.js +667 -0
  249. package/dist/stories/ButtonShowcase.spec.d.ts +2 -0
  250. package/dist/stories/ButtonShowcase.spec.d.ts.map +1 -0
  251. package/dist/stories/ButtonShowcase.spec.js +499 -0
  252. package/dist/stories/PatternsGallery.spec.d.ts +2 -0
  253. package/dist/stories/PatternsGallery.spec.d.ts.map +1 -0
  254. package/dist/stories/PatternsGallery.spec.js +514 -0
  255. package/dist/stories/PrimitivesGallery.spec.d.ts +2 -0
  256. package/dist/stories/PrimitivesGallery.spec.d.ts.map +1 -0
  257. package/dist/stories/PrimitivesGallery.spec.js +813 -0
  258. package/dist/stories/RecipesGallery.spec.d.ts +2 -0
  259. package/dist/stories/RecipesGallery.spec.d.ts.map +1 -0
  260. package/dist/stories/RecipesGallery.spec.js +299 -0
  261. package/dist/stripe/useStripeTheme.spec.d.ts +2 -0
  262. package/dist/stripe/useStripeTheme.spec.d.ts.map +1 -0
  263. package/dist/stripe/useStripeTheme.spec.js +793 -0
  264. package/dist/telemetry.d.ts.map +1 -1
  265. package/dist/telemetry.js +6 -5
  266. package/dist/telemetry.spec.js +495 -12
  267. package/dist/tokens/__tests__/colors.test.d.ts +2 -0
  268. package/dist/tokens/__tests__/colors.test.d.ts.map +1 -0
  269. package/dist/tokens/__tests__/colors.test.js +152 -0
  270. package/dist/tokens/__tests__/radius.test.d.ts +2 -0
  271. package/dist/tokens/__tests__/radius.test.d.ts.map +1 -0
  272. package/dist/tokens/__tests__/radius.test.js +118 -0
  273. package/dist/tokens/__tests__/shadows.test.d.ts +2 -0
  274. package/dist/tokens/__tests__/shadows.test.d.ts.map +1 -0
  275. package/dist/tokens/__tests__/shadows.test.js +105 -0
  276. package/dist/tokens/__tests__/spacing.test.js +11 -8
  277. package/dist/tokens/__tests__/typography.test.d.ts +2 -0
  278. package/dist/tokens/__tests__/typography.test.d.ts.map +1 -0
  279. package/dist/tokens/__tests__/typography.test.js +156 -0
  280. package/dist/tokens/__tests__/z-index.test.d.ts +2 -0
  281. package/dist/tokens/__tests__/z-index.test.d.ts.map +1 -0
  282. package/dist/tokens/__tests__/z-index.test.js +121 -0
  283. package/dist/utils/apiConfig.spec.js +102 -1
  284. package/dist/utils/formatters.spec.d.ts +2 -0
  285. package/dist/utils/formatters.spec.d.ts.map +1 -0
  286. package/dist/utils/formatters.spec.js +82 -0
  287. package/dist/utils/transitions.spec.d.ts +2 -0
  288. package/dist/utils/transitions.spec.d.ts.map +1 -0
  289. package/dist/utils/transitions.spec.js +130 -0
  290. package/package.json +8 -3
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AlertModal.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertModal.spec.d.ts","sourceRoot":"","sources":["../../../src/lib/recipes/modals/AlertModal.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,432 @@
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 AlertModal from "./AlertModal.svelte";
5
+
6
+ function setupTest(args = {}) {
7
+ const user = userEvent.setup();
8
+ const { component } = render(AlertModal, {
9
+ props: {
10
+ show: true,
11
+ title: "Test Alert",
12
+ message: "This is a test message",
13
+ ...args,
14
+ },
15
+ });
16
+ return { user, component };
17
+ }
18
+
19
+ describe("AlertModal 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
+ test("Does not render when show is false", () => {
29
+ render(AlertModal, { props: { show: false } });
30
+ expect(screen.queryByText("Test Alert")).not.toBeInTheDocument();
31
+ });
32
+
33
+ test("Renders when show is true", () => {
34
+ setupTest();
35
+ // Modal renders both mobile and desktop versions
36
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
37
+ });
38
+
39
+ test("Displays title", () => {
40
+ setupTest({ title: "Success!" });
41
+ expect(screen.getAllByText("Success!").length).toBeGreaterThan(0);
42
+ });
43
+
44
+ test("Displays message", () => {
45
+ setupTest({ message: "Operation completed successfully" });
46
+ expect(
47
+ screen.getAllByText("Operation completed successfully").length
48
+ ).toBeGreaterThan(0);
49
+ });
50
+
51
+ test("Hides title when not provided", () => {
52
+ setupTest({ title: "" });
53
+ const headings = screen.queryAllByRole("heading", { level: 2 });
54
+ expect(headings.length).toBe(0);
55
+ });
56
+
57
+ test("Hides message when not provided", () => {
58
+ setupTest({ message: "" });
59
+ // When message is empty, there should be no paragraph with message content
60
+ const paragraphs = document.querySelectorAll("p");
61
+ expect(paragraphs.length).toBe(0);
62
+ });
63
+
64
+ test("Displays custom button text", () => {
65
+ setupTest({ buttonText: "Got it" });
66
+ expect(screen.getAllByText("Got it").length).toBeGreaterThan(0);
67
+ });
68
+
69
+ test("Displays default button text", () => {
70
+ setupTest();
71
+ expect(screen.getAllByText("OK").length).toBeGreaterThan(0);
72
+ });
73
+
74
+ test("Calls onconfirm when button is clicked", async () => {
75
+ const onconfirm = vi.fn();
76
+ const { user } = setupTest({ onconfirm, autoClose: 0 });
77
+
78
+ const button = screen.getAllByText("OK")[0];
79
+ await user.click(button);
80
+
81
+ await waitFor(() => {
82
+ expect(onconfirm).toHaveBeenCalledOnce();
83
+ });
84
+ });
85
+
86
+ test("Calls onclose when button is clicked", async () => {
87
+ const onclose = vi.fn();
88
+ const { user } = setupTest({ onclose, autoClose: 0 });
89
+
90
+ const button = screen.getAllByText("OK")[0];
91
+ await user.click(button);
92
+
93
+ await waitFor(() => {
94
+ expect(onclose).toHaveBeenCalledOnce();
95
+ });
96
+ });
97
+
98
+ test("Calls both onconfirm and onclose when button is clicked", async () => {
99
+ const onconfirm = vi.fn();
100
+ const onclose = vi.fn();
101
+ const { user } = setupTest({ onconfirm, onclose, autoClose: 0 });
102
+
103
+ const button = screen.getAllByText("OK")[0];
104
+ await user.click(button);
105
+
106
+ await waitFor(() => {
107
+ expect(onconfirm).toHaveBeenCalledOnce();
108
+ expect(onclose).toHaveBeenCalledOnce();
109
+ });
110
+ });
111
+
112
+ test("Closes modal when button is clicked", async () => {
113
+ const onclose = vi.fn();
114
+ const { user } = setupTest({ autoClose: 0, onclose });
115
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
116
+
117
+ const button = screen.getAllByText("OK")[0];
118
+ await user.click(button);
119
+
120
+ // Verify close was called (actual DOM removal is tested in Modal component)
121
+ await waitFor(() => {
122
+ expect(onclose).toHaveBeenCalledOnce();
123
+ });
124
+ });
125
+
126
+ // Variant tests - Success
127
+ test("Renders success variant with correct icon", () => {
128
+ setupTest({ variant: "success" });
129
+ // CheckOutline icon should be present
130
+ const iconContainer = document.querySelector(".bg-green-100");
131
+ expect(iconContainer).toBeInTheDocument();
132
+ const icon = iconContainer?.querySelector(".text-green-600");
133
+ expect(icon).toBeInTheDocument();
134
+ });
135
+
136
+ test("Success variant has green styling", () => {
137
+ setupTest({ variant: "success" });
138
+ const iconContainer = document.querySelector(".bg-green-100");
139
+ expect(iconContainer).toHaveClass("bg-green-100");
140
+ });
141
+
142
+ test("Success variant button uses default variant", () => {
143
+ setupTest({ variant: "success" });
144
+ const button = screen.getAllByText("OK")[0].closest("button");
145
+ // Default variant has primary/blue styling
146
+ expect(button).toHaveClass("bg-blue-700");
147
+ });
148
+
149
+ // Variant tests - Error
150
+ test("Renders error variant with correct icon", () => {
151
+ setupTest({ variant: "error" });
152
+ // CloseOutline icon should be present
153
+ const iconContainer = document.querySelector(".bg-red-100");
154
+ expect(iconContainer).toBeInTheDocument();
155
+ const icon = iconContainer?.querySelector(".text-red-600");
156
+ expect(icon).toBeInTheDocument();
157
+ });
158
+
159
+ test("Error variant has red styling", () => {
160
+ setupTest({ variant: "error" });
161
+ const iconContainer = document.querySelector(".bg-red-100");
162
+ expect(iconContainer).toHaveClass("bg-red-100");
163
+ });
164
+
165
+ test("Error variant button uses red variant", () => {
166
+ setupTest({ variant: "error" });
167
+ const button = screen.getAllByText("OK")[0].closest("button");
168
+ // Red variant has red styling
169
+ expect(button).toHaveClass("bg-red-700");
170
+ });
171
+
172
+ // Variant tests - Warning
173
+ test("Renders warning variant with correct icon", () => {
174
+ setupTest({ variant: "warning" });
175
+ // ExclamationTriangleOutline icon should be present
176
+ const iconContainer = document.querySelector(".bg-amber-100");
177
+ expect(iconContainer).toBeInTheDocument();
178
+ const icon = iconContainer?.querySelector(".text-amber-600");
179
+ expect(icon).toBeInTheDocument();
180
+ });
181
+
182
+ test("Warning variant has amber styling", () => {
183
+ setupTest({ variant: "warning" });
184
+ const iconContainer = document.querySelector(".bg-amber-100");
185
+ expect(iconContainer).toHaveClass("bg-amber-100");
186
+ });
187
+
188
+ test("Warning variant button uses default variant", () => {
189
+ setupTest({ variant: "warning" });
190
+ const button = screen.getAllByText("OK")[0].closest("button");
191
+ // Default variant has primary/blue styling
192
+ expect(button).toHaveClass("bg-blue-700");
193
+ });
194
+
195
+ // Variant tests - Info
196
+ test("Renders info variant with correct icon", () => {
197
+ setupTest({ variant: "info" });
198
+ // InfoCircleOutline icon should be present
199
+ const iconContainer = document.querySelector(".bg-blue-100");
200
+ expect(iconContainer).toBeInTheDocument();
201
+ const icon = iconContainer?.querySelector(".text-blue-600");
202
+ expect(icon).toBeInTheDocument();
203
+ });
204
+
205
+ test("Info variant has blue styling", () => {
206
+ setupTest({ variant: "info" });
207
+ const iconContainer = document.querySelector(".bg-blue-100");
208
+ expect(iconContainer).toHaveClass("bg-blue-100");
209
+ });
210
+
211
+ test("Info variant button uses default variant", () => {
212
+ setupTest({ variant: "info" });
213
+ const button = screen.getAllByText("OK")[0].closest("button");
214
+ // Default variant has primary/blue styling
215
+ expect(button).toHaveClass("bg-blue-700");
216
+ });
217
+
218
+ test("Defaults to info variant when invalid variant provided", () => {
219
+ setupTest({ variant: "invalid" });
220
+ // Should fall back to info variant
221
+ const iconContainer = document.querySelector(".bg-blue-100");
222
+ expect(iconContainer).toBeInTheDocument();
223
+ });
224
+
225
+ // Auto-close tests
226
+ test("Does not auto-close when autoClose is 0", async () => {
227
+ vi.useFakeTimers();
228
+ try {
229
+ setupTest({ autoClose: 0 });
230
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
231
+
232
+ // Advance time significantly
233
+ await vi.advanceTimersByTimeAsync(5000);
234
+
235
+ // Modal should still be visible
236
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
237
+ } finally {
238
+ vi.useRealTimers();
239
+ }
240
+ });
241
+
242
+ test("Auto-closes after specified delay", async () => {
243
+ vi.useFakeTimers();
244
+ try {
245
+ const onclose = vi.fn();
246
+ setupTest({ autoClose: 3000, onclose });
247
+
248
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
249
+
250
+ // Advance time by the auto-close delay
251
+ await vi.advanceTimersByTimeAsync(3000);
252
+
253
+ // Wait for onclose to be called
254
+ await waitFor(() => {
255
+ expect(onclose).toHaveBeenCalledOnce();
256
+ });
257
+ } finally {
258
+ vi.useRealTimers();
259
+ }
260
+ });
261
+
262
+ test("Auto-close timer is cleared when modal closes manually", async () => {
263
+ // This test verifies that manually closing the modal clears the auto-close timer
264
+ // We test this by ensuring the close callback is only called once, not twice
265
+ const onclose = vi.fn();
266
+ const { user } = setupTest({ autoClose: 10000, onclose });
267
+
268
+ // Click button immediately to close before auto-close triggers
269
+ const button = screen.getAllByText("OK")[0];
270
+ await user.click(button);
271
+
272
+ await waitFor(() => {
273
+ expect(onclose).toHaveBeenCalledOnce();
274
+ });
275
+
276
+ // If timer wasn't cleared, it would call onclose again after 10 seconds
277
+ // Since we can't easily test this with real timers in a fast test,
278
+ // we verify the timer cleanup exists in the component (lines 84-85)
279
+ // and that onclose was only called once
280
+ });
281
+
282
+ // Size prop test
283
+ test("Passes size prop to Modal", () => {
284
+ setupTest({ size: "medium" });
285
+ // Modal component receives the size prop
286
+ // We can't easily test this without mocking Modal, but we can verify it doesn't error
287
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
288
+ });
289
+
290
+ test("Uses default small size", () => {
291
+ setupTest();
292
+ // Default size is small
293
+ expect(screen.getAllByText("Test Alert").length).toBeGreaterThan(0);
294
+ });
295
+
296
+ // Layout and styling tests
297
+ test("Icon container is centered", () => {
298
+ setupTest();
299
+ const iconWrapper = document.querySelector(".flex.justify-center.items-center");
300
+ expect(iconWrapper).toBeInTheDocument();
301
+ });
302
+
303
+ test("Icon container has proper dimensions", () => {
304
+ setupTest();
305
+ const iconContainer = document.querySelector(".w-14.h-14.rounded-full");
306
+ expect(iconContainer).toBeInTheDocument();
307
+ expect(iconContainer).toHaveClass("w-14");
308
+ expect(iconContainer).toHaveClass("h-14");
309
+ expect(iconContainer).toHaveClass("rounded-full");
310
+ });
311
+
312
+ test("Title has proper styling", () => {
313
+ setupTest({ title: "Alert Title" });
314
+ const title = screen.getAllByText("Alert Title")[0];
315
+ expect(title.tagName).toBe("H2");
316
+ expect(title).toHaveClass("mt-4");
317
+ });
318
+
319
+ test("Message has proper styling", () => {
320
+ setupTest({ message: "Alert message" });
321
+ const message = screen.getAllByText("Alert message")[0];
322
+ expect(message.tagName).toBe("P");
323
+ expect(message).toHaveClass("leading-relaxed");
324
+ });
325
+
326
+ test("Button has full width", () => {
327
+ setupTest();
328
+ const button = screen.getAllByText("OK")[0].closest("button");
329
+ // Button should be in a container with w-full
330
+ const buttonContainer = button?.parentElement;
331
+ expect(buttonContainer).toHaveClass("w-full");
332
+ });
333
+
334
+ test("Content is centered", () => {
335
+ setupTest();
336
+ const header = document.querySelector(".text-center");
337
+ expect(header).toBeInTheDocument();
338
+ });
339
+
340
+ // Dark mode styling tests
341
+ test("Success variant has dark mode classes", () => {
342
+ setupTest({ variant: "success" });
343
+ const iconContainer = document.querySelector(".bg-green-100");
344
+ expect(iconContainer).toHaveClass("dark:bg-green-900/30");
345
+ });
346
+
347
+ test("Error variant has dark mode classes", () => {
348
+ setupTest({ variant: "error" });
349
+ const iconContainer = document.querySelector(".bg-red-100");
350
+ expect(iconContainer).toHaveClass("dark:bg-red-900/30");
351
+ });
352
+
353
+ test("Warning variant has dark mode classes", () => {
354
+ setupTest({ variant: "warning" });
355
+ const iconContainer = document.querySelector(".bg-amber-100");
356
+ expect(iconContainer).toHaveClass("dark:bg-amber-900/30");
357
+ });
358
+
359
+ test("Info variant has dark mode classes", () => {
360
+ setupTest({ variant: "info" });
361
+ const iconContainer = document.querySelector(".bg-blue-100");
362
+ expect(iconContainer).toHaveClass("dark:bg-blue-900/30");
363
+ });
364
+
365
+ // Integration tests
366
+ test("Full success flow", async () => {
367
+ const onconfirm = vi.fn();
368
+ const onclose = vi.fn();
369
+ const { user } = setupTest({
370
+ variant: "success",
371
+ title: "Success!",
372
+ message: "Your changes have been saved.",
373
+ buttonText: "Great",
374
+ onconfirm,
375
+ onclose,
376
+ autoClose: 0,
377
+ });
378
+
379
+ // Verify content
380
+ expect(screen.getAllByText("Success!").length).toBeGreaterThan(0);
381
+ expect(
382
+ screen.getAllByText("Your changes have been saved.").length
383
+ ).toBeGreaterThan(0);
384
+ expect(screen.getAllByText("Great").length).toBeGreaterThan(0);
385
+
386
+ // Verify success styling
387
+ expect(document.querySelector(".bg-green-100")).toBeInTheDocument();
388
+
389
+ // Click button
390
+ const button = screen.getAllByText("Great")[0];
391
+ await user.click(button);
392
+
393
+ // Verify callbacks were called
394
+ await waitFor(() => {
395
+ expect(onconfirm).toHaveBeenCalledOnce();
396
+ expect(onclose).toHaveBeenCalledOnce();
397
+ });
398
+ });
399
+
400
+ test("Full error flow with auto-close", async () => {
401
+ vi.useFakeTimers();
402
+ try {
403
+ const onclose = vi.fn();
404
+ setupTest({
405
+ variant: "error",
406
+ title: "Error",
407
+ message: "Something went wrong.",
408
+ autoClose: 2000,
409
+ onclose,
410
+ });
411
+
412
+ // Verify content
413
+ expect(screen.getAllByText("Error").length).toBeGreaterThan(0);
414
+ expect(
415
+ screen.getAllByText("Something went wrong.").length
416
+ ).toBeGreaterThan(0);
417
+
418
+ // Verify error styling
419
+ expect(document.querySelector(".bg-red-100")).toBeInTheDocument();
420
+
421
+ // Advance time to trigger auto-close
422
+ await vi.advanceTimersByTimeAsync(2000);
423
+
424
+ // Verify onclose was called
425
+ await vi.waitFor(() => {
426
+ expect(onclose).toHaveBeenCalledOnce();
427
+ });
428
+ } finally {
429
+ vi.useRealTimers();
430
+ }
431
+ });
432
+ });
@@ -88,48 +88,49 @@ describe("ConfirmationModal Component Tests", () => {
88
88
  expect(confirmFn).toHaveBeenCalled();
89
89
  });
90
90
 
91
- test("Dispatches event with action label", async () => {
91
+ // Note: Svelte 5 removed $on - component no longer dispatches custom events
92
+ // The component calls action.onClick directly, which we test above
93
+ test("Clicking action calls onClick handler", async () => {
92
94
  const confirmFn = vi.fn();
93
95
  const actions = [{ label: "Delete", onClick: confirmFn }];
94
- const { user, component } = setupTest({ actions });
95
-
96
- const deleteSpy = vi.fn();
97
- component.$on("delete", deleteSpy);
96
+ const { user } = setupTest({ actions });
98
97
 
99
98
  await user.click(screen.getAllByText("Delete")[0]);
100
- expect(deleteSpy).toHaveBeenCalled();
99
+ expect(confirmFn).toHaveBeenCalled();
101
100
  });
102
101
 
103
102
  test("Shows close button when closeBtn is true", () => {
104
103
  setupTest({ closeBtn: true });
105
- const closeImg = document.querySelector('img[alt="Close Icon"]');
104
+ const closeImg = document.querySelector('img[alt="Close"]');
106
105
  expect(closeImg).toBeInTheDocument();
107
106
  });
108
107
 
109
108
  test("Does not show close button by default", () => {
110
109
  setupTest({ closeBtn: false });
111
- const closeImg = document.querySelector('img[alt="Close Icon"]');
110
+ const closeImg = document.querySelector('img[alt="Close"]');
112
111
  expect(closeImg).not.toBeInTheDocument();
113
112
  });
114
113
 
115
114
  test("Shows icon when provided", () => {
116
115
  setupTest({ icon: "/test-icon.svg" });
117
- const icon = document.querySelector('img[alt="Icon here"]');
116
+ const icon = document.querySelector('img[alt=""]');
118
117
  expect(icon).toBeInTheDocument();
119
118
  expect(icon).toHaveAttribute("src", "/test-icon.svg");
120
119
  });
121
120
 
122
121
  test("Does not show icon by default", () => {
123
122
  setupTest();
124
- const icon = document.querySelector('img[alt="Icon here"]');
123
+ const icon = document.querySelector('img[alt=""]');
125
124
  expect(icon).not.toBeInTheDocument();
126
125
  });
127
126
 
128
- test("Maps danger action to red-solid variant", async () => {
127
+ test("Maps danger action to red variant", async () => {
129
128
  const actions = [{ label: "Delete", onClick: vi.fn(), danger: true }];
130
129
  setupTest({ actions });
131
130
  const button = screen.getAllByText("Delete")[0].closest("button");
132
- expect(button).toHaveClass("btn-red-solid");
131
+ // Button applies Tailwind classes for red variant
132
+ expect(button).toHaveClass("bg-red-700");
133
+ expect(button).toHaveClass("text-white");
133
134
  });
134
135
 
135
136
  test("Maps strokebtn + danger to red-outline variant", async () => {
@@ -138,41 +139,55 @@ describe("ConfirmationModal Component Tests", () => {
138
139
  ];
139
140
  setupTest({ actions });
140
141
  const button = screen.getAllByText("Remove")[0].closest("button, a");
141
- expect(button).toHaveClass("btn-red-outline");
142
+ // Button applies Tailwind classes for red-outline variant
143
+ expect(button).toHaveClass("text-red-700");
144
+ expect(button).toHaveClass("bg-transparent");
145
+ expect(button).toHaveClass("border-red-700");
142
146
  });
143
147
 
144
- test("Maps strokebtn + deemphasized to gray-outline variant", async () => {
148
+ test("Maps strokebtn + deemphasized to alternative variant", async () => {
145
149
  const actions = [
146
150
  { label: "Cancel", onClick: vi.fn(), strokebtn: true, deemphasized: true },
147
151
  ];
148
152
  setupTest({ actions });
149
153
  const button = screen.getAllByText("Cancel")[0].closest("button, a");
150
- expect(button).toHaveClass("btn-gray-outline");
154
+ // Button applies Tailwind classes for alternative variant
155
+ expect(button).toHaveClass("text-gray-900");
156
+ expect(button).toHaveClass("bg-white");
157
+ expect(button).toHaveClass("border-gray-200");
151
158
  });
152
159
 
153
- test("Maps textBtn + danger to red-text variant", async () => {
160
+ test("Maps textBtn + danger to ghost-red variant", async () => {
154
161
  const actions = [
155
162
  { label: "Delete Text", onClick: vi.fn(), textBtn: true, danger: true },
156
163
  ];
157
164
  setupTest({ actions });
158
165
  const button = screen.getAllByText("Delete Text")[0].closest("button, a");
159
- expect(button).toHaveClass("btn-red-text");
166
+ // Button applies Tailwind classes for ghost-red variant
167
+ expect(button).toHaveClass("text-red-700");
168
+ expect(button).toHaveClass("bg-transparent");
169
+ expect(button).toHaveClass("border-transparent");
160
170
  });
161
171
 
162
172
  test("Uses explicit variant when provided", async () => {
163
173
  const actions = [
164
- { label: "Custom", onClick: vi.fn(), variant: "blue-outline" },
174
+ { label: "Custom", onClick: vi.fn(), variant: "outline" },
165
175
  ];
166
176
  setupTest({ actions });
167
177
  const button = screen.getAllByText("Custom")[0].closest("button, a");
168
- expect(button).toHaveClass("btn-blue-outline");
178
+ // Button applies Tailwind classes for outline variant
179
+ expect(button).toHaveClass("text-blue-700");
180
+ expect(button).toHaveClass("bg-transparent");
181
+ expect(button).toHaveClass("border-blue-700");
169
182
  });
170
183
 
171
- test("Auto-maps Delete label to red-solid variant", async () => {
184
+ test("Auto-maps Delete label to red variant", async () => {
172
185
  const actions = [{ label: "Delete", onClick: vi.fn() }];
173
186
  setupTest({ actions });
174
187
  const button = screen.getAllByText("Delete")[0].closest("button, a");
175
- expect(button).toHaveClass("btn-red-solid");
188
+ // Button applies Tailwind classes for red variant (auto-detected from "Delete" label)
189
+ expect(button).toHaveClass("bg-red-700");
190
+ expect(button).toHaveClass("text-white");
176
191
  });
177
192
 
178
193
  test("Title has proper styling", () => {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=InputModal.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputModal.spec.d.ts","sourceRoot":"","sources":["../../../src/lib/recipes/modals/InputModal.spec.js"],"names":[],"mappings":""}