رفتن به محتوای اصلی
Primer

Github

Primer

Figma UI Kit

نسخه‌های رسمی

Primer Web

Primer Web

نسخه رسمی انگلیسی
Primer

Primer

مشاهده
Octicons - GitHub's icon set

Octicons - GitHub's icon set

نسخه رسمی انگلیسی
Primer

Primer

مشاهده

معرفی و داستان شکل‌گیری

Primer دیزاین‌سیستم GitHub برای طراحی و توسعه رابط‌های کاربری منسجم، دسترس‌پذیر و واکنش‌گرا است. این سیستم مجموعه‌ای از اصول طراحی، Design Tokenها، کامپوننت‌ها، Patternها، ابزارهای توسعه و منابع طراحی را فراهم می‌کند و بخش بزرگی از تجربه کاربری GitHub براساس آن ساخته شده است.

GitHub بستری گسترده با میلیون‌ها کاربر و تعداد زیادی قابلیت مختلف است. بخش‌هایی مانند Repositoryها، Issueها، Pull Requestها، Projects، تنظیمات و ابزارهای امنیتی هرکدام جریان‌ها و رابط‌های پیچیده‌ای دارند. توسعه جداگانه این بخش‌ها می‌توانست به تجربه‌ای ناسازگار و دشوار منجر شود. Primer برای ایجاد یک زبان مشترک میان تیم‌های طراحی و توسعه GitHub شکل گرفت.

این سیستم تلاش می‌کند رابط GitHub در بخش‌های مختلف آشنا و قابل پیش‌بینی باقی بماند. وقتی الگوهای پیمایش، کنترل‌ها، فرم‌ها و وضعیت‌های تعاملی در تمام محصول رفتار مشابهی داشته باشند، کاربر می‌تواند تمرکز خود را روی کد، همکاری و انجام وظیفه قرار دهد.

Primer در اصل برای نیازهای داخلی GitHub توسعه یافته، اما بخش مهمی از آن متن‌باز و برای عموم قابل استفاده است. کتابخانه React، Primer ViewComponents برای Rails، Primer Primitives، مجموعه آیکن‌های Octicons و مستندات طراحی و دسترس‌پذیری اجزای اصلی این اکوسیستم هستند.

فلسفه و اصول طراحی

یکی از مهم‌ترین اهداف Primer ایجاد تجربه‌ای یکپارچه است. GitHub مخاطبان مختلفی دارد که با دستگاه‌ها، توانایی‌ها، سرعت اینترنت و سطح تجربه متفاوت از محصول استفاده می‌کنند. طراحی باید به‌اندازه کافی منسجم باشد تا افراد بدون یادگیری دوباره رابط، میان بخش‌های مختلف حرکت کنند.

اصل دیگر، طراحی فراگیر و دسترس‌پذیر است. Primer تأکید می‌کند که دسترس‌پذیری باید از آغاز پروژه در نظر گرفته شود، زیرا بر ظاهر، رفتار و پیاده‌سازی محصول تأثیر می‌گذارد. اضافه‌کردن دسترس‌پذیری در پایان فرایند معمولاً به اصلاحات دشوار و ناقص منجر می‌شود.

بهره‌وری نیز نقش مهمی در فلسفه Primer دارد. GitHub ابزاری برای انجام کارهای حرفه‌ای و همکاری است؛ بنابراین رابط باید سریع، متمرکز و نسبتاً فشرده باشد. اجزای رابط نباید با محتوای اصلی رقابت کنند یا جریان کار توسعه‌دهندگان را مختل کنند.

Primer همچنین Responsive Design را فقط به کوچک‌کردن نسخه دسکتاپ محدود نمی‌کند. تجربه باید براساس فضای موجود، اولویت محتوا و نوع تعامل تغییر کند. بعضی قابلیت‌ها ممکن است در نمایشگر کوچک ساده‌تر، جابه‌جا یا از طریق Progressive Disclosure نمایش داده شوند.

بخشی از نگاه طراحی Primer در مجموعه‌ای از عبارت‌ها با عنوان Zen of GitHub دیده می‌شود. مفاهیمی مانند ترجیح تمرکز بر تعداد قابلیت‌ها، طراحی برای شکست، استفاده از زبان انسانی، کاهش اصطکاک و اهمیت سرعت، جهت کلی تصمیم‌های طراحی GitHub را نشان می‌دهند.

زبان بصری

زبان بصری Primer کاربردی، فشرده و محتوامحور است. رابط نباید توجه را از کد، گفتگو، تغییرات فایل‌ها و اطلاعات اصلی محصول دور کند. به همین دلیل ساختار بصری آن معمولاً ساده است و از Border، رنگ‌های خنثی، Typography و فاصله‌گذاری دقیق برای ایجاد سلسله‌مراتب استفاده می‌کند.

رنگ در Primer از طریق مجموعه‌ای از Design Tokenها و CSS Variableها مدیریت می‌شود. به‌جای وابستگی مستقیم کامپوننت‌ها به کدهای رنگی، نقش‌هایی مانند Foreground، Background، Border، Accent، Danger، Success و Attention تعریف شده‌اند.

این نام‌گذاری معنایی باعث می‌شود یک نقش ثابت در Themeهای مختلف مقدار متفاوتی دریافت کند. برای مثال، رنگ متن اصلی یا پس‌زمینه در حالت روشن و تاریک تغییر می‌کند، اما نام Token و کاربرد آن ثابت باقی می‌ماند.

Primer علاوه بر حالت روشن و تاریک، برای نیازهای مختلف دیداری Themeهایی مانند High Contrast و حالت‌های مناسب‌تر برای برخی انواع کوررنگی دارد. این تنوع نشان می‌دهد Theming در Primer فقط یک قابلیت ظاهری نیست و برای سازگاری با نیازهای کاربران نیز استفاده می‌شود.

تایپوگرافی Primer برای خوانایی در محیطی با حجم زیادی از متن، Metadata و کد طراحی شده است. فونت‌های سیستمی برای متن رابط و Font Stackهای Monospace برای نمایش کد استفاده می‌شوند. مقیاس‌های مشخص برای اندازه، وزن و Line Height به ایجاد سلسله‌مراتب میان عنوان، متن، Label و اطلاعات فرعی کمک می‌کنند.

فاصله‌گذاری و اندازه‌ها نیز از طریق Primer Primitives تعریف می‌شوند. استفاده از Tokenها باعث می‌شود Padding، Gap، اندازه کنترل‌ها، Radius و دیگر مقادیر به‌صورت هماهنگ در کامپوننت‌ها و Layoutها استفاده شوند.

Octicons مجموعه آیکن‌های اختصاصی GitHub است. این آیکن‌ها برای رابط‌هایی ساخته شده‌اند که با مفاهیمی مانند Repository، Branch، Commit، Issue و Pull Request سروکار دارند. داشتن آیکن‌های مرتبط با دامنه محصول یکی از دلایلی است که Primer شخصیت مشخص و قابل تشخیصی دارد.

حرکت در Primer محدود و عملکردمحور است. انیمیشن‌ها باید تغییر وضعیت، بازشدن یک لایه یا نتیجه تعامل را روشن کنند و نباید تمرکز کاربر را از وظیفه اصلی بگیرند. ترجیحات کاربر برای کاهش حرکت نیز باید رعایت شوند.

کامپوننت‌ها و الگوهای طراحی

Primer مجموعه گسترده‌ای از کامپوننت‌های رابط کاربری ارائه می‌دهد. Button، Checkbox، Radio، Select، Text Input و Tooltip در کنار اجزای پیچیده‌تری مانند ActionMenu، ActionList، Autocomplete، DataTable، Dialog، TreeView، NavList و PageLayout قرار دارند.

برخی کامپوننت‌ها به‌طور مستقیم از ساختار GitHub و نیازهای کاربران آن الهام گرفته‌اند. BranchName، Label، Timeline، RelativeTime، AvatarStack و Token نمونه‌هایی هستند که کاربرد زیادی در محصولات مرتبط با همکاری و توسعه نرم‌افزار دارند.

کامپوننت‌های Primer فقط براساس ظاهر دسته‌بندی نمی‌شوند و نقش‌هایی مانند اقدام، پیمایش، ورود اطلاعات، انتخاب، ارتباط و نمایش محتوا را پوشش می‌دهند. مستندات هر کامپوننت درباره کاربرد، رفتار، محدودیت‌ها و ملاحظات دسترس‌پذیری اطلاعات ارائه می‌کند.

Primer علاوه بر کامپوننت‌ها، UI Patternهایی برای مسائل پرتکرار دارد. Formها، Navigation، Empty State، Loading، Notification، Saving و Progressive Disclosure از جمله این الگوها هستند.

Scenario Patternها نیز جریان‌هایی مانند ساختن، ویرایش‌کردن، حذف، جست‌وجو، فیلتر، مشاهده و شخصی‌سازی را پوشش می‌دهند. این بخش کمک می‌کند تیم‌ها فقط از ظاهر مشابه استفاده نکنند و برای سناریوهای مشابه، رفتار و منطق مشترکی نیز داشته باشند.

این ویژگی Primer را از یک Component Library ساده فراتر می‌برد؛ زیرا دیزاین‌سیستم علاوه بر عناصر رابط، نحوه ترکیب آن‌ها برای حل مسائل واقعی محصول را نیز مستند می‌کند.

تجربه استفاده و شخصی‌سازی

Primer کتابخانه‌های رسمی برای محیط‌های اصلی توسعه GitHub دارد. Primer React کامپوننت‌های قابل استفاده در پروژه‌های React را ارائه می‌دهد و Primer ViewComponents برای بخش‌هایی از GitHub که با Ruby on Rails ساخته شده‌اند استفاده می‌شود.

Primer Primitives پایه مشترک این پیاده‌سازی‌ها را تشکیل می‌دهد. Tokenهای رنگ، اندازه، فاصله‌گذاری و تایپوگرافی در قالب‌هایی مانند CSS Variables منتشر می‌شوند تا کتابخانه‌ها و محصولات مختلف از زبان بصری یکسانی استفاده کنند.

منابع طراحی Primer در Figma نیز در دسترس هستند و به طراحان کمک می‌کنند از کامپوننت‌ها و Tokenهای هماهنگ با کد استفاده کنند. وضعیت کامپوننت‌ها و میزان پشتیبانی آن‌ها در طراحی و توسعه نیز مستند شده است.

ساختار معنایی Tokenها امکان تغییر Theme و ایجاد حالت‌های مختلف را فراهم می‌کند. بااین‌حال، Primer در درجه اول برای GitHub ساخته شده و سیستم شخصی‌سازی آن بیشتر برای نیازهای همین محصول بهینه شده است.

تیم‌های خارج از GitHub می‌توانند از Primer استفاده کنند، اما اگر هویت بصری مستقلی داشته باشند، باید رنگ، Typography، Radius، آیکن‌ها و جزئیات کامپوننت‌ها را تغییر دهند. شخصی‌سازی گسترده ممکن است فاصله محصول از مسیر اصلی کتابخانه را افزایش دهد و دریافت به‌روزرسانی‌های آینده را دشوارتر کند.

Primer برای محصولاتی که از نظر ساختار و فناوری به GitHub نزدیک‌اند، تجربه ساده‌تری فراهم می‌کند. در مقابل، استفاده از آن در پروژه‌ای با تکنولوژی یا نیازهای بصری متفاوت ممکن است به توسعه اجزای تکمیلی نیاز داشته باشد.

دسترس‌پذیری و RTL

دسترس‌پذیری یکی از بخش‌های مرکزی Primer است. GitHub برای طراحی و توسعه، راهنماها و Checklistهای جداگانه ارائه می‌دهد و موضوعاتی مانند Semantic HTML، ARIA، مدیریت Focus، پیمایش با صفحه‌کلید، متن جایگزین، Motion، تغییر اندازه متن و استفاده صحیح از رنگ را پوشش می‌دهد.

Primer برای کامپوننت‌هایی مانند Button، Link، Tooltip، Heading و Icon راهنمای اختصاصی دسترس‌پذیری دارد. این مستندات به تیم‌ها کمک می‌کنند علاوه بر ظاهر، نام قابل دسترس، نقش، ترتیب Focus و رفتار صحیح اجزا را نیز بررسی کنند.

ابزار Annotation نیز برای ثبت ملاحظات دسترس‌پذیری در فایل‌های طراحی استفاده می‌شود. طراح می‌تواند ترتیب Focus، Headingها، توضیحات Screen Reader و دیگر اطلاعاتی را که در تصویر رابط دیده نمی‌شوند، برای تیم توسعه مشخص کند.

وجود کامپوننت‌های دسترس‌پذیر به‌تنهایی کافی نیست. نحوه ترکیب اجزا، متن کنترل‌ها، مدیریت Focus هنگام بازشدن Dialog و اعلام تغییرات پویا باید در محصول نهایی آزمایش شوند.

Primer برای رابط‌های راست‌به‌چپ مستندات عمومی و جامعی مشابه Ant Design یا Bootstrap ارائه نمی‌دهد. ساختار اصلی GitHub و بسیاری از Patternهای آن برای زبان‌های چپ‌به‌راست طراحی شده‌اند؛ بنابراین نباید پشتیبانی کامل RTL را بدون بررسی عملی فرض کرد.

برای استفاده در یک محصول فارسی باید Layout، Navigation، Breadcrumb، Timeline، DataTable، Pagination، Overlayها و آیکن‌های جهت‌دار جداگانه آزمایش شوند. نام Tokenها یا برخی Utilityهای جهت‌محور نیز ممکن است به لایه‌ای از تنظیمات و Styleهای اختصاصی نیاز داشته باشند.

Typography فارسی، ترکیب متن و کد، اعداد، URLها و قطعه‌های انگلیسی نیز اهمیت ویژه‌ای دارند. محصولی شبیه GitHub معمولاً محتوای دوجهته زیادی دارد و مدیریت درست Bidi از معکوس‌کردن ساده کل رابط مهم‌تر است.

نقاط قوت و محدودیت‌ها

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

ساختار دقیق Tokenها، Themeهای متنوع، Octicons، منابع Figma و ارتباط نزدیک با React و Rails از دیگر مزایای آن هستند. توجه جدی به دسترس‌پذیری و ارائه Checklist و راهنمای تخصصی نیز Primer را به مرجع ارزشمندی برای طراحی فراگیر تبدیل می‌کند.

Primer برای رابط‌های فشرده، ابزارهای توسعه‌دهندگان، محصولات همکاری تیمی و سیستم‌هایی که با لیست، وضعیت، Metadata و فعالیت‌های متعدد سروکار دارند، بسیار مناسب است.

در مقابل، Primer هویت بصری مشخص GitHub را دارد. استفاده مستقیم از آن ممکن است محصول را شبیه GitHub یا یکی از ابزارهای توسعه نرم‌افزار نشان دهد. ایجاد هویت مستقل به شخصی‌سازی هدفمند نیاز دارد.

این سیستم در درجه اول برای نیازها و فناوری‌های GitHub توسعه یافته است. تیم‌هایی که از React یا Rails استفاده نمی‌کنند، ممکن است نتوانند از تمام مزایای کتابخانه‌های رسمی بهره ببرند.

مستندات و پشتیبانی RTL نیز نسبت به برخی دیزاین‌سیستم‌های دیگر محدودتر است. بنابراین برای محصولات فارسی، عربی یا عبری باید هزینه بیشتری برای طراحی، پیاده‌سازی و تست بومی‌سازی در نظر گرفت.

جمع‌بندی و درس‌های طراحی

Primer انتخاب مناسبی برای ابزارهای توسعه‌دهندگان، پلتفرم‌های همکاری، داشبوردهای فنی و محصولاتی است که باید حجم زیادی از اطلاعات، وضعیت‌ها و اقدامات را در فضای محدود نمایش دهند.

یکی از مهم‌ترین درس‌های Primer، اولویت‌دادن به بهره‌وری و تمرکز کاربر است. یک دیزاین‌سیستم همیشه نباید عناصر بزرگ و فضای خالی زیادی داشته باشد؛ در محصولات حرفه‌ای، تراکم کنترل‌شده می‌تواند سرعت و کارایی را افزایش دهد.

درس دیگر، اهمیت طراحی Patternها در کنار کامپوننت‌هاست. داشتن Button و Input هماهنگ کافی نیست؛ تیم‌ها برای سناریوهایی مانند جست‌وجو، ذخیره، حذف، خطا و بارگذاری نیز به رفتار مشترک نیاز دارند.

Primer همچنین نشان می‌دهد Design Tokenها می‌توانند علاوه بر هماهنگی بصری، امکان ارائه Themeهای دسترس‌پذیر و متناسب با ترجیحات کاربران را فراهم کنند.

در نهایت، بهترین استفاده از Primer لزوماً کپی‌کردن ظاهر GitHub نیست. ارزش اصلی آن در ساختار Tokenها، طراحی برای بهره‌وری، مستندسازی Patternها و توجه عمیق به دسترس‌پذیری است؛ اصولی که می‌توانند برای ساخت دیزاین‌سیستم‌های حرفه‌ای دیگر نیز الهام‌بخش باشند.

Design Gallery