'use client'; import { jsx } from 'react/jsx-runtime'; import { createContext } from '@chakra-ui/utils'; import { AnimatePresence } from 'framer-motion'; import { useModal } from './use-modal.mjs'; import { Portal } from '../portal/portal.mjs'; import { useMultiStyleConfig } from '../system/use-style-config.mjs'; const [ModalStylesProvider, useModalStyles] = createContext({ name: `ModalStylesContext`, errorMessage: `useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" ` }); const [ModalContextProvider, useModalContext] = createContext({ strict: true, name: "ModalContext", errorMessage: "useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``" }); const Modal = (props) => { const modalProps = { scrollBehavior: "outside", autoFocus: true, trapFocus: true, returnFocusOnClose: true, blockScrollOnMount: true, allowPinchZoom: false, preserveScrollBarGap: true, motionPreset: "scale", ...props, lockFocusAcrossFrames: props.lockFocusAcrossFrames || true }; const { portalProps, children, autoFocus, trapFocus, initialFocusRef, finalFocusRef, returnFocusOnClose, blockScrollOnMount, allowPinchZoom, preserveScrollBarGap, motionPreset, lockFocusAcrossFrames, animatePresenceProps, onCloseComplete } = modalProps; const styles = useMultiStyleConfig("Modal", modalProps); const modal = useModal(modalProps); const context = { ...modal, autoFocus, trapFocus, initialFocusRef, finalFocusRef, returnFocusOnClose, blockScrollOnMount, allowPinchZoom, preserveScrollBarGap, motionPreset, lockFocusAcrossFrames }; return /* @__PURE__ */ jsx(ModalContextProvider, { value: context, children: /* @__PURE__ */ jsx(ModalStylesProvider, { value: styles, children: /* @__PURE__ */ jsx( AnimatePresence, { ...animatePresenceProps, onExitComplete: onCloseComplete, children: context.isOpen && /* @__PURE__ */ jsx(Portal, { ...portalProps, children }) } ) }) }); }; Modal.displayName = "Modal"; export { Modal, ModalContextProvider, useModalContext, useModalStyles };