adata-ui 2.1.40 → 2.1.41-beta.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 (258) hide show
  1. package/-error.vue +2 -2
  2. package/.playground/app.vue +13 -13
  3. package/.playground/nuxt.config.ts +1 -1
  4. package/CLAUDE.md +63 -0
  5. package/assets/styles/main.css +12 -0
  6. package/assets/styles/theme.css +583 -0
  7. package/assets/styles/ui.css +247 -0
  8. package/components/elements/a-select-row/ASelectRowV2.vue +13 -17
  9. package/components/elements/a-select-row/index.vue +13 -12
  10. package/components/elements/accordion/AAccordion.vue +2 -2
  11. package/components/elements/accordion/AAccordionGroup/AAccordionGroup.vue +1 -1
  12. package/components/elements/accordion/AAccordionGroup/ui.config.ts +4 -4
  13. package/components/elements/accordion/ui.config.ts +4 -4
  14. package/components/elements/alert/AAlert.vue +5 -5
  15. package/components/elements/bg-block/ABgBlock.vue +1 -1
  16. package/components/elements/button/AButton.vue +48 -45
  17. package/components/elements/button/AButtonV2.vue +74 -30
  18. package/components/elements/button-login/index.vue +2 -1
  19. package/components/elements/carousel/config.ui.ts +2 -2
  20. package/components/elements/chip-wrapper/AChipWrapper.vue +4 -3
  21. package/components/elements/chips/AChips.vue +4 -3
  22. package/components/elements/companies/AOurClients.vue +1 -1
  23. package/components/elements/count-up/ACountUp.vue +54 -0
  24. package/components/elements/curve-block/ACurveBlock.vue +15 -48
  25. package/components/elements/curve-block-v2/ACurveBlockV2.vue +60 -25
  26. package/components/elements/digit-badge/ADigitBadge.vue +17 -16
  27. package/components/elements/empty-box/empty-box-V2.vue +92 -0
  28. package/components/elements/error-template/index.vue +99 -31
  29. package/components/elements/feature-description/AFeatureDescription.vue +8 -8
  30. package/components/elements/illustrations/noAccess.vue +1 -1
  31. package/components/elements/infinite-carousel/AInfiniteCarousel.vue +44 -16
  32. package/components/elements/leave-note/ALeaveNote.vue +2 -2
  33. package/components/elements/pagination/APagination.vue +8 -8
  34. package/components/elements/section-heading/ASectionHeading.vue +35 -0
  35. package/components/elements/segmented/ASegmentedV2.vue +24 -21
  36. package/components/elements/select/ASelect.vue +28 -27
  37. package/components/elements/select/ASelectMobile.vue +5 -5
  38. package/components/elements/select/ASelectV2.vue +20 -28
  39. package/components/elements/select/ui/select-button.vue +8 -8
  40. package/components/elements/select/ui/select-list.vue +2 -2
  41. package/components/elements/show-more/AShowMore.vue +2 -2
  42. package/components/elements/show-more/AShowMoreV2.vue +3 -3
  43. package/components/elements/skeleton/ASkeleton.vue +1 -1
  44. package/components/elements/slider/ASlider.vue +3 -2
  45. package/components/elements/slider/ASliderV2.vue +182 -0
  46. package/components/elements/star-rating/AStarRating.vue +2 -2
  47. package/components/elements/status-badge/AStatusBadge.vue +40 -36
  48. package/components/elements/step-slider/AStepSliderColCard.vue +77 -39
  49. package/components/elements/step-slider/AStepSliderColNumber.vue +74 -53
  50. package/components/elements/table/table.config.ts +8 -8
  51. package/components/elements/tree-select/components/ATreeSelectNode.vue +4 -4
  52. package/components/elements/tree-select-mobile/components/ATreeSelectNodesMobile.vue +3 -3
  53. package/components/elements/tree-select-modal/ATreeSelectModal.vue +4 -4
  54. package/components/features/color-mode/AColorMode.client.vue +2 -24
  55. package/components/features/dropdown/ADropdownV2.vue +1 -1
  56. package/components/features/lang-switcher/lang-switcher.vue +6 -6
  57. package/components/features/payment/banner/BasicPlusLimitBanner.vue +3 -23
  58. package/components/features/payment/banner/PaymentBanner.vue +3 -23
  59. package/components/features/payment/banner/UpSellBanner.vue +1 -21
  60. package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +8 -7
  61. package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +5 -5
  62. package/components/features/payment/process/PaymentMethodSidePanel.vue +12 -12
  63. package/components/features/payment/process/PaymentTopUpSidePanel.vue +6 -6
  64. package/components/features/pk-mobile-services/APkMobileServices.vue +14 -43
  65. package/components/features//321/201hange-version/AChangeVersion.vue +1 -1
  66. package/components/forms/checkbox/ACheckbox.vue +8 -8
  67. package/components/forms/checkbox/ACheckboxV2.vue +8 -8
  68. package/components/forms/feedback-form/FeedbackForm.vue +8 -8
  69. package/components/forms/feedback-form/FeedbackFormV2.vue +9 -8
  70. package/components/forms/input/AInputV2.vue +39 -25
  71. package/components/forms/input/button/AInputButton.vue +1 -1
  72. package/components/forms/input/date/AInputDate.vue +13 -9
  73. package/components/forms/input/password/AInputPassword.vue +1 -1
  74. package/components/forms/input/standard/AInputStandard.vue +23 -14
  75. package/components/forms/input/textarea/ATextarea.vue +15 -11
  76. package/components/forms/input/textarea/ATextareaV2.vue +18 -13
  77. package/components/forms/radio-button/ARadioButton.vue +4 -4
  78. package/components/forms/request-demo/ARequestDemo.vue +5 -5
  79. package/components/forms/toggle/AToggle.vue +8 -7
  80. package/components/forms/toggle/AToggleV2.vue +7 -6
  81. package/components/modals/AConfirmationEmail.vue +3 -3
  82. package/components/modals/AboutTariffModal.vue +10 -9
  83. package/components/modals/AnotherDeviceModal.vue +11 -10
  84. package/components/modals/ApplicationAcceptedModal.vue +3 -2
  85. package/components/modals/ConnectingTariffModal.vue +1 -1
  86. package/components/modals/ContactsMobileModel.vue +5 -5
  87. package/components/modals/ContentNavigationModal.vue +8 -7
  88. package/components/modals/Insufficient-funds-modal.vue +4 -4
  89. package/components/modals/LimitReachedModal.vue +18 -7
  90. package/components/modals/NoAccessModal.vue +7 -3
  91. package/components/modals/PaymentMethodModal.vue +4 -4
  92. package/components/modals/RedirectsBanksModal.vue +4 -4
  93. package/components/modals/ReplenishModal.vue +2 -2
  94. package/components/modals/ReportBugConfirmModal.vue +2 -2
  95. package/components/modals/ReportBugModal.vue +2 -2
  96. package/components/modals/Resend.vue +4 -4
  97. package/components/modals/SubmitApplicationModal.vue +1 -5
  98. package/components/modals/id/AuthModal.vue +27 -47
  99. package/components/modals/id/IdAutoLogoutModal.vue +23 -24
  100. package/components/modals/id/IdBanner.vue +4 -24
  101. package/components/modals/id/IdConfirmAccountOtpModal.vue +5 -4
  102. package/components/modals/id/IdConfirmSuccessfulModal.vue +3 -3
  103. package/components/modals/id/IdLoginModal.vue +8 -8
  104. package/components/modals/id/IdModals.vue +1 -3
  105. package/components/modals/id/IdNewPasswordModal.vue +3 -3
  106. package/components/modals/id/IdOtpInput.vue +3 -3
  107. package/components/modals/id/IdPasswordSuccessfulModal.vue +3 -3
  108. package/components/modals/id/IdRecoveryModal.vue +3 -3
  109. package/components/modals/id/IdRegistrationModal.vue +4 -4
  110. package/components/modals/id/IdResetPasswordOtpModal.vue +5 -4
  111. package/components/modals/id/IdTwoFactorModal.vue +3 -2
  112. package/components/navigation/bottom-navigation/ABottomNavigation.vue +7 -7
  113. package/components/navigation/breadcrumbs/ABreadcrumbs.vue +4 -4
  114. package/components/navigation/footer/AFooter.vue +2 -2
  115. package/components/navigation/footer/ui/a-footer-accordion.vue +1 -1
  116. package/components/navigation/header/AHeader.vue +11 -11
  117. package/components/navigation/header/AlmatyContacts.vue +7 -7
  118. package/components/navigation/header/AstanaContacts.vue +4 -4
  119. package/components/navigation/header/CardGallery.vue +8 -7
  120. package/components/navigation/header/ContactMenu.vue +1 -1
  121. package/components/navigation/header/HeaderLink.vue +5 -5
  122. package/components/navigation/header/HeaderUsage.vue +14 -14
  123. package/components/navigation/header/ListItem.vue +4 -3
  124. package/components/navigation/header/NavCard.vue +6 -5
  125. package/components/navigation/header/NavList.vue +9 -8
  126. package/components/navigation/header/NotificationsMenu.vue +10 -10
  127. package/components/navigation/header/ProductMenu.vue +10 -9
  128. package/components/navigation/header/ProfileMenu.vue +13 -12
  129. package/components/navigation/header/SystemNotification.vue +4 -4
  130. package/components/navigation/line-tabs/ALineTabs.vue +10 -9
  131. package/components/navigation/pill-tabs/APillTabs.vue +18 -16
  132. package/components/navigation/pill-tabs/APillTabsV2.vue +40 -25
  133. package/components/navigation/side-navigation/ASideNavigation.vue +3 -3
  134. package/components/overlays/drawer/ADrawerV2.vue +12 -11
  135. package/components/overlays/modal/AModal.vue +4 -4
  136. package/components/overlays/modal/AModalV2.vue +17 -13
  137. package/components/overlays/side-panel/ASidePanel.vue +7 -7
  138. package/components/overlays/sideover/ASlideover.vue +4 -4
  139. package/components/overlays/tooltip/ATooltip.vue +3 -2
  140. package/components/overlays/tooltip/ATooltipV2.vue +2 -2
  141. package/composables/highlight.ts +2 -1
  142. package/eslint.config.mjs +14 -1
  143. package/icons/arrow/arrow-left.vue +14 -0
  144. package/icons/arrow-currency-gray.vue +1 -1
  145. package/icons/arrow-currency-green.vue +1 -1
  146. package/icons/arrow-currency-red.vue +1 -1
  147. package/icons/avatar.vue +1 -1
  148. package/icons/bar-chart-3.vue +3 -0
  149. package/icons/book-open.vue +3 -0
  150. package/icons/bookmark/bookmark-filled.vue +1 -0
  151. package/icons/braces.vue +3 -0
  152. package/icons/check/check-outline.vue +3 -0
  153. package/icons/chevron/chevron-down-outline.vue +3 -0
  154. package/icons/clipboard-list.vue +3 -0
  155. package/icons/clock-outline.vue +3 -0
  156. package/icons/company-egov-small.vue +1 -1
  157. package/icons/database.vue +3 -0
  158. package/icons/download-outline.vue +3 -0
  159. package/icons/download.vue +1 -1
  160. package/icons/egov.vue +1 -1
  161. package/icons/elicense.vue +1 -1
  162. package/icons/file-json.vue +3 -0
  163. package/icons/file-search.vue +3 -0
  164. package/icons/file-text.vue +3 -0
  165. package/icons/flask-conical.vue +3 -0
  166. package/icons/folder-open.vue +3 -0
  167. package/icons/gift-outline.vue +3 -0
  168. package/icons/globe-2.vue +3 -0
  169. package/icons/graph-loading.vue +2 -2
  170. package/icons/hand/hand-thumb-up-filled.vue +1 -1
  171. package/icons/home.vue +14 -0
  172. package/icons/invoice.vue +1 -0
  173. package/icons/key-round.vue +3 -0
  174. package/icons/letter/letter-a.vue +4 -2
  175. package/icons/letter/letter-b.vue +2 -2
  176. package/icons/letter/letter-c.vue +2 -2
  177. package/icons/letter/letter-d.vue +2 -2
  178. package/icons/letter/letter-e.vue +2 -2
  179. package/icons/logo.vue +1 -1
  180. package/icons/main-filter.vue +1 -1
  181. package/icons/menu.vue +4 -4
  182. package/icons/message/message.vue +1 -1
  183. package/icons/messages-square.vue +3 -0
  184. package/icons/more.vue +1 -1
  185. package/icons/payment/payment-card.vue +2 -2
  186. package/icons/radio/radio-check.vue +1 -1
  187. package/icons/robot-outline.vue +3 -0
  188. package/icons/scales/scale-outline.vue +3 -0
  189. package/icons/search-outline.vue +3 -0
  190. package/icons/send.vue +3 -0
  191. package/icons/star/star-filled.vue +1 -0
  192. package/icons/star/star-half-filled.vue +1 -0
  193. package/icons/sun.vue +1 -0
  194. package/icons/terminal.vue +3 -0
  195. package/icons/toasts/warning-triangle-toast.vue +1 -0
  196. package/icons/triangle-alert.vue +3 -0
  197. package/icons/users-outline.vue +3 -0
  198. package/icons/webhook.vue +3 -0
  199. package/icons/x-outline.vue +3 -0
  200. package/icons/yandex.vue +2 -1
  201. package/illustrations/address-location.vue +2 -2
  202. package/illustrations/award-badge.vue +105 -0
  203. package/illustrations/ball-with-chain.vue +7 -7
  204. package/illustrations/bill.vue +5 -5
  205. package/illustrations/buildings.vue +4 -4
  206. package/illustrations/calendar.vue +11 -11
  207. package/illustrations/chains.vue +12 -12
  208. package/illustrations/coin-percent.vue +3 -3
  209. package/illustrations/coins-stack.vue +4 -4
  210. package/illustrations/delete-dark.vue +1 -0
  211. package/illustrations/delete.vue +1 -0
  212. package/illustrations/doc-with-stamp.vue +5 -5
  213. package/illustrations/document.vue +3 -3
  214. package/illustrations/door.vue +79 -68
  215. package/illustrations/empty-badge-check.vue +20 -0
  216. package/illustrations/empty-ban.vue +18 -0
  217. package/illustrations/empty-box.vue +5 -5
  218. package/illustrations/empty-filter.vue +20 -0
  219. package/illustrations/empty-inbox.vue +19 -0
  220. package/illustrations/empty-scale.vue +22 -0
  221. package/illustrations/empty-search-x.vue +21 -0
  222. package/illustrations/empty-shopping-cart.vue +21 -0
  223. package/illustrations/empty-users-round.vue +20 -0
  224. package/illustrations/empty-wallet.vue +121 -155
  225. package/illustrations/graph-in-coin.vue +2 -2
  226. package/illustrations/hammer.vue +5 -5
  227. package/illustrations/hand-cash.vue +1 -1
  228. package/illustrations/info.vue +49 -36
  229. package/illustrations/mail-active.vue +86 -0
  230. package/illustrations/mail.vue +4 -4
  231. package/illustrations/no-access.vue +92 -0
  232. package/illustrations/ok.vue +86 -58
  233. package/illustrations/people-group.vue +1 -1
  234. package/illustrations/person-with-phone.vue +5 -5
  235. package/illustrations/person.vue +3 -3
  236. package/illustrations/phone-check.vue +104 -84
  237. package/illustrations/phone-payment-method.vue +1 -1
  238. package/illustrations/shield-user.vue +94 -0
  239. package/illustrations/stop-hand.vue +78 -71
  240. package/illustrations/stop-sign.vue +1 -1
  241. package/illustrations/suit.vue +93 -107
  242. package/illustrations/suitcase.vue +6 -6
  243. package/illustrations/terminal.vue +94 -228
  244. package/illustrations/trash-can.vue +60 -102
  245. package/illustrations/turn-on-tariff.vue +2 -2
  246. package/illustrations/two-persons.vue +2 -2
  247. package/lang/en.ts +25 -29
  248. package/lang/kk.ts +24 -28
  249. package/lang/ru.ts +24 -29
  250. package/nuxt.config.ts +11 -4
  251. package/package.json +7 -12
  252. package/assets/styles/index.scss +0 -166
  253. package/assets/styles/modules/_base.scss +0 -5
  254. package/assets/styles/modules/_typography.scss +0 -152
  255. package/components/elements/error-template/types.ts +0 -23
  256. package/illustrations/terminal-dark.vue +0 -48
  257. package/tailwind.config.ts +0 -194
  258. package/tests/AButton.test.ts +0 -81
