Typography
Installation
npm i @snack-uikit/typography
Description
- Пакет
@snack-uikit/typographyпредоставляет компонентTypographyдля единообразного отображения текстового контента с поддержкой различных шрифтов, размеров и ролей. - Компонент позволяет задавать типографику через комбинацию трёх обязательных пропсов:
family(шрифт),purpose(роль текста) иsize(размер), что обеспечивает гибкость и консистентность оформления текста во всём приложении. - Поддерживает пять типов шрифтов:
sans(основной),light(лёгкий),link(для ссылок),mono(моноширинный) иcrossed-out(зачёркнутый). - Предоставляет пять ролей текста:
display(крупные заголовки),headline(заголовки),title(подзаголовки),label(метки) иbody(основной текст). - Поддерживает три размера:
s(малый),m(средний) иl(большой). - Позволяет выбирать HTML-тег для рендеринга (
span,h1-h6,div,label,p), что обеспечивает правильную семантику и доступность. - Автоматически генерирует предустановленные варианты компонента вида
Typography.{Family}{Purpose}{Size}(например,Typography.SansDisplayS), которые можно использовать без указания пропсовfamily,purposeиsize. - Figma:
Typography.
Example
import { Typography } from '@snack-uikit/typography';
function Example() {
return (
<Typography
family='sans'
purpose='display'
size='s'
tag='h1'
className='some-element'
>
Some text
</Typography>
);
}
Также чтобы не указывать пропсы family, purpose и size, воспользуйтесь нужным предустановленным вариантом:
import { Typography } from '@snack-uikit/typography';
function Example() {
return (
<Typography.SansDisplayS tag='h1' className='some-element'>
Some text
</Typography.SansDisplayS>
);
}
Все компоненты вида <Typography.{Family}{Purpose}{Size} /> генерируются автоматически при выполнении команды npm run build:packages.
Как добавить новый компонент такого вида?
- Добавить новое свойство в один или несколько объектов FAMILY, PURPOSE, SIZE в файле
constants.ts, который лежит вtypography/src/components/constants.ts - Запустить скрипт compile в package.json пакета
@typography"npm run build:typography-components && npm run build:constants && npm run build:index" - Готово! Можете использовать
Typographyс новым свойством
Typography
Props
| name | type | default value | description |
|---|---|---|---|
| size* | enum Size: "s", "l", "m" |
- | Размер |
| purpose* | enum Purpose: "label", "body", "title", "display", "headline" |
- | Роль |
| family* | enum Family: "link", "sans", "light", "mono", "crossed-out" |
- | Шрифт |
| tag | enum Tag: "span", "h1", "h2", "h3", "h4", "h5", "h6", "div", "label", "p" |
span | HTML-тег |
| className | string |
- | CSS-класс |
| children | ReactNode |
- | Контент |