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,583 @@
1
+ @custom-variant dark (&:where(.dark, .dark *));
2
+
3
+ @source inline("{,hover:}bg-{brand,blue,green,yellow,red,orange,purple}-{400,500,600,700,900}/{10,20}");
4
+ /* Класс инжектится в рантайме composables/highlight.ts — сканеру не виден. */
5
+ @source inline("bg-yellow-subtle");
6
+
7
+ @theme static {
8
+ --font-sans: "Open Sans", sans-serif;
9
+
10
+ /* Точка, с которой лендинги ДС-2026 расширяют контейнер (макет: min-[1920px]) */
11
+ --breakpoint-3xl: 1920px;
12
+ /* Дефолтная шкала v4 кончается на --container-7xl = 80rem = 1280px */
13
+ --container-8xl: 96rem;
14
+
15
+ --radius-*: initial;
16
+ --radius: 4px;
17
+ --radius-xs: 4px;
18
+ --radius-sm: 6px;
19
+ --radius-md: 8px;
20
+ --radius-10: 10px;
21
+ --radius-14: 14px;
22
+ --radius-lg: 12px;
23
+ --radius-xl: 16px;
24
+ --radius-2xl: 20px;
25
+ --radius-3xl: 24px;
26
+
27
+ --text-display-hero: 60px;
28
+ --text-display-hero--line-height: 72px;
29
+ --text-display-hero--letter-spacing: -0.025em;
30
+ --text-display-hero--font-weight: 700;
31
+
32
+ --text-display-lg: 40px;
33
+ --text-display-lg--line-height: 48px;
34
+ --text-display-lg--letter-spacing: -0.02em;
35
+ --text-display-lg--font-weight: 700;
36
+
37
+ --text-display-sm: 32px;
38
+ --text-display-sm--line-height: 40px;
39
+ --text-display-sm--letter-spacing: -0.015em;
40
+ --text-display-sm--font-weight: 700;
41
+
42
+ --text-h1: 28px;
43
+ --text-h1--line-height: 36px;
44
+ --text-h1--letter-spacing: -0.02em;
45
+ --text-h1--font-weight: 700;
46
+
47
+ --text-h2: 24px;
48
+ --text-h2--line-height: 32px;
49
+ --text-h2--letter-spacing: -0.015em;
50
+ --text-h2--font-weight: 700;
51
+
52
+ --text-h3: 20px;
53
+ --text-h3--line-height: 28px;
54
+ --text-h3--letter-spacing: -0.01em;
55
+ --text-h3--font-weight: 600;
56
+
57
+ --text-h4: 18px;
58
+ --text-h4--line-height: 28px;
59
+ --text-h4--letter-spacing: -0.005em;
60
+ --text-h4--font-weight: 600;
61
+
62
+ --text-h5: 16px;
63
+ --text-h5--line-height: 24px;
64
+ --text-h5--font-weight: 600;
65
+
66
+ --text-body-lg: 16px;
67
+ --text-body-lg--line-height: 24px;
68
+ --text-body-lg--font-weight: 400;
69
+
70
+ --text-body-lg-medium: 16px;
71
+ --text-body-lg-medium--line-height: 24px;
72
+ --text-body-lg-medium--font-weight: 500;
73
+
74
+ --text-body-lg-strong: 16px;
75
+ --text-body-lg-strong--line-height: 24px;
76
+ --text-body-lg-strong--font-weight: 600;
77
+
78
+ --text-body-md: 14px;
79
+ --text-body-md--line-height: 20px;
80
+ --text-body-md--font-weight: 400;
81
+
82
+ --text-body-md-medium: 14px;
83
+ --text-body-md-medium--line-height: 20px;
84
+ --text-body-md-medium--font-weight: 500;
85
+
86
+ --text-body-md-strong: 14px;
87
+ --text-body-md-strong--line-height: 20px;
88
+ --text-body-md-strong--font-weight: 600;
89
+
90
+ --text-body-sm: 12px;
91
+ --text-body-sm--line-height: 16px;
92
+ --text-body-sm--font-weight: 400;
93
+
94
+ --text-body-sm-medium: 12px;
95
+ --text-body-sm-medium--line-height: 16px;
96
+ --text-body-sm-medium--font-weight: 500;
97
+
98
+ --text-overline: 12px;
99
+ --text-overline--line-height: 16px;
100
+ --text-overline--letter-spacing: 0.02em;
101
+ --text-overline--font-weight: 600;
102
+
103
+ --text-overline-medium: 12px;
104
+ --text-overline-medium--line-height: 16px;
105
+ --text-overline-medium--letter-spacing: 0.02em;
106
+ --text-overline-medium--font-weight: 500;
107
+
108
+ /* @generated-colors:start (сгенерировано из Figma-токенов, генератор в update-plan.md / git show 8862721) */
109
+ /* brand */
110
+ --color-brand-50: #F0F8FF;
111
+ --color-brand-100: #DBEFFF;
112
+ --color-brand-200: #B3DCFF;
113
+ --color-brand-300: #75C0FF;
114
+ --color-brand-400: #3DA6FF;
115
+ --color-brand-500: #068DFF;
116
+ --color-brand-600: #007AE0;
117
+ --color-brand-700: #0066BD;
118
+ --color-brand-800: #005399;
119
+ --color-brand-900: #00427A;
120
+ /* base */
121
+ --color-base-bg-dark: #161617;
122
+ --color-base-bg-light: #FFFFFF;
123
+ --color-black: #000000;
124
+ --color-white: #FFFFFF;
125
+ /* surface */
126
+ --color-surface-dark: #161617;
127
+ --color-surface-dark-2: #393D40;
128
+ /* chart */
129
+ --color-chart-amber: #F5A623;
130
+ --color-chart-blue: #0070EB;
131
+ --color-chart-green: #6BBD6E;
132
+ --color-chart-red: #FB2C36;
133
+ /* secondary */
134
+ --color-secondary-50: #F2F5F8;
135
+ --color-secondary-100: #DEE6ED;
136
+ --color-secondary-200: #C0CFDD;
137
+ --color-secondary-300: #92ABC4;
138
+ --color-secondary-400: #527598;
139
+ --color-secondary-500: #2C3E50;
140
+ --color-secondary-600: #253646;
141
+ --color-secondary-700: #1E2B38;
142
+ --color-secondary-800: #17212B;
143
+ --color-secondary-900: #10171E;
144
+ /* @generated-colors:end */
145
+
146
+ /* @generated-semantic-colors:start (светлые значения; тёмные — в @layer base .dark ниже)
147
+ Источник: Figma-артефакт «Семантические цвета» (таблица токенов — в git-истории: git show 69039ec:docs/color-migration.md).
148
+ Старый генератор (git show 8862721) к этому блоку неприменим: регенерация = дамп таблицы артефакта.
149
+ Именование: text/* → --text-color-*, bg/* → --background-color-*, border/* → --border-color-*,
150
+ action/* → --color-action-*, icon/* → --color-icon-* (последние два доступны из любых цветовых утилит). */
151
+ /* text */
152
+ --text-color-primary: #2C3E50;
153
+ --text-color-secondary: #99A1AF;
154
+ --text-color-tertiary: #FFFFFF;
155
+ --text-color-quaternary: #6A7282;
156
+ --text-color-disabled: #A1A1A1;
157
+ --text-color-inverted: #FFFFFF;
158
+ --text-color-brand: #068DFF;
159
+ --text-color-link: #068DFF;
160
+ --text-color-link-hover: #007AE0;
161
+ --text-color-success: #00A63E;
162
+ --text-color-warning: #FE9A00;
163
+ --text-color-danger: #FB2C36;
164
+ /* bg */
165
+ --background-color-main: #FFFFFF;
166
+ --background-color-canvas: #F3F4F6;
167
+ --background-color-subtle: #F9FAFB33;
168
+ --background-color-muted: #F3F4F6;
169
+ --background-color-overlay: #10182880;
170
+ --background-color-brand: #068DFF;
171
+ --background-color-brand-subtle: #F0F8FF;
172
+ --background-color-success: #00A63E;
173
+ --background-color-success-subtle: #DCFCE7;
174
+ --background-color-warning: #FE9A00;
175
+ --background-color-warning-subtle: #FEF3C6;
176
+ --background-color-danger: #FB2C36;
177
+ --background-color-danger-subtle: #FEF2F2;
178
+ --background-color-badge: #E5E7EB;
179
+ --background-color-red-subtle: #FEF2F2;
180
+ --background-color-orange-subtle: #FFEDD4;
181
+ --background-color-amber-subtle: #FEF3C6;
182
+ --background-color-yellow-subtle: #FEF9C2;
183
+ --background-color-lime-subtle: #ECFCCA;
184
+ --background-color-green-subtle: #DCFCE7;
185
+ --background-color-emerald-subtle: #D0FAE5;
186
+ --background-color-teal-subtle: #CBFBF1;
187
+ --background-color-cyan-subtle: #CEFAFE;
188
+ --background-color-sky-subtle: #DFF2FE;
189
+ --background-color-blue-subtle: #DBEFFF;
190
+ --background-color-indigo-subtle: #E0E7FF;
191
+ --background-color-violet-subtle: #EDE9FE;
192
+ --background-color-purple-subtle: #F3E8FF;
193
+ --background-color-fuchsia-subtle: #FAE8FF;
194
+ --background-color-pink-subtle: #FCE7F3;
195
+ --background-color-rose-subtle: #FFE4E6;
196
+ /* border */
197
+ --border-color-default: #E5E7EB;
198
+ --border-color-strong: #D1D5DC;
199
+ --border-color-focus: #068DFF;
200
+ --border-color-brand: #068DFF;
201
+ --border-color-info: #2B7FFF;
202
+ --border-color-success: #00A63E;
203
+ --border-color-warning: #E17100;
204
+ --border-color-danger: #FB2C36;
205
+ --border-color-red: #FFA2A2;
206
+ --border-color-orange: #FF6900;
207
+ --border-color-amber: #FE9A00;
208
+ --border-color-yellow: #F0B100;
209
+ --border-color-lime: #7CCF00;
210
+ --border-color-green: #00C950;
211
+ --border-color-emerald: #00BC7D;
212
+ --border-color-teal: #00BBA7;
213
+ --border-color-cyan: #00B8DB;
214
+ --border-color-sky: #00A6F4;
215
+ --border-color-indigo: #615FFF;
216
+ --border-color-violet: #8E51FF;
217
+ --border-color-purple: #AD46FF;
218
+ --border-color-fuchsia: #E12AFB;
219
+ --border-color-pink: #F6339A;
220
+ --border-color-rose: #FF2056;
221
+ /* action */
222
+ --color-action-primary: #068DFF;
223
+ --color-action-primary-hover: #007AE0;
224
+ --color-action-primary-active: #0066BD;
225
+ --color-action-primary-fg: #FFFFFF;
226
+ --color-action-secondary: #FFFFFF;
227
+ --color-action-secondary-hover: #F9FAFB;
228
+ --color-action-secondary-fg: #2C3E50;
229
+ --color-action-danger: #E7000B;
230
+ --color-action-danger-hover: #C10007;
231
+ --color-action-danger-fg: #FFFFFF;
232
+ --color-action-disabled: #E5E7EB;
233
+ --color-action-disabled-fg: #99A1AF;
234
+ /* icon */
235
+ --color-icon-default: #6A7282;
236
+ --color-icon-strong: #2C3E50;
237
+ --color-icon-secondary: #99A1AF;
238
+ --color-icon-disabled: #D1D5DC;
239
+ --color-icon-inverted: #FFFFFF;
240
+ --color-icon-brand: #068DFF;
241
+ --color-icon-on-brand: #FFFFFF;
242
+ --color-icon-white: #FFFFFF;
243
+ --color-icon-success: #00A63E;
244
+ --color-icon-warning: #FFB900;
245
+ --color-icon-danger: #E7000B;
246
+ --color-icon-red: #E7000B;
247
+ --color-icon-orange: #FF6900;
248
+ --color-icon-amber: #FE9A00;
249
+ --color-icon-yellow: #F0B100;
250
+ --color-icon-lime: #7CCF00;
251
+ --color-icon-green: #00A63E;
252
+ --color-icon-emerald: #00BC7D;
253
+ --color-icon-teal: #00BBA7;
254
+ --color-icon-cyan: #00B8DB;
255
+ --color-icon-sky: #00A6F4;
256
+ --color-icon-blue: #2B7FFF;
257
+ --color-icon-indigo: #615FFF;
258
+ --color-icon-violet: #8E51FF;
259
+ --color-icon-purple: #AD46FF;
260
+ --color-icon-fuchsia: #C800DE;
261
+ --color-icon-pink: #E60076;
262
+ --color-icon-rose: #FF2056;
263
+ /* хелперы вне артефакта (= bg/Main): замена бывшего флипа fill-white/stroke-white в иллюстрациях */
264
+ --fill-main: #FFFFFF;
265
+ --stroke-main: #FFFFFF;
266
+ /* @generated-semantic-colors:end */
267
+ }
268
+
269
+ /* Тёмная тема: переопределяются только СЕМАНТИЧЕСКИЕ токены (text-primary, bg-main,
270
+ border-default, action/icon-*); примитивные шкалы (gray-*, red-*, brand-* и т.д.)
271
+ константны в обеих темах. Утилиты компилируются в var(--…-*), поэтому семантические
272
+ классы переключаются сами; цветовые dark:-классы легальны для краевых случаев.
273
+ @layer base идёт после @layer theme → побеждает :root. */
274
+ @layer base {
275
+ :root {
276
+ color-scheme: light;
277
+ }
278
+
279
+ .dark {
280
+ color-scheme: dark;
281
+ /* @generated-semantic-colors-dark:start (тёмные значения семантических токенов, 1:1 с артефактом —
282
+ включая тема-константные, чтобы регенерация из Figma была тупым дампом таблицы) */
283
+ /* text */
284
+ --text-color-primary: #FAFAFA;
285
+ --text-color-secondary: #99A1AF;
286
+ --text-color-tertiary: #FFFFFF;
287
+ --text-color-quaternary: #99A1AF;
288
+ --text-color-disabled: #D4D4D4;
289
+ --text-color-inverted: #161617;
290
+ --text-color-brand: #3DA6FF;
291
+ --text-color-link: #3DA6FF;
292
+ --text-color-link-hover: #B3DCFF;
293
+ --text-color-success: #00C950;
294
+ --text-color-warning: #FFB900;
295
+ --text-color-danger: #FF6467;
296
+ /* bg */
297
+ --background-color-main: #161617;
298
+ --background-color-canvas: #0F0F10;
299
+ --background-color-subtle: #171717;
300
+ --background-color-muted: #1F1F21;
301
+ --background-color-overlay: #00000099;
302
+ --background-color-brand: #068DFF;
303
+ --background-color-brand-subtle: #068DFF1A;
304
+ --background-color-success: #008236;
305
+ --background-color-success-subtle: #032E15;
306
+ --background-color-warning: #E17100;
307
+ --background-color-warning-subtle: #461901;
308
+ --background-color-danger: #FF6467;
309
+ --background-color-danger-subtle: #4608094D;
310
+ --background-color-badge: #4A5565;
311
+ --background-color-red-subtle: #82181A;
312
+ --background-color-orange-subtle: #7E2A0C;
313
+ --background-color-amber-subtle: #461901;
314
+ --background-color-yellow-subtle: #432004;
315
+ --background-color-lime-subtle: #192E03;
316
+ --background-color-green-subtle: #032E15;
317
+ --background-color-emerald-subtle: #002C22;
318
+ --background-color-teal-subtle: #022F2E;
319
+ --background-color-cyan-subtle: #053345;
320
+ --background-color-sky-subtle: #052F4A;
321
+ --background-color-blue-subtle: #00427A;
322
+ --background-color-indigo-subtle: #1E1A4D;
323
+ --background-color-violet-subtle: #2F0D68;
324
+ --background-color-purple-subtle: #3C0366;
325
+ --background-color-fuchsia-subtle: #4B004F;
326
+ --background-color-pink-subtle: #510424;
327
+ --background-color-rose-subtle: #4D0218;
328
+ /* border */
329
+ --border-color-default: #404040;
330
+ --border-color-strong: #6A7282;
331
+ --border-color-focus: #3DA6FF;
332
+ --border-color-brand: #3DA6FF;
333
+ --border-color-info: #51A2FF;
334
+ --border-color-success: #05DF72;
335
+ --border-color-warning: #FFB900;
336
+ --border-color-danger: #FF6467;
337
+ --border-color-red: #FF6467;
338
+ --border-color-orange: #FF8904;
339
+ --border-color-amber: #FFB900;
340
+ --border-color-yellow: #FDC700;
341
+ --border-color-lime: #9AE600;
342
+ --border-color-green: #05DF72;
343
+ --border-color-emerald: #00D492;
344
+ --border-color-teal: #00D5BE;
345
+ --border-color-cyan: #00D3F2;
346
+ --border-color-sky: #00BCFF;
347
+ --border-color-indigo: #7C86FF;
348
+ --border-color-violet: #A684FF;
349
+ --border-color-purple: #C27AFF;
350
+ --border-color-fuchsia: #ED6AFF;
351
+ --border-color-pink: #FB64B6;
352
+ --border-color-rose: #FF637E;
353
+ /* action */
354
+ --color-action-primary: #068DFF;
355
+ --color-action-primary-hover: #007AE0;
356
+ --color-action-primary-active: #0066BD;
357
+ --color-action-primary-fg: #FFFFFF;
358
+ --color-action-secondary: #262626;
359
+ --color-action-secondary-hover: #404040;
360
+ --color-action-secondary-fg: #FFFFFF;
361
+ --color-action-danger: #FF6467;
362
+ --color-action-danger-hover: #82181A;
363
+ --color-action-danger-fg: #FFFFFF;
364
+ --color-action-disabled: #404040;
365
+ --color-action-disabled-fg: #6A7282;
366
+ /* icon */
367
+ --color-icon-default: #D1D5DC;
368
+ --color-icon-strong: #F9FAFB;
369
+ --color-icon-secondary: #99A1AF;
370
+ --color-icon-disabled: #4A5565;
371
+ --color-icon-inverted: #2C3E50;
372
+ --color-icon-brand: #3DA6FF;
373
+ --color-icon-on-brand: #FFFFFF;
374
+ --color-icon-white: #000000;
375
+ --color-icon-success: #00C950;
376
+ --color-icon-warning: #FFB900;
377
+ --color-icon-danger: #FF6467;
378
+ --color-icon-red: #FF6467;
379
+ --color-icon-orange: #FF8904;
380
+ --color-icon-amber: #FFB900;
381
+ --color-icon-yellow: #FDC700;
382
+ --color-icon-lime: #9AE600;
383
+ --color-icon-green: #00C950;
384
+ --color-icon-emerald: #00D492;
385
+ --color-icon-teal: #00D5BE;
386
+ --color-icon-cyan: #00D3F2;
387
+ --color-icon-sky: #00BCFF;
388
+ --color-icon-blue: #51A2FF;
389
+ --color-icon-indigo: #7C86FF;
390
+ --color-icon-violet: #A684FF;
391
+ --color-icon-purple: #C27AFF;
392
+ --color-icon-fuchsia: #ED6AFF;
393
+ --color-icon-pink: #FB64B6;
394
+ --color-icon-rose: #FF637E;
395
+ /* хелперы (= bg/Main) */
396
+ --fill-main: #161617;
397
+ --stroke-main: #161617;
398
+ /* @generated-semantic-colors-dark:end */
399
+ }
400
+ }
401
+
402
+ /* Компат-слой поведения v3 (официальный upgrade guide) */
403
+ @layer base {
404
+ /* В v4 дефолтный border-color стал currentColor; возвращаем прежний вид (= gray-200 в лайте) */
405
+ *,
406
+ ::after,
407
+ ::before,
408
+ ::backdrop,
409
+ ::file-selector-button {
410
+ border-color: var(--border-color-default, currentColor);
411
+ }
412
+
413
+ /* Плейсхолдеры: токена placeholder в ДС нет, ближайший — text/disabled
414
+ (осознанная светлая дельта #D1D5DC → #A1A1A1, см. git show 69039ec:docs/color-migration.md) */
415
+ input::placeholder,
416
+ textarea::placeholder {
417
+ color: var(--text-color-disabled);
418
+ }
419
+
420
+ /* В v4 у кнопок cursor: default */
421
+ button:not(:disabled),
422
+ [role="button"]:not(:disabled) {
423
+ cursor: pointer;
424
+ }
425
+ }
426
+
427
+ /* Легаси-типографика (Figma DESIGN-SYSTEM-NEW, до ДС-2026) */
428
+ @layer components {
429
+ .a-container {
430
+ @apply container mx-auto px-4 2xl:px-16;
431
+ }
432
+
433
+ /* Headings */
434
+ .heading-01 {
435
+ @apply font-bold text-[2rem] leading-10;
436
+ }
437
+
438
+ .heading-02 {
439
+ @apply font-bold text-2xl leading-8;
440
+ }
441
+
442
+ .heading-03 {
443
+ @apply font-semibold text-xl leading-6;
444
+ }
445
+
446
+ .heading-04 {
447
+ @apply font-semibold text-base leading-5;
448
+ }
449
+
450
+ .heading-05 {
451
+ @apply font-semibold text-sm leading-5;
452
+ }
453
+
454
+ /* Body */
455
+ .body-400 {
456
+ @apply font-normal text-sm leading-5;
457
+ }
458
+
459
+ .body-500 {
460
+ @apply font-medium text-sm leading-5;
461
+ }
462
+
463
+ .body-600 {
464
+ @apply font-semibold text-sm leading-5;
465
+ }
466
+
467
+ .body-s-400 {
468
+ @apply font-normal text-sm leading-4;
469
+ }
470
+
471
+ .body-s-500 {
472
+ @apply font-medium text-sm leading-4;
473
+ }
474
+
475
+ /* Caption */
476
+ .caption-400 {
477
+ @apply font-normal text-[0.625rem] leading-4;
478
+ }
479
+
480
+ .caption-500 {
481
+ @apply font-medium text-[0.625rem] leading-4;
482
+ }
483
+
484
+ .caption-700 {
485
+ @apply font-bold text-[0.625rem] leading-4;
486
+ }
487
+
488
+ /* Form */
489
+ .label-400 {
490
+ @apply font-normal text-sm leading-5;
491
+ }
492
+
493
+ .label-600 {
494
+ @apply font-semibold text-sm leading-5;
495
+ }
496
+
497
+ .label-s-400 {
498
+ @apply font-normal text-xs leading-4;
499
+ }
500
+
501
+ .label-s-700 {
502
+ @apply font-bold text-xs leading-4;
503
+ }
504
+
505
+ .optional-i-700 {
506
+ @apply font-bold italic text-sm leading-5;
507
+ }
508
+
509
+ .placeholder-300 {
510
+ @apply font-light text-sm leading-5;
511
+ }
512
+
513
+ .description-400 {
514
+ @apply font-normal text-xs leading-5;
515
+ }
516
+
517
+ /* Link */
518
+ .link-400 {
519
+ @apply font-normal text-sm leading-5;
520
+ color: var(--text-color-link);
521
+ }
522
+
523
+ .link-stroke-400 {
524
+ @apply font-normal text-sm leading-5;
525
+ color: var(--text-color-link);
526
+ }
527
+
528
+ .link-s-400 {
529
+ @apply font-normal text-sm leading-4;
530
+ color: var(--text-color-link);
531
+ }
532
+
533
+ .link-s-stroke-400 {
534
+ @apply font-normal text-sm leading-4;
535
+ color: var(--text-color-link);
536
+ }
537
+
538
+ .link-small-800 {
539
+ @apply font-bold text-sm leading-4;
540
+ color: var(--text-color-link);
541
+ }
542
+
543
+ /* Special Styles */
544
+ .display-80-700 {
545
+ @apply font-bold text-[5rem] leading-[6.5rem];
546
+ }
547
+
548
+ .display-80-400 {
549
+ @apply font-normal text-[5rem] leading-[6.5rem];
550
+ }
551
+
552
+ .display-60-700 {
553
+ @apply font-bold text-[3.75rem] leading-[4.750rem];
554
+ }
555
+
556
+ .display-60-400 {
557
+ @apply font-normal text-[3.75rem] leading-[4.750rem];
558
+ }
559
+
560
+ .display-48-700 {
561
+ @apply font-bold text-[3rem] leading-[4rem];
562
+ }
563
+
564
+ .display-48-400 {
565
+ @apply font-normal text-[3rem] leading-[4rem];
566
+ }
567
+
568
+ .numbers-60-700 {
569
+ @apply font-bold text-[3.75rem] leading-[3.5rem];
570
+ }
571
+
572
+ .numbers-60-400 {
573
+ @apply font-normal text-[3.75rem] leading-[3.5rem];
574
+ }
575
+
576
+ .numbers-40-700 {
577
+ @apply font-bold text-[2.5rem] leading-[3.375rem];
578
+ }
579
+
580
+ .numbers-40-400 {
581
+ @apply font-normal text-[2.5rem] leading-[3.375rem];
582
+ }
583
+ }