پرتوپرتو

توکن‌های طراحی

مرجع کامل CSS variables سیستم طراحی پرتو — رنگ‌ها، فضابندی، سایه، و توکن‌های دامنه

اصل

توکن‌های طراحی متغیرهای CSS هستند که تمام مقادیر بصری سیستم (رنگ، فاصله، سایه، اندازه) را در یک مکان مرکزی تعریف می‌کنند. هر کامپوننت از این توکن‌ها استفاده می‌کند — نه مقادیر hardcoded.

مزایا

  • یکپارچگی: تغییر یک توکن در تمام کامپوننت‌ها اعمال می‌شود
  • تم‌بندی: تم روشن و تاریک فقط مقادیر توکن‌ها را تغییر می‌دهند، نه کد کامپوننت‌ها
  • دامنه‌محور: توکن‌های اختصاصی برای نرخ تعامل، احساسات، و پلتفرم اجتماعی

نمونه بصری

روی هر توکن کلیک کنید تا نام متغیر CSS کپی شود. رنگ‌ها به صورت زنده از تم فعلی خوانده می‌شوند.

پس‌زمینه (Background)

متن (Foreground)

حاشیه (Border)

برند (Brand)

هشدار و خطا

نمودار (Chart)

بلاک کد (Code Block)


نحوه استفاده

در Tailwind (توصیه‌شده)

بیشتر توکن‌ها به کلاس‌های Tailwind نگاشت شده‌اند:

// پس‌زمینه
<div className="bg-surface-100">...</div>

// متن
<p className="text-foreground">...</p>
<p className="text-light">...</p>

// حاشیه
<div className="border border-default">...</div>

// برند
<button className="bg-brand text-contrast">...</button>

مستقیم با CSS Variables

وقتی به مقدار خام نیاز دارید (مثلاً canvas، SVG، یا کتابخانه‌های third-party):

// در className — با hsl() wrapper
<div className="bg-[hsl(var(--background-surface-100))]">...</div>

// با opacity
<div className="bg-[hsl(var(--brand-default)/0.1)]">...</div>

// در inline style
<div style={{ color: `hsl(var(--foreground-default))` }}>...</div>

در JavaScript (برای نمودارها)

import { useChartTheme } from '@parto-system-design/ui'

function MyChart() {
  const { chartColors, getColor } = useChartTheme()

  // رنگ‌های نمودار آماده
  const color1 = chartColors[0]

  // خواندن هر CSS variable
  const brandColor = getColor('--brand-default', 'hsl(153 55% 42%)')
}

قوانین اجباری

className="bg-surface-100 text-foreground border-default"
className="bg-gray-900 text-white border-gray-700"
className="bg-[hsl(var(--brand-default)/0.1)]"
style={{ backgroundColor: "#22c55e" }}

موارد استفاده رایج

کارت با سطوح مختلف

<div className="bg-surface-100 border border-default rounded-lg p-6">
  <h2 className="text-foreground font-semibold">عنوان</h2>
  <p className="text-light mt-1">توضیحات</p>

  <div className="bg-surface-200 border border-muted rounded-md p-4 mt-4">
    <span className="text-lighter">محتوای تو در تو</span>
  </div>
</div>

نمایشگر احساسات

<div className="flex gap-2">
  <Badge style={{ backgroundColor: 'hsl(var(--sentiment-positive))' }}>مثبت</Badge>
  <Badge style={{ backgroundColor: 'hsl(var(--sentiment-negative))' }}>منفی</Badge>
  <Badge style={{ backgroundColor: 'hsl(var(--sentiment-neutral))' }}>خنثی</Badge>
</div>

چه نکنیم

  • رنگ‌های مستقیم Tailwind (bg-gray-900, text-white) — از توکن‌ها استفاده کنید
  • مقادیر hex/rgb hardcoded (#22c55e, rgb(34, 197, 94)) — توکن‌ها در تم تاریک شکسته می‌شوند
  • ساخت توکن جدید بدون هماهنگی — توکن‌های موجود ۹۹٪ نیازها را پوشش می‌دهند

صفحات مرتبط