چیپ نوع عملیات (ActionTypeChip)

Chip کوچک با آیکون + رنگ برای نمایش نوع یک عملیات شبکه‌اجتماعی — پسند، نظر، ذخیره، دنبال، لغو دنبال، پیام مستقیم، اشتراک.

معرفی

ActionTypeChip یک chip فشرده و color-coded برای نمایش نوع یک عملیات اجتماعی است — مستقل از اینکه موفق یا ناموفق بوده (که با ActionStatusKey در ActionTimeline مدل می‌شود).

هفت نوع canonical: like / comment / save / follow / unfollow / dm / share — هرکدام با:

  • آیکون اختصاصی Lucide (Heart / MessageCircle / Bookmark / UserPlus / UserMinus / Send / Share2)
  • token رنگ اختصاصی (--action-type-*) که هم در light و هم dark mode تنظیم شده

چه زمانی استفاده کنیم:

  • لیست عملیات Booster (فید worker، صف اجرا، گزارش روزانه)
  • ستون نوع عملیات در DataTable لاگ عملیات
  • badge کوتاه روی ActionTimelineItem
  • نمایش آمار «x تعامل» در داشبورد (<ActionTypeChip type="like" count={425} />)

چه زمانی استفاده نکنیم:

  • نمایش وضعیت عملیات (موفق/ناموفق) — از ActionTimeline + ActionStatusKey استفاده کنید
  • نمایش شدت (فوری/بالا/…) — از SeverityBadge استفاده کنید
  • نمایش پلتفرم (اینستاگرام/توییتر) — از PlatformMark استفاده کنید
  • وقتی دامنه شما عملیات غیر-اجتماعی (ایمپورت، بکاپ، …) است — از chip عمومی یا Badge استفاده کنید
پسندیدننظرذخیره42دنبال کردنلغو دنبالاشتراک‌گذاری

زمین بازی

با تغییر تنظیمات زیر، پیش‌نمایش زنده را مشاهده کنید.

زمین بازی
نظر
تنظیمات
ظاهر
کد این نمونه به‌صورت خودکار قابل تولید نیست — برای کد آماده‌ی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.

استفاده

'use client'
import { ActionTypeChip } from '@partodata/ui'

export function MyActivity() {
  return (
    <div className="flex gap-2">
      <ActionTypeChip type="like" />
      <ActionTypeChip type="comment" />
      <ActionTypeChip type="save" count={42} />
      <ActionTypeChip type="follow" variant="solid" />
      <ActionTypeChip type="dm" showLabel={false} />
    </div>
  )
}

چهار حالت بصری

softپسندیدننظرذخیرهدنبال کردنپیام مستقیم
solidپسندیدننظرذخیرهدنبال کردنپیام مستقیم
outlineپسندیدننظرذخیرهدنبال کردنپیام مستقیم
flatپسندیدننظرذخیرهدنبال کردنپیام مستقیم
  • soft (پیش‌فرض) — پس‌زمینه tint + متن رنگی. کاربرد: فید، جدول، لیست — خوانا ولی نه پر سر و صدا.
  • solid — پس‌زمینه کامل + متن با توکن اختصاصی هر رنگ (--action-type-*-on). کاربرد: تأکید روی یک عملیات خاص، call-to-action، chip یک‌عددی.
  • outline — فقط border + متن. کاربرد: ردیف فشرده، جایی که نمی‌خواهید بار بصری اضافه شود.
  • flat — فقط آیکون + متن رنگی، بدون chrome. کاربرد: inline در متن (مثلاً «12 پسند دریافت شد» با آیکون قلب کوچک).

چهار اندازه

پسندیدنپسندیدنپسندیدنپسندیدن
  • xs (ارتفاع 20px) — برای جدول‌های فشرده یا metadata در کارت‌های کوچک
  • sm (ارتفاع 24px) — پیش‌فرض، مناسب اکثر موارد
  • md (ارتفاع 28px) — برای header یا هدف‌گذاری بصری
  • lg (ارتفاع 32px) — CTA یا نمایش برجسته

با شمارنده

پسندیدن425نظر68ذخیره12دنبال کردن3پیام مستقیم0اشتراک‌گذاری1200

با count={n} یک شمارنده کنار label اضافه می‌شود — مفید برای نمایش آمار جمع‌آوری‌شده («425 پسند»). ارقام عدد به‌صورت خودکار محلی‌سازی می‌شوند (425 → 425)؛ جداکننده هزارگان اضافه نمی‌شود.

همه هفت نوع canonical

پسندیدنlike
نظرcomment
ذخیرهsave
دنبال کردنfollow
لغو دنبالunfollow
پیام مستقیمdm
اشتراک‌گذاریshare
  • like (پسندیدن — پینک) • comment (نظر — آبی) • save (ذخیره — کهربایی) • follow (دنبال کردن — سبز) • unfollow (لغو دنبال — خاکستری) • dm (پیام مستقیم — بنفش) • share (اشتراک — سبز آبی)

