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 fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions