Componentes

158 entradas de @cortex-intelligence/ui e @cortex-intelligence/charts, com as variações declaradas nas stories de cada componente — a mesma fonte que o build valida.

Ações16

Componentes para disparar ações e comandos — botões, menus de contexto e paleta de comandos.

Grupo de botões de açãoActionButtonGroup

Empilha ações sugeridas depois de uma resposta, para escolher em vez de digitar.

Default
In Context

Botão de açãoActionButton

Botão de destaque com superfície em gradiente cintilante e chevron que avança no hover.

Default
Disabled
In Context

Escolhas do agenteAgentChoicesDisponível para o agente

Conjunto de opções clicáveis que o agente oferece quando a resposta depende de uma decisão da pessoa. Clicar reenvia o id da opção como próxima mensagem — não é visualização, é uma pergunta.

Default
Com legendas
Uma opção

BotãoButton

Variantes, tamanhos, tamanhos de ícone e estados do componente de botão.

Primary
Secondary
With Leading Icon
With Trailing Icon
Icon Only
Disabled
Sizes
All Variants
Success Cta

O CTA de CONVERSÃO — o verde de "fale com a gente", não o roxo da ação do produto. Aqui o verde é semântica (a ação favorável), então sai do par `success`/`success-foreground`, que já vem com AA medido nos dois temas: no claro o fill fica no passo 700 justamente para carregar texto branco, porque o 500 dá 3,35:1 e reprova.

Botão de íconeIconButton

Botão quadrado só com ícone, com estado ativo — o ícone herda a cor do texto.

Default
Active
Disabled
Group (as in SideMenu)

Seletor de idiomaLanguageSwitcher

Menu suspenso icon-first (globo) com grupo de rádio para trocar o idioma ativo.

Default
Rail estreito (abre à direita)

Paleta de comandosCommand

Lista de comandos pesquisável com grupos, atalhos e separadores.

Default

Botão (legado)LegacyButton

Botão da geração shadcn, mantido enquanto as telas migram para o Button em Base UI.

Default
Outline
Secondary
Ghost
Destructive
Disabled
Sizes
All Variants

Alternador de temaThemeToggle

Botão que alterna entre os temas claro e escuro da aplicação.

Default

Seletor de opçãoOptionSwitcher

Menu suspenso icon-first com grupo de rádio para escolher uma entre N opções. O ícone e todos os rótulos vêm por prop — é a base do seletor de idioma e do seletor de conta da rail.

Default
Com Outro Icone

Card de painelPanelCardDisponível para o agente

Card que, clicado, abre uma view já disponível no painel lateral do host — ex.: o perfil detalhado de um concorrente citado na conversa. Não é visualização, é um atalho para algo que já existe na tela.

Default
Com destaque

Botão SSOSsoButton

Botão de login com provedor da organização, com ripple ao clicar.

Default
Disabled
Login Card

Botão contador do cabeçalhoThreadCounterButton

Botão de ícone com um selo de contagem opcional sobreposto, para o cabeçalho do chat. O glifo é do chamador (`icon`, default raio) e a superfície tem duas formas: `chip`, com o retângulo claro atrás, e `bare`, sem nada atrás — igual ao sino ao lado. Sem contagem, o selo não aparece. O painel que ele abre é implementado separadamente.

Default
Sem threads (selo oculto)
Contagem estourada
Ativo (menu aberto)
Disabled
Glifo do chamador
Superfície nua (sem chip)
Par por tema (claro × escuro)

Formulários15

Campos de entrada, controles de seleção e blocos para composição de formulários.

Entrada de chatChatInput

Campo de conversa com a Concierge. `variant` escolhe entre o painel amplo (desktop) e a pílula que expande ao toque (mobile).

Default

Superfície desktop, o padrão. Enviar só habilita quando há texto; os nomes acessíveis dos controles vêm de `labels`.

Custom Placeholder
On Dark Chrome
Recording

O microfone fica ativo e a digitação é bloqueada. `labels.stopRecording` é opcional — sem ele o nome não muda e quem comunica o estado é o `aria-pressed`.

Preparing

O intervalo entre o clique no microfone e a captura existir — permissão, segredo, socket. O spinner fica no MICROFONE, e a digitação continua LIBERADA (ao contrário de `recording` e `transcribing`): a permissão pode levar segundos, e travar o campo nesse intervalo pune quem só quis clicar.

Interim Transcript

A transcrição PROVISÓRIA, em cinza. É uma camada sobre o campo, não o valor dele: não pode ser submetida, não rouba clique e não é anunciada a leitor de tela. Ela é desenhada na posição do cursor, pelo mesmo cálculo que a inserção final usa — as duas concordam por construção.

Transcribing

O intervalo entre parar a gravação e o texto aparecer. Compare com `Sending`: o spinner fica no MICROFONE, onde a pessoa acabou de clicar, e o ícone de enviar continua sendo o de enviar — trocá-lo diria 'sua mensagem foi enviada', quando nada foi enviado.

Sending

Um turno rodando, sem `onStop`: a digitação continua liberada (mudou em 02/09/2026 — antes `sending` desabilitava tudo) e o botão segue sendo enviar, como antes da fila (compat).

Sending With Stop

Campo vazio → PARAR. Digite algo → volta a ser enviar. Envie (o campo esvazia) → PARAR de novo. `labels.stop` é o nome acessível do botão nesse estado.

With Queue

A fila mora ACIMA do campo, e não na trilha da conversa: enquanto pendentes, essas mensagens ainda vão acontecer, e misturá-las ao que já aconteceu apagaria essa diferença. Cada item mostra um chip por arquivo anexado — descartar o item descarta os arquivos junto.

Dictation
Mobile

Pílula de 56px que expande em posição ao ser tocada, fechando de novo ao tocar fora enquanto está vazia. Não tem os estados `recording`/`sending` nem o seletor de arquivo — o compilador recusa essas props aqui.

Mobile With Actions

Clipe e microfone só viram botões quando recebem callback. Sem ele são decoração (`aria-hidden`), fora da ordem de tabulação — um controle focável que anuncia uma ação inexistente é pior do que glifo nenhum.

Mobile In Phone Frame
On Brand Background

Caixa de seleçãoCheckbox

Caixa de seleção para opções booleanas independentes.

Default
Checked
Disabled

Seletor de corColorPicker

Seletor de cor sólida com suporte a alfa, presets e popover.

Default
Com Alpha
Com Presets
Modo Gradiente
Popover
Controlado
Todas Funcionalidades
Embutido
Desabilitado

Seletor de dataDatePicker

Seletor de data única, período ou granularidades como mês e ano.

Default
With Value
Range
Month Granularity
Quarter Granularity
Year Granularity
With Bounds
Disabled
Prefilled Range
Range Month
Range Quarter
Range Year
Custom Format
English Locale
Week Starts On Monday
Controlled External Reset

Área de uploadFileDropzone

Área de upload por arraste ou clique, com lista de arquivos.

Default
Images Only
With Existing Files
With Error
Empty
Disabled
Large List
With Progress Reporting
Pdfs Only
With Rejections
With Thumbnails
Single File Replace

Seção de formulárioFormSection

Agrupa campos relacionados sob um título, com variantes de destaque.

Default
Full Form
Divider
Divider Full Form

Campo de textoInput

Campo de texto padrão para entrada de dados curtos.

Default
With Label
Disabled
Password
Pill
File Input

Grupo de campoInputGroup

Agrupa um input com ícones, textos ou botões adjacentes.

Default
With Button
With Text

RótuloLabel

Rótulo acessível para associar um texto a um campo de formulário.

Default
With Input

Seleção múltiplaMultiSelect

Seletor de múltiplas opções com busca e remoção por chip.

Default
With Preselected
Not Searchable
Disabled
Many Options

Campo de senhaPasswordInput

Campo de senha com botão para exibir ou ocultar o valor digitado.

Default
Without Toggle
Disabled

Editor de texto ricoRichTextEditor

Editor de texto rico com barra de ferramentas configurável.

Default
With Value
Minimal
Custom Groups
Read Only
Empty
Large
Only Headings
Only Align
Only Color
With Image
With Custom Sanitizer
Controlled Reset

Lista de seleçãoSelect

Seletor de uma opção entre uma lista, com variante simplificada.

Default
With Groups
Small
Simple Select Default
Simple Select With Placeholder
Simple Select Disabled

InterruptorSwitch

Alternador para ligar ou desligar uma configuração.

Default
Checked
Small
Disabled

Área de textoTextarea

Campo de texto multilinha para descrições e comentários.

Default
With Label
Disabled

Display46

Componentes para exibir status, conteúdo e estruturas hierárquicas na interface.

Item de lista de açãoActionListItemDisponível para o agente

Linha de lista de IA com superfície em gradiente cintilante e ícone de destaque.

Default
Green Tone
With Actions
Without Icon
Linha inerte (sem onClick)
List

Mensagem do agenteAgentMessage

Resposta do agente no chat: texto do AIMessage mais indicador de streaming e slot de artefato — os dois blocos que um parágrafo não pode conter.

Default
Com markdown
Streaming (sem texto ainda)
Streaming (com ícone de atividade)
Streaming (texto chegando)
Streaming (atividade + texto)
Com trilha de etapas
Turno em curso: resposta + trilha
Turno encerrado: trilha recolhida
Trilha + indicador de turno
Com artefato
Com indicador de turno

Hub de orquestraçãoAgentOrbit

Um núcleo com a marca e os especialistas que ele aciona, ligados por conectores tracejados. Abaixo de `sm` vira uma órbita de verdade, com metade dos chips acima e metade abaixo; acima, duas colunas com o conector crescendo até o centro. Não carrega palavra nenhuma: nomes, rótulo do núcleo e ícones chegam como props.

Six Specialists

Os seis do desenho. O fundo claro faz parte da story, não do componente — ele é transparente e serve a qualquer superfície.

Odd Count

Com número ímpar, o extra fica à esquerda — nenhum nó é perdido. O componente não fixa seis; a órbita compacta repete o leque quando passam disso.

Mensagem da IAAIMessage

Resposta do assistente como parágrafo sem bolha; só a última de uma sequência recebe margem.

Default
Long Text
Stacked

Bolha de áudioAudioBubble

Bolha de áudio com forma de onda e play/pause, para mensagens de voz no chat.

Default
Custom Label

AvatarAvatar

Avatar com imagem ou iniciais, em tamanhos variados e agrupamento sobreposto.

Default
With Image
Sizes
Tones

`soft` (padrão) é o realce claro; `brand` é o gradiente da marca do avatar de persona/usuário. Cada tone fecha o par fundo + texto — não troque só o fundo por `className`, é assim que aparece branco sobre roxo claro.

Group

Régua de faixasBandedScaleDisponível para o agente

Régua de faixas coloridas com marcador (ex.: NPS de −100 a +100).

Nps Scale
Without Marker

Cartão de chatChatCard

Cartão destacado no fluxo da conversa, arrastável para revelar a ação por trás.

Modulo
Modulo — direction=from

`direction="from"` é para quando o usuário acabou de chegar a este módulo vindo de outro — a seta aponta para a esquerda e fica antes do ícone/título/subtítulo, em vez de depois. O texto ("Veio de..." em vez de "Ir para...") é responsabilidade de quem usa o componente, via `title`/`sub`.

Drawer
Drawer Active

`active` reflete o estado `open` do `SideDrawer` correspondente — aplique enquanto a gaveta estiver aberta e remova quando ela fechar.

Uso real — pareado com SideDrawer (clique de novo no card ativo fecha)

O card nunca abre a gaveta sozinho — o app é quem liga `active`/`onActivate` ao `open`/`onOpenChange` do `SideDrawer`. Um clique no card fechado abre; um clique no card já ativo fecha (mesmo efeito do X interno do SideDrawer).

Without Sub
All Variants
Com eyebrow e descrição

`label` (eyebrow) e `description` são linhas próprias, em de-ênfase, entre o título e a chamada (`sub`) — os cartões de roteiro do Concierge carregam os três, e colapsar dois deles em um perde conteúdo do script.

Marcador de item cumpridoCheckBullet

Disco com ✓ para listas de checagem — ocupa o mesmo espaço marcado ou não, então a lista não pula.

Checked
In AList

Desmarcado, o ✓ fica invisível mas continua ocupando espaço — a lista não pula ao marcar. A cor vem do consumidor porque nas listas de origem ela codifica domínio (oportunidade × sensibilidade).

Pulso do diaDailyPulseDisponível para o agente

A tela de abertura do Flash Temático: como está o noticiário hoje — a pauta do dia com o tom da cobertura — e os assuntos que a pessoa pode explorar, um card por vez, cada um com um botão que inicia a exploração. É uma tela inteira, não um indicador: emita uma vez por turno e nunca dentro de um painel.

Default
Dia crítico
Sem leitura do dia

Faixa do ecossistemaEcosystemBandDisponível para o agente

A faixa clara que fecha a peça: manchete, o rótulo do recorte, o corpo, o diagrama de orquestração (`AgentOrbit`, que ela compõe em vez de redesenhar) e um convite para falar com o time. O CTA é um LINK — e é isso que mantém o kind fora da categoria interativa, que seria filtrada do catálogo de painel.

Report Invitation

Cartão expansívelExpandableCard

Card cujo corpo colapsa atrás de +/−, com cabeçalho sempre visível e uma faixa de resumo opcional que permanece nos dois estados.

Default
Without Summary
One Open At ATime

Frase de destaqueHeadlineDisponível para o agente

A frase que titula um bloco de gráfico, montada de segmentos: cada pedaço pode ser realçado como medida, veredito positivo/negativo ou destaque, e o resto fica em texto corrido.

Sentiment
Peak
Muted Verdict
Search Width
Eyebrow
Hero Tone

`tone="hero"` é a MESMA frase usada como abertura de uma peça inteira, em corpo de display — troca corpo, entrelinha e tracking juntos, que é por que é um tom e não três classes copiadas pelo consumidor. `HeroBand` o compõe junto do gradiente e do topo em duas pontas; avulso, ele serve a qualquer abertura que não precise da faixa.

Section Tone

`tone="section"` abre uma SEÇÃO, um degrau abaixo da capa: sai da escala de display do DS (`--text-display-xl`, 30px) e — diferente do `hero` — não salta no `sm:`, porque uma abertura de seção divide a linha com o gráfico que explica e 36px em meia grade estouram a coluna. `SectionLead` o compõe junto do rótulo e do parágrafo.

Faixa de capaHeroBandDisponível para o agente

A capa de uma peça de leitura: uma faixa com gradiente próprio carregando quem fala, o contexto à direita, a frase de abertura em display, o rótulo da leitura e o parágrafo. É um componente — e não quatro blocos numa grade — porque a grade posiciona blocos e não pinta fundo, e porque as quatro partes têm um ritmo entre si que cada consumidor recriaria à mão.

Report Cover
Sentence Only

Sem eyebrow e sem aside, a linha do topo não é desenhada — a faixa não reserva espaço para o que não existe. Os rótulos e o parágrafo são todos opcionais; só a frase é obrigatória.

Navegador de picosHistWaveDisponível para o agente

Navegador interativo de picos históricos (arraste, roda e teclado).

Default

Ladrilho de íconeIconTile

Superfície quadrada, arredondada ou circular para abrigar um ícone, uma inicial ou um índice.

Default
Sizes

xs e sm existem para os tiles que carregam um número (posição num ranking, etapa), não um ícone.

Shapes
Tones
Product Color

`tone="none"` + `className` para uma cor que não existe como token do DS — é como os webapps aplicam a paleta da própria oferta sem pedir uma variante nova ao pacote.

Next To Text

Baralho de insightsInsightCardDeckDisponível para o agente

Cartões de insight arrastáveis — deslize para avançar para o próximo da pilha.

Default
Custom Insights
Title First
White Tone
Fluid Fit
Badge First
Long Recommendation
All Default Insights

Chip de classificaçãoInsightChip

O vocabulário FECHADO com que o analista classifica uma recomendação — vermelho é risco a agir agora, laranja é sensibilidade a acompanhar, verde é oportunidade, roxo é assunto neutro, cinza é o não classificado. Cada variante é um par de superfície do DS com contraste AA verificado nos dois temas; o modelo emite o NOME da classificação e o design system decide a cor.

Filled

Preenchido é o chip do `InsightCardDeck`: ali ele é o único elemento colorido de um card branco e precisa do peso do preenchimento.

Outlined

Contornado é o chip do `RecommendationList`: numa lista de quatro linhas, quatro pastilhas preenchidas competem entre si e com o texto que importa. O texto é o MESMO passo do par nas duas superfícies — o contorno o reusa por `currentColor`.

AcordeãoAccordion

Lista de painéis expansíveis para organizar conteúdo em seções.

Default
Multiple

SeloBadge

Rótulo compacto para indicar status ou categoria.