@@ -0,0 +1,35 @@
1
+ <script setup lang="ts">
2
+ // Заголовок блока лендинга: Display/Small → Display/Large + подзаголовок.
3
+ // Бейджи-eyebrow в блоках не используются — они живут только в hero и форме обратной связи.
4
+ withDefaults(defineProps<{
5
+ title?: string
6
+ subtitle?: string
7
+ center?: boolean
8
+ }>(), {
9
+ title: '',
10
+ subtitle: '',
11
+ center: false,
12
+ })
13
+ </script>
14
+
15
+ <template>
16
+ <div
17
+ class="flex flex-col gap-2.5"
18
+ :class="center ? 'items-center text-center' : 'text-left'"
19
+ >
20
+ <h2 class="text-display-sm text-primary md:text-display-lg">
21
+ <slot name="title">
22
+ {{ title }}
23
+ </slot>
24
+ </h2>
25
+ <p
26
+ v-if="subtitle || $slots.subtitle"
27
+ class="text-body-lg text-quaternary"
28
+ :class="{ 'max-w-2xl': center }"
29
+ >
30
+ <slot name="subtitle">
31
+ {{ subtitle }}
32
+ </slot>
33
+ </p>
34
+ </div>
35
+ </template>
@@ -37,40 +37,43 @@ const modelValue = defineModel<T | undefined | null>()
37
37
 
