Skip to content

PLASMA-7077: Черновик механизма для адаптива на уровне конфигураций#2804

Draft
Yakutoc wants to merge 3 commits into
devfrom
rnd-adaptive
Draft

PLASMA-7077: Черновик механизма для адаптива на уровне конфигураций#2804
Yakutoc wants to merge 3 commits into
devfrom
rnd-adaptive

Conversation

@Yakutoc
Copy link
Copy Markdown
Collaborator

@Yakutoc Yakutoc commented May 25, 2026

What/why changed

📦 Published PR as canary version: Canary Versions

✨ Test out this PR locally via:

npm install @salutejs/plasma-asdk@0.376.0-canary.2804.26410831538.0
npm install @salutejs/plasma-b2c@1.618.0-canary.2804.26410831538.0
npm install @salutejs/plasma-core@1.226.0-canary.2804.26410831538.0
npm install @salutejs/plasma-giga@0.345.0-canary.2804.26410831538.0
npm install @salutejs/plasma-homeds@0.345.0-canary.2804.26410831538.0
npm install @salutejs/plasma-hope@1.372.0-canary.2804.26410831538.0
npm install @salutejs/plasma-icons@1.238.0-canary.2804.26410831538.0
npm install @salutejs/plasma-new-hope@0.362.0-canary.2804.26410831538.0
npm install @salutejs/plasma-tokens-b2b@1.55.0-canary.2804.26410831538.0
npm install @salutejs/plasma-tokens-b2c@0.66.0-canary.2804.26410831538.0
npm install @salutejs/plasma-tokens-web@1.70.0-canary.2804.26410831538.0
npm install @salutejs/plasma-tokens@1.138.0-canary.2804.26410831538.0
npm install @salutejs/plasma-typo@0.43.0-canary.2804.26410831538.0
npm install @salutejs/plasma-ui@1.348.0-canary.2804.26410831538.0
npm install @salutejs/plasma-web@1.620.0-canary.2804.26410831538.0
npm install @salutejs/sdds-bizcom@0.350.0-canary.2804.26410831538.0
npm install @salutejs/sdds-cs@0.354.0-canary.2804.26410831538.0
npm install @salutejs/sdds-dfa@0.348.0-canary.2804.26410831538.0
npm install @salutejs/sdds-finai@0.341.0-canary.2804.26410831538.0
npm install @salutejs/sdds-insol@0.345.0-canary.2804.26410831538.0
npm install @salutejs/sdds-netology@0.349.0-canary.2804.26410831538.0
npm install @salutejs/sdds-os@0.20.0-canary.2804.26410831538.0
npm install @salutejs/sdds-platform-ai@0.349.0-canary.2804.26410831538.0
npm install @salutejs/sdds-sbcom@0.350.0-canary.2804.26410831538.0
npm install @salutejs/sdds-scan@0.348.0-canary.2804.26410831538.0
npm install @salutejs/sdds-serv@0.349.0-canary.2804.26410831538.0
npm install @salutejs/core-themes@0.30.0-canary.2804.26410831538.0
npm install @salutejs/plasma-themes@0.50.0-canary.2804.26410831538.0
npm install @salutejs/sdds-themes@0.65.0-canary.2804.26410831538.0
npm install @salutejs/sdds-api-tests@0.7.0-canary.2804.26410831538.0
npm install @salutejs/plasma-cy-utils@0.156.0-canary.2804.26410831538.0
npm install @salutejs/plasma-sb-utils@0.226.0-canary.2804.26410831538.0
npm install @salutejs/plasma-tokens-utils@0.51.0-canary.2804.26410831538.0
# or 
yarn add @salutejs/plasma-asdk@0.376.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-b2c@1.618.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-core@1.226.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-giga@0.345.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-homeds@0.345.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-hope@1.372.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-icons@1.238.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-new-hope@0.362.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-tokens-b2b@1.55.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-tokens-b2c@0.66.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-tokens-web@1.70.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-tokens@1.138.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-typo@0.43.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-ui@1.348.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-web@1.620.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-bizcom@0.350.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-cs@0.354.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-dfa@0.348.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-finai@0.341.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-insol@0.345.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-netology@0.349.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-os@0.20.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-platform-ai@0.349.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-sbcom@0.350.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-scan@0.348.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-serv@0.349.0-canary.2804.26410831538.0
yarn add @salutejs/core-themes@0.30.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-themes@0.50.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-themes@0.65.0-canary.2804.26410831538.0
yarn add @salutejs/sdds-api-tests@0.7.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-cy-utils@0.156.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-sb-utils@0.226.0-canary.2804.26410831538.0
yarn add @salutejs/plasma-tokens-utils@0.51.0-canary.2804.26410831538.0

@Yakutoc Yakutoc self-assigned this May 25, 2026
@Yakutoc Yakutoc changed the title Rnd adaptive PLASMA-: Черновик механизма для адаптива на уровне конфигураций May 25, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Theme Builder app deployed!

https://plasma.sberdevices.ru/pr/plasma-theme-builder-pr-2804/

@github-actions
Copy link
Copy Markdown
Contributor

Documentation preview deployed!

website: https://plasma.sberdevices.ru/pr/pr-2804/
asdk storybook: https://plasma.sberdevices.ru/pr/pr-2804/asdk-storybook/
b2c storybook: https://plasma.sberdevices.ru/pr/pr-2804/b2c-storybook/
giga storybook: https://plasma.sberdevices.ru/pr/pr-2804/giga-storybook/
homeds storybook: https://plasma.sberdevices.ru/pr/pr-2804/homeds-storybook/
new-hope storybook: https://plasma.sberdevices.ru/pr/pr-2804/new-hope-storybook/
web storybook: https://plasma.sberdevices.ru/pr/pr-2804/web-storybook/
sdds-bizcom storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-bizcom-storybook/
sdds-cs storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-cs-storybook/
sdds-dfa storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-dfa-storybook/
sdds-finai storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-finai-storybook/
sdds-insol storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-insol-storybook/
sdds-netology storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-netology-storybook/
sdds-os storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-os-storybook/
sdds-platform-ai storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-platform-ai-storybook/
sdds-sbcom storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-sbcom-storybook/
sdds-scan storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-scan-storybook/
sdds-serv storybook: https://plasma.sberdevices.ru/pr/pr-2804/sdds-serv-storybook/
ui storybook: https://plasma.sberdevices.ru/pr/pr-2804/ui-storybook/

// На экранах ≤559px компактный `m` сменяется на `s` —
// чтобы интерактивная зона стала комфортнее на мобиле.
responsive: css`
${getResponsiveCSS([{ from: undefined, to: 559, size: sizeS }])}
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Note]:

  1. На этапе сборки пакета сборщик сканирует исходники и ищет css``. Только то, что обёрнуто этим тегом, он считает стилями для компиляции.
  2. Внутри обёртки лежит вызов getResponsiveCSS([...]). Сборщик исполняет его прямо во время сборки и получает строку с готовыми @media-блоками.
  3. Эту строку сборщик кладёт в общий файл стилей пакета как обычный CSS-класс — все @media сразу оказываются в стайлшите.
  4. В JS на месте обёртки остаётся только имя класса.
  5. В браузере компонент добавляет это имя к элементу - браузер применяет уже готовые правила. Ничего «на лету» в браузере не строится.

Почему обёртка css обязательна

  1. Без обёртки массив или строка — это обычные данные в JS-объекте.
  2. Сборщик стилей такие данные не трогает — он смотрит только на css`...`.
  3. В итоговом CSS-файле не появится ни одного @media.
  4. Достроить эти стили в браузере тоже не из чего — рантайм-сборщика стилей на этом пути в проекте нет.
  5. Итог: адаптив не сработает.

Comment on lines 208 to 213
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Кажется что надо предусмотреть, чтобы под каждый размер генерились адаптивы. Условно если изначально установили size=xl, то это для него респосив. Если установили size=m, то уже будет другой респонсив

${getResponsiveCSS([
            { from: 0, to: undefined, size: sizeM },
        ])}

@Yakutoc Yakutoc changed the title PLASMA-: Черновик механизма для адаптива на уровне конфигураций PLASMA-7077: Черновик механизма для адаптива на уровне конфигураций May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants