ui: Headings kleiner + Library als Archiv-Zwilling (Sidebar weg)
- section-title 2.6→1.9rem max, 800→700; single-header h1 3→2.2rem max, 800→700; single-summary 1.4→1.2rem. Ruhiger, redaktioneller, site-weit. - Library raus aus der zweispaltigen Sonderform: Übersicht = .atlas (gruppiert, wie Archiv-Root), Eintrag = .single (wie Essay) mit Quellen + Fuss (Gruppe · weitere Einträge · bearbeiten). library-nav-Partial entfernt. - Voll CI-konform: Archiv und Library teilen jetzt dasselbe Gerüst. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+19
-40
@@ -719,36 +719,15 @@ a.byline-author:hover, a.journal-author:hover { color: var(--accent); }
|
|||||||
.dialog-hint { font-size: var(--font-size-small); color: var(--color-text-muted); align-self: center; opacity: 0.7; }
|
.dialog-hint { font-size: var(--font-size-small); color: var(--color-text-muted); align-self: center; opacity: 0.7; }
|
||||||
.dialog-spacer { flex: 1; }
|
.dialog-spacer { flex: 1; }
|
||||||
|
|
||||||
/* ── Library/Wiki-Bereich: zentrierter Section-Header (wie Archiv) darüber,
|
/* ── Library: gleiches Gerüst wie Archiv (Übersicht = .atlas, Eintrag = .single).
|
||||||
zweispaltige Fläche (Seitenleiste + Inhalt) darunter. ── */
|
Eintrags-Fuss: Gruppe + weitere Einträge + bearbeiten-Link. ── */
|
||||||
.wiki { display: grid; grid-template-columns: 200px 1fr; gap: 2.6em; align-items: start; }
|
.entry-foot { margin-top: var(--spacing-lg); padding-top: var(--spacing-sm); border-top: 1px solid var(--color-border);
|
||||||
@media (max-width: 760px) { .wiki { grid-template-columns: 1fr; gap: 1.4em; } .wiki-side { position: static; } }
|
display: flex; gap: 0.6em 1.2em; flex-wrap: wrap; align-items: baseline; font-size: var(--font-size-small); color: var(--color-text-muted); }
|
||||||
.wiki-side { position: sticky; top: 1em; align-self: start; }
|
.entry-foot .entry-more { flex: 1; min-width: 14em; }
|
||||||
.wiki-nav { display: flex; flex-direction: column; gap: 0.35em; font-size: var(--font-size-small); }
|
.entry-foot .entry-more a { color: var(--accent); text-decoration: none; }
|
||||||
.wiki-nav-home { text-decoration: none; color: var(--color-text-primary); font-weight: 600; }
|
.entry-foot .entry-more a:hover { text-decoration: underline; text-underline-offset: 0.2em; }
|
||||||
.wiki-nav-home:hover { color: var(--accent); }
|
.entry-foot a { color: var(--color-text-muted); text-decoration: none; }
|
||||||
.wiki-nav-home.is-current { color: var(--accent); }
|
.entry-foot a:hover { color: var(--accent); }
|
||||||
.wiki-filter { width: 100%; padding: 0.4em 0.7em; margin: 0.3em 0 0.4em; font: inherit; font-size: var(--font-size-small);
|
|
||||||
border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-bg-primary); }
|
|
||||||
.wiki-filter:focus { outline: none; border-color: var(--accent); }
|
|
||||||
.wiki-nav-title { text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.7rem; color: var(--color-text-muted); margin: 0.8em 0 0.25em; }
|
|
||||||
.wiki-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.1em; }
|
|
||||||
.wiki-nav li a { display: block; text-decoration: none; color: var(--color-text-muted);
|
|
||||||
padding: 0.18em 0 0.18em 0.7em; border-left: 2px solid transparent; }
|
|
||||||
.wiki-nav li a:hover { color: var(--accent); }
|
|
||||||
.wiki-nav li a.is-current { color: var(--color-text-primary); font-weight: 600; border-left-color: var(--accent); }
|
|
||||||
|
|
||||||
.wiki-page { min-width: 0; }
|
|
||||||
.wiki-index { margin-top: var(--spacing-md); }
|
|
||||||
.wiki-group { margin-bottom: var(--spacing-md); }
|
|
||||||
.wiki-group h2 { font-family: var(--font-family-serif); font-size: 1.1rem; margin: 0 0 0.4em; }
|
|
||||||
.wiki-group ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.4em; }
|
|
||||||
.wiki-group li a { font-weight: 600; text-decoration: none; }
|
|
||||||
.wiki-group li a:hover { color: var(--accent); }
|
|
||||||
.wiki-foot { margin-top: var(--spacing-lg); padding-top: var(--spacing-sm); border-top: 1px solid var(--color-border);
|
|
||||||
display: flex; gap: 1.2em; flex-wrap: wrap; font-size: var(--font-size-small); color: var(--color-text-muted); }
|
|
||||||
.wiki-foot a { color: var(--color-text-muted); text-decoration: none; }
|
|
||||||
.wiki-foot a:hover { color: var(--accent); }
|
|
||||||
|
|
||||||
/* ── Software-Landing: Werkzeuge getrennt von Texten ── */
|
/* ── Software-Landing: Werkzeuge getrennt von Texten ── */
|
||||||
.software-h { font-family: var(--font-family-serif); margin: var(--spacing-md) 0 var(--spacing-sm); }
|
.software-h { font-family: var(--font-family-serif); margin: var(--spacing-md) 0 var(--spacing-sm); }
|
||||||
@@ -1124,10 +1103,10 @@ a.byline-author:hover, a.journal-author:hover { color: var(--accent); }
|
|||||||
}
|
}
|
||||||
.section-title {
|
.section-title {
|
||||||
font-family: var(--font-family-serif);
|
font-family: var(--font-family-serif);
|
||||||
font-size: clamp(1.9rem, 4vw, 2.6rem);
|
font-size: clamp(1.5rem, 2.6vw, 1.9rem);
|
||||||
font-weight: 800;
|
font-weight: 700;
|
||||||
letter-spacing: -0.026em;
|
letter-spacing: -0.012em;
|
||||||
line-height: 1.05;
|
line-height: 1.1;
|
||||||
margin: 0 0 0.4rem;
|
margin: 0 0 0.4rem;
|
||||||
}
|
}
|
||||||
.section-description {
|
.section-description {
|
||||||
@@ -1243,17 +1222,17 @@ a.byline-author:hover, a.journal-author:hover { color: var(--accent); }
|
|||||||
}
|
}
|
||||||
.single-header h1 {
|
.single-header h1 {
|
||||||
font-family: var(--font-family-serif);
|
font-family: var(--font-family-serif);
|
||||||
font-size: clamp(2.1rem, 4.6vw, 3rem);
|
font-size: clamp(1.7rem, 3vw, 2.2rem);
|
||||||
font-weight: 800;
|
font-weight: 700;
|
||||||
letter-spacing: -0.028em;
|
letter-spacing: -0.015em;
|
||||||
line-height: 1.05;
|
line-height: 1.12;
|
||||||
margin: 0 0 var(--spacing-sm);
|
margin: 0 0 var(--spacing-sm);
|
||||||
}
|
}
|
||||||
.single-summary {
|
.single-summary {
|
||||||
font-family: var(--font-family-serif);
|
font-family: var(--font-family-serif);
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-size: 1.4rem;
|
font-size: 1.2rem;
|
||||||
line-height: 1.4;
|
line-height: 1.45;
|
||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
margin: 0 0 var(--spacing-md); /* breathing room before byline */
|
margin: 0 0 var(--spacing-md); /* breathing room before byline */
|
||||||
max-width: 55ch;
|
max-width: 55ch;
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
{{- /* Library-Seitenleiste: alle Library-Seiten nach `group` gruppiert, mit Filter.
|
|
||||||
Seiten ohne `group` landen unter „Allgemein“. */ -}}
|
|
||||||
{{- $cur := .RelPermalink -}}
|
|
||||||
{{- $pages := where site.RegularPages "Section" "library" -}}
|
|
||||||
{{- $groups := dict -}}
|
|
||||||
{{- range $pages -}}
|
|
||||||
{{- $g := .Params.group | default "Allgemein" -}}
|
|
||||||
{{- $existing := index $groups $g | default slice -}}
|
|
||||||
{{- $groups = merge $groups (dict $g ($existing | append .)) -}}
|
|
||||||
{{- end -}}
|
|
||||||
<nav class="wiki-nav" aria-label="Wiki-Navigation">
|
|
||||||
<a class="wiki-nav-home{{ if .IsSection }} is-current{{ end }}" href="/wiki/">Übersicht</a>
|
|
||||||
<input class="wiki-filter" type="search" placeholder="filtern…" aria-label="Wiki filtern" autocomplete="off" />
|
|
||||||
{{- range $g, $ps := $groups }}
|
|
||||||
<div class="wiki-nav-group">
|
|
||||||
<div class="wiki-nav-title">{{ $g }}</div>
|
|
||||||
<ul>
|
|
||||||
{{- range sort $ps "Title" }}
|
|
||||||
<li><a href="{{ .RelPermalink }}"{{ if eq .RelPermalink $cur }} class="is-current" aria-current="page"{{ end }}>{{ .LinkTitle }}</a></li>
|
|
||||||
{{- end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{{- end }}
|
|
||||||
</nav>
|
|
||||||
<script>
|
|
||||||
(function () {
|
|
||||||
if (window.__wikiFilter) return; window.__wikiFilter = 1;
|
|
||||||
var inp = document.querySelector('.wiki-filter'); if (!inp) return;
|
|
||||||
inp.addEventListener('input', function () {
|
|
||||||
var q = inp.value.trim().toLowerCase();
|
|
||||||
document.querySelectorAll('.wiki-nav-group').forEach(function (g) {
|
|
||||||
var any = false;
|
|
||||||
g.querySelectorAll('li').forEach(function (li) {
|
|
||||||
var hit = li.textContent.toLowerCase().indexOf(q) > -1;
|
|
||||||
li.style.display = hit ? '' : 'none'; if (hit) any = true;
|
|
||||||
});
|
|
||||||
g.style.display = any ? '' : 'none';
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
@@ -1,13 +1,5 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<header class="section-header">
|
{{ .Content }}
|
||||||
<h1 class="section-title">{{ .Title }}</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="wiki">
|
|
||||||
<aside class="wiki-side">{{ partial "library-nav.html" . }}</aside>
|
|
||||||
|
|
||||||
<div class="wiki-page">
|
|
||||||
<div class="single-content">{{ .Content }}</div>
|
|
||||||
|
|
||||||
{{ $pages := where site.RegularPages "Section" "library" }}
|
{{ $pages := where site.RegularPages "Section" "library" }}
|
||||||
{{ $groups := dict }}
|
{{ $groups := dict }}
|
||||||
@@ -18,24 +10,22 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if $pages }}
|
{{ if $pages }}
|
||||||
<div class="wiki-index">
|
<section class="atlas">
|
||||||
{{ range $g, $ps := $groups }}
|
{{ range $g, $ps := $groups }}
|
||||||
<section class="wiki-group">
|
<article class="atlas-section">
|
||||||
<h2>{{ $g }}</h2>
|
<h2>{{ $g }}</h2>
|
||||||
<ul>
|
<ul class="atlas-list">
|
||||||
{{ range sort $ps "Title" }}
|
{{ range sort $ps "Title" }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||||
{{ with .Params.summary }}<span class="text-muted"> — {{ . }}</span>{{ end }}
|
{{ with .Params.summary }}<span class="list-meta text-muted"> — {{ . }}</span>{{ end }}
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</section>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<p class="text-muted"><em>Noch keine Einträge — der erste entsteht im Redaktions-Editor.</em></p>
|
<p class="text-muted"><em>Noch keine Einträge — der erste entsteht im Redaktions-Editor.</em></p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
+17
-15
@@ -1,14 +1,10 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<header class="section-header">
|
<article class="single">
|
||||||
<p class="section-rubric">{{ with .Params.group }}{{ . }}{{ else }}Library{{ end }}</p>
|
<header class="single-header">
|
||||||
<h1 class="section-title">{{ .Title }}</h1>
|
<h1>{{ .Title }}</h1>
|
||||||
{{ with .Params.summary }}<p class="section-description">{{ . }}</p>{{ end }}
|
{{ with .Params.summary }}<p class="single-summary">{{ . }}</p>{{ end }}
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="wiki">
|
|
||||||
<aside class="wiki-side">{{ partial "library-nav.html" . }}</aside>
|
|
||||||
|
|
||||||
<div class="wiki-page">
|
|
||||||
{{ $hasToC := .Params.toc | default false }}
|
{{ $hasToC := .Params.toc | default false }}
|
||||||
{{ $headers := findRE "<h[2-6]" .Content }}
|
{{ $headers := findRE "<h[2-6]" .Content }}
|
||||||
{{ if and $hasToC (ge (len $headers) 2) }}
|
{{ if and $hasToC (ge (len $headers) 2) }}
|
||||||
@@ -18,16 +14,22 @@
|
|||||||
</nav>
|
</nav>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="single-content wiki-content">
|
<div class="single-content">
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="wiki-foot">
|
{{/* Fuss: Gruppe + weitere Einträge derselben Gruppe + bearbeiten. */}}
|
||||||
|
{{ $g := .Params.group | default "Allgemein" }}
|
||||||
|
{{ $siblings := where (where site.RegularPages "Section" "library") "Params.group" (.Params.group) }}
|
||||||
|
<div class="entry-foot">
|
||||||
|
<span class="entry-more">
|
||||||
|
<strong>{{ $g }}</strong>
|
||||||
|
{{ $others := slice }}
|
||||||
|
{{ range $siblings }}{{ if ne .RelPermalink $.RelPermalink }}{{ $others = $others | append . }}{{ end }}{{ end }}
|
||||||
|
{{ with $others }} · {{ range $i, $p := . }}{{ if $i }} · {{ end }}<a href="{{ $p.RelPermalink }}">{{ $p.LinkTitle }}</a>{{ end }}{{ end }}
|
||||||
|
</span>
|
||||||
{{ if .Lastmod }}<span>Zuletzt bearbeitet am {{ .Lastmod.Format "02.01.2006" }}</span>{{ end }}
|
{{ if .Lastmod }}<span>Zuletzt bearbeitet am {{ .Lastmod.Format "02.01.2006" }}</span>{{ end }}
|
||||||
{{ with .File }}
|
{{ with .File }}<a href="{{ site.Params.repoURL }}/_edit/branch/main/content/{{ .Path }}" rel="nofollow">bearbeiten ↗</a>{{ end }}
|
||||||
<a href="{{ site.Params.repoURL }}/_edit/branch/main/content/{{ .Path }}" rel="nofollow">bearbeiten ↗</a>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
Reference in New Issue
Block a user