38
38
  const CHIP_CLASS: Record<Color, Record<View | 'selected', string>> = {
39
39
  gray: {
40
- outline: 'border-[#D1D5DC] bg-white text-[#4A5565] hover:bg-[#F3F4F6] dark:bg-gray-900 dark:border-[#4A5565]/50 dark:text-gray-300 dark:hover:bg-[#4A5565]/10',
41
- solid: 'border-transparent bg-[#F3F4F6] text-[#4A5565] hover:bg-[#D1D5DC] dark:bg-[#4A5565]/10 dark:text-gray-300 dark:hover:bg-[#4A5565]/20',
42
- selected: 'border-transparent bg-[#4A5565] text-white dark:border-[#4A5565]/50 dark:bg-[#4A5565]/30 dark:text-gray-100',
40
+ outline: 'border-strong bg-action-secondary text-quaternary hover:bg-action-secondary-hover',
41
+ solid: 'border-transparent bg-muted text-quaternary hover:bg-gray-300 dark:hover:bg-gray-600',
42
+ /* осознанно константный серый selected (bg-gray-600 text-white): токена нет */
43
+ selected: 'border-transparent bg-gray-600 text-white',
43
44
  },
45
+ /* пастельные border/hover: токенов нет — примитивы осознанно, dark:-компенсации */
44
46
  blue: {
45
- outline: 'border-[#B3DCFF] bg-white text-[#068DFF] hover:bg-[#F0F8FF] dark:bg-gray-900 dark:border-[#068DFF]/50 dark:text-blue-400 dark:hover:bg-[#068DFF]/10',
46
- solid: 'border-transparent bg-[#F0F8FF] text-[#068DFF] hover:bg-[#B3DCFF] dark:bg-[#068DFF]/10 dark:text-blue-400 dark:hover:bg-[#068DFF]/20',
47
- selected: 'border-transparent bg-[#068DFF] text-white dark:border-[#068DFF]/50 dark:bg-[#068DFF]/30 dark:text-blue-100',
47
+ outline: 'border-brand-200 dark:border-brand-500/40 bg-action-secondary text-brand hover:bg-brand-subtle',
48
+ solid: 'border-transparent bg-brand-subtle text-brand hover:bg-brand-200 dark:hover:bg-blue-subtle',
49
+ selected: 'border-transparent bg-brand text-white',
48
50
  },
49
51
  green: {
50
- outline: 'border-[#7BF1A8] bg-white text-[#00A63E] hover:bg-[#DCFCE7] dark:bg-gray-900 dark:border-[#00A63E]/50 dark:text-green-400 dark:hover:bg-[#00A63E]/10',
51
- solid: 'border-transparent bg-[#DCFCE7] text-[#00A63E] hover:bg-[#7BF1A8] dark:bg-[#00A63E]/10 dark:text-green-400 dark:hover:bg-[#00A63E]/20',
52
- selected: 'border-transparent bg-[#00A63E] text-white dark:border-[#00A63E]/50 dark:bg-[#00A63E]/30 dark:text-green-100',
52
+ outline: 'border-green-300 dark:border-green-600/40 bg-action-secondary text-success hover:bg-success-subtle',
53
+ solid: 'border-transparent bg-success-subtle text-success hover:bg-green-300 dark:hover:bg-green-subtle',
54
+ selected: 'border-transparent bg-success text-white',
53
55
  },
54
56
  yellow: {
55
- outline: 'border-[#FFD230] bg-white text-[#E17100] hover:bg-[#FEF3C6] dark:bg-gray-900 dark:border-[#E17100]/50 dark:text-orange-400 dark:hover:bg-[#E17100]/10',
56
- solid: 'border-transparent bg-[#FEF3C6] text-[#E17100] hover:bg-[#FFD230] dark:bg-[#E17100]/10 dark:text-orange-400 dark:hover:bg-[#E17100]/20',
57
- selected: 'border-transparent bg-[#E17100] text-white dark:border-[#E17100]/50 dark:bg-[#E17100]/30 dark:text-orange-100',
57
+ outline: 'border-yellow-300 dark:border-amber-600/40 bg-action-secondary text-warning hover:bg-warning-subtle',
58
+ solid: 'border-transparent bg-warning-subtle text-warning hover:bg-yellow-300 dark:hover:bg-warning-subtle',
59
+ selected: 'border-transparent bg-warning text-white',
58
60
  },
59
61
  red: {
60
- outline: 'border-[#FFA2A2] bg-white text-[#E7000B] hover:bg-[#FFE2E2] dark:bg-gray-900 dark:border-[#E7000B]/50 dark:text-red-400 dark:hover:bg-[#E7000B]/10',
61
- solid: 'border-transparent bg-[#FFE2E2] text-[#E7000B] hover:bg-[#FFA2A2] dark:bg-[#E7000B]/10 dark:text-red-400 dark:hover:bg-[#E7000B]/20',
62
- selected: 'border-transparent bg-[#E7000B] text-white dark:border-[#E7000B]/50 dark:bg-[#E7000B]/30 dark:text-red-100',
62
+ outline: 'border-red bg-action-secondary text-danger hover:bg-danger-subtle',
63
+ solid: 'border-transparent bg-danger-subtle text-danger hover:bg-red-300 dark:hover:bg-red-subtle',
64
+ selected: 'border-transparent bg-action-danger text-white',
63
65
  },
64
66
  }
