چیپ برچسب (LabelChip)
چیپ فشرده برای نمایش برچسبهای موضوعی و دستهبندی — با شش tone رنگی، نشانگر برچسب هوش مصنوعی همراه درصد اطمینان، و اکشنهای ویرایش و حذف درونخطی.
معرفی
LabelChip یک چیپ فشرده برای نمایش برچسبهای موضوعی و دستهبندی روی پستها، خوشهها و ردیفهای جدول است — با شش tone رنگی، دو اندازه، نشانگر «تولیدشده توسط هوش مصنوعی» بههمراه درصد اطمینان، و دکمههای ویرایش و حذف درونخطی.
چه زمانی استفاده کنیم:
- نمایش برچسبهای موضوعی و کمپینی روی پستها و خوشههای تحلیلی (مانند «کمپین تخفیف فصلی» یا «بازخورد بستهبندی»)
- در داشبوردهای خوشهبندی هوشمند، برای تفکیک برچسبهای خودکار (
aiGenerated) از برچسبهای انسانی - وقتی کاربر باید بتواند برچسب را همانجا ویرایش یا حذف کند (
onEdit/onRemove) یا با کلیک روی آن فید را فیلتر کند (onSelect)
چه زمانی استفاده نکنیم:
- برای نمایش فیلترهای فعال جستجو در نوار فیلتر — از
FilterChipاستفاده کنید - برای نشان دادن وضعیت یا شمارنده ایستا بدون هیچ تعاملی —
Badgeسادهتر و کافی است - وقتی کاربر باید خودش تگ جدید تایپ و اضافه کند — از
TagInputاستفاده کنید
استفاده
import { LabelChip } from '@partodata/ui'<LabelChip tone="brand" onRemove={() => removeLabel('seasonal-campaign')}>
کمپین تخفیف فصلی
</LabelChip>حالتها و انواع
رنگها و اندازهها
از prop tone برای تعیین رنگ چیپ استفاده کنید — شش حالت دارد: neutral (پیشفرض)، brand، success، warning، destructive و ai. prop size نیز دو اندازه sm (پیشفرض) و md دارد.
<LabelChip tone="neutral">دستهبندی عمومی</LabelChip>
<LabelChip tone="brand">کمپین تخفیف فصلی</LabelChip>
<LabelChip tone="success">بازخورد مثبت بستهبندی</LabelChip>
<LabelChip tone="warning">در انتظار بازبینی</LabelChip>
<LabelChip tone="destructive">شکایت مشتری</LabelChip>
<LabelChip size="md" tone="brand">اندازه md</LabelChip>برچسب هوش مصنوعی
با aiGenerated یک پیشوند ✦ ظریف به ابتدای چیپ اضافه میشود و اگر tone را صریح تنظیم نکرده باشید، tone مخصوص ai بهصورت خودکار اعمال میشود. با confidence (عددی بین ۰ و ۱) میزان اطمینان مدل بهصورت درصد با ارقام فارسی در انتهای چیپ نمایش داده میشود.
<LabelChip aiGenerated confidence={0.87}>گفتمان درباره برند</LabelChip>ویرایش و حذف درونخطی
با تنظیم onEdit دکمه مداد و با تنظیم onRemove دکمه ✕ در انتهای چیپ رندر میشود. باز کردن ویرایشگر بر عهده مصرفکننده است — کامپوننت فقط رویداد را گزارش میکند.
<LabelChip onEdit={() => openLabelEditor('packaging')} onRemove={() => removeLabel('packaging')}>
بازخورد بستهبندی
</LabelChip>چیپ قابل کلیک
با تنظیم onSelect کل چیپ قابل کلیک و قابل فوکوس میشود — مناسب جریان «فیلتر بر اساس برچسب». دکمههای ویرایش و حذف داخلی، کلیک خودشان را از onSelect جدا نگه میدارند.
<LabelChip tone="brand" onSelect={() => filterByLabel('seasonal-campaign')}>
کمپین تخفیف فصلی
</LabelChip>helper به نام labelChipVariants
اگر فقط استایل چیپ را برای یک عنصر دیگر نیاز دارید، میتوانید از helper کلاسساز labelChipVariants استفاده کنید.
import { labelChipVariants } from '@partodata/ui'<span className={labelChipVariants({ tone: 'success', size: 'md' })}>بازخورد مثبت بستهبندی</span>راهنمای استفاده
بکنید
- برای برچسبهای خودکار مدل، همیشه
aiGeneratedرا تنظیم کنید تا کاربر منشأ برچسب را از پیشوند ✦ تشخیص دهد. -confidenceرا فقط وقتی نمایش دهید که مقدار واقعی از مدل دارید — درصد ساختگی اعتماد کاربر را از بین میبرد. - برای کلیک روی کل چیپ ازonSelectاستفاده کنید، نهonClick— این کامپوننت عمداًonClickرا از props حذف کرده است. - متن برچسب را کوتاه نگه دارید؛ متن بلند بهصورت خودکار truncate میشود.
نکنید
- از
LabelChipبرای فیلترهای فعال نوار جستجو استفاده نکنید —FilterChipبرای آن سناریو طراحی شده است. - tonedestructiveرا برای دستهبندی معمولی بهکار نبرید — فقط برای برچسبهایی که نیازمند توجه فوری هستند. -onRemoveرا بدون تأیید یا امکان بازگشت برای دادههای مهم وصل نکنید — حذف برچسب تحلیلی باید قابل جبران باشد. - چند چیپ با tonebrandرا بیدلیل کنار هم نچینید — تمایز بصری برچسبها از بین میرود.
Props
سایر ویژگیهای استاندارد span (مانند className و id) نیز به عنصر ریشه منتقل میشوند — بهجز onClick که عمداً حذف شده است؛ بهجای آن از onSelect استفاده کنید.
دسترسیپذیری
- بدون
onSelect، چیپ یکspanغیرتعاملی است و در ترتیب فوکوس صفحه قرار نمیگیرد. - با
onSelect، چیپrole="button"وtabIndexصفر میگیرد و با Enter یا Space فعال میشود (اسکرول پیشفرض Space جلوگیری میشود). - دکمههای ویرایش و حذف، عنصر
buttonواقعی باaria-labelفارسی («ویرایش برچسب» و «حذف برچسب») هستند و کلیک آنها باstopPropagationاز فعال شدنonSelectجدا میماند. - پیشوند ✦ برچسب هوش مصنوعی و آیکونهای داخلی با
aria-hiddenاز صفحهخوان مخفی هستند — اطلاعات از طریق متن برچسب منتقل میشود. - حلقه فوکوس با
focus-visible:ring-2و رنگ برند نمایش داده میشود. - درصد اطمینان با ارقام فارسی (
Intl.NumberFormatبا localefa-IR) و کلاسtabular-numsرندر میشود؛ آن کلاس در فونت یکان بخ بیاثر است، چونtnumندارد.
تعامل با کیبورد
Tab: انتقال فوکوس به چیپ (فقط وقتیonSelectتنظیم شده) و سپس به دکمههای ویرایش و حذف -EnterیاSpace: فعالسازیonSelectروی چیپ قابل کلیک - دکمههای ویرایش و حذف مانند هر دکمه استاندارد باEnterیاSpaceفعال میشوند
کامپوننتهای مرتبط
- Badge — اگر فقط یک برچسب یا وضعیت ایستا بدون ویرایش، حذف و کلیک نیاز دارید، Badge سادهتر است.
- FilterChip — اگر فیلترهای فعال جستجو را نمایش میدهید و کاربر باید بتواند آنها را بردارد، FilterChip (در ترکیب با FilterBar) گزینه درست است.
- TagInput — اگر کاربر باید خودش تگ جدید وارد کند، TagInput ورودی و مدیریت تگ را یکجا فراهم میکند.
- ActionTypeChip — اگر نوع یک عملیات شبکه اجتماعی (پسند، نظر، ذخیره و مانند آن) را نمایش میدهید، از چیپ domain-specific آن استفاده کنید.
- Label — برای برچسب فیلدهای فرم است و با وجود شباهت نام، ارتباطی با چیپ برچسب موضوعی ندارد.