Frontends com Vibecoding · Capítulo 8 de 35 · 53 min
Construir componentes, usar o registro e publicar o catálogo
Você monta a primitiva acessível, organiza variantes e tokens, traz peças do registro para dentro do repositório e publica o catálogo com prova visual.
Este capítulo faz parte do curso gratuito Frontends com Vibecoding.
Exemplo: imagine que a empresa mudou sua cor principal. Uma biblioteca instalada pode permitir a troca pelo tema; um componente copiado pode exigir a edição de um arquivo do projeto. A questão é saber onde a regra está e quem responde por mantê-la.
Um componente é uma peça reutilizada da interface, como um botão ou um cartão. Ao escolher como obtê-lo, compare o que já vem pronto, a liberdade de adaptação e o trabalho de acompanhar correções. A demonstração visual ajuda a escolher, mas a equipe também precisa testar teclado, leitura e comportamento nas telas reais.
Você termina sabendo por que um botão deve existir uma vez só no código, o que é trazer um componente do registro para dentro do repositório e como cobrar do fornecedor um catálogo visual das peças. Tempo de leitura: cerca de 53 minutos, e o inventário de botões do site da empresa, mais 15.
Bibliotecas como Mantine e HeroUI oferecem mecanismos de tema e estilo para adaptar cores, espaços e componentes. Em geral, isso dispensa alterar o código da dependência. Já no modelo do shadcn/ui, o componente é copiado para o projeto: a equipe ganha controle direto e assume o acompanhamento das correções dessa cópia.
Uma primitiva sem estilo, como as oferecidas por Radix, Base UI ou React Aria, fornece comportamentos de base para montar a interface. A aparência pode seguir os tokens da marca, valores nomeados de cor, espaço e tipografia. Em todos os modelos, acessibilidade depende também da composição, dos rótulos e dos testes da tela pronta. Escolha pelo encaixe no projeto e pela capacidade de manutenção da equipe.
O shadcn/ui segue a recomendação padrão em React (a biblioteca mais usada para montar telas), e 2026 mostra o ritmo. Dependências unificadas no pacote radix-ui em fevereiro, CLI v4 em março, registries próprios com validação em maio, componentes de chat em junho e componentes React Aria em julho.
Ver como texto
Linha do tempo do shadcn/ui em 2026. Fevereiro: dependências unificadas no pacote radix-ui. Março: CLI v4. Maio: registries próprios com validação. Junho: componentes de chat. Julho: componentes React Aria.
Com o arquivo no seu repositório, o agente (a ferramenta de IA que escreve o código) muda uma variante ou corrige o foco sem esbarrar em código alheio. Abra o arquivo LICENSE antes de instalar qualquer peça: MIT e Apache 2.0 liberam uso comercial, e a checagem leva menos de um minuto.
Ver como texto
Três modelos de componente: biblioteca instalada em node_modules, componente copiado para o seu repositório e primitiva sem estilo que você mesmo veste
A primitiva decide o que é difícil: prender o foco no diálogo, devolvê-lo ao fechar, fechar com Esc e falar com o leitor de tela. O Base UI, do MUI, está estável desde dezembro de 2025, com Drawer e OTPField estáveis e a camada mais ativa de 2026. O Radix UI 1.6.7 virou pacote único, com o PasswordToggleField em prévia.
O React Aria lança peça todo mês e é a escolha quando teclado e leitor de tela são requisito de contrato, em governo ou finanças. Fora do React, a primitiva segue o framework (a base que organiza o código das telas). Ark UI com Zag.js, Headless UI, Melt UI, Bits UI e Kobalte cobrem React, Vue, Svelte e Solid.
Ver como texto
Anatomia de um diálogo montado sobre uma primitiva acessível, em cenário ilustrativo. A página ao fundo fica escurecida. Marcador 1: o Tab circula só dentro da janela, o foco fica preso. Marcador 2: Esc fecha a janela. Marcador 3: ao fechar, o foco volta ao botão que abriu. Marcador 4: o título é anunciado pelo leitor de tela.
Dois avisos de 2026. O Chakra UI v3 mantém Emotion como parte da estilização; suas recipes são inspiradas em Panda CSS, e a migração da v2 muda APIs e composição. Compare o inventário de componentes, o suporte e o esforço de testes antes de migrar ou escolher outra biblioteca. O HeroUI v3 está em beta, e o daisyUI segue com classes semânticas e mais de 30 temas sem JavaScript.
O Web Awesome 3.0, ex-Shoelace, foi rebatizado pela Font Awesome com núcleo gratuito, e o repositório antigo foi arquivado em 14/05/2026. É a escolha para Web Components puros (as peças que rodam sem framework nenhum), quando o site precisa durar mais que o framework da vez.
Kits de blocos montam a página inteira sobre o shadcn. Origin UI traz primitivas neutras, Magic UI marketing animado e Aceternity UI efeito visual. Shadcn Blocks soma 193 blocos até agosto, 21st.dev é um registry com o Magic MCP para o agente instalar, e Tremor Blocks cobre painéis.
O risco é o kit de cartões SaaS que a skill frontend-design lista como padrão genérico. Cartões idênticos, um raio de canto para tudo e a mesma sombra cinza embaixo de cada um. Peça o bloco e depois peça a hierarquia de volta: o cartão que importa maior, o resto quieto.
Ver como texto
Comparação entre dois arranjos da mesma página. Em cima, o kit de cartões SaaS: três cartões idênticos, com o mesmo raio e a mesma sombra cinza, e nada diz qual importa. Embaixo, a hierarquia pedida de volta: o cartão que importa ocupa a largura e ganha destaque, e os outros dois ficam menores e quietos.
Cinco segundos bastam para o teste de foco: aperte Tab várias vezes e veja se dá para saber onde o teclado está em cada parada. O erro mais comum é focus:ring-2 no lugar de focus-visible:ring-2. O primeiro esconde o anel de todo mundo; o segundo mostra só a quem navega pelo teclado.
role="menu" em navegação simples é anti-padrão, e o agente aplica esse papel sempre que lê a palavra menu. O papel promete setas, Home, End e Esc, e uma lista de links do site não os entrega. Navegar entre páginas pede lista de links; executar comando pede menu de ação, com teclado próprio.
| Necessidade | Primitiva ou kit | Quando é a escolha certa |
|---|---|---|
| Projeto novo em React, controle do arquivo | shadcn/ui sobre Base UI | Padrão desde julho de 2026; o agente edita arquivo seu |
| Conformidade escrita em contrato | React Aria (Adobe) | Governo, finanças, escala global; peça nova todo mês |
| Projeto já construído sobre o acervo antigo | Radix UI 1.6.7 | Quando trocar custa mais que manter |
| Vue, Solid ou Svelte | Ark UI com Zag.js, Headless UI, Melt UI, Bits UI, Kobalte | A primitiva do próprio framework |
| Web Components sem framework | Web Awesome 3.0 | Site que precisa durar mais que o framework da vez |
| Tema pronto sem JavaScript | daisyUI | Protótipo e site institucional, com mais de 30 temas |
| Página inteira em um dia | Origin UI, Shadcn Blocks, 21st.dev, Tremor Blocks | Marketing e painel; refaça a hierarquia depois |
| Saindo do Chakra UI v2 | Chakra UI v3 ou outra biblioteca avaliada | Compare APIs, acessibilidade, cobertura dos componentes e custo de testes |
O que fazer com isto: comece pela primeira linha; desça para a segunda só quando alguém escreveu a exigência de conformidade em algum lugar.
Fonte: Quadro do autor sobre a seção 4 do manual de recursos de frontend moderno, edição setembro de 2026.
Numa imobiliária com agenda de visita pelo site, o diálogo de confirmação foi feito com div solto. O interessado aperta Tab, cai atrás da janela e não sabe se a visita foi marcada. Trocar o div pela primitiva do Base UI prende o foco, fecha com Esc e devolve o foco ao botão, sem linha própria.
O laboratório abaixo monta esse diálogo com o Dialog e o Popover do Base UI. A biblioteca não traz uma linha de estilo: cor, raio e sombra saem dos tokens do curso. O elemento raiz recebe isolation: isolate, como a documentação pede, para a janela ficar acima de qualquer camada da página, sem disputa de z-index (a ordem de empilhamento).
Abra a janela, aperte Tab até dar a volta, feche com Esc e leia o painel que registra onde o teclado parou. O botão que pergunta por que pedimos o telefone abre um Popover posicionado ao lado; Esc fecha só ele e devolve o foco. O que a primitiva entrega de graça é o que o div solto negava.
Instale o primeiro componente do shadcn/ui e altere o raio de canto no arquivo. A mudança tem de chegar a toda tela que usa a peça, sem você editar mais nada. Rode o instalador de novo só depois de ler o git diff, porque ele sobrescreve o que você editou. Teste o foco com Tab antes de aprovar.
Organize suas peças num conjunto e publique o catálogo
Com a primitiva escolhida e o foco de teclado testado, falta a ordem de montagem: tokens, peças, variantes, página de prova e catálogo publicado.
Três a cinco componentes consistentes bastam para nascer um design system, o conjunto de peças da casa com cores e nomes iguais, como um jogo de louça. O catálogo desse conjunto se instala com um comando.
Quem tem dois ou três componentes soltos organiza antes que cresçam, com os quatro passos, o catálogo no Storybook e o registry no ar.
O primeiro passo são os tokens (os valores de cor, espaço e tipografia guardados com nome, como a etiqueta na lata de tinta). O segundo são as peças lendo esses tokens: depois do botão vêm o campo, o cartão e o diálogo. Cor cravada num arquivo é a peça que sobrevive à próxima troca de marca e denuncia a inconsistência.
Terceiro vem um vocabulário único de variantes e tamanhos. Quando principal, perigo, pequeno, médio e grande significam a mesma coisa em todo componente, o agente (a ferramenta de IA que escreve o código) acerta. O quarto é a página de prova, que mostra cada componente em cada variante e estado, lendo os tokens. Quando algo quebra, quebra ali primeiro.
Ver como texto
O mini design system nasce em quatro passos encadeados: tokens, primitivos que os consomem, variantes padronizadas com cva e a página styleguide que prova a consistência
Quando o mesmo botão aparece em mais de três telas, a página de prova sobe um degrau para o Storybook. É o catálogo que mostra cada peça isolada, como a vitrine de amostras da loja de tintas. Cada estado vira uma história, e o painel de acessibilidade acusa a violação antes de o produto abrir.
A versão 10 é só ESM, com instalação 29% menor. A regressão visual fecha o ciclo. O Playwright fotografa componente e SVG compilado a cada PR (a proposta de mudança no código) e compara com a foto anterior. Um pixel trocado barra a mudança. Ele pega o raio de canto alterado num arquivo compartilhado, invisível na revisão de texto.
O catálogo se distribui de dois jeitos. Os tokens saem no formato DTCG, lido por Figma, Penpot, Tokens Studio, Style Dictionary e Terrazzo, com $value em cada token e tipo definido no token ou herdado do grupo, conforme a edição DTCG adotada.
As peças saem por um registry do shadcn, o endereço de onde outro projeto instala a peça, como um catálogo de reposição. Desde maio de 2026 a validação barra o item mal descrito antes de publicar.
Um sistema para relatório precisa nomear as peças que a diretoria lê, e o manual dá o vocabulário: kpi-card, variance-table, executive-callout, risk-matrix, marketing-funnel, waterfall-bridge, decision-card, confidence-badge e methodology-note. Nomear faz o agente reaproveitar a peça em vez de inventar outra a cada tela. O cartão de indicador do relatório de vendas é o mesmo do relatório de caixa.
| Componente | O que mostra | Quando entra |
|---|---|---|
| kpi-card | Um indicador com meta, variação e período | Topo do relatório, poucos por página |
| variance-table | Real contra orçado e contra o período anterior | Fechamento mensal e reunião de diretoria |
| executive-callout | A frase de decisão destacada | Uma por seção, nunca em série |
| risk-matrix | Probabilidade contra impacto | Painel de risco e comitê |
| marketing-funnel | Etapas do funil com a conversão entre elas | Relatório de marketing e vendas |
| waterfall-bridge | De onde veio a variação de receita, margem ou caixa | Sempre que um número mudou e alguém pergunta por quê |
| decision-card | Opções, recomendação e responsável | Fim de seção que pede decisão |
| confidence-badge | Quão firme é o dado: fonte, atualização e dono | Ao lado de qualquer número que sustenta decisão |
| methodology-note | Como o número foi calculado | Rodapé do relatório, a dois cliques de cada número |
O que fazer com isto: nomeie as nove peças no CLAUDE.md antes do primeiro relatório, e o agente reaproveita em vez de inventar.
Fonte: Quadro do autor sobre a seção 24 do manual de recursos de frontend moderno, edição setembro de 2026.
Peça a licença com cada componente instalado, porque código sem licença vira problema quando o produto passa a valer dinheiro. Escreva no CLAUDE.md o alvo de acessibilidade: WCAG 2.2 no nível AA. A norma técnica e a obrigação legal têm escopos diferentes, e a regra do país e do setor se confere antes de declarar conformidade.
A 2.2 acrescentou nove critérios à 2.1, removeu o 4.1.1 de análise de marcação e totaliza 86 critérios somando A, AA e AAA. Dois deles mudam o desenho das peças. O 2.5.8 fixa alvo mínimo de 24 por 24 pixels CSS, com exceções para alvo em linha e espaçamento equivalente. O 3.3.8 proíbe teste cognitivo como única forma de autenticação.
Na prática, o 3.3.8 obriga o campo de senha a aceitar colar e a conviver com gerenciador de credenciais e chave de acesso. O contraste também vai além do 4,5:1 do texto. O critério 1.4.11 pede 3:1 no componente de interface e no elemento gráfico essencial, e é o mais esquecido em design system.
A WCAG 3.0 segue como rascunho de trabalho, sem status normativo e sem jurisdição que a exija, com modelo de conformidade por resultados observáveis. Ela não é meta de conformidade.
Ver como texto
Anatomia de um botão e de um campo de senha pela WCAG 2.2 nível AA. Marcador 1: o texto do botão com contraste de 4,5 para 1, critério 1.4.3. Marcador 2: o contorno do componente e o ícone com 3 para 1, critério 1.4.11. Marcador 3: alvo de toque de no mínimo 24 por 24 pixels CSS, critério 2.5.8. Marcador 4: o campo de senha aceita colar e o gerenciador de credenciais, critério 3.3.8.
Dois botões com verdes diferentes, escolhidos de cabeça, é o que os quatro passos corrigem. Depois deles, o botão de matricular e o de baixar apostila leem o mesmo token, e o Storybook mostra os dois lado a lado.
Suba o Storybook 10 com uma história por variante, o painel de acessibilidade ligado como teste, e publique o primeiro item no registry com npx shadcn build. Fixe fonte e tema antes de fotografar a regressão no Playwright: sem isso, a foto muda sozinha e vira ruído que ninguém confere.
Pegue um componente pronto e adapte à sua marca na hora
O catálogo publicado mostra o que já existe na casa, e componente novo pode chegar do registro adaptado aos seus tokens no mesmo passo.
Um herói colado sem ajuste carrega o azul do autor para dentro da sua marca em um clique. Adaptado no mesmo pedido, ele nasce na cor certa. Um registro é o catálogo de onde o código é copiado, como uma feira de fornecedores, e ele entrega o componente como código seu.
Quem já tem tokens e DESIGN.md ganha um herói ou um formulário pronto sem herdar a estética alheia. Você sabe onde buscar, o que cada fonte cobra e como adaptar a peça no momento de instalar.
A biblioteca é um pacote de peças instalado como dependência, um kit fechado com uma estética e uma versão que alguém mantém. O registro tem muitos autores e muitos estilos, e o código é copiado para o seu repositório. Você vira o dono, e não existe versão deles para atualizar.
O 21st.dev se apresenta como a biblioteca viva de interfaces, com mais de 12 mil componentes React, templates e temas shadcn de mais de 700 autores nomeados. Aceternity UI, Magic UI, shadcn/ui e Origin UI estão entre eles, e os 2 mil blocos de marketing trazem heróis animados, fundos e degradês.
| Fonte | O que entrega | Formato | Custo ou risco |
|---|---|---|---|
| 21st.dev | Mais de 12 mil componentes, blocos de marketing e temas de mais de 700 autores | Pedido copiável para o agente ou comando do shadcn CLI; prévia como imagem | Duas cópias por dia no plano grátis; sem versão, ninguém avisa correção do autor |
| shadcn MCP e registro próprio | Busca e instalação pelo agente, inclusive do botão da casa | .mcp.json no projeto e registros no components.json, privados com token | Dois registros podem sobrescrever o mesmo arquivo; dependência entra sem julgamento |
| Uiverse | A maior biblioteca aberta de elementos de interface, por estilo e por controle | HTML e CSS, Tailwind, React e Figma | Estilo forte (vidro, neon, retrô) vira tique se não for traduzido para o seu token |
| Framer Marketplace | Componentes e plugins para o Framer por categoria | Instalação dentro do Framer | Parte gratuita e parte paga; preso à ferramenta, e o preço muda mais rápido que o curso |
| O agente sem catálogo | Inventa a peça a partir do que mais viu no treino | Código escrito na hora | Sai com raio, sombra e azul de fábrica; o quarto botão diferente da casa |
Escolha a fonte pela restrição do pedido e leia o diff da instalação antes de aceitar; o que entrou sem você ver é o que vai custar.
Fonte: 21st.dev (página inicial, FAQ e blog de 20 e 21 de agosto de 2026); documentação do MCP do shadcn/ui; uiverse.io; framer.com/marketplace; leitura em 8 de setembro de 2026.
Cada componente, a peça repetida da tela como o botão ou o cartão, sai como um pedido copiável. O Cursor, o Claude Code, o v0 ou o Lovable reconstroem a peça no projeto, ou ela entra por comando do shadcn CLI. Navegar é grátis, com duas cópias por dia no plano sem assinatura.
O MCP é o protocolo que dá ao agente ferramentas de busca e instalação, como um balcão de pedidos na feira. Ele muda o comportamento da ferramenta de IA que escreve o código. Com o catálogo à mão, o agente escolhe um herói em vez de inventar um, e as prévias chegam como imagem antes do código.
Um registro próprio do time faz o agente instalar o botão da casa em vez de escrever o quarto.
Ver como texto
Fluxo do registro até o repositório. Você faz o pedido em linguagem comum; o agente usa as ferramentas de busca e instalação do MCP; o registro devolve prévias como imagem antes do código; você escolhe uma; o código é copiado para o seu repositório e o arquivo passa a ser seu, sem versão do autor para atualizar.
O pedido segue quatro regras. Nomeie a seção e a restrição. Diga o que não pode, como sem biblioteca de animação ou compatível com server component. Peça opções antes do código: mostre quatro heróis que usem CSS em vez de vídeo.
A quarta regra é dar os nomes dos seus tokens, que são os valores de cor e espaço guardados com nome. Assim a peça já entra adaptada, sem segunda rodada.
Os riscos vêm declarados pelo próprio 21st. Registro não tem versão, então ninguém avisa quando o autor corrige um defeito, e dois registros podem sobrescrever o mesmo button.tsx. O CLI resolve dependências sem julgá-las: um item que puxa um runtime de animação por uma transição instala limpo e custa o runtime em toda página.
Ver como texto
Quadro com as quatro regras do pedido de componente ao agente: nomear a seção e a restrição, dizer o que não pode, pedir opções antes do código e dar os nomes dos seus tokens para a peça já entrar adaptada.
O shadcn documenta o próprio MCP. A configuração fica no .mcp.json do projeto, criada por npx shadcn@latest mcp, e os registros, inclusive privados com token de acesso, ficam no components.json. O pedido é em linguagem comum: adicione o botão, o diálogo e o card ao projeto.
Duas outras fontes cobrem casos diferentes. O Uiverse é a maior biblioteca aberta de elementos de interface, em HTML e CSS, Tailwind, React e Figma. O Framer Marketplace distribui componentes e plugins presos ao Framer, parte deles gratuita.
O shadcn em si passa despercebido. O relatório da Sailop aponta o shadcn sem modificação, com raio, cor, tipografia e escala de fábrica. Resend e Cal.com, no outro caminho, reescreveram os tokens do tema.
A mesma casa varreu mil sites gerados por IA entre janeiro e março de 2026. O padrão de fábrica apareceu em 89,2% com Tailwind, 78,3% com Inter, 72,1% com a cor primária no arco azul-violeta e 11,2% com #3b82f6. A cadeia explica o número, porque o shadcn/ui nasce sobre o Tailwind e é a biblioteca padrão do v0 da Vercel.
O componente colado como veio carrega esse padrão para dentro da sua marca e vira o padrão da casa na tela seguinte. A adaptação aos tokens acontece no mesmo pedido de instalação, e o componente ganha uma linha no DESIGN.md antes da segunda tela.
O mesmo herói animado do registro, em dois destinos
Componente colado como veio
Default importado
- Azul do autor no botão e no degradê, ao lado do laranja da marca no cabeçalho
- Raio médio e sombra cinza do tema de fábrica, diferentes do resto do site
- Runtime de animação instalado inteiro para uma transição de entrada
- O próximo herói copia este, e o default vira o padrão da casa
Componente adaptado aos tokens no mesmo passo
Peça da casa
- O pedido já traz os nomes dos tokens, e o botão nasce com {colors.primary}
- Raio e sombra trocados pelos do DESIGN.md antes do primeiro commit
- Diff lido: runtime removido e transição reescrita em CSS puro
- Uma linha no DESIGN.md registra o herói, e o próximo pedido cita a peça pelo nome
Citar o token no próprio pedido de instalação é o que muda o resultado. Numa loja de materiais de construção, o herói animado do 21st.dev chegou com o laranja-ferrugem da marca no botão porque o pedido nomeou o token. O diff mostrou um runtime de animação inteiro por uma transição de entrada, e ele saiu.
Configure o MCP do shadcn com npx shadcn@latest mcp e peça quatro opções com restrição antes do código. Instale a escolhida citando os nomes dos seus tokens no mesmo pedido. Leia o diff antes de aceitar e anote a peça no DESIGN.md; sem token seu citado e sem o diff lido, o componente ainda é do autor.
Guia prático: seção de prova social com o MCP do shadcn/ui
Prova social é o conjunto de sinais de que outras pessoas já compraram e aprovaram: depoimento, logotipo de cliente, nota e número de alunos. Na landing page ela responde à objeção antes do formulário. O roteiro abaixo monta a seção com peças do registro, adaptadas aos seus tokens no mesmo pedido.
O que mudou recentemente: a documentação do shadcn/ui passou a indicar o comando shadcn@latest mcp init --client claude para o Claude Code, com arquivo próprio para Cursor, VS Code e Codex. Em agosto de 2026 os registros no GitHub passaram a funcionar com repositório privado, e em setembro todo componente passou a importar cn de um pacote único.
A Tailwind Labs anunciou em 9 de setembro de 2026 a entrada na Shopify. O Tailwind CSS e os demais projetos abertos seguem com licença MIT e a mesma equipe; o Tailwind Plus fechou para novos clientes.

