PostSignals (سیگنالهای پست)
ردیف چیپهای دامیناسپسیفیک — sentiment، emotion (۹-کلاسه)، گرایش مخاطب (۵-کلاسه)، severity، cluster، language. درون فوتر PostCard.
معرفی
<PostSignals> همهی سیگنالهای دامین افکارسنجی را در یک ردیف چیپهای فشرده نمایش میدهد. در فوتر <PostCard> (و در tabهای <PostDetailsDrawer>) استفاده میشود.
چه زمانی استفاده کنیم:
- زیر متن/مدیا/متریکهای هر پست، برای نمایش طبقهبندیهای NLP و خوشهبندی
- در فوتر
<PostCard>یا tabهای<PostDetailsDrawer>، جایی که چند سیگنال باید همزمان کنار هم دیده شوند - وقتی تحلیلگر باید با یک نگاه sentiment، شدت و خوشهی پست را اسکن کند (مثلاً در triage روزانه)
چه زمانی استفاده نکنیم:
- اگر فقط یک سیگنال نمایش میدهید — بهجای آن از
<EmotionBadge>/<FlowBadge>/<SentimentBadge>تکی استفاده کنید - برای نمایش توزیع سیگنالها روی مجموعهای از پستها — از
<EmotionDistribution>/<FlowDistribution>استفاده کنید - بهعنوان نوار فیلتر مستقل — این کامپوننت خروجی طبقهبندی همان پست را نمایش میدهد و تنها چیپ خوشه (با
onClusterClick) تعاملی است
زمین بازی
زمین بازی
مثبتشادیحامیشدت متوسط
تنظیمات
داده
محتوا
ظاهر
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
استفاده
import { PostSignals } from '@partodata/ui'
;<PostSignals
sentiment="negative"
emotion="anger"
flow="grey"
severity="high"
cluster={{ id: 'crisis-service', label: 'بحران خدمات', tone: 'warning' }}
language="fa"
onClusterClick={(c) => addFilter(c.id)}
/>حالتها
compact={true}— فقط sentiment و severity (برای density compact)compact={false}(پیشفرض) — تمام چیپها همراه با emotion + flow + cluster + language
راهنمای استفاده
بکنید
- در فیدهای با چگالی فشرده (مثل حالت compact در
PostList) مقدارcompactرا فعال کنید تا فقط sentiment و severity بماند و ردیف اسکنپذیر باشد. onClusterClickرا متصل کنید تا چیپ خوشه به دکمهی فیلتر تبدیل شود — کامپوننت خودشstopPropagationمیکند تا کلیک روی چیپ، کارتِ والد را باز نکند.- کد زبان را همیشه از خروجی تشخیص زبان پاس بدهید — برای «fa» چیپی رندر نمیشود و فقط پستهای غیرفارسی برجسته میشوند.
- سیگنالها را فقط وقتی تنظیم کنید که خروجی واقعی تحلیل موجود است — همهی propها اختیاریاند و بدون هیچ سیگنالی، کامپوننت اصلاً رندر نمیشود.
نکنید
- برای
severity="low"چیپ جداگانه نسازید — این مقدار بهعمد رندر نمیشود تا فقط شدتهای قابلتوجه دیده شوند. - چیپها را با
Badgeعمومی بازسازی نکنید — رنگها از توکنهای دامنه (--sentiment-*،--severity-*) میآیند و باید در کل محصول یکپارچه بمانند. - در حالت
compactسیگنالهای مخفیشده (emotion، flow، cluster، language) را جداگانه کنار کامپوننت رندر نکنید — برای یک پست دو منبع حقیقت میسازد. - از چیپهای غیرتعاملی انتظار کلیک نداشته باشید — تنها چیپ خوشه (با
onClusterClick) تعاملی است؛ برای فیلتر بر اساس sentiment از کنترلهای فیلتر سطح لیست استفاده کنید.
Props
PostSignals
علاوه بر propهای زیر، همهی React.HTMLAttributes<HTMLDivElement> (مثل className) پشتیبانی میشود. اگر هیچ سیگنالی تنظیم نشده باشد (یا تنها سیگنال، language="fa" باشد)، کامپوننت null برمیگرداند.
PostCluster
دسترسیپذیری
- ریشهی کامپوننت یک
divساده (بدون role) است؛ چیپهای غیرتعاملیspanهستند و اسکرینریدر متن آنها را به ترتیب میخواند. - معنا فقط با رنگ منتقل نمیشود — هر چیپ برچسب متنی فارسی دارد («مثبت»، «شدت بالا»، «بحرانی»، …) و رنگ صرفاً تقویتکننده است.
- چیپ خوشه تنها عنصر تعاملی است: یک
<button type="button">واقعی که با Tab فوکوس میگیرد، با Enter یا Space فعال میشود و حلقهی focus-visible با رنگ برند دارد. وقتیonClusterClickتنظیم نشده باشدdisabledاست و از ترتیب فوکوس خارج میشود. - کلیک روی چیپ خوشه با
stopPropagationاز رسیدن رویداد به کارتِ قابلکلیک والد جلوگیری میکند — فعالسازی فیلتر، پست را باز نمیکند. - چیپ زبان Tooltip توضیحی دارد («زبان شناساییشده برای متن پست») که روی hover ظاهر میشود؛ trigger آن یک
spanغیرقابلفوکوس است، بنابراین محتوای Tooltip با کیبورد در دسترس نیست — اما متن خود چیپ (نام زبان) همیشه خوانده میشود و اطلاعات اصلی را حمل میکند. - آیکنها (Activity، Layers، Languages) تزئینیاند و معنای هر چیپ در متن مجاور آن است.
- اگر هیچ سیگنالی موجود نباشد، کامپوننت
nullبرمیگرداند — هیچ عنصر خالی در درخت دسترسیپذیری باقی نمیماند.
کامپوننتهای مرتبط
- برای تک sentiment روی header →
<SentimentBadge> - برای توزیع emotion (نمودار) →
<EmotionDistribution> - برای توزیع flow →
<FlowDistribution>