اکشنهای پست (PostActions)
ردیف اکشنهای inline + overflow menu برای یک پست — building block داخلی PostCard
معرفی
PostActions ردیف اکشنهای یک پست است — حداکثر primaryCount اکشن inline (پیشفرض 3)، باقی در overflow menu. building block داخلی PostCard و PostList که برای موارد سفارشی هم export شده.
زمین بازی
زمین بازی
تنظیمات
داده
ظاهر
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
چه زمانی مستقیم استفاده کنیم:
- ساخت کارت پست سفارشی که نمیتوان با
PostCardپوشش داد - toolbar روی detail-view یک پست (در
PostDetailsDrawerیا صفحهی dedicate) - ردیف اکشن مشترک برای multi-select state
چه زمانی استفاده نکنیم:
- معمولاً نه —
PostCardوPostListاین را داخل خود مدیریت میکنند
استفاده
import { PostActions } from '@parto-system-design/ui'
import { Heart, Bookmark, MoreHorizontal, Share2, Trash } from 'lucide-react'
<PostActions
post={post}
primaryCount={3}
actions={[
{ id: 'like', label: 'پسند', icon: Heart, onClick: () => ... },
{ id: 'save', label: 'ذخیره', icon: Bookmark, onClick: () => ... },
{ id: 'share', label: 'اشتراک', icon: Share2, onClick: () => ... },
{ id: 'delete', label: 'حذف', icon: Trash, variant: 'danger', onClick: () => ... },
]}
/>اکشنهای با hidden: true rendered نمیشوند — برای toggling مفید است. اکشن variant: 'danger' رنگ destructive میگیرد.
راهنمای استفاده
بکنید
primaryCountرا روی ۲-۳ نگه دارید — اکشن inline زیاد، توجه کاربر را خرج میکند - برای اکشنهای destructive ازvariant: 'danger'استفاده کنید تا Button رنگ destructive بگیرد - هر اکشن بایدidیکتا داشته باشد — برای React key
- tracking در tests استفاده میشود
نکنید
- بیش از ۶-۸ اکشن کل (inline + overflow) نگذارید — overflow menu طولانی غیرقابل scan است -
onClickرا برای navigation ساده استفاده نکنید — اگر فقط لینک به source post است، ازsourceUrlدرPostDataاستفاده کنید
جدول ویژگیها
دسترسیپذیری
- هر اکشن inline داخل یک
<Tooltip>باlabelبهعنوان content wrap میشود تا screen reader و سایر کاربران a11y نام اکشن را بشنوند (Button خودaria-label={label}دارد). - اکشنهای با
disabled: trueویژگیdisabledHTML را میگیرند — keyboard navigation آنها را skip میکند و screen reader حالت غیرفعال را اعلام میکند. - overflow menu از
DropdownMenu(Radix) ساخته شده — open/close باEnter/Space، navigation با Arrow keys،Escapeبرای close. - wrapper یک
role="presentation"میگیرد و click bubble را stop میکند تا کلیکهای اشتباه روی والد clickable card را به فعالسازی پست منجر نشوند — interactive role فقط روی Buttonهای داخلی است. - هنگام
variant: 'danger'رنگ destructive از CSS variable میآید و contrast ratio روی هر دو theme روشن/تاریک WCAG AA را پاس میکند.
کامپوننتهای مرتبط
- خود کارت پست →
PostCard - detail view با toolbar →
PostDetailsDrawer