@getmicdrop/svelte-components 5.6.1 → 5.7.2

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 (257) 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 +58 -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 +10 -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 +53 -0
  30. package/dist/components/Text.svelte.d.ts +12 -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/layout/index.d.ts +0 -2
  56. package/dist/patterns/layout/index.js +3 -2
  57. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  58. package/dist/patterns/navigation/BottomNav.svelte +74 -74
  59. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  60. package/dist/patterns/navigation/Header.svelte +193 -193
  61. package/dist/patterns/page/PageHeader.svelte +18 -18
  62. package/dist/patterns/page/PageLayout.svelte +40 -40
  63. package/dist/patterns/page/PageLoader.spec.js +57 -57
  64. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  65. package/dist/patterns/page/PageLoader.svelte +24 -24
  66. package/dist/patterns/page/SectionHeader.svelte +29 -29
  67. package/dist/presets/badges.js +112 -112
  68. package/dist/presets/buttons.js +76 -76
  69. package/dist/presets/index.js +9 -9
  70. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  71. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  72. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  73. package/dist/primitives/Alert/Alert.spec.js +173 -173
  74. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  75. package/dist/primitives/Alert/Alert.svelte +27 -27
  76. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  77. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  78. package/dist/primitives/Badges/Badge.spec.js +144 -144
  79. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  80. package/dist/primitives/Badges/Badge.svelte +79 -79
  81. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -136
  82. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  83. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  84. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -122
  85. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  86. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  87. package/dist/primitives/Button/Button.spec.js +223 -223
  88. package/dist/primitives/Button/Button.stories.svelte +76 -76
  89. package/dist/primitives/Button/Button.svelte +270 -270
  90. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
  91. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  92. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  93. package/dist/primitives/Card.spec.js +49 -49
  94. package/dist/primitives/Card.stories.svelte +22 -22
  95. package/dist/primitives/Card.svelte +28 -28
  96. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  97. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  98. package/dist/primitives/DarkModeToggle.spec.js +390 -390
  99. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  100. package/dist/primitives/DarkModeToggle.svelte +136 -136
  101. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  102. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  103. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  104. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  105. package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -9
  106. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  107. package/dist/primitives/Helper/Helper.svelte +33 -33
  108. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  109. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  110. package/dist/primitives/Icons/Availability.svelte +14 -14
  111. package/dist/primitives/Icons/Back.svelte +14 -14
  112. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  113. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  114. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  115. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  116. package/dist/primitives/Icons/Copy.svelte +15 -15
  117. package/dist/primitives/Icons/Cross.svelte +5 -5
  118. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  119. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  120. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  121. package/dist/primitives/Icons/Home.svelte +15 -15
  122. package/dist/primitives/Icons/Icon.spec.js +169 -169
  123. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  124. package/dist/primitives/Icons/Icon.svelte +52 -52
  125. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  126. package/dist/primitives/Icons/Info.svelte +7 -7
  127. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  128. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  129. package/dist/primitives/Icons/Message.svelte +15 -15
  130. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  131. package/dist/primitives/Icons/More.svelte +21 -21
  132. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  133. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  134. package/dist/primitives/Icons/Notification.svelte +14 -14
  135. package/dist/primitives/Icons/Payment.svelte +14 -14
  136. package/dist/primitives/Icons/Profile.svelte +21 -21
  137. package/dist/primitives/Icons/Reload.svelte +29 -29
  138. package/dist/primitives/Icons/Shows.svelte +21 -21
  139. package/dist/primitives/Icons/Signout.svelte +21 -21
  140. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  141. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  142. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  143. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  144. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  145. package/dist/primitives/Input/Input.spec.js +573 -573
  146. package/dist/primitives/Input/Input.stories.svelte +139 -139
  147. package/dist/primitives/Input/Select.spec.js +212 -212
  148. package/dist/primitives/Input/Select.stories.svelte +112 -112
  149. package/dist/primitives/Input/Select.svelte +128 -128
  150. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  151. package/dist/primitives/Input/Textarea.svelte +35 -35
  152. package/dist/primitives/Label/Label.svelte +37 -37
  153. package/dist/primitives/Modal/Modal.spec.js +99 -99
  154. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  155. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  156. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  157. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  158. package/dist/primitives/Radio/Radio.svelte +67 -67
  159. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  160. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  161. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  162. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  163. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  164. package/dist/primitives/Spinner/Spinner.spec.js +71 -71
  165. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  166. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  167. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  168. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  169. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  170. package/dist/primitives/Toggle.spec.js +143 -143
  171. package/dist/primitives/Toggle.stories.svelte +92 -92
  172. package/dist/primitives/Tooltip/Tooltip.svelte +83 -83
  173. package/dist/primitives/Typography/Typography.svelte +53 -53
  174. package/dist/primitives/ValidationError.spec.js +103 -103
  175. package/dist/primitives/ValidationError.stories.svelte +69 -69
  176. package/dist/primitives/ValidationError.svelte +29 -29
  177. package/dist/primitives/index.js +91 -91
  178. package/dist/recipes/CropImage/CropImage.spec.js +208 -208
  179. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  180. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  181. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  182. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  183. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  184. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  185. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  186. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  187. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  188. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
  189. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  190. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  191. package/dist/recipes/fields/FormField.svelte +58 -58
  192. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  193. package/dist/recipes/fields/SelectField.svelte +80 -80
  194. package/dist/recipes/fields/TextareaField.svelte +97 -97
  195. package/dist/recipes/fields/ToggleField.svelte +60 -60
  196. package/dist/recipes/fields/index.js +7 -7
  197. package/dist/recipes/inputs/MultiSelect.spec.js +258 -258
  198. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  199. package/dist/recipes/inputs/OTPInput.spec.js +251 -251
  200. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  201. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  202. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  203. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
  204. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  205. package/dist/recipes/inputs/Search.svelte +37 -37
  206. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  207. package/dist/recipes/modals/AlertModal.svelte +130 -130
  208. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -206
  209. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  210. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  211. package/dist/recipes/modals/InputModal.svelte +182 -182
  212. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  213. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  214. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  215. package/dist/recipes/modals/StatusModal.svelte +206 -206
  216. package/dist/services/EventService.js +75 -75
  217. package/dist/services/EventService.spec.js +217 -217
  218. package/dist/services/ShowService.spec.js +345 -345
  219. package/dist/stores/auth.js +36 -44
  220. package/dist/stores/auth.spec.js +139 -139
  221. package/dist/stores/formDataStore.d.ts.map +1 -1
  222. package/dist/stores/formDataStore.js +0 -8
  223. package/dist/stores/formSave.d.ts.map +1 -1
  224. package/dist/stores/formSave.js +0 -8
  225. package/dist/stores/navigation.d.ts.map +1 -1
  226. package/dist/stores/navigation.js +0 -8
  227. package/dist/stores/toaster.js +13 -13
  228. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  229. package/dist/stories/ButtonAuditReview.svelte +427 -427
  230. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  231. package/dist/stories/PatternsGallery.svelte +206 -206
  232. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  233. package/dist/stories/PrimitivesGallery.svelte +725 -725
  234. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  235. package/dist/stories/RecipesGallery.svelte +271 -271
  236. package/dist/stories/button-audit-manifest.json +11186 -11186
  237. package/dist/tailwind/preset.cjs +82 -82
  238. package/dist/telemetry.js +405 -405
  239. package/dist/telemetry.spec.js +1169 -1169
  240. package/dist/tokens/tokens.css +87 -87
  241. package/dist/tokens/typography-base.css +163 -163
  242. package/dist/utils/apiConfig.spec.js +219 -219
  243. package/dist/utils/transitions.js +62 -62
  244. package/dist/utils/utils.js +354 -354
  245. package/package.json +1 -1
  246. package/dist/stores/auth.svelte.d.ts +0 -39
  247. package/dist/stores/auth.svelte.d.ts.map +0 -1
  248. package/dist/stores/auth.svelte.js +0 -60
  249. package/dist/stores/formDataStore.svelte.d.ts +0 -47
  250. package/dist/stores/formDataStore.svelte.d.ts.map +0 -1
  251. package/dist/stores/formDataStore.svelte.js +0 -84
  252. package/dist/stores/formSave.svelte.d.ts +0 -33
  253. package/dist/stores/formSave.svelte.d.ts.map +0 -1
  254. package/dist/stores/formSave.svelte.js +0 -113
  255. package/dist/stores/navigation.svelte.d.ts +0 -35
  256. package/dist/stores/navigation.svelte.d.ts.map +0 -1
  257. package/dist/stores/navigation.svelte.js +0 -69
