Решили: перечень элементов интерфейса и их состояний живёт кодом-данными
(UiComponentRegistry), а не документом; состояния требуются с БЛОКА, не с варианта; сам реестр не
ссылается на UIElements.
Почему: перечня не существовало ни в каком виде, и цена этого измерима — :checked не был
объявлен ни разу, :active отсутствовал у двенадцати кликабельных классов, :focus у тринадцати,
:disabled стоял у одиннадцати из тридцати. Набор состояний приходилось помнить, а помнить его
негде: components.uss был лентой на 3994 строки. Отвергли документ (ui-feedback.md уже был
объявлен «домом для доступно/недоступно/занято/выбрано» и полтора месяца держал только
«недоступно» — док отстаёт молча и никого не роняет). Отвергли требование состояний с каждого
варианта: --primary, --selected наследуют состояния блока, и гейт заставлял бы писать пустые
правила ради зелёного. Отвергли фабрики образцов внутри реестра: тогда рантайм-сборка потащила бы
знание о витрине, нужной одному редакторному инструменту, — вместо этого реестр остался чистыми
строками и флагами и попал в быстрый прогон (шесть тестов, 0.7 с, без редактора).
Сказано: «Как будто у нас нет единого цельного набора всех элементов, их состояний. Часто
встречаются очень старые состояния кнопок и решения, от которых мы отказались.» (2026-08-06, сессия
a66a54e9). Обязательный набор — его же вердикт в тот день: наведение, нажатие, выключенность и
фокус у всего кликаемого, checked где применимо; фокус ради клавиатуры и геймпада, а не мыши.
Грабли: второй владелец того же факта нашёлся сразу — UiSoundSystem.FindInteractive держал
свой список кликабельных классов и знал шесть из тридцати. Сосуд во Дворе, карточка лавки, строка
запаса, строка дропа, свотч профиля и строки пикера кликались молча, и заметить это по монитору
нельзя — только на слух и только зная, что звук вообще должен быть. Список переведён на реестр;
отдаётся массивом, а не yield-перечислением, потому что читается на каждое движение указателя.
Владелец правды: Assets/_Project/Scripts/UI/Components/UiComponentRegistry.cs, тесты
UiComponentRegistryTests.