awesome-everything EN
↑ Обратно к восхождению

Архитектура фронтенда

Design-токены: соберите тематизированный пайплайн токенов

Суть Практический проект — соберите трёхтировую систему токенов в DTCG JSON, сгенерируйте CSS через Style Dictionary, выкатите dark-тему без правок компонентов и закройте drift линтером.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 220 min

Читать про тиры и пайплайны — не то же самое, что выкатить ребрендинг одной правкой. Соберите реальную систему токенов, подключите генератор, добавьте dark-тему, не тронув ни одного компонента, и докажите обещание «ребрендинг-в-одну-правку» через diff.

Цель

Превратите ментальную модель юнита в рабочий пайплайн: авторите токены один раз в DTCG JSON по трём тирам, генерируйте платформенный CSS через Style Dictionary, тематизируйте dark mode переопределением только semantic-слоя и закрепите правило no-raw-value, чтобы drift не вернулся.

Проект
0 из 6
Цель

Соберите небольшой набор компонентов (button, card, link, input), стилизованных целиком через трёхтировую систему токенов. Авторите токены один раз в DTCG JSON, генерируйте CSS custom properties через Style Dictionary, выкатите dark-тему без правок кода компонентов и закройте систему так, чтобы захардкоженное значение валило сборку — затем докажите, что ребрендинг это одна правка.

Требования
Критерии приёмки
  • Diff коммита ребрендинга показывает, что изменение ограничено primitive-слоем токен-источника (плюс перегенерированный CSS) — ни одного файла компонента не тронуто.
  • Переключение data-theme в dark корректно перекрашивает все четыре компонента без JavaScript и без правок CSS компонентов; захардкоженное значение, если просочилось, видно как двухцветный дефект.
  • Lint-гейт валит сборку на намеренно вставленном сыром hex в компоненте и проходит, как только тот заменён на semantic-токен.
  • Короткий разбор: в каком тире живёт каждый токен и почему, и одно предложение о том, когда вы НЕ стали бы добавлять component-тир или пайплайн.
Senior-стретч
  • Добавьте вторую платформенную сборку (iOS Swift или Android colors.xml) из того же источника и покажите, что трансформ цвета (hex в UIColor или 8-значный ARGB) даёт корректный нативный артефакт без правки JSON.
  • Добавьте high-contrast-тему как третий semantic-override и убедитесь, что все компоненты адаптируются без нового кода компонентов.
  • Добавьте шаг CI, который гоняет сборку токенов и валится, если сгенерированный CSS устарел относительно источника (drift закоммиченного артефакта), как работает проверка сгенерированного кода.
  • Добавьте составной DTCG-токен (typography или shadow, бандлящий несколько суб-значений) и подключите к нему один компонент, показав, что бандл корректно разрешается через пайплайн.
Итог

Это и есть цикл, который система токенов должна делать рутинным: авторь intent один раз в DTCG JSON по тирам primitive, semantic и component; генерируй платформенный CSS, чтобы ничего не копировалось руками; тематизируй dark mode переопределением только semantic-слоя, чтобы каскад перекрасил всё за одну перерисовку; и закрывай сырые значения линтером, чтобы конвенция не разваливалась. Diff ребрендинга, ограниченный primitive-слоем, — вся отдача: одиннадцатинедельный grep становится одной правкой.

Продолжить восхождение ↑Границы монорепозитория: граф зависимостей решает твой счёт за CI
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.