@getmicdrop/svelte-components 5.6.1 → 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 (255) 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/index.d.ts +11 -0
  27. package/dist/components/Layout/index.d.ts.map +1 -0
  28. package/dist/components/Layout/index.js +14 -0
  29. package/dist/components/Text.svelte +40 -0
  30. package/dist/components/Text.svelte.d.ts +11 -0
  31. package/dist/components/Text.svelte.d.ts.map +1 -0
  32. package/dist/components/index.d.ts +4 -0
  33. package/dist/components/index.d.ts.map +1 -0
  34. package/dist/components/index.js +12 -0
  35. package/dist/constants/validation.js +91 -91
  36. package/dist/constants/validation.spec.js +64 -64
  37. package/dist/datetime/__tests__/format.test.js +1 -1
  38. package/dist/datetime/__tests__/parse.test.js +1 -1
  39. package/dist/datetime/__tests__/timezone.test.js +1 -1
  40. package/dist/datetime/parse.js +1 -1
  41. package/dist/forms/createFormStore.svelte.js +0 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.js +10 -1
  44. package/dist/patterns/data/DataGrid.svelte +45 -45
  45. package/dist/patterns/data/DataList.svelte +24 -24
  46. package/dist/patterns/data/DataTable.svelte +36 -36
  47. package/dist/patterns/forms/FormActions.spec.js +95 -95
  48. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  49. package/dist/patterns/forms/FormActions.svelte +46 -46
  50. package/dist/patterns/forms/FormGrid.svelte +33 -33
  51. package/dist/patterns/forms/FormSection.svelte +32 -32
  52. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  53. package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
  54. package/dist/patterns/layout/Sidebar.svelte +39 -39
  55. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  56. package/dist/patterns/navigation/BottomNav.svelte +74 -74
  57. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  58. package/dist/patterns/navigation/Header.svelte +193 -193
  59. package/dist/patterns/page/PageHeader.svelte +18 -18
  60. package/dist/patterns/page/PageLayout.svelte +40 -40
  61. package/dist/patterns/page/PageLoader.spec.js +57 -57
  62. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  63. package/dist/patterns/page/PageLoader.svelte +24 -24
  64. package/dist/patterns/page/SectionHeader.svelte +29 -29
  65. package/dist/presets/badges.js +112 -112
  66. package/dist/presets/buttons.js +76 -76
  67. package/dist/presets/index.js +9 -9
  68. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  69. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  70. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  71. package/dist/primitives/Alert/Alert.spec.js +173 -173
  72. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  73. package/dist/primitives/Alert/Alert.svelte +27 -27
  74. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  75. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  76. package/dist/primitives/Badges/Badge.spec.js +144 -144
  77. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  78. package/dist/primitives/Badges/Badge.svelte +79 -79
  79. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -136
  80. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  81. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  82. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -122
  83. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  84. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  85. package/dist/primitives/Button/Button.spec.js +223 -223
  86. package/dist/primitives/Button/Button.stories.svelte +76 -76
  87. package/dist/primitives/Button/Button.svelte +270 -270
  88. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
  89. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  90. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  91. package/dist/primitives/Card.spec.js +49 -49
  92. package/dist/primitives/Card.stories.svelte +22 -22
  93. package/dist/primitives/Card.svelte +28 -28
  94. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  95. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  96. package/dist/primitives/DarkModeToggle.spec.js +390 -390
  97. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  98. package/dist/primitives/DarkModeToggle.svelte +136 -136
  99. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  100. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  101. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  102. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  103. package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -9
  104. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  105. package/dist/primitives/Helper/Helper.svelte +33 -33
  106. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  107. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  108. package/dist/primitives/Icons/Availability.svelte +14 -14
  109. package/dist/primitives/Icons/Back.svelte +14 -14
  110. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  111. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  112. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  113. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  114. package/dist/primitives/Icons/Copy.svelte +15 -15
  115. package/dist/primitives/Icons/Cross.svelte +5 -5
  116. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  117. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  118. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  119. package/dist/primitives/Icons/Home.svelte +15 -15
  120. package/dist/primitives/Icons/Icon.spec.js +169 -169
  121. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  122. package/dist/primitives/Icons/Icon.svelte +52 -52
  123. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  124. package/dist/primitives/Icons/Info.svelte +7 -7
  125. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  126. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  127. package/dist/primitives/Icons/Message.svelte +15 -15
  128. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  129. package/dist/primitives/Icons/More.svelte +21 -21
  130. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  131. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  132. package/dist/primitives/Icons/Notification.svelte +14 -14
  133. package/dist/primitives/Icons/Payment.svelte +14 -14
  134. package/dist/primitives/Icons/Profile.svelte +21 -21
  135. package/dist/primitives/Icons/Reload.svelte +29 -29
  136. package/dist/primitives/Icons/Shows.svelte +21 -21
  137. package/dist/primitives/Icons/Signout.svelte +21 -21
  138. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  139. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  140. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  141. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  142. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  143. package/dist/primitives/Input/Input.spec.js +573 -573
  144. package/dist/primitives/Input/Input.stories.svelte +139 -139
  145. package/dist/primitives/Input/Select.spec.js +212 -212
  146. package/dist/primitives/Input/Select.stories.svelte +112 -112
  147. package/dist/primitives/Input/Select.svelte +128 -128
  148. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  149. package/dist/primitives/Input/Textarea.svelte +35 -35
  150. package/dist/primitives/Label/Label.svelte +37 -37
  151. package/dist/primitives/Modal/Modal.spec.js +99 -99
  152. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  153. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  154. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  155. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  156. package/dist/primitives/Radio/Radio.svelte +67 -67
  157. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  158. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  159. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  160. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  161. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  162. package/dist/primitives/Spinner/Spinner.spec.js +71 -71
  163. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  164. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  165. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  166. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  167. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  168. package/dist/primitives/Toggle.spec.js +143 -143
  169. package/dist/primitives/Toggle.stories.svelte +92 -92
  170. package/dist/primitives/Tooltip/Tooltip.svelte +83 -83
  171. package/dist/primitives/Typography/Typography.svelte +53 -53
  172. package/dist/primitives/ValidationError.spec.js +103 -103
  173. package/dist/primitives/ValidationError.stories.svelte +69 -69
  174. package/dist/primitives/ValidationError.svelte +29 -29
  175. package/dist/primitives/index.js +91 -91
  176. package/dist/recipes/CropImage/CropImage.spec.js +208 -208
  177. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  178. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  179. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  180. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  181. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  182. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  183. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  184. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  185. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  186. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
  187. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  188. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  189. package/dist/recipes/fields/FormField.svelte +58 -58
  190. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  191. package/dist/recipes/fields/SelectField.svelte +80 -80
  192. package/dist/recipes/fields/TextareaField.svelte +97 -97
  193. package/dist/recipes/fields/ToggleField.svelte +60 -60
  194. package/dist/recipes/fields/index.js +7 -7
  195. package/dist/recipes/inputs/MultiSelect.spec.js +258 -258
  196. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  197. package/dist/recipes/inputs/OTPInput.spec.js +251 -251
  198. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  199. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  200. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  201. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
  202. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  203. package/dist/recipes/inputs/Search.svelte +37 -37
  204. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  205. package/dist/recipes/modals/AlertModal.svelte +130 -130
  206. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -206
  207. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  208. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  209. package/dist/recipes/modals/InputModal.svelte +182 -182
  210. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  211. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  212. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  213. package/dist/recipes/modals/StatusModal.svelte +206 -206
  214. package/dist/services/EventService.js +75 -75
  215. package/dist/services/EventService.spec.js +217 -217
  216. package/dist/services/ShowService.spec.js +345 -345
  217. package/dist/stores/auth.js +36 -44
  218. package/dist/stores/auth.spec.js +139 -139
  219. package/dist/stores/formDataStore.d.ts.map +1 -1
  220. package/dist/stores/formDataStore.js +0 -8
  221. package/dist/stores/formSave.d.ts.map +1 -1
  222. package/dist/stores/formSave.js +0 -8
  223. package/dist/stores/navigation.d.ts.map +1 -1
  224. package/dist/stores/navigation.js +0 -8
  225. package/dist/stores/toaster.js +13 -13
  226. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  227. package/dist/stories/ButtonAuditReview.svelte +427 -427
  228. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  229. package/dist/stories/PatternsGallery.svelte +206 -206
  230. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  231. package/dist/stories/PrimitivesGallery.svelte +725 -725
  232. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  233. package/dist/stories/RecipesGallery.svelte +271 -271
  234. package/dist/stories/button-audit-manifest.json +11186 -11186
  235. package/dist/tailwind/preset.cjs +82 -82
  236. package/dist/telemetry.js +405 -405
  237. package/dist/telemetry.spec.js +1169 -1169
  238. package/dist/tokens/tokens.css +87 -87
  239. package/dist/tokens/typography-base.css +163 -163
  240. package/dist/utils/apiConfig.spec.js +219 -219
  241. package/dist/utils/transitions.js +62 -62
  242. package/dist/utils/utils.js +354 -354
  243. package/package.json +1 -1
  244. package/dist/stores/auth.svelte.d.ts +0 -39
  245. package/dist/stores/auth.svelte.d.ts.map +0 -1
  246. package/dist/stores/auth.svelte.js +0 -60
  247. package/dist/stores/formDataStore.svelte.d.ts +0 -47
  248. package/dist/stores/formDataStore.svelte.d.ts.map +0 -1
  249. package/dist/stores/formDataStore.svelte.js +0 -84
  250. package/dist/stores/formSave.svelte.d.ts +0 -33
  251. package/dist/stores/formSave.svelte.d.ts.map +0 -1
  252. package/dist/stores/formSave.svelte.js +0 -113
  253. package/dist/stores/navigation.svelte.d.ts +0 -35
  254. package/dist/stores/navigation.svelte.d.ts.map +0 -1
  255. package/dist/stores/navigation.svelte.js +0 -69
