Components

Drawer

Slide-in side panel with animated entrance, backdrop, and swipe-to-dismiss support.

iOSAndroid
Preview Drawer on your device

Scan with Expo Go

Download Expo Go, then scan the QR code to preview native components.

Installation

pnpm dlx @docyrus/cli add @docyrus/rn-drawer
Required Packages(3 packages)
pnpm add react-native-gesture-handler react-native-reanimated react-native-worklets

Usage

import { Drawer } from '@/components/docyrus-native/drawer';

<Drawer
  visible={isOpen}
  onClose={() => setIsOpen(false)}
  side="left"
  header={<Text>Menu</Text>}
>
  <Text>Drawer content goes here.</Text>
</Drawer>

API Reference

PropTypeDefaultDescription
visibleboolean—Controlled visibility state
onClose() => void—Close handler
side'left' | 'right''left'Side the drawer slides in from
widthnumber300Drawer width in pixels
variant'default' | 'elevated' | 'minimal' | 'glass''default'Visual variant
backdropOpacity'light' | 'medium' | 'dark''medium'Backdrop darkness level
headerReactNode—Header content element
footerReactNode—Footer content element
swipeToDismissbooleantrueEnable swipe gesture to close
animationDurationnumber200Open/close animation duration in ms
childrenReactNode—Drawer body content
triggerReactNode | ((opts: { onPress: () => void }) => ReactNode)—Custom trigger element or render function
triggerLabelstring'Open Drawer'Default trigger button label
hideTriggerbooleantrueHide default trigger when no custom trigger
classNamestring—Additional CSS classes
backdropClassNamestring—Backdrop CSS classes
contentClassNamestring—Content area CSS classes
headerClassNamestring—Header CSS classes
footerClassNamestring—Footer CSS classes
triggerClassNamestring—Trigger CSS classes

Type Exports

TypeDescription
DrawerPropsProps for Drawer component
DrawerSide'left' | 'right'
DrawerVariant'default' | 'elevated' | 'minimal' | 'glass'

On this page