Ver como texto
Página MCP Server da documentação do shadcn/ui. O texto explica que o servidor permite ao assistente de IA navegar, buscar e instalar componentes de registros. Abaixo, um exemplo de components.json com um registro chamado @acme e a seção Quick Start com abas para Claude Code, Cursor, VS Code, Codex e OpenCode e o comando pnpm dlx shadcn@latest mcp init --client claude.
Gerente de marketing de um software de gestão para clínicas, com três depoimentos gravados e doze logotipos autorizados
Software B2B, geração de demonstrações
Dor
A página de demonstração tinha um carrossel automático de depoimentos sem nome nem cargo. No celular, o carrossel empurrava o formulário para baixo a cada troca.
Solução
Ela configurou o MCP do shadcn no repositório, pediu quatro opções de seção de depoimentos sem carrossel e instalou a escolhida citando os tokens da marca. Cada depoimento ganhou nome, cargo, clínica e data.
Resultado do exemplo
A seção ficou estática, com três cartões e a faixa de logotipos, e o formulário parou de pular. A comparação de envios ficou para o teste do capítulo "Planejar a modernização e publicar com reversão".
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Prova social que convence e não derruba a página
Seis passos, do material autorizado até a seção conferida. O componente é a parte fácil; o que sustenta a prova é nome, data e permissão.
Passo 1: Junte o material e a autorização antes de abrir o agente
Para cada depoimento: frase, nome, cargo, empresa, data e a permissão de uso por escrito. Para cada número: fonte e data, na regra dos dois cliques do curso.
Deu certo quando: Uma planilha com uma linha por prova e a coluna de autorização preenchida.
Erro comum: Pedir ao agente depoimentos de exemplo e esquecer de trocar. Depoimento inventado na página publicada é propaganda enganosa.
Passo 2: Configure o MCP do shadcn no projeto
No Claude Code, rode pnpm dlx shadcn@latest mcp init --client claude na pasta do projeto e reinicie o agente. Cursor usa .cursor/mcp.json, VS Code usa .vscode/mcp.json e o Codex usa ~/.codex/config.toml.
Deu certo quando: O comando /mcp do Claude Code lista o servidor shadcn como conectado.
Erro comum: Servidor que não responde por causa de cache antigo. A documentação manda limpar com npx clear-npx-cache.
Passo 3: Declare os registros no components.json
Cada registro entra com um apelido iniciado por arroba e o endereço com {name}. Registro privado recebe o token por variável de ambiente, nunca no arquivo.
Deu certo quando: O pedido "mostre os componentes disponíveis no registro" devolve a lista do registro certo.
Erro comum: Colar o token no components.json e enviar para o repositório.
Passo 4: Peça quatro opções com restrição, antes do código
Nomeie a seção e o que não pode: depoimentos em grade, sem carrossel automático, sem biblioteca de animação, compatível com componente de servidor.
Deu certo quando: O agente mostra as opções e você escolhe uma antes de qualquer arquivo ser criado.
Erro comum: Aceitar a primeira peça animada e levar um runtime inteiro por uma transição de entrada.
Passo 5: Instale citando os tokens da marca e o HTML certo
No mesmo pedido, dê os nomes dos tokens de cor, raio e espaço. Peça figure com blockquote e figcaption em cada depoimento, e largura e altura declaradas em foto e logotipo.
Deu certo quando: O diff mostra variáveis da sua marca no lugar das cores do autor e nenhuma dependência nova sem motivo.
Erro comum: Logotipo sem altura reservada, que empurra o botão quando carrega e piora o CLS.
Passo 6: Confira no celular, pelo teclado e pelo leitor de tela
Abra a prévia em tela estreita, percorra com Tab e leia o texto alternativo de cada logotipo. Anote a peça no DESIGN.md.
Deu certo quando: A seção cabe sem rolagem lateral, o foco é visível e cada logotipo tem o nome da empresa no texto alternativo.
Erro comum: Nota de avaliação sem fonte, ou número de clientes sem data, que ninguém consegue conferir.
No fim você tem: Uma seção de prova social estática, com depoimentos autorizados e datados, logotipos com dimensão reservada e as cores dos seus tokens.
Guia prático: pedir um componente da biblioteca e adaptá-lo à sua marca
Bibliotecas de componentes como o 21st.dev oferecem, ao lado de cada peça, um botão que copia um pedido pronto para colar no agente. A biblioteca de 1.451 componentes estudada em 07/10/2026 segue essa ideia, e todos os pedidos têm a mesma anatomia, com 179 palavras em média:
- O que é: uma linha de descrição.
- Referência: categoria, características visuais e a stack do original.
- Como é usado: o exemplo de import e uso, que fixa a interface do componente.
- Parâmetros: paleta e ajustes numéricos, nos 451 que são shader.
- Requisitos: arquivo único, mobile primeiro, tema claro e escuro, acessibilidade e a lista de dependências permitidas.
A anatomia é boa e serve para qualquer pedido seu. O fecho é que pede cuidado: os pedidos mandam reproduzir o visual o mais fiel possível, e só 5 dos 1.451 falam em adaptar. Copiar fiel traz a paleta e a fonte de outra pessoa para a sua página.
Três números orientam a escolha. Do acervo, 42% (615) não têm licença declarada, mais 18 marcados sem licença; 47% (687) não declaram dependência npm; e 22% (319) usam WebGL, shader ou biblioteca 3D, a maioria com o código de desenho dentro do próprio componente. Escolha primeiro pela licença, depois pelo peso, e só então pela beleza.
Crie o componente [NomeDoComponente] para a seção [nome da seção] da página.
O QUE É: [uma linha: o que mostra e qual ação provoca]
REFERÊNCIA: [link da peça], licença [conferida na fonte]. Use só a estrutura e o ritmo;
cores, fonte e raio vêm do DESIGN.md.
COMO É USADO: <[NomeDoComponente] titulo="..." itens={[...]} /> (mantenha esta interface)
PARÂMETROS: [velocidade, intensidade ou quantidade, se houver]
REQUISITOS:
- arquivo único em [pasta dos componentes], TypeScript
- só tokens do DESIGN.md; nenhum hex escrito direto
- funciona a 390 px e com movimento reduzido (estado final parado e legível)
- dependências: só as que já estão no package.json; se precisar de outra, pergunte
- entregue um exemplo de uso e diga o peso que o componente acrescenta ao buildDa peça bonita da biblioteca ao componente da sua marca
Cinco passos. Não repetem a instalação por registro do guia anterior; valem para qualquer biblioteca.
Passo 1: Confira a licença na fonte original
Abra o link da peça e procure a licença do autor. Sem licença declarada, você não tem permissão clara de uso comercial: troque por outra opção ou peça autorização.
Deu certo quando: Cada componente escolhido tem licença anotada com o link e a data.
Erro comum: Assumir que tudo numa biblioteca pública é livre para uso comercial.
Passo 2: Filtre pelo peso antes do visual
Prefira peças sem dependência nova e sem WebGL. Se o efeito precisa de shader, peça junto um estado parado para celular e para quem reduziu o movimento.
Deu certo quando: Você sabe se a peça desenha na placa de vídeo e o que ela soma ao build.
Erro comum: Escolher o fundo animado mais bonito e descobrir que ele roda sem parar no celular.
Passo 3: Escreva o pedido com as cinco partes
Use o molde do bloco acima. A parte "como é usado" fixa a interface antes do código; a parte de requisitos diz o que você vai conferir.
Deu certo quando: O pedido cabe numa tela e tem as cinco partes preenchidas.
Erro comum: Colar o pedido copiado da biblioteca sem trocar o fecho de reprodução fiel.
Passo 4: Troque o "reproduza" por "adapte"
Diga que a referência dá estrutura e ritmo, e que cor, fonte, raio e espaçamento vêm do DESIGN.md. Peça a lista de valores que ele trocou.
Deu certo quando: O componente usa só tokens do projeto e a lista de trocas veio junto.
Erro comum: Receber a peça com o roxo e a fonte do autor original no meio da sua página.
Passo 5: Confira o que o pedido prometeu
Abra a 390 px, ligue o movimento reduzido e navegue pelo teclado. Requisito de acessibilidade escrito no pedido não garante o resultado.
Deu certo quando: O componente passa nos três testes ou você tem a lista do que falta.
Erro comum: Dar como pronto porque o pedido dizia "acessível".
No fim você tem: Componentes de biblioteca com licença conferida, peso conhecido e a identidade da sua marca, sem a do autor original.
Designer de uma agência de marketing em Florianópolis que monta a landing de uma cervejaria artesanal
Alimentos e bebidas, lançamento de rótulo
Dor
Ele colou na conversa o pedido de um carrossel bonito da biblioteca e recebeu a peça com a cor e a fonte do autor, que brigavam com a identidade da cervejaria.
Solução
Conferiu a licença do original, reescreveu o pedido com as cinco partes e trocou o fecho para adaptar aos tokens do DESIGN.md, usando só as dependências que o projeto já tinha.
Resultado do exemplo
O carrossel entrou na página com a paleta da marca, sem pacote novo, e o mesmo molde de pedido passou a ser usado nas outras seções.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
O registro virou o caminho padrão para componentes
No shadcn/ui, o componente não é instalado como pacote fechado: o código é copiado para o seu repositório e passa a ser seu. Desde agosto de 2026 a ferramenta instala também de repositórios privados do GitHub, o que deixa a empresa manter o próprio registro. Em outubro chegaram componentes para telas de agente.