Default
Secondary
Destructive
Outline
Ghost
All Variants

CartãoCard

Superfície de conteúdo com cabeçalho, corpo e rodapé opcionais.

Default
Small
With Action
Shadow
Glass
Hoverable
With Footer Actions

Área de rolagemScrollArea

Área com rolagem customizada para listas e conteúdos longos.

Default

SeparadorSeparator

Linha divisória horizontal ou vertical entre conteúdos.

Horizontal
Vertical

Dica simplesSimpleTooltip

Wrapper simplificado de tooltip para textos curtos de ajuda.

Default
Sides

Esqueleto de carregamentoSkeleton

Placeholder animado para indicar carregamento de conteúdo.

Default
Card
Profile Loader

Indicador de carregamentoSpinner

Indicador de carregamento circular em diferentes tamanhos.

Default
Small
Large
All Sizes

AbasTabs

Navegação por abas para alternar entre visões de conteúdo relacionado.

Default
With Icons
Closable
Closable With Icons
Segmented

As abas viram botões dentro de uma cápsula. A borda inferior some: duas afordâncias de “aba ativa” ao mesmo tempo competem — aqui quem marca é a pílula clara atrás do rótulo.

EtiquetaTag

Etiqueta colorida para marcação e classificação de itens.

Default
All Colors
Pill
All Colors Pill

Dica contextualTooltip

Dica contextual exibida ao passar o mouse sobre um elemento.

Default
Positions

ÁrvoreTree

Estrutura hierárquica navegável com expansão, seleção e itens desabilitados.

Default
With Selection
With Icons
Disabled
Empty
Lazy
Large Dataset
Controlled Expansion
Custom Render Label
Lazy Error
Deep Nesting

Ponto de legendaLegendDot

Ponto colorido que liga uma série do gráfico ao seu rótulo — a cor vem do dado, não de um token.

Default
Legend

`color` é prop e não variante: em legenda a cor é DADO — vem da paleta da série e muda a cada dataset, então não há classe Tailwind para ela.

Sizes

MarkdownMarkdownDisponível para o agente

Renderiza markdown sanitizado (rehype-sanitize) com estilo prose e extensões GFM (tabela, riscado, lista de tarefas).

Default
With Class Name
Extensões GFM

Bloco de métricaMetricTileDisponível para o agente

Tile de métrica: valor grande, rótulo e variação opcional (alta/baixa).

Default
With Up Delta
With Down Delta
With delta + trailing sentence
Row
Label On Top

`labelPosition="top"` sobe SÓ o rótulo, via `order-first` — inverter o bloco inteiro levaria o delta textual junto. A ordem no DOM não muda, então a leitura assistiva também não.

Delta As Badge

`deltaVariant="badge"` põe a variação como pílula ao lado do valor. A seta some: dentro da pílula, cor e sinal já dão a direção.

Delta Badge Below

`deltaPosition="below"` põe a pílula numa linha própria embaixo do número — a anatomia dos três cards de cabeçalho do Flash Temático, onde a leitura é rótulo, número e variação, uma coisa por linha. Ao lado do número (o default) é o que cabe na faixa de indicadores, onde o espaço horizontal é o que sobra.

Inside Another Card

`surface="none"` tira fundo e padding para o tile compor dentro de um card que já os tem — é como o Pulso monta o cabeçalho do gráfico combinado.

With Sparkline

`children` cai abaixo da métrica — o slot onde os tiles de tendência encaixam um sparkline. O bloco cinza aqui é um marcador; no app é um `TrendAreaChart`.

Extra Small

Selo de notificaçãoNotificationBadge

Contador circular pequeno, com limite configurável e uso sobre ícones.

Default
Capped
Custom Max
Variants
On Icon

Faixa de argumentoPitchBandDisponível para o agente

A faixa escura que fecha uma peça de leitura: manchete em duas linhas, uma afirmação, um grid numerado do que o produto faz e um fecho em dois pesos. Existe como componente porque markdown não expressa nada disso — e porque a grade posiciona blocos e não pinta fundo.

Report Closing
Three Items

O grid não fixa cinco: com três, o ímpar sobra na primeira coluna. O ordinal chega FORMATADO — zerar à esquerda é decisão de locale, não de layout.

Lista de recomendaçõesRecommendationListDisponível para o agente

As recomendações do analista como lista: uma linha cada, o chip da classificação contornado à esquerda, a frase à direita, divisórias entre elas. Mesmo conteúdo e mesma classificação do `InsightCardDeck`, leitura oposta — o baralho mostra uma por vez e serve a uma gaveta de conversa; a lista mostra todas e serve a uma peça que se lê de cima a baixo, se compartilha e se imprime.

Analyst Recommendations
Without Title

Sem título, para quando o bloco já está sob um cabeçalho. As cinco variantes são o mesmo conjunto FECHADO do baralho — o modelo classifica e o design system decide a cor, nunca o contrário.

Barra de scoreScoreBarDisponível para o agente

Barra de progresso/score 0–100 com variantes semânticas.

Default
Variants
No Label

Abertura de seçãoSectionLeadDisponível para o agente

A frase em corpo de display que abre uma seção de uma peça de leitura, com as palavras medidas realçadas, um rótulo miúdo em caixa-alta embaixo e um parágrafo opcional. Existe porque o `headline` titula um gráfico em `text-sm` e a moldura da grade não desenha nada maior — sem ele, cada seção fica pequena demais ou o app copia as classes à mão.

Sector Topics

A metade esquerda de uma seção: a frase ocupa seis colunas e o gráfico que ela explica ocupa as outras seis. É por isso que o corpo NÃO salta no `sm:` como o da capa — 36px estouram meia grade.

With Label

Com rótulo: a linha miúda em caixa-alta nomeia o recorte que o gráfico abaixo mostra. Ela é o mesmo slot que a `HeroBand` usa para o rótulo da leitura — as duas compõem este componente.

With Body

Rótulo e parágrafo são opcionais; só a frase é obrigatória. O parágrafo aceita nó pronto — quem monta o dado é quem interpola e formata os números.

Hero Tone

`tone="hero"` é o degrau da CAPA, e é o que a `HeroBand` passa ao compor este componente — a faixa acrescenta só o gradiente e o topo em duas pontas. Avulso, ele serve a uma abertura de peça que não precise da superfície.

Card de etapaStepCard

Card de etapa concluída (anel de progresso) — narra o progresso de uma configuração em andamento. Puramente visual, sem afordância de clique.

Default
Ultima Etapa

Bolinhas de etapaStepDots

Stepper de bolinhas com etapa atual, concluídas e futuras.

Default
Clickable
Progression

Anel de etapasStepRing

Anel de progresso segmentado (etapas concluídas × total).

Default
Progression
With Label

Timeline de etapasStepTimeline

Timeline vertical numerada de um setup guiado: cada etapa mostra posição, nome e o que produziu, e lê como concluída, atual ou pendente. O estado vem de um único contador `done`.

Default
No Inicio
Concluido

Card de sínteseSynthesisCardDisponível para o agente

Leitura curta do analista, exibida logo após o processamento de um tema — ícone + título + texto corrido.

Default
Custom Title
Plain
Outlined
Without Icon

Linha do tempoTimeline

Sequência de acontecimentos com horário e título, cada item com detalhe opcional.

Default

É um `<ol>`: a ordem é a informação. O traço vem de uma borda no próprio `<ol>`, então não para no penúltimo item nem sobra depois do último.

Texto com reticênciasTruncatedText

Texto de uma linha com reticências e tooltip que só aparece quando o conteúdo está realmente cortado.

Cortado
Cabe Sem Tooltip
Numa Tabela

Mensagem do usuárioUserMessage

Bolha da fala de quem escreve: canto inferior direito achatado, largura ajustada ao conteúdo.

Default
Long Text

Feedback11

Alertas, notificações e diálogos para comunicar estado, confirmações e mensagens ao usuário.

Trilha de etapas do agenteAgentSteps

As etapas de um turno do agente, na ordem em que começaram, cada uma com o seu estado. Recolhe num resumo reabrível quando o consumidor pede — no chat, ao fim do turno.

Cadeia em andamento
Etapa única (produtor sem id)
Com etapa corrente sem id
Colapsada
Com etapa em erro

Estado vazioEmptyState

Empty-state calmo com ícone, título e descrição para áreas sem conteúdo.

Default
No Icon
Compact

`size="sm"` para o vazio de UMA LISTA — dentro de um modal ou gaveta, onde o bloco padrão (py-16, título extrabold) viraria um cabeçalho no lugar de uma nota.

AlertaAlert

Banner inline para mensagens de informação ou erro, com ação opcional.

Default
Destructive
With Action

Modal de confirmaçãoConfirmDialog

Modal de confirmação pronto, com variantes destrutiva, aviso e informação.

Default
Destructive
Warning
Loading
Info Variant

ModalDialog

Modal para formulários e confirmações que exigem foco total do usuário.

Default
Without Close Button
Fullscreen

Ocupa a viewport inteira, para conteúdo que não cabe numa caixa centrada. Sobe acima da camada de sobreposição comum (`z-50`), porque tela cheia significa que nada do chrome da aplicação fica por cima — e estabelece um containing block, então um filho `position: fixed` fica preso ao modal.

Painel flutuantePopover

Painel flutuante ancorado a um gatilho, para edições rápidas e contexto adicional.

Default

Painel deslizanteSheet

Painel deslizante ancorado às bordas da tela, para formulários e navegação.

Default
Left Side

NotificaçãoSonner

Notificações temporárias (sonner) para sucesso, erro, aviso, info e carregamento.

All Types
With Description
With Action

Indicador de streamingStreamingIndicator

Sinal de que a resposta ainda está sendo produzida — atividade nomeada enquanto há trabalho em curso, cursor enquanto há texto chegando. Os dois convivem.

Activity

O que o agente está fazendo agora — vale durante todo o turno, inclusive com a resposta já sendo escrita (quem compõe desenha esta forma acima do texto). O texto é informação, não fica `aria-hidden`.

Cursor

Sem nada a anunciar: só o cursor no fim da linha, decorativo.

Marca em movimentoThinkingIcon

A marca Cortex pulsando — o sinal de que o agente está trabalhando. Autocontida: os keyframes e o fallback de movimento reduzido vêm dentro do próprio SVG. Em `state="idle"` é a mesma marca parada.

Default

Decorativo por default (`aria-hidden`) — é assim que ele entra ao lado de um rótulo de atividade.

Sozinho

Sem rótulo visível ao lado, o ícone precisa de `label` para ser anunciado.

No Indicador De Streaming

O uso real: o ícone no slot `icon` do `StreamingIndicator`, com o micro-texto da atividade em curso ao lado.

Parado Em Movimento

Lado a lado é a única forma de a diferença ser visível no catálogo. O repouso é a marca ÍNTEGRA — mesma opacidade, mesma escala —, não uma versão apagada: o que muda é só o movimento.

Escalas

Trabalho em cursoTurnIndicator

Uma linha: marca, tempo, `·`, o que está sendo feito e as reticências que se escrevem. Parada em repouso, pulsando em atividade. Ao lado do `StreamingIndicator`, o par se lê assim: o cursor diz que TEXTO está chegando, este diz que TRABALHO está em curso.

Em Curso

