"use client"; // react-markdown + remark zinciri (~215 KB) yalnızca markdown gerçekten // çizileceği zaman insin. next/dynamic yerine elle sarmalayıcı: `loading` // children alamıyor, fallback'in AYNI class'lı düz metin olması gerekiyor ki // stream sırasında iskelet/boşluk flash'ı olmasın (chunk gelince yerinde // zenginleşir). import { useEffect, useReducer } from "react"; import type { MarkdownProps } from "./markdown"; let mod: typeof import("./markdown") | null = null; let soz: Promise | null = null; /** Chunk'ı önden ısıt (ör. sohbet mount olduğunda). */ export function preloadMarkdown(): Promise { return (soz ??= import("./markdown").then((m) => { mod = m; })); } export function MarkdownLazy({ fallback, ...props }: MarkdownProps & { fallback: React.ReactNode }) { const [, tazele] = useReducer((c: number) => c + 1, 0); useEffect(() => { if (!mod) void preloadMarkdown().then(() => tazele()); }, []); const Markdown = mod?.Markdown; return Markdown ? : <>{fallback}; }