Шаблон — страница компонента

Один компонент — три страницы, а не одна. У Carbon это вкладки Guidelines · Specifications · Accessibility; у нас — вложенные страницы, дерево это уже умеет.

Зачем делить: дизайнер не пролистывает таблицы токенов, разработчик не пролистывает картинки «так — не так». Сейчас одна страница держит всё сразу, и лишнее листают оба.

Компонент
├── Применение      ← дизайнер
├── Спецификация    ← разработчик
└── Доступность     ← оба

Что откуда берётся

Главная таблица для интеграции. «Сервис» — заполняется из контракта компонента, человек не трогает. «Человек» — решение, из контракта не выводится.

Шапка: ссылка на макетsource: файл и id набора, двоеточие в дефиссервис
Шапка: версия, статус, датаверсия контрактасервис
Применение · назначение одной фразой—человек
Применение · когда использовать—человек
Применение · когда не использовать—человек
Применение · анатомия: номера на картинкекартинка — человек, перечень частей — anatomyоба
Применение · состав деревомanatomyсервис
Применение · варианты: чем отличаютсяaxes + variantsсервис
Применение · конструкции, если их несколькоformsсервис
Применение · пары «так — не так»—человек
Спецификация · свойстваaxes, props: имя, значения, по умолчаниюсервис
Спецификация · подмены и что принимаютslots, acceptsсервис
Спецификация · решётка вариантовmasters: сколько есть, сколько дала бы полная, какие сочетания существуютсервис
Спецификация · цветtokens + bindingsсервис
Спецификация · типографикаanatomy: имя текстового стилясервис
Спецификация · размеры и отступыanatomy: раскладка, размерысервис
Доступность · виброоткликinteractionсервис
Доступность · клавиатура, скринридер—человек
Доступность · что должен дизайнер—человек
Любая страница · открытые вопросыgaps: GAP — в макете нет, SUSPECT — есть, но подозрительносервис

Четыре раздела из двадцати пишет человек. Остальное — данные, которые уже сняты и проверены сверкой. Это и есть смысл затеи: страница перестаёт расходиться с макетом сама по себе.

Про открытые вопросы надо решить отдельно. Контракт честно хранит дыры макета. Показывать их читателю полезно — видно, где описание неполно и почему. Но это внутренняя кухня, и выносить её наружу или держать в закрытой части — ваше решение, не моё. В каркасе ниже раздел есть; уберите, если не надо.


Применение

Для дизайнера. Ни токенов, ни CSS.

- **Версия:** · **Статус:** · **Дата:** · **Макет:** ссылка

## Назначение

Одна фраза: что это и для чего. Без «компонент предназначен для».

## Когда использовать

- признак
- признак

## Когда не использовать

- признак, и чем пользоваться вместо

## Анатомия

_картинка с номерами_

| № | Часть | Зачем |
|---|---|---|
| 1 |  |  |

## Варианты

| Свойство | Значения | Что меняет |
|---|---|---|

### <Свойство>

Чем отличается от базового вида. Списком, не прозой.

| Так | Не так |
|---|---|
| _картинка_ | _картинка_ |
| подпись | подпись |

## Рядом

-

«Когда использовать» и «Когда не использовать» — главный раздел страницы. Его нет ни в контракте, ни в макете, и придумать его сервис не может. Именно он останавливает неправильное применение, пока человек не начал рисовать.


Спецификация

Для разработчика. Почти одни таблицы, колонки фиксированы и не меняются от компонента к компоненту — как у Carbon.

## Свойства

| Свойство | Тип | Значения | По умолчанию | Что делает |
|---|---|---|---|---|

## Решётка вариантов

Мастеров: N. Полная решётка дала бы M. Существующие сочетания:

| Условие | Доступные значения |
|---|---|

## Цвет

| Элемент | Свойство | Токен |
|---|---|---|

## Типографика

| Элемент | Текстовый стиль |
|---|---|

## Размеры и отступы

| Элемент | Свойство | Значение | Токен |
|---|---|---|---|

## Состав

Дерево слоёв.

## Подмены

| Слот | Что принимает |
|---|---|

## Открытые вопросы

| Что | Вид |
|---|---|

Число вместо имени токена — не значение, а дыра. Если в таблице стоит 6 там, где ждёшь space-*, у макета там привязки нет. Подбирать токен по значению нельзя: это вопрос к дизайну, и он уже записан в «Открытых вопросах».

Решётка — не формальность. Полная решётка почти всегда больше фактической: часть сочетаний не существует. Воспроизводить их в коде не надо.


Доступность

## Что система даёт сама

- встроенное поведение

## Виброотклик

| Жест | Событие | Отклик | Включён |
|---|---|---|---|

## Что должен дизайнер

- обязанность

## Что должен разработчик

- чек-лист

## Статус проверок

| Проверка | Статус |
|---|---|
| Клавиатура |  |
| Скринридер |  |
| Контраст |  |
| Крупный шрифт |  |

Таблица статуса проверок — приём Carbon: видно не только требование, но и проверяли ли его вообще. Пустой статус честнее отсутствия таблицы.


Чего в контракте нет и не будет

Чтобы сервис этого не ждал:

  • тени, размытия, параметры анимации — формат их не описывает;
  • defaultVariant — какой мастер в наборе главный, контракт не снимает;
  • клавиатура и скринридер — в макете этого нет;
  • смысл компонента. Контракт знает, как он устроен, но не знает, зачем он нужен.

Отсутствие этого в контракте не значит, что в макете его нет. Значит, что оно не снято, и додумывать нельзя.