# **CHANGELOG**

## 4.0.0
**BREAKING CHANGES**
* Провели рефакторинг дизайн-системы в рамках объединения **VKUI** и **Paradigm**: удалили ненужные, добавили новые, поменяли названия старых. 
  Изменения можно найти в [таблице](https://docs.google.com/spreadsheets/d/10DBlAGM68KyZ1DHtr-xKy-JDDqrsWaItF67fo7-hOy4/edit#gid=314413476)
  
* Изменили формат описания адаптивных токенов: теперь идём не от `viewport` (`touch`,`desktop`), а 
  от состояний самого токена: `regular`, `compact`, `large` и т.д. Указывать состояния, отличные от `regular` нужно указывать тогда, и только тогда, когда они действительно отличаются.
  
  Для проектов использующих уже медиаквери и вьюпорты (paradigm-проекты) при генерации сделан маппинг с помощью переменной `breakpoints`.
  
* Переписали старую генерацию `scss`, `css`, `less`, `styl` форматов с нуля. Теперь покрыли это **автотестами**: можно зайти в тесты и посмотреть как в каждом формате обробатывается каждый вид переменной
  _цвет, групповая переменная (шрифты), адаптивная, медиа_ и так далее. 
  Теперь поддержка будет прозрачнее и добавление новых конструкций в процессоры не будет проблемой.
  
  Важно: во время переписи и из-за того, что формат адаптивных переменных сильно поменялся, то подход с ними в процессорах css тоже. 
  Теперь везде, кроме нативного css, переменные не переопределяются автоматически через @media-query. Чтобы эту мехнику получить — нужно css файлы из `themes/${themName}/cssVars/declarations`.
* Сделали единый базовый интерфейс дизайн-системы и описали в нём тему для `paradigm` (светлый и тёмный) и `vk` (пока только светлый).
* Сделали расширение базового интерфейса для Paradigm тем и портальной специфики.
* Порефакторили подход к генерации форматов:
  * Экспортируем в пакете в папку `build` все функции с помощью которых можно собрать любой вид темы. Теперь можно по описанию темы собрать её 
	где-то в своём проекте, а не пользоваться только готовыми отсюда 		
  * Сделали так, чтобы любой формат темы можно было собрать хоть из одной переменной. Теперь можно легко иметь в проекте локальные переменные не связанные с дизайн-системой, но в привычном формате.
* Изменили файловую структуру при экспорте библиотеки — теперь вместо того чтобы все собранные темы попадали в `root`
  , они попадают в `root/themes`. Это важно, поскольку теперь в экспорте ещё есть разные полезные функции помимо тем.
  
* Поработали над тёмной темой сделали основную базовую тёмную тему и отдельно темные цвета
* Удалили `flat` темы
* Удалили `subthemes` везде
* название пакета `@vkontakte/vkui-tokens`

## 3.2.0
* Добавили темы `octaviusDark` и `homeDark`
* Сделали правки в типографике в `calendar`
* Добавили экспорт объявления цветов css-vars в js и в виде строки.

## 3.1.0
* Обновили тему `otvet`, добавили тёмный вариант `otvetDark`
* Аккуратно поправили вывод в генерации стилей (убрали ненужные строчки)

## 3.0.0
* Добавили новый вид темы `cssVars` она объявляет переменные как нативные css-custom-properties в `cssVars/${themeName}/declarations/index.css`. Там сразу сделаны изменения переменных по breakpoints, а также добавлены специальные классы для форсированного включения нужного брейкпоинта. Демо можно найти [тут](demo/example-adaptive-css-vars-theme.html);
* Также сделали компиляцию объекта темы (в `cssVars/${themeName}/theme/index`) (`ts`, `js`, `json` форматы) в где каждая переменная представлена как `{name: '--paradigm--x1', value: 'var(--paradigm--x1, 4px)'}`
* Добавили тестирование снапшотами на каждую тему (теперь любое изменение в теме вызовет падение тестов с полным дифом каждой переменной, нужно будет апрувить изменения, обновляя снапшоты (`npm t -- -u`))
* Добавили расчёт тестового покрытия (`coverage`) в репозитории
* Для удобной миграции на `cssVars` тему в `${themeName}/cssVars/theme/fallbacks` добавлены темы, процессоров, которые ссылаются на уже нативные CSS-переменные. То есть `$size-base: 4px` -> `$size-base: var(--paradigm--size_base, 4px)`
* js,json,ts добавили поле `themeType: 'root' | 'flat' | 'pixelify' | 'cssVars'`, чтобы в runtime понимать, с каким видом темы сейчас работаем
* В `${themeName}/cssVars/declarations` помимо `index.css` есть также файлы `onlyRoot.css` (только рутовое определение переменных без, адаптивности), а также `modern.css` (используются нативные mixin ы в css (читай про @apply))
* **BREAKING CHANGES**: удалили генерацию `css` файлов во всех (они были невалидные, поэтому врятли кто-то ими польовался), кроме `cssVars` видах тем. Теперь чистый нативный css можно заимпортить тут: `cssVars/${themeName}/declarations/index.css`.
* **BREAKING CHANGES**: в темах, в адаптивных переменных больше нет `default` состояния, вместо этого теперь там указан конкретный `viewport` (например, `touch` или `desktopS`). Это было сделано, так как default был по-сути алисом на `touch` viewport, что вызывало неконсистентые состояния, при использовании темы без `touch` брейкпоинта. Это нам дало следующие возможности: теперь можно создавать темы с любым подножеством брейкпоинтов, например: `['desktopS, 'desktopM']` - будет тема из двух десктопных брейкпоинтов. На самом деле это должно затронуть только описание тем, а также типы и `ts`, `js`, `json` форматы. Выходные файлы других форматов не изменились. `flat` темы всех форматов остались прежними.
* **BREAKING CHANGES**: подняли мажор `csstype` (единственная `prod` зависимость для `npm` у токенов). Теперь `3.0.7`. (Может вызывать нюансы в типах при обновлении).


## 2.6.1
* Для календарной темы обновили `thumbnailColor`

## 2.6.0
* В основные темы перенесены переменные из subthemes - `colorBgPlaceholder` (цвет подложки) и `colorIconAccent` (цвет акцентированной иконки)
* Добавлен токен `colorBgPromo` для задания цвета фона промо элементов и панелей (плашек)

## 2.5.0
* добавили переменную `sizeControlCheckBorderRadius` — _Радиус скругления чекбоксов_
* исправили наследование `calendar` темы от octavius (больше не попадают переменные из подтем)
* удалили подтемы из календарной темы, вместо этого создали новую тему `calendarDark` с корректным интерфейсом

## 2.4.0
* добавили тему для Облака `cloud`
* добавили переменные (и их описания) во все темы `fontFamilyAccent`, `fontWeightAccent`, `fontWeightAccentBold`
* сделали чуть более корректное наследование тем от `octavius` (чтобы не попадали в тему переменные subthemes, которые deprecated)
* Исправили генерацию customMedia (убрали перекрытие breakpoints)

## 2.3.1
* Изменили скругление кнопок до 8px для календарных тем

## 2.3.0
* Добавляeтся токен "checkBoxBorderColor" для задания цвета у чекбоксов

## 2.2.1
* Добавляются токен "sizePromoArrowWidth" для корректного отображения стрелки в 2kit

## 2.2.0
* Добавляются токен на размер стрелки тултипа и токен для цвета новостного метатреда

## 2.1.0
* Добавляется генерация мапки со всеми переменными после миксина для SASS-файлов.

## 2.0.0
* имя пакета теперь снова `@paradigm/tokens` . `@paradigm/themes` больше никогда публиковаться не будет.
* Добавлен общий интерфейс темы, от которой отнаследованы все остальные темы.
* Добавлен общий интерфейс ОПИСАНИЯ темы. (Теперь создавая тему у вас будет тип, с которым невозможно будет забыть указать что-либо). Непонятно почему недостаточно предыдущего пункта? — скорее всего вы никогда не работали в токенах.
* Процесс преобразования описания темы в полноценную тему полностью выводится из типов. И покрыт автотестами.
* Добавили и настроили линтер
* Настроили CI (проверяем линтер, jest и сборку)
* Добавили функцию хелпер `getStateFunctions`, которая добавит к теме функции, позволяющие динамически создавать `hover`, `active` состояния.

## 1.18.0
* Обновили цвет вк по их брендбуку

## 1.17.0
* Добавили тему Задач Mail.ru
* Добавили темную тему для календаря

## 1.16.1
* Поправили размеры шрифта в теме `calendar`

## 1.16.0
* Добавили переменные `sizeBadge[XS|S|M|L|XL]`

## 1.15.0
* добавили переменную paddingControlSelectIcon  

## 1.14.0
* добавили переменную colorButtonContrastBg  
* добавили переменную colorCategoryToMyself в тему октавиуса

## 1.13.0
* Обновили цвета с оттенками серого во всех темах
* Обновили тему `home` (Относледовали от `octavius` и добавили токенов)

## 1.12.0
* Добавили в тему календаря шрифт `MailSans`

## 1.11.0
* Обновили значение переменной `colorBgHighlight` `#FFF1AD`
* Настроили корректные тайпинги для этой переменной

## 1.10.0
* Добавили переменные для ширины и высоты больших кнопок ([описание](https://gitlab.corp.mail.ru/UX/paradigm.tokens/-/blob/master/themes/descriptions.ts#L858-868))
* Добавили тему `calls`

## 1.9.0
* Минорное обновление цветов ошибки и саксеса. Утверждено с дизайнерами

## 1.8.0
* Добавили переменную `paddingPopupBase` ([описание](https://gitlab.corp.mail.ru/UX/paradigm.tokens/blob/master/themes/descriptions.ts#L1062))
* Добавили переменную `paddingPopupHeader` ([описание](https://gitlab.corp.mail.ru/UX/paradigm.tokens/blob/master/themes/descriptions.ts#L1068))
* Исправили SCSS сборку темы. Заменили классы на `mixin`, корректно обрабатывает desktop/mobile статические переменные.

