@getmicdrop/svelte-components 5.5.4 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/dist/calendar/AboutShow/AboutShow.spec.d.ts +2 -0
  2. package/dist/calendar/AboutShow/AboutShow.spec.d.ts.map +1 -0
  3. package/dist/calendar/AboutShow/AboutShow.spec.js +791 -0
  4. package/dist/calendar/AboutShow/AboutShow.svelte +172 -172
  5. package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts +2 -0
  6. package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts.map +1 -0
  7. package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +1191 -0
  8. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
  9. package/dist/calendar/FAQs/FAQs.spec.d.ts +2 -0
  10. package/dist/calendar/FAQs/FAQs.spec.d.ts.map +1 -0
  11. package/dist/calendar/FAQs/FAQs.spec.js +238 -0
  12. package/dist/calendar/FAQs/FAQs.svelte +75 -75
  13. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts +2 -0
  14. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts.map +1 -0
  15. package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.js +420 -0
  16. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
  17. package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts +2 -0
  18. package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts.map +1 -0
  19. package/dist/calendar/OrderSummary/OrderSummary.spec.js +808 -0
  20. package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
  21. package/dist/calendar/PublicCard/PublicCard.spec.d.ts +2 -0
  22. package/dist/calendar/PublicCard/PublicCard.spec.d.ts.map +1 -0
  23. package/dist/calendar/PublicCard/PublicCard.spec.js +301 -0
  24. package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
  25. package/dist/calendar/ShowCard/ShowCard.spec.d.ts +2 -0
  26. package/dist/calendar/ShowCard/ShowCard.spec.d.ts.map +1 -0
  27. package/dist/calendar/ShowCard/ShowCard.spec.js +714 -0
  28. package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
  29. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts +2 -0
  30. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts.map +1 -0
  31. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +241 -0
  32. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
  33. package/dist/components/Layout/AppShell.svelte +104 -0
  34. package/dist/components/Layout/AppShell.svelte.d.ts +26 -0
  35. package/dist/components/Layout/AppShell.svelte.d.ts.map +1 -0
  36. package/dist/components/Layout/ContentSection.svelte +80 -0
  37. package/dist/components/Layout/ContentSection.svelte.d.ts +23 -0
  38. package/dist/components/Layout/ContentSection.svelte.d.ts.map +1 -0
  39. package/dist/components/Layout/Grid.svelte +4 -4
  40. package/dist/components/Layout/Heading.svelte +81 -0
  41. package/dist/components/Layout/Heading.svelte.d.ts +24 -0
  42. package/dist/components/Layout/Heading.svelte.d.ts.map +1 -0
  43. package/dist/components/Layout/PageContainer.svelte +69 -0
  44. package/dist/components/Layout/PageContainer.svelte.d.ts +23 -0
  45. package/dist/components/Layout/PageContainer.svelte.d.ts.map +1 -0
  46. package/dist/components/Layout/Responsive.svelte +75 -0
  47. package/dist/components/Layout/Responsive.svelte.d.ts +19 -0
  48. package/dist/components/Layout/Responsive.svelte.d.ts.map +1 -0
  49. package/dist/components/Layout/Section.spec.d.ts +2 -0
  50. package/dist/components/Layout/Section.spec.d.ts.map +1 -0
  51. package/dist/components/Layout/Section.spec.js +149 -0
  52. package/dist/components/Layout/Section.svelte +80 -80
  53. package/dist/components/Layout/ShowOnDesktop.svelte +37 -0
  54. package/dist/components/Layout/ShowOnDesktop.svelte.d.ts +16 -0
  55. package/dist/components/Layout/ShowOnDesktop.svelte.d.ts.map +1 -0
  56. package/dist/components/Layout/ShowOnMobile.svelte +37 -0
  57. package/dist/components/Layout/ShowOnMobile.svelte.d.ts +16 -0
  58. package/dist/components/Layout/ShowOnMobile.svelte.d.ts.map +1 -0
  59. package/dist/components/Layout/Sidebar.spec.d.ts +2 -0
  60. package/dist/components/Layout/Sidebar.spec.d.ts.map +1 -0
  61. package/dist/components/Layout/Sidebar.spec.js +186 -0
  62. package/dist/components/Layout/Sidebar.svelte +108 -108
  63. package/dist/components/Layout/Stack.spec.js +2 -2
  64. package/dist/components/Layout/Stack.svelte +6 -6
  65. package/dist/components/Layout/Text.svelte +87 -0
  66. package/dist/components/Layout/Text.svelte.d.ts +28 -0
  67. package/dist/components/Layout/Text.svelte.d.ts.map +1 -0
  68. package/dist/components/Layout/TwoColumn.svelte +108 -0
  69. package/dist/components/Layout/TwoColumn.svelte.d.ts +28 -0
  70. package/dist/components/Layout/TwoColumn.svelte.d.ts.map +1 -0
  71. package/dist/components/Layout/__tests__/Heading.test.d.ts +2 -0
  72. package/dist/components/Layout/__tests__/Heading.test.d.ts.map +1 -0
  73. package/dist/components/Layout/__tests__/Heading.test.js +123 -0
  74. package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts +2 -0
  75. package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts.map +1 -0
  76. package/dist/components/Layout/__tests__/ShowOnDesktop.test.js +84 -0
  77. package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts +2 -0
  78. package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts.map +1 -0
  79. package/dist/components/Layout/__tests__/ShowOnMobile.test.js +80 -0
  80. package/dist/components/Layout/__tests__/Text.test.d.ts +2 -0
  81. package/dist/components/Layout/__tests__/Text.test.d.ts.map +1 -0
  82. package/dist/components/Layout/__tests__/Text.test.js +146 -0
  83. package/dist/components/Layout/__tests__/TwoColumn.test.d.ts +2 -0
  84. package/dist/components/Layout/__tests__/TwoColumn.test.d.ts.map +1 -0
  85. package/dist/components/Layout/__tests__/TwoColumn.test.js +129 -0
  86. package/dist/constants/formOptions.spec.js +9 -5
  87. package/dist/constants/validation.js +91 -91
  88. package/dist/constants/validation.spec.js +64 -64
  89. package/dist/datetime/__tests__/timezone.test.js +123 -1
  90. package/dist/forms/createFieldTracker.spec.d.ts +2 -0
  91. package/dist/forms/createFieldTracker.spec.d.ts.map +1 -0
  92. package/dist/forms/createFieldTracker.spec.js +343 -0
  93. package/dist/forms/createFormStore.spec.d.ts +2 -0
  94. package/dist/forms/createFormStore.spec.d.ts.map +1 -0
  95. package/dist/forms/createFormStore.spec.js +689 -0
  96. package/dist/index.d.ts +4 -112
  97. package/dist/index.js +40 -226
  98. package/dist/patterns/data/DataGrid.spec.d.ts +2 -0
  99. package/dist/patterns/data/DataGrid.spec.d.ts.map +1 -0
  100. package/dist/patterns/data/DataGrid.spec.js +159 -0
  101. package/dist/patterns/data/DataGrid.svelte +45 -45
  102. package/dist/patterns/data/DataList.spec.d.ts +2 -0
  103. package/dist/patterns/data/DataList.spec.d.ts.map +1 -0
  104. package/dist/patterns/data/DataList.spec.js +158 -0
  105. package/dist/patterns/data/DataList.svelte +24 -24
  106. package/dist/patterns/data/DataTable.spec.d.ts +2 -0
  107. package/dist/patterns/data/DataTable.spec.d.ts.map +1 -0
  108. package/dist/patterns/data/DataTable.spec.js +196 -0
  109. package/dist/patterns/data/DataTable.svelte +36 -36
  110. package/dist/patterns/forms/FormActions.spec.js +95 -88
  111. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  112. package/dist/patterns/forms/FormActions.svelte +46 -46
  113. package/dist/patterns/forms/FormGrid.spec.d.ts +2 -0
  114. package/dist/patterns/forms/FormGrid.spec.d.ts.map +1 -0
  115. package/dist/patterns/forms/FormGrid.spec.js +125 -0
  116. package/dist/patterns/forms/FormGrid.svelte +33 -33
  117. package/dist/patterns/forms/FormSection.spec.d.ts +2 -0
  118. package/dist/patterns/forms/FormSection.spec.d.ts.map +1 -0
  119. package/dist/patterns/forms/FormSection.spec.js +153 -0
  120. package/dist/patterns/forms/FormSection.svelte +32 -32
  121. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  122. package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
  123. package/dist/patterns/layout/Sidebar.spec.d.ts +2 -0
  124. package/dist/patterns/layout/Sidebar.spec.d.ts.map +1 -0
  125. package/dist/patterns/layout/Sidebar.spec.js +159 -0
  126. package/dist/patterns/layout/Sidebar.svelte +39 -39
  127. package/dist/patterns/layout/index.d.ts +9 -0
  128. package/dist/patterns/layout/index.js +22 -0
  129. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  130. package/dist/patterns/navigation/BottomNav.svelte +64 -64
  131. package/dist/patterns/navigation/Header.spec.js +33 -24
  132. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  133. package/dist/patterns/navigation/Header.svelte +193 -193
  134. package/dist/patterns/page/PageHeader.spec.d.ts +2 -0
  135. package/dist/patterns/page/PageHeader.spec.d.ts.map +1 -0
  136. package/dist/patterns/page/PageHeader.spec.js +167 -0
  137. package/dist/patterns/page/PageHeader.svelte +18 -18
  138. package/dist/patterns/page/PageLayout.spec.d.ts +2 -0
  139. package/dist/patterns/page/PageLayout.spec.d.ts.map +1 -0
  140. package/dist/patterns/page/PageLayout.spec.js +145 -0
  141. package/dist/patterns/page/PageLayout.svelte +40 -40
  142. package/dist/patterns/page/PageLoader.spec.js +57 -54
  143. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  144. package/dist/patterns/page/PageLoader.svelte +24 -24
  145. package/dist/patterns/page/SectionHeader.spec.d.ts +2 -0
  146. package/dist/patterns/page/SectionHeader.spec.d.ts.map +1 -0
  147. package/dist/patterns/page/SectionHeader.spec.js +197 -0
  148. package/dist/patterns/page/SectionHeader.svelte +29 -29
  149. package/dist/presets/badges.js +112 -112
  150. package/dist/presets/badges.spec.d.ts +2 -0
  151. package/dist/presets/badges.spec.d.ts.map +1 -0
  152. package/dist/presets/badges.spec.js +172 -0
  153. package/dist/presets/buttons.js +76 -76
  154. package/dist/presets/buttons.spec.d.ts +2 -0
  155. package/dist/presets/buttons.spec.d.ts.map +1 -0
  156. package/dist/presets/buttons.spec.js +135 -0
  157. package/dist/presets/index.js +9 -9
  158. package/dist/primitives/Accordion/Accordion.spec.d.ts +2 -0
  159. package/dist/primitives/Accordion/Accordion.spec.d.ts.map +1 -0
  160. package/dist/primitives/Accordion/Accordion.spec.js +83 -0
  161. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  162. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  163. package/dist/primitives/Accordion/AccordionItem.spec.d.ts +2 -0
  164. package/dist/primitives/Accordion/AccordionItem.spec.d.ts.map +1 -0
  165. package/dist/primitives/Accordion/AccordionItem.spec.js +661 -0
  166. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  167. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -0
  168. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +35 -0
  169. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -0
  170. package/dist/primitives/Alert/Alert.spec.js +173 -170
  171. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  172. package/dist/primitives/Alert/Alert.svelte +27 -27
  173. package/dist/primitives/Avatar/Avatar.spec.d.ts +2 -0
  174. package/dist/primitives/Avatar/Avatar.spec.d.ts.map +1 -0
  175. package/dist/primitives/Avatar/Avatar.spec.js +211 -0
  176. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  177. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  178. package/dist/primitives/Badges/Badge.spec.js +144 -103
  179. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  180. package/dist/primitives/Badges/Badge.svelte +79 -79
  181. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -127
  182. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  183. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  184. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte +13 -0
  185. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts +7 -0
  186. package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts.map +1 -0
  187. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -120
  188. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  189. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  190. package/dist/primitives/Button/Button.spec.js +223 -211
  191. package/dist/primitives/Button/Button.stories.svelte +76 -76
  192. package/dist/primitives/Button/Button.svelte +270 -270
  193. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -48
  194. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  195. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts +2 -0
  196. package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts.map +1 -0
  197. package/dist/primitives/Button/ButtonVariantShowcase.spec.js +202 -0
  198. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  199. package/dist/primitives/Card.spec.js +49 -49
  200. package/dist/primitives/Card.stories.svelte +22 -22
  201. package/dist/primitives/Card.svelte +28 -28
  202. package/dist/primitives/Checkbox/Checkbox.spec.d.ts +2 -0
  203. package/dist/primitives/Checkbox/Checkbox.spec.d.ts.map +1 -0
  204. package/dist/primitives/Checkbox/Checkbox.spec.js +252 -0
  205. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  206. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  207. package/dist/primitives/DarkModeToggle.spec.js +390 -357
  208. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  209. package/dist/primitives/DarkModeToggle.svelte +136 -136
  210. package/dist/primitives/Drawer/Drawer.spec.d.ts +2 -0
  211. package/dist/primitives/Drawer/Drawer.spec.d.ts.map +1 -0
  212. package/dist/primitives/Drawer/Drawer.spec.js +212 -0
  213. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  214. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  215. package/dist/primitives/Dropdown/Dropdown.spec.d.ts +2 -0
  216. package/dist/primitives/Dropdown/Dropdown.spec.d.ts.map +1 -0
  217. package/dist/primitives/Dropdown/Dropdown.spec.js +366 -0
  218. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  219. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  220. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts +2 -0
  221. package/dist/primitives/Dropdown/DropdownItem.spec.d.ts.map +1 -0
  222. package/dist/primitives/Dropdown/DropdownItem.spec.js +182 -0
  223. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  224. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  225. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  226. package/dist/primitives/Icons/Availability.svelte +14 -14
  227. package/dist/primitives/Icons/Back.svelte +14 -14
  228. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  229. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  230. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  231. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  232. package/dist/primitives/Icons/Copy.svelte +15 -15
  233. package/dist/primitives/Icons/Cross.svelte +5 -5
  234. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  235. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  236. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  237. package/dist/primitives/Icons/Home.svelte +15 -15
  238. package/dist/primitives/Icons/Icon.spec.js +169 -169
  239. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  240. package/dist/primitives/Icons/Icon.svelte +52 -52
  241. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  242. package/dist/primitives/Icons/Info.svelte +7 -7
  243. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  244. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  245. package/dist/primitives/Icons/Message.svelte +15 -15
  246. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  247. package/dist/primitives/Icons/More.svelte +21 -21
  248. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  249. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  250. package/dist/primitives/Icons/Notification.svelte +14 -14
  251. package/dist/primitives/Icons/Payment.svelte +14 -14
  252. package/dist/primitives/Icons/Profile.svelte +21 -21
  253. package/dist/primitives/Icons/Reload.svelte +29 -29
  254. package/dist/primitives/Icons/Shows.svelte +21 -21
  255. package/dist/primitives/Icons/Signout.svelte +21 -21
  256. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  257. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  258. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  259. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  260. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  261. package/dist/primitives/Icons/iconTestUtils.spec.d.ts +2 -0
  262. package/dist/primitives/Icons/iconTestUtils.spec.d.ts.map +1 -0
  263. package/dist/primitives/Icons/iconTestUtils.spec.js +235 -0
  264. package/dist/primitives/Input/Input.spec.js +573 -573
  265. package/dist/primitives/Input/Input.stories.svelte +139 -139
  266. package/dist/primitives/Input/Input.svelte +418 -431
  267. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  268. package/dist/primitives/Input/Select.spec.js +212 -218
  269. package/dist/primitives/Input/Select.stories.svelte +112 -112
  270. package/dist/primitives/Input/Select.svelte +128 -128
  271. package/dist/primitives/Input/Textarea.spec.d.ts +2 -0
  272. package/dist/primitives/Input/Textarea.spec.d.ts.map +1 -0
  273. package/dist/primitives/Input/Textarea.spec.js +255 -0
  274. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  275. package/dist/primitives/Input/Textarea.svelte +35 -35
  276. package/dist/primitives/Label/Label.spec.d.ts +2 -0
  277. package/dist/primitives/Label/Label.spec.d.ts.map +1 -0
  278. package/dist/primitives/Label/Label.spec.js +157 -0
  279. package/dist/primitives/Label/Label.svelte +37 -37
  280. package/dist/primitives/Modal/Modal.spec.js +99 -95
  281. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  282. package/dist/primitives/Modal/Modal.svelte +158 -158
  283. package/dist/primitives/Modal/ModalTestWrapper.svelte +65 -0
  284. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts +23 -0
  285. package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts.map +1 -0
  286. package/dist/primitives/NumberInput/NumberInput.spec.d.ts +2 -0
  287. package/dist/primitives/NumberInput/NumberInput.spec.d.ts.map +1 -0
  288. package/dist/primitives/NumberInput/NumberInput.spec.js +235 -0
  289. package/dist/primitives/NumberInput/NumberInput.svelte +106 -106
  290. package/dist/primitives/Pagination/Pagination.spec.d.ts +2 -0
  291. package/dist/primitives/Pagination/Pagination.spec.d.ts.map +1 -0
  292. package/dist/primitives/Pagination/Pagination.spec.js +266 -0
  293. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  294. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  295. package/dist/primitives/Radio/Radio.spec.d.ts +2 -0
  296. package/dist/primitives/Radio/Radio.spec.d.ts.map +1 -0
  297. package/dist/primitives/Radio/Radio.spec.js +206 -0
  298. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  299. package/dist/primitives/Radio/Radio.svelte +67 -67
  300. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts +2 -0
  301. package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts.map +1 -0
  302. package/dist/primitives/Skeleton/CardPlaceholder.spec.js +156 -0
  303. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  304. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts +2 -0
  305. package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts.map +1 -0
  306. package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +120 -0
  307. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  308. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts +2 -0
  309. package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts.map +1 -0
  310. package/dist/primitives/Skeleton/ListPlaceholder.spec.js +220 -0
  311. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  312. package/dist/primitives/Skeleton/Skeleton.spec.d.ts +2 -0
  313. package/dist/primitives/Skeleton/Skeleton.spec.d.ts.map +1 -0
  314. package/dist/primitives/Skeleton/Skeleton.spec.js +173 -0
  315. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  316. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  317. package/dist/primitives/Spinner/Spinner.spec.js +71 -75
  318. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  319. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  320. package/dist/primitives/Tabs/TabItem.spec.d.ts +2 -0
  321. package/dist/primitives/Tabs/TabItem.spec.d.ts.map +1 -0
  322. package/dist/primitives/Tabs/TabItem.spec.js +130 -0
  323. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  324. package/dist/primitives/Tabs/Tabs.spec.d.ts +2 -0
  325. package/dist/primitives/Tabs/Tabs.spec.d.ts.map +1 -0
  326. package/dist/primitives/Tabs/Tabs.spec.js +295 -0
  327. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  328. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  329. package/dist/primitives/Tabs/TabsWithItems.test.svelte +18 -0
  330. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts +16 -0
  331. package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts.map +1 -0
  332. package/dist/primitives/Toggle.spec.js +143 -127
  333. package/dist/primitives/Toggle.stories.svelte +92 -92
  334. package/dist/primitives/Toggle.svelte +71 -71
  335. package/dist/primitives/Typography/Typography.spec.d.ts +2 -0
  336. package/dist/primitives/Typography/Typography.spec.d.ts.map +1 -0
  337. package/dist/primitives/Typography/Typography.spec.js +183 -0
  338. package/dist/primitives/Typography/Typography.svelte +53 -53
  339. package/dist/primitives/ValidationError.spec.js +103 -103
  340. package/dist/primitives/ValidationError.stories.svelte +69 -69
  341. package/dist/primitives/ValidationError.svelte +29 -29
  342. package/dist/primitives/index.d.ts +1 -0
  343. package/dist/primitives/index.js +84 -81
  344. package/dist/recipes/CropImage/CropImage.spec.js +208 -216
  345. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  346. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  347. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts +2 -0
  348. package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts.map +1 -0
  349. package/dist/recipes/ImageUploader/ImageUploader.spec.js +1351 -0
  350. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  351. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  352. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts +2 -0
  353. package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts.map +1 -0
  354. package/dist/recipes/SuperLogin/SuperLogin.spec.js +1436 -0
  355. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  356. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts +2 -0
  357. package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts.map +1 -0
  358. package/dist/recipes/feedback/EmptyState/EmptyState.spec.js +202 -0
  359. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  360. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  361. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  362. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  363. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -129
  364. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  365. package/dist/recipes/fields/CheckboxField.spec.d.ts +2 -0
  366. package/dist/recipes/fields/CheckboxField.spec.d.ts.map +1 -0
  367. package/dist/recipes/fields/CheckboxField.spec.js +135 -0
  368. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  369. package/dist/recipes/fields/FormField.spec.d.ts +2 -0
  370. package/dist/recipes/fields/FormField.spec.d.ts.map +1 -0
  371. package/dist/recipes/fields/FormField.spec.js +159 -0
  372. package/dist/recipes/fields/FormField.svelte +58 -58
  373. package/dist/recipes/fields/RadioGroup.spec.d.ts +2 -0
  374. package/dist/recipes/fields/RadioGroup.spec.d.ts.map +1 -0
  375. package/dist/recipes/fields/RadioGroup.spec.js +199 -0
  376. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  377. package/dist/recipes/fields/SelectField.spec.d.ts +2 -0
  378. package/dist/recipes/fields/SelectField.spec.d.ts.map +1 -0
  379. package/dist/recipes/fields/SelectField.spec.js +188 -0
  380. package/dist/recipes/fields/SelectField.svelte +80 -80
  381. package/dist/recipes/fields/TextareaField.spec.d.ts +2 -0
  382. package/dist/recipes/fields/TextareaField.spec.d.ts.map +1 -0
  383. package/dist/recipes/fields/TextareaField.spec.js +205 -0
  384. package/dist/recipes/fields/TextareaField.svelte +97 -97
  385. package/dist/recipes/fields/ToggleField.spec.d.ts +2 -0
  386. package/dist/recipes/fields/ToggleField.spec.d.ts.map +1 -0
  387. package/dist/recipes/fields/ToggleField.spec.js +153 -0
  388. package/dist/recipes/fields/ToggleField.svelte +60 -60
  389. package/dist/recipes/fields/index.js +7 -7
  390. package/dist/recipes/inputs/MultiSelect.spec.js +258 -257
  391. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  392. package/dist/recipes/inputs/MultiSelect.svelte +256 -249
  393. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +2 -0
  394. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  395. package/dist/recipes/inputs/OTPInput.spec.js +251 -238
  396. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  397. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  398. package/dist/recipes/inputs/PasswordInput.spec.d.ts +2 -0
  399. package/dist/recipes/inputs/PasswordInput.spec.d.ts.map +1 -0
  400. package/dist/recipes/inputs/PasswordInput.spec.js +410 -0
  401. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  402. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +253 -173
  403. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
  404. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +71 -0
  405. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts +9 -0
  406. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts.map +1 -0
  407. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +1246 -300
  408. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  409. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +326 -326
  410. package/dist/recipes/inputs/Search.spec.d.ts +2 -0
  411. package/dist/recipes/inputs/Search.spec.d.ts.map +1 -0
  412. package/dist/recipes/inputs/Search.spec.js +177 -0
  413. package/dist/recipes/inputs/Search.svelte +37 -37
  414. package/dist/recipes/inputs/SelectDropdown.spec.d.ts +2 -0
  415. package/dist/recipes/inputs/SelectDropdown.spec.d.ts.map +1 -0
  416. package/dist/recipes/inputs/SelectDropdown.spec.js +512 -0
  417. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  418. package/dist/recipes/modals/AlertModal.spec.d.ts +2 -0
  419. package/dist/recipes/modals/AlertModal.spec.d.ts.map +1 -0
  420. package/dist/recipes/modals/AlertModal.spec.js +432 -0
  421. package/dist/recipes/modals/AlertModal.svelte +130 -130
  422. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -191
  423. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  424. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  425. package/dist/recipes/modals/InputModal.spec.d.ts +2 -0
  426. package/dist/recipes/modals/InputModal.spec.d.ts.map +1 -0
  427. package/dist/recipes/modals/InputModal.spec.js +872 -0
  428. package/dist/recipes/modals/InputModal.svelte +182 -182
  429. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  430. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  431. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts +2 -0
  432. package/dist/recipes/modals/ModalTestWrapper.spec.d.ts.map +1 -0
  433. package/dist/recipes/modals/ModalTestWrapper.spec.js +502 -0
  434. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  435. package/dist/recipes/modals/StatusModal.spec.d.ts +2 -0
  436. package/dist/recipes/modals/StatusModal.spec.d.ts.map +1 -0
  437. package/dist/recipes/modals/StatusModal.spec.js +599 -0
  438. package/dist/recipes/modals/StatusModal.svelte +206 -206
  439. package/dist/services/EventService.js +75 -75
  440. package/dist/services/EventService.spec.js +217 -217
  441. package/dist/services/ShowService.spec.js +345 -342
  442. package/dist/stores/auth.js +36 -36
  443. package/dist/stores/auth.spec.js +139 -139
  444. package/dist/stores/toaster.js +13 -13
  445. package/dist/stories/ButtonAuditDashboard.spec.d.ts +2 -0
  446. package/dist/stories/ButtonAuditDashboard.spec.d.ts.map +1 -0
  447. package/dist/stories/ButtonAuditDashboard.spec.js +913 -0
  448. package/dist/stories/ButtonAuditReview.spec.d.ts +2 -0
  449. package/dist/stories/ButtonAuditReview.spec.d.ts.map +1 -0
  450. package/dist/stories/ButtonAuditReview.spec.js +422 -0
  451. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  452. package/dist/stories/ButtonAuditReview.svelte +427 -427
  453. package/dist/stories/ButtonGridView.spec.d.ts +2 -0
  454. package/dist/stories/ButtonGridView.spec.d.ts.map +1 -0
  455. package/dist/stories/ButtonGridView.spec.js +667 -0
  456. package/dist/stories/ButtonShowcase.spec.d.ts +2 -0
  457. package/dist/stories/ButtonShowcase.spec.d.ts.map +1 -0
  458. package/dist/stories/ButtonShowcase.spec.js +499 -0
  459. package/dist/stories/PatternsGallery.spec.d.ts +2 -0
  460. package/dist/stories/PatternsGallery.spec.d.ts.map +1 -0
  461. package/dist/stories/PatternsGallery.spec.js +514 -0
  462. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  463. package/dist/stories/PatternsGallery.svelte +206 -206
  464. package/dist/stories/PrimitivesGallery.spec.d.ts +2 -0
  465. package/dist/stories/PrimitivesGallery.spec.d.ts.map +1 -0
  466. package/dist/stories/PrimitivesGallery.spec.js +813 -0
  467. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  468. package/dist/stories/PrimitivesGallery.svelte +725 -725
  469. package/dist/stories/RecipesGallery.spec.d.ts +2 -0
  470. package/dist/stories/RecipesGallery.spec.d.ts.map +1 -0
  471. package/dist/stories/RecipesGallery.spec.js +299 -0
  472. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  473. package/dist/stories/RecipesGallery.svelte +271 -271
  474. package/dist/stories/button-audit-manifest.json +11186 -11186
  475. package/dist/stripe/useStripeTheme.spec.d.ts +2 -0
  476. package/dist/stripe/useStripeTheme.spec.d.ts.map +1 -0
  477. package/dist/stripe/useStripeTheme.spec.js +793 -0
  478. package/dist/tailwind/preset.cjs +82 -82
  479. package/dist/telemetry.d.ts.map +1 -1
  480. package/dist/telemetry.js +405 -404
  481. package/dist/telemetry.spec.js +1144 -661
  482. package/dist/tokens/__tests__/colors.test.d.ts +2 -0
  483. package/dist/tokens/__tests__/colors.test.d.ts.map +1 -0
  484. package/dist/tokens/__tests__/colors.test.js +152 -0
  485. package/dist/tokens/__tests__/radius.test.d.ts +2 -0
  486. package/dist/tokens/__tests__/radius.test.d.ts.map +1 -0
  487. package/dist/tokens/__tests__/radius.test.js +118 -0
  488. package/dist/tokens/__tests__/shadows.test.d.ts +2 -0
  489. package/dist/tokens/__tests__/shadows.test.d.ts.map +1 -0
  490. package/dist/tokens/__tests__/shadows.test.js +105 -0
  491. package/dist/tokens/__tests__/spacing.test.js +11 -8
  492. package/dist/tokens/__tests__/typography-base.test.d.ts +2 -0
  493. package/dist/tokens/__tests__/typography-base.test.d.ts.map +1 -0
  494. package/dist/tokens/__tests__/typography-base.test.js +138 -0
  495. package/dist/tokens/__tests__/typography.test.d.ts +2 -0
  496. package/dist/tokens/__tests__/typography.test.d.ts.map +1 -0
  497. package/dist/tokens/__tests__/typography.test.js +156 -0
  498. package/dist/tokens/__tests__/z-index.test.d.ts +2 -0
  499. package/dist/tokens/__tests__/z-index.test.d.ts.map +1 -0
  500. package/dist/tokens/__tests__/z-index.test.js +121 -0
  501. package/dist/tokens/tokens.css +87 -87
  502. package/dist/tokens/typography-base.css +163 -0
  503. package/dist/utils/apiConfig.spec.js +219 -118
  504. package/dist/utils/formatters.spec.d.ts +2 -0
  505. package/dist/utils/formatters.spec.d.ts.map +1 -0
  506. package/dist/utils/formatters.spec.js +82 -0
  507. package/dist/utils/transitions.js +62 -62
  508. package/dist/utils/transitions.spec.d.ts +2 -0
  509. package/dist/utils/transitions.spec.d.ts.map +1 -0
  510. package/dist/utils/transitions.spec.js +130 -0
  511. package/dist/utils/utils.js +354 -354
  512. package/package.json +292 -286
@@ -0,0 +1,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":""}