پرتوپرتو

سربرگ پست (PostHeader)

ردیف بالای پست — avatar، نام، handle، badge پلتفرم، timestamp، actions overflow

معرفی

PostHeader ردیف بالایی هر پست — avatar نویسنده + نام + handle + badge پلتفرم + timestamp + اکشن overflow. building block داخلی PostCard که برای کارت‌های سفارشی هم export شده.

@sara.ahmadi
·تحلیل۱۲۴ کامنت

زمین بازی

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

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

  • ساخت کارت پست سفارشی که PostCard پوشش نمی‌دهد
  • header در PostDetailsDrawer با محتوای زیر آن متفاوت
  • توالی شبیه‌چت/comment thread که فقط header استاندارد می‌خواهد

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

  • در PostCard خود PostHeader به‌صورت داخلی wired است؛ نیازی به override نیست

استفاده

import { PostCard, PostHeader } from '@partodata/ui'

// به‌صورت معمول از PostCard استفاده می‌شود — PostHeader به‌صورت داخلی wired است:
<PostCard post={post} />

// استفاده مستقیم برای کارت سفارشی:
<PostHeader
  author={post.author}
  platform={post.source}
  timestamp={post.timestamp}
  sentiment={post.sentiment}
  enrichments={post.enrichments}
  density="comfortable"
/>

density با والد PostCard همگام است (compact | comfortable).

واریانت‌های رسانه‌ای (Broadcast / Editorial)

PostHeader برای منابع سوشال طراحی شده که بازیگر آن یک حساب کاربری (PostAuthor) است. برای منابع رسانه‌ای، دو واریانت هم‌خانواده در کنار آن export شده‌اند که به‌جای نویسنده، یک رسانه (PostOutlet) را نمایش می‌دهند و همان پوسته‌ی بیرونی را دارند تا در فید ترکیبی یکدست دیده شوند:

  • PostHeaderBroadcast — منابع پخشی tv و radio: عنوان از ترکیب «کانال · برنامه» ساخته می‌شود و برچسب فارسی منبع (تلویزیون / رادیو) کنار آن می‌آید. مناسب پایش پوشش تلویزیونی و رادیویی یک برند یا کمپین.
  • PostHeaderEditorial — منابع تحریریه‌ای press و web: نام رسانه به‌همراه دامنه (LTR)، نشان اعتبار دامنه (DA) و در صورت وجود، خط «به قلم …» برای خبرنگار. مناسب پایش مطبوعات و پایگاه‌های خبری/وبی درباره‌ی محصول یا کمپین.

در PostCard انتخاب header خودکار است: بر اساس دسته‌ی post.source (تابع sourceCategory) یکی از سه واریانت social / broadcast / editorial رندر می‌شود. استفاده‌ی مستقیم فقط برای کارت‌های سفارشی لازم است.

PostHeaderBroadcast (تلویزیون / رادیو)

شبکه اقتصاد کسب‌وکار · گفت‌وگوی ویژه رونمایی محصول جدیدتلویزیون
·تحلیلرونوشت
رادیو شهر · میزگرد کمپین تخفیف فصلیرادیو
·رونوشت
import { PostHeaderBroadcast } from '@partodata/ui'

<PostHeaderBroadcast
  source="tv"
  outlet={{
    name: 'شبکه اقتصاد کسب‌وکار',
    channel: 'شبکه اقتصاد کسب‌وکار',
    program: 'گفت‌وگوی ویژه رونمایی محصول جدید',
  }}
  timestamp={Date.now() - 60_000 * 45}
  enrichments={{ transcript: true }}
/>

Prop

Type

علاوه بر موارد بالا، همه‌ی attributeهای استاندارد div نیز پذیرفته و روی root پخش می‌شوند.

PostHeaderEditorial (مطبوعات / وب)

روزنامه اقتصاد فرداeqtesadefarda.exampleDA ۷۴
·به قلم نگار محمدی·تحلیل۱۲ کامنت
مجله آنلاین برندینگbrandmag.example
·به قلم سارا احمدی·OCR
import { PostHeaderEditorial } from '@partodata/ui'

<PostHeaderEditorial
  source="press"
  outlet={{
    name: 'روزنامه اقتصاد فردا',
    domain: 'eqtesadefarda.example',
    domainAuthority: 74,
  }}
  byline={{ name: 'نگار محمدی' }}
  timestamp={Date.now() - 60_000 * 60 * 5}
  enrichments={{ aiAnalysis: true, commentCount: 12 }}
/>

Prop

Type

علاوه بر موارد بالا، همه‌ی attributeهای استاندارد div نیز پذیرفته و روی root پخش می‌شوند.

نکات دسترسی‌پذیری این دو واریانت مانند PostHeader است: زمان نسبی یک دکمه‌ی قابل‌فوکوس با Tooltip زمان مطلق است، Avatar رسانه aria-hidden است (نام رسانه به‌صورت متن مجاور خوانده می‌شود)، و آیکون منبع decorative است — برچسب متنی کنار آن مسئول a11y است.

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

بکنید

  • برای کارت‌های سفارشی، props را مستقیماً از PostData نگاشت کنید (author، platform={post.source}، timestamp) - برای avatar سفارشی از avatarClassName استفاده کنید — Avatar داخلی fallback initials را خودکار محاسبه می‌کند - در detail-view از density="comfortable" و در feed از density="compact" استفاده کنید

نکنید

  • PostHeader را داخل PostCard دوباره فراخوانی نکنید — PostCard خود header را شامل می‌شود - timestamp را به‌صورت string فرمت‌شده پاس ندهید — Date | string ISO | unix ms بدهید تا formatRelativeTime آن را محاسبه کند

جدول ویژگی‌ها

Prop

Type

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

  • زمان نسبی (e.g. «۲ ساعت پیش») داخل یک <Tooltip> که زمان مطلق دقیق را نشان می‌دهد wrap می‌شود — کاربران keyboard با Tab + Focus زمان دقیق را می‌بینند.
  • آیکون‌های platform badge و enrichment chipها decorative هستند؛ متن همراه (مثل «اینستاگرام»، «OCR») مسئول a11y است.
  • Avatar fallback از حروف اول نام سازنده تولید می‌شود؛ اگر تصویر load نشود، aria-label به‌صورت پیش‌فرض نام کامل را اعلام می‌کند.
  • این کامپوننت خود interactive نیست — focus + keyboard handling به عهده‌ی والد است.

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

  • کارت کامل پستPostCard
  • اکشن‌های جداگانهPostActions
  • ردیف اطلاعاتPostMetadata
  • محتواPostBody