João Castro

Componentes

Fundamentos e peças do design system. Cada uma só usa tokens e não conhece nenhum Projeto.

Cores e superfícies

Superfícies em camadas: página, card, dentro do card, modal. As cores semânticas são as mesmas nos dois temas; o destaque troca pelos quatro tons.

Página--bg
Card--card
Dentro do card--sub
Modal--dialog
Dentro do modal--dialog-sub
Texto--fg
Texto secundário--mute
Texto terciário--dim
Destaque--accent
Sucesso--success
Atenção--warning
Erro--danger
Informação--info

Tipografia

Geist para texto e Geist Mono para metadados (datas, códigos). Pesos 400 e 500; títulos com espaçamento levemente negativo.

Construindo o portfólioDisplay · h1 · 28px · 500
Recomendações pendentesTítulo · h2 · 16px · 500
Precisa de atençãoSubtítulo · h3 · 14px · 500
Organizou nosso front-end em Vue de um jeito simples.Corpo · 13px · 400
Atualizado há 4 minutosLegenda · 12px · 400
12 out 2026 · 14:32Mono · metadados · 12px · 400

Tamanhos

Todo controle mede 36px: botão ao lado de segmentado ao lado de campo, mesma altura. Em telas de toque o alvo sobe para 44px.

36pxAltura de controles--control-h
16pxÍcones em controles--icon-size
8pxGap ícone–texto--gap-icon
12pxPadding horizontal--pad-x
10pxRaio de botões--radius-control
14pxRaio de cards--radius-card
↕ 36px

Animação

Entrar é mais lento que sair. Só transform e opacity; a mola passa um pouco do ponto (1.04) e assenta. Clique para ver a entrada e de novo para ver a saída, mais rápida.

Rápida80 ms entra · 60 ms sai · hover, cores, setas
Média160 ms entra · 120 ms sai · tema, abas, switch
Lenta240 ms entra · 160 ms sai · modais, páginas

Ícones

Conjunto Solar, nos estilos linear (controles) e duotone (títulos de seção). Servidos pelo próprio site. Clique para copiar o nome.

Botão

Um primário por área. Carregando trava o clique e mantém a largura.

GitHub

Segmentado e badge

Segmentado para 2 a 4 opções: o fundo da opção ativa desliza até a nova escolha. Setas, Home e End funcionam.

RascunhoPublicadoEm revisãoAgendadoBloqueado

Card e estado vazio

O brilho do card segue o mouse, só com mouse e nunca no toque. Estado vazio: ícone em linha, uma frase do que falta e, se houver, a próxima ação.

Card com brilhoPasse o mouse por aqui.
Nenhum post publicadoO primeiro texto está sendo escrito.

Lista com destaque deslizante

Um fundo único acompanha o item sob o mouse (e o foco do teclado). Itens não clicáveis não ganham hover. No toque não aparece.

Toast e modal

Toast confirma ações rápidas e empilha até três (o mouse em cima abre a pilha). Modal é para decisões curtas; no celular sobe como folha.

Barra flutuante e voltar ao topo

Role a página para baixo e depois um pouco para cima: a barra reaparece no topo. O botão redondo aparece depois de 700px.

A barra e o botão desta página são os componentes reais; role para ver.

Padrões

Regras de uso que valem para todo o site.

Modal ou página?Modal para decisões curtas e confirmações. Leitura longa, imagens grandes ou algo que precisa de link próprio vira página.
Sempre respondaToda ação tem retorno: carregando no botão, toast ao concluir, estado novo visível na tela.
Hover sem piscarListas clicáveis usam o hover deslizante. Itens não clicáveis não ganham hover.
Respeite o movimentoCom movimento reduzido, deslocamentos somem e só os fades ficam.
Componentes