@@ -1,19 +1,19 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import PatternsGallery from './PatternsGallery.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Visual Galleries/Patterns',
7
- component: PatternsGallery,
8
- parameters: {
9
- layout: 'fullscreen',
10
- docs: {
11
- description: {
12
- component: 'Complete visual gallery of all pattern components (Layer 3) - Layout & flow components.',
13
- },
14
- },
15
- },
16
- });
17
- </script>
18
-
19
- <Story name="All Patterns" />
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import PatternsGallery from './PatternsGallery.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Visual Galleries/Patterns',
7
+ component: PatternsGallery,
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ docs: {
11
+ description: {
12
+ component: 'Complete visual gallery of all pattern components (Layer 3) - Layout & flow components.',
13
+ },
14
+ },
15
+ },
16
+ });
17
+ </script>
18
+
19
+ <Story name="All Patterns" />
@@ -1,115 +1,115 @@
1
- <script lang="ts">
2
- // ============================================================================
3
- // PATTERNS VISUAL GALLERY
4
- // Displays ALL pattern components (Layer 3) - Layout & flow components
5
- // ============================================================================
6
-
7
- // Forms
8
- import FormActions from '../patterns/forms/FormActions.svelte';
9
- import FormGrid from '../patterns/forms/FormGrid.svelte';
10
- import FormSection from '../patterns/forms/FormSection.svelte';
11
- import FormValidationSummary from '../patterns/forms/FormValidationSummary.svelte';
12
-
13
- // Navigation
14
- import BottomNav from '../patterns/navigation/BottomNav.svelte';
15
- import Header from '../patterns/navigation/Header.svelte';
16
-
17
- // Page
18
- import PageHeader from '../patterns/page/PageHeader.svelte';
19
- import PageLayout from '../patterns/page/PageLayout.svelte';
20
- import PageLoader from '../patterns/page/PageLoader.svelte';
21
- import SectionHeader from '../patterns/page/SectionHeader.svelte';
22
-
23
- // Data
24
- import DataGrid from '../patterns/data/DataGrid.svelte';
25
- import DataList from '../patterns/data/DataList.svelte';
26
- import DataTable from '../patterns/data/DataTable.svelte';
27
-
1
+ <script lang="ts">
2
+ // ============================================================================
3
+ // PATTERNS VISUAL GALLERY
4
+ // Displays ALL pattern components (Layer 3) - Layout & flow components
5
+ // ============================================================================
6
+
7
+ // Forms
8
+ import FormActions from '../patterns/forms/FormActions.svelte';
9
+ import FormGrid from '../patterns/forms/FormGrid.svelte';
10
+ import FormSection from '../patterns/forms/FormSection.svelte';
11
+ import FormValidationSummary from '../patterns/forms/FormValidationSummary.svelte';
12
+
13
+ // Navigation
14
+ import BottomNav from '../patterns/navigation/BottomNav.svelte';
15
+ import Header from '../patterns/navigation/Header.svelte';
16
+
17
+ // Page
18
+ import PageHeader from '../patterns/page/PageHeader.svelte';
19
+ import PageLayout from '../patterns/page/PageLayout.svelte';
20
+ import PageLoader from '../patterns/page/PageLoader.svelte';
21
+ import SectionHeader from '../patterns/page/SectionHeader.svelte';
22
+
23
+ // Data
24
+ import DataGrid from '../patterns/data/DataGrid.svelte';
25
+ import DataList from '../patterns/data/DataList.svelte';
26
+ import DataTable from '../patterns/data/DataTable.svelte';
27
+
28
28
  // Layout (canonical components from components/Layout)
