@getmicdrop/svelte-components 5.20.2 → 5.21.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 (259) hide show
  1. package/dist/calendar/AboutShow/AboutShow.spec.js +10 -10
  2. package/dist/calendar/AboutShow/AboutShow.svelte +11 -11
  3. package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +9 -8
  4. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +22 -25
  5. package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
  6. package/dist/calendar/FAQs/FAQs.spec.js +6 -6
  7. package/dist/calendar/FAQs/FAQs.svelte +4 -4
  8. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +8 -12
  9. package/dist/calendar/OrderSummary/OrderSummary.svelte +36 -36
  10. package/dist/calendar/PublicCard/PublicCard.spec.js +3 -3
  11. package/dist/calendar/PublicCard/PublicCard.svelte +7 -7
  12. package/dist/calendar/ShowCard/ShowCard.spec.js +8 -8
  13. package/dist/calendar/ShowCard/ShowCard.svelte +8 -8
  14. package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +4 -4
  15. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +4 -4
  16. package/dist/components/Heading.spec.js +1 -1
  17. package/dist/components/Heading.svelte +1 -1
  18. package/dist/components/Layout/AppShell.svelte +4 -4
  19. package/dist/components/Layout/ContentSection.svelte +2 -2
  20. package/dist/components/Layout/Heading.svelte +3 -3
  21. package/dist/components/Layout/PageContainer.svelte +2 -2
  22. package/dist/components/Layout/Section.spec.js +4 -4
  23. package/dist/components/Layout/Text.svelte +7 -7
  24. package/dist/components/Layout/__tests__/AppShell.test.js +5 -5
  25. package/dist/components/Layout/__tests__/ContentSection.test.js +1 -1
  26. package/dist/components/Layout/__tests__/Heading.test.js +3 -3
  27. package/dist/components/Layout/__tests__/PageContainer.test.js +4 -4
  28. package/dist/components/Layout/__tests__/Text.test.js +9 -9
  29. package/dist/components/Text.spec.js +4 -4
  30. package/dist/components/Text.svelte +7 -7
  31. package/dist/patterns/chat/ChatActivityNotice.spec.js +1 -1
  32. package/dist/patterns/chat/ChatActivityNotice.svelte +3 -3
  33. package/dist/patterns/chat/ChatBubble.spec.js +1 -1
  34. package/dist/patterns/chat/ChatBubble.svelte +7 -7
  35. package/dist/patterns/chat/ChatContainer.spec.js +1 -1
  36. package/dist/patterns/chat/ChatContainer.svelte +3 -3
  37. package/dist/patterns/chat/ChatDateDivider.svelte +1 -1
  38. package/dist/patterns/chat/ChatInvitationBubble.spec.js +2 -2
  39. package/dist/patterns/chat/ChatInvitationBubble.svelte +1 -1
  40. package/dist/patterns/chat/ChatInvitationNotice.spec.js +2 -2
  41. package/dist/patterns/chat/ChatInvitationNotice.svelte +1 -1
  42. package/dist/patterns/chat/ChatMessageGroup.svelte +2 -2
  43. package/dist/patterns/chat/ChatSlotUpdate.svelte +2 -2
  44. package/dist/patterns/chat/ChatStatusBadge.spec.js +10 -10
  45. package/dist/patterns/chat/ChatStatusBadge.svelte +8 -8
  46. package/dist/patterns/chat/ChatStatusTransition.spec.js +9 -9
  47. package/dist/patterns/chat/ChatStatusTransition.svelte +5 -5
  48. package/dist/patterns/chat/ChatTextBubble.spec.js +4 -4
  49. package/dist/patterns/chat/ChatTextBubble.svelte +2 -2
  50. package/dist/patterns/data/DataList.spec.js +5 -5
  51. package/dist/patterns/data/DataList.svelte +1 -1
  52. package/dist/patterns/data/DataTable.spec.js +18 -18
  53. package/dist/patterns/data/DataTable.svelte +3 -3
  54. package/dist/patterns/forms/FormActions.spec.js +6 -6
  55. package/dist/patterns/forms/FormActions.stories.svelte +1 -1
  56. package/dist/patterns/forms/FormActions.svelte +1 -1
  57. package/dist/patterns/forms/FormSection.spec.js +4 -4
  58. package/dist/patterns/forms/FormSection.svelte +2 -2
  59. package/dist/patterns/forms/FormValidationSummary.spec.js +2 -2
  60. package/dist/patterns/forms/FormValidationSummary.stories.svelte +4 -4
  61. package/dist/patterns/forms/FormValidationSummary.svelte +4 -4
  62. package/dist/patterns/navigation/BottomNav.stories.svelte +23 -23
  63. package/dist/patterns/navigation/BottomNav.svelte +3 -3
  64. package/dist/patterns/navigation/Header.spec.js +9 -9
  65. package/dist/patterns/navigation/Header.svelte +13 -15
  66. package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
  67. package/dist/patterns/page/PageLayout.spec.js +5 -5
  68. package/dist/patterns/page/PageLayout.svelte +1 -1
  69. package/dist/patterns/page/PageLoader.stories.svelte +5 -5
  70. package/dist/patterns/page/SectionHeader.spec.js +8 -8
  71. package/dist/patterns/page/SectionHeader.svelte +2 -2
  72. package/dist/presets/buttons.js +1 -1
  73. package/dist/presets/buttons.spec.js +4 -4
  74. package/dist/primitives/Accordion/Accordion.spec.js +5 -5
  75. package/dist/primitives/Accordion/Accordion.stories.svelte +9 -9
  76. package/dist/primitives/Accordion/Accordion.svelte +2 -2
  77. package/dist/primitives/Accordion/AccordionItem.spec.js +19 -28
  78. package/dist/primitives/Accordion/AccordionItem.svelte +4 -4
  79. package/dist/primitives/Avatar/Avatar.spec.js +11 -11
  80. package/dist/primitives/Avatar/Avatar.stories.svelte +6 -5
  81. package/dist/primitives/Avatar/Avatar.stories.svelte.d.ts.map +1 -1
  82. package/dist/primitives/Avatar/Avatar.svelte +3 -3
  83. package/dist/primitives/Badges/Badge.spec.js +10 -10
  84. package/dist/primitives/BottomSheet/BottomSheet.spec.js +5 -5
  85. package/dist/primitives/BottomSheet/BottomSheet.svelte +7 -7
  86. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +4 -2
  87. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +4 -4
  88. package/dist/primitives/Button/Button.spec.js +15 -15
  89. package/dist/primitives/Button/Button.svelte +16 -16
  90. package/dist/primitives/Button/ButtonVariantShowcase.spec.js +1 -1
  91. package/dist/primitives/Button/ButtonVariantShowcase.svelte +18 -18
  92. package/dist/primitives/Card.spec.js +1 -1
  93. package/dist/primitives/Card.stories.svelte +1 -1
  94. package/dist/primitives/Card.svelte +1 -1
  95. package/dist/primitives/CardAction/CardAction.svelte +3 -3
  96. package/dist/primitives/Checkbox/Checkbox.spec.js +16 -16
  97. package/dist/primitives/Checkbox/Checkbox.stories.svelte +3 -3
  98. package/dist/primitives/Checkbox/Checkbox.svelte +9 -9
  99. package/dist/primitives/DarkModeToggle.spec.js +11 -11
  100. package/dist/primitives/DarkModeToggle.stories.svelte +8 -8
  101. package/dist/primitives/DarkModeToggle.svelte +4 -4
  102. package/dist/primitives/Drawer/Drawer.spec.js +4 -4
  103. package/dist/primitives/Drawer/Drawer.stories.svelte +6 -6
  104. package/dist/primitives/Drawer/Drawer.svelte +11 -11
  105. package/dist/primitives/Dropdown/Dropdown.spec.js +9 -9
  106. package/dist/primitives/Dropdown/Dropdown.stories.svelte +4 -4
  107. package/dist/primitives/Dropdown/Dropdown.svelte +2 -2
  108. package/dist/primitives/Dropdown/DropdownDivider.svelte +1 -1
  109. package/dist/primitives/Dropdown/DropdownItem.spec.js +8 -15
  110. package/dist/primitives/Dropdown/DropdownItem.svelte +3 -3
  111. package/dist/primitives/Helper/Helper.spec.js +6 -6
  112. package/dist/primitives/Helper/Helper.svelte +3 -3
  113. package/dist/primitives/Icons/Icon.stories.svelte +15 -15
  114. package/dist/primitives/Icons/IconGallery.stories.svelte +26 -26
  115. package/dist/primitives/Icons/Icons.spec.js +3 -3
  116. package/dist/primitives/Input/Input.spec.js +9 -9
  117. package/dist/primitives/Input/Input.svelte +11 -11
  118. package/dist/primitives/Input/Select.spec.js +7 -7
  119. package/dist/primitives/Input/Select.stories.svelte +1 -1
  120. package/dist/primitives/Input/Select.svelte +6 -6
  121. package/dist/primitives/Input/Textarea.spec.js +8 -8
  122. package/dist/primitives/Input/Textarea.stories.svelte +1 -1
  123. package/dist/primitives/Input/Textarea.svelte +2 -2
  124. package/dist/primitives/Label/Label.spec.js +20 -21
  125. package/dist/primitives/Label/Label.svelte +4 -4
  126. package/dist/primitives/LandingButton/LandingButton.svelte +3 -3
  127. package/dist/primitives/MenuItem/MenuItem.spec.js +5 -5
  128. package/dist/primitives/MenuItem/MenuItem.svelte +4 -4
  129. package/dist/primitives/Modal/Modal.stories.svelte +8 -8
  130. package/dist/primitives/Modal/Modal.svelte +4 -4
  131. package/dist/primitives/NavItem/NavItem.spec.js +2 -2
  132. package/dist/primitives/NavItem/NavItem.svelte +3 -3
  133. package/dist/primitives/NumberInput/NumberInput.spec.js +17 -17
  134. package/dist/primitives/NumberInput/NumberInput.svelte +8 -8
  135. package/dist/primitives/Pagination/DotIndicator.svelte +6 -6
  136. package/dist/primitives/Pagination/Pagination.spec.js +6 -6
  137. package/dist/primitives/Pagination/Pagination.stories.svelte +4 -4
  138. package/dist/primitives/Pagination/Pagination.svelte +3 -3
  139. package/dist/primitives/Radio/Radio.spec.js +19 -19
  140. package/dist/primitives/Radio/Radio.stories.svelte +5 -5
  141. package/dist/primitives/Radio/Radio.svelte +8 -8
  142. package/dist/primitives/SearchResultItem/SearchResultItem.svelte +5 -5
  143. package/dist/primitives/SidebarToggle/SidebarToggle.svelte +2 -2
  144. package/dist/primitives/Skeleton/CardPlaceholder.spec.js +1 -1
  145. package/dist/primitives/Skeleton/CardPlaceholder.svelte +11 -11
  146. package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +2 -2
  147. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +7 -7
  148. package/dist/primitives/Skeleton/ListPlaceholder.spec.js +2 -2
  149. package/dist/primitives/Skeleton/ListPlaceholder.svelte +5 -5
  150. package/dist/primitives/Skeleton/Skeleton.spec.js +7 -7
  151. package/dist/primitives/Skeleton/Skeleton.stories.svelte +4 -4
  152. package/dist/primitives/Skeleton/Skeleton.svelte +1 -1
  153. package/dist/primitives/Spinner/Spinner.spec.js +4 -5
  154. package/dist/primitives/Spinner/Spinner.stories.svelte +2 -2
  155. package/dist/primitives/Spinner/Spinner.svelte +1 -1
  156. package/dist/primitives/Tabs/Tabs.spec.js +14 -14
  157. package/dist/primitives/Tabs/Tabs.stories.svelte +6 -6
  158. package/dist/primitives/Tabs/Tabs.svelte +8 -8
  159. package/dist/primitives/Toggle.spec.js +3 -5
  160. package/dist/primitives/Toggle.stories.svelte +7 -7
  161. package/dist/primitives/Toggle.svelte +7 -7
  162. package/dist/primitives/Tooltip/Tooltip.svelte +5 -5
  163. package/dist/primitives/ValidationError.spec.js +1 -1
  164. package/dist/primitives/ValidationError.stories.svelte +8 -8
  165. package/dist/primitives/ValidationError.svelte +1 -1
  166. package/dist/recipes/CropImage/CropImage.stories.svelte +8 -8
  167. package/dist/recipes/CropImage/CropImage.svelte +7 -7
  168. package/dist/recipes/ImageUploader/ImageUploader.spec.js +1 -1
  169. package/dist/recipes/ImageUploader/ImageUploader.svelte +34 -56
  170. package/dist/recipes/SuperLogin/SuperLogin.svelte +25 -25
  171. package/dist/recipes/Toaster/Toaster.stories.svelte +10 -10
  172. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  173. package/dist/recipes/feedback/ErrorDisplay.spec.js +1 -1
  174. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +2 -2
  175. package/dist/recipes/feedback/ErrorDisplay.svelte +2 -2
  176. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +7 -7
  177. package/dist/recipes/fields/CheckboxField.spec.js +2 -2
  178. package/dist/recipes/fields/CheckboxField.svelte +2 -2
  179. package/dist/recipes/fields/FormField.spec.js +4 -4
  180. package/dist/recipes/fields/FormField.svelte +1 -1
  181. package/dist/recipes/fields/RadioGroup.spec.js +1 -1
  182. package/dist/recipes/fields/RadioGroup.svelte +2 -2
  183. package/dist/recipes/fields/SelectField.spec.js +2 -2
  184. package/dist/recipes/fields/TextareaField.spec.js +2 -2
  185. package/dist/recipes/fields/ToggleField.spec.js +2 -2
  186. package/dist/recipes/fields/ToggleField.svelte +1 -1
  187. package/dist/recipes/inputs/MultiSelect.stories.svelte +2 -2
  188. package/dist/recipes/inputs/MultiSelect.svelte +10 -10
  189. package/dist/recipes/inputs/OTPInput.stories.svelte +9 -9
  190. package/dist/recipes/inputs/OTPInput.svelte +1 -1
  191. package/dist/recipes/inputs/PasswordInput.spec.js +2 -2
  192. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +14 -14
  193. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +3 -3
  194. package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +2 -2
  195. package/dist/recipes/inputs/PhoneInput.svelte +5 -5
  196. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +10 -10
  197. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +7 -7
  198. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +11 -14
  199. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
  200. package/dist/recipes/inputs/Search.spec.js +3 -3
  201. package/dist/recipes/inputs/Search.svelte +1 -1
  202. package/dist/recipes/inputs/phoneInput/CountrySelector.svelte +5 -5
  203. package/dist/recipes/modals/AlertModal.spec.js +36 -36
  204. package/dist/recipes/modals/AlertModal.svelte +8 -8
  205. package/dist/recipes/modals/ConfirmationModal.spec.js +20 -20
  206. package/dist/recipes/modals/ConfirmationModal.svelte +1 -1
  207. package/dist/recipes/modals/FeedbackModal.svelte +7 -7
  208. package/dist/recipes/modals/InputModal.spec.js +17 -17
  209. package/dist/recipes/modals/InputModal.svelte +3 -3
  210. package/dist/recipes/modals/ModalStateManager.spec.js +1 -1
  211. package/dist/recipes/modals/ModalStateManager.svelte +2 -2
  212. package/dist/recipes/modals/StatusModal.spec.js +7 -7
  213. package/dist/recipes/modals/StatusModal.svelte +10 -10
  214. package/dist/schemas/__tests__/order.test.js +1 -1
  215. package/dist/schemas/auth.d.ts +107 -17
  216. package/dist/schemas/auth.d.ts.map +1 -1
  217. package/dist/schemas/common.d.ts +41 -13
  218. package/dist/schemas/common.d.ts.map +1 -1
  219. package/dist/schemas/event.d.ts +147 -41
  220. package/dist/schemas/event.d.ts.map +1 -1
  221. package/dist/schemas/order.d.ts +208 -51
  222. package/dist/schemas/order.d.ts.map +1 -1
  223. package/dist/schemas/performer.d.ts +199 -44
  224. package/dist/schemas/performer.d.ts.map +1 -1
  225. package/dist/schemas/promo.d.ts +221 -55
  226. package/dist/schemas/promo.d.ts.map +1 -1
  227. package/dist/schemas/ticket.d.ts +187 -61
  228. package/dist/schemas/ticket.d.ts.map +1 -1
  229. package/dist/schemas/user.d.ts +114 -54
  230. package/dist/schemas/user.d.ts.map +1 -1
  231. package/dist/schemas/venue.d.ts +238 -20
  232. package/dist/schemas/venue.d.ts.map +1 -1
  233. package/dist/stories/ButtonAuditDashboard.spec.js +12 -12
  234. package/dist/stories/ButtonAuditDashboard.svelte +55 -55
  235. package/dist/stories/ButtonAuditReview.spec.js +8 -8
  236. package/dist/stories/ButtonAuditReview.svelte +87 -87
  237. package/dist/stories/ButtonGridView.spec.js +27 -27
  238. package/dist/stories/ButtonGridView.svelte +22 -22
  239. package/dist/stories/ButtonShowcase.spec.js +4 -4
  240. package/dist/stories/ButtonShowcase.svelte +119 -119
  241. package/dist/stories/ComponentConsolidation.stories.svelte +453 -453
  242. package/dist/stories/DesignSystemAudit.stories.svelte +127 -127
  243. package/dist/stories/PatternsGallery.spec.js +3 -3
  244. package/dist/stories/PatternsGallery.svelte +23 -23
  245. package/dist/stories/PrimitivesGallery.spec.js +9 -9
  246. package/dist/stories/PrimitivesGallery.svelte +68 -68
  247. package/dist/stories/RecipesGallery.svelte +26 -26
  248. package/dist/tokens/__tests__/typography-base.test.js +5 -5
  249. package/dist/tokens/__tests__/typography.test.js +32 -36
  250. package/dist/tokens/__tests__/variants.test.js +63 -78
  251. package/dist/tokens/tokens.css +15 -15
  252. package/dist/tokens/typography-base.css +16 -16
  253. package/dist/tokens/typography.d.ts +29 -29
  254. package/dist/tokens/typography.js +29 -29
  255. package/dist/tokens/utilities.css +35 -47
  256. package/dist/tokens/variants.d.ts +32 -32
  257. package/dist/tokens/variants.js +32 -32
  258. package/dist/utils/utils/utils.spec.js +2 -2
  259. package/package.json +1 -1
