Skip to content

plasma-icons: Fix plasma icons exports#2800

Merged
Yakutoc merged 6 commits into
devfrom
fix-plasma-icons-exports
May 26, 2026
Merged

plasma-icons: Fix plasma icons exports#2800
Yakutoc merged 6 commits into
devfrom
fix-plasma-icons-exports

Conversation

@Yakutoc
Copy link
Copy Markdown
Collaborator

@Yakutoc Yakutoc commented May 25, 2026

Core

Icons

  • добавлена возможность import для каждого размера отдельно

What/why changed

Пример в песочнице - https://codesandbox.io/p/sandbox/plasma-web-example-forked-6kvwl3

Главный barrel `@salutejs/plasma-icons` через `Icons/IconX.tsx`
статически импортирует все три ассета (`Icon.assets.16/24/36`) и
выбирает один в рантайме по prop `size`. Tree-shaking не может
выбросить неиспользуемые размеры — все три считаются «used by name».

**На typical-приложении с ~80 иконками это даёт ~800 КБ raw / 350 КБ gz
лишнего веса (триплицированные SVG-ассеты).**

Генератор теперь параллельно с `Icons/IconX.tsx` эмитит
single-size компоненты `Icons.16/IconX.tsx`, `Icons.24/IconX.tsx`,
`Icons.36/IconX.tsx`, каждый из которых импортирует ровно один
ассет своего размера. Плюс barrel-файлы `index.16.ts`, `index.24.ts`,
`index.36.ts` экспортируют все single-size компоненты + реэкспортируют
legacy-иконки из `old/Icons/` (у них размер фиксирован в SVG).

Публичный API расширен через `exports`:
- `@salutejs/plasma-icons/16` → 16-px вариант всех иконок
- `@salutejs/plasma-icons/24` → 24-px (`size="s"` по умолчанию)
- `@salutejs/plasma-icons/36` → 36-px

Старый импорт `@salutejs/plasma-icons` сохраняется без изменений.

Эффект на бандл потребителя при использовании одного размера:
~786 КБ raw → 193 КБ raw.

детали в #2792

📦 Published PR as canary version: Canary Versions

✨ Test out this PR locally via:

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

@github-actions
Copy link
Copy Markdown
Contributor

Theme Builder app deployed!

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

@Yakutoc Yakutoc changed the title Fix plasma icons exports plasma-icons: Fix plasma icons exports May 25, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Documentation preview deployed!

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

@Yakutoc Yakutoc marked this pull request as ready for review May 25, 2026 14:51
@github-actions github-actions Bot requested review from shuga2704 and removed request for TitanKuzmich and shuga2704 May 25, 2026 14:52
@Yakutoc Yakutoc requested a review from IgorYar May 25, 2026 17:30
@Yakutoc Yakutoc added this pull request to the merge queue May 26, 2026
Merged via the queue into dev with commit 78db9e5 May 26, 2026
85 of 86 checks passed
@Yakutoc Yakutoc deleted the fix-plasma-icons-exports branch May 26, 2026 09:10
@github-actions
Copy link
Copy Markdown
Contributor

This PR is included in version:

  • @salutejs/plasma-asdk@0.377.0
  • @salutejs/plasma-b2c@1.619.0
  • @salutejs/plasma-core@1.227.0
  • @salutejs/plasma-giga@0.346.0
  • @salutejs/plasma-homeds@0.346.0
  • @salutejs/plasma-hope@1.373.0
  • @salutejs/plasma-icons@1.238.0
  • @salutejs/plasma-new-hope@0.363.0
  • @salutejs/plasma-tokens-b2b@1.55.0
  • @salutejs/plasma-tokens-b2c@0.66.0
  • @salutejs/plasma-tokens-web@1.70.0
  • @salutejs/plasma-tokens@1.139.0
  • @salutejs/plasma-typo@0.43.0
  • @salutejs/plasma-ui@1.349.0
  • @salutejs/plasma-web@1.621.0
  • @salutejs/sdds-bizcom@0.351.0
  • @salutejs/sdds-cs@0.355.0
  • @salutejs/sdds-dfa@0.349.0
  • @salutejs/sdds-finai@0.342.0
  • @salutejs/sdds-insol@0.346.0
  • @salutejs/sdds-netology@0.350.0
  • @salutejs/sdds-os@0.21.0
  • @salutejs/sdds-platform-ai@0.350.0
  • @salutejs/sdds-sbcom@0.351.0
  • @salutejs/sdds-scan@0.349.0
  • @salutejs/sdds-serv@0.350.0
  • @salutejs/core-themes@0.30.0
  • @salutejs/plasma-themes@0.51.0
  • @salutejs/sdds-themes@0.66.0
  • @salutejs/sdds-api-tests@0.8.0
  • @salutejs/plasma-cy-utils@0.157.0
  • @salutejs/plasma-sb-utils@0.227.0
  • @salutejs/plasma-tokens-utils@0.51.0

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants