@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
@@ -65,26 +65,26 @@
65
65
 
66
66
  <Story name="Settings List">
67
67
  <div class="max-w-md space-y-4">
68
- <div class="flex items-center justify-between p-4 bg-white dark:bg-gray-900 rounded-lg border">
68
+ <div class="flex items-center justify-between p-4 bg-card rounded-lg border">
69
69
  <div>
70
70
  <div class="font-medium">Email Notifications</div>
71
- <div class="text-sm text-gray-500 dark:text-gray-400">Receive updates via email</div>
71
+ <div class="text-sm text-muted-foreground">Receive updates via email</div>
72
72
  </div>
73
73
  <Toggle bind:checked={toggleState} />
74
74
  </div>
75
75
 
76
- <div class="flex items-center justify-between p-4 bg-white dark:bg-gray-900 rounded-lg border">
76
+ <div class="flex items-center justify-between p-4 bg-card rounded-lg border">
77
77
  <div>
78
78
  <div class="font-medium">Dark Mode</div>
79
- <div class="text-sm text-gray-500 dark:text-gray-400">Use dark color scheme</div>
79
+ <div class="text-sm text-muted-foreground">Use dark color scheme</div>
80
80
  </div>
81
81
  <Toggle checked={false} />
82
82
  </div>
83
83
 
84
- <div class="flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-800 rounded-lg border">
84
+ <div class="flex items-center justify-between p-4 bg-bg-secondary rounded-lg border">
85
85
  <div>
86
- <div class="font-medium text-gray-500 dark:text-gray-400">Premium Feature</div>
87
- <div class="text-sm text-gray-500 dark:text-gray-400">Requires subscription</div>
86
+ <div class="font-medium text-muted-foreground">Premium Feature</div>
87
+ <div class="text-sm text-muted-foreground">Requires subscription</div>
88
88
  </div>
89
89
  <Toggle disabled={true} checked={false} />
90
90
  </div>
@@ -51,12 +51,12 @@
51
51
  class="sr-only peer"
52
52
  />
53
53
  <div
54
- class="toggle-track toggle-{size} relative bg-gray-200 peer-focus:outline-hidden peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:bg-blue-600"
54
+ class="toggle-track toggle-{size} relative bg-bg-tertiary peer-focus:outline-hidden peer-focus:ring-4 peer-focus:ring-focus-ring rounded-full peer peer-checked:bg-brand-primary"
55
55
  role="switch"
56
56
  aria-checked={checked}
57
57
  ></div>
