کارت نظر (Comment Card)
کامپوننت نمایش نظرات کاربران با برچسبهای تحلیلی و شاخص احساسات
معرفی
کامپوننت CommentCard برای نمایش نظرات و بازخوردهای کاربران به همراه تحلیل احساسات و برچسبهای دستهبندی استفاده میشود. این کامپوننت شامل متن نظر، برچسبهای تحلیلی با درصد احتمال و شاخص رنگی احساسات است.
چه زمانی استفاده کنیم:
- برای نمایش نظرات شبکههای اجتماعی با تحلیل احساسات
- در داشبورد بازخورد و مانیتورینگ نظرات
- وقتی هر نظر باید با برچسبهای موضوعی و درصد احتمال نمایش داده شود
چه زمانی استفاده نکنیم:
- برای نمایش پست کامل — از
InstagramPostاستفاده کنید - برای نمایش پیامهای عمومی — CommentCard برای کامنتهای social media است
استفاده پایه
اصلاً راضی نیستم. کالا معیوب بود و وقتی تماس گرفتم پشتیبانی جواب درستی نداد. پولم هدر رفت.
دریافت کالای معیوب (۹۱%)نارضایتی از پشتیبانی (۸۷%)
import { CommentCard } from '@parto-system-design/ui'
export default function MyComponent() {
return (
<CommentCard
text="اصلاً راضی نیستم. کالا معیوب بود و وقتی تماس گرفتم پشتیبانی جواب درستی نداد. پولم هدر رفت."
tags={[
{ title: 'دریافت کالای معیوب', probability: 91, color: '#dc2626' },
{ title: 'نارضایتی از پشتیبانی', probability: 87, color: '#ef4444' },
]}
sentiment="negative"
/>
)
}حالتهای مختلف
نظر مثبت
عالی بود! کیفیت محصول خیلی خوبه و ارسال هم سریع انجام شد. پیشنهاد میکنم حتماً خرید کنید.
رضایت از کیفیت (۹۵%)ارسال سریع (۸۹%)
<CommentCard
text="عالی بود! کیفیت محصول خیلی خوبه و ارسال هم سریع انجام شد. پیشنهاد میکنم حتماً خرید کنید."
tags={[
{ title: 'رضایت از کیفیت', probability: 95, color: '#16a34a' },
{ title: 'ارسال سریع', probability: 89, color: '#22c55e' },
]}
sentiment="positive"
/>نظر منفی
اصلاً راضی نیستم. کالا معیوب بود و وقتی تماس گرفتم پشتیبانی جواب درستی نداد. پولم هدر رفت.
دریافت کالای معیوب (۹۱%)نارضایتی از پشتیبانی (۸۷%)
<CommentCard
text="اصلاً راضی نیستم. کالا معیوب بود و وقتی تماس گرفتم پشتیبانی جواب درستی نداد. پولم هدر رفت."
tags={[
{ title: 'دریافت کالای معیوب', probability: 91, color: '#dc2626' },
{ title: 'نارضایتی از پشتیبانی', probability: 87, color: '#ef4444' },
]}
sentiment="negative"
/>نظر خنثی
محصول خوبی بود، قیمت نسبتاً مناسب. چیز خاصی نداشت اما مشکلی هم نداشت.
رضایت متوسط (۷۸%)قیمت مناسب (۷۲%)
<CommentCard
text="محصول خوبی بود، قیمت نسبتاً مناسب. چیز خاصی نداشت اما مشکلی هم نداشت."
tags={[
{ title: 'رضایت متوسط', probability: 78, color: '#6b7280' },
{ title: 'قیمت مناسب', probability: 72, color: '#9ca3af' },
]}
sentiment="neutral"
/>با چند برچسب
محصول عالی بود اما بستهبندی ضعیف. متأسفانه کارتن پاره شده بود و محتویات آسیب دیده. پشتیبانی خیلی کمک کرد و جایگزین ارسال کردن.
رضایت از محصول (۹۲%)بستهبندی ضعیف (۸۸%)پشتیبانی خوب (۸۵%)تحویل جایگزین (۸۰%)
<CommentCard
text="محصول عالی بود اما بستهبندی ضعیف. متأسفانه کارتن پاره شده بود و محتویات آسیب دیده. پشتیبانی خیلی کمک کرد و جایگزین ارسال کردن."
tags={[
{ title: 'رضایت از محصول', probability: 92, color: '#16a34a' },
{ title: 'بستهبندی ضعیف', probability: 88, color: '#dc2626' },
{ title: 'پشتیبانی خوب', probability: 85, color: '#22c55e' },
{ title: 'تحویل جایگزین', probability: 80, color: '#16a34a' },
]}
sentiment="positive"
/>در Grid
عالی بود! کیفیت محصول خیلی خوبه و ارسال هم سریع انجام شد.
رضایت از کیفیت (۹۵%)ارسال سریع (۸۹%)
اصلاً راضی نیستم. کالا معیوب بود و پشتیبانی جواب نداد.
دریافت کالای معیوب (۹۱%)نارضایتی از پشتیبانی (۸۷%)
محصول خوبی بود، قیمت نسبتاً مناسب. چیز خاصی نداشت.
رضایت متوسط (۷۸%)
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" dir="rtl">
<CommentCard
text="عالی بود! کیفیت محصول خیلی خوبه و ارسال هم سریع انجام شد."
tags={[
{ title: 'رضایت از کیفیت', probability: 95, color: '#16a34a' },
{ title: 'ارسال سریع', probability: 89, color: '#22c55e' },
]}
sentiment="positive"
/>
<CommentCard
text="اصلاً راضی نیستم. کالا معیوب بود و پشتیبانی جواب نداد."
tags={[
{ title: 'دریافت کالای معیوب', probability: 91, color: '#dc2626' },
{ title: 'نارضایتی از پشتیبانی', probability: 87, color: '#ef4444' },
]}
sentiment="negative"
/>
<CommentCard
text="محصول خوبی بود، قیمت نسبتاً مناسب. چیز خاصی نداشت."
tags={[{ title: 'رضایت متوسط', probability: 78, color: '#6b7280' }]}
sentiment="neutral"
/>
</div>ساختار داده
interface CommentTag {
title: string // عنوان برچسب
probability: number // درصد احتمال (0-100)
color: string // کد رنگ HEX
}
interface CommentCardProps {
text: string // متن نظر
tags: CommentTag[] // برچسبهای تحلیلی
sentiment: 'positive' | 'negative' | 'neutral' // احساس کلی
id?: number | string // شناسه اختیاری
usePersianDigits?: boolean // استفاده از اعداد فارسی (پیشفرض: true)
}ویژگیهای کامپوننت
۱. متن نظر
- نمایش متن کامل نظر
- پشتیبانی کامل از RTL
- فونت و فاصلهگذاری مناسب برای خوانایی
۲. برچسبهای تحلیلی (Tags)
- عنوان برچسب با درصد احتمال
- رنگ دینامیک برای هر برچسب
- استایل شفاف با حاشیه رنگی:
- پسزمینه: رنگ با شفافیت 15%
- حاشیه: رنگ با شفافیت 30%
- متن: رنگ کامل
- نمایش اعداد به صورت فارسی یا انگلیسی
۳. شاخص احساسات (Sentiment)
- دایره رنگی در گوشه پایین چپ (RTL)
- رنگها:
- 🟢 سبز (#22c55e): مثبت
- 🔴 قرمز (#ef4444): منفی
- ⚫ خاکستری (#6b7280): خنثی
- Tooltip با عنوان احساس
Props
رنگبندی برچسبها
برای رنگبندی برچسبها میتوانید از پالت رنگی متناسب با نوع احساس استفاده کنید:
رنگهای پیشنهادی مثبت
#16a34a- سبز تیره#22c55e- سبز روشن#4ade80- سبز خیلی روشن
رنگهای پیشنهادی منفی
#dc2626- قرمز تیره#ef4444- قرمز#f87171- قرمز روشن
رنگهای پیشنهادی خنثی
#6b7280- خاکستری تیره#9ca3af- خاکستری#d1d5db- خاکستری روشن
کاربردها
این کامپوننت در موارد زیر کاربرد دارد:
- تحلیل نظرات: نمایش نظرات کاربران با تحلیل احساسات
- داشبورد بازخورد: نمایش بازخوردها در پنل مدیریت
- سیستم بررسی محصول: نمایش نظرات خریداران
- تحلیل رضایت مشتری: نمایش نظرات با دستهبندی موضوعی
- مانیتورینگ شبکههای اجتماعی: نمایش نظرات و تحلیل آنها
راهنمای استفاده
بکنید
- رنگ برچسبها را متناسب با نوع احساس انتخاب کنید (سبز برای مثبت، قرمز برای منفی) - تعداد برچسبها را به حداکثر ۴-۵ عدد محدود کنید - برای لیستهای بزرگ از virtualization استفاده کنید
نکنید
- رنگهای برچسب را hardcode نکنید — از پالت رنگی متناسب با sentiment استفاده کنید - بدون
sentimentاز کامپوننت استفاده نکنید — شاخص احساسات الزامی است - از CommentCard برای پیامهای سیستمی یا اعلانها استفاده نکنید — مخصوص نظرات کاربران است
دسترسیپذیری
- استفاده از تگهای معنادار
- Tooltip برای شاخص احساسات
- کنتراست رنگی مناسب برای خوانایی
- پشتیبانی کامل از صفحهخوانها
ملاحظات RTL
- متن بهصورت خودکار راستچین میشود
- برچسبها از راست به چپ چیده میشوند (
flex-row-reverse) - شاخص احساسات در گوشه پایین چپ قرار میگیرد (
end-3) - اعداد فارسی بهصورت پیشفرض فعال است
نکات بهینهسازی
- برای لیستهای بزرگ از virtualization استفاده کنید
idرا برایkeyدر لیستها استفاده کنید- برای بهبود عملکرد، از
React.memoاستفاده کنید - تگها را محدود کنید (حداکثر 4-5 تگ)
کامپوننتهای مرتبط
- InstagramPost — اگر نیاز به نمایش پست کامل اینستاگرام با تصویر و آمار دارید، از InstagramPost استفاده کنید
- SentimentBadge — اگر فقط نمایش نوع احساس بدون متن نظر نیاز دارید، از SentimentBadge استفاده کنید