การนำระบบ Material You (Material Design 3) ไปประยุกต์ใช้จริงใน Figma ให้ยืดหยุ่นและรองรับคุณสมบัติ Dynamic Color อย่างแท้จริง ควรใช้ประโยชน์จากฟีเจอร์ Figma Variables & Modes ร่วมกับปลั๊กอินทางการจาก Google อย่าง Material Theme Builder (MTB)
ขั้นตอนและแนวทางปฏิบัติในการเซ็ตอัปตั้งแต่ระดับ Foundation ไปจนถึง Component Handoff มีดังนี้
เครื่องมือและทรัพยากรหลักที่ต้องเตรียม
- Material Theme Builder (MTB) Plugin
ปลั๊กอินทางการของ Google ที่ช่วยคำนวณ HCT Color Space และสร้าง Tonal Palettes ($0–100$) พร้อมแปลงเป็น Figma Variables ให้อัตโนมัติ - Material 3 Design Kit (Figma Community)
UI Kit มาตรฐานของ M3 ที่ผูกโทเคนของคอนเทนเนอร์ ปุ่ม และไอคอนต่าง ๆ ไว้เรียบร้อยแล้ว
ขั้นตอนการตั้งค่าแบบ Step-by-Step
ขั้นตอนที่ 1: สกัด Seed Color และสร้าง Palette ด้วย Material Theme Builder
- เปิดปลั๊กอิน Material Theme Builder ใน Figma
- ในแถบ Custom Theme:
- กำหนดสีหลักของแบรนด์ (Primary Seed Color) หรือสกัดสีจากภาพถ่าย/ภาพวอลเปเปอร์
- กำหนดสี Secondary, Tertiary และ Neutral เพิ่มเติมตามต้องการ
- คลิก Save / Update: ปลั๊กอินจะคำนวณ HCT Tonal Palette และสร้างเป็น Figma Variables ขึ้นมาในไฟล์ทันที
ขั้นตอนที่ 2: วางโครงสร้าง Variables Collections (สถาปัตยกรรม 3 ระดับ)
เพื่อความง่ายในการดูแลระบบ ควรจัดแบ่ง Collection ของ Variables ออกเป็นชั้นที่ชัดเจน:
- Collection 1: Reference Tokens (Core Tones)
- เก็บค่าดิบ Tonal Palette ($0, 10, 20, \dots, 90, 95, 100$) ของแต่ละกลุ่มสี เช่น:
md/ref/palette/primary/40md/ref/palette/primary/80md/ref/palette/neutral/10
- เก็บค่าดิบ Tonal Palette ($0, 10, 20, \dots, 90, 95, 100$) ของแต่ละกลุ่มสี เช่น:
- Collection 2: System / Semantic Tokens (บริบทการใช้งาน)
- เป็นโทเคนที่ระบุหน้าที่ เช่น
md/sys/color/primary,md/sys/color/surface,md/sys/color/on-primary - สร้างอย่างน้อย 2 Modes:
LightและDark - ทำ Token Aliasing ชี้ไปยัง Reference Tokens:
- ในโหมด Light:
md/sys/color/primary$\rightarrow$ ผูกกับprimary/40 - ในโหมด Dark:
md/sys/color/primary$\rightarrow$ ผูกกับprimary/80 - ในโหมด Light:
md/sys/color/on-primary$\rightarrow$ ผูกกับprimary/100 - ในโหมด Dark:
md/sys/color/on-primary$\rightarrow$ ผูกกับprimary/20
- ในโหมด Light:
- เป็นโทเคนที่ระบุหน้าที่ เช่น
ขั้นตอนที่ 3: การประยุกต์ใช้กับ Component และ Layout
- ห้ามใช้สีดิบ (Raw Hex) หรือ Reference Tokens กับ UI เด็ดขาด
- สไตล์ปุ่ม การ์ด ข้อความ และเส้นขอบ ต้องเชื่อมต่อกับ System Tokens เท่านั้น เช่น
- พื้นหลังของ Filled Button =
md/sys/color/primary - ตัวอักษรบนปุ่ม =
md/sys/color/on-primary - พื้นผิวการ์ด =
md/sys/color/surface-container
- พื้นหลังของ Filled Button =
- สไตล์ปุ่ม การ์ด ข้อความ และเส้นขอบ ต้องเชื่อมต่อกับ System Tokens เท่านั้น เช่น
- จับคู่สี Surface และ On-Surface ให้ถูกต้อง:
- ตรวจสอบว่าใช้องค์ประกอบคู่สีที่มีพรีฟิกซ์
on-เสมอ เพื่อการันตี Contrast WCAG 2.1 / 2.2 อัตโนมัติในทุกธีม
- ตรวจสอบว่าใช้องค์ประกอบคู่สีที่มีพรีฟิกซ์
การจำลอง Dynamic Color & Switching Mode
- สลับ Light / Dark Mode ในคลิกเดียว
- เลือก Frame หน้าจอที่ต้องการทดสอบ
- ดูที่แถบ Layer ใน Inspector ด้านขวา $\rightarrow$ คลิกไอคอน Change variable mode
- เลือกระหว่าง
LightหรือDarkดีไซน์ทั้งหมดจะเปลี่ยนชุดสีทันทีโดยไม่ต้องทำ Screen แยก
- จำลองผู้ใช้หลายธีม (Multi-Seed Testing)
- หากต้องการทดสอบว่าแอปดูดีหรือไม่เมื่อผู้ใช้มีสีเครื่องต่างกัน ให้สร้าง Mode เพิ่มใน System Collection เช่น
User-Blue,User-Green,User-Pink - หรือใช้ฟังก์ชัน Swap Theme ในปลั๊กอิน Material Theme Builder เพื่อสลับชุดสีของทั้งโปรเจกต์ได้แบบ Real-time
- หากต้องการทดสอบว่าแอปดูดีหรือไม่เมื่อผู้ใช้มีสีเครื่องต่างกัน ให้สร้าง Mode เพิ่มใน System Collection เช่น
ข้อควรระวังและการส่งมอบให้ Developer (Design Handoff)
- ความสอดคล้องของชื่อโทเคน (Token Naming Invariant)
- ตั้งชื่อ Variable ใน Figma ให้ตรงกับโค้ดฝั่งนักพัฒนา เช่น รูปแบบ
kebab-caseหรือcamelCaseที่ใช้ใน CSS Variables หรือ Compose ColorScheme (เช่นcolor-primaryหรือmd_theme_light_primary)
- ตั้งชื่อ Variable ใน Figma ให้ตรงกับโค้ดฝั่งนักพัฒนา เช่น รูปแบบ
- ส่งออก JSON Tokens
- ใช้ปลั๊กอินจำพวก Tokens Studio for Figma หรือส่งออกผ่าน Material Theme Builder ไปเป็นโค้ด JSON/DSP (Design System Package) เพื่อนำไปคอมไพล์ผ่าน Style Dictionary เข้าสู่ Android (Jetpack Compose), Flutter หรือ Web ได้โดยตรง
- หลีกเลี่ยงการสร้าง Custom Color สุ่มสี่สุ่มห้า
- ทุกสีควรคำนึงถึง Harmonic Color System หากต้องการสีใหม่ ควรเพิ่มเป็น Custom Color with Harmonization ผ่านปลั๊กอิน MTB เพื่อให้อัลกอริทึมปรับ Hue ให้กลมกลืนกับ Seed Color หลัก