// Main app
const { useState: useStateA, useEffect: useEffectA } = React;

function App() {
  const [tweaks, setTweaks] = useStateA(() => ({ ...(window.__TWEAKS || {}) }));

  // Listen for tweak updates from our own Tweaks panel
  useEffectA(() => {
    const onMsg = (e) => {
      const d = e.data || {};
      if (d.type === '__edit_mode_set_keys') {
        setTweaks((t) => ({ ...t, ...d.edits }));
      }
    };
    window.addEventListener('message', onMsg);
    return () => window.removeEventListener('message', onMsg);
  }, []);

  // Sync the theme tweak onto <html data-theme="..."> so CSS palettes flip.
  useEffectA(() => {
    document.documentElement.dataset.theme = tweaks.theme || 'dark';
  }, [tweaks.theme]);

  return (
    <div data-screen-label="BackMeUp Home">
      <Nav />
      <Hero ctaLabel={tweaks.ctaLabel} />
      <Logos />
      <HowItWorks />
      <Industries />
      <Stats />
      {tweaks.showPriceCalc !== false && <Pricing />}
      <Testimonials />
      <FAQ />
      <Contact />
      <Footer />
      <Tweaks />
    </div>
  );
}

// Simple reveal observer for elements with .reveal class added outside React
(function () {
  const mo = new MutationObserver(() => {
    document.querySelectorAll('.reveal:not(.in)').forEach((el) => {
      const io = new IntersectionObserver((es) => {
        es.forEach((e) => { if (e.isIntersecting) { el.classList.add('in'); io.disconnect(); } });
      }, { threshold: 0.15 });
      io.observe(el);
    });
  });
  mo.observe(document.body, { childList: true, subtree: true });
})();

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
