Skip to Content
FoundationsElevation

Elevation

Interaction foundation

Estrutura vem de borda e superfície. Sombra fica reservada para o que realmente flutua.

Pulso evita sombras decorativas. Em uma interface de crise, profundidade precisa explicar contexto: o que pertence à página, o que está acima dela e o que interrompe a tarefa.

A referência do Open Design define a intenção: hairlines e superfícies carregam a maior parte da estrutura; sombras aparecem em popovers, menus, modais, sheets e tooltips. Os tokens abaixo vêm de src/app/globals.css.

Princípio

Elevação não é “embelezar card”. É sinalizar relação espacial.

  • Page e panel dependem de background e borda.
  • Cards usam sombra mínima, quando necessário.
  • Overlays usam sombra mais forte porque flutuam sobre a página.
  • Modal/sheet precisam separar foco e contexto.
  • Sidebar usa superfície inversa e borda própria, não sombra.

Escala de sombras

TokenValorUso
--shadow-xs0 1px 2px rgb(8 10 18 / 0.04)Card discreto, superfície quase plana
--shadow-sm0 1px 2px rgb(8 10 18 / 0.04)Alias leve para compatibilidade
--shadow0 2px 6px -2px rgb(8 10 18 / 0.06), 0 1px 2px rgb(8 10 18 / 0.04)Elevação padrão quando a borda não basta
--shadow-md0 4px 12px -4px rgb(8 10 18 / 0.08), 0 1px 2px rgb(8 10 18 / 0.04)Hover relevante, surface elevated
--shadow-lg0 12px 24px -12px rgb(8 10 18 / 0.10), 0 1px 2px rgb(8 10 18 / 0.04)Dropdowns, menus, popovers
--shadow-xl0 24px 48px -20px rgb(8 10 18 / 0.14), 0 1px 2px rgb(8 10 18 / 0.04)Dialogs, sheets, foco modal

Papéis de superfície

RoleBackgroundBorderShadowUso
Page--backgroundFundo da aplicação
Panel--card--borderSeções, painéis laterais, containers estáveis
Card--card--border--shadow-xs opcionalUnidade de conteúdo
Elevated--surface-elevated--border--shadow-mdHover relevante, card acima da lista
Overlay--popover--border-strong--shadow-lgDropdowns, menus, popovers
Modal--popover--border-strong--shadow-xlDialogs e sheets
Inverse--sidebar--sidebar-borderSidebar e chrome escuro

Não improvise combinações. Trocar background, borda e sombra ao mesmo tempo cria profundidade falsa e ruído.

Z-index

TokenValorUso
--z-base0Default
--z-elev-110Sticky headers
--z-elev-220Dropdowns inline
--z-elev-330Sticky overlays
--z-overlay40Backdrop de modal
--z-modal50Dialogs, sheets
--z-popover60Tooltips, popovers
--z-toast70Notifications
--z-max999Escape hatch controlado

Use --z-max só quando houver decisão explícita. Se ele aparece em componente comum, a pilha está mal modelada.

Relação com bordas

Bordas são o primeiro recurso de estrutura do Pulso.

TokenUso
--borderSeparação padrão de superfície
--border-strongOverlays, foco visual e contraste maior
--border-faintSeparação sutil quando densidade já resolve parte da leitura
--sidebar-borderChrome inverso

Se uma superfície está dentro da página, comece por borda e spacing. Use sombra apenas quando ela precisa flutuar acima de outra camada.

Regras

  1. Sombra não substitui hierarquia de conteúdo.
  2. Page e panel não usam sombra.
  3. Card usa sombra mínima ou nenhuma; borda e spacing resolvem a maioria dos casos.
  4. Dropdown, popover, tooltip, dialog e sheet podem usar sombra porque flutuam.
  5. Modal e sheet usam --z-modal; backdrop usa --z-overlay.
  6. Tooltip/popover ficam acima de modal apenas quando a interação exigir e for segura.
  7. Não combine sombra forte, borda forte e background destacado sem necessidade.
  8. Não use --z-max para resolver conflito local sem revisar a pilha.
Last updated on