Resizable
StablePrimitive de layout para painéis que o usuário redimensiona arrastando, ou pelo teclado, a borda entre eles. Composto sobre react-resizable-panels, que guarda o layout em porcentagens e expõe cada borda como um separator focável; o grupo ocupa a caixa que o envolve, em linha ou em coluna, e pode ser aninhado.
Instalação
npx up-web-ds add resizablePreview
Basic
Default
Vertical
With Handle
Nested
All states
Basic
Default
Vertical
With Handle
Nested
Usage
Props
ResizablePanelGroup
Estende ResizablePrimitive.GroupProps. Aceita também os atributos padrão de um elemento React (278 não listados).
ResizablePanel
Estende ResizablePrimitive.PanelProps. Aceita também os atributos padrão de um elemento React (278 não listados).
ResizableHandle
Estende ResizablePrimitive.SeparatorProps. Aceita também os atributos padrão de um elemento React (276 não listados).
Composition
Painéis e separators são filhos diretos do grupo, alternados: cada ResizableHandle controla o painel imediatamente antes dele. Um grupo pode morar dentro de um painel para dividir o outro eixo.
Metadata
Notas de acessibilidade
Teclado verificado por teste e em navegador: cada borda é um separator na sequência de tabulação, com outline de foco visível; ArrowLeft e ArrowRight redimensionam um grupo em linha, ArrowUp e ArrowDown um grupo em coluna — as setas do outro eixo não fazem nada —, e Home e End levam o painel ao mínimo e ao máximo. Um separator desabilitado sai da sequência de tabulação, é anunciado por aria-disabled e ignora as teclas. Leitor de tela verificado por teste: o separator declara aria-valuenow, aria-valuemin e aria-valuemax com o tamanho do painel anterior, aria-controls aponta para esse painel e aria-orientation é o da linha, oposto ao do grupo. O separator não tem nome próprio, porque não sabe quais painéis separa: quem compõe passa aria-label, e todos os examples passam — dois separators sem nome seriam duas paradas idênticas. O grip é decorativo e fica fora da árvore de acessibilidade. Touch verificado em viewport de 375px com emulação de toque: a linha tem 1px, e um pseudo-elemento after estende a área pressionável 12px para cada lado, sem ocupar espaço dos painéis, acima do piso de 24x24 da política de interação do Up Web DS; arrastar por toque redimensiona. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — o layout acompanha o ponteiro e a tecla sem nenhuma interpolação, então não há movimento a acomodar; a única transição é a de cor da linha em hover e arraste, que não é movimento e por isso permanece.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- layout
- Status
- Stable
Origem e distribuição
- Fonte
- shadcn registry / resizable
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- react-resizable-panels
- Ícones
- Nenhum
- Construído sobre
- Nenhum
- Usado por
- Nenhum ainda