@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,61 +1,61 @@
1
- <script>
2
- import { typography } from '../../tokens/typography';
3
-
4
- let {
5
- day = '',
6
- date = '',
7
- time = '',
8
- isSelected = false,
9
- onselect,
10
- } = $props();
11
-
12
- function handleCardClick() {
13
- onselect?.({ date });
14
- }
15
-
16
- function handleKeydown(e) {
17
- if (e.key === 'Enter' || e.key === ' ') {
18
- e.preventDefault();
19
- handleCardClick();
20
- }
21
- }
22
-
23
- function formatHour(timeStr) {
24
- if (!timeStr) return '';
25
- const d = new Date(`1970-01-01T${timeStr}`);
26
- if (isNaN(d.getTime())) return timeStr;
27
- return d.toLocaleTimeString('en-US', {
28
- hour: 'numeric',
29
- minute: '2-digit',
30
- hour12: true
31
- });
32
- }
33
-
34
- function formatDate(dateStr) {
35
- if (!dateStr) return '';
36
- const d = new Date(dateStr);
37
- if (isNaN(d.getTime())) return dateStr;
38
- return d.toLocaleDateString('en-US', {
39
- month: 'short',
40
- day: 'numeric',
41
- });
42
- }
43
- </script>
44
-
45
- <div
46
- class="w-full h-28 rounded-lg flex flex-col justify-center items-center gap-1.5 cursor-pointer border-2 px-1 transition-colors bg-white dark:bg-gray-800 {isSelected
47
- ? 'border-blue-700 dark:border-blue-500'
48
- : 'border-gray-200 dark:border-gray-700 hover:border-blue-700 dark:hover:border-blue-500'}"
49
- onclick={handleCardClick}
50
- onkeydown={handleKeydown}
51
- tabindex="0"
52
- role="button"
53
- aria-label={`${day} ${formatDate(date)} at ${formatHour(time)}${isSelected ? ', selected' : ''}`}
54
- aria-pressed={isSelected}
55
- >
56
- <span class="{typography.label} text-sm {typography.textMuted}">{day}</span>
57
- <span class="{typography.label} text-base {isSelected ? 'text-blue-700 dark:text-blue-500' : ''}">
58
- {formatDate(date)}
59
- </span>
60
- <span class="{typography.label} text-sm {typography.textMuted}">{formatHour(time)}</span>
61
- </div>
1
+ <script>
2
+ import { typography } from '../../tokens/typography';
3
+
4
+ let {
5
+ day = '',
6
+ date = '',
7
+ time = '',
8
+ isSelected = false,
9
+ onselect,
10
+ } = $props();
11
+
12
+ function handleCardClick() {
13
+ onselect?.({ date });
14
+ }
15
+
16
+ function handleKeydown(e) {
17
+ if (e.key === 'Enter' || e.key === ' ') {
18
+ e.preventDefault();
19
+ handleCardClick();
20
+ }
21
+ }
22
+
23
+ function formatHour(timeStr) {
24
+ if (!timeStr) return '';
25
+ const d = new Date(`1970-01-01T${timeStr}`);
26
+ if (isNaN(d.getTime())) return timeStr;
27
+ return d.toLocaleTimeString('en-US', {
28
+ hour: 'numeric',
29
+ minute: '2-digit',
30
+ hour12: true
31
+ });
32
+ }
33
+
34
+ function formatDate(dateStr) {
35
+ if (!dateStr) return '';
36
+ const d = new Date(dateStr);
37
+ if (isNaN(d.getTime())) return dateStr;
38
+ return d.toLocaleDateString('en-US', {
39
+ month: 'short',
40
+ day: 'numeric',
41
+ });
42
+ }
43
+ </script>
44
+
45
+ <div
46
+ class="w-full h-28 rounded-lg flex flex-col justify-center items-center gap-1.5 cursor-pointer border-2 px-1 transition-colors bg-white dark:bg-gray-800 {isSelected
47
+ ? 'border-blue-700 dark:border-blue-500'
48
+ : 'border-gray-200 dark:border-gray-700 hover:border-blue-700 dark:hover:border-blue-500'}"
49
+ onclick={handleCardClick}
50
+ onkeydown={handleKeydown}
51
+ tabindex="0"
52
+ role="button"
53
+ aria-label={`${day} ${formatDate(date)} at ${formatHour(time)}${isSelected ? ', selected' : ''}`}
54
+ aria-pressed={isSelected}
55
+ >
56
+ <span class="{typography.label} text-sm {typography.textMuted}">{day}</span>
57
+ <span class="{typography.label} text-base {isSelected ? 'text-blue-700 dark:text-blue-500' : ''}">
58
+ {formatDate(date)}
59
+ </span>
60
+ <span class="{typography.label} text-sm {typography.textMuted}">{formatHour(time)}</span>
61
+ </div>
@@ -0,0 +1,57 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
7
+ weight?: 'normal' | 'medium' | 'semibold' | 'bold';
8
+ class?: string;
9
+ children: Snippet;
10
+ }
11
+
12
+ let {
13
+ level = 2,
14
+ size = 'lg',
15
+ weight,
16
+ class: className = '',
17
+ children,
18
+ }: Props = $props();
19
+
20
+ const sizeClasses: Record<string, string> = {
21
+ xs: 'text-xs',
22
+ sm: 'text-sm',
23
+ md: 'text-base',
24
+ lg: 'text-lg',
25
+ xl: 'text-xl',
26
+ '2xl': 'text-2xl',
27
+ '3xl': 'text-3xl',
28
+ '4xl': 'text-4xl',
29
+ '5xl': 'text-5xl',
30
+ };
31
+
32
+ const weightClasses: Record<string, string> = {
33
+ normal: 'font-normal',
34
+ medium: 'font-medium',
35
+ semibold: 'font-semibold',
36
+ bold: 'font-bold',
37
+ };
38
+
39
+ const baseClasses = 'text-gray-900 dark:text-white';
40
+ const sizeClass = sizeClasses[size] || 'text-lg';
41
+ const weightClass = weight ? weightClasses[weight] : '';
42
+ const classes = `${baseClasses} ${sizeClass} ${weightClass} ${className}`.trim();
43
+ </script>
44
+
45
+ {#if level === 1}
46
+ <h1 class={classes}>{@render children()}</h1>
47
+ {:else if level === 2}
48
+ <h2 class={classes}>{@render children()}</h2>
49
+ {:else if level === 3}
50
+ <h3 class={classes}>{@render children()}</h3>
51
+ {:else if level === 4}
52
+ <h4 class={classes}>{@render children()}</h4>
53
+ {:else if level === 5}
54
+ <h5 class={classes}>{@render children()}</h5>
55
+ {:else}
56
+ <h6 class={classes}>{@render children()}</h6>
57
+ {/if}
@@ -0,0 +1,12 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
4
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
5
+ weight?: 'normal' | 'medium' | 'semibold' | 'bold';
6
+ class?: string;
7
+ children: Snippet;
8
+ }
9
+ declare const Heading: import("svelte").Component<Props, {}, "">;
10
+ type Heading = ReturnType<typeof Heading>;
11
+ export default Heading;
12
+ //# sourceMappingURL=Heading.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heading.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Heading.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACxE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAsDH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
@@ -1,104 +1,104 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
-
4
- type Variant = 'admin' | 'performer' | 'public' | 'minimal';
5
-
6
- interface Props {
7
- /** Shell variant determines overall styling */
8
- variant?: Variant;
9
- /** Whether sidebar is collapsed (only for admin variant) */
10
- sidebarCollapsed?: boolean;
11
- /** Whether to show bottom navigation on mobile */
12
- showBottomNav?: boolean;
13
- /** Fixed header */
14
- fixedHeader?: boolean;
15
- /** Additional CSS classes for main content area */
16
- class?: string;
17
- /** Header slot */
18
- header?: Snippet;
19
- /** Sidebar slot (left side) */
20
- sidebar?: Snippet;
21
- /** Bottom navigation slot (mobile) */
22
- bottomNav?: Snippet;
23
- /** Main content */
24
- children?: Snippet;
25
- }
26
-
27
- let {
28
- variant = 'admin',
29
- sidebarCollapsed = false,
30
- showBottomNav = true,
31
- fixedHeader = true,
32
- class: className = '',
33
- header,
34
- sidebar,
35
- bottomNav,
36
- children,
37
- }: Props = $props();
38
-
39
- // Background classes based on variant
40
- const variantBackgrounds: Record<Variant, string> = {
41
- admin: 'bg-gray-50 dark:bg-gray-800',
42
- performer: 'bg-gray-50 dark:bg-gray-800',
43
- public: 'bg-white dark:bg-gray-900',
44
- minimal: 'bg-white dark:bg-gray-900',
45
- };
46
-
47
- // Sidebar width classes
48
- const sidebarWidthExpanded = 'md:ml-64';
49
- const sidebarWidthCollapsed = 'md:ml-20';
50
-
51
- let mainMarginClass = $derived(
52
- sidebar
53
- ? sidebarCollapsed
54
- ? sidebarWidthCollapsed
55
- : sidebarWidthExpanded
56
- : ''
57
- );
58
-
59
- let headerPadding = $derived(fixedHeader ? 'pt-16' : '');
60
- let bottomPadding = $derived(showBottomNav && bottomNav ? 'pb-16 md:pb-0' : '');
61
- </script>
62
-
63
- <div class="min-h-screen {variantBackgrounds[variant]}">
64
- <!-- Header -->
65
- {#if header}
66
- <header
67
- class="w-full z-30"
68
- class:fixed={fixedHeader}
69
- class:top-0={fixedHeader}
70
- class:left-0={fixedHeader}
71
- >
72
- {@render header()}
73
- </header>
74
- {/if}
75
-
76
- <!-- Sidebar -->
77
- {#if sidebar}
78
- <aside
79
- class="fixed top-0 left-0 z-20 h-screen transition-all duration-300 hidden md:block"
80
- class:w-64={!sidebarCollapsed}
81
- class:w-20={sidebarCollapsed}
82
- >
83
- {@render sidebar()}
84
- </aside>
85
- {/if}
86
-
87
- <!-- Main Content -->
88
- <main
89
- class="transition-all duration-300 {headerPadding} {mainMarginClass} {bottomPadding} {className}"
90
- >
91
- <div class="{variantBackgrounds[variant]} min-h-screen">
92
- {#if children}
93
- {@render children()}
94
- {/if}
95
- </div>
96
- </main>
97
-
98
- <!-- Bottom Navigation (Mobile) -->
99
- {#if showBottomNav && bottomNav}
100
- <nav class="fixed bottom-0 left-0 right-0 z-30 md:hidden">
101
- {@render bottomNav()}
102
- </nav>
103
- {/if}
104
- </div>
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ type Variant = 'admin' | 'performer' | 'public' | 'minimal';
5
+
6
+ interface Props {
7
+ /** Shell variant determines overall styling */
8
+ variant?: Variant;
9
+ /** Whether sidebar is collapsed (only for admin variant) */
10
+ sidebarCollapsed?: boolean;
11
+ /** Whether to show bottom navigation on mobile */
12
+ showBottomNav?: boolean;
13
+ /** Fixed header */
14
+ fixedHeader?: boolean;
15
+ /** Additional CSS classes for main content area */
16
+ class?: string;
17
+ /** Header slot */
18
+ header?: Snippet;
19
+ /** Sidebar slot (left side) */
20
+ sidebar?: Snippet;
21
+ /** Bottom navigation slot (mobile) */
22
+ bottomNav?: Snippet;
23
+ /** Main content */
24
+ children?: Snippet;
25
+ }
26
+
27
+ let {
28
+ variant = 'admin',
29
+ sidebarCollapsed = false,
30
+ showBottomNav = true,
31
+ fixedHeader = true,
32
+ class: className = '',
33
+ header,
34
+ sidebar,
35
+ bottomNav,
36
+ children,
37
+ }: Props = $props();
38
+
39
+ // Background classes based on variant
40
+ const variantBackgrounds: Record<Variant, string> = {
41
+ admin: 'bg-gray-50 dark:bg-gray-800',
42
+ performer: 'bg-gray-50 dark:bg-gray-800',
43
+ public: 'bg-white dark:bg-gray-900',
44
+ minimal: 'bg-white dark:bg-gray-900',
45
+ };
46
+
47
+ // Sidebar width classes
48
+ const sidebarWidthExpanded = 'md:ml-64';
49
+ const sidebarWidthCollapsed = 'md:ml-20';
50
+
51
+ let mainMarginClass = $derived(
52
+ sidebar
53
+ ? sidebarCollapsed
54
+ ? sidebarWidthCollapsed
55
+ : sidebarWidthExpanded
56
+ : ''
57
+ );
58
+
59
+ let headerPadding = $derived(fixedHeader ? 'pt-16' : '');
60
+ let bottomPadding = $derived(showBottomNav && bottomNav ? 'pb-16 md:pb-0' : '');
61
+ </script>
62
+
63
+ <div class="min-h-screen {variantBackgrounds[variant]}">
64
+ <!-- Header -->
65
+ {#if header}
66
+ <header
67
+ class="w-full z-30"
68
+ class:fixed={fixedHeader}
69
+ class:top-0={fixedHeader}
70
+ class:left-0={fixedHeader}
71
+ >
72
+ {@render header()}
73
+ </header>
74
+ {/if}
75
+
76
+ <!-- Sidebar -->
77
+ {#if sidebar}
78
+ <aside
79
+ class="fixed top-0 left-0 z-20 h-screen transition-all duration-300 hidden md:block"
80
+ class:w-64={!sidebarCollapsed}
81
+ class:w-20={sidebarCollapsed}
82
+ >
83
+ {@render sidebar()}
84
+ </aside>
85
+ {/if}
86
+
87
+ <!-- Main Content -->
88
+ <main
89
+ class="transition-all duration-300 {headerPadding} {mainMarginClass} {bottomPadding} {className}"
90
+ >
91
+ <div class="{variantBackgrounds[variant]} min-h-screen">
92
+ {#if children}
93
+ {@render children()}
94
+ {/if}
95
+ </div>
96
+ </main>
97
+
98
+ <!-- Bottom Navigation (Mobile) -->
99
+ {#if showBottomNav && bottomNav}
100
+ <nav class="fixed bottom-0 left-0 right-0 z-30 md:hidden">
101
+ {@render bottomNav()}
102
+ </nav>
103
+ {/if}
104
+ </div>
@@ -1,80 +1,80 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
-
4
- interface Props {
5
- /** Section title */
6
- title?: string;
7
- /** Optional subtitle */
8
- subtitle?: string;
9
- /** Heading level for the title (2-6) */
10
- headingLevel?: 2 | 3 | 4 | 5 | 6;
11
- /** Size variant for title */
12
- titleSize?: 'sm' | 'base' | 'lg' | 'xl';
13
- /** Spacing below the section */
14
- spacing?: 'none' | 'sm' | 'md' | 'lg';
15
- /** Additional CSS classes */
16
- class?: string;
17
- /** Action slot (buttons, links) */
18
- actions?: Snippet;
19
- /** Child content */
20
- children?: Snippet;
21
- }
22
-
23
- let {
24
- title = '',
25
- subtitle = '',
26
- headingLevel = 2,
27
- titleSize = 'lg',
28
- spacing = 'md',
29
- class: className = '',
30
- actions,
31
- children,
32
- }: Props = $props();
33
-
34
- const titleSizeClasses = {
35
- sm: 'text-base',
36
- base: 'text-lg',
37
- lg: 'text-xl',
38
- xl: 'text-2xl',
39
- };
40
-
41
- const spacingClasses = {
42
- none: '',
43
- sm: 'mb-4',
44
- md: 'mb-6',
45
- lg: 'mb-8',
46
- };
47
-
48
- let headingElement = $derived(`h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6');
49
- </script>
50
-
51
- <section class="{spacingClasses[spacing]} {className}">
52
- {#if title || actions}
53
- <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 mb-4">
54
- <div>
55
- {#if title}
56
- <svelte:element
57
- this={headingElement}
58
- class="{titleSizeClasses[titleSize]} font-semibold text-gray-900 dark:text-white"
59
- >
60
- {title}
61
- </svelte:element>
62
- {/if}
63
- {#if subtitle}
64
- <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
65
- {subtitle}
66
- </p>
67
- {/if}
68
- </div>
69
- {#if actions}
70
- <div class="flex items-center gap-3 flex-shrink-0">
71
- {@render actions()}
72
- </div>
73
- {/if}
74
- </div>
75
- {/if}
76
-
77
- {#if children}
78
- {@render children()}
79
- {/if}
80
- </section>
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ /** Section title */
6
+ title?: string;
7
+ /** Optional subtitle */
8
+ subtitle?: string;
9
+ /** Heading level for the title (2-6) */
10
+ headingLevel?: 2 | 3 | 4 | 5 | 6;
11
+ /** Size variant for title */
12
+ titleSize?: 'sm' | 'base' | 'lg' | 'xl';
13
+ /** Spacing below the section */
14
+ spacing?: 'none' | 'sm' | 'md' | 'lg';
15
+ /** Additional CSS classes */
16
+ class?: string;
17
+ /** Action slot (buttons, links) */
18
+ actions?: Snippet;
19
+ /** Child content */
20
+ children?: Snippet;
21
+ }
22
+
23
+ let {
24
+ title = '',
25
+ subtitle = '',
26
+ headingLevel = 2,
27
+ titleSize = 'lg',
28
+ spacing = 'md',
29
+ class: className = '',
30
+ actions,
31
+ children,
32
+ }: Props = $props();
33
+
34
+ const titleSizeClasses = {
35
+ sm: 'text-base',
36
+ base: 'text-lg',
37
+ lg: 'text-xl',
38
+ xl: 'text-2xl',
39
+ };
40
+
41
+ const spacingClasses = {
42
+ none: '',
43
+ sm: 'mb-4',
44
+ md: 'mb-6',
45
+ lg: 'mb-8',
46
+ };
47
+
48
+ let headingElement = $derived(`h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6');
49
+ </script>
50
+
51
+ <section class="{spacingClasses[spacing]} {className}">
52
+ {#if title || actions}
53
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 mb-4">
54
+ <div>
55
+ {#if title}
56
+ <svelte:element
57
+ this={headingElement}
58
+ class="{titleSizeClasses[titleSize]} font-semibold text-gray-900 dark:text-white"
59
+ >
60
+ {title}
61
+ </svelte:element>
62
+ {/if}
63
+ {#if subtitle}
64
+ <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
65
+ {subtitle}
66
+ </p>
67
+ {/if}
68
+ </div>
69
+ {#if actions}
70
+ <div class="flex items-center gap-3 flex-shrink-0">
71
+ {@render actions()}
72
+ </div>
73
+ {/if}
74
+ </div>
75
+ {/if}
76
+
77
+ {#if children}
78
+ {@render children()}
79
+ {/if}
80
+ </section>
@@ -95,7 +95,7 @@
95
95
  ].filter(Boolean).join(' ')
96
96
  );
97
97
  </script>
98
-
99
- <svelte:element this={as} class={classes} style={gridStyle || undefined}>
100
- {@render children?.()}
101
- </svelte:element>
98
+
99
+ <svelte:element this={as} class={classes} style={gridStyle || undefined}>
100
+ {@render children?.()}
101
+ </svelte:element>