/* global React */ const { useState: __useStateOb, useEffect: __useEffectOb } = React; // ──────────────────────────────────────────────────────────── // ONBOARDING — приветственный 4-шаговый экран при первом открытии // Адаптация OnboardingA из прототипа («Поэтичный · обсерватория»): // концентрические круги-сейсмограмма, крупная типографика, точка-эпицентр. // // Показывается ровно один раз — потом ставит flag eq.onboarding-seen. // ──────────────────────────────────────────────────────────── const ONBOARDING_STEPS = [ { eyebrow: "ПРИВЕТСТВУЕМ", title: ["Земля движется.", "Вы будете знать первым."], body: "Сейсмомониторинг отслеживает землетрясения по всему миру в реальном " + "времени. Без задержек. Без шума. Только то, что важно для вас.", }, { eyebrow: "ИСТОЧНИКИ", title: ["USGS + EMSC.", "Два независимых сейсмоцентра."], body: "Бот опрашивает оба источника каждые 10 минут с фильтром " + "updatedafter — ловим даже опаздывающие публикации крупных событий. " + "Дубликаты от двух источников отмечаются как «подтверждённые».", }, { eyebrow: "ПОРОГИ", title: ["M ≥ 5 для Россия / СНГ", "M ≥ 7 для всего мира"], body: "Алерты приходят только при превышении порога — не каждый толчок, а " + "только заметные. Пороги меняются прямо в Mini App: «Ещё → Настройки».", }, { eyebrow: "ГОТОВО", title: ["Поехали."], body: "Дайджест в 08:00 и 20:00 МСК · мгновенные алерты · live-карта · " + "статистика. Всё это здесь, в боте и в Mini App.", }, ]; window.OnboardingScreen = ({ T, dark, onFinish }) => { const [step, setStep] = __useStateOb(0); const total = ONBOARDING_STEPS.length; const cur = ONBOARDING_STEPS[step]; const isLast = step === total - 1; const next = () => (isLast ? onFinish() : setStep(step + 1)); const prev = () => setStep(Math.max(0, step - 1)); return (
{/* Концентрические круги-сейсмограмма как фон */} {[1,2,3,4,5,6,7,8].map((i) => ( ))} {/* Координаты + skip */}
53.0°N · 158.6°E
{/* Контент */}
{cur.eyebrow}
{cur.title.map((line, i) => (
{line}
))}
{cur.body}
{/* Степ-индикатор + кнопки */}
{ONBOARDING_STEPS.map((_, i) => (
))}
{step > 0 && ( )}
); }; window.__shouldShowOnboarding = () => { try { return !localStorage.getItem("eq.onboarding-seen"); } catch (e) { return false; } }; window.__markOnboardingSeen = () => { try { localStorage.setItem("eq.onboarding-seen", "1"); } catch (e) {} };