/* global React, NereusIcons */ const I_svc = NereusIcons; const { useState: useStateSvc } = React; /* Service hero */ function ServiceHero({ kicker, title, em, lead, ctaText = 'Ingyenes konzultáció', ctaSec = 'Folyamat megtekintése', tags = [], stats = [] }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{kicker}

{renderTitle()}

{lead}

{ctaText} {ctaSec}
{tags.map((t, i) => {t})}
{stats.length > 0 &&
{stats.map((s, i) =>
{s.n}
{s.l}
)}
}
); } /* About + side compare */ function AboutService({ eyebrow, title, em, lead, bullets = [], compareTitle, compareA, compareB }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{eyebrow}

{renderTitle()}

{lead}

{bullets.length > 0 &&
    {bullets.map((b, i) =>
  • {b}
  • )}
}
{compareA && compareB &&
{compareTitle}
{compareA.h}
{compareA.p}
— VS —
{compareB.h}
{compareB.p}
}
); } /* When it fits (6 cards) */ function WhenItFits({ eyebrow = 'Mikor érdemes', title, em, lead, items = [] }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{eyebrow}

{renderTitle()}

{lead &&

{lead}

}
{items.map((it, i) =>
0{i + 1}

{it.t}

{it.c}

)}
); } /* Process timeline (numbered steps with phase + duration) */ function ProcessTimeline({ eyebrow = 'Folyamat', title, em, lead, steps = [] }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{eyebrow}

{renderTitle()}

{lead &&

{lead}

}
{steps.map((s, i) =>
{i + 1}
{s.phase}
{s.duration}

{s.title}

{s.copy}

{s.tags &&
{s.tags.map((t, j) => {t})}
}
)}
); } /* Deliverables — 4-up on dark */ function Deliverables({ eyebrow = 'Deliverables', title, em, lead, items = [] }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{eyebrow}

{renderTitle()}

{lead &&

{lead}

}
{items.map((d, i) =>
{d.badge && {d.badge}}

{d.t}

{d.c}

)}
); } /* Comparison table (Red Team vs Pentest) */ function ComparisonTable({ eyebrow, title, em, lead, columns = [], rows = [] }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{eyebrow}

{renderTitle()}

{lead &&

{lead}

}
Szempont
{columns.map((c, i) =>
{c.h}
{c.s}
)}
{rows.map((r, i) =>
{r.aspect}
{r.cells.map((c, j) =>
{columns[j] && {columns[j].h}} {c}
)}
)}
); } /* Decision lists */ function DecisionLists({ eyebrow = 'Döntéssegítő', title, em, lead, colA, colB }) { const renderTitle = () => { if (!em) return title; const parts = title.split(em); return <>{parts[0]}{em}{parts[1]}; }; return (
{eyebrow}

{renderTitle()}

{lead &&

{lead}

}

{colA.h}

    {colA.items.map((it, i) =>
  • {it}
  • )}

{colB.h}

    {colB.items.map((it, i) =>
  • {it}
  • )}
); } /* Contact block */ function ContactBlock({ title = 'Vedd fel velünk a', em = 'kapcsolatot', lead, service }) { const [sent, setSent] = useStateSvc(false); const [sending, setSending] = useStateSvc(false); const [error, setError] = useStateSvc(null); const [form, setForm] = useStateSvc({ name: '', email: '', phone: '', company: '', size: '21-50', service: service || 'Phishing szimuláció', msg: '', consent: false, botcheck: '' }); const submit = async (e) => { e.preventDefault(); if (form.botcheck) return; // honeypot setSending(true);setError(null); try { await submitToWeb3Forms({ name: form.name, email: form.email, phone: form.phone, company: form.company, 'Cég mérete': form.size, 'Érdeklődés': form.service, message: form.msg }, `Kapcsolatfelvétel: ${form.service} — ${form.company || form.name}`); setSent(true); } catch (err) { setError(err.message || 'Hiba történt. Próbáld újra, vagy írj az info@nereuslab.hu címre.'); } finally { setSending(false); } }; const update = (k, v) => setForm({ ...form, [k]: v }); return (
Kapcsolat

{title} {em}.

{lead || 'Egy 30 perces, kötetlen beszélgetésen átnézzük a helyzeteteket és a célokat — utána mi szólunk, hogy szerintünk hol érdemes elindulni.'}

info@nereuslab.hu +36 30 000 0000
Hitelesítés
CEH OSCP CISSP ISO 27001
{sent ?

Köszönjük — megkaptuk!

24 órán belül visszajelzünk emailben, javaslunk pár szabad időpontot a beszélgetésre.

: