Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,11 @@ function RouteMap({ route }: { route: Route }) {
}

export default function App() {
const [authenticated, setAuthenticated] = useState(false)
// Forsiden vises først. Innloggingssiden vises når man trykker «Logg inn».
const [showLogin, setShowLogin] = useState(false)
const handleAuthenticated = useCallback(() => setAuthenticated(true), [])
const handleLogout = useCallback(() => { setAuthenticated(false); setShowLogin(false) }, [])
// Hvilken side som vises. Hele appen kan brukes uten innlogging: forsiden vises først,
// turoversikten når man velger en tur, og innloggingssiden bare når man trykker «Logg inn».
// Innlogging trengs kun for det som må knyttes til en bruker (favoritter og «Mitt sted»).
const [view, setView] = useState<'home' | 'explore' | 'login'>('home')
const showExplore = useCallback(() => setView('explore'), [])
const detailsRef = useRef<HTMLHeadingElement>(null)
const [route, setRoute] = useState<Route | null>(null)
const [routeVariants, setRouteVariants] = useState<RouteSummary[]>([])
Expand Down Expand Up @@ -198,13 +198,13 @@ export default function App() {
void load()
return () => controller.abort()
}, [selected, attempt])
// Velger man en tur på forsiden, åpnes den etter innlogging
if (!authenticated && !showLogin) return <Home onLoginClick={() => setShowLogin(true)} onSelectRoute={item => { openRoute(item); setShowLogin(true) }} />
if (!authenticated) return <AuthGate onAuthenticated={handleAuthenticated} onHome={() => setShowLogin(false)} />
if (view === 'home') return <Home onLoginClick={() => setView('login')} onSelectRoute={item => { openRoute(item); setView('explore') }} />
// Etter innlogging går man til turoversikten, der profilen og favorittene ligger
if (view === 'login') return <AuthGate onAuthenticated={showExplore} onHome={() => setView('home')} />

return <>
<a className="skip-link" href="#main">Hopp til ruteinformasjon</a>
<header><a className="brand" href={import.meta.env.BASE_URL}>△ <span>Norwegian Explorer</span></a><nav className="header-actions" aria-label="Brukermeny"><span className="badge">Utforsk fotruter</span><a className="nav-link" href={`${import.meta.env.BASE_URL}fjellomrade.html`}>Fjellområder</a><a className="profile-link" href="#profile"><span aria-hidden="true">●</span> Min profil</a></nav></header>
<header><button type="button" className="brand brand-button" onClick={() => setView('home')}>△ <span>Norwegian Explorer</span></button><nav className="header-actions" aria-label="Brukermeny"><span className="badge">Utforsk fotruter</span><a className="nav-link" href={`${import.meta.env.BASE_URL}fjellomrade.html`}>Fjellområder</a><a className="profile-link" href="#profile"><span aria-hidden="true">●</span> Min profil</a></nav></header>
<main id="main">
<div className="intro"><p className="eyebrow">OPPDAG NORGE TIL FOTS</p><h1>Ut på nye stier.</h1><p>Utforsk registrerte turruter og bli kjent med veien videre.</p></div>
<section className="category-section" aria-labelledby="category-title"><div className="category-heading"><div><p className="eyebrow">FINN DIN NESTE TUR</p><h2 id="category-title">Utforsk etter kategori</h2></div>{(difficulty || routeType || county || municipality || minLength != null || maxLength != null) && <button className="text-button" onClick={() => { setDifficulty(null); setRouteType(null); setCounty(null); setMunicipality(null); setMinLength(null); setMaxLength(null); setMinInput(''); setMaxInput(''); setPage(0); setListStatus('loading') }}>Nullstill kategorier</button>}</div>
Expand Down Expand Up @@ -255,7 +255,7 @@ export default function App() {
</article>
<RouteMap key={route.name + route.number} route={route} />
</div>}
<Profile selected={route ? { id: route.id, name: route.name, number: route.number } : selected} disabled={false} onSelectRoute={openRoute} onLogout={handleLogout} />
<Profile selected={route ? { id: route.id, name: route.name, number: route.number } : selected} disabled={false} onSelectRoute={openRoute} />
<footer><>Rutedata: <a href="https://kartverket.no/api-og-data/friluftsliv">Kartverket</a> · <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Rutelinjen er bearbeidet fra originale rutedeler.</></footer>
</main>
</>
Expand Down