Card
Uma superfície para agrupar conteúdo, com três variantes, mídia de ponta a ponta, raios concêntricos e links no card inteiro.
pnpm dlx shadcn@latest add https://hextaui.com/r/card.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react class-variance-authority cnCopie e cole o código a seguir no seu projeto.
components/ui/card.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Variantes
default fica sobre um anel fino com uma sombra suave, outline remove o preenchimento e a sombra, e muted usa uma superfície preenchida para seções mais discretas.
Tamanhos
size="sm" reduz o espaçamento, o raio e o tamanho do título em conjunto, para que um card compacto ainda pareça da mesma família. size="flush" remove o espaçamento interno para layouts personalizados, como listas e linhas recolhíveis que trazem o próprio padding.
Mídia
Uma imagem, vídeo, picture ou aspect ratio colocado no início ou no fim vai de ponta a ponta. O card remove o padding daquele lado e recorta a mídia nos seus cantos.
Card clicável
Coloque um <CardLink /> no título para transformar o card inteiro em um único link. Botões e outros controles dentro dele continuam clicáveis e mantêm o próprio foco, como a estrela aqui.
Variants clicáveis
Cada variant ganha o próprio feedback ao passar o mouse quando contém um link, e o anel de foco envolve o card inteiro quando o link recebe foco pelo teclado.
Bordas
Adicione border-b ao header ou border-t ao footer e o card adiciona o padding correspondente no lado interno.
Aninhado
Um card dentro de CardContent deriva seu raio do raio do pai menos o espaçamento, então os cantos permanecem concêntricos.
Conteúdo longo
Títulos sem quebra, URLs longas, emoji e texto CJK são quebrados dentro de um card estreito em vez de alargá-lo.
Semântica
Cada parte aceita uma prop render, então um card pode ser um <article> com título, header e footer reais.
Da direita para a esquerda
A ação vai para o início da linha e o rodapé segue a direção de leitura.
Um card não é focável por conta própria. Estas teclas se aplicam quando ele contém um <CardLink />.
| Tecla | Ação |
|---|---|
| Tab | Foca o link do card, o que desenha o anel de foco em volta do card inteiro, e depois passa para cada controle dentro dele. |
| Enter | Segue o link do card. |
- O nome acessível do link é o próprio texto dele, então mantenha
<CardLink />dentro do título em vez de envolver o card inteiro em um âncora. - Os controles dentro de um card clicável ficam acima da área de clique do link, então continuam acessíveis por ponteiro e teclado.
- Use
renderem<CardTitle />para dar ao título o nível de heading adequado à sua página.
Cada parte renderiza um <div> por padrão, aceita seus atributos e recebe uma prop render para trocar o elemento.
| Prop | Tipo | Padrão |
|---|---|---|
variant | "default" | "outline" | "muted" | "default" |
sizeEscala o espaçamento, o raio e o tamanho do título em conjunto. | "default" | "sm" | "flush" | "default" |
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card" | Selecione o card no CSS. |
data-variant | A variante atual. |
data-size | O tamanho atual. |
data-link | Presente enquanto o card contém um CardLink. |
--card-spacing | Espaçamento interno compartilhado por todas as partes. Definido pelo size. |
--card-radius | Raio dos cantos. Cards aninhados derivam o seu do pai. |
--card-title-size | Tamanho da fonte usado por CardTitle. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card-header" | Um grid que coloca CardAction no canto superior final. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card-title" | Seleciona o título. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card-description" | Seleciona a descrição. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card-action" | Ocupa as linhas do título e da descrição, acima da área de clique de um CardLink. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card-content" | Repassa o raio e o espaçamento do card para os cards aninhados. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="card-footer" | Seleciona o rodapé. |
| Prop | Tipo | Padrão |
|---|---|---|
href | string | – |
renderPasse aqui o componente de link do seu router. | ReactElement | (props, state) => ReactElement | <a> |
| Atributo | Descrição |
|---|---|
data-slot="card-link" | Estende sua área de clique sobre o card inteiro. |
- AvatarFotos de usuário com fallback de iniciais, badges de status e grupos empilhados que se recolhem em uma contagem.
- BadgeRótulos de status com pontos coloridos, tags removíveis que deslizam até fechar e contagens que rolam até o novo valor.
- ChartGráficos do Recharts com cores do tema, um tooltip e uma legenda que leem os rótulos de uma única configuração, e navegação por teclado com um anel de foco visível.
- Data tableUma tabela para dados reais, com ordenação, busca, seleção de linhas, colunas fixadas, cabeçalho fixo e paginação.
- ItemUma linha de mídia, texto e ações para listas, configurações e seletores, com uma superfície agrupada e um destaque de hover que desliza entre as linhas.
- KbdTeclas para atalhos que mostram os símbolos certos em cada plataforma, são lidas corretamente por leitores de tela e afundam com as teclas reais.
Usado em blocos
Blocos que se baseiam em Card.
- Code BlockBlocos de código feitos para respostas de IA. Realce de sintaxe que acompanha o streaming, copiar, baixar e quebra de linha, números de linha e linhas destacadas, diffs com aceitar e rejeitar e um terminal para comandos.
- Diff ReviewRevise as edições de um agente em vários arquivos antes que sejam aplicadas. Uma árvore de arquivos com contagens, aceite ou rejeite cada mudança, cada arquivo ou tudo de uma vez, comentários em qualquer linha ou intervalo que voltam para o agente, visões unificada e dividida, destaques por palavra, desfazer, edições em streaming e um resumo "4 arquivos editados" para o chat.
- Tool CallsMostre o que um agente faz, uma linha por etapa. Leituras e buscas se dobram em um resumo curto, enquanto edições, comandos, aprovações e erros permanecem à vista. Cada etapa se abre em uma visão real: o arquivo, o diff, o terminal ou os resultados. Todos os estados de ferramenta do AI SDK são cobertos, incluindo aprovações com a opção de dar um motivo.