/* Bilermen site - router + root */

const { useState, useEffect } = React;

function App() {
  const initial = (window.location.hash || '#/').slice(1) || '/';
  const [route, setRoute] = useState(initial);
  const [, forceRerender] = useState(0);

  useEffect(() => {
    const onHash = () => {
      const newRoute = (window.location.hash || '#/').slice(1) || '/';
      setRoute(newRoute);
      window.scrollTo({ top: 0, behavior: 'instant' });
    };
    window.addEventListener('hashchange', onHash);

    const onLangChange = () => forceRerender(n => n + 1);
    window.addEventListener('langchange', onLangChange);

    // Apply favicon from content (admin-editable)
    try {
      const fav = window.SITE_DATA && window.SITE_DATA.FAVICON;
      if (fav) {
        let link = document.querySelector('link[rel="icon"]');
        if (!link) { link = document.createElement('link'); link.rel = 'icon'; document.head.appendChild(link); }
        link.href = fav;
        if (!/\.svg($|\?)/i.test(fav)) link.removeAttribute('type');
      }
    } catch (e) {}

    return () => {
      window.removeEventListener('hashchange', onHash);
      window.removeEventListener('langchange', onLangChange);
    };
  }, []);

  const navigate = (path) => {
    if (path === route) {
      window.scrollTo({ top: 0, behavior: 'smooth' });
      return;
    }
    window.location.hash = path;
  };

  let screen;
  const parts = route.split('/').filter(Boolean);

  // Admin panel - private path. No public nav/footer. Keep this slug secret.
  if (parts[0] === 'k9x7-portal-bilermen') {
    const Admin = window.AdminScreen;
    if (!Admin) return <div style={{ padding: '80px', fontFamily: 'sans-serif' }}>Loading admin…</div>;
    return <Admin navigate={navigate} />;
  }

  if (route === '/' || parts.length === 0) {
    screen = <HomeScreen navigate={navigate} />;
  } else if (parts[0] === 'services') {
    if (parts.length === 1) screen = <ServicesOverview navigate={navigate} />;
    else screen = <ServiceDetail slug={parts[1]} navigate={navigate} />;
  } else if (parts[0] === 'sectors') {
    if (parts.length === 1) screen = <SectorsOverview navigate={navigate} />;
    else screen = <SectorDetail slug={parts[1]} navigate={navigate} />;
  } else if (parts[0] === 'about') {
    if (parts.length === 1) screen = <AboutScreen navigate={navigate} />;
    else screen = <AdvantageDetail slug={parts[1]} navigate={navigate} />;
  } else if (parts[0] === 'news') {
    if (parts.length === 1) screen = <NewsList navigate={navigate} />;
    else screen = <ArticleDetail slug={parts[1]} navigate={navigate} />;
  } else if (parts[0] === 'contact') {
    screen = <ContactScreen navigate={navigate} />;
  } else if (parts[0] === 'privacy' || parts[0] === 'legal') {
    screen = <PrivacyScreen navigate={navigate} />;
  } else {
    screen = <HomeScreen navigate={navigate} />;
  }

  return (
    <>
      <Nav route={route} navigate={navigate} />
      <main key={route}>
        {screen}
      </main>
      <Footer navigate={navigate} />
    </>
  );
}

/* Admin preview drafts (localStorage) are applied in data.js itself - a single
   wholesale replacement of SITE_DATA before any other script runs. */
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
