Separator
Uma linha fina que divide o conteúdo na horizontal ou na vertical, com rótulo opcional e um modo decorativo para linhas puramente visuais.
HextaUI
Components that feel great to use and to write.
pnpm dlx shadcn@latest add https://hextaui.com/r/separator.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react cnCopie e cole o código a seguir no seu projeto.
components/ui/separator.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
A linha tem um pixel físico de espessura em qualquer tela, a mesma linha fina das bordas, então se alinha com os cards e inputs ao redor. Espace-a com o gap do pai ou uma margem.
Vertical
Com orientation="vertical" a linha se estica até a altura da sua linha flex. Fora de uma linha flex, dê a ela uma altura.
Label
Os filhos ficam no meio da linha, com a linha preenchendo o espaço dos dois lados.
Alinhamento
align move o rótulo para o start ou o end, o que combina com cabeçalhos de seção e de data. Os ícones são dimensionados ao texto.
Rótulo vertical
Um separador vertical com rótulo mantém o texto na vertical e desenha a linha acima e abaixo dele.
Decorativo
decorative oculta dos leitores de tela uma linha puramente visual, para não anunciarem um separador entre linhas que já se leem bem sozinhas.
Inline
Use render para gerar um <span> onde um <div> não é permitido, como dentro de um parágrafo.
Conteúdo longo
Rótulos longos quebram linha e strings sem quebras são quebradas, enquanto um trecho curto de linha continua visível em cada lado.
Da direita para a esquerda
Início e fim seguem a direção de leitura.
- Um separador simples tem
role="separator"earia-orientation, como um<hr>. - Com
decorative, receberole="none"e os leitores de tela o ignoram. - Um separador com rótulo não tem role. O role separator tornaria seu texto apresentacional, então o rótulo é lido como texto comum.
Construído sobre o Separator do Base UI. Renderiza um <div> e aceita seus atributos.
| Prop | Tipo | Padrão |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
decorativeOculta a linha dos leitores de tela quando é apenas visual. | boolean | false |
childrenUm rótulo desenhado na linha. Omita para uma linha simples. | ReactNode | – |
alignOnde o rótulo fica ao longo da linha. | "start" | "center" | "end" | "center" |
className | string | (state) => string | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="separator" | Seleciona os separadores no CSS. |
data-orientation | "horizontal" ou "vertical". |
data-content | Presente quando o separador tem um rótulo. |
data-align | O alinhamento do rótulo, quando há um rótulo. |
data-slot="separator-label" | O elemento que envolve o rótulo. |
- AccordionTítulos empilhados que revelam cada um um painel, com movimento de altura que você pode reverter no meio e painéis que continuam pesquisáveis enquanto fechados.
- Aspect ratioUma caixa que mantém sua forma antes de a mídia carregar, exibe um shimmer durante o carregamento, faz a mídia aparecer com fade e usa um fallback quando ela falha.
- CarouselSlides nativos com scroll-snap, com inércia no toque, arrastar com o mouse, setas do teclado, pontos, miniaturas e um autoplay que pausa quando deve.
- CollapsibleUm painel que aparece e desaparece com um movimento de altura que você pode reverter no meio, sem fazer o layout pular.
- ResizablePainéis que você pode separar arrastando, com um divisor discreto que desperta no hover, tamanhos que deslizam ao redefinir ou recolher e layouts que persistem.
- Scroll areaRolagem nativa com uma barra de rolagem mínima, bordas que esmaecem apenas onde há mais a ver e um peek opcional que corta o último item ao meio.