Design System

Drawer

Painel deslizante ancorado à borda da tela. Construído sobre Vaul. Alternativa ao Sheet para dispositivos móveis com interação de arraste (swipe).

import {
  Drawer, DrawerClose, DrawerContent,
  DrawerDescription, DrawerFooter, DrawerHeader,
  DrawerTitle, DrawerTrigger,
} from "@workspace/ui/components/drawer";

<Drawer>
  <DrawerTrigger asChild>
    <Button variant="outline">Abrir</Button>
  </DrawerTrigger>
  <DrawerContent>
    <DrawerHeader>
      <DrawerTitle>Título</DrawerTitle>
      <DrawerDescription>Descrição do conteúdo.</DrawerDescription>
    </DrawerHeader>
    <DrawerFooter>
      <Button>Confirmar</Button>
      <DrawerClose asChild>
        <Button variant="outline">Cancelar</Button>
      </DrawerClose>
    </DrawerFooter>
  </DrawerContent>
</Drawer>

Inferior (bottom)

Drawer padrão deslizando de baixo para cima.

Sheet vs Drawer

Quando usar cada um no SYSGO.

CritérioSheetDrawer
DispositivoDesktopMobile
Interação de arrasteNãoSim (swipe)
Direção padrãoDireitaInferior
Caso de uso SYSGOEdição, visualizaçãoFiltros mobile, ações rápidas

API Reference

PropTypeDefaultDescrição
openbooleanControla o estado aberto/fechado
onOpenChange(open: boolean) => voidCallback quando o estado muda
direction'top' | 'bottom' | 'left' | 'right''bottom'Direção de onde o drawer aparece
DrawerContentReactNodeConteúdo do drawer com overlay e animação
DrawerTitleReactNodeTítulo do drawer (obrigatório para acessibilidade)
DrawerDescriptionReactNodeDescrição do drawer