Changelog 4.x
4.0.0
Мажорное обновление дизайн-системы. Полный гайд по переходу с CDS 3 — в Migration Guide (
MIGRATION.mdв составе npm-пакета).
🚀 Что нового в CDS 4
- 🤖 AI Agent Skill — библиотека поставляет готовый Agent Skill (
packages/skills/cds) и машиночитаемыеllms.txt/llms-full.txt, чтобы ИИ-агенты (Claude Code и др.) генерировали код на CDS без ошибок. - 🧩 Новая архитектура компонентов —
<script setup lang="tsx">+defineRender, пропсы черезpropsFactoryи композицию фабрик, публичный API вынесен вapi/. - 💨 Поддержка Tailwind CSS v4 — официальная интеграция со слоями и токенами CDS (см. Tailwind CSS v4).
- 🖼️ Iconpacks — иконки подключаются через
createIconsи пакеты иконок; можно подставить свой набор вместо жёсткого импорта. - 📦 Новый сборщик библиотеки — 6 бандлов из одного пайплайна: CJS, ESM, MJS, IIFE и Web Components.
- 🎨 useColor во всех компонентах — единые цветовые пропсы
color/baseColor/activeColor/textColor/bgColorпозволяют перекрашивать любой компонент токенами темы, цветами из палитры и кастомными цветами. - ⚡ Производительность — виртуализация длинных списков и меню (
CdsVirtualScroll,useVirtual) вCdsSelect/CdsAutocomplete/CdsCombobox/CdsTree, ленивый рендер контента оверлеев (eager/useLazy) и tree-shaking за счёт ESM-бандлов с корректнымsideEffects. - ↕️ Drag-and-drop в CdsTable — перетаскивание строк и колонок прямо в таблице (
CdsTable). - 🧱 20+ новых компонентов и атомарная декомпозиция — библиотека пополнилась новыми компонентами (список ниже), а составные компоненты дополнительно разложены на самостоятельные атомы. В отличие от CDS 3, из этих атомов можно собирать собственные компоненты — как вручную, так и силами AI-агентов.
- SASS-переменные и vite-plugin. Публикуются SCSS-исходники компонентов и агрегат
styles/component-settings(глобальные + компонентные переменные). Новый пакет@central-design-system/vite-plugin: перекомпиляция стилей с пользовательским файлом настроек (styles.configFile) и авто-импорт компонентов и директив из шаблонов без регистрации вcreateCds.
🧩 Новые компоненты
- CdsAvatar — аватар с изображением, иконкой или инициалами в круглом контейнере, с поддержкой бейджа.
- CdsButtonGroup — объединяет несколько
CdsButtonв единую группу с общим оформлением. - CdsButtonToggle — группа кнопок с переключаемым выбором: одиночным или множественным.
- CdsDateInput — поле ввода даты: текстовое поле с иконкой календаря, раскрывающее
CdsDatePickerв выпадающем меню; поддерживает ручной ввод, диапазон, несколько дат и выбор времени. - CdsFileInput — поле выбора файлов: одиночный и множественный выбор, drag-and-drop и вставка из буфера, отображение именами или чипами, размер файлов и фильтрация по типам.
- CdsFileUpload — выделенная зона загрузки файлов с drag-and-drop (включая папки), списком файлов, фильтрацией по типам и индикатором загрузки.
- CdsOtpInput — поле ввода одноразового кода из SMS, письма или приложения-аутентификатора: ряд ячеек поверх одного скрытого
input, автозаполнение кода, вставка из буфера и событие завершения ввода. - CdsProgressCircle — круговой индикатор прогресса в режимах determinate и indeterminate.
- CdsTagGroup — группа тегов с переключаемым выбором: одиночным или множественным, с горизонтальной прокруткой или переносом по строкам.
- CdsToast — всплывающее уведомление со статусом, автозакрытием по таймеру, позиционированием и действиями. Замена
CdsNotificationAlertиз CDS 3. - CdsToastQueue — очередь тостов через
v-model: лимит видимых, стратегия переполнения, сворачивание в стопку и поддержка промисов. - CdsVirtualScroll — виртуализация длинных списков: в DOM рендерятся только видимые элементы.
Критические изменения
- CdsButton: удалён устаревший пропс
invertColor— вместо него пропсы цветаcolor/baseColor/activeColor. - CdsButton: SASS-переменная
$button-appearancesудалена — цвета задаёт карта ролей$button-colors— см. Migration Guide. - CdsButton: изменён exposed-API — вместо
groupItem/toggle()/isDisabledкомпонент отдаёт толькоgroup(контекст группы). - CdsButton: константа
CdsButton.constants.appearancesудалена — списки видов и ролей цвета даютCdsButton.constants.variants/CdsButton.constants.colors(из пакета —availableVariants/availableColorRoles) — см. Migration Guide (LDS-227). - CdsBadge: пропс
countпереименован вcontent, булевlimitedзаменён числовым порогомmax— см. Migration Guide. - CdsBadge: удалён устаревший пропс
invertColor— для смены цвета используйтеcolor/textColor— см. Migration Guide. - CdsBadge: изменён дефолт пропса
inline(true→undefined) — без явногоinlineбейдж позиционируется абсолютно (location: 'top end') — см. Migration Guide. - CdsCheckbox: удалён компонент-обёртка
CdsCheckboxGroup— группа собирается изCdsLabel/CdsDescription/CdsCheckboxс общимv-model(или через встроенныйmultiple) — см. Migration Guide. - CdsCheckbox: изменён exposed-API — вместо
id/isGroup/validationRefкомпонент отдаёт методы валидации (validate/reset/resetValidation,isValid/isDirty/isValidating…). - CdsModal: удалены пропсы
loadingиdismissBtn(и слотdismissBtn) — лоадер и кнопку закрытия добавляйте в контент вручную — см. Migration Guide. - CdsModal: изменён exposed-API — вместо ссылки
overlayкомпонент отдаёт элементы и методы оверлея (contentEl/activatorEl/rootEl/updateLocation…). - CdsRadioButton: компонент переименован в
CdsRadioGroup(cds-radio-button→cds-radio-group) — см. Migration Guide. - CdsDropdown: компонент переименован в
CdsSelect(богатый список с кастомным меню, множественным выбором и фильтрацией) — см. Migration Guide. - CdsSelect: нативный
CdsSelectиз CDS 3 (обёртка над<select>) удалён — нативное поведение теперь через пропnative-select— см. Migration Guide. - CdsProgress: компонент переименован в
CdsProgressBar(cds-progress→cds-progress-bar) — см. Migration Guide. - CdsSteps: изменён дефолт пропса
interactive(true→false) — по умолчанию шаги больше не кликабельны, для переходов по клику укажитеinteractive— см. Migration Guide. - CdsTabsV2: компоненты
CdsTabsV2/CdsTabV2переименованы вCdsTabs/CdsTab— см. Migration Guide. - CdsTabs: пропсы иконок стрелок прокрутки переименованы
prependIcon/appendIcon→prevIcon/nextIcon. - CdsTooltip: контент подсказки по умолчанию получил
pointer-events: none— наведение закрывает подсказку; для кликабельного контента добавьте пропinteractive— см. Migration Guide. - CdsTooltip: изменён exposed-API (
id/overlay→contentEl/activatorEl/updateLocation…). - CdsContainer: компонент удалён (был помечен
deprecatedв CDS 3) — замена:<div>с утилитарными классами, либоCdsCard, если нужна интерактивность — см. Migration Guide. - CdsContentSwitcher: компоненты
CdsContentSwitcher/CdsContentSwitcherItemудалены (были помеченыdeprecatedв CDS 3) — заменаCdsTabs/CdsTab— см. Migration Guide. - CdsStatus: значение статуса
errorпереименовано вdanger(status:info/success/warning/danger/progress) — см. Migration Guide. - CdsStatus: булев пропс
iconзаменён пропсомvariant(fill— заливка-бейдж,text— иконка + нейтральный текст; по умолчаниюfill) — см. Migration Guide. - CdsNotification: значение статуса
errorпереименовано вdanger(status:info/success/warning/danger/progress) — см. Migration Guide. - CdsNotification: удалён пропс
customIcon— своя иконка задаётся единым пропсомicon(false— скрыть) — см. Migration Guide. - CdsEmptyState: изменён exposed-API — компонент больше не отдаёт
illustrationComponentчерез ref. - CdsAutocomplete: изменён exposed-API — убраны ref-ссылки
menuRef/listRef/textInputRef; добавлены методы валидации (validate/reset/resetValidation) иsearch/menuчерез ref. - CdsCombobox: изменён exposed-API — убраны ref-ссылки
menuRef/listRef/textInputRef; добавлены методы валидации (validate/reset/resetValidation) и доступ кsearch/selectionIndexчерез ref. - CdsBreadcrumbsItem: пропс
textпереименован вtitle; удалён устаревший пропсcurrentPage— для текущей/неактивной страницы используйтеdisabled(илиactive). - CdsBreadcrumbs: изменён exposed-API — компонент больше не отдаёт
items/isLastItem. - CdsCard: удалён проп
interactive— кликабельность включается пропсомlink(либо автоматически приhref/toили членстве вCdsCardGroup). - CdsCard: удалён проп
selected— выбранное состояние управляется черезCdsCardGroupи пропvalue(CSS-класс задаётсяselectedClass). - CdsCard: событие
group:selectedубрано из публичного API (не задекларировано в типах /meta.json); выбор рекомендуется наблюдать черезv-modelнаCdsCardGroup. - CdsDrawer: удалён устаревший пропс
invertColor(и передачаinvertColorв scope слотовprepend/default/append) — для инверсного оформления используйте цветовые пропсыcolor/bgColor. - CdsExpandablePanel: изменён exposed-API — вместо спреда
groupItem+isDisabledпанель отдаётisSelected/select/toggle;CdsExpandablePanelTitleотдаётisSelected/toggle,CdsExpandablePanelContentбольше ничего не экспонирует. - CdsForm: изменён exposed-API — убраны обёртки
form/formRef; методы валидации (validate/reset/resetValidation) и состояние (isValid/isValidating/isDisabled/isReadonly,errors/items) доступны напрямую через ref. - CdsIcon: удалён устаревший пропс
invertColor— для инверсного/произвольного цвета используйте цветовые пропсыcolor/baseColor/textColor. - CdsIcon: иконка резолвится через новую систему иконок (iconpacks) вместо прямого импорта из
@central-design-system/icons; пропсnameбольше не валидируется поallowedIcons, добавлен пропсicon(IconValue) — см. Migration Guide. - CdsInput: удалены события
click:control/mousedown:control— в публичном API базового компонента остаётсяupdate:modelValue(клик и нажатие по области контрола теперь обрабатываются на уровне поля —CdsField/CdsTextInput). - CdsInput: изменён exposed-API — убраны
id/isFocused/messages; компонент отдаёт состояние (isDirty/isDisabled/isReadonly/isPure/isValid/isValidating) и методы валидации (validate/reset/resetValidation). - CdsInput: удалён проп
persistentMessages— для постоянного показа подсказки используйтеpersistentHint. - CdsInput: иконки
prependIcon/appendIconпереведены на новую систему иконок (IconValue) вместо строкового имени с валидацией поallowedIcons— см. Migration Guide. - CdsList: удалён устаревший пропс
invertColor— для инверсного/произвольного оформления используйте цветовые пропсыcolor/baseColor/bgColor/textColor. - CdsList: изменена сигнатура событий
click:open/click:select— payload больше не содержит полеevent({ id, value, path }). - CdsListItem: удалён пропс
isClickable— кликабельность включается пропсомlink(либо автоматически приhref/toили наличииvalueвнутри списка). - CdsListItem: изменён exposed-API — вместо
isActive/isIndeterminateкомпонент отдаётisActivated/activate(плюсisSelected/select/isGroupActivatorи контекстыlist/root). - CdsListGroup: удалён слот
titleи изменён смысл пропаtitle— теперь это текст кликабельного активатора (статичная подпись группы делается компонентомCdsListSubheader); изменён exposed-API — вместоid/isExpandableгруппа отдаёт толькоisOpen. - CdsMenu: изменён exposed-API — вместо ref-ссылки
overlayи счётчикаopenChildrenкомпонент отдаёт элементы и методы оверлея (contentEl/activatorEl/rootEl/targetEl/updateLocation/animateClick…). - CdsOverlay: изменён exposed-API — убрана ссылка
localTop; добавлены элементы и метод оверлея (rootEl/scrimEl/targetEl/activatorRef/targetRef/animateClick) наряду с прежнимиactivatorEl/contentEl/globalTop/updateLocation. - CdsSlideGroup: пропсы иконок стрелок переименованы
prependIcon/appendIcon→prevIcon/nextIconи переведены на новую систему иконок (IconValue); дефолтные имена измененыarrow-left/arrow-right→chevron-left/chevron-right. - CdsSlideView: пропсы иконок стрелок
prevIcon/nextIconпереведены на новую систему иконок (IconValue). - CdsSlideView: изменён exposed-API — вместо
group/next/prevкомпонент отдаёт толькоgroup(контекст группы). - CdsTag: событие
removeпереименовано вclick:close— его эмитит кнопка закрытия; пропremovableсохранён как псевдонимclosable. - CdsTag: удалён слот
text— текст задаётся пропсамиtext/contentили слотом по умолчанию. - CdsTag: иконочные пропсы
prependIcon/appendIconпереведены на новую систему иконок (IconValue) вместо строкового имени с валидацией поallowedIcons— см. Migration Guide. - CdsTextArea: удалён проп
limit— ограничение по числу символов и счётчик задаются пропсомcounter/counterValue— см. Migration Guide. - CdsTextArea: изменён exposed-API — вместо
id/isFocused/fieldRef/textareaRef/validationRef/sizerRef/focus/blurкомпонент отдаёт состояние (isDirty/isDisabled/isReadonly/isPure/isValid/isValidating), методы валидации (validate/reset/resetValidation) иcontrolRef— см. Migration Guide. - CdsTextArea: иконочные пропсы
prependIcon/appendIcon/prependInnerIcon/appendInnerIconпереведены на новую систему иконок (IconValue) вместо строкового имени с валидацией поallowedIcons— см. Migration Guide. - CdsTextInput: удалён проп
limit— ограничение по числу символов и счётчик задаются пропсомcounter/counterValue— см. Migration Guide. - CdsTextInput: удалён проп
persistentMessages— для постоянного показа подсказки используйтеpersistentHint— см. Migration Guide. - CdsTextInput: изменён exposed-API — вместо
fieldRef/inputRef/validationRef/focus/blurкомпонент отдаёт состояние (isDirty/isDisabled/isReadonly/isPure/isValid/isValidating), методы валидации (validate/reset/resetValidation) иcontrolRef— см. Migration Guide. - CdsTextInput: иконочные пропсы
prependIcon/appendIcon/prependInnerIcon/appendInnerIconпереведены на новую систему иконок (IconValue) вместо строкового имени с валидацией поallowedIcons— см. Migration Guide. - CdsToggle: изменён exposed-API — вместо
id/isFocused/validationRef/inputRefкомпонент отдаёт состояние (isDirty/isDisabled/isReadonly/isPure/isValid/isValidating) и методы валидации (validate/reset/resetValidation). - CdsSidebar: компонент удалён (был помечен
deprecatedв CDS 3 с рантайм-предупреждением[CDS UPGRADE]) — заменаCdsDrawer. - Стили (breakpoints): SCSS-миксин
cds-breakpoint-downвыровнен с JS-composableuseDisplay—down('<name>')теперь означает «<name>и ниже» (max-width следующего брейкпоинта − 0.02), а не «строго ниже», как в CDS 3; значения порогов и миксинcds-breakpoint-upне изменились — см. Migration Guide. - CdsDrawer: видимость панели на широком экране подчиняется
v-model— раньше обычная панель показывалась медиазапросом при любом значении, теперьfalseскрывает её и освобождает место в макете; чтобы панель сама открывалась там, где помещается в макет, передайтеnullили не задавайтеv-model— см. Migration Guide. - CdsDrawer: на узком экране (< 1056 px) непостоянная панель ведёт себя как выезжающая и синхронизирует
v-modelс шириной экрана — закрывается при сужении и открывается при расширении (отключается пропомdisableResizeWatcher);permanentна узком экране теперь занимает место в макете — см. Migration Guide. - Tailwind (внутри 4.0.0-alpha): из
styles/tailwindудалены классы устаревших токенов состояний (bg-fill-primary-hover,text-content-disableи т. п.) — состояния собираются плёнкойstate.*; классов для самой плёнки нет, её цвет зависит от фона. - Стили: удалены переменные
settings.$standard-easing/$decelerated-easing/$accelerated-easing(кривые Material 2), а такжеtools.$cds-duration-*,get-motionиcds-animation-motion; замена —motion.easing(standard|enter|exit),motion.duration(<ступень>)из@central-design-system/components/styles/motion— см. Migration Guide. - CdsTransitionCollapse: удалён; замена —
CdsTransitionPresence(затухание, затем схлопывание высоты).CdsTreeраскрывает ветви через него — см. Migration Guide. - CdsNotification: событие
update:modelValueприходит после анимации ухода (до 300ms), а не в момент клика;click:closeпо-прежнему срабатывает сразу — см. Migration Guide. - Темы:
surface-overlayнепрозрачный во всех темах, подложкиCdsOverlay,CdsDrawer,CdsLoaderи кнопкиCdsCarouselразбавляют его сами ($overlay-opacity, 50%); свои подложки на токене нужно разбавить черезcolor-mix(LDS-222) — см. Migration Guide.
Что нового
- CdsButton: пропсы
variant(solid/soft/outline/surface/ghost) иcolor— роль (brand/accent/neutral/danger/inverse), алиас палитры, токен темы или CSS-цвет; ховер, нажатие и недоступность любого цвета строит плёнка состояний (LDS-216). - CdsButton:
baseColorиactiveColor— цвет невыбранной и выбранной в группе кнопки. - CdsButton: пропсы раскладки
block,stacked,spacedи произвольный HTML-тег черезtag. - CdsButton: пропсы габаритов
width/height/minWidth/minHeight/maxWidth/maxHeight;sizeдополнительно принимает число. - CdsButton: роутер-пропсы
exactиreplaceдля управления поведением RouterLink. - CdsButton: пропс
contentдля передачи контента без слота и новый слотloaderдля кастомного индикатора загрузки. - CdsApp: новый компонент — корневая обёртка приложения (провайдер темы и layout-контекста).
- CdsAvatar: новый компонент — аватар с изображением, иконкой или инициалами в круглом контейнере, с поддержкой бейджа.
- CdsButtonGroup: новый компонент — объединяет несколько
CdsButtonв единую группу. - CdsButtonToggle: новый компонент — группа кнопок с переключаемым выбором (одиночный / множественный).
- CdsCheckboxButton: новый компонент — чекбокс на базе
CdsSelectionControl(одиночный/множественный выбор,indeterminate,true/false-значения). - CdsCounter: новый компонент — счётчик значения с ограничением
max(например «99+»). - CdsDefaultsProvider: новый компонент — провайдер значений пропсов по умолчанию для вложенных компонентов.
- CdsDescription: новый компонент — вспомогательный текст-описание с настраиваемым тегом.
- CdsField: новый компонент — базовая обёртка поля формы (иконки,
clearable, состоянияerror/loading/disabled). - CdsFileInput: новый компонент — поле выбора файлов на базе
CdsInput/CdsField: одиночный и множественный выбор (multiple), drag-and-drop и вставка из буфера, отображение выбранного именами или чипами (chips), размер файлов (showSize) и счётчик (counter), фильтрация по типам (filterByType), персистентныйplaceholderи скрытие поля (hideInput). - CdsFileUpload: новый компонент — выделенная зона загрузки файлов с drag-and-drop: перетаскивание (включая папки), вставка из буфера и выбор через системный диалог, одиночный и множественный выбор (
multiple), удаление файлов (clearable) и отображение размера (showSize), фильтрация по типам (filterByType) с событиемrejected, список файлов под зоной или внутри неё (insetFileList), три размера зоны (size) и индикатор загрузки (loading). Собирается из подкомпонентовCdsFileUploadDropzone,CdsFileUploadListиCdsFileUploadItem. - CdsHighlight: новый компонент — подсветка совпадений в тексте по запросу (
query) или готовым диапазонам (matches). - CdsLabel: новый компонент — подпись/лейбл контрола (
for, размеры, состоянияdisabled/readonly). - CdsMessages: новый компонент — блок сообщений валидации/подсказок под контролом.
- CdsProgressCircle: новый компонент — круговой индикатор прогресса (determinate / indeterminate).
- CdsResponsive: новый компонент — контейнер с фиксированным соотношением сторон (
aspectRatio) и адаптивными размерами. - CdsSelectionControl: новый компонент — низкоуровневый контрол выбора, основа для checkbox / radio / toggle.
- CdsSelectionControlGroup: новый компонент — группа контролов выбора с общей моделью (single / multiple).
- CdsSurface: новый компонент — базовая оформленная поверхность-контейнер, основа для более сложных компонентов.
- CdsVirtualScroll: новый компонент — виртуализация длинных списков (в DOM рендерятся только видимые элементы).
- CdsBadge: пропсы габаритов (
width/height/minWidth/maxWidth/minHeight/maxHeight) иlabelдля a11y;iconпереведён на новую систему иконок (IconValue). - CdsCheckbox: встроенный множественный выбор (
multiple,trueValue/falseValue) — заменаCdsCheckboxGroup; кастомные иконки состояний (trueIcon/falseIcon/indeterminateIcon), цветовые пропсы (color/baseColor/activeColor/textColor/iconColor) и слотыinput/details. - CdsModal: события жизненного цикла анимации
afterEnter/afterLeave. - CdsRadioGroup: цветовые (
color/baseColor/activeColor/textColor/iconColor) и иконочные (prependIcon/appendIcon/trueIcon/falseIcon) пропсы,inline,sizeи exposed-методы валидации. - CdsSelect: событие
update:searchи пропsearchдля внешнего управления фильтром; режим «выбрать все» (isSelectAll, событиеupdate:selectedAll, exposed-методselectAll()),menuProps/listProps, чипы (chips/closableChips) и набор слотов (selection/chip/no-data/menu-header…). - CdsProgressBar: цветовые пропсы (
color/baseColor/activeColor/textColor), стилизация буфера (bufferColor/bufferOpacity), режим сегментов (variant: 'split',chunkCount/chunkGap/chunkWidth),striped/roundedBar/opacity. - CdsSteps: проп
items(+itemTitle/itemText/itemValue/itemProps) рендерит шапку, контент (CdsStepsView/CdsStepsViewItem) и кнопки навигации (CdsStepsActions); слотыheader-item/item/actions/prev/next, методыprev()/next()через ref, пропсыhideActions/prevText/nextText. - CdsTabs: цветовые пропсы, настройка слайдера (
hideSlider/sliderTransition/sliderTransitionDuration), режимыinset/fixedTabs/centerActive/mobile, слотыtab/item/view. - CdsTab: роутер-пропсы (
href/to/exact/replace), раскладка (block/stacked/spaced), цветовые пропсы и слотloader. - CdsTooltip: проп
colorдля цвета фона подсказки. - CdsNotification: новое значение
flatу пропсаvariant— уведомление без рамки;variant="important"воспроизводит вид тостаCdsNotificationAlertиз CDS 3 — нейтральный фон и тень, статус задаёт только цвета контента (набор CDS 3default/compact/importantсохранён). - CdsNotification: пропсы
bgColor/textColorдля переопределения цвета фона и контента (без них действуют цвета статуса). - CdsEmptyState: компонент переработан: сохранены
title,descriptionи legacy-иллюстрации CDS 3 (проп и слотillustration); добавлены медиа-область — иконкаiconили изображениеimageс размеромsize(слотmedia), акцентный заголовокheadlineи слотdefaultдля произвольного контента. - CdsEmptyState: встроенная кнопка действия: пропсы
actionText/href/to, событиеclick:action; слотactionsполучаетpropsс обработчикомonClick. - CdsEmptyState: пропсы раскладки и оформления:
justify(start/center/end),textWidth, цветовыеcolor/bgColorи габаритыwidth/height/minWidth/maxWidth/minHeight/maxHeight. - CdsAutocomplete: отображение выбранных значений чипами — пропсы
chips/closableChips, слотchipиclearOnSelectдля очистки запроса после выбора. - CdsAutocomplete: цветовые пропсы
color/baseColor/activeColor/textColor/bgColorиitemColor(цвет выбранных элементов в меню). - CdsAutocomplete: слоты кастомизации меню
menu-header/menu-footer/divider/subheader, поддержка структурных элементов списка (itemType:item/divider/subheader) и пропvalueComparatorдля сравнения значений. - CdsAutocomplete: режим «выбрать все» — проп
isSelectAll(первый пункт-чекбокс в меню; строка задаёт свою надпись), событиеupdate:selectedAllи exposed-методselectAll(). - CdsCombobox: отображение выбранных значений чипами — пропсы
chips/closableChipsи слотchip. - CdsCombobox: цветовые пропсы
color/baseColor/activeColor/textColor/bgColor/iconColorиitemColor(цвет выбранных элементов в меню). - CdsCombobox: слоты кастомизации меню
menu-header/menu-footer/divider/subheader, поддержка структурных элементов списка (itemType:item/divider/subheader) и пропvalueComparatorдля сравнения значений. - CdsCombobox: проп
clearOnSelect(по умолчаниюtrue) управляет очисткой поискового запроса после выбора элемента. - CdsBreadcrumbs: настраиваемый разделитель — проп
divider(по умолчанию/) и слотdivider; слотыitem/title/prependдля кастомизации, пропicon(новая система иконок), пропtagи цветовые пропсыcolor/baseColor/activeColor/textColor/bgColor/activeClass. - CdsBreadcrumbsItem: пропс
active, цветовые пропсы (color/baseColor/activeColor/textColor/bgColor), габаритыwidth/maxWidthи произвольный HTML-тег черезtag. - CdsBreadcrumbsDivider: новый компонент — разделитель между хлебными крошками (проп
divider, слотdefault) для ручной вёрстки навигации. - CdsCard: цветовые пропсы
color/baseColor/activeColor/textColor/bgColor; иконочные пропсыprependIcon/appendIconпереведены на новую систему иконок (IconValue). - CdsCard: аватары в шапке карточки — пропсы
prependAvatar/appendAvatar. - CdsCard / CdsCardItem: вертикальное выравнивание зон
prepend/appendв шапке — пропitemAlignу карточки иalignуCdsCardItem(start/center/end). - CdsCard: пропсы
position/locationдля позиционирования и пропcontentдля текстового контента без слота. - CdsCard: слот
loaderдля кастомного индикатора загрузки. - CdsCardActions: проп
align(start/center/end) для выравнивания блока действий. - CdsCardSubtitle / CdsCardText: проп
opacityдля прозрачности текста. - CdsDivider: проп
variant— стиль линии (solid/dashed/dotted/double, по умолчаниюsolid). - CdsDivider: пропсы оформления
color,opacity,gradient(затухание по краям) иinset(отступ / уменьшённая длина). - CdsDivider: проп
contentOffset— интервал между разделителем и контентом слота (число или пара значений). - CdsDrawer: цветовые пропсы
color/bgColorдля настройки цвета контента и фона панели. - CdsExpandablePanels: обязательный выбор
mandatory(boolean | 'force'), отступ между панелямиgap, групповые пропсы иконок и поведенияexpandIcon/collapseIcon/hideActions/eager/focusable/hover/static(наследуются панелями) и exposed-навигацияnext()/prev(). - CdsExpandablePanel: пропсы габаритов
width/height/minWidth/maxWidth/minHeight/maxHeight, подсветка заголовкаhover/focusable, отключение анимации заголовкаstaticиselectedClassдля выбранного состояния. - CdsExpandablePanelTitle: пропсы габаритов
width/height/minWidth/maxWidth/minHeight/maxHeight, подсветка заголовкаhover/focusableи отключение анимацииstatic. - CdsIcon: пропс
icon(IconValue) — иконка задаётся строкой-именем, компонентом иконки или булевым значением;nameостаётся строковым алиасом дляicon. - CdsIcon: цветовые пропсы
color/baseColor/activeColor/textColor/bgColorи пропсdisabled. - CdsIcon: пропсы отступов
start/endдля использования иконки как префикса/суффикса рядом с текстом. - CdsIcon: проп
opacityдля прозрачности и пропtagдля произвольного HTML-тега (по умолчаниюi). - CdsImage: пропс
imageClass— CSS-класс для внутреннего элемента<img>. - CdsInput: цветовые пропсы
color/baseColor/activeColor/textColor/bgColorиiconColorдля настройки цвета поля и иконок. - CdsInput: пропсы подсказки
hint/persistentHint, управление блоком деталейhideDetails(true/false/'auto') и слотыlabel/description/details/messageдля кастомизации подписи, описания и сообщений. - CdsInput: проп
direction(horizontal/vertical) иcenterAffixдля раскладки поля и выравнивания префикс/суффикс-элементов. - CdsInput: пропсы габаритов
width/minWidth/maxWidth. - CdsInput: события кликов по внешним иконкам
click:prepend/click:append(EventProp-пропсыonClick:*) — в CDS 3 у базовогоCdsInputих не было. - CdsList: рендеринг из данных — пропс
items(+ маппингitemTitle/itemValue/itemChildren/itemProps/itemType), слоты кастомизацииitem/header/subheader/dividerи структурные типы элементов (item/divider/subheader). - CdsList: режим активации элементов — пропсы
activatable/activated/activeStrategy, событияclick:activateиupdate:activated(v-model). - CdsList: клавиатурная навигация — пропсы
navigationIndex/navigationStrategy(focus/track) и событиеupdate:navigationIndex. - CdsList: расширенное управление выбором и раскрытием — пропсы
selectable/selected/selectStrategy/mandatory/required/returnObject/valueComparator,opened/openStrategy. - CdsList: цветовые пропсы (
color/baseColor/activeColor/bgColor/textColor/activeClass), габариты (width/height/minWidth/maxWidth/minHeight/maxHeight) и оформлениеnav/slim/indent/prependGap/collapseIcon/expandIcon. - CdsList: exposed-API дополнен методом
getPathи картамиchildren/parents(наряду сopen/select/focus). - CdsListItem: подзаголовок
subtitle(в дополнение кtitle/description), аватарыprependAvatar/appendAvatar, роутер-пропсыexact/replace, цветовые пропсы, габариты и оформлениеnav/slim/lines/prependGap. - CdsListGroup: цветовые пропсы (
color/baseColor/activeColor/bgColor/textColor) и иконкаprependIconперед заголовком группы. - CdsListItemTitle / CdsListItemSubtitle / CdsListItemDescription / CdsListItemMedia / CdsListItemImage / CdsListItemAction / CdsListItemDivider: новые вспомогательные компоненты для сборки элемента списка (заголовок, подзаголовок, описание, медиа-область, изображение, блок действий, разделитель) — в CDS 3 из семейства были только
CdsList/CdsListItem/CdsListGroup. - CdsMenu: поддержка вложенных меню — проп
submenu(открытие/закрытие стрелками ←/→ вместо ↑/↓). - CdsMenu: управление фокусом — пропсы
captureFocus(по умолчаниюtrue) иretainFocus(focus-trap внутри меню). - CdsMenu: пропсы позиционирования
stickToTarget(контент следует за целью при прокрутке за пределы экрана) иviewportMargin(отступ контента от границ вьюпорта, по умолчанию12). - CdsMenu: события жизненного цикла анимации
afterEnter/afterLeave. - CdsOverlay: управление фокусом — пропсы
captureFocusиretainFocus(focus-trap внутри контента оверлея). - CdsOverlay: пропсы позиционирования
stickToTarget(контент следует за целью при прокрутке за пределы экрана) иviewportMargin(отступ контента от границ вьюпорта, по умолчанию12). - CdsPagination: кнопки перехода на первую/последнюю страницу — проп
showFirstLastPage(boolean | 'only-first'), иконкиfirstIcon/lastIconи слотыfirst/last. - CdsPagination: настраиваемые иконки навигации
prevIcon/nextIcon(новая система иконокIconValue) — в CDS 3 иконкиchevron-left/chevron-rightбыли захардкожены. - CdsPagination: цветовые пропсы
color/activeColorдля кнопок страниц и активной кнопки. - CdsPagination: пропсы a11y для локализации меток навигации —
ariaLabel,pageAriaLabel,currentPageAriaLabel,firstAriaLabel/lastAriaLabel,nextAriaLabel/previousAriaLabel. - CdsPagination: проп
quickJumperLabel— настраиваемая подпись поля быстрого перехода (в CDS 3 текст «Перейти к странице» был захардкожен). - CdsSlideGroup: пропсы
contentClass/contentStyle— классы и inline-стили контейнера прокрутки. - CdsSlideGroup: пропсы
mobile/mobileBreakpointдля управления мобильным режимом,scrollToActive(по умолчаниюtrue) для автопрокрутки к активному элементу иmandatoryдля обязательного выбора; значениеneverуshowArrows(полностью скрыть стрелки). - CdsSlideGroup: exposed-API дополнен
hasNext/hasPrev(наряду сselected/scrollTo/scrollOffset/focus). - CdsSlideView: проп
crossfade— переход между слайдами кроссфейдом вместо сдвига. - CdsSlideView: проп
reverse— обратное направление анимации перехода. - CdsSlideView: проп
verticalArrows(boolean | 'left' | 'right') — вертикальное расположение стрелок сбоку с выбором стороны. - CdsSlideView: проп
transitionDuration— длительность анимации перехода между слайдами. - CdsTable: drag-and-drop строк и колонок — пропсы
row-draggable/column-draggable(boolean | { icon, disabled, allowDrop }) включают перетаскивание за грип-иконку; событияrow-reorder/column-reorderотдают перетаскиваемый и целевой элементы с позицией вставки, порядок данных меняет потребитель. Строки переставляются между соседями одного родителя, колонки — среди соседей внутри своей группы (шапка группы переносится целиком). - CdsTag: управление видимостью через v-model — проп
modelValue(по умолчаниюtrue) и событиеupdate:modelValue(приfalseтег скрывается). - CdsTag: кнопка закрытия — пропсы
closable(иremovableкак псевдоним),closeIcon/closeLabel, событиеclick:closeи слотclose. - CdsTag: работа в составе группы — проп
value, событиеgroup:selected,selectedClass/activeClassи режим фильтраfilter/filterIconсо слотомfilter(индикатор выбора). - CdsTag: оформление —
pill(полное скругление),label(уменьшенное скругление + слотlabel), пропsizeи произвольный HTML-тег черезtag. - CdsTag: ссылочное поведение — пропсы
link,exact,replace(в CDS 3 ссылка включалась только черезhref/to). - CdsTag: аватары
prependAvatar/appendAvatarи текстовый контент без слота черезcontent. - CdsTag: проп
disabled(заблокированное состояние), нативный drag-and-drop черезdraggableи явное событиеclick. - CdsTag: новый проп
textColor;colorпереведён на useColor — принимает токены темы, палитру и произвольный цвет (в CDS 3 был ограниченный набор значений). - CdsTextArea: цветовые пропсы
color/baseColor/activeColor/textColor/bgColor/iconColor. - CdsTextArea: пропсы подсказки
hint/persistentHint, управление блоком деталейhideDetails(true/false/'auto') иhideMessages, сообщенияmessages/maxErrors. - CdsTextArea: настраиваемая иконка очистки
clearIcon, пропсыpersistentCounter/persistentPlaceholderи пользовательское значение счётчикаcounterValue. - CdsTextArea: проп
maxHeight(максимальная высота) и событиеupdate:rowsпри автоувеличении высоты (autoGrow). - CdsTextArea: пропсы габаритов
width/minWidth/maxWidthи пропсыcenterAffix/reverse/autocomplete/validateOn/validationValue. - CdsTextArea: слоты
label/description/details/message/messages/counter/clear/loader/prepend/append/prepend-inner/append-inner. - CdsTextArea: новые события
click:control/mousedown:control(клик и нажатие в области контрола) иupdate:rows(изменение вычисленного числа строк приautoGrow). События кликов по иконкамclick:prepend/click:append/click:prependInner/click:appendInner/click:clearработают как прежде (@click:*), но теперь объявлены как EventProp-пропсыonClick:*, а не черезemits. - CdsTextInput: цветовые пропсы
color/baseColor/activeColor/textColor/bgColor/iconColor. - CdsTextInput: пропсы подсказки
hint/persistentHint, управление блоком деталейhideDetails(true/false/'auto') иhideMessages, сообщенияerrorMessages/maxErrors. - CdsTextInput: настраиваемая иконка очистки
clearIcon, пропсыpersistentCounter/persistentPlaceholderи пользовательское значение счётчикаcounterValue. - CdsTextInput: пропсы габаритов
width/minWidth/maxWidthи пропсыcenterAffix/reverse/validateOn/validationValue. - CdsTextInput: слоты
details/message/clear/counter/loaderдля кастомизации сообщений, кнопки очистки, счётчика и индикатора загрузки. - CdsToast: новый компонент — всплывающее уведомление (тост) на базе
CdsOverlay/CdsNotification: семантическийstatus, заголовок и текст (title/text/content), иконка / загрузка / аватар (icon/loading/prependAvatar), автозакрытиеtimeout(-1отключает) со шкалой таймера (timer/timerColor/reverseTimer), позиционированиеlocation, вертикальная раскладкаvertical, цветовые пропсы (bgColor/textColor), слоты (default/title/text/header/prepend/actions/activator) и событияafterEnter/afterLeave. Замена тостаCdsNotificationAlertиз CDS 3 — см. Migration Guide. - CdsToastQueue: новый компонент — очередь/стек тостов через
v-model(массивToastMessage): ограничение одновременно видимыхtotalVisibleи стратегия переполненияdisplayStrategy(hold/overflow), сворачивание неактивных в стопкуcollapsed, отступgap, кнопка закрытияclosable/closeText, поддержка промисов (promise/success/error) с колбэкомonDismiss, слотыitem/header/text/actionsи exposed-методclear(). - CdsToggle: цветовые пропсы
color/baseColor/iconColorиthumbColor(цвет бегунка). - CdsToggle: проп
size(xs/sm/md/lg/xlили число) и пропdirection(horizontal/vertical). - CdsToggle: настраиваемые значения состояний
trueValue/falseValue, неопределённое состояниеindeterminate(событиеupdate:indeterminate) и иконки состоянийtrueIcon/falseIcon. - CdsToggle: множественный выбор в группе — пропсы
multiple/value/valueComparator(на базеCdsSelectionControlGroup). - CdsToggle: иконочные пропсы
prependIcon/appendIcon(новая система иконокIconValue). - CdsToggle: индикатор загрузки
loadingи слотloader. - CdsToggle: пропсы подсказки
hint/persistentHint, управление блоком деталейhideDetails/hideMessages, сообщенияmessages/errorMessages/maxErrorsи валидацияrules/validateOn/validationValue. - CdsToggle: пропсы габаритов
width/minWidth/maxWidth. - CdsToggle: слоты кастомизации
thumb(бегунок),track-true/track-false(части дорожки),input,details/message/messagesиdefault. - CdsDateInput: новый компонент — поле ввода даты на базе
CdsTextInputиCdsDatePickerвCdsMenu; значение хранится строкой в форматеmask(DD.MM.YYYYпо умолчанию). - CdsDateInput: ручной ввод с клавиатуры — проп
updateOn(blur/enter) задаёт момент разбора значения, пустой массив оставляет только выбор в календаре. - CdsDateInput: формат отображения
displayFormat(маска или функция) отдельно от формата храненияmask. - CdsDateInput: выбор времени — проп
withTimeдобавляетCdsTimePickerпод календарь и дописывает время в маску (withSeconds— секунды), пропсы тайм-пикера доступны напрямую и черезtimePickerProps. - CdsDateInput: отложенное применение —
hideActions: falseдобавляет кнопки подтверждения (событияsave/cancel) и слотactionsсsave/cancel/isPristine. - CdsDateInput: настройка выпадающего меню и календаря — пропсы
location,menuProps,pickerPropsи состояние меню черезv-model:menu. - CdsTagGroup: новый компонент — группа тегов на базе
CdsSlideGroup: выбор черезv-model, множественный выборmultipleс лимитомmax, обязательный выборmandatory, индикатор выбораfilterи перенос по строкамcolumnвместо прокрутки. - CdsTagGroup: пропсы
color,activeColor,disabledиfilterгруппа проставляет своим тегам как значения по умолчанию; наружу доступныselect,isSelected,selected,nextиprev. - CdsTag: новый проп
activeColor— цвет выбранного в группе тега; без него выбор красит сама группа брендовым цветом, аcolorостаётся цветом невыбранного тега. - CdsTag: оформление заблокированного тега —
disabledкрасит тег в служебные токеныfill-disable/content-disableи снимает реакцию на клики. - CdsOtpInput: новый компонент — поле ввода одноразового кода: ячейки только отрисовывают код, а ввод принимает один скрытый
inputсautocomplete="one-time-code", поэтому работают автозаполнение из SMS, вставка целой строкой из буфера, выделение и стрелки. Пропсыlength,type(number/text/password),masked,pattern(готовые наборыnumeric/alpha/alphanumeric/unicode-alpha/unicode-alphanumericили свой RegExp),placeholder,divider,merged,focusAll,error,loading,autofocus, цветовые пропсы иsize; событиеfinishпри полностью набранном коде, слотыfields/divider/loader/defaultи exposed-методыfocus()/blur()/reset(). - CdsOtpField / CdsOtpGroup / CdsOtpSeparator: атомы поля ввода кода — через слот
fieldsиз них собирается своя раскладка ячеек, например группировка «3 — 3» с общей рамкой у каждой группы. - useOtpInput: headless-композабл ввода кода — раскладывает значение по ячейкам в графемах (эмодзи занимают одну ячейку), фильтрует символы по паттерну, ведёт выделение скрытого input и поддерживает IME-композицию.
- Темы: новые темы
lumaLight/lumaDark.lumaLight— эталонная светлая тема с цветами дизайнера Luma, включая плёнку состояний и её доли; ключи, которых у дизайнера нет, берутся изcdsLight(LDS-222).lumaDarkпока переопределяет только брендовые токены (brand-primary*/brand-secondary*) в красной гамме логотипа Luma (#D2154B), остальные значения наследуются отcdsDark. Всего пакет теперь поставляет восемь готовых тем. - CdsDrawer: проп
scrim(boolean | string) — отключает затемнение под выезжающей панелью или задаёт его цвет. - CdsDrawer: проп
persistent— клик по затемнению и Esc не закрывают панель, толькоv-model. - CdsDrawer: проп
width— ширина панели в px, макет сдвигает контент ровно на неё. - CdsDrawer: свайпы у выезжающей панели — открытие от края экрана и закрытие жестом (отключаются пропом
touchless). - CdsDrawer: фоновое изображение — проп
imageи слотimage. - Иконки: пак по умолчанию — Phosphor, его CSS идёт в пакете, ставить ничего не нужно.
- Иконки: пак
cdsустарел, подключается черезdefaultSet: 'cds'. - Темы: токены плёнки состояний — цвета
state/state-inverse/state-selected/state-disabledи доли--cds-state-*-opacityво всех темах; ховер, нажатие, выбор и недоступность ложатся плёнкой поверх любого фона. - Стили: функции плёнки
state.hover/state.active/state.selected/state.disabled/state.line-hover/state.line-active/state.tint—@use '@central-design-system/components/styles/state'; каждая возвращает одно значениеcolor-mix(…). - Темы: опция
legacyTokensв настройках темы — приfalseустаревшие токены состояний убираются из тем, CSS-переменных, вариаций и утилит; по умолчаниюtrue, пока компоненты переводятся на плёнку. - Анимации: единая шкала для всех тем — семь длительностей (
instant50ms …very-slow500ms,spring300ms), кривыеstandard/enter/exit/spring/loop/ripple/linearи циклы пульса (2s) и ряби (1.5s). SASS-модуль@use '@central-design-system/components/styles/motion'(duration,easing,transition,interactive-transition, миксиныinteractive,spatial,reduced,pulse,ripple), CSS-переменные--cds-motion-duration-*/--cds-motion-easing-*/--cds-motion-loop-*на:rootи JS-объектmotion(motion.durations,motion.easings,motion.loops). Гайд — «Анимации». - CdsTransitionPresence: новый переход для блока, уходящего из потока (уведомление, алерт, строка списка): затухание, затем схлопывание высоты, отступов и рамки; появление идёт наоборот. Обёртка в разметке не нужна,
after-leaveсрабатывает после обеих фаз, приprefers-reduced-motionостаётся только затухание. - CdsStatus: пропс
indicator— точка-индикатор вместо иконки иpulse— пульс точки для статуса «идёт сейчас» (бесконечный, WCAG 2.2.2: включайте, пока сигнал актуален; приprefers-reduced-motionне запускается); смена статуса плавно перекрашивает компонент. - CdsNotification: плавное появление и уход через
CdsTransitionPresence: затухание, затем схлопывание высоты, соседние уведомления сдвигаются без рывка.
Улучшения
- CdsButton: проп
loadingпринимаетstring | boolean(в CDS 3 — толькоboolean). - CdsButton: ховер, нажатие и недоступность всех
appearanceстроятся плёнкой состоянийstate.*поверх цветов покоя вместо токенов*-hover/*-active/*-disable; недоступная кнопка сохраняет оттенок своего вида, а не становится одинаково серой; вид в покое не изменился (LDS-215). - CdsAutocomplete: список меню виртуализируется через
CdsVirtualScroll(в CDS 3 виртуализация не была реализована) — производительность на длинных списках. - CdsAutocomplete: улучшены a11y и клавиатурная навигация —
aria-expanded/aria-controlsи переходы Tab между шапкой, списком и подвалом меню. - CdsCombobox: режим «выбрать все» (
isSelectAll) теперь принимает строку — кастомная надпись пункта в меню (в CDS 3 — толькоboolean). - CdsCard: проп
loadingпринимаетstring | boolean(в CDS 3 — толькоboolean); строкой задаётся цвет индикатора. - CdsCard: пропсы
title/subtitleпринимаютstring | number | boolean(в CDS 3subtitle— толькоstring). - CdsImage: пропс
srcбольше не обязателен (дефолт'') — компонент можно рендерить без источника (например, с плейсхолдером/слотами); в CDS 3srcбылrequired. - CdsInput: проп
sizeдополнительно принимает число (в CDS 3 — толькоxs/sm/md/lg/xl). - CdsSlideView: добавлена клавиатурная навигация по слайдам стрелками (←/→ для горизонтального, ↑/↓ для вертикального направления) — в CDS 3 её не было.
- CdsTextArea: проп
counterпринимаетboolean | number | string(в CDS 3 — толькоboolean). - CdsTextInput: проп
sizeдополнительно принимает число (в CDS 3 — толькоxs/sm/md/lg/xl). - CdsTextInput: проп
counterпринимаетboolean | number | string(в CDS 3 — толькоboolean). - Темы: базовый шрифт изменён с Arial на PT Root UI VF (переменный шрифт) во всех темах — Cds, B2b, Promo (светлые и тёмные варианты).
- Сборка: ESM-бандл сохраняет модульную структуру, а CSS каждого компонента подключается его же чанком — теперь
createCds({ components: { CdsButton } })кладёт в бандл приложения только используемые компоненты и их стили (в CDS 3 стили подключались одним общим файлом). Гайд —docs/treeshaking.md. - CdsAutocomplete / CdsCombobox: поисковое поле по умолчанию получает атрибут
autocomplete="off"— браузерный автофилл больше не перекрывает выпадающее меню компонента; поведение переопределяется пропомautocomplete(включая режимsuppress). - CdsDrawer: выезжающая панель с затемнением забирает фокус при открытии и удерживает Tab внутри (пропы
retainFocus/captureFocus), при закрытии фокус возвращается на прежний элемент. - Анимации: все компоненты и общие переходы
CdsTransition*переведены на шкалу движения Luma вместо кривых Material 2 (ховерvery-fast/fast, нажатиеinstant, появлениеfast+enter, уходvery-fast+exit, модалка и дроверnormal/fast); публичные переменные$*-transitionсохранили имя и форму, изменились значения по умолчанию — см. Migration Guide. - Анимации: JS-переходы (
createJSTransition,CdsModalTransition) и слайдерCdsTabsчитаютprefers-reduced-motionпри монтировании: модалка при reduced-motion меняет только прозрачность, слайдер вкладок переходит на затухание. - CdsTabs: перелёт слайдера идёт по шкале (
fast/normal/slowв зависимости от вида перелёта), ховер вкладки — по ступеням плёнки состояний. - CdsSkeletonLoader: шиммер выключается при
prefers-reduced-motion, как и декоративные полосыstripedуCdsProgressBar; индикаторы процессаCdsLoaderи неопределённыйCdsProgressBarпродолжают работать. - CdsOverlay: пульс при клике по фону не запускается при
prefers-reduced-motion. - CdsMenu: при открытии стрелкой у активаторов-списков (
CdsSelect,CdsCombobox,CdsAutocomplete) фокус остаётся в поле, а не уходит в меню. - CdsTooltip: интерактивная подсказка (
interactive) без явногоcloseDelayзакрывается с задержкой 250 мс (какCdsMenu) — курсор успевает пересечь зазор между активатором и контентом; явныйclose-delay, в том числе0, приоритетнее, обычные подсказки закрываются сразу, как и раньше.
Исправления
- CdsSkeletonLoader: после завершения загрузки контент слота рендерится напрямую, без обёртки-скелета — в CDS 3 контент оставался внутри flex-контейнера
.cds-skeleton-loader(display: flex; flex-wrap: wrap), что ломало раскладку реального контента. - useDisplay: composable теперь заполняет флаг
xlDown(объявлен вDisplayInstance, но вcreateDisplayне проставлялся и былundefined) — теперь всегдаtrue(«xl и ниже»). - CdsSelect / CdsAutocomplete / CdsCombobox: при включённом
hide-no-dataуже открытое меню закрывается, когда результат фильтрации пустеет — в CDS 3 под полем оставалась пустая полоса меню без списка. - useColor: фон, заданный именованным алиасом палитры (
red,neutralи т.д. сaliasPath: 'surface'), теперь также подставляет класс.cds-theme-on-inverse— ранее ветка авто-контраста не срабатывала для алиасов, так как их резолвленное значение (rgb(var(--…))) не проходило проверкуisParsableColor. Парный токенcontent-inverseпереключается вместе с темой: в тёмной теме это исправление решает проблему контраста уверенно (было ~1.2–2.0, стало ~7.4–12.8), а в светлой теме — осознанный компромисс: на среднетоновых оттенках белый текст даёт ~3.5 вместо ~4.3, поэтому фоны на алиасахsurfaceне стоит использовать под длинный текст. - CdsFooter / CdsToolbar: проп
bgColorтеперь красит фон, аcolor— текст; оба компонента дополнительно получили полноценную поддержку цвета текста. Ранееcolorкрасил фон, а объявленныйbgColorне был подключён и не влиял на отображение. - CdsTextArea: в размере
mdстроки слипались (интерлиньяж был равен размеру шрифта), а приauto-growсrows="1"контрол получал высоту меньше минимальной высоты поля и текст прижимался к верху — интерлиньяж выровнен по токену, минимум поля учитывается в расчёте высоты. - CdsLayout: корень макета больше не обрезает содержимое (
overflow: hidden) и не становится скролл-контейнером —position: stickyвнутри макета снова прилипает к прокручиваемой странице (например, закреплённая шапкаCdsTableсоsticky). - CdsDrawer: закрытая и выезжающая панели в макете позиционируются
fixedи не создают горизонтальную прокрутку страницы; на время выезда обычной панели наbodyставится классcds-body--drawer-toggle(overflow-x: hidden). Выезжающая панель на прокрученной странице теперь открывается в видимой области, а не у верха макета. - CdsFooter: подвал, скрытый через
v-model="false"и не закреплённый в макете, получаетdisplay: noneи больше не удлиняет прокрутку страницы. - CdsCard: SASS-переменные карточки (
$card-*) попали в агрегатcomponent-settingsи настраиваются черезstyles.configFileплагина@central-design-system/vite-plugin: раньше их переопределение роняло сборку ошибкойwas not declared with !default. - Переходы: уходящий элемент, вынутый из потока (
CdsTransitionSlideRight,CdsTransitionSlideLeft,CdsTransitionJump*, а также любой CSS-переход сleaveAbsolute), больше не ловит клики (уходящая подпись месяца в календаре не перехватывает клик по стрелке); общие переходыCdsTransitionSlide*,CdsTransitionJump*,CdsTransitionScale,CdsTransitionModal*приprefers-reduced-motionне двигают и не масштабируют элемент, а заменяют сдвиг и масштаб затуханием (у слайдов вправо и влево и у модальных панелей анимируется только прозрачность). - Стили: легаси-сброс (
$legacy-reset: true) больше не глушит анимации приprefers-reduced-motion(animation-iteration-count: 1останавливал спиннерCdsLoader); политику движения задаёт ДС, а не сброс совместимости с CDS 3. - CdsTabs:
sliderTransitionDuration: 0корректно отключает перелёт слайдера. - CdsNotification: исправлена опечатка в имени класса
notification-transition-leave-active— правило ухода раньше не применялось. - CdsNotificationAlert:
CdsNotification, положенная в слот алерта, снова закрывается по своемуv-modelи крестику и анимирует уход — внутренний флаг алерта больше не доходит до вложенных уведомлений. - CdsProgressBar: полосы
stripedтеперь видны и бегут (с CDS 3 градиент и анимация были перепутаны местами, и полосы не рисовались); приprefers-reduced-motionполосы стоят.
Устаревшее
- CdsButton: пропс
appearanceустарел — выводит паруvariant+colorи пишет[CDS UPGRADE]один раз на значение;transparentсохранён какghost+brand(удаление пересмотрено) — см. Migration Guide. - CdsNotificationAlert: обёртка-тост перенесена из CDS 3 как временный мост на
CdsToast— работает в 4.x (внутриCdsNotificationсvariant="important", вертикальный стек уведомлений как в CDS 3), в dev-консоли выводит[CDS UPGRADE]и будет удалена в 5.x — см. Migration Guide. - CdsStages: компонент помечен deprecated — публичный API не изменился и шкала работает во всей ветке 4.x, но в dev-консоли выводит
[CDS UPGRADE], а в 5.0 будет удалена. Замена —CdsStepsбез пропаinteractive: шаги некликабельны, а шапка безitemsработает как трекер хода процесса (пропvertical— для вертикального варианта); учтите, что вид отличается — стрелочная лента против индикаторов с линией прогресса. См. Migration Guide. - Темы: 31 токен состояний (
fill-primary-hover,brand-primary-active,fill-selected,fill-disableи др., список —legacyTokens) помечен@deprecated— замена — плёнкаstate.*, подсказка с заменой видна в IDE и в правиле stylelintcds/no-legacy-tokens; удаление в 5.0, подробности в MIGRATION (LDS-218).