diff --git a/public/zertifikate/greator-persoenlichkeitscoach.jpg b/public/zertifikate/greator-persoenlichkeitscoach.jpg new file mode 100644 index 0000000..cae5e29 Binary files /dev/null and b/public/zertifikate/greator-persoenlichkeitscoach.jpg differ diff --git a/public/zertifikate/greator-persoenlichkeitscoach.pdf b/public/zertifikate/greator-persoenlichkeitscoach.pdf new file mode 100644 index 0000000..ee71e84 Binary files /dev/null and b/public/zertifikate/greator-persoenlichkeitscoach.pdf differ diff --git a/public/zertifikate/greator-siegel-coach.webp b/public/zertifikate/greator-siegel-coach.webp new file mode 100644 index 0000000..a41b633 Binary files /dev/null and b/public/zertifikate/greator-siegel-coach.webp differ diff --git a/src/components/home/About.tsx b/src/components/home/About.tsx index e338ae5..cfa829f 100644 --- a/src/components/home/About.tsx +++ b/src/components/home/About.tsx @@ -17,8 +17,8 @@ export interface AboutProps { photo: string | null; /** Inhalt der Sektion. Ohne Angabe die deutsche Fassung – die englische reicht sie durch. */ content?: HomeContent["about"]; - /** `getCertificate()` – `null` lässt die Sektion wie vorher rendern. */ - certificate?: CertificateAsset | null; + /** `getCertificates()` – leer lässt die Sektion wie vorher rendern. */ + certificates?: readonly CertificateAsset[]; } /* H2 on ivory: Playfair 400, max 14ch (spec §3.2 / §6.5). */ @@ -34,12 +34,13 @@ const BODY = "max-w-[36rem] font-sans text-[1.125rem] leading-[1.6] text-fg [hyp * verifiable facts. No counters, no logos. * * With photo: Portrait cols 3–6 (sticky) · text + ledger cols 7–12 · marginalia and - * certificate stacked under the ledger (cols 7–12) – the text already + * certificates stacked under the ledger (cols 7–12) – the text already * owns the outer columns there, so nothing can stick to the right edge. * Without: text cols 3–8 · ledger cols 3–9 · marginalia under the ledger · - * certificate sticky in cols 10–12 (no monogram vignette – see below). + * certificates in cols 10–12, a single one sticky (no monogram vignette – + * see below). */ -export function About({ photo, content: about = aboutDe, certificate = null }: AboutProps) { +export function About({ photo, content: about = aboutDe, certificates = [] }: AboutProps) { const paragraphs = about.paragraphs.map((p, i) => i === about.paragraphs.length - 1 && flags.showTwins ? `${p} ${about.twins}` : p, ); @@ -104,11 +105,13 @@ export function About({ photo, content: about = aboutDe, certificate = null }: A - {/* Das Zertifikat ist das Gegenstück zur klebenden „04“: gleiche Höhe - (`calc(50vh − .45em)`), gleiche Zeilen, nur am anderen Rand. Mit Foto - reicht der Text bis Spalte 12 – dort gäbe es keine freie Gutter, also - steht es dann still unter dem Werdegang. */} - {certificate && ( + {/* Ein einzelnes Zertifikat ist das Gegenstück zur klebenden „04“: gleiche + Höhe (`calc(50vh − .45em)`), gleiche Zeilen, nur am anderen Rand. Zwei + Abzeichen (je rund 24 rem) passen dort nicht mehr ins Bild – dann steht + der Stapel still und beginnt oben auf Höhe der Eyebrow, das neueste + zuerst. Mit Foto reicht der Text bis Spalte 12 – dort gäbe es keine freie + Gutter, also stehen sie dann still unter dem Werdegang. */} + {certificates.length > 0 && ( -
- +
+ {certificates.map((asset) => ( + + ))}
)} diff --git a/src/components/pages/HomeBody.tsx b/src/components/pages/HomeBody.tsx index 6f9177b..3cc05a2 100644 --- a/src/components/pages/HomeBody.tsx +++ b/src/components/pages/HomeBody.tsx @@ -7,7 +7,7 @@ import { About } from "@/components/home/About"; import { Audience } from "@/components/home/Audience"; import { ProcessContact } from "@/components/home/ProcessContact"; import type { HomeContent } from "@/content/home"; -import { getCertificate, getPhotos } from "@/lib/assets"; +import { getCertificates, getPhotos } from "@/lib/assets"; import { routesByLang, type Lang } from "@/lib/i18n"; import { rootCopy } from "@/lib/metadata"; import { site } from "@/lib/site"; @@ -37,7 +37,7 @@ export function HomeBody({ lang, content }: { lang: Lang; content: HomeContent } } content={content.principle} /> - + diff --git a/src/components/ui/Certificate.tsx b/src/components/ui/Certificate.tsx index 2429c59..92eb42c 100644 --- a/src/components/ui/Certificate.tsx +++ b/src/components/ui/Certificate.tsx @@ -63,11 +63,15 @@ export function Certificate({ content, asset, className }: CertificateProps) { - + {/* Zeilenhöhe 1,4 statt 1, damit ein umbrechender Titel („Greator + Persönlichkeitscoach“) nicht zusammenklebt. Die Ränder davor und danach + sind um den halben Durchschuss (0,15 rem) kürzer – einzeilig steht alles + wie zuvor mit `leading-none`, `mt-6` und `mt-5`. */} + {content.title} -