// shared.jsx — Header, icons, small primitives const Icon = { Plane: (props) => ( ), Check: (props) => ( ), Arrow: (props) => ( ), ArrowLeft: (props) => ( ), Lock: (props) => ( ), Clock: (props) => ( ), Calendar: (props) => ( ), Video: (props) => ( ), Doc: (props) => ( ), User: (props) => ( ), Upload: (props) => ( ), Shield: (props) => ( ), Globe: (props) => ( ), Telegram: (props) => ( ), Help: (props) => ( ), Plus: (props) => ( ), }; function Logo() { return ( KiwiEducation ); } function Header({ minimal = false, navigate }) { return (
{!minimal && ( )} {minimal && (
Защищённое соединение
)}
); } function ProgressSteps({ current = 1, show = true }) { if (!show) return null; const items = [ { n: 1, label: "Оплата" }, { n: 2, label: "Подготовка" }, { n: 3, label: "Подтверждение" }, ]; return (
{items.map((it, i) => (
it.n ? "done" : ""}`}>
{it.n}
{it.label}
{i < items.length - 1 &&
it.n ? "done" : ""}`} />} ))}
); } // Field wrapper function Field({ label, optional, error, children, hint }) { return (
{label && ( )} {children} {hint && !error &&
{hint}
} {error &&
{error}
}
); } // Tiny shared "next steps note" function ReassureNote({ children }) { return (
{children}
); } Object.assign(window, { Icon, Logo, Header, ProgressSteps, Field, ReassureNote });