Sheet
basecn/sheetFreeComponent
Extends the Dialog component to display content that complements the main content of the screen.
Live preview
live · rendered by the registry
Rendered by basecn on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://basecn.dev/r/sheet.jsonSource
1import * as React from "react";2import { Dialog as SheetPrimitive } from "@base-ui/react/dialog";3import { XIcon } from "lucide-react";45import { cn } from "@/lib/utils";67function Sheet({ ...props }: SheetPrimitive.Root.Props) {8 return <SheetPrimitive.Root data-slot="sheet" {...props} />;9}1011function SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {12 return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />;13}1415function SheetClose({ ...props }: SheetPrimitive.Close.Props) {16 return <SheetPrimitive.Close data-slot="sheet-close" {...props} />;17}1819function SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {20 return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />;21}2223function SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {24 return (25 <SheetPrimitive.Backdrop26 data-slot="sheet-overlay"27 className={cn(28 "data-[open]:animate-in data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:animation-duration-[300ms] data-[open]:fade-in-0 fixed inset-0 z-50 bg-black/50",29 className30 )}31 {...props}32 />33 );34}3536function SheetContent({37 className,38 children,39 side = "right",40 ...props41}: SheetPrimitive.Popup.Props & {42 side?: "top" | "right" | "bottom" | "left";43}) {44 return (45 <SheetPortal>46 <SheetOverlay />47 <SheetPrimitive.Popup48 data-slot="sheet-content"49 className={cn(50 "bg-background data-[open]:animate-in data-[closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[closed]:duration-300 data-[open]:duration-500",51 side === "right" &&52 "data-[closed]:slide-out-to-right data-[open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",53 side === "left" &&54 "data-[closed]:slide-out-to-left data-[open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",55 side === "top" &&56 "data-[closed]:slide-out-to-top data-[open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",57 side === "bottom" &&58 "data-[closed]:slide-out-to-bottom data-[open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",59 className60 )}61 {...props}62 >63 {children}64// … truncated
What it pulls in
npm packages
Files it writes
More from basecn
All 56 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | basecn | Components | Free | 2 deps | |
| Alertalert | basecn | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | basecn | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | basecn | Components | Free | no deps | |
| Autocompleteautocomplete | basecn | Components | Free | 2 deps | |
| Avataravatar | basecn | Components | Free | 1 dep | |
| Badgebadge | basecn | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | basecn | Components | Free | 2 deps |