@@ -1,77 +1,77 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
-
4
- import Header from "./Header.svelte";
5
-
6
- const { Story } = defineMeta({
7
- title: "Components/Layout/Header",
8
- component: Header,
9
- argTypes: {
10
- name: { control: "text" },
11
- email: { control: "text" },
12
- avatar: { control: "text" },
13
- signoutHandler: { action: "signout" },
14
- },
15
- });
16
-
17
- function handleSignout() {
18
- alert("User signed out");
19
- }
20
-
21
- </script>
22
-
23
-
24
- <Story
25
- name="Default Header"
26
- args={{
27
- name: "John Performer",
28
- email: "john@example.com",
29
- avatar: "https://i.pravatar.cc/150?img=12",
30
- signoutHandler: handleSignout
31
- }}
32
- />
33
-
34
- <Story name="With Long Name">
35
- <Header
36
- name="Alexander Christopher Wellington"
37
- email="alexander.wellington@performersportal.com"
38
- avatar="https://i.pravatar.cc/150?img=33"
39
- signoutHandler={handleSignout}
40
- />
41
- </Story>
42
-
43
- <Story name="With Short Name">
44
- <Header
45
- name="Jo"
46
- email="jo@test.com"
47
- avatar="https://i.pravatar.cc/150?img=5"
48
- signoutHandler={handleSignout}
49
- />
50
- </Story>
51
-
52
- <Story name="Female Performer">
53
- <Header
54
- name="Sarah Johnson"
55
- email="sarah.johnson@comedy.com"
56
- avatar="https://i.pravatar.cc/150?img=47"
57
- signoutHandler={handleSignout}
58
- />
59
- </Story>
60
-
61
- <Story name="Without Email">
62
- <Header
63
- name="Anonymous Performer"
64
- email=""
65
- avatar="https://i.pravatar.cc/150?img=68"
66
- signoutHandler={handleSignout}
67
- />
68
- </Story>
69
-
70
- <Story name="With Default Avatar">
71
- <Header
72
- name="Default User"
73
- email="default@performers.com"
74
- avatar=""
75
- signoutHandler={handleSignout}
76
- />
77
- </Story>
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+
4
+ import Header from "./Header.svelte";
5
+
6
+ const { Story } = defineMeta({
7
+ title: "Components/Layout/Header",
8
+ component: Header,
9
+ argTypes: {
10
+ name: { control: "text" },
11
+ email: { control: "text" },
12
+ avatar: { control: "text" },
13
+ signoutHandler: { action: "signout" },
14
+ },
15
+ });
16
+
17
+ function handleSignout() {
18
+ alert("User signed out");
19
+ }
20
+
21
+ </script>
22
+
23
+
24
+ <Story
25
+ name="Default Header"
26
+ args={{
27
+ name: "John Performer",
28
+ email: "john@example.com",
29
+ avatar: "https://i.pravatar.cc/150?img=12",
30
+ signoutHandler: handleSignout
31
+ }}
32
+ />
33
+
34
+ <Story name="With Long Name">
35
+ <Header
36
+ name="Alexander Christopher Wellington"
37
+ email="alexander.wellington@performersportal.com"
38
+ avatar="https://i.pravatar.cc/150?img=33"
39
+ signoutHandler={handleSignout}
40
+ />
41
+ </Story>
42
+
43
+ <Story name="With Short Name">
44
+ <Header
45
+ name="Jo"
46
+ email="jo@test.com"
47
+ avatar="https://i.pravatar.cc/150?img=5"
48
+ signoutHandler={handleSignout}
49
+ />
50
+ </Story>
51
+
52
+ <Story name="Female Performer">
53
+ <Header
54
+ name="Sarah Johnson"
55
+ email="sarah.johnson@comedy.com"
56
+ avatar="https://i.pravatar.cc/150?img=47"
57
+ signoutHandler={handleSignout}
58
+ />
59
+ </Story>
60
+
61
+ <Story name="Without Email">
62
+ <Header
63
+ name="Anonymous Performer"
64
+ email=""
65
+ avatar="https://i.pravatar.cc/150?img=68"
66
+ signoutHandler={handleSignout}
67
+ />
68
+ </Story>
69
+
70
+ <Story name="With Default Avatar">
71
+ <Header
72
+ name="Default User"
73
+ email="default@performers.com"
74
+ avatar=""
75
+ signoutHandler={handleSignout}
76
+ />
77
+ </Story>
@@ -60,196 +60,196 @@
60
60
  goto(href);
61
61
  }
62
62
  </script>
63
-
64
- {#if showBackButton}
65
- <div class="block flex-1 md:hidden">
66
- <Button variant="ghost" size="sm" onclick={() => history.back()}>
67
- <ChevronLeft class="w-5 h-5" />
68
- Back
69
- </Button>
70
- </div>
71
- <div class="hidden md:flex w-full items-center">
72
- <div class="flex items-center">
73
- <a href="/" class="flex items-center"><img src={Logo} alt="Micdrop" width="100" /></a>
74
- </div>
75
-
76
- <nav class="hidden md:flex items-center gap-1 ml-8 flex-1">
77
- {#each navLinks as { label, href }}
78
- <a
79
- {href}
80
- class={`px-4 py-2 ${typography.label} ${typography.textMuted} no-underline rounded-lg transition-all duration-150
81
- hover:text-gray-900 hover:bg-gray-100 hover:no-underline dark:hover:text-white dark:hover:bg-gray-700
82
- ${isActive(href, currentPath) ? 'text-blue-700 bg-gray-100 dark:text-blue-500 dark:bg-gray-700' : ''}`}
83
- >
84
- {label}
85
- </a>
86
- {/each}
87
- </nav>
88
-
89
- <div class="flex items-center gap-3">
90
- <DarkModeToggle />
91
- <div class="relative ml-1">
92
- <Button
93
- variant="avatar"
94
- size="md"
95
- onclick={() => showDesktopDropdown = !showDesktopDropdown}
96
- >
97
- <Avatar src={avatar} rounded size="md" />
98
- </Button>
99
-
100
- {#if showDesktopDropdown}
101
- <!-- svelte-ignore a11y_click_events_have_key_events -->
102
- <!-- svelte-ignore a11y_no_static_element_interactions -->
103
- <div class="fixed inset-0 z-30 bg-transparent" onclick={() => showDesktopDropdown = false}></div>
104
- <div class="absolute top-[calc(100%+0.5rem)] right-0 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-40 overflow-hidden">
105
- <div class="py-3 px-4 border-b border-gray-200 dark:border-gray-700">
106
- <span class={`block ${typography.label}`}>{name || "Performer"}</span>
107
- <span class={`block ${typography.xsMuted} mt-0.5`}>{email || ""}</span>
108
- </div>
109
- {#each dropdownLinks as { label, href }}
110
- <Button
111
- variant="menu-item"
112
- size="md"
113
- onclick={() => handleDropdownItemClick(href)}
114
- >
115
- {label}
116
- </Button>
117
- {/each}
118
- <div class="h-px bg-gray-200 dark:bg-gray-700"></div>
119
- <Button
120
- variant="menu-item-danger"
121
- size="md"
122
- onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
123
- >
124
- Sign out
125
- </Button>
126
- </div>
127
- {/if}
128
- </div>
129
- </div>
130
- </div>
131
- {:else}
132
- <div class="flex items-center">
133
- <a href="/" class="flex items-center"><img src={Logo} alt="Micdrop" width="100" /></a>
134
- </div>
135
-
136
- <nav class="hidden md:flex items-center gap-1 ml-8 flex-1">
137
- {#each navLinks as { label, href }}
138
- <a
139
- {href}
140
- class={`px-4 py-2 ${typography.label} ${typography.textMuted} no-underline rounded-lg transition-all duration-150
141
- hover:text-gray-900 hover:bg-gray-100 hover:no-underline dark:hover:text-white dark:hover:bg-gray-700
142
- ${isActive(href, currentPath) ? 'text-blue-700 bg-gray-100 dark:text-blue-500 dark:bg-gray-700' : ''}`}
143
- >
144
- {label}
145
- </a>
146
- {/each}
147
- </nav>
148
-
149
- <div class="flex items-center gap-3">
150
- <DarkModeToggle />
151
-
152
- <div class="relative ml-1">
153
- <Button
154
- variant="avatar"
155
- size="md"
156
- class="block md:hidden"
157
- onclick={() => showMobileSheet = true}
158
- >
159
- <Avatar src={avatar} rounded size="md" />
160
- </Button>
161
-
162
- <Button
163
- variant="avatar"
164
- size="md"
165
- class="hidden md:block"
166
- onclick={() => showDesktopDropdown = !showDesktopDropdown}
167
- >
168
- <Avatar src={avatar} rounded size="md" />
169
- </Button>
170
-
171
- {#if showDesktopDropdown}
172
- <!-- svelte-ignore a11y_click_events_have_key_events -->
173
- <!-- svelte-ignore a11y_no_static_element_interactions -->
174
- <div class="fixed inset-0 z-30 bg-transparent" onclick={() => showDesktopDropdown = false}></div>
175
- <div class="absolute top-[calc(100%+0.5rem)] right-0 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-40 overflow-hidden">
176
- <div class="py-3 px-4 border-b border-gray-200 dark:border-gray-700">
177
- <span class={`block ${typography.label}`}>{name || "Performer"}</span>
178
- <span class={`block ${typography.xsMuted} mt-0.5`}>{email || ""}</span>
179
- </div>
180
- {#each dropdownLinks as { label, href }}
181
- <Button
182
- variant="menu-item"
183
- size="md"
184
- onclick={() => handleDropdownItemClick(href)}
185
- >
186
- {label}
187
- </Button>
188
- {/each}
189
- <div class="h-px bg-gray-200 dark:bg-gray-700"></div>
190
- <Button
191
- variant="menu-item-danger"
192
- size="md"
193
- onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
194
- >
195
- Sign out
196
- </Button>
197
- </div>
198
- {/if}
199
- </div>
200
- </div>
201
- {/if}
202
-
203
- {#if showMobileSheet}
204
- <!-- svelte-ignore a11y_click_events_have_key_events -->
205
- <!-- svelte-ignore a11y_no_static_element_interactions -->
206
- <div
207
- class="fixed inset-0 flex items-end justify-center bg-black/50 z-50 touch-none overscroll-none"
208
- onclick={() => { showMobileSheet = false; }}
209
- transition:fade={{ duration: 300 }}
210
- use:portal
211
- >
212
- <!-- svelte-ignore a11y_click_events_have_key_events -->
213
- <!-- svelte-ignore a11y_no_static_element_interactions -->
214
- <div
215
- class="bg-white dark:bg-gray-800 rounded-t-3xl shadow-xl w-full max-h-[90vh] max-h-[90dvh] overflow-hidden pb-[var(--safe-bottom,0px)] touch-pan-y overscroll-contain"
216
- onclick={(e) => e.stopPropagation()}
217
- transition:fly={{ y: 300, duration: 300, easing: cubicOut }}
218
- >
219
- <div class="flex justify-center pt-3 pb-2">
220
- <div class="w-10 h-1 bg-gray-300 dark:bg-gray-600 rounded-sm"></div>
221
- </div>
222
-
223
- <div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
224
- <p class={`${typography.h4} m-0`}>{name || "Performer"}</p>
225
- <p class={`${typography.smMuted} mt-0.5 m-0`}>{email || ""}</p>
226
- </div>
227
-
228
- <div class="py-2">
229
- {#each dropdownLinks as { label, href }}
230
- <Button
231
- variant="menu-item"
232
- size="lg"
233
- onclick={() => handleMobileSheetItemClick(href)}
234
- >
235
- {label}
236
- </Button>
237
- {/each}
238
-
239
- <Button
240
- variant="menu-item-danger"
241
- size="lg"
242
- onclick={() => { showMobileSheet = false; signoutHandler(); }}
243
- >
244
- Sign Out
245
- </Button>
246
- </div>
247
-
248
- <div class="border-t-8 border-gray-100 dark:border-gray-700">
249
- <Button variant="ghost" size="full" class="py-4 text-base font-semibold" onclick={() => showMobileSheet = false}>
250
- Cancel
251
- </Button>
252
- </div>
253
- </div>
254
- </div>
255
- {/if}
63
+
64
+ {#if showBackButton}
65
+ <div class="block flex-1 md:hidden">
66
+ <Button variant="ghost" size="sm" onclick={() => history.back()}>
67
+ <ChevronLeft class="w-5 h-5" />
68
+ Back
69
+ </Button>
70
+ </div>
71
+ <div class="hidden md:flex w-full items-center">
72
+ <div class="flex items-center">
73
+ <a href="/" class="flex items-center"><img src={Logo} alt="Micdrop" width="100" /></a>
74
+ </div>
75
+
76
+ <nav class="hidden md:flex items-center gap-1 ml-8 flex-1">
77
+ {#each navLinks as { label, href }}
78
+ <a
79
+ {href}
80
+ class={`px-4 py-2 ${typography.label} ${typography.textMuted} no-underline rounded-lg transition-all duration-150
81
+ hover:text-gray-900 hover:bg-gray-100 hover:no-underline dark:hover:text-white dark:hover:bg-gray-700
82
+ ${isActive(href, currentPath) ? 'text-blue-700 bg-gray-100 dark:text-blue-500 dark:bg-gray-700' : ''}`}
83
+ >
84
+ {label}
85
+ </a>
86
+ {/each}
87
+ </nav>
88
+
89
+ <div class="flex items-center gap-3">
90
+ <DarkModeToggle />
91
+ <div class="relative ml-1">
92
+ <Button
93
+ variant="avatar"
94
+ size="md"
95
+ onclick={() => showDesktopDropdown = !showDesktopDropdown}
96
+ >
97
+ <Avatar src={avatar} rounded size="md" />
98
+ </Button>
99
+
100
+ {#if showDesktopDropdown}
101
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
102
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
103
+ <div class="fixed inset-0 z-30 bg-transparent" onclick={() => showDesktopDropdown = false}></div>
104
+ <div class="absolute top-[calc(100%+0.5rem)] right-0 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-40 overflow-hidden">
105
+ <div class="py-3 px-4 border-b border-gray-200 dark:border-gray-700">
106
+ <span class={`block ${typography.label}`}>{name || "Performer"}</span>
107
+ <span class={`block ${typography.xsMuted} mt-0.5`}>{email || ""}</span>
108
+ </div>
109
+ {#each dropdownLinks as { label, href }}
110
+ <Button
111
+ variant="menu-item"
112
+ size="md"
113
+ onclick={() => handleDropdownItemClick(href)}
114
+ >
115
+ {label}
116
+ </Button>
117
+ {/each}
118
+ <div class="h-px bg-gray-200 dark:bg-gray-700"></div>
119
+ <Button
120
+ variant="menu-item-danger"
121
+ size="md"
122
+ onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
123
+ >
124
+ Sign out
125
+ </Button>
126
+ </div>
127
+ {/if}
128
+ </div>
129
+ </div>
130
+ </div>
131
+ {:else}
132
+ <div class="flex items-center">
133
+ <a href="/" class="flex items-center"><img src={Logo} alt="Micdrop" width="100" /></a>
134
+ </div>
135
+
136
+ <nav class="hidden md:flex items-center gap-1 ml-8 flex-1">
137
+ {#each navLinks as { label, href }}
138
+ <a
139
+ {href}
140
+ class={`px-4 py-2 ${typography.label} ${typography.textMuted} no-underline rounded-lg transition-all duration-150
141
+ hover:text-gray-900 hover:bg-gray-100 hover:no-underline dark:hover:text-white dark:hover:bg-gray-700
142
+ ${isActive(href, currentPath) ? 'text-blue-700 bg-gray-100 dark:text-blue-500 dark:bg-gray-700' : ''}`}
143
+ >
144
+ {label}
145
+ </a>
146
+ {/each}
147
+ </nav>
148
+
149
+ <div class="flex items-center gap-3">
150
+ <DarkModeToggle />
151
+
152
+ <div class="relative ml-1">
153
+ <Button
154
+ variant="avatar"
155
+ size="md"
156
+ class="block md:hidden"
157
+ onclick={() => showMobileSheet = true}
158
+ >
159
+ <Avatar src={avatar} rounded size="md" />
160
+ </Button>
161
+
162
+ <Button
163
+ variant="avatar"
164
+ size="md"
165
+ class="hidden md:block"
166
+ onclick={() => showDesktopDropdown = !showDesktopDropdown}
167
+ >
168
+ <Avatar src={avatar} rounded size="md" />
169
+ </Button>
170
+
171
+ {#if showDesktopDropdown}
172
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
173
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
174
+ <div class="fixed inset-0 z-30 bg-transparent" onclick={() => showDesktopDropdown = false}></div>
175
+ <div class="absolute top-[calc(100%+0.5rem)] right-0 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-40 overflow-hidden">
176
+ <div class="py-3 px-4 border-b border-gray-200 dark:border-gray-700">
177
+ <span class={`block ${typography.label}`}>{name || "Performer"}</span>
178
+ <span class={`block ${typography.xsMuted} mt-0.5`}>{email || ""}</span>
179
+ </div>
180
+ {#each dropdownLinks as { label, href }}
181
+ <Button
182
+ variant="menu-item"
183
+ size="md"
184
+ onclick={() => handleDropdownItemClick(href)}
185
+ >
186
+ {label}
187
+ </Button>
188
+ {/each}
189
+ <div class="h-px bg-gray-200 dark:bg-gray-700"></div>
190
+ <Button
191
+ variant="menu-item-danger"
192
+ size="md"
193
+ onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
194
+ >
195
+ Sign out
196
+ </Button>
197
+ </div>
198
+ {/if}
199
+ </div>
200
+ </div>
201
+ {/if}
202
+
203
+ {#if showMobileSheet}
204
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
205
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
206
+ <div
207
+ class="fixed inset-0 flex items-end justify-center bg-black/50 z-50 touch-none overscroll-none"
208
+ onclick={() => { showMobileSheet = false; }}
209
+ transition:fade={{ duration: 300 }}
210
+ use:portal
211
+ >
212
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
213
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
214
+ <div
215
+ class="bg-white dark:bg-gray-800 rounded-t-3xl shadow-xl w-full max-h-[90vh] max-h-[90dvh] overflow-hidden pb-[var(--safe-bottom,0px)] touch-pan-y overscroll-contain"
216
+ onclick={(e) => e.stopPropagation()}
217
+ transition:fly={{ y: 300, duration: 300, easing: cubicOut }}
218
+ >
219
+ <div class="flex justify-center pt-3 pb-2">
220
+ <div class="w-10 h-1 bg-gray-300 dark:bg-gray-600 rounded-sm"></div>
221
+ </div>
222
+
223
+ <div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
224
+ <p class={`${typography.h4} m-0`}>{name || "Performer"}</p>
225
+ <p class={`${typography.smMuted} mt-0.5 m-0`}>{email || ""}</p>
226
+ </div>
227
+
228
+ <div class="py-2">
229
+ {#each dropdownLinks as { label, href }}
230
+ <Button
231
+ variant="menu-item"
232
+ size="lg"
233
+ onclick={() => handleMobileSheetItemClick(href)}
234
+ >
235
+ {label}
236
+ </Button>
237
+ {/each}
238
+
239
+ <Button
240
+ variant="menu-item-danger"
241
+ size="lg"
242
+ onclick={() => { showMobileSheet = false; signoutHandler(); }}
243
+ >
244
+ Sign Out
245
+ </Button>
246
+ </div>
247
+
248
+ <div class="border-t-8 border-gray-100 dark:border-gray-700">
249
+ <Button variant="ghost" size="full" class="py-4 text-base font-semibold" onclick={() => showMobileSheet = false}>
250
+ Cancel
251
+ </Button>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ {/if}
@@ -29,21 +29,21 @@
29
29
  {#if breadcrumb.length > 0}
30
30
  <Breadcrumb data={breadcrumb} />
31
31
  {/if}
32
-
33
- <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
34
- <div>
35
- {#if title}
36
- <h1 class={typography.h1}>{title}</h1>
37
- {/if}
38
- {#if subtitle}
39
- <p class={`mt-1 ${typography.smMuted}`}>{subtitle}</p>
40
- {/if}
41
- </div>
42
-
43
- {#if actions}
44
- <div class="flex items-center gap-3">
45
- {@render actions()}
46
- </div>
47
- {/if}
48
- </div>
49
- </header>
32
+
33
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
34
+ <div>
35
+ {#if title}
36
+ <h1 class={typography.h1}>{title}</h1>
37
+ {/if}
38
+ {#if subtitle}
39
+ <p class={`mt-1 ${typography.smMuted}`}>{subtitle}</p>
40
+ {/if}
41
+ </div>
42
+
43
+ {#if actions}
44
+ <div class="flex items-center gap-3">
45
+ {@render actions()}
46
+ </div>
47
+ {/if}
48
+ </div>
49
+ </header>
@@ -1,40 +1,40 @@
1
- <script>
2
- import Breadcrumb from '../../primitives/Breadcrumb/Breadcrumb.svelte';
3
- import Card from '../../primitives/Card.svelte';
4
- import { typography } from '../../tokens/typography';
5
-
6
- let {
7
- breadcrumb = [],
8
- title = '',
9
- subtitle = '',
10
- variant = 'default',
11
- maxWidth = 'max-w-4xl',
12
- className = '',
13
- showHeader = true,
14
- children,
15
- actions,
16
- } = $props();
17
- </script>
18
-
19
- {#if showHeader}
20
- <nav class={`pt-4 px-4 ${typography.h3}`}>
21
- <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4">
22
- <Breadcrumb data={breadcrumb} {title} {subtitle} />
23
- {#if actions}
24
- <div class="flex items-center gap-3 flex-shrink-0">
25
- {@render actions()}
26
- </div>
27
- {/if}
28
- </div>
29
- </nav>
30
- {/if}
31
-
32
- <div class="px-4 pt-4 pb-20 md:pb-6 {className}">
33
- {#if variant === 'card'}
34
- <Card className="bg-white dark:bg-gray-800 {maxWidth}">
35
- {@render children?.()}
36
- </Card>
37
- {:else}
38
- {@render children?.()}
39
- {/if}
40
- </div>
1
+ <script>
2
+ import Breadcrumb from '../../primitives/Breadcrumb/Breadcrumb.svelte';
3
+ import Card from '../../primitives/Card.svelte';
4
+ import { typography } from '../../tokens/typography';
5
+
6
+ let {
7
+ breadcrumb = [],
8
+ title = '',
9
+ subtitle = '',
10
+ variant = 'default',
11
+ maxWidth = 'max-w-4xl',
12
+ className = '',
13
+ showHeader = true,
14
+ children,
15
+ actions,
16
+ } = $props();
17
+ </script>
18
+
19
+ {#if showHeader}
20
+ <nav class={`pt-4 px-4 ${typography.h3}`}>
21
+ <div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4">
22
+ <Breadcrumb data={breadcrumb} {title} {subtitle} />
23
+ {#if actions}
24
+ <div class="flex items-center gap-3 flex-shrink-0">
25
+ {@render actions()}
26
+ </div>
27
+ {/if}
28
+ </div>
29
+ </nav>
30
+ {/if}
31
+
32
+ <div class="px-4 pt-4 pb-20 md:pb-6 {className}">
33
+ {#if variant === 'card'}
34
+ <Card className="bg-white dark:bg-gray-800 {maxWidth}">
35
+ {@render children?.()}
36
+ </Card>
37
+ {:else}
38
+ {@render children?.()}
39
+ {/if}
40
+ </div>