emotion-selection

برای هر تعامل، emotion token مناسب و پارامترهای موشن هماهنگ انتخاب کنید.

این skill با توجه به احساس کاربر، نوع تعامل و شخصیت برند، emotion token مناسب را برای انیمیشن انتخاب می‌کند؛ از celebratory برای موفقیت تا calming برای اطمینان‌بخشی و frustrated برای خطا. سپس spring، easing، duration و افکت‌های ثانویه مانند ذرات یا glow را پیشنهاد می‌دهد.

برای سناریوهای پیچیده، امکان ترکیب چند احساس، اعمال modifierهای مربوط به اولین بازدید یا دستگاه کم‌مصرف و نگاشت مناسب برای reduced motion را فراهم می‌کند. نتیجه، موشن‌هایی معنادار، سازگار با برند و قابل‌دسترس‌تر است.

چه چیزی می‌گیرید

  • انتخاب emotion token بر اساس وضعیت کاربر و نوع تعامل
  • پیشنهاد spring، duration، exaggeration و افکت‌های مکمل
  • راهنمای تطبیق احساسات با شخصیت برند و شناسایی گزینه‌های نامناسب
  • پشتیبانی از ترکیب احساسات برای سناریوهایی مانند موفقیت پرداخت
  • نگاشت رفتار انیمیشن برای reduced motion و دستگاه‌های کم‌مصرف

برای چه کاری خوب است

  • طراحان محصول و UI که می‌خواهند برای هر حالت تعاملی موشن هدفمند بسازند
  • تیم‌هایی که سیستم موشن مبتنی بر design token و شخصیت برند دارند
  • سناریوهایی مانند onboarding، loading، خطا، موفقیت پرداخت و achievement

برای چه کاری نیست

  • ساخت مستقیم فایل انیمیشن یا پیاده‌سازی کامل component بدون نیاز به انتخاب احساسی
  • پروژه‌هایی که موشن آن‌ها کاملاً تزئینی است و به تجربه یا احساس کاربر وابسته نیست
  • زمانی که emotion tokens یا پارامترهای پایه مانند spring و duration در پروژه تعریف نشده‌اند

دربارهٔ این اسکیل

Emotion Selection

Guide for selecting emotion tokens from tokens/emotion.tokens.json to match animation context.

Quick Selection

By User State

User FeelingEmotion TokenKey Parameters
Accomplished somethingcelebratorybouncy spring, 1.2x duration, particles
Needs reassurancecalminggentle spring, 1.4x duration, no effects
Under time pressureurgentsnappy spring, 0.8x duration, pulse
Having funplayfulbouncy spring, 1.1x duration, wobble
Making decisionsprofessionalstandard spring, 1.0x duration, none
Discovering somethingmysteriousgentle spring, 1.5x duration, glow
Highly engagedenergeticsnappy spring, 0.9x duration, trail
Encountered errorfrustratedsnappy spring, 0.9x duration, shake
Trusting the systemtrustworthygentle spring, 1.1x duration, none
Waitinganticipatorylinear, 1.0x duration, shimmer
Pleasantly surpriseddelightfulbouncy spring, 1.3x duration, sparkle
Concentratingfocusedsnappy spring, 0.9x duration, none
First time herewelcomingenter spring, 1.2x duration, wave

By Interaction Type

InteractionRecommended Emotion
Form submission successcelebratory
Payment confirmedcelebratory + trustworthy (blend 70/30)
Error messagefrustrated (brief)
Loading stateanticipatory
Onboarding stepwelcoming
Toggle/switchplayful or professional
Modal openprofessional or calming
Achievement unlockdelightful
Security prompttrustworthy + urgent (blend 60/40)
Help tooltipcalming

Emotion Parameters

Each emotion maps to specific animation parameters:

celebratory:
  spring: {motion.spring.legacy.bouncy}
  duration-multiplier: 1.2
  exaggeration: expressive
  secondary-effects: particles, glow

professional:
  spring: {motion.spring.default.spatial}
  duration-multiplier: 1.0
  exaggeration: subtle
  secondary-effects: none

Selection Process

Step 1: Identify Context

What just happened?
├── Success → celebratory, delightful
├── Error → frustrated (brief)
├── Loading → anticipatory
└── Navigation → professional, welcoming

What should user feel?
├── Confident → trustworthy
├── Engaged → playful, energetic
├── Calm → calming
└── Focused → focused

Step 2: Check Brand Compatibility

Brand AttitudeCompatible EmotionsAvoid
Elegantcalming, trustworthy, professionalplayful, energetic
Playfulplayful, delightful, celebratoryprofessional, focused
Boldenergetic, celebratory, urgentcalming, mysterious
Friendlywelcoming, playful, calmingurgent, frustrated

Step 3: Apply Context Modifiers

From tokens/emotion.tokens.json:

ContextDurationExaggerationEffects
First visit+20%+10%+20%
Repeat user-10%-10%-10%
Reduced motion-50%0disabled
Low power-20%n/a-30%

Step 4: Blend if Needed

For complex scenarios, blend emotions:

// From emotion.tokens.json
"confident-celebration": {
  "blend": ["celebratory", "trustworthy"],
  "weights": [0.7, 0.3],
  "use-case": "Payment success"
}

Token Lookup

Load Token

import emotions from 'tokens/emotion.tokens.json';

const params = emotions.emotions.celebratory.parameters;
const spring = params['spring-ref']; // "{motion.spring.legacy.bouncy}"

Resolve References

Spring refs use W3C DTCG format:

{motion.spring.legacy.bouncy} → tokens/spring.tokens.json → motion.spring.legacy.bouncy

Reduced Motion Mapping

EmotionStandardReduced Motion
celebratorybounce + particlesfade + success icon
playfulspring + wobblestandard transition
energeticfast + trailquick fade
frustratedshakestatic error state

Related Skills

  • Dependencies: emotion-mapping, easing, duration
  • Commonly used with: animation-recipes, component-animations
  • See also: accessibility (for reduced motion implementation)

دانلود ZIP