چیپ نوع عملیات (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استفاده کنید - نمایش پلتفرم (اینستاگرام/توییتر) — از
SocialPlatformBadgeاستفاده کنید - وقتی دامنه شما عملیات غیر-اجتماعی (ایمپورت، بکاپ، …) است — از chip عمومی یا
Badgeاستفاده کنید
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
استفاده
'use client'
import { ActionTypeChip } from '@parto-system-design/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(پیشفرض) — پسزمینه tint + متن رنگی. کاربرد: فید، جدول، لیست — خوانا ولی نه پر سر و صدا.solid— پسزمینه کامل + متن سفید. کاربرد: تأکید روی یک عملیات خاص، call-to-action، chip یکعددی.outline— فقط border + متن. کاربرد: ردیف فشرده، جایی که نمیخواهید بار بصری اضافه شود.flat— فقط آیکون + متن رنگی، بدون chrome. کاربرد: inline در متن (مثلاً «۱۲ پسند دریافت شد» با آیکون قلب کوچک).
چهار اندازه
xs(ارتفاع ۲۰px) — برای جدولهای فشرده یا metadata در کارتهای کوچکsm(ارتفاع ۲۴px) — پیشفرض، مناسب اکثر مواردmd(ارتفاع ۲۸px) — برای header یا هدفگذاری بصریlg(ارتفاع ۳۲px) — CTA یا نمایش برجسته
با شمارنده
با count={n} یک شمارنده کنار label اضافه میشود — مفید برای نمایش آمار جمعآوریشده («۴۲۵ پسند»). عدد خودکار با locale فرمت میشود (۴۲۵ → ۴٫۰۰۰).
همه هفت نوع canonical
- like (پسندیدن — پینک) • comment (نظر — آبی) • save (ذخیره — کهربایی) • follow (دنبال کردن — سبز) • unfollow (لغو دنبال — خاکستری) • dm (پیام مستقیم — بنفش) • share (اشتراک — سبز آبی)
حالت iconOnly (بدون برچسب)
با showLabel={false}، فقط آیکون رندر میشود و aria-label با برچسب محلی (locale-aware) تنظیم میشود. مناسب برای نمایهای بسیار فشرده مثل ستون جدول، ActionTimeline marker، header فید.
راهنمای استفاده
بکنید
- برای فید عملیات،
softپیشفرض را بهکار ببرید — خوانایی بالا با بار بصری کم - در جدول با ستون «نوع»،variant="flat" size="xs"انتخاب خوبی است - ازcountبرای chip های تجمیعی در داشبورد استفاده کنید («۴۲۵ پسند در هفته اخیر») - برای احترام به دامنه، نوعها را بهActionTypeKeycanonical map کنید (bulk_comment→comment،like_post/like_comment→like) - در کنارActionTypeChip، اگر لازم بود وضعیت (success/failed) را نشان دهید، ازStatusBadgeیا marker داخلActionTimelineاستفاده کنید — مسئولیتها را جدا نگه دارید
نکنید
- نوع سفارشی به
ActionTypeKeyاضافه نکنید — اگر نیازی به نوع جدید هست، مستند کنید و برای انتشار در نسخه بعدی اضافه شود - از این chip برای نمایش وضعیت (موفق/ناموفق) استفاده نکنید — دامنه خود را محدود نگه دارید - نوع عملیات یک پلتفرم خاص (مثل TikTok-only "duet") را به این chip اضافه نکنید — اگر لازم است،SocialPlatformBadge+ label سفارشی انتخاب بهتر است -variant="solid"را برای همه chipها استفاده نکنید — بار بصری زیاد میشود؛softپیشفرض بهتر است
Props
token ها
هر نوع از یک CSS variable استفاده میکند که در هر دو theme light و dark تنظیم شده:
| Key | Token | Light | Dark | Lucide Icon |
|---|---|---|---|---|
like | --action-type-like | 347 77% 50% | 347 82% 62% | Heart |
comment | --action-type-comment | 217 91% 60% | 217 91% 68% | MessageCircle |
save | --action-type-save | 38 92% 50% | 38 92% 58% | Bookmark |
follow | --action-type-follow | 142 71% 45% | 142 71% 52% | UserPlus |
unfollow | --action-type-unfollow | 215 10% 55% | 215 15% 65% | UserMinus |
dm | --action-type-dm | 262 83% 58% | 262 83% 70% | Send |
share | --action-type-share | 172 76% 40% | 172 76% 50% | Share2 |
برای استفاده مستقیم در 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 (نه رشته) است، حالتiconOnlyaria-label ست نمیکند — مسئولیت aria با شماست. - همه هفت رنگ در light و dark بررسی کنتراست شدهاند (سه variant
soft,outline,flatباforegroundوsolidباwhite). - آیکونها
aria-hidden="true"هستند — اطلاعات معنایی از label یا aria-label میآید، نه از آیکون.
کامپوننتهای مرتبط
- ActionTimeline — برای نمایش فید زمانی عملیات؛ از
ActionTypeChipداخلtagslot هر item استفاده کنید - SocialPlatformBadge — badge مشابه اما برای پلتفرم (اینستاگرام / توییتر / …)؛ این chip برای عملیات است
- StatusBadge — برای وضعیت عملیاتی (critical/warning/middle/low) — متعامد با نوع
- Badge — badge عمومی بدون قید دامنه
- EntityHealthCard — وقتی میخواهید نوع عملیات را در سیاق سلامت یک worker نمایش دهید