// App-skall: hash-ruting (fungerer på ren statisk hosting uten rewrites), // mørk header, handlevogn-skuff og forsiden med nordlys-hero + live-søk. // Monterer først når alle globals fra de andre filene finnes. import React, { useState, useEffect } from 'react'; import { createRoot } from 'react-dom/client'; const NS = window.STWORDER; function useHashRoute() { const [route, setRoute] = useState(() => location.hash.replace(/^#\/?/, '')); useEffect(() => { const onChange = () => { setRoute(location.hash.replace(/^#\/?/, '')); window.scrollTo(0, 0); }; window.addEventListener('hashchange', onChange); return () => window.removeEventListener('hashchange', onChange); }, []); return route; } function Home() { const { useI18n, nok, ProductCard, SectionTitle, TrustBar, MonoLabel } = NS.ui; const { t } = useI18n(); const LiveSearch = NS.flows.LiveSearch; const cheapestWeb = Math.min(...NS.data.products.filter((p) => p.group === 'webhotell').map((p) => p.monthly)); const cheapestVps = Math.min(...NS.data.vpsPlans.map((p) => p.monthly)); const noPrice = NS.data.tlds.find((r) => r.tld === 'no').register; return (
{/* Nordlys-hero med live-søk i sentrum */}
{t('home.heroLabel')}

{t('home.titleA')}{' '} {t('home.titleB')}

{t('home.subtitle')}

{/* Produktinnganger */}
{ location.hash = '#/domener'; }} /> { location.hash = '#/hosting'; }} /> { location.hash = '#/vps'; }} />
{/* Slik fungerer det – redaksjonelle serif-tall */}
{t('home.stepsLabel')}
{[1, 2, 3].map((n) => (
0{n}

{t('home.step' + n)}

{t('home.step' + n + 'd')}

))}
); } function App() { const route = useHashRoute(); const [cartOpen, setCartOpen] = useState(false); const { DemoBanner, Header, Footer, CartDrawer, CheckoutToast } = NS.ui; useEffect(() => NS.bus.on('cart:open', () => setCartOpen(true)), []); // Lukk skuffen ved navigasjon – ellers blokkerer overlayet den nye siden. useEffect(() => { setCartOpen(false); }, [route]); let page; if (route.startsWith('domener')) page = ; else if (route.startsWith('hosting')) page = ; else if (route.startsWith('vps')) page = ; else if (route.startsWith('kasse')) page = ; else if (route.startsWith('kvittering')) page = ; else page = ; const routeKey = route.split('/')[0]; return ( <>
setCartOpen(true)} />
{page}