Chip

Os chips são pequenos pedaços de metadados: as tags de um artigo, o estado de uma construção, as categorias de uma página. São inline por predefinição, por isso uma fila deles pede um stack com wrap.

Chip básico

estáticovitesem-runtime
stack({ direction: 'row', gap: 'sm', wrap: true },
  chip('estático'),
  chip('vite'),
  chip('sem-runtime'),
)

Cores

primaryneutralsuccesswarningdanger
stack({ direction: 'row', gap: 'sm', wrap: true },
  chip({ color: 'primary' }, 'primary'),
  chip({ color: 'neutral' }, 'neutral'),
  chip({ color: 'success' }, 'success'),
  chip({ color: 'warning' }, 'warning'),
  chip({ color: 'danger' }, 'danger'),
)

Variantes

softsoftsoft
outlineoutlineoutline
solidsolidsolid
stack({ gap: 'sm' },
  stack({ direction: 'row', gap: 'sm', wrap: true },
    chip({ variant: 'soft', color: 'primary' }, 'soft'),
    chip({ variant: 'soft', color: 'success' }, 'soft'),
    chip({ variant: 'soft', color: 'danger' }, 'soft'),
  ),
  stack({ direction: 'row', gap: 'sm', wrap: true },
    chip({ variant: 'outline', color: 'primary' }, 'outline'),
    chip({ variant: 'outline', color: 'success' }, 'outline'),
    chip({ variant: 'outline', color: 'danger' }, 'outline'),
  ),
  stack({ direction: 'row', gap: 'sm', wrap: true },
    chip({ variant: 'solid', color: 'primary' }, 'solid'),
    chip({ variant: 'solid', color: 'success' }, 'solid'),
    chip({ variant: 'solid', color: 'danger' }, 'solid'),
  ),
)

Tamanhos

pequenomédiogrande
stack({ direction: 'row', gap: 'sm', align: 'center', wrap: true },
  chip({ size: 'sm' }, 'pequeno'),
  chip({ size: 'md' }, 'médio'),
  chip({ size: 'lg' }, 'grande'),
)

Ponto de estado

Um ponto à frente transforma um chip num estado. A cor sozinha não chega para transmitir significado, por isso mantém a palavra.

Construção passouEm filaFalhouIgnorada
stack({ direction: 'row', gap: 'sm', wrap: true },
  chip({ color: 'success', dot: true }, 'Construção passou'),
  chip({ color: 'warning', dot: true }, 'Em fila'),
  chip({ color: 'danger', dot: true }, 'Falhou'),
  chip({ color: 'neutral', dot: true }, 'Ignorada'),
)

Ligações

Dá a um chip um href e ele desenha uma âncora — a forma habitual de uma lista de tags, em que cada tag é uma página.

stack({ direction: 'row', gap: 'sm', wrap: true },
  chip({ href: '/pt/docs/routing', color: 'primary' }, 'rotas'),
  chip({ href: '/pt/docs/data', color: 'primary' }, 'dados'),
  chip({ href: '/pt/docs/islands', color: 'primary' }, 'ilhas'),
)

Como botão

as muda o elemento, para um filtro que alterna em vez de navegar.

stack({ direction: 'row', gap: 'sm', wrap: true },
  chip({ as: 'button', variant: 'solid', color: 'primary', 'aria-pressed': 'true' }, 'Tudo'),
  chip({ as: 'button', variant: 'outline', color: 'neutral', 'aria-pressed': 'false' }, 'Guias'),
  chip({ as: 'button', variant: 'outline', color: 'neutral', 'aria-pressed': 'false' }, 'Exemplos'),
)

Numa tabela

PáginaEstado
/ok
/docsok
/blog/[slug]falhou
table({
  striped: true,
  columns: [
    { key: 'page', header: 'Página' },
    { header: 'Estado', align: 'end', render: (row) =>
      chip({ size: 'sm', dot: true, color: row.ok ? 'success' : 'danger' }, row.ok ? 'ok' : 'falhou') },
  ],
  rows: [
    { page: '/', ok: true },
    { page: '/docs', ok: true },
    { page: '/blog/[slug]', ok: false },
  ],
})

Props

PropTipoPredefiniçãoDescrição
color'primary' | 'neutral' | 'success' | 'warning' | 'danger''neutral'De que paleta bebe.
variant'soft' | 'outline' | 'solid''soft'Quanto peso o chip carrega.
size'sm' | 'md' | 'lg''md'Espaçamento e tamanho do texto.
hrefstring—Desenha uma âncora.
dotbooleanfalseAcrescenta um ponto de estado antes da etiqueta.
asstring'span'Elemento a renderizar quando não há href.