Container
Base
Anatomia
Cada elemento que compõe a anatomia do Container está associado a um subcomponente. Estes subcomponentes devem ser inseridos no código de modo que, após a avaliação final, sejam renderizados como filhos imediatos do Container.
- Barra lateral: Subcomponente
Container.Sidebar - Cabeçalho: Subcomponente
Container.Header - Conteúdo: Subcomponente
Container.Content - Rodapé: Subcomponente
Container.Footer - Painel: Subcomponente
Container.Panel
O Container preenche automaticamente toda a largura e altura disponíveis, e também faz com que seus elementos ascendentes expandam para ocupar todo o espaço.
Caso você queira que este comportamento NÃO se propague para os elementos pais do Container, adicione o atributo data-tg-container-no-stretch-chain a qualquer um desses elementos ascendentes.
Caso você queira que apenas um elemento específico NÃO se estique para ocupar todo o espaço, adicione o atributo data-tg-container-no-stretch neste elemento.
Cabeçalho
Utilize o subcomponente Container.Header para definir o cabeçalho do Container.
Anatomia
Cada elemento que compõe a anatomia do Container.Header está associado a um subcomponente. Estes subcomponentes devem ser inseridos no código de modo que, após a avaliação final, sejam renderizados como filhos imediatos do Container.Header.
- Prefixo: Subcomponente
Container.Header.Prefix - Título: Subcomponente
Container.Header.Title - Conteúdo auxiliar: Subcomponente
Container.Header.Auxiliary - Sufixo: Subcomponente
Container.Header.Suffix - Conteúdo customizado: Subcomponente
Container.Header.Custom
Filhos de Container.Header que não sejam uma dessas sub-regiões são colocados automaticamente em Container.Header.Custom. Quando não existem Container.Header.Prefix, Container.Header.Title, Container.Header.Auxiliary ou Container.Header.Suffix, o conteúdo customizado ocupa todo o cabeçalho.
Variações
O Cabeçalho muda de aparência conforme o contexto em que está presente:
- Quando ele está presente dentro da Coluna principal e não está fixo, se apresenta como um cabeçalho de página
- Quando está dentro da
Container.Sidebar,Container.Panelou está fixo, se apresenta como um cabeçalho de seção
Como cabeçalho de página
Como cabeçalho de seção
Título com badge
Combine o título com um Badge para destacar algum elemento de contagem ou status.
Título e texto auxiliar truncados
Use Link ou Text com a propriedade truncate dentro do título e do conteúdo auxiliar quando não quiser quebras de linha.
Com avatar
Coloque o Avatar no Container.Header.Prefix para identificar um usuário associado ao recurso descrito pelo cabeçalho.
Ações
Agrupe ações no Container.Header.Suffix.
Botão fechar
Inclua o subcomponente Container.Header.Close como filho do subcomponente Container.Header.Suffix para adicionar o botão fechar.
Container.Header.Close só fica visível dentro de um contexto fechável, como um Container.Panel ou uma Drawer. Ele pode permanecer declarado sem condicionais, seu próprio estilo controla sua visibilidade.
Ao ser acionado, o botão:
- Chama seu
onClick, quando fornecido - Solicita o fechamento do
Containerfechável mais externo - Faz o
onToggledesse contexto receberfalsee{ reason: 'closeButton' }(veja a documentação da API)
O conteúdo textual de Container.Header.Close define o nome acessível do ícone. Valores pré-definidos estão disponíveis no atributo Container.Header.Close.translations para português, espanhol e inglês.
<Container.Header.Close>Fechar</Container.Header.Close>
Cabeçalho e rodapé fixos
Use a propriedade fixed no Container.Header e Container.Footer para fixar essas regiões nas estremidades enquanto o conteúdo rola.
Cabeçalho e rodapé com bordas
Use a propriedade bordered no Container.Header e Container.Footer para adicionar bordas nas estremidades e separá-las do conteúdo.
Layout interno
Use a propriedade layout para controlar o espaçamento horizontal interno. Os valores disponíveis são:
'full': Ocupa toda a largura, sem espaçamento'padded': Ocupa toda a largura, com espaçamento horizonal interno'contained': Largura limitada até 1280px, com espaçamento horizontal interno
Sem um valor, a região herda o layout do Container pai. É possível sobrescrever o layout em regiões específicas, como Container.Header ou Container.Content.
Sidebar
Use o Container.Sidebar para estruturar recursos de navegação relacionados a Coluna principal.
Painel
Use o Container.Panel para conteúdos de apoio ligados à área principal (detalhe, filtros ou histórico) sem sair do contexto da página.
Visibilidade
Controle a visibilidade com as propriedades show e onToggle ou inicie com ele visível com a propriedade defaultShow no modo não controlado. Quando o Container está em sm, o Painel deve ser exibido com a propriedade activeSection="panel".
Tamanhos
Utilize a propriedade size para definir a largura do Painel. Os valores disponíveis são 'sm' (pequeno, padrão), 'md' (médio) e 'lg' (grande).
Essa escala não representa os breakpoints. Quando o Container não está em 'sm', o Painel sempre ocupa toda a largura, independentemente do valor de size.
Responsividade
O Container mede sua própria largura e a classifica em três breakpoints:
'sm': para largunras pequenas.'md': para larguras médias.'lg': para larguras grandes.
O comportamento das regiões muda conforme a faixa:
- Em
'lg', Barra lateral, Coluna principal e Painel visível permanecem lado a lado - Em
'md', Barra lateral e Coluna principal permanecem lado a lado, o Painel é apresentado como umaDrawer - Em
'sm', somente a região selecionada pela propriedadeactiveSectionfica visível e ocupa toda a largura
Use useContainerBreakpoint para adaptar também o conteúdo ao espaço disponível:
function SomeContent() {
const { isSm } = useContainerBreakpoint();
return isSm ? <ResumoCompacto /> : <ResumoDetalhado />;
}
Sem um argumento, o hook usa o breakpoint do Container ancestral mais próximo. Também é possível observar explicitamente um elemento, um id ou uma referência React:
function AreaObservada() {
const { breakpoint } = useContainerBreakpoint('container');
return <Container id="container">Breakpoint atual: {breakpoint}</Container>;
}
Antes da primeira medição, ou fora de um Container sem alvo explícito, o hook retorna 'lg'.
Breakpoint fixado
Use a propriedade breakpoint para fixar uma faixa quando o layout não deve depender da medição automática, por exemplo em demonstrações e ambientes de teste:
<Container breakpoint="sm" activeSection="main">
<SomeContent />
</Container>
Container.Sidebar e Container.Panel também aceitam um breakpoint próprio. Quando não recebem essa propriedade, usam a classificação do Container pai ou a própria medição.
Navegação entre regiões
Utilize a propriedade activeSection com os valores 'sidebar', 'main' (padrão) ou 'panel' para controlar qual região está visível em Containers pequenos ('sm').
Quando o Container não está em 'sm', a propriedade não tem efeito. A navegação entre regiões é responsabilidade de quem está consumindo o componente.
Aninhamento
Container.Sidebar, Container.Panel e a Drawer next são containers completos. Eles podem ter cabeçalho, conteúdo e rodapé próprios e manter sua estrutura independente do Container externo.
Por serem um Container, esses componentes podem receber internamente outros Containers preservando seus estilos e comportamentos, mesmo com a presença de elementos intermediários. Esta estrutra é útil para embedar elementos de interface via micro-frontends (MFEs).
Feedback
To report a problem, request new icons, request new component use cases, ask questions, share suggestions, or report bugs, get in touch through our Slack channel #tangram-design-system.