کارت نظر (Comment Card)
کامپوننت نمایش نظرات کاربران با برچسبهای تحلیلی و شاخص احساسات
معرفی
کامپوننت CommentCard برای نمایش نظرات و بازخوردهای کاربران به همراه تحلیل احساسات و برچسبهای دستهبندی استفاده میشود. این کامپوننت شامل متن نظر، برچسبهای تحلیلی با درصد احتمال و شاخص رنگی احساسات است.
استفاده پایه
اصلاً راضی نیستم. کالا معیوب بود و وقتی تماس گرفتم پشتیبانی جواب درستی نداد. پولم هدر رفت.
دریافت کالای معیوب (۹۱%)
نارضایتی از پشتیبانی (۸۷%)
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- خاکستری روشن
کاربردها
این کامپوننت در موارد زیر کاربرد دارد:
- تحلیل نظرات: نمایش نظرات کاربران با تحلیل احساسات
- داشبورد بازخورد: نمایش بازخوردها در پنل مدیریت
- سیستم بررسی محصول: نمایش نظرات خریداران
- تحلیل رضایت مشتری: نمایش نظرات با دستهبندی موضوعی
- مانیتورینگ شبکههای اجتماعی: نمایش نظرات و تحلیل آنها
دسترسیپذیری
- استفاده از تگهای معنادار
- Tooltip برای شاخص احساسات
- کنتراست رنگی مناسب برای خوانایی
- پشتیبانی کامل از صفحهخوانها
ملاحظات RTL
- متن بهصورت خودکار راستچین میشود
- برچسبها از راست به چپ چیده میشوند (
flex-row-reverse) - شاخص احساسات در گوشه پایین چپ قرار میگیرد (
end-3) - اعداد فارسی بهصورت پیشفرض فعال است
نکات بهینهسازی
- برای لیستهای بزرگ از virtualization استفاده کنید
idرا برایkeyدر لیستها استفاده کنید- برای بهبود عملکرد، از
React.memoاستفاده کنید - تگها را محدود کنید (حداکثر 4-5 تگ)