Aliases
side sheet
DrawerSide-panel dialog with configurable size and dismissal.
Aliases
side sheet
Foundations
Drawer for inspectors, review sidebars, or longer-form side workflows.Drawer when the decision must fully interrupt the page; use Dialog.Drawer for tiny advisory surfaces; use Popover or Tooltip.open control
trigger Control that opens the drawer.
edge sheet
surface Side-anchored overlay surface.
optional footer actions
footer Optional actions area inside the drawer.
| Name | Type | Default | Description |
|---|---|---|---|
open | boolean | false | Controlled open state. |
side | 'left' | 'right' | 'right' | Chooses the drawer edge. |
size | 'sm' | 'md' | 'lg' | 'md' | Chooses the drawer width recipe. |
title | string | — | Drawer title. |
description | string | — | Optional supporting explanation. |
closeOnEscape | boolean | true | Allows Escape to close the drawer. |
closeOnOutsidePress | boolean | true | Allows outside press dismissal. |
onOpenChange | (detail: { open: boolean }) => void | — | Runs when the drawer opens or closes. |
theme | ThemeContract | — | Sets the theme used to resolve component styles. |
| Name | Payload | Description |
|---|---|---|
openchange | { open: boolean } | Fires when an overlay-style component opens or closes through user interaction. |
| Name | Description |
|---|---|
trigger | Optional trigger content. |
default | Drawer body content. |
footer | Optional footer actions. |
Variants
right: Default right-side drawerleft: Left-side drawer for alternate context flowsSizes
sm: Narrow drawermd: Default drawerlg: Wider drawerStates
closed: Drawer is hiddenopen: Drawer is visible and focus-containedSemantics
Keyboard
Screen readers
Checklist
A side panel for a supporting task.
<Drawer title="Inspector" description="Secondary support flow."><svelte:fragment slot="trigger">Open drawer</svelte:fragment>Keep supporting work visible without leaving the page.</Drawer> Left-side drawers can support alternate app shells or editing flows.
<Drawer side="left" title="Filters"><svelte:fragment slot="trigger">Open filters</svelte:fragment>Filter controls here.</Drawer> Control open state when app workflow owns the sheet lifecycle.
<Drawer open={isInspectorOpen} onOpenChange={(detail) => isInspectorOpen = detail.open} title="Inspector">Contextual details</Drawer> Calculated fixtures; browser evidence is not collected. Layout estimates use declared text behavior and maximum token values.
side=left|size=sm
side=right|size=sm
side=left|size=md
side=right|size=md
side=left|size=lg
side=right|size=lg