2 import PageLink from './PageLink.svelte';
3 import ReverseLink from './ReverseLink.svelte';
4 import LastUpdated from './LastUpdated.svelte';
5 import Error from './Error.svelte';
6 import { onMount } from 'svelte';
7 import { appState } from '../state/AppState.svelte.js';
8 import { mapState } from '../state/MapState.svelte.js';
9 import { initColorToggler } from '../color-mode-toggler.js';
11 let { subheader } = $props();
13 const page_title = Nominatim_Config.Page_Title;
14 const reverse_only = Nominatim_Config.Reverse_Only;
16 let view = $derived(appState.page.tab);
18 onMount(initColorToggler);
22 .navbar-brand :global(a:hover) {
23 text-decoration: none;
29 color: var(--bs-body-color);
33 display: inline-block;
47 @media (max-width: 600px) {
55 background-color: var(--bs-tertiary-bg);
56 border-top: 2px solid var(--bs-border-color);
57 border-bottom: 2px solid var(--bs-border-color);
62 {#snippet mainPageLink()}
63 <img alt="logo" id="theme-logo" src="theme/logo.png" />
67 <header class="container-fluid">
68 <nav class="navbar navbar-expand-sm navbar-light">
69 <div class="container-fluid">
71 <div class="navbar-brand">
72 <PageLink text_snippet={mainPageLink} page={reverse_only ? 'reverse' : 'search'} />
74 <!-- Toggler (hamburger button) -->
75 <button class="navbar-toggler"
77 data-bs-toggle="collapse"
78 data-bs-target="#navbarSupportedContent"
79 aria-controls="navbarSupportedContent"
81 aria-label="Toggle navigation">
82 <span class="navbar-toggler-icon"></span>
84 <div class="collapse navbar-collapse" id="navbarSupportedContent">
85 <!-- Left-aligned links -->
86 <ul class="navbar-nav me-auto">
89 <PageLink page="search"
91 extra_classes="nav-link {view === 'search' ? 'active' : ''}" />
95 <ReverseLink lat={mapState.center?.lat}
96 lon={mapState.center?.lng}
98 extra_classes="nav-link {view === 'reverse' ? 'active' : ''}" />
100 <li class="nav-item">
101 <PageLink page="details"
103 extra_classes="nav-link {view === 'details' ? 'active' : ''}" />
107 <!-- Right aligned links -->
108 <ul class="navbar-nav">
109 <li class="nav-item position-relative">
110 <button class="btn nav-link dropdown-toggle" id="bd-theme" type="button"
111 data-bs-toggle="dropdown" aria-label="Toggle color theme">
112 <span id="bd-theme-text">Color</span>
114 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
116 <button type="button" class="dropdown-item" data-bs-theme-value="light">
121 <button type="button" class="dropdown-item" data-bs-theme-value="dark">
126 <button type="button" class="dropdown-item" data-bs-theme-value="auto">
132 <li class="nav-item">
133 <PageLink page="about"
135 extra_classes="nav-link {view === 'about' ? 'active' : ''}" />
141 <section class="page-title-section">
144 <section class="search-section">
145 {@render subheader?.()}