const DS4 = window.IseeITDesignSystem_37fb1f; // Auf Modulebene, nicht im Kontakt-Render definiert: sonst bekommt React bei jedem // Tastenanschlag einen neuen Komponententyp und baut die Fotos neu auf (Flackern). const KZ = ({ label, children }) =>

{label}

{children}
; const KPerson = ({ bild, name, rolle }) =>
{bild ? {name} : } {name} {rolle}
; function Fragen() { const { t } = React.useContext(window.SpracheCtx); const f = t.fragen; return
{f.kicker}

{f.titel}

{f.qa.slice(0, -1).map((q, i) =>

{window.FETT(q.a)}

)}
{/* Die letzte Antwort ist die Brücke zum Formular: keine zuklappbare Zeile, sondern eine stehende Kachel. */}

{f.qa[f.qa.length - 1].f}

{window.FETT(f.qa[f.qa.length - 1].a)}

; } function Kontakt({ onGoto }) { const { t } = React.useContext(window.SpracheCtx); const k = t.kontakt; const weit = window.useMedia('(min-width: 760px)'); const laeuftMit = window.useMedia('(min-width: 1000px)'); const [status, setStatus] = React.useState('offen'); // offen | sendet | danke | mailweg const [t0] = React.useState(() => Date.now()); const [f, setF] = React.useState({ name: '', mail: '', fokus: '', land: '', profil: '', links: [], nachricht: '', firma: '', ok: false }); const [datei, setDatei] = React.useState(null); const [dateiFehler, setDateiFehler] = React.useState(''); const [schluessel, setSchluessel] = React.useState(0); const set = (kk) => (e) => setF({ ...f, [kk]: e.target.type === 'checkbox' ? e.target.checked : e.target.value }); const setLink = (i) => (e) => setF(v => { const l = v.links.slice(); l[i] = e.target.value; return { ...v, links: l }; }); const linkWeg = (i) => () => setF(v => ({ ...v, links: v.links.filter((_, j) => j !== i) })); const linkDazu = () => setF(v => v.links.length >= 3 ? v : { ...v, links: v.links.concat('') }); // Anhang: nur PDF und Word, höchstens 4 MB. Geprüft wird hier für die Rechenzeit des // Besuchers und ein zweites Mal auf dem Server — dort zählt allein die Serverprüfung. const dateiWaehlen = (e) => { const d = e.target.files && e.target.files[0]; setDateiFehler(''); setDatei(null); if (!d) return; if (!/\.(pdf|doc|docx)$/i.test(d.name)) { setDateiFehler(k.form.cvTyp); e.target.value = ''; return; } if (d.size > 4 * 1024 * 1024) { setDateiFehler(k.form.cvGross); e.target.value = ''; return; } const r = new FileReader(); r.onload = () => setDatei({ name: d.name, groesse: d.size, daten: String(r.result).split(',')[1] || '' }); r.onerror = () => { setDateiFehler(k.form.cvFehler); e.target.value = ''; }; r.readAsDataURL(d); }; const dateiWeg = () => { setDatei(null); setDateiFehler(''); setSchluessel(n => n + 1); }; // Die linke Spalte („06 Schreiben Sie uns", Titel, Ansprechpartner) bleibt unter der // Kopfzeile verankert, während das Formular rechts weiterläuft: Der Abschnittsanfang // ist immer im Blick — genau wie beim Aufsetzen der Sektion. const mailOk = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(f.mail.trim()); const ready = f.name && mailOk && f.ok; const absenden = () => { if (status === 'sendet') return; setStatus('sendet'); const links = f.links.map(s => s.trim()).filter(Boolean); const ctrl = new AbortController(); const timer = setTimeout(() => ctrl.abort(), datei ? 30000 : 8000); fetch('kontakt.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: f.name, mail: f.mail, fokus: f.fokus, land: f.land, profil: f.profil, links, nachricht: f.nachricht, firma: f.firma, t0, datei: datei ? { name: datei.name, daten: datei.daten } : null }), signal: ctrl.signal }) .then(r => r.json().then(j => { if (!r.ok || !j.ok) throw new Error('senden'); setStatus('danke'); })) .catch(() => { // Rückfallweg ohne Server: E-Mail-Programm mit fertiger Nachricht öffnen. const betreff = encodeURIComponent('Kontakt: ' + f.name + (f.fokus ? ' · ' + f.fokus : '') + (f.land ? ' → ' + f.land : '')); const rumpf = encodeURIComponent('Name: ' + f.name + '\nE-Mail: ' + f.mail + (f.fokus ? '\nFachgebiet: ' + f.fokus : '') + (f.land ? '\nZielland: ' + f.land : '') + (f.profil ? '\nProfil: ' + f.profil : '') + (links.length ? '\nWeitere Links: ' + links.join(' · ') : '') + (datei ? '\n\n' + k.form.mailAnhang : '') + (f.nachricht ? '\n\n' + f.nachricht : '')); window.location.href = 'mailto:info@iseeit-talent.de?subject=' + betreff + '&body=' + rumpf; setStatus('mailweg'); }) .finally(() => clearTimeout(timer)); }; const offen = [!f.name && k.form.offenFelder[0], !mailOk && k.form.offenFelder[1], !f.ok && k.form.offenFelder[4]].filter(Boolean).join(', '); return
{k.kicker}

{k.titel}

{window.FETT(k.intro)}

{k.ansprechLabel}

{k.ansprechZeile}

info@iseeit-talent.de Deutsch · English · Ελληνικά · Español

{k.danachLabel}

{k.danach.map((d, i) =>

{d.t} {d.x}

)}

{k.datenHinweis}

{(status === 'offen' || status === 'sendet') ?

{window.FETT(k.form.intro)}

{f.mail.trim() !== '' && !mailOk &&

{k.form.mailPruefen}

}
{f.links.map((v, i) =>
)} {f.links.length < 3 && }
{datei &&

{datei.name} · {Math.max(1, Math.round(datei.groesse / 1024))} KB

} {dateiFehler &&

{dateiFehler}

}
{k.form.einwilligung} { e.preventDefault(); onGoto && onGoto('datenschutz'); }}>{k.form.datenschutzLink}} /> {!ready &&

{k.form.offenPrefix} {offen}.

} {status === 'sendet' ? k.form.sendet : k.form.senden}
:
{k.form.dankeKicker} {status === 'danke' ?

{k.form.dankeText}

:

{k.form.mailHinweis}

} setStatus('offen')} style={{ marginTop: '22px' }}>{k.form.nochmal}
}
; } function SiteFooter({ page, onGoto, onNav }) { const { t } = React.useContext(window.SpracheCtx); const ft = t.footer; const col = { margin: 0, font: "400 11.5px/1 var(--font-mono)", letterSpacing: '.1em', color: 'var(--sektion-tertiaer)' }; const lnk = { color: 'var(--sektion-text)' }; const karte = page === 'home' ? ft.karteHome : ft.karteSub; const toolKarte = ft.karteTool || { kicker: t.wahl.tool.kicker, titel: t.wahl.tool.titel, unter: t.wahl.tool.unter }; const Karte = ({ href, onClick, k, pfeil, breit }) => { e.currentTarget.style.borderColor = 'var(--gold-hell)'; e.currentTarget.style.background = 'rgba(251,248,243,.09)'; }} onMouseLeave={e => { e.currentTarget.style.borderColor = 'var(--sektion-linie)'; e.currentTarget.style.background = 'rgba(251,248,243,.04)'; }}> {k.kicker} {k.titel} {k.unter} {pfeil} ; const claimFarbe = { rot: 'color-mix(in oklab, var(--backstein-hell) 55%, var(--sektion-tertiaer))', gold: 'color-mix(in oklab, var(--gold-hell) 55%, var(--sektion-tertiaer))' }; return ; } const FL = { de: , ch: }; // Adressaten-Kachel im Kopf der Unternehmensseite: Flagge, Zielgruppe, sanfter Sprung zum Abschnitt. function AdressatKachel({ land, titel, ziel }) { const [hov, setHov] = React.useState(false); return { e.preventDefault(); window.sanftZu(ziel, 88); }} onMouseEnter={() => setHov(true)} onMouseLeave={() => setHov(false)} style={{ display: 'flex', alignItems: 'center', gap: '15px', background: hov ? 'var(--papier-ton)' : 'var(--karte-weiss,#FFFFFF)', border: hov ? '1px solid var(--backstein)' : '1px solid var(--linie)', padding: '18px 20px', minHeight: '64px', boxSizing: 'border-box', textDecoration: 'none', color: 'var(--tinte)', transition: 'border-color var(--dauer-hover) var(--ease), background var(--dauer-hover) var(--ease)' }}> {FL[land]} {titel} ; } function UnternehmenSeite({ onGoto }) { const { t } = React.useContext(window.SpracheCtx); const u = t.unternehmen; const zweiSp = window.useMedia('(min-width: 720px)'); // Vorbefüllte Anfrage-Mails: Betreff aus der sichtbaren Betreffzeile, kurzer Rumpf aus der Sprachdatei — ein Klick, absenden, fertig. const mailAn = (betreff, text) => 'mailto:info@iseeit-talent.de?subject=' + encodeURIComponent((betreff || '').replace(/^[^:]+:\s*/, '')) + '&body=' + encodeURIComponent(text || ''); const mailKond = mailAn(u.kondBetreff, u.kondMail); const mailPartner = mailAn(u.partnerBetreff, u.partnerMail); const mailChFirma = 'mailto:info@iseeit-talent.de?subject=' + encodeURIComponent(t.fragen.chMailBetreff || '') + '&body=' + encodeURIComponent(t.fragen.chMail || ''); const B = ({ children }) =>

{children}

; const FrageGrid = ({ titel, fragen }) =>

{titel}

{fragen.map((p) =>

{p.q}

{p.a}

)}
; return

{ e.preventDefault(); onGoto('home'); }}>{u.zurueck}

{u.kicker}

{u.h1}

{u.bandDe}

{u.wasTitel}

{u.wasText}

{u.kostenTitel}

{window.FETT(u.kostenP1)}

{window.FETT(u.kostenP2)}

{u.kostenP3} info@iseeit-talent.de

{u.rechtPunkte ?

{u.rechtTitel}

{u.rechtText}

    {u.rechtPunkte.map((p, i) =>
  • {window.FETT(p)}
  • )}

{u.rechtFuss}

: null}

{u.kondPre} info@iseeit-talent.de · {u.kondBetreff}

{u.bandCh} {/* Hinweis für Schweizer Arbeitgeber — von der Startseite hierher gezogen (Texte liegen weiter unter fragen.chHinweis). */}

{t.fragen.chHinweis} info@iseeit-talent.de. {t.fragen.chHinweisNach}

{u.liefernTitel}

{u.liefernText}

{u.kostenChTitel}

{window.FETT(u.kostenChP1)}

{window.FETT(u.kostenChP2)}

{u.kostenChP3} info@iseeit-talent.de

{u.partnerPre} info@iseeit-talent.de · {u.partnerBetreff}

; } Object.assign(window, { Fragen, Kontakt, SiteFooter, UnternehmenSeite });