Skip to content

Drawer

<ts-drawer> vv0.4.0

The ts-drawer component.

Open in Storybook for interactive demos.

<ts-drawer placement="end" size="md">Content</ts-drawer>
PropertyAttributeTypeDefaultDescription
dismissibledismissiblebooleantrueWhether clicking the overlay or pressing Escape closes the drawer.
headingheadingstring | undefinedAccessible heading for the drawer.
openopenbooleanfalseWhether the drawer is open.
placementplacement"bottom" | "end" | "start" | "top"'end'Which edge the drawer slides in from.
sizesize"full" | "lg" | "md" | "sm"'md'The drawer’s width/height preset.
EventDetailBubblesComposedDescription
tsClosevoidYesYesEmitted when the drawer closes.
MethodSignatureDescription
closeclose() => Promise<void>Programmatically close the drawer.
showshow() => Promise<void>Programmatically open the drawer.
NameDescription
*(default)*Default slot for drawer body content.
footerDrawer footer content (e.g., action buttons).

Use ::part() to style internal elements:

PartDescription
bodyThe body wrapper.
closeThe close button.
footerThe footer wrapper.
headerThe header wrapper.
overlayThe backdrop overlay.
panelThe slide-in panel container.
ts-drawer::part(body) {
/* your custom styles */
}
<ts-drawer placement="end" size="md">Content</ts-drawer>
import { TsDrawer } from '@tessera-ui/react';
<TsDrawer dismissible placement="end">Content</TsDrawer>