Componentes
Screen Skeleton
betaA casca de toda tela autenticada: navegação, cabeçalho, miolo e seções. A discussão de uso está no padrão Casca de tela.
Ainda não é estável porque Rota não varrida pelo sensor. Ausência de medição não é aprovação. O contrato de maturidade explica o que cada requisito exige.
@voxmente/ui/components/ui/screen-skeleton
Orientação
A casca de toda tela autenticada: navegação, cabeçalho, miolo e seções. O que muda entre as frentes do produto é o que entra nos slots, nunca a casca.
Quando usar
- Toda tela autenticada, sem exceção — é a peça que impede cada frente de inventar o próprio layout.
- A tela precisa dos quatro estados (carregando, vazia, sem permissão, erro) na mesma moldura.
- É preciso garantir que o cabeçalho e a navegação não se desalinhem entre telas diferentes.
Quando não usar
- Em tela pública ou de autenticação, que não tem navegação lateral nem cabeçalho de página.
- Para compor um pedaço de tela: a casca é a tela inteira, não um contêiner qualquer.
- Para contornar uma limitação da própria casca. Se algo não cabe, corrija a casca — remendar na tela espalha o problema.
<ScreenSkeleton nav={<EscolaNav />}>
<ScreenHeader title="Bom dia, Renata" description="Quatro turmas ativas nesta semana.">
<Button>Programar aplicação</Button>
</ScreenHeader>
<ScreenContent>
<ScreenSection title="Turmas">…</ScreenSection>
</ScreenContent>
</ScreenSkeleton>Anatomia
ScreenSkeleton
└─ ScreenHeader
└─ ScreenContent
└─ ScreenSectionExportadas, mas sem demonstração nesta página: ScreenTopbar.
Uso
Faixa de identidade de um registro
A régua de largura é da área, não da tela
Acessibilidade
- A casca é quem define os marcos da página: navegação, cabeçalho e conteúdo principal precisam ser regiões distintas.
- O salto para o conteúdo principal é responsabilidade da casca, não de cada tela.
- Em 390 px a navegação some da lateral; verifique que ela continua alcançável antes de considerar a tela responsiva.
Em contexto de produto
Os quatro estados de tela são demonstrados dentro da mesma casca, lado a lado, porque o erro comum é desenhar só o estado cheio.
Ver os estados de telaComponentes relacionados
Referência da API
ScreenContent
| Prop | Tipo | Padrão |
|---|---|---|
| fullWidth | boolean | false |
Também aceita as props de React, incluindo className e os atributos de DOM.
ScreenEntityHeader
| Prop | Tipo | Padrão |
|---|---|---|
| actions | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| alerts | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| media | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| meta | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| name | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| status | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| tabs | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
Também aceita as props de React, incluindo className e os atributos de DOM.
ScreenHeader
| Prop | Tipo | Padrão |
|---|---|---|
| description | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| title | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
Também aceita as props de React, incluindo className e os atributos de DOM.
ScreenSection
| Prop | Tipo | Padrão |
|---|---|---|
| title | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
Também aceita as props de React, incluindo className e os atributos de DOM.
ScreenSkeleton
| Prop | Tipo | Padrão |
|---|---|---|
| largura Régua de largura da área, declarada uma vez pela casca. `contida` prende o miolo em `--layout-content-max` e o centra; `cheia` deixa a tela inteira trabalhar, que é o que uma área de tabelões como o Backoffice quer. A régua mora aqui, e não em cada tela, porque cabeçalho e miolo precisam da **mesma**: enquanto só o `ScreenContent` a respeitava, em 1920px o título e o botão de ação iam até a borda direita e a tabela parava 384px antes — duas réguas na mesma tela, medido em 38 das 89 rotas do produto. | "contida" | "cheia" | "contida" |
| mobileBar Desliga a barra móvel embutida. Uma tela que monta a própria `ScreenTopbar` (gatilho + separador + breadcrumb, sempre visível) usa `mobileBar={false}` para não acabar com duas barras empilhadas no celular. | boolean | true |
| nav | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| navLabel Rótulo da barra móvel — some no desktop, onde a barra já está visível. | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | "Navegação" |
Também aceita as props de React, incluindo className e os atributos de DOM.
ScreenTopbar não tem props próprias — aceita apenas as props herdadas, incluindo className e os atributos de DOM.
- Orientação, acessibilidade e relacionados: documentação
- Anatomia: exemplo desta página
- Demonstrações e playground: componente real de @voxmente/ui
- Referência da API: TypeScript do pacote
- Cor, espaçamento e raio das demonstrações: tokens de theme.css