/** * Copyright (c) Paymium. * * This source code is licensed under the MIT license found in the * LICENSE file in the root of this projects source tree. */ import type { ComponentType, PropsWithChildren } from 'react'; import { createSheetMain } from './Sheet'; import { withStaticProperties } from '@crossed/core'; import { createSheetTrigger } from './SheetTrigger'; import { createSheetContent } from './SheetContent'; import { createSheetPortal } from './SheetPortal'; import { createSheetOverlay } from './SheetOverlay'; import { createSheetHandle } from './SheetHandle'; import type { PressableProps } from 'react-native'; export { useContext as useSheetContext } from './context'; export const createSheet = < RootProps extends Record, TriggerProps extends Record, ContentProps extends Record, PortalProps extends Record, OverlayProps extends Record, HandleProps extends PressableProps, >(components: { Root: ComponentType; Trigger: ComponentType; Content: ComponentType; Portal: ComponentType>; Overlay: ComponentType; Handle: ComponentType; }) => { const { Root, Trigger, Content, Portal, Overlay, Handle } = components; const Sheet = createSheetMain(Root); const SheetTrigger = createSheetTrigger(Trigger); const SheetContent = createSheetContent(Content); const SheetOverlay = createSheetOverlay(Overlay); const SheetPortal = createSheetPortal(Portal); const SheetHandle = createSheetHandle(Handle); Sheet.displayName = 'Sheet'; SheetTrigger.displayName = 'Sheet.Trigger'; SheetContent.displayName = 'Sheet.Content'; SheetOverlay.displayName = 'Sheet.Overlay'; SheetPortal.displayName = 'Sheet.Portal'; SheetHandle.displayName = 'Sheet.Handle'; return withStaticProperties(Sheet, { Trigger: SheetTrigger, Content: SheetContent, Portal: SheetPortal, Overlay: SheetOverlay, Handle: SheetHandle, }); };