Color Swatch Picker
فهرستی از رنگهای از پیشتعیینشده (پالت برند، رنگ برچسب، رنگ تم) که کاربر با کلیک یا کیبورد یکی را انتخاب میکند: برخلاف ColorPicker که هر رنگی را میسازد، این فقط بین گزینههای ثابت یکی را برمیگزیند.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-swatch-picker.jsonnpx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-swatch-picker.jsonyarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-swatch-picker.jsonbunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-swatch-picker.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
استفاده
import { ColorSwatchPicker, ColorSwatchPickerItem } from "@/components/ui/color-swatch-picker"
<ColorSwatchPicker defaultValue="#6366f1" onValueChange={(color) => console.log(color)}>
<ColorSwatchPickerItem color="#ef4444" />
<ColorSwatchPickerItem color="#6366f1" />
</ColorSwatchPicker>این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
ترکیب اجزا
دسترسپذیری
- فقط یک آیتم (انتخابشده، یا اولی اگر هنوز چیزی انتخاب نشده) در چرخهٔ Tab است؛ داخل گروه با پیکانها جابهجا شوید: دقیقاً مثل هر radiogroup استاندارد.
- پیکانهای چپ/راست در RTL خودکار برعکس میشوند (بالا/پایین هم مثل چپ/راست عمل میکنند تا در چیدمانهای چندردیفه هم قابلپیمایش بماند).
- هر آیتم aria-label خودکار از کد رنگش میسازد (مثل «رنگ #6366f1»)؛ اگر رنگها معنای خاصی دارند (مثل «قرمز فوری»)، aria-label دستی بدهید تا معنا هم منتقل شود، نه فقط کد.
- روی رنگ انتخابشده یک تیک با کنتراست خودکار (سفید روی رنگ تیره، مشکی روی رنگ روشن) نشان داده میشود: نه فقط یک حاشیه که ممکن است روی برخی رنگها کمرنگ دیده شود.
مرجع API
ColorSwatchPicker
تمام ویژگیهای استاندارد div نیز پشتیبانی میشود.
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| value | string | — | رنگِ انتخابشدهٔ کنترلشده. |
| defaultValue | string | — | مقدار اولیه در حالت کنترلنشده. |
| onValueChange | (color: string) => void | — | با انتخاب یک آیتم صدا زده میشود. |
| disabled | boolean | — | غیرفعالکردن کل گروه. |
| size | "sm" | "md" | "lg" | "md" | اندازهٔ همهٔ سواچهای داخل گروه. |
| radius | "none" | "sm" | "md" | "full" | "md" | شعاع گوشهٔ همهٔ سواچهای داخل گروه. |
ColorSwatchPickerItem
تمام ویژگیهای استاندارد button نیز پشتیبانی میشود.
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| color | string | — | رنگِ این گزینه. |
| disabled | boolean | — | خارجکردن این گزینه از انتخاب و Tab. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
نمونهها
Basic
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Sizes
size/radius را روی خودِ ColorSwatchPicker بدهید.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Radius
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Disabled Item
یک گزینهٔ خاص را با disabled از انتخاب خارج کنید؛ در چرخهٔ Tab هم نمیآید.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Controlled
انتخابشده: #0ea5e9
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| Basic | انتخاب رنگ برچسب یا تگ از پالت رنگهای برند در یک ابزار مدیریت پروژه |
| Sizes | size/radius را روی خودِ ColorSwatchPicker بدهید. |
| Radius | سواچهای گرد در انتخابگر رنگ تم که با استایل بصری دایرهای برند هماهنگ است |
| Disabled Item | یک گزینهٔ خاص را با disabled از انتخاب خارج کنید؛ در چرخهٔ Tab هم نمیآید. |
| Controlled | شخصیسازی تم زنده که رنگ انتخابشده باید با پیشنمایش بیرونی همگام بماند |
دستورالعمل استفاده
برای پالت محدود از این، برای رنگ آزاد از ColorPicker استفاده کنید
انجام بده
وقتی گزینهها از پیش مشخصاند (مثل رنگهای برند)، ColorSwatchPicker سریعتر و قابلپیشبینیتر است.
(بهجای این پالت ثابت، از ColorPicker کامل استفاده نکنید.)
انجام نده
مجبورکردن کاربر به انتخاب از یک ColorPicker کامل وقتی فقط چند گزینهٔ ثابت مجازند، کار اضافه و امکان خروج از پالت مجاز را باز میکند.