Resizable
Atom
Resizable permite ajustar espaço entre painéis sem perder contexto de decisão.
Use em layouts split: lista + detalhe, timeline + evidência, briefing + fontes. O redimensionamento deve preservar mínimos úteis e oferecer alternativa por teclado quando usado em produto real.
Exemplos copiáveis
React
React
import * as React from "react"
type PulsoResizableProps = {
left: React.ReactNode
right: React.ReactNode
}
export function PulsoResizable({ left, right }: PulsoResizableProps) {
const [leftWidth, setLeftWidth] = React.useState(38)
return (
<section className="grid min-h-72 overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border)] bg-[var(--card)]" style={{ gridTemplateColumns: `${leftWidth}% 10px 1fr` }}>
<aside className="min-w-48 p-4">{left}</aside>
<input
aria-label="Ajustar largura da lista"
type="range"
min={28}
max={55}
value={leftWidth}
onChange={(event) => setLeftWidth(Number(event.currentTarget.value))}
className="h-full cursor-col-resize appearance-none bg-[var(--border)]"
/>
<main className="min-w-64 border-l border-[var(--border)] p-4">{right}</main>
</section>
)
}<PulsoResizable
left={<p>Lista de casos</p>}
right={<p>Detalhe do caso selecionado</p>}
/>Regras
- Defina largura mínima para cada painel.
- Não permita que evidência, ação crítica ou resumo desapareça.
- Persistência de tamanho deve ser preferência do usuário, não regra global.
- Em produto real, suporte teclado e leitores de tela para o divisor.
Last updated on