O estado que a pessoa vê durante o turno: marca pulsando, o que está sendo feito e os segundos subindo. Um cronômetro sozinho conta sem dizer o quê.

Sem Atividade Nomeada

Enquanto o agente não nomeia o que faz, sobra a marca e o tempo. Aí o `label` entra como nome acessível — sem ele, um turno em curso seria invisível para leitor de tela.

Em Repouso

Terminado o trabalho, o tempo desaparece e sobra a marca parada — íntegra, não apagada. É o que mantém o símbolo na tela em vez de fazê-lo aparecer e sumir a cada turno.

Trabalho Longo

Trabalho em background passa de um minuto com frequência, e é o formatador de quem consome que decide a forma — aqui, minuto mais segundo em vez de "137 s".

Dados16

Componentes para exibir e manipular conjuntos de dados — tabelas, filtros, paginação e listas de seleção.

Card de empresaCompanyCardDisponível para o agente

Card de empresa do Radar de Reputação: indicadores do período com variação, relação com o tenant e quebras por veículo e por jornalista. Estático como renderable do agente, ou expansível no comparativo do onboarding.

Default
Concorrente
Sem impressões nem jornalistas
Expansível (comparativo)
Completo por dados (renderable)
Colunas do corpo em formatos diferentes

Lista de definiçõesDefinitionList

Pares rótulo/valor — empilhados como ficha de atributos, ou lado a lado como régua de indicadores.

Inline

A ficha de atributos: rótulo à esquerda, valor à direita.

Stacked

A régua de KPIs. Parece um grid de tiles, mas emite `dl`/`dt`/`dd`: a relação rótulo→valor fica na árvore, e um leitor de tela anuncia “Positivas: 312” como um par.

Selo de variaçãoDeltaBadge

Pílula de variação (alta/queda) comparando um valor com o período equivalente anterior.

Up
Down
Sem rótulo
With Custom Tooltip

Indicador de distribuiçãoDistributionTileDisponível para o agente

A categoria dominante escrita por extenso, com a distribuição inteira numa barra de 100% embaixo — a tonalidade predominante do Flash Temático. O componente elege o dominante pelo maior peso e ordena as faixas por papel (favorável → imparcial → desfavorável), para duas barras serem comparáveis entre si.

Tonalidade
Com Contagens
Sem Cobertura

Faixa de dominânciaDominanceBandDisponível para o agente

Duas dominâncias lado a lado numa faixa só, separadas por uma divisória vertical — o tópico setorial que liderou o período com a fatia que detém, e a tonalidade predominante com a distribuição inteira numa barra de 100%. A divisória não é um elemento: é a borda esquerda da metade direita, então corre a altura toda sem ninguém medi-la, e o respiro vem do padding de cada metade em vez de um vão entre elas.

Padrao

A segunda row do Flash Temático. As metades NÃO são simétricas de propósito: a esquerda lê de lado (nome e fatia no mesmo corpo, alinhados pela base) e a direita lê de cima para baixo (rótulo, palavra, barra), colorida pelo papel do tom.

Tom Critico
Sem Lider

Tabela de dadosDataTableDisponível para o agente

Tabela orientada a dados com seleção de linhas, ordenação, paginação, busca e filtros por coluna.

Default
Empty
Loading
With Entity Page
Redimensionavel

Cabeçalho de colunaColumnHeader

Cabeçalho de coluna do DataTable com menu de ordenação e opção de ocultar, ou apenas o título quando a coluna não é ordenável.

Ordenável
Não ordenável

Filtro de tabelaFilter

Popover de filtro por coluna do DataTable, com variantes de texto, data, número e seleção (incluindo busca remota) e opção de filtrar por valor nulo.

Texto
Data
Número
Seleção
Seleção com busca remota

Paginação de tabelaPagination

Controles de paginação do DataTable — navegação entre páginas, seletor de itens por página e botão opcional de atualizar.

Padrão
Com botão de refresh
Tamanhos de página customizados
Sem dados

Barra de ações da tabelaToolbar

Barra de busca com debounce acima do DataTable, com slots para ações à esquerda e conteúdo adicional à direita.

Com busca
Com busca e ações
Com busca, ações e filhos
Somente ações (sem busca)

Opções de exibiçãoViewOptions

Menu suspenso para exibir/ocultar colunas do DataTable, com rótulo do botão customizável.

Padrão
Label customizado

Lista selecionávelSelectionList

Lista de itens selecionáveis em formato de botões, com suporte a badges e estado desabilitado.

Default
With Badges
Tenants
Email Selection

TabelaTable

Tabela base para exibição tabular de dados, com variante horizontal para pares chave/valor.

Default
Horizontal

Faixa de indicadoresMetricStripDisponível para o agente

Dois a quatro indicadores dividindo UMA moldura — o cabeçalho do Radar de Reputação e do Flash Temático. Eles são distribuídos na largura da faixa (um em cada extremidade), quebram sozinhos quando ela aperta, e cada item pode trazer a pílula de variação.

Radar Header
Reading Piece Size

O default (`xs`, 20px) foi MEDIDO na gaveta de referência e continua certo lá. `size` existe porque a mesma faixa serve duas superfícies: ao lado de uma conversa, 20px é o certo; numa peça de leitura de largura inteira — um relatório que se compartilha e se imprime — o mesmo 20px lê como legenda. Trocar o default resolveria uma e quebraria a outra.

Narrow Container

Lista de termosTagListDisponível para o agente

Um card com uma nuvem de termos em pílulas — o vocabulário que a imprensa usou ao redor de uma pauta. Cada pílula é uma palavra ou uma expressão curta e NÃO carrega número: um termo não tem medida, e imprimir a frequência convidaria a ler a nuvem como ranking. As pílulas são o `Tag` do próprio pacote, no formato `pill`; o que este componente acrescenta é o embrulho — a superfície, o par título/subtítulo e a quebra de linha.