حالت iconOnly (بدون برچسب)

با showLabel={false}، فقط آیکون رندر می‌شود و aria-label با برچسب محلی (locale-aware) تنظیم می‌شود. مناسب برای نمای‌های بسیار فشرده مثل ستون جدول، ActionTimeline marker، header فید.

راهنمای استفاده

بکنید

  • برای فید عملیات، soft پیش‌فرض را به‌کار ببرید — خوانایی بالا با بار بصری کم - در جدول با ستون «نوع»، variant="flat" size="xs" انتخاب خوبی است - از count برای chip های تجمیعی در داشبورد استفاده کنید («425 پسند در هفته اخیر») - برای احترام به دامنه، نوع‌ها را به ActionTypeKey canonical map کنید (bulk_comment → comment، like_post/like_comment → like) - در کنار ActionTypeChip، اگر لازم بود وضعیت (success/failed) را نشان دهید، از SeverityBadge یا marker داخل ActionTimeline استفاده کنید — مسئولیت‌ها را جدا نگه دارید

نکنید

  • نوع سفارشی به ActionTypeKey اضافه نکنید — اگر نیازی به نوع جدید هست،‌ مستند کنید و برای انتشار در نسخه بعدی اضافه شود - از این chip برای نمایش وضعیت (موفق/ناموفق) استفاده نکنید — دامنه خود را محدود نگه دارید - نوع عملیات یک پلتفرم خاص (مثل TikTok-only "duet") را به این chip اضافه نکنید — اگر لازم است، PlatformMark + label سفارشی انتخاب بهتر است - variant="solid" را برای همه chipها استفاده نکنید — بار بصری زیاد می‌شود؛ soft پیش‌فرض بهتر است

Props

Prop

Type

token ها

هر نوع از یک CSS variable استفاده می‌کند که در هر دو theme light و dark تنظیم شده:

KeyTokenLightDarkLucide Icon
like--action-type-likehsl(347deg 77% 50%)hsl(347deg 82% 62%)Heart
comment--action-type-commenthsl(217deg 91% 60%)hsl(217deg 91% 68%)MessageCircle
save--action-type-savehsl(38deg 92% 38%)hsl(38deg 92% 58%)Bookmark
follow--action-type-followhsl(142deg 71% 38%)hsl(142deg 71% 52%)UserPlus
unfollow--action-type-unfollowhsl(215deg 10% 55%)hsl(215deg 15% 65%)UserMinus
dm--action-type-dmhsl(262deg 83% 58%)hsl(262deg 83% 70%)Send
share--action-type-sharehsl(172deg 80% 26%)hsl(172deg 76% 50%)Share2

هر رنگ یک توکن -on (رنگ متن روی پس‌زمینه‌ی کامل در solid) و یک توکن -text (رنگ متن AA-verified در soft/outline/flat) هم دارد؛ مقدارشان بین light و dark و بین رنگ‌ها متفاوت است (مثلاً --action-type-like-on در light سفید و در dark تقریباً مشکی است) — مقدار دقیق را از globals.css بخوانید، نه از این جدول.

برای استفاده مستقیم در Tailwind: text-action-type-like، bg-action-type-follow، … (از Tailwind config).

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

  • هم chip سطح root یک <span> با data-slot="action-type-chip" است — در داخل هر container نیاز به wrapper aria نیست.
  • در حالت showLabel={false}، aria-label با برچسب محلی (مثلاً «پسندیدن») ست می‌شود تا screen reader آن را announce کند.
  • اگر label شما یک React node (نه رشته) است، حالت iconOnly aria-label ست نمی‌کند — مسئولیت aria با شماست.
  • همه هفت رنگ در light و dark بررسی کنتراست‌ شده‌اند: در variantهای soft, outline, flat متن از تیر اختصاصی AA یعنی توکن --action-type-*-text می‌آید و در solid متن از توکن اختصاصی هر رنگ یعنی --action-type-*-on می‌آید (نه توکن عمومی --foreground-contrast — آن توکن در نسخه 2.6.7 به‌خاطر افت کنتراست روی برخی رنگ‌های میان‌روشنی در تم light حذف شد).
  • آیکون‌ها aria-hidden="true" هستند — اطلاعات معنایی از label یا aria-label می‌آید، نه از آیکون.

کامپوننت‌های مرتبط

  • ActionTimeline — برای نمایش فید زمانی عملیات؛ از ActionTypeChip داخل tag slot هر item استفاده کنید
  • PlatformMark — نشان مشابه اما برای پلتفرم (اینستاگرام / توییتر / …)؛ این chip برای عملیات است
  • SeverityBadge — برای شدت یا اولویت (urgent/high/medium/low) — متعامد با نوع
  • Badge — badge عمومی بدون قید دامنه