EduFlow

الوحدة 4 · الأدوات والتسليم

Figma Variables والمكتبات، متزامنة مع الكود

20 دقراءة 4 درتّب الخطوات

الدرس في لمحة

اعكس طبقات الـ tokens في مجموعات Figma variables وmodes الخاصة بها، وانشرها عبر المكتبات، وشغّل عملية مزامنة واحدة حتى لا تختلف ملفات التصميم والكود أبدًا على قيمة.

  1. 1ربط الطبقات بـ Figma variables
  2. 2اجعل المتغيّر الصحيح هو الأسهل
  3. 3حلقة المزامنة

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

طوال ثمانية أشهر بعد إطلاق الـ tokens، كان لدى Northwind حقيقتان. ملف JSON في المستودع يقول إن أزرق الإجراء هو #1f5ae0، ومكتبة Figma تقول #2160e8، لأن مصمّمًا عدّله قليلًا من أجل تصميم لحملة ثم نشره. كان المهندسون يبنون من لوحة الفحص، فأطلق الموقع التسويقي أزرق وأطلق التطبيق أزرق آخر. الـ tokens لا تحلّ مشكلة الاتّساق إلا إذا قرأت ملفات التصميم والكود من القرارات نفسها.

ربط الطبقات بـ Figma variables

متغيّرات Figma (Figma variables) تحمل قيمًا قابلة لإعادة الاستخدام مثل الألوان والأرقام، مجمّعة في collections. ويمكن أن يكون للـ collection عدّة modes، يعطي كلٌّ منها كل متغيّر في المجموعة قيمة مختلفة. ويمكن أيضًا لمتغيّر أن يكون اسمًا مستعارًا لمتغيّر آخر. وهذا يكفي لعكس معمارية الـ tokens تقريبًا واحدًا لواحد:

مفهوم الـ token في Figma
طبقة الـ primitives collection باسم “Primitives” بـ mode واحد
الطبقة الدلالية collection باسم “Semantic” بـ modes هي Light وDark
الكثافة collection باسم “Density” بـ modes هي Comfortable وCompact
العلامة collection ممتدّة لكل علامة (Enterprise)، أو collection باسم Brand فيها mode لكل علامة
الاسم المستعار {color.blue.600} متغيّر يشير إلى blue/600

أسماء المتغيّرات تستخدم الشرطات المائلة لتشكيل المجموعات، فيظهر color/action/bg كمسار مجموعة في المنتقي، ويقابل الـ token المسمّى color.action.bg. وتختار الإطارات (frames) في Figma الـ modes كما تفعل الـ attribute selectors في CSS: يمكن للإطار أن يحدّد mode صراحة، وكل ما بداخله مضبوط على Auto يرث ذلك الـ mode، فيعمل إطار واجهة رئيسية داكن على صفحة فاتحة تمامًا مثل data-theme="dark" على قسم.

وللعلامات، تسمح لك المجموعات الممتدّة (extended collections) في Figma، المتاحة على خطة Enterprise، بإنشاء collection لـ Tidewater ترث من المجموعة الدلالية لـ Northwind وتخصّص متغيّرات العلامة وحدها. والتحديثات على المتغيّرات التي لم تخصّصها Tidewater تمرّ تلقائيًا. وعلى الخطط الأخرى، تحقّق لك collection منفصلة باسم Brand بـ mode لكل علامة معظم الطريق.

اجعل المتغيّر الصحيح هو الأسهل

إعدادان أهمّ من أي نظام تسمية. الأول: أخفِ الـ primitives من النشر. تستطيع المجموعة الدلالية أن تشير إليها، لكن المصمّمين في ملفات المنتجات لا يرون إلا المتغيّرات الدلالية، وهذه بالضبط القاعدة التي تتبعها المكوّنات في الكود. والثاني: أعطِ كل متغيّر منشور صيغة كود (code syntax): فيعرض Dev Mode حينها var(--nw-color-action-bg) بدل قيمة hex، فيكون ما اختاره المصمّم هو حرفيًا ما يكتبه المهندس. وتحديد النطاق (scoping) يساعد أيضًا: اقصر متغيّرات الألوان على الخصائص المقصودة لها، حتى لا يظهر لون نص في منتقي التعبئة.

حلقة المزامنة

حلقة: مصمّم يقترح تغييرًا في branch على Figma، ويصدّر JSON إلى pull request، فيفحص الـ CI ويبني، ثم يُنشر الإصدار، ثم يُستورد ملف JSON الخاص بالإصدار إلى مكتبة Figma. branch في Figma اقتراح Pull request JSON الـ tokens فحوص الـ CI بناء المخرجات الإصدار مكتبة Figma استيراد ونشر JSON الإصدار
مصدر حقيقة واحد، وFigma مرآة متزامنة

ما زال المصمّمون يصمّمون في Figma؛ لكنهم فقط لا ينشرون قيم الـ tokens مباشرة. يبدأ التغيير في branch من ملف المكتبة (الـ branching متاح على خطتي Organization وEnterprise في Figma)، حيث يستطيع المصمّم تجربته في تصاميم حقيقية. وحين يجهز، تُصدَّر الـ modes المتغيّرة كـ JSON: إذ يستطيع Figma تصدير modes المجموعة واستيرادها بصيغة DTCG. ويصبح التصدير pull request على مستودع الـ tokens، حيث يشغّل الـ CI الفحوص من القسم 2، ويراجعه مصمّم ومهندس من النواة. وبعد الإصدار، يُستورد ملف JSON الخاص بالإصدار إلى ملف المكتبة الرئيسي ويُنشر تحديث المكتبة.

بعض الفرق تؤتمت الخطوة الأخيرة بـ plugin أو بـ REST API الخاص بـ Figma. أما Northwind فتفعلها يدويًا مرة في كل إصدار؛ تستغرق عشر دقائق، ونظرة بشرية إلى لوحة المتغيّرات التقطت مرتين استيرادًا خاطئًا.

الحلقة نفسها تعمل مع المكوّنات، إذ يربط Code Connect مكوّنات Figma بالكود الخاص بها في Dev Mode. في التمرين ترتّب خطوات تغيير token. وبعدها تعطي هذه الإصدارات أرقامًا تخبر الفرق بما سيفعله التحديث بها.

أهم النقاط

  • اربط طبقات الـ tokens بمجموعات المتغيّرات (collections) في Figma، واربط الـ themes والعلامات والكثافة بالـ modes أو بالمجموعات الممتدّة.
  • اختر مصدر حقيقة واحدًا لقيم الـ tokens، واجعل الجانب الآخر مرآة تُحدَّث بعملية محدّدة، لا يدويًا أبدًا.
  • أعطِ المتغيّرات الدلالية صيغة كود (code syntax) وأخفِ الـ primitives من النشر، حتى يختار المصمّمون الأسماء نفسها التي يكتبها المهندسون.
  • تحديثات المكتبة إصدارات أيضًا؛ يقبلها المصمّمون في ملفاتهم كما يرفع المهندسون إصدار حزمة.

قراءات إضافية

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

يستطيع مصمّمو Northwind اختيار أي primitive مثل blue/600 من المكتبة، وما زالت التصاميم تستخدم الـ primitives حيث مكان الـ semantic tokens. ما أفضل إصلاح؟

السؤال 2 من 3

غيّر مصمّم color/action/bg في Figma الأسبوع الماضي، وغيّر مهندس الـ token نفسه في JSON أمس، إلى قيمة مختلفة. أيّ فشل في العملية يكشفه هذا؟

السؤال 3 من 3

كيف يجب أن تمثّل Northwind علامتيها في Figma على خطة Enterprise؟

تدريب

رتّب الخطوات

أطلق تغيير token من Figma إلى الكود وبالعكس

يريد مصمّم في Northwind أن يجعل color/text/subtle أغمق لأنه يفشل في التباين في الـ theme الداكن لعلامة Tidewater. ملف JSON في مستودع الـ tokens هو مصدر الحقيقة، ومكتبة Figma مرآة. رتّب خطوات التغيير.

استخدم أزرار الأسهم لإعادة الترتيب.

  1. 1تصدير الـ modes المتغيّرة كـ JSON بصيغة DTCG وفتح pull request في مستودع الـ tokens
  2. 2يراجع مصمّم ومهندس من النواة الـ pull request والفروقات البصرية فيه
  3. 3يشغّل الـ CI فحوص التسمية والمراجع والتباين ويبني CSS وSwift وKotlin
  4. 4الدمج ونشر إصدار جديد من الـ tokens مع إدخال في الـ changelog
  5. 5استيراد ملف JSON الخاص بالإصدار إلى متغيّرات المكتبة الرئيسية ونشر تحديث المكتبة
  6. 6يجرّب المصمّم القيمة الأغمق في branch من ملف مكتبة Figma