import { Suspense, useState, type ReactNode } from 'react';
import { Spin } from 'antd';
interface LazyMountProps {
when: boolean;
fallback?: ReactNode;
children: ReactNode;
}
// Mounts children only after `when` first becomes true and keeps them mounted
// thereafter, so React.lazy modals get loaded on demand but their close
// animations still play out. Pair with `lazy(() => import(...))` modal imports
// on heavy list pages to keep the initial bundle small.
export default function LazyMount({ when, fallback = , children }: LazyMountProps) {
const [mounted, setMounted] = useState(when);
if (when && !mounted) setMounted(true);
if (!mounted) return null;
return {children};
}