Skip to Content
ComponentsDrawer

Drawer

A sliding panel that enters from the edge of the screen. Built on Ark UI Dialog.

Import

import { Drawer, DrawerProvider, drawer } from '@grannyshot/ui'

Setup (Imperative)

Add DrawerProvider to your app root:

<ThemeProvider> <App /> <DrawerProvider /> </ThemeProvider>

Imperative API

Open

Open a drawer programmatically with custom content:

drawer.open({ title: 'Settings', description: 'Manage your preferences', placement: 'right', content: ( <div> <p>Your settings content here</p> </div> ), })

Close

Close the currently open drawer:

drawer.close()

Declarative API

Use compound components for full control:

<Drawer.Root> <Drawer.Trigger asChild> <Button>Open Drawer</Button> </Drawer.Trigger> <Drawer.Content placement="right"> <Drawer.Header> <Drawer.Title>Navigation</Drawer.Title> <Drawer.Description>Browse pages</Drawer.Description> <Drawer.CloseTrigger /> </Drawer.Header> <Drawer.Body> {/* your content */} </Drawer.Body> <Drawer.Footer> <Button>Save</Button> </Drawer.Footer> </Drawer.Content> </Drawer.Root>

Placement

The drawer can slide in from the left or right:

{/* Left side */} <Drawer.Content placement="left">...</Drawer.Content> {/* Right side (default) */} <Drawer.Content placement="right">...</Drawer.Content>

Props (Drawer.Content)

PropTypeDefaultDescription
placement'left' | 'right''right'Side the drawer enters from
classNamestringAdditional CSS classes
Last updated on