// shark service — root app + Tweaks const { useState: uS, useEffect: uE } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#1B7FA8", "heroLayout": "split", "bandScheme": "contrast", "headings": "sans" }/*EDITMODE-END*/; const ACCENTS = ["#1B7FA8", "#2BB5CE", "#166A8C", "#4A6B7A"]; function useReveal() { uE(() => { const els = document.querySelectorAll(".reveal:not(.in)"); if (!("IntersectionObserver" in window)) { els.forEach((e) => e.classList.add("in")); return; } const io = new IntersectionObserver((ents) => { ents.forEach((en) => { if (en.isIntersecting) { en.target.classList.add("in"); io.unobserve(en.target); } }); }, { threshold: 0.12, rootMargin: "0px 0px -8% 0px" }); els.forEach((e) => io.observe(e)); return () => io.disconnect(); }); } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); useReveal(); const goForm = () => scrollToSection("mid-form"); const accentVars = { "--brand": t.accent, "--brand-hover": `color-mix(in srgb, ${t.accent} 84%, #2a1206)`, "--brand-pressed": `color-mix(in srgb, ${t.accent} 70%, #2a1206)`, "--brand-tint": `color-mix(in srgb, ${t.accent} 12%, #fff)`, "--accent": t.accent, "--accent-hover": `color-mix(in srgb, ${t.accent} 84%, #2a1206)`, "--accent-pressed": `color-mix(in srgb, ${t.accent} 70%, #2a1206)`, "--accent-tint": `color-mix(in srgb, ${t.accent} 12%, #fff)`, "--fg-link": t.accent, "--blue-200": `color-mix(in srgb, ${t.accent} 40%, #fff)`, }; const contrast = t.bandScheme === "contrast"; return (
); } ReactDOM.createRoot(document.getElementById("root")).render();