Color Field
فیلد متنی برای تایپکردن مستقیمِ یک کد رنگ: با پیشنمایش زندهٔ سواچ و قرمزشدنِ خودکار وقتی مقدار قابلپارسشدن نیست.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-field.jsonnpx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-field.jsonyarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-field.jsonbunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-field.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
استفاده
import { ColorField } from "@/components/ui/color-field"
<ColorField label="رنگ برند" defaultValue="#7c3aed" onChange={(color) => console.log(color?.toString("hex"))} />این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
ترکیب اجزا
دسترسپذیری
- پیام خطا («رنگ نامعتبر است.») همان مکانیزم role="alert" و aria-describedby را که TextField دارد استفاده میکند: صفحهخوان بلافاصله اعلامش میکند.
- همیشه یک label واقعی بدهید؛ placeholder بهتنهایی برای کاربران صفحهخوان یا وقتی فیلد پر است ناپدید میشود.
- سواچِ ابتدای فیلد فقط پیشنمایش تزئینی است؛ چون خودش role="img" با aria-label دارد، معنا را هم منتقل میکند بدون اینکه لازم باشد چیز اضافهای برایش بنویسید.
مرجع API
ColorField
همهٔ propهای TextField (label، description، errorMessage، invalid، size، labelPlacement، fullWidth و...) هم پشتیبانی میشود.
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| value | string | — | مقدار متنیِ کنترلشده. |
| defaultValue | string | — | مقدار اولیه در حالت کنترلنشده. |
| onChange | (color: Color | null) => void | — | با هر تغییرِ متن صدا زده میشود؛ رنگ پارسشده یا null (وقتی خالی/نامعتبر است). |
| onValueChange | (value: string) => void | — | مقدار متنیِ خام، مستقل از معتبربودن. |
| showSwatch | boolean | true | نمایش ColorSwatch پیشنمایش در ابتدای فیلد. |
| invalid | boolean | — | اگر ندهید، از isValidColor خودکار محاسبه میشود؛ دادنش دستی این محاسبه را بازنویسی میکند. |
| errorMessage | React.ReactNode | "رنگ نامعتبر است." | پیام خطای سفارشی بهجای پیام پیشفرض. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
نمونهها
Basic
حالت پایه با مقدار پیشفرض.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
With Description
توضیح زیر فیلد، دقیقاً مثل TextField.
یک رنگ روشن انتخاب کنید تا متن مشکی رویش خوانا بماند.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Validation
با تایپ یک رشتهٔ نامعتبر (مثل «قرمز») حاشیه قرمز و پیام خطا خودکار ظاهر میشود.
رنگ نامعتبر است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Without Swatch
برای فیلدهای فشرده میتوانید سواچ پیشنمایش را خاموش کنید.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Sizes
سه اندازه، ارثبرده از Input: sm، default و lg.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Controlled با پیشنمایش زنده
onChange رنگِ پارسشده (یک Color، نه فقط رشته) میدهد؛ برای متن خالی یا نامعتبر null.
نامعتبر
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نامعتبر (Invalid)
ColorField روی TextField سوار است، پس invalid و errorMessage همان propهای آشنا هستند و مستقیم اثر میکنند.
کد رنگ هگز معتبر نیست.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| Basic | حالت پایه با مقدار پیشفرض. |
| With Description | توضیح زیر فیلد، دقیقاً مثل TextField. |
| Validation | با تایپ یک رشتهٔ نامعتبر (مثل «قرمز») حاشیه قرمز و پیام خطا خودکار ظاهر میشود. |
| Without Swatch | برای فیلدهای فشرده میتوانید سواچ پیشنمایش را خاموش کنید. |
| Sizes | سه اندازه، ارثبرده از Input: sm، default و lg. |
| Controlled با پیشنمایش زنده | onChange رنگِ پارسشده (یک Color، نه فقط رشته) میدهد؛ برای متن خالی یا نامعتبر null. |
| نامعتبر (Invalid) | کد رنگ دستی که کاربر تایپ کرده و فرمت درستی ندارد |
دستورالعمل استفاده
برچسب واقعی، نه فقط placeholder
انجام بده
label بدهید تا هم قبل و هم بعد از پرشدن فیلد خوانا بماند.
انجام نده
تکیهکردن فقط به placeholder یعنی وقتی کاربر تایپ میکند دیگر هیچ برچسبی نمیماند.
فرمت مورد انتظار را نشان بدهید
یک کد hex مثل #7c3aed وارد کنید.
انجام بده
placeholder مثالگونه (مثل #RRGGBB) یا description کوتاه، فرمت را جلوی چشم کاربر میگذارد.
انجام نده
بدون هیچ راهنمایی، کاربر تا خطای قرمز نبیند نمیفهمد چه فرمتی انتظار میرود.