Добро пожаловать в Storybook. Здесь приведены примеры компонентов React на основе библиотеки primereact и хуков, которые могут быть полезны в наших проектах. Подробную документацию по компонентам можно найти в документации primereact.
-
Установите пакет:
npm install @cdek/primereact
-
Импортируйте тему в SCSS-файл вашего проекта:
@use '@cdek/primereact/dist/style.scss';
В вашем проекте должны быть установлены следующие зависимости с минимальными версиями, указанными ниже:
{
"@cdek-it/typography": "^3.0.0",
"@tabler/icons-react": "^3.34.0",
"primereact": "^10.9.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0", // опционально
"@types/react-dom": "^19.0.4" // опционально
}Для совместимости со старыми браузерами, которые не поддерживают @layer, необходимо заменить его на другой синтаксис. Это можно сделать с помощью vite-plugin-string-replace.
-
Установите плагин:
npm install -D vite-plugin-string-replace
-
Добавьте плагин в ваш
vite.config.ts:import { defineConfig } from 'vite'; import StringReplace from 'vite-plugin-string-replace'; export default defineConfig({ // ... plugins: [ //... StringReplace([ { search: '@layer primereact {', replace: '@media screen {', }, ]), //... ], });
В дизайн-системе в основном используются иконки из Tabler Icons. Начиная с версии 1.1.0, иконки не входят в пакет и должны подключаться отдельно.
Существует три способа подключения иконок:
- Как шрифт
- Как SVG-компоненты
- С CDN
Этот метод включает установку пакета @tabler/icons-webfont.
-
Установите пакет:
npm install @tabler/icons-webfont
-
Импортируйте шрифт в SCSS:
@import '@tabler/icons-webfont/dist/tabler-icons.min.css';
Предупреждение: При подключении иконок в виде шрифта вы включаете большое количество иконок (более 6000), что может значительно увеличить размер сборки и время загрузки. Во время загрузки шрифта иконки могут отображаться в виде квадратов. Для лучшей производительности рекомендуется использовать иконки SVG или CDN.
Этот метод позволяет включать в проект только те иконки, которые используются, что лучше для производительности.
-
Установите пакет:
npm install @tabler/icons-react
-
Если вы используете Vite, добавьте псевдоним в
vite.config.ts, чтобы избежать медленной начальной загрузки в режиме разработки://... resolve: { alias: { //... '@tabler/icons-react': '@tabler/icons-react/dist/esm/icons/index.mjs', }, }, //...
Для получения дополнительной информации см. эту ветку Stack Overflow.
Если вы не используете Tailwind CSS, вы можете импортировать утилитарные стили для иконок:
@use '@cdek/primereact/dist/utils/icons.scss';Это позволит вам использовать классы дизайн-системы, такие как icon-2xl вместо text-2xl.
Если вы используете Tailwind CSS, см. конфигурацию ниже.
Вы можете подключить иконки, добавив следующие ссылки в ваш index.html. Пожалуйста, уточните у фронтенд-гильдии последнюю версию.
<link rel="preconnect" href="https://public-static.cdek.ru" />
<link
rel="stylesheet"
href="https://public-static.cdek.ru/common/icons/v3.30.0/tabler-icons.min.css"
/>Если вы используете SCSS, вы можете импортировать миксины из пакета и использовать их в своих стилях:
@use '@cdek/primereact/dist/utils/mixins.scss' as *;Эта тема совместима с Tailwind CSS v3.
-
Установите необходимые зависимости:
npm install -D tailwindcss@^3.0.0 postcss autoprefixer
-
Настройте ваш
tailwind.config.js:/** @type {import('tailwindcss').Config} */ import { iconsPluginCallback, screens, themeExtend, } from '@cdek/primereact/tailwind-config'; import plugin from 'tailwindcss/plugin'; export default { content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], theme: { screens, extend: { // содержит все расширения темы для дизайн-системы ...themeExtend, }, }, plugins: [ // Плагин для использования классов размеров иконок, таких как icon-2xl, icon-[111px], md:icon-3xl plugin(iconsPluginCallback), ], };
-
Если вам не нужны все расширения темы, вы можете импортировать только необходимые части:
/** @type {import('tailwindcss').Config} */ import { iconsPluginCallback, screens, // только необходимые части темы colors, additionalColors, // для плавного перехода от старых имен к новым fontFamily, additionalFontFamily, // для плавного перехода от старых имен к новым fontSize, } from '@cdek/primereact/tailwind-config'; export default { theme: { screens, extend: { colors: { ...colors, ...additionalColors, }, fontFamily: { ...fontFamily, ...additionalFontFamily, }, fontSize: { ...fontSize, }, }, }, };
Полный перечень переменных для импорта:
screenscolorsborderRadiusborderWidthboxShadowfontFamilyfontSizefontWeightlineHeightopacitysizingspacingtransitionDurationtransitionTimingFunctionzIndexadditionalColors(для плавного перехода от старых имен к новым)additionalBoxShadow(для плавного перехода от старых имен к новым)additionalFontFamily(для плавного перехода от старых имен к новым)
-
Настройте ваш
postcss.config.js:export default { plugins: { 'postcss-import': {}, tailwindcss: {}, autoprefixer: {}, }, };
-
Типографику следует использовать из пакета https://github.com/cdek-it/typography
@use '@cdek-it/typography/dist/index.min.css';
Важно: Для типографики используйте пакет @cdek-it/typography