3.7 KiB
Подключение дизайн-системы
Главный принцип
Новый проект не копирует исходники компонентов из Launcher, CMS или этого репозитория. Он устанавливает версию пакетов NODE.DC, импортирует общий CSS и собирает интерфейс из публичных exports. Обновление пакета должно исправлять геометрию во всех подключённых приложениях без повторной ручной вёрстки.
control-c / control-v допустим только для короткой композиции приложения: какие routes и данные переданы готовым компонентам. CSS, DOM-анатомия header, оконные переходы, media control и accessibility не копируются.
React consumer
Минимальный состав нового оконного приложения:
@nodedc/tokens,@nodedc/ui-coreи@nodedc/ui-reactфиксируются одной версией.- Один раз подключаются
tokens.css,themes.cssи@nodedc/ui-core/styles.css. - Theme/accent задаются через
applyNodedcTheme. - Приложение собирает
ApplicationShellизAppHeader,AdminNavigationPanelиApplicationPanel. - Все состояния shell берутся из
useApplicationWorkspace. - Routes, profile, stage content и бизнес-данные передаются props.
Нельзя добавлять local CSS к AppHeader, HeaderNavigation, HeaderWorkspace, HeaderProfile и HeaderAvatar. Если production Launcher изменяет канон, исправляется preset здесь и выпускается новая версия.
DOM consumer
CMS/BIM подключают те же tokens/core styles и @nodedc/ui-dom. createApplicationWorkspaceController, createMediaSourceController, createShareLinkController, createFloatingLayer и createModalController связывают стабильную DOM-анатомию с тем же поведением, не вводя React в приложение.
Adapter boundary
Общие компоненты не импортируют API конкретного проекта.
| Библиотека владеет | Приложение владеет |
|---|---|
| размеры, радиусы, поверхности | маршруты и тексты |
| header/window/media DOM anatomy | API, auth и permissions |
| open/close/expand state machine | получение и сохранение данных |
| file/URL selector и preview | file picker/media library/storage upload |
| focus, Escape, portal, responsive flow | доменная валидация и ошибки backend |
Например, MediaSourceField получает onFileChange. Consumer загружает файл, получает URL и возвращает его в контролируемое состояние. Компонент не знает S3, локальный диск, CMS media library или endpoint Launcher.
Definition of done для нового общего компонента
- экспортируется из React или DOM package;
- использует tokens/core styles без screen-local geometry;
- показан в живом каталоге в ключевых состояниях;
- записан в
registry/components.json; - имеет документированную adapter boundary;
- проходит desktop/mobile visual QA;
- версия пакета зафиксирована consumer-ом.