{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "sheet",
"type": "registry:ui",
"title": "Sheet",
"description": "A customizable sheet component",
"dependencies": [
"@base-ui/react",
"clsx",
"tailwind-merge",
"tailwind-variants"
],
"registryDependencies": [
"classes"
],
"files": [
{
"path": "src/registry/pure-ui/ui/sheet/index.tsx",
"content": "\"use client\";\n\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/classes\";\n\ninterface SheetProps extends SheetPrimitive.Root.Props {}\n\nfunction Sheet(props: SheetProps) {\n return ;\n}\n\ninterface SheetTriggerProps extends SheetPrimitive.Trigger.Props {}\n\nfunction SheetTrigger(props: SheetTriggerProps) {\n return ;\n}\n\ninterface SheetCloseProps extends SheetPrimitive.Close.Props {}\n\nfunction SheetClose(props: SheetCloseProps) {\n return ;\n}\n\ninterface SheetPortalProps extends SheetPrimitive.Portal.Props {}\n\nfunction SheetPortal(props: SheetPortalProps) {\n return ;\n}\n\ninterface SheetBackdropProps extends SheetPrimitive.Backdrop.Props {}\n\nfunction SheetBackdrop({ className, ...props }: SheetBackdropProps) {\n return (\n \n );\n}\n\nconst sheetVariants = tv({\n slots: {\n viewport: \"fixed inset-0 z-50 flex\",\n popup: \"group bg-background flex flex-col gap-4 min-h-0 max-h-full\",\n },\n variants: {\n side: {\n right: {\n viewport: \"justify-end\",\n popup:\n \"w-3/4 border-l sm:max-w-sm [transition-property:translate,opacity,scale,border-radius] will-change-[translate,opacity,scale,border-radius] duration-300 ease-[cubic-bezier(0.215,0.61,0.355,1)] data-starting-style:opacity-0 data-starting-style:translate-x-full data-ending-style:opacity-0 data-ending-style:translate-x-full opacity-[calc(1-var(--nested-dialogs)*0.25)] -translate-x-[calc(2.5rem*var(--nested-dialogs))] scale-[calc(1-0.15*var(--nested-dialogs))] data-nested-dialog-open:rounded-lg\",\n },\n left: {\n viewport: \"justify-start\",\n popup:\n \"w-3/4 border-r sm:max-w-sm [transition-property:translate,opacity,scale,border-radius] will-change-[translate,opacity,scale,border-radius] duration-300 ease-[cubic-bezier(0.215,0.61,0.355,1)] data-starting-style:opacity-0 data-starting-style:-translate-x-full data-ending-style:opacity-0 data-ending-style:-translate-x-full opacity-[calc(1-var(--nested-dialogs)*0.25)] translate-x-[calc(2.5rem*var(--nested-dialogs))] scale-[calc(1-0.15*var(--nested-dialogs))] data-nested-dialog-open:rounded-lg\",\n },\n top: {\n viewport: \"flex-col justify-start\",\n popup:\n \"h-auto border-b [transition-property:translate,opacity,scale,border-radius] will-change-[translate,opacity,scale,border-radius] duration-300 ease-[cubic-bezier(0.215,0.61,0.355,1)] data-starting-style:opacity-0 data-starting-style:-translate-y-full data-ending-style:opacity-0 data-ending-style:-translate-y-full opacity-[calc(1-var(--nested-dialogs)*0.25)] scale-[calc(1-0.15*var(--nested-dialogs))] data-nested-dialog-open:rounded-lg data-nested-dialog-open:translate-y-[calc(1%*var(--nested-dialogs))]\",\n },\n bottom: {\n viewport: \"flex-col justify-end\",\n popup:\n \"h-auto border-t [transition-property:translate,opacity,scale,border-radius] will-change-[translate,opacity,scale,border-radius] duration-300 ease-[cubic-bezier(0.215,0.61,0.355,1)] data-starting-style:opacity-0 data-starting-style:translate-y-full data-ending-style:opacity-0 data-ending-style:translate-y-full opacity-[calc(1-var(--nested-dialogs)*0.25)] scale-[calc(1-0.15*var(--nested-dialogs))] data-nested-dialog-open:rounded-lg data-nested-dialog-open:-translate-y-[calc(1%*var(--nested-dialogs))]\",\n },\n },\n variant: {\n full: {},\n rounded: {\n viewport: \"p-3\",\n popup: \"rounded-lg border\",\n },\n },\n },\n defaultVariants: {\n side: \"right\",\n variant: \"full\",\n },\n});\n\ninterface SheetViewportProps extends SheetPrimitive.Viewport.Props {\n side?: VariantProps[\"side\"];\n variant?: VariantProps[\"variant\"];\n}\n\nfunction SheetViewport({\n side = \"right\",\n variant = \"full\",\n className,\n ...props\n}: SheetViewportProps) {\n const { viewport: viewportStyles } = sheetVariants();\n\n return (\n \n );\n}\n\ninterface SheetPopupProps extends SheetPrimitive.Popup.Props {\n side?: VariantProps[\"side\"];\n variant?: VariantProps[\"variant\"];\n showCloseButton?: boolean;\n reduceMotion?: boolean;\n}\n\nfunction SheetPopup({\n side = \"right\",\n variant = \"full\",\n showCloseButton = true,\n reduceMotion = false,\n className,\n children,\n ...props\n}: SheetPopupProps) {\n const { popup: popupStyles } = sheetVariants();\n\n return (\n \n \n \n \n {children}\n {showCloseButton && (\n \n \n Close\n \n )}\n \n \n \n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\ninterface SheetTitleProps extends SheetPrimitive.Title.Props {}\n\nfunction SheetTitle({ className, ...props }: SheetTitleProps) {\n return (\n \n );\n}\n\ninterface SheetDescriptionProps extends SheetPrimitive.Description.Props {}\n\nfunction SheetDescription({ className, ...props }: SheetDescriptionProps) {\n return (\n \n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPopup,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n",
"type": "registry:ui",
"target": "components/ui/sheet.tsx"
}
]
}