ComponentsUpdated Sep 9, 2026
Sheet
A panel that slides in from an edge and dims the page. Use it for secondary detail that benefits from context staying visible.
Source: packages/ui/src/components/sheet
import { Sheet } from '@highlight/ui'Change the props; the preview and the snippet update together.
Props
Side
Show close
Footer
<Sheet> <Sheet.Trigger>Open details</Sheet.Trigger> <Sheet.Content> <Sheet.Header> <Sheet.Title>Meeting details</Sheet.Title> <Sheet.Description>The page stays visible behind the panel.</Sheet.Description> </Sheet.Header> <Sheet.Body><p>Body scrolls independently.</p></Sheet.Body> <Sheet.Footer> <Sheet.Close variant="secondary">Cancel</Sheet.Close> <Sheet.Close variant="primary">Save</Sheet.Close> </Sheet.Footer> </Sheet.Content></Sheet>import { Sheet } from '@highlight/ui' export default function SheetBasic() { return ( <Sheet> <Sheet.Trigger>Open details</Sheet.Trigger> <Sheet.Content> <Sheet.Header> <Sheet.Title>Meeting details</Sheet.Title> <Sheet.Description>Slides in from the right; the page stays visible behind it.</Sheet.Description> </Sheet.Header> <Sheet.Body> <p className="text-foreground-secondary text-sm"> Body scrolls independently when content is taller than the viewport. </p> </Sheet.Body> <Sheet.Footer> <Sheet.Close variant="outline">Cancel</Sheet.Close> <Sheet.Close variant="primary">Save</Sheet.Close> </Sheet.Footer> </Sheet.Content> </Sheet> )}side on Content picks the edge.
import { Sheet } from '@highlight/ui' const SIDES = ['left', 'right', 'top', 'bottom'] as const export default function SheetSides() { return ( <div className="flex flex-wrap items-center justify-center gap-3"> {SIDES.map((side) => ( <Sheet key={side}> <Sheet.Trigger variant="outline" size="sm" className="capitalize"> {side} </Sheet.Trigger> <Sheet.Content side={side}> <Sheet.Header> <Sheet.Title className="capitalize">{side}</Sheet.Title> </Sheet.Header> <Sheet.Body> <p className="text-foreground-secondary text-sm"> Horizontal sheets are 600px wide; vertical ones are 300px tall. </p> </Sheet.Body> </Sheet.Content> </Sheet> ))} </div> )}The root, then any compound sub-components. Every part accepts className and forwards the rest of its props to the element or Base UI part beneath it.
Sheet- Base UI Dialog.Root. Owns open state; the sheet slides in from an edge.
Sheet.Trigger / Close- Buttons, shared with Dialog.
Sheet.Content- Portal + Backdrop + Popup. side: 'right' | 'left' | 'top' | 'bottom'; showClose.
Sheet.Header / Body / Footer / Title / Description- Layout and accessibility slots.