@getmicdrop/svelte-components 5.6.0 → 5.7.1

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 (285) hide show
  1. package/dist/calendar/AboutShow/AboutShow.svelte +172 -172
  2. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
  3. package/dist/calendar/FAQs/FAQs.svelte +75 -75
  4. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
  5. package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
  6. package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
  7. package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
  8. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
  9. package/dist/components/Heading.svelte +57 -0
  10. package/dist/components/Heading.svelte.d.ts +12 -0
  11. package/dist/components/Heading.svelte.d.ts.map +1 -0
  12. package/dist/components/Layout/AppShell.svelte +104 -104
  13. package/dist/components/Layout/ContentSection.svelte +80 -80
  14. package/dist/components/Layout/Grid.svelte +4 -4
  15. package/dist/components/Layout/Heading.svelte +81 -81
  16. package/dist/components/Layout/PageContainer.svelte +69 -69
  17. package/dist/components/Layout/Responsive.svelte +75 -75
  18. package/dist/components/Layout/Section.svelte +80 -80
  19. package/dist/components/Layout/ShowOnDesktop.svelte +37 -37
  20. package/dist/components/Layout/ShowOnMobile.svelte +37 -37
  21. package/dist/components/Layout/Sidebar.svelte +108 -108
  22. package/dist/components/Layout/Stack.spec.js +1 -1
  23. package/dist/components/Layout/Stack.svelte +6 -6
  24. package/dist/components/Layout/Text.svelte +87 -87
  25. package/dist/components/Layout/TwoColumn.svelte +108 -108
  26. package/dist/components/Layout/__tests__/AppShell.test.d.ts +2 -0
  27. package/dist/components/Layout/__tests__/AppShell.test.d.ts.map +1 -0
  28. package/dist/components/Layout/__tests__/AppShell.test.js +95 -0
  29. package/dist/components/Layout/__tests__/ContentSection.test.d.ts +2 -0
  30. package/dist/components/Layout/__tests__/ContentSection.test.d.ts.map +1 -0
  31. package/dist/components/Layout/__tests__/ContentSection.test.js +112 -0
  32. package/dist/components/Layout/__tests__/PageContainer.test.d.ts +2 -0
  33. package/dist/components/Layout/__tests__/PageContainer.test.d.ts.map +1 -0
  34. package/dist/components/Layout/__tests__/PageContainer.test.js +133 -0
  35. package/dist/components/Layout/__tests__/Responsive.test.d.ts +2 -0
  36. package/dist/components/Layout/__tests__/Responsive.test.d.ts.map +1 -0
  37. package/dist/components/Layout/__tests__/Responsive.test.js +123 -0
  38. package/dist/components/Layout/index.d.ts +11 -0
  39. package/dist/components/Layout/index.d.ts.map +1 -0
  40. package/dist/components/Layout/index.js +14 -0
  41. package/dist/components/Text.svelte +40 -0
  42. package/dist/components/Text.svelte.d.ts +11 -0
  43. package/dist/components/Text.svelte.d.ts.map +1 -0
  44. package/dist/components/index.d.ts +4 -0
  45. package/dist/components/index.d.ts.map +1 -0
  46. package/dist/components/index.js +12 -0
  47. package/dist/constants/validation.js +91 -91
  48. package/dist/constants/validation.spec.js +64 -64
  49. package/dist/datetime/__tests__/format.test.js +1 -1
  50. package/dist/datetime/__tests__/parse.test.js +1 -1
  51. package/dist/datetime/__tests__/timezone.test.js +1 -1
  52. package/dist/datetime/parse.js +1 -1
  53. package/dist/forms/createFormStore.svelte.js +0 -1
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +50 -40
  56. package/dist/patterns/data/DataGrid.svelte +45 -45
  57. package/dist/patterns/data/DataList.svelte +24 -24
  58. package/dist/patterns/data/DataTable.svelte +36 -36
  59. package/dist/patterns/forms/FormActions.spec.js +95 -95
  60. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  61. package/dist/patterns/forms/FormActions.svelte +46 -46
  62. package/dist/patterns/forms/FormGrid.svelte +33 -33
  63. package/dist/patterns/forms/FormSection.svelte +32 -32
  64. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  65. package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
  66. package/dist/patterns/layout/Sidebar.svelte +39 -39
  67. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  68. package/dist/patterns/navigation/BottomNav.svelte +74 -64
  69. package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
  70. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  71. package/dist/patterns/navigation/Header.svelte +193 -193
  72. package/dist/patterns/page/PageHeader.svelte +18 -18
  73. package/dist/patterns/page/PageLayout.svelte +40 -40
  74. package/dist/patterns/page/PageLoader.spec.js +57 -57
  75. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  76. package/dist/patterns/page/PageLoader.svelte +24 -24
  77. package/dist/patterns/page/SectionHeader.svelte +29 -29
  78. package/dist/presets/badges.js +112 -112
  79. package/dist/presets/buttons.js +76 -76
  80. package/dist/presets/index.js +9 -9
  81. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  82. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  83. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  84. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -107
  85. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +2 -2
  86. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -1
  87. package/dist/primitives/Alert/Alert.spec.js +173 -173
  88. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  89. package/dist/primitives/Alert/Alert.svelte +27 -27
  90. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  91. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  92. package/dist/primitives/Badges/Badge.spec.js +144 -144
  93. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  94. package/dist/primitives/Badges/Badge.svelte +79 -79
  95. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -136
  96. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  97. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  98. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -122
  99. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  100. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  101. package/dist/primitives/Button/Button.spec.js +223 -223
  102. package/dist/primitives/Button/Button.stories.svelte +76 -76
  103. package/dist/primitives/Button/Button.svelte +270 -270
  104. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
  105. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  106. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  107. package/dist/primitives/Card.spec.js +49 -49
  108. package/dist/primitives/Card.stories.svelte +22 -22
  109. package/dist/primitives/Card.svelte +28 -28
  110. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  111. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  112. package/dist/primitives/DarkModeToggle.spec.js +390 -390
  113. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  114. package/dist/primitives/DarkModeToggle.svelte +136 -136
  115. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  116. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  117. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  118. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  119. package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -0
  120. package/dist/primitives/Dropdown/DropdownDivider.svelte.d.ts +7 -0
  121. package/dist/primitives/Dropdown/DropdownDivider.svelte.d.ts.map +1 -0
  122. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  123. package/dist/primitives/Helper/Helper.svelte +33 -0
  124. package/dist/primitives/Helper/Helper.svelte.d.ts +18 -0
  125. package/dist/primitives/Helper/Helper.svelte.d.ts.map +1 -0
  126. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  127. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  128. package/dist/primitives/Icons/Availability.svelte +14 -14
  129. package/dist/primitives/Icons/Back.svelte +14 -14
  130. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  131. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  132. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  133. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  134. package/dist/primitives/Icons/Copy.svelte +15 -15
  135. package/dist/primitives/Icons/Cross.svelte +5 -5
  136. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  137. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  138. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  139. package/dist/primitives/Icons/Home.svelte +15 -15
  140. package/dist/primitives/Icons/Icon.spec.js +169 -169
  141. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  142. package/dist/primitives/Icons/Icon.svelte +52 -52
  143. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  144. package/dist/primitives/Icons/Info.svelte +7 -7
  145. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  146. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  147. package/dist/primitives/Icons/Message.svelte +15 -15
  148. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  149. package/dist/primitives/Icons/More.svelte +21 -21
  150. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  151. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  152. package/dist/primitives/Icons/Notification.svelte +14 -14
  153. package/dist/primitives/Icons/Payment.svelte +14 -14
  154. package/dist/primitives/Icons/Profile.svelte +21 -21
  155. package/dist/primitives/Icons/Reload.svelte +29 -29
  156. package/dist/primitives/Icons/Shows.svelte +21 -21
  157. package/dist/primitives/Icons/Signout.svelte +21 -21
  158. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  159. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  160. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  161. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  162. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  163. package/dist/primitives/Input/Input.spec.js +573 -573
  164. package/dist/primitives/Input/Input.stories.svelte +139 -139
  165. package/dist/primitives/Input/Input.svelte +416 -417
  166. package/dist/primitives/Input/Input.svelte.d.ts +2 -4
  167. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  168. package/dist/primitives/Input/Select.spec.js +212 -212
  169. package/dist/primitives/Input/Select.stories.svelte +112 -112
  170. package/dist/primitives/Input/Select.svelte +128 -128
  171. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  172. package/dist/primitives/Input/Textarea.svelte +35 -35
  173. package/dist/primitives/Label/Label.svelte +37 -37
  174. package/dist/primitives/Modal/Modal.spec.js +99 -99
  175. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  176. package/dist/primitives/Modal/Modal.svelte +157 -158
  177. package/dist/primitives/Modal/Modal.svelte.d.ts +6 -8
  178. package/dist/primitives/Modal/Modal.svelte.d.ts.map +1 -1
  179. package/dist/primitives/NumberInput/NumberInput.svelte +105 -106
  180. package/dist/primitives/NumberInput/NumberInput.svelte.d.ts +0 -2
  181. package/dist/primitives/NumberInput/NumberInput.svelte.d.ts.map +1 -1
  182. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  183. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  184. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  185. package/dist/primitives/Radio/Radio.svelte +67 -67
  186. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  187. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  188. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  189. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  190. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  191. package/dist/primitives/Spinner/Spinner.spec.js +71 -71
  192. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  193. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  194. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  195. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  196. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  197. package/dist/primitives/Toggle.spec.js +143 -143
  198. package/dist/primitives/Toggle.stories.svelte +92 -92
  199. package/dist/primitives/Toggle.svelte +70 -71
  200. package/dist/primitives/Toggle.svelte.d.ts +2 -4
  201. package/dist/primitives/Toggle.svelte.d.ts.map +1 -1
  202. package/dist/primitives/Tooltip/Tooltip.svelte +83 -0
  203. package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +15 -0
  204. package/dist/primitives/Tooltip/Tooltip.svelte.d.ts.map +1 -0
  205. package/dist/primitives/Typography/Typography.svelte +53 -53
  206. package/dist/primitives/ValidationError.spec.js +103 -103
  207. package/dist/primitives/ValidationError.stories.svelte +69 -69
  208. package/dist/primitives/ValidationError.svelte +29 -29
  209. package/dist/primitives/index.d.ts +3 -0
  210. package/dist/primitives/index.js +91 -84
  211. package/dist/recipes/CropImage/CropImage.spec.js +208 -208
  212. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  213. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  214. package/dist/recipes/ImageUploader/ImageUploader.spec.js +6 -5
  215. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  216. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  217. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  218. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  219. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  220. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  221. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  222. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
  223. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  224. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  225. package/dist/recipes/fields/FormField.svelte +58 -58
  226. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  227. package/dist/recipes/fields/SelectField.svelte +80 -80
  228. package/dist/recipes/fields/TextareaField.svelte +97 -97
  229. package/dist/recipes/fields/ToggleField.svelte +60 -60
  230. package/dist/recipes/fields/index.js +7 -7
  231. package/dist/recipes/inputs/MultiSelect.spec.js +258 -258
  232. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  233. package/dist/recipes/inputs/MultiSelect.svelte +277 -256
  234. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +54 -21
  235. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  236. package/dist/recipes/inputs/OTPInput.spec.js +251 -251
  237. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  238. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  239. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  240. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
  241. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +9 -4
  242. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  243. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +332 -327
  244. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts +12 -1
  245. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
  246. package/dist/recipes/inputs/Search.svelte +37 -37
  247. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  248. package/dist/recipes/modals/AlertModal.svelte +130 -130
  249. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -206
  250. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  251. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  252. package/dist/recipes/modals/InputModal.svelte +182 -182
  253. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  254. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  255. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  256. package/dist/recipes/modals/StatusModal.svelte +206 -206
  257. package/dist/services/EventService.js +75 -75
  258. package/dist/services/EventService.spec.js +217 -217
  259. package/dist/services/ShowService.spec.js +345 -345
  260. package/dist/stores/auth.js +36 -36
  261. package/dist/stores/auth.spec.js +139 -139
  262. package/dist/stores/toaster.js +13 -13
  263. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  264. package/dist/stories/ButtonAuditReview.svelte +427 -427
  265. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  266. package/dist/stories/PatternsGallery.svelte +206 -206
  267. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  268. package/dist/stories/PrimitivesGallery.svelte +725 -725
  269. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  270. package/dist/stories/RecipesGallery.svelte +271 -271
  271. package/dist/stories/button-audit-manifest.json +11186 -11186
  272. package/dist/tailwind/preset.cjs +82 -82
  273. package/dist/telemetry.js +405 -405
  274. package/dist/telemetry.server.spec.js +11 -8
  275. package/dist/telemetry.spec.js +1169 -1144
  276. package/dist/tokens/tokens.css +87 -87
  277. package/dist/tokens/typography-base.css +163 -163
  278. package/dist/utils/apiConfig.spec.js +219 -219
  279. package/dist/utils/imageValidation.spec.js +62 -59
  280. package/dist/utils/logger.d.ts +19 -0
  281. package/dist/utils/logger.d.ts.map +1 -0
  282. package/dist/utils/logger.js +47 -0
  283. package/dist/utils/transitions.js +62 -62
  284. package/dist/utils/utils.js +354 -354
  285. package/package.json +296 -292
@@ -1,62 +1,62 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
-
4
- import { Toaster } from "svelte-sonner";
5
- import { showToast } from "../../stores/toaster";
6
-
7
- const { Story } = defineMeta({
8
- title: "Components/Toaster",
9
- });
10
-
11
- function showSuccessToast() {
12
- showToast("Action completed successfully!", "success");
13
- }
14
-
15
- function showErrorToast() {
16
- showToast("An error occurred. Please try again.", "error");
17
- }
18
- </script>
19
-
20
- <Story name="Trigger Success Toast">
21
- <div class="p-8">
22
- <Toaster
23
- position="bottom-right"
24
- toastOptions={{
25
- class: "text-sm bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700",
26
- classes: {
27
- error: "text-red-600 dark:text-red-400",
28
- success: "text-green-600 dark:text-green-400",
29
- },
30
- }}
31
- />
32
- <button
33
- onclick={showSuccessToast}
34
- class="px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700"
35
- >
36
- Show Success Toast
37
- </button>
38
- <p class="mt-4 text-sm text-gray-500 dark:text-gray-400">Click the button to see a success toast notification</p>
39
- </div>
40
- </Story>
41
-
42
- <Story name="Trigger Error Toast">
43
- <div class="p-8">
44
- <Toaster
45
- position="bottom-right"
46
- toastOptions={{
47
- class: "text-sm bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700",
48
- classes: {
49
- error: "text-red-600 dark:text-red-400",
50
- success: "text-green-600 dark:text-green-400",
51
- },
52
- }}
53
- />
54
- <button
55
- onclick={showErrorToast}
56
- class="px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700"
57
- >
58
- Show Error Toast
59
- </button>
60
- <p class="mt-4 text-sm text-gray-500 dark:text-gray-400">Click the button to see an error toast notification</p>
61
- </div>
62
- </Story>
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+
4
+ import { Toaster } from "svelte-sonner";
5
+ import { showToast } from "../../stores/toaster";
6
+
7
+ const { Story } = defineMeta({
8
+ title: "Components/Toaster",
9
+ });
10
+
11
+ function showSuccessToast() {
12
+ showToast("Action completed successfully!", "success");
13
+ }
14
+
15
+ function showErrorToast() {
16
+ showToast("An error occurred. Please try again.", "error");
17
+ }
18
+ </script>
19
+
20
+ <Story name="Trigger Success Toast">
21
+ <div class="p-8">
22
+ <Toaster
23
+ position="bottom-right"
24
+ toastOptions={{
25
+ class: "text-sm bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700",
26
+ classes: {
27
+ error: "text-red-600 dark:text-red-400",
28
+ success: "text-green-600 dark:text-green-400",
29
+ },
30
+ }}
31
+ />
32
+ <button
33
+ onclick={showSuccessToast}
34
+ class="px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700"
35
+ >
36
+ Show Success Toast
37
+ </button>
38
+ <p class="mt-4 text-sm text-gray-500 dark:text-gray-400">Click the button to see a success toast notification</p>
39
+ </div>
40
+ </Story>
41
+
42
+ <Story name="Trigger Error Toast">
43
+ <div class="p-8">
44
+ <Toaster
45
+ position="bottom-right"
46
+ toastOptions={{
47
+ class: "text-sm bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700",
48
+ classes: {
49
+ error: "text-red-600 dark:text-red-400",
50
+ success: "text-green-600 dark:text-green-400",
51
+ },
52
+ }}
53
+ />
54
+ <button
55
+ onclick={showErrorToast}
56
+ class="px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700"
57
+ >
58
+ Show Error Toast
59
+ </button>
60
+ <p class="mt-4 text-sm text-gray-500 dark:text-gray-400">Click the button to see an error toast notification</p>
61
+ </div>
62
+ </Story>
@@ -42,7 +42,7 @@
42
42
  let displayTitle = $derived(title || message || 'No results found');
43
43
  let displaySubtext = $derived(description || subtext);
44
44
  </script>
45
-
45
+
46
46
  <div class="flex flex-col items-center justify-center px-6 py-10 text-center {className}">
47
47
  {#if icon || imageSrc}
48
48
  {#if iconType === 'component' && icon}
@@ -1,69 +1,69 @@
1
- import { render, screen } from "@testing-library/svelte";
2
- import { expect, describe, test } from "vitest";
3
- import ErrorDisplay from "./ErrorDisplay.svelte";
4
-
5
- describe("ErrorDisplay Component Tests", () => {
6
- test("Shows error message when error and show are true", () => {
7
- render(ErrorDisplay, { props: { error: "Invalid input", show: true } });
8
- expect(screen.getByText("Invalid input")).toBeInTheDocument();
9
- });
10
-
11
- test("Does not show when error is empty", () => {
12
- render(ErrorDisplay, { props: { error: "", show: true } });
13
- expect(screen.queryByText("Invalid input")).not.toBeInTheDocument();
14
- });
15
-
16
- test("Does not show when show is false", () => {
17
- render(ErrorDisplay, { props: { error: "Error message", show: false } });
18
- expect(screen.queryByText("Error message")).not.toBeInTheDocument();
19
- });
20
-
21
- test("Has error text color", () => {
22
- const { container } = render(ErrorDisplay, {
23
- props: { error: "Error", show: true },
24
- });
25
- const icon = container.querySelector("svg");
26
- expect(icon).toHaveClass("text-red-600");
27
- });
28
-
29
- test("Has shake class when shake is true", () => {
30
- const { container } = render(ErrorDisplay, {
31
- props: { error: "Error", show: true, shake: true },
32
- });
33
- const wrapper = container.querySelector("div.flex");
34
- expect(wrapper).toHaveClass("animate-shake");
35
- });
36
-
37
- test("Does not have shake class when shake is false", () => {
38
- const { container } = render(ErrorDisplay, {
39
- props: { error: "Error", show: true, shake: false },
40
- });
41
- const wrapper = container.querySelector("div.flex");
42
- expect(wrapper).not.toHaveClass("animate-shake");
43
- });
44
-
45
- test("Contains icon element", () => {
46
- const { container } = render(ErrorDisplay, {
47
- props: { error: "Error", show: true },
48
- });
49
- const svg = container.querySelector("svg");
50
- expect(svg).toBeInTheDocument();
51
- });
52
-
53
- test("Has flex layout", () => {
54
- const { container } = render(ErrorDisplay, {
55
- props: { error: "Error", show: true },
56
- });
57
- const wrapper = container.querySelector("div.flex");
58
- expect(wrapper).toHaveClass("flex");
59
- expect(wrapper).toHaveClass("items-center");
60
- });
61
-
62
- test("Applies custom className", () => {
63
- const { container } = render(ErrorDisplay, {
64
- props: { error: "Error", show: true, className: "mt-2" },
65
- });
66
- const wrapper = container.querySelector("div.flex");
67
- expect(wrapper).toHaveClass("mt-2");
68
- });
69
- });
1
+ import { render, screen } from "@testing-library/svelte";
2
+ import { expect, describe, test } from "vitest";
3
+ import ErrorDisplay from "./ErrorDisplay.svelte";
4
+
5
+ describe("ErrorDisplay Component Tests", () => {
6
+ test("Shows error message when error and show are true", () => {
7
+ render(ErrorDisplay, { props: { error: "Invalid input", show: true } });
8
+ expect(screen.getByText("Invalid input")).toBeInTheDocument();
9
+ });
10
+
11
+ test("Does not show when error is empty", () => {
12
+ render(ErrorDisplay, { props: { error: "", show: true } });
13
+ expect(screen.queryByText("Invalid input")).not.toBeInTheDocument();
14
+ });
15
+
16
+ test("Does not show when show is false", () => {
17
+ render(ErrorDisplay, { props: { error: "Error message", show: false } });
18
+ expect(screen.queryByText("Error message")).not.toBeInTheDocument();
19
+ });
20
+
21
+ test("Has error text color", () => {
22
+ const { container } = render(ErrorDisplay, {
23
+ props: { error: "Error", show: true },
24
+ });
25
+ const icon = container.querySelector("svg");
26
+ expect(icon).toHaveClass("text-red-600");
27
+ });
28
+
29
+ test("Has shake class when shake is true", () => {
30
+ const { container } = render(ErrorDisplay, {
31
+ props: { error: "Error", show: true, shake: true },
32
+ });
33
+ const wrapper = container.querySelector("div.flex");
34
+ expect(wrapper).toHaveClass("animate-shake");
35
+ });
36
+
37
+ test("Does not have shake class when shake is false", () => {
38
+ const { container } = render(ErrorDisplay, {
39
+ props: { error: "Error", show: true, shake: false },
40
+ });
41
+ const wrapper = container.querySelector("div.flex");
42
+ expect(wrapper).not.toHaveClass("animate-shake");
43
+ });
44
+
45
+ test("Contains icon element", () => {
46
+ const { container } = render(ErrorDisplay, {
47
+ props: { error: "Error", show: true },
48
+ });
49
+ const svg = container.querySelector("svg");
50
+ expect(svg).toBeInTheDocument();
51
+ });
52
+
53
+ test("Has flex layout", () => {
54
+ const { container } = render(ErrorDisplay, {
55
+ props: { error: "Error", show: true },
56
+ });
57
+ const wrapper = container.querySelector("div.flex");
58
+ expect(wrapper).toHaveClass("flex");
59
+ expect(wrapper).toHaveClass("items-center");
60
+ });
61
+
62
+ test("Applies custom className", () => {
63
+ const { container } = render(ErrorDisplay, {
64
+ props: { error: "Error", show: true, className: "mt-2" },
65
+ });
66
+ const wrapper = container.querySelector("div.flex");
67
+ expect(wrapper).toHaveClass("mt-2");
68
+ });
69
+ });
@@ -1,95 +1,95 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
-
4
- import ErrorDisplay from './ErrorDisplay.svelte';
5
-
6
- const { Story } = defineMeta({
7
- title: 'Components/ErrorDisplay',
8
- component: ErrorDisplay,
9
- tags: ['autodocs'],
10
- argTypes: {
11
- error: {
12
- control: 'text',
13
- description: 'Error message to display',
14
- },
15
- show: {
16
- control: 'boolean',
17
- description: 'Controls visibility',
18
- },
19
- shake: {
20
- control: 'boolean',
21
- description: 'Enable shake animation',
22
- },
23
- icon: {
24
- control: 'text',
25
- description: 'Icon name from Icon component',
26
- },
27
- iconSize: {
28
- control: 'text',
29
- description: 'Size of the icon',
30
- },
31
- },
32
- });
33
- </script>
34
-
35
- <script>
36
- let showShakeDemo = $state(false);
37
- function triggerShake() {
38
- showShakeDemo = false;
39
- setTimeout(() => {
40
- showShakeDemo = true;
41
- }, 10);
42
- }
43
- </script>
44
-
45
-
46
- <Story
47
- name="Default"
48
- args={{
49
- error: 'This is an error message',
50
- show: true,
51
- shake: false,
52
- }}
53
- />
54
-
55
- <Story
56
- name="With Shake Animation"
57
- args={{
58
- error: 'Invalid input detected',
59
- show: true,
60
- shake: true,
61
- }}
62
- />
63
-
64
- <Story name="Interactive Shake">
65
- <div class="space-y-4">
66
- <button
67
- class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-primary"
68
- onclick={triggerShake}
69
- >
70
- Trigger Error Shake
71
- </button>
72
- <ErrorDisplay
73
- error="Form validation failed"
74
- show={showShakeDemo}
75
- shake={showShakeDemo}
76
- />
77
- </div>
78
- </Story>
79
-
80
- <Story
81
- name="Different Icons"
82
- >
83
- <div class="space-y-4">
84
- <ErrorDisplay error="Error with default icon" />
85
- <ErrorDisplay error="Warning message" icon="Warning" />
86
- <ErrorDisplay error="Info message" icon="Info" />
87
- </div>
88
- </Story>
89
-
90
- <Story
91
- name="In Form Context"
92
- >
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+
4
+ import ErrorDisplay from './ErrorDisplay.svelte';
5
+
6
+ const { Story } = defineMeta({
7
+ title: 'Components/ErrorDisplay',
8
+ component: ErrorDisplay,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ error: {
12
+ control: 'text',
13
+ description: 'Error message to display',
14
+ },
15
+ show: {
16
+ control: 'boolean',
17
+ description: 'Controls visibility',
18
+ },
19
+ shake: {
20
+ control: 'boolean',
21
+ description: 'Enable shake animation',
22
+ },
23
+ icon: {
24
+ control: 'text',
25
+ description: 'Icon name from Icon component',
26
+ },
27
+ iconSize: {
28
+ control: 'text',
29
+ description: 'Size of the icon',
30
+ },
31
+ },
32
+ });
33
+ </script>
34
+
35
+ <script>
36
+ let showShakeDemo = $state(false);
37
+ function triggerShake() {
38
+ showShakeDemo = false;
39
+ setTimeout(() => {
40
+ showShakeDemo = true;
41
+ }, 10);
42
+ }
43
+ </script>
44
+
45
+
46
+ <Story
47
+ name="Default"
48
+ args={{
49
+ error: 'This is an error message',
50
+ show: true,
51
+ shake: false,
52
+ }}
53
+ />
54
+
55
+ <Story
56
+ name="With Shake Animation"
57
+ args={{
58
+ error: 'Invalid input detected',
59
+ show: true,
60
+ shake: true,
61
+ }}
62
+ />
63
+
64
+ <Story name="Interactive Shake">
65
+ <div class="space-y-4">
66
+ <button
67
+ class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-primary"
68
+ onclick={triggerShake}
69
+ >
70
+ Trigger Error Shake
71
+ </button>
72
+ <ErrorDisplay
73
+ error="Form validation failed"
74
+ show={showShakeDemo}
75
+ shake={showShakeDemo}
76
+ />
77
+ </div>
78
+ </Story>
79
+
80
+ <Story
81
+ name="Different Icons"
82
+ >
83
+ <div class="space-y-4">
84
+ <ErrorDisplay error="Error with default icon" />
85
+ <ErrorDisplay error="Warning message" icon="Warning" />
86
+ <ErrorDisplay error="Info message" icon="Info" />
87
+ </div>
88
+ </Story>
89
+
90
+ <Story
91
+ name="In Form Context"
92
+ >
93
93
  <div class="max-w-md">
94
94
  <label for="error-display-email" class="block text-sm font-medium mb-1">Email</label>
95
95
  <input
@@ -102,12 +102,12 @@
102
102
  <ErrorDisplay error="Please enter a valid email address" shake={true} />
103
103
  </div>
104
104
  </div>
105
- </Story>
106
-
107
- <Story
108
- name="Hidden State"
109
- args={{
110
- error: 'This error is hidden',
111
- show: false,
112
- }}
113
- />
105
+ </Story>
106
+
107
+ <Story
108
+ name="Hidden State"
109
+ args={{
110
+ error: 'This error is hidden',
111
+ show: false,
112
+ }}
113
+ />
@@ -41,7 +41,7 @@
41
41
  // Support both naming conventions
42
42
  let displayMessage = $derived(error || message);
43
43
  </script>
44
-
44
+
45
45
  {#if (displayMessage || title) && show}
46
46
  <div
47
47
  class="flex flex-col items-center justify-center px-6 py-10 text-center {shake ? 'animate-shake' : ''} {className}"