65
67
 
66
68
  const DOT_CLASS: Record<Color, Record<View, string>> = {
67
- gray: { outline: 'bg-[#6A7282] dark:bg-gray-300', solid: 'bg-[#6A7282] dark:bg-gray-300' },
68
- blue: { outline: 'bg-[#068DFF] dark:bg-blue-400', solid: 'bg-[#068DFF] dark:bg-blue-400' },
69
- green: { outline: 'bg-[#00A63E] dark:bg-green-400', solid: 'bg-[#00A63E] dark:bg-green-400' },
70
- yellow: { outline: 'bg-[#E17100] dark:bg-orange-400', solid: 'bg-[#E17100] dark:bg-orange-400' },
71
- red: { outline: 'bg-[#E7000B] dark:bg-red-400', solid: 'bg-[#E7000B] dark:bg-red-400' },
69
+ gray: { outline: 'bg-icon-default', solid: 'bg-icon-default' },
70
+ blue: { outline: 'bg-brand', solid: 'bg-brand' },
71
+ green: { outline: 'bg-success', solid: 'bg-success' },
72
+ yellow: { outline: 'bg-warning', solid: 'bg-warning' },
73
+ red: { outline: 'bg-action-danger', solid: 'bg-action-danger' },
72
74
  }
73
75
 
76
+ /* белая точка на цветной выбранной пилюле — осознанно константный white */
74
77
  const DOT_SELECTED_CLASS = 'bg-white'
75
78
 