29
29
  import Grid from '../components/Layout/Grid.svelte';
30
30
  import Stack from '../components/Layout/Stack.svelte';
31
31
  import Sidebar from '../components/Layout/Sidebar.svelte';
32
-
33
- // Primitives for demos
34
- import Button from '../primitives/Button/Button.svelte';
35
- import Input from '../primitives/Input/Input.svelte';
36
- import Card from '../primitives/Card.svelte';
37
- import Badge from '../primitives/Badges/Badge.svelte';
38
-
39
- // State
40
- let isDark = $state(false);
41
- let showPageLoader = $state(false);
42
-
43
- function toggleDark() {
44
- isDark = !isDark;
45
- document.documentElement.classList.toggle('dark', isDark);
46
- }
47
-
48
- // Section styling
49
- const sectionClass = (dark: boolean) =>
50
- `rounded-xl p-6 ${dark ? 'bg-gray-800 border-gray-700' : 'bg-white border-gray-200'} border`;
51
-
52
- const headingClass = (dark: boolean) =>
53
- `text-xl font-semibold mb-1 ${dark ? 'text-white' : 'text-gray-900'}`;
54
-
55
- const subheadingClass = (dark: boolean) =>
56
- `text-sm mb-4 ${dark ? 'text-gray-400' : 'text-gray-500'}`;
57
-
32
+
33
+ // Primitives for demos
34
+ import Button from '../primitives/Button/Button.svelte';
35
+ import Input from '../primitives/Input/Input.svelte';
36
+ import Card from '../primitives/Card.svelte';
37
+ import Badge from '../primitives/Badges/Badge.svelte';
38
+
39
+ // State
40
+ let isDark = $state(false);
41
+ let showPageLoader = $state(false);
42
+
43
+ function toggleDark() {
44
+ isDark = !isDark;
45
+ document.documentElement.classList.toggle('dark', isDark);
46
+ }
47
+
48
+ // Section styling
49
+ const sectionClass = (dark: boolean) =>
50
+ `rounded-xl p-6 ${dark ? 'bg-gray-800 border-gray-700' : 'bg-white border-gray-200'} border`;
51
+
52
+ const headingClass = (dark: boolean) =>
53
+ `text-xl font-semibold mb-1 ${dark ? 'text-white' : 'text-gray-900'}`;
54
+
55
+ const subheadingClass = (dark: boolean) =>
56
+ `text-sm mb-4 ${dark ? 'text-gray-400' : 'text-gray-500'}`;
57
+
58
58
  // Demo data
