Типографическая система
Текст – основа интерфейса. Типографическая система Plasma разработана, чтобы текст выглядел одинаково во всей экосистеме Salute.
Типографическая система представляет собой набор констант (токенов) и компонентов.
Компоненты заменяют обычные HTML-теги, такие, как h1
, h2
, h3
, h4
, p
и некоторые другие.
Использование
import { BodyL } from '@salutejs/plasma-web';
import { bodyL } from '@salutejs/plasma-typo';
export default function App() {
return (
<>
{/* как компонент */}
<BodyL>Hello, World!</BodyL>
{/* как стилевой токен */}
<div style={bodyL}>This is Plasma.</div>
</>
);
}
Состав
Типографика дизайн-системы Plasma включает в себя следующие компоненты:
- Hero Unit:
- DsplL
- DsplM
- DsplS
- Заголовки:
- H1
- H2
- H3
- H4
- H5
- Интерфейсы:
- BodyL
- BodyM
- BodyS
- BodyXS
- BodyXXS
- Текст:
- TextL
- TextM
- TextS
- TextXS
Размеры
Размер текста в объектах стилей, которые предоставляет типографическая система, задан в единицах измерения rem
.
export const bodyL = {
fontFamily: 'var(--plasma-typo-body-l-font-family)',
fontSize: 'var(--plasma-typo-body-l-font-size)',
fontStyle: 'var(--plasma-typo-body-l-font-style)',
fontWeight: 'var(--plasma-typo-body-l-font-weight)',
letterSpacing: 'var(--plasma-typo-body-l-letter-spacing)',
lineHeight: 'var(--plasma-typo-body-l-line-height)'
};
Это позволяет масштабировать весь интерфейс за счёт указания font-size
на теге <html>
.
Значение по умолчанию — 16px
.
html {
font-size: 16px;
}
При использовании стандартной типографики устанавливать размер шрифта на теге
<html>
не обязательно, это уже предусмотрено в глобальных стилях.
Установка шрифта
Типографическая система основана на фирменных шрифтах SB Sans Display (для заголовков) и SB Sans Text (для текста и компонентов).
Для подключения в веб-приложения, шрифт загружен в CDN.
Чтобы использовать типографическую систему, достаточно указать один CSS-файл внутри тега <head>
.
- Если вы используете Create React App, подключите систему в файле
public/index.html
. - Если вы используете Next.js, создайте файл
pages/_document.tsx
и подключите систему в нем.
- Create React App
- Next.js
<html>
<head>
<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/SBSansText.0.2.0.css"
/>
</head>
<body>
...
</body>
</html>
import BaseDocument, { Html, Head, Main, NextScript } from 'next/document';
export default class Document extends BaseDocument {
render() {
return (
<Html>
<Head>
<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/SBSansText.0.2.0.css"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
Типографика, совместимая со старыми версиями
См. на странице Совместимая типографика.