استثناهای دیزاین توکن رو چطور مدیریت کنیم
خلاصهٔ کاملتر
مقاله با یه موقعیت آشنا شروع میشه: داری کامپوننت Card رو میسازی و رنگ خاکستریای که لازم داری تو سیستم نیست. color.border.subtle زیادی روشنه و color.border.muted زیادی تیره. تغییر دادن توکن معنایی (semantic token، یعنی توکنی که اسمش کاربرد رو میگه نه مقدار رو) روی کل کدبیس اثر میذاره، و تو اسکیل gray- هم از 100 تا 900 همه پرن. نویسنده میگه این استثناها اجتنابناپذیرن و کار ما فقط اینه که تصمیم بگیریم کدومشون رو قبول کنیم.
تعریف مقاله سادهست: هر مقداری که بدون رد شدن از سیستم توکن به پروداکشن برسه استثناست، حتی override محلی یا استفاده از یه توکن global به جای توکن معنایی. یه استثنا وقتی نامعتبره که توکن مناسبش وجود داشته و کسی دنبالش نگشته، فقط از سلیقه شخصی اومده، محدوده نداره (مثلاً همون رنگ تو Modal و Drawer هم استفاده شده که یعنی یه توکن جا افتاده)، صاحب نداره، تاریخ پایان نداره، یا معنی یه توکن موجود رو برای یه کامپوننت عوض میکنه.
به گفته نویسنده فقط سه حالت قابل قبوله: تصمیم زماندار مثل رنگ زرد بنر checkout برای یه کمپین ششهفتهای، توکنی که تأیید شده ولی هنوز منتشر نشده و استثنا فاصله بین دو ریلیز رو پر میکنه، و اصلاح فوری دسترسپذیری وقتی کنتراست متن پایینه و باید همین الان با hotfix درست بشه. تو هر سه حالت یه نیاز واقعی هست، یه جای مشخص، و یه تاریخ پایان.
پیشنهاد اصلی مقاله نگه داشتن یه دفتر ثبت استثناهاست با فیلدهای location، value، reason، requestedBy، approvedBy، expires و onExpiry. نویسنده میگه مهمترین فیلد expires هست، چون همینه که یه مقدار دستی رو به یه تصمیم تبدیل میکنه. حالت promote-or-remove یعنی وقتی تاریخ برسه، استثنا یا توکن واقعی میشه یا حذف میشه، و فقط یه بار میشه تمدیدش کرد. نمونهای که خود مقاله آورده:
{
"id": "EXC-014",
"value": "#FFF4CC",
"expires": "2026-11-30",
"onExpiry": "promote-or-remove"
}برای پیدا کردن استثناها تو Figma، مقاله پلاگینهایی مثل Local Variable Auditor و Variables audit رو معرفی میکنه. اگه از Tokens Studio استفاده میکنی، تب Inspect مقدارهای hardcoded رو نشون میده، ولی فقط چیزهایی که جزو سیستم خودشه؛ برای همین پلاگینهایی مثل TokenMatch و Token Auditor کمک میکنن. سمت کد هم ابزاری مثل TokenLens فایلهای JSON توکن رو با مقدارهای واقعی CSS مقایسه میکنه.
آخرش نویسنده میگه پیدا کردن استثنا نصف کاره. باید یه چک خودکار بذاری که دفتر رو اسکن کنه و استثناهای نزدیک به انقضا رو به requestedBy خبر بده و تیم دیزاین سیستم رو هم در جریان بذاره. اگه تا یه هفته جوابی نیومد، تصمیم با تیم دیزاین سیستمه: یا توکن بشه یا حذف. یعنی سکوت هیچوقت چیزی رو تمدید نمیکنه.
نکات کلیدی:
- استثنا یعنی هر مقداری که بدون سیستم توکن به پروداکشن برسه، از جمله override محلی.
- مقداری که تو چند کامپوننت (مثل Card و Modal و Drawer) استفاده بشه دیگه استثنا نیست، یه توکن جاافتادهست.
- سه استثنای مجاز: تصمیم زماندار، توکن در راه، و hotfix دسترسپذیری.
- دفتر ثبت باید فیلد expires و onExpiry داشته باشه و تمدید فقط یه بار مجازه.
- ابزارهای پیشنهادی: TokenMatch و Token Auditor برای Figma، و TokenLens برای مقایسه JSON توکن با CSS.




