"use client"; import { Dialog as SheetPrimitive } from "@base-ui/react/dialog"; import { mergeProps } from "@base-ui/react/merge-props"; import { useRender } from "@base-ui/react/use-render"; import { XIcon } from "lucide-react"; import type React from "react"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { ScrollArea } from "@/components/ui/scroll-area"; export const Sheet: typeof SheetPrimitive.Root = SheetPrimitive.Root; export const SheetPortal: typeof SheetPrimitive.Portal = SheetPrimitive.Portal; export function SheetTrigger( props: SheetPrimitive.Trigger.Props, ): React.ReactElement { return ; } export function SheetClose( props: SheetPrimitive.Close.Props, ): React.ReactElement { return ; } export function SheetBackdrop({ className, ...props }: SheetPrimitive.Backdrop.Props): React.ReactElement { return ( ); } export function SheetViewport({ className, side, variant = "default", ...props }: SheetPrimitive.Viewport.Props & { side?: "right" | "left" | "top" | "bottom"; variant?: "default" | "inset"; }): React.ReactElement { return ( ); } export function SheetPopup({ className, children, showCloseButton = true, side = "right", variant = "default", closeProps, portalProps, ...props }: SheetPrimitive.Popup.Props & { showCloseButton?: boolean; side?: "right" | "left" | "top" | "bottom"; variant?: "default" | "inset"; closeProps?: SheetPrimitive.Close.Props; portalProps?: SheetPrimitive.Portal.Props; }): React.ReactElement { return ( {children} {showCloseButton && ( } {...closeProps} > )} ); } export function SheetHeader({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement { const defaultProps = { className: cn( "flex flex-col gap-2 p-6 in-[[data-slot=sheet-popup]:has([data-slot=sheet-panel])]:pb-3 max-sm:pb-4", className, ), "data-slot": "sheet-header", }; return useRender({ defaultTagName: "div", props: mergeProps<"div">(defaultProps, props), render, }); } export function SheetFooter({ className, variant = "default", render, ...props }: useRender.ComponentProps<"div"> & { variant?: "default" | "bare"; }): React.ReactElement { const defaultProps = { className: cn( "flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end", variant === "default" && "border-t bg-muted/72 py-4", variant === "bare" && "in-[[data-slot=sheet-popup]:has([data-slot=sheet-panel])]:pt-3 pt-4 pb-6", className, ), "data-slot": "sheet-footer", }; return useRender({ defaultTagName: "div", props: mergeProps<"div">(defaultProps, props), render, }); } export function SheetTitle({ className, ...props }: SheetPrimitive.Title.Props): React.ReactElement { return ( ); } export function SheetDescription({ className, ...props }: SheetPrimitive.Description.Props): React.ReactElement { return ( ); } export function SheetPanel({ className, scrollFade = true, render, ...props }: useRender.ComponentProps<"div"> & { scrollFade?: boolean; }): React.ReactElement { const defaultProps = { className: cn( "p-6 in-[[data-slot=sheet-popup]:has([data-slot=sheet-header])]:pt-1 in-[[data-slot=sheet-popup]:has([data-slot=sheet-footer]:not(.border-t))]:pb-1", className, ), "data-slot": "sheet-panel", }; return ( {useRender({ defaultTagName: "div", props: mergeProps<"div">(defaultProps, props), render, })} ); } export { SheetPrimitive, SheetBackdrop as SheetOverlay, SheetPopup as SheetContent, };