size.inputtext: высота поля по токенам и размер строки на примитиве sizing - #104
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ветка от
size-update, процесс тот же, что в #97, #98, #100, #101, #102.Что сделано
Толщина рамки — токеном. У Aura рамка поля зашита сырым
1px, токена под неё нет. Добавленinputtext.extend.borderWidthи применён в.p-inputtext— без этого слагаемое2 × borderWidthв формуле высоты ниже было бы фикцией.Высота — по токенам, а не по метрикам шрифта. Токена высоты поля в экспорте нет, а
<input>в браузере не может быть ниже метрик шрифта: без явнойheightона диктовалась глифами — 21.5px контента вместо 16px размера строки — и уезжала в дробные пиксели, разъезжаясь с соседями по размерной лестнице. Высота собирается из тех же токенов, что задаёт дизайн:по правилу на каждый размер:
root.paddingY,root.sm.paddingY,root.lg.paddingY,extend.extXlg.paddingY.Отдельный случай — float-label: там вертикальные паддинги задаёт сам плавающий лейбл (24/8), формула по базовым паддингам дала бы неверный результат. Для
.p-floatlabel .p-inputtextвысота сброшена вauto.Размер строки — размерным примитивом. Слагаемое «высота строки» и само свойство
line-heightпереведены с типографской шкалыfonts.lineHeight.250на размерный примитивsizing.8x. Обе ступени дают1rem, так что переход чисто семантический: геометрия поля больше не зависит от типографской шкалы, которая живёт своей жизнью вместе сfontSize.Селектор в примерах. В stories поле объявлялось несуществующим селектором — исправлено.
Замеры в браузере
Storybook,
components-form-inputtext--default, база 16px. Правило приезжает какline-height: var(--p-sizing-8x), дробных пикселей нет, консоль чистая.До и после перевода на
sizing.8x— значения совпадают до пикселя.Заметка по
dt('sizing.*')До этой ветки прямых ссылок на примитивы
sizingв компонентных стилях не было ни одной (403dt()-ссылки, все наsemantic/components). Проверено в рантайме:--p-sizing-8x=1remприсутствует — PrimeUIX эмитит переменную для каждого токена, включая примитивы, как и описано вgates.md.Гейты
npm run check:tokens— новых мёртвых ссылок и коллизий нет: в отчёте те же 12 мёртвых (confirm-dialog,dialog,drawer) и 16 коллизий, что и до ветки,inputtextв них не фигурирует.Не входит в ветку
tokens.jsonне правил — по договорённости это экспорт из Figma. Остальной кит наfonts.lineHeight.*не переводил: ссылка живёт ещё в 21 файле, и у ступеней.300–.700прямого совпадения со шкалойsizingможет не быть — нужна поступенчатая сверка, это отдельная ветка.