59
59
  const sampleErrors: Record<string, string | null | undefined> = {
60
60
  email: 'Email is required',
61
61
  password: 'Password must be at least 8 characters',
62
62
  };
63
-
64
- const tableData = [
65
- { id: 1, name: 'John Doe', email: 'john@example.com', status: 'Active' },
66
- { id: 2, name: 'Jane Smith', email: 'jane@example.com', status: 'Pending' },
67
- { id: 3, name: 'Bob Wilson', email: 'bob@example.com', status: 'Inactive' },
68
- ];
69
-
70
- const tableColumns = [
71
- { key: 'name', label: 'Name' },
72
- { key: 'email', label: 'Email' },
73
- { key: 'status', label: 'Status' },
74
- ];
75
-
76
- const gridItems = [
77
- { id: 1, title: 'Item 1', description: 'Description for item 1' },
78
- { id: 2, title: 'Item 2', description: 'Description for item 2' },
79
- { id: 3, title: 'Item 3', description: 'Description for item 3' },
80
- { id: 4, title: 'Item 4', description: 'Description for item 4' },
81
- { id: 5, title: 'Item 5', description: 'Description for item 5' },
82
- { id: 6, title: 'Item 6', description: 'Description for item 6' },
83
- ];
84
-
85
- const listItems = [
86
- { id: 1, primary: 'Primary text 1', secondary: 'Secondary text' },
87
- { id: 2, primary: 'Primary text 2', secondary: 'More details here' },
88
- { id: 3, primary: 'Primary text 3', secondary: 'Additional info' },
89
- ];
90
-
63
+
64
+ const tableData = [
65
+ { id: 1, name: 'John Doe', email: 'john@example.com', status: 'Active' },
66
+ { id: 2, name: 'Jane Smith', email: 'jane@example.com', status: 'Pending' },
67
+ { id: 3, name: 'Bob Wilson', email: 'bob@example.com', status: 'Inactive' },
68
+ ];
69
+
70
+ const tableColumns = [
71
+ { key: 'name', label: 'Name' },
72
+ { key: 'email', label: 'Email' },
73
+ { key: 'status', label: 'Status' },
74
+ ];
75
+
76
+ const gridItems = [
77
+ { id: 1, title: 'Item 1', description: 'Description for item 1' },
78
+ { id: 2, title: 'Item 2', description: 'Description for item 2' },
79
+ { id: 3, title: 'Item 3', description: 'Description for item 3' },
80
+ { id: 4, title: 'Item 4', description: 'Description for item 4' },
81
+ { id: 5, title: 'Item 5', description: 'Description for item 5' },
82
+ { id: 6, title: 'Item 6', description: 'Description for item 6' },
83
+ ];
84
+
85
+ const listItems = [
86
+ { id: 1, primary: 'Primary text 1', secondary: 'Secondary text' },
87
+ { id: 2, primary: 'Primary text 2', secondary: 'More details here' },
88
+ { id: 3, primary: 'Primary text 3', secondary: 'Additional info' },
89
+ ];
90
+
91
91
  const bottomNavLinks = [
92
92
  { label: 'Home', href: '/', icon: 'home' },
93
93
  { label: 'Shows', href: '/shows', icon: 'shows' },
94
94
  { label: 'Profile', href: '/profile', icon: 'profile' },
95
95
  ];
96
- </script>
97
-
98
- <div class="min-h-screen p-6 space-y-8 {isDark ? 'bg-gray-900' : 'bg-gray-50'}">
99
- <!-- Header -->
100
- <div class="flex items-center justify-between mb-8">
101
- <div>
102
- <h1 class="text-3xl font-bold {isDark ? 'text-white' : 'text-gray-900'}">Patterns Gallery</h1>
103
- <p class="{isDark ? 'text-gray-400' : 'text-gray-600'}">Layout & flow components (Layer 3)</p>
104
- </div>
105
- <button
106
- onclick={toggleDark}
107
- class="px-4 py-2 rounded-lg font-medium {isDark ? 'bg-yellow-500 text-black' : 'bg-gray-800 text-white'}"
108
- >
109
- {isDark ? '☀️ Light' : '🌙 Dark'}
110
- </button>
111
- </div>
112
-
96
+ </script>
97
+
98
+ <div class="min-h-screen p-6 space-y-8 {isDark ? 'bg-gray-900' : 'bg-gray-50'}">
99
+ <!-- Header -->
100
+ <div class="flex items-center justify-between mb-8">
101
+ <div>
102
+ <h1 class="text-3xl font-bold {isDark ? 'text-white' : 'text-gray-900'}">Patterns Gallery</h1>
103
+ <p class="{isDark ? 'text-gray-400' : 'text-gray-600'}">Layout & flow components (Layer 3)</p>
104
+ </div>
105
+ <button
106
+ onclick={toggleDark}
107
+ class="px-4 py-2 rounded-lg font-medium {isDark ? 'bg-yellow-500 text-black' : 'bg-gray-800 text-white'}"
108
+ >
109
+ {isDark ? '☀️ Light' : '🌙 Dark'}
110
+ </button>
111
+ </div>
112
+
113
113
  <!-- ========== PAGE PATTERNS ========== -->
114
114
  <section class={sectionClass(isDark)}>
115
115
  <h2 class={headingClass(isDark)}>PageHeader</h2>
@@ -131,75 +131,75 @@
131
131
  </PageHeader>
132
132
  </div>
133
133
  </section>
134
-
135
- <!-- ========== SECTION HEADER ========== -->
136
- <section class={sectionClass(isDark)}>
137
- <h2 class={headingClass(isDark)}>SectionHeader</h2>
138
- <p class={subheadingClass(isDark)}>Section dividers with optional description</p>
139
-
140
- <div class="space-y-6">
141
- <SectionHeader title="Basic Section" />
142
- <SectionHeader title="With Description" description="Additional context about this section" />
134
+
135
+ <!-- ========== SECTION HEADER ========== -->
136
+ <section class={sectionClass(isDark)}>
137
+ <h2 class={headingClass(isDark)}>SectionHeader</h2>
138
+ <p class={subheadingClass(isDark)}>Section dividers with optional description</p>
139
+
140
+ <div class="space-y-6">
141
+ <SectionHeader title="Basic Section" />
142
+ <SectionHeader title="With Description" description="Additional context about this section" />
143
143
  <SectionHeader title="With Action">
144
144
  {#snippet actions()}
145
145
  <Button variant="link" size="sm">View All</Button>
146
146
  {/snippet}
147
147
  </SectionHeader>
148
- </div>
149
- </section>
150
-
151
- <!-- ========== PAGE LOADER ========== -->
152
- <section class={sectionClass(isDark)}>
153
- <h2 class={headingClass(isDark)}>PageLoader</h2>
154
- <p class={subheadingClass(isDark)}>Full-page loading indicator</p>
155
-
156
- <Button onclick={() => {
157
- showPageLoader = true;
158
- setTimeout(() => showPageLoader = false, 2000);
159
- }}>
160
- Show PageLoader (2s)
161
- </Button>
162
- </section>
163
-
164
- {#if showPageLoader}
165
- <PageLoader />
166
- {/if}
167
-
168
- <!-- ========== FORM PATTERNS ========== -->
169
- <section class={sectionClass(isDark)}>
170
- <h2 class={headingClass(isDark)}>FormSection</h2>
171
- <p class={subheadingClass(isDark)}>Grouped form fields with title and description</p>
172
-
173
- <FormSection title="Personal Information" description="Enter your personal details">
174
- <div class="space-y-4">
175
- <Input label="Full Name" placeholder="John Doe" />
176
- <Input label="Email" type="email" placeholder="john@example.com" />
177
- </div>
178
- </FormSection>
179
- </section>
180
-
181
- <!-- ========== FORM GRID ========== -->
182
- <section class={sectionClass(isDark)}>
183
- <h2 class={headingClass(isDark)}>FormGrid</h2>
184
- <p class={subheadingClass(isDark)}>Responsive grid layout for form fields</p>
185
-
186
- <FormGrid cols={2}>
187
- <Input label="First Name" placeholder="John" />
188
- <Input label="Last Name" placeholder="Doe" />
189
- <Input label="Email" type="email" placeholder="john@example.com" />
190
- <Input label="Phone" type="tel" placeholder="(555) 123-4567" />
191
- </FormGrid>
192
-
193
- <div class="mt-6">
194
- <p class="text-xs {isDark ? 'text-gray-500' : 'text-gray-400'} mb-2">3 Columns</p>
195
- <FormGrid cols={3}>
196
- <Input label="City" placeholder="New York" />
197
- <Input label="State" placeholder="NY" />
198
- <Input label="Zip" placeholder="10001" />
199
- </FormGrid>
200
- </div>
201
- </section>
202
-
148
+ </div>
149
+ </section>
150
+
151
+ <!-- ========== PAGE LOADER ========== -->
152
+ <section class={sectionClass(isDark)}>
153
+ <h2 class={headingClass(isDark)}>PageLoader</h2>
154
+ <p class={subheadingClass(isDark)}>Full-page loading indicator</p>
155
+
156
+ <Button onclick={() => {
157
+ showPageLoader = true;
158
+ setTimeout(() => showPageLoader = false, 2000);
159
+ }}>
160
+ Show PageLoader (2s)
161
+ </Button>
162
+ </section>
163
+
164
+ {#if showPageLoader}
165
+ <PageLoader />
166
+ {/if}
167
+
168
+ <!-- ========== FORM PATTERNS ========== -->
169
+ <section class={sectionClass(isDark)}>
170
+ <h2 class={headingClass(isDark)}>FormSection</h2>
171
+ <p class={subheadingClass(isDark)}>Grouped form fields with title and description</p>
172
+
173
+ <FormSection title="Personal Information" description="Enter your personal details">
174
+ <div class="space-y-4">
175
+ <Input label="Full Name" placeholder="John Doe" />
176
+ <Input label="Email" type="email" placeholder="john@example.com" />
177
+ </div>
178
+ </FormSection>
179
+ </section>
180
+
181
+ <!-- ========== FORM GRID ========== -->
182
+ <section class={sectionClass(isDark)}>
183
+ <h2 class={headingClass(isDark)}>FormGrid</h2>
184
+ <p class={subheadingClass(isDark)}>Responsive grid layout for form fields</p>
185
+
186
+ <FormGrid cols={2}>
187
+ <Input label="First Name" placeholder="John" />
188
+ <Input label="Last Name" placeholder="Doe" />
189
+ <Input label="Email" type="email" placeholder="john@example.com" />
190
+ <Input label="Phone" type="tel" placeholder="(555) 123-4567" />
191
+ </FormGrid>
192
+
193
+ <div class="mt-6">
194
+ <p class="text-xs {isDark ? 'text-gray-500' : 'text-gray-400'} mb-2">3 Columns</p>
195
+ <FormGrid cols={3}>
196
+ <Input label="City" placeholder="New York" />
197
+ <Input label="State" placeholder="NY" />
198
+ <Input label="Zip" placeholder="10001" />
199
+ </FormGrid>
200
+ </div>
201
+ </section>
202
+
203
203
  <!-- ========== FORM ACTIONS ========== -->
204
204
  <section class={sectionClass(isDark)}>
205
205
  <h2 class={headingClass(isDark)}>FormActions</h2>
@@ -222,15 +222,15 @@
222
222
  </div>
223
223
  </div>
224
224
  </section>
225
-
226
- <!-- ========== FORM VALIDATION SUMMARY ========== -->
227
- <section class={sectionClass(isDark)}>
228
- <h2 class={headingClass(isDark)}>FormValidationSummary</h2>
229
- <p class={subheadingClass(isDark)}>Summary of form validation errors</p>
230
-
231
- <FormValidationSummary errors={sampleErrors} />
232
- </section>
233
-
225
+
226
+ <!-- ========== FORM VALIDATION SUMMARY ========== -->
227
+ <section class={sectionClass(isDark)}>
228
+ <h2 class={headingClass(isDark)}>FormValidationSummary</h2>
229
+ <p class={subheadingClass(isDark)}>Summary of form validation errors</p>
230
+
231
+ <FormValidationSummary errors={sampleErrors} />
232
+ </section>
233
+
234
234
  <!-- ========== DATA TABLE ========== -->
235
235
  <section class={sectionClass(isDark)}>
236
236
  <h2 class={headingClass(isDark)}>DataTable</h2>
@@ -255,7 +255,7 @@
255
255
  {/snippet}
256
256
  </DataTable>
257
257
  </section>
258
-
258
+
259
259
  <!-- ========== DATA LIST ========== -->
260
260
  <section class={sectionClass(isDark)}>
261
261
  <h2 class={headingClass(isDark)}>DataList</h2>
@@ -275,7 +275,7 @@
275
275
  </DataList>
276
276
  </div>
277
277
  </section>
278
-
278
+
279
279
  <!-- ========== DATA GRID ========== -->
280
280
  <section class={sectionClass(isDark)}>
281
281
  <h2 class={headingClass(isDark)}>DataGrid</h2>
@@ -290,35 +290,35 @@
290
290
  {/snippet}
291
291
  </DataGrid>
292
292
  </section>
293
-
294
- <!-- ========== LAYOUT: STACK ========== -->
295
- <section class={sectionClass(isDark)}>
296
- <h2 class={headingClass(isDark)}>Stack</h2>
297
- <p class={subheadingClass(isDark)}>Vertical spacing utility</p>
298
-
299
- <div class="max-w-sm">
300
- <Stack gap="md">
301
- <Card>Stack Item 1</Card>
302
- <Card>Stack Item 2</Card>
303
- <Card>Stack Item 3</Card>
304
- </Stack>
305
- </div>
306
- </section>
307
-
308
- <!-- ========== LAYOUT: GRID ========== -->
309
- <section class={sectionClass(isDark)}>
310
- <h2 class={headingClass(isDark)}>Grid</h2>
311
- <p class={subheadingClass(isDark)}>Responsive grid layout utility</p>
312
-
313
- <Grid cols="4" gap="md">
314
- {#each [1, 2, 3, 4, 5, 6, 7, 8] as i}
315
- <Card class="text-center py-4">
316
- <span class="text-2xl font-bold">{i}</span>
317
- </Card>
318
- {/each}
319
- </Grid>
320
- </section>
321
-
293
+
294
+ <!-- ========== LAYOUT: STACK ========== -->
295
+ <section class={sectionClass(isDark)}>
296
+ <h2 class={headingClass(isDark)}>Stack</h2>
297
+ <p class={subheadingClass(isDark)}>Vertical spacing utility</p>
298
+
299
+ <div class="max-w-sm">
300
+ <Stack gap="md">
301
+ <Card>Stack Item 1</Card>
302
+ <Card>Stack Item 2</Card>
303
+ <Card>Stack Item 3</Card>
304
+ </Stack>
305
+ </div>
306
+ </section>
307
+
308
+ <!-- ========== LAYOUT: GRID ========== -->
309
+ <section class={sectionClass(isDark)}>
310
+ <h2 class={headingClass(isDark)}>Grid</h2>
311
+ <p class={subheadingClass(isDark)}>Responsive grid layout utility</p>
312
+
313
+ <Grid cols="4" gap="md">
314
+ {#each [1, 2, 3, 4, 5, 6, 7, 8] as i}
315
+ <Card class="text-center py-4">
316
+ <span class="text-2xl font-bold">{i}</span>
317
+ </Card>
318
+ {/each}
319
+ </Grid>
320
+ </section>
321
+
322
322
  <!-- ========== LAYOUT: SIDEBAR ========== -->
323
323
  <section class={sectionClass(isDark)}>
324
324
  <h2 class={headingClass(isDark)}>Sidebar</h2>
@@ -344,7 +344,7 @@
344
344
  </Sidebar>
345
345
  </div>
346
346
  </section>
347
-
347
+
348
348
  <!-- ========== NAVIGATION: HEADER ========== -->
349
349
  <section class={sectionClass(isDark)}>
350
350
  <h2 class={headingClass(isDark)}>Header</h2>
@@ -363,7 +363,7 @@
363
363
  </div>
364
364
  </div>
365
365
  </section>
366
-
366
+
367
367
  <!-- ========== NAVIGATION: BOTTOM NAV ========== -->
368
368
  <section class={sectionClass(isDark)}>
369
369
  <h2 class={headingClass(isDark)}>BottomNav</h2>
@@ -373,7 +373,7 @@
373
373
  <BottomNav links={bottomNavLinks} />
374
374
  </div>
375
375
  </section>
376
-
376
+
377
377
  <!-- ========== PAGE LAYOUT ========== -->
378
378
  <section class={sectionClass(isDark)}>
379
379
  <h2 class={headingClass(isDark)}>PageLayout</h2>
@@ -396,4 +396,4 @@
396
396
  </PageLayout>
397
397
  </div>
398
398
  </section>
399
- </div>
399
+ </div>
@@ -1,19 +1,19 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import PrimitivesGallery from './PrimitivesGallery.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Visual Galleries/Primitives',
7
- component: PrimitivesGallery,
8
- parameters: {
9
- layout: 'fullscreen',
10
- docs: {
11
- description: {
12
- component: 'Complete visual gallery of all primitive components (Layer 1) with variants and states.',
13
- },
14
- },
15
- },
16
- });
17
- </script>
18
-
19
- <Story name="All Primitives" />
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import PrimitivesGallery from './PrimitivesGallery.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Visual Galleries/Primitives',
7
+ component: PrimitivesGallery,
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ docs: {
11
+ description: {
12
+ component: 'Complete visual gallery of all primitive components (Layer 1) with variants and states.',
13
+ },
14
+ },
15
+ },
16
+ });
17
+ </script>
18
+
19
+ <Story name="All Primitives" />