Sheet

Overlay

A side panel that slides in from any edge. Useful for drawers, menus, or settings panels.

Props

PropTypeDefaultDescription
modelValue*booleanOpen state (v-model).
side'left' | 'right' | 'bottom' | 'top''right'Slide-in edge.
size'sm' | 'md' | 'lg' | 'full''md'Panel width (or height for top/bottom).
titlestringSheet title in the header.
descriptionstringSubtitle below the title.

Examples

Side options
vue
<script setup lang="ts">
const open = ref(false)
</script>
<template>
  <DsButton @click="open = true">Open sheet</DsButton>
  <DsSheet v-model="open" title="Settings" description="Manage your preferences." side="right">
    <p class="text-sm text-ds-fg-muted">Sheet content goes here.</p>
    <template #footer>
      <DsButton variant="ghost" @click="open = false">Cancel</DsButton>
      <DsButton @click="open = false">Save</DsButton>
    </template>
  </DsSheet>
</template>

Accessibility

  • role="dialog" with aria-modal="true".
  • ESC key closes the sheet.
  • Backdrop click closes.
  • Scrollable body if content exceeds height.