چیپ نوع عملیات (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استفاده کنید
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
استفاده
'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(پیشفرض) — پسزمینه 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 یا نمایش برجسته
با شمارنده
با count={n} یک شمارنده کنار label اضافه میشود — مفید برای نمایش آمار جمعآوریشده («425 پسند»). ارقام عدد بهصورت خودکار محلیسازی میشوند (425 → 425)؛ جداکننده هزارگان اضافه نمیشود.
همه هفت نوع 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 های تجمیعی در داشبورد استفاده کنید («425 پسند در هفته اخیر») - برای احترام به دامنه، نوعها را بهActionTypeKeycanonical 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
token ها
هر نوع از یک CSS variable استفاده میکند که در هر دو theme light و dark تنظیم شده:
| Key | Token | Light | Dark | Lucide Icon |
|---|---|---|---|---|
like | --action-type-like | hsl(347deg 77% 50%) | hsl(347deg 82% 62%) | Heart |
comment | --action-type-comment | hsl(217deg 91% 60%) | hsl(217deg 91% 68%) | MessageCircle |
save | --action-type-save | hsl(38deg 92% 38%) | hsl(38deg 92% 58%) | Bookmark |
follow | --action-type-follow | hsl(142deg 71% 38%) | hsl(142deg 71% 52%) | UserPlus |
unfollow | --action-type-unfollow | hsl(215deg 10% 55%) | hsl(215deg 15% 65%) | UserMinus |
dm | --action-type-dm | hsl(262deg 83% 58%) | hsl(262deg 83% 70%) | Send |
share | --action-type-share | hsl(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 (نه رشته) است، حالتiconOnlyaria-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داخلtagslot هر item استفاده کنید - PlatformMark — نشان مشابه اما برای پلتفرم (اینستاگرام / توییتر / …)؛ این chip برای عملیات است
- SeverityBadge — برای شدت یا اولویت (urgent/high/medium/low) — متعامد با نوع
- Badge — badge عمومی بدون قید دامنه