/* global React, REPORT_SECTIONS, AUDIENCES, PILLARS, AzorDemo, Icon */
// AZOR — page sections (everything outside the interactive demo).
const { useEffect: useEffectS, useState: useStateS } = React;
// ============= Reveal-on-scroll wrapper =====================
function Reveal({ children, delay = 0, as: Tag = "div", style = {}, ...rest }) {
const [visible, setVisible] = useStateS(true);
const ref = React.useRef(null);
useEffectS(() => {
const el = ref.current;
if (!el) return;
// Start hidden, then reveal — but only schedule this AFTER mount,
// so initial paint (and html-to-image captures) see content.
setVisible(false);
const rect = el.getBoundingClientRect();
if (rect.top < window.innerHeight && rect.bottom > 0) {
const t = setTimeout(() => setVisible(true), 30 + delay);
return () => clearTimeout(t);
}
const obs = new IntersectionObserver((entries) => {
entries.forEach((e) => { if (e.isIntersecting) { setVisible(true); obs.disconnect(); }});
}, { threshold: 0.08 });
obs.observe(el);
return () => obs.disconnect();
}, []);
return (
{children}
);
}
// ============= Wordmark / monogram =========================
function AzorMark({ size = 28, mode = "light" }) {
const stroke = mode === "light" ? "var(--navy-950)" : "var(--paper)";
const accent = "var(--copper-600)";
return (
);
}
// ============= Top nav ====================================
function TopNav() {
return (
AZOR = Agent Zamówień i Oceny Ryzyka
{["Jak działa", "Raport", "Bezpieczeństwo", "Cennik"].map((l) => (
{l}
))}
);
}
// ============= HERO =======================================
function Hero({ direction = "split" }) {
return (
{/* Drifting gradient orbs */}
Agent Zamówień i Oceny Ryzyka
Decyzja ofertowa zanim stracisz{" "}
tydzień na zły przetarg.
Wklej link lub dodaj PDF. Otrzymaj ośmiosekcyjny raport, listę ryzyk
i jednoznaczną decyzję STARTUJEMY {" / "}
WARUNKOWO {" / "}
NIE STARTUJEMY .
● e-Zamówienia · TED · SmartPZP
● evidence + odnośniki
● ISO 27001 / RODO
{direction === "split" && (
)}
);
}
// ============= How it works ===============================
function HowItWorks() {
const steps = [
{ num: "01", code: "INPUT", title: "Dodajesz URL lub paczkę PDF", desc: "e-Zamówienia, TED, SmartPZP, e-Propublico, lub plik źródłowy SWZ.", icon: "link" },
{ num: "02", code: "MERGE", title: "AZOR łączy SWZ, Q&A i zmiany", desc: "Wszystkie modyfikacje, sprostowania i tury pytań na jednej osi czasu.", icon: "branch" },
{ num: "03", code: "DECIDE", title: "Otrzymujesz raport i decyzję", desc: "Osiem sekcji, lista ryzyk, braków danych, oraz wstępna decyzja ofertowa.", icon: "shield-check" },
];
return (
> PROCES · 3 KROKI
Jak to działa
Bez integracji, bez kont na 12 platformach. Wystarczy link do postępowania.
{steps.map((s, i) => (
{s.num} / {s.code}
{s.title}
{s.desc}
{i < steps.length - 1 && (
)}
))}
);
}
// ============= Report sections grid =======================
function ReportSections() {
return (
> STRUKTURA RAPORTU · 8 SEKCJI
Każdy przetarg — ten sam, audytowalny szkielet
Powtarzalny układ ośmiu sekcji oznacza, że Twój zespół wie, gdzie szukać każdej liczby.
Pełna zawartość każdej sekcji jest opatrzona odnośnikiem do źródła.
{REPORT_SECTIONS.map((s, i) => (
{ e.currentTarget.style.borderColor = "var(--copper-300)"; e.currentTarget.style.transform = "translateY(-2px)"; e.currentTarget.style.boxShadow = "var(--shadow-card)"; }}
onMouseLeave={(e) => { e.currentTarget.style.borderColor = "var(--rule)"; e.currentTarget.style.transform = "none"; e.currentTarget.style.boxShadow = "none"; }}
>
{s.num}
{s.code}
{s.title}
{s.desc}
{s.lines.slice(0, 3).map((l, j) => (
· {l}
))}
))}
);
}
// ============= Audiences =================================
function Audiences() {
return (
> DLA KOGO
Każda branża czyta przetarg inaczej
{AUDIENCES.map((a, i) => (
{a.code}
{a.label}
{a.desc}
))}
);
}
// ============= Trust pillars =============================
function Trust() {
return (
\")",
zIndex: 0,
}}/>
> BEZPIECZEŃSTWO + AUDYTOWALNOŚĆ
Dlaczego AZOR
SOC2 · ISO 27001 · RODO
{PILLARS.map((p, i) => (
{p.num}
PILAR / 0{p.num}
{p.title}
{p.desc}
))}
);
}
// ============= Final CTA =================================
function FinalCta() {
return (
> FINALNE WEZWANIE
Masz 6 dni do terminu?
Sprawdź, czy warto startować.
Wstępna ocena ofertowa — zanim zaangażujesz kosztorysanta, prawnika i kierownika kontraktu.
);
}
// ============= Footer ====================================
function Footer() {
return (
);
}
window.AzorSections = {
TopNav, Hero, HowItWorks, ReportSections, Audiences, Trust, FinalCta, Footer, Reveal, AzorMark,
};