first publish
This commit is contained in:
commit
b8e41b4d55
147 files changed
+19367
No files matched your search
@@ -0,0 +1,173 @@
|
||||
/**
|
||||
* /leistungen/keynotes/ – Keynotes & Speaking (Spec §7.4). Copy 1:1, Du-Form.
|
||||
* 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 { mailto } 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 – auf Deutsch oder Englisch, live oder online.",
|
||||
cta: { label: "Keynote anfragen", href: mailto.keynote } 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" },
|
||||
] 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[],
|
||||
},
|
||||
|
||||
/* Spec §7.4 wörtlich. Die vorherige Fassung („Ein Impuls, der nachwirkt.“) stand nicht
|
||||
in Abschnitt A und brach zugleich Spec §0 Kritik #4: der Satz darf EINMAL pro
|
||||
Keynote-Seite vorkommen und stand dann in Subline, Meta-Description und in der
|
||||
Unterbrechung – die eine große typografische Pause wiederholte, was 400 px darüber
|
||||
schon zu lesen war. */
|
||||
interruption: {
|
||||
id: "mut",
|
||||
text: "Mut zum Erfolg.",
|
||||
mono: "Keynote · herCAREER Expo 2026 · 23.10. · 10:30 · Auditorium 2",
|
||||
},
|
||||
|
||||
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[],
|
||||
},
|
||||
|
||||
speakerFacts: {
|
||||
id: "speaker-facts",
|
||||
items: [
|
||||
{ label: "Sprachen", value: "DE / EN" },
|
||||
{ label: "Dauer", value: "20–60 Min." },
|
||||
{ label: "Format", value: "live, online, hybrid" },
|
||||
{ label: "Technik", value: "Headset, Präsentation optional" },
|
||||
{ label: "Reise", value: "deutschlandweit, Europa auf Anfrage" },
|
||||
{ label: "Anfrage", value: "unverbindlich" },
|
||||
] satisfies readonly FactItem[],
|
||||
},
|
||||
|
||||
termine,
|
||||
|
||||
veranstalter: {
|
||||
id: "veranstalter",
|
||||
eyebrow: "Für Veranstalter",
|
||||
h2: { before: "Alles Wichtige vorab.", em: "", after: "" } satisfies Headline,
|
||||
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: "Auf Englisch?",
|
||||
a: "Ja. Keynotes halte ich auf Deutsch oder Englisch – live, online oder hybrid.",
|
||||
},
|
||||
{
|
||||
q: "Gibt es Video oder Referenzen?",
|
||||
a: "Auf Anfrage. Sprich mich an, dann schicke ich dir Unterlagen zum Vortrag.",
|
||||
},
|
||||
] satisfies readonly FaqItem[],
|
||||
},
|
||||
|
||||
band: {
|
||||
h2: { before: "Hol das WOLF-Prinzip auf deine Bühne.", em: "", after: "" } satisfies Headline,
|
||||
cta: { label: "Keynote anfragen", href: mailto.keynote } satisfies Cta,
|
||||
micro: "Unverbindlich · Antwort auf Deutsch oder Englisch",
|
||||
},
|
||||
} 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<typeof keynotes>;
|
||||
Reference in new issue
Block a user