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
@@ -47,28 +47,28 @@ function onBack() {
47
47
  <div class="flex items-center gap-2">
48
48
  <button
49
49
  type="button"
50
- class="rounded-md p-1 transition-colors hover:bg-gray-100 dark:hover:bg-white/[0.06]"
50
+ class="rounded-md p-1 transition-colors hover:bg-badge"
51
51
  data-test-id="payment-method-back-button"
52
52
  @click="onBack"
53
53
  >
54
54
  <a-icon-chevron-left class="size-6" />
55
55
  </button>
56
- <p class="text-xl font-semibold text-deepblue-900 dark:text-gray-100">
56
+ <p class="text-h3 text-primary">
57
57
  {{ t('payment.method.title') }}
58
58
  </p>
59
59
  </div>
60
60
  </template>
61
61
 
62
62
  <div class="flex flex-col gap-6">
63
- <div class="flex flex-col items-center gap-4 rounded-xl bg-gray-50 p-6 text-center dark:bg-white/[0.03]">
63
+ <div class="flex flex-col items-center gap-4 rounded-xl bg-muted p-6 text-center">
64
64
  <a-ill-phone-check class="size-[120px]" />
65
- <p class="text-sm font-medium text-gray-600 dark:text-gray-300">
65
+ <p class="text-body-md-medium text-quaternary">
66
66
  {{ t('payment.method.description') }}
67
67
  </p>
68
68
  </div>
69
69
 
70
70
  <div class="flex flex-col gap-2">
71
- <p class="text-sm font-semibold text-deepblue-900 dark:text-gray-100">
71
+ <p class="text-body-md-strong text-primary">
72
72
  {{ t('payment.method.note') }}
73
73
  </p>
74
74
 
@@ -79,8 +79,8 @@ function onBack() {
79
79
  class="flex items-center gap-3 rounded-xl border p-4 text-left transition-colors"
80
80
  :data-test-id="item.dataTestId"
81
81
  :class="selected === item.id
82
- ? 'border-blue-500 bg-blue-50/60 dark:border-blue-400 dark:bg-blue-950/30'
83
- : 'border-gray-200 bg-white hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900 dark:hover:bg-gray-800'"
82
+ ? 'border-brand bg-brand-50/60'
83
+ : 'border-default bg-main hover:border-strong hover:bg-action-secondary-hover'"
84
84
  @click="selected = item.id"
85
85
  >
86
86
  <component
@@ -88,22 +88,22 @@ function onBack() {
88
88
  class="h-7 w-auto shrink-0"
89
89
  />
90
90
  <div class="flex min-w-0 flex-1 items-center justify-between gap-2">
91
- <span class="text-sm font-semibold text-deepblue-900 dark:text-gray-100">
91
+ <span class="text-body-md-strong text-primary">
92
92
  {{ t(item.name) }}
93
93
  </span>
94
- <span class="text-sm font-semibold text-gray-600 dark:text-gray-300">
94
+ <span class="text-body-md-strong text-quaternary">
95
95
  {{ formattedSum }} ₸
96
96
  </span>
97
97
  </div>
98
98
  <span
99
99
  class="flex size-5 shrink-0 items-center justify-center rounded-full border-2 transition-colors"
100
100
  :class="selected === item.id
101
- ? 'border-blue-600 dark:border-blue-400'
102
- : 'border-gray-300 dark:border-gray-600'"
101
+ ? 'border-brand'
102
+ : 'border-strong'"
103
103
  >
104
104
  <span
105
105
  v-if="selected === item.id"
106
- class="size-2.5 rounded-full bg-blue-600 dark:bg-blue-400"
106
+ class="size-2.5 rounded-full bg-brand"
107
107
  />
108
108
  </span>
109
109
  </button>
@@ -48,15 +48,15 @@ function handlePayment() {
48
48
  data-test-id="topup-balance-modal"
49
49
  >
50
50
  <template #header>
51
- <div class="text-xl font-semibold text-deepblue-900 dark:text-gray-100">
51
+ <div class="text-h3 text-primary">
52
52
  {{ t('payment.topUp.title') }}
53
53
  </div>
54
54
  </template>
55
55
 
56
56
  <div class="flex flex-col gap-6">
57
- <div class="flex flex-col items-center gap-4 rounded-xl bg-gray-50 p-6 text-center dark:bg-white/[0.03]">
57
+ <div class="flex flex-col items-center gap-4 rounded-xl bg-muted p-6 text-center">
58
58
  <a-ill-bill class="size-[120px]" />
59
- <p class="text-sm font-medium text-gray-600 dark:text-gray-300">
59
+ <p class="text-body-md-medium text-quaternary">
60
60
  {{ t('payment.topUp.info') }}
61
61
  </p>
62
62
  </div>
@@ -77,11 +77,11 @@ function handlePayment() {
77
77
  v-for="item in sumArr"
78
78
  :key="item.id"
79
79
  type="button"
80
- class="rounded-lg border px-3 py-2.5 text-sm font-semibold transition-colors"
80
+ class="rounded-lg border px-3 py-2.5 text-body-md-strong transition-colors"
81
81
  :data-test-id="item.dataTestId"
82
82
  :class="amount === item.value
83
- ? 'border-blue-500 bg-blue-50 text-blue-700 dark:border-blue-400 dark:bg-blue-950/40 dark:text-blue-300'
84
- : 'border-gray-200 bg-white text-deepblue-900 hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:hover:bg-gray-800'"
83
+ ? 'border-brand bg-brand-subtle text-brand'
84
+ : 'border-default bg-main text-primary hover:border-strong hover:bg-action-secondary-hover'"
85
85
  @click.stop="onSelectAmount(item.value)"
86
86
  >
87
87
  {{ item.label }}
@@ -31,8 +31,8 @@ const blockStyles = [
31
31
  <div
32
32
  class="size-10 p-2 rounded-md"
33
33
  :class="[
34
- 'bg-deepblue-900/5 dark:bg-gray-200/5',
35
- {'!bg-blue-700 text-white dark:!bg-blue-500 ': isActiveService(service.to)}
34
+ 'bg-muted',
35
+ { '!bg-action-primary text-action-primary-fg': isActiveService(service.to) }
36
36
  ]"
37
37
  >
38
38
  <component
@@ -40,7 +40,7 @@ const blockStyles = [
40
40
  class="size-6 shrink-0"
41
41
  />
42
42
  </div>
43
- <p class="text-xs text-center">
43
+ <p class="text-body-sm text-center">
44
44
  {{ service.title }}
45
45
  </p>
46
46
  </component>
@@ -48,89 +48,60 @@ const blockStyles = [
48
48
  </template>
49
49
 
50
50
  <style lang="scss" scoped>
51
+ /* Градиенты бордеров на токенах (main → muted) — сами переключаются в тёмной теме,
52
+ ручной .dark-блок не нужен */
51
53
  .first-border-gradient {
52
54
  border-width: 0 1px 1px 0;
53
55
  border-style: solid;
54
- border-image-source: linear-gradient(180deg, #FFFFFF 0%, #F4F5F6 100%);
56
+ border-image-source: linear-gradient(180deg, var(--background-color-main) 0%, var(--background-color-muted) 100%);
55
57
  border-image-slice: 1;
56
58
  }
57
59
  .second-border-gradient {
58
60
  border-width: 0 1px 1px 1px;
59
61
  border-style: solid;
60
- border-image-source: linear-gradient(180deg, #FFFFFF 0%, #F4F5F6 100%);
62
+ border-image-source: linear-gradient(180deg, var(--background-color-main) 0%, var(--background-color-muted) 100%);
61
63
  border-image-slice: 1;
62
64
  }
63
65
  .third-border-gradient {
64
66
  border-width: 0 0 1px 1px;
65
67
  border-style: solid;
66
- border-image-source: linear-gradient(218.84deg, #FFFFFF 41.56%, #F4F5F6 98.73%);
68
+ border-image-source: linear-gradient(218.84deg, var(--background-color-main) 41.56%, var(--background-color-muted) 98.73%);
67
69
  border-image-slice: 1;
68
70
  }
69
71
  .fourth-border-gradient {
70
72
  border-width: 1px 1px 1px 0;
71
73
  border-style: solid;
72
- border-image-source: linear-gradient(125.34deg, #FFFFFF 7.49%, #F4F5F6 86.67%);
74
+ border-image-source: linear-gradient(125.34deg, var(--background-color-main) 7.49%, var(--background-color-muted) 86.67%);
73
75
  border-image-slice: 1;
74
76
  }
75
77
  .fifth-border-gradient {
76
78
  border-width: 1px;
77
79
  border-style: solid;
78
- border-color: var(--Bg-tertiary-bg, #F4F5F6);
80
+ border-color: var(--background-color-muted);
79
81
  border-image-slice: 1;
80
82
  }
81
83
  .sixth-border-gradient {
82
84
  border-width: 1px 0 1px 1px;
83
85
  border-style: solid;
84
- border-image-source: linear-gradient(261.06deg, #FFFFFF -6.98%, #F4F5F6 99.74%);
86
+ border-image-source: linear-gradient(261.06deg, var(--background-color-main) -6.98%, var(--background-color-muted) 99.74%);
85
87
  border-image-slice: 1;
86
88
  }
87
89
  .seventh-border-gradient {
88
90
  border-width: 1px 1px 0 0;
89
91
  border-style: solid;
90
- border-image-source: linear-gradient(58.51deg, #FFFFFF 35.88%, #F4F5F6 85.8%);
92
+ border-image-source: linear-gradient(58.51deg, var(--background-color-main) 35.88%, var(--background-color-muted) 85.8%);
91
93
  border-image-slice: 1;
92
94
  }
93
95
  .eighth-border-gradient {
94
96
  border-width: 1px 1px 0 1px;
95
97
  border-style: solid;
96
- border-image-source: linear-gradient(0deg, #FFFFFF 0%, #F4F5F6 100%);
98
+ border-image-source: linear-gradient(0deg, var(--background-color-main) 0%, var(--background-color-muted) 100%);
97
99
  border-image-slice: 1;
98
100
  }
99
101
  .ninth-border-gradient {
100
102
  border-width: 1px 0 0 1px;
101
103
  border-style: solid;
102
- border-image-source: linear-gradient(41.08deg, #FFFFFF 6.74%, #F4F5F6 63.33%, #FEFEFE 91.03%);
104
+ border-image-source: linear-gradient(41.08deg, var(--background-color-main) 6.74%, var(--background-color-muted) 63.33%, var(--background-color-main) 91.03%);
103
105
  border-image-slice: 1;
104
106
  }
105
-
106
- .dark {
107
- .first-border-gradient {
108
- border-image-source: linear-gradient(180deg, #26282b 0%, #393d40 100%);
109
- }
110
- .second-border-gradient {
111
- border-image-source: linear-gradient(180deg, #26282b 0%, #393d40 100%);
112
- }
113
- .third-border-gradient {
114
- border-image-source: linear-gradient(218.84deg, #26282b 41.56%, #393d40 98.73%);
115
- }
116
- .fourth-border-gradient {
117
- border-image-source: linear-gradient(125.34deg, #26282b 7.49%, #393d40 86.67%);
118
- }
119
- .fifth-border-gradient {
120
- border-color: #393d40;
121
- }
122
- .sixth-border-gradient {
123
- border-image-source: linear-gradient(261.06deg, #26282b -6.98%, #393d40 99.74%);
124
- }
125
- .seventh-border-gradient {
126
- border-image-source: linear-gradient(58.51deg, #26282b 35.88%, #393d40 85.8%);
127
- }
128
- .eighth-border-gradient {
129
- border-image-source: linear-gradient(0deg, #26282b 0%, #393d40 100%);
130
- }
131
- .ninth-border-gradient {
132
- border-image-source: linear-gradient(41.08deg, #26282b 6.74%, #393d40 63.33%, #26282b 91.03%);
133
- }
134
- }
135
107
  </style>
136
-
@@ -10,7 +10,7 @@ const { t } = useI18n()
10
10
  <nuxt-link
11
11
  :to="url"
12
12
  target="_blank"
13
- class="flex cursor-pointer items-center justify-center gap-1 rounded-sm bg-blue-700/10 px-3 py-2 text-blue-700 transition-colors duration-150 hover:bg-blue-700/15 dark:bg-blue-400/10 dark:text-blue-300 dark:hover:bg-blue-400/20"
13
+ class="flex cursor-pointer items-center justify-center gap-1 rounded-sm bg-brand-subtle px-3 py-2 text-brand transition-colors duration-150 hover:bg-blue-subtle"
14
14
  >
15
15
  <span class="text-body-md">{{ t('header.oldVersion') }}</span>
16
16
  <a-icon-arrow-bottom-left-on-square class="rotate-180" />
@@ -15,7 +15,7 @@
15
15
  <label
16
16
  v-if="viewType === 'checkbox'"
17
17
  :for="name"
18
- class="flex items-center text-deepblue-900 dark:text-gray-200"
18
+ class="flex items-center text-primary"
19
19
  :class="twMerge(textSizeOptions[size], disabled ? 'cursor-default': 'cursor-pointer', labelClass)"
20
20
  >
21
21
  <span
@@ -27,17 +27,17 @@
27
27
  <a-icon-checkbox-intermediate
28
28
  v-if="isIntermediate"
29
29
  class="w-full h-full"
30
- :class="twMerge('text-blue-700 dark:text-blue-500', intermediateCheckboxClass)"
30
+ :class="twMerge('text-brand', intermediateCheckboxClass)"
31
31
  />
32
32
  <a-icon-checkbox-active
33
33
  v-else-if="isChecked"
34
34
  class="w-full h-full"
35
- :class="twMerge('text-blue-700 dark:text-blue-500', checkboxClass)"
35
+ :class="twMerge('text-brand', checkboxClass)"
36
36
  />
37
37
  <a-icon-checkbox-empty
38
38
  v-else
39
39
  class="w-full h-full"
40
- :class="twMerge('text-deepblue-900 dark:text-gray-200', emptyCheckboxClass)"
40
+ :class="twMerge('text-primary', emptyCheckboxClass)"
41
41
  />
42
42
  </span>
43
43
  <span
@@ -49,8 +49,8 @@
49
49
  <label
50
50
  v-else-if="viewType === 'chip'"
51
51
  :for="name"
52
- class="px-[10px] py-[3.5px] text-deepblue-900 border border-gray-500 rounded-full dark:text-gray-200 text-xs"
53
- :class="[{'bg-blue-700 text-white dark:bg-blue-500 dark:border-blue-500 dark:text-gray-900 font-medium': isChecked}]"
52
+ class="px-[10px] py-[3.5px] text-primary border border-strong rounded-full text-body-sm"
53
+ :class="[{ 'bg-action-primary text-action-primary-fg font-medium': isChecked }]"
54
54
  >
55
55
  <slot/>
56
56
  </label>
@@ -134,8 +134,8 @@ const sizeOptions = {
134
134
  sm: 'min-w-4 min-h-4 max-w-4 max-h-4'
135
135
  }
136
136
  const textSizeOptions = {
137
- lg: 'text-sm gap-2.5',
138
- sm: 'text-xs gap-2'
137
+ lg: 'text-body-md gap-2.5',
138
+ sm: 'text-body-sm gap-2'
139
139
  }
140
140
 
141
141
 
@@ -87,12 +87,12 @@ const squareClass = computed(() => {
87
87
  ]
88
88
 
89
89
  if (isActive.value) {
90
- base.push('border-transparent bg-blue-700 text-white dark:bg-blue-500')
90
+ base.push('border-transparent bg-action-primary text-action-primary-fg')
91
91
  }
92
92
  else {
93
- base.push('border-gray-300 bg-white text-transparent dark:border-gray-600 dark:bg-white/[0.04]')
93
+ base.push('border-strong bg-main text-transparent')
94
94
  if (!props.disabled) {
95
- base.push('group-hover/cb:border-blue-500 dark:group-hover/cb:border-blue-400')
95
+ base.push('group-hover/cb:border-brand')
96
96
  }
97
97
  }
98
98
 
@@ -105,23 +105,23 @@ const chipClass = computed(() => {
105
105
  ]
106
106
 
107
107
  if (isActive.value) {
108
- base.push('border-transparent bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900')
108
+ base.push('border-transparent bg-action-primary text-action-primary-fg')
109
109
  }
110
110
  else {
111
- base.push('border-gray-300 bg-transparent text-gray-700 dark:border-gray-600 dark:text-gray-300')
111
+ base.push('border-strong bg-transparent text-quaternary')
112
112
  if (!props.disabled) {
113
- base.push('group-hover/cb:border-gray-400 dark:group-hover/cb:border-gray-500')
113
+ base.push('group-hover/cb:border-strong')
114
114
  }
115
115
  }
116
116
 
117
117
  return base.join(' ')
118
118
  })
119
119
 
120
- const labelClass = computed(() => `${textClass.value} leading-none text-deepblue-900 dark:text-gray-200`)
120
+ const labelClass = computed(() => `${textClass.value} leading-none text-primary`)
121
121
 
122
122
  const rootClass = computed(() => {
123
123
  const base = [
124
- 'checkbox-v2 group/cb inline-flex items-center select-none rounded transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-gray-900',
124
+ 'checkbox-v2 group/cb inline-flex items-center select-none rounded transition focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand-500 focus-visible:ring-offset-2',
125
125
  ]
126
126
 
127
127
  if (props.view === 'checkbox') {
@@ -82,12 +82,12 @@ onMounted(() => {
82
82
  </script>
83
83
 
84
84
  <template>
85
- <section class="flex flex-col gap-4 bg-white p-8 dark:bg-gray-900 sm:gap-8 sm:rounded-[20px]">
85
+ <section class="flex flex-col gap-4 bg-main p-8 sm:gap-8 sm:rounded-[20px]">
86
86
  <div class="flex flex-col gap-2">
87
- <h2 class="heading-01">
87
+ <h2 class="text-display-sm">
88
88
  {{ formType === 'feedback' ? t('forms.feedback.title') : t('forms.demo.t') }}
89
89
  </h2>
90
- <p class="body-400 text-gray-600 dark:text-gray-200">
90
+ <p class="text-body-md text-quaternary">
91
91
  {{ formType === 'feedback' ? t('forms.feedback.subtitle') : t('forms.demo.st') }}
92
92
  </p>
93
93
  </div>
@@ -100,7 +100,7 @@ onMounted(() => {
100
100
  v-if="formType === 'feedback'"
101
101
  v-model="mail"
102
102
  type="email"
103
- color-classes="bg-gray-50 dark:bg-gray-800"
103
+ color-classes="bg-muted"
104
104
  :error="feedbackValidation.getError('mail')"
105
105
  :label="t('forms.feedback.email')"
106
106
  required
@@ -120,7 +120,7 @@ onMounted(() => {
120
120
  v-model="phone"
121
121
  v-maska
122
122
  type="tel"
123
- color-classes="bg-gray-50 dark:bg-gray-800"
123
+ color-classes="bg-muted"
124
124
  :error="formType === 'feedback' ? feedbackValidation.getError('phone') : getDemoValidation.getError('phone')"
125
125
  :label="t('forms.feedback.phone')"
126
126
  data-maska="8 (###) ###-##-##"
@@ -136,7 +136,7 @@ onMounted(() => {
136
136
  :label="t('forms.feedback.comment')"
137
137
  :resizeable="false"
138
138
  class="min-h-[72px]"
139
- color-classes="bg-gray-50 dark:bg-gray-800"
139
+ color-classes="bg-muted"
140
140
  required
141
141
  size="sm"
142
142
  :disabled="isLoading"
@@ -159,10 +159,10 @@ onMounted(() => {
159
159
  >
160
160
  <div class="flex flex-col items-center gap-4 px-6 py-4">
161
161
  <a-ill-mail />
162
- <h4 class="text-[18px] font-semibold">
162
+ <h4 class="text-h4">
163
163
  {{ t('forms.feedback.modalTitle') }}
164
164
  </h4>
165
- <p class="body-400 max-[352xp]">
165
+ <p class="text-body-md max-[352xp]">
166
166
  {{ t('forms.feedback.modalSubtitle') }}
167
167
  </p>
168
168
  <a-button-v2
@@ -70,9 +70,10 @@ onMounted(() => {
70
70
 
71
71
  <template>
72
72
  <section class="feedback-v2">
73
- <div class="grid grid-cols-1 items-center gap-8 rounded-[28px] border border-blue-100 bg-gradient-to-br from-blue-50 to-blue-100 p-4 md:gap-10 md:p-12 lg:grid-cols-2">
73
+ <!-- градиент промо-карточки — осознанный литерал (§05 аудита), но флипается в тёмной теме -->
74
+ <div class="grid grid-cols-1 items-center gap-8 rounded-[28px] border border-default bg-linear-to-br from-[#f0f8ff] via-[#eef4ff] to-[#f0f8ff] p-4 md:gap-10 md:p-12 lg:grid-cols-2 dark:from-[#1a2231] dark:via-[#15191f] dark:to-[#121316]">
74
75
  <div>
75
- <div class="mb-4 inline-flex items-center gap-2 rounded-full border border-blue-100 bg-white px-3 py-1.5 text-body-md text-blue-600">
76
+ <div class="mb-4 inline-flex items-center gap-2 rounded-full border border-default bg-main px-3 py-1.5 text-body-md text-brand">
76
77
  <message-square class="size-3.5" />
77
78
  {{ t('forms.feedback.value') }}
78
79
  </div>
@@ -80,7 +81,7 @@ onMounted(() => {
80
81
  <h2 class="text-h2 md:text-display-sm">
81
82
  {{ title ?? t('forms.feedback.title') }}
82
83
  </h2>
83
- <p class="mt-3 max-w-[448px] text-body-sm md:text-body-lg text-gray-600">
84
+ <p class="mt-3 max-w-[448px] text-body-sm text-quaternary md:text-body-lg">
84
85
  {{ subtitle ?? t('forms.feedback.subtitle') }}
85
86
  </p>
86
87
 
@@ -89,7 +90,7 @@ onMounted(() => {
89
90
  </div>
90
91
  </div>
91
92
 
92
- <div class="rounded-[24px] border border-gray-200 bg-white p-4 md:p-7 shadow-xl shadow-blue-600/10">
93
+ <div class="rounded-[24px] border border-default bg-main p-4 shadow-xl shadow-brand-600/10 md:p-7">
93
94
  <form
94
95
  class="flex flex-col gap-3"
95
96
  @submit.prevent="send"
@@ -146,9 +147,9 @@ onMounted(() => {
146
147
  >
147
148
  {{ t('forms.feedback.send') }}
148
149
  </a-button-v2>
149
- <p class="mt-1 text-center text-body-sm text-gray-400">
150
+ <p class="mt-1 text-center text-body-sm text-disabled">
150
151
  {{ t('forms.feedback.consent') }}
151
- <span class="text-blue-600">
152
+ <span class="text-brand">
152
153
  {{ t('forms.feedback.consentAccent') }}
153
154
  </span>
154
155
  </p>
@@ -164,10 +165,10 @@ onMounted(() => {
164
165
  >
165
166
  <div class="flex flex-col items-center gap-4 px-6 py-4">
166
167
  <a-ill-mail />
167
- <h4 class="text-[18px] font-semibold">
168
+ <h4 class="text-h4">
168
169
  {{ t('forms.feedback.modalTitle') }}
169
170
  </h4>
170
- <p class="body-400 max-[352xp]">
171
+ <p class="max-w-[352px] text-center text-body-md">
171
172
  {{ t('forms.feedback.modalSubtitle') }}
172
173
  </p>
173
174
  <a-button-v2
@@ -43,12 +43,13 @@ interface Props {
43
43
  disabled?: boolean
44
44
  readonly?: boolean
45
45
  clearable?: boolean
46
- size?: 'sm' | 'md'
46
+ size?: 'sm' | 'md' | 'lg'
47
47
  error?: string | string[]
48
48
  startIcon?: Component
49
+ startIconClass?: string
49
50
  endIcon?: Component
50
51
  loading?: boolean
51
- variant?: 'default' | 'gray' | 'blue'
52
+ variant?: 'default' | 'gray' | 'blue' | 'canvas'
52
53
  mask?: string
53
54
  inputId?: string
54
55
  autocomplete?: string
@@ -255,13 +256,19 @@ defineExpose({ focus, blur, inputRef })
255
256
 
256
257
  const layoutClass = computed(() => {
257
258
  if (!props.label) {
259
+ if (props.size === 'lg') return 'h-11 py-2'
258
260
  return props.size === 'md' ? 'h-10 py-1.5' : 'h-9 py-1.5'
259
261
  }
262
+ if (props.size === 'lg') return 'h-11 pt-4 pb-1'
260
263
  return props.size === 'md' ? 'h-10 pt-4 pb-0.5' : 'h-9 pt-3 pb-0.5'
261
264
  })
262
265
 
266
+ /* Компенсация асимметричных паддингов поля с label: иконки возвращаются к
267
+ визуальному центру. Величина = (pt + контент/2) - h/2:
268
+ sm 12+11-18=5, md 16+11-20=7, lg 16+12-22=6. */
263
269
  const iconOffsetClass = computed(() => {
264
270
  if (!props.label) return ''
271
+ if (props.size === 'lg') return '-translate-y-[6px]'
265
272
  return props.size === 'md' ? '-translate-y-[7px]' : '-translate-y-[5px]'
266
273
  })
267
274
 
@@ -283,15 +290,20 @@ const inputAttrs = computed(() => {
283
290
 
284
291
  const fieldClass = computed(() => {
285
292
  if (props.disabled) {
286
- return 'border-gray-200 bg-gray-100/70 dark:border-gray-700 dark:bg-white/[0.03]'
293
+ return 'border-default bg-badge/70'
287
294
  }
288
295
  if (props.variant === 'gray') {
289
- return 'border-transparent bg-gray-50 dark:border-transparent dark:bg-white/[0.04]'
296
+ /* по макету ДС-2026 у залитого поля бордер видимый, а не прозрачный */
297
+ return 'border-default bg-muted'
290
298
  }
291
299
  if (props.variant === 'blue') {
292
- return 'border-blue-200 bg-blue-50 dark:border-blue-900/50 dark:bg-blue-900/20'
300
+ return 'border-brand-200 bg-brand-subtle'
293
301
  }
294
- return 'border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900'
302
+ if (props.variant === 'canvas') {
303
+ /* «утопленная» зона ДС + hero-поиск лендинга: bg-canvas глубже bg-muted в дарке */
304
+ return 'border-default bg-canvas'
305
+ }
306
+ return 'border-default bg-main'
295
307
  })
296
308
 
297
309
  function rowDisplay(item: T): unknown {
@@ -308,7 +320,7 @@ function rowDisplay(item: T): unknown {
308
320
  >
309
321
  <div
310
322
  ref="fieldRef"
311
- class="input-v2__field text-deepblue-900 relative flex w-full cursor-text items-center gap-2 rounded-[10px] border border-solid transition-colors duration-200 focus-within:border-blue-600 focus-within:ring-2 focus-within:ring-blue-600/20 hover:border-blue-500 dark:text-gray-200 dark:focus-within:border-blue-400 dark:focus-within:ring-blue-400/20 dark:hover:border-blue-400"
323
+ class="input-v2__field relative flex w-full cursor-text items-center gap-2 rounded-10 border border-solid text-primary transition-colors duration-200 focus-within:border-focus focus-within:ring-2 focus-within:ring-brand-500/20 hover:border-brand"
312
324
  :class="[
313
325
  layoutClass,
314
326
  fieldClass,
@@ -321,21 +333,23 @@ function rowDisplay(item: T): unknown {
321
333
  <label
322
334
  v-if="label"
323
335
  :for="inputId"
324
- class="input-v2__label pointer-events-none absolute top-1/2 max-w-[calc(100%-32px)] truncate text-gray-500 dark:text-gray-400"
336
+ class="input-v2__label pointer-events-none absolute top-1/2 max-w-[calc(100%-32px)] truncate text-secondary"
325
337
  :data-size="size"
326
338
  :class="[
327
339
  startIcon ? 'left-9' : 'left-4',
328
340
  { 'input-v2__label--floated': isLabelFloated },
329
341
  ]"
330
342
  >
331
- {{ label }}<span v-if="required" class="text-red-500 dark:text-red-400">&nbsp;*</span>
343
+ {{ label }}<span v-if="required" class="text-danger">&nbsp;*</span>
332
344
  </label>
333
345
 
346
+ <!-- startIconClass ЗАМЕНЯЕТ дефолтные размер+цвет, а не дописывается:
347
+ конфликт одинаковых утилит решается порядком в stylesheet, не в class -->
334
348
  <component
335
349
  :is="startIcon"
336
350
  v-if="startIcon"
337
- class="size-4 shrink-0 text-gray-400 dark:text-gray-500"
338
- :class="iconOffsetClass"
351
+ class="shrink-0"
352
+ :class="[startIconClass || 'size-4 text-icon-disabled', iconOffsetClass]"
339
353
  />
340
354
 
341
355
  <input
@@ -348,7 +362,7 @@ function rowDisplay(item: T): unknown {
348
362
  :readonly="readonly"
349
363
  :autocomplete="autocomplete"
350
364
  :tabindex="disabled ? -1 : 0"
351
- class="input-v2__input text-deepblue-900 w-full min-w-0 bg-transparent leading-tight outline-none placeholder:text-gray-500 disabled:cursor-not-allowed dark:text-gray-200 dark:placeholder:text-gray-400"
365
+ class="input-v2__input w-full min-w-0 bg-transparent leading-tight text-primary outline-hidden placeholder:text-secondary disabled:cursor-not-allowed"
352
366
  v-bind="inputAttrs"
353
367
  @input="onInput"
354
368
  @focus="onFocus"
@@ -358,7 +372,7 @@ function rowDisplay(item: T): unknown {
358
372
 
359
373
  <a-icon-loader-circle
360
374
  v-if="loading"
361
- class="size-4 shrink-0 animate-spin text-gray-400 dark:text-gray-500"
375
+ class="size-4 shrink-0 animate-spin text-icon-disabled"
362
376
  :class="iconOffsetClass"
363
377
  />
364
378
 
@@ -366,18 +380,18 @@ function rowDisplay(item: T): unknown {
366
380
  v-else-if="showClearButton"
367
381
  type="button"
368
382
  tabindex="-1"
369
- class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-gray-100 dark:hover:bg-white/[0.08] dark:hover:text-gray-300"
383
+ class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-badge"
370
384
  :class="iconOffsetClass"
371
385
  @mousedown.prevent
372
386
  @click.stop="onClear"
373
387
  >
374
- <a-icon-x-mark class="!m-0 size-3.5" />
388
+ <a-icon-x-mark class="m-0! size-3.5" />
375
389
  </button>
376
390
 
377
391
  <component
378
392
  :is="endIcon"
379
393
  v-else-if="endIcon"
380
- class="size-4 shrink-0 text-gray-400 dark:text-gray-500"
394
+ class="size-4 shrink-0 text-icon-disabled"
381
395
  :class="iconOffsetClass"
382
396
  />
383
397
 
@@ -395,7 +409,7 @@ function rowDisplay(item: T): unknown {
395
409
  <div
396
410
  v-if="isDropdownOpen"
397
411
  ref="floatingRef"
398
- class="input-v2__dropdown z-[10000] flex flex-col gap-2 rounded-lg border border-gray-200 bg-white p-1.5 shadow-lg shadow-gray-900/10 dark:border-gray-700 dark:bg-gray-900 dark:shadow-black/30"
412
+ class="input-v2__dropdown z-10000 flex flex-col gap-2 rounded-xl border border-default bg-main p-1.5 shadow-[0_24px_50px_-24px] shadow-brand-500/50"
399
413
  :style="{
400
414
  position: strategy,
401
415
  left: x != null ? `${x}px` : '',
@@ -406,7 +420,7 @@ function rowDisplay(item: T): unknown {
406
420
  <li
407
421
  v-for="(item, idx) in autocompleteList"
408
422
  :key="idx"
409
- class="cursor-pointer rounded-md px-3 py-2 text-body-md transition-colors duration-100 hover:bg-gray-50 dark:hover:bg-gray-800/60"
423
+ class="cursor-pointer rounded-lg px-3.5 py-2.5 text-body-md transition-colors duration-100 hover:bg-brand-subtle"
410
424
  :class="{ 'input-v2__option--active': currentItemIndex === idx }"
411
425
  @mousedown.prevent="onSelectOption(item)"
412
426
  @touchend.prevent="onTouchEndOption(item)"
@@ -430,7 +444,7 @@ function rowDisplay(item: T): unknown {
430
444
  leave-from-class="input-v2__error-leave-from"
431
445
  leave-to-class="input-v2__error-leave-to"
432
446
  >
433
- <p v-if="hasError" class="mt-1 flex flex-col text-body-sm text-red-500 dark:text-red-400">
447
+ <p v-if="hasError" class="mt-1 flex flex-col text-body-sm text-danger">
434
448
  <span v-for="(err, idx) in errorMessages" :key="idx">{{ err }}</span>
435
449
  </p>
436
450
  </transition>
@@ -439,7 +453,7 @@ function rowDisplay(item: T): unknown {
439
453
 
440
454
  <style scoped>
441
455
  .input-v2__field--error {
442
- border-color: theme('colors.red.500');
456
+ border-color: var(--border-color-danger);
443
457
  }
444
458
 
445
459
  .input-v2__field--disabled {
@@ -471,6 +485,10 @@ function rowDisplay(item: T): unknown {
471
485
  transform: translateY(-14px);
472
486
  }
473
487
 
488
+ .input-v2__label--floated[data-size="lg"] {
489
+ transform: translateY(-19px);
490
+ }
491
+
474
492
  .input-v2__dropdown-enter-active,
475
493
  .input-v2__dropdown-leave-active {
476
494
  transition:
@@ -505,11 +523,7 @@ function rowDisplay(item: T): unknown {
505
523
  }
506
524
 
507
525
  .input-v2__option--active {
508
- background-color: theme('colors.blue.50');
509
- }
510
-
511
- :is(.dark) .input-v2__option--active {
512
- background-color: rgb(30 64 175 / 0.18);
526
+ background-color: var(--background-color-brand-subtle);
513
527
  }
514
528
 
515
529
  .input-v2__error-enter-active {
@@ -34,7 +34,7 @@ const props = withDefaults(defineProps<Props>(), {
34
34
  v-bind.prop="props"
35
35
  >
36
36
  <template #endButton>
37
- <div class="pointer-events-click absolute right-1 top-1/2 translate-y-[-50%] transform fill-gray-500 text-gray-500 hover:opacity-80 disabled:pointer-events-none">
37
+ <div class="pointer-events-click absolute right-1 top-1/2 translate-y-[-50%] transform fill-icon-secondary text-secondary hover:opacity-80 disabled:pointer-events-none">
38
38
  <a-button
39
39
  :class="size === 'sm' ? 'h-6 pt-px' : 'h-8'"
40
40
  :loading="loading"