Color Area
مربعِ دوبعدیِ انتخاب اشباع (محور افقی) و درخشندگی (محور عمودی) روی یک فامِ ثابت؛ همان تکهای که داخل ColorPicker استفاده میشود، اینجا بهعنوان یک کامپوننت مستقل و قابلترکیب با هر ColorSlider دیگری (مثلاً برای فام) بیرون آمده.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-area.jsonnpx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-area.jsonyarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-area.jsonbunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/color-area.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
استفاده
import { ColorArea } from "@/components/ui/color-area"
import { parseColor } from "@/lib/color"
const [value, setValue] = React.useState("hsb(262, 83%, 58%)")
<ColorArea
color={parseColor(value)}
onChange={(next) => setValue(next.toString())}
onChangeEnd={(next) => setValue(next.toString())}
/>این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
ترکیب اجزا
دسترسپذیری
- role="slider" با aria-valuetext فارسی (درصد اشباع و درخشندگی) دارد، نه aria-valuenow تنها: چون این یک مقدار دوبعدی است.
- چهار جهت فلش صفحهکلید پشتیبانی میشوند (بالا/پایین درخشندگی، چپ/راست اشباع)؛ چپ/راست در RTL خودکار برعکس میشوند.
- برای کاربرانی که رنگها را بهسختی تشخیص میدهند، کنار ColorArea همیشه یک ColorSwatch یا فیلد هگز هم بگذارید (مثل نمونهٔ این صفحه) تا مقدار عددی هم دیده شود، نه فقط موقعیت دستگیره.
مرجع API
ColorArea
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| color | Color | — | رنگ فعلی (از parseColor)؛ فقط کانالهای اشباع/درخشندگیِ آن با این کامپوننت عوض میشوند. |
| onChange | (color: Color) => void | — | حین کشیدن/فشردن فلش، پیوسته صدا زده میشود. |
| onChangeEnd | (color: Color) => void | — | فقط یکبار در پایانِ تعامل: جای مناسب برای commit به state پایدار یا history. |
| disabled | boolean | — | غیرفعال میکند: نه pointer نه کیبورد مقدار را عوض میکند؛ دستگیره کمرنگ میشود. |
| className | string | — | روی ریشهٔ ColorArea مینشیند؛ اندازهاش را (h-40 w-full پیشفرض) هم از همینجا عوض میکنید. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
نمونهها
با اسلایدر فام
الگوی رایج: ColorArea برای اشباع/درخشندگی، یک ColorSlider برای فام، هر دو روی یک state مشترک.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
غیرفعال (Disabled)
نه pointer و نه کیبورد مقدار را عوض میکند؛ دستگیره کمرنگ میشود ولی موقعیتش همچنان مقدار فعلی را نشان میدهد.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| با اسلایدر فام | الگوی رایج: ColorArea برای اشباع/درخشندگی، یک ColorSlider برای فام، هر دو روی یک state مشترک. |
| غیرفعال (Disabled) | انتخابگر رنگی که فعلاً قفل است، مثل رنگ یک عنصرِ بهارثرسیده |