76
79
  function dotColorName(option: Option): Color {
@@ -118,7 +121,7 @@ function select(option: Option) {
118
121
  :key="String(option.value)"
119
122
  type="button"
120
123
  :disabled="option.disabled"
121
- class="inline-flex items-center gap-1.5 rounded-full border transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 disabled:cursor-not-allowed disabled:opacity-50"
124
+ class="inline-flex items-center gap-1.5 rounded-full border transition-colors duration-150 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand-500 disabled:cursor-not-allowed disabled:opacity-50"
122
125
  :class="[
123
126
  size === 'sm' ? 'px-3 py-1 text-body-sm' : 'px-3.5 py-1.5 text-body-md',
124
127
  chipClass(option),
@@ -61,7 +61,7 @@ const props = withDefaults(defineProps<Props>(), {
61
61
  minimalWords: false,
62
62
  canChipRemove: true,
63
63
  showFirstItem: false,
64
- buttonBg: 'border-deepblue-50 bg-deepblue-50 dark:border-gray-900 dark:bg-gray-200/5',
64
+ buttonBg: 'border-default bg-muted',
65
65
  maxHeight: 320,
66
66
  })
67
67
 
@@ -106,7 +106,7 @@ const valueToShow = ref<T | T[] | null>()
106
106
  const countedVisibleItems = ref(0)
107
107
 
108
108
  const disabledStyles =
109
- 'disabled:pointer-events-none disabled:opacity-40 disabled:bg-deepblue-50 disabled:text-deepblue-200 disabled:dark:text-gray-500'
109
+ 'disabled:pointer-events-none disabled:opacity-40 disabled:bg-action-disabled disabled:text-action-disabled-fg'
110
110
 
111
111
  const componentOptions = computed(() =>
112
112
  props.options.filter((item: T) => {
@@ -279,84 +279,85 @@ watch(() => isOpen.value, (open) => {
279
279
  onUnmounted(() => cleanup?.())
280
280
  </script>
281
281
  <template>
282
- <div ref="wrapper" class="relative w-full rounded-sm text-sm">
282
+ <div ref="wrapper" class="relative w-full rounded-sm text-body-md">
283
+ <!-- осознанно константная тень фокуса #1B64B3: документированное исключение -->
283
284
  <button
284
285
  ref="reference"
285
286
  :class="[
286
287
  clearable ? 'pr-16' : 'pr-9',
287
288
  {
288
289
  'pb-0.5 pt-2.5': valueToShow && !multiple && label,
289
- 'border-red': error,
290
+ 'border-danger': error,
290
291
  '!h-10': size === 'md'
291
292
  },
292
293
  disabledStyles,
293
294
  buttonBg,
294
295
  ]"
295
296
  :disabled="disabled"
296
- class="hover:border-blue-700 focus-visible:outline-blue relative flex h-8 w-full items-center gap-2 rounded-sm border border-solid py-1.5 pl-4 focus-visible:shadow-[0_0_0_4px#1B64B3] dark:hover:border-blue-500"
297
+ class="relative flex h-8 w-full items-center gap-2 rounded-sm border border-solid py-1.5 pl-4 hover:border-brand focus-visible:outline-(--border-color-focus) focus-visible:shadow-[0_0_0_4px#1B64B3]"
297
298
  @click="toggleOpen()"
298
299
  >
299
300
  <span
300
301
  v-if="valueToShow && !multiple && label"
301
- class="ease pointer-events-none absolute left-4 top-[6px] text-[10px] leading-none text-gray-500 transition-all duration-300"
302
+ class="ease pointer-events-none absolute left-4 top-[6px] text-[10px] leading-none text-secondary transition-all duration-300"
302
303
  >
303
304
  {{ label }}
304
- <span v-if="required" class="text-red-500 dark:text-red-400">*</span>
305
+ <span v-if="required" class="text-danger">*</span>
305
306
  </span>
306
307
  <component :is="startIcon" v-if="startIcon" />
307
308
 
308
309
  <span :class="{ 'py-1': size === 'md' }" class=" w-full text-start">
309
310
  <span v-if="valueToShow">
310
- <span v-if="!multiple" class="line-clamp-1 text-deepblue-900 dark:text-gray-200">
311
+ <span v-if="!multiple" class="line-clamp-1 text-primary">
311
312
  <slot name="single-selected" :value="valueToShow">{{ valueToShow[keyToShow] }}</slot>
312
313
  </span>
313
314
  <span
314
315
  v-else-if="valueToShow"
315
316
  :class="{ 'py-0': size === 'md' }"
316
- class="flex gap-2 py-0.5 text-deepblue-900 dark:text-gray-200"
317
+ class="flex gap-2 py-0.5 text-primary"
317
318
  >
318
319
  <a-chips
319
320
  v-for="(item, index) in valueToShow.slice(0, countOfVisibleItems)"
320
321
  :key="index"
321
322
  :style="{ 'max-width': maxWidthOfChip }"
322
- class="border-gray-500 text-deepblue-900 dark:text-gray-200"
323
+ class="border-strong text-primary"
323
324
  view="standard"
324
325
  @click.stop="canChipRemove ? onClearFromMulti(index) : (isOpen = true)"
325
326
  >
326
327
  <span class="truncate">{{ item[keyToShow] }}</span>
327
- <button v-if="canChipRemove" class="rounded-full bg-deepblue-100 dark:bg-gray-200/10">
328
- <a-icon-x-mark class="size-3 dark:text-gray-200" />
328
+ <button v-if="canChipRemove" class="rounded-full bg-badge">
329
+ <a-icon-x-mark class="size-3" />
329
330
  </button>
330
331
  </a-chips>
331
332
  <a-chips
332
333
  v-if="(valueToShow?.length || 0) > countOfVisibleItems"
333
- class="border-blue-700 text-blue-700 dark:border-blue-500 dark:text-blue-500 whitespace-nowrap"
334
+ class="whitespace-nowrap border-brand text-brand"
334
335
  >
335
336
  + {{ countOfInvisibleItems }}
336
337
  </a-chips>
337
338
  </span>
338
339
  </span>
339
- <span v-else class="body-400 text-gray-500">{{ label }}</span>
340
+ <span v-else class="text-body-md text-secondary">{{ label }}</span>
340
341
  </span>
341
342
  <button
342
343
  v-if="((multiple && valueToShow?.length) || (!multiple && valueToShow)) && clearable"
343
- class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-deepblue-100 dark:bg-gray-200/10"
344
+ class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-badge"
344
345
  @click.stop="onClear"
345
346
  >
346
- <a-icon-x-mark class="!m-0 text-base dark:text-gray-200" />
347
+ <a-icon-x-mark class="!m-0 text-base" />
347
348
  </button>
348
349
  <span
349
350
  :class="{ 'rotate-180': isOpen }"
350
351
  class="absolute right-4 top-1/2 -translate-y-1/2 text-base transition-transform"
351
352
  >
352
- <a-icon-chevron-down class="!m-0" style="color: #9da3ac" />
353
+ <a-icon-chevron-down class="!m-0 text-secondary" />
353
354
  </span>
354
355
  </button>
355
356
  <transition>
356
357
  <div
357
358
  v-if="isOpen"
358
359
  ref="floating"
359
- class="z-[10000] rounded-sm bg-white shadow-[0_1px_8px_0_rgba(139,146,156,0.3)] dark:bg-gray-900"
360
+ class="z-[10000] rounded-sm bg-main shadow-[0_1px_8px_0] shadow-surface-dark/10 dark:shadow-surface-dark/30"
360
361
  :style="{
361
362
  position: strategy,
362
363
  left: x != null ? `${x}px` : '',
@@ -380,30 +381,30 @@ onUnmounted(() => cleanup?.())
380
381
  <li v-for="(option, index) in componentOptions" :key="index">
381
382
  <button
382
383
  v-if="!multiple"
383
- :class="{ 'dark:bg-[#E3E5E80D]': isEqual(valueToShow, option) }"
384
+ :class="{ '': isEqual(valueToShow, option) }"
384
385
  :disabled="isEqual(valueToShow, option)"
385
- class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-deepblue-50 dark:bg-[#E3E5E80D]"
386
+ class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-action-secondary-hover"
386
387
  @click="onSelect(option)"
387
388
  >
388
389
  <span>
389
390
  <slot name="option" :option="option">{{ option[keyToShow] }}</slot>
390
391
  </span>
391
392
  <span v-if="isEqual(valueToShow, option)">
392
- <a-icon-check style="color: #0070eb" />
393
+ <a-icon-check class="text-brand" />
393
394
  </span>
394
395
  </button>
395
396
  <button
396
397
  v-else
397
398
  :class="{
398
- 'dark:bg-[#E3E5E80D]':
399
+ '':
399
400
  valueToShow && valueToShow.some((item) => isEqual(option, item))
400
401
  }"
401
- class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-deepblue-50 dark:hover:bg-[#E3E5E80D]"
402
+ class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-action-secondary-hover"
402
403
  @click="onSelect(option)"
403
404
  >
404
405
  <span>{{ option[keyToShow] }}</span>
405
406
  <span v-if="valueToShow && valueToShow.some((item) => isEqual(option, item))">
406
- <a-icon-check style="color: #0070eb" />
407
+ <a-icon-check class="text-brand" />
407
408
  </span>
408
409
  </button>
409
410
  </li>
@@ -411,7 +412,7 @@ onUnmounted(() => cleanup?.())
411
412
  </slot>
412
413
  <div
413
414
  v-if="props.hasButtons"
414
- class="-mb-2 flex w-full flex-col gap-2 rounded-sm p-4 shadow-[0_-2px_8px_0#9DA3AC3D] xl:flex-row"
415
+ class="-mb-2 flex w-full flex-col gap-2 rounded-sm p-4 shadow-[0_-2px_8px_0] shadow-surface-dark/10 dark:shadow-surface-dark/30 xl:flex-row"
415
416
  >
416
417
  <slot name="buttons">
417
418
  <a-button view="outline" variant="gray" block @click="onClear"> Сбросить </a-button>
@@ -432,12 +433,12 @@ onUnmounted(() => cleanup?.())
432
433
 
433
434
  /* Track */
434
435
  &::-webkit-scrollbar-track {
435
- background: #f1f1f1;
436
+ background: var(--background-color-muted);
436
437
  }
437
438
 
438
439
  /* Handle */
439
440
  &::-webkit-scrollbar-thumb {
440
- background: #888;
441
+ background: color-mix(in srgb, var(--text-color-primary) 45%, transparent);
441
442
  }
442
443
  button {
443
444
  user-select: text !important;
@@ -44,7 +44,7 @@ const props = withDefaults(defineProps<Props>(), {
44
44
  searchKey: 'name',
45
45
  multiple: false,
46
46
  showCount: true,
47
- buttonClass: 'border-deepblue-50 bg-deepblue-50 dark:border-gray-900 dark:bg-gray-200/5'
47
+ buttonClass: 'border-default bg-muted'
48
48
  })
49
49
 
50
50
  const emits = defineEmits<Emits>()
@@ -113,10 +113,10 @@ defineExpose({
113
113
  <template #header>
114
114
  <div class="pt-4 px-2 flex flex-col justify-between gap-3">
115
115
  <div class="flex items-center" :class="{'justify-center':!showCount, 'justify-between': showCount}">
116
- <h4 class="heading-04">
116
+ <h4 class="text-h5">
117
117
  {{title}}
118
118
  </h4>
119
- <p v-if="showCount" class="text-xs text-blue-500">
119
+ <p v-if="showCount" class="text-body-sm text-brand">
120
120
  Выбрано: {{ selectedData?.length }}
121
121
  </p>
122
122
  </div>
@@ -130,7 +130,7 @@ defineExpose({
130
130
  </template>
131
131
  <div class="flex flex-col justify-between ">
132
132
  <div
133
- class="mt-1 w-full h-full bg-white p-2 border rounded-sm dark:bg-gray-900 overflow-y-auto"
133
+ class="mt-1 w-full h-full bg-main p-2 border rounded-sm overflow-y-auto"
134
134
  >
135
135
  <slot
136
136
  name="options"
@@ -171,7 +171,7 @@ defineExpose({
171
171
  </a-slideover>
172
172
  <div
173
173
  ref="wrapper"
174
- class="relative w-full rounded-sm text-sm"
174
+ class="relative w-full rounded-sm text-body-md"
175
175
  >
176
176
  <a-select-row
177
177
  v-model:selected-items="selectedData"
@@ -304,19 +304,19 @@ const isDefaultSelection = computed(() => {
304
304
  clearable ? 'pr-16' : 'pr-9',
305
305
  { 'select-v2__trigger--error': error },
306
306
  disabled
307
- ? 'border-gray-200 bg-gray-100/70 dark:border-gray-700 dark:bg-white/[0.03]'
308
- : (buttonBg || 'border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900'),
307
+ ? 'border-default bg-badge/70'
308
+ : (buttonBg || 'border-default bg-main'),
309
309
  ]"
310
- class="select-v2__trigger text-deepblue-900 relative flex w-full items-center gap-2 rounded-[10px] border border-solid pl-4 transition-colors duration-200 hover:border-blue-500 focus-visible:border-blue-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-600/20 dark:text-gray-200 dark:hover:border-blue-400 dark:focus-visible:border-blue-400 dark:focus-visible:ring-blue-400/20"
310
+ class="select-v2__trigger text-primary relative flex w-full items-center gap-2 rounded-[10px] border border-solid pl-4 transition-colors duration-200 hover:border-brand focus-visible:border-focus focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand-500/20"
311
311
  @click="toggleOpen()"
312
312
  >
313
313
  <span
314
314
  v-if="showFloatingLabel"
315
315
  :data-size="size"
316
- class="select-v2__label pointer-events-none absolute left-4 top-1.5 text-[10px] leading-none text-gray-500 dark:text-gray-400"
316
+ class="select-v2__label pointer-events-none absolute left-4 top-1.5 text-[10px] leading-none text-secondary"
317
317
  :class="valueToShow ? 'select-v2__label--floated' : 'select-v2__label--placeholder'"
318
318
  >
319
- {{ label }}<span v-if="required" class="text-red-500 dark:text-red-400">&nbsp;*</span>
319
+ {{ label }}<span v-if="required" class="text-danger">&nbsp;*</span>
320
320
  </span>
321
321
 
322
322
  <component
@@ -330,7 +330,7 @@ const isDefaultSelection = computed(() => {
330
330
  <span v-if="valueToShow" class="block truncate leading-tight">
331
331
  <slot name="single-selected" :value="valueToShow">{{ (valueToShow as any)[keyToShow] }}</slot>
332
332
  </span>
333
- <span v-else class="text-gray-500 dark:text-gray-400">&#8203;</span>
333
+ <span v-else class="text-secondary">&#8203;</span>
334
334
  </template>
335
335
 
336
336
  <template v-else>
@@ -339,20 +339,20 @@ const isDefaultSelection = computed(() => {
339
339
  <span
340
340
  v-for="(item, index) in (valueToShow as any[]).slice(0, visibleChipCount)"
341
341
  :key="index"
342
- class="select-v2__chip inline-flex min-w-0 items-center gap-1 rounded-sm bg-[#F0F8FF] px-2 py-0.5 text-body-sm text-blue-600 dark:bg-blue-600/15 dark:text-blue-400"
342
+ class="select-v2__chip inline-flex min-w-0 items-center gap-1 rounded-sm bg-brand-subtle px-2 py-0.5 text-body-sm text-brand"
343
343
  @click.stop="canChipRemove ? onClearFromMulti(item) : (isOpen = true)"
344
344
  >
345
345
  <span class="truncate">{{ item[keyToShow] }}</span>
346
346
  <button
347
347
  v-if="canChipRemove"
348
- class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-blue-100 dark:hover:bg-blue-500/20"
348
+ class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-blue-subtle"
349
349
  >
350
350
  <a-icon-x-mark class="size-2.5" />
351
351
  </button>
352
352
  </span>
353
353
  <span
354
354
  v-if="hiddenChipCount > 0"
355
- class="inline-flex shrink-0 items-center whitespace-nowrap rounded-sm bg-[#DBEFFF] px-2 py-0.5 text-body-sm-medium text-[#0066BD] dark:bg-blue-600/25 dark:text-blue-300"
355
+ class="inline-flex shrink-0 items-center whitespace-nowrap rounded-sm bg-blue-subtle px-2 py-0.5 text-body-sm-medium text-brand"
356
356
  >
357
357
  +{{ hiddenChipCount }}
358
358
  </span>
@@ -366,7 +366,7 @@ const isDefaultSelection = computed(() => {
366
366
  <span
367
367
  v-for="(item, index) in (valueToShow as any[])"
368
368
  :key="`measure-${index}`"
369
- class="inline-flex items-center gap-1 whitespace-nowrap rounded-sm bg-gray-50 px-2 py-0.5 text-body-sm"
369
+ class="inline-flex items-center gap-1 whitespace-nowrap rounded-sm bg-muted px-2 py-0.5 text-body-sm"
370
370
  >
371
371
  <span>{{ item[keyToShow] }}</span>
372
372
  <span
@@ -381,13 +381,13 @@ const isDefaultSelection = computed(() => {
381
381
  </span>
382
382
  </span>
383
383
  </template>
384
- <span v-else class="text-gray-500 dark:text-gray-400">{{ label }}</span>
384
+ <span v-else class="text-secondary">{{ label }}</span>
385
385
  </template>
386
386
  </span>
387
387
 
388
388
  <button
389
389
  v-if="valueToShow && clearable && !isDefaultSelection"
390
- class="absolute right-9 top-1/2 flex -translate-y-1/2 items-center justify-center rounded-full p-0.5transition-colors hover:bg-gray-100 dark:hover:bg-white/[0.08] dark:hover:text-gray-300"
390
+ class="absolute right-9 top-1/2 flex -translate-y-1/2 items-center justify-center rounded-full p-0.5transition-colors hover:bg-badge"
391
391
  @click.stop="onClear"
392
392
  >
393
393
  <a-icon-x-mark class="!m-0 size-3.5" />
@@ -397,7 +397,7 @@ const isDefaultSelection = computed(() => {
397
397
  :class="{ 'rotate-180': isOpen }"
398
398
  class="absolute right-3 top-1/2 -translate-y-1/2 transition-transform duration-200"
399
399
  >
400
- <a-icon-chevron-down class="!m-0 size-4 text-gray-400 dark:text-gray-500" />
400
+ <a-icon-chevron-down class="!m-0 size-4 text-icon-disabled" />
401
401
  </span>
402
402
  </button>
403
403
 
@@ -412,7 +412,7 @@ const isDefaultSelection = computed(() => {
412
412
  <div
413
413
  v-if="isOpen"
414
414
  ref="floating"
415
- class="select-v2__dropdown z-[10000] rounded-lg border border-gray-200 bg-white shadow-lg shadow-gray-900/10 dark:border-gray-700 dark:bg-gray-900 dark:shadow-black/30"
415
+ class="select-v2__dropdown z-[10000] rounded-lg border border-default bg-main shadow-lg shadow-surface-dark/10 dark:shadow-surface-dark/30"
416
416
  :style="{
417
417
  position: strategy,
418
418
  left: x != null ? `${x}px` : '',
@@ -445,7 +445,7 @@ const isDefaultSelection = computed(() => {
445
445
  <button
446
446
  :disabled="!multiple && isItemSelected(option)"
447
447
  :class="{ 'select-v2__option--selected': isItemSelected(option) }"
448
- class="select-v2__option flex w-full items-center justify-between rounded-md px-3 py-2 text-start text-body-md transition-colors duration-100 hover:bg-gray-50 dark:hover:bg-gray-800/60"
448
+ class="select-v2__option flex w-full items-center justify-between rounded-md px-3 py-2 text-start text-body-md transition-colors duration-100 hover:bg-action-secondary-hover"
449
449
  @click="onSelect(option)"
450
450
  >
451
451
  <span>
@@ -453,7 +453,7 @@ const isDefaultSelection = computed(() => {
453
453
  </span>
454
454
  <a-icon-check
455
455
  v-if="isItemSelected(option)"
456
- class="size-4 shrink-0 text-blue-600 dark:text-blue-400"
456
+ class="size-4 shrink-0 text-brand"
457
457
  />
458
458
  </button>
459
459
  </li>
@@ -462,7 +462,7 @@ const isDefaultSelection = computed(() => {
462
462
 
463
463
  <div
464
464
  v-if="props.hasButtons"
465
- class="flex w-full flex-col gap-2 border-t border-gray-200 p-3 xl:flex-row dark:border-gray-700"
465
+ class="flex w-full flex-col gap-2 border-t border-default p-3 xl:flex-row"
466
466
  >
467
467
  <slot name="buttons">
468
468
  <a-button
@@ -491,7 +491,7 @@ const isDefaultSelection = computed(() => {
491
491
  }
492
492
 
493
493
  .select-v2__trigger--error {
494
- border-color: theme('colors.red.500');
494
+ border-color: var(--border-color-danger);
495
495
  }
496
496
 
497
497
  .select-v2__dropdown-enter-active,
@@ -528,25 +528,17 @@ const isDefaultSelection = computed(() => {
528
528
  }
529
529
 
530
530
  .select-v2__option--selected {
531
- background-color: theme('colors.blue.50');
531
+ background-color: var(--background-color-brand-subtle);
532
532
  font-weight: 500;
533
533
  }
534
534
 
535
- :is(.dark) .select-v2__option--selected {
536
- background-color: rgb(30 64 175 / 0.12);
537
- }
538
-
539
535
  .select-v2__chip {
540
536
  cursor: pointer;
541
537
  transition: background-color 150ms;
542
538
  }
543
539
 
544
540
  .select-v2__chip:hover {
545
- background-color: theme('colors.blue.100');
546
- }
547
-
548
- :is(.dark) .select-v2__chip:hover {
549
- background-color: rgb(6 141 255 / 0.25);
541
+ background-color: var(--background-color-blue-subtle);
550
542
  }
551
543
 
552
544
  .select-v2__option {
@@ -27,7 +27,7 @@ const props = withDefaults(defineProps<Props>(), {
27
27
  })
28
28
  const emits = defineEmits<Emits>()
29
29
  const disabledStyles =
30
- 'disabled:pointer-events-none disabled:bg-deepblue-50 disabled:text-deepblue-200'
30
+ 'disabled:pointer-events-none disabled:bg-action-disabled disabled:text-action-disabled-fg'
31
31
  const isOpen = defineModel<boolean>('isOpen')
32
32
 
33
33
 
@@ -60,9 +60,10 @@ const onClear = () => {
60
60
  <template>
61
61
  <div>
62
62
  <!-- <pre>{{ items }} items</pre>-->
63
+ <!-- осознанно константная тень фокуса #1B64B3: документированное исключение -->
63
64
  <button
64
65
  ref="buttonElement"
65
- class="hover:border-blue focus-visible:outline-blue relative flex justify-between w-full items-center gap-2 rounded-sm border border-solid border-deepblue-50 bg-deepblue-50 px-4 py-1.5 focus-visible:shadow-[0_0_0_4px#1B64B3] dark:border-gray-900 dark:bg-gray-900 dark:hover:border-blue-700 dark:bg-[#E3E5E80D]"
66
+ class="relative flex w-full items-center justify-between gap-2 rounded-sm border border-solid border-default bg-muted px-4 py-1.5 hover:border-brand focus-visible:outline-(--border-color-focus) focus-visible:shadow-[0_0_0_4px#1B64B3]"
66
67
  :class="[disabledStyles]"
67
68
  :disabled="disabled"
68
69
  @click="isOpen = !isOpen"
@@ -79,8 +80,8 @@ const onClear = () => {
79
80
  @click.stop="deleteItem( item)"
80
81
  >
81
82
  {{ item.name }}
82
- <button class="rounded-full bg-deepblue-100 dark:bg-gray-200/10">
83
- <a-icon-x-mark class="size-3 dark:text-gray-300" />
83
+ <button class="rounded-full bg-badge">
84
+ <a-icon-x-mark class="size-3" />
84
85
  </button>
85
86
  </a-chips>
86
87
  <a-chips v-if="countOfUnvisibleItems">
@@ -93,15 +94,14 @@ const onClear = () => {
93
94
  </div>
94
95
  <button
95
96
  v-if="visibleItems && countOfVisibleItems"
96
- class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-deepblue-100 dark:bg-gray-200/10"
97
+ class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-badge"
97
98
  @click.stop="onClear"
98
99
  >
99
- <a-icon-x-mark class="!m-0 text-base dark:text-gray-300" />
100
+ <a-icon-x-mark class="!m-0 text-base" />
100
101
  </button>
101
102
  <a-icon-chevron-up
102
- class="!m-0 transition-all "
103
+ class="!m-0 text-secondary transition-all "
103
104
  :class="{'rotate-180': isOpen}"
104
- style="color: #9da3ac"
105
105
  />
106
106
  </button>
107
107
  </div>
@@ -82,12 +82,12 @@ const formattedOptions = computed(() => {
82
82
  :key="option.id"
83
83
  >
84
84
  <button
85
- class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-deepblue-50 dark:bg-[#E3E5E80D] bg-white"
85
+ class="flex w-full items-center justify-between bg-action-secondary px-4 py-1.5 text-start hover:bg-action-secondary-hover"
86
86
  @click="setData(option)"
87
87
  >
88
88
  {{ option.name }}
89
89
  <span v-if="isSelected(option)">
90
- <a-icon-check style="color: #0070eb"/>
90
+ <a-icon-check class="text-brand"/>
91
91
  </span>
92
92
  </button>
93
93
  </template>
@@ -12,7 +12,7 @@ const { t } = useI18n()
12
12
 
13
13
  <template>
14
14
  <div class="flex items-center gap-4">
15
- <hr class="h-[0.5px] w-full bg-gray-500/50">
15
+ <hr class="h-[0.5px] w-full bg-(--border-color-default)">
16
16
  <a-button
17
17
  :loading="loading"
18
18
  :disabled="loading"
@@ -26,7 +26,7 @@ const { t } = useI18n()
26
26
  <a-icon-chevron-down />
27
27
  </slot>
28
28
  </a-button>
29
- <hr class="h-[0.5px] w-full bg-gray-500/50">
29
+ <hr class="h-[0.5px] w-full bg-(--border-color-default)">
30
30
  </div>
31
31
  </template>
32
32
 
@@ -8,11 +8,11 @@ const { t } = useI18n()
8
8
 
9
9
  <template>
10
10
  <div class="flex items-center gap-3">
11
- <hr class="h-px flex-1 border-0 bg-gray-200 dark:bg-white/10">
11
+ <hr class="h-px flex-1 border-0 bg-badge">
12
12
  <button
13
13
  type="button"
14
14
  :disabled="loading"
15
- class="inline-flex items-center gap-1.5 rounded-full border border-gray-200 bg-white px-4 py-1.5 text-sm font-medium text-gray-700 transition-colors duration-150 hover:border-gray-300 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-60 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300 dark:hover:border-gray-700 dark:hover:bg-white/[0.06]"
15
+ class="inline-flex items-center gap-1.5 rounded-full border border-default bg-action-secondary px-4 py-1.5 text-body-md-medium text-quaternary transition-colors duration-150 hover:border-strong hover:bg-action-secondary-hover disabled:cursor-not-allowed disabled:opacity-60"
16
16
  @click="emit('click')"
17
17
  >
18
18
  <a-icon-loader-circle v-if="loading" class="size-4 animate-spin" />
@@ -21,6 +21,6 @@ const { t } = useI18n()
21
21
  <a-icon-chevron-down v-if="!loading" class="size-4" />
22
22
  </slot>
23
23
  </button>
24
- <hr class="h-px flex-1 border-0 bg-gray-200 dark:bg-white/10">
24
+ <hr class="h-px flex-1 border-0 bg-badge">
25
25
  </div>
26
26
  </template>
@@ -29,7 +29,7 @@ const styles = computed(() => {
29
29
 
30
30
  <template>
31
31
  <div
32
- class="skeleton-loader animate-pulse bg-gray-300 dark:bg-gray-800"
32
+ class="skeleton-loader animate-pulse bg-badge"
33
33
  :style="styles"
34
34
  />
35
35
  </template>