import * as React from 'react' import { Drawer, Box, Text, Group } from '@mantine/core' type SheetSide = 'top' | 'bottom' | 'left' | 'right' interface SheetProps { open?: boolean onOpenChange?: (open: boolean) => void children: React.ReactNode } interface SheetContentProps extends React.ComponentProps<'div'> { side?: SheetSide showCloseButton?: boolean children?: React.ReactNode } const SheetContext = React.createContext<{ open: boolean setOpen: (open: boolean) => void }>({ open: false, setOpen: () => {} }) function Sheet({ open: controlledOpen, onOpenChange, children }: SheetProps) { const [internalOpen, setInternalOpen] = React.useState(false) const open = controlledOpen ?? internalOpen const setOpen = React.useCallback( (v: boolean) => { onOpenChange?.(v) if (controlledOpen === undefined) setInternalOpen(v) }, [controlledOpen, onOpenChange], ) return ( {children} ) } function SheetTrigger({ children, ...props }: React.ComponentProps<'button'>) { const { setOpen } = React.useContext(SheetContext) return ( ) } function SheetClose({ children, ...props }: React.ComponentProps<'button'>) { const { setOpen } = React.useContext(SheetContext) return ( ) } function SheetPortal({ children }: { children: React.ReactNode }) { return <>{children} } function SheetOverlay() { return null } const sizeMap: Record = { left: 'sm', right: 'sm', top: 'md', bottom: 'md', } function SheetContent({ side = 'right', showCloseButton = true, children, className, ...props }: SheetContentProps) { const { open, setOpen } = React.useContext(SheetContext) return ( setOpen(false)} position={side} withCloseButton={showCloseButton} size={sizeMap[side]} padding="md" data-slot="sheet-content" className={className} {...props} > {children} ) } function SheetHeader({ className, ...props }: React.ComponentProps<'div'>) { return } function SheetFooter({ className, ...props }: React.ComponentProps<'div'>) { return ( ) } function SheetTitle({ className, children, ...props }: React.ComponentProps<'div'>) { return ( {children} ) } function SheetDescription({ className, children, ...props }: React.ComponentProps<'div'>) { return ( {children} ) } const sheetVariants = {} as const export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, sheetVariants } export type { SheetContentProps }