Pular para o conteúdo

Cores Interativas

Escolha de cor por área, controle deslizante, amostra e seletor em célula, usados na personalização da Marca.

Quatro peças formam o conjunto de cores interativas do Admin: ColorArea (saturação e brilho num quadro), ColorSlider (um canal por vez), ColorSwatch (a amostra) e CellColorPicker (a célula que abre o seletor num popover). A página de Marca junta as quatro para a pessoa escolher a cor da loja. As três primeiras vêm do HeroUI v3 e o CellColorPicker do Pro; todas passam pela fachada @rastreio-x/ui, junto com parseColor.

import {
  CellColorPicker,
  ColorArea,
  ColorSlider,
  ColorSwatch,
  parseColor,
} from "@rastreio-x/ui";

Área de cor

ColorArea mapeia dois canais nos eixos X e Y. No modelo hsb, o par usual é saturação e brilho; o matiz vem de um ColorSlider. O onChange entrega um objeto Color; use color.toString("hex") para gravar.

Controle deslizante

ColorSlider ajusta um canal (hue, saturation, brightness e outros). A trilha mostra o degradê do canal e o Thumb a posição. Sempre dê um aria-label com o nome do canal.

Amostra

ColorSwatch mostra uma cor, em cinco tamanhos (xs a xl) e dois formatos (circle e square). aria-label e colorName dão o nome da cor para leitores de tela.

Seletor em célula

CellColorPicker é uma linha com rótulo, valor e amostra que abre um popover. O conteúdo do popover é livre, e quase sempre é uma ColorArea com um ColorSlider. variant="secondary" usa o fundo secundário da superfície.

No Admin

Na página de Marca, o campo de cor é um TextField com o hex e um CellColorPicker com a área e o matiz. Aqui, o seletor completo.

Anatomia

PeçaPartes
ColorAreaColorArea, ColorArea.Thumb
ColorSliderColorSlider, .Track, .Thumb, .Output
ColorSwatchColorSwatch
CellColorPickerCellColorPicker, .Trigger, .Label, .ValueDisplay, .Swatch, .Popover

Propriedades

Área de cor (ColorArea):

Controle deslizante (ColorSlider):

Amostra (ColorSwatch):

Seletor em célula (CellColorPicker):

Gatilho (CellColorPicker.Trigger):

Popover (CellColorPicker.Popover):

Animações

O polegar acompanha o ponteiro sem animação própria, e o anel de foco aparece só com o teclado. O popover do CellColorPicker tem transição de entrada e saída herdada do HeroUI. O selo acima é indicativo (análise estática de CSS dos pacotes). A folha global da fachada reduz transições CSS a 0,01 ms com prefers-reduced-motion; o arraste não depende de animação e continua igual.

Acessibilidade

  • ColorArea e ColorSlider são controles do React Aria: setas movem o polegar, PageUp e PageDown dão passos maiores, Home e End vão aos extremos.
  • A área de cor expõe dois sliders (um por eixo), cada um com o valor em texto; mantenha aria-label descritivo ("Saturação e brilho").
  • A cor nunca é a única informação: o CellColorPicker.ValueDisplay mostra o hex, e o campo de texto ao lado aceita o valor digitado.
  • Verifique o contraste do texto sobre a cor escolhida antes de aplicar: a Marca calcula o contraste por tema e ajusta o tom quando preciso.

Boas práticas

Faça

Oferecer o campo de hex junto do seletor, e mostrar o valor escolhido em texto.

Evite

Um seletor visual sozinho, sem como digitar a cor nem ver o valor.
  • Una ColorArea (saturação e brilho) a um ColorSlider de matiz: é o conjunto mais familiar.
  • Dê o nome da cor ao ColorSwatch (aria-label ou colorName).
  • Use CellColorPicker quando o espaço é de formulário; use ColorArea solta só em telas dedicadas à cor.
  • Não use cor para representar estado; as cores do seletor são da Marca, não do sistema.

Relacionados

  • TextField para o campo do hex.
  • Slider para sliders que não são de cor.
  • Tooltip para explicar a cor escolhida.