"use client"; import * as SheetPrimitive from "@radix-ui/react-dialog"; import { Cross2Icon } from "@radix-ui/react-icons"; import { cva, type VariantProps } from "class-variance-authority"; import type { ComponentPropsWithRef, HTMLAttributes } from "react"; import { cn } from "@/lib/utils"; const Sheet = SheetPrimitive.Root; const SheetTrigger = SheetPrimitive.Trigger; const SheetClose = SheetPrimitive.Close; const SheetPortal = SheetPrimitive.Portal; function SheetOverlay({ className, ref, ...props }: ComponentPropsWithRef) { return ( ); } SheetOverlay.displayName = SheetPrimitive.Overlay.displayName; const sheetVariants = cva( "fixed z-50 gap-4 border border-border-neutral-secondary bg-bg-neutral-secondary p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out", { variants: { side: { top: "inset-x-0 top-0 rounded-b-xl data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", bottom: "inset-x-0 bottom-0 rounded-t-xl data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", left: "inset-y-0 left-0 h-full w-3/4 rounded-r-xl data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left", right: "inset-y-0 right-0 h-full w-3/4 rounded-l-xl data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right", }, variant: { default: "", navigation: "bg-bg-neutral-primary w-[264px] max-w-[264px] gap-0 rounded-none p-0", }, }, defaultVariants: { side: "right", variant: "default", }, }, ); interface SheetContentProps extends ComponentPropsWithRef, VariantProps { showCloseButton?: boolean; } function SheetContent({ children, className, ref, showCloseButton = true, side = "right", variant = "default", ...props }: SheetContentProps) { return ( {showCloseButton && ( Close )} {children} ); } SheetContent.displayName = SheetPrimitive.Content.displayName; const SheetHeader = ({ className, ...props }: HTMLAttributes) => (
); SheetHeader.displayName = "SheetHeader"; const SheetFooter = ({ className, ...props }: HTMLAttributes) => (
); SheetFooter.displayName = "SheetFooter"; function SheetTitle({ className, ref, ...props }: ComponentPropsWithRef) { return ( ); } SheetTitle.displayName = SheetPrimitive.Title.displayName; function SheetDescription({ className, ref, ...props }: ComponentPropsWithRef) { return ( ); } SheetDescription.displayName = SheetPrimitive.Description.displayName; export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };