"use client" import { motion, useScroll } from "motion/react" import { Fragment, useRef, useState } from "react" import { ArrowDownRightIcon, ArrowRightIcon, CheckIcon, PauseIcon, PlayIcon, QuoteIcon, XIcon } from "lucide-react" import { cn } from "@/lib/utils" import type { TemplateProps } from "../../lib/types" import { DemoForm } from "../shared/demo-form" import { TField } from "../shared/fields" import { TImage } from "../shared/media" import { Reveal, RevealWords, ease, parseRich, useScrollNav } from "../shared/motion" import { TemplateShell } from "../shared/shell" import { coach, type CoachData } from "./definition" import { fonts, script } from "./fonts" const em = "italic text-t-accent" const container = "mx-auto w-full max-w-[1280px] px-5 md:px-8" const heading = "font-t-display font-normal tracking-[-0.02em]" function Eyebrow({ children }: { children: string }) { return

{children}

} // Wörter gleiten herein, hervorgehobene Wörter bekommen eine handgezeichnete Linie function MarkedTitle({ text }: { text: string }) { const lines: { word: string; em: boolean; index: number }[][] = [] let count = 0 for (const tokens of parseRich(text)) { const line = [] for (const token of tokens) { line.push({ ...token, index: count }) count += 1 } lines.push(line) } return (

{lines.map((tokens, l) => ( {tokens.map((token, t) => ( {t > 0 && " "} {token.word} {token.em && ( )} ))} ))}

) } export function CoachTemplate({ content }: TemplateProps) { const { brand, hero, press, pains, story, offers, results, podcast, leadmagnet, contact } = content.data const show = (key: string) => !content.hidden.includes(key) const links = [ { href: "#ueber-mich", label: "Über mich", visible: show("story") }, { href: "#angebote", label: "Angebote", visible: show("offers") }, { href: "#podcast", label: "Podcast", visible: show("podcast") }, ].filter((link) => link.visible) return (