Files
clinicpro/.claude/skills/figma-to-feature/mapping.md
T

6.2 KiB

Figma → Project token mapping

نگاشت توکن‌های خروجی get_variable_defs فیگما به متغیرهای واقعی این پروژه. منبع حقیقت: assets/admin/styles.css (بلاک :root). هرگز hex هاردکد نکن — همیشه var(--token).


Colors — brand

نقش فیگما (نمونه نام‌ها) متغیر پروژه مقدار
Primary / Brand / Indigo 500 --primary #5559CE
Primary hover / 600 --primary-600 #494CB3
Primary pressed / 700 --primary-700 #3E41A0
Primary tint / subtle bg --primary-soft #ecedfb
Primary tint 2 --primary-soft2 #d9dbf6
On-primary / text on brand --on-primary #ffffff
Accent / Orange (CTA ثانویه، آواتار) --accent #f0682a
Accent hover --accent-600 #db5a1f
Accent tint --accent-bg #fdeee4

Colors — surface / text / border

نقش فیگما متغیر پروژه مقدار
Page background --bg #fafafa
Alt background --bg-2 #f2f2f5
Card / surface --surface #ffffff
Surface raised 2 --surface-2 #f6f8fc
Surface raised 3 --surface-3 #eef2f8
Border default --border #e4e9f1
Border strong --border-2 #d6dde8
Text primary --text #0f1b2e
Text secondary --text-2 #56657c
Text muted / placeholder --text-3 #8a98ad
Focus ring --ring rgba(85,89,206,.32)

Colors — status

نقش fg bg
Success --success #15a35a --success-bg #e6f6ed
Warning --warning #d98a09 --warning-bg #fcf2df
Danger / Error --danger #e0394a --danger-bg #fdebed
Info --info #2b86d8 --info-bg #e7f1fb
Violet --violet #7c5cf0 --violet-bg #efeafe

Colors — dashboard stat cards

رنگ bg fg
Amber --stat-amber-bg --stat-amber-fg #FFC051
Violet --stat-violet-bg --stat-violet-fg #5559CE
Green --stat-green-bg --stat-green-fg #009D79
Pink --stat-pink-bg --stat-pink-fg #F17732

Typography

فیگما پروژه
Font family (fa + latin) --font-sans = "Vazirmatn", ui-sans-serif, system-ui, sans-serif
منبع فونت @fontsource/vazirmatn/{300,400,500,600,700,800}.css (در styles.css)

اوزان موجود: 300 / 400 / 500 / 600 / 700 / 800. اندازه/line-height فیگما → کلاس‌های Tailwind (text-sm, text-lg, …).

Radius

فیگما پروژه مقدار
xs (chip داخلی) --r-xs 7px
sm (badge, input کوچک) --r-sm 8px
md (input, button, card عادی) --r 14px
lg (card بزرگ) --r-lg 18px
xl (modal) --r-xl 24px
full (avatar, pill, toggle) --r-pill 999px

Shadow / elevation

فیگما پروژه
Elevation 1 (card) --shadow-sm
Elevation 2 (dropdown/hover) --shadow
Elevation 3 (modal/popover) --shadow-lg

Spacing & layout dimensions

نقش پروژه مقدار
Grid gap --gap 20px (compact: 14px)
Card padding --card-pad 22px (compact: 16px)
Table row height --row-h 56px (compact: 46px)
Sidebar width --sidebar-w 243px
Sidebar collapsed --collapsed-w 90px
Topbar height --topbar-h 64px
Motion easing --ease cubic-bezier(.22,.61,.36,1)

اسپیسینگ آزاد (margin/padding داخل اجزا) → مقیاس Tailwind (p-4, gap-2, …)؛ برای ابعاد ساختاری بالا از متغیرها استفاده کن.

Theming

  • Dark mode: بازتعریف متغیرها زیر [data-theme="dark"] در styles.css. رنگ خام دارک ننویس؛ همان var(--token) خودکار سوییچ می‌شود.
  • Density: [data-density="compact"] مقادیر --gap / --card-pad / --row-h را کم می‌کند.
  • RTL: کل پنل dir="rtl"؛ در نگاشت left/right فیگما را به start/end منطقی تبدیل کن.

Component mapping (فیگما → کامپوننت موجود پروژه)

قبل از ساخت، از assets/admin/components/ui/ reuse کن:

المان فیگما کامپوننت پروژه (assets/admin/components/ui/)
Table / list با ستون DataTable.tsx (sort، search، skeleton، empty، bulk)
Modal / dialog Modal.tsx
Delete/confirm dialog ConfirmDialog.tsx
Page title + breadcrumb + action PageHeader.tsx
Stat / KPI card StatCard.tsx
Status pill / badge StatusBadge.tsx
Pagination bar Pagination.tsx
Searchable / async select SearchableSelect.tsx
Appointment status control AppointmentStatusDropdown.tsx
Mobile number input MobileInput.tsx
Price / amount input PriceInput.tsx
Jalali date input/picker/calendar PersianDateInput.tsx / PersianDatePicker.tsx / PersianCalendar.tsx
Overlay/portal مبنا Portal.tsx
Feature-flag gate FeatureGate.tsx
Captcha Altcha.tsx

کامپوننت‌های ترکیبی فیچرمحور (نه generic) → assets/admin/components/*.tsx. آیکون‌ها → @heroicons/react/24/outline (اول موجودها؛ فقط اگر نبود از download_assets فیگما).


قواعد نگاشت

  1. هر توکن فیگما را به نزدیک‌ترین متغیر بالا map کن. اگر معادل نبود → توقف و بپرس، توکن جدید خودسر به styles.css اضافه نکن.
  2. رنگ/فاصله/شعاع خام (hex/px) در کامپوننت ممنوع؛ فقط var(--token) یا کلاس Tailwind.
  3. اختلاف جزئی رنگ فیگما با پالت پروژه → پالت پروژه برنده است (تطبیق با design system، نه عین فیگما).
  4. منبع مقادیر همیشه assets/admin/styles.css است؛ این فایل خلاصه‌ی نگاشت است، نه منبع مستقل — هنگام تغییر styles.css این را هم به‌روز کن.