@central-design-system/components 4.0.0-alpha.3 → 4.0.0-alpha.4

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 (441) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/MIGRATION.md +1 -1
  3. package/dist/browser/chunks/cdsLegacy-VUz8RzDN.js +120 -0
  4. package/dist/browser/chunks/useIcons.component-Df4MSurB.js +102 -0
  5. package/dist/browser/entry.js +31811 -0
  6. package/dist/browser/iconsets/carbon.js +155 -0
  7. package/dist/browser/iconsets/cds.js +149 -0
  8. package/dist/browser/iconsets/cdsLegacy.js +6 -0
  9. package/dist/browser/iconsets/lucide.js +156 -0
  10. package/dist/browser/iconsets/mdi.js +154 -0
  11. package/dist/browser/iconsets/phosphor.js +155 -0
  12. package/dist/browser/iconsets/remix.js +155 -0
  13. package/dist/cjs/entry.js +10 -10
  14. package/dist/es/entry.js +131 -122
  15. package/dist/es/entry.js.map +1 -1
  16. package/dist/es/src/cds.js +5 -5
  17. package/dist/es/src/components/CdsApp/CdsApp.vue_vue_type_script_setup_true_lang.js +1 -1
  18. package/dist/es/src/components/CdsApp/api/CdsApp.props.js +1 -1
  19. package/dist/es/src/components/CdsAvatar/CdsAvatar.vue_vue_type_script_setup_true_lang.js +1 -1
  20. package/dist/es/src/components/CdsAvatar/api/CdsAvatar.props.js +1 -1
  21. package/dist/es/src/components/CdsBadge/CdsBadge.vue_vue_type_script_setup_true_lang.js +1 -1
  22. package/dist/es/src/components/CdsBadge/api/CdsBadge.props.js +1 -1
  23. package/dist/es/src/components/CdsButton/CdsButton.vue_vue_type_script_setup_true_lang.js +1 -1
  24. package/dist/es/src/components/CdsButton/api/CdsButton.props.js +1 -1
  25. package/dist/es/src/components/CdsButtonGroup/CdsButtonGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  26. package/dist/es/src/components/CdsButtonGroup/api/CdsButtonGroup.props.js +1 -1
  27. package/dist/es/src/components/CdsCard/CdsCard.vue_vue_type_script_setup_true_lang.js +1 -1
  28. package/dist/es/src/components/CdsCard/CdsCardGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  29. package/dist/es/src/components/CdsCard/api/CdsCard.props.js +1 -1
  30. package/dist/es/src/components/CdsDatePicker/CdsDatePicker.vue_vue_type_script_setup_true_lang.js +1 -1
  31. package/dist/es/src/components/CdsDatePicker/api/CdsDatePicker.props.js +1 -1
  32. package/dist/es/src/components/CdsDivider/CdsDivider.vue_vue_type_script_setup_true_lang.js +1 -1
  33. package/dist/es/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.js +2 -2
  34. package/dist/es/src/components/CdsDrawer/api/CdsDrawer.props.js +1 -1
  35. package/dist/es/src/components/CdsEmptyState/CdsEmptyState.vue_vue_type_script_setup_true_lang.js +2 -2
  36. package/dist/es/src/components/CdsEmptyState/api/CdsEmptyState.props.js +1 -1
  37. package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanels.vue_vue_type_script_setup_true_lang.js +1 -1
  38. package/dist/es/src/components/CdsExpandablePanel/api/CdsExpandablePanel.props.js +1 -1
  39. package/dist/es/src/components/CdsField/CdsField.vue_vue_type_script_setup_true_lang.js +1 -1
  40. package/dist/es/src/components/CdsField/api/CdsField.props.js +1 -1
  41. package/dist/es/src/components/CdsFooter/CdsFooter.vue_vue_type_script_setup_true_lang.js +2 -2
  42. package/dist/es/src/components/CdsFooter/api/CdsFooter.props.js +1 -1
  43. package/dist/es/src/components/CdsFunctionalButton/api/CdsFunctionalButton.props.js +1 -1
  44. package/dist/es/src/components/CdsGrid/CdsCol.vue_vue_type_script_setup_true_lang.js +1 -1
  45. package/dist/es/src/components/CdsHeader/CdsHeader.vue_vue_type_script_setup_true_lang.js +1 -1
  46. package/dist/es/src/components/CdsHeader/api/CdsHeader.props.js +1 -1
  47. package/dist/es/src/components/CdsIcon/CdsIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  48. package/dist/es/src/components/CdsIcon/api/CdsIcon.props.js +1 -1
  49. package/dist/es/src/components/CdsImage/CdsImage.vue_vue_type_script_setup_true_lang.js +1 -1
  50. package/dist/es/src/components/CdsImage/api/CdsImage.props.js +1 -1
  51. package/dist/es/src/components/CdsInput/CdsInput.vue_vue_type_script_setup_true_lang.js +1 -1
  52. package/dist/es/src/components/CdsInput/api/CdsInput.props.js +1 -1
  53. package/dist/es/src/components/CdsLayout/CdsLayout.vue_vue_type_script_setup_true_lang.js +2 -2
  54. package/dist/es/src/components/CdsLayout/api/CdsLayout.props.js +1 -1
  55. package/dist/es/src/components/CdsLink/CdsLink.vue_vue_type_script_setup_true_lang.js +1 -1
  56. package/dist/es/src/components/CdsLink/api/CdsLink.props.js +1 -1
  57. package/dist/es/src/components/CdsList/CdsList.vue_vue_type_script_setup_true_lang.js +2 -2
  58. package/dist/es/src/components/CdsList/CdsListGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  59. package/dist/es/src/components/CdsList/CdsListItem.vue_vue_type_script_setup_true_lang.js +2 -2
  60. package/dist/es/src/components/CdsList/CdsListSubheader.vue_vue_type_script_setup_true_lang.js +1 -1
  61. package/dist/es/src/components/CdsList/api/CdsList.constants.js +4 -4
  62. package/dist/es/src/components/CdsList/api/CdsList.props.js +3 -3
  63. package/dist/es/src/components/CdsList/index.js +1 -1
  64. package/dist/es/src/components/CdsLoader/CdsLoader.vue_vue_type_script_setup_true_lang.js +1 -1
  65. package/dist/es/src/components/CdsNotification/CdsNotification.vue_vue_type_script_setup_true_lang.js +1 -1
  66. package/dist/es/src/components/CdsNotification/api/CdsNotification.props.js +1 -1
  67. package/dist/es/src/components/CdsOtpInput/CdsOtpInput.vue_vue_type_script_setup_true_lang.js +1 -1
  68. package/dist/es/src/components/CdsOtpInput/api/CdsOtpInput.props.js +1 -1
  69. package/dist/es/src/components/CdsOverlay/CdsOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
  70. package/dist/es/src/components/CdsOverlay/api/CdsOverlay.props.js +1 -1
  71. package/dist/es/src/components/CdsPage/CdsPage.vue_vue_type_script_setup_true_lang.js +1 -1
  72. package/dist/es/src/components/CdsPagination/CdsPagination.vue_vue_type_script_setup_true_lang.js +2 -2
  73. package/dist/es/src/components/CdsPagination/api/CdsPagination.props.js +1 -1
  74. package/dist/es/src/components/CdsProgressBar/CdsProgressBar.vue_vue_type_script_setup_true_lang.js +1 -1
  75. package/dist/es/src/components/CdsProgressBar/api/CdsProgressBar.props.js +1 -1
  76. package/dist/es/src/components/CdsProgressCircle/CdsProgressCircle.vue_vue_type_script_setup_true_lang.js +1 -1
  77. package/dist/es/src/components/CdsProgressCircle/api/CdsProgressCircle.props.js +1 -1
  78. package/dist/es/src/components/CdsSkeletonLoader/CdsSkeletonLoader.vue_vue_type_script_setup_true_lang.js +1 -1
  79. package/dist/es/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.props.js +1 -1
  80. package/dist/es/src/components/CdsSlideGroup/CdsSlideGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  81. package/dist/es/src/components/CdsSlideGroup/api/CdsSlideGroup.props.js +1 -1
  82. package/dist/es/src/components/CdsSlideView/api/CdsSlideView.props.js +1 -1
  83. package/dist/es/src/components/CdsStages/CdsStages.vue_vue_type_script_setup_true_lang.js +1 -1
  84. package/dist/es/src/components/CdsStages/api/CdsStages.props.js +1 -1
  85. package/dist/es/src/components/CdsStatus/CdsStatus.vue_vue_type_script_setup_true_lang.js +1 -1
  86. package/dist/es/src/components/CdsStatus/api/CdsStatus.props.js +1 -1
  87. package/dist/es/src/components/CdsSteps/api/CdsSteps.props.js +1 -1
  88. package/dist/es/src/components/CdsSurface/CdsSurface.vue_vue_type_script_setup_true_lang.js +1 -1
  89. package/dist/es/src/components/CdsSurface/api/CdsSurface.props.js +1 -1
  90. package/dist/es/src/components/CdsTable/api/CdsTable.props.js +1 -1
  91. package/dist/es/src/components/CdsTable/components/TableProvider.js +2 -2
  92. package/dist/es/src/components/CdsTag/CdsTag.vue_vue_type_script_setup_true_lang.js +1 -1
  93. package/dist/es/src/components/CdsTagGroup/CdsTagGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  94. package/dist/es/src/components/CdsTagGroup/api/CdsTagGroup.props.js +1 -1
  95. package/dist/es/src/components/CdsTimePicker/CdsTimePicker.vue_vue_type_script_setup_true_lang.js +1 -1
  96. package/dist/es/src/components/CdsTimePicker/api/CdsTimePicker.props.js +1 -1
  97. package/dist/es/src/components/CdsToast/CdsToast.vue_vue_type_script_setup_true_lang.js +1 -1
  98. package/dist/es/src/components/CdsToolbar/CdsToolbar.vue_vue_type_script_setup_true_lang.js +1 -1
  99. package/dist/es/src/components/CdsToolbar/api/CdsToolbar.props.js +1 -1
  100. package/dist/es/src/components/CdsTree/CdsTree.vue_vue_type_script_setup_true_lang.js +1 -1
  101. package/dist/es/src/components/CdsTree/api/CdsTree.props.js +1 -1
  102. package/dist/es/src/components/CdsUploader/CdsUploader.vue_vue_type_script_setup_true_lang.js +1 -1
  103. package/dist/es/src/composables/useDisabled/index.js +1 -1
  104. package/dist/es/src/composables/useDisabled/index.js.map +1 -1
  105. package/dist/es/src/composables/useHydration/useHydration.js +1 -1
  106. package/dist/es/src/composables/useLayout/useLayout.js +1 -1
  107. package/dist/es/src/composables/useLoader/index.js +1 -1
  108. package/dist/es/src/composables/useLoader/index.js.map +1 -1
  109. package/dist/es/src/composables/useLocation/index.js +1 -1
  110. package/dist/es/src/composables/useLocation/index.js.map +1 -1
  111. package/dist/es/src/composables/useRouter/index.js +1 -1
  112. package/dist/es/src/composables/useRouter/index.js.map +1 -1
  113. package/dist/es/src/composables/useTheme/internal/useTheme.constants.js +13 -2
  114. package/dist/es/src/composables/useTheme/internal/useTheme.constants.js.map +1 -1
  115. package/dist/es/src/composables/useVirtual/useVirtual.js +1 -1
  116. package/dist/es/src/core/useDefaults.js +3 -1
  117. package/dist/es/src/locales/adapters/cdsLocaleAdapter.js +2 -1
  118. package/dist/es/src/locales/adapters/cdsLocaleAdapter.js.map +1 -1
  119. package/dist/es/src/locales/en.js +70 -0
  120. package/dist/es/src/locales/en.js.map +1 -0
  121. package/dist/es/src/locales/index.js +18 -0
  122. package/dist/es/src/locales/index.js.map +1 -0
  123. package/dist/es/src/themes/index.js +4 -0
  124. package/dist/es/src/themes/index.js.map +1 -1
  125. package/dist/es/src/themes/lumaDark.js +20 -0
  126. package/dist/es/src/themes/lumaDark.js.map +1 -0
  127. package/dist/es/src/themes/lumaLight.js +20 -0
  128. package/dist/es/src/themes/lumaLight.js.map +1 -0
  129. package/dist/esm-node/entry.mjs +131 -122
  130. package/dist/esm-node/src/assets/icons/cdsLegacy.mjs +1 -1
  131. package/dist/esm-node/src/cds.mjs +6 -6
  132. package/dist/esm-node/src/components/CdsApp/CdsApp.vue_vue_type_script_setup_true_lang.mjs +2 -2
  133. package/dist/esm-node/src/components/CdsApp/api/CdsApp.props.mjs +1 -1
  134. package/dist/esm-node/src/components/CdsAutocomplete/CdsAutocomplete.vue_vue_type_script_setup_true_lang.mjs +3 -3
  135. package/dist/esm-node/src/components/CdsAutocomplete/api/CdsAutocomplete.props.mjs +1 -1
  136. package/dist/esm-node/src/components/CdsAvatar/CdsAvatar.vue_vue_type_script_setup_true_lang.mjs +3 -3
  137. package/dist/esm-node/src/components/CdsAvatar/api/CdsAvatar.props.mjs +1 -1
  138. package/dist/esm-node/src/components/CdsBadge/CdsBadge.vue_vue_type_script_setup_true_lang.mjs +3 -3
  139. package/dist/esm-node/src/components/CdsBadge/api/CdsBadge.props.mjs +2 -2
  140. package/dist/esm-node/src/components/CdsBreadcrumbs/CdsBreadcrumbs.vue_vue_type_script_setup_true_lang.mjs +1 -1
  141. package/dist/esm-node/src/components/CdsBreadcrumbs/CdsBreadcrumbsDivider.vue_vue_type_script_setup_true_lang.mjs +1 -1
  142. package/dist/esm-node/src/components/CdsBreadcrumbs/CdsBreadcrumbsItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  143. package/dist/esm-node/src/components/CdsBreadcrumbs/api/CdsBreadcrumbs.props.mjs +1 -1
  144. package/dist/esm-node/src/components/CdsButton/CdsButton.vue_vue_type_script_setup_true_lang.mjs +2 -2
  145. package/dist/esm-node/src/components/CdsButton/api/CdsButton.props.mjs +2 -2
  146. package/dist/esm-node/src/components/CdsButtonGroup/CdsButtonGroup.vue_vue_type_script_setup_true_lang.mjs +2 -2
  147. package/dist/esm-node/src/components/CdsButtonGroup/api/CdsButtonGroup.props.mjs +2 -2
  148. package/dist/esm-node/src/components/CdsButtonToggle/CdsButtonToggle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  149. package/dist/esm-node/src/components/CdsButtonToggle/api/CdsButtonToggle.props.mjs +1 -1
  150. package/dist/esm-node/src/components/CdsCard/CdsCard.vue_vue_type_script_setup_true_lang.mjs +4 -4
  151. package/dist/esm-node/src/components/CdsCard/CdsCardActions.vue_vue_type_script_setup_true_lang.mjs +1 -1
  152. package/dist/esm-node/src/components/CdsCard/CdsCardDivider.vue_vue_type_script_setup_true_lang.mjs +2 -2
  153. package/dist/esm-node/src/components/CdsCard/CdsCardGroup.vue_vue_type_script_setup_true_lang.mjs +3 -3
  154. package/dist/esm-node/src/components/CdsCard/CdsCardItem.vue_vue_type_script_setup_true_lang.mjs +2 -2
  155. package/dist/esm-node/src/components/CdsCard/CdsCardSubtitle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  156. package/dist/esm-node/src/components/CdsCard/CdsCardText.vue_vue_type_script_setup_true_lang.mjs +1 -1
  157. package/dist/esm-node/src/components/CdsCard/CdsCardTitle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  158. package/dist/esm-node/src/components/CdsCard/api/CdsCard.constants.mjs +9 -9
  159. package/dist/esm-node/src/components/CdsCard/api/CdsCard.props.mjs +2 -2
  160. package/dist/esm-node/src/components/CdsCard/index.mjs +1 -1
  161. package/dist/esm-node/src/components/CdsCarousel/CdsCarousel.vue_vue_type_script_setup_true_lang.mjs +2 -2
  162. package/dist/esm-node/src/components/CdsCarousel/CdsCarouselItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  163. package/dist/esm-node/src/components/CdsCheckbox/CdsCheckbox.vue_vue_type_script_setup_true_lang.mjs +2 -2
  164. package/dist/esm-node/src/components/CdsCheckbox/api/CdsCheckbox.props.mjs +1 -1
  165. package/dist/esm-node/src/components/CdsCheckboxButton/CdsCheckboxButton.vue_vue_type_script_setup_true_lang.mjs +2 -2
  166. package/dist/esm-node/src/components/CdsCombobox/CdsCombobox.vue_vue_type_script_setup_true_lang.mjs +3 -3
  167. package/dist/esm-node/src/components/CdsCombobox/api/CdsCombobox.props.mjs +1 -1
  168. package/dist/esm-node/src/components/CdsCounter/CdsCounter.vue_vue_type_script_setup_true_lang.mjs +1 -1
  169. package/dist/esm-node/src/components/CdsDateInput/CdsDateInput.vue_vue_type_script_setup_true_lang.mjs +3 -3
  170. package/dist/esm-node/src/components/CdsDateInput/api/CdsDateInput.props.mjs +1 -1
  171. package/dist/esm-node/src/components/CdsDatePicker/CdsDatePicker.vue_vue_type_script_setup_true_lang.mjs +3 -3
  172. package/dist/esm-node/src/components/CdsDatePicker/api/CdsDatePicker.props.mjs +1 -1
  173. package/dist/esm-node/src/components/CdsDatePicker/composables/useCalendar.mjs +3 -3
  174. package/dist/esm-node/src/components/CdsDescription/CdsDescription.vue_vue_type_script_setup_true_lang.mjs +1 -1
  175. package/dist/esm-node/src/components/CdsDivider/CdsDivider.vue_vue_type_script_setup_true_lang.mjs +3 -3
  176. package/dist/esm-node/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.mjs +4 -4
  177. package/dist/esm-node/src/components/CdsDrawer/api/CdsDrawer.props.mjs +2 -2
  178. package/dist/esm-node/src/components/CdsEmptyState/CdsEmptyState.vue_vue_type_script_setup_true_lang.mjs +5 -5
  179. package/dist/esm-node/src/components/CdsEmptyState/api/CdsEmptyState.props.mjs +2 -2
  180. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanel.vue_vue_type_script_setup_true_lang.mjs +1 -1
  181. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanelContent.vue_vue_type_script_setup_true_lang.mjs +1 -1
  182. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanelTitle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  183. package/dist/esm-node/src/components/CdsExpandablePanel/CdsExpandablePanels.vue_vue_type_script_setup_true_lang.mjs +3 -3
  184. package/dist/esm-node/src/components/CdsExpandablePanel/api/CdsExpandablePanel.props.mjs +2 -2
  185. package/dist/esm-node/src/components/CdsField/CdsField.vue_vue_type_script_setup_true_lang.mjs +2 -2
  186. package/dist/esm-node/src/components/CdsField/api/CdsField.props.mjs +2 -2
  187. package/dist/esm-node/src/components/CdsFileInput/CdsFileInput.vue_vue_type_script_setup_true_lang.mjs +2 -2
  188. package/dist/esm-node/src/components/CdsFileInput/api/CdsFileInput.props.mjs +1 -1
  189. package/dist/esm-node/src/components/CdsFileUpload/CdsFileUpload.vue_vue_type_script_setup_true_lang.mjs +2 -2
  190. package/dist/esm-node/src/components/CdsFileUpload/CdsFileUploadDropzone.vue_vue_type_script_setup_true_lang.mjs +1 -1
  191. package/dist/esm-node/src/components/CdsFileUpload/CdsFileUploadItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  192. package/dist/esm-node/src/components/CdsFileUpload/CdsFileUploadList.vue_vue_type_script_setup_true_lang.mjs +1 -1
  193. package/dist/esm-node/src/components/CdsFileUpload/api/CdsFileUpload.props.mjs +1 -1
  194. package/dist/esm-node/src/components/CdsFooter/CdsFooter.vue_vue_type_script_setup_true_lang.mjs +4 -4
  195. package/dist/esm-node/src/components/CdsFooter/api/CdsFooter.props.mjs +2 -2
  196. package/dist/esm-node/src/components/CdsForm/CdsForm.vue_vue_type_script_setup_true_lang.mjs +1 -1
  197. package/dist/esm-node/src/components/CdsFunctionalButton/api/CdsFunctionalButton.props.mjs +2 -2
  198. package/dist/esm-node/src/components/CdsGrid/CdsCol.vue_vue_type_script_setup_true_lang.mjs +2 -2
  199. package/dist/esm-node/src/components/CdsGrid/CdsRow.vue_vue_type_script_setup_true_lang.mjs +1 -1
  200. package/dist/esm-node/src/components/CdsGrid/api/CdsGrid.props.mjs +1 -1
  201. package/dist/esm-node/src/components/CdsGrid/components/CSSGrid.mjs +1 -1
  202. package/dist/esm-node/src/components/CdsGrid/components/FlexGrid.mjs +1 -1
  203. package/dist/esm-node/src/components/CdsHeader/CdsHeader.vue_vue_type_script_setup_true_lang.mjs +3 -3
  204. package/dist/esm-node/src/components/CdsHeader/api/CdsHeader.props.mjs +2 -2
  205. package/dist/esm-node/src/components/CdsHighlight/CdsHighlight.vue_vue_type_script_setup_true_lang.mjs +1 -1
  206. package/dist/esm-node/src/components/CdsHighlight/utils/toHighlight.mjs +1 -1
  207. package/dist/esm-node/src/components/CdsIcon/CdsIcon.vue_vue_type_script_setup_true_lang.mjs +3 -3
  208. package/dist/esm-node/src/components/CdsIcon/api/CdsIcon.props.mjs +1 -1
  209. package/dist/esm-node/src/components/CdsImage/CdsImage.vue_vue_type_script_setup_true_lang.mjs +4 -4
  210. package/dist/esm-node/src/components/CdsImage/api/CdsImage.props.mjs +1 -1
  211. package/dist/esm-node/src/components/CdsInput/CdsInput.vue_vue_type_script_setup_true_lang.mjs +2 -2
  212. package/dist/esm-node/src/components/CdsInput/CdsInputIcon.mjs +1 -1
  213. package/dist/esm-node/src/components/CdsInput/api/CdsInput.props.mjs +2 -2
  214. package/dist/esm-node/src/components/CdsLabel/CdsLabel.vue_vue_type_script_setup_true_lang.mjs +1 -1
  215. package/dist/esm-node/src/components/CdsLabel/api/CdsLabel.props.mjs +1 -1
  216. package/dist/esm-node/src/components/CdsLayout/CdsLayout.vue_vue_type_script_setup_true_lang.mjs +5 -5
  217. package/dist/esm-node/src/components/CdsLayout/api/CdsLayout.props.mjs +1 -1
  218. package/dist/esm-node/src/components/CdsLayout/internal/LayoutResizeObserver.mjs +1 -1
  219. package/dist/esm-node/src/components/CdsLayout/internal/LayoutScrollObserver.mjs +2 -2
  220. package/dist/esm-node/src/components/CdsLink/CdsLink.vue_vue_type_script_setup_true_lang.mjs +2 -2
  221. package/dist/esm-node/src/components/CdsLink/api/CdsLink.props.mjs +1 -1
  222. package/dist/esm-node/src/components/CdsList/CdsList.vue_vue_type_script_setup_true_lang.mjs +3 -3
  223. package/dist/esm-node/src/components/CdsList/CdsListGroup.vue_vue_type_script_setup_true_lang.mjs +1 -1
  224. package/dist/esm-node/src/components/CdsList/CdsListItem.vue_vue_type_script_setup_true_lang.mjs +3 -3
  225. package/dist/esm-node/src/components/CdsList/CdsListItemAction.vue_vue_type_script_setup_true_lang.mjs +1 -1
  226. package/dist/esm-node/src/components/CdsList/CdsListItemDivider.vue_vue_type_script_setup_true_lang.mjs +1 -1
  227. package/dist/esm-node/src/components/CdsList/CdsListItemMedia.vue_vue_type_script_setup_true_lang.mjs +1 -1
  228. package/dist/esm-node/src/components/CdsList/CdsListSubheader.vue_vue_type_script_setup_true_lang.mjs +1 -1
  229. package/dist/esm-node/src/components/CdsList/api/CdsList.props.mjs +2 -2
  230. package/dist/esm-node/src/components/CdsList/composables/useList.mjs +1 -1
  231. package/dist/esm-node/src/components/CdsLoader/CdsLoader.vue_vue_type_script_setup_true_lang.mjs +2 -2
  232. package/dist/esm-node/src/components/CdsMain/CdsMain.vue_vue_type_script_setup_true_lang.mjs +2 -2
  233. package/dist/esm-node/src/components/CdsMenu/CdsMenu.vue_vue_type_script_setup_true_lang.mjs +2 -2
  234. package/dist/esm-node/src/components/CdsMenu/api/CdsMenu.props.mjs +1 -1
  235. package/dist/esm-node/src/components/CdsMessages/CdsMessages.vue_vue_type_script_setup_true_lang.mjs +2 -2
  236. package/dist/esm-node/src/components/CdsModal/CdsModal.vue_vue_type_script_setup_true_lang.mjs +1 -1
  237. package/dist/esm-node/src/components/CdsNotification/CdsNotification.vue_vue_type_script_setup_true_lang.mjs +2 -2
  238. package/dist/esm-node/src/components/CdsNotification/api/CdsNotification.props.mjs +2 -2
  239. package/dist/esm-node/src/components/CdsNotificationAlert/CdsNotificationAlert.vue_vue_type_script_setup_true_lang.mjs +2 -2
  240. package/dist/esm-node/src/components/CdsNotificationAlert/api/CdsNotificationAlert.props.mjs +1 -1
  241. package/dist/esm-node/src/components/CdsOtpInput/CdsOtpField.vue_vue_type_script_setup_true_lang.mjs +1 -1
  242. package/dist/esm-node/src/components/CdsOtpInput/CdsOtpGroup.vue_vue_type_script_setup_true_lang.mjs +1 -1
  243. package/dist/esm-node/src/components/CdsOtpInput/CdsOtpInput.vue_vue_type_script_setup_true_lang.mjs +3 -3
  244. package/dist/esm-node/src/components/CdsOtpInput/CdsOtpSeparator.vue_vue_type_script_setup_true_lang.mjs +1 -1
  245. package/dist/esm-node/src/components/CdsOtpInput/api/CdsOtpInput.props.mjs +1 -1
  246. package/dist/esm-node/src/components/CdsOverlay/CdsOverlay.vue_vue_type_script_setup_true_lang.mjs +6 -6
  247. package/dist/esm-node/src/components/CdsOverlay/api/CdsOverlay.props.mjs +1 -1
  248. package/dist/esm-node/src/components/CdsOverlay/components/Scrim.mjs +1 -1
  249. package/dist/esm-node/src/components/CdsOverlay/composables/useActivator.mjs +2 -2
  250. package/dist/esm-node/src/components/CdsOverlay/composables/useLocationStrategies.mjs +3 -3
  251. package/dist/esm-node/src/components/CdsOverlay/composables/useScrollStrategies.mjs +3 -3
  252. package/dist/esm-node/src/components/CdsPage/CdsPage.vue_vue_type_script_setup_true_lang.mjs +3 -3
  253. package/dist/esm-node/src/components/CdsPagination/CdsPagination.vue_vue_type_script_setup_true_lang.mjs +4 -4
  254. package/dist/esm-node/src/components/CdsPagination/api/CdsPagination.props.mjs +1 -1
  255. package/dist/esm-node/src/components/CdsProgressBar/CdsProgressBar.vue_vue_type_script_setup_true_lang.mjs +3 -3
  256. package/dist/esm-node/src/components/CdsProgressBar/api/CdsProgressBar.props.mjs +1 -1
  257. package/dist/esm-node/src/components/CdsProgressBar/composables/useChunk.mjs +1 -1
  258. package/dist/esm-node/src/components/CdsProgressCircle/CdsProgressCircle.vue_vue_type_script_setup_true_lang.mjs +4 -4
  259. package/dist/esm-node/src/components/CdsProgressCircle/api/CdsProgressCircle.props.mjs +1 -1
  260. package/dist/esm-node/src/components/CdsRadio/CdsRadio.vue_vue_type_script_setup_true_lang.mjs +1 -1
  261. package/dist/esm-node/src/components/CdsRadioGroup/CdsRadioGroup.vue_vue_type_script_setup_true_lang.mjs +2 -2
  262. package/dist/esm-node/src/components/CdsRadioGroup/api/CdsRadioGroup.props.mjs +1 -1
  263. package/dist/esm-node/src/components/CdsResponsive/CdsResponsive.vue_vue_type_script_setup_true_lang.mjs +1 -1
  264. package/dist/esm-node/src/components/CdsResponsive/composables/useAspectStyles.mjs +1 -1
  265. package/dist/esm-node/src/components/CdsSelect/CdsSelect.vue_vue_type_script_setup_true_lang.mjs +3 -3
  266. package/dist/esm-node/src/components/CdsSelect/api/CdsSelect.props.mjs +1 -1
  267. package/dist/esm-node/src/components/CdsSelectionControl/CdsSelectionControl.vue_vue_type_script_setup_true_lang.mjs +2 -2
  268. package/dist/esm-node/src/components/CdsSelectionControl/api/CdsSelectionControl.props.mjs +1 -1
  269. package/dist/esm-node/src/components/CdsSelectionControl/composables/useSelectionControl.mjs +1 -1
  270. package/dist/esm-node/src/components/CdsSelectionControlGroup/CdsSelectionControlGroup.vue_vue_type_script_setup_true_lang.mjs +1 -1
  271. package/dist/esm-node/src/components/CdsSelectionControlGroup/api/CdsSelectionControlGroup.props.mjs +1 -1
  272. package/dist/esm-node/src/components/CdsSkeletonLoader/CdsSkeletonLoader.vue_vue_type_script_setup_true_lang.mjs +3 -3
  273. package/dist/esm-node/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.props.mjs +1 -1
  274. package/dist/esm-node/src/components/CdsSlideGroup/CdsSlideGroup.vue_vue_type_script_setup_true_lang.mjs +4 -4
  275. package/dist/esm-node/src/components/CdsSlideGroup/api/CdsSlideGroup.props.mjs +1 -1
  276. package/dist/esm-node/src/components/CdsSlideView/CdsSlideView.vue_vue_type_script_setup_true_lang.mjs +4 -4
  277. package/dist/esm-node/src/components/CdsSlideView/CdsSlideViewItem.vue_vue_type_script_setup_true_lang.mjs +2 -2
  278. package/dist/esm-node/src/components/CdsSlideView/api/CdsSlideView.props.mjs +1 -1
  279. package/dist/esm-node/src/components/CdsStages/CdsStages.vue_vue_type_script_setup_true_lang.mjs +2 -2
  280. package/dist/esm-node/src/components/CdsStages/api/CdsStages.props.mjs +1 -1
  281. package/dist/esm-node/src/components/CdsStatus/CdsStatus.vue_vue_type_script_setup_true_lang.mjs +2 -2
  282. package/dist/esm-node/src/components/CdsStatus/api/CdsStatus.props.mjs +1 -1
  283. package/dist/esm-node/src/components/CdsSteps/CdsSteps.vue_vue_type_script_setup_true_lang.mjs +2 -2
  284. package/dist/esm-node/src/components/CdsSteps/CdsStepsActions.vue_vue_type_script_setup_true_lang.mjs +1 -1
  285. package/dist/esm-node/src/components/CdsSteps/CdsStepsItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  286. package/dist/esm-node/src/components/CdsSteps/CdsStepsView.vue_vue_type_script_setup_true_lang.mjs +1 -1
  287. package/dist/esm-node/src/components/CdsSteps/CdsStepsViewItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  288. package/dist/esm-node/src/components/CdsSteps/api/CdsSteps.props.mjs +2 -2
  289. package/dist/esm-node/src/components/CdsSurface/CdsSurface.vue_vue_type_script_setup_true_lang.mjs +2 -2
  290. package/dist/esm-node/src/components/CdsSurface/api/CdsSurface.props.mjs +1 -1
  291. package/dist/esm-node/src/components/CdsTable/api/CdsTable.props.mjs +1 -1
  292. package/dist/esm-node/src/components/CdsTable/components/Body/BodyRow.mjs +2 -2
  293. package/dist/esm-node/src/components/CdsTable/components/Cell/Cell.mjs +6 -6
  294. package/dist/esm-node/src/components/CdsTable/components/Drag/ColumnDragHandle.mjs +1 -1
  295. package/dist/esm-node/src/components/CdsTable/components/Drag/RowDragHandle.mjs +1 -1
  296. package/dist/esm-node/src/components/CdsTable/components/Filter/FilterDropdown.mjs +3 -3
  297. package/dist/esm-node/src/components/CdsTable/components/FixedHolder/FixedHolder.mjs +2 -2
  298. package/dist/esm-node/src/components/CdsTable/components/Header/DragHandle.mjs +4 -4
  299. package/dist/esm-node/src/components/CdsTable/components/Header/Header.mjs +1 -1
  300. package/dist/esm-node/src/components/CdsTable/components/Header/HeaderRow.mjs +1 -1
  301. package/dist/esm-node/src/components/CdsTable/components/ResizeObserver/ResizeObserver.mjs +1 -1
  302. package/dist/esm-node/src/components/CdsTable/components/StickyScrollbar/StickyScrollbar.mjs +3 -3
  303. package/dist/esm-node/src/components/CdsTable/components/Table/InternalTable.mjs +4 -4
  304. package/dist/esm-node/src/components/CdsTable/components/TableProvider.mjs +6 -6
  305. package/dist/esm-node/src/components/CdsTable/composable/columns.mjs +1 -1
  306. package/dist/esm-node/src/components/CdsTable/composable/filter.mjs +1 -1
  307. package/dist/esm-node/src/components/CdsTable/composable/frame.mjs +1 -1
  308. package/dist/esm-node/src/components/CdsTable/composable/pagination.mjs +2 -2
  309. package/dist/esm-node/src/components/CdsTable/composable/scroll.mjs +3 -3
  310. package/dist/esm-node/src/components/CdsTable/composable/selection.mjs +2 -2
  311. package/dist/esm-node/src/components/CdsTable/composable/sorter.mjs +1 -1
  312. package/dist/esm-node/src/components/CdsTable/composable/sticky.mjs +1 -1
  313. package/dist/esm-node/src/components/CdsTable/context/sticky.mjs +1 -1
  314. package/dist/esm-node/src/components/CdsTable/utils/column.mjs +1 -1
  315. package/dist/esm-node/src/components/CdsTabs/CdsTab.vue_vue_type_script_setup_true_lang.mjs +3 -3
  316. package/dist/esm-node/src/components/CdsTabs/CdsTabs.vue_vue_type_script_setup_true_lang.mjs +2 -2
  317. package/dist/esm-node/src/components/CdsTabs/CdsTabsView.vue_vue_type_script_setup_true_lang.mjs +1 -1
  318. package/dist/esm-node/src/components/CdsTabs/CdsTabsViewItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  319. package/dist/esm-node/src/components/CdsTabs/api/CdsTabs.props.mjs +1 -1
  320. package/dist/esm-node/src/components/CdsTag/CdsTag.vue_vue_type_script_setup_true_lang.mjs +2 -2
  321. package/dist/esm-node/src/components/CdsTag/api/CdsTag.props.mjs +1 -1
  322. package/dist/esm-node/src/components/CdsTagGroup/CdsTagGroup.vue_vue_type_script_setup_true_lang.mjs +2 -2
  323. package/dist/esm-node/src/components/CdsTagGroup/api/CdsTagGroup.props.mjs +2 -2
  324. package/dist/esm-node/src/components/CdsTextArea/CdsTextArea.vue_vue_type_script_setup_true_lang.mjs +2 -2
  325. package/dist/esm-node/src/components/CdsTextArea/api/CdsTextArea.props.mjs +1 -1
  326. package/dist/esm-node/src/components/CdsTextInput/CdsTextInput.vue_vue_type_script_setup_true_lang.mjs +2 -2
  327. package/dist/esm-node/src/components/CdsTextInput/api/CdsTextInput.props.mjs +1 -1
  328. package/dist/esm-node/src/components/CdsTimePicker/CdsTimePicker.vue_vue_type_script_setup_true_lang.mjs +3 -3
  329. package/dist/esm-node/src/components/CdsTimePicker/api/CdsTimePicker.props.mjs +1 -1
  330. package/dist/esm-node/src/components/CdsTimePicker/composables/useTime.mjs +1 -1
  331. package/dist/esm-node/src/components/CdsToast/CdsToast.vue_vue_type_script_setup_true_lang.mjs +3 -3
  332. package/dist/esm-node/src/components/CdsToast/api/CdsToast.props.mjs +1 -1
  333. package/dist/esm-node/src/components/CdsToastQueue/CdsToastQueue.vue_vue_type_script_setup_true_lang.mjs +1 -1
  334. package/dist/esm-node/src/components/CdsToastQueue/api/CdsToastQueue.props.mjs +1 -1
  335. package/dist/esm-node/src/components/CdsToastQueue/composables/useDocumentVisibility.mjs +1 -1
  336. package/dist/esm-node/src/components/CdsToggle/CdsToggle.vue_vue_type_script_setup_true_lang.mjs +2 -2
  337. package/dist/esm-node/src/components/CdsToggle/api/CdsToggle.props.mjs +1 -1
  338. package/dist/esm-node/src/components/CdsToolbar/CdsToolbar.vue_vue_type_script_setup_true_lang.mjs +2 -2
  339. package/dist/esm-node/src/components/CdsToolbar/CdsToolbarTitle.vue_vue_type_script_setup_true_lang.mjs +1 -1
  340. package/dist/esm-node/src/components/CdsToolbar/api/CdsToolbar.props.mjs +2 -2
  341. package/dist/esm-node/src/components/CdsTooltip/CdsTooltip.vue_vue_type_script_setup_true_lang.mjs +1 -1
  342. package/dist/esm-node/src/components/CdsTooltip/api/CdsTooltip.props.mjs +1 -1
  343. package/dist/esm-node/src/components/CdsTree/CdsTree.vue_vue_type_script_setup_true_lang.mjs +3 -3
  344. package/dist/esm-node/src/components/CdsTree/CdsTreeDirectory.vue_vue_type_script_lang.mjs +3 -3
  345. package/dist/esm-node/src/components/CdsTree/CdsTreeNode.vue_vue_type_script_lang.mjs +3 -3
  346. package/dist/esm-node/src/components/CdsTree/api/CdsTree.props.mjs +1 -1
  347. package/dist/esm-node/src/components/CdsTree/components/DropIndicator.mjs +1 -1
  348. package/dist/esm-node/src/components/CdsTree/components/NodeList.mjs +1 -1
  349. package/dist/esm-node/src/components/CdsTree/components/SwitcherIcon.mjs +2 -2
  350. package/dist/esm-node/src/components/CdsTree/components/TreeProvider.mjs +4 -4
  351. package/dist/esm-node/src/components/CdsTree/components/VirtualList/Filler.mjs +1 -1
  352. package/dist/esm-node/src/components/CdsTree/components/VirtualList/Item.mjs +1 -1
  353. package/dist/esm-node/src/components/CdsTree/components/VirtualList/ResizeObserver.mjs +1 -1
  354. package/dist/esm-node/src/components/CdsTree/components/VirtualList/ScrollBar.mjs +2 -2
  355. package/dist/esm-node/src/components/CdsTree/components/VirtualList/VirtualList.mjs +2 -2
  356. package/dist/esm-node/src/components/CdsTree/components/VirtualList/features/useFrameWheel.mjs +1 -1
  357. package/dist/esm-node/src/components/CdsTree/components/VirtualList/features/useHeights.mjs +1 -1
  358. package/dist/esm-node/src/components/CdsTree/components/VirtualList/features/useMobileTouchMove.mjs +1 -1
  359. package/dist/esm-node/src/components/CdsTree/utils/data.mjs +3 -3
  360. package/dist/esm-node/src/components/CdsUploader/CdsUploader.vue_vue_type_script_setup_true_lang.mjs +2 -2
  361. package/dist/esm-node/src/components/CdsUploader/components/AjaxUploader.vue_vue_type_script_setup_true_lang.mjs +2 -2
  362. package/dist/esm-node/src/components/CdsVirtualScroll/CdsVirtualScroll.vue_vue_type_script_setup_true_lang.mjs +4 -4
  363. package/dist/esm-node/src/components/CdsVirtualScroll/CdsVirtualScrollItem.vue_vue_type_script_setup_true_lang.mjs +1 -1
  364. package/dist/esm-node/src/composables/useColor/useColor.mjs +1 -1
  365. package/dist/esm-node/src/composables/useDatetime/useDatetime.mjs +2 -2
  366. package/dist/esm-node/src/composables/useDimensions/useDimensions.mjs +1 -1
  367. package/dist/esm-node/src/composables/useDisabled/index.mjs +1 -1
  368. package/dist/esm-node/src/composables/useDisplay/internal/useDisplay.helpers.mjs +1 -1
  369. package/dist/esm-node/src/composables/useDisplay/useDisplay.mjs +1 -1
  370. package/dist/esm-node/src/composables/useFilter/useFilter.mjs +1 -1
  371. package/dist/esm-node/src/composables/useFocus/useFocus.mjs +1 -1
  372. package/dist/esm-node/src/composables/useFocus/useFocusGroup.mjs +1 -1
  373. package/dist/esm-node/src/composables/useFocus/useFocusTrap.mjs +2 -2
  374. package/dist/esm-node/src/composables/useForm/useForm.mjs +1 -1
  375. package/dist/esm-node/src/composables/useGoTo/useGoTo.mjs +3 -3
  376. package/dist/esm-node/src/composables/useGroup/useGroup.mjs +1 -1
  377. package/dist/esm-node/src/composables/useHydration/useHydration.mjs +2 -2
  378. package/dist/esm-node/src/composables/useIcons/useIcons.mjs +1 -1
  379. package/dist/esm-node/src/composables/useItems/useItems.mjs +1 -1
  380. package/dist/esm-node/src/composables/useLayout/useLayout.mjs +2 -2
  381. package/dist/esm-node/src/composables/useLoader/index.mjs +1 -1
  382. package/dist/esm-node/src/composables/useLocation/index.mjs +1 -1
  383. package/dist/esm-node/src/composables/useLocation/useLocation.mjs +1 -1
  384. package/dist/esm-node/src/composables/useNested/strategies/activeStrategies.mjs +1 -1
  385. package/dist/esm-node/src/composables/useNested/useNested.mjs +2 -2
  386. package/dist/esm-node/src/composables/useResizeObserver/useResizeObserver.mjs +1 -1
  387. package/dist/esm-node/src/composables/useRouter/index.mjs +1 -1
  388. package/dist/esm-node/src/composables/useRouter/useRouter.mjs +1 -1
  389. package/dist/esm-node/src/composables/useSize/useSize.mjs +1 -1
  390. package/dist/esm-node/src/composables/useTeleport/useTeleport.mjs +2 -2
  391. package/dist/esm-node/src/composables/useTheme/internal/useTheme.constants.mjs +13 -2
  392. package/dist/esm-node/src/composables/useTheme/internal/useTheme.utils.mjs +2 -2
  393. package/dist/esm-node/src/composables/useTheme/useTheme.mjs +2 -2
  394. package/dist/esm-node/src/composables/useTransition/useTransition.mjs +1 -1
  395. package/dist/esm-node/src/composables/useValidation/useValidation.mjs +1 -1
  396. package/dist/esm-node/src/composables/useVirtual/useVirtual.mjs +2 -2
  397. package/dist/esm-node/src/core/defineComponent.mjs +2 -2
  398. package/dist/esm-node/src/core/getCurrentInstance.mjs +1 -1
  399. package/dist/esm-node/src/core/useDefaults.mjs +4 -2
  400. package/dist/esm-node/src/core/useProxyModel.mjs +1 -1
  401. package/dist/esm-node/src/hooks/createContext/index.mjs +1 -1
  402. package/dist/esm-node/src/hooks/createObserver/index.mjs +1 -1
  403. package/dist/esm-node/src/hooks/useBreakpoints/index.mjs +1 -1
  404. package/dist/esm-node/src/hooks/useEventListener/index.mjs +1 -1
  405. package/dist/esm-node/src/hooks/useHydration/index.mjs +1 -1
  406. package/dist/esm-node/src/hooks/useIntersectionObserver/index.mjs +1 -1
  407. package/dist/esm-node/src/hooks/useResizeObserver/index.mjs +1 -1
  408. package/dist/esm-node/src/icons.mjs +2 -2
  409. package/dist/esm-node/src/locales/adapters/cdsLocaleAdapter.mjs +3 -2
  410. package/dist/esm-node/src/locales/en.mjs +70 -0
  411. package/dist/esm-node/src/locales/index.mjs +18 -0
  412. package/dist/esm-node/src/themes/index.mjs +4 -0
  413. package/dist/esm-node/src/themes/lumaDark.mjs +20 -0
  414. package/dist/esm-node/src/themes/lumaLight.mjs +20 -0
  415. package/dist/esm-node/src/transitions/collapseTransition.mjs +1 -1
  416. package/dist/esm-node/src/transitions/createTransition.mjs +1 -1
  417. package/dist/esm-node/src/transitions/modalTransition.mjs +1 -1
  418. package/dist/esm-node/src/utils/colorsUtils/utils.mjs +2 -2
  419. package/dist/esm-node/src/utils/dom/classNames.mjs +1 -1
  420. package/dist/esm-node/src/utils/dom/console.mjs +1 -1
  421. package/dist/esm-node/src/utils/dom/dom.mjs +1 -1
  422. package/dist/iife/entry.js +11 -11
  423. package/dist/styles.css +1 -1
  424. package/dist/types/composables/useTheme/internal/useTheme.constants.d.ts +1 -1
  425. package/dist/types/entry.d.ts +134 -126
  426. package/dist/types/locales/index.d.ts +1 -0
  427. package/dist/types/themes/index.d.ts +4 -0
  428. package/dist/types/themes/lumaDark.d.ts +190 -0
  429. package/dist/types/themes/lumaLight.d.ts +190 -0
  430. package/llms/llms-components.txt +1 -1
  431. package/llms/llms-full.txt +1050 -11
  432. package/llms/llms-guides.txt +807 -10
  433. package/llms/llms-migration.txt +2 -2
  434. package/llms/llms-tokens.txt +243 -1
  435. package/llms/llms.txt +1 -1
  436. package/package.json +8 -1
  437. package/src/themes/css/lumaDark.css +184 -0
  438. package/src/themes/css/lumaLight.css +184 -0
  439. package/src/themes/index.ts +4 -0
  440. package/src/themes/lumaDark.ts +17 -0
  441. package/src/themes/lumaLight.ts +17 -0
@@ -1,6 +1,6 @@
1
1
  # Central Design System (CDS 4) — полная документация
2
2
 
3
- > Версия: 4.0.0-alpha.3
3
+ > Версия: 4.0.0-alpha.4
4
4
  > Всё сразу: гайды, токены и темы, компоненты с примерами и контрактом API, миграция с CDS 3.
5
5
  > Сгенерировано автоматически (`bun run generate:meta` → `bun run generate:llms`). Не редактировать вручную.
6
6
 
@@ -421,16 +421,18 @@ ThemeDefinition (TS) → --cds-color-* / --cds-* (CSS-переменные)
421
421
 
422
422
  ## Подключение темы
423
423
 
424
- CDS 4 поставляет шесть готовых тем:
424
+ CDS 4 поставляет восемь готовых тем:
425
425
 
426
- | Тема | Описание |
427
- | ------------- | ------------------------------------------- |
428
- | `cdsLight` | светлая тема, используется по умолчанию |
429
- | `cdsDark` | тёмная тема |
430
- | `b2bLight` | светлая тема для приложений B2B-Center |
431
- | `b2bDark` | тёмная тема для приложений B2B-Center |
432
- | `promoLight` | светлая промо-тема |
433
- | `promoDark` | тёмная промо-тема |
426
+ | Тема | Описание |
427
+ | ------------- |-----------------------------------------|
428
+ | `cdsLight` | светлая тема, используется по умолчанию |
429
+ | `cdsDark` | тёмная тема |
430
+ | `b2bLight` | светлая тема для приложений B2B-Center |
431
+ | `b2bDark` | тёмная тема для приложений B2B-Center |
432
+ | `lumaLight` | светлая тема Luma |
433
+ | `lumaDark` | тёмная тема Luma |
434
+ | `promoLight` | светлая промо-тема |
435
+ | `promoDark` | тёмная промо-тема |
434
436
 
