@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
@@ -1,57 +1,57 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
-
4
- import DarkModeToggle from './DarkModeToggle.svelte';
5
-
6
- const { Story } = defineMeta({
7
- title: 'Components/DarkModeToggle',
8
- component: DarkModeToggle,
9
- tags: ['autodocs'],
10
- });
11
-
12
- </script>
13
-
14
- <script>
15
- </script>
16
-
17
- <Story name="Default">
18
- <div class="flex flex-col gap-4 p-4">
19
- <h3 class="text-lg font-semibold">Theme Toggle (3-State)</h3>
20
- <p class="text-sm text-gray-500 dark:text-gray-400 dark:text-gray-500 dark:text-gray-400">
21
- Cycles through: Auto → Light → Dark → Auto
22
- </p>
23
- <DarkModeToggle />
24
- <p class="text-xs text-gray-500 dark:text-gray-400">
25
- Click the toggle to cycle through theme modes. In auto mode, it follows system preferences.
26
- </p>
27
- </div>
28
- </Story>
29
-
30
- <Story name="In Header">
31
- <div class="bg-white dark:bg-gray-900 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 p-4 rounded-lg">
32
- <div class="flex items-center justify-between">
33
- <h2 class="text-xl font-bold text-gray-900 dark:text-white dark:text-white">Application Header</h2>
34
- <DarkModeToggle />
35
- </div>
36
- </div>
37
- </Story>
38
-
39
- <Story name="Theme States Demo">
40
- <div class="space-y-4 p-4">
41
- <div class="bg-white dark:bg-gray-900 dark:bg-gray-800 p-6 rounded-lg border border-gray-200 dark:border-gray-700">
42
- <h3 class="text-lg font-semibold text-gray-900 dark:text-white dark:text-white mb-2">
43
- Current Theme Demo
44
- </h3>
45
- <p class="text-gray-500 dark:text-gray-400 dark:text-gray-300 mb-4">
46
- This content changes appearance based on the selected theme mode.
47
- </p>
48
- <DarkModeToggle />
49
- </div>
50
-
51
- <div class="text-sm text-gray-500 dark:text-gray-400 dark:text-gray-500 dark:text-gray-400">
52
- <p><strong>Auto Mode:</strong> Follows system preferences</p>
53
- <p><strong>Light Mode:</strong> Forces light theme</p>
54
- <p><strong>Dark Mode:</strong> Forces dark theme</p>
55
- </div>
56
- </div>
57
- </Story>
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+
4
+ import DarkModeToggle from './DarkModeToggle.svelte';
5
+
6
+ const { Story } = defineMeta({
7
+ title: 'Components/DarkModeToggle',
8
+ component: DarkModeToggle,
9
+ tags: ['autodocs'],
10
+ });
11
+
12
+ </script>
13
+
14
+ <script>
15
+ </script>
16
+
17
+ <Story name="Default">
18
+ <div class="flex flex-col gap-4 p-4">
19
+ <h3 class="text-lg font-semibold">Theme Toggle (3-State)</h3>
20
+ <p class="text-sm text-gray-500 dark:text-gray-400 dark:text-gray-500 dark:text-gray-400">
21
+ Cycles through: Auto → Light → Dark → Auto
22
+ </p>
23
+ <DarkModeToggle />
24
+ <p class="text-xs text-gray-500 dark:text-gray-400">
25
+ Click the toggle to cycle through theme modes. In auto mode, it follows system preferences.
26
+ </p>
27
+ </div>
28
+ </Story>
29
+
30
+ <Story name="In Header">
31
+ <div class="bg-white dark:bg-gray-900 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 p-4 rounded-lg">
32
+ <div class="flex items-center justify-between">
33
+ <h2 class="text-xl font-bold text-gray-900 dark:text-white dark:text-white">Application Header</h2>
34
+ <DarkModeToggle />
35
+ </div>
36
+ </div>
37
+ </Story>
38
+
39
+ <Story name="Theme States Demo">
40
+ <div class="space-y-4 p-4">
41
+ <div class="bg-white dark:bg-gray-900 dark:bg-gray-800 p-6 rounded-lg border border-gray-200 dark:border-gray-700">
42
+ <h3 class="text-lg font-semibold text-gray-900 dark:text-white dark:text-white mb-2">
43
+ Current Theme Demo
44
+ </h3>
45
+ <p class="text-gray-500 dark:text-gray-400 dark:text-gray-300 mb-4">
46
+ This content changes appearance based on the selected theme mode.
47
+ </p>
48
+ <DarkModeToggle />
49
+ </div>
50
+
51
+ <div class="text-sm text-gray-500 dark:text-gray-400 dark:text-gray-500 dark:text-gray-400">
52
+ <p><strong>Auto Mode:</strong> Follows system preferences</p>
53
+ <p><strong>Light Mode:</strong> Forces light theme</p>
54
+ <p><strong>Dark Mode:</strong> Forces dark theme</p>
55
+ </div>
56
+ </div>
57
+ </Story>
@@ -1,136 +1,136 @@
1
- <script lang="ts">
2
- import { onMount } from "svelte";
3
- import SunIcon from "./Icons/SunIcon.svelte";
4
- import MoonIcon from "./Icons/MoonIcon.svelte";
5
- import Button from "./Button/Button.svelte";
6
-
7
- interface Props {
8
- /** Container selector for applying dark class */
9
- containerSelector?: string;
10
- }
11
-
12
- let { containerSelector = ".performer-portal" }: Props = $props();
13
-
14
- let themeMode = $state<"auto" | "light" | "dark">("auto");
15
- let isDark = $state(false);
16
-
17
- function setMicdropDarkClass(enable: boolean) {
18
- const container = document.querySelector(containerSelector);
19
- if (enable) {
20
- if (container) container.classList.add("dark");
21
- document.documentElement.classList.add("dark");
22
- } else {
23
- if (container) container.classList.remove("dark");
24
- document.documentElement.classList.remove("dark");
25
- }
26
- }
27
-
28
- function getSystemPreference() {
29
- return window.matchMedia("(prefers-color-scheme: dark)").matches;
30
- }
31
-
32
- function applyTheme() {
33
- if (themeMode === "auto") {
34
- isDark = getSystemPreference();
35
- } else {
36
- isDark = themeMode === "dark";
37
- }
38
- setMicdropDarkClass(isDark);
39
- }
40
-
41
- onMount(() => {
42
- const savedTheme = localStorage.getItem("theme");
43
-
44
- if (savedTheme === "dark" || savedTheme === "light") {
45
- themeMode = savedTheme;
46
- } else {
47
- themeMode = "auto";
48
- }
49
-
50
- applyTheme();
51
-
52
- const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
53
- const handleChange = () => {
54
- if (themeMode === "auto") {
55
- applyTheme();
56
- }
57
- };
58
- mediaQuery.addEventListener("change", handleChange);
59
-
60
- return () => {
61
- mediaQuery.removeEventListener("change", handleChange);
62
- };
63
- });
64
-
65
- function toggleTheme(event: MouseEvent) {
66
- if (themeMode === "auto") {
67
- themeMode = "light";
68
- localStorage.setItem("theme", "light");
69
- } else if (themeMode === "light") {
70
- themeMode = "dark";
71
- localStorage.setItem("theme", "dark");
72
- } else {
73
- themeMode = "auto";
74
- localStorage.removeItem("theme");
75
- }
76
-
77
- applyTheme();
78
-
79
- if (event?.currentTarget) {
80
- (event.currentTarget as HTMLElement).blur();
81
- }
82
- }
83
-
84
- let titleText = $derived(
85
- themeMode === "auto"
86
- ? "Auto theme (following device) - click for light mode"
87
- : themeMode === "light"
88
- ? "Light mode - click for dark mode"
89
- : "Dark mode - click for auto"
90
- );
91
- </script>
92
-
93
- <Button
94
- variant="alternative"
95
- onclick={toggleTheme}
96
- class="relative h-10 w-10 overflow-hidden p-0"
97
- aria-label="Toggle theme"
98
- title={titleText}
99
- >
100
- <span
101
- class="text-amber-500 transition-all duration-300 {themeMode === 'light'
102
- ? 'scale-100 rotate-0 opacity-100'
103
- : 'pointer-events-none absolute scale-0 rotate-180 opacity-0'}"
104
- >
105
- <SunIcon size="20" />
106
- </span>
107
-
108
- <span
109
- class="transition-all duration-300 {themeMode === 'dark'
110
- ? 'scale-100 rotate-0 opacity-100'
111
- : 'pointer-events-none absolute scale-0 rotate-180 opacity-0'}"
112
- >
113
- <MoonIcon size="20" color="white" />
114
- </span>
115
-
116
- {#if themeMode === "auto"}
117
- <div class="absolute inset-0 overflow-hidden rounded-lg">
118
- <div
119
- class="absolute flex h-full w-full items-center justify-center bg-white"
120
- style="clip-path: polygon(0 0, 100% 0, 0 100%)"
121
- >
122
- <span class="-translate-x-1 -translate-y-1 text-amber-500">
123
- <SunIcon size="12" />
124
- </span>
125
- </div>
126
- <div
127
- class="absolute flex h-full w-full items-center justify-center bg-gray-800"
128
- style="clip-path: polygon(100% 0, 100% 100%, 0 100%)"
129
- >
130
- <span class="translate-x-1 translate-y-1">
131
- <MoonIcon size="12" color="white" />
132
- </span>
133
- </div>
134
- </div>
135
- {/if}
136
- </Button>
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import SunIcon from "./Icons/SunIcon.svelte";
4
+ import MoonIcon from "./Icons/MoonIcon.svelte";
5
+ import Button from "./Button/Button.svelte";
6
+
7
+ interface Props {
8
+ /** Container selector for applying dark class */
9
+ containerSelector?: string;
10
+ }
11
+
12
+ let { containerSelector = ".performer-portal" }: Props = $props();
13
+
14
+ let themeMode = $state<"auto" | "light" | "dark">("auto");
15
+ let isDark = $state(false);
16
+
17
+ function setMicdropDarkClass(enable: boolean) {
18
+ const container = document.querySelector(containerSelector);
19
+ if (enable) {
20
+ if (container) container.classList.add("dark");
21
+ document.documentElement.classList.add("dark");
22
+ } else {
23
+ if (container) container.classList.remove("dark");
24
+ document.documentElement.classList.remove("dark");
25
+ }
26
+ }
27
+
28
+ function getSystemPreference() {
29
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
30
+ }
31
+
32
+ function applyTheme() {
33
+ if (themeMode === "auto") {
34
+ isDark = getSystemPreference();
35
+ } else {
36
+ isDark = themeMode === "dark";
37
+ }
38
+ setMicdropDarkClass(isDark);
39
+ }
40
+
41
+ onMount(() => {
42
+ const savedTheme = localStorage.getItem("theme");
43
+
44
+ if (savedTheme === "dark" || savedTheme === "light") {
45
+ themeMode = savedTheme;
46
+ } else {
47
+ themeMode = "auto";
48
+ }
49
+
50
+ applyTheme();
51
+
52
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
53
+ const handleChange = () => {
54
+ if (themeMode === "auto") {
55
+ applyTheme();
56
+ }
57
+ };
58
+ mediaQuery.addEventListener("change", handleChange);
59
+
60
+ return () => {
61
+ mediaQuery.removeEventListener("change", handleChange);
62
+ };
63
+ });
64
+
65
+ function toggleTheme(event: MouseEvent) {
66
+ if (themeMode === "auto") {
67
+ themeMode = "light";
68
+ localStorage.setItem("theme", "light");
69
+ } else if (themeMode === "light") {
70
+ themeMode = "dark";
71
+ localStorage.setItem("theme", "dark");
72
+ } else {
73
+ themeMode = "auto";
74
+ localStorage.removeItem("theme");
75
+ }
76
+
77
+ applyTheme();
78
+
79
+ if (event?.currentTarget) {
80
+ (event.currentTarget as HTMLElement).blur();
81
+ }
82
+ }
83
+
84
+ let titleText = $derived(
85
+ themeMode === "auto"
86
+ ? "Auto theme (following device) - click for light mode"
87
+ : themeMode === "light"
88
+ ? "Light mode - click for dark mode"
89
+ : "Dark mode - click for auto"
90
+ );
91
+ </script>
92
+
93
+ <Button
94
+ variant="alternative"
95
+ onclick={toggleTheme}
96
+ class="relative h-10 w-10 overflow-hidden p-0"
97
+ aria-label="Toggle theme"
98
+ title={titleText}
99
+ >
100
+ <span
101
+ class="text-amber-500 transition-all duration-300 {themeMode === 'light'
102
+ ? 'scale-100 rotate-0 opacity-100'
103
+ : 'pointer-events-none absolute scale-0 rotate-180 opacity-0'}"
104
+ >
105
+ <SunIcon size="20" />
106
+ </span>
107
+
108
+ <span
109
+ class="transition-all duration-300 {themeMode === 'dark'
110
+ ? 'scale-100 rotate-0 opacity-100'
111
+ : 'pointer-events-none absolute scale-0 rotate-180 opacity-0'}"
112
+ >
113
+ <MoonIcon size="20" color="white" />
114
+ </span>
115
+
116
+ {#if themeMode === "auto"}
117
+ <div class="absolute inset-0 overflow-hidden rounded-lg">
118
+ <div
119
+ class="absolute flex h-full w-full items-center justify-center bg-white"
120
+ style="clip-path: polygon(0 0, 100% 0, 0 100%)"
121
+ >
122
+ <span class="-translate-x-1 -translate-y-1 text-amber-500">
123
+ <SunIcon size="12" />
124
+ </span>
125
+ </div>
126
+ <div
127
+ class="absolute flex h-full w-full items-center justify-center bg-gray-800"
128
+ style="clip-path: polygon(100% 0, 100% 100%, 0 100%)"
129
+ >
130
+ <span class="translate-x-1 translate-y-1">
131
+ <MoonIcon size="12" color="white" />
132
+ </span>
133
+ </div>
134
+ </div>
135
+ {/if}
136
+ </Button>
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Drawer.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.spec.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Drawer/Drawer.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,212 @@
1
+ import { render, screen, waitFor } from '@testing-library/svelte';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { expect, describe, test, vi, beforeEach, afterEach } from 'vitest';
4
+ import Drawer from './Drawer.svelte';
5
+
6
+ describe('Drawer Component', () => {
7
+ beforeEach(() => {
8
+ // Reset body overflow before each test
9
+ document.body.style.overflow = '';
10
+ });
11
+
12
+ afterEach(() => {
13
+ // Clean up body overflow after each test
14
+ document.body.style.overflow = '';
15
+ });
16
+
17
+ test('does not render when show is false and hidden is true', () => {
18
+ const { container } = render(Drawer, { props: { show: false, hidden: true } });
19
+ expect(container.querySelector('[role="dialog"]')).not.toBeInTheDocument();
20
+ });
21
+
22
+ test('renders when show is true', () => {
23
+ const { container } = render(Drawer, { props: { show: true } });
24
+ expect(container.querySelector('[role="dialog"]')).toBeInTheDocument();
25
+ });
26
+
27
+ test('renders when hidden is false', () => {
28
+ const { container } = render(Drawer, { props: { hidden: false } });
29
+ expect(container.querySelector('[role="dialog"]')).toBeInTheDocument();
30
+ });
31
+
32
+ test('has role="dialog" and aria-modal="true"', () => {
33
+ const { container } = render(Drawer, { props: { show: true } });
34
+ const dialog = container.querySelector('[role="dialog"]');
35
+ expect(dialog).toHaveAttribute('aria-modal', 'true');
36
+ });
37
+
38
+ test('renders title when provided', () => {
39
+ render(Drawer, { props: { show: true, title: 'Test Drawer', id: 'test-drawer' } });
40
+ expect(screen.getByText('Test Drawer')).toBeInTheDocument();
41
+ });
42
+
43
+ test('applies custom className', () => {
44
+ const { container } = render(Drawer, { props: { show: true, class: 'custom-drawer' } });
45
+ const dialog = container.querySelector('[role="dialog"]');
46
+ expect(dialog).toHaveClass('custom-drawer');
47
+ });
48
+
49
+ test('renders backdrop by default when visible', () => {
50
+ const { container } = render(Drawer, { props: { show: true } });
51
+ const backdrop = container.querySelector('[role="presentation"]');
52
+ expect(backdrop).toBeInTheDocument();
53
+ });
54
+
55
+ test('does not render backdrop when backdrop is false', () => {
56
+ const { container } = render(Drawer, { props: { show: true, backdrop: false } });
57
+ const backdrop = container.querySelector('[role="presentation"]');
58
+ expect(backdrop).not.toBeInTheDocument();
59
+ });
60
+
61
+ test('passes through id prop', () => {
62
+ const { container } = render(Drawer, { props: { show: true, id: 'my-drawer' } });
63
+ const dialog = container.querySelector('#my-drawer');
64
+ expect(dialog).toBeInTheDocument();
65
+ });
66
+ });
67
+
68
+ describe('Drawer Placements', () => {
69
+ test('left placement has left-0 class', () => {
70
+ const { container } = render(Drawer, { props: { show: true, placement: 'left' } });
71
+ const dialog = container.querySelector('[role="dialog"]');
72
+ expect(dialog).toHaveClass('left-0');
73
+ });
74
+
75
+ test('right placement has right-0 class', () => {
76
+ const { container } = render(Drawer, { props: { show: true, placement: 'right' } });
77
+ const dialog = container.querySelector('[role="dialog"]');
78
+ expect(dialog).toHaveClass('right-0');
79
+ });
80
+
81
+ test('top placement has top-0 class', () => {
82
+ const { container } = render(Drawer, { props: { show: true, placement: 'top' } });
83
+ const dialog = container.querySelector('[role="dialog"]');
84
+ expect(dialog).toHaveClass('top-0');
85
+ });
86
+
87
+ test('bottom placement has bottom-0 class', () => {
88
+ const { container } = render(Drawer, { props: { show: true, placement: 'bottom' } });
89
+ const dialog = container.querySelector('[role="dialog"]');
90
+ expect(dialog).toHaveClass('bottom-0');
91
+ });
92
+ });
93
+
94
+ describe('Drawer Widths', () => {
95
+ test('sm width applies w-64', () => {
96
+ const { container } = render(Drawer, { props: { show: true, width: 'sm' } });
97
+ const dialog = container.querySelector('[role="dialog"]');
98
+ expect(dialog).toHaveClass('w-64');
99
+ });
100
+
101
+ test('md width applies w-80 (default)', () => {
102
+ const { container } = render(Drawer, { props: { show: true } });
103
+ const dialog = container.querySelector('[role="dialog"]');
104
+ expect(dialog).toHaveClass('w-80');
105
+ });
106
+
107
+ test('lg width applies w-96', () => {
108
+ const { container } = render(Drawer, { props: { show: true, width: 'lg' } });
109
+ const dialog = container.querySelector('[role="dialog"]');
110
+ expect(dialog).toHaveClass('w-96');
111
+ });
112
+
113
+ test('full width applies w-full', () => {
114
+ const { container } = render(Drawer, { props: { show: true, width: 'full' } });
115
+ const dialog = container.querySelector('[role="dialog"]');
116
+ expect(dialog).toHaveClass('w-full');
117
+ });
118
+ });
119
+
120
+ describe('Drawer Accessibility', () => {
121
+ test('has tabindex="-1" for focus management', () => {
122
+ const { container } = render(Drawer, { props: { show: true } });
123
+ const dialog = container.querySelector('[role="dialog"]');
124
+ expect(dialog).toHaveAttribute('tabindex', '-1');
125
+ });
126
+
127
+ test('has aria-labelledby when title and id are provided', () => {
128
+ const { container } = render(Drawer, { props: { show: true, title: 'Test', id: 'test-drawer' } });
129
+ const dialog = container.querySelector('[role="dialog"]');
130
+ expect(dialog).toHaveAttribute('aria-labelledby', 'test-drawer-label');
131
+ });
132
+ });
133
+
134
+ describe('Drawer Styling', () => {
135
+ test('has fixed positioning', () => {
136
+ const { container } = render(Drawer, { props: { show: true } });
137
+ const dialog = container.querySelector('[role="dialog"]');
138
+ expect(dialog).toHaveClass('fixed');
139
+ });
140
+
141
+ test('has z-40 for stacking', () => {
142
+ const { container } = render(Drawer, { props: { show: true } });
143
+ const dialog = container.querySelector('[role="dialog"]');
144
+ expect(dialog).toHaveClass('z-40');
145
+ });
146
+
147
+ test('has flex flex-col layout', () => {
148
+ const { container } = render(Drawer, { props: { show: true } });
149
+ const dialog = container.querySelector('[role="dialog"]');
150
+ expect(dialog).toHaveClass('flex');
151
+ expect(dialog).toHaveClass('flex-col');
152
+ });
153
+
154
+ test('has bg-white background', () => {
155
+ const { container } = render(Drawer, { props: { show: true } });
156
+ const dialog = container.querySelector('[role="dialog"]');
157
+ expect(dialog).toHaveClass('bg-white');
158
+ });
159
+
160
+ test('has dark mode background', () => {
161
+ const { container } = render(Drawer, { props: { show: true } });
162
+ const dialog = container.querySelector('[role="dialog"]');
163
+ expect(dialog).toHaveClass('dark:bg-gray-800');
164
+ });
165
+ });
166
+
167
+ describe('Drawer Edge Mode', () => {
168
+ test('shows edge trigger when edge=true, placement=bottom, and not visible', () => {
169
+ const { container } = render(Drawer, { props: { edge: true, placement: 'bottom', show: false, hidden: true } });
170
+ const edgeTrigger = container.querySelector('.cursor-pointer');
171
+ expect(edgeTrigger).toBeInTheDocument();
172
+ });
173
+
174
+ test('hides edge trigger when drawer is visible', () => {
175
+ const { container } = render(Drawer, { props: { edge: true, placement: 'bottom', show: true } });
176
+ // Edge trigger should not be visible when drawer is open
177
+ const edgeTriggers = container.querySelectorAll('.cursor-pointer.fixed');
178
+ // The drawer itself might have cursor classes, so check for the specific edge trigger pattern
179
+ expect(container.querySelector('[role="dialog"]')).toBeInTheDocument();
180
+ });
181
+ });
182
+
183
+ describe('Drawer Callbacks', () => {
184
+ test('onclose prop is accepted', () => {
185
+ const onclose = vi.fn();
186
+ const { container } = render(Drawer, {
187
+ props: { show: true, closeOnBackdropClick: true, onclose }
188
+ });
189
+ // Verify drawer renders with onclose callback
190
+ expect(container.querySelector('[role="dialog"]')).toBeInTheDocument();
191
+ });
192
+
193
+ test('closeOnBackdropClick prop defaults to true', () => {
194
+ const { container } = render(Drawer, { props: { show: true } });
195
+ // Drawer renders with default closeOnBackdropClick behavior
196
+ expect(container.querySelector('[role="presentation"]')).toBeInTheDocument();
197
+ });
198
+
199
+ test('closeOnEscape prop defaults to true', () => {
200
+ const { container } = render(Drawer, { props: { show: true } });
201
+ // Drawer accepts closeOnEscape prop
202
+ expect(container.querySelector('[role="dialog"]')).toBeInTheDocument();
203
+ });
204
+
205
+ test('onopen prop is accepted', () => {
206
+ const onopen = vi.fn();
207
+ const { container } = render(Drawer, {
208
+ props: { show: true, onopen }
209
+ });
210
+ expect(container.querySelector('[role="dialog"]')).toBeInTheDocument();
211
+ });
212
+ });