Padrao

O caso do Flash Temático: superfície roxa clara, título, linha de apoio e os termos em pílulas roxas, quebrando em quantas linhas forem necessárias.

Sem Cabecalho

Sem título, sem subtítulo e sem superfície — para quem embrulha o componente no PRÓPRIO card. Não é um modo que o agente possa pedir: o descritor não oferece `plain`, porque o dispatcher não desenha moldura nenhuma em volta deste kind e as pílulas sairiam soltas.

Card Neutro

A superfície neutra, para uma lista que não é o vocabulário medido da pauta. A cor da pílula é escolha de tema e nunca uma leitura do dado — um termo não é um veredito.

Ranking de entidadesTopEntitiesCardDisponível para o agente

Ranking textual "Top N" (fontes, jornalistas, porta-vozes) — nome, impressões, publicações e uma tag de tonalidade/impacto, com linha extra opcional.

Top Fontes
Top Jornalistas
Outlined

Gráficos41

Visualizações de dados sobre ECharts, temadas pelos tokens do design system e emitíveis pelo agente.

Combo barras + linhaComboBarLineChart

Duas séries em eixos Y independentes — as escalas nunca competem pela mesma amplitude.

Default

Donut com legendaDonutChart

Composição fechada do donut: paleta do DS e legenda ao lado, sem montar option.

Default

Donut + frase dominanteDonutStatCard

Donut pequeno, frase construída a partir da fatia de maior percentual e legenda completa.

Default

Evolução por tipo de impactoImpactEvolutionChartDisponível para o agente

Linhas com área para a evolução das impressões por faixa de impacto — sem eixo Y e sem grade, com a legenda de pontos embaixo. A cor vem do SIGNIFICADO da faixa (favorável/inerte/desfavorável), não da ordem em que a consulta devolveu as linhas.

By Impact

Tipo de impacto (empilhada)ImpactStackedBar

Mesma leitura da barra de sentimento, mas com o total de impressões de cada segmento no tooltip.

Default

Indicador com tendênciaMetricTrendDisponível para o agente

Um indicador e a sua própria série no MESMO card: valor grande, pílula de variação e uma sparkline com área embaixo. É a segunda faixa do Radar de Reputação — o que o distingue de um `metric` é justamente carregar a série do período.

Positivity
Sem série (vira indicador simples)

Ranking com valor na barraRankedBarsDisponível para o agente

Ranking horizontal com o RÓTULO à esquerda e o VALOR no fim da barra — a forma que o tipo `horizontal-bar` cru não alcança, porque ele desenha um eixo no rodapé e nenhum número por barra. Use quando a comparação é entre poucos itens nomeados e a pessoa deve ler a cifra, não medir a barra contra uma régua.

Sector Topics

`valueUnit="share"` imprime cada valor como porcentagem da soma das linhas desenhadas. A conta fica aqui, e não em quem monta o dado, porque precisa do total — que só existe quando todas as linhas estão em mãos.

Absolute

Sem `valueUnit`, o número sai como veio — a formatação é uma prop, para o pacote não cravar locale nenhum.

Sentimento (empilhada)SentimentStackedBar

Positivo/neutro/negativo em barra fina, com legenda textual opcional. Rótulos por prop; cores dos tokens semânticos.

Com legenda
Compacto, sem legenda (linha de lista)

Share of voiceShareOfVoiceBar

Barra única empilhada a 100% + legenda com percentual por segmento. A frase acessível e o locale entram por prop.

Default

Share of voice (rosa)ShareOfVoiceRoseDisponível para o agente

Rosa de Nightingale (coordenadas polares) com a participação de cada empresa no período — uma medida só, ou quebrada nas três camadas de impacto. Irmã em rosca polar do ShareOfVoiceBar.

Default
Por camada de impacto

Ranking horizontalTopSourcesBars

Barras normalizadas pelo maior valor, com formatação do valor por prop.

Default

Grafo de tópicosTopicsGraphChart

Grafo de força ligando tópicos setoriais (hub) a assuntos agrupadores (folha), dimensionados por volume.

Default

Sparkline de tendênciaTrendAreaChart

Linha suave + área, com rótulos de eixo e tooltip. `valueSuffix` destaca o último valor; `height` ajusta entre sparkline de tile e gráfico de leitura.

Default

Volume por períodoVolumeBarChart

Barras verticais de picos por período; os valores saem também numa lista sr-only como alternativa textual.

Default

LinhaEChartDisponível para o agente

Séries temporais com uma ou mais linhas — evolução de métricas ao longo do tempo.

Line

Inline compactoEChart

Mini-gráfico de barras sem o piso padrão de 200px de altura, para uso inline em cards estreitos.

Compact Inline

BarrasEChartDisponível para o agente

Comparação de valores entre categorias discretas.

Bar

Barras empilhadasEChartDisponível para o agente

Composição de uma categoria total dividida em subcategorias.

Stacked Bar

Barras horizontaisEChartDisponível para o agente

Comparação entre muitas categorias com rótulos longos (ranking).

Horizontal Bar

ÁreaEChartDisponível para o agente

Linhas com preenchimento, empilháveis para mostrar composição ao longo do tempo.

Area

PizzaEChartDisponível para o agente

Distribuição proporcional de um total entre categorias.

Pie

RoscaEChartDisponível para o agente

Como pizza, com centro vazio, útil para destacar um total central.

Donut

RosaEChartDisponível para o agente

Como rosca, mas com o RAIO de cada fatia proporcional ao valor — a diferenca entre categorias aparece duas vezes (angulo e raio), o que a mantem legivel mesmo com uma fatia dominante. E o grafico que o Radar de Reputacao usa para sentimento e protagonismo, com a cor vinda do significado de cada fatia (`colorField`).

