@getmicdrop/svelte-components 5.5.1 → 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 (472) 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/Grid.svelte +4 -4
  34. package/dist/components/Layout/Section.spec.d.ts +2 -0
  35. package/dist/components/Layout/Section.spec.d.ts.map +1 -0
  36. package/dist/components/Layout/Section.spec.js +149 -0
  37. package/dist/components/Layout/Section.svelte +80 -80
  38. package/dist/components/Layout/Sidebar.spec.d.ts +2 -0
  39. package/dist/components/Layout/Sidebar.spec.d.ts.map +1 -0
  40. package/dist/components/Layout/Sidebar.spec.js +186 -0
  41. package/dist/components/Layout/Sidebar.svelte +108 -108
  42. package/dist/components/Layout/Stack.spec.js +3 -3
  43. package/dist/components/Layout/Stack.svelte +6 -6
  44. package/dist/constants/formOptions.spec.js +9 -5
  45. package/dist/constants/validation.js +91 -91
  46. package/dist/constants/validation.spec.js +64 -64
  47. package/dist/datetime/__tests__/format.test.js +1 -1
  48. package/dist/datetime/__tests__/parse.test.js +1 -1
  49. package/dist/datetime/__tests__/timezone.test.js +124 -2
  50. package/dist/datetime/parse.js +1 -1
  51. package/dist/forms/createFieldTracker.spec.d.ts +2 -0
  52. package/dist/forms/createFieldTracker.spec.d.ts.map +1 -0
  53. package/dist/forms/createFieldTracker.spec.js +343 -0
  54. package/dist/forms/createFormStore.spec.d.ts +2 -0
  55. package/dist/forms/createFormStore.spec.d.ts.map +1 -0
  56. package/dist/forms/createFormStore.spec.js +689 -0
  57. package/dist/forms/createFormStore.svelte.js +0 -1
  58. package/dist/index.d.ts +5 -112
  59. package/dist/index.js +40 -225
  60. package/dist/patterns/data/DataGrid.spec.d.ts +2 -0
  61. package/dist/patterns/data/DataGrid.spec.d.ts.map +1 -0
  62. package/dist/patterns/data/DataGrid.spec.js +159 -0
  63. package/dist/patterns/data/DataGrid.svelte +45 -45
  64. package/dist/patterns/data/DataList.spec.d.ts +2 -0
  65. package/dist/patterns/data/DataList.spec.d.ts.map +1 -0
  66. package/dist/patterns/data/DataList.spec.js +158 -0
  67. package/dist/patterns/data/DataList.svelte +24 -24
  68. package/dist/patterns/data/DataTable.spec.d.ts +2 -0
  69. package/dist/patterns/data/DataTable.spec.d.ts.map +1 -0
  70. package/dist/patterns/data/DataTable.spec.js +196 -0
  71. package/dist/patterns/data/DataTable.svelte +36 -36
  72. package/dist/patterns/forms/FormActions.spec.js +95 -88
  73. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  74. package/dist/patterns/forms/FormActions.svelte +46 -46
  75. package/dist/patterns/forms/FormGrid.spec.d.ts +2 -0
  76. package/dist/patterns/forms/FormGrid.spec.d.ts.map +1 -0
  77. package/dist/patterns/forms/FormGrid.spec.js +125 -0
  78. package/dist/patterns/forms/FormGrid.svelte +33 -33
  79. package/dist/patterns/forms/FormSection.spec.d.ts +2 -0
  80. package/dist/patterns/forms/FormSection.spec.d.ts.map +1 -0
  81. package/dist/patterns/forms/FormSection.spec.js +153 -0
  82. package/dist/patterns/forms/FormSection.svelte +32 -32
  83. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  84. package/dist/patterns/forms/FormValidationSummary.svelte +33 -33
  85. package/dist/patterns/layout/Sidebar.spec.d.ts +2 -0
  86. package/dist/patterns/layout/Sidebar.spec.d.ts.map +1 -0
  87. package/dist/patterns/layout/Sidebar.spec.js +159 -0
  88. package/dist/patterns/layout/Sidebar.svelte +39 -39
  89. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  90. package/dist/patterns/navigation/BottomNav.svelte +20 -20
  91. package/dist/patterns/navigation/Header.spec.js +33 -24
  92. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  93. package/dist/patterns/navigation/Header.svelte +193 -193
  94. package/dist/patterns/page/PageHeader.spec.d.ts +2 -0
  95. package/dist/patterns/page/PageHeader.spec.d.ts.map +1 -0
  96. package/dist/patterns/page/PageHeader.spec.js +167 -0
  97. package/dist/patterns/page/PageHeader.svelte +18 -18
  98. package/dist/patterns/page/PageLayout.spec.d.ts +2 -0
  99. package/dist/patterns/page/PageLayout.spec.d.ts.map +1 -0
  100. package/dist/patterns/page/PageLayout.spec.js +145 -0
  101. package/dist/patterns/page/PageLayout.svelte +40 -40
  102. package/dist/patterns/page/PageLoader.spec.js +57 -54
  103. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  104. package/dist/patterns/page/PageLoader.svelte +24 -24
  105. package/dist/patterns/page/SectionHeader.spec.d.ts +2 -0
  106. package/dist/patterns/page/SectionHeader.spec.d.ts.map +1 -0
  107. package/dist/patterns/page/SectionHeader.spec.js +197 -0
  108. package/dist/patterns/page/SectionHeader.svelte +29 -29
  109. package/dist/presets/badges.js +112 -112
  110. package/dist/presets/badges.spec.d.ts +2 -0
  111. package/dist/presets/badges.spec.d.ts.map +1 -0
  112. package/dist/presets/badges.spec.js +172 -0
  113. package/dist/presets/buttons.js +76 -76
  114. package/dist/presets/buttons.spec.d.ts +2 -0
  115. package/dist/presets/buttons.spec.d.ts.map +1 -0
  116. package/dist/presets/buttons.spec.js +135 -0
  117. package/dist/presets/index.js +9 -9
  118. package/dist/primitives/Accordion/Accordion.spec.d.ts +2 -0
  119. package/dist/primitives/Accordion/Accordion.spec.d.ts.map +1 -0
  120. package/dist/primitives/Accordion/Accordion.spec.js +83 -0
  121. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  122. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  123. package/dist/primitives/Accordion/AccordionItem.spec.d.ts +2 -0
  124. package/dist/primitives/Accordion/AccordionItem.spec.d.ts.map +1 -0
  125. package/dist/primitives/Accordion/AccordionItem.spec.js +661 -0
  126. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  127. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -0
  128. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +35 -0
  129. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -0
  130. package/dist/primitives/Alert/Alert.spec.js +173 -170
  131. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  132. package/dist/primitives/Alert/Alert.svelte +27 -27
  133. package/dist/primitives/Avatar/Avatar.spec.d.ts +2 -0
  134. package/dist/primitives/Avatar/Avatar.spec.d.ts.map +1 -0
  135. package/dist/primitives/Avatar/Avatar.spec.js +211 -0
  136. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  137. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  138. package/dist/primitives/Badges/Badge.spec.js +144 -103
  139. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  140. package/dist/primitives/Badges/Badge.svelte +79 -79
  141. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -127
  142. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  143. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  144. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte +13 -0
  145. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts +7 -0
  146. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts.map +1 -0
  147. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -120
  148. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  149. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  150. package/dist/primitives/Button/Button.spec.js +223 -211
  151. package/dist/primitives/Button/Button.stories.svelte +76 -76
  152. package/dist/primitives/Button/Button.svelte +270 -270
  153. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -48
  154. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  155. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts +2 -0
  156. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts.map +1 -0
  157. package/dist/primitives/Button/ButtonVariantShowcase.spec.js +202 -0
  158. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  159. package/dist/primitives/Card.spec.js +49 -49
  160. package/dist/primitives/Card.stories.svelte +22 -22
  161. package/dist/primitives/Card.svelte +28 -28
  162. package/dist/primitives/Checkbox/Checkbox.spec.d.ts +2 -0
  163. package/dist/primitives/Checkbox/Checkbox.spec.d.ts.map +1 -0
  164. package/dist/primitives/Checkbox/Checkbox.spec.js +252 -0
  165. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  166. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  167. package/dist/primitives/DarkModeToggle.spec.js +390 -357
  168. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  169. package/dist/primitives/DarkModeToggle.svelte +136 -136
  170. package/dist/primitives/Drawer/Drawer.spec.d.ts +2 -0
  171. package/dist/primitives/Drawer/Drawer.spec.d.ts.map +1 -0
  172. package/dist/primitives/Drawer/Drawer.spec.js +212 -0
  173. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  174. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  175. package/dist/primitives/Dropdown/Dropdown.spec.d.ts +2 -0
  176. package/dist/primitives/Dropdown/Dropdown.spec.d.ts.map +1 -0
  177. package/dist/primitives/Dropdown/Dropdown.spec.js +366 -0
  178. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  179. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  180. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts +2 -0
  181. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts.map +1 -0
  182. package/dist/primitives/Dropdown/DropdownItem.spec.js +182 -0
  183. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  184. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  185. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  186. package/dist/primitives/Icons/Availability.svelte +14 -14
  187. package/dist/primitives/Icons/Back.svelte +14 -14
  188. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  189. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  190. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  191. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  192. package/dist/primitives/Icons/Copy.svelte +15 -15
  193. package/dist/primitives/Icons/Cross.svelte +5 -5
  194. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  195. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  196. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  197. package/dist/primitives/Icons/Home.svelte +15 -15
  198. package/dist/primitives/Icons/Icon.spec.js +169 -169
  199. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  200. package/dist/primitives/Icons/Icon.svelte +52 -52
  201. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  202. package/dist/primitives/Icons/Info.svelte +7 -7
  203. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  204. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  205. package/dist/primitives/Icons/Message.svelte +15 -15
  206. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  207. package/dist/primitives/Icons/More.svelte +21 -21
  208. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  209. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  210. package/dist/primitives/Icons/Notification.svelte +14 -14
  211. package/dist/primitives/Icons/Payment.svelte +14 -14
  212. package/dist/primitives/Icons/Profile.svelte +21 -21
  213. package/dist/primitives/Icons/Reload.svelte +29 -29
  214. package/dist/primitives/Icons/Shows.svelte +21 -21
  215. package/dist/primitives/Icons/Signout.svelte +21 -21
  216. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  217. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  218. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  219. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  220. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  221. package/dist/primitives/Icons/iconTestUtils.spec.d.ts +2 -0
  222. package/dist/primitives/Icons/iconTestUtils.spec.d.ts.map +1 -0
  223. package/dist/primitives/Icons/iconTestUtils.spec.js +235 -0
  224. package/dist/primitives/Input/Input.spec.js +573 -573
  225. package/dist/primitives/Input/Input.stories.svelte +139 -139
  226. package/dist/primitives/Input/Input.svelte +384 -397
  227. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  228. package/dist/primitives/Input/Select.spec.js +212 -218
  229. package/dist/primitives/Input/Select.stories.svelte +112 -112
  230. package/dist/primitives/Input/Select.svelte +128 -128
  231. package/dist/primitives/Input/Textarea.spec.d.ts +2 -0
  232. package/dist/primitives/Input/Textarea.spec.d.ts.map +1 -0
  233. package/dist/primitives/Input/Textarea.spec.js +255 -0
  234. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  235. package/dist/primitives/Input/Textarea.svelte +35 -35
  236. package/dist/primitives/Label/Label.spec.d.ts +2 -0
  237. package/dist/primitives/Label/Label.spec.d.ts.map +1 -0
  238. package/dist/primitives/Label/Label.spec.js +157 -0
  239. package/dist/primitives/Label/Label.svelte +37 -37
  240. package/dist/primitives/Modal/Modal.spec.js +99 -95
  241. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  242. package/dist/primitives/Modal/Modal.svelte +158 -158
  243. package/dist/primitives/Modal/ModalTestWrapper.svelte +65 -0
  244. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts +23 -0
  245. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts.map +1 -0
  246. package/dist/primitives/NumberInput/NumberInput.spec.d.ts +2 -0
  247. package/dist/primitives/NumberInput/NumberInput.spec.d.ts.map +1 -0
  248. package/dist/primitives/NumberInput/NumberInput.spec.js +235 -0
  249. package/dist/primitives/NumberInput/NumberInput.svelte +106 -106
  250. package/dist/primitives/Pagination/Pagination.spec.d.ts +2 -0
  251. package/dist/primitives/Pagination/Pagination.spec.d.ts.map +1 -0
  252. package/dist/primitives/Pagination/Pagination.spec.js +266 -0
  253. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  254. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  255. package/dist/primitives/Radio/Radio.spec.d.ts +2 -0
  256. package/dist/primitives/Radio/Radio.spec.d.ts.map +1 -0
  257. package/dist/primitives/Radio/Radio.spec.js +206 -0
  258. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  259. package/dist/primitives/Radio/Radio.svelte +67 -67
  260. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts +2 -0
  261. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts.map +1 -0
  262. package/dist/primitives/Skeleton/CardPlaceholder.spec.js +156 -0
  263. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  264. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts +2 -0
  265. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts.map +1 -0
  266. package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +120 -0
  267. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  268. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts +2 -0
  269. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts.map +1 -0
  270. package/dist/primitives/Skeleton/ListPlaceholder.spec.js +220 -0
  271. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  272. package/dist/primitives/Skeleton/Skeleton.spec.d.ts +2 -0
  273. package/dist/primitives/Skeleton/Skeleton.spec.d.ts.map +1 -0
  274. package/dist/primitives/Skeleton/Skeleton.spec.js +173 -0
  275. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  276. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  277. package/dist/primitives/Spinner/Spinner.spec.js +71 -75
  278. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  279. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  280. package/dist/primitives/Tabs/TabItem.spec.d.ts +2 -0
  281. package/dist/primitives/Tabs/TabItem.spec.d.ts.map +1 -0
  282. package/dist/primitives/Tabs/TabItem.spec.js +130 -0
  283. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  284. package/dist/primitives/Tabs/Tabs.spec.d.ts +2 -0
  285. package/dist/primitives/Tabs/Tabs.spec.d.ts.map +1 -0
  286. package/dist/primitives/Tabs/Tabs.spec.js +295 -0
  287. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  288. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  289. package/dist/primitives/Tabs/TabsWithItems.test.svelte +18 -0
  290. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts +16 -0
  291. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts.map +1 -0
  292. package/dist/primitives/Toggle.spec.js +143 -127
  293. package/dist/primitives/Toggle.stories.svelte +92 -92
  294. package/dist/primitives/Toggle.svelte +71 -71
  295. package/dist/primitives/Typography/Typography.spec.d.ts +2 -0
  296. package/dist/primitives/Typography/Typography.spec.d.ts.map +1 -0
  297. package/dist/primitives/Typography/Typography.spec.js +183 -0
  298. package/dist/primitives/Typography/Typography.svelte +53 -53
  299. package/dist/primitives/ValidationError.spec.js +103 -103
  300. package/dist/primitives/ValidationError.stories.svelte +69 -69
  301. package/dist/primitives/ValidationError.svelte +29 -29
  302. package/dist/primitives/index.d.ts +1 -0
  303. package/dist/primitives/index.js +3 -0
  304. package/dist/recipes/CropImage/CropImage.spec.js +208 -216
  305. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  306. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  307. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts +2 -0
  308. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts.map +1 -0
  309. package/dist/recipes/ImageUploader/ImageUploader.spec.js +1351 -0
  310. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  311. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  312. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts +2 -0
  313. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts.map +1 -0
  314. package/dist/recipes/SuperLogin/SuperLogin.spec.js +1436 -0
  315. package/dist/recipes/SuperLogin/SuperLogin.svelte +7 -6
  316. package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
  317. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  318. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts +2 -0
  319. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts.map +1 -0
  320. package/dist/recipes/feedback/EmptyState/EmptyState.spec.js +202 -0
  321. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  322. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  323. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  324. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  325. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -129
  326. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  327. package/dist/recipes/fields/CheckboxField.spec.d.ts +2 -0
  328. package/dist/recipes/fields/CheckboxField.spec.d.ts.map +1 -0
  329. package/dist/recipes/fields/CheckboxField.spec.js +135 -0
  330. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  331. package/dist/recipes/fields/FormField.spec.d.ts +2 -0
  332. package/dist/recipes/fields/FormField.spec.d.ts.map +1 -0
  333. package/dist/recipes/fields/FormField.spec.js +159 -0
  334. package/dist/recipes/fields/FormField.svelte +58 -58
  335. package/dist/recipes/fields/RadioGroup.spec.d.ts +2 -0
  336. package/dist/recipes/fields/RadioGroup.spec.d.ts.map +1 -0
  337. package/dist/recipes/fields/RadioGroup.spec.js +199 -0
  338. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  339. package/dist/recipes/fields/SelectField.spec.d.ts +2 -0
  340. package/dist/recipes/fields/SelectField.spec.d.ts.map +1 -0
  341. package/dist/recipes/fields/SelectField.spec.js +188 -0
  342. package/dist/recipes/fields/SelectField.svelte +80 -80
  343. package/dist/recipes/fields/TextareaField.spec.d.ts +2 -0
  344. package/dist/recipes/fields/TextareaField.spec.d.ts.map +1 -0
  345. package/dist/recipes/fields/TextareaField.spec.js +205 -0
  346. package/dist/recipes/fields/TextareaField.svelte +97 -97
  347. package/dist/recipes/fields/ToggleField.spec.d.ts +2 -0
  348. package/dist/recipes/fields/ToggleField.spec.d.ts.map +1 -0
  349. package/dist/recipes/fields/ToggleField.spec.js +153 -0
  350. package/dist/recipes/fields/ToggleField.svelte +60 -60
  351. package/dist/recipes/fields/index.js +7 -7
  352. package/dist/recipes/inputs/MultiSelect.spec.js +258 -257
  353. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  354. package/dist/recipes/inputs/MultiSelect.svelte +256 -249
  355. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +2 -0
  356. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  357. package/dist/recipes/inputs/OTPInput.spec.js +251 -238
  358. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  359. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  360. package/dist/recipes/inputs/PasswordInput.spec.d.ts +2 -0
  361. package/dist/recipes/inputs/PasswordInput.spec.d.ts.map +1 -0
  362. package/dist/recipes/inputs/PasswordInput.spec.js +410 -0
  363. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  364. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +245 -165
  365. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +43 -43
  366. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +71 -0
  367. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts +9 -0
  368. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts.map +1 -0
  369. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +1139 -193
  370. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  371. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +326 -326
  372. package/dist/recipes/inputs/Search.spec.d.ts +2 -0
  373. package/dist/recipes/inputs/Search.spec.d.ts.map +1 -0
  374. package/dist/recipes/inputs/Search.spec.js +177 -0
  375. package/dist/recipes/inputs/Search.svelte +37 -37
  376. package/dist/recipes/inputs/SelectDropdown.spec.d.ts +2 -0
  377. package/dist/recipes/inputs/SelectDropdown.spec.d.ts.map +1 -0
  378. package/dist/recipes/inputs/SelectDropdown.spec.js +512 -0
  379. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  380. package/dist/recipes/modals/AlertModal.spec.d.ts +2 -0
  381. package/dist/recipes/modals/AlertModal.spec.d.ts.map +1 -0
  382. package/dist/recipes/modals/AlertModal.spec.js +432 -0
  383. package/dist/recipes/modals/AlertModal.svelte +130 -130
  384. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -191
  385. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  386. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  387. package/dist/recipes/modals/InputModal.spec.d.ts +2 -0
  388. package/dist/recipes/modals/InputModal.spec.d.ts.map +1 -0
  389. package/dist/recipes/modals/InputModal.spec.js +872 -0
  390. package/dist/recipes/modals/InputModal.svelte +182 -182
  391. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  392. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  393. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts +2 -0
  394. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts.map +1 -0
  395. package/dist/recipes/modals/ModalTestWrapper.spec.js +502 -0
  396. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  397. package/dist/recipes/modals/StatusModal.spec.d.ts +2 -0
  398. package/dist/recipes/modals/StatusModal.spec.d.ts.map +1 -0
  399. package/dist/recipes/modals/StatusModal.spec.js +599 -0
  400. package/dist/recipes/modals/StatusModal.svelte +206 -206
  401. package/dist/services/EventService.js +75 -75
  402. package/dist/services/EventService.spec.js +217 -217
  403. package/dist/services/ShowService.spec.js +345 -342
  404. package/dist/stores/auth.js +36 -36
  405. package/dist/stores/auth.spec.js +139 -139
  406. package/dist/stores/toaster.js +13 -13
  407. package/dist/stories/ButtonAuditDashboard.spec.d.ts +2 -0
  408. package/dist/stories/ButtonAuditDashboard.spec.d.ts.map +1 -0
  409. package/dist/stories/ButtonAuditDashboard.spec.js +913 -0
  410. package/dist/stories/ButtonAuditReview.spec.d.ts +2 -0
  411. package/dist/stories/ButtonAuditReview.spec.d.ts.map +1 -0
  412. package/dist/stories/ButtonAuditReview.spec.js +422 -0
  413. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  414. package/dist/stories/ButtonAuditReview.svelte +427 -427
  415. package/dist/stories/ButtonGridView.spec.d.ts +2 -0
  416. package/dist/stories/ButtonGridView.spec.d.ts.map +1 -0
  417. package/dist/stories/ButtonGridView.spec.js +667 -0
  418. package/dist/stories/ButtonShowcase.spec.d.ts +2 -0
  419. package/dist/stories/ButtonShowcase.spec.d.ts.map +1 -0
  420. package/dist/stories/ButtonShowcase.spec.js +499 -0
  421. package/dist/stories/PatternsGallery.spec.d.ts +2 -0
  422. package/dist/stories/PatternsGallery.spec.d.ts.map +1 -0
  423. package/dist/stories/PatternsGallery.spec.js +514 -0
  424. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  425. package/dist/stories/PatternsGallery.svelte +206 -206
  426. package/dist/stories/PrimitivesGallery.spec.d.ts +2 -0
  427. package/dist/stories/PrimitivesGallery.spec.d.ts.map +1 -0
  428. package/dist/stories/PrimitivesGallery.spec.js +813 -0
  429. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  430. package/dist/stories/PrimitivesGallery.svelte +725 -725
  431. package/dist/stories/RecipesGallery.spec.d.ts +2 -0
  432. package/dist/stories/RecipesGallery.spec.d.ts.map +1 -0
  433. package/dist/stories/RecipesGallery.spec.js +299 -0
  434. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  435. package/dist/stories/RecipesGallery.svelte +271 -271
  436. package/dist/stories/button-audit-manifest.json +11186 -11186
  437. package/dist/stripe/useStripeTheme.spec.d.ts +2 -0
  438. package/dist/stripe/useStripeTheme.spec.d.ts.map +1 -0
  439. package/dist/stripe/useStripeTheme.spec.js +793 -0
  440. package/dist/tailwind/preset.cjs +82 -82
  441. package/dist/telemetry.d.ts.map +1 -1
  442. package/dist/telemetry.js +6 -5
  443. package/dist/telemetry.spec.js +495 -12
  444. package/dist/tokens/__tests__/colors.test.d.ts +2 -0
  445. package/dist/tokens/__tests__/colors.test.d.ts.map +1 -0
  446. package/dist/tokens/__tests__/colors.test.js +152 -0
  447. package/dist/tokens/__tests__/radius.test.d.ts +2 -0
  448. package/dist/tokens/__tests__/radius.test.d.ts.map +1 -0
  449. package/dist/tokens/__tests__/radius.test.js +118 -0
  450. package/dist/tokens/__tests__/shadows.test.d.ts +2 -0
  451. package/dist/tokens/__tests__/shadows.test.d.ts.map +1 -0
  452. package/dist/tokens/__tests__/shadows.test.js +105 -0
  453. package/dist/tokens/__tests__/spacing.test.js +11 -8
  454. package/dist/tokens/__tests__/typography.test.d.ts +2 -0
  455. package/dist/tokens/__tests__/typography.test.d.ts.map +1 -0
  456. package/dist/tokens/__tests__/typography.test.js +156 -0
  457. package/dist/tokens/__tests__/z-index.test.d.ts +2 -0
  458. package/dist/tokens/__tests__/z-index.test.d.ts.map +1 -0
  459. package/dist/tokens/__tests__/z-index.test.js +121 -0
  460. package/dist/tokens/tokens.css +87 -87
  461. package/dist/utils/apiConfig.spec.js +102 -1
  462. package/dist/utils/formatters.spec.d.ts +2 -0
  463. package/dist/utils/formatters.spec.d.ts.map +1 -0
  464. package/dist/utils/formatters.spec.js +82 -0
  465. package/dist/utils/transitions.d.ts +24 -0
  466. package/dist/utils/transitions.d.ts.map +1 -0
  467. package/dist/utils/transitions.js +62 -0
  468. package/dist/utils/transitions.spec.d.ts +2 -0
  469. package/dist/utils/transitions.spec.d.ts.map +1 -0
  470. package/dist/utils/transitions.spec.js +130 -0
  471. package/dist/utils/utils.js +354 -354
  472. package/package.json +288 -283
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ButtonGridView.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonGridView.spec.d.ts","sourceRoot":"","sources":["../../src/lib/stories/ButtonGridView.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,667 @@
1
+ import { render, screen, fireEvent } from '@testing-library/svelte';
2
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
3
+ import ButtonGridView from './ButtonGridView.svelte';
4
+
5
+ // Mock manifest data
6
+ vi.mock('./button-audit-manifest.json', () => ({
7
+ default: {
8
+ generated: '2025-01-06T00:00:00.000Z',
9
+ totalButtons: 10,
10
+ categories: {
11
+ 'Test Category': [
12
+ {
13
+ route: 'test-route',
14
+ file: 'components/TestComponent/TestComponent.svelte',
15
+ fullPath: '/Users/test/repos/micdrop-frontend/src/components/TestComponent/TestComponent.svelte',
16
+ buttons: [
17
+ {
18
+ line: 10,
19
+ variant: 'blue-solid',
20
+ size: 'md',
21
+ loading: false,
22
+ disabled: false,
23
+ danger: false,
24
+ deemphasized: false,
25
+ text: 'Test Button 1'
26
+ },
27
+ {
28
+ line: 20,
29
+ variant: 'gray-outline',
30
+ size: 'lg',
31
+ loading: false,
32
+ disabled: false,
33
+ danger: false,
34
+ deemphasized: false,
35
+ text: 'Test Button 2'
36
+ },
37
+ {
38
+ line: 30,
39
+ variant: 'blue-outline',
40
+ size: 'sm',
41
+ loading: true,
42
+ disabled: false,
43
+ danger: false,
44
+ deemphasized: false,
45
+ text: 'Loading Button'
46
+ },
47
+ {
48
+ line: 40,
49
+ variant: 'red-solid',
50
+ size: 'xs',
51
+ loading: false,
52
+ disabled: true,
53
+ danger: false,
54
+ deemphasized: false,
55
+ text: 'Disabled Button'
56
+ },
57
+ {
58
+ line: 50,
59
+ variant: 'red-outline',
60
+ size: 'md',
61
+ loading: false,
62
+ disabled: false,
63
+ danger: true,
64
+ deemphasized: false,
65
+ text: 'Danger Button'
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ route: 'another-route',
71
+ file: 'components/AnotherComponent/Another.svelte',
72
+ fullPath: '/Users/test/repos/micdrop-frontend/src/components/AnotherComponent/Another.svelte',
73
+ buttons: [
74
+ {
75
+ line: 15,
76
+ variant: 'green-solid',
77
+ size: 'md',
78
+ loading: false,
79
+ disabled: false,
80
+ danger: false,
81
+ deemphasized: true,
82
+ text: 'Green Button'
83
+ },
84
+ {
85
+ line: 25,
86
+ variant: 'icon',
87
+ size: 'xs',
88
+ loading: false,
89
+ disabled: false,
90
+ danger: false,
91
+ deemphasized: false,
92
+ text: '...'
93
+ },
94
+ {
95
+ line: 35,
96
+ variant: 'ghost',
97
+ size: 'md',
98
+ loading: false,
99
+ disabled: false,
100
+ danger: false,
101
+ deemphasized: false,
102
+ text: 'Ghost Button'
103
+ },
104
+ {
105
+ line: 45,
106
+ variant: 'gray-text',
107
+ size: 'sm',
108
+ loading: false,
109
+ disabled: false,
110
+ danger: false,
111
+ deemphasized: false,
112
+ text: 'This is a very long button text that should be truncated'
113
+ },
114
+ {
115
+ line: 55,
116
+ variant: 'blue-solid',
117
+ size: 'md',
118
+ loading: false,
119
+ disabled: false,
120
+ danger: false,
121
+ deemphasized: false,
122
+ text: '(no text)'
123
+ }
124
+ ]
125
+ }
126
+ ]
127
+ }
128
+ }
129
+ }));
130
+
131
+ describe('ButtonGridView Component', () => {
132
+ let classListToggleSpy;
133
+
134
+ beforeEach(() => {
135
+ // Mock classList.toggle on document.documentElement
136
+ classListToggleSpy = vi.spyOn(document.documentElement.classList, 'toggle');
137
+ });
138
+
139
+ afterEach(() => {
140
+ // Restore spy
141
+ classListToggleSpy?.mockRestore();
142
+ });
143
+
144
+ describe('Initial Render', () => {
145
+ it('renders the component', () => {
146
+ render(ButtonGridView);
147
+ expect(screen.getByText('Button Grid View')).toBeInTheDocument();
148
+ });
149
+
150
+ it('displays correct button count', () => {
151
+ render(ButtonGridView);
152
+ expect(screen.getByText(/Showing 10 of 10 buttons/i)).toBeInTheDocument();
153
+ });
154
+
155
+ it('renders all buttons from manifest', () => {
156
+ const { container } = render(ButtonGridView);
157
+ // Each button is in a card with specific structure
158
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
159
+ expect(buttonCards.length).toBe(10);
160
+ });
161
+
162
+ it('renders header with sticky positioning', () => {
163
+ const { container } = render(ButtonGridView);
164
+ const header = container.querySelector('.sticky');
165
+ expect(header).toBeInTheDocument();
166
+ expect(header).toHaveClass('top-0', 'z-50');
167
+ });
168
+
169
+ it('renders grid with responsive columns', () => {
170
+ const { container } = render(ButtonGridView);
171
+ const grid = container.querySelector('.grid');
172
+ expect(grid).toHaveClass(
173
+ 'grid-cols-2',
174
+ 'sm:grid-cols-3',
175
+ 'md:grid-cols-4',
176
+ 'lg:grid-cols-5',
177
+ 'xl:grid-cols-6',
178
+ '2xl:grid-cols-8'
179
+ );
180
+ });
181
+ });
182
+
183
+ describe('Dark Mode Toggle', () => {
184
+ it('renders dark mode toggle button', () => {
185
+ render(ButtonGridView);
186
+ const toggleButton = screen.getByRole('button', { name: /☀️/i });
187
+ expect(toggleButton).toBeInTheDocument();
188
+ });
189
+
190
+ it('toggles dark mode when clicked', async () => {
191
+ render(ButtonGridView);
192
+ const toggleButton = screen.getByRole('button', { name: /☀️/i });
193
+
194
+ await fireEvent.click(toggleButton);
195
+
196
+ expect(classListToggleSpy).toHaveBeenCalledWith('dark', true);
197
+ });
198
+
199
+ it('changes icon after toggle', async () => {
200
+ render(ButtonGridView);
201
+ let toggleButton = screen.getByRole('button', { name: /☀️/i });
202
+
203
+ await fireEvent.click(toggleButton);
204
+
205
+ toggleButton = screen.getByRole('button', { name: /🌙/i });
206
+ expect(toggleButton).toBeInTheDocument();
207
+ });
208
+
209
+ it('applies correct background class when dark', async () => {
210
+ render(ButtonGridView);
211
+ const toggleButton = screen.getByRole('button', { name: /☀️/i });
212
+
213
+ await fireEvent.click(toggleButton);
214
+
215
+ const darkButton = screen.getByRole('button', { name: /🌙/i });
216
+ expect(darkButton).toHaveClass('bg-gray-800', 'text-white');
217
+ });
218
+ });
219
+
220
+ describe('Search Functionality', () => {
221
+ it('renders search input', () => {
222
+ render(ButtonGridView);
223
+ const searchInput = screen.getByPlaceholderText('Search...');
224
+ expect(searchInput).toBeInTheDocument();
225
+ });
226
+
227
+ it('filters buttons by text', async () => {
228
+ const { container } = render(ButtonGridView);
229
+ const searchInput = screen.getByPlaceholderText('Search...');
230
+
231
+ await fireEvent.input(searchInput, { target: { value: 'Green' } });
232
+
233
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
234
+ expect(buttonCards.length).toBe(1);
235
+ });
236
+
237
+ it('filters buttons by file name', async () => {
238
+ const { container } = render(ButtonGridView);
239
+ const searchInput = screen.getByPlaceholderText('Search...');
240
+
241
+ await fireEvent.input(searchInput, { target: { value: 'AnotherComponent' } });
242
+
243
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
244
+ expect(buttonCards.length).toBe(5);
245
+ });
246
+
247
+ it('filters buttons by variant', async () => {
248
+ const { container } = render(ButtonGridView);
249
+ const searchInput = screen.getByPlaceholderText('Search...');
250
+
251
+ await fireEvent.input(searchInput, { target: { value: 'ghost' } });
252
+
253
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
254
+ expect(buttonCards.length).toBe(1);
255
+ });
256
+
257
+ it('is case insensitive', async () => {
258
+ const { container } = render(ButtonGridView);
259
+ const searchInput = screen.getByPlaceholderText('Search...');
260
+
261
+ await fireEvent.input(searchInput, { target: { value: 'GREEN' } });
262
+
263
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
264
+ expect(buttonCards.length).toBe(1);
265
+ });
266
+
267
+ it('updates button count when filtering', async () => {
268
+ render(ButtonGridView);
269
+ const searchInput = screen.getByPlaceholderText('Search...');
270
+
271
+ await fireEvent.input(searchInput, { target: { value: 'Green' } });
272
+
273
+ expect(screen.getByText(/Showing 1 of 10 buttons/i)).toBeInTheDocument();
274
+ });
275
+
276
+ it('shows all buttons when search is cleared', async () => {
277
+ const { container } = render(ButtonGridView);
278
+ const searchInput = screen.getByPlaceholderText('Search...');
279
+
280
+ await fireEvent.input(searchInput, { target: { value: 'Green' } });
281
+ await fireEvent.input(searchInput, { target: { value: '' } });
282
+
283
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
284
+ expect(buttonCards.length).toBe(10);
285
+ });
286
+ });
287
+
288
+ describe('Variant Filter', () => {
289
+ it('renders variant filter dropdown', () => {
290
+ const { container } = render(ButtonGridView);
291
+ const selects = container.querySelectorAll('select');
292
+ expect(selects.length).toBe(2);
293
+ expect(selects[0]).toBeInTheDocument();
294
+ });
295
+
296
+ it('shows all unique variants as options', () => {
297
+ const { container } = render(ButtonGridView);
298
+ const variantSelect = container.querySelectorAll('select')[0];
299
+ const options = variantSelect.querySelectorAll('option');
300
+
301
+ // Should have "All Variants" plus unique variants
302
+ expect(options.length).toBeGreaterThan(1);
303
+ expect(options[0]).toHaveTextContent('All Variants');
304
+ });
305
+
306
+ it('filters buttons by selected variant', async () => {
307
+ const { container } = render(ButtonGridView);
308
+ const variantSelect = container.querySelectorAll('select')[0];
309
+
310
+ await fireEvent.change(variantSelect, { target: { value: 'blue-solid' } });
311
+
312
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
313
+ expect(buttonCards.length).toBe(2);
314
+ });
315
+
316
+ it('updates button count when filtering by variant', async () => {
317
+ const { container } = render(ButtonGridView);
318
+ const variantSelect = container.querySelectorAll('select')[0];
319
+
320
+ await fireEvent.change(variantSelect, { target: { value: 'icon' } });
321
+
322
+ expect(screen.getByText(/Showing 1 of 10 buttons/i)).toBeInTheDocument();
323
+ });
324
+ });
325
+
326
+ describe('Size Filter', () => {
327
+ it('renders size filter dropdown', () => {
328
+ const { container } = render(ButtonGridView);
329
+ const sizeSelects = container.querySelectorAll('select');
330
+ expect(sizeSelects.length).toBe(2); // variant and size dropdowns
331
+ });
332
+
333
+ it('shows all unique sizes as options', () => {
334
+ const { container } = render(ButtonGridView);
335
+ const selects = container.querySelectorAll('select');
336
+ const sizeSelect = selects[1];
337
+ const options = sizeSelect.querySelectorAll('option');
338
+
339
+ // Should have "All Sizes" plus unique sizes
340
+ expect(options.length).toBeGreaterThan(1);
341
+ expect(options[0]).toHaveTextContent('All Sizes');
342
+ });
343
+
344
+ it('filters buttons by selected size', async () => {
345
+ const { container } = render(ButtonGridView);
346
+ const selects = container.querySelectorAll('select');
347
+ const sizeSelect = selects[1];
348
+
349
+ await fireEvent.change(sizeSelect, { target: { value: 'xs' } });
350
+
351
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
352
+ expect(buttonCards.length).toBe(2);
353
+ });
354
+
355
+ it('updates button count when filtering by size', async () => {
356
+ const { container } = render(ButtonGridView);
357
+ const selects = container.querySelectorAll('select');
358
+ const sizeSelect = selects[1];
359
+
360
+ await fireEvent.change(sizeSelect, { target: { value: 'lg' } });
361
+
362
+ expect(screen.getByText(/Showing 1 of 10 buttons/i)).toBeInTheDocument();
363
+ });
364
+ });
365
+
366
+ describe('Combined Filters', () => {
367
+ it('applies variant and size filters together', async () => {
368
+ const { container } = render(ButtonGridView);
369
+ const selects = container.querySelectorAll('select');
370
+ const variantSelect = selects[0];
371
+ const sizeSelect = selects[1];
372
+
373
+ await fireEvent.change(variantSelect, { target: { value: 'blue-solid' } });
374
+ await fireEvent.change(sizeSelect, { target: { value: 'md' } });
375
+
376
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
377
+ expect(buttonCards.length).toBe(2);
378
+ });
379
+
380
+ it('applies search and variant filter together', async () => {
381
+ const { container } = render(ButtonGridView);
382
+ const searchInput = screen.getByPlaceholderText('Search...');
383
+ const variantSelect = container.querySelectorAll('select')[0];
384
+
385
+ await fireEvent.input(searchInput, { target: { value: 'Button' } });
386
+ await fireEvent.change(variantSelect, { target: { value: 'red-solid' } });
387
+
388
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
389
+ expect(buttonCards.length).toBe(1);
390
+ });
391
+
392
+ it('applies all three filters together', async () => {
393
+ const { container } = render(ButtonGridView);
394
+ const searchInput = screen.getByPlaceholderText('Search...');
395
+ const selects = container.querySelectorAll('select');
396
+ const variantSelect = selects[0];
397
+ const sizeSelect = selects[1];
398
+
399
+ await fireEvent.input(searchInput, { target: { value: 'Test' } });
400
+ await fireEvent.change(variantSelect, { target: { value: 'blue-solid' } });
401
+ await fireEvent.change(sizeSelect, { target: { value: 'md' } });
402
+
403
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
404
+ expect(buttonCards.length).toBe(1);
405
+ });
406
+ });
407
+
408
+ describe('Button Rendering', () => {
409
+ it('renders buttons with correct variants', () => {
410
+ const { container } = render(ButtonGridView);
411
+ const variantBadges = container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded');
412
+
413
+ // Check that variant badges are rendered
414
+ expect(variantBadges.length).toBeGreaterThan(0);
415
+ });
416
+
417
+ it('renders buttons with correct sizes', () => {
418
+ const { container } = render(ButtonGridView);
419
+
420
+ // Check that size badges exist in the metadata sections
421
+ const sizeBadges = container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded.bg-gray-100');
422
+ expect(sizeBadges.length).toBeGreaterThan(0);
423
+
424
+ // Check for specific size values
425
+ const sizeTexts = Array.from(sizeBadges).map(el => el.textContent);
426
+ expect(sizeTexts).toContain('md');
427
+ expect(sizeTexts).toContain('lg');
428
+ });
429
+
430
+ it('renders loading state buttons', () => {
431
+ const { container } = render(ButtonGridView);
432
+
433
+ // Should have buttons with loading prop
434
+ const buttons = container.querySelectorAll('button');
435
+ expect(buttons.length).toBeGreaterThan(0);
436
+ });
437
+
438
+ it('renders disabled state buttons', () => {
439
+ const { container } = render(ButtonGridView);
440
+
441
+ // Should have buttons with disabled prop
442
+ const buttons = container.querySelectorAll('button');
443
+ expect(buttons.length).toBeGreaterThan(0);
444
+ });
445
+
446
+ it('truncates long button text', () => {
447
+ render(ButtonGridView);
448
+
449
+ // Button with long text should be truncated
450
+ const truncatedText = screen.getByText(/This is a very long/i);
451
+ expect(truncatedText.textContent).toContain('…');
452
+ });
453
+
454
+ it('handles buttons with no text', () => {
455
+ const { container } = render(ButtonGridView);
456
+
457
+ // Should render all button cards including those with (no text)
458
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
459
+ expect(buttonCards.length).toBe(10);
460
+
461
+ // Check that we have actual button elements inside
462
+ const actualButtons = container.querySelectorAll('button[type="button"]');
463
+ expect(actualButtons.length).toBeGreaterThan(0);
464
+ });
465
+ });
466
+
467
+ describe('Button Metadata', () => {
468
+ it('displays file name and line number', () => {
469
+ render(ButtonGridView);
470
+
471
+ expect(screen.getByText(/TestComponent.svelte:10/i)).toBeInTheDocument();
472
+ });
473
+
474
+ it('generates correct VS Code links', () => {
475
+ const { container } = render(ButtonGridView);
476
+ const links = container.querySelectorAll('a[href^="vscode://"]');
477
+
478
+ expect(links.length).toBe(10);
479
+ expect(links[0]).toHaveAttribute('href', 'vscode://file/Users/test/repos/micdrop-frontend/src/components/TestComponent/TestComponent.svelte:10');
480
+ });
481
+
482
+ it('shows short file path in metadata', () => {
483
+ const { container } = render(ButtonGridView);
484
+
485
+ // Should show last two parts of path in the links
486
+ const links = container.querySelectorAll('a[href^="vscode://"]');
487
+ const linkTexts = Array.from(links).map(link => link.textContent);
488
+
489
+ // Check that at least one link contains the expected format
490
+ const hasExpectedFormat = linkTexts.some(text =>
491
+ text.includes('TestComponent/TestComponent.svelte') || text.includes('AnotherComponent/Another.svelte')
492
+ );
493
+ expect(hasExpectedFormat).toBe(true);
494
+ });
495
+
496
+ it('includes full path in link title', () => {
497
+ const { container } = render(ButtonGridView);
498
+ const links = container.querySelectorAll('a[href^="vscode://"]');
499
+
500
+ expect(links[0]).toHaveAttribute('title', 'components/TestComponent/TestComponent.svelte');
501
+ });
502
+ });
503
+
504
+ describe('Variant Color Function', () => {
505
+ it('applies correct color for blue-solid variant', () => {
506
+ const { container } = render(ButtonGridView);
507
+ const blueSolidBadge = Array.from(container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded'))
508
+ .find(el => el.textContent === 'blue-solid');
509
+
510
+ expect(blueSolidBadge).toHaveClass('bg-blue-100', 'text-blue-700');
511
+ });
512
+
513
+ it('applies correct color for gray-outline variant', () => {
514
+ const { container } = render(ButtonGridView);
515
+ const grayOutlineBadge = Array.from(container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded'))
516
+ .find(el => el.textContent === 'gray-outline');
517
+
518
+ expect(grayOutlineBadge).toHaveClass('bg-gray-100', 'text-gray-700');
519
+ });
520
+
521
+ it('applies correct color for red-solid variant', () => {
522
+ const { container } = render(ButtonGridView);
523
+ const redSolidBadge = Array.from(container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded'))
524
+ .find(el => el.textContent === 'red-solid');
525
+
526
+ expect(redSolidBadge).toHaveClass('bg-red-100', 'text-red-700');
527
+ });
528
+
529
+ it('applies correct color for green-solid variant', () => {
530
+ const { container } = render(ButtonGridView);
531
+ const greenSolidBadge = Array.from(container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded'))
532
+ .find(el => el.textContent === 'green-solid');
533
+
534
+ expect(greenSolidBadge).toHaveClass('bg-green-100', 'text-green-700');
535
+ });
536
+
537
+ it('applies correct color for icon variant', () => {
538
+ const { container } = render(ButtonGridView);
539
+ const iconBadge = Array.from(container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded'))
540
+ .find(el => el.textContent === 'icon');
541
+
542
+ expect(iconBadge).toHaveClass('bg-purple-100', 'text-purple-700');
543
+ });
544
+
545
+ it('applies correct color for ghost variant', () => {
546
+ const { container } = render(ButtonGridView);
547
+ const ghostBadge = Array.from(container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded'))
548
+ .find(el => el.textContent === 'ghost');
549
+
550
+ expect(ghostBadge).toHaveClass('bg-yellow-100', 'text-yellow-700');
551
+ });
552
+ });
553
+
554
+ describe('ShortFile Function', () => {
555
+ it('returns last two parts of file path', () => {
556
+ const { container } = render(ButtonGridView);
557
+
558
+ // Check that short paths are displayed in links
559
+ const links = container.querySelectorAll('a[href^="vscode://"]');
560
+ const linkTexts = Array.from(links).map(link => link.textContent);
561
+
562
+ // At least one link should contain the short path format
563
+ const hasShortPath = linkTexts.some(text => text.includes('/'));
564
+ expect(hasShortPath).toBe(true);
565
+ });
566
+
567
+ it('handles different path depths', () => {
568
+ const { container } = render(ButtonGridView);
569
+
570
+ // Check that multiple file paths are displayed
571
+ const links = container.querySelectorAll('a[href^="vscode://"]');
572
+ expect(links.length).toBe(10);
573
+
574
+ // Each link should have some path information
575
+ links.forEach(link => {
576
+ expect(link.textContent).toBeTruthy();
577
+ });
578
+ });
579
+ });
580
+
581
+ describe('Responsive Design', () => {
582
+ it('applies responsive grid classes', () => {
583
+ const { container } = render(ButtonGridView);
584
+ const grid = container.querySelector('.grid');
585
+
586
+ expect(grid).toHaveClass(
587
+ 'grid-cols-2', // mobile
588
+ 'sm:grid-cols-3', // small
589
+ 'md:grid-cols-4', // medium
590
+ 'lg:grid-cols-5', // large
591
+ 'xl:grid-cols-6', // extra large
592
+ '2xl:grid-cols-8' // 2x extra large
593
+ );
594
+ });
595
+
596
+ it('applies dark mode classes throughout', () => {
597
+ const { container } = render(ButtonGridView);
598
+
599
+ // Check various elements have dark mode classes
600
+ const darkElements = container.querySelectorAll('[class*="dark:"]');
601
+ expect(darkElements.length).toBeGreaterThan(0);
602
+ });
603
+ });
604
+
605
+ describe('Edge Cases', () => {
606
+ it('handles empty search result', async () => {
607
+ const { container } = render(ButtonGridView);
608
+ const searchInput = screen.getByPlaceholderText('Search...');
609
+
610
+ await fireEvent.input(searchInput, { target: { value: 'nonexistent' } });
611
+
612
+ expect(screen.getByText(/Showing 0 of 10 buttons/i)).toBeInTheDocument();
613
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
614
+ expect(buttonCards.length).toBe(0);
615
+ });
616
+
617
+ it('handles reset filters to show all buttons', async () => {
618
+ const { container } = render(ButtonGridView);
619
+ const searchInput = screen.getByPlaceholderText('Search...');
620
+ const selects = container.querySelectorAll('select');
621
+ const variantSelect = selects[0];
622
+ const sizeSelect = selects[1];
623
+
624
+ // Apply filters
625
+ await fireEvent.input(searchInput, { target: { value: 'Test' } });
626
+ await fireEvent.change(variantSelect, { target: { value: 'blue-solid' } });
627
+ await fireEvent.change(sizeSelect, { target: { value: 'md' } });
628
+
629
+ // Reset filters
630
+ await fireEvent.input(searchInput, { target: { value: '' } });
631
+ await fireEvent.change(variantSelect, { target: { value: 'all' } });
632
+ await fireEvent.change(sizeSelect, { target: { value: 'all' } });
633
+
634
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
635
+ expect(buttonCards.length).toBe(10);
636
+ });
637
+ });
638
+
639
+ describe('Data Processing', () => {
640
+ it('flattens manifest categories correctly', () => {
641
+ const { container } = render(ButtonGridView);
642
+
643
+ // Should have 10 buttons total from 2 routes
644
+ const buttonCards = container.querySelectorAll('.bg-white.dark\\:bg-gray-800.rounded-lg.p-3');
645
+ expect(buttonCards.length).toBe(10);
646
+ });
647
+
648
+ it('preserves button properties from manifest', () => {
649
+ const { container } = render(ButtonGridView);
650
+
651
+ // Check that various properties are rendered in badges
652
+ const badges = container.querySelectorAll('.px-1\\.5.py-0\\.5.rounded');
653
+ const badgeTexts = Array.from(badges).map(el => el.textContent);
654
+
655
+ // Should include variant and size values from manifest
656
+ expect(badgeTexts).toContain('blue-solid');
657
+ expect(badgeTexts.some(text => text === 'md')).toBe(true);
658
+ });
659
+
660
+ it('includes source information with each button', () => {
661
+ render(ButtonGridView);
662
+
663
+ // Check that file info is included
664
+ expect(screen.getByText(/TestComponent.svelte:10/i)).toBeInTheDocument();
665
+ });
666
+ });
667
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ButtonShowcase.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonShowcase.spec.d.ts","sourceRoot":"","sources":["../../src/lib/stories/ButtonShowcase.spec.js"],"names":[],"mappings":""}