/** * /leistungen/keynotes/ – Keynotes & Speaking (Spec §7.4). Copy 1:1, Du-Form. * Entschlackt am 02.10.2026: Die typografische Unterbrechung („Mut zum Erfolg.“ – stand * schon als H1 und im Vortragstitel), die Speaker-Facts (wiederholten die Hero-Fakten; * nur „Technik“ war neu und steht jetzt dort) und die FAQ „Auf Englisch?“ sind * entfallen. Die Termine hängen unter dem Vortrag. Statt des Kontakt-Bands mit * mailto-Knopf schließt die Seite mit der Terminanfrage (Formular). * Zweiter Vortrag („Unlock your Sales-DNA“) bleibt weg (flags.showSecondTalk: false). * Speaker-Profil-Zeile nur mit flags.showSpeakerPdf bzw. vorhandener Datei (assets.getSpeakerPdf()). * FAQ-Antworten: kurz, aus den Spec-Fakten abgeleitet (Spec A.8). */ import { routes } from "@/lib/site"; import type { Widen } from "./widen"; import { assertNoPlaceholders, collectStrings, ph } from "@/lib/legal"; import type { ColumnItem, Cta, FactItem, FaqItem, GoalRow, Headline } from "./home"; import { termine } from "./home"; export interface TalkRow { numeral: string; title: string; message: string; audience: string; meta: string; } /** Labels der Vortrags-Zeile (Kernbotschaft / Für wen). */ export const talkLabels = { message: "Kernbotschaft", audience: "Für wen" } as const; export const keynotes = { meta: { title: "Keynotes & Speaking", description: "Keynotes nach dem WOLF-Prinzip für Firmen-Events, Kick-offs und Kongresse. Ein Impuls, der nachwirkt – auf Deutsch oder Englisch, live oder online. Anelia Wolf, Keynote Speakerin.", }, numeral: "03", masthead: { role: "Keynote Speakerin · Trainerin · Coach", center: "Keynotes & Speaking", lang: "Deutsch & Englisch", }, /* No-break space before the separator: at 390 px this label wraps and a line must never open with „·“. */ eyebrow: "Keynotes nach dem WOLF-Prinzip · Deutsch & Englisch", /** Das kursive Wort darf hier zusätzlich `.gold-text` tragen (das eine Gradient-Wort der Seite). */ h1: { before: "Mut zum ", em: "Erfolg", after: "." } satisfies Headline, h1GoldEm: true, subline: "Keynotes nach dem WOLF-Prinzip für Firmen-Events, Kick-offs und Kongresse. Ein Impuls, der nachwirkt.", /* Springt zur Terminanfrage am Fuß der Seite (vorher: mailto). */ cta: { label: "Keynote anfragen", href: `${routes.keynotes}#terminanfrage` } satisfies Cta, /** Nur rendern, wenn die PDF-Datei existiert (assets.getSpeakerPdf()). */ secondary: { label: "Speaker-Profil (PDF)", href: "/speaker-profil.pdf", external: true }, facts: [ { label: "Dauer", value: "20–60 Minuten" }, { label: "Format", value: "Live, online, hybrid" }, { label: "Sprache", value: "Deutsch / Englisch" }, { label: "Ort", value: "Deutschlandweit, Europa auf Anfrage" }, { label: "Technik", value: "Headset, Präsentation optional" }, ] satisfies readonly FactItem[], alt: "Anelia Wolf auf der Bühne", caption: `Anelia Wolf · Foto: ${ph("Name der Fotografin")}`, folio: { next: { label: "Der Vortrag", href: "#vortrag" } }, talk: { id: "vortrag", eyebrow: "Signature Talk", h2: { before: "Der Vortrag.", em: "", after: "" } satisfies Headline, rows: [ { numeral: "01", /* U+2011 (non-breaking hyphen) keeps „WOLF-Prinzip“ on one line. */ title: "Das WOLF‑Prinzip – Mut zum Erfolg!", message: "Starke Persönlichkeit, souveräne Wirkung, maximaler Erfolg: wie du dein Potenzial erkennst und selbstbewusst einsetzt – im Leben und im Business.", audience: "Mitarbeitende, Vertriebsteams, Führungskräfte, Karriere-Publikum", meta: "20–60 Min. · DE/EN · live & online", }, ] satisfies readonly TalkRow[], }, occasions: { id: "anlaesse", eyebrow: "Anlässe", h2: { before: "Drei Bühnen.", em: "", after: "" } satisfies Headline, /* U+2011 (geschützter Trennstrich) hält „Kick-offs“ und „Hochschul-Event“ in einer Zeile. */ columns: [ { title: "Firmen-Events & Kick‑offs", lines: ["Jahresauftakt", "Vertriebs-Kick‑off", "Führungskreis"], }, { title: "Vertriebstagungen & Kongresse", lines: ["Vertriebstagung", "Branchenkongress", "Messeauftritt"], }, { title: "Karriere-Events & Frauennetzwerke", lines: ["Karrieremesse", "Frauennetzwerk", "Hochschul‑Event"], }, ] satisfies readonly ColumnItem[], }, takeaways: { id: "publikum", eyebrow: "Was dein Publikum mitnimmt", h2: { before: "Was bleibt.", em: "", after: "" } satisfies Headline, rows: [ { text: "Klarheit darüber, wer man ist und wofür man steht." }, { text: "Ein konkretes Vorgehen für souveränes Auftreten – im Kundengespräch wie im Team." }, { text: "Den Mut, die nächste Entscheidung selbst zu treffen." }, ] satisfies readonly GoalRow[], }, termine, /** Zeile unter dem Vortrag – nur, wenn die PDF-Datei geliefert wurde (assets.getSpeakerPdf()). */ speakerPdf: { label: "Speaker-Profil (PDF)", text: "Kurzvita, Themen, Fotos, Technik", href: "/speaker-profil.pdf" }, faq: { id: "faq", eyebrow: "FAQ", items: [ { q: "Wie lange im Voraus anfragen?", a: "So früh wie möglich – Termine vergebe ich nach Eingang der Anfrage. Frag unverbindlich an, dann prüfe ich die Verfügbarkeit.", }, { q: "Auch als Workshop nach der Keynote?", a: "Ja. Die Keynote lässt sich mit einem Workshop oder Training kombinieren – am selben Tag oder als Folgetermin.", }, { q: "Gibt es Video oder Referenzen?", a: "Auf Anfrage. Sprich mich an, dann schicke ich dir Unterlagen zum Vortrag.", }, ] satisfies readonly FaqItem[], }, /** * Terminanfrage (ink) – das Formular der Startseite mit zwei freiwilligen Feldern. * `topic` wird zum Mail-Betreff; `mailLabel` beschriftet die Felder in der Mail. */ anfrage: { id: "terminanfrage", eyebrow: "Terminanfrage", h2: { before: "Lass uns einen ", em: "Termin", after: " finden." } satisfies Headline, topic: "Terminanfrage Keynote", fields: [ { name: "datum", label: "Datum der Veranstaltung", mailLabel: "Datum" }, { name: "veranstaltung", label: "Veranstaltung & Ort", mailLabel: "Veranstaltung & Ort" }, ], }, } as const; /* Build-Guard: der Launch-Flip (`flags.showPlaceholders: false`) darf keine sichtbaren „[…]“ übrig lassen. Der Scan läuft über das ganze Objekt, damit die Liste nicht auseinanderläuft – offene Punkte stehen in CONTENT_TODO (src/lib/legal.ts). */ assertNoPlaceholders("src/content/keynotes.ts", collectStrings(keynotes)); /** Struktur, nicht Wortlaut – die englische Fassung erfüllt denselben Typ. */ export type KeynotesContent = Widen;