/* embeddedTR — blog ortak bileşenleri (liste + yazı sayfası paylaşır) */
const { useState: useStateB, useEffect: useEffectB } = React;
/* tarih → Türkçe okunur biçim */
const TR_AY = ["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"];
function fmtDate(iso) {
const d = new Date(iso + "T00:00:00");
if (isNaN(d)) return iso;
return d.getDate() + " " + TR_AY[d.getMonth()] + " " + d.getFullYear();
}
const CAT_ICON = { "Protokoller": "share", "Tarih": "book", "Linux": "terminal", "Donanım": "chip" };
/* ─── kapak: görsel varsa onu, yoksa şık yer tutucu çiz ─── */
function Cover({ post, showCat = true }) {
const [err, setErr] = useStateB(false);
// Görsel henüz yoksa/yüklenmezse yer tutucuya düş: onError + boş yükleme +
// zaman aşımı (önizleme proxy'si 404 yerine isteği asabiliyor).
const imgRef = React.useRef(null);
useEffectB(() => {
if (!post.cover || err) return;
const el = imgRef.current;
if (el && el.complete && el.naturalWidth === 0) { setErr(true); return; }
const to = setTimeout(() => {
const n = imgRef.current;
if (!n || !n.complete || n.naturalWidth === 0) setErr(true);
}, 2500);
return () => clearTimeout(to);
}, [post.cover, err]);
const Cat = showCat && {post.category};
if (err || !post.cover) {
const I = Icons[CAT_ICON[post.category] || "article"];
return (
);
}
return (

setErr(true)}
onLoad={(e) => { if (e.target.naturalWidth === 0) setErr(true); }} />
{Cat}
);
}
/* ─── nav (blog sayfaları için; linkler ana sayfaya döner) ─── */
function BlogNav({ theme, toggleTheme }) {
const [scrolled, setScrolled] = useStateB(false);
const [open, setOpen] = useStateB(false);
useEffectB(() => {
const f = () => setScrolled(window.scrollY > 12);
f(); window.addEventListener("scroll", f, { passive: true });
return () => window.removeEventListener("scroll", f);
}, []);
const here = location.pathname.split("/").pop();
const links = [
["Projeler", "index.html#projeler"], ["Blog", "blog.html"], ["Soru-Cevap", "index.html#soru-cevap"],
["Kütüphaneler", "index.html#kutuphaneler"], ["Topluluk", "index.html#topluluk"],
];
return (
);
}
/* ─── footer (linkler ana sayfaya) ─── */
function BlogFooter() {
const cols = [
["Topluluk", [["Projeler","index.html#projeler"],["Blog","blog.html"],["Soru-Cevap","index.html#soru-cevap"],["Kütüphaneler","index.html#kutuphaneler"]]],
["Platformlar", [["STM32","blog.html"],["ESP32","blog.html"],["TMS320F","blog.html"],["Nuvoton","blog.html"]]],
["Kaynaklar", [["Başlangıç rehberi","blog.html"],["Katkı kuralları","blog.html"],["Etiketler","blog.html"],["SSS","blog.html"]]],
];
return (
);
}
Object.assign(window, { fmtDate, Cover, BlogNav, BlogFooter });