/* global React */ const { useState, useEffect, useRef, useContext, createContext, useMemo } = React; /* ------------------------------------------------------------------ i18n — PL/EN content ------------------------------------------------------------------ */ const COPY = { pl: { nav: { products: "Produkty", science: "Nauka", compare: "Porównaj", faq: "FAQ", buy: "Kup teraz" }, hero: { eyebrow: "FDA Cleared · Class II Medical Device", sceneA: { k: "Światło.", v: "630 i 850 nanometrów." }, sceneB: { k: "Przenika skórę.", v: "Do 5 cm w głąb tkanki." }, sceneC: { k: "Regeneruje.", v: "Ból ustępuje. Tkanki odnawiają się." }, cta: "Zobacz produkty", ghost: "Obejrzyj 30 s demo", scroll: "PRZEWIŃ", }, wavelengths: { eyebrow: "Dwie długości fali", title: "Czerwone światło.\nPodczerwień.", subtitle: "Dwa spektra pracujące razem. Jedno działa na powierzchni, drugie sięga głębiej niż jakikolwiek krem.", redTitle: "630 nm — Czerwone", redDesc: "Wnika w naskórek i górne warstwy skóry właściwej. Stymuluje produkcję kolagenu, wygładza, redukuje stany zapalne.", irTitle: "850 nm — Podczerwone", irDesc: "Sięga do mięśni, stawów i głębokich tkanek. Łagodzi ból, przyspiesza regenerację, wspomaga naprawę komórek.", scrubLabel: "Głębokość wnikania", layers: ["Naskórek", "Skóra właściwa", "Tkanka podskórna", "Mięśnie", "Stawy"], }, howItWorks: { eyebrow: "10 minut dziennie", title: "Jedna sesja. Cały dzień regeneracji.", subtitle: "Zegar startuje. 10 minut później skończone. Bez kremów, bez tabletek.", steps: [ { n: "01", t: "Załóż panel", d: "Elastyczny. Dopasuje się do pleców, kolana, ramienia, karku." }, { n: "02", t: "Włącz sesję", d: "Jedno dotknięcie. Diody zapalają się falą. Timer odlicza." }, { n: "03", t: "Odpoczywaj", d: "Siedzisz, trenujesz, bierzesz prysznic. Światło pracuje." }, ], timerLabel: "Sesja", }, products: { eyebrow: "Trzy modele", title: "Wybierz swój panel.", subtitle: "Od podstawowego do klinicznego. Ten sam rozmiar. Inna moc.", cta: "Poznaj", priceFrom: "od", items: [ { slug: "essential", name: "Essential", tag: "Bestseller", price: "1 449 zł", priceSub: "$399", desc: "Dwie długości fali. Jedna prosta sesja. Wszystko czego potrzebujesz.", specs: "2 fale · 45 diod · 10 min · Sweatproof", image: "images/lumaflex/essential-main.webp", }, { slug: "essential-pro", name: "Essential Pro", tag: "Pełne spektrum", price: "2 175 zł", priceSub: "$599", desc: "Sześć długości fali. Precyzja kliniczna. Dostęp do Lumaflex Academy.", specs: "6 fal · 45 diod · 10 min · Sweatproof", image: "images/lumaflex/essential-pro-main.png", }, { slug: "body-pro-kit", name: "Body Pro Kit", tag: "Flagowy", price: "2 501 zł", priceSub: "$689", desc: "Smart Pulse. Dwa power banki. Twarde etui. Wodoodporny IP67.", specs: "6 fal · Smart Pulse · 10 min · IP67", image: "images/lumaflex/body-pro-main.webp", }, ], }, waterproof: { eyebrow: "IP67 · Body Pro Kit", title: "Działa mokre.\nDziała pod wodą.", subtitle: "Do prysznica. Do sauny. Do wanny z zimną wodą po treningu. Panel nie przestaje świecić, kiedy temperatura spada.", toggleDry: "Na sucho", toggleWet: "Pod wodą", spec: "Zanurzenie do 1 metra, przez 30 minut. Test IP67, certyfikat IEC 60529.", }, certs: { eyebrow: "Nauka za światłem", title: "Technologia NASA. Standard medyczny.", subtitle: "Terapia czerwonym światłem była rozwijana w NASA do leczenia ran astronautów. Dziś jest zatwierdzona przez FDA jako urządzenie medyczne klasy II.", items: [ { k: "FDA Cleared", v: "Class II Medical Device" }, { k: "CE", v: "Europejska zgodność" }, { k: "Health Canada", v: "Kanadyjski certyfikat" }, { k: "NMPA", v: "Chińska administracja medyczna" }, ], nasaNote: "Wavelengths 630–1064 nm · 45 dual-chip LED · Testy kliniczne" }, compare: { eyebrow: "Porównanie", title: "Który model?", subtitle: "Te same wymiary. Inne możliwości.", headers: ["", "Essential", "Essential Pro", "Body Pro Kit"], rows: [ { l: "Długości fali", v: ["2 (630 + 850 nm)", "6 (630–1064 nm)", "6 (630–1064 nm)"] }, { l: "Sesja", v: ["10 min", "10 min", "10 min"] }, { l: "Waga", v: ["1.06 kg", "1.06 kg", "1.06 kg"] }, { l: "Wodoodporność", v: ["Sweatproof", "Sweatproof", "IP67"] }, { l: "Smart Pulse App", v: ["—", "—", "✓"] }, { l: "Lumaflex Academy", v: ["—", "Dożywotnio", "—"] }, { l: "Power Bank", v: ["1×", "1×", "2× (wymienny)"] }, { l: "Etui", v: ["Torba", "Torba", "Hard Shell"] }, { l: "Cena", v: ["1 449 zł", "2 175 zł", "2 501 zł"] }, ], }, faq: { eyebrow: "Pytania", title: "Zanim kupisz.", items: [ { q: "Czym właściwie jest terapia czerwonym światłem?", a: "Fotobiomodulacja. Światło o długości 630–1064 nm jest absorbowane przez mitochondria komórek. Mitochondria produkują więcej ATP — paliwa komórkowego. Skutek: szybsza regeneracja, mniej stanów zapalnych, lepsza produkcja kolagenu." }, { q: "Czy to jest bezpieczne?", a: "Tak. Panele Lumaflex mają certyfikat FDA Cleared Class II (USA) oraz CE (UE), Health Canada, NMPA (Chiny). Przeszły testy bezpieczeństwa i skuteczności. Nie uszkadzają skóry, nie powodują oparzeń." }, { q: "Kto NIE powinien używać panelu?", a: "Konsultacja z lekarzem jest wymagana jeśli: jesteś w ciąży, masz aktywną chorobę nowotworową, epilepsję światłoczułą, chorobę autoimmunologiczną skóry (toczeń, porfiria), świeżo wytatuowaną skórę, lub przyjmujesz leki światłouczulające (niektóre antybiotyki, retinoidy, ziele dziurawca). Urządzenie nie zastępuje diagnostyki ani leczenia medycznego." }, { q: "Ile trwa sesja?", a: "10 minut. Panel ma wbudowany timer, który automatycznie wyłącza diody. Zalecamy 1–2 sesje dziennie w zależności od celu." }, { q: "Jak szybko widać efekty?", a: "Pierwsze efekty przeciwbólowe po 2–3 sesjach. Regeneracja tkanek i efekty kosmetyczne po 4–6 tygodniach regularnego stosowania. Efekty indywidualne — zależą od stanu wyjściowego i regularności." }, { q: "Na czym polega różnica między modelami?", a: "Essential: 2 długości fali, podstawa. Essential Pro: 6 długości fali, pełne spektrum, dostęp do Lumaflex Academy. Body Pro Kit: 6 fal + sterowanie impulsami przez aplikację + IP67 + dwa power banki." }, { q: "Gwarancja, zwrot, wysyłka?", a: "30 dni na zwrot bez podania przyczyny. 2 lata gwarancji producenta. Darmowa wysyłka PL + DACH. Płatności: Stripe (karta, Apple Pay, Google Pay, przelewy24, Klarna)." }, ], }, footer: { tag: "Terapia światłem nowej generacji. Oficjalny partner PL/DACH.", products: { t: "Produkty", i: ["Essential", "Essential Pro", "Body Pro Kit", "Akcesoria"] }, company: { t: "Firma", i: ["O nas", "Nauka", "Partner", "Kontakt"] }, support: { t: "Wsparcie", i: ["FAQ", "Wysyłka", "Zwroty", "Gwarancja"] }, certs: "FDA Cleared · CE · Health Canada · NMPA", legal: "© 2026 Muszyński Online · Oficjalny partner Lumaflex PL/DACH", privacy: "Prywatność", terms: "Regulamin", impressum: "Impressum", }, }, en: { nav: { products: "Products", science: "Science", compare: "Compare", faq: "FAQ", buy: "Buy" }, hero: { eyebrow: "FDA Cleared · Class II Medical Device", sceneA: { k: "Light.", v: "630 and 850 nanometers." }, sceneB: { k: "Absorbed by skin.", v: "Up to 5 cm into tissue." }, sceneC: { k: "Regenerates.", v: "Pain fades. Tissue repairs." }, cta: "See the panels", ghost: "Watch 30s demo", scroll: "SCROLL", }, wavelengths: { eyebrow: "Two wavelengths", title: "Red light.\nInfrared.", subtitle: "Two spectra working together. One works on the surface. The other goes deeper than any cream.", redTitle: "630 nm — Red", redDesc: "Absorbed by the epidermis and upper dermis. Stimulates collagen, smooths, reduces inflammation.", irTitle: "850 nm — Infrared", irDesc: "Reaches muscle, joint and deep tissue. Relieves pain, accelerates recovery, supports cell repair.", scrubLabel: "Penetration depth", layers: ["Epidermis", "Dermis", "Subcutis", "Muscle", "Joint"], }, howItWorks: { eyebrow: "10 minutes daily", title: "One session. A day of recovery.", subtitle: "The timer starts. Ten minutes later it's over. No creams. No pills.", steps: [ { n: "01", t: "Put on the panel", d: "Flexible. Wraps around your back, knee, shoulder, neck." }, { n: "02", t: "Start a session", d: "One tap. LEDs light up in a wave. The timer counts down." }, { n: "03", t: "Rest", d: "Sit, train, take a shower. The light does the work." }, ], timerLabel: "Session", }, products: { eyebrow: "Three models", title: "Choose your panel.", subtitle: "From entry to clinical. Same form factor. Different power.", cta: "Details", priceFrom: "from", items: [ { slug: "essential", name: "Essential", tag: "Bestseller", price: "$399", priceSub: "1 449 zł", desc: "Two wavelengths. One simple session. Everything you need.", specs: "2 waves · 45 LEDs · 10 min · Sweatproof", image: "images/lumaflex/essential-main.webp" }, { slug: "essential-pro", name: "Essential Pro", tag: "Full spectrum", price: "$599", priceSub: "2 175 zł", desc: "Six wavelengths. Clinical precision. Lumaflex Academy included.", specs: "6 waves · 45 LEDs · 10 min · Sweatproof", image: "images/lumaflex/essential-pro-main.png" }, { slug: "body-pro-kit", name: "Body Pro Kit", tag: "Flagship", price: "$689", priceSub: "2 501 zł", desc: "Smart Pulse. Two power banks. Hard case. IP67 waterproof.", specs: "6 waves · Smart Pulse · 10 min · IP67", image: "images/lumaflex/body-pro-main.webp" }, ], }, waterproof: { eyebrow: "IP67 · Body Pro Kit", title: "Works wet.\nWorks underwater.", subtitle: "In the shower. In the sauna. In an ice bath after a session. The panel doesn't stop glowing when the temperature drops.", toggleDry: "Dry", toggleWet: "Underwater", spec: "Submersion up to 1 m for 30 minutes. IP67 tested, IEC 60529 certified.", }, certs: { eyebrow: "The science", title: "NASA-born. Medical-grade.", subtitle: "Red light therapy was developed at NASA to heal astronaut wounds. Today it is FDA cleared as a Class II medical device.", items: [ { k: "FDA Cleared", v: "Class II Medical Device" }, { k: "CE", v: "European conformity" }, { k: "Health Canada", v: "Canadian clearance" }, { k: "NMPA", v: "China medical authority" }, ], nasaNote: "Wavelengths 630–1064 nm · 45 dual-chip LEDs · Clinical trials" }, compare: { eyebrow: "Compare", title: "Which model?", subtitle: "Same size. Different capability.", headers: ["", "Essential", "Essential Pro", "Body Pro Kit"], rows: [ { l: "Wavelengths", v: ["2 (630 + 850 nm)", "6 (630–1064 nm)", "6 (630–1064 nm)"] }, { l: "Session", v: ["10 min", "10 min", "10 min"] }, { l: "Weight", v: ["1.06 kg", "1.06 kg", "1.06 kg"] }, { l: "Waterproof", v: ["Sweatproof", "Sweatproof", "IP67"] }, { l: "Smart Pulse App", v: ["—", "—", "✓"] }, { l: "Lumaflex Academy", v: ["—", "Lifetime", "—"] }, { l: "Power Bank", v: ["1×", "1×", "2× (swappable)"] }, { l: "Case", v: ["Soft bag", "Soft bag", "Hard Shell"] }, { l: "Price", v: ["$399", "$599", "$689"] }, ], }, faq: { eyebrow: "Questions", title: "Before you buy.", items: [ { q: "What is red light therapy, really?", a: "Photobiomodulation. Light at 630–1064 nm is absorbed by cell mitochondria. The mitochondria produce more ATP — cellular fuel. The result: faster recovery, less inflammation, better collagen production." }, { q: "Is it safe?", a: "Yes. Lumaflex panels are FDA Cleared Class II (USA) and CE (EU), Health Canada, NMPA (China). Tested for safety and efficacy. No skin damage, no burns." }, { q: "Who should NOT use the panel?", a: "Consult a doctor if: pregnant, active cancer, photosensitive epilepsy, autoimmune skin conditions (lupus, porphyria), fresh tattoos, or taking photosensitizing medication (certain antibiotics, retinoids, St. John's wort). This device does not replace medical diagnosis or treatment." }, { q: "How long is a session?", a: "10 minutes. The panel has a built-in timer that automatically ends the session. We recommend 1–2 sessions per day depending on your goal." }, { q: "How quickly will I see results?", a: "Pain-relief effects after 2–3 sessions. Tissue regeneration and cosmetic effects after 4–6 weeks of regular use. Individual results vary." }, { q: "What's the difference between models?", a: "Essential: 2 wavelengths, the foundation. Essential Pro: 6 wavelengths, full spectrum, plus Lumaflex Academy. Body Pro Kit: 6 waves + app-controlled pulsing + IP67 + two power banks." }, { q: "Warranty, returns, shipping?", a: "30-day no-questions return. 2-year manufacturer warranty. Free PL + DACH shipping. Payments via Stripe (card, Apple Pay, Google Pay, Klarna)." }, ], }, footer: { tag: "Next-generation light therapy. Official PL/DACH partner.", products: { t: "Products", i: ["Essential", "Essential Pro", "Body Pro Kit", "Accessories"] }, company: { t: "Company", i: ["About", "Science", "Partner", "Contact"] }, support: { t: "Support", i: ["FAQ", "Shipping", "Returns", "Warranty"] }, certs: "FDA Cleared · CE · Health Canada · NMPA", legal: "© 2026 Muszyński Online · Official Lumaflex partner for PL/DACH", privacy: "Privacy", terms: "Terms", impressum: "Impressum", }, }, de: { nav: { products: "Produkte", science: "Wissenschaft", compare: "Vergleich", faq: "FAQ", buy: "Jetzt kaufen" }, hero: { eyebrow: "FDA Cleared · CE · Medizinprodukt Klasse II", sceneA: { k: "Licht.", v: "630 und 850 Nanometer." }, sceneB: { k: "Dringt ein.", v: "Bis zu 5 cm Gewebetiefe." }, sceneC: { k: "Regeneriert.", v: "Schmerz lässt nach. Gewebe heilt." }, cta: "Panels ansehen", ghost: "30-Sek-Demo", scroll: "SCROLLEN", }, wavelengths: { eyebrow: "Zwei Wellenlängen", title: "Rotlicht.\nInfrarot.", subtitle: "Zwei Spektren, die zusammenarbeiten. Eines wirkt an der Oberfläche. Das andere reicht tiefer als jede Creme.", redTitle: "630 nm — Rotlicht", redDesc: "Dringt in Epidermis und obere Dermis ein. Regt Kollagenproduktion an, glättet, reduziert Entzündungen.", irTitle: "850 nm — Infrarot", irDesc: "Erreicht Muskeln, Gelenke und tiefes Gewebe. Lindert Schmerzen, beschleunigt Regeneration, unterstützt Zellreparatur.", scrubLabel: "Eindringtiefe", layers: ["Epidermis", "Dermis", "Unterhaut", "Muskel", "Gelenk"], }, howItWorks: { eyebrow: "10 Minuten täglich", title: "Eine Sitzung. Ein Tag Regeneration.", subtitle: "Timer startet. Zehn Minuten später ist es vorbei. Keine Cremes. Keine Pillen.", steps: [ { n: "01", t: "Panel anlegen", d: "Flexibel. Passt sich Rücken, Knie, Schulter, Nacken an." }, { n: "02", t: "Sitzung starten", d: "Ein Tippen. LEDs leuchten wellenförmig. Timer läuft rückwärts." }, { n: "03", t: "Ausruhen", d: "Sitzen, trainieren, duschen. Das Licht macht die Arbeit." }, ], timerLabel: "Sitzung", }, products: { eyebrow: "Drei Modelle", title: "Wähle dein Panel.", subtitle: "Vom Einstieg bis zur Klinik. Gleiche Form. Unterschiedliche Leistung.", cta: "Details", priceFrom: "ab", items: [ { slug: "essential", name: "Essential", tag: "Bestseller", price: "399 €", priceSub: "$399", desc: "Zwei Wellenlängen. Eine einfache Sitzung. Alles, was du brauchst.", specs: "2 Wellen · 45 LEDs · 10 Min · Schweißfest", image: "images/lumaflex/essential-main.webp" }, { slug: "essential-pro", name: "Essential Pro", tag: "Vollspektrum", price: "599 €", priceSub: "$599", desc: "Sechs Wellenlängen. Klinische Präzision. Lumaflex Academy inklusive.", specs: "6 Wellen · 45 LEDs · 10 Min · Schweißfest", image: "images/lumaflex/essential-pro-main.png" }, { slug: "body-pro-kit", name: "Body Pro Kit", tag: "Flaggschiff", price: "689 €", priceSub: "$689", desc: "Smart Pulse. Zwei Powerbanks. Hartschalenkoffer. IP67 wasserdicht.", specs: "6 Wellen · Smart Pulse · 10 Min · IP67", image: "images/lumaflex/body-pro-main.webp" }, ], }, waterproof: { eyebrow: "IP67 · Body Pro Kit", title: "Funktioniert nass.\nFunktioniert unter Wasser.", subtitle: "Unter der Dusche. In der Sauna. Im Eisbad nach dem Training. Das Panel leuchtet weiter, wenn die Temperatur fällt.", toggleDry: "Trocken", toggleWet: "Unter Wasser", spec: "Tauchtiefe bis 1 m für 30 Minuten. IP67 getestet, nach IEC 60529 zertifiziert.", }, certs: { eyebrow: "Die Wissenschaft", title: "NASA-Ursprung. Medizinstandard.", subtitle: "Rotlichttherapie wurde von der NASA zur Heilung von Wunden bei Astronauten entwickelt. Heute ist sie als Medizinprodukt Klasse II FDA-zugelassen und CE-konform.", items: [ { k: "FDA Cleared", v: "Klasse II Medizinprodukt" }, { k: "CE", v: "Europäische Konformität" }, { k: "Health Canada", v: "Kanadische Zulassung" }, { k: "NMPA", v: "Chinesische Medizinbehörde" }, ], nasaNote: "Wellenlängen 630–1064 nm · 45 Dual-Chip LEDs · Klinische Studien" }, compare: { eyebrow: "Vergleich", title: "Welches Modell?", subtitle: "Gleiche Größe. Andere Leistung.", headers: ["", "Essential", "Essential Pro", "Body Pro Kit"], rows: [ { l: "Wellenlängen", v: ["2 (630 + 850 nm)", "6 (630–1064 nm)", "6 (630–1064 nm)"] }, { l: "Sitzung", v: ["10 Min", "10 Min", "10 Min"] }, { l: "Gewicht", v: ["1,06 kg", "1,06 kg", "1,06 kg"] }, { l: "Wasserfestigkeit", v: ["Schweißfest", "Schweißfest", "IP67"] }, { l: "Smart Pulse App", v: ["—", "—", "✓"] }, { l: "Lumaflex Academy", v: ["—", "Lebenslang", "—"] }, { l: "Powerbank", v: ["1×", "1×", "2× (wechselbar)"] }, { l: "Koffer", v: ["Softbag", "Softbag", "Hartschale"] }, { l: "Preis", v: ["399 €", "599 €", "689 €"] }, ], }, faq: { eyebrow: "Fragen", title: "Bevor du kaufst.", items: [ { q: "Was ist Rotlichttherapie eigentlich?", a: "Photobiomodulation. Licht bei 630–1064 nm wird von den Mitochondrien der Zellen absorbiert. Die Mitochondrien produzieren mehr ATP — zellulären Treibstoff. Ergebnis: schnellere Regeneration, weniger Entzündungen, bessere Kollagenproduktion." }, { q: "Ist es sicher?", a: "Ja. Lumaflex Panels sind FDA Cleared Klasse II (USA) sowie CE (EU), Health Canada, NMPA (China). Getestet auf Sicherheit und Wirksamkeit. Keine Hautschäden, keine Verbrennungen." }, { q: "Wer sollte das Panel NICHT verwenden?", a: "Bitte einen Arzt konsultieren bei: Schwangerschaft, aktiver Krebserkrankung, photosensitiver Epilepsie, autoimmunen Hauterkrankungen (Lupus, Porphyrie), frischen Tätowierungen, oder bei Einnahme photosensitivierender Medikamente (bestimmte Antibiotika, Retinoide, Johanniskraut). Dieses Gerät ersetzt keine medizinische Diagnose oder Behandlung." }, { q: "Wie lange dauert eine Sitzung?", a: "10 Minuten. Das Panel hat einen eingebauten Timer, der die Sitzung automatisch beendet. Empfohlen: 1–2 Sitzungen täglich, je nach Ziel." }, { q: "Wie schnell sehe ich Ergebnisse?", a: "Schmerzlinderung nach 2–3 Sitzungen. Geweberegeneration und kosmetische Effekte nach 4–6 Wochen regelmäßiger Anwendung. Individuelle Ergebnisse variieren." }, { q: "Was unterscheidet die Modelle?", a: "Essential: 2 Wellenlängen, die Basis. Essential Pro: 6 Wellenlängen, Vollspektrum, Lumaflex Academy inklusive. Body Pro Kit: 6 Wellen + App-gesteuerte Pulsierung + IP67 + zwei Powerbanks." }, { q: "Garantie, Rückgabe, Versand?", a: "30-Tage-Rückgaberecht ohne Angabe von Gründen. 2 Jahre Herstellergarantie. Kostenloser Versand PL + DACH. Zahlung über Stripe (Karte, Apple Pay, Google Pay, Klarna, SOFORT)." }, ], }, footer: { tag: "Lichttherapie der neuen Generation. Offizieller PL/DACH-Partner.", products: { t: "Produkte", i: ["Essential", "Essential Pro", "Body Pro Kit", "Zubehör"] }, company: { t: "Unternehmen", i: ["Über uns", "Wissenschaft", "Partner", "Kontakt"] }, support: { t: "Support", i: ["FAQ", "Versand", "Rückgabe", "Garantie"] }, certs: "FDA Cleared · CE · Health Canada · NMPA", legal: "© 2026 Muszyński Online · Offizieller Lumaflex-Partner für PL/DACH", privacy: "Datenschutz", terms: "AGB", impressum: "Impressum", }, }, }; /* ------------------------------------------------------------------ App-wide context (locale, tweaks) ------------------------------------------------------------------ */ const AppCtx = createContext(null); const useApp = () => useContext(AppCtx); /* Reveal-on-scroll hook — adds is-pending immediately, removes on intersection */ function useReveal() { const ref = useRef(null); useEffect(() => { if (!ref.current) return; const el = ref.current; // Find the .lx-reveal element (might be el itself or a descendant) const target = el.classList.contains("lx-reveal") ? el : el.querySelector(".lx-reveal"); if (!target) return; target.classList.add("is-pending"); const fallback = setTimeout(() => target.classList.remove("is-pending"), 500); const io = new IntersectionObserver( (entries) => entries.forEach((e) => { if (e.isIntersecting) { target.classList.remove("is-pending"); clearTimeout(fallback); io.disconnect(); } }), { threshold: 0, rootMargin: "0px 0px -80px 0px" } ); io.observe(el); return () => { io.disconnect(); clearTimeout(fallback); }; }, []); return ref; } Object.assign(window, { COPY, AppCtx, useApp, useReveal });