Sheet

Usage

import { Button } from '@jamie/ui/button'
import { Field, FieldLabel } from '@jamie/ui/field'
import { Input } from '@jamie/ui/input'
import {
  Sheet,
  SheetClose,
  SheetContent,
  SheetDescription,
  SheetFooter,
  SheetHeader,
  SheetTitle,
  SheetTrigger
} from '@jamie/ui/sheet'
 
export function SheetDemo() {
  return (
    <Sheet>
      <SheetTrigger render={<Button variant="outline" />}>Meeting Settings</SheetTrigger>
      <SheetContent>
        <SheetHeader>
          <SheetTitle>Meeting preferences</SheetTitle>
          <SheetDescription>
            Configure how Jamie processes your meetings. Changes apply to future recordings.
          </SheetDescription>
        </SheetHeader>
        <div className="flex flex-col gap-4 px-4">
          <Field>
            <FieldLabel>Default meeting title</FieldLabel>
            <Input placeholder="e.g. Weekly Finance Sync" />
          </Field>
          <Field>
            <FieldLabel>Recap recipients</FieldLabel>
            <Input placeholder="team@company.com" />
          </Field>
        </div>
        <SheetFooter>
          <SheetClose render={<Button variant="outline" />}>Cancel</SheetClose>
          <Button>Save preferences</Button>
        </SheetFooter>
      </SheetContent>
    </Sheet>
  )
}

Side

Use the side prop to control which edge the sheet slides from.

'use client'
 
import { Button } from '@jamie/ui/button'
import {
  Sheet,
  SheetContent,
  SheetDescription,
  SheetHeader,
  SheetTitle,
  SheetTrigger
} from '@jamie/ui/sheet'
 
const sides = ['top', 'right', 'bottom', 'left'] as const
 
export function SheetSideDemo() {
  return (
    <div className="flex flex-wrap gap-2">
      {sides.map((side) => (
        <Sheet key={side}>
          <SheetTrigger render={<Button variant="outline" />}>
            {side.charAt(0).toUpperCase() + side.slice(1)}
          </SheetTrigger>
          <SheetContent side={side}>
            <SheetHeader>
              <SheetTitle>Meeting details</SheetTitle>
              <SheetDescription>Sheet opening from the {side} side.</SheetDescription>
            </SheetHeader>
            <div className="px-4 text-sm text-muted-foreground">
              Q4 Budget Review — 3 participants, 45 min
            </div>
          </SheetContent>
        </Sheet>
      ))}
    </div>
  )
}