一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
336 lines
32 KiB
Markdown
336 lines
32 KiB
Markdown
# Design System Inspired by IBM
|
||
|
||
> Category: Медиа и потребительский сектор
|
||
> Корпоративные технологии. Дизайн-система Carbon, структурированная синяя палитра.
|
||
|
||
## 1. Визуальная тема и атмосфера
|
||
|
||
Сайт IBM — это цифровое воплощение корпоративного авторитета, выстроенного на дизайн-системе Carbon: настолько методично структурированном языке дизайна, что он читается как инженерная спецификация, отрендеренная в виде веб-страницы. Страница строится на жёстком дуализме: яркий белый (`#ffffff`) холст с почти чёрным (`#161616`) текстом, пронизанный единственным неизменным акцентом — IBM Blue 60 (`#0f62fe`). Это не игривый минимализм технологического стартапа; это корпоративная точность, дистиллированная в пиксели. Каждый элемент существует внутри жёсткой сетки Carbon 2x, каждый цвет привязан к семантическому токену, каждое значение отступа привязывается к базовой единице 8px.
|
||
|
||
Шрифтовое семейство IBM Plex — основа системы. IBM Plex Sans с начертанием Light (300) для заголовков создаёт неожиданно лёгкое, почти изысканное качество при больших размерах — намеренный контрапункт корпоративной серьёзности IBM. При размерах основного текста начертание Regular (400) с межбуквенным интервалом 0.16px в подписях 14px вводит педантичный микроинтервал, благодаря которому текст Carbon ощущается скорее инженерным, чем дизайнерским. IBM Plex Mono обслуживает код, данные и технические метки, завершая трио семейства наряду с редко используемым IBM Plex Serif.
|
||
|
||
Что определяет визуальную идентичность IBM за пределами монохромности плюс синий — это опора на систему компонентных токенов Carbon. Каждое интерактивное состояние сопоставляется с CSS-свойством с префиксом `--cds-` (Carbon Design System). Кнопки не имеют жёстко заданных цветов; они ссылаются на `--cds-button-primary`, `--cds-button-primary-hover`, `--cds-button-primary-active`. Эта токенизированная архитектура означает, что весь визуальный слой — тонкая оболочка над глубоко систематизированным фундаментом: дизайнерский эквивалент хорошо типизированного API.
|
||
|
||
**Ключевые характеристики:**
|
||
- IBM Plex Sans с весом 300 (Light) для дисплейного использования — корпоративная весомость через типографическую сдержанность
|
||
- IBM Plex Mono для кода и технического контента с последовательным межбуквенным интервалом 0.16px при малых размерах
|
||
- Единственный акцентный цвет: IBM Blue 60 (`#0f62fe`) — каждый интерактивный элемент, каждый CTA, каждая ссылка
|
||
- Система токенов Carbon (`--cds-*`), управляющая всеми семантическими цветами и позволяющая переключать темы на уровне переменных
|
||
- Сетка отступов 8px со строгим соблюдением — никаких произвольных значений, всё выровнено
|
||
- Плоские карточки без рамок на поверхности `#f4f4f4` Gray 10 — глубина через наслоение цветов фона, а не тени
|
||
- Поля ввода с нижней рамкой (не в рамке) — фирменный паттерн форм Carbon
|
||
- Радиус скругления 0px у основных кнопок — подчёркнуто прямоугольные, без смягчения
|
||
|
||
## 2. Цветовая палитра и роли
|
||
|
||
### Основные цвета
|
||
- **IBM Blue 60** (`#0f62fe`): Единственный интерактивный цвет. Основные кнопки, ссылки, состояния фокуса, активные индикаторы. Это единственный хроматический оттенок в основной UI-палитре.
|
||
- **White** (`#ffffff`): Фон страницы, поверхности карточек, текст кнопок на синем фоне, `--cds-background`.
|
||
- **Gray 100** (`#161616`): Основной текст, заголовки, тёмные фоны поверхностей, навбар, подвал. `--cds-text-primary`.
|
||
|
||
### Нейтральная шкала (семейство Gray)
|
||
- **Gray 100** (`#161616`): Основной текст, заголовки, тёмный UI-chrome, фон подвала.
|
||
- **Gray 90** (`#262626`): Второстепенные тёмные поверхности, состояния hover на тёмных фонах.
|
||
- **Gray 80** (`#393939`): Третичный тёмный, активные состояния.
|
||
- **Gray 70** (`#525252`): Второстепенный текст, вспомогательный текст, описания. `--cds-text-secondary`.
|
||
- **Gray 60** (`#6f6f6f`): Текст-заглушка, отключённый текст.
|
||
- **Gray 50** (`#8d8d8d`): Отключённые иконки, приглушённые метки.
|
||
- **Gray 30** (`#c6c6c6`): Рамки, разделительные линии, нижние рамки полей ввода. `--cds-border-subtle`.
|
||
- **Gray 20** (`#e0e0e0`): Тонкие рамки, контуры карточек.
|
||
- **Gray 10** (`#f4f4f4`): Второстепенный фон поверхности, заливка карточек, чередующиеся строки. `--cds-layer-01`.
|
||
- **Gray 10 Hover** (`#e8e8e8`): Состояние hover для поверхностей Gray 10.
|
||
|
||
### Интерактивные цвета
|
||
- **Blue 60** (`#0f62fe`): Основные интерактивные — кнопки, ссылки, фокус. `--cds-link-primary`, `--cds-button-primary`.
|
||
- **Blue 70** (`#0043ce`): Состояние hover для ссылок. `--cds-link-primary-hover`.
|
||
- **Blue 80** (`#002d9c`): Активное/нажатое состояние синих элементов.
|
||
- **Blue 10** (`#edf5ff`): Синяя тонированная поверхность, фон выбранной строки.
|
||
- **Focus Blue** (`#0f62fe`): `--cds-focus` — рамка 2px inset на элементах в фокусе.
|
||
- **Focus Inset** (`#ffffff`): `--cds-focus-inset` — белое внутреннее кольцо для фокуса на тёмных фонах.
|
||
|
||
### Поддержка и статусы
|
||
- **Red 60** (`#da1e28`): Ошибка, опасность. `--cds-support-error`.
|
||
- **Green 50** (`#24a148`): Успех. `--cds-support-success`.
|
||
- **Yellow 30** (`#f1c21b`): Предупреждение. `--cds-support-warning`.
|
||
- **Blue 60** (`#0f62fe`): Информационный. `--cds-support-info`.
|
||
|
||
### Тёмная тема (тема Gray 100)
|
||
- **Background**: Gray 100 (`#161616`). `--cds-background`.
|
||
- **Layer 01**: Gray 90 (`#262626`). Поверхности карточек и контейнеров.
|
||
- **Layer 02**: Gray 80 (`#393939`). Приподнятые поверхности.
|
||
- **Text Primary**: Gray 10 (`#f4f4f4`). `--cds-text-primary`.
|
||
- **Text Secondary**: Gray 30 (`#c6c6c6`). `--cds-text-secondary`.
|
||
- **Border Subtle**: Gray 80 (`#393939`). `--cds-border-subtle`.
|
||
- **Interactive**: Blue 40 (`#78a9ff`). Ссылки и интерактивные элементы становятся светлее для контрастности.
|
||
|
||
## 3. Правила типографики
|
||
|
||
### Семейство шрифтов
|
||
- **Основной**: `IBM Plex Sans`, с запасными вариантами: `Helvetica Neue, Arial, sans-serif`
|
||
- **Моноширинный**: `IBM Plex Mono`, с запасными вариантами: `Menlo, Courier, monospace`
|
||
- **Serif** (ограниченное использование): `IBM Plex Serif`, для редакционных и выразительных контекстов
|
||
- **Иконочный шрифт**: `ibm_icons` — проприетарные иконочные глифы размером 20px
|
||
|
||
### Иерархия
|
||
|
||
| Роль | Шрифт | Размер | Насыщенность | Высота строки | Межбуквенный интервал | Примечания |
|
||
|------|------|------|--------|-------------|----------------|-------|
|
||
| Display 01 | IBM Plex Sans | 60px (3.75rem) | 300 (Light) | 1.17 (70px) | 0 | Максимальный эффект, лёгкое начертание для элегантности |
|
||
| Display 02 | IBM Plex Sans | 48px (3.00rem) | 300 (Light) | 1.17 (56px) | 0 | Второстепенный hero, адаптивный резерв |
|
||
| Heading 01 | IBM Plex Sans | 42px (2.63rem) | 300 (Light) | 1.19 (50px) | 0 | Выразительный заголовок |
|
||
| Heading 02 | IBM Plex Sans | 32px (2.00rem) | 400 (Regular) | 1.25 (40px) | 0 | Заголовки разделов |
|
||
| Heading 03 | IBM Plex Sans | 24px (1.50rem) | 400 (Regular) | 1.33 (32px) | 0 | Заголовки подразделов |
|
||
| Heading 04 | IBM Plex Sans | 20px (1.25rem) | 600 (Semibold) | 1.40 (28px) | 0 | Заголовки карточек, заголовки функций |
|
||
| Heading 05 | IBM Plex Sans | 20px (1.25rem) | 400 (Regular) | 1.40 (28px) | 0 | Более лёгкие заголовки карточек |
|
||
| Body Long 01 | IBM Plex Sans | 16px (1.00rem) | 400 (Regular) | 1.50 (24px) | 0 | Стандартный текст для чтения |
|
||
| Body Long 02 | IBM Plex Sans | 16px (1.00rem) | 600 (Semibold) | 1.50 (24px) | 0 | Выделенный основной текст, метки |
|
||
| Body Short 01 | IBM Plex Sans | 14px (0.88rem) | 400 (Regular) | 1.29 (18px) | 0.16px | Компактный текст, подписи |
|
||
| Body Short 02 | IBM Plex Sans | 14px (0.88rem) | 600 (Semibold) | 1.29 (18px) | 0.16px | Жирные подписи, элементы навигации |
|
||
| Caption 01 | IBM Plex Sans | 12px (0.75rem) | 400 (Regular) | 1.33 (16px) | 0.32px | Метаданные, временные метки |
|
||
| Code 01 | IBM Plex Mono | 14px (0.88rem) | 400 (Regular) | 1.43 (20px) | 0.16px | Встроенный код, терминал |
|
||
| Code 02 | IBM Plex Mono | 16px (1.00rem) | 400 (Regular) | 1.50 (24px) | 0 | Блоки кода |
|
||
| Mono Display | IBM Plex Mono | 42px (2.63rem) | 400 (Regular) | 1.19 (50px) | 0 | Декоративный mono в hero-секции |
|
||
|
||
### Принципы
|
||
- **Лёгкое начертание для дисплейных размеров**: Выразительный типовой набор Carbon использует насыщенность 300 (Light) при 42px и выше. Это создаёт характерное напряжение — контент говорит с корпоративным авторитетом, тогда как сами буквы шепчут с типографической лёгкостью.
|
||
- **Микроинтервал при малых размерах**: Межбуквенный интервал 0.16px при 14px и 0.32px при 12px. Эти кажущиеся незначительными значения — секретное оружие Carbon для удобочитаемости при компактных размерах: они слегка открывают плотные буквы IBM Plex.
|
||
- **Три функциональных насыщенности**: 300 (дисплейный/выразительный), 400 (основной текст/чтение), 600 (акцент/UI-метки). Насыщенность 700 намеренно отсутствует в производственной типографической шкале.
|
||
- **Продуктивный vs. Выразительный**: Продуктивные наборы используют более тесные межстрочные интервалы (1.29) для насыщенного UI. Выразительные наборы дышат свободнее (1.40–1.50) для маркетинга и редакционного контента.
|
||
|
||
## 4. Стилизация компонентов
|
||
|
||
### Кнопки
|
||
|
||
**Основная кнопка (синяя)**
|
||
- Background: `#0f62fe` (Blue 60) → `--cds-button-primary`
|
||
- Text: `#ffffff` (White)
|
||
- Padding: 14px 63px 14px 15px (асимметричный — место для иконки в конце)
|
||
- Border: 1px solid transparent
|
||
- Border-radius: 0px (чёткий прямоугольник — фирменный знак Carbon)
|
||
- Height: 48px (по умолчанию), 40px (компактный), 64px (выразительный)
|
||
- Hover: `#0353e9` (Blue 60 Hover) → `--cds-button-primary-hover`
|
||
- Active: `#002d9c` (Blue 80) → `--cds-button-primary-active`
|
||
- Focus: `2px solid #0f62fe` inset + `1px solid #ffffff` inner
|
||
|
||
**Вторичная кнопка (серая)**
|
||
- Background: `#393939` (Gray 80)
|
||
- Text: `#ffffff`
|
||
- Hover: `#4c4c4c` (Gray 70)
|
||
- Active: `#6f6f6f` (Gray 60)
|
||
- Те же padding и radius, что у основной
|
||
|
||
**Третичная кнопка (Ghost Blue)**
|
||
- Background: transparent
|
||
- Text: `#0f62fe` (Blue 60)
|
||
- Border: 1px solid `#0f62fe`
|
||
- Hover: `#0353e9` текст + Blue 10 тонированный фон
|
||
- Border-radius: 0px
|
||
|
||
**Ghost-кнопка**
|
||
- Background: transparent
|
||
- Text: `#0f62fe` (Blue 60)
|
||
- Padding: 14px 16px
|
||
- Border: none
|
||
- Hover: `#e8e8e8` тонированный фон
|
||
|
||
**Кнопка опасности**
|
||
- Background: `#da1e28` (Red 60)
|
||
- Text: `#ffffff`
|
||
- Hover: `#b81921` (Red 70)
|
||
|
||
### Карточки и контейнеры
|
||
- Background: `#ffffff` на белой теме, `#f4f4f4` (Gray 10) для приподнятых карточек
|
||
- Border: none (плоский дизайн — без рамки или тени на большинстве карточек)
|
||
- Border-radius: 0px (соответствует прямоугольной эстетике кнопок)
|
||
- Hover: фон смещается к `#e8e8e8` (Gray 10 Hover) для кликабельных карточек
|
||
- Content padding: 16px
|
||
- Разделение: наслоение цветов фона (white → gray 10 → white) вместо теней
|
||
|
||
### Поля ввода и формы
|
||
- Background: `#f4f4f4` (Gray 10) — `--cds-field`
|
||
- Text: `#161616` (Gray 100)
|
||
- Padding: 0px 16px (только горизонтальный)
|
||
- Height: 40px (по умолчанию), 48px (большой)
|
||
- Border: нет на боках/сверху — `2px solid transparent` снизу
|
||
- Bottom-border active: `2px solid #161616` (Gray 100)
|
||
- Focus: `2px solid #0f62fe` (Blue 60) нижняя рамка — `--cds-focus`
|
||
- Error: `2px solid #da1e28` (Red 60) нижняя рамка
|
||
- Label: 12px IBM Plex Sans, межбуквенный интервал 0.32px, Gray 70
|
||
- Вспомогательный текст: 12px, Gray 60
|
||
- Placeholder: Gray 60 (`#6f6f6f`)
|
||
- Border-radius: 0px (сверху) — поля ввода с острыми углами
|
||
|
||
### Навигация
|
||
- Background: `#161616` (Gray 100) — тёмная шапка на всю ширину
|
||
- Height: 48px
|
||
- Логотип: логотип IBM из 8 полос, белый на тёмном, выровнен по левому краю
|
||
- Ссылки: 14px IBM Plex Sans, насыщенность 400, `#c6c6c6` (Gray 30) по умолчанию
|
||
- Link hover: `#ffffff` текст
|
||
- Активная ссылка: `#ffffff` с индикатором нижней рамки
|
||
- Переключатель платформ: горизонтальные вкладки, выровненные по левому краю
|
||
- Поиск: поле поиска с выдвижением по клику на иконку
|
||
- Мобильный: гамбургер с панелью, выезжающей слева
|
||
|
||
### Ссылки
|
||
- По умолчанию: `#0f62fe` (Blue 60) без подчёркивания
|
||
- Hover: `#0043ce` (Blue 70) с подчёркиванием
|
||
- Посещённые: остаются Blue 60 (состояние посещённой ссылки не меняется)
|
||
- Встроенные ссылки: подчёркнуты по умолчанию в основном тексте
|
||
|
||
### Характерные компоненты
|
||
|
||
**Блок контента (Hero/Feature)**
|
||
- Чередующиеся полосы фона white/gray-10 на всю ширину
|
||
- Заголовок выровнен по левому краю с дисплейным шрифтом 60px или 48px
|
||
- CTA как синяя основная кнопка со стрелочной иконкой
|
||
- Изображение/иллюстрация выровнены по правому краю или располагаются ниже на мобильных
|
||
|
||
**Tile (кликабельная карточка)**
|
||
- Background: `#f4f4f4` или `#ffffff`
|
||
- Нижняя рамка на всю ширину или смена фона при hover
|
||
- Иконка стрелки в правом нижнем углу при hover
|
||
- Без тени — плоскость и есть идентичность
|
||
|
||
**Tag / Label**
|
||
- Background: контекстный цвет с непрозрачностью 10% (например, Blue 10, Red 10)
|
||
- Text: соответствующий цвет 60-го оттенка
|
||
- Padding: 4px 8px
|
||
- Border-radius: 24px (таблетка — исключение из правила 0px)
|
||
- Font: 12px насыщенность 400
|
||
|
||
**Баннер уведомления**
|
||
- Полоса на всю ширину, обычно фон Blue 60 или Gray 100
|
||
- Белый текст, 14px
|
||
- Иконка закрытия выровнена по правому краю
|
||
|
||
## 5. Принципы компоновки
|
||
|
||
### Система отступов
|
||
- Базовая единица: 8px (сетка Carbon 2x)
|
||
- Шкала отступов компонентов: 2px, 4px, 8px, 12px, 16px, 24px, 32px, 40px, 48px
|
||
- Шкала отступов компоновки: 16px, 24px, 32px, 48px, 64px, 80px, 96px, 160px
|
||
- Мини-единица: 8px (минимально используемый отступ)
|
||
- Внутренний padding компонентов: обычно 16px
|
||
- Зазор между карточками/тайлами: 1px (волосяная линия) или 16px (стандартный)
|
||
|
||
### Сетка и контейнер
|
||
- 16-колоночная сетка (система Carbon 2x)
|
||
- Максимальная ширина контента: 1584px (максимальная точка останова)
|
||
- Межколоночные отступы: 32px (16px на мобильных)
|
||
- Поля: 16px (мобильные), 32px (планшеты+)
|
||
- Контент обычно занимает 8–12 колонок для комфортной длины строки
|
||
- Секции на всю ширину чередуются с ограниченным контентом
|
||
|
||
### Философия пустого пространства
|
||
- **Функциональная плотность**: Carbon предпочитает продуктивную плотность обширному белому пространству. Секции упакованы плотнее по сравнению с потребительскими дизайн-системами — это отражает корпоративную ДНК IBM.
|
||
- **Зонирование цветом фона**: Вместо массивных отступов между секциями IBM использует чередующиеся цвета фона (white → gray 10 → white) для создания визуального разделения при минимальном вертикальном пространстве.
|
||
- **Постоянный ритм 48px**: Переходы между основными секциями используют вертикальный отступ 48px. Hero-секции могут использовать 80px–96px.
|
||
|
||
### Шкала радиусов скругления
|
||
- **0px**: Основные кнопки, поля ввода, тайлы, карточки — доминирующая обработка. Carbon фундаментально прямоугольный.
|
||
- **2px**: Иногда для небольших интерактивных элементов (теги)
|
||
- **24px**: Теги/метки (форма таблетки — единственное скруглённое исключение)
|
||
- **50%**: Круги аватаров, контейнеры иконок
|
||
|
||
## 6. Глубина и приподнятость
|
||
|
||
| Уровень | Обработка | Применение |
|
||
|-------|-----------|-----|
|
||
| Flat (Level 0) | Без тени, фон `#ffffff` | Стандартная поверхность страницы |
|
||
| Layer 01 | Без тени, фон `#f4f4f4` | Карточки, тайлы, чередующиеся секции |
|
||
| Layer 02 | Без тени, фон `#e0e0e0` | Приподнятые панели внутри Layer 01 |
|
||
| Raised | `0 2px 6px rgba(0,0,0,0.3)` | Выпадающие меню, подсказки, меню переполнения |
|
||
| Overlay | `0 2px 6px rgba(0,0,0,0.3)` + тёмная подложка | Модальные диалоги, боковые панели |
|
||
| Focus | `2px solid #0f62fe` inset + `1px solid #ffffff` | Кольцо фокуса клавиатуры |
|
||
| Bottom-border | `2px solid #161616` по нижнему краю | Активное поле ввода, индикатор активной вкладки |
|
||
|
||
**Философия теней**: Carbon намеренно избегает теней. IBM добиваетсяглубины прежде всего через наслоение цветов фона — укладывая поверхности с прогрессивно темнеющими серыми вместо добавления box-shadow. Это создаёт плоскую, вдохновлённую печатью эстетику, где иерархия передаётся значением цвета, а не имитацией света. Тени зарезервированы исключительно для плавающих элементов (выпадающие меню, подсказки, модалки), где элемент действительно перекрывает контент. Такая сдержанность придаёт редкой тени значимый эффект — когда что-то парит в Carbon, это имеет значение.
|
||
|
||
## 7. Что делать и чего не делать
|
||
|
||
### Делать
|
||
- Использовать IBM Plex Sans с насыщенностью 300 для дисплейных размеров (42px+) — лёгкость намеренна
|
||
- Применять межбуквенный интервал 0.16px к основному тексту 14px и 0.32px к подписям 12px
|
||
- Использовать border-radius 0px для кнопок, полей ввода, карточек и тайлов — прямоугольники и есть система
|
||
- Ссылаться на имена токенов `--cds-*` при реализации (например, `--cds-button-primary`, `--cds-text-primary`)
|
||
- Использовать наслоение цветов фона (white → gray 10 → gray 20) для глубины вместо теней
|
||
- Использовать нижнюю рамку (не рамку вокруг) для индикаторов полей ввода
|
||
- Сохранять высоту кнопки по умолчанию 48px и асимметричный padding для размещения иконки
|
||
- Применять Blue 60 (`#0f62fe`) как единственный акцент — один синий, чтобы управлять всем
|
||
|
||
### Не делать
|
||
- Не скруглять углы кнопок — радиус 0px является идентичностью Carbon
|
||
- Не использовать тени на карточках или тайлах — плоскость и есть суть
|
||
- Не вводить дополнительные акцентные цвета — система IBM монохромна плюс синий
|
||
- Не использовать насыщенность 700 (Bold) — шкала останавливается на 600 (Semibold)
|
||
- Не добавлять межбуквенный интервал к тексту дисплейного размера — интервал только для 14px и ниже
|
||
- Не обрамлять поля ввода полными рамками — поля ввода Carbon используют только нижнюю рамку
|
||
- Не использовать градиентные фоны — поверхности IBM плоские, однотонные
|
||
- Не отклоняться от сетки отступов 8px — каждое значение должно делиться на 8 (с 2px и 4px для микрокорректировок)
|
||
|
||
## 8. Адаптивное поведение
|
||
|
||
### Точки останова
|
||
| Название | Ширина | Ключевые изменения |
|
||
|------|-------|-------------|
|
||
| Small (sm) | 320px | Одна колонка, навигация-гамбургер, поля 16px |
|
||
| Medium (md) | 672px | Начинаются двухколоночные сетки, расширенный контент |
|
||
| Large (lg) | 1056px | Полная навигация видна, сетки 3–4 колонки |
|
||
| X-Large (xlg) | 1312px | Максимальная плотность контента, широкие макеты |
|
||
| Max | 1584px | Максимальная ширина контента, центрирование с полями |
|
||
|
||
### Целевые области касания
|
||
- Высота кнопки: 48px по умолчанию, минимум 40px (компактный)
|
||
- Ссылки навигации: высота строки 48px для касания
|
||
- Высота поля ввода: 40px по умолчанию, 48px большой
|
||
- Кнопки-иконки: область касания 48px квадрат
|
||
- Пункты мобильного меню: строки на всю ширину по 48px
|
||
|
||
### Стратегия сворачивания
|
||
- Hero: дисплейный шрифт 60px → 42px → заголовок 32px по мере сужения viewport
|
||
- Навигация: полная горизонтальная шапка → гамбургер с выдвигающейся панелью
|
||
- Сетка: 4 колонки → 2 колонки → одна колонка
|
||
- Тайлы/карточки: горизонтальная сетка → вертикальный стек
|
||
- Изображения: сохранение соотношения сторон, max-width 100%
|
||
- Подвал: многоколоночные группы ссылок → единый столбец в стеке
|
||
- Отступы секций: 48px → 32px → 16px
|
||
|
||
### Поведение изображений
|
||
- Адаптивные изображения с `max-width: 100%`
|
||
- Иллюстрации продукта масштабируются пропорционально
|
||
- Hero-изображения могут переходить от расположения бок о бок к размещению в стек ниже
|
||
- Визуализации данных сохраняют соотношение сторон с горизонтальной прокруткой на мобильных
|
||
|
||
## 9. Руководство по промптам для агента
|
||
|
||
### Быстрый справочник цветов
|
||
- Основной CTA: IBM Blue 60 (`#0f62fe`)
|
||
- Background: White (`#ffffff`)
|
||
- Текст заголовков: Gray 100 (`#161616`)
|
||
- Основной текст: Gray 100 (`#161616`)
|
||
- Второстепенный текст: Gray 70 (`#525252`)
|
||
- Поверхность/карточка: Gray 10 (`#f4f4f4`)
|
||
- Рамка: Gray 30 (`#c6c6c6`)
|
||
- Ссылка: Blue 60 (`#0f62fe`)
|
||
- Ссылка hover: Blue 70 (`#0043ce`)
|
||
- Кольцо фокуса: Blue 60 (`#0f62fe`)
|
||
- Ошибка: Red 60 (`#da1e28`)
|
||
- Успех: Green 50 (`#24a148`)
|
||
|
||
### Примеры промптов для компонентов
|
||
- "Создай hero-секцию на белом фоне. Заголовок 60px IBM Plex Sans насыщенность 300, line-height 1.17, цвет #161616. Подзаголовок 16px насыщенность 400, line-height 1.50, цвет #525252, max-width 640px. Синяя CTA-кнопка (фон #0f62fe, текст #ffffff, border-radius 0px, высота 48px, padding 14px 63px 14px 15px)."
|
||
- "Спроектируй карточку-тайл: фон #f4f4f4, border-radius 0px, padding 16px. Заголовок 20px IBM Plex Sans насыщенность 600, line-height 1.40, цвет #161616. Основной текст 14px насыщенность 400, letter-spacing 0.16px, line-height 1.29, цвет #525252. Hover: фон меняется на #e8e8e8."
|
||
- "Создай поле формы: фон #f4f4f4, border-radius 0px, высота 40px, горизонтальный padding 16px. Метка сверху 12px насыщенность 400, letter-spacing 0.32px, цвет #525252. Нижняя рамка: 2px solid transparent по умолчанию, 2px solid #0f62fe при фокусе. Placeholder: #6f6f6f."
|
||
- "Создай тёмную панель навигации: фон #161616, высота 48px. Логотип IBM белый выровнен по левому краю. Ссылки 14px IBM Plex Sans насыщенность 400, цвет #c6c6c6. Hover: текст #ffffff. Активный: #ffffff с нижней рамкой 2px."
|
||
- "Создай компонент тега: фон Blue 10 (#edf5ff), текст Blue 60 (#0f62fe), padding 4px 8px, border-radius 24px, 12px IBM Plex Sans насыщенность 400."
|
||
|
||
### Руководство по итерации
|
||
1. Всегда используй border-radius 0px для кнопок, полей ввода и карточек — в Carbon это обязательно
|
||
2. Межбуквенный интервал только при малых размерах: 0.16px при 14px, 0.32px при 12px — никогда для дисплейного текста
|
||
3. Три насыщенности: 300 (дисплейный), 400 (основной текст), 600 (акцент) — без жирного
|
||
4. Blue 60 — единственный акцентный цвет — не вводи вторичные акцентные оттенки
|
||
5. Глубина достигается через наслоение цветов фона (white → #f4f4f4 → #e0e0e0), а не тени
|
||
6. Поля ввода имеют только нижнюю рамку, никогда полное обрамление
|
||
7. Используй префикс `--cds-` для именования токенов, чтобы оставаться совместимым с Carbon
|
||
8. 48px — универсальная высота интерактивных элементов
|