Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Не все компоненты типографики умеют в адаптивность #7283

Closed
8 tasks done
mendrew opened this issue Aug 2, 2024 · 1 comment

Comments

@mendrew
Copy link
Contributor

mendrew commented Aug 2, 2024

Описание

Проблема

Выяснилось, что не все компоненты из раздела Типографики умеют адаптироваться под размер экрана.
Под умением подразумевается использование специальных компонентных токенов в режиме regular и compact.

Например.

Компонент Headline.
Иммет разные параметры типографики для разных значений level.
Каждый уровень задан специальными токенами:
--vkui--font_headline1--font_size--regular

.Headline--level-1 {
font-size: var(--vkui--font_headline1--font_size--regular);
line-height: var(--vkui--font_headline1--line_height--regular);
font-weight: var(--vkui--font_headline1--font_weight--regular);
font-family: var(--vkui--font_headline1--font_family--regular);
}

В режиме compact используются уже другие токены:

.Headline--sizeY-compact.Headline--level-1 {
font-size: var(--vkui--font_headline1--font_size--compact);
line-height: var(--vkui--font_headline1--line_height--compact);
}
@media (--sizeY-compact) {
.Headline--sizeY-none.Headline--level-1 {
font-size: var(--vkui--font_headline1--font_size--compact);
line-height: var(--vkui--font_headline1--line_height--compact);
}
}

То же самое наблюдается для level 2

.Headline--level-2 {
font-size: var(--vkui--font_headline2--font_size--regular);
line-height: var(--vkui--font_headline2--line_height--regular);
font-weight: var(--vkui--font_headline2--font_weight--regular);
font-family: var(--vkui--font_headline2--font_family--regular);
}
.Headline--sizeY-compact.Headline--level-2 {
font-size: var(--vkui--font_headline2--font_size--compact);
line-height: var(--vkui--font_headline2--line_height--compact);
}
@media (--sizeY-compact) {
.Headline--sizeY-none.Headline--level-2 {
font-size: var(--vkui--font_headline2--font_size--compact);
line-height: var(--vkui--font_headline2--line_height--compact);
}
}

Это можно считать идальным примером, но и тут есть ещё что улучшить.
Например, для режима compact отстутсвует использование токенов для font-weight и font-family.
А они тоже могут быть иными, согласно дизайн системе, по крайней мере font-weight в compact режиме точно может быть изменён через токены, а значит и мы должны это в компоненте отобразить.
На счёт font-family, конечно, вопрос, может быть это можно и не добавлять.

Общие требования для всех Typography компонентов

  1. compact режим, в котором используются compact токены для всех режимов, для которых предусмотрены токены, например level. Пример DisplayTitle1 DisplayTitle2 в vkui-tokens
  2. в отдельных режимах также должны присутствовать токены font-weight и font-family. font-family перебор?
  3. в отдельных режимах должны присутствовать токены letterSpacing и textTransform, по крайней мере для компонентов Caption и Footnote. Пример в vkui-tokens

Компоненты, которые нужно дополнить.

Проблема с font-weight. #7549

Отдельно хочется подчеркнуть проблему с font-weight.
font-weight в дизайн системе может выглядеть как отдельны режим.
Мы позволяем менять font-weight с помощью свойства weight компонента Typography, который под капотом у всех других типографических элементов.

/**
* Задаёт начертание шрифта, отличное от стандартного.
*/
weight?: '1' | '2' | '3';

Но Typography поддерживает не все токены, которые могут быть использованы в дизайн-системе.
Вот все токены fontWeight пока что существующие в vkui-tokens. Ссылка на токены темы paradigm

https://github.com/VKCOM/VKUI/blob/716657bed3a0498ac2458ec0b53f9e3bfa46da0d/packages/vkui/src/components/Typography/Typography.module.css#L12-L27

Сейчас VKUI поддерживает только разные уровни fontWeightAccent

.Typography--weight-1.Typography--weight-1.Typography--weight-1 {
font-weight: var(--vkui--font_weight_accent1);
}
.Typography--weight-2.Typography--weight-2.Typography--weight-2 {
font-weight: var(--vkui--font_weight_accent2);
}
.Typography--weight-3.Typography--weight-3.Typography--weight-3 {
font-weight: var(--vkui--font_weight_accent3);
}
/* stylelint-disable-next-line selector-max-type */
.Typography b {
font-weight: var(--vkui--font_weight_accent1);
}

Стоит также поддержать и уровни fontWeightBase, я видел использование таких токенов в дизайн системе, независимо от regular/compact. Например жирность была fontWeightBase равная 700 и в режиме compact и в режиме regular, что нельзя сейчас поддержать в VKUI.
Надо придумать как эти токены добавить.

Версия

v6.4.1

@andrey-medvedev-vk
Copy link
Contributor

Все компоненты типографики теперь знают о режиме compact начиная с версии v6.7.0

Чтобы адаптивность работала по дизайн системе нужно убедиться, что в токенах типографических элементов vkui-tokens прописан режим compact.
Как, например, тут

fontText: {
  regular: {
    fontSize: 16,
    lineHeight: 20,
    fontFamily: fontFamilyBase,
    fontWeight: fontWeightBase3,
  },
  compact: {
    fontSize: 15,
    lineHeight: 20,
  },
},

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

2 participants