FaceFlow — Layout System
A layout is the structural frame that wraps every page. It defines where the header goes, where the footer goes, what global styles apply, and where page-specific content is placed. Think of it as the "shell" of your website — consistent across all pages that use it.
Documentação do Desenvolvedor de Layouts
Layouts definem a moldura de página compartilhada usada pelas Páginas do FaceFlow.
Para usuários técnicos, um Layout é o contrato do invólucro da página. Ele determina onde residem as regiões compartilhadas, onde o conteúdo da página é injetado e como uma família de Páginas mantém uma moldura consistente sem duplicar a estrutura página a página.
Responsabilidade Principal
Um Layout deve controlar:
- estrutura geral do documento
- posicionamento de header, footer e regiões compartilhadas
- o ponto de inserção do conteúdo principal
- invólucros estruturais e enquadramento da família de páginas
- estilo ou comportamento opcional em nível de layout
Um Layout não deve ser responsável por conteúdo de marketing específico da página.
Esqueleto do Layout
A maioria dos Layouts pode ser entendida por meio de um padrão simples:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ page.title }}</title>
</head>
<body>
{header}
{siteComponents}
<main>
{content}
</main>
{footer}
</body>
</html>O requisito chave é um ponto de inserção {content} confiável. Sem isso, as Páginas não têm um local previsível para renderizar.
Exemplo de Contrato do Shell
Um Layout também pode expor regiões compartilhadas adicionais mantendo a fronteira de propriedade limpa:
<body class="resource-layout">
{header}
<div class="resource-shell">
<aside class="resource-sidebar">
{siteComponents}
</aside>
<main class="resource-main">
{content}
</main>
</div>
{footer}
</body>A regra importante é que o shell permaneça estrutural. A Página ainda é responsável pela sequência renderizada em {content}.
Relacionamento com Páginas e Componentes
Mantenha o modelo de propriedade claro:
- Layout possui o shell
- Página possui a composição da experiência
- Componente possui seções de conteúdo reutilizáveis dentro da experiência
Quando os Layouts permanecem estruturais, as famílias de Páginas continuam fáceis de evoluir.
Regiões Compartilhadas
Os Layouts são o lugar adequado para regiões compartilhadas, tais como:
- navegação persistente
- enquadramento padrão de footer
- sidebars de documentação
- trilhos de suporte usados em uma família de páginas
Exemplo:
<body class="docs-layout">
{header}
<div class="docs-shell">
<aside class="docs-sidebar">
{siteComponents}
</aside>
<main class="docs-content">
{content}
</main>
</div>
{footer}
</body>Isso é reutilização estrutural. Um banner promocional pontual não pertence aqui.
Famílias de Layout
Famílias comuns de layout incluem:
- invólucro principal do site de marketing
- invólucro de landing de campanha
- invólucro de recursos ou documentação
- invólucro de portal ou base de conhecimento
Cada família deve representar um padrão estrutural durável, não uma variação temporária de conteúdo.
Estilização em Nível de Layout
Layouts podem definir decisões de estilo compartilhadas que pertencem ao shell:
<body class="min-h-screen bg-slate-950 text-white">
{header}
<main class="mx-auto max-w-7xl px-6 py-16">
{content}
</main>
{footer}
</body>Isso é apropriado quando o estilo pertence ao quadro da página. Estilos específicos de seção ainda pertencem aos Componentes.
Impacto de Mudanças
Mudanças no Layout têm alto impacto porque um Layout frequentemente afeta muitas Páginas.
Antes de alterar um Layout, reveja:
- qual família de páginas depende dele
- se as regiões compartilhadas mudam de significado
- se a largura do conteúdo, espaçamento ou suposições de navegação mudam
- se os Componentes existentes ainda se encaixam corretamente no shell
Padrão de Revisão de Layout
Quando uma mudança no Layout é proposta, verifique o impacto nesta ordem:
shell semantics
-> shared regions
-> content width and spacing
-> component fit
-> dependent page-family behaviorIsso ajuda as equipes a evitar aprovar uma alteração aparentemente pequena no shell que silenciosamente quebra várias Páginas dependentes.
Lista de Verificação de Revisão Técnica
- o Layout expõe um ponto de inserção de conteúdo claro?
- ele possui apenas preocupações em nível de shell?
- múltiplas Páginas podem reutilizá-lo sem exceções pontuais?
- as regiões compartilhadas são realmente compartilhadas?
- alterar este Layout afetaria muitas Páginas de maneira compreensível?
Anti-padrões
Evite:
- embutir texto específico da página diretamente no Layout
- criar Layouts quase duplicados para variações mínimas
- mover lógica de seção para o shell
- usar o Layout como depósito para todo o conteúdo compartilhado
- alterar a semântica do shell sem verificar as Páginas dependentes
Regra de Decisão de Exemplo
Use um Layout quando a mudança afetar a moldura ao redor de muitas Páginas:
new docs sidebar across the whole docs section -> Layout
new CTA block inside one page section -> Component
new page-specific proof content -> Page composition