Space
Источник:
ds-docs/component-contracts/foundations/space.md
Источник: коллекция space файла Astra DS · режим value · тип FLOAT (px).
id сверены с tokens/variable-ids.json.
Только факты. Находки — в конце.
Отступы: поля, интервалы между элементами и размеры. Scope у всех шестнадцати одинаковый —
WIDTH_HEIGHT и GAP, то есть переменная предлагается и на размер, и на промежуток.
space-none | 0 | 10597:8243 | да |
space-3xs | 2 | 3004:1635 | да |
space-2xs | 4 | 3004:1636 | да |
space-1xs | 6 | 46002:206351 | да |
space-xs | 8 | 3004:1637 | да |
space-xs-plus | 10 | 40013542:9518 | да |
space-s | 12 | 3004:1638 | да |
space-m | 16 | 3004:1639 | да |
space-ml | 20 | 15264:43238 | да |
space-xl | 24 | 3004:1640 | да |
space-2xl | 32 | 3004:1641 | да |
space-3xl | 40 | 3004:1642 | да |
space-4xl | 48 | 3004:1643 | да |
space-5xl | 56 | 3004:1644 | да |
space-6xl | 64 | 3004:1645 | — |
space-7xl | 80 | 3173:2434 | — |
Шестнадцать переменных, база использует 14: не встречаются только два крупнейших,
space-6xl и space-7xl.
Основной ряд — 0, 2, 4, 8, 12, 16, 24, 32, 40, 48, 56, 64, 80: до 16 шаг растёт,
дальше идёт ровно по 8, и только последняя ступень прыгает на 16. Между ними вставлены три
промежуточные — space-1xs (6), space-xs-plus (10), space-ml (20).
Как применять — по разделу Figma
Раздел «Space Token» (40014705:2777) закрепляет за токенами сценарии. Проверено по базе:
space-m (16) | стандартный отступ внутри компонента: Card Layer, Basic Dialog, List, Accordion, List Consents | сходится: во всех 19 контрактах названных семейств — basic-dialog, accordion*, basic-list*, — и в layer-1…3, которые раздел зовёт Card Layer. Больше всего мест вообще у button (548), его раздел не называет |
space-s (12) | между заголовком и текстом в Basic Dialog | сходится: basic-dialog — 10 мест |
space-xs (8) | между двумя и более Card Layer | проверить нечем: это расстояние между компонентами на экране, а не внутри компонента, и в контракт оно не попадает |
space-2xs (4) | между лейблом и вводимым текстом в Form Family | сходится: 20 полей ввода из 22 |
Правило компенсации — единственное место раздела, которое меняет разметку, а не только
выбор числа. У компонентов семейства List свои внутренние отступы 16; если поставить снизу
контентного блока ещё 16, отступ смотрится вдвое больше. Раздел велит уменьшать нижний отступ
блока до 8, а боковые убирать совсем, чтобы содержимое встало по заголовку. Для вида
Secondary поправка не нужна. То же и у продуктового Exchange Rate Table, который
включает в себя List: сверху и снизу 16 → 8.
Ещё раздел предупреждает: отступ должен быть одинаков со всех сторон — 32 по горизонтали против 16 по вертикали растягивает содержимое и ломает ритм.
Что показывает база
Отступы, в отличие от углов, в макете к переменным привязаны — и почти везде.
| значений в контрактах | 7366 | 29 550 |
| из них ненулевых | 1728 | 7605 |
| ненулевых токеном | 1473 (85 %) | 7366 (97 %) |
Числа вместо токена — там, где отступ подогнан под картинку: промежуток 178 и 220
(slider, navigation-bar, scanner-family), поля 120 и 104 у шторок и полноэкранных
диалогов, 14 у шапок, 60 у барабана выбора. Отдельно стоят отрицательные промежутки —
−8, −56, −1, −2: слои наезжают друг на друга (basic-list-item-swipe, slider, шапки).
И два дробных: 0.78 и 0.5 в app-tag.
Находки
-
Число 10 живёт двумя жизнями.
space-xs-plus(10) применён токеном 80 раз, почти всё — вbutton. И ещё 99 раз ровно то же число стоит промежутком без токена: 10 — умолчание Figma, его получает всякий новый авто-слой, и в этих местах отступ никто не выбирал. Отличить выбор от умолчания можно только по привязке, а её в контракте видно как имя токена против числа. -
space-1xsхранит значение от удалённого режима. В коллекции один режимvalue(3001:1), где у переменной 6. Но в ней же лежит второе значение — 4 для режима16022:1, которого в коллекции нет. В макете применяется 6; лишняя запись ни на что не влияет, но переживёт любое переименование. -
Ни у одной переменной нет
codeSyntax. Имя для кода не задано — в отличие от цвета, радиусов и типографики, гдеvar(--token)прописан. Перенос имён в код держится на соглашении, а не на файле. -
Ни у одной нет описания. Чем
space-mlотличается отspace-mпо смыслу, файл не говорит. -
Три промежуточные ступени ломают схему имён.
1xsменьше2xs, хотя по образцу «чем больше цифра, тем дальше от базы» должно быть наоборот;xs-plusиml— единственные имена с суффиксом.