Vercel UI SDK 0.1.0-beta.1 üzerine kurulu. API’si değişebilir.
Color picker
Vercel UI SDK üzerinde doygunluk alanı, ton ve alfa kaydırıcıları, yazılabilen CSS renkleri, hazır renkler ve damlalık içeren bir renk seçici.
- Form bileşenleri
- 15 parça
- 11 örnek
@tabler/icons-react@ui-sdk/core@ui-sdk/react
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-color-picker.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @ui-sdk/react@0.1.0-beta.1 @ui-sdk/core@0.1.0-beta.1 @tabler/icons-react cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/ui-sdk-color-picker.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
UI SDK, ui-sdk adlı bir cascade katmanında kendi CSS’ini biraz ekler. Sınıflarınızın kazanması için bu katmanı genel stil dosyanızın en üstünde, Tailwind import’unun üzerinde tanımlayın.
Değer bir CSS renk dizesidir. Tüm parçalar aynı rengi düzenler, bu yüzden yalnızca ihtiyacınız olan parçaları kullanın. ColorPickerArea ve ColorPickerSlider tutamaçlarını kendisi çizer. Seçiciyi aria-label ile ya da onu saran bir alanın etiketiyle adlandırın.
Ayarlar sayfası ya da kenar çubuğu için parçaları popover olmadan yerinde gösterin.
channel="alpha" olan bir kaydırıcı opaklığı düzenler. Rayı ve renk örneği rengin altına dama deseni çizer, böylece saydam bir renk saydam görünür.
space="oklch" ile alanı boyamak için ColorPickerAreaCanvas ekleyin. Ekranın gamut’u dışındaki renkler boş kalır; oraya sürüklenen tutamaç bırakınca içerideki en yakın renge oturur.
ColorPickerSwatches hazır renkler arasında ok tuşlarıyla gezilen tek bir Tab durağıdır; değer nasıl yazılırsa yazılsın hazır renk seçili kalır. ColorPickerChannelInput tek bir kanalı sayı olarak düzenler. Damlalık, ekrandan renk alamayan tarayıcılarda kendini gizler.
Bir kaydırıcıyı alanın yanına dikmek için orientation="vertical" verin.
onValueChange sürüklemenin her adımında, onValueCommit ise bittiğinde bir kez çalışır; kaydetmeyi orada yapın. createColorPickerController() ile oluşturulan bir controller rengi her yerden ayarlar.
Gizli bir input değeri name altında gönderir; form sıfırlanınca defaultValue değerine döner.
Devre dışı bir seçici odak almaz, değişmez ve hiçbir şey göndermez.
readOnly ile tutamaçlar odak alabilir ve değer gönderilir, ama sürükleme, tuşlar ve yazma rengi değiştirmez.
UI SDK yönü sayfadan okur; bu yüzden alan, kaydırıcılar ve ok tuşları aynalanır. Input’lar kendi yönünü seçer, böylece bir hex değeri yine soldan sağa okunur.
| Tuş | Action |
|---|---|
| ←→↑↓ | Bir tutamacı bir adım taşır. Alanda sol ve sağ yatay, yukarı ve aşağı dikey hareket ettirir. |
| Shift + arrow | On adım taşır. |
| Page UpPage Down | Aralığın onda biri kadar, alanda yukarı ya da kaydırıcı boyunca ilerler. |
| HomeEnd | Başa ya da sona taşır. |
| Enter | Input’taki metni okur ya da odaktaki hazır rengi seçer. |
| Esc | Input’taki metni değere geri döndürür ya da popover’ı kapatır. |
Renk seçiciyi karşılayan bir WAI-ARIA deseni yok, bu yüzden UI SDK onu var olan desenlerden kurar. Seçici bir gruptur. Alanın tutamacı ve her kaydırıcı tutamacı birer slider’dır; alanın tutamacı iki kanalını da adlandırır, örneğin “Doygunluk %76, Parlaklık %96”. Hazır renkler bir listbox’tır; her hazır renk ve renk örneği rengiyle adlandırılır, örneğin “canlı mavi”.
Popover örneğindeki tetikleyici, adında mevcut rengi söyler. Tutamaçlar yalnızca harekete izin verildiğinde sürüklerken büyür; dama deseni, halkalar ve odak çerçeveleri zorunlu renkler modunda sistem renklerine geçer.
Her parça aynı adlı UI SDK parçasını sarar ve render ile parçanın durumuna bağlı bir fonksiyon olabilen className dahil tüm prop’larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
value | string | – |
defaultValue | string | "black" |
onValueChangeSürüklemenin her adımında, her tuşta, yazılan renkte ya da hazır renkte çalışır. | (value: string, details: ChangeDetails) => void | – |
onValueCommitBir sürükleme, tuş ya da yazılan renk bittiğinde bir kez çalışır. | (value: string, details: ChangeDetails) => void | – |
spaceParçaların hangi kanalları düzenlediği. | "hsv" | "hsl" | "srgb" | "oklch" | "hsv" |
formatDeğerin nasıl yazıldığı. hsv için hex, diğerlerinde uzayın kendi CSS sözdizimi. | ColorFormat | – |
gamut | "srgb" | "p3" | false | "srgb" |
disabled | boolean | false |
readOnly | boolean | false |
required | boolean | false |
name | string | – |
form | string | – |
controllercreateColorPickerController() ile oluşturulur. | ColorPickerController | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="color-picker" | CSS'te kökü hedefleyin. |
data-disabled | Devre dışıyken bulunur. |
data-readonly | Salt okunur olduğunda bulunur. |
data-required | Zorunlu olduğunda bulunur. |
data-out-of-gamut | Bir sürükleme gamut dışında bir renk tuttuğu sürece her parçada bulunur. |
--color-picker-color | CSS olarak renk. Tutamaçlar ve renk örnekleri bununla dolar. |
| Prop | Tür | Varsayılan |
|---|---|---|
xYatay kanal. Uzaya göre doygunluk, kırmızı ya da kroma. | ColorChannel | – |
yDikey kanal. Uzaya göre parlaklık, açıklık ya da yeşil. | ColorChannel | – |
children | ReactNode | <ColorPickerAreaThumb /> |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="color-picker-area" | Alanı CSS’te hedeflemek için. |
--color-area-background | Alanı çizen gradyanlar. Alanı bir canvas boyuyorsa tanımsızdır. |
--color-picker-radius | Alanın köşe yarıçapı. Köşeler eş merkezli olsun diye ColorPickerContent ayarlar. |
| Öznitelik | Açıklama |
|---|---|
data-slot="color-picker-area-thumb" | Tutamacı CSS’te hedeflemek için. |
--area-x | Tutamacın alandaki yatay konumu, 0 ile 1 arası. |
--area-y | Tutamacın alandaki dikey konumu, 0 ile 1 arası. |
| Prop | Tür | Varsayılan |
|---|---|---|
channelVarsayılan olarak ton, sRGB’de ise mavi. | ColorChannel | – |
orientation | "horizontal" | "vertical" | "horizontal" |
children | ReactNode | <ColorPickerSliderThumb /> |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="color-picker-slider" | Kaydırıcıyı CSS’te hedeflemek için. |
data-channel | Düzenlediği kanal, örneğin ton ya da alfa. |
data-orientation | horizontal veya vertical. |
--color-slider-background | Kanal boyunca bir gradyan. |
| Prop | Tür | Varsayılan |
|---|---|---|
channelDüzenlenecek kanal, insanların okuduğu birimlerle. | ColorChannel | – |
render | ReactElement | (props, state) => ReactElement | <input> |
| Prop | Tür | Varsayılan |
|---|---|---|
valueZorunlu. Hazır rengin rengi. | string | – |
render | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-slot="color-picker-swatch-item" | Hazır renkleri CSS’te hedeflemek için. |
data-selected | Değer bu hazır rengin rengi olduğu sürece bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
children | ReactNode | <IconColorPicker /> |
render | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-unsupported | Tarayıcıda EyeDropper yoksa bulunur. Bu durumda düğme gizlenir. |
ColorPickerPopover, ColorPickerTrigger ve ColorPickerContent UI SDK popover’ını sarar. İçerik tarayıcının top layer’ında açılır, bu yüzden portal gerekmez.
| Prop | Tür | Varsayılan |
|---|---|---|
side | "top" | "bottom" | "left" | "right" | "start" | "end" | "bottom" |
align | "start" | "center" | "end" | "start" |
sideOffset | number | 6 |
| Öznitelik | Açıklama |
|---|---|
data-slot="popover-content" | UI SDK tarafından popup’a eklenir. CSS’te hedeflemek için kullanın. |
data-starting-style | Açılır pencere animasyonla girerken bulunur. |
data-ending-style | Açılır pencere animasyonla çıkarken bulunur. |
- CalendarTekli, aralık ve çoklu seçim için, kayan aylar, aralık önizlemeleri ve dokunmaya uygun boyutta günler içeren bir tarih ızgarası.
- Checkboxİşareti çizilerek beliren, belirsiz üst öğeleri, grupları ve hover durumunu paylaşan etiketleri olan bir onay kutusu.
- ComboboxÇipler, gruplar ve asenkron sonuçlar içeren, siz yazdıkça boyutu değişen bir açılır pencerede filtrelenebilir bir select.
- Date pickerTek tarihler ve aralıklar için takvimi bir popover içinde, telefonlarda ise alt sayfa olarak açan bir düğme.
- FieldKontrolüne bağlanmış etiketler, açıklamalar ve hatalar; doğrulama durumları ve formlar için düzenler içerir.
- InputÜç boyutlu, geçersiz ve salt okunur durumları, yerel doğrulama stilleri ve telefonların asla yakınlaştırmaması için 16px dokunmatik yazı tipi olan bir metin girişi.