4.5 KiB
Правила развития
Единственный источник истины
Публичный компонент, его CSS, документация, registry entry и catalog example изменяются одним pull/merge request в этом репозитории.
Приложения не должны исправлять общий компонент локальным копированием. Если срочный adapter неизбежен, он должен:
- оборачивать публичный компонент;
- не копировать его внутреннюю реализацию;
- иметь ссылку на issue/design-system change;
- быть внесён в
docs/ADOPTION.mdкак временный долг.
Добавление компонента
Компонент принимается в систему, если:
- он независим от доменной модели;
- его API можно описать без упоминания конкретной таблицы/ноды/проекта;
- он использует существующую тему и layer scale;
- определены keyboard и disabled/pending states;
- добавлен React или DOM adapter в зависимости от потребителей;
- есть catalog example;
- обновлён 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, потому что изменение распространяется на все будущие приложения.