62 lines
4.5 KiB
Markdown
62 lines
4.5 KiB
Markdown
# Правила развития
|
||
|
||
## Единственный источник истины
|
||
|
||
Публичный компонент, его CSS, документация, registry entry и catalog example изменяются одним pull/merge request в этом репозитории.
|
||
|
||
Приложения не должны исправлять общий компонент локальным копированием. Если срочный adapter неизбежен, он должен:
|
||
|
||
- оборачивать публичный компонент;
|
||
- не копировать его внутреннюю реализацию;
|
||
- иметь ссылку на issue/design-system change;
|
||
- быть внесён в `docs/ADOPTION.md` как временный долг.
|
||
|
||
## Добавление компонента
|
||
|
||
Компонент принимается в систему, если:
|
||
|
||
1. он независим от доменной модели;
|
||
2. его API можно описать без упоминания конкретной таблицы/ноды/проекта;
|
||
3. он использует существующую тему и layer scale;
|
||
4. определены keyboard и disabled/pending states;
|
||
5. добавлен React или DOM adapter в зависимости от потребителей;
|
||
6. есть catalog example;
|
||
7. обновлён registry.
|
||
|
||
## Изменение геометрии
|
||
|
||
Геометрия меняется централизованно. Нельзя исправлять высоту/радиус в одном приложении, если изменение относится к общему контролу.
|
||
|
||
Допустимы density variants, если они имеют устойчивое назначение (`default`, `compact`) и тестируются как часть API.
|
||
|
||
## Типографика и операционные сообщения
|
||
|
||
Продуктовый интерфейс использует только типографические токены. Browser-default размеры у `h1`–`h6`, `p`, `strong` и form controls не являются допустимым стилем. `--nodedc-font-size-title` разрешён только для заголовка страницы или окна; названия конфигураций, статусы, ошибки, подписи полей и сообщения внутри рабочей сцены используют `md`, `sm`, `xs` или готовую типографику канонического компонента.
|
||
|
||
Ошибка сохранения или запроса не рендерится свободным текстовым блоком поверх рабочей сцены. Приложение использует семантический error-state канонического поля либо `ToastStack`, который владеет размером текста, цветом, положением и закрытием. Ошибка автосохранения modeless-инспектора не блокирует закрытие окна: draft остаётся в текущем просмотре, окно закрывается сразу, а сбой показывается неблокирующим error toast.
|
||
|
||
## Deprecated
|
||
|
||
Перед удалением export:
|
||
|
||
- он получает статус deprecated в registry;
|
||
- документация указывает replacement;
|
||
- минимум один minor release сохраняет совместимость;
|
||
- после миграции известных consumers export удаляется в major release.
|
||
|
||
## Проверки
|
||
|
||
Минимум для merge:
|
||
|
||
- typecheck всех пакетов;
|
||
- registry validation;
|
||
- production build каталога;
|
||
- ручная визуальная проверка dark/light и нескольких accent;
|
||
- keyboard smoke test для Dropdown, Select, Window и Inspector.
|
||
|
||
Следующий уровень зрелости — автоматические screenshot regression и interaction tests. Они добавляются до массовой миграции приложений.
|
||
|
||
## Владение
|
||
|
||
У дизайн-системы должен быть явный code owner. Product team может предлагать компоненты, но общий API и theme contract проходят отдельное review, потому что изменение распространяется на все будущие приложения.
|