Решили: у контролов появилась ШКАЛА РАЗМЕРА — три ступени меры и высоты токенами
(--gm-control-w-sm/md/lg, --gm-control-h-sm/md/lg), модификаторы .gm-button--sm / умолчание /
.gm-button--lg плюс --block как отказ от меры, и гейт ControlSizeGateTests: правило под
screens/ не вправе задавать кнопке width/height.
Почему: цвет, кегль и отступы шкалу имели с самого начала, габариты — нет. Замер 22.08.2026: из двенадцати правил, дававших кнопке размер, ВОСЕМЬ сидели в правилах экранов (430 в меню, 260 в настройках, 220 в «Продолжить» и в ленте забега, 36 в тулбаре, 100% ещё в двух местах). Одна и та же кнопка была в проекте восемью разными вещами.
Развилки и что отвергли:
- Одна ось «размер» вместо двух — отвергнуто: настройки просят крупную подпись при средней
мере, лента забега — среднюю меру при мелкой. Свяжи кегль со ступенью целиком, и половина мест
снова начнёт спорить своими числами. Кегль остался отдельной осью (
--display), КРОМЕ мелкой ступени: 26px в высоте 36 не помещается физически, и каждое место дописывало бы себе один и тот же--gm-font-xs. widthвместоmin-width— отвергнуто: кнопка в ряду вправе расти, а длинная подпись в другой локали должна иметь куда перенестись.- Ступеней четыре (36/48/56/64) — отвергнуто по правилу лестницы: 220 и 260 глаз читает одинаково, значит это одна ступень, а не две.
Сказано: «У нас который раз проблемы с размерами кнопок. Они у нас скачут по проекту. У нас нет разве какой-то единыой базы размеров кнопок и прочих элементов? Типогарфики там и тп? Если нет, то почему все еще нету?» (2026-08-22, разбор кадра главного меню).
Грабли: гейт типографики поймал ту же ошибку в свежем коде через пять минут после того, как
шкала была готова: кегли --gm-font-xs и --gm-font-sm оказались вписаны в правила экрана рядом с
новыми ступенями. Это и есть подтверждение, зачем гейт: без него правило «размер живёт в наборе»
продержалось бы ровно до следующего экрана.
Владелец правды: Assets/_Project/UI/Theme/tokens.primitives.uss (§размер контрола),
Assets/_Project/UI/Theme/components/button.uss (ступени),
тесты ControlSizeGateTests, UiTypographyGateTests.