/* embeddedTR — Q&A, Libraries, Roadmap, CTA, Footer, Join modal */ const { useState: useStateC } = React; /* ---------------- Q&A ---------------- */ function QuestionRow({ q }) { const [v, setV] = useStateC(q.votes); const [up, setUp] = useStateC(false); const toggle = () => { setUp(!up); setV(v + (up ? -1 : 1)); }; return (
{q.answers} {q.solved ? "çözüldü" : "cevap"} {q.solved && }

{q.q}

{q.tags.map((t) => {t})}
@{q.author} · {q.time}
); } function QA({ onJoin }) { const ref = useReveal(); return (
{QUESTIONS.map((q) => )}
); } /* ---------------- YOUTUBE ---------------- */ function VidThumb({ v }) { const [err, setErr] = useStateC(false); const I = Icons[v.icon] || Icons.play; return (
{v.img && !err ? ( {v.title} setErr(true)} /> ) : ( )} {v.dur && {v.dur}}
); } function YouTube() { const ref = useReveal(); return (
Video · YouTube

İzleyerek öğren, uygulayarak pekiştir.

Topluluğun video tarafı {CHANNEL.name} kanalında. Gömülü sistem projeleri, kod incelemeleri ve uygulamalı dersler — gerçek donanım üzerinde, baştan sona.

{CHANNEL.name} {CHANNEL.handle}
Abone Ol
{VIDEOS.map((v) => (
{v.tag}

{v.title}

))}
); } function Libraries() { const ref = useReveal(); return (
Kütüphaneler & sürücüler

Tekerleği yeniden icat etme.

STM32, ESP32, TMS320F ve Nuvoton için topluluk tarafından bakımı yapılan açık kaynak sürücüler.

{LIBS.map((l) => (
{l.mcu} {l.stars}

{l.name}

{l.desc}

{l.lang} $ etr add {l.name}
))}
); } /* ---------------- ROADMAP / VISION ---------------- */ function Roadmap() { const ref = useReveal(); const tr = { live: "yayında", progress: "geliştiriliyor", planned: "planlandı" }; return (
Vizyon & yol haritası

Türkiye’nin en büyük gömülü sistem topluluğunu kuruyoruz.

Mühendisleri, öğrencileri ve meraklıları tek platformda buluşturmak için adım adım ilerliyoruz. İşte yol haritamız:

~/ açık geliştirme · topluluk önerileriyle
    {ROADMAP.map((r) => (
  1. {r.label}

    {tr[r.status]}

    {r.desc}

  2. ))}
); } /* ---------------- CTA BAND ---------------- */ function CTA({ onJoin }) { const ref = useReveal(); return (
); } /* ---------------- FOOTER ---------------- */ function Footer() { const cols = [ ["Topluluk", [["Projeler","#projeler"],["Blog","blog.html"],["Soru-Cevap","#soru-cevap"],["Kütüphaneler","#kutuphaneler"]]], ["Platformlar", [["STM32","#projeler"],["ESP32","#projeler"],["TMS320F","#projeler"],["Nuvoton","#projeler"]]], ["Kaynaklar", [["Başlangıç rehberi","blog.html"],["Katkı kuralları","#"],["Etiketler","#"],["SSS","#"]]], ]; return (
embeddedTR

Türkiye’nin gömülü sistem topluluğu. Projeni paylaş, teknik yaz, sor & cevapla, birlikte öğren.

{cols.map(([h, items]) => (

{h}

{items.map(([label, href]) => {label})}
))}
© 2026 embeddedTR — topluluk tarafından, topluluk için. build · v0.1.0 · made in Türkiye 🇹🇷
); } /* ---------------- JOIN MODAL ---------------- */ function JoinModal({ open, onClose }) { const [email, setEmail] = useStateC(""); const [done, setDone] = useStateC(false); React.useEffect(() => { if (open) { setDone(false); setEmail(""); } }, [open]); if (!open) return null; const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); return (
e.stopPropagation()}> {!done ? ( <>

Topluluğa katıl

E-postanı bırak, açılışta ilk sen haberdar ol. Spam yok — sadece gömülü sistemler.

{ e.preventDefault(); if (valid) setDone(true); }}> setEmail(e.target.value)} aria-label="E-posta" />
veya
) : (

Listeye eklendin! 🎉

Teşekkürler — embeddedTR açılırken ilk davet sana gelecek.

)}
); } Object.assign(window, { QA, YouTube, Libraries, Roadmap, CTA, Footer, JoinModal });