Design system create
Минимально жизнеспособная дизайн-система — это:
- Tokens (цвета, типографика, отступы, радиусы, тени).
- Components (кнопка, инпут, карточка, бейдж — ядро).
- Принципы (1 страница: что считается «правильным»).
- Примеры — компоненты в работе на 2-3 экранах.
Не делай сразу 50 компонентов. Начни с ядра, расширяй по мере появления реальных нужд.
Структура файлов
design-system/
README.md
tokens.css
tokens.json
type.html ← страница со всеми текстовыми стилями
colors.html ← страница с палитрой
components/
button.html
input.html
card.html
badge.html
examples/
landing.html
settings.html
tokens.css — обязательный минимум
:root {
/* Цвета */
--color-bg: #FAF9F6;
--color-fg: #111111;
--color-muted: #6B6B6B;
--color-rule: rgba(0, 0, 0, 0.08);
--color-primary: #D97757;
--color-success: #2E7D5F;
--color-warning: #C58B14;
--color-danger: #C24E3A;
/* Типографика */
--font-display: "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-body: "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
/* Шкала размеров */
--text-xs: 12px;
--text-sm: 14px;
--text-base: 16px;
--text-lg: 18px;
--text-xl: 24px;
--text-2xl: 32px;
--text-3xl: 48px;
--text-4xl: 72px;
/* Spacing — кратно 4 */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-6: 24px;
--space-8: 32px;
--space-12: 48px;
--space-20: 80px;
/* Радиусы */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 16px;
--radius-pill: 999px;
/* Тени */
--shadow-sm: 0 1px 2px rgba(0,0,0,.06);
--shadow-md: 0 4px 12px rgba(0,0,0,.08);
--shadow-lg: 0 30px 80px rgba(0,0,0,.12);
/* Время и easing */
--ease: cubic-bezier(0.4, 0, 0.2, 1);
--duration-fast: 120ms;
--duration-base: 200ms;
}
Принципы (template)
В README.md системы укажи:
- Цвета. Когда какой использовать. «Primary только для главного CTA на странице. Не больше двух primary-кнопок в один экран».
- Расстояния. Никаких magic numbers. Если 17px — значит, ты ошибся; нужно 16 или 24.
- Типографика. Какой шрифт где. Не больше 3 размеров на экран.
- Бордеры и тени. Когда уместны, когда нет.
- Состояния. Что должно быть у любого интерактивного элемента.
Минимальные компоненты ядра
Button
3 варианта × 3 размера = 9 кнопок:
- variants: primary, secondary, ghost
- sizes: sm (32px), md (40px), lg (48px)
- states: default, hover, active, focus-visible, disabled, loading
Input
- text, password, email, number, search, textarea
- states: default, focus, filled, error, disabled
- с label, helper, error
Card
- minimum padding, border, optional shadow
- header / body / footer slots
Badge
- info, success, warning, danger, neutral
- sizes: sm, md
Дальше — что реально нужно.
Что НЕ нужно делать на старте
- ❌ Колорпикер с 12 оттенками каждого цвета. Достаточно 3-4.
- ❌ 20 размеров шрифта. Достаточно 8.
- ❌ Сложные компоненты (data-grid, file-uploader) до того, как нужны.
- ❌ Несколько тем (light/dark) до базовой системы.
Финальная проверка
Открой examples/landing.html или settings.html. Если для построения нужно было что-то «доделать руками» — это пробел в системе. Закрой пробел токеном или компонентом, не inline-стилем.
1---2name: design-system-create3description: Собрать дизайн-систему с нуля: токены, типографика, компоненты, гайдлайны. Триггеры: «создай дизайн-систему», «UI-кит», «общие токены проекта».4---56# Design system create78Минимально жизнеспособная дизайн-система — это:9101. **Tokens** (цвета, типографика, отступы, радиусы, тени).112. **Components** (кнопка, инпут, карточка, бейдж — ядро).123. **Принципы** (1 страница: что считается «правильным»).134. **Примеры** — компоненты в работе на 2-3 экранах.1415Не делай сразу 50 компонентов. Начни с ядра, расширяй по мере появления реальных нужд.1617## Структура файлов1819```20design-system/21 README.md22 tokens.css23 tokens.json24 type.html ← страница со всеми текстовыми стилями25 colors.html ← страница с палитрой26 components/27 button.html28 input.html29 card.html30 badge.html31 examples/32 landing.html33 settings.html34```3536## tokens.css — обязательный минимум3738```css39:root {40 /* Цвета */41 --color-bg: #FAF9F6;42 --color-fg: #111111;43 --color-muted: #6B6B6B;44 --color-rule: rgba(0, 0, 0, 0.08);45 --color-primary: #D97757;46 --color-success: #2E7D5F;47 --color-warning: #C58B14;48 --color-danger: #C24E3A;4950 /* Типографика */51 --font-display: "Helvetica Neue", Helvetica, Arial, sans-serif;52 --font-body: "Helvetica Neue", Helvetica, Arial, sans-serif;53 --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;5455 /* Шкала размеров */56 --text-xs: 12px;57 --text-sm: 14px;58 --text-base: 16px;59 --text-lg: 18px;60 --text-xl: 24px;61 --text-2xl: 32px;62 --text-3xl: 48px;63 --text-4xl: 72px;6465 /* Spacing — кратно 4 */66 --space-1: 4px;67 --space-2: 8px;68 --space-3: 12px;69 --space-4: 16px;70 --space-6: 24px;71 --space-8: 32px;72 --space-12: 48px;73 --space-20: 80px;7475 /* Радиусы */76 --radius-sm: 4px;77 --radius-md: 8px;78 --radius-lg: 16px;79 --radius-pill: 999px;8081 /* Тени */82 --shadow-sm: 0 1px 2px rgba(0,0,0,.06);83 --shadow-md: 0 4px 12px rgba(0,0,0,.08);84 --shadow-lg: 0 30px 80px rgba(0,0,0,.12);8586 /* Время и easing */87 --ease: cubic-bezier(0.4, 0, 0.2, 1);88 --duration-fast: 120ms;89 --duration-base: 200ms;90}91```9293## Принципы (template)9495В `README.md` системы укажи:9697- **Цвета.** Когда какой использовать. «Primary только для главного CTA на странице. Не больше двух primary-кнопок в один экран».98- **Расстояния.** Никаких magic numbers. Если 17px — значит, ты ошибся; нужно 16 или 24.99- **Типографика.** Какой шрифт где. Не больше 3 размеров на экран.100- **Бордеры и тени.** Когда уместны, когда нет.101- **Состояния.** Что должно быть у любого интерактивного элемента.102103## Минимальные компоненты ядра104105### Button1061073 варианта × 3 размера = 9 кнопок:108- variants: primary, secondary, ghost109- sizes: sm (32px), md (40px), lg (48px)110- states: default, hover, active, focus-visible, disabled, loading111112### Input113- text, password, email, number, search, textarea114- states: default, focus, filled, error, disabled115- с label, helper, error116117### Card118- minimum padding, border, optional shadow119- header / body / footer slots120121### Badge122- info, success, warning, danger, neutral123- sizes: sm, md124125Дальше — что реально нужно.126127## Что НЕ нужно делать на старте128129- ❌ Колорпикер с 12 оттенками каждого цвета. Достаточно 3-4.130- ❌ 20 размеров шрифта. Достаточно 8.131- ❌ Сложные компоненты (data-grid, file-uploader) до того, как нужны.132- ❌ Несколько тем (light/dark) до базовой системы.133134## Финальная проверка135136Открой `examples/landing.html` или `settings.html`. Если для построения нужно было что-то «доделать руками» — это пробел в системе. Закрой пробел токеном или компонентом, не inline-стилем.