UIKit

Базовые UI-компоненты и токены для построения сервисов с Gravity.

UIKit · npm package npm downloads CI storybook tests storybook

English | Русский

Набор гибких, практичных и эффективных React-компонентов для создания насыщенных веб-приложений. Часть дизайн-системы Gravity UI.

О библиотеке

UIKit — базовый пакет дизайн-системы Gravity UI: проверенный в бою набор из 70+ React-компонентов для продакшен веб-приложений. Он берёт на себя сложные части — темизацию, доступность, RTL-раскладку, серверный рендеринг и интернационализацию, — чтобы вы могли сосредоточиться на своём продукте.

Ключевые возможности:

  • 70+ компонентов — поля ввода, оверлеи, отображение данных, layout-примитивы, обратная связь и многое другое
  • Встроенная темизация — светлая, тёмная и высококонтрастные темы, плюс интерактивный инструмент Themer для настройки токенов
  • Поддержка RTL — полноценная раскладка справа налево

Полный каталог компонентов — в Storybook и в документации.

Начало работы

Требования

В проекте должен быть установлен React 18 или 19.

Установка

npm install @gravity-ui/uikit

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

Импортируйте компоненты напрямую из пакета:

import {Button} from '@gravity-ui/uikit';

const SubmitButton = (
  <Button view="action" size="l">
    Отправить
  </Button>
);

Стили

Подключите базовые стили и шрифты один раз в точке входа приложения:

// index.js
import '@gravity-ui/uikit/styles/fonts.css';
import '@gravity-ui/uikit/styles/styles.css';

Также доступен SCSS-файл с полезными миксинами для использования в ваших собственных стилях.

Руководства

Подробнее:

Точки входа

Точка входаЧто тамКогда брать
@gravity-ui/uikitКомпоненты, хуки и утилитыВсегда — это и есть пакет
@gravity-ui/uikit/styles/*Глобальные CSS и SCSS-миксиныОдин раз в точке входа приложения, см. Стили
@gravity-ui/uikit/i18naddLanguageKeysets, addComponentKeysetsДобавить или переопределить встроенные тексты компонентов
@gravity-ui/uikit/servergetRootClassNameСгенерировать корневой класс на сервере, см. SSR
@gravity-ui/uikit/toaster-singletonГотовый инстанс ToasterПоказывать тосты вне дерева React
@gravity-ui/uikit/virtualizerVirtualizer, ListVirtualizerРендерить только видимое окно длинного списка
@gravity-ui/uikit/hello-pangea-dndListHelloPangeaDnd, useListHelloPangeaDndПереупорядочивать строки списка через @hello-pangea/dnd
@gravity-ui/uikit/unstableКомпоненты, чей API ещё меняетсяНа свой риск — они ломаются и вне мажорных релизов
@gravity-ui/uikit/legacyDropdownMenu, List, Menu, Table, TableColumnSetupТолько пока мигрируете с них, см. Миграция на v8

Некоторым точкам входа нужны свои пакеты — они объявлены необязательными peer-зависимостями: поставьте их рядом с @gravity-ui/uikit, если импортируете оттуда. Всё остальное приносит сам пакет.

Точка входаЧто поставить
@gravity-ui/uikit/virtualizer@tanstack/react-virtual
@gravity-ui/uikit/hello-pangea-dnd@hello-pangea/dnd
@gravity-ui/uikit/legacy@hello-pangea/dnd, react-window, react-virtualized-auto-sizer

Разработка

git clone git@github.com:gravity-ui/uikit.git
cd uikit
npm ci
npm run start   # запускает Storybook на http://localhost:7007

Другие полезные команды:

npm test              # запуск юнит-тестов
npm run lint          # линтинг JS, SCSS и Markdown
npm run typecheck     # проверка типов TypeScript
npm run playwright    # визуальные регрессионные тесты

Мейнтейнеры

amje
@amje
ValeraS
@ValeraS
korvin89
@korvin89

Участие в разработке

Мы рады вашему вкладу! Пожалуйста, прочитайте CONTRIBUTING.md перед отправкой pull request. Подробные рекомендации по оформлению PR — в contribute/pull-request.md.

У нас уже contributors контрибьюторов — присоединяйтесь!

Вопросы и обсуждения — в сообществе в Telegram.

Лицензия

Распространяется под лицензией MIT. Подробности — в файле LICENSE.

История звёзд

Star History Chart

Если UIKit оказался вам полезен, поставьте ⭐ на GitHub — это помогает другим находить проект.

О библиотеке
Поддержите библиотеку звездой
Версия
8.0.0
Последнее обновление
23.10.2026
Репозиторий
github.com/gravity-ui/uikit
Лицензия
MIT License
Maintainers
Участники