Parallel slots — named props в layout; intercepting — (.) overlay; default.tsx обязателен.
Пример
export default function Layout({
children, modal,
}: { children: React.ReactNode; modal: React.ReactNode }) {
return <>{children}{modal}; // modal slot overlays the feed
}
import { Modal } from './modal';
export default async function PhotoModal({ params }: { params: Promise }) {
const { id } = await params;
return ;
}
export default function Default() { return null; }
export default async function PhotoPage({ params }: { params: Promise }) {
const { id } = await params;
return ;
}
Итог
Shareable modal pattern: @modal slot + (.) intercept + full page fallback + default.tsx.