Sheet

画面端からスライドインするパネル。ナビゲーションや補足情報の表示に使用。

Installation

npx shadcn@latest add https://kasumi-ui.vercel.app/r/sheet.json

Usage

import {
Sheet,
SheetTrigger,
SheetContent,
SheetHeader,
SheetTitle,
SheetDescription,
} from "@/components/ui/sheet";
import { Button } from "@/components/ui/button";

<Sheet>
<SheetTrigger asChild>
  <Button variant="outline">シートを開く</Button>
</SheetTrigger>
<SheetContent>
  <SheetHeader>
    <SheetTitle>設定</SheetTitle>
  </SheetHeader>
  <SheetDescription>
    アプリケーションの設定を変更できます。
  </SheetDescription>
</SheetContent>
</Sheet>

Side

side prop で表示位置を指定できます。toprightbottomleft の4方向に対応。

<Sheet>
<SheetTrigger asChild>
  <Button variant="outline">左</Button>
</SheetTrigger>
<SheetContent side="left">
  <SheetHeader>
    <SheetTitle>左からスライド</SheetTitle>
  </SheetHeader>
  <SheetDescription>side="left" のシートです。</SheetDescription>
</SheetContent>
</Sheet>

Form Sheet

<Sheet>
<SheetTrigger asChild>
  <Button>プロフィール編集</Button>
</SheetTrigger>
<SheetContent>
  <SheetHeader>
    <SheetTitle>プロフィール編集</SheetTitle>
  </SheetHeader>
  <SheetDescription>
    表示名とメールアドレスを変更できます。
  </SheetDescription>
  <div className="space-y-4 mt-4">
    <div className="space-y-2">
      <Label>表示名</Label>
      <Input variant="outline" placeholder="あさひ" />
    </div>
    <div className="space-y-2">
      <Label>メールアドレス</Label>
      <Input variant="outline" type="email" placeholder="asahi@example.com" />
    </div>
  </div>
  <SheetFooter>
    <SheetClose asChild>
      <Button variant="outline">キャンセル</Button>
    </SheetClose>
    <Button>保存</Button>
  </SheetFooter>
</SheetContent>
</Sheet>

Props

Sheet

PropTypeDefaultDescription
openboolean-シートの開閉状態(制御コンポーネント用)
onOpenChange(open: boolean) => void-開閉状態が変わったときのコールバック

SheetContent

PropTypeDefaultDescription
side"top" | "right" | "bottom" | "left""right"シートが開く方向
classNamestring-追加のCSSクラス