Sheet Position

PreviousNext

sheet-position-demo

Docs
intentuipage

Preview

Loading preview…
components/docs/overlays/sheet/sheet-position-demo.tsx
"use client"

import { useState } from "react"
import { titleCase } from "usemods"
import { Button } from "@/components/ui/button"
import {
  SheetClose,
  SheetContent,
  SheetDescription,
  SheetFooter,
  SheetHeader,
  SheetTitle,
} from "@/components/ui/sheet"

type Side = "left" | "right" | "top" | "bottom"
export default function SheetPositionDemo() {
  const [sheetSide, setSheetSide] = useState<Side>("left")
  const [isOpen, setIsOpen] = useState(false)

  const sides: Side[] = ["left", "right", "top", "bottom"]

  const pressHandler = (side: Side, open: boolean) => {
    setSheetSide(side)
    setIsOpen(open)
  }

  return (
    <>
      <div className="grid grid-cols-2 gap-2">
        {sides.map((side, idx) => (
          <Button intent="outline" onPress={() => pressHandler(side, true)} key={idx}>
            {titleCase(side)}
          </Button>
        ))}
      </div>
      <SheetContent isOpen={isOpen} onOpenChange={setIsOpen} side={sheetSide}>
        <SheetHeader>
          <SheetTitle>{titleCase(sheetSide)}</SheetTitle>
          <SheetDescription>The sheet will go from {sheetSide} side.</SheetDescription>
        </SheetHeader>
        <SheetFooter>
          <SheetClose>Close</SheetClose>
        </SheetFooter>
      </SheetContent>
    </>
  )
}

Installation

npx shadcn@latest add @intentui/sheet-position-demo

Usage

Usage varies by registry entry. Refer to the registry docs or source files below for details.