@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,514 @@
1
+ import { render, screen, fireEvent, waitFor } from '@testing-library/svelte';
2
+ import { expect, describe, it, beforeEach, afterEach, vi } from 'vitest';
3
+ import PatternsGallery from './PatternsGallery.svelte';
4
+
5
+ // Mock SvelteKit modules
6
+ vi.mock('$app/stores', () => ({
7
+ page: {
8
+ subscribe: (fn) => {
9
+ fn({ url: { pathname: '/' } });
10
+ return () => {};
11
+ }
12
+ }
13
+ }));
14
+
15
+ vi.mock('$app/paths', () => ({
16
+ base: ''
17
+ }));
18
+
19
+ // Mock fetch for any API calls
20
+ const mockFetch = vi.fn(() =>
21
+ Promise.resolve({
22
+ ok: true,
23
+ json: () => Promise.resolve([]),
24
+ })
25
+ );
26
+
27
+ global.fetch = mockFetch;
28
+
29
+ describe('PatternsGallery', () => {
30
+ beforeEach(() => {
31
+ // Reset dark mode class before each test
32
+ document.documentElement.classList.remove('dark');
33
+ });
34
+
35
+ afterEach(() => {
36
+ // Cleanup after each test
37
+ document.documentElement.classList.remove('dark');
38
+ });
39
+
40
+ describe('Component Rendering', () => {
41
+ it('renders the main gallery container', () => {
42
+ render(PatternsGallery);
43
+ const heading = screen.getByText('Patterns Gallery');
44
+ expect(heading).toBeInTheDocument();
45
+ });
46
+
47
+ it('renders the subtitle', () => {
48
+ render(PatternsGallery);
49
+ const subtitle = screen.getByText('Layout & flow components (Layer 3)');
50
+ expect(subtitle).toBeInTheDocument();
51
+ });
52
+
53
+ it('renders dark mode toggle button', () => {
54
+ render(PatternsGallery);
55
+ const toggleButton = screen.getByRole('button', { name: /Dark/i });
56
+ expect(toggleButton).toBeInTheDocument();
57
+ });
58
+ });
59
+
60
+ describe('Dark Mode Toggle', () => {
61
+ it('starts in light mode', () => {
62
+ render(PatternsGallery);
63
+ const toggleButton = screen.getByRole('button', { name: /Dark/i });
64
+ expect(toggleButton).toHaveTextContent('🌙 Dark');
65
+ });
66
+
67
+ it('toggles to dark mode when clicked', async () => {
68
+ render(PatternsGallery);
69
+ const toggleButton = screen.getByRole('button', { name: /Dark/i });
70
+
71
+ await fireEvent.click(toggleButton);
72
+
73
+ expect(document.documentElement.classList.contains('dark')).toBe(true);
74
+ expect(toggleButton).toHaveTextContent('☀️ Light');
75
+ });
76
+
77
+ it('toggles back to light mode', async () => {
78
+ render(PatternsGallery);
79
+ const toggleButton = screen.getByRole('button', { name: /Dark/i });
80
+
81
+ // Toggle to dark
82
+ await fireEvent.click(toggleButton);
83
+ expect(document.documentElement.classList.contains('dark')).toBe(true);
84
+
85
+ // Toggle back to light
86
+ await fireEvent.click(toggleButton);
87
+ expect(document.documentElement.classList.contains('dark')).toBe(false);
88
+ expect(toggleButton).toHaveTextContent('🌙 Dark');
89
+ });
90
+ });
91
+
92
+ describe('Page Patterns Section', () => {
93
+ it('renders PageHeader section', () => {
94
+ render(PatternsGallery);
95
+ const heading = screen.getByText('PageHeader');
96
+ expect(heading).toBeInTheDocument();
97
+ });
98
+
99
+ it('renders PageHeader description', () => {
100
+ render(PatternsGallery);
101
+ const description = screen.getByText('Page title with optional actions and breadcrumb');
102
+ expect(description).toBeInTheDocument();
103
+ });
104
+
105
+ it('renders multiple PageHeader examples', () => {
106
+ render(PatternsGallery);
107
+ expect(screen.getByText('Page Title')).toBeInTheDocument();
108
+ expect(screen.getByText('With Subtitle')).toBeInTheDocument();
109
+ expect(screen.getByText('With Actions')).toBeInTheDocument();
110
+ });
111
+
112
+ it('renders SectionHeader section', () => {
113
+ render(PatternsGallery);
114
+ expect(screen.getByText('SectionHeader')).toBeInTheDocument();
115
+ expect(screen.getByText('Section dividers with optional description')).toBeInTheDocument();
116
+ });
117
+
118
+ it('renders SectionHeader examples', () => {
119
+ render(PatternsGallery);
120
+ expect(screen.getByText('Basic Section')).toBeInTheDocument();
121
+ expect(screen.getByText('With Description')).toBeInTheDocument();
122
+ expect(screen.getByText('With Action')).toBeInTheDocument();
123
+ });
124
+
125
+ it('renders PageLoader section', () => {
126
+ render(PatternsGallery);
127
+ expect(screen.getByText('PageLoader')).toBeInTheDocument();
128
+ expect(screen.getByText('Full-page loading indicator')).toBeInTheDocument();
129
+ });
130
+
131
+ it('shows PageLoader when button is clicked', async () => {
132
+ const { container } = render(PatternsGallery);
133
+ const button = screen.getByRole('button', { name: /Show PageLoader/i });
134
+
135
+ await fireEvent.click(button);
136
+
137
+ // PageLoader should be visible (contains a Spinner which has role="status")
138
+ await waitFor(() => {
139
+ const spinner = container.querySelector('[role="status"]');
140
+ expect(spinner).toBeInTheDocument();
141
+ }, { timeout: 100 });
142
+ });
143
+
144
+ it('hides PageLoader after 2 seconds', async () => {
145
+ const { container } = render(PatternsGallery);
146
+ const button = screen.getByRole('button', { name: /Show PageLoader/i });
147
+
148
+ await fireEvent.click(button);
149
+
150
+ // Wait for PageLoader to appear
151
+ await waitFor(() => {
152
+ const spinner = container.querySelector('[role="status"]');
153
+ expect(spinner).toBeInTheDocument();
154
+ }, { timeout: 100 });
155
+
156
+ // Wait for it to disappear
157
+ await waitFor(() => {
158
+ const spinner = container.querySelector('[role="status"]');
159
+ expect(spinner).not.toBeInTheDocument();
160
+ }, { timeout: 2500 });
161
+ });
162
+ });
163
+
164
+ describe('Form Patterns Section', () => {
165
+ it('renders FormSection heading', () => {
166
+ render(PatternsGallery);
167
+ expect(screen.getByText('FormSection')).toBeInTheDocument();
168
+ expect(screen.getByText('Grouped form fields with title and description')).toBeInTheDocument();
169
+ });
170
+
171
+ it('renders FormSection example', () => {
172
+ render(PatternsGallery);
173
+ expect(screen.getByText('Personal Information')).toBeInTheDocument();
174
+ expect(screen.getByText('Enter your personal details')).toBeInTheDocument();
175
+ });
176
+
177
+ it('renders FormGrid section', () => {
178
+ render(PatternsGallery);
179
+ expect(screen.getByText('FormGrid')).toBeInTheDocument();
180
+ expect(screen.getByText('Responsive grid layout for form fields')).toBeInTheDocument();
181
+ });
182
+
183
+ it('renders FormGrid with 2 columns', () => {
184
+ render(PatternsGallery);
185
+ expect(screen.getByPlaceholderText('John')).toBeInTheDocument();
186
+ expect(screen.getByPlaceholderText('Doe')).toBeInTheDocument();
187
+ });
188
+
189
+ it('renders FormGrid with 3 columns', () => {
190
+ render(PatternsGallery);
191
+ expect(screen.getByText('3 Columns')).toBeInTheDocument();
192
+ expect(screen.getByPlaceholderText('New York')).toBeInTheDocument();
193
+ expect(screen.getByPlaceholderText('NY')).toBeInTheDocument();
194
+ expect(screen.getByPlaceholderText('10001')).toBeInTheDocument();
195
+ });
196
+
197
+ it('renders FormActions section', () => {
198
+ render(PatternsGallery);
199
+ expect(screen.getByText('FormActions')).toBeInTheDocument();
200
+ expect(screen.getByText('Form submit/cancel button group')).toBeInTheDocument();
201
+ });
202
+
203
+ it('renders FormActions examples', () => {
204
+ render(PatternsGallery);
205
+ expect(screen.getByText('Default (right-aligned)')).toBeInTheDocument();
206
+ expect(screen.getByText('With loading state')).toBeInTheDocument();
207
+ expect(screen.getByText('Delete confirmation')).toBeInTheDocument();
208
+ });
209
+
210
+ it('renders FormValidationSummary section', () => {
211
+ render(PatternsGallery);
212
+ expect(screen.getByText('FormValidationSummary')).toBeInTheDocument();
213
+ expect(screen.getByText('Summary of form validation errors')).toBeInTheDocument();
214
+ });
215
+ });
216
+
217
+ describe('Data Patterns Section', () => {
218
+ it('renders DataTable section', () => {
219
+ render(PatternsGallery);
220
+ expect(screen.getByText('DataTable')).toBeInTheDocument();
221
+ expect(screen.getByText('Tabular data display with sorting and actions')).toBeInTheDocument();
222
+ });
223
+
224
+ it('renders DataTable with sample data', () => {
225
+ render(PatternsGallery);
226
+ expect(screen.getByText('John Doe')).toBeInTheDocument();
227
+ expect(screen.getByText('john@example.com')).toBeInTheDocument();
228
+ expect(screen.getByText('Jane Smith')).toBeInTheDocument();
229
+ expect(screen.getByText('jane@example.com')).toBeInTheDocument();
230
+ expect(screen.getByText('Bob Wilson')).toBeInTheDocument();
231
+ expect(screen.getByText('bob@example.com')).toBeInTheDocument();
232
+ });
233
+
234
+ it('renders DataTable status columns', () => {
235
+ render(PatternsGallery);
236
+ const statuses = screen.getAllByText(/Active|Pending|Inactive/);
237
+ expect(statuses.length).toBeGreaterThan(0);
238
+ });
239
+
240
+ it('renders DataList section', () => {
241
+ render(PatternsGallery);
242
+ expect(screen.getByText('DataList')).toBeInTheDocument();
243
+ expect(screen.getByText('Vertical list of items with primary/secondary text')).toBeInTheDocument();
244
+ });
245
+
246
+ it('renders DataList items', () => {
247
+ render(PatternsGallery);
248
+ expect(screen.getByText('Primary text 1')).toBeInTheDocument();
249
+ expect(screen.getByText('Secondary text')).toBeInTheDocument();
250
+ expect(screen.getByText('Primary text 2')).toBeInTheDocument();
251
+ expect(screen.getByText('More details here')).toBeInTheDocument();
252
+ expect(screen.getByText('Primary text 3')).toBeInTheDocument();
253
+ expect(screen.getByText('Additional info')).toBeInTheDocument();
254
+ });
255
+
256
+ it('renders DataGrid section', () => {
257
+ render(PatternsGallery);
258
+ expect(screen.getByText('DataGrid')).toBeInTheDocument();
259
+ expect(screen.getByText('Responsive grid of cards')).toBeInTheDocument();
260
+ });
261
+
262
+ it('renders DataGrid items', () => {
263
+ render(PatternsGallery);
264
+ expect(screen.getByText('Item 1')).toBeInTheDocument();
265
+ expect(screen.getByText('Description for item 1')).toBeInTheDocument();
266
+ expect(screen.getByText('Item 2')).toBeInTheDocument();
267
+ expect(screen.getByText('Description for item 2')).toBeInTheDocument();
268
+ expect(screen.getByText('Item 6')).toBeInTheDocument();
269
+ expect(screen.getByText('Description for item 6')).toBeInTheDocument();
270
+ });
271
+ });
272
+
273
+ describe('Layout Patterns Section', () => {
274
+ it('renders Stack section', () => {
275
+ render(PatternsGallery);
276
+ expect(screen.getByText('Stack')).toBeInTheDocument();
277
+ expect(screen.getByText('Vertical spacing utility')).toBeInTheDocument();
278
+ });
279
+
280
+ it('renders Stack items', () => {
281
+ render(PatternsGallery);
282
+ expect(screen.getByText('Stack Item 1')).toBeInTheDocument();
283
+ expect(screen.getByText('Stack Item 2')).toBeInTheDocument();
284
+ expect(screen.getByText('Stack Item 3')).toBeInTheDocument();
285
+ });
286
+
287
+ it('renders Grid section', () => {
288
+ render(PatternsGallery);
289
+ expect(screen.getByText('Grid')).toBeInTheDocument();
290
+ expect(screen.getByText('Responsive grid layout utility')).toBeInTheDocument();
291
+ });
292
+
293
+ it('renders Grid with 8 items', () => {
294
+ render(PatternsGallery);
295
+ for (let i = 1; i <= 8; i++) {
296
+ const items = screen.getAllByText(i.toString());
297
+ expect(items.length).toBeGreaterThan(0);
298
+ }
299
+ });
300
+
301
+ it('renders Sidebar section', () => {
302
+ render(PatternsGallery);
303
+ expect(screen.getByText('Sidebar')).toBeInTheDocument();
304
+ expect(screen.getByText('Sidebar + main content layout')).toBeInTheDocument();
305
+ });
306
+
307
+ it('renders Sidebar navigation', () => {
308
+ render(PatternsGallery);
309
+ expect(screen.getByText('Navigation')).toBeInTheDocument();
310
+ // These may appear in multiple places (Header and Sidebar)
311
+ expect(screen.getAllByText('Dashboard').length).toBeGreaterThan(0);
312
+ expect(screen.getAllByText('Settings').length).toBeGreaterThan(0);
313
+ expect(screen.getAllByText('Profile').length).toBeGreaterThan(0);
314
+ });
315
+
316
+ it('renders Sidebar main content', () => {
317
+ render(PatternsGallery);
318
+ expect(screen.getByText('Main content area')).toBeInTheDocument();
319
+ });
320
+ });
321
+
322
+ describe('Navigation Patterns Section', () => {
323
+ it('renders Header section', () => {
324
+ render(PatternsGallery);
325
+ expect(screen.getByText('Header')).toBeInTheDocument();
326
+ expect(screen.getByText('Top navigation bar with logo, nav links, and user menu')).toBeInTheDocument();
327
+ });
328
+
329
+ it('renders BottomNav section', () => {
330
+ render(PatternsGallery);
331
+ expect(screen.getByText('BottomNav')).toBeInTheDocument();
332
+ expect(screen.getByText('Mobile bottom navigation')).toBeInTheDocument();
333
+ });
334
+ });
335
+
336
+ describe('PageLayout Section', () => {
337
+ it('renders PageLayout section', () => {
338
+ render(PatternsGallery);
339
+ expect(screen.getByText('PageLayout')).toBeInTheDocument();
340
+ expect(screen.getByText('Complete page structure with breadcrumb, title, and content')).toBeInTheDocument();
341
+ });
342
+
343
+ it('renders PageLayout example', () => {
344
+ render(PatternsGallery);
345
+ expect(screen.getByText('PageLayout Demo')).toBeInTheDocument();
346
+ expect(screen.getByText('Example page layout')).toBeInTheDocument();
347
+ });
348
+
349
+ it('renders PageLayout content', () => {
350
+ render(PatternsGallery);
351
+ expect(screen.getByText(/Main page content goes here/)).toBeInTheDocument();
352
+ });
353
+ });
354
+
355
+ describe('Styling and Classes', () => {
356
+ it('applies light mode background by default', () => {
357
+ const { container } = render(PatternsGallery);
358
+ const mainDiv = container.querySelector('.min-h-screen');
359
+ expect(mainDiv).toHaveClass('bg-gray-50');
360
+ });
361
+
362
+ it('applies dark mode background when dark mode is toggled', async () => {
363
+ const { container } = render(PatternsGallery);
364
+ const toggleButton = screen.getByRole('button', { name: /Dark/i });
365
+
366
+ await fireEvent.click(toggleButton);
367
+
368
+ const mainDiv = container.querySelector('.min-h-screen');
369
+ expect(mainDiv).toHaveClass('bg-gray-900');
370
+ });
371
+
372
+ it('applies correct section styling in light mode', () => {
373
+ const { container } = render(PatternsGallery);
374
+ const sections = container.querySelectorAll('section');
375
+ expect(sections.length).toBeGreaterThan(0);
376
+ expect(sections[0]).toHaveClass('bg-white');
377
+ });
378
+ });
379
+
380
+ describe('Sample Data Rendering', () => {
381
+ it('renders all table rows', () => {
382
+ render(PatternsGallery);
383
+ expect(screen.getByText('John Doe')).toBeInTheDocument();
384
+ expect(screen.getByText('Jane Smith')).toBeInTheDocument();
385
+ expect(screen.getByText('Bob Wilson')).toBeInTheDocument();
386
+ });
387
+
388
+ it('renders all grid items', () => {
389
+ render(PatternsGallery);
390
+ for (let i = 1; i <= 6; i++) {
391
+ expect(screen.getByText(`Item ${i}`)).toBeInTheDocument();
392
+ expect(screen.getByText(`Description for item ${i}`)).toBeInTheDocument();
393
+ }
394
+ });
395
+
396
+ it('renders all list items', () => {
397
+ render(PatternsGallery);
398
+ expect(screen.getByText('Primary text 1')).toBeInTheDocument();
399
+ expect(screen.getByText('Primary text 2')).toBeInTheDocument();
400
+ expect(screen.getByText('Primary text 3')).toBeInTheDocument();
401
+ });
402
+ });
403
+
404
+ describe('Interactive Elements', () => {
405
+ it('renders action buttons in examples', () => {
406
+ render(PatternsGallery);
407
+ expect(screen.getByRole('button', { name: 'Add New' })).toBeInTheDocument();
408
+ });
409
+
410
+ it('renders View All link button', () => {
411
+ render(PatternsGallery);
412
+ expect(screen.getByRole('button', { name: 'View All' })).toBeInTheDocument();
413
+ });
414
+
415
+ it('renders form action buttons', () => {
416
+ render(PatternsGallery);
417
+ expect(screen.getByRole('button', { name: 'Save Changes' })).toBeInTheDocument();
418
+ const cancelButtons = screen.getAllByRole('button', { name: 'Cancel' });
419
+ expect(cancelButtons.length).toBeGreaterThan(0);
420
+ });
421
+
422
+ it('renders PageLoader trigger button', () => {
423
+ render(PatternsGallery);
424
+ expect(screen.getByRole('button', { name: /Show PageLoader/i })).toBeInTheDocument();
425
+ });
426
+ });
427
+
428
+ describe('Component Structure', () => {
429
+ it('renders all major sections', () => {
430
+ const { container } = render(PatternsGallery);
431
+ const sections = container.querySelectorAll('section');
432
+
433
+ // Should have multiple sections for all the pattern categories
434
+ expect(sections.length).toBeGreaterThanOrEqual(15);
435
+ });
436
+
437
+ it('renders main heading', () => {
438
+ render(PatternsGallery);
439
+ const h1 = screen.getByRole('heading', { level: 1, name: 'Patterns Gallery' });
440
+ expect(h1).toBeInTheDocument();
441
+ });
442
+
443
+ it('renders multiple section headings', () => {
444
+ render(PatternsGallery);
445
+ const h2s = screen.getAllByRole('heading', { level: 2 });
446
+ expect(h2s.length).toBeGreaterThan(10);
447
+ });
448
+
449
+ it('renders all pattern category headings', () => {
450
+ render(PatternsGallery);
451
+
452
+ // Page patterns
453
+ expect(screen.getByText('PageHeader')).toBeInTheDocument();
454
+ expect(screen.getByText('SectionHeader')).toBeInTheDocument();
455
+ expect(screen.getByText('PageLoader')).toBeInTheDocument();
456
+
457
+ // Form patterns
458
+ expect(screen.getByText('FormSection')).toBeInTheDocument();
459
+ expect(screen.getByText('FormGrid')).toBeInTheDocument();
460
+ expect(screen.getByText('FormActions')).toBeInTheDocument();
461
+ expect(screen.getByText('FormValidationSummary')).toBeInTheDocument();
462
+
463
+ // Data patterns
464
+ expect(screen.getByText('DataTable')).toBeInTheDocument();
465
+ expect(screen.getByText('DataList')).toBeInTheDocument();
466
+ expect(screen.getByText('DataGrid')).toBeInTheDocument();
467
+
468
+ // Layout patterns
469
+ expect(screen.getByText('Stack')).toBeInTheDocument();
470
+ expect(screen.getByText('Grid')).toBeInTheDocument();
471
+ expect(screen.getByText('Sidebar')).toBeInTheDocument();
472
+
473
+ // Navigation patterns
474
+ expect(screen.getByText('Header')).toBeInTheDocument();
475
+ expect(screen.getByText('BottomNav')).toBeInTheDocument();
476
+
477
+ // Page layout
478
+ expect(screen.getByText('PageLayout')).toBeInTheDocument();
479
+ });
480
+ });
481
+
482
+ describe('Accessibility', () => {
483
+ it('has accessible button labels', () => {
484
+ render(PatternsGallery);
485
+
486
+ // Dark mode toggle should have accessible text
487
+ const darkModeButton = screen.getByRole('button', { name: /Dark/i });
488
+ expect(darkModeButton).toBeInTheDocument();
489
+
490
+ // Action buttons
491
+ expect(screen.getByRole('button', { name: 'Add New' })).toBeInTheDocument();
492
+ expect(screen.getByRole('button', { name: 'View All' })).toBeInTheDocument();
493
+ });
494
+
495
+ it('has main h1 heading', () => {
496
+ const { container } = render(PatternsGallery);
497
+
498
+ // Should have at least one h1 (the main gallery heading, plus examples in PageHeader demos)
499
+ const h1s = container.querySelectorAll('h1');
500
+ expect(h1s.length).toBeGreaterThanOrEqual(1);
501
+
502
+ // The first h1 should be the main gallery heading
503
+ expect(h1s[0]).toHaveTextContent('Patterns Gallery');
504
+ });
505
+
506
+ it('has multiple h2 section headings', () => {
507
+ const { container } = render(PatternsGallery);
508
+
509
+ // Should have multiple h2s for sections
510
+ const h2s = container.querySelectorAll('h2');
511
+ expect(h2s.length).toBeGreaterThan(10);
512
+ });
513
+ });
514
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PrimitivesGallery.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimitivesGallery.spec.d.ts","sourceRoot":"","sources":["../../src/lib/stories/PrimitivesGallery.spec.js"],"names":[],"mappings":""}