Ver como texto
Página Changelog do shadcn/ui com a entrada October 2026, Trace, Code Block and AI Elements. O texto anuncia dois componentes novos, Trace e Code Block, e o AI Elements, um conjunto de padrões para interfaces de agente, disponíveis para Base UI, React Aria e Radix em oito estilos; abaixo aparece o exemplo do Trace com os passos de um agente. À direita, o sumário lista as entradas de setembro e agosto de 2026.

Ver como texto
Página Registry da documentação do shadcn/ui, com o título Introduction e o subtítulo Run your own code registry. O texto explica que a CLI do shadcn permite rodar um registro próprio para distribuir componentes, páginas, configurações e regras a qualquer projeto; uma nota diz que o registro funciona com qualquer tipo de projeto e framework, e um desenho liga Your registry a Next.js, Laravel, Astro, Remix e Vite.

Ver como texto
Página inicial do Base UI com o título Unstyled UI components for building accessible user interfaces e o texto que apresenta a biblioteca como obra dos criadores de Radix, Floating UI e Material UI, focada em componentes React acessíveis, sem opinião visual imposta.
Duas formas de usar um componente pronto
Pacote fechado instalado
Mais dependência
- Atualiza sozinho quando a biblioteca muda
- Mudar a aparência exige contornar o pacote
- Uma versão nova pode alterar telas sem aviso
Código trazido do registro para o repositório
Mais controle
- O componente vira código da empresa, com os seus tokens
- Mudanças passam por revisão como qualquer código
- Atualizar é uma decisão, com data e responsável
Faça agora: o inventário de botões do site
Passo 1: Abra três páginas do site: a inicial, uma de produto e a de contato.
Deu certo quando: As três abertas em abas.
Passo 2: Tire um print de cada botão diferente que encontrar.
Deu certo quando: Uma pasta com os prints numerados.
Passo 3: Agrupe os prints por aparência: cor, cantos, tamanho e texto.
Deu certo quando: Você sabe quantas versões de botão o site tem.
Erro comum: Considerar iguais dois botões que diferem só no canto ou na altura.
Passo 4: Envie o resultado ao fornecedor com o pedido: um componente de botão com variantes nomeadas e um catálogo visual delas.
Deu certo quando: O pedido sai com o número de versões encontradas.
No fim você tem: Um inventário que mostra quanto o site se afastou de um padrão e um pedido objetivo de catálogo de componentes.
Aplicar os recursos ao projeto
Ver como texto
Contrato na fronteira do componente
O contorno delimita o componente. Propriedades entram, conteúdo ocupa uma abertura e eventos saem; a página externa continua responsável por compor esses elementos.
Ver como texto
Anatomia de um Web Component. A etiqueta aviso-entrega é registrada com customElements.define. Dentro dela, o Shadow DOM funciona como uma parede de gesso que cerca a estrutura e os estilos internos, e um slot é a abertura que recebe o texto da página. A porta pequena de fora tem propriedades, atributos, que chegam como texto, e eventos que saem do componente.
| Modelo | A equipe ajusta | Também confere |
|---|---|---|
| Primitiva sem estilo | Aparência e composição | Foco e estados |
| Componente copiado | Arquivo do projeto | Correções futuras |
| Biblioteca instalada | Tema e configuração | Atualizações do pacote |
Os modelos distribuem responsabilidades de forma diferente; nenhum deles elimina a conferência de acessibilidade e do comportamento integrado.
Ver como texto
Fluxo do shadcn/ui. O comando copia o diálogo do registro para os seus arquivos. Você troca as cores fixas por variáveis com nome de função, como ação e superfície. Quando sai uma versão nova, a ferramenta não reescreve as suas mudanças: compare o arquivo com o original antes de aceitar, porque colar por cima perde o ajuste local.
Ver como texto
Um controle tem vários estados
O mesmo campo aparece vazio, com foco, preenchido e com erro. Contorno, cursor, texto e mensagem oferecem pistas distintas; o erro continua legível sem depender de cor.

Ver como texto
Ilustração de um jogo de louça azul com filete coral ao lado de um notebook cujos cartões e botões repetem a mesma cor, o mesmo raio e o mesmo filete.
| Camada | Aproveitar | Adaptar ao produto |
|---|---|---|
| Componentes | Estrutura e estados | Tarefa e conteúdo |
| Tokens | Nomes e relações | Marca e contraste |
| Catálogo | Exemplos isolados | Fluxos completos |
| Governança | Critérios de revisão | Quem mantém as peças |
Carbon, Fluent, Ant Design, Primer e outros sistemas trazem decisões de contexto; a aparência copiada não substitui a adequação ao público.
| Registro | O que mostra | A revisão confere |
|---|---|---|
| Exemplo isolado | Componente com dados definidos | Estados esperados |
| Variação de tema | Mesma peça em outro contexto | Contraste e tokens |
| Cenário de interação | Ação e resposta observável | Foco e resultado |
| Uso no produto | Peças no fluxo completo | Conclusão da tarefa |
Storybook documenta e permite examinar componentes isolados; a revisão do sistema também precisa considerar o uso integrado e a manutenção das decisões.
Ver como texto
Catálogo de histórias do campo de orçamento, em cenário ilustrativo. O mesmo componente aparece isolado em seis cenários salvos: vazio, preenchido, com erro, desabilitado, com texto comprido que estoura a caixa e em tema escuro. Cada história troca só os valores de entrada, e o desenho quebrado aparece ali antes de chegar ao site.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code: do zero à prática
- CursoSíntese e didática com IAsugerido pelo grafoDepois de escolher a informação essencial e desenhar hierarquia, gráficos e fluxos compreensíveis, o aluno pode aplicar esses critérios às interfaces do curso de frontend. A ponte conecta clareza da mensagem, acessibilidade e decisões de apresentação.
- CursoNode.js: JavaScript no Servidorsugerido pelo grafo9 capítulos de “Frontends com Vibecoding” usam conceitos apresentados em “Node.js: JavaScript no Servidor”.
- CursoSkills e delegação com IAsugerido pelo grafo9 capítulos de “Frontends com Vibecoding” usam conceitos apresentados em “Skills e delegação com IA”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Software e IA para executivosOnde a tela é montada: no servidor ou no celularExaminar conexões de Onde a tela é montada: no servidor ou no celular
- Astra profundoProjetar animações que orientam a açãoExaminar conexões de Projetar animações que orientam a ação
- MCP e Chrome: agentes de IA no navegadorQuando ler a estrutura da página e quando usar imagemExaminar conexões de Quando ler a estrutura da página e quando usar imagem
- Síntese e didática com IAPeça ao agente de código para enxugar uma página sem quebrá-laExaminar conexões de Peça ao agente de código para enxugar uma página sem quebrá-la
Terminou a leitura?
Você está aqui: capítulo 8 de 35
0 de 35 concluídos
- Próximo · Capítulo 9 de 35 · 33 minProjetar uma linguagem de ícones e ilustraçãoLer o capítulo 9 sem concluir
Marque como concluído para o capítulo contar no seu painel e no certificado.
- Anterior · Capítulo 7 de 35 · 56 minConstruir a identidade com tokens, CSS moderno e DESIGN.mdVoltar para o capítulo 7
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
Base UI
Prenda o foco num diálogo sem escrever o comportamento
Abra a janela Agendar visita, percorra os campos com Tab, feche com Esc e acompanhe no painel onde o foco está e para onde ele volta.
Pacote
Abrir no capítuloConstruir componentes, usar o registro e publicar o catálogo@base-ui/reactLucide e Iconify
Mantenha uma família de ícones coerente e nomeie cada botão
Mude tamanho, traço e cor da barra, veja o símbolo do Iconify acompanhar o Lucide e rode a auditoria de nomes acessíveis.
Pacote
Abrir no capítuloProjetar uma linguagem de ícones e ilustraçãolucide-react, @iconify/reactMotion
Testar os três sinais que autorizam o terceiro degrau
Reproduza a entrada em sequência, aperte o botão com mola e arraste o cartão; ajuste rigidez e amortecimento e veja o que muda.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagemmotionVidstack
Ver o que separa um player de um vídeo cru
Dê o play, troque a velocidade e ligue a legenda; o painel ao lado mostra o estado que o player publica e que a etiqueta crua esconde.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagem@vidstack/reactcmdk
Achar um destino entre quarenta digitando três letras
Abra a paleta, digite fat e escolha um item só pelo teclado; o painel embaixo conta o que o filtro deixou passar e quanto tempo levou.
Pacote
Abrir no capítuloConstruir formulários e estados de interaçãocmdknumber-flow
Animar indicadores que mudam ao vivo com formato pt-BR
Veja três indicadores fictícios rolarem a cada troca e compare com o número em texto puro. Pause, reinicie e observe o separador de milhar.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisão@number-flow/reactApache ECharts
Medir o custo de desenhar 200 mil pontos com o ECharts
Troque o tipo de gráfico e o volume de pontos, leia o tempo de desenho e alterne o eixo em zero. Mude o tema do site e veja as cores refazerem.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartsApache ECharts
Painel grande com visões coordenadas
Clique num canal para filtrar todas as visões, troque a densidade entre 6, 9 e 12 visões, alterne tema e movimento e abra a tela cheia.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartssharp e svgo
Escolher a variante certa da imagem e conferir o teto de 150 KB
Arraste a largura da tela simulada, troque a densidade entre 1x e 2x e veja qual arquivo o navegador escolhe, quanto ele pesa e se cabe no orçamento.
Pacote
Abrir no capítuloValidar desempenho, autenticação e segurançasharp, svgoReact Flow (xyflow)
Disparar um pedido e ver o orquestrador distribuir, conferir e responder
Alterne paralelo e sequencial, ligue e desligue a verificação e use a medição real; observe o tempo de parede em cada combinação.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robô@xyflow/reactGSAP, Web Workers e number-flow
Dividir mil tarefas entre trabalhadores reais e correr três ritmos de geração
Execute com um trabalhador, depois com quatro e oito, e compare o tempo; em seguida percorra a corrida e separe a espera inicial do ritmo.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôgsap, @number-flow/reactThree.js com React Three Fiber, drei, Rapier e XR
Carregar o braço robótico, ver a física trabalhar e entrar na cena com o visor
Carregue a cena pelo botão, inicie o ciclo, mostre os ângulos das juntas, troque a câmera e a velocidade; com visor, entre em realidade virtual.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôthree, @react-three/fiber, @react-three/drei, @react-three/rapier, @react-three/xrMotion
Ver quatro agentes em raias trocando mensagens e a revisão devolvendo um trecho
Reproduza os 60 s de modelo, percorra o tempo pelo controle e esconda as mensagens para comparar a leitura; repare no tempo de parede contra a soma.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinamotionMediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Medir o quadro da cena e gravar seis segundos dela em vídeo
Suba as partículas, force um bloqueio de 300 ms e leia o medidor; depois grave seis segundos, veja o codec escolhido e baixe o arquivo.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinasem pacotesigma.js, graphology com ForceAtlas2 e cosmos.gl
Ver o grafo real do curso e um grafo de milhares de nós se organizarem em aglomerados
Rode o layout no grafo real, passe o mouse pelos nós e busque uma entidade; troque para 20 mil nós e leia o medidor; depois carregue o modo massivo na placa de vídeo.
Pacote
Abrir no capítuloAnimar um grafo de conhecimento amplo em movimentosigma, graphology, graphology-layout-forceatlas2, graphology-generators, @cosmos.gl/graph
Capítulos vizinhos em Frontends com Vibecoding
- 06Investigar uma stack e priorizar atualizações
- 07Construir a identidade com tokens, CSS moderno e DESIGN.md
- 08Construir componentes, usar o registro e publicar o catálogo
- 09Projetar uma linguagem de ícones e ilustração
- 10Projetar menus, popovers e modais acessíveis