@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
@@ -327,7 +327,7 @@ describe('AboutShow Component', () => {
327
327
  });
328
328
  const img = screen.getByAltText('Charlie Brown');
329
329
  expect(img).toHaveAttribute('src', '');
330
- expect(img.className).toContain('bg-gray-50');
330
+ expect(img.className).toContain('bg-bg-secondary');
331
331
  });
332
332
 
333
333
  it('renders multiple performers', () => {
@@ -434,11 +434,11 @@ describe('AboutShow Component', () => {
434
434
  render(AboutShow, { props: { performers: [validPerformer] } });
435
435
 
436
436
  const performerCard = screen.getByText('Bob Builder').closest('.cursor-pointer');
437
- expect(performerCard.className).toContain('border-gray-200');
437
+ expect(performerCard.className).toContain('border-border');
438
438
 
439
439
  await fireEvent.click(performerCard);
440
440
  // Check for the active state border (not the hover state)
441
- const activeClassPattern = /border-blue-700(?!\s*dark:hover)/;
441
+ const activeClassPattern = /border-brand-primary/;
442
442
  expect(performerCard.className).toMatch(activeClassPattern);
443
443
  });
444
444
 
@@ -660,7 +660,7 @@ describe('AboutShow Component', () => {
660
660
  it('has dark mode classes for title', () => {
661
661
  const { container } = render(AboutShow);
662
662
  const title = screen.getByText('About the Show');
663
- expect(title.className).toContain('dark:text-white');
663
+ expect(title.className).toContain('');
664
664
  });
665
665
 
666
666
  it('has dark mode classes for show image background', () => {
@@ -671,7 +671,7 @@ describe('AboutShow Component', () => {
671
671
  }
672
672
  });
673
673
  const img = screen.getByAltText('');
674
- expect(img.className).toContain('dark:bg-gray-800');
674
+ expect(img.className).toContain('');
675
675
  });
676
676
 
677
677
  it('has dark mode classes for description', () => {
@@ -679,14 +679,14 @@ describe('AboutShow Component', () => {
679
679
  props: { description: 'Test description' }
680
680
  });
681
681
  const paragraph = screen.getByText('Test description');
682
- expect(paragraph.className).toContain('dark:text-white');
682
+ expect(paragraph.className).toContain('');
683
683
  });
684
684
 
685
685
  it('has dark mode classes for read more button', () => {
686
686
  const longDescription = 'a'.repeat(1600);
687
687
  render(AboutShow, { props: { description: longDescription } });
688
688
  const button = screen.getByText('Show more');
689
- expect(button.className).toContain('dark:text-blue-500');
689
+ expect(button.className).toContain('');
690
690
  });
691
691
 
692
692
  it('has dark mode classes for performer card', () => {
@@ -706,9 +706,9 @@ describe('AboutShow Component', () => {
706
706
  };
707
707
  render(AboutShow, { props: { performers: [performer] } });
708
708
  const card = screen.getByText('Bob Builder').closest('.cursor-pointer');
709
- expect(card.className).toContain('dark:bg-gray-800');
710
- expect(card.className).toContain('dark:border-gray-600');
711
- expect(card.className).toContain('dark:hover:border-blue-500');
709
+ expect(card.className).toContain('');
710
+ expect(card.className).toContain('');
711
+ expect(card.className).toContain('');
712
712
  });
713
713
  });
714
714
 
@@ -67,7 +67,7 @@
67
67
 
68
68
  {#if ShowImage && description}
69
69
  <div>
70
- <img src={ShowImage} alt="" class="rounded-lg object-contain w-full bg-gray-50 dark:bg-gray-800" />
70
+ <img src={ShowImage} alt="" class="rounded-lg object-contain w-full bg-bg-secondary" />
71
71
  </div>
72
72
  {/if}
73
73
 
@@ -77,7 +77,7 @@
77
77
  {#if showReadMore && description.length > characterLimit}
78
78
  <button
79
79
  onclick={toggleDescription}
80
- class={`${typography.label} text-left hover:underline text-blue-700 dark:text-blue-500`}
80
+ class={`${typography.label} text-left hover:underline text-brand-primary`}
81
81
  >
82
82
  {labels.showLess}
83
83
  </button>
@@ -88,7 +88,7 @@
88
88
  </p>
89
89
  <button
90
90
  onclick={toggleDescription}
91
- class={`${typography.label} text-left hover:underline text-blue-700 dark:text-blue-500`}
91
+ class={`${typography.label} text-left hover:underline text-brand-primary`}
92
92
  >
93
93
  {labels.showMore}
94
94
  </button>
@@ -115,15 +115,15 @@
115
115
  <!-- svelte-ignore a11y_click_events_have_key_events -->
116
116
  <!-- svelte-ignore a11y_no_static_element_interactions -->
117
117
  <div
118
- class="w-72 sm:w-80 absolute bottom-full mb-2.5 rounded-lg p-4 z-50 shadow-xl transition-all duration-300 bg-white dark:bg-gray-800 border-2 border-blue-700 dark:border-blue-500 {index === 0 ? 'left-[190%]' : 'left-1/2 -translate-x-1/2'}"
118
+ class="w-72 sm:w-80 absolute bottom-full mb-2.5 rounded-lg p-4 z-50 shadow-xl transition-all duration-300 bg-card border-2 border-brand-primary {index === 0 ? 'left-[190%]' : 'left-1/2 -translate-x-1/2'}"
119
119
  onclick={(e) => e.stopPropagation()}
120
120
  >
121
121
  <div
122
- class="absolute w-3 h-3 bg-white dark:bg-gray-800 rotate-45 border-r-2 border-b-2 border-blue-700 dark:border-blue-500 -bottom-1.5 {index === 0 ? 'left-[20%]' : 'left-1/2'} -ml-1.5"
122
+ class="absolute w-3 h-3 bg-card rotate-45 border-r-2 border-b-2 border-brand-primary -bottom-1.5 {index === 0 ? 'left-[20%]' : 'left-1/2'} -ml-1.5"
123
123
  ></div>
124
124
 
125
125
  <button
126
- class="absolute top-2 right-2 p-1 rounded-full transition-colors text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-700"
126
+ class="absolute top-2 right-2 p-1 rounded-full transition-colors text-muted-foreground hover:bg-bg-secondary"
127
127
  onclick={closePerformer}
128
128
  aria-label={labels.closePopover}
129
129
  >
@@ -135,14 +135,14 @@
135
135
  </p>
136
136
 
137
137
  {#if profile?.instagram || profile?.twitter}
138
- <div class="flex gap-2 items-center {typography.smMuted} mt-3 pt-3 border-t border-gray-200 dark:border-gray-600">
138
+ <div class="flex gap-2 items-center {typography.smMuted} mt-3 pt-3 border-t border-border">
139
139
  <span>{typeof labels.followLabel === 'function' ? labels.followLabel(firstName) : labels.followLabel}</span>
140
140
  {#if profile?.instagram}
141
141
  <a
142
142
  href={profile.instagram}
143
143
  target="_blank"
144
144
  rel="noopener noreferrer"
145
- class="text-blue-700 dark:text-blue-500 hover:opacity-70 transition-opacity"
145
+ class="text-brand-primary hover:opacity-70 transition-opacity"
146
146
  aria-label={labels.instagramProfile}
147
147
  >
148
148
  <LogoInstagram size={20} />
@@ -153,7 +153,7 @@
153
153
  href={profile.twitter}
154
154
  target="_blank"
155
155
  rel="noopener noreferrer"
156
- class="text-blue-700 dark:text-blue-500 hover:opacity-70 transition-opacity"
156
+ class="text-brand-primary hover:opacity-70 transition-opacity"
157
157
  aria-label={labels.twitterProfile}
158
158
  >
159
159
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
@@ -169,13 +169,13 @@
169
169
  <!-- svelte-ignore a11y_click_events_have_key_events -->
170
170
  <!-- svelte-ignore a11y_no_static_element_interactions -->
171
171
  <div
172
- class="rounded-lg flex flex-col gap-2 p-2 items-center w-24 cursor-pointer transition-all bg-white dark:bg-gray-800 border hover:shadow {activePerformer === performer.ID ? 'border-blue-700 dark:border-blue-500 shadow' : 'border-gray-200 dark:border-gray-600 hover:border-blue-700 dark:hover:border-blue-500'}"
172
+ class="rounded-lg flex flex-col gap-2 p-2 items-center w-24 cursor-pointer transition-all bg-card border hover:shadow {activePerformer === performer.ID ? 'border-brand-primary shadow' : 'border-border hover:border-brand-primary'}"
173
173
  onclick={() => togglePerformer(performer.ID)}
174
174
  >
175
175
  <img
176
176
  src={performer.shouldBeHidden ? '' : profile?.profileImage ? getImageUrl(profile.profileImage) : ''}
177
177
  alt={displayName || labels.performerAlt}
178
- class="size-16 rounded object-cover {!profile?.profileImage || performer.shouldBeHidden ? 'bg-gray-50 dark:bg-gray-700' : ''}"
178
+ class="size-16 rounded object-cover {!profile?.profileImage || performer.shouldBeHidden ? 'bg-bg-secondary' : ''}"
179
179
  />
180
180
  <p class="{typography.xs} text-center leading-tight line-clamp-2">
181
181
  {#if !performer.shouldBeHidden}
@@ -214,7 +214,7 @@ describe('MiniMonthCalendar Component', () => {
214
214
  });
215
215
 
216
216
  // Check for event indicator dots
217
- const dots = container.querySelectorAll('.bg-blue-600, .bg-blue-500');
217
+ const dots = container.querySelectorAll('.bg-brand-primary, .bg-brand-primary');
218
218
  expect(dots.length).toBeGreaterThan(0);
219
219
  });
220
220
 
@@ -226,7 +226,7 @@ describe('MiniMonthCalendar Component', () => {
226
226
  }
227
227
  });
228
228
 
229
- const dots = container.querySelectorAll('.bg-blue-600, .bg-blue-500');
229
+ const dots = container.querySelectorAll('.bg-brand-primary, .bg-brand-primary');
230
230
  // Should show up to 3 dots per day
231
231
  expect(dots.length).toBeGreaterThan(0);
232
232
  });
@@ -429,7 +429,7 @@ describe('MiniMonthCalendar Component', () => {
429
429
  });
430
430
 
431
431
  // Check for green checkmark
432
- const checkmark = container.querySelector('.text-green-600');
432
+ const checkmark = container.querySelector('.text-accent-success');
433
433
  expect(checkmark).toBeInTheDocument();
434
434
  });
435
435
 
@@ -442,7 +442,7 @@ describe('MiniMonthCalendar Component', () => {
442
442
  });
443
443
 
444
444
  // Should not show spinner for display variant
445
- expect(container.querySelector('.text-green-600')).not.toBeInTheDocument();
445
+ expect(container.querySelector('.text-accent-success')).not.toBeInTheDocument();
446
446
  });
447
447
  });
448
448
 
@@ -591,14 +591,14 @@ describe('MiniMonthCalendar Component', () => {
591
591
  describe('preview days', () => {
592
592
  it('shows previous month preview days by default', () => {
593
593
  const { container } = render(MiniMonthCalendar);
594
- const previewDays = container.querySelectorAll('.text-gray-300, .dark\\:text-gray-600');
594
+ const previewDays = container.querySelectorAll('.text-muted-foreground, .dark\\:text-text-secondary');
595
595
  // March 2024 starts on a Friday, so should show some preview days
596
596
  expect(previewDays.length).toBeGreaterThan(0);
597
597
  });
598
598
 
599
599
  it('shows next month preview days by default', () => {
600
600
  const { container } = render(MiniMonthCalendar);
601
- const previewDays = container.querySelectorAll('.text-gray-300, .dark\\:text-gray-600');
601
+ const previewDays = container.querySelectorAll('.text-muted-foreground, .dark\\:text-text-secondary');
602
602
  expect(previewDays.length).toBeGreaterThan(0);
603
603
  });
604
604
 
@@ -937,7 +937,7 @@ describe('MiniMonthCalendar Component', () => {
937
937
  cell.getAttribute('aria-selected') === 'true'
938
938
  );
939
939
 
940
- expect(selectedCell?.className).toContain('bg-blue-700');
940
+ expect(selectedCell?.className).toContain('bg-brand-primary');
941
941
  });
942
942
 
943
943
  it('applies past date style for availability variant', () => {
@@ -968,7 +968,8 @@ describe('MiniMonthCalendar Component', () => {
968
968
  const eventCell = cells.find(cell => cell.textContent.includes('15'));
969
969
 
970
970
  if (eventCell) {
971
- expect(eventCell.className).toContain('bg-blue-');
971
+ // Display variant uses bg-status-info-bg on mobile for event cells
972
+ expect(eventCell.className).toContain('bg-status-info-bg');
972
973
  }
973
974
  });
974
975
 
@@ -655,7 +655,7 @@
655
655
  {#if saveStatus === 'saving'}
656
656
  <Spinner size="sm" color="secondary" />
657
657
  {:else if saveStatus === 'saved'}
658
- <span class="flex items-center justify-center text-green-600">
658
+ <span class="flex items-center justify-center text-accent-success">
659
659
  <CheckCircleSolid class="w-5 h-5" />
660
660
  </span>
661
661
  {/if}
@@ -665,10 +665,9 @@
665
665
 
666
666
  <div class="flex items-center gap-2">
667
667
  <button
668
- class="p-2 flex items-center justify-center border-0 rounded-lg bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-all duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-hidden focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
668
+ class="p-2 flex items-center justify-center border-0 rounded-lg bg-transparent text-muted-foreground cursor-pointer select-none transition-all duration-100 ease-out hover:bg-muted hover:text-text-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
669
669
  class:scale-90={prevPressed}
670
- class:bg-gray-100={prevPressed}
671
- class:dark:bg-gray-700={prevPressed}
670
+ class:bg-muted={prevPressed}
672
671
  onclick={goToPrevMonth}
673
672
  ontouchstart={() => prevPressed = true}
674
673
  ontouchend={() => prevPressed = false}
@@ -684,9 +683,9 @@
684
683
 
685
684
  {#if showTodayButton}
686
685
  <button
687
- class="text-sm font-medium px-3 py-1 border border-gray-300 dark:border-gray-600 rounded-lg bg-transparent text-gray-900 dark:text-white cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-blue-700 hover:text-white hover:border-blue-700 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed"
686
+ class="text-sm font-medium px-3 py-1 border border-stroke-primary rounded-lg bg-transparent text-text-primary cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-brand-primary hover:text-white hover:border-brand-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed"
688
687
  class:scale-95={todayPressed}
689
- class:bg-blue-700={todayPressed}
688
+ class:bg-brand-primary={todayPressed}
690
689
  class:text-white={todayPressed}
691
690
  onclick={goToToday}
692
691
  ontouchstart={() => todayPressed = true}
@@ -703,10 +702,9 @@
703
702
  {/if}
704
703
 
705
704
  <button
706
- class="p-2 flex items-center justify-center border-0 rounded-lg bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-all duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-hidden focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2"
705
+ class="p-2 flex items-center justify-center border-0 rounded-lg bg-transparent text-muted-foreground cursor-pointer select-none transition-all duration-100 ease-out hover:bg-muted hover:text-text-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2"
707
706
  class:scale-90={nextPressed}
708
- class:bg-gray-100={nextPressed}
709
- class:dark:bg-gray-700={nextPressed}
707
+ class:bg-muted={nextPressed}
710
708
  onclick={goToNextMonth}
711
709
  ontouchstart={() => nextPressed = true}
712
710
  ontouchend={() => nextPressed = false}
@@ -725,13 +723,13 @@
725
723
  <div class="relative overflow-hidden">
726
724
  <div
727
725
  bind:this={calendarGridElement}
728
- class="grid grid-cols-7 gap-0 bg-white dark:bg-gray-800 select-none min-h-[356px] sm:min-h-[388px] md:min-h-[448px] lg:min-h-[508px]"
726
+ class="grid grid-cols-7 gap-0 bg-card select-none min-h-[356px] sm:min-h-[388px] md:min-h-[448px] lg:min-h-[508px]"
729
727
  role="grid"
730
728
  aria-label="{MONTH_NAMES[currentMonth]} {currentYear}"
731
729
  >
732
730
  {#each DAY_NAMES as dayName, i}
733
731
  <div
734
- class="flex items-end justify-center pb-1 {typography.xsMuted} overflow-hidden leading-none sm:pb-2 sm:pt-1 sm:justify-end sm:pr-2 sm:text-lg sm:text-gray-900 sm:dark:text-white sm:border-b sm:border-gray-200 sm:dark:border-gray-700"
732
+ class="flex items-end justify-center pb-1 {typography.xsMuted} overflow-hidden leading-none sm:pb-2 sm:pt-1 sm:justify-end sm:pr-2 sm:text-lg sm:text-text-primary sm: sm:border-b sm:border-border sm:"
735
733
  role="columnheader"
736
734
  aria-label={labels.fullDayNames[i]}
737
735
  >
@@ -741,8 +739,8 @@
741
739
  {/each}
742
740
 
743
741
  {#each prevMonthPreviewDays as previewDay}
744
- <div class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] pointer-events-none bg-transparent border-b border-gray-200 dark:border-gray-700 sm:border-b-0 sm:p-2 sm:border-t sm:border-l sm:border-gray-200 sm:dark:border-gray-700 last:sm:border-r" role="gridcell" aria-disabled="true">
745
- <span class="{typography.sm} text-gray-300 dark:text-gray-600 w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
742
+ <div class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] pointer-events-none bg-transparent border-b border-border sm:border-b-0 sm:p-2 sm:border-t sm:border-l sm:border-border sm: last:sm:border-r" role="gridcell" aria-disabled="true">
743
+ <span class="{typography.sm} text-muted-foreground w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
746
744
  </div>
747
745
  {/each}
748
746
 
@@ -750,13 +748,12 @@
750
748
  <!-- svelte-ignore a11y_no_static_element_interactions -->
751
749
  <div
752
750
  class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] select-none
753
- border-b border-gray-200 dark:border-gray-700
754
- sm:border-b-0 sm:p-2 sm:border-t sm:border-l sm:border-gray-200 sm:dark:border-gray-700
755
- {day.isPast && variant === 'availability' ? 'bg-gray-100 dark:bg-gray-700 cursor-default' : ''}
756
- {day.isPast && day.isSelected && variant === 'availability' ? 'bg-blue-100 dark:bg-blue-900/30 cursor-default' : ''}
757
- {day.isSelected && !day.isPast && variant === 'availability' ? 'bg-blue-700 dark:bg-blue-600' : ''}
751
+ border-b border-border sm:border-b-0 sm:p-2 sm:border-t sm:border-l sm:border-border
752
+ {day.isPast && variant === 'availability' ? 'bg-muted cursor-default' : ''}
753
+ {day.isPast && day.isSelected && variant === 'availability' ? 'bg-status-info-bg cursor-default' : ''}
754
+ {day.isSelected && !day.isPast && variant === 'availability' ? 'bg-brand-primary' : ''}
758
755
  {!readOnly && (variant === 'availability' ? !day.isPast : day.hasEvents) ? 'cursor-pointer' : ''}
759
- {variant !== 'availability' && day.hasEvents ? 'bg-blue-50 dark:bg-blue-900/20 sm:bg-transparent sm:dark:bg-transparent' : ''}"
756
+ {variant !== 'availability' && day.hasEvents ? 'bg-status-info-bg sm:bg-transparent sm:' : ''}"
760
757
  class:last:border-r={true}
761
758
  role="gridcell"
762
759
  aria-label={getDayAriaLabel(day)}
@@ -768,12 +765,12 @@
768
765
  onkeydown={(e) => handleDayKeydown(e, day)}
769
766
  >
770
767
  <span class="{typography.sm} w-full text-center transition-transform duration-100 ease-out sm:text-lg sm:font-normal sm:text-right sm:mb-2
771
- {day.isPast ? 'text-gray-400 dark:text-gray-500' : ''}
768
+ {day.isPast ? 'text-muted-foreground' : ''}
772
769
  {day.isSelected && !day.isPast && variant === 'availability' ? 'text-white font-semibold' : ''}">{day.day}</span>
773
770
  {#if variant !== 'availability' && day.hasEvents}
774
771
  <div class="flex gap-0.5 mt-0.5">
775
772
  {#each day.events.slice(0, 3) as _}
776
- <span class="w-1.5 h-1.5 rounded-full bg-blue-600 dark:bg-blue-500 transition-transform duration-150 ease-out hover:scale-125"></span>
773
+ <span class="w-1.5 h-1.5 rounded-full bg-brand-primary transition-transform duration-150 ease-out hover:scale-125"></span>
777
774
  {/each}
778
775
  </div>
779
776
  {/if}
@@ -781,8 +778,8 @@
781
778
  {/each}
782
779
 
783
780
  {#each nextMonthPreviewDays as previewDay}
784
- <div class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] pointer-events-none bg-transparent border-b border-gray-200 dark:border-gray-700 sm:p-2 sm:border-t sm:border-l sm:border-gray-200 sm:dark:border-gray-700 last:sm:border-r" role="gridcell" aria-disabled="true">
785
- <span class="{typography.sm} text-gray-300 dark:text-gray-600 w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
781
+ <div class="flex flex-col items-center justify-start px-1 py-0.5 min-h-[56px] sm:min-h-[60px] md:min-h-[70px] lg:min-h-[80px] pointer-events-none bg-transparent border-b border-border sm:p-2 sm:border-t sm:border-l sm:border-border sm: last:sm:border-r" role="gridcell" aria-disabled="true">
782
+ <span class="{typography.sm} text-muted-foreground w-full text-center sm:text-lg sm:font-normal sm:text-right sm:mb-2">{previewDay.day}</span>
786
783
  </div>
787
784
  {/each}
788
785
  </div>
@@ -791,11 +788,11 @@
791
788
  {#if showLegend && variant === 'availability'}
792
789
  <div class="flex items-center justify-center gap-6 pt-4">
793
790
  <div class="flex items-center gap-2">
794
- <span class="w-5 h-5 rounded bg-blue-700 dark:bg-blue-600 border border-blue-700 dark:border-blue-600"></span>
791
+ <span class="w-5 h-5 rounded bg-brand-primary border border-brand-primary"></span>
795
792
  <span class="{typography.sm}">{labels.legendAvailable}</span>
796
793
  </div>
797
794
  <div class="flex items-center gap-2">
798
- <span class="w-5 h-5 rounded bg-gray-50 dark:bg-gray-700 border-2 border-gray-400 dark:border-gray-500"></span>
795
+ <span class="w-5 h-5 rounded bg-bg-secondary border-2 border-stroke-primary"></span>
799
796
  <span class="{typography.sm}">{labels.legendUnavailable}</span>
800
797
  </div>
801
798
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"MiniMonthCalendar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/Calendar/MiniMonthCalendar.svelte.js"],"names":[],"mappings":";;;;;AAuuBA;cApsB+B,MAAM;oBAAkB,GAAG,EAAE;aAAW,GAAG,EAAE;iBAAe,MAAM;iBAAe,OAAO;qBAAmB,OAAO;sBAAoB,OAAO;eAAa,OAAO;yBAAuB,OAAO;4BAA0B,OAAO;kBAAgB,GAAG;gBAAc,GAAG;mBAAiB,GAAG;aAAW,MAAM;aAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;wBAosBtS;wBApsB7C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE"}
1
+ {"version":3,"file":"MiniMonthCalendar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/Calendar/MiniMonthCalendar.svelte.js"],"names":[],"mappings":";;;;;AAsuBA;cAnsB+B,MAAM;oBAAkB,GAAG,EAAE;aAAW,GAAG,EAAE;iBAAe,MAAM;iBAAe,OAAO;qBAAmB,OAAO;sBAAoB,OAAO;eAAa,OAAO;yBAAuB,OAAO;4BAA0B,OAAO;kBAAgB,GAAG;gBAAc,GAAG;mBAAiB,GAAG;aAAW,MAAM;aAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;wBAmsBtS;wBAnsB7C;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE"}
@@ -185,8 +185,8 @@ describe('FAQs Component', () => {
185
185
 
186
186
  await fireEvent.click(button);
187
187
 
188
- expect(button.className).toContain('text-gray-900');
189
- expect(button.className).toContain('bg-gray-100');
188
+ expect(button.className).toContain('text-text-primary');
189
+ expect(button.className).toContain('bg-muted');
190
190
  });
191
191
 
192
192
  it('chevron rotates when expanded', async () => {
@@ -203,7 +203,7 @@ describe('FAQs Component', () => {
203
203
 
204
204
  it('accordion container has border', () => {
205
205
  const { container } = render(FAQs, { props: { faqs, accordion: true } });
206
- const accordionDiv = container.querySelector('.border.border-gray-200');
206
+ const accordionDiv = container.querySelector('.border.border-border');
207
207
  expect(accordionDiv).toBeInTheDocument();
208
208
  });
209
209
 
@@ -220,19 +220,19 @@ describe('FAQs Component', () => {
220
220
  it('accordion has dark mode border', () => {
221
221
  const { container } = render(FAQs, { props: { faqs, accordion: true } });
222
222
  const accordionDiv = container.querySelector('.border');
223
- expect(accordionDiv.className).toContain('dark:border-gray-700');
223
+ expect(accordionDiv.className).toContain('');
224
224
  });
225
225
 
226
226
  it('accordion buttons have dark mode hover', () => {
227
227
  render(FAQs, { props: { faqs, accordion: true } });
228
228
  const button = screen.getByRole('button');
229
- expect(button.className).toContain('dark:hover:bg-gray-800');
229
+ expect(button.className).toContain('');
230
230
  });
231
231
 
232
232
  it('accordion buttons have dark mode focus ring', () => {
233
233
  render(FAQs, { props: { faqs, accordion: true } });
234
234
  const button = screen.getByRole('button');
235
- expect(button.className).toContain('dark:focus:ring-gray-800');
235
+ expect(button.className).toContain('');
236
236
  });
237
237
  });
238
238
  });
@@ -40,16 +40,16 @@
40
40
 
41
41
  {#if items.length}
42
42
  {#if accordion}
43
- <div class="border border-gray-200 rounded-lg dark:border-gray-700">
43
+ <div class="border border-border rounded-lg">
44
44
  {#each items as { question, answer }, index}
45
45
  <div>
46
46
  <h3>
47
47
  <button
48
48
  type="button"
49
- class="flex items-center justify-between w-full p-5 font-medium text-left text-gray-500 border-b border-gray-200 hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:focus:ring-gray-800 gap-3
49
+ class="flex items-center justify-between w-full p-5 font-medium text-left text-muted-foreground border-b border-border hover:bg-muted focus:ring-4 focus:ring-border gap-3
50
50
  {index === 0 ? 'rounded-t-lg' : ''}
51
51
  {index === items.length - 1 && openIndex !== index ? 'border-b-0 rounded-b-lg' : ''}
52
- {openIndex === index ? 'text-gray-900 bg-gray-100 dark:bg-gray-800 dark:text-white' : ''}"
52
+ {openIndex === index ? 'text-text-primary bg-muted' : ''}"
53
53
  onclick={() => toggleAccordion(index)}
54
54
  aria-expanded={openIndex === index}
55
55
  aria-controls="accordion-body-{index}"
@@ -63,7 +63,7 @@
63
63
  class="{openIndex === index ? '' : 'hidden'}"
64
64
  aria-labelledby="accordion-heading-{index}"
65
65
  >
66
- <div class="p-5 border-b border-gray-200 dark:border-gray-700 {index === items.length - 1 ? 'border-b-0 rounded-b-lg' : ''}">
66
+ <div class="p-5 border-b border-border {index === items.length - 1 ? 'border-b-0 rounded-b-lg' : ''}">
67
67
  <p class="{typography.smMuted} leading-relaxed">{answer}</p>
68
68
  </div>
69
69
  </div>
@@ -83,12 +83,10 @@
83
83
  </h2>
84
84
  <div class="flex items-center gap-2">
85
85
  <button
86
- class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-hidden focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
86
+ class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-muted-foreground cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-muted hover:text-text-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
87
87
  class:scale-90={prevPressed}
88
- class:bg-gray-100={prevPressed}
89
- class:dark:bg-gray-700={prevPressed}
90
- class:text-gray-900={prevPressed}
91
- class:dark:text-white={prevPressed}
88
+ class:bg-muted={prevPressed}
89
+ class:text-text-primary={prevPressed}
92
90
  onclick={handlePrevClick}
93
91
  ontouchstart={() => prevPressed = true}
94
92
  ontouchend={() => prevPressed = false}
@@ -102,9 +100,9 @@
102
100
  <ChevronLeftOutline class="w-5 h-5" />
103
101
  </button>
104
102
  <button
105
- class="{`${typography.label} px-3 py-1 border border-gray-300 dark:border-gray-600 rounded-lg bg-transparent cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-blue-700 hover:text-white hover:border-blue-700 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed disabled:text-gray-500 dark:disabled:text-gray-400`}"
103
+ class="{`${typography.label} px-3 py-1 border border-stroke-primary rounded-lg bg-transparent cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-brand-primary hover:text-white hover:border-brand-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed disabled:text-muted-foreground:text-muted-foreground`}"
106
104
  class:scale-95={todayPressed}
107
- class:bg-blue-700={todayPressed}
105
+ class:bg-brand-primary={todayPressed}
108
106
  class:text-white={todayPressed}
109
107
  onclick={handleTodayClick}
110
108
  ontouchstart={() => todayPressed = true}
@@ -119,12 +117,10 @@
119
117
  {labels.today}
120
118
  </button>
121
119
  <button
122
- class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-hidden focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2"
120
+ class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-muted-foreground cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-muted hover:text-text-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2"
123
121
  class:scale-90={nextPressed}
124
- class:bg-gray-100={nextPressed}
125
- class:dark:bg-gray-700={nextPressed}
126
- class:text-gray-900={nextPressed}
127
- class:dark:text-white={nextPressed}
122
+ class:bg-muted={nextPressed}
123
+ class:text-text-primary={nextPressed}
128
124
  onclick={handleNextClick}
129
125
  ontouchstart={() => nextPressed = true}
130
126
  ontouchend={() => nextPressed = false}