435
437
  > По умолчанию используется `cdsLight` — подключать её не нужно.
436
438
 
@@ -1339,6 +1341,801 @@ defineRender(() => (
1339
1341
 
1340
1342
  ---
1341
1343
 
1344
+ # Глобальная конфигурация
1345
+
1346
+ CDS 4 позволяет задать значения пропсов по умолчанию — глобально, для конкретного компонента
1347
+ или только внутри определённого поддерева. Так вы один раз описываете «как выглядят кнопки
1348
+ в нашем продукте» и перестаёте дублировать одни и те же пропсы в каждом шаблоне.
1349
+
1350
+ ## Настройка
1351
+
1352
+ Значения по умолчанию задаются опцией `defaults` в `createCds`. Ключ `global` действует на все
1353
+ компоненты, ключ с именем компонента — только на него.
1354
+
1355
+ ```ts
1356
+ import { createApp } from 'vue';
1357
+ import '@central-design-system/components/styles';
1358
+ import { createCds, components, directives } from '@central-design-system/components';
1359
+
1360
+ import App from './App.vue';
1361
+
1362
+ const cds = createCds({
1363
+ components,
1364
+ directives,
1365
+ defaults: {
1366
+ global: {
1367
+ size: 'sm'
1368
+ },
1369
+ CdsButton: {
1370
+ appearance: 'secondary'
1371
+ },
1372
+ CdsTextInput: {
1373
+ hideDetails: 'auto'
1374
+ }
1375
+ }
1376
+ });
1377
+
1378
+ createApp(App).use(cds);
1379
+ ```
1380
+
1381
+ **Важно.** Пропсы в `defaults` пишутся в camelCase: `hideDetails`, а не `hide-details`.
1382
+
1383
+ Ключ компонента — это его имя из `defineOptions({ name })`, то есть `CdsButton`, `CdsTextInput`,
1384
+ `CdsCardActions` и так далее. Имена подкомпонентов (`CdsCardTitle`, `CdsListItem`) работают так же,
1385
+ как имена корневых.
1386
+
1387
+ ### Порядок разрешения значения
1388
+
1389
+ Для каждого пропса CDS берёт первое подходящее значение:
1390
+
1391
+ 1. проп, явно переданный в шаблоне;
1392
+ 2. `defaults.<ИмяКомпонента>.<проп>` из ближайшего контекста дефолтов;
1393
+ 3. `defaults.global.<проп>`;
1394
+ 4. значение по умолчанию, объявленное в самом компоненте.
1395
+
1396
+ Явно переданный проп всегда выигрывает — дефолты не могут «перебить» шаблон.
1397
+
1398
+ ### Изменение дефолтов в рантайме
1399
+
1400
+ `createCds` возвращает инстанс, у которого дефолты лежат в реактивной ссылке. Их можно менять
1401
+ на лету — все смонтированные компоненты пересчитаются:
1402
+
1403
+ ```ts
1404
+ const cds = createCds({ components, directives });
1405
+
1406
+ // например, включить компактный режим по настройке пользователя
1407
+ cds.defaults.value = {
1408
+ ...cds.defaults.value,
1409
+ global: { size: 'sm' }
1410
+ };
1411
+ ```
1412
+
1413
+ ## Контекстные дефолты
1414
+
1415
+ Дефолты можно задать для компонентов, вложенных в другой компонент. Например, чтобы все кнопки
1416
+ внутри карточки по умолчанию были вторичными:
1417
+
1418
+ ```ts
1419
+ createCds({
1420
+ defaults: {
1421
+ CdsCard: {
1422
+ CdsButton: { appearance: 'secondary' }
1423
+ }
1424
+ }
1425
+ });
1426
+ ```
1427
+
1428
+ Правило простое: ключ с заглавной буквы — это имя вложенного компонента, ключ со строчной —
1429
+ проп текущего компонента. Вложенность не ограничена одним уровнем:
1430
+
1431
+ ```ts
1432
+ createCds({
1433
+ defaults: {
1434
+ CdsCard: {
1435
+ CdsCardActions: {
1436
+ CdsButton: { appearance: 'tertiary', size: 'sm' }
1437
+ }
1438
+ }
1439
+ }
1440
+ });
1441
+ ```
1442
+
1443
+ Тот же механизм библиотека использует внутри себя, чтобы группирующие компоненты раздавали
1444
+ свои настройки детям:
1445
+
1446
+ - `CdsButtonGroup` задаёт вложенным `CdsButton` пропсы `appearance`, `color`, `baseColor`, `size`;
1447
+ - `CdsTagGroup` задаёт `CdsTag` пропсы `color`, `activeColor`, `disabled`, `filter`;
1448
+ - `CdsSelectionControlGroup` раздаёт настройки контролам, имя целевого компонента задаётся
1449
+ пропом `defaultsTarget` (`CdsCheckbox`, `CdsRadio` и т. д.);
1450
+ - так же работают `CdsTabs`, `CdsSteps`, `CdsList`, `CdsBreadcrumbs`, `CdsButtonToggle`,
1451
+ `CdsExpandablePanels`, `CdsOtpInput`.
1452
+
1453
+ Поэтому `<CdsButtonGroup size="sm">` делает маленькими все кнопки внутри — вам не нужно
1454
+ проставлять `size` каждой.
1455
+
1456
+ ## Глобальные класс и стиль
1457
+
1458
+ В дефолтах компонента, помимо пропсов, можно задать `class` и `style`. Это удобный способ
1459
+ навесить продуктовые правила на все экземпляры компонента, не трогая шаблоны:
1460
+
1461
+ ```ts
1462
+ createCds({
1463
+ defaults: {
1464
+ CdsButton: {
1465
+ class: 'my-button'
1466
+ }
1467
+ }
1468
+ });
1469
+ ```
1470
+
1471
+ Работает любое значение, которое принимает Vue, — строка, объект, массив:
1472
+
1473
+ ```ts
1474
+ createCds({
1475
+ defaults: {
1476
+ CdsButton: {
1477
+ style: [{ textTransform: 'none' }]
1478
+ }
1479
+ }
1480
+ });
1481
+ ```
1482
+
1483
+ В отличие от обычных пропсов, `class` и `style` не перезаписываются шаблоном, а **объединяются**
1484
+ с ним. То есть `<CdsButton class="mt-200">` получит и `my-button`, и `mt-200`.
1485
+
1486
+ **Важно.** `class` и `style` работают только в ключе конкретного компонента. В `global` они
1487
+ игнорируются.
1488
+
1489
+ ## Алиасы
1490
+
1491
+ Алиас — это тот же компонент, зарегистрированный под другим именем и со своими дефолтами.
1492
+ Из алиасов удобно собирать «продуктовые» варианты компонентов.
1493
+
1494
+ ```ts
1495
+ import { createCds, components, directives, CdsButton } from '@central-design-system/components';
1496
+
1497
+ const cds = createCds({
1498
+ components,
1499
+ directives,
1500
+ aliases: {
1501
+ CdsButtonPrimary: CdsButton,
1502
+ CdsButtonDanger: CdsButton
1503
+ },
1504
+ defaults: {
1505
+ CdsButtonPrimary: {
1506
+ appearance: 'primary',
1507
+ class: 'my-button--primary'
1508
+ },
1509
+ CdsButtonDanger: {
1510
+ appearance: 'primary',
1511
+ color: 'red',
1512
+ class: 'my-button--danger'
1513
+ }
1514
+ }
1515
+ });
1516
+ ```
1517
+
1518
+ Алиасы регистрируются глобально, поэтому в шаблоне их можно использовать сразу:
1519
+
1520
+ ```vue
1521
+ <template>
1522
+ <CdsButtonPrimary>Сохранить</CdsButtonPrimary>
1523
+ <CdsButtonDanger class="ml-200">Удалить</CdsButtonDanger>
1524
+ </template>
1525
+ ```
1526
+
1527
+ **Важно.** Алиас не наследует дефолты базового компонента. Если в конфигурации есть
1528
+ `defaults.CdsButton`, к `<CdsButtonPrimary>` они не применятся — дефолты ищутся по имени алиаса.
1529
+ Общие настройки для обоих выносите в `global` или дублируйте в ключе алиаса.
1530
+
1531
+ ## Дефолты для части приложения
1532
+
1533
+ Чтобы задать дефолты не глобально, а в поддереве, используйте компонент `CdsDefaultsProvider`.
1534
+ На нём же построена панель Controls в Storybook: значения из панели применяются
1535
+ к компонентам примера как дефолты.
1536
+
1537
+ ```vue
1538
+ <script setup lang="ts">
1539
+ import { CdsButton, CdsDefaultsProvider } from '@central-design-system/components';
1540
+ </script>
1541
+
1542
+ <template>
1543
+ <CdsDefaultsProvider :defaults="{ CdsButton: { appearance: 'tertiary', size: 'sm' } }">
1544
+ <CdsButton>Второстепенная маленькая кнопка</CdsButton>
1545
+ </CdsDefaultsProvider>
1546
+ </template>
1547
+ ```
1548
+
1549
+ | Проп | Тип | Назначение |
1550
+ | ---------- | ------------------- | -------------------------------------------------------------------------------------------- |
1551
+ | `defaults` | `DefaultsOptions` | Дефолты для поддерева; по умолчанию мержатся с унаследованными |
1552
+ | `scoped` | `boolean` | Не смешивать с родительскими дефолтами — действуют только заданные здесь |
1553
+ | `reset` | `number \| string` | Подняться на N уровней вверх по цепочке дефолтов |
1554
+ | `root` | `boolean \| string` | Вернуться к корневым дефолтам из `createCds`; строкой — к именованной группе внутри них |
1555
+ | `disabled` | `boolean` | Ничего не провайдить — поддерево получает дефолты родителя как есть |
1556
+
1557
+ Типичный сценарий `scoped` — «островок» в чужом окружении: вложенные группы (например,
1558
+ `CdsButtonGroup`) не должны навязывать свои настройки вашему блоку.
1559
+
1560
+ ## Свои компоненты
1561
+
1562
+ Собственные компоненты приложения тоже могут участвовать в системе дефолтов. Для этого
1563
+ пропустите пропсы через `useDefaults`:
1564
+
1565
+ ```vue
1566
+ <script setup lang="ts">
1567
+ import { useDefaults } from '@central-design-system/components';
1568
+
1569
+ const _props = defineProps<{ foo?: string }>();
1570
+ const props = useDefaults(_props, 'MyComponent');
1571
+ </script>
1572
+
1573
+ <template>
1574
+ <div>Я {{ props.foo }}</div>
1575
+ </template>
1576
+ ```
1577
+
1578
+ У `useDefaults` два аргумента, оба опциональные:
1579
+
1580
+ - `props` — объект пропсов, возвращённый `defineProps`;
1581
+ - `name` — имя компонента, по которому ищется ключ в `defaults`. Если не передать, берётся имя
1582
+ из `defineOptions({ name })`, а при его отсутствии — имя файла.
1583
+
1584
+ Теперь компонент настраивается из общей конфигурации:
1585
+
1586
+ ```ts
1587
+ createCds({
1588
+ defaults: {
1589
+ MyComponent: { foo: 'бар' }
1590
+ }
1591
+ });
1592
+ ```
1593
+
1594
+ **Важно.** В шаблоне обращайтесь к `props.foo`, а не к `foo`. `useDefaults` возвращает прокси
1595
+ над пропсами, и распакованные `defineProps` переменные его минуют:
1596
+
1597
+ ```diff
1598
+ -<div>Я {{ foo }}</div>
1599
+ +<div>Я {{ props.foo }}</div>
1600
+ ```
1601
+
1602
+ ### Вложенные дефолты в своих компонентах
1603
+
1604
+ Чтобы ваш компонент раздавал дефолты детям (как это делает `CdsButtonGroup`), достаточно
1605
+ вызвать `useDefaults()` без аргументов — вложенные ключи из его секции `defaults` уйдут в
1606
+ дочерний контекст:
1607
+
1608
+ ```vue
1609
+ <script setup lang="ts">
1610
+ import { useDefaults } from '@central-design-system/components';
1611
+
1612
+ useDefaults();
1613
+ </script>
1614
+
1615
+ <template>
1616
+ <div class="my-panel">
1617
+ <slot />
1618
+ </div>
1619
+ </template>
1620
+ ```
1621
+
1622
+ ```ts
1623
+ createCds({
1624
+ defaults: {
1625
+ MyPanel: {
1626
+ CdsButton: { appearance: 'tertiary' }
1627
+ }
1628
+ }
1629
+ });
1630
+ ```
1631
+
1632
+ Если дефолты детей зависят от пропсов компонента, используйте `provideDefaults` напрямую:
1633
+
1634
+ ```vue
1635
+ <script setup lang="ts">
1636
+ import { provideDefaults } from '@central-design-system/components';
1637
+ import { toRef } from 'vue';
1638
+
1639
+ const props = defineProps<{ size?: 'sm' | 'md' }>();
1640
+
1641
+ provideDefaults({
1642
+ CdsButton: {
1643
+ size: toRef(() => props.size)
1644
+ }
1645
+ });
1646
+ </script>
1647
+
1648
+ <template>
1649
+ <div class="my-toolbar">
1650
+ <slot />
1651
+ </div>
1652
+ </template>
1653
+ ```
1654
+
1655
+ ## Blueprint — пресет конфигурации
1656
+
1657
+ Если один и тот же набор опций нужен нескольким приложениям, вынесите его в `blueprint`:
1658
+ это обычный объект опций `createCds`, на который сверху накладывается остальная конфигурация.
1659
+
1660
+ ```ts
1661
+ import { createCds, components, directives } from '@central-design-system/components';
1662
+ import type { Blueprint } from '@central-design-system/components';
1663
+
1664
+ const productBlueprint: Blueprint = {
1665
+ theme: { defaultTheme: 'b2bLight' },
1666
+ defaults: {
1667
+ CdsButton: { appearance: 'secondary' }
1668
+ }
1669
+ };
1670
+
1671
+ const cds = createCds({
1672
+ blueprint: productBlueprint,
1673
+ components,
1674
+ directives,
1675
+ // перекрывает значение из blueprint
1676
+ defaults: {
1677
+ CdsButton: { size: 'sm' }
1678
+ }
1679
+ });
1680
+ ```
1681
+
1682
+ Опции сливаются глубоко (`mergeDeep`), поэтому в примере выше у кнопок останется
1683
+ `appearance: 'secondary'` из пресета и добавится `size: 'sm'`.
1684
+
1685
+ ---
1686
+
1687
+ # Интернационализация (i18n)
1688
+
1689
+ У компонентов CDS есть собственные тексты: «Отсутствуют данные» в селекте, подписи фильтров
1690
+ таблицы, `aria-label` кнопки закрытия, счётчик файлов. Все они идут через встроенный слой
1691
+ локализации, поэтому вы можете перевести их на другой язык, переопределить отдельную строку под
1692
+ свой продукт или переключать язык на лету — не переписывая компоненты.
1693
+
1694
+ В библиотеку встроены два словаря — русский и английский. По умолчанию активен `ru`, поэтому без
1695
+ настройки всё уже на русском.
1696
+
1697
+ ## Настройка
1698
+
1699
+ Локаль настраивается опцией `locale` в `createCds`. Переключиться на встроенный английский —
1700
+ одна строка, словари для этого передавать не нужно:
1701
+
1702
+ ```ts
1703
+ import { createApp } from 'vue';
1704
+ import '@central-design-system/components/styles';
1705
+ import { createCds, components, directives } from '@central-design-system/components';
1706
+
1707
+ import App from './App.vue';
1708
+
1709
+ const cds = createCds({
1710
+ components,
1711
+ directives,
1712
+ locale: {
1713
+ locale: 'en'
1714
+ }
1715
+ });
1716
+
1717
+ createApp(App).use(cds);
1718
+ ```
1719
+
1720
+ Языки, которых в библиотеке нет, добавляются словарём в `messages`:
1721
+
1722
+ ```ts
1723
+ import de from './locales/cds-de';
1724
+
1725
+ createCds({
1726
+ components,
1727
+ directives,
1728
+ locale: {
1729
+ locale: 'de',
1730
+ fallback: 'en',
1731
+ messages: { de }
1732
+ }
1733
+ });
1734
+ ```
1735
+
1736
+ | Опция | Тип | Назначение |
1737
+ | ------------------ | ------------------------- | ----------------------------------------------------------------------------- |
1738
+ | `locale` | `string` | Активный язык; из коробки доступны `ru` (по умолчанию) и `en` |
1739
+ | `fallback` | `string` | Язык, из которого берётся строка, если в активном её нет; по умолчанию `ru` |
1740
+ | `messages` | `LocaleMessages` | Словари дополнительных языков; словарь одноимённого встроенного заменяется целиком |
1741
+ | `decimalSeparator` | `string` | Разделитель дробной части; по умолчанию выводится из активной локали |
1742
+ | `rtl` | `Record<string, boolean>` | Карта языков с письмом справа налево (см. [RTL](#rtl)) |
1743
+ | `adapter` | `LocaleInstance` | Свой движок переводов вместо встроенного (см. [Свой адаптер](#свои-адаптер)) |
1744
+
1745
+ Встроенные словари доступны и вам — они лежат в экспорте `locales`. Берите их за основу для
1746
+ своего языка или чтобы поправить пару строк:
1747
+
1748
+ ```ts
1749
+ import { locales } from '@central-design-system/components';
1750
+
1751
+ locales.ru; // русский словарь
1752
+ locales.en; // английский словарь
1753
+ ```
1754
+
1755
+ Полный набор ключей — в разделе [Ключи сообщений](#ключи-сообщении).
1756
+
1757
+ ## Как компоненты берут текст
1758
+
1759
+ Строки компонентов — это ключи с префиксом `$cds.`, которые библиотека прогоняет через функцию
1760
+ перевода. Часть ключей объявлена значениями пропсов по умолчанию, поэтому их видно в API:
1761
+ `text` у `CdsFileUpload` — `$cds.fileUpload.browse`, `closeLabel` у `CdsNotification` — `$cds.close`,
1762
+ `noDataText` у `CdsSelect` — `$cds.noDataText`.
1763
+
1764
+ Отсюда три способа поменять текст.
1765
+
1766
+ **Сменить язык целиком** — опцией `locale`:
1767
+
1768
+ ```ts
1769
+ createCds({ locale: { locale: 'en' } });
1770
+ ```
1771
+
1772
+ **Поменять надписи во всём продукте** — словарём поверх встроенного:
1773
+
1774
+ ```ts
1775
+ import { createCds, locales } from '@central-design-system/components';
1776
+
1777
+ createCds({
1778
+ locale: {
1779
+ messages: {
1780
+ ru: { ...locales.ru, noDataText: 'Ничего не нашлось' }
1781
+ }
1782
+ }
1783
+ });
1784
+ ```
1785
+
1786
+ **Важно.** Словарь языка заменяется целиком, а не сливается по ключам. Без спреда
1787
+ `...locales.ru` в русской локали останется один ключ, а остальные строки превратятся
1788
+ в свои же ключи (`$cds.close` вместо «Закрыть»). Вложенные секции спредьте отдельно:
1789
+ `table: { ...locales.ru.table, emptyText: '…' }`.
1790
+
1791
+ **Поменять одну надпись в одном месте** — пропсом:
1792
+
1793
+ ```vue
1794
+ <CdsSelect :items="items" no-data-text="Подходящих поставщиков нет" />
1795
+ ```
1796
+
1797
+ Тот же проп можно задать значением по умолчанию для всех экземпляров компонента —
1798
+ см. глобальную конфигурацию:
1799
+
1800
+ ```ts
1801
+ createCds({
1802
+ defaults: {
1803
+ CdsSelect: { noDataText: 'Ничего не нашлось' }
1804
+ }
1805
+ });
1806
+ ```
1807
+
1808
+ Функция перевода принимает и обычный текст: строка без префикса `$cds.` возвращается как есть,
1809
+ подставляя параметры. Так пропсы с локализуемым значением работают одинаково и с ключом,
1810
+ и с готовой фразой.
1811
+
1812
+ Если ключа нет ни в активной локали, ни в `fallback`, компонент покажет сам ключ, а в dev-режиме
1813
+ в консоли появится предупреждение `[CDS: useLocale] Translation key … not found`.
1814
+
1815
+ ## Смена языка в рантайме
1816
+
1817
+ `createCds` возвращает инстанс, у которого локаль лежит в реактивных ссылках — переключение
1818
+ языка достаточно записать в `current`:
1819
+
1820
+ ```ts
1821
+ const cds = createCds({ components, directives });
1822
+
1823
+ // например, по выбору пользователя в настройках профиля
1824
+ cds.locale.current.value = 'en';
1825
+ ```
1826
+
1827
+ Внутри компонентов то же делает композабл `useLocale`:
1828
+
1829
+ ```vue
1830
+ <script setup lang="ts">
1831
+ import { CdsButton, CdsButtonToggle, useLocale } from '@central-design-system/components';
1832
+
1833
+ const { current } = useLocale();
1834
+ </script>
1835
+
1836
+ <template>
1837
+ <CdsButtonToggle v-model="current" appearance="tertiary">
1838
+ <CdsButton value="ru" text="Русский" />
1839
+ <CdsButton value="en" text="English" />
1840
+ </CdsButtonToggle>
1841
+ </template>
1842
+ ```
1843
+
1844
+ Все смонтированные компоненты пересчитают свои строки сами — перезагрузка страницы не нужна.
1845
+
1846
+ ## Локаль для части приложения
1847
+
1848
+ Отдельному поддереву можно задать свой язык — например, показать англоязычный виджет внутри
1849
+ русского интерфейса. Для этого в компоненте-обёртке вызовите `provideLocale`: он берёт локаль
1850
+ из контекста, накладывает переданные пропсы и провайдит результат детям.
1851
+
1852
+ ```vue
1853
+ <script setup lang="ts">
1854
+ import { provideLocale } from '@central-design-system/components';
1855
+
1856
+ const props = defineProps<{ locale?: string; fallback?: string }>();
1857
+
1858
+ provideLocale(props);
1859
+ </script>
1860
+
1861
+ <template>
1862
+ <div>
1863
+ <slot />
1864
+ </div>
1865
+ </template>
1866
+ ```
1867
+
1868
+ ```vue
1869
+ <template>
1870
+ <LocaleProvider locale="en">
1871
+ <CdsSelect :items="items" />
1872
+ </LocaleProvider>
1873
+ </template>
1874
+ ```
1875
+
1876
+ Не переданные пропсы наследуются от родительской локали, поэтому обёртка с одним `locale`
1877
+ не теряет ни `fallback`, ни словари.
1878
+
1879
+ ## useLocale
1880
+
1881
+ Композабл отдаёт текущую локаль и её функции — используйте его в своих компонентах, чтобы их
1882
+ тексты жили в тех же словарях, что и тексты CDS.
1883
+
1884
+ ```vue
1885
+ <script setup lang="ts">
1886
+ import { useLocale } from '@central-design-system/components';
1887
+
1888
+ const { t, n } = useLocale();
1889
+ </script>
1890
+
1891
+ <template>
1892
+ <p>{{ t('$cds.table.emptyText') }}</p>
1893
+ <p>{{ n(1234.56) }}</p>
1894
+ </template>
1895
+ ```
1896
+
1897
+ | Свойство | Тип | Назначение |
1898
+ | ------------------ | ---------------------------------------------- | ------------------------------------------------------------- |
1899
+ | `t` | `(key: string, ...params: unknown[]) => string` | Перевод ключа `$cds.…` с подстановкой параметров |
1900
+ | `n` | `(value: number) => string` | Форматирование числа по активной локали |
1901
+ | `current` | `Ref<string>` | Активный язык; запись меняет язык |
1902
+ | `fallback` | `Ref<string>` | Язык-подстраховка |
1903
+ | `messages` | `Ref<LocaleMessages>` | Словари; можно дописывать в рантайме |
1904
+ | `decimalSeparator` | `ShallowRef<string>` | Разделитель дробной части активной локали |
1905
+
1906
+ Параметры в строках нумерованные — `{0}`, `{1}`:
1907
+
1908
+ ```ts
1909
+ const { t } = useLocale();
1910
+
1911
+ t('$cds.carousel.delimiter', 3, 8); // «Слайд 3 из 8»
1912
+ t('Осталось дней: {0}', 5); // «Осталось дней: 5»
1913
+ ```
1914
+
1915
+ `n` под капотом — `Intl.NumberFormat` с активной локалью и `fallback`, так что разделители групп
1916
+ и дробной части приходят из браузера. `decimalSeparator` библиотека выводит из той же локали
1917
+ (`,` для `ru`, `.` для `en`); если в продукте принят другой — задайте его явно в `createCds`.
1918
+
1919
+ ## Даты
1920
+
1921
+ Названия месяцев и дней недели живут в отдельных date-локалях: их везут `ru` и `en`. Компоненты
1922
+ даты и времени берут date-локаль по активному языку, поэтому после `current.value = 'en'` календарь
1923
+ переключится сам.
1924
+
1925
+ Одному компоненту язык задаётся пропом `locale` — он есть у `CdsDatePicker`, `CdsDateInput`
1926
+ и `CdsTimePicker`:
1927
+
1928
+ ```vue
1929
+ <CdsDatePicker v-model="value" locale="en" :first-day-of-week="0" header />
1930
+ ```
1931
+
1932
+ Проп принимает не только имя языка, но и свой объект date-локали (тип `TDateLocale`) — так
1933
+ подключается язык, которого в библиотеке нет. Встроенные date-локали для сверки и переиспользования
1934
+ лежат в том же экспорте `locales`: `locales.ruDate`, `locales.enDate` и карта `locales.dateLocales`.
1935
+
1936
+ ```ts
1937
+ const de = {
1938
+ days: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
1939
+ daysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
1940
+ months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
1941
+ monthsLong: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
1942
+ monthsShort: 'Jan_Feb_Mär_Apr_Mai_Jun_Jul_Aug_Sep_Okt_Nov_Dez'.split('_'),
1943
+ today: 'Heute',
1944
+ now: 'Jetzt',
1945
+ firstDayOfWeek: 1,
1946
+ format24h: true,
1947
+ pluralDay: (day = 0) => (day === 1 ? 'Tag' : 'Tage')
1948
+ };
1949
+ ```
1950
+
1951
+ ```vue
1952
+ <CdsDatePicker v-model="value" :locale="de" />
1953
+ ```
1954
+
1955
+ ## Таблица
1956
+
1957
+ `CdsTable` собирает свои подписи из ключей `$cds.table.*`, но принимает и точечное
1958
+ переопределение пропом `locale` — он перекрывает только переданные строки:
1959
+
1960
+ ```vue
1961
+ <CdsTable :columns="columns" :data="data" :locale="{ emptyText: 'Заявок пока нет' }" />
1962
+ ```
1963
+
1964
+ ## RTL
1965
+
1966
+ Языки с письмом справа налево описываются картой `rtl`: ключ — язык, значение — направление.
1967
+
1968
+ ```ts
1969
+ createCds({
1970
+ locale: {
1971
+ locale: 'ar',
1972
+ messages: { ar },
1973
+ rtl: { ar: true }
1974
+ }
1975
+ });
1976
+ ```
1977
+
1978
+ Компоненты читают направление через `useRtl` и разворачивают то, что зависит от оси: сторону
1979
+ раскрытия меню и тултипов, стрелки пагинации, порядок ячеек `CdsOtpInput`, заливку
1980
+ `CdsProgressBar`. Отступы и границы в стилях в основном описаны логическими свойствами
1981
+ (`margin-inline`, `inset-inline`) и зеркалятся браузером сами — но полноценной поддержки RTL
1982
+ дизайн-система пока не заявляет, отдельные места потребуют доводки на вашей стороне.
1983
+
1984
+ Атрибут направления библиотека за вас не проставляет — повесьте его на корень приложения сами:
1985
+
1986
+ ```vue
1987
+ <script setup lang="ts">
1988
+ import { useRtl } from '@central-design-system/components';
1989
+
1990
+ const { isRtl } = useRtl();
1991
+ </script>
1992
+
1993
+ <template>
1994
+ <div :dir="isRtl ? 'rtl' : 'ltr'">
1995
+ <slot />
1996
+ </div>
1997
+ </template>
1998
+ ```
1999
+
2000
+ `useRtl` отдаёт `isRtl` и `rtlClasses` — готовый класс `cds-locale--is-rtl` / `cds-locale--is-ltr`
2001
+ для ваших собственных стилей.
2002
+
2003
+ ## Свой адаптер
2004
+
2005
+ Если в приложении уже есть i18n-библиотека, отдайте переводы ей: опция `adapter` принимает любой
2006
+ объект, реализующий интерфейс `LocaleInstance`. Тогда `messages`, `locale` и `fallback` из
2007
+ `createCds` не используются — источником истины становится ваш движок, а строки CDS живут
2008
+ в общих словарях приложения под ключом `$cds`.
2009
+
2010
+ ```ts
2011
+ import type { LocaleInstance, LocaleOptions } from '@central-design-system/components';
2012
+ import { toRef } from 'vue';
2013
+ import type { I18n } from 'vue-i18n';
2014
+
2015
+ export function createVueI18nAdapter(i18n: I18n<any, any, any, string, false>): LocaleInstance {
2016
+ const format = (value: number) => i18n.global.n(value);
2017
+
2018
+ return {
2019
+ name: 'vue-i18n',
2020
+ current: i18n.global.locale,
2021
+ fallback: i18n.global.fallbackLocale as never,
2022
+ messages: i18n.global.messages as never,
2023
+ decimalSeparator: toRef(() => (format(0.1).includes(',') ? ',' : '.')),
2024
+ t: (key, ...params) => i18n.global.t(key, params as never),
2025
+ n: format,
2026
+ provide: () => createVueI18nAdapter(i18n)
2027
+ };
2028
+ }
2029
+ ```
2030
+
2031
+ ```ts
2032
+ import { createI18n } from 'vue-i18n';
2033
+
2034
+ const i18n = createI18n({
2035
+ legacy: false,
2036
+ locale: 'ru',
2037
+ messages: {
2038
+ ru: {
2039
+ $cds: { noDataText: 'Отсутствуют данные' },
2040
+ profile: { title: 'Профиль' }
2041
+ }
2042
+ }
2043
+ });
2044
+
2045
+ const cds = createCds({
2046
+ components,
2047
+ directives,
2048
+ locale: {
2049
+ adapter: createVueI18nAdapter(i18n)
2050
+ }
2051
+ });
2052
+ ```
2053
+
2054
+ Обязательные члены `LocaleInstance`: `name` (по нему адаптер и распознаётся), `current`,
2055
+ `fallback`, `messages`, `decimalSeparator`, `t`, `n` и `provide` — фабрика вложенной локали
2056
+ для `provideLocale`. Если поддержка «локали в поддереве» вам не нужна, `provide` может возвращать
2057
+ тот же инстанс, как в примере выше.
2058
+
2059
+ ## Ключи сообщений
2060
+
2061
+ Встроенный русский словарь — шаблон для перевода на новый язык. Скопируйте его, переведите
2062
+ значения и передайте в `messages` под ключом своего языка; его английская версия доступна как
2063
+ `locales.en`.
2064
+
2065
+ ```ts
2066
+ export default {
2067
+ badge: 'Бейдж',
2068
+ noDataText: 'Отсутствуют данные',
2069
+ selectAll: 'Выбрать все',
2070
+ close: 'Закрыть',
2071
+ open: 'Открыть',
2072
+ dismiss: 'Отклонить',
2073
+ confirmEdit: {
2074
+ ok: 'ОК',
2075
+ cancel: 'Отмена'
2076
+ },
2077
+ carousel: {
2078
+ prev: 'Предыдущий слайд',
2079
+ next: 'Следующий слайд',
2080
+ delimiter: 'Слайд {0} из {1}'
2081
+ },
2082
+ input: {
2083
+ clear: 'Очистить {0}',
2084
+ otp: 'Введите одноразовый код',
2085
+ prependAction: '{0} предварительных действий',
2086
+ appendAction: '{0} добавочных действий'
2087
+ },
2088
+ fileInput: {
2089
+ counter: 'Файлов: {0}',
2090
+ counterSize: 'Файлов: {0} ({1} всего)'
2091
+ },
2092
+ fileUpload: {
2093
+ title: 'Перетащите файлы сюда',
2094
+ divider: 'или',
2095
+ browse: 'Выберите файлы'
2096
+ },
2097
+ steps: {
2098
+ prev: 'Назад',
2099
+ next: 'Далее'
2100
+ },
2101
+ table: {
2102
+ filterTitle: 'Фильтр меню',
2103
+ filterConfirm: 'Выбрать',
2104
+ filterReset: 'Сброс',
2105
+ filterEmptyText: 'Нет фильтров',
2106
+ filterCheckAll: 'Выбрать все элементы',
2107
+ filterSearchPlaceholder: 'Поиск фильтров',
2108
+ emptyText: 'Нет данных',
2109
+ selectAll: 'Выбрать текущую страницу',
2110
+ selectInvert: 'Инвертировать текущую страницу',
2111
+ selectNone: 'Очистить все данные',
2112
+ selectionAll: 'Выбрать все данные',
2113
+ sortTitle: 'Сортировка',
2114
+ expand: 'Раскрыть строку',
2115
+ collapse: 'Свернуть строку',
2116
+ triggerDesc: 'Отсортировать по убыванию',
2117
+ triggerAsc: 'Отсортировать по возрастанию',
2118
+ cancelSort: 'Отменить сортировку',
2119
+ showed: 'Отображено',
2120
+ from: 'из',
2121
+ rowOnPage: 'Строк на странице'
2122
+ },
2123
+ uploader: {
2124
+ uploading: 'Загрузка...',
2125
+ uploadFile: 'Загрузить файл',
2126
+ downloadFile: 'Скачать файл',
2127
+ removeFile: 'Удалить файл',
2128
+ uploadError: 'Ошибка загрузки',
2129
+ previewFile: 'Предпросмотр файла'
2130
+ }
2131
+ };
2132
+ ```
2133
+
2134
+ Словарь можно оставить неполным: недостающие ключи возьмутся из `fallback`, то есть по умолчанию
2135
+ из русского.
2136
+
2137
+ ---
2138
+
1342
2139
  # Темы и глобальные цветовые токены (уровень 2)
1343
2140
 
1344
2141
  > Сгенерировано из `src/themes/*.ts` скриптом `bun run generate:skill`. Не редактировать вручную.
@@ -1837,6 +2634,248 @@ const cds = createCds({ theme: { defaultTheme: 'cdsLight' } });
1837
2634
  | `--cds-color-brand-primary-active` | `#014F77` |
1838
2635
  | `--cds-color-brand-primary` | `#0287CA` |
1839
2636
 
2637
+ ## lumaLight (светлая)
2638
+
2639
+ | Токен | Значение |
2640
+ | --- | --- |
2641
+ | `--cds-color-surface-secondary` | `#ECEEF2` |
2642
+ | `--cds-color-surface-primary` | `#FFFFFF` |
2643
+ | `--cds-color-surface-overlay` | `#272A3080` |
2644
+ | `--cds-color-surface-inverse` | `#404653` |
2645
+ | `--cds-color-surface-elevated` | `#FFFFFF` |
2646
+ | `--cds-color-status-warning-surface` | `#A6840A` |
2647
+ | `--cds-color-status-warning-line` | `#B69210` |
2648
+ | `--cds-color-status-warning-fill-hover` | `#DEC048` |
2649
+ | `--cds-color-status-warning-fill` | `#F2DB82` |
2650
+ | `--cds-color-status-warning-content` | `#584001` |
2651
+ | `--cds-color-status-success-surface` | `#3C9C2C` |
2652
+ | `--cds-color-status-success-line` | `#50A946` |
2653
+ | `--cds-color-status-success-fill-hover` | `#97D283` |
2654
+ | `--cds-color-status-success-fill` | `#BCE8AB` |
2655
+ | `--cds-color-status-success-content` | `#005005` |
2656
+ | `--cds-color-status-progress-surface` | `#198FD8` |
2657
+ | `--cds-color-status-progress-line` | `#2B9DE9` |
2658
+ | `--cds-color-status-progress-fill-hover` | `#90C8FF` |
2659
+ | `--cds-color-status-progress-fill` | `#C3DFFF` |
2660
+ | `--cds-color-status-progress-content` | `#004871` |
2661
+ | `--cds-color-status-info-surface` | `#828A97` |
2662
+ | `--cds-color-status-info-line` | `#9298A4` |
2663
+ | `--cds-color-status-info-fill-hover` | `#C0C3CB` |
2664
+ | `--cds-color-status-info-fill` | `#DADDE2` |
2665
+ | `--cds-color-status-info-content` | `#404653` |
2666
+ | `--cds-color-status-indication-surface` | `#D1453F` |
2667
+ | `--cds-color-status-indication-line` | `#D1453F` |
2668
+ | `--cds-color-status-indication-fill-hover` | `#FFAE9E` |
2669
+ | `--cds-color-status-indication-fill` | `#FFD1C6` |
2670
+ | `--cds-color-status-indication-content` | `#831118` |
2671
+ | `--cds-color-status-danger-surface` | `#D1453F` |
2672
+ | `--cds-color-status-danger-line` | `#D1453F` |
2673
+ | `--cds-color-status-danger-fill-hover` | `#FFAE9E` |
2674
+ | `--cds-color-status-danger-fill` | `#FFD1C6` |
2675
+ | `--cds-color-status-danger-content` | `#831118` |
2676
+ | `--cds-color-page-primary` | `#ECEEF2` |
2677
+ | `--cds-color-other-teal-surface` | `#3A969E` |
2678
+ | `--cds-color-other-teal-line` | `#3CA5AD` |
2679
+ | `--cds-color-other-teal-fill-hover` | `#48D6DB` |
2680
+ | `--cds-color-other-teal-fill` | `#A1E9E9` |
2681
+ | `--cds-color-other-teal-content` | `#022B2F` |
2682
+ | `--cds-color-other-purple-surface` | `#A96FDE` |
2683
+ | `--cds-color-other-purple-line` | `#B381E1` |
2684
+ | `--cds-color-other-purple-fill-hover` | `#D6B8EF` |
2685
+ | `--cds-color-other-purple-fill` | `#E8D5F6` |
2686
+ | `--cds-color-other-purple-content` | `#2F0F50` |
2687
+ | `--cds-color-other-pink-surface` | `#D25CB8` |
2688
+ | `--cds-color-other-pink-line` | `#DB70C4` |
2689
+ | `--cds-color-other-pink-fill-hover` | `#F3ACE7` |
2690
+ | `--cds-color-other-pink-fill` | `#F8D1F2` |
2691
+ | `--cds-color-other-pink-content` | `#420D35` |
2692
+ | `--cds-color-other-lime-surface` | `#78922C` |
2693
+ | `--cds-color-other-lime-line` | `#85A12D` |
2694
+ | `--cds-color-other-lime-fill-hover` | `#B6CC65` |
2695
+ | `--cds-color-other-lime-fill` | `#D4E490` |
2696
+ | `--cds-color-other-lime-content` | `#202901` |
2697
+ | `--cds-color-other-lemon-surface` | `#8E8C23` |
2698
+ | `--cds-color-other-lemon-line` | `#9D9B25` |
2699
+ | `--cds-color-other-lemon-fill-hover` | `#CBC65F` |
2700
+ | `--cds-color-other-lemon-fill` | `#E6DF83` |
2701
+ | `--cds-color-other-lemon-content` | `#282601` |
2702
+ | `--cds-color-other-indigo-surface` | `#807EEC` |
2703
+ | `--cds-color-other-indigo-line` | `#918DEC` |
2704
+ | `--cds-color-other-indigo-fill-hover` | `#C3BDF9` |
2705
+ | `--cds-color-other-indigo-fill` | `#DDD9FC` |
2706
+ | `--cds-color-other-indigo-content` | `#1F1F55` |
2707
+ | `--cds-color-other-cyan-surface` | `#439786` |
2708
+ | `--cds-color-other-cyan-line` | `#48A692` |
2709
+ | `--cds-color-other-cyan-fill-hover` | `#58D8BE` |
2710
+ | `--cds-color-other-cyan-fill` | `#9FEBD8` |
2711
+ | `--cds-color-other-cyan-content` | `#052B24` |
2712
+ | `--cds-color-other-chocolate-surface` | `#AC7F58` |
2713
+ | `--cds-color-other-chocolate-line` | `#B78F6D` |
2714
+ | `--cds-color-other-chocolate-fill-hover` | `#D8BEA9` |
2715
+ | `--cds-color-other-chocolate-fill` | `#E7D9CC` |
2716
+ | `--cds-color-other-chocolate-content` | `#361D01` |
2717
+ | `--cds-color-line-tertiary-hover` | `#AFB3BD` |
2718
+ | `--cds-color-line-tertiary` | `#CCCFD6` |
2719
+ | `--cds-color-line-selected-hover` | `#2978D4` |
2720
+ | `--cds-color-line-selected` | `#4D98F9` |
2721
+ | `--cds-color-line-secondary-hover` | `#9298A4` |
2722
+ | `--cds-color-line-secondary` | `#AFB3BD` |
2723
+ | `--cds-color-line-primary-hover` | `#727987` |
2724
+ | `--cds-color-line-primary` | `#9298A4` |
2725
+ | `--cds-color-line-focus-outline` | `#A4C5FE` |
2726
+ | `--cds-color-line-focus` | `#4D98F9` |
2727
+ | `--cds-color-line-elevated` | `#FFFFFF00` |
2728
+ | `--cds-color-line-disable` | `#C0C3CB` |
2729
+ | `--cds-color-fill-selected-hover` | `#2978D4` |
2730
+ | `--cds-color-fill-selected` | `#4D98F9` |
2731
+ | `--cds-color-fill-secondary-hover` | `#CCCFD6` |
2732
+ | `--cds-color-fill-secondary-active` | `#C0C3CB` |
2733
+ | `--cds-color-fill-secondary` | `#DADDE2` |
2734
+ | `--cds-color-fill-primary-hover` | `#DADDE2` |
2735
+ | `--cds-color-fill-primary-active` | `#CCCFD6` |
2736
+ | `--cds-color-fill-primary` | `#FFFFFF` |
2737
+ | `--cds-color-fill-elevated` | `#FFFFFF` |
2738
+ | `--cds-color-fill-disable` | `#DADDE2` |
2739
+ | `--cds-color-content-tertiary` | `#727987` |
2740
+ | `--cds-color-content-secondary` | `#4F5666` |
2741
+ | `--cds-color-content-primary` | `#212631` |
2742
+ | `--cds-color-content-placeholder` | `#828A97` |
2743
+ | `--cds-color-content-on-dark` | `#FFFFFF` |
2744
+ | `--cds-color-content-link-visited` | `#955EC8` |
2745
+ | `--cds-color-content-link` | `#2978D4` |
2746
+ | `--cds-color-content-inverse` | `#FFFFFF` |
2747
+ | `--cds-color-content-disable` | `#9298A4` |
2748
+ | `--cds-color-brand-secondary-hover` | `#F7CFDA` |
2749
+ | `--cds-color-brand-secondary-border` | `#FBE7EC` |
2750
+ | `--cds-color-brand-secondary-active` | `#F0A8BC` |
2751
+ | `--cds-color-brand-secondary` | `#FBE7EC` |
2752
+ | `--cds-color-brand-primary-hover` | `#D2154B` |
2753
+ | `--cds-color-brand-primary-content` | `#7D0E27` |
2754
+ | `--cds-color-brand-primary-border` | `#C71B3C` |
2755
+ | `--cds-color-brand-primary-active` | `#E0476E` |
2756
+ | `--cds-color-brand-primary` | `#C71B3C` |
2757
+
2758
+ ## lumaDark (тёмная)
2759
+
2760
+ | Токен | Значение |
2761
+ | --- | --- |
2762
+ | `--cds-color-surface-secondary` | `#33373F` |
2763
+ | `--cds-color-surface-primary` | `#272A30` |
2764
+ | `--cds-color-surface-overlay` | `#272A30CC` |
2765
+ | `--cds-color-surface-inverse` | `#DCDDE3` |
2766
+ | `--cds-color-surface-elevated` | `#33373F` |
2767
+ | `--cds-color-status-warning-surface` | `#C9A449` |
2768
+ | `--cds-color-status-warning-line` | `#BE9737` |
2769
+ | `--cds-color-status-warning-fill-hover` | `#8A6502` |
2770
+ | `--cds-color-status-warning-fill` | `#614301` |
2771
+ | `--cds-color-status-warning-content` | `#EADBBA` |
2772
+ | `--cds-color-status-success-surface` | `#6EBA66` |
2773
+ | `--cds-color-status-success-line` | `#5DAF55` |
2774
+ | `--cds-color-status-success-fill-hover` | `#1F7C22` |
2775
+ | `--cds-color-status-success-fill` | `#0D5512` |
2776
+ | `--cds-color-status-success-content` | `#CAE4C4` |
2777
+ | `--cds-color-status-progress-surface` | `#4DB1FF` |
2778
+ | `--cds-color-status-progress-line` | `#0EA4F8` |
2779
+ | `--cds-color-status-progress-fill-hover` | `#0172AC` |
2780
+ | `--cds-color-status-progress-fill` | `#014F77` |
2781
+ | `--cds-color-status-progress-content` | `#C7E0FF` |
2782
+ | `--cds-color-status-info-surface` | `#A5A9B2` |
2783
+ | `--cds-color-status-info-line` | `#989DA8` |
2784
+ | `--cds-color-status-info-fill-hover` | `#666C79` |
2785
+ | `--cds-color-status-info-fill` | `#454951` |
2786
+ | `--cds-color-status-info-content` | `#DCDDE3` |
2787
+ | `--cds-color-status-indication-surface` | `#FF9E92` |
2788
+ | `--cds-color-status-indication-line` | `#FF9E92` |
2789
+ | `--cds-color-status-indication-fill-hover` | `#B8423D` |
2790
+ | `--cds-color-status-indication-fill` | `#822825` |
2791
+ | `--cds-color-status-indication-content` | `#FFD2CC` |
2792
+ | `--cds-color-status-danger-surface` | `#FF9E92` |
2793
+ | `--cds-color-status-danger-line` | `#FF9E92` |
2794
+ | `--cds-color-status-danger-fill-hover` | `#B8423D` |
2795
+ | `--cds-color-status-danger-fill` | `#822825` |
2796
+ | `--cds-color-status-danger-content` | `#FFD2CC` |
2797
+ | `--cds-color-page-primary` | `#1A1A1A` |
2798
+ | `--cds-color-other-teal-surface` | `#0ABACE` |
2799
+ | `--cds-color-other-teal-line` | `#01ACBF` |
2800
+ | `--cds-color-other-teal-fill-hover` | `#007886` |
2801
+ | `--cds-color-other-teal-fill` | `#04525B` |
2802
+ | `--cds-color-other-teal-content` | `#D4F2F7` |
2803
+ | `--cds-color-other-purple-surface` | `#B79AF5` |
2804
+ | `--cds-color-other-purple-line` | `#AE8BEE` |
2805
+ | `--cds-color-other-purple-fill-hover` | `#8457B8` |
2806
+ | `--cds-color-other-purple-fill` | `#5E3882` |
2807
+ | `--cds-color-other-purple-content` | `#F3E9FE` |
2808
+ | `--cds-color-other-pink-surface` | `#E889D1` |
2809
+ | `--cds-color-other-pink-line` | `#E078C7` |
2810
+ | `--cds-color-other-pink-fill-hover` | `#AC4296` |
2811
+ | `--cds-color-other-pink-fill` | `#7A2869` |
2812
+ | `--cds-color-other-pink-content` | `#FDE6F6` |
2813
+ | `--cds-color-other-lime-surface` | `#9BB24D` |
2814
+ | `--cds-color-other-lime-line` | `#8DA63B` |
2815
+ | `--cds-color-other-lime-fill-hover` | `#5B7400` |
2816
+ | `--cds-color-other-lime-fill` | `#3D4F00` |
2817
+ | `--cds-color-other-lime-content` | `#EBEED8` |
2818
+ | `--cds-color-other-lemon-surface` | `#ABAE48` |
2819
+ | `--cds-color-other-lemon-line` | `#9DA235` |
2820
+ | `--cds-color-other-lemon-fill-hover` | `#6A7100` |
2821
+ | `--cds-color-other-lemon-fill` | `#484C01` |
2822
+ | `--cds-color-other-lemon-content` | `#EEEED9` |
2823
+ | `--cds-color-other-indigo-surface` | `#96A4FF` |
2824
+ | `--cds-color-other-indigo-line` | `#8B95F9` |
2825
+ | `--cds-color-other-indigo-fill-hover` | `#6362C5` |
2826
+ | `--cds-color-other-indigo-fill` | `#40428D` |
2827
+ | `--cds-color-other-indigo-content` | `#EBEBFF` |
2828
+ | `--cds-color-other-cyan-surface` | `#0ABEA3` |
2829
+ | `--cds-color-other-cyan-line` | `#0AB098` |
2830
+ | `--cds-color-other-cyan-fill-hover` | `#067A69` |
2831
+ | `--cds-color-other-cyan-fill` | `#005348` |
2832
+ | `--cds-color-other-cyan-content` | `#D5F3EB` |
2833
+ | `--cds-color-other-chocolate-surface` | `#D49E6D` |
2834
+ | `--cds-color-other-chocolate-line` | `#CA915C` |
2835
+ | `--cds-color-other-chocolate-fill-hover` | `#985E1F` |
2836
+ | `--cds-color-other-chocolate-fill` | `#6E3B01` |
2837
+ | `--cds-color-other-chocolate-content` | `#FAEADB` |
2838
+ | `--cds-color-line-tertiary-hover` | `#7A808E` |
2839
+ | `--cds-color-line-tertiary` | `#565D67` |
2840
+ | `--cds-color-line-selected-hover` | `#92BAFE` |
2841
+ | `--cds-color-line-selected` | `#5D9DFC` |
2842
+ | `--cds-color-line-secondary-hover` | `#989DA8` |
2843
+ | `--cds-color-line-secondary` | `#7A808E` |
2844
+ | `--cds-color-line-primary-hover` | `#B5B7C0` |
2845
+ | `--cds-color-line-primary` | `#989DA8` |
2846
+ | `--cds-color-line-focus-outline` | `#1159B5` |
2847
+ | `--cds-color-line-focus` | `#5D9DFC` |
2848
+ | `--cds-color-line-elevated` | `#828A9766` |
2849
+ | `--cds-color-line-disable` | `#666C79` |
2850
+ | `--cds-color-fill-selected-hover` | `#92BAFE` |
2851
+ | `--cds-color-fill-selected` | `#5D9DFC` |
2852
+ | `--cds-color-fill-secondary-hover` | `#565D67` |
2853
+ | `--cds-color-fill-secondary-active` | `#666C79` |
2854
+ | `--cds-color-fill-secondary` | `#454951` |
2855
+ | `--cds-color-fill-primary-hover` | `#454951` |
2856
+ | `--cds-color-fill-primary-active` | `#565D67` |
2857
+ | `--cds-color-fill-primary` | `#272A30` |
2858
+ | `--cds-color-fill-elevated` | `#7A808E` |
2859
+ | `--cds-color-fill-disable` | `#454951` |
2860
+ | `--cds-color-content-tertiary` | `#B5B7C0` |
2861
+ | `--cds-color-content-secondary` | `#CFD2D7` |
2862
+ | `--cds-color-content-primary` | `#ECECEF` |
2863
+ | `--cds-color-content-placeholder` | `#A5A9B2` |
2864
+ | `--cds-color-content-on-dark` | `#F9F9FC` |
2865
+ | `--cds-color-content-link-visited` | `#C0AEF8` |
2866
+ | `--cds-color-content-link` | `#92BAFE` |
2867
+ | `--cds-color-content-inverse` | `#1A1A1A` |
2868
+ | `--cds-color-content-disable` | `#989DA8` |
2869
+ | `--cds-color-brand-secondary-hover` | `#650B25` |
2870
+ | `--cds-color-brand-secondary-border` | `#8A1034` |
2871
+ | `--cds-color-brand-secondary-active` | `#8A1034` |
2872
+ | `--cds-color-brand-secondary` | `#3A0715` |
2873
+ | `--cds-color-brand-primary-hover` | `#8A1034` |
2874
+ | `--cds-color-brand-primary-content` | `#FFD9E1` |
2875
+ | `--cds-color-brand-primary-border` | `#D2154B` |
2876
+ | `--cds-color-brand-primary-active` | `#650B25` |
2877
+ | `--cds-color-brand-primary` | `#D2154B` |
2878
+
1840
2879
  ## promoLight (светлая)
1841
2880
 
1842
2881
  | Токен | Значение |
@@ -41603,7 +42642,7 @@ function toggle(id: number) {
41603
42642
  Этот документ — **живой** migration guide: записи добавляются по мере появления
41604
42643
  breaking-изменений в alpha/beta релизах CDS 4.
41605
42644
 
41606
- > Версии: CDS 3 — `3.10.1` (стабильная), CDS 4 — `4.0.0-alpha.3` (в разработке).
42645
+ > Версии: CDS 3 — `3.10.1` (стабильная), CDS 4 — `4.0.0-alpha.4` (в разработке).
41607
42646
 
41608
42647
  ## Как читать этот документ
41609
42648