diff --git a/src/app/ernten/page.tsx b/src/app/ernten/page.tsx index 5d65e97..2161c2d 100644 --- a/src/app/ernten/page.tsx +++ b/src/app/ernten/page.tsx @@ -8,6 +8,7 @@ import { getHarvests } from "@/lib/data"; import { formatMonthYear } from "@/lib/format"; import { getLocale } from "@/i18n/locale"; import { getDictionary } from "@/i18n/get-dictionary"; +import { PageOutro } from "@/components/page-outro"; export const metadata: Metadata = { title: "Unsere Ernten", @@ -96,6 +97,13 @@ export default async function ErntenPage() { ) : null} + ); } diff --git a/src/app/herkunft/page.tsx b/src/app/herkunft/page.tsx index 61e6cd4..d074109 100644 --- a/src/app/herkunft/page.tsx +++ b/src/app/herkunft/page.tsx @@ -6,6 +6,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()); @@ -72,6 +73,13 @@ export default async function HerkunftPage() { {t.herkunftPage.privacyNote}

+ ); } diff --git a/src/app/honig/[slug]/page.tsx b/src/app/honig/[slug]/page.tsx index 7e0bd67..7ea1471 100644 --- a/src/app/honig/[slug]/page.tsx +++ b/src/app/honig/[slug]/page.tsx @@ -525,15 +525,18 @@ export default async function ProductDetailPage( {relatedProducts.length > 0 ? ( - - -

{t.productPage.relatedProductsHeading}

+ // 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. + + +

{t.productPage.relatedProductsHeading}

-
- {relatedProducts.map((related, index) => ( - - ))} -
+ {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} +
  1. + + +

    + {article.title} +

    +

    {article.excerpt}

    - - -
    + + +
  2. ); })} -
+
); 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;