Space

Источник: ds-docs/component-contracts/foundations/space.md

Источник: коллекция space файла Astra DS · режим value · тип FLOAT (px). id сверены с tokens/variable-ids.json. Только факты. Находки — в конце.

Отступы: поля, интервалы между элементами и размеры. Scope у всех шестнадцати одинаковый — WIDTH_HEIGHT и GAP, то есть переменная предлагается и на размер, и на промежуток.

space-none010597:8243да
space-3xs23004:1635да
space-2xs43004:1636да
space-1xs646002:206351да
space-xs83004:1637да
space-xs-plus1040013542:9518да
space-s123004:1638да
space-m163004:1639да
space-ml2015264:43238да
space-xl243004:1640да
space-2xl323004:1641да
space-3xl403004:1642да
space-4xl483004:1643да
space-5xl563004:1644да
space-6xl643004:1645—
space-7xl803173: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 по вертикали растягивает содержимое и ломает ритм.

Что показывает база

Отступы, в отличие от углов, в макете к переменным привязаны — и почти везде.

значений в контрактах736629 550
из них ненулевых17287605
ненулевых токеном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 — единственные имена с суффиксом.

См. также: radius, border, README.