/** * NbInertia Modal System - Hook-First API * * This module provides a hook-first modal system for Inertia.js applications. * It handles the hard parts (state management, history integration, prop handling) * while you bring your own UI (Radix, shadcn, Headless UI, etc.). * * @example Basic setup with your own UI * ```tsx * import { * ModalStackProvider, * useModalStack, * InitialModalHandler, * } from '@nordbeam/nb-inertia/modals'; * import { Dialog } from '@radix-ui/react-dialog'; * * // Set up component resolver (using Vite's import.meta.glob) * const pages = import.meta.glob('./pages/**\/*.tsx'); * const resolveComponent = (name: string) => * pages[`./pages/${name}.tsx`]().then((m: any) => m.default); * * function App({ Component, props }) { * return ( * * * * * * ); * } * * // Your custom modal renderer using any UI library * function MyModalRenderer({ resolveComponent }) { * const { modals, popModal } = useModalStack(); * * return modals.map((modal) => ( * popModal(modal.id)}> * * * * * )); * } * ``` * * @example Using ModalLink with your UI * ```tsx * import { ModalLink } from '@nordbeam/nb-inertia/modals'; * import { user_path } from '@/routes'; * * // ModalLink triggers the fetch, your renderer handles the display * View User * ``` */ export { ModalStackProvider, useModalStack, useModal, useIsInModal, useModalPageContext, ModalPageProvider, } from './modalStack'; export type { ModalPageObject, ModalPageProviderProps, ModalStackProviderProps, ResolveComponentFn, } from './modalStack'; export { usePage } from './usePage'; export type { Page } from './usePage'; export { InitialModalHandler } from './InitialModalHandler'; export type { InitialModalHandlerProps, ModalOnBase } from './InitialModalHandler'; export { ClientModalLink } from './ClientModalLink'; export type { ClientModalLinkProps } from './ClientModalLink'; export { ModalLink } from './ModalLink'; export type { ModalLinkProps } from './ModalLink'; export type { ModalConfig, ModalSize, ModalPosition, ModalInstance, ModalStackContextValue, PrefetchedModal, } from './types'; export { DEFAULT_MODAL_CONFIG, mergeModalConfig } from './types'; export { setupModalInterceptor, isModalInterceptorRegistered } from '../preserveBackdrop'; //# sourceMappingURL=index.d.ts.map