Rose

DispersãoEChartDisponível para o agente

Relação entre duas variáveis numéricas a partir de pontos individuais.

Scatter

Dispersão com destaqueEChartDisponível para o agente

Dispersão com animação de onda para destacar pontos de interesse, como leads quentes.

Effect Scatter

Barras pictóricasEChartDisponível para o agente

Barras compostas por símbolos repetidos, dando um toque visual mais expressivo.

Pictorial Bar

Box plotEChartDisponível para o agente

Distribuição estatística (mínimo, quartis e máximo) de uma métrica por categoria.

Boxplot

CandlestickEChartDisponível para o agente

Variação de abertura, fechamento, mínima e máxima de uma métrica ao longo do tempo.

Candlestick

Mapa de calorEChartDisponível para o agente

Intensidade de uma métrica cruzando duas dimensões categóricas, com escala de cor.

Heatmap

RadarEChartDisponível para o agente

Comparação de múltiplas variáveis entre categorias em um layout radial.

Radar

MedidorEChartDisponível para o agente

Progresso de um indicador em relação a uma meta, em formato de velocímetro.

Gauge

FunilEChartDisponível para o agente

Redução de volume entre estágios sequenciais de um processo.

Funnel

ÁrvoreEChartDisponível para o agente

Estrutura hierárquica pai-filho exibida como uma árvore ramificada.

Tree

TreemapEChartDisponível para o agente

Composição hierárquica de um total em retângulos proporcionais ao valor.

Treemap

SunburstEChartDisponível para o agente

Hierarquia representada em anéis radiais concêntricos.

Sunburst

SankeyEChartDisponível para o agente

Fluxo e transferência de volume entre nós ao longo de etapas de um processo.

Sankey

GrafoEChartDisponível para o agente

Rede de nós e conexões, útil para mapear relacionamentos entre entidades.

Graph

Rio temáticoEChartDisponível para o agente

Evolução de múltiplas séries ao longo do tempo em faixas fluidas empilhadas.

Theme River

Coordenadas paralelasEChartDisponível para o agente

Compara vários segmentos em múltiplas métricas simultâneas, cada linha um segmento.

Parallel

MapaEChartDisponível para o agente

Mapa coroplético do Brasil por estado, com escala de cor por intensidade da métrica.

Map

Linhas de fluxoEChartDisponível para o agente

Trajetos animados sobre o mapa, para representar distribuição ou movimento entre praças.

Lines

Layout13

Estruturas de página — cabeçalhos, contêineres e composições de tela inteira.

Casca de aplicaçãoAppShell

Trilho de navegação à esquerda, coluna de conversa ao centro e gaveta acoplada à direita.

Default
Drawer Expanded

Tela de chatChatUI

Layout de conversa: cabeçalho fixo, histórico rolável ao centro e composer no rodapé.

Default
Com Notificacao
Cabeçalho — gatilho sem chip
Centered
Centered Two Thirds

Cabeçalho da aplicaçãoAppHeader

Cabeçalho fixo com menu lateral, ações de header e menu de perfil do usuário.

Default
Minimal Menu
With Theme Toggle
Localized Labels
Header Actions
Theme Toggle Before Actions
Custom Profile Menu Items
Profile Menu with Custom Content
Full Featured

Layout de autenticaçãoAuthLayout

Layout de autenticação com formulário e imagem lateral, ou variante single centralizada.

Default
Single

ContêinerContainer

Wrapper centralizado com largura máxima e padding lateral responsivo.

Default
With Content

Página de entidadeEntityPage

Página de entidade com cabeçalho, toolbar de busca/ações e tabela de dados.

Default

Layout de gestãoManagementLayout

Moldura das telas de administração: cabeçalho com título, ações e corpo em cartão.

Typical Form Layout
Multiple Cards

Moldura mobileMobileFrame

Moldura de telefone para pré-visualizar telas mobile da Concierge, com menu e navegação.

Default
Empty Chrome

Painel de notificaçõesNotificationPanel

Gaveta lateral aberta pelo sino de notificação do `ChatUi` — mostra um estado vazio por padrão, ou uma lista de itens (ex.: `ChatCard variant="modulo"`) quando há algo pendente.

Vazio
Com Notificacao

Gaveta lateralSideDrawer

Painel de vidro redimensionável por arraste, com alça que também expande e recolhe.

Default
Panel Heading
Panel Heading Scrolled
Scroll Reset On Content Change
Expanded
Tall Stage
Header fixo × rola com o conteúdo (fixedHeader)

`fixedHeader` (default `true`) escolhe se o título/botão de fechar ficam parados enquanto só o corpo rola, ou se rolam junto com o resto do conteúdo (`fixedHeader={false}`) — mesmo header, só muda onde ele é renderizado. Use os controles para alternar e role o painel para ver a diferença.

Controlado por botão externo (empurra o conteúdo)
Uso real — gatilho é um ChatCard (não um botão genérico)

Como este componente é usado na prática: sempre atrás de um `ChatCard` `variant="drawer"`, nunca de um botão genérico. Um `open` booleano no app dirige os dois — `active`/`onActivate` do card e `open`/`onOpenChange` da gaveta.

Com ações no cabeçalho
Conteúdo com cabeçalho próprio (hideHeader)
Reagindo à expansão (onExpandedChange)
Largura declarada pela tela (expanded)

Menu lateralSideMenu

Trilho de navegação com fluxos, itens e menu do usuário.

Default
Disabled and Hidden Items
With Preferences (theme + language)

Contêiner de slidesSlideContainer

Layout de slides com scroll-snap vertical e navegador de dots lateral.

Default