/* global React */ const { useState, useEffect, useRef } = React; /* ========================================================== ICONS ========================================================== */ const ArrowIcon = ({ size = 14 }) => ( ); const PlusIcon = () => ( ); /* ========================================================== MONOGRAM — sygnet "C" z paragrafem (oryginalna kompozycja) ========================================================== */ const Monogram = ({ stroke = "currentColor" }) => ( {/* C — łukowo */} {/* paragraf w środku */} ); /* ========================================================== BRAND ========================================================== */ const Brand = ({ name, tagline = "EST. 2024 · WARSZAWA", onClick, variant }) => { const isHeader = variant === "header"; return (
{!isHeader && (
)}
{isHeader ? ( <> {name} CENTRUM ODWOŁAŃ PRAWNICZYCH ) : ( <> {name} )}
); }; /* ========================================================== HEADER + NAV ========================================================== */ const NAV_ITEMS = [ { id: "home", label: "Strona główna" }, { id: "procedura", label: "Procedura odwołania" }, { id: "wyroznia", label: "Co nas wyróżnia" }, { id: "kontakt", label: "Kontakt" }, ]; const Header = ({ page, setPage, brandName }) => (
setPage("home")} />
); /* ========================================================== FOOTER ========================================================== */ const Footer = ({ setPage, brandName }) => ( ); /* ========================================================== SHARED CTA ========================================================== */ const CtaBanner = ({ setPage }) => (
Skontaktuj się

Nie czekaj na kolejny termin egzaminu.

Zgłoś się do nas, a pomożemy Ci zawalczyć o Twój wynik już teraz. Napisz do nas, by omówić Twoją sytuację — analiza pracy jest pierwszym krokiem.

setPage("kontakt")}>Umów konsultację setPage("procedura")}> Zobacz procedurę

Szybkie zgłoszenie

Odpowiadamy w ciągu 24 godzin roboczych.

); /* ========================================================== QUICK CTA FORM (in CtaBanner) — sends via send.php ========================================================== */ const CtaForm = () => { const [sent, setSent] = useState(false); const [busy, setBusy] = useState(false); if (sent) { return (

Dziękujemy.

Odezwiemy się w ciągu 24 godzin roboczych.

); } return (
{ e.preventDefault(); if (busy) return; setBusy(true); const f = e.target; const data = new FormData(f); data.append("source", "cta-banner"); try { const res = await fetch("send.php", { method: "POST", body: data }); const json = await res.json(); if (json.ok) { setSent(true); } else { alert(json.error || "Wystąpił błąd. Napisz na egzaminyprawniczeodwolaniapl@gmail.com"); } } catch (err) { alert("Brak połączenia. Napisz na egzaminyprawniczeodwolaniapl@gmail.com"); } setBusy(false); }}>
); }; /* ========================================================== PAGE INTRO (used by sub-pages) ========================================================== */ const PageIntro = ({ crumb, title, lead, setPage }) => (
setPage("home")}>Strona główna  /  {crumb}

{title}

{lead &&

{lead}

}
); Object.assign(window, { ArrowIcon, PlusIcon, Monogram, Brand, Header, Footer, CtaBanner, CtaForm, PageIntro, NAV_ITEMS, });