58
58
  {#if children}
59
- <span class="ms-3 text-sm font-medium text-gray-900 dark:text-gray-300">
59
+ <span class="ms-3 text-sm font-medium text-text-primary">
60
60
  {#if typeof children === 'function'}{@render children()}{:else}{children}{/if}
61
61
  </span>
62
62
  {/if}
@@ -88,8 +88,8 @@
88
88
  .toggle-track::after {
89
89
  content: '';
90
90
  position: absolute;
91
- background-color: white;
92
- border: 1px solid #d1d5db; /* gray-300 */
91
+ background-color: hsl(var(--bg-primary));
92
+ border: 1px solid hsl(var(--stroke-primary));
93
93
  border-radius: 9999px;
94
94
  transition: all 150ms;
95
95
  }
@@ -117,15 +117,15 @@
117
117
  /* Checked state - move thumb to the right */
118
118
  :global(input.peer:checked) + .toggle-sm::after {
119
119
  transform: translateX(1rem); /* 16px */
120
- border-color: white;
120
+ border-color: hsl(var(--bg-primary));
121
121
  }
122
122
  :global(input.peer:checked) + .toggle-md::after {
123
123
  transform: translateX(1.25rem); /* 20px */
124
- border-color: white;
124
+ border-color: hsl(var(--bg-primary));
125
125
  }
126
126
  :global(input.peer:checked) + .toggle-lg::after {
127
127
  transform: translateX(1.5rem); /* 24px */
128
- border-color: white;
128
+ border-color: hsl(var(--bg-primary));
129
129
  }
130
130
 
131
131
  /* RTL support - translate in opposite direction */
@@ -37,10 +37,10 @@
37
37
 
38
38
  // Arrow placement classes
39
39
  const arrowClasses: Record<string, string> = {
40
- top: 'top-full left-1/2 -translate-x-1/2 border-t-gray-900 dark:border-t-gray-700 border-l-transparent border-r-transparent border-b-transparent',
41
- bottom: 'bottom-full left-1/2 -translate-x-1/2 border-b-gray-900 dark:border-b-gray-700 border-l-transparent border-r-transparent border-t-transparent',
42
- left: 'left-full top-1/2 -translate-y-1/2 border-l-gray-900 dark:border-l-gray-700 border-t-transparent border-b-transparent border-r-transparent',
43
- right: 'right-full top-1/2 -translate-y-1/2 border-r-gray-900 dark:border-r-gray-700 border-t-transparent border-b-transparent border-l-transparent'
40
+ top: 'top-full left-1/2 -translate-x-1/2 border-t-text-primary border-l-transparent border-r-transparent border-b-transparent',
41
+ bottom: 'bottom-full left-1/2 -translate-x-1/2 border-b-text-primary border-l-transparent border-r-transparent border-t-transparent',
42
+ left: 'left-full top-1/2 -translate-y-1/2 border-l-text-primary border-t-transparent border-b-transparent border-r-transparent',
43
+ right: 'right-full top-1/2 -translate-y-1/2 border-r-text-primary border-t-transparent border-b-transparent border-l-transparent'
44
44
  };
45
45
 
46
46
  function handleMouseEnter() {
@@ -72,7 +72,7 @@
72
72
 
73
73
  {#if visible && content}
74
74
  <div
75
- class="absolute z-50 px-3 py-2 text-sm text-white bg-gray-900 rounded-lg shadow whitespace-nowrap pointer-events-none dark:bg-gray-700 {placementClasses[placement]} {className}"
75
+ class="absolute z-50 px-3 py-2 text-sm text-white bg-bg-primary rounded-lg shadow whitespace-nowrap pointer-events-none {placementClasses[placement]} {className}"
76
76
  transition:fly={{ y: placement === 'top' ? 5 : placement === 'bottom' ? -5 : 0, x: placement === 'left' ? 5 : placement === 'right' ? -5 : 0, duration: 150 }}
77
77
  >
78
78
  {content}
@@ -39,7 +39,7 @@ describe('ValidationError Component', () => {
39
39
  props: { error: 'Error message' },
40
40
  });
41
41
  const alert = container.querySelector('[role="alert"]');
42
- expect(alert.classList.contains('text-red-600')).toBe(true);
42
+ expect(alert.classList.contains('text-accent-danger')).toBe(true);
43
43
  });
44
44
 
45
45
  it('renders WarningIcon', () => {
@@ -50,7 +50,7 @@
50
50
  <input
51
51
  id="email-field"
52
52
  type="email"
53
- class="w-full px-3 py-2 border border-red-300 rounded"
53
+ class="w-full px-3 py-2 border border-status-error-border rounded"
54
54
  value="invalid-email"
55
55
  />
56
56
  <ValidationError error="Please enter a valid email address" show={true} />
@@ -61,19 +61,19 @@
61
61
  <div class="max-w-md space-y-4">
62
62
  <div>
63
63
  <label for="username-field" class="block text-sm font-medium mb-1">Username</label>
64
- <input id="username-field" type="text" class="w-full px-3 py-2 border border-red-300 rounded" />
64
+ <input id="username-field" type="text" class="w-full px-3 py-2 border border-status-error-border rounded" />
65
65
  <ValidationError error="Username is required" show={true} />
66
66
  </div>
67
67
 
68
68
  <div>
69
69
  <label for="multi-email" class="block text-sm font-medium mb-1">Email</label>
70
- <input id="multi-email" type="email" class="w-full px-3 py-2 border border-red-300 rounded" />
70
+ <input id="multi-email" type="email" class="w-full px-3 py-2 border border-status-error-border rounded" />
71
71
  <ValidationError error="Invalid email format" show={true} />
72
72
  </div>
73
73
 
74
74
  <div>
75
75
  <label for="password-field" class="block text-sm font-medium mb-1">Password</label>
76
- <input id="password-field" type="password" class="w-full px-3 py-2 border border-red-300 rounded" />
76
+ <input id="password-field" type="password" class="w-full px-3 py-2 border border-status-error-border rounded" />
77
77
  <ValidationError error="Password must contain at least one number" show={true} />
78
78
  </div>
79
79
  </div>
@@ -82,9 +82,9 @@
82
82
  <Story name="Hidden State">
83
83
  <div class="max-w-md">
84
84
  <label for="hidden-email" class="block text-sm font-medium mb-1">Email</label>
85
- <input id="hidden-email" type="email" class="w-full px-3 py-2 border border-gray-300 rounded" />
85
+ <input id="hidden-email" type="email" class="w-full px-3 py-2 border border-stroke-primary rounded" />
86
86
  <ValidationError error="This error is hidden" show={false} />
87
- <p class="text-sm text-gray-500 dark:text-gray-400 mt-2">Validation error is hidden until field is touched</p>
87
+ <p class="text-sm text-muted-foreground mt-2">Validation error is hidden until field is touched</p>
88
88
  </div>
89
89
  </Story>
90
90
 
@@ -96,7 +96,7 @@
96
96
  type="email"
97
97
  aria-describedby="email-error"
98
98
  aria-invalid="true"
99
- class="w-full px-3 py-2 border border-red-300 rounded focus:ring-red-500 focus:border-red-500"
99
+ class="w-full px-3 py-2 border border-status-error-border rounded focus:ring-accent-danger focus:border-status-error-border"
100
100
  value="invalid-email"
101
101
  />
102
102
  <ValidationError
@@ -104,7 +104,7 @@
104
104
  error="Please enter a valid email address"
105
105
  show={true}
106
106
  />
107
- <p class="text-sm text-gray-500 mt-4">
107
+ <p class="text-sm text-muted-foreground mt-4">
108
108
  This example shows proper accessibility: the input references the error via aria-describedby,
109
109
  and the error has aria-live="assertive" for screen reader announcements.
110
110
  </p>
@@ -18,7 +18,7 @@
18
18
  {#if error && show}
19
19
  <div
20
20
  transition:safeSlide={{ duration: 300, easing: cubicOut }}
21
- class="flex items-start gap-1.5 text-red-600 dark:text-red-500 mt-2"
21
+ class="flex items-start gap-1.5 text-accent-danger mt-2"
22
22
  role="alert"
23
23
  aria-live="assertive"
24
24
  {id}
@@ -41,7 +41,7 @@
41
41
  <div>
42
42
  <button
43
43
  onclick={() => (showModal = true)}
44
- class="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"
44
+ class="px-4 py-2 bg-brand-primary text-white rounded hover:bg-brand-primary"
45
45
  >
46
46
  Crop Microphone Image
47
47
  </button>
@@ -54,7 +54,7 @@
54
54
  />
55
55
 
56
56
  {#if croppedImage}
57
- <div class="mt-4 p-4 bg-gray-100 rounded">
57
+ <div class="mt-4 p-4 bg-muted rounded">
58
58
  <p class="font-semibold mb-2">Cropped Result:</p>
59
59
  <img src={URL.createObjectURL(croppedImage)} alt="Cropped result" class="max-w-sm border shadow" />
60
60
  </div>
@@ -65,10 +65,10 @@
65
65
  <Story name="Interactive Demo">
66
66
  <div class="p-6">
67
67
  <h3 class="text-lg font-bold mb-4">Image Cropping Demo</h3>
68
- <p class="mb-2 text-gray-600">
68
+ <p class="mb-2 text-text-secondary">
69
69
  Click the button below to open the crop modal. You can:
70
70
  </p>
71
- <ul class="list-disc ml-6 mt-2 mb-4 text-gray-600">
71
+ <ul class="list-disc ml-6 mt-2 mb-4 text-text-secondary">
72
72
  <li>Drag the crop box to reposition it</li>
73
73
  <li>Drag corner handles to resize the crop area (maintains square aspect)</li>
74
74
  <li>Use zoom slider or +/- buttons to zoom in/out</li>
@@ -78,7 +78,7 @@
78
78
 
79
79
  <button
80
80
  onclick={() => (showModal = true)}
81
- class="px-6 py-3 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 font-medium"
81
+ class="px-6 py-3 bg-brand-primary text-white rounded-lg hover:bg-brand-primary font-medium"
82
82
  >
83
83
  Start Cropping
84
84
  </button>
@@ -91,12 +91,12 @@
91
91
  />
92
92
 
93
93
  {#if croppedImage}
94
- <div class="mt-6 p-4 bg-green-50 border border-green-200 rounded-lg">
95
- <p class="font-semibold text-green-800 mb-3">Successfully Cropped!</p>
94
+ <div class="mt-6 p-4 bg-status-success-bg border border-status-success-border rounded-lg">
95
+ <p class="font-semibold text-status-success-text mb-3">Successfully Cropped!</p>
96
96
  <img
97
97
  src={URL.createObjectURL(croppedImage)}
98
98
  alt="Cropped result"
99
- class="max-w-xs border-2 border-green-300 rounded shadow-lg"
99
+ class="max-w-xs border-2 border-status-success-border rounded shadow-lg"
100
100
  />
101
101
  </div>
102
102
  {/if}
@@ -135,12 +135,12 @@
135
135
  <!-- svelte-ignore a11y_click_events_have_key_events -->
136
136
  <!-- svelte-ignore a11y_no_static_element_interactions -->
137
137
  <div
138
- class="fixed inset-0 z-50 flex items-center justify-center overflow-y-auto overflow-x-hidden bg-gray-900/50 dark:bg-gray-900/80 p-4"
138
+ class="fixed inset-0 z-50 flex items-center justify-center overflow-y-auto overflow-x-hidden bg-bg-primary/50 p-4"
139
139
  onclick={(e) => { if (e.target === e.currentTarget) closeModal(); }}
140
140
  >
141
141
  <div class="relative w-full max-w-lg max-h-full">
142
- <div class="relative bg-white rounded-lg shadow-xl dark:bg-gray-800">
143
- <div class="flex items-center justify-between p-4 border-b border-gray-200 rounded-t-lg dark:border-gray-600">
142
+ <div class="relative bg-card rounded-lg shadow-xl">
143
+ <div class="flex items-center justify-between p-4 border-b border-border rounded-t-lg">
144
144
  <h3 class={typography.h2}>
145
145
  {labels.cropImageTitle}
146
146
  </h3>
@@ -155,9 +155,9 @@
155
155
  </div>
156
156
 
157
157
  <div class="p-4 md:p-6 space-y-4">
158
- <div class="relative w-full aspect-square sm:aspect-[4/3] max-h-80 sm:max-h-96 bg-gray-800 rounded-lg overflow-hidden">
158
+ <div class="relative w-full aspect-square sm:aspect-[4/3] max-h-80 sm:max-h-96 bg-bg-secondary rounded-lg overflow-hidden">
159
159
  {#if isLoading}
160
- <div class="absolute inset-0 flex items-center justify-center bg-gray-200 dark:bg-gray-700 z-10">
160
+ <div class="absolute inset-0 flex items-center justify-center bg-bg-tertiary z-10">
161
161
  <span class={typography.smMuted}>{labels.loading}</span>
162
162
  </div>
163
163
  {/if}
@@ -194,7 +194,7 @@
194
194
  max="3"
195
195
  step="0.1"
196
196
  bind:value={zoom}
197
- class="flex-1 w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 accent-blue-600"
197
+ class="flex-1 w-full h-2 bg-bg-tertiary rounded-lg appearance-none cursor-pointer accent-primary"
198
198
  aria-label={labels.zoomLevel}
199
199
  />
200
200
 
@@ -210,7 +210,7 @@
210
210
  </div>
211
211
  </div>
212
212
 
213
- <div class="flex items-center justify-end gap-3 p-4 border-t border-gray-200 rounded-b-lg dark:border-gray-600">
213
+ <div class="flex items-center justify-end gap-3 p-4 border-t border-border rounded-b-lg">
214
214
  <Button
215
215
  type="button"
216
216
  variant="alternative"
@@ -1107,7 +1107,7 @@ describe('ImageUploader', () => {
1107
1107
  });
1108
1108
 
1109
1109
  // Click inside modal content
1110
- const modalContent = screen.getByText('Upload photo').closest('.bg-white, .dark\\:bg-gray-800');
1110
+ const modalContent = screen.getByText('Upload photo').closest('.bg-card, .dark\\:bg-bg-secondary');
1111
1111
  await user.click(modalContent);
1112
1112
 
1113
1113
  // Modal should still be open
@@ -254,12 +254,12 @@
254
254
  dropOnElement: true,
255
255
  labelIdle: `
256
256
  <div class="filepond-custom-label">
257
- <svg class="w-8 h-8 mb-5 text-gray-400 dark:text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
257
+ <svg class="w-8 h-8 mb-5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24">
258
258
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" />
259
259
  </svg>
260
- <span class="text-sm font-medium text-gray-600 dark:text-gray-300">${resolvedEmptyLabel}</span>
261
- <span class="text-[11px] text-gray-400 dark:text-gray-500 mt-2 block">${labels.fileTypes}</span>
262
- ${constraintsText ? `<span class="text-[10px] text-gray-400/50 dark:text-gray-500/50 mt-1 block">${constraintsText}</span>` : ''}
260
+ <span class="text-sm font-medium text-text-secondary">${resolvedEmptyLabel}</span>
261
+ <span class="text-[11px] text-muted-foreground mt-2 block">${labels.fileTypes}</span>
262
+ ${constraintsText ? `<span class="text-[10px] text-muted-foreground/50 mt-1 block">${constraintsText}</span>` : ''}
263
263
  </div>
264
264
  `,
265
265
  credits: false,
@@ -612,14 +612,14 @@
612
612
  <div class="image-uploader-single {className}">
613
613
  {#if imageArray.length > 0}
614
614
  <!-- Show existing image with remove option -->
615
- <div class="relative {shapeAspects[shape]} bg-gray-100 dark:bg-gray-800 rounded-xl overflow-hidden group">
615
+ <div class="relative {shapeAspects[shape]} bg-muted rounded-xl overflow-hidden group">
616
616
  <img
617
617
  src={imageArray[0]}
618
618
  alt={labels.uploadedAlt}
619
619
  class="w-full h-full object-contain"
620
620
  />
621
621
  {#if !disabled}
622
- <div class="absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-3">
622
+ <div class="absolute inset-0 bg-overlay-bg opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-3">
623
623
  <Button
624
624
  variant="default"
625
625
  size="sm"
@@ -673,7 +673,7 @@
673
673
  {/if}
674
674
 
675
675
  {#if error}
676
- <p class={`${typography.smMuted} text-red-500 mt-2`}>{error}</p>
676
+ <p class={`${typography.smMuted} text-accent-danger mt-2`}>{error}</p>
677
677
  {/if}
678
678
  </div>
679
679
 
@@ -697,7 +697,7 @@
697
697
  <!-- svelte-ignore a11y_click_events_have_key_events -->
698
698
  <!-- svelte-ignore a11y_no_static_element_interactions -->
699
699
  <div
700
- class="relative w-full h-full bg-gray-100 dark:bg-gray-800 group"
700
+ class="relative w-full h-full bg-muted group"
701
701
  class:cursor-pointer={onSetMain && index !== 0 && !disabled}
702
702
  onclick={() => {
703
703
  if (onSetMain && index !== 0 && !disabled) {
@@ -719,11 +719,11 @@
719
719
  {#if !disabled}
720
720
  <button
721
721
  type="button"
722
- class="remove-btn absolute top-1 right-1 {currentSizeConfig.removeSize} bg-white/90 dark:bg-gray-900/90 rounded-full flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity hover:bg-white dark:hover:bg-gray-900"
722
+ class="remove-btn absolute top-1 right-1 {currentSizeConfig.removeSize} bg-card/90 rounded-full flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity hover:bg-card"
723
723
  onclick={(e) => { e.stopPropagation(); handleRemoveImage(index); }}
724
724
  aria-label={labels.removePhoto}
725
725
  >
726
- <CloseOutline class="w-3 h-3 text-gray-700 dark:text-gray-300" />
726
+ <CloseOutline class="w-3 h-3 text-text-secondary" />
727
727
  </button>
728
728
  {/if}
729
729
  </div>
@@ -733,8 +733,8 @@
733
733
  <div
734
734
  class="w-full h-full border-2 border-dashed rounded-lg transition-colors flex items-center justify-center cursor-pointer
735
735
  {isDropzoneDragOver
736
- ? 'border-blue-500 bg-blue-100 dark:bg-blue-900/40'
737
- : 'border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 hover:border-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20'}"
736
+ ? 'border-interactive-border bg-status-info-bg'
737
+ : 'border-stroke-primary bg-bg-secondary hover:border-brand-primary hover:bg-status-info-bg'}"
738
738
  role="button"
739
739
  tabindex="0"
740
740
  onclick={() => openUploadModal(index)}
@@ -745,7 +745,7 @@
745
745
  ondrop={(e) => handleDropzoneDrop(e, index)}
746
746
  aria-label={labels.addPhotoAria}
747
747
  >
748
- <PlusOutline class={currentSizeConfig.iconClass + ' text-gray-400 dark:text-gray-500'} />
748
+ <PlusOutline class={currentSizeConfig.iconClass + ' text-muted-foreground'} />
749
749
  </div>
750
750
  {/if}
751
751
  </div>
@@ -758,7 +758,7 @@
758
758
  {/if}
759
759
 
760
760
  {#if error}
761
- <p class={`${typography.smMuted} text-red-500 mt-2`}>{error}</p>
761
+ <p class={`${typography.smMuted} text-accent-danger mt-2`}>{error}</p>
762
762
  {/if}
763
763
  </div>
764
764
 
@@ -767,7 +767,7 @@
767
767
  <!-- svelte-ignore a11y_click_events_have_key_events -->
768
768
  <!-- svelte-ignore a11y_no_static_element_interactions -->
769
769
  <div
770
- class="fixed inset-0 z-50 flex items-center justify-center bg-gray-900/50 dark:bg-gray-900/80 p-4"
770
+ class="fixed inset-0 z-50 flex items-center justify-center bg-bg-primary/50 p-4"
771
771
  onclick={() => (showFilePondModal = false)}
772
772
  ondragover={(e) => e.preventDefault()}
773
773
  ondrop={(e) => e.preventDefault()}
@@ -775,14 +775,14 @@
775
775
  <!-- svelte-ignore a11y_click_events_have_key_events -->
776
776
  <!-- svelte-ignore a11y_no_static_element_interactions -->
777
777
  <div
778
- class="bg-white dark:bg-gray-800 rounded-xl shadow-xl w-full max-w-md overflow-hidden"
778
+ class="bg-card rounded-xl shadow-xl w-full max-w-md overflow-hidden"
779
779
  onclick={(e) => e.stopPropagation()}
780
780
  >
781
- <div class="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700">
781
+ <div class="flex items-center justify-between p-4 border-b border-border">
782
782
  <h3 class={typography.h3}>{labels.uploadPhotoTitle}</h3>
783
783
  <button
784
784
  type="button"
785
- class="p-1.5 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors"
785
+ class="p-1.5 text-muted-foreground hover:text-text-secondary transition-colors"
786
786
  onclick={() => (showFilePondModal = false)}
787
787
  aria-label={labels.closeModal}
788
788
  >
@@ -794,8 +794,8 @@
794
794
  <div
795
795
  class="dropzone-native border-2 border-dashed rounded-lg transition-all duration-200 min-h-[200px] flex flex-col items-center justify-center cursor-pointer
796
796
  {isModalDragOver
797
- ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/30'
798
- : 'border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 hover:border-blue-400 hover:bg-blue-50/50 dark:hover:bg-blue-900/20'}"
797
+ ? 'border-interactive-border bg-status-info-bg'
798
+ : 'border-stroke-primary bg-bg-secondary hover:border-brand-primary hover:bg-status-info-bg/50'}"
799
799
  role="button"
800
800
  tabindex="0"
801
801
  onclick={() => modalFileInput?.click()}
@@ -805,7 +805,7 @@
805
805
  ondragleave={(e) => { e.preventDefault(); e.stopPropagation(); isModalDragOver = false; }}
806
806
  ondrop={(e) => handleModalDrop(e)}
807
807
  >
808
- <PlusOutline class="w-8 h-8 mb-2 text-gray-400" />
808
+ <PlusOutline class="w-8 h-8 mb-2 text-muted-foreground" />
809
809
  <span class={typography.smMuted}>{resolvedEmptyLabel}</span>
810
810
  <span class={`${typography.xsMuted} mt-1`}>{labels.fileTypes}</span>
811
811
  </div>
@@ -874,58 +874,40 @@
874
874
 
875
875
  /* FilePond drag hover state */
876
876
  :global(.filepond-wrapper .filepond--root[data-hopper-state="drag-over"]) {
877
- border-color: rgb(59 130 246); /* blue-500 */
878
- background-color: rgb(239 246 255); /* blue-50 */
879
- }
880
-
881
- :global(.dark .filepond-wrapper .filepond--root[data-hopper-state="drag-over"]) {
882
- background-color: rgba(30, 58, 138, 0.3); /* blue-900/30 */
877
+ border-color: hsl(var(--brand-primary));
878
+ background-color: hsl(var(--status-info-bg));
883
879
  }
884
880
 
885
881
  :global(.filepond-wrapper .filepond--root[data-hopper-state="drag-over"] .filepond--panel-root) {
886
- border-color: rgb(59 130 246); /* blue-500 */
882
+ border-color: hsl(var(--brand-primary));
887
883
  }
888
884
 
889
885
  /* Modal FilePond styling */
890
886
  :global(.filepond-wrapper) {
891
- border: 2px dashed rgb(209 213 219); /* gray-300 */
887
+ border: 2px dashed hsl(var(--stroke-primary));
892
888
  border-radius: 0.5rem; /* rounded-lg */
893
- background-color: rgb(249 250 251); /* gray-50 */
889
+ background-color: hsl(var(--bg-secondary));
894
890
  transition-property: color, background-color, border-color;
895
891
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
896
892
  transition-duration: 150ms;
897
893
  }
898
894
 
899
- :global(.dark .filepond-wrapper) {
900
- border-color: rgb(75 85 99); /* gray-600 */
901
- background-color: rgb(31 41 55); /* gray-800 */
902
- }
903
-
904
895
  :global(.filepond-wrapper:hover) {
905
- border-color: rgb(96 165 250); /* blue-400 */
896
+ border-color: hsl(var(--brand-primary));
906
897
  }
907
898
 
908
899
  /* Single mode dropzone styling */
909
900
  .filepond-wrapper-single {
910
- border: 2px dashed rgb(209 213 219); /* gray-300 */
911
- background-color: rgb(249 250 251); /* gray-50 */
901
+ border: 2px dashed hsl(var(--stroke-primary));
902
+ background-color: hsl(var(--bg-secondary));
912
903
  transition-property: color, background-color, border-color;
913
904
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
914
905
  transition-duration: 150ms;
915
906
  }
916
907
 
917
- :global(.dark) .filepond-wrapper-single {
918
- border-color: rgb(75 85 99); /* gray-600 */
919
- background-color: rgb(31 41 55); /* gray-800 */
920
- }
921
-
922
908
  .filepond-wrapper-single:hover {
923
- border-color: rgb(96 165 250); /* blue-400 */
924
- background-color: rgb(239 246 255); /* blue-50 */
925
- }
926
-
927
- :global(.dark) .filepond-wrapper-single:hover {
928
- background-color: rgba(30, 58, 138, 0.2); /* blue-900/20 */
909
+ border-color: hsl(var(--brand-primary));
910
+ background-color: hsl(var(--status-info-bg));
929
911
  }
930
912
 
931
913
  .filepond-wrapper-single :global(.filepond--root) {
@@ -954,12 +936,8 @@
954
936
 
955
937
  /* Direct drag-over state for dropzone */
956
938
  .dropzone-drag-over {
957
- border-color: rgb(59 130 246); /* blue-500 */
958
- background-color: rgb(219 234 254); /* blue-100 */
959
- }
960
-
961
- :global(.dark) .dropzone-drag-over {
962
- background-color: rgba(30, 58, 138, 0.4); /* blue-900/40 */
939
+ border-color: hsl(var(--brand-primary));
940
+ background-color: hsl(var(--status-info-bg));
963
941
  }
964
942
 
965
943
  /* Custom label styling inside FilePond */
@@ -985,7 +963,7 @@
985
963
  }
986
964
 
987
965
  :global(.sortable-chosen) {
988
- box-shadow: 0 0 0 2px rgb(59 130 246); /* ring-2 ring-blue-500 */
966
+ box-shadow: 0 0 0 2px hsl(var(--focus-ring));
989
967
  }
990
968
 
991
969
  :global(.sortable-drag) {