Дизайн-система для Vue 3
Мельче части — прочнее система.
Интерфейсы собираются из компонентов, основ и утилит. В сборку уезжает ровно то, что вы импортировали, — и ничего сверх.
| Компонент | CSS | JS |
|---|---|---|
GrCard | + 764 B | 3 483 B |
GrDialog | + 1 111 B | 11 779 B |
GrDataTable | + 4 398 B | 37 790 B |
GrSelect | + 4 311 B | 24 283 B |
GrDataTable и GrSelect стоят почти одинаково по стилям, а по коду расходятся в полтора с лишним раза. Одна цифра не предсказывает другую.
Сжато, только пакет: фреймворк ваш, и в этих числах его нет.
Не картинка
Работающий экран, собранный из тех же компонентов.
Store overview
- Revenue
- €21 480
- Orders
- 486
- Conversion
- 3,4%
- Average basket
- €44,20
Daily revenue
Thousands of euros
То же демо, что стоит на странице GrStatistic: ради главной ничего не написано во второй раз.
Гранулярность
147 путей экспорта. Берёте компонент, composable или одну директиву — граф зависимостей на этом заканчивается.
Согласованность
Цвет, отступ и радиус — это роль, а не значение. Оба режима равноправны, и контраст проверяется в обоих.
Своя тема
Ребрендинг — это смена значений токенов. Исходники компонентов при этом не трогаются.
Для разработчика
Типы, авто-импорт, метаданные для IDE. Контракт доступности проверяется гейтом, а не декларируется.
Одна цена, четыре разреза
Одну цифру напечатать было бы проще.
Каждое число снято со сборки и сжато. Фреймворк в них не входит: он ваш, а не мой. Какой из разрезов важен, зависит от того, что вас ограничивает, — поэтому здесь все четыре.
Во что обойдётся начать
8 529B, дальше почти ничего
base + GrButton8 529 B+ GrCard+ 764 B+ GrDialog+ 1 111 B+ GrDataTable+ 4 398 B+ GrSelect+ 4 311 BПервый компонент несёт токены, оба режима и базовый слой. Следующие четыре вместе стоят всё ещё меньше, чем он один.
Все ли компоненты лёгкие
15.7×разброс по набору
GrBadge2 402 BGrCard3 483 BGrAlert4 424 BGrButton4 913 BGrTabs5 432 BGrDialog11 779 BGrSelect24 283 BGrDataTable37 790 BНет. Разброс — от GrBadge до GrDataTable, а насколько, сказано числом выше. Если библиотека говорит, что все её компоненты лёгкие, — она их не мерила.
Что вы берёте на себя
1зависимость — свои же токены
147 путей экспорта
Под узлом — только собственный пакет токенов семейства, а под ним уже ничего. Ваш lock-файл, ваша поверхность аудита и ваш путь обновления остаются вашими, а 147 путей экспорта означают, что граф останавливается там же, где вы.
Во что обходится второй режим
560B, при любом размере
1 · 7 969 B2 · 8 529 BЧисло почти не меняется между одним компонентом и всеми 84. Отказ от тёмного режима — не то место, где экономят вес.
Замерено 2026-10-28 · core 3.7.2 · granum 3.13.0 · gzip
Модель
Четыре слоя, каждый собран из предыдущего. Имя продукта и есть его архитектура.
01
Tokens
Цвет, отступы, радиусы, движение и слои — именованными ролями.
02
Components
84 в ядре, плюс пакеты-спутники вокруг. Каждый берётся отдельно от прочих.
03
Patterns
Композиции под задачу: формы, поиск, настройки, оверлеи.
04
Interfaces
Целые экраны. Компонент полезен. Система ценна.
Основы
Токен — это роль, а не hex-код.
Цвет, отступ, радиус, движение и слои — именованные роли, прочитанные из пакета. Меняются значения — компоненты следуют за ними в обоих режимах.
- токенов
- 211
- режимы
- 2
- разделов основ
- 10
| Роль | Светлый | Тёмный |
|---|---|---|
--gr-bg | #f8fafc | #0f172a |
--gr-card | #ffffff | #1e293b |
--gr-fg | #0f172a | #f8fafc |
--gr-muted-fg | #556275 | #aab6c7 |
--gr-primary | #4f46e5 | #9d8bfa |
--gr-accent | #eef2ff | #1e1b4b |
От пустого проекта до кнопки
Четыре шага и ни одного генератора.
Весь путь быстрого старта: пакеты, конфиг granum, два импорта CSS и первый компонент. Ни одну строку за вас не пишет генератор.
Открытая разработка
Всё здесь проверяемо.
Цифры на сайте приходят из сборки, а не из текста. Каждая ведёт на страницу, где видно, откуда она взялась.
- Версия ядра3.7.2Выпущена 2026-10-28. Каждая страница читает номер из установленного пакета.Что изменилось →
- Гейты сборки40Исполняются на каждом пуше. Сверху настоящий браузер проверяет портал, Lighthouse, песочницу и живой сайт.Как это проверяется →
- Доступность41 × 2Шаблоны страниц проходят axe в обоих режимах, а сверху — прогоны клавиатуры, reflow и размера целей.Заявление о доступности →
- ЛицензияEUC-1.1Apache-2.0 с оговоркой об этичном использовании: source-available, не OSI-лицензия.Лицензирование →
Начните собирать на Granularity.
Самая короткая полезная страница — быстрый старт. Остальная документация подождёт, пока не понадобится.
Установка
npm i @feugene/granularity vue @floating-ui/dom @unocss/resetpnpm add @feugene/granularity vue @floating-ui/dom @unocss/resetyarn add @feugene/granularity vue @floating-ui/dom @unocss/resetbun add @feugene/granularity vue @floating-ui/dom @unocss/reset