@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,157 @@
1
+ import { render, screen } from '@testing-library/svelte';
2
+ import { expect, describe, test } from 'vitest';
3
+ import Label from './Label.svelte';
4
+
5
+ describe('Label Component', () => {
6
+ test('renders a label element', () => {
7
+ const { container } = render(Label);
8
+ expect(container.querySelector('label')).toBeInTheDocument();
9
+ });
10
+
11
+ test('applies custom className', () => {
12
+ const { container } = render(Label, { props: { class: 'custom-label' } });
13
+ const label = container.querySelector('label');
14
+ expect(label).toHaveClass('custom-label');
15
+ });
16
+
17
+ test('passes through additional props', () => {
18
+ const { container } = render(Label, { props: { 'data-testid': 'my-label' } });
19
+ const label = container.querySelector('[data-testid="my-label"]');
20
+ expect(label).toBeInTheDocument();
21
+ });
22
+
23
+ test('passes for attribute', () => {
24
+ const { container } = render(Label, { props: { for: 'input-id' } });
25
+ const label = container.querySelector('label');
26
+ expect(label).toHaveAttribute('for', 'input-id');
27
+ });
28
+ });
29
+
30
+ describe('Label Colors', () => {
31
+ test('default color is gray', () => {
32
+ const { container } = render(Label);
33
+ const label = container.querySelector('label');
34
+ expect(label).toHaveClass('text-gray-900');
35
+ });
36
+
37
+ test('gray color applies text-gray-900', () => {
38
+ const { container } = render(Label, { props: { color: 'gray' } });
39
+ const label = container.querySelector('label');
40
+ expect(label).toHaveClass('text-gray-900');
41
+ });
42
+
43
+ test('green color applies text-green-700', () => {
44
+ const { container } = render(Label, { props: { color: 'green' } });
45
+ const label = container.querySelector('label');
46
+ expect(label).toHaveClass('text-green-700');
47
+ });
48
+
49
+ test('red color applies text-red-700', () => {
50
+ const { container } = render(Label, { props: { color: 'red' } });
51
+ const label = container.querySelector('label');
52
+ expect(label).toHaveClass('text-red-700');
53
+ });
54
+
55
+ test('disabled color applies text-gray-400', () => {
56
+ const { container } = render(Label, { props: { color: 'disabled' } });
57
+ const label = container.querySelector('label');
58
+ expect(label).toHaveClass('text-gray-400');
59
+ });
60
+ });
61
+
62
+ describe('Label Dark Mode', () => {
63
+ test('gray has dark mode class', () => {
64
+ const { container } = render(Label, { props: { color: 'gray' } });
65
+ const label = container.querySelector('label');
66
+ expect(label).toHaveClass('dark:text-gray-300');
67
+ });
68
+
69
+ test('green has dark mode class', () => {
70
+ const { container } = render(Label, { props: { color: 'green' } });
71
+ const label = container.querySelector('label');
72
+ expect(label).toHaveClass('dark:text-green-500');
73
+ });
74
+
75
+ test('red has dark mode class', () => {
76
+ const { container } = render(Label, { props: { color: 'red' } });
77
+ const label = container.querySelector('label');
78
+ expect(label).toHaveClass('dark:text-red-500');
79
+ });
80
+
81
+ test('disabled has dark mode class', () => {
82
+ const { container } = render(Label, { props: { color: 'disabled' } });
83
+ const label = container.querySelector('label');
84
+ expect(label).toHaveClass('dark:text-gray-500');
85
+ });
86
+ });
87
+
88
+ describe('Label Show Prop', () => {
89
+ test('shows label by default (show=true)', () => {
90
+ const { container } = render(Label);
91
+ expect(container.querySelector('label')).toBeInTheDocument();
92
+ });
93
+
94
+ test('hides label when show is false', () => {
95
+ const { container } = render(Label, { props: { show: false } });
96
+ expect(container.querySelector('label')).not.toBeInTheDocument();
97
+ });
98
+
99
+ test('renders children without label when show is false', () => {
100
+ // When show=false, children render without label wrapper
101
+ const { container } = render(Label, { props: { show: false } });
102
+ expect(container.querySelector('label')).not.toBeInTheDocument();
103
+ });
104
+ });
105
+
106
+ describe('Label Default Styling', () => {
107
+ test('has text-sm class', () => {
108
+ const { container } = render(Label);
109
+ const label = container.querySelector('label');
110
+ expect(label).toHaveClass('text-sm');
111
+ });
112
+
113
+ test('has font-medium class', () => {
114
+ const { container } = render(Label);
115
+ const label = container.querySelector('label');
116
+ expect(label).toHaveClass('font-medium');
117
+ });
118
+
119
+ test('has block display', () => {
120
+ const { container } = render(Label);
121
+ const label = container.querySelector('label');
122
+ expect(label).toHaveClass('block');
123
+ });
124
+
125
+ test('has rtl:text-right for RTL support', () => {
126
+ const { container } = render(Label);
127
+ const label = container.querySelector('label');
128
+ expect(label).toHaveClass('rtl:text-right');
129
+ });
130
+ });
131
+
132
+ describe('Label Custom Default Class', () => {
133
+ test('accepts defaultClass prop', () => {
134
+ const { container } = render(Label, { props: { defaultClass: 'text-lg font-bold' } });
135
+ const label = container.querySelector('label');
136
+ expect(label).toHaveClass('text-lg');
137
+ expect(label).toHaveClass('font-bold');
138
+ });
139
+
140
+ test('defaultClass replaces default styling', () => {
141
+ const { container } = render(Label, { props: { defaultClass: 'custom-default' } });
142
+ const label = container.querySelector('label');
143
+ expect(label).toHaveClass('custom-default');
144
+ });
145
+ });
146
+
147
+ describe('Label Class Composition', () => {
148
+ test('combines defaultClass, color class, and custom class', () => {
149
+ const { container } = render(Label, {
150
+ props: { color: 'green', class: 'extra-class' }
151
+ });
152
+ const label = container.querySelector('label');
153
+ expect(label).toHaveClass('text-sm'); // from defaultClass
154
+ expect(label).toHaveClass('text-green-700'); // from color
155
+ expect(label).toHaveClass('extra-class'); // from custom class
156
+ });
157
+ });
@@ -1,37 +1,37 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
-
4
- interface Props {
5
- color?: 'gray' | 'green' | 'red' | 'disabled';
6
- defaultClass?: string;
7
- show?: boolean;
8
- class?: string;
9
- children?: Snippet;
10
- [key: string]: unknown;
11
- }
12
-
13
- let {
14
- color = "gray",
15
- defaultClass = "text-sm rtl:text-right font-medium block",
16
- show = true,
17
- class: className = "",
18
- children,
19
- ...restProps
20
- }: Props = $props();
21
-
22
- const colorClasses = {
23
- gray: "text-gray-900 dark:text-gray-300",
24
- green: "text-green-700 dark:text-green-500",
25
- red: "text-red-700 dark:text-red-500",
26
- disabled: "text-gray-400 dark:text-gray-500"
27
- };
28
-
29
- let labelClass = $derived(`${defaultClass} ${colorClasses[color] || colorClasses.gray} ${className}`.trim());
30
- </script>
31
-
32
- {#if show}
33
- <!-- svelte-ignore a11y_label_has_associated_control -->
34
- <label {...restProps} class={labelClass}>{#if children}{@render children()}{/if}</label>
35
- {:else}
36
- {#if children}{@render children()}{/if}
37
- {/if}
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ color?: 'gray' | 'green' | 'red' | 'disabled';
6
+ defaultClass?: string;
7
+ show?: boolean;
8
+ class?: string;
9
+ children?: Snippet;
10
+ [key: string]: unknown;
11
+ }
12
+
13
+ let {
14
+ color = "gray",
15
+ defaultClass = "text-sm rtl:text-right font-medium block",
16
+ show = true,
17
+ class: className = "",
18
+ children,
19
+ ...restProps
20
+ }: Props = $props();
21
+
22
+ const colorClasses = {
23
+ gray: "text-gray-900 dark:text-gray-300",
24
+ green: "text-green-700 dark:text-green-500",
25
+ red: "text-red-700 dark:text-red-500",
26
+ disabled: "text-gray-400 dark:text-gray-500"
27
+ };
28
+
29
+ let labelClass = $derived(`${defaultClass} ${colorClasses[color] || colorClasses.gray} ${className}`.trim());
30
+ </script>
31
+
32
+ {#if show}
33
+ <!-- svelte-ignore a11y_label_has_associated_control -->
34
+ <label {...restProps} class={labelClass}>{#if children}{@render children()}{/if}</label>
35
+ {:else}
36
+ {#if children}{@render children()}{/if}
37
+ {/if}
@@ -1,95 +1,99 @@
1
- import { render, screen, fireEvent } from '@testing-library/svelte';
2
- import userEvent from '@testing-library/user-event';
3
- import { expect, describe, test } from 'vitest';
4
- import ModalTestWrapper from './ModalTestWrapper.svelte';
5
-
6
- function setupTest(args) {
7
- const user = userEvent.setup();
8
- const { component } = render(ModalTestWrapper, { props: { ...args } });
9
- return { user, component };
10
- }
11
-
12
- describe('Modal Component Tests', () => {
13
- // Note: Modal renders both mobile sheet and desktop centered versions
14
- // CSS hides one based on viewport, but in tests both are in DOM
15
- // Use getAllByText and check that at least one exists
16
-
17
- test('Renders Modal when show is true', () => {
18
- setupTest({
19
- show: true,
20
- title: 'Test Title',
21
- description: 'Test Description',
22
- warningText: 'Test Warning'
23
- });
24
- // Modal renders both mobile and desktop versions, so use getAllByText
25
- expect(screen.getAllByText('Test Title').length).toBeGreaterThan(0);
26
- expect(screen.getAllByText(/Test Description/).length).toBeGreaterThan(0);
27
- expect(screen.getAllByText(/Test Warning/).length).toBeGreaterThan(0);
28
- expect(screen.getAllByRole('button', { name: /Cancel/i }).length).toBeGreaterThan(0);
29
- expect(screen.getAllByRole('button', { name: /Confirm/i }).length).toBeGreaterThan(0);
30
- });
31
-
32
- test('Does not render Modal when show is false', () => {
33
- setupTest({
34
- show: false,
35
- title: 'Test Title',
36
- description: 'Test Description',
37
- warningText: 'Test Warning'
38
- });
39
- expect(screen.queryByText('Test Title')).not.toBeInTheDocument();
40
- expect(screen.queryByText('Test Description')).not.toBeInTheDocument();
41
- expect(screen.queryByText('Test Warning')).not.toBeInTheDocument();
42
- });
43
-
44
- test('Displays the correct title, description, and warning text', () => {
45
- const title = 'Correct Title';
46
- const description = 'Correct Description';
47
- const warningText = 'Correct Warning';
48
- setupTest({
49
- show: true,
50
- title,
51
- description,
52
- warningText,
53
- });
54
- // Modal renders both mobile and desktop versions
55
- expect(screen.getAllByText(title).length).toBeGreaterThan(0);
56
- expect(screen.getAllByText(new RegExp(description)).length).toBeGreaterThan(0);
57
- expect(screen.getAllByText(new RegExp(warningText)).length).toBeGreaterThan(0);
58
- });
59
-
60
- test('Dispatches cancel event on escape key press', async () => {
61
- const { user, component } = setupTest({
62
- show: true,
63
- title: 'Test Title'
64
- });
65
-
66
- // Verify modal is open
67
- expect(screen.getAllByText('Test Title').length).toBeGreaterThan(0);
68
-
69
- // Listen for the cancel event
70
- let cancelCalled = false;
71
- component.$on('cancel', () => { cancelCalled = true; });
72
-
73
- // Press Escape key
74
- await fireEvent.keyDown(window, { key: 'Escape' });
75
-
76
- // Cancel event should be dispatched
77
- expect(cancelCalled).toBe(true);
78
- });
79
-
80
- test('Prevents propagation of click events within modal', async () => {
81
- const { user } = setupTest({
82
- show: true,
83
- title: 'Test Title'
84
- });
85
-
86
- // Find the modal sheet content (first instance)
87
- const modalText = screen.getAllByText('Test Title')[0];
88
- const modalContent = modalText.closest('.modal-sheet') || modalText.closest('.modal-centered');
89
- const clickEvent = new MouseEvent('click', { bubbles: true });
90
- modalContent.dispatchEvent(clickEvent);
91
-
92
- // Modal should still be visible
93
- expect(screen.getAllByText('Test Title').length).toBeGreaterThan(0);
94
- });
95
- });
1
+ import { render, screen, fireEvent } from '@testing-library/svelte';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { expect, describe, test, vi } from 'vitest';
4
+ import ModalTestWrapper from './ModalTestWrapper.svelte';
5
+
6
+ function setupTest(args) {
7
+ const user = userEvent.setup();
8
+ const { component, rerender } = render(ModalTestWrapper, { props: { ...args } });
9
+ return { user, component, rerender };
10
+ }
11
+
12
+ describe('Modal Component Tests', () => {
13
+ // Note: Modal renders both mobile sheet and desktop centered versions
14
+ // CSS hides one based on viewport, but in tests both are in DOM
15
+ // Use getAllByText and check that at least one exists
16
+
17
+ test('Renders Modal when show is true', () => {
18
+ setupTest({
19
+ show: true,
20
+ title: 'Test Title',
21
+ description: 'Test Description',
22
+ warningText: 'Test Warning'
23
+ });
24
+ // Modal renders both mobile and desktop versions, so use getAllByText
25
+ expect(screen.getAllByText((content, element) => content.includes('Test Title')).length).toBeGreaterThan(0);
26
+ expect(screen.getAllByText((content, element) => content.includes('Test Description')).length).toBeGreaterThan(0);
27
+ expect(screen.getAllByText((content, element) => content.includes('Test Warning')).length).toBeGreaterThan(0);
28
+ expect(screen.getAllByRole('button', { name: /Cancel/i }).length).toBeGreaterThan(0);
29
+ expect(screen.getAllByRole('button', { name: /Confirm/i }).length).toBeGreaterThan(0);
30
+ });
31
+
32
+ test('Does not render Modal when show is false', () => {
33
+ setupTest({
34
+ show: false,
35
+ title: 'Test Title',
36
+ description: 'Test Description',
37
+ warningText: 'Test Warning'
38
+ });
39
+ expect(screen.queryByText('Test Title')).not.toBeInTheDocument();
40
+ expect(screen.queryByText('Test Description')).not.toBeInTheDocument();
41
+ expect(screen.queryByText('Test Warning')).not.toBeInTheDocument();
42
+ });
43
+
44
+ test('Displays the correct title, description, and warning text', () => {
45
+ const title = 'Correct Title';
46
+ const description = 'Correct Description';
47
+ const warningText = 'Correct Warning';
48
+ setupTest({
49
+ show: true,
50
+ title,
51
+ description,
52
+ warningText,
53
+ });
54
+ // Modal renders both mobile and desktop versions
55
+ expect(screen.getAllByText((content) => content.includes(title)).length).toBeGreaterThan(0);
56
+ expect(screen.getAllByText((content) => content.includes(description)).length).toBeGreaterThan(0);
57
+ expect(screen.getAllByText((content) => content.includes(warningText)).length).toBeGreaterThan(0);
58
+ });
59
+
60
+ test('Dispatches cancel event on escape key press', async () => {
61
+ // Create a mock function to track cancel calls
62
+ const oncancel = vi.fn();
63
+
64
+ const { user } = setupTest({
65
+ show: true,
66
+ title: 'Test Title',
67
+ oncancel
68
+ });
69
+
70
+ // Verify modal is open
71
+ expect(screen.getAllByText((content) => content.includes('Test Title')).length).toBeGreaterThan(0);
72
+
73
+ // Press Escape key
74
+ await fireEvent.keyDown(window, { key: 'Escape' });
75
+
76
+ // Cancel callback should be called
77
+ expect(oncancel).toHaveBeenCalled();
78
+ });
79
+
80
+ test('Prevents propagation of click events within modal', async () => {
81
+ const { user } = setupTest({
82
+ show: true,
83
+ title: 'Test Title'
84
+ });
85
+
86
+ // Find the modal content (first instance)
87
+ const modalElements = screen.getAllByText((content) => content.includes('Test Title'));
88
+ expect(modalElements.length).toBeGreaterThan(0);
89
+
90
+ const modalContent = modalElements[0].closest('.md\\:hidden, .hidden');
91
+ if (modalContent) {
92
+ const clickEvent = new MouseEvent('click', { bubbles: true });
93
+ modalContent.dispatchEvent(clickEvent);
94
+
95
+ // Modal should still be visible
96
+ expect(screen.getAllByText((content) => content.includes('Test Title')).length).toBeGreaterThan(0);
97
+ }
98
+ });
99
+ });
@@ -1,86 +1,86 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
-
4
- import ModalProgress from "./Modal.svelte";
5
-
6
- const { Story } = defineMeta({
7
- title: "Components/Modal/ModalProgress",
8
- component: ModalProgress,
9
- });
10
- </script>
11
-
12
- <script>
13
- let show1 = $state(false);
14
- let show2 = $state(false);
15
- let show3 = $state(false);
16
- </script>
17
-
18
- <Story name="Basic Modal">
19
- <button
20
- onclick={() => (show1 = true)}
21
- class="px-4 py-2 bg-primary text-white rounded-lg"
22
- >
23
- Open Basic Modal
24
- </button>
25
- <ModalProgress bind:show={show1}>
26
- {#snippet header()}
27
- <h2 class="text-xl font-semibold mb-2">Modal Title</h2>
28
- {/snippet}
29
- {#snippet body()}
30
- <p class="text-gray-500 dark:text-gray-400">This is the modal body content.</p>
31
- {/snippet}
32
- {#snippet footer()}
33
- <button
34
- onclick={() => (show1 = false)}
35
- class="px-4 py-2 bg-gray-600 text-white rounded-lg"
36
- >
37
- Close
38
- </button>
39
- {/snippet}
40
- </ModalProgress>
41
- </Story>
42
-
43
- <Story name="Processing State">
44
- <button
45
- onclick={() => (show2 = true)}
46
- class="px-4 py-2 bg-primary text-white rounded-lg"
47
- >
48
- Open Processing Modal
49
- </button>
50
- <ModalProgress bind:show={show2} isProcessing={true}>
51
- {#snippet body()}
52
- <div class="flex flex-col items-center gap-4">
53
- <div
54
- class="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600"
55
- ></div>
56
- <p class="text-gray-500 dark:text-gray-400">Processing your request...</p>
57
- </div>
58
- {/snippet}
59
- </ModalProgress>
60
- </Story>
61
-
62
- <Story name="Success State">
63
- <button
64
- onclick={() => (show3 = true)}
65
- class="px-4 py-2 bg-green-600 text-white rounded-lg"
66
- >
67
- Open Success Modal
68
- </button>
69
- <ModalProgress bind:show={show3} isSuccess={true}>
70
- {#snippet body()}
71
- <div class="flex flex-col items-center gap-4 text-center">
72
- <div class="text-green-600 dark:text-green-400 text-5xl">✓</div>
73
- <h3 class="text-xl font-semibold">Success!</h3>
74
- <p class="text-gray-500 dark:text-gray-400">Your action was completed successfully.</p>
75
- </div>
76
- {/snippet}
77
- {#snippet footer()}
78
- <button
79
- onclick={() => (show3 = false)}
80
- class="px-4 py-2 bg-green-600 text-white rounded-lg"
81
- >
82
- Done
83
- </button>
84
- {/snippet}
85
- </ModalProgress>
86
- </Story>
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+
4
+ import ModalProgress from "./Modal.svelte";
5
+
6
+ const { Story } = defineMeta({
7
+ title: "Components/Modal/ModalProgress",
8
+ component: ModalProgress,
9
+ });
10
+ </script>
11
+
12
+ <script>
13
+ let show1 = $state(false);
14
+ let show2 = $state(false);
15
+ let show3 = $state(false);
16
+ </script>
17
+
18
+ <Story name="Basic Modal">
19
+ <button
20
+ onclick={() => (show1 = true)}
21
+ class="px-4 py-2 bg-primary text-white rounded-lg"
22
+ >
23
+ Open Basic Modal
24
+ </button>
25
+ <ModalProgress bind:show={show1}>
26
+ {#snippet header()}
27
+ <h2 class="text-xl font-semibold mb-2">Modal Title</h2>
28
+ {/snippet}
29
+ {#snippet body()}
30
+ <p class="text-gray-500 dark:text-gray-400">This is the modal body content.</p>
31
+ {/snippet}
32
+ {#snippet footer()}
33
+ <button
34
+ onclick={() => (show1 = false)}
35
+ class="px-4 py-2 bg-gray-600 text-white rounded-lg"
36
+ >
37
+ Close
38
+ </button>
39
+ {/snippet}
40
+ </ModalProgress>
41
+ </Story>
42
+
43
+ <Story name="Processing State">
44
+ <button
45
+ onclick={() => (show2 = true)}
46
+ class="px-4 py-2 bg-primary text-white rounded-lg"
47
+ >
48
+ Open Processing Modal
49
+ </button>
50
+ <ModalProgress bind:show={show2} isProcessing={true}>
51
+ {#snippet body()}
52
+ <div class="flex flex-col items-center gap-4">
53
+ <div
54
+ class="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600"
55
+ ></div>
56
+ <p class="text-gray-500 dark:text-gray-400">Processing your request...</p>
57
+ </div>
58
+ {/snippet}
59
+ </ModalProgress>
60
+ </Story>
61
+
62
+ <Story name="Success State">
63
+ <button
64
+ onclick={() => (show3 = true)}
65
+ class="px-4 py-2 bg-green-600 text-white rounded-lg"
66
+ >
67
+ Open Success Modal
68
+ </button>
69
+ <ModalProgress bind:show={show3} isSuccess={true}>
70
+ {#snippet body()}
71
+ <div class="flex flex-col items-center gap-4 text-center">
72
+ <div class="text-green-600 dark:text-green-400 text-5xl">✓</div>
73
+ <h3 class="text-xl font-semibold">Success!</h3>
74
+ <p class="text-gray-500 dark:text-gray-400">Your action was completed successfully.</p>
75
+ </div>
76
+ {/snippet}
77
+ {#snippet footer()}
78
+ <button
79
+ onclick={() => (show3 = false)}
80
+ class="px-4 py-2 bg-green-600 text-white rounded-lg"
81
+ >
82
+ Done
83
+ </button>
84
+ {/snippet}
85
+ </ModalProgress>
86
+ </Story>