Chip

برچسبی فشرده برای نمایش وضعیت، دسته‌بندی یا انتخاب: با متن، آیکون یا هر دو، و قابل‌تبدیل به عنصر تعاملی مثل دکمهٔ فیلتر.

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API و Reka UISvelte ۵ با runes و Bits UIانگولار با signals و Angular CDK

این کامپوننت فعلاً برای ۱ فریم‌ورک از ۴ فریم‌ورک آماده است.

تازه

این نمونه هنوز برای Vue پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Svelte پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Angular پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

نصب

با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگی‌ها و فایل‌ها خودکار اضافه می‌شوند.

نصب سریع با لینک سخت و دیسک مشترکپکیج‌منیجر پیش‌فرض Node.jsYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/chip.json
npx dig-ui@latest add https://design-system-tau-green.vercel.app/r/chip.json
yarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/chip.json
bunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/chip.json

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Reka UI در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Bits UI در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Angular CDK در دست کار است.

استفاده

import { Chip } from "@/components/ui/chip"

<Chip color="success">فعال</Chip>

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Reka UI در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Bits UI در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Angular CDK در دست کار است.

ترکیب اجزا

رنگ Chip با دو محور مستقل کار می‌کند، درست مثل Badge.

محور color فقط چهار متغیر CSS را ست می‌کند — --chip، --chip-foreground، --chip-subtle و --chip-subtle-foreground — و محور variant تصمیم می‌گیرد این رنگ کجا بنشیند: پس‌زمینهٔ توپر در primary، پس‌زمینهٔ خنثی با متن رنگی در secondary، بدون پس‌زمینه در tertiary، یا پس‌زمینهٔ ملایم در soft.

  • وقتی فرزند Chip یک رشته یا عدد ساده باشد، خودکار داخل ChipLabel پیچیده می‌شود؛ برای ترکیب با آواتار، آیکون یا شمارنده، خودتان آن عنصر و ChipLabel را کنار هم به‌عنوان فرزند بدهید — همان متغیرهای --chip برای رنگ‌کردن یک شمارندهٔ داخلی هم قابل استفاده‌اند.
  • برای الگوی «حذف‌شدنی» از ChipCloseButton استفاده کنید: ضربدرش رنگِ currentColor دارد، پس با هر ترکیب variant/color از پیش هماهنگ است؛ دایرهٔ پشتش فقط روی هاور/فوکوس ظاهر می‌شود. خودش کاری جز نمایش انجام نمی‌دهد؛ onClick (حذف از state) را کامپوننت مصرف‌کننده می‌دهد.

دسترس‌پذیری

  • به‌صورت پیش‌فرض یک span تزئینی است؛ اگر Chip تنها راه انتقال یک وضعیت است، متن ChipLabel آن را برای صفحه‌خوان هم واضح بنویسید.
  • برای Chip قابل‌کلیک یا قابل‌تعویض (فیلتر، انتخاب) از asChild همراه با یک button واقعی و aria-pressed استفاده کنید تا نقش، فوکوس و کلید Enter/Space درست کار کند.
  • آیکون‌های تزئینی داخل Chip (نشانگر وضعیت، تیک انتخاب) باید aria-hidden باشند؛ معنا را متن ChipLabel منتقل کند، نه فقط رنگ یا شکل آیکون.
  • به ChipCloseButton همیشه یک aria-label توصیفی بدهید (مثل «حذف تهران»)؛ برچسب عمومی «حذف» به‌تنهایی برای فهرستی با چند Chip کافی نیست.

مرجع API

Chip

تمام ویژگی‌های استاندارد span نیز پشتیبانی می‌شود.

ویژگینوعپیش‌فرضتوضیح
variant"primary" | "secondary" | "tertiary" | "soft""secondary"حالت بصری Chip؛ تعیین می‌کند رنگ کجا بنشیند.
color"default" | "primary" | "success" | "warning" | "destructive""default"رنگ معنایی، مستقل از حالت. default یعنی همان ظاهر خنثای دیگ.
size"sm" | "default" | "lg""default"اندازهٔ Chip.
asChildbooleanfalseرندر استایل‌ها روی فرزند مستقیم (مثل button یا Link) به‌جای تگ span.
childrenReact.ReactNodeرشته یا عدد خودکار داخل ChipLabel می‌پیچد؛ برای ترکیب با آیکون، ChipLabel را خودتان کنار آیکون بگذارید.

ChipLabel

زیرکامپوننت متنِ Chip؛ در ترکیب دستی با آیکون به‌صورت مستقیم استفاده می‌شود.

ویژگینوعپیش‌فرضتوضیح
childrenReact.ReactNodeمتن برچسب.
classNamestringکلاس‌های تکمیلی برای زیرکامپوننت متن.

ChipCloseButton

دکمهٔ حذفِ Chip؛ تمام ویژگی‌های استاندارد button پشتیبانی می‌شود. ضربدرش currentColor است و دایرهٔ پس‌زمینه فقط روی هاور/فوکوس می‌آید، پس خودش هیچ prop رنگی ندارد.

ویژگینوعپیش‌فرضتوضیح
onClick(event: React.MouseEvent) => voidرویداد کلیک؛ منطق حذف از state را اینجا بنویسید.
aria-labelstring"حذف"برچسب دسترس‌پذیر دکمه؛ در فهرستی با چند Chip حتماً توصیفی‌تر از پیش‌فرض بدهید.
classNamestringکلاس‌های تکمیلی برای دکمهٔ حذف.

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Reka UI در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Bits UI در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک روی Angular CDK در دست کار است.