@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,295 @@
1
+ import { render, screen } from '@testing-library/svelte';
2
+ import { expect, describe, test } from 'vitest';
3
+ import Tabs from './Tabs.svelte';
4
+ import TabsWithItems from './TabsWithItems.test.svelte';
5
+
6
+ describe('Tabs Component', () => {
7
+ test('renders a wrapper div', () => {
8
+ const { container } = render(Tabs);
9
+ expect(container.querySelector('div.flex.flex-col')).toBeInTheDocument();
10
+ });
11
+
12
+ test('renders a tablist ul', () => {
13
+ const { container } = render(Tabs);
14
+ expect(container.querySelector('ul[role="tablist"]')).toBeInTheDocument();
15
+ });
16
+
17
+ test('renders content area with pt-4 padding', () => {
18
+ const { container } = render(Tabs);
19
+ expect(container.querySelector('.pt-4')).toBeInTheDocument();
20
+ });
21
+
22
+ test('applies custom className', () => {
23
+ const { container } = render(Tabs, { props: { class: 'custom-tabs' } });
24
+ const wrapper = container.querySelector('div.flex.flex-col');
25
+ expect(wrapper).toHaveClass('custom-tabs');
26
+ });
27
+
28
+ test('passes through additional props', () => {
29
+ const { container } = render(Tabs, { props: { 'data-testid': 'my-tabs' } });
30
+ const wrapper = container.querySelector('[data-testid="my-tabs"]');
31
+ expect(wrapper).toBeInTheDocument();
32
+ });
33
+
34
+ test('applies contentClass to content div', () => {
35
+ const { container } = render(Tabs, { props: { contentClass: 'custom-content' } });
36
+ expect(container.querySelector('.custom-content')).toBeInTheDocument();
37
+ });
38
+ });
39
+
40
+ describe('Tabs Styles - Underline', () => {
41
+ test('underline style has border-b class', () => {
42
+ const { container } = render(Tabs, { props: { tabStyle: 'underline' } });
43
+ const tablist = container.querySelector('ul[role="tablist"]');
44
+ expect(tablist).toHaveClass('border-b');
45
+ expect(tablist).toHaveClass('border-gray-200');
46
+ });
47
+
48
+ test('underline style has -mb-px class', () => {
49
+ const { container } = render(Tabs, { props: { tabStyle: 'underline' } });
50
+ const tablist = container.querySelector('ul[role="tablist"]');
51
+ expect(tablist).toHaveClass('-mb-px');
52
+ });
53
+
54
+ test('underline is default style', () => {
55
+ const { container } = render(Tabs);
56
+ const tablist = container.querySelector('ul[role="tablist"]');
57
+ expect(tablist).toHaveClass('border-b');
58
+ });
59
+ });
60
+
61
+ describe('Tabs Styles - Pills', () => {
62
+ test('pills style has gap-2 class', () => {
63
+ const { container } = render(Tabs, { props: { tabStyle: 'pills' } });
64
+ const tablist = container.querySelector('ul[role="tablist"]');
65
+ expect(tablist).toHaveClass('gap-2');
66
+ });
67
+
68
+ test('pills style does not have border-b', () => {
69
+ const { container } = render(Tabs, { props: { tabStyle: 'pills' } });
70
+ const tablist = container.querySelector('ul[role="tablist"]');
71
+ expect(tablist).not.toHaveClass('border-b');
72
+ });
73
+ });
74
+
75
+ describe('Tabs Styles - Full', () => {
76
+ test('full style has divide-x class', () => {
77
+ const { container } = render(Tabs, { props: { tabStyle: 'full' } });
78
+ const tablist = container.querySelector('ul[role="tablist"]');
79
+ expect(tablist).toHaveClass('divide-x');
80
+ expect(tablist).toHaveClass('divide-gray-200');
81
+ });
82
+
83
+ test('full style has rounded-lg class', () => {
84
+ const { container } = render(Tabs, { props: { tabStyle: 'full' } });
85
+ const tablist = container.querySelector('ul[role="tablist"]');
86
+ expect(tablist).toHaveClass('rounded-lg');
87
+ });
88
+
89
+ test('full style has shadow class', () => {
90
+ const { container } = render(Tabs, { props: { tabStyle: 'full' } });
91
+ const tablist = container.querySelector('ul[role="tablist"]');
92
+ expect(tablist).toHaveClass('shadow');
93
+ });
94
+
95
+ test('full style has overflow-hidden', () => {
96
+ const { container } = render(Tabs, { props: { tabStyle: 'full' } });
97
+ const tablist = container.querySelector('ul[role="tablist"]');
98
+ expect(tablist).toHaveClass('overflow-hidden');
99
+ });
100
+ });
101
+
102
+ describe('Tabs Common Styling', () => {
103
+ test('tablist has flex class', () => {
104
+ const { container } = render(Tabs);
105
+ const tablist = container.querySelector('ul[role="tablist"]');
106
+ expect(tablist).toHaveClass('flex');
107
+ });
108
+
109
+ test('tablist has flex-wrap class', () => {
110
+ const { container } = render(Tabs);
111
+ const tablist = container.querySelector('ul[role="tablist"]');
112
+ expect(tablist).toHaveClass('flex-wrap');
113
+ });
114
+
115
+ test('tablist has text-center class', () => {
116
+ const { container } = render(Tabs);
117
+ const tablist = container.querySelector('ul[role="tablist"]');
118
+ expect(tablist).toHaveClass('text-center');
119
+ });
120
+
121
+ test('tablist has font-medium class', () => {
122
+ const { container } = render(Tabs);
123
+ const tablist = container.querySelector('ul[role="tablist"]');
124
+ expect(tablist).toHaveClass('font-medium');
125
+ });
126
+ });
127
+
128
+ describe('Tabs Props', () => {
129
+ test('tabStyle defaults to underline', () => {
130
+ const { container } = render(Tabs);
131
+ const tablist = container.querySelector('ul[role="tablist"]');
132
+ expect(tablist).toHaveClass('border-b');
133
+ });
134
+
135
+ test('contentClass is applied to content div', () => {
136
+ const { container } = render(Tabs, { props: { contentClass: 'my-content-class' } });
137
+ expect(container.querySelector('.my-content-class')).toBeInTheDocument();
138
+ });
139
+
140
+ test('activeTabValue can be set', () => {
141
+ const { container } = render(Tabs, { props: { activeTabValue: 'tab1' } });
142
+ // Component accepts the prop without error
143
+ expect(container.querySelector('div.flex.flex-col')).toBeInTheDocument();
144
+ });
145
+ });
146
+
147
+ describe('Tabs Accessibility', () => {
148
+ test('tablist has role="tablist"', () => {
149
+ const { container } = render(Tabs);
150
+ expect(container.querySelector('[role="tablist"]')).toBeInTheDocument();
151
+ });
152
+ });
153
+
154
+ describe('Tabs Dark Mode', () => {
155
+ test('underline has dark mode border class', () => {
156
+ const { container } = render(Tabs, { props: { tabStyle: 'underline' } });
157
+ const tablist = container.querySelector('ul[role="tablist"]');
158
+ expect(tablist).toHaveClass('dark:border-gray-700');
159
+ });
160
+
161
+ test('full style has dark mode divide class', () => {
162
+ const { container } = render(Tabs, { props: { tabStyle: 'full' } });
163
+ const tablist = container.querySelector('ul[role="tablist"]');
164
+ expect(tablist).toHaveClass('dark:divide-gray-700');
165
+ });
166
+ });
167
+
168
+ describe('Tabs with TabItems - registerTab functionality', () => {
169
+ test('auto-selects first tab when no active tab is set', async () => {
170
+ const { container } = render(TabsWithItems);
171
+
172
+ // Wait for tabs to register and render
173
+ await new Promise(resolve => setTimeout(resolve, 50));
174
+
175
+ // First tab content should be visible
176
+ expect(screen.getByTestId('tab1-content')).toBeInTheDocument();
177
+
178
+ // First tab button should be active
179
+ const buttons = container.querySelectorAll('button[role="tab"]');
180
+ expect(buttons[0]).toHaveAttribute('aria-selected', 'true');
181
+ });
182
+
183
+ test('respects open prop on TabItem', async () => {
184
+ const { container } = render(TabsWithItems, { props: { withOpen: true } });
185
+
186
+ // Wait for tabs to register
187
+ await new Promise(resolve => setTimeout(resolve, 50));
188
+
189
+ // First tab with open=true should be active
190
+ expect(screen.getByTestId('tab1-content')).toBeInTheDocument();
191
+
192
+ const buttons = container.querySelectorAll('button[role="tab"]');
193
+ expect(buttons[0]).toHaveAttribute('aria-selected', 'true');
194
+ });
195
+
196
+ test('registerTab prevents duplicate tab registration', async () => {
197
+ const { container } = render(TabsWithItems);
198
+
199
+ await new Promise(resolve => setTimeout(resolve, 50));
200
+
201
+ // Should only have 3 tabs, not duplicates
202
+ const buttons = container.querySelectorAll('button[role="tab"]');
203
+ expect(buttons).toHaveLength(3);
204
+ });
205
+
206
+ test('can switch between tabs', async () => {
207
+ const { container } = render(TabsWithItems);
208
+
209
+ await new Promise(resolve => setTimeout(resolve, 50));
210
+
211
+ // Click second tab
212
+ const buttons = container.querySelectorAll('button[role="tab"]');
213
+ buttons[1].click();
214
+
215
+ await new Promise(resolve => setTimeout(resolve, 50));
216
+
217
+ // Second tab content should be visible
218
+ expect(screen.getByTestId('tab2-content')).toBeInTheDocument();
219
+ expect(buttons[1]).toHaveAttribute('aria-selected', 'true');
220
+ });
221
+
222
+ test('activeTabValue can be set to specific tab', async () => {
223
+ const { container } = render(TabsWithItems, {
224
+ props: {
225
+ activeTabValue: 'tab2'
226
+ }
227
+ });
228
+
229
+ await new Promise(resolve => setTimeout(resolve, 50));
230
+
231
+ // Second tab should be active
232
+ expect(screen.getByTestId('tab2-content')).toBeInTheDocument();
233
+
234
+ const buttons = container.querySelectorAll('button[role="tab"]');
235
+ expect(buttons[1]).toHaveAttribute('aria-selected', 'true');
236
+ });
237
+
238
+ test('renders tab titles correctly', async () => {
239
+ const { container } = render(TabsWithItems);
240
+
241
+ await new Promise(resolve => setTimeout(resolve, 50));
242
+
243
+ const buttons = container.querySelectorAll('button[role="tab"]');
244
+ expect(buttons[0]).toHaveTextContent('First Tab');
245
+ expect(buttons[1]).toHaveTextContent('Second Tab');
246
+ expect(buttons[2]).toHaveTextContent('Third Tab');
247
+ });
248
+
249
+ test('pills style applies correct active classes', async () => {
250
+ const { container } = render(TabsWithItems, { props: { tabStyle: 'pills' } });
251
+
252
+ await new Promise(resolve => setTimeout(resolve, 50));
253
+
254
+ const buttons = container.querySelectorAll('button[role="tab"]');
255
+
256
+ // Active tab should have pills active classes
257
+ expect(buttons[0]).toHaveClass('bg-blue-600');
258
+ expect(buttons[0]).toHaveClass('text-white');
259
+ expect(buttons[0]).toHaveClass('rounded-lg');
260
+
261
+ // Inactive tabs should have pills inactive classes
262
+ expect(buttons[1]).toHaveClass('rounded-lg');
263
+ expect(buttons[1]).not.toHaveClass('bg-blue-600');
264
+ });
265
+
266
+ test('pills style inactive tab hover state', async () => {
267
+ const { container } = render(TabsWithItems, { props: { tabStyle: 'pills' } });
268
+
269
+ await new Promise(resolve => setTimeout(resolve, 50));
270
+
271
+ const buttons = container.querySelectorAll('button[role="tab"]');
272
+
273
+ // Check that inactive button has hover classes in its className
274
+ const inactiveButton = buttons[1];
275
+ expect(inactiveButton.className).toContain('hover:text-gray-900');
276
+ expect(inactiveButton.className).toContain('hover:bg-gray-100');
277
+ });
278
+
279
+ test('full style applies correct classes', async () => {
280
+ const { container } = render(TabsWithItems, { props: { tabStyle: 'full' } });
281
+
282
+ await new Promise(resolve => setTimeout(resolve, 50));
283
+
284
+ const buttons = container.querySelectorAll('button[role="tab"]');
285
+
286
+ // Active tab should have full active classes
287
+ expect(buttons[0]).toHaveClass('w-full');
288
+ expect(buttons[0]).toHaveClass('bg-gray-100');
289
+ expect(buttons[0]).toHaveClass('text-gray-900');
290
+
291
+ // Inactive tabs should have full inactive classes
292
+ expect(buttons[1]).toHaveClass('w-full');
293
+ expect(buttons[1]).toHaveClass('bg-white');
294
+ });
295
+ });
@@ -1,112 +1,112 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import Tabs from './Tabs.svelte';
4
- import TabItem from './TabItem.svelte';
5
-
6
- const { Story } = defineMeta({
7
- title: 'Primitives/Tabs',
8
- component: Tabs,
9
- tags: ['autodocs'],
10
- parameters: {
11
- docs: {
12
- description: {
13
- component: 'Tabbed content navigation component. Use TabItem children for each tab panel.',
14
- },
15
- },
16
- },
17
- });
18
-
19
- let activeTab = $state(0);
20
- </script>
21
-
22
- <Story name="Default">
23
- {#snippet template()}
24
- <Tabs>
25
- <TabItem title="Profile">
26
- <div class="p-4">
27
- <h3 class="font-medium mb-2">Profile Settings</h3>
28
- <p class="text-gray-600">Manage your profile information and preferences.</p>
29
- </div>
30
- </TabItem>
31
- <TabItem title="Account">
32
- <div class="p-4">
33
- <h3 class="font-medium mb-2">Account Settings</h3>
34
- <p class="text-gray-600">Manage your account security and billing.</p>
35
- </div>
36
- </TabItem>
37
- <TabItem title="Notifications">
38
- <div class="p-4">
39
- <h3 class="font-medium mb-2">Notification Settings</h3>
40
- <p class="text-gray-600">Configure how you receive notifications.</p>
41
- </div>
42
- </TabItem>
43
- </Tabs>
44
- {/snippet}
45
- </Story>
46
-
47
- <Story name="Controlled">
48
- {#snippet template()}
49
- <div>
50
- <p class="text-sm text-gray-500 mb-4">Active tab: {activeTab}</p>
51
- <Tabs bind:activeTab={activeTab}>
52
- <TabItem title="Tab 1">
53
- <div class="p-4">Content for Tab 1</div>
54
- </TabItem>
55
- <TabItem title="Tab 2">
56
- <div class="p-4">Content for Tab 2</div>
57
- </TabItem>
58
- <TabItem title="Tab 3">
59
- <div class="p-4">Content for Tab 3</div>
60
- </TabItem>
61
- </Tabs>
62
- <div class="mt-4 flex gap-2">
63
- <button
64
- class="px-3 py-1 bg-gray-200 rounded text-sm"
65
- onclick={() => activeTab = 0}
66
- >Go to Tab 1</button>
67
- <button
68
- class="px-3 py-1 bg-gray-200 rounded text-sm"
69
- onclick={() => activeTab = 2}
70
- >Go to Tab 3</button>
71
- </div>
72
- </div>
73
- {/snippet}
74
- </Story>
75
-
76
- <Story name="With Icons">
77
- {#snippet template()}
78
- <Tabs>
79
- <TabItem title="🏠 Home">
80
- <div class="p-4">Home tab content</div>
81
- </TabItem>
82
- <TabItem title="⚙️ Settings">
83
- <div class="p-4">Settings tab content</div>
84
- </TabItem>
85
- <TabItem title="👤 Profile">
86
- <div class="p-4">Profile tab content</div>
87
- </TabItem>
88
- </Tabs>
89
- {/snippet}
90
- </Story>
91
-
92
- <Story name="Many Tabs">
93
- {#snippet template()}
94
- <Tabs>
95
- <TabItem title="Overview">
96
- <div class="p-4">Overview content</div>
97
- </TabItem>
98
- <TabItem title="Analytics">
99
- <div class="p-4">Analytics content</div>
100
- </TabItem>
101
- <TabItem title="Reports">
102
- <div class="p-4">Reports content</div>
103
- </TabItem>
104
- <TabItem title="Notifications">
105
- <div class="p-4">Notifications content</div>
106
- </TabItem>
107
- <TabItem title="Settings">
108
- <div class="p-4">Settings content</div>
109
- </TabItem>
110
- </Tabs>
111
- {/snippet}
112
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Tabs from './Tabs.svelte';
4
+ import TabItem from './TabItem.svelte';
5
+
6
+ const { Story } = defineMeta({
7
+ title: 'Primitives/Tabs',
8
+ component: Tabs,
9
+ tags: ['autodocs'],
10
+ parameters: {
11
+ docs: {
12
+ description: {
13
+ component: 'Tabbed content navigation component. Use TabItem children for each tab panel.',
14
+ },
15
+ },
16
+ },
17
+ });
18
+
19
+ let activeTab = $state(0);
20
+ </script>
21
+
22
+ <Story name="Default">
23
+ {#snippet template()}
24
+ <Tabs>
25
+ <TabItem title="Profile">
26
+ <div class="p-4">
27
+ <h3 class="font-medium mb-2">Profile Settings</h3>
28
+ <p class="text-gray-600">Manage your profile information and preferences.</p>
29
+ </div>
30
+ </TabItem>
31
+ <TabItem title="Account">
32
+ <div class="p-4">
33
+ <h3 class="font-medium mb-2">Account Settings</h3>
34
+ <p class="text-gray-600">Manage your account security and billing.</p>
35
+ </div>
36
+ </TabItem>
37
+ <TabItem title="Notifications">
38
+ <div class="p-4">
39
+ <h3 class="font-medium mb-2">Notification Settings</h3>
40
+ <p class="text-gray-600">Configure how you receive notifications.</p>
41
+ </div>
42
+ </TabItem>
43
+ </Tabs>
44
+ {/snippet}
45
+ </Story>
46
+
47
+ <Story name="Controlled">
48
+ {#snippet template()}
49
+ <div>
50
+ <p class="text-sm text-gray-500 mb-4">Active tab: {activeTab}</p>
51
+ <Tabs bind:activeTab={activeTab}>
52
+ <TabItem title="Tab 1">
53
+ <div class="p-4">Content for Tab 1</div>
54
+ </TabItem>
55
+ <TabItem title="Tab 2">
56
+ <div class="p-4">Content for Tab 2</div>
57
+ </TabItem>
58
+ <TabItem title="Tab 3">
59
+ <div class="p-4">Content for Tab 3</div>
60
+ </TabItem>
61
+ </Tabs>
62
+ <div class="mt-4 flex gap-2">
63
+ <button
64
+ class="px-3 py-1 bg-gray-200 rounded text-sm"
65
+ onclick={() => activeTab = 0}
66
+ >Go to Tab 1</button>
67
+ <button
68
+ class="px-3 py-1 bg-gray-200 rounded text-sm"
69
+ onclick={() => activeTab = 2}
70
+ >Go to Tab 3</button>
71
+ </div>
72
+ </div>
73
+ {/snippet}
74
+ </Story>
75
+
76
+ <Story name="With Icons">
77
+ {#snippet template()}
78
+ <Tabs>
79
+ <TabItem title="🏠 Home">
80
+ <div class="p-4">Home tab content</div>
81
+ </TabItem>
82
+ <TabItem title="⚙️ Settings">
83
+ <div class="p-4">Settings tab content</div>
84
+ </TabItem>
85
+ <TabItem title="👤 Profile">
86
+ <div class="p-4">Profile tab content</div>
87
+ </TabItem>
88
+ </Tabs>
89
+ {/snippet}
90
+ </Story>
91
+
92
+ <Story name="Many Tabs">
93
+ {#snippet template()}
94
+ <Tabs>
95
+ <TabItem title="Overview">
96
+ <div class="p-4">Overview content</div>
97
+ </TabItem>
98
+ <TabItem title="Analytics">
99
+ <div class="p-4">Analytics content</div>
100
+ </TabItem>
101
+ <TabItem title="Reports">
102
+ <div class="p-4">Reports content</div>
103
+ </TabItem>
104
+ <TabItem title="Notifications">
105
+ <div class="p-4">Notifications content</div>
106
+ </TabItem>
107
+ <TabItem title="Settings">
108
+ <div class="p-4">Settings content</div>
109
+ </TabItem>
110
+ </Tabs>
111
+ {/snippet}
112
+ </Story>