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 { page } from '../lib/stores.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;
18 page.subscribe(pg => { view = pg.tab; });
20 onMount(initColorToggler);
24 .navbar-brand :global(a:hover) {
25 text-decoration: none;
31 color: var(--bs-body-color);
35 display: inline-block;
49 @media (max-width: 600px) {
57 background-color: var(--bs-tertiary-bg);
58 border-top: 2px solid var(--bs-border-color);
59 border-bottom: 2px solid var(--bs-border-color);
64 {#snippet mainPageLink()}
65 <img alt="logo" id="theme-logo" src="theme/logo.png" />
69 <header class="container-fluid">
70 <nav class="navbar navbar-expand-sm navbar-light">
71 <div class="container-fluid">
73 <div class="navbar-brand">
74 <PageLink text_snippet={mainPageLink} page={reverse_only ? 'reverse' : 'search'} />
76 <!-- Toggler (hamburger button) -->
77 <button class="navbar-toggler"
79 data-bs-toggle="collapse"
80 data-bs-target="#navbarSupportedContent"
81 aria-controls="navbarSupportedContent"
83 aria-label="Toggle navigation">
84 <span class="navbar-toggler-icon"></span>
86 <div class="collapse navbar-collapse" id="navbarSupportedContent">
87 <!-- Left-aligned links -->
88 <ul class="navbar-nav me-auto">
91 <PageLink page="search"
93 extra_classes="nav-link {view === 'search' ? 'active' : ''}" />
97 <ReverseLink lat={mapState.center?.lat}
98 lon={mapState.center?.lng}
100 extra_classes="nav-link {view === 'reverse' ? 'active' : ''}" />
102 <li class="nav-item">
103 <PageLink page="details"
105 extra_classes="nav-link {view === 'details' ? 'active' : ''}" />
109 <!-- Right aligned links -->
110 <ul class="navbar-nav">
111 <li class="nav-item position-relative">
112 <button class="btn nav-link dropdown-toggle" id="bd-theme" type="button"
113 data-bs-toggle="dropdown" aria-label="Toggle color theme">
114 <span id="bd-theme-text">Color</span>
116 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
118 <button type="button" class="dropdown-item" data-bs-theme-value="light">
123 <button type="button" class="dropdown-item" data-bs-theme-value="dark">
128 <button type="button" class="dropdown-item" data-bs-theme-value="auto">
134 <li class="nav-item">
135 <PageLink page="about"
137 extra_classes="nav-link {view === 'about' ? 'active' : ''}" />
143 <section class="page-title-section">
146 <section class="search-section">
147 {@render subheader?.()}