@@ -17,20 +17,20 @@
17
17
  <Story name="Default">
18
18
  <div class="flex flex-col gap-4 p-4">
19
19
  <h3 class="text-lg font-semibold">Theme Toggle (3-State)</h3>
20
- <p class="text-sm text-gray-500 dark:text-gray-400 dark:text-gray-500 dark:text-gray-400">
20
+ <p class="text-sm text-muted-foreground">
21
21
  Cycles through: Auto → Light → Dark → Auto
22
22
  </p>
23
23
  <DarkModeToggle />
24
- <p class="text-xs text-gray-500 dark:text-gray-400">
24
+ <p class="text-xs text-muted-foreground">
25
25
  Click the toggle to cycle through theme modes. In auto mode, it follows system preferences.
26
26
  </p>
27
27
  </div>
28
28
  </Story>
29
29
 
30
30
  <Story name="In Header">
31
- <div class="bg-white dark:bg-gray-900 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 p-4 rounded-lg">
31
+ <div class="bg-card border border-border p-4 rounded-lg">
32
32
  <div class="flex items-center justify-between">
33
- <h2 class="text-xl font-bold text-gray-900 dark:text-white dark:text-white">Application Header</h2>
33
+ <h2 class="text-xl font-bold text-text-primary">Application Header</h2>
34
34
  <DarkModeToggle />
