Библиотека компонентов для вертикали SDDS PLATFORM AI

Реализация компонентов для создания веб-приложений.

Компоненты реализованы с помощью React и поставляются в двух вариантах:

Установка​

info

Требуются react и react-dom версии 16.13.1 или выше.

$ npm install --save react react-dom
$ npm install --save @salutejs/sdds-platform-ai @salutejs/sdds-themes

Дальнейшие шаги зависят от выбранного варианта поставки.

Для варианта на styled-components:

$ npm install --save styled-components@5.3.11

CSS-вариант дополнительных зависимостей не требует.

Варианты поставки​

info

CSS-вариант является поставкой по умолчанию.

Один и тот же набор компонентов доступен из двух точек входа:

Точка входаРеализацияДополнительные зависимости
@salutejs/sdds-platform-aiпредсобранный CSSнет
@salutejs/sdds-platform-ai/styled-componentsstyled-componentsstyled-components@5.3.11
import { Button } from '@salutejs/sdds-platform-ai';
// или
import { Button } from '@salutejs/sdds-platform-ai/styled-components';

Подключение шрифтов​

info

Для того чтобы шрифт было удобно поставлять в web-приложения, шрифт был загружен на CDN.

Типографическая система основана на фирменных шрифтах.

Для её использования, необходимо загрузить три css файла в зависимости от используемых шрифтов в теме.

info

Если в качестве основы web-приложения вы используете create-react-app, вам необходимо изменить файл ./public/index.html.

Добавить внутрь тега head.

<html>
<head>
<link rel="stylesheet" href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansText.0.2.0.css" />
<link
rel="stylesheet"
href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansDisplay.0.2.0.css"
/>
<link
rel="stylesheet"
href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansTextMono.0.2.0.css"
/>
<title>Web App</title>
</head>
<body>
...
</body>
</html>

Подключение темы​

Тема включает в себя цветовые и типографические токены и подключается один раз в корне приложения.

info

Точкой входа является корень приложения:

  • Если вы используете Create React App, делайте вызов внутри src/index.tsx.
  • Если вы используете Next.js, создайте файл pages/_app.tsx и подключите стили в нем.

Доступны светлая и тёмная темы — sdds_platform_ai__light и sdds_platform_ai__dark.

tip

Возможные дополнительные настройки в проекте:

Bundle tools:

import React from 'react';
import { Button, BodyL } from '@salutejs/sdds-platform-ai';

import '@salutejs/sdds-themes/css/sdds_platform_ai__light.css';

const App = () => {
return (
<>
<BodyL>Hello world</BodyL>
<Button text="This is themed button" />
</>
);
};

export default App;

Или подключите тему в файле, где собраны все стили приложения, например index.css

@import '@salutejs/sdds-themes/css/sdds_platform_ai__light.css';

Переключение тем​

tip

Возможные дополнительные настройки в проекте:

Bundle tools:

import React, { useLayoutEffect, useState } from 'react';
import { Switch } from '@salutejs/sdds-platform-ai';

import './index.css';

const App = () => {
const [theme, setTheme] = useState('light');

useLayoutEffect(() => {
document.documentElement.className = theme;
}, [theme]);

return (
<div className="wrapper">
<Switch
label={`app theme: ${theme}`}
onChange={() => {
setTheme((theme) => (theme === 'light' ? 'dark' : 'light'));
}}
/>
</div>
);
};

export default App;

В файле, где происходит подключение всех стилей, например index.css

@import '@salutejs/sdds-themes/css/sdds_platform_ai.module.css';

Использование компонентов​

Все компоненты доступны напрямую из пакета:

import { Button, BodyL } from '@salutejs/sdds-platform-ai';

export const App = () => {
return (
<>
<BodyL>Hello, SDDS PLATFORM AI!</BodyL>
<Button>Кнопка</Button>
</>
);
};

Использование токенов​

Все css токены завернуты в js переменные для более удобного доступа:

/** Основной цвет текста */
export const textPrimary = 'var(--text-primary, #F5F5F5)';
/** Основной фон */
export const backgroundPrimary = 'var(--background-primary, #000000)';

Так же в пакете есть типографические токены, для случаев, когда необходимо точечно применить типографику к контейнеру.

/** Токены типографики для компонента DsplL */
export const dsplL = ({
fontFamily: 'var(--plasma-typo-dspl-l-font-family)',
fontSize: 'var(--plasma-typo-dspl-l-font-size)',
fontStyle: 'var(--plasma-typo-dspl-l-font-style)',
fontWeight: 'var(--plasma-typo-dspl-l-font-weight)',
letterSpacing: 'var(--plasma-typo-dspl-l-letter-spacing)',
lineHeight: 'var(--plasma-typo-dspl-l-line-height)',
} as unknown) as CSSObject;

Есть два пути импорта токенов:

tip

Путь @salutejs/sdds-themes/tokens/sdds_platform_ai следует использовать, когда нужны токены, которые есть только в этой теме.

  • базовый набор — из @salutejs/sdds-themes/tokens
  • уникальные токены темы — из @salutejs/sdds-themes/tokens/sdds_platform_ai

Пример использования:

import React from 'react';
import styled from 'styled-components';
import { textAccent, backgroundPrimary, textL } from '@salutejs/sdds-themes/tokens';

const AppStyled = styled.div`
padding: 2rem;
color: ${textAccent};
background-color: ${backgroundPrimary};
`;

const Container = styled.div`
${textL};
margin: 1rem;
`;

const App = () => {
return (
<AppStyled>
<Container>
<span>Hello world</span>
</Container>
</AppStyled>
);
};

export default App;

Что дальше​

Подробные руководства собраны в разделе «Руководства»: