Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26018eee7f | ||
|
|
24bd9c1d1b |
24
.prettierignore
Normal file
24
.prettierignore
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Generierte / Build-Artefakte
|
||||||
|
node_modules
|
||||||
|
.svelte-kit
|
||||||
|
build
|
||||||
|
coverage
|
||||||
|
.vite
|
||||||
|
|
||||||
|
# Lockfiles
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
|
# Lokale Laufzeit-Daten
|
||||||
|
data
|
||||||
|
|
||||||
|
# Test-Fixtures: rohe HTML-Captures muessen byte-exakt bleiben,
|
||||||
|
# sonst schlaegt die JSON-LD-Extraktion im Parser-Test anders an.
|
||||||
|
tests/fixtures
|
||||||
|
|
||||||
|
# Markdown: Tabellen sind hand-aligned, Code-Bloecke in historischen
|
||||||
|
# Plaenen sollen nicht nachtraeglich umgebrochen werden.
|
||||||
|
*.md
|
||||||
|
|
||||||
|
# SearXNG-Config ist ein Template mit ${VAR}-Platzhaltern, die der
|
||||||
|
# Init-Container expandiert.
|
||||||
|
searxng/settings.yml
|
||||||
@@ -11,6 +11,8 @@ services:
|
|||||||
- IMAGE_DIR=/data/images
|
- IMAGE_DIR=/data/images
|
||||||
- SEARXNG_URL=http://searxng:8080
|
- SEARXNG_URL=http://searxng:8080
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
|
# Im Header als kleine Versionsnummer unter dem Logo angezeigt.
|
||||||
|
- KOCHWAS_TAG=${KOCHWAS_TAG:-dev}
|
||||||
depends_on:
|
depends_on:
|
||||||
- searxng
|
- searxng
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
8
src/routes/+layout.server.ts
Normal file
8
src/routes/+layout.server.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import type { LayoutServerLoad } from './$types';
|
||||||
|
import { env } from '$env/dynamic/private';
|
||||||
|
|
||||||
|
export const load: LayoutServerLoad = () => {
|
||||||
|
return {
|
||||||
|
version: env.KOCHWAS_TAG ?? 'dev'
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
import { registerServiceWorker } from '$lib/client/sw-register';
|
import { registerServiceWorker } from '$lib/client/sw-register';
|
||||||
import { SearchStore } from '$lib/client/search.svelte';
|
import { SearchStore } from '$lib/client/search.svelte';
|
||||||
|
|
||||||
let { children } = $props();
|
let { data, children } = $props();
|
||||||
|
|
||||||
const navStore = new SearchStore({
|
const navStore = new SearchStore({
|
||||||
pageSize: 30,
|
pageSize: 30,
|
||||||
@@ -115,7 +115,10 @@
|
|||||||
<header class="bar">
|
<header class="bar">
|
||||||
<div class="bar-inner">
|
<div class="bar-inner">
|
||||||
{#if $page.url.pathname === '/'}
|
{#if $page.url.pathname === '/'}
|
||||||
|
<div class="brand-stack">
|
||||||
<a href="/" class="brand">Kochwas</a>
|
<a href="/" class="brand">Kochwas</a>
|
||||||
|
<span class="version" title="Deployment-Tag">{data.version}</span>
|
||||||
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<a href="/" class="home-back" aria-label="Zurück zur Startseite">
|
<a href="/" class="home-back" aria-label="Zurück zur Startseite">
|
||||||
<ArrowLeft size={22} strokeWidth={2} />
|
<ArrowLeft size={22} strokeWidth={2} />
|
||||||
@@ -307,6 +310,13 @@
|
|||||||
padding: 0.6rem 1rem;
|
padding: 0.6rem 1rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
.brand-stack {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
line-height: 1;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
.brand {
|
.brand {
|
||||||
font-size: 1.15rem;
|
font-size: 1.15rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@@ -314,6 +324,13 @@
|
|||||||
color: #2b6a3d;
|
color: #2b6a3d;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
.version {
|
||||||
|
margin-top: 2px;
|
||||||
|
font-size: 0.65rem;
|
||||||
|
color: #9aa8a0;
|
||||||
|
font-variant-numeric: tabular-nums;
|
||||||
|
letter-spacing: 0.02em;
|
||||||
|
}
|
||||||
.home-back {
|
.home-back {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -544,7 +561,7 @@
|
|||||||
}
|
}
|
||||||
@media (max-width: 520px) {
|
@media (max-width: 520px) {
|
||||||
/* App-Icon auf engen Screens komplett aus — die Suche bekommt den Platz. */
|
/* App-Icon auf engen Screens komplett aus — die Suche bekommt den Platz. */
|
||||||
.brand {
|
.brand-stack {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.nav-link {
|
.nav-link {
|
||||||
|
|||||||
Reference in New Issue
Block a user