Drawer
StableSuperfície de borda que se pega: acompanha o dedo um para um, assenta proporcional à força do gesto, empilha quando outra abre por cima e para em snap points. Composto sobre Base UI Drawer. O Sheet e o Drawer ancoram na mesma borda, e escolher entre eles não é gosto — a camada de gesto só se paga quando o toque é a via principal; fora disso o Sheet é a resposta honesta.
Instalação
npx up-web-ds add drawerPreview
Default
Variants
Without Overlay
With Snap Points
Directions Default
Directions Inset
Non Modal
All states
Default
Variants
Without Overlay
With Snap Points
Directions Default
Directions Inset
Non Modal
Usage
Props
Drawer
Estende DrawerPrimitive.Root.Props.
DrawerTrigger
Estende DrawerPrimitive.Trigger.Props. Aceita também os atributos padrão de um elemento React (284 não listados).
DrawerPortal
Estende DrawerPrimitive.Portal.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
DrawerClose
Estende DrawerPrimitive.Close.Props. Aceita também os atributos padrão de um elemento React (285 não listados).
DrawerOverlay
Estende DrawerPrimitive.Backdrop.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
DrawerSwipeHandle
Estende React.ComponentProps<'div'>. Aceita também os atributos padrão de um elemento React (280 não listados).
DrawerContent
Estende DrawerPrimitive.Popup.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
DrawerHeader
Estende React.ComponentProps<'div'>. Aceita também os atributos padrão de um elemento React (280 não listados).
DrawerBody
Estende React.ComponentProps<'div'>. Aceita também os atributos padrão de um elemento React (280 não listados).
DrawerTitle
Estende DrawerPrimitive.Title.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
DrawerDescription
Estende DrawerPrimitive.Description.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
Composition
A mesma estrutura do Dialog, mais a alça de arrasto que o Drawer precisa por percorrer o viewport.
Metadata
Notas de acessibilidade
Teclado verificado por teste: o foco entra na superfície ao abrir, Tab dá a volta dentro dela enquanto o drawer é modal, Escape fecha devolvendo o foco ao gatilho, e o controle nomeado do rodapé faz por teclado e ponteiro o que o gesto faz por toque — uma superfície cuja única saída é arrastar é uma superfície que algumas pessoas não conseguem fechar. Leitor de tela verificado por teste: o drawer é nomeado pelo DrawerTitle e descrito pelo DrawerDescription, a alça de arraste é aria-hidden por ser afordância de um gesto que o leitor de tela não executa, e o modo não modal não desenha scrim porque a página atrás continua utilizável. Touch verificado em navegador com emulação de toque em viewport de 375px: o arraste dispensa a superfície, o corpo rola com overscroll-contain para que chegar ao fim da lista não vire dispensa acidental, e os alvos medem acima do mínimo de 24x24 da WCAG 2.2 SC 2.5.8. Reduced motion verificado com prefers-reduced-motion: reduce — o painel percorre um viewport inteiro e o transform dele é o que o Base UI observa, então a transição é encurtada (motion-reduce:duration-fast) em vez de removida: tirar a transição tiraria junto o transitionend que desmonta o drawer e quebraria o arraste. O deslocamento fica curto, e abrir, fechar e responder ao gesto continuam intactos.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- overlay
- Status
- Stable
Origem e distribuição
- Fonte
- shadcn registry / drawer
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- @base-ui/react
- Ícones
- Nenhum
- Construído sobre
- Nenhum
- Usado por
- Nenhum ainda