35
35
  </div>
36
36
  </div>
@@ -38,17 +38,17 @@
38
38
 
39
39
  <Story name="Theme States Demo">
40
40
  <div class="space-y-4 p-4">
41
- <div class="bg-white dark:bg-gray-900 dark:bg-gray-800 p-6 rounded-lg border border-gray-200 dark:border-gray-700">
42
- <h3 class="text-lg font-semibold text-gray-900 dark:text-white dark:text-white mb-2">
41
+ <div class="bg-card p-6 rounded-lg border border-border">
42
+ <h3 class="text-lg font-semibold text-text-primary mb-2">
43
43
  Current Theme Demo
44
44
  </h3>
45
- <p class="text-gray-500 dark:text-gray-400 dark:text-gray-300 mb-4">
45
+ <p class="text-muted-foreground mb-4">
46
46
  This content changes appearance based on the selected theme mode.
47
47
  </p>
48
48
  <DarkModeToggle />
49
49
  </div>
50
50
 
51
- <div class="text-sm text-gray-500 dark:text-gray-400 dark:text-gray-500 dark:text-gray-400">
51
+ <div class="text-sm text-muted-foreground">
52
52
  <p><strong>Auto Mode:</strong> Follows system preferences</p>
53
53
  <p><strong>Light Mode:</strong> Forces light theme</p>
54
54
  <p><strong>Dark Mode:</strong> Forces dark theme</p>
@@ -109,7 +109,7 @@
109
109
  title={titleText}
110
110
  >
111
111
  <span
112
- class="text-amber-500 transition-all duration-300 {themeMode === 'light'
112
+ class="text-accent-warning transition-all duration-300 {themeMode === 'light'
113
113
  ? 'scale-100 rotate-0 opacity-100'
114
114
  : 'pointer-events-none absolute scale-0 rotate-180 opacity-0'}"
115
115
  >
@@ -127,15 +127,15 @@
127
127
  {#if themeMode === "auto"}
128
128
  <div class="absolute inset-0 overflow-hidden rounded-lg">
129
129
  <div
130
- class="absolute flex h-full w-full items-center justify-center bg-white"
130
+ class="absolute flex h-full w-full items-center justify-center bg-card"
131
131
  style="clip-path: polygon(0 0, 100% 0, 0 100%)"
132
132
  >
133
- <span class="-translate-x-1 -translate-y-1 text-amber-500">
133
+ <span class="-translate-x-1 -translate-y-1 text-accent-warning">
134
134
  <SunIcon size="12" />
135
135
  </span>
136
136
  </div>
137
137
  <div
138
- class="absolute flex h-full w-full items-center justify-center bg-gray-800"
138
+ class="absolute flex h-full w-full items-center justify-center bg-bg-secondary"
139
139
  style="clip-path: polygon(100% 0, 100% 100%, 0 100%)"
140
140
  >
141
141
  <span class="translate-x-1 translate-y-1">
@@ -152,16 +152,16 @@ describe('Drawer Styling', () => {
152
152
  expect(dialog).toHaveClass('flex-col');
153
153
  });
154
154
 
155
- test('has bg-white background', () => {
155
+ test('has bg-card background', () => {
156
156
  const { container } = render(Drawer, { props: { open: true } });
157
157
  const dialog = container.querySelector('[role="dialog"]');
158
- expect(dialog).toHaveClass('bg-white');
158
+ expect(dialog).toHaveClass('bg-card');
159
159
  });
160
160
 
161
- test('has dark mode background', () => {
161
+ test('has token-based background', () => {
162
162
  const { container } = render(Drawer, { props: { open: true } });
163
163
  const dialog = container.querySelector('[role="dialog"]');
164
- expect(dialog).toHaveClass('dark:bg-gray-800');
164
+ expect(dialog).toHaveClass('bg-card');
165
165
  });
166
166
  });
167
167
 
@@ -33,11 +33,11 @@
33
33
  <Drawer bind:open={openRight} position="right">
34
34
  <div class="p-6">
35
35
  <h2 class="text-xl font-semibold mb-4">Drawer Title</h2>
36
- <p class="text-gray-600 mb-4">
36
+ <p class="text-text-secondary mb-4">
37
37
  This drawer slides in from the right side. Click outside or use the close button to dismiss.
38
38
  </p>
39
39
  <div class="space-y-4">
40
- <p class="text-sm text-gray-500">Some content here...</p>
40
+ <p class="text-sm text-muted-foreground">Some content here...</p>
41
41
  <Button onclick={() => openRight = false}>Close</Button>
42
42
  </div>
43
43
  </div>
@@ -54,10 +54,10 @@
54
54
  <div class="p-6">
55
55
  <h2 class="text-xl font-semibold mb-4">Navigation</h2>
56
56
  <nav class="space-y-2">
57
- <a href="/dashboard" class="block px-3 py-2 rounded hover:bg-gray-100">Dashboard</a>
58
- <a href="/shows" class="block px-3 py-2 rounded hover:bg-gray-100">Shows</a>
59
- <a href="/performers" class="block px-3 py-2 rounded hover:bg-gray-100">Performers</a>
60
- <a href="/settings" class="block px-3 py-2 rounded hover:bg-gray-100">Settings</a>
57
+ <a href="/dashboard" class="block px-3 py-2 rounded hover:bg-muted">Dashboard</a>
58
+ <a href="/shows" class="block px-3 py-2 rounded hover:bg-muted">Shows</a>
59
+ <a href="/performers" class="block px-3 py-2 rounded hover:bg-muted">Performers</a>
60
+ <a href="/settings" class="block px-3 py-2 rounded hover:bg-muted">Settings</a>
61
61
  </nav>
62
62
  <div class="mt-6">
63
63
  <Button variant="ghost" onclick={() => openLeft = false}>Close</Button>
@@ -74,15 +74,15 @@
74
74
  let placementClasses = $derived.by(() => {
75
75
  switch (placement) {
76
76
  case 'left':
77
- return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-gray-200 dark:border-gray-700`;
77
+ return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-border`;
78
78
  case 'right':
79
- return `top-0 right-0 h-screen ${widthClass} max-w-full border-l border-gray-200 dark:border-gray-700`;
79
+ return `top-0 right-0 h-screen ${widthClass} max-w-full border-l border-border`;
80
80
  case 'top':
81
- return `top-0 left-0 right-0 w-full border-b border-gray-200 dark:border-gray-700`;
81
+ return `top-0 left-0 right-0 w-full border-b border-border`;
82
82
  case 'bottom':
83
- return `bottom-0 left-0 right-0 w-full border-t border-gray-200 dark:border-gray-700`;
83
+ return `bottom-0 left-0 right-0 w-full border-t border-border`;
84
84
  default:
85
- return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-gray-200 dark:border-gray-700`;
85
+ return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-border`;
86
86
  }
87
87
  });
88
88
 
@@ -155,11 +155,11 @@
155
155
  <!-- svelte-ignore a11y_no_static_element_interactions -->
156
156
  {#if edge && placement === "bottom" && !isVisible}
157
157
  <div
158
- class="fixed bottom-0 left-0 right-0 z-40 flex justify-center w-full p-4 cursor-pointer bg-white border-t border-gray-200 hover:bg-gray-50 dark:bg-gray-800 dark:border-gray-700 dark:hover:bg-gray-700 transition-colors"
158
+ class="fixed bottom-0 left-0 right-0 z-40 flex justify-center w-full p-4 cursor-pointer bg-card border-t border-border hover:bg-bg-secondary transition-colors"
159
159
  style="bottom: {edgeOffset}px"
160
160
  onclick={handleEdgeClick}
161
161
  >
162
- <span class="absolute w-8 h-1 -translate-x-1/2 bg-gray-300 rounded-lg top-3 left-1/2 dark:bg-gray-600"></span>
162
+ <span class="absolute w-8 h-1 -translate-x-1/2 bg-bg-quaternary rounded-lg top-3 left-1/2"></span>
163
163
  </div>
164
164
  {/if}
165
165
 
@@ -170,7 +170,7 @@
170
170
  <!-- svelte-ignore a11y_click_events_have_key_events -->
171
171
  <!-- svelte-ignore a11y_no_static_element_interactions -->
172
172
  <div
173
- class="fixed inset-0 z-30 bg-gray-900/50 dark:bg-gray-900/80"
173
+ class="fixed inset-0 z-30 bg-bg-primary/50"
174
174
  onclick={handleBackdropClick}
175
175
  transition:fade={{ duration: 200 }}
176
176
  role="presentation"
@@ -182,7 +182,7 @@
182
182
  bind:this={drawerElement}
183
183
  {id}
184
184
  class="
185
- fixed z-40 flex flex-col bg-white dark:bg-gray-800
185
+ fixed z-40 flex flex-col bg-card
186
186
  {placementClasses}
187
187
  {className}
188
188
  "
@@ -195,7 +195,7 @@
195
195
  >
196
196
  <!-- Header (sticky) -->
197
197
  {#if title || header}
198
- <header class="shrink-0 p-4 border-b border-gray-200 dark:border-gray-700">
198
+ <header class="shrink-0 p-4 border-b border-border">
199
199
  {#if header}
200
200
  {@render header()}
201
201
  {:else}
@@ -216,7 +216,7 @@
216
216
 
217
217
  <!-- Actions (sticky footer) -->
218
218
  {#if actions}
219
- <footer class="shrink-0 p-4 border-t border-gray-200 dark:border-gray-700 flex flex-col gap-3">
219
+ <footer class="shrink-0 p-4 border-t border-border flex flex-col gap-3">
220
220
  {@render actions()}
221
221
  </footer>
222
222
  {/if}
@@ -59,16 +59,16 @@ describe('Dropdown Styling', () => {
59
59
  expect(menu).toHaveClass('z-10');
60
60
  });
61
61
 
62
- test('has bg-white background', () => {
62
+ test('has bg-card background', () => {
63
63
  const { container } = render(Dropdown, { props: { open: true } });
64
64
  const menu = container.querySelector('[role="menu"]');
65
- expect(menu).toHaveClass('bg-white');
65
+ expect(menu).toHaveClass('bg-card');
66
66
  });
67
67
 
68
- test('has dark mode background', () => {
68
+ test('has token-based background', () => {
69
69
  const { container } = render(Dropdown, { props: { open: true } });
70
70
  const menu = container.querySelector('[role="menu"]');
71
- expect(menu).toHaveClass('dark:bg-gray-700');
71
+ expect(menu).toHaveClass('bg-card');
72
72
  });
73
73
 
74
74
  test('has rounded-lg border radius', () => {
@@ -93,7 +93,7 @@ describe('Dropdown Styling', () => {
93
93
  const { container } = render(Dropdown, { props: { open: true } });
94
94
  const menu = container.querySelector('[role="menu"]');
95
95
  expect(menu).toHaveClass('divide-y');
96
- expect(menu).toHaveClass('divide-gray-100');
96
+ expect(menu).toHaveClass('divide-border');
97
97
  });
98
98
  });
99
99
 
@@ -116,16 +116,16 @@ describe('Dropdown List', () => {
116
116
  expect(ul).toHaveClass('text-sm');
117
117
  });
118
118
 
119
- test('ul has text-gray-700 color', () => {
119
+ test('ul has text-text-secondary color', () => {
120
120
  const { container } = render(Dropdown, { props: { open: true } });
121
121
  const ul = container.querySelector('ul');
122
- expect(ul).toHaveClass('text-gray-700');
122
+ expect(ul).toHaveClass('text-text-secondary');
123
123
  });
124
124
 
125
- test('ul has dark mode text color', () => {
125
+ test('ul has token-based text color', () => {
126
126
  const { container } = render(Dropdown, { props: { open: true } });
127
127
  const ul = container.querySelector('ul');
128
- expect(ul).toHaveClass('dark:text-gray-200');
128
+ expect(ul).toHaveClass('text-text-secondary');
129
129
  });
130
130
  });
131
131
 
@@ -53,7 +53,7 @@
53
53
  <DropdownItem onclick={() => open2 = false}>Share</DropdownItem>
54
54
  <DropdownItem onclick={() => open2 = false}>Export</DropdownItem>
55
55
  <div class="border-t my-1"></div>
56
- <DropdownItem onclick={() => open2 = false} class="text-red-600">Delete</DropdownItem>
56
+ <DropdownItem onclick={() => open2 = false} class="text-accent-danger">Delete</DropdownItem>
57
57
  </Dropdown>
58
58
  {/if}
59
59
  </div>
@@ -115,7 +115,7 @@
115
115
  <h3 class="font-medium">Card Title</h3>
116
116
  <div class="relative">
117
117
  <button
118
- class="p-1 hover:bg-gray-100 rounded"
118
+ class="p-1 hover:bg-muted rounded"
119
119
  onclick={() => open1 = !open1}
120
120
  >
121
121
 
@@ -124,12 +124,12 @@
124
124
  <Dropdown class="absolute mt-1 right-0 z-10">
125
125
  <DropdownItem onclick={() => open1 = false}>Edit</DropdownItem>
126
126
  <DropdownItem onclick={() => open1 = false}>Share</DropdownItem>
127
- <DropdownItem onclick={() => open1 = false} class="text-red-600">Delete</DropdownItem>
127
+ <DropdownItem onclick={() => open1 = false} class="text-accent-danger">Delete</DropdownItem>
128
128
  </Dropdown>
129
129
  {/if}
130
130
  </div>
131
131
  </div>
132
- <p class="text-gray-600 text-sm">
132
+ <p class="text-text-secondary text-sm">
133
133
  This is a card with a dropdown menu in the header for common actions.
134
134
  </p>
135
135
  </div>
@@ -166,13 +166,13 @@
166
166
  {#if open}
167
167
  <div
168
168
  bind:this={containerRef}
169
- class="absolute z-10 bg-white divide-y divide-gray-100 rounded-lg shadow-lg w-44 dark:bg-gray-700 dark:divide-gray-600 {className}"
169
+ class="absolute z-10 bg-card divide-y divide-border rounded-lg shadow-lg w-44 {className}"
170
170
  role="menu"
171
171
  aria-label={ariaLabel ?? labels.menu}
172
172
  transition:bloom={{ origin: placementOrigins[placement] || "top left" }}
173
173
  {...restProps}
174
174
  >
175
- <ul bind:this={dropdownRef} class="py-2 text-sm text-gray-700 dark:text-gray-200">
175
+ <ul bind:this={dropdownRef} class="py-2 text-sm text-text-secondary">
176
176
  {#if typeof children === 'function'}{@render children()}{:else if children}{children}{/if}
177
177
  </ul>
178
178
  </div>
@@ -6,4 +6,4 @@
6
6
  let { class: className = '' }: Props = $props();
7
7
  </script>
8
8
 
9
- <li class="my-1 border-t border-gray-200 dark:border-gray-600 {className}" role="separator" aria-hidden="true"></li>
9
+ <li class="my-1 border-t border-border {className}" role="separator" aria-hidden="true"></li>
@@ -131,26 +131,19 @@ describe('DropdownItem Styling', () => {
131
131
  test('has hover styles', () => {
132
132
  const { container } = render(DropdownItem);
133
133
  const button = container.querySelector('button');
134
- expect(button).toHaveClass('hover:bg-gray-100');
134
+ expect(button).toHaveClass('hover:bg-muted');
135
135
  });
136
136
 
137
- test('has dark mode hover styles', () => {
137
+ test('has hover styles', () => {
138
138
  const { container } = render(DropdownItem);
139
139
  const button = container.querySelector('button');
140
- expect(button).toHaveClass('dark:hover:bg-gray-600');
141
- expect(button).toHaveClass('dark:hover:text-white');
140
+ expect(button).toHaveClass('hover:bg-muted');
142
141
  });
143
142
 
144
143
  test('has default text color', () => {
145
144
  const { container } = render(DropdownItem);
146
145
  const button = container.querySelector('button');
147
- expect(button).toHaveClass('text-gray-700');
148
- });
149
-
150
- test('has dark mode text color', () => {
151
- const { container } = render(DropdownItem);
152
- const button = container.querySelector('button');
153
- expect(button).toHaveClass('dark:text-gray-200');
146
+ expect(button).toHaveClass('text-text-secondary');
154
147
  });
155
148
  });
156
149
 
@@ -315,8 +308,8 @@ describe('DropdownItem Active URL Styling', () => {
315
308
  });
316
309
 
317
310
  const anchor = container.querySelector('a');
318
- expect(anchor).toHaveClass('bg-blue-50');
319
- expect(anchor).toHaveClass('text-blue-700');
311
+ expect(anchor).toHaveClass('bg-status-info-bg');
312
+ expect(anchor).toHaveClass('text-brand-primary');
320
313
  });
321
314
 
322
315
  test('applies default classes when activeUrl does not match href', () => {
@@ -330,7 +323,7 @@ describe('DropdownItem Active URL Styling', () => {
330
323
  });
331
324
 
332
325
  const anchor = container.querySelector('a');
333
- expect(anchor).toHaveClass('text-gray-700');
334
- expect(anchor).not.toHaveClass('bg-blue-50');
326
+ expect(anchor).toHaveClass('text-text-secondary');
327
+ expect(anchor).not.toHaveClass('bg-status-info-bg');
335
328
  });
336
329
  });
@@ -44,10 +44,10 @@
44
44
  }
45
45
  }
46
46
 
47
- const baseClasses = "block w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white";
48
- const activeClasses = "bg-blue-50 text-blue-700 dark:bg-gray-600 dark:text-white";
47
+ const baseClasses = "block w-full text-left px-4 py-2 text-sm hover:bg-muted";
48
+ const activeClasses = "bg-status-info-bg text-brand-primary";
49
49
  const disabledClasses = "opacity-50 cursor-not-allowed";
50
- const defaultClasses = "text-gray-700 dark:text-gray-200";
50
+ const defaultClasses = "text-text-secondary";
51
51
  </script>
52
52
 
53
53
  {#if href}
@@ -15,19 +15,19 @@ describe('Helper', () => {
15
15
  expect(container.querySelector('p')).toBeInTheDocument();
16
16
  });
17
17
 
18
- test('default color has gray text', () => {
18
+ test('default color has muted-foreground text', () => {
19
19
  const { container } = render(Helper);
20
- expect(container.querySelector('[class*="gray"]')).toBeInTheDocument();
20
+ expect(container.querySelector('[class*="text-muted-foreground"]')).toBeInTheDocument();
21
21
  });
22
22
 
23
- test('red color has red text', () => {
23
+ test('red color has accent-danger text', () => {
24
24
  const { container } = render(Helper, { props: { color: 'red' } });
25
- expect(container.querySelector('[class*="red"]')).toBeInTheDocument();
25
+ expect(container.querySelector('[class*="text-accent-danger"]')).toBeInTheDocument();
26
26
  });
27
27
 
28
- test('green color has green text', () => {
28
+ test('green color has accent-success text', () => {
29
29
  const { container } = render(Helper, { props: { color: 'green' } });
30
- expect(container.querySelector('[class*="green"]')).toBeInTheDocument();
30
+ expect(container.querySelector('[class*="text-accent-success"]')).toBeInTheDocument();
31
31
  });
32
32
 
33
33
  test('applies custom className', () => {
@@ -22,9 +22,9 @@
22
22
  }: Props = $props();
23
23
 
24
24
  const colorClasses: Record<string, string> = {
25
- default: 'text-gray-500 dark:text-gray-400',
26
- red: 'text-red-600 dark:text-red-500',
27
- green: 'text-green-600 dark:text-green-500'
25
+ default: 'text-muted-foreground',
26
+ red: 'text-accent-danger',
27
+ green: 'text-accent-success'
28
28
  };
29
29
  </script>
30
30
 
@@ -45,9 +45,9 @@
45
45
  <Story name="All Icons">
46
46
  <div class="grid grid-cols-4 md:grid-cols-6 lg:grid-cols-8 gap-6 p-4">
47
47
  {#each iconNames as iconName}
48
- <div class="flex flex-col items-center gap-2 p-3 border rounded-lg hover:bg-gray-50 dark:bg-gray-800">
48
+ <div class="flex flex-col items-center gap-2 p-3 border rounded-lg hover:bg-bg-secondary">
49
49
  <Icon name={iconName} size="24" />
50
- <span class="text-xs text-gray-500 dark:text-gray-400 text-center">{iconName}</span>
50
+ <span class="text-xs text-muted-foreground text-center">{iconName}</span>
51
51
  </div>
52
52
  {/each}
53
53
  </div>
@@ -57,23 +57,23 @@
57
57
  <div class="flex items-end gap-6 p-4">
58
58
  <div class="flex flex-col items-center gap-2">
59
59
  <Icon name="Home" size="16" />
60
- <span class="text-xs text-gray-500 dark:text-gray-400">16px</span>
60
+ <span class="text-xs text-muted-foreground">16px</span>
61
61
  </div>
62
62
  <div class="flex flex-col items-center gap-2">
63
63
  <Icon name="Home" size="20" />
64
- <span class="text-xs text-gray-500 dark:text-gray-400">20px</span>
64
+ <span class="text-xs text-muted-foreground">20px</span>
65
65
  </div>
66
66
  <div class="flex flex-col items-center gap-2">
67
67
  <Icon name="Home" size="24" />
68
- <span class="text-xs text-gray-500 dark:text-gray-400">24px</span>
68
+ <span class="text-xs text-muted-foreground">24px</span>
69
69
  </div>
70
70
  <div class="flex flex-col items-center gap-2">
71
71
  <Icon name="Home" size="32" />
72
- <span class="text-xs text-gray-500 dark:text-gray-400">32px</span>
72
+ <span class="text-xs text-muted-foreground">32px</span>
73
73
  </div>
74
74
  <div class="flex flex-col items-center gap-2">
75
75
  <Icon name="Home" size="48" />
76
- <span class="text-xs text-gray-500 dark:text-gray-400">48px</span>
76
+ <span class="text-xs text-muted-foreground">48px</span>
77
77
  </div>
78
78
  </div>
79
79
  </Story>
@@ -81,20 +81,20 @@
81
81
  <Story name="Icon Colors">
82
82
  <div class="flex items-center gap-6 p-4">
83
83
  <div class="flex flex-col items-center gap-2">
84
- <Icon name="CheckCircle" size="32" color="#22c55e" />
85
- <span class="text-xs text-gray-500 dark:text-gray-400">Success</span>
84
+ <Icon name="CheckCircle" size="32" color="hsl(var(--accent-success))" />
85
+ <span class="text-xs text-muted-foreground">Success</span>
86
86
  </div>
87
87
  <div class="flex flex-col items-center gap-2">
88
- <Icon name="ErrorCircle" size="32" color="#ef4444" />
89
- <span class="text-xs text-gray-500 dark:text-gray-400">Error</span>
88
+ <Icon name="ErrorCircle" size="32" color="hsl(var(--accent-danger))" />
89
+ <span class="text-xs text-muted-foreground">Error</span>
90
90
  </div>
91
91
  <div class="flex flex-col items-center gap-2">
92
- <Icon name="Info" size="32" color="#3b82f6" />
93
- <span class="text-xs text-gray-500 dark:text-gray-400">Info</span>
92
+ <Icon name="Info" size="32" color="hsl(var(--brand-primary))" />
93
+ <span class="text-xs text-muted-foreground">Info</span>
94
94
  </div>
95
95
  <div class="flex flex-col items-center gap-2">
96
- <Icon name="Notification" size="32" color="#f59e0b" />
97
- <span class="text-xs text-gray-500 dark:text-gray-400">Warning</span>
96
+ <Icon name="Notification" size="32" color="hsl(var(--accent-warning))" />
97
+ <span class="text-xs text-muted-foreground">Warning</span>
98
98
  </div>
99
99
  </div>
100
100
  </Story>