2 import PageLink from './PageLink.svelte';
3 import ReverseLink from './ReverseLink.svelte';
4 import LastUpdated from './LastUpdated.svelte';
5 import Error from './Error.svelte';
7 import { map_store, page } from '../lib/stores.js';
9 let { subheader } = $props();
11 const page_title = Nominatim_Config.Page_Title;
12 const reverse_only = Nominatim_Config.Reverse_Only;
15 let map_lat = $state();
16 let map_lon = $state();
18 map_store.subscribe(map => {
21 map.on('move', function () {
22 map_lat = map.getCenter().lat.toFixed(5);
23 map_lon = map.getCenter().lng.toFixed(5);
27 page.subscribe(pg => { view = pg.tab; });
31 .navbar-brand :global(a:hover) {
32 text-decoration: none;
38 color: var(--bs-body-color);
42 display: inline-block;
56 @media (max-width: 600px) {
64 background-color: var(--bs-tertiary-bg);
65 border-top: 2px solid var(--bs-border-color);
66 border-bottom: 2px solid var(--bs-border-color);
71 {#snippet mainPageLink()}
72 <img alt="logo" id="theme-logo" src="theme/logo.png" />
76 <header class="container-fluid">
77 <nav class="navbar navbar-expand-sm navbar-light">
78 <div class="container-fluid">
80 <div class="navbar-brand">
81 <PageLink text_snippet={mainPageLink} page={reverse_only ? 'reverse' : 'search'} />
83 <!-- Toggler (hamburger button) -->
84 <button class="navbar-toggler"
86 data-bs-toggle="collapse"
87 data-bs-target="#navbarSupportedContent"
88 aria-controls="navbarSupportedContent"
90 aria-label="Toggle navigation">
91 <span class="navbar-toggler-icon"></span>
93 <div class="collapse navbar-collapse" id="navbarSupportedContent">
94 <!-- Left-aligned links -->
95 <ul class="navbar-nav me-auto">
98 <PageLink page="search"
100 extra_classes="nav-link {view === 'search' ? 'active' : ''}" />
103 <li class="nav-item">
104 <ReverseLink lat={map_lat}
107 extra_classes="nav-link {view === 'reverse' ? 'active' : ''}" />
109 <li class="nav-item">
110 <PageLink page="details"
112 extra_classes="nav-link {view === 'details' ? 'active' : ''}" />
116 <!-- Right aligned links -->
117 <ul class="navbar-nav">
118 <li class="nav-item position-relative">
119 <button class="btn nav-link dropdown-toggle" id="bd-theme" type="button"
120 data-bs-toggle="dropdown" aria-label="Toggle color theme">
121 <span id="bd-theme-text">Color</span>
123 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
125 <button type="button" class="dropdown-item" data-bs-theme-value="light">
130 <button type="button" class="dropdown-item" data-bs-theme-value="dark">
135 <button type="button" class="dropdown-item" data-bs-theme-value="auto">
141 <li class="nav-item">
142 <PageLink page="about"
144 extra_classes="nav-link {view === 'about' ? 'active' : ''}" />
150 <section class="page-title-section">
153 <section class="search-section">
154 {@render subheader?.()}