Мы уже разобрались, как правильно называть слои и фреймы, чтобы разработчикам было проще. Теперь давайте углубимся в оптимизацию самих компонентов. Сделаем их максимально удобными для Dev Mode и лёгкого перевода в код.
Зачем оптимизировать компоненты для Dev Mode?
Хорошо оптимизированные компоненты — это не просто красиво. Это прямая экономия времени и ресурсов для всей команды. Когда компоненты логично структурированы, используют правильные свойства и стили, разработчикам гораздо проще:
- Понимать структуру. Чёткая иерархия и именование слоёв внутри компонента помогают быстро понять, из чего он состоит.
- Извлекать значения. Размеры, отступы, цвета, типографика — всё это должно быть легко доступно в Dev Mode.
- Переводить в код. Чем ближе структура компонента в Figma к реальной структуре в коде (например, с использованием Flexbox или Grid), тем меньше ручной работы.
- Поддерживать консистентность. Оптимизированные компоненты помогают избежать «зоопарка» стилей и обеспечивают единый подход к разработке.
Ключевые аспекты оптимизации компонентов
1. Auto Layout для гибкости
Мы много говорили об Auto Layout, и не зря. Это основа для создания компонентов, которые легко адаптируются и масштабируются.
- Динамические размеры. Используйте
Hug contentsиFill containerтам, где это нужно. Компоненты будут автоматически подстраиваться под контент или доступное пространство. - Отступы и выравнивание. Все внутренние отступы (padding) и расстояния между элементами (spacing) задавайте через Auto Layout. Разработчики увидят эти значения в Dev Mode и легко перенесут их в CSS (например,
gap,padding). - Вложенность Auto Layout. Для сложных компонентов используйте несколько уровней Auto Layout. Это разбивает компонент на логические блоки, которые легче читать и кодировать.
Совет: Представьте, как ваш компонент будет выглядеть в коде. Auto Layout часто соответствует Flexbox или Grid-контейнерам, что значительно упрощает работу разработчика.
2. Variables для стандартизации
Переменные — ваш лучший друг для создания дизайн-токенов, которые разработчики легко используют в коде.
- Цвета. Все цвета в компоненте привязывайте к переменным цвета (например,
color-primary-500,color-text-default). Это позволяет разработчикам использовать эти переменные в коде, обеспечивая единое управление темами. - Отступы и размеры. Используйте числовые переменные для всех стандартных отступов (например,
spacing-xs,spacing-md) и размеров (например,size-icon-sm,size-button-lg). Это унифицирует дизайн и даёт разработчикам готовые значения для CSS-переменных. - Типографика. Текстовые стили в Figma — не переменные в прямом смысле. Но убедитесь, что все текстовые слои используют опубликованные текстовые стили. Разработчики увидят все свойства этих стилей в Dev Mode.
3. Оптимизация Component Properties
Свойства компонентов (Variants, Boolean, Text, Instance Swap, Content) делают компоненты гибкими и сокращают их количество. Для Dev Mode важно, чтобы эти свойства были понятны.
- Осмысленные имена свойств. Давайте свойствам понятные имена, которые отражают их назначение (например,
state,size,hasIcon,label). - Чёткие значения Variants. Значения Variants должны быть однозначными (например,
default,hover,pressedдля состояний;small,medium,largeдля размеров). - Булевы свойства. Используйте булевы свойства (
true/false) для опциональных элементов (например,showIcon,isDisabled). Это позволяет разработчикам легко включать или выключать эти элементы. - Text Property. Для изменяемого текста используйте Text Property. Разработчики увидят, какой текст должен быть вставлен в компонент.
- Instance Swap Property. Для замены вложенных компонентов (например, иконок) используйте Instance Swap Property. Это даёт разработчикам понять, что здесь может быть другой компонент.
4. Чистота слоёв и именование
Даже если вы используете все перечисленные функции, беспорядок в слоях может свести на нет все усилия.
- Удаляйте неиспользуемые слои. Перед публикацией компонента убедитесь, что в нём нет скрытых или неиспользуемых слоёв.
- Группируйте логически. Используйте группы или фреймы (с Auto Layout) для логического объединения связанных элементов внутри компонента.
- Используйте правильное именование слоёв. Как мы обсуждали ранее,
kebab-caseилиcamelCaseдля слоёв внутри компонента значительно упрощает навигацию для разработчиков. Например,button-icon,button-label.
Практический пример: Оптимизация кнопки
Давайте посмотрим, как все эти принципы применяются к простому компоненту — кнопке.
Плохой пример: Кнопка, где текст и иконка расположены вручную, отступы заданы через смещение слоёв, а цвета — локально. Разработчику будет сложно понять, как она работает и какие у неё состояния.
Хороший пример:
- Auto Layout: Кнопка обёрнута в Auto Layout. Внутренние отступы (padding) и расстояние между текстом и иконкой (spacing) заданы через Auto Layout.
- Variables:
- Цвет фона кнопки привязан к переменной
color-button-primary-default. - Цвет текста привязан к
color-text-button-primary. - Горизонтальные и вертикальные отступы привязаны к числовым переменным
spacing-button-horizontal-mdиspacing-button-vertical-md.
- Цвет фона кнопки привязан к переменной
- Variants:
state:default,hover,pressed,disabledsize:small,medium,largehasIcon:true,false(булево свойство)
- Component Properties:
label: Text Property для текста кнопки.icon: Instance Swap Property для иконки.
- Именование слоёв: Слои внутри кнопки названы
button-label,button-icon.
В Dev Mode разработчик увидит все эти свойства, переменные и значения. Это позволит ему быстро и точно реализовать компонент в коде, используя дизайн-токены и правильную структуру.
Оптимизация компонентов для Dev Mode — это инвестиция, которая окупается ускорением разработки и повышением качества продукта. Чем лучше вы подготовите свои компоненты, тем легче будет работать всей команде.
Теперь, когда мы понимаем, как оптимизировать компоненты для разработчиков, мы готовы перейти к следующему важному этапу — документированию дизайн-системы.