'use client'; import { type AllHTMLAttributes } from 'react'; import { useExternRef } from '../../hooks/useExternRef'; import { useFocusTrap, type UseFocusTrapProps } from '../../hooks/useFocusTrap'; import { DEFAULT_MUTATION_OBSERVER_OPTIONS } from '../../hooks/useMutationObserver'; import type { HasComponent, HasRootRef } from '../../types'; export interface FocusTrapProps extends UseFocusTrapProps, Omit, keyof UseFocusTrapProps>, HasRootRef, HasComponent {} export const FocusTrap = ({ Component = 'div', onClose, autoFocus = true, restoreFocus = true, disabled = false, mount = true, timeout = 0, getRootRef, children, captureEscapeKeyboardEvent = true, mutationObserverOptions = DEFAULT_MUTATION_OBSERVER_OPTIONS, ...restProps }: FocusTrapProps): React.ReactNode => { const ref = useExternRef(getRootRef); useFocusTrap(ref, { autoFocus, restoreFocus, disabled, mount, timeout, onClose, captureEscapeKeyboardEvent, mutationObserverOptions, }); return ( {children} ); };