+ // Bei ein, zwei Empfehlungen steht die Ueberschrift als erste Spalte im
+ // Raster (wie "Aktuelle Ernte" auf der Startseite) — sonst stuende eine
+ // einzelne Karte verloren unter einer breiten Ueberschrift.
+
+
+
+ {relatedProducts.map((related, index) => (
+
+ ))}
) : null}
diff --git a/src/app/imkerei/page.tsx b/src/app/imkerei/page.tsx
index d84b22a..1e7118d 100644
--- a/src/app/imkerei/page.tsx
+++ b/src/app/imkerei/page.tsx
@@ -5,6 +5,7 @@ import { ScrollReveal } from "@/components/scroll-reveal";
import { getLocale } from "@/i18n/locale";
import { getDictionary } from "@/i18n/get-dictionary";
import { getContentValue } from "@/lib/content";
+import { PageOutro } from "@/components/page-outro";
export async function generateMetadata(): Promise {
const t = getDictionary(await getLocale());
@@ -55,6 +56,13 @@ export default async function ImkereiPage() {
/>
+
);
}
diff --git a/src/app/wissen/page.tsx b/src/app/wissen/page.tsx
index 8170995..612756d 100644
--- a/src/app/wissen/page.tsx
+++ b/src/app/wissen/page.tsx
@@ -19,36 +19,43 @@ export default async function WissenPage() {
const t = getDictionary(await getLocale());
return (
-
+
-
+ {/* Inhaltsverzeichnis statt zehn gleicher Bloecke mit je einem
+ "Weiterlesen": die ganze Zeile ist der Link, Titel und Kurztext
+ stehen nebeneinander, der Pfeil zeigt die Richtung. */}
+
{wissenSlugs.map((slug, i) => {
const article = t.wissenArticles[slug];
return (
-
-
-
{article.title}
-
{article.excerpt}
-
- {t.wissenListPage.readMore}
+
+
+
+
+ {article.title}
+
+
{article.excerpt}
-
-
-
+
+
+
);
})}
-
+
);
diff --git a/src/components/page-outro.tsx b/src/components/page-outro.tsx
new file mode 100644
index 0000000..7929273
--- /dev/null
+++ b/src/components/page-outro.tsx
@@ -0,0 +1,49 @@
+import Link from "next/link";
+import { Container } from "@/components/ui";
+
+export interface PageOutroLink {
+ href: string;
+ label: string;
+ text: string;
+}
+
+/**
+ * Abschluss einer Inhaltsseite (Imkerei, Herkunft, Ernten): zwei naechste
+ * Wege als grosse Serif-Links, getrennt durch eine Linie. Ohne ihn endeten
+ * diese Seiten mit dem letzten Absatz direkt vor der Fusszeile — eine
+ * Sackgasse, gerade fuer Besuch, der ueber die Suche mitten einsteigt.
+ */
+export function PageOutro({ links, ariaLabel }: { links: PageOutroLink[]; ariaLabel: string }) {
+ return (
+
+ );
+}
diff --git a/src/components/site-chrome.tsx b/src/components/site-chrome.tsx
index a2807bb..064346a 100644
--- a/src/components/site-chrome.tsx
+++ b/src/components/site-chrome.tsx
@@ -84,7 +84,7 @@ function Logo({ t, companyName, logoSrc }: { t: Dictionary; companyName: string;
{companyName}
-
+
{t.footer.tagline}
diff --git a/src/i18n/dictionaries/de.ts b/src/i18n/dictionaries/de.ts
index b65d03f..2b75d30 100644
--- a/src/i18n/dictionaries/de.ts
+++ b/src/i18n/dictionaries/de.ts
@@ -14,6 +14,12 @@ export const de: Dictionary = {
retry: "Erneut versuchen",
},
},
+ pageOutro: {
+ ariaLabel: "Weiterlesen",
+ shopText: "Honig, Bienenwachskerzen und Propolis aus eigener Imkerei — solange die Charge reicht.",
+ harvestsText: "Jede Ernte mit Datum, Standort und Charge, zurückverfolgbar bis ins Glas.",
+ originText: "Wo unsere Bienenvölker stehen und was die Landschaft um Altenmünster prägt.",
+ },
nav: {
shop: "Shop",
harvests: "Unsere Ernten",
@@ -476,7 +482,6 @@ export const de: Dictionary = {
wissenListPage: {
eyebrow: "Honigwissen",
title: "Wissenswertes rund um Honig",
- readMore: "Weiterlesen",
},
wissenArticlePage: {
backLabel: "Zurück zum Honigwissen",
diff --git a/src/i18n/dictionaries/en.ts b/src/i18n/dictionaries/en.ts
index 8633390..7ee27f2 100644
--- a/src/i18n/dictionaries/en.ts
+++ b/src/i18n/dictionaries/en.ts
@@ -14,6 +14,12 @@ export const en: Dictionary = {
retry: "Try again",
},
},
+ pageOutro: {
+ ariaLabel: "Keep reading",
+ shopText: "Honey, beeswax candles and propolis from our own apiary — while each batch lasts.",
+ harvestsText: "Every harvest with date, location and batch, traceable down to the jar.",
+ originText: "Where our colonies live and what shapes the landscape around Altenmünster.",
+ },
nav: {
shop: "Shop",
harvests: "Our Harvests",
@@ -464,7 +470,6 @@ export const en: Dictionary = {
wissenListPage: {
eyebrow: "Honey Knowledge",
title: "Good to know about honey",
- readMore: "Read more",
},
wissenArticlePage: {
backLabel: "Back to Honey Knowledge",
diff --git a/src/i18n/dictionary-type.ts b/src/i18n/dictionary-type.ts
index f55e120..a2667a0 100644
--- a/src/i18n/dictionary-type.ts
+++ b/src/i18n/dictionary-type.ts
@@ -52,6 +52,12 @@ export interface Dictionary {
retry: string;
};
};
+ pageOutro: {
+ ariaLabel: string;
+ shopText: string;
+ harvestsText: string;
+ originText: string;
+ };
nav: {
shop: string;
harvests: string;
@@ -249,7 +255,6 @@ export interface Dictionary {
wissenListPage: {
eyebrow: string;
title: string;
- readMore: string;
};
wissenArticlePage: {
backLabel: string;