persolog-Zertifikat als drittes Abzeichen
Anelias persolog-Zertifizierung (Persönlichkeits-Modell, abgeschlossen am 09.10.2026) steht in „Über Anelia“ zwischen Greator Persönlichkeitscoach und Greator Speaker – nach Datum, das neueste oben. Gleicher Lorbeerkranz, Hover und Vorschau-Overlay. Im Kranz steht das persolog-Emblem, aus dem PDF freigestellt (Außenfläche per Floodfill, Kanten gegen Weiß entmischt, ® weggelassen), Farbe und Form unverändert. Drei Abzeichen sind länger als Text, Werdegang und Marginalien zusammen. Damit die Zeilen 1–3 nicht mitwachsen, reicht die Spalte ohne Foto über eine vierte Zeile mit `1fr` (neues Section-Prop `gridClassName`) – der Überhang landet unten, die Abstände links bleiben wie live. Der Abzeichen-Titel bricht mit `text-wrap: balance` um, also „persolog® / Persönlichkeits-Modell“ statt nach dem Bindestrich. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1e7b84b27c
commit
c3351c9a6d
9 files changed
+43
-8
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 95 KiB |
Binary file not shown.
@@ -55,6 +55,11 @@ export function About({ photo, content: about = aboutDe, certificates = [] }: Ab
|
|||||||
numeral={about.numeral}
|
numeral={about.numeral}
|
||||||
label={about.eyebrow}
|
label={about.eyebrow}
|
||||||
className="py-[clamp(4.5rem,10vh,8rem)] md:py-[clamp(7rem,16vh,14rem)]"
|
className="py-[clamp(4.5rem,10vh,8rem)] md:py-[clamp(7rem,16vh,14rem)]"
|
||||||
|
/* Ohne Foto reicht die Zertifikatsspalte über eine vierte, sonst leere Zeile.
|
||||||
|
Weil die `1fr` ist, landet alles, was der Stapel länger ist als Text,
|
||||||
|
Werdegang und Marginalien, dort – Zeilen 1–3 behalten ihre Höhe, die
|
||||||
|
Abstände dazwischen wachsen nicht mit. */
|
||||||
|
gridClassName={cn(!hasPhoto && "lg:grid-rows-[auto_auto_auto_1fr]")}
|
||||||
>
|
>
|
||||||
{hasPhoto && (
|
{hasPhoto && (
|
||||||
<div className="col-span-12 mb-14 lg:col-span-4 lg:col-start-3 lg:mb-0">
|
<div className="col-span-12 mb-14 lg:col-span-4 lg:col-start-3 lg:mb-0">
|
||||||
@@ -106,7 +111,7 @@ export function About({ photo, content: about = aboutDe, certificates = [] }: Ab
|
|||||||
</Reveal>
|
</Reveal>
|
||||||
|
|
||||||
{/* Ein einzelnes Zertifikat ist das Gegenstück zur klebenden „04“: gleiche
|
{/* Ein einzelnes Zertifikat ist das Gegenstück zur klebenden „04“: gleiche
|
||||||
Höhe (`calc(50vh − .45em)`), gleiche Zeilen, nur am anderen Rand. Zwei
|
Höhe (`calc(50vh − .45em)`), gleiche Zeilen, nur am anderen Rand. Mehrere
|
||||||
Abzeichen (je rund 24 rem) passen dort nicht mehr ins Bild – dann steht
|
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
|
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
|
zuerst. Mit Foto reicht der Text bis Spalte 12 – dort gäbe es keine freie
|
||||||
@@ -117,7 +122,7 @@ export function About({ photo, content: about = aboutDe, certificates = [] }: Ab
|
|||||||
"col-span-12 mt-14",
|
"col-span-12 mt-14",
|
||||||
hasPhoto
|
hasPhoto
|
||||||
? "lg:col-span-4 lg:col-start-7 lg:row-start-4"
|
? "lg:col-span-4 lg:col-start-7 lg:row-start-4"
|
||||||
: "lg:col-span-3 lg:col-start-10 lg:row-span-3 lg:row-start-1 lg:mt-0",
|
: "lg:col-span-3 lg:col-start-10 lg:row-span-4 lg:row-start-1 lg:mt-0",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ export interface SectionProps {
|
|||||||
* ist `relative`, das Kind positioniert sich selbst.
|
* ist `relative`, das Kind positioniert sich selbst.
|
||||||
*/
|
*/
|
||||||
lead?: ReactNode;
|
lead?: ReactNode;
|
||||||
|
/** Zusätzliche Klassen für das 12-Spalten-Raster selbst (z. B. eine Zeilenvorlage). */
|
||||||
|
gridClassName?: string;
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,6 +60,7 @@ export function Section({
|
|||||||
className,
|
className,
|
||||||
as = "section",
|
as = "section",
|
||||||
lead,
|
lead,
|
||||||
|
gridClassName,
|
||||||
children,
|
children,
|
||||||
}: SectionProps) {
|
}: SectionProps) {
|
||||||
const Tag = as;
|
const Tag = as;
|
||||||
@@ -74,7 +77,7 @@ export function Section({
|
|||||||
>
|
>
|
||||||
{lead}
|
{lead}
|
||||||
<Container className="relative">
|
<Container className="relative">
|
||||||
<div className={GRID}>
|
<div className={cn(GRID, gridClassName)}>
|
||||||
{numeral && (
|
{numeral && (
|
||||||
<SectionGutter numeral={numeral} total={total} label={label ?? ""} mobileMeta={mobileMeta} />
|
<SectionGutter numeral={numeral} total={total} label={label ?? ""} mobileMeta={mobileMeta} />
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -66,8 +66,9 @@ export function Certificate({ content, asset, className }: CertificateProps) {
|
|||||||
{/* Zeilenhöhe 1,4 statt 1, damit ein umbrechender Titel („Greator
|
{/* Zeilenhöhe 1,4 statt 1, damit ein umbrechender Titel („Greator
|
||||||
Persönlichkeitscoach“) nicht zusammenklebt. Die Ränder davor und danach
|
Persönlichkeitscoach“) nicht zusammenklebt. Die Ränder davor und danach
|
||||||
sind um den halben Durchschuss (0,15 rem) kürzer – einzeilig steht alles
|
sind um den halben Durchschuss (0,15 rem) kürzer – einzeilig steht alles
|
||||||
wie zuvor mit `leading-none`, `mt-6` und `mt-5`. */}
|
wie zuvor mit `leading-none`, `mt-6` und `mt-5`. `balance`, damit
|
||||||
<span className="mt-[1.35rem] block font-mono text-xs uppercase leading-[1.4] tracking-[0.18em] text-accent">
|
„persolog® / Persönlichkeits-Modell“ umbricht statt nach dem Bindestrich. */}
|
||||||
|
<span className="mt-[1.35rem] block font-mono text-xs uppercase leading-[1.4] tracking-[0.18em] text-accent [text-wrap:balance]">
|
||||||
{content.title}
|
{content.title}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,18 @@ export const homeEn: HomeContent = {
|
|||||||
pdfLabel: "Open PDF",
|
pdfLabel: "Open PDF",
|
||||||
close: "Close",
|
close: "Close",
|
||||||
},
|
},
|
||||||
|
persolog: {
|
||||||
|
title: "persolog® Personality Model",
|
||||||
|
description: "Certified trainer for the persolog® Personality Model",
|
||||||
|
date: "October 2026",
|
||||||
|
cta: "View certificate",
|
||||||
|
eyebrow: "Certificate",
|
||||||
|
dialogMeta: "persolog · completed 9 October 2026",
|
||||||
|
imageAlt:
|
||||||
|
"Certificate: Anelia Wolf successfully completed the persolog® Personality Model certification on 9 October 2026 and is entitled to call herself a certified trainer for the persolog® Personality Model.",
|
||||||
|
pdfLabel: "Open PDF",
|
||||||
|
close: "Close",
|
||||||
|
},
|
||||||
speaker: {
|
speaker: {
|
||||||
title: "Greator Speaker",
|
title: "Greator Speaker",
|
||||||
description: "Certified graduate of the Greator Speaker programme",
|
description: "Certified graduate of the Greator Speaker programme",
|
||||||
|
|||||||
@@ -279,6 +279,19 @@ export const about = {
|
|||||||
pdfLabel: "PDF öffnen",
|
pdfLabel: "PDF öffnen",
|
||||||
close: "Schließen",
|
close: "Schließen",
|
||||||
},
|
},
|
||||||
|
persolog: {
|
||||||
|
title: "persolog® Persönlichkeits-Modell",
|
||||||
|
description: "Zertifizierte Trainerin für das persolog® Persönlichkeits-Modell",
|
||||||
|
date: "Oktober 2026",
|
||||||
|
cta: "Zertifikat ansehen",
|
||||||
|
/* Overlay */
|
||||||
|
eyebrow: "Zertifikat",
|
||||||
|
dialogMeta: "persolog · Abschluss am 9. Oktober 2026",
|
||||||
|
imageAlt:
|
||||||
|
"Zertifikat: Anelia Wolf hat die Zertifizierung zum persolog® Persönlichkeits-Modell am 9. Oktober 2026 erfolgreich abgeschlossen und ist berechtigt, die Bezeichnung „Zertifizierte Trainerin für das persolog® Persönlichkeits-Modell“ zu führen.",
|
||||||
|
pdfLabel: "PDF öffnen",
|
||||||
|
close: "Schließen",
|
||||||
|
},
|
||||||
speaker: {
|
speaker: {
|
||||||
title: "Greator Speaker",
|
title: "Greator Speaker",
|
||||||
description: "Zertifizierte Absolventin der Greator Speaker Ausbildung",
|
description: "Zertifizierte Absolventin der Greator Speaker Ausbildung",
|
||||||
|
|||||||
+4
-3
@@ -58,7 +58,7 @@ export function getSpeakerPdf(): string | null {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Schlüssel in `about.certificates` (Texte) – Reihenfolge siehe `CERTIFICATES`. */
|
/** Schlüssel in `about.certificates` (Texte) – Reihenfolge siehe `CERTIFICATES`. */
|
||||||
export type CertificateKey = "persoenlichkeitscoach" | "speaker";
|
export type CertificateKey = "persoenlichkeitscoach" | "persolog" | "speaker";
|
||||||
|
|
||||||
export interface CertificateAsset {
|
export interface CertificateAsset {
|
||||||
key: CertificateKey;
|
key: CertificateKey;
|
||||||
@@ -68,7 +68,7 @@ export interface CertificateAsset {
|
|||||||
image: string;
|
image: string;
|
||||||
width: number;
|
width: number;
|
||||||
height: number;
|
height: number;
|
||||||
/** Das runde Greator-Siegel, freigestellt – es steht im Lorbeerkranz. */
|
/** Siegel bzw. Emblem des Ausstellers, freigestellt – es steht im Lorbeerkranz. */
|
||||||
seal: string;
|
seal: string;
|
||||||
sealSize: number;
|
sealSize: number;
|
||||||
}
|
}
|
||||||
@@ -76,11 +76,12 @@ export interface CertificateAsset {
|
|||||||
/** Oben steht das neueste Zertifikat. */
|
/** Oben steht das neueste Zertifikat. */
|
||||||
const CERTIFICATES = [
|
const CERTIFICATES = [
|
||||||
{ key: "persoenlichkeitscoach", file: "greator-persoenlichkeitscoach", seal: "greator-siegel-coach.webp", width: 989, height: 1398 },
|
{ key: "persoenlichkeitscoach", file: "greator-persoenlichkeitscoach", seal: "greator-siegel-coach.webp", width: 989, height: 1398 },
|
||||||
|
{ key: "persolog", file: "persolog-persoenlichkeitsmodell", seal: "persolog-emblem.webp", width: 989, height: 1398 },
|
||||||
{ key: "speaker", file: "greator-speaker", seal: "greator-siegel.webp", width: 989, height: 1400 },
|
{ key: "speaker", file: "greator-speaker", seal: "greator-siegel.webp", width: 989, height: 1400 },
|
||||||
] as const satisfies readonly { key: CertificateKey; file: string; seal: string; width: number; height: number }[];
|
] as const satisfies readonly { key: CertificateKey; file: string; seal: string; width: number; height: number }[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Greator-Zertifikate für die Sektion „Über Anelia“. Ein Zertifikat erscheint nur,
|
* Zertifikate für die Sektion „Über Anelia“. Ein Zertifikat erscheint nur,
|
||||||
* wenn alle drei Dateien liegen – fehlen alle, rendert die Sektion wie vorher
|
* wenn alle drei Dateien liegen – fehlen alle, rendert die Sektion wie vorher
|
||||||
* (Variante B, wie bei den Fotos).
|
* (Variante B, wie bei den Fotos).
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in new issue
Block a user