Pular para o conteúdo
// visualizar em
salvo em todas as páginas

AppShell

Estrutura do app — a moldura de uma tela. Um cabeçalho, a área principal da página e um rodapé opcional, numa coluna da altura da tela, com um link para pular o cabeçalho.

Padrão Regiões HTML: header, main, footerComponente de servidorCódigo ↗

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar. Ele não tem estado, então também renderiza no servidor.

import { AppShell, AppShellHeader, AppShellBody, AppShellContent, AppShellFooter, SkipLink } from "@camaleo/react";

Anatomia

Uma coluna da altura da tela, com as áreas seguras dos celulares com entalhe como espaçamento. As partes são regiões comuns: o cabeçalho é o banner da página, o conteúdo é o main dela. Para ter uma barra lateral, ponha o AppShellBody abaixo do cabeçalho: uma linha com a Sidebar e o AppShellContent, em que o conteúdo ocupa o resto da largura, também ao lado de um trilho.

Exemplos

Cada exemplo é um arquivo de verdade que você pode copiar, encolhido para caber no quadro. A página da documentação em volta já tem um main, então o AppShellContent de cada quadro recebe render={<div />} e um id do useId; no seu app, tire os dois.

minimal · light · #3fa34d
Orbita

Projetos

Todas as alterações foram salvas
Orbita

Bom dia, Ana

Tarefas abertas24
Vencem nesta semana5
Concluídas em outubro38

Painel com uma faixa lateral

O AppShellBody põe a barra lateral numa linha embaixo do cabeçalho. Aperte o botão no pé da faixa para mostrar os rótulos; o conteúdo ocupa o resto da largura.

Pedidos

PedidoClienteSituaçãoTotal
#1042Marina CostaPagoR$ 248,90
#1041João PereiraPendenteR$ 89,00
#1040Luiza AlvesPagoR$ 1.120,50
#1039Rafael SouzaReembolsadoR$ 64,30

Breadcrumb e busca no cabeçalho

O cabeçalho diz onde você está e oferece um jeito de ir a qualquer lugar. Aperte Buscar: a paleta de comandos abre e leva a uma página.

Configurações

Perfil

Enviamos recibos e alertas para cá.

Links das seções ao lado do formulário

Um SidebarNav dentro do conteúdo lista as seções de uma página. Quando a moldura fica estreita, ele sobe para cima do formulário em vez de espremê-lo.

Pular para o conteúdo
Orbita

Tarefas

Aperte Tab a partir do topo deste quadro: a primeira parada é um link que pula o cabeçalho e vem direto para cá.

Link para pular primeiro

Clique acima da moldura e aperte Tab. O SkipLink aparece, e o Enter leva o foco direto ao conteúdo, para quem usa teclado não passar por todos os links em toda página.

Orbita

Painel

Quadro largo: a barra lateral inteira.

Barra, faixa ou gaveta conforme a largura

A moldura não muda sozinha: você escolhe um layout para cada largura. Estreite esta janela para ver a barra inteira virar uma faixa e depois um botão de menu com gaveta.

Em contexto

Telas do tamanho de um celular que você pode copiar, no estilo que escolheu. Cabeçalho e rodapé ficam parados; o meio rola.

Suporte OrbitaResponde em cerca de 5 minutos
  1. Oi, Ana! Como podemos ajudar hoje?
  2. Não acho onde exportar o relatório de outubro.
  3. Vá em Relatórios, abra outubro e toque em Exportar. Ele salva um PDF.
Chat de suporteAppShell · Input · IconButton · Avatar
Finalizar compraEtapa 2 de 3
Resumo do pedido
Café em grãos, 1 kgR$ 69,90
Filtros de papel (100)R$ 12,50
Caneca de cerâmicaR$ 39,00
FreteR$ 15,90
Entregar emAna Ribeiro, Rua das Palmeiras, 210, apto 42, São Paulo, SP, 01310-100
TotalR$ 137,30
Finalizar compraAppShell · Button · Separator
Olá, Ana
Saldo disponívelR$ 4.284,15
Movimentações recentes
  • Mercado da Esquina29/10/2026−R$ 54,20
  • Salário28/10/2026+R$ 6.850,00
  • Conta de luz27/10/2026−R$ 196,40
  • Pix para Marina26/10/2026−R$ 120,00
App de banco com barra de abasAppShell · Card · Avatar

Boas práticas

FaçaSó o conteúdo rola.

Role a lista: o cabeçalho, com a busca e a conta, fica sempre a um clique.

EviteO cabeçalho rola junto.

Role esta. Quando a moldura inteira rola, a pessoa precisa voltar ao topo para chegar ao menu.

Orbita
FaçaO que toda página precisa.

O nome do app, a busca, as notificações e a conta. As ações de uma página ficam na própria página.

Orbita
EviteTodas as ações no cabeçalho.

Botões que só funcionam numa página viram ruído em todas as outras e quebram linha em telas pequenas.

Props

PropriedadeTipoPadrãoDescrição
targetIdstring"main-content"O id do elemento para onde ele pula, normalmente o AppShellContent.

AppShell, AppShellHeader e AppShellFooter aceitam as props de div, header e footer. O AppShellBody aceita as props de div. O AppShellContent aceita as props de main, e o id dele é "main-content" por padrão, o mesmo alvo que o SkipLink usa quando você não passa targetId. Mude os dois juntos e mantenha o id único. O render troca o main por outro elemento, como render={<div />} quando a página já tem um main; o id continua, então o link para pular segue funcionando.

Styling hooks

Mude o visual sem copiar o componente: use os slots ou defina os tokens num elemento pai, num estilo ou na própria moldura.

Tokens que ele lê

Cor

--cml-border--cml-fg--cml-focus-ring--cml-surface

Forma e tamanho

--cml-border-width--cml-radius-control

Tipografia e movimento

--cml-duration-fast--cml-font-body

Só deste componente

--cml-app-shell-bg--cml-app-shell-footer-bg--cml-app-shell-header-bg--cml-app-shell-header-height
/* um cabeçalho mais alto e um conteúdo que rola sozinho */
.app [data-slot="app-shell"] {
  --cml-app-shell-header-height: 4rem;
  height: 100dvh;
}
.app [data-slot="app-shell-content"] {
  overflow-y: auto;
}

Acessibilidade

TabDo topo da página, a primeira parada é o link para pular, que aparece onde está.
EnterNo link para pular, leva o foco ao conteúdo, depois do cabeçalho e da barra lateral.
Shift + TabVolta pelos controles do cabeçalho.

Relacionados

Esta página foi útil? · Editar esta página no GitHub