Skip to content

[Feature] Закрепить style schema для appearance-слоя компонентов #697

@TorinAsakura

Description

@TorinAsakura

С чем связан запрос?

@atls-ui-generators/appearance должен закреплять воспроизводимость appearance-слоя компонентов, но не становиться runtime-зависимостью UI-пакетов и не владеть семантикой button, input или checkbox.

Сейчас нужно устранить архитектурный drift в #705: компонентные знания должны жить у компонентов, createAppearanceStyles должен принадлежать @atls-ui-parts/theme как parts theme runtime, а генератор должен быть только исполнителем style schema.

Опиши план реализации

  • Переименовать PR в refactor(appearance): enforce component style schemas.
  • Убрать runtime-зависимость button/input от @atls-ui-generators/appearance.
  • Удалить runtime export @atls-ui-generators/appearance/create из генераторного пакета.
  • Перенести createAppearanceStyles в @atls-ui-parts/theme и экспортировать его через theme utils.
  • Добавить component-owned style schemas:
    • ui-parts/button/src/styles/schema.ts
    • ui-parts/input/src/styles/schema.ts
    • ui-parts/checkbox/src/styles/schema.ts
  • Убрать из generators/appearance тест, который напрямую знает про button/input/checkbox.
  • Сделать @atls-ui-generators/appearance исполнителем schema: один schema-файл используется для write и check.
  • Не оставлять публичный строковый AppearanceMapGenerator; заменить его внутренним typed map generator на основе style schema.
  • Вынести типы из основных файлов генераторов в отдельные interfaces.ts рядом с владельцем роли.
  • Убрать дублирование топологии в generators/appearance: использовать style/generator.ts, map/generator.ts, schema/interfaces.ts, без appearance-* внутри package path.
  • Перевести CLI на schema-based режим:
    • generate-styles <schema-file> --write
    • generate-styles <schema-file> --check
  • Не трогать ui-admin в рамках этой задачи.
  • Не чинить локальный yarn/Corepack drift в этой задаче; это отдельное обновление @atls/code-runtime.

Критерии готовности выполнения задачи

  • button, input и checkbox имеют component-owned style schema.
  • appearance.css.ts для затронутых компонентов проверяется на drift от schema.
  • @atls-ui-generators/appearance не является runtime-зависимостью ui-parts/button и ui-parts/input.
  • createAppearanceStyles живёт в @atls-ui-parts/theme, а не в генераторе.
  • Генератор не содержит знаний о конкретных компонентах Hyperion в своих unit-тестах.
  • CLI использует schema как источник истины для write и check.
  • Типы генераторов вынесены из основных файлов поведения.
  • Внутри generators/appearance нет файлов и каталогов с повтором топонима appearance.
  • ui-admin не меняется.
  • Результат подтверждён штатными командами:
    • yarn workspace @atls-ui-generators/appearance test unit
    • yarn workspace @atls-ui-generators/appearance build
    • yarn workspace @atls-ui-parts/theme build
    • yarn workspace @atls-ui-parts/button build
    • yarn workspace @atls-ui-parts/input build
    • yarn workspace @atls-ui-parts/checkbox build
    • yarn check

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions