چیپ برچسب (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 پنج اندازه دارد: xs، sm (پیشفرض)، md، lg و xl — از xs برای جدولهای فشرده و از lg/xl برای هدر یک خوشه استفاده کنید.
<LabelChip tone="neutral">دستهبندی عمومی</LabelChip>
<LabelChip tone="brand">کمپین تخفیف فصلی</LabelChip>
<LabelChip tone="success">بازخورد مثبت بستهبندی</LabelChip>
<LabelChip tone="warning">در انتظار بازبینی</LabelChip>
<LabelChip tone="destructive">شکایت مشتری</LabelChip>
<LabelChip size="xs" tone="brand">اندازه xs</LabelChip>
<LabelChip size="md" tone="brand">اندازه md</LabelChip>
<LabelChip size="lg" tone="brand">اندازه lg</LabelChip>برچسب هوش مصنوعی
با aiGenerated یک پیشوند ✦ ظریف به ابتدای چیپ اضافه میشود و اگر tone را صریح تنظیم نکرده باشید، tone مخصوص ai بهصورت خودکار اعمال میشود. با confidence (عددی بین 0 و 1) میزان اطمینان مدل بهصورت درصد گردشده در انتهای چیپ نمایش داده میشود. رقمها با ارقام لاتین نوشته و شکل فارسی آنها توسط قابلیت ss01 فونت یکان بخ رندر میشود؛ هیچ تبدیل عددی در جاوااسکریپت انجام نمیشود تا کپی/جستوجو (Ctrl+F) و خواندن صفحهخوان سالم بماند.
<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>حالت انتخابشده و غیرفعال
وقتی onSelect برای فیلتر بر اساس برچسب استفاده میشود، با selected مشخص کنید کدام برچسبها هماکنون بهعنوان فیلتر فعال هستند — چیپ data-selected و aria-pressed میگیرد و حاشیهاش پررنگتر میشود. با disabled میتوانید یک برچسب را موقتاً غیرقابلاعمال کنید؛ کلیک، کیبورد و دکمههای ویرایش/حذف همه غیرفعال میشوند.
<LabelChip tone="brand" selected onSelect={() => filterByLabel('seasonal-campaign')}>
کمپین تخفیف فصلی
</LabelChip>
<LabelChip tone="brand" disabled onSelect={() => filterByLabel('seasonal-campaign')}>
کمپین تخفیف فصلی
</LabelChip>helper به نام labelChipVariants
اگر فقط استایل چیپ را برای یک عنصر دیگر نیاز دارید، میتوانید از helper کلاسساز labelChipVariants استفاده کنید.
import { labelChipVariants } from '@partodata/ui'<span className={labelChipVariants({ tone: 'success', size: 'md' })}>بازخورد مثبت بستهبندی</span>با توضیح (کارت برچسب تحلیلی)
یک قاعده برای همهٔ برچسبهای تحلیلی (برچسبهای طبقهبندی Comment و Post، SentimentBadge و همین چیپ): با
description، اشارهگر یا فوکوس صفحهکلید روی چیپ کارتی باز میکند با نام برچسب، معنای آن و — اگر confidence داده
باشید — اطمینان مدل با نوار.
<LabelChip aiGenerated confidence={0.82} description="گفتوگو دربارهٔ بستهبندی و ظاهر محصول">
بستهبندی
</LabelChip>راهنمای استفاده
بکنید
- برای برچسبهای خودکار مدل، همیشه
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 جلوگیری میشود). تا وقتی چیپ قابل کلیک است،aria-pressedهم مطابقselectedتنظیم میشود — کاربر صفحهخوان میفهمد کدام برچسبها هماکنون فیلتر فعال هستند. - دکمههای ویرایش و حذف، عنصر
buttonواقعی باaria-labelفارسی («ویرایش برچسب» و «حذف برچسب») هستند و کلیک آنها باstopPropagationاز فعال شدنonSelectجدا میماند. فشردن Enter یا Space روی این دکمهها هم فقط خودِ دکمه را فعال میکند؛ رویداد کیبورد چیپ فقط وقتی اجرا میشود که فوکوس روی خودِ چیپ باشد. - جعبه بصری دکمههای ویرایش و حذف 14 پیکسل است، اما هدف لمسی/اشارهگر آنها با utility داخلی
hit-areaبدون تغییر چیدمان به حدود 26 پیکسل بزرگتر میشود (حداقل WCAG 2.5.8). disabledهم روی ریشه (aria-disabled+ کلیک/کیبورد غیرفعال) و هم روی خود دکمههای ویرایش و حذف (attribute استانداردdisabled) اعمال میشود.- پیشوند ✦ برچسب هوش مصنوعی و آیکونهای داخلی با
aria-hiddenاز صفحهخوان مخفی هستند — اطلاعات از طریق متن برچسب منتقل میشود. - حلقه فوکوس با
focus-visible:ring-2و رنگ برند نمایش داده میشود. - درصد اطمینان با ارقام لاتین رندر میشود و شکل فارسی آن از قابلیت
ss01فونت میآید (بدونIntl.NumberFormat)، تا مقدار قابل کپی، قابل جستوجو و قابل خواندن برای صفحهخوان بماند. کلاسtabular-numsروی آن قرار دارد ولی در فونت یکان بخ بیاثر است، چونtnumندارد.
تعامل با کیبورد
Tab: انتقال فوکوس به چیپ (فقط وقتیonSelectتنظیم شده) و سپس به دکمههای ویرایش و حذف -EnterیاSpace: فعالسازیonSelectروی چیپ قابل کلیک - دکمههای ویرایش و حذف مانند هر دکمه استاندارد باEnterیاSpaceفعال میشوند
کامپوننتهای مرتبط
- Badge — اگر فقط یک برچسب یا وضعیت ایستا بدون ویرایش، حذف و کلیک نیاز دارید، Badge سادهتر است.
- FilterChip — اگر فیلترهای فعال جستجو را نمایش میدهید و کاربر باید بتواند آنها را بردارد، FilterChip گزینه درست است: روی صفحهٔ فهرست فقط برای فیلترهایی که بیرون از نوارابزار تنظیم شدهاند، در
activeFiltersقالب ListPage؛ و در ردیف فیلتر یک پنل درFilterBar. - TagInput — اگر کاربر باید خودش تگ جدید وارد کند، TagInput ورودی و مدیریت تگ را یکجا فراهم میکند.
- ActionTypeChip — اگر نوع یک عملیات شبکه اجتماعی (پسند، نظر، ذخیره و مانند آن) را نمایش میدهید، از چیپ domain-specific آن استفاده کنید.
- Label — برای برچسب فیلدهای فرم است و با وجود شباهت نام، ارتباطی با چیپ برچسب موضوعی ندارد.