import { cn } from "@/lib/utils"; export interface CouponContent { /** Mono-Caps über dem Satz, z. B. „Ihr Messe-Special“. */ kicker: string; /** Der Nachlass in Display-Ziffern, z. B. „−20“. */ rate: string; /** Einheit neben der Zahl, z. B. „%“. */ unit: string; /** Worauf er gilt – der eine Satz, der den Gutschein trägt. */ on: string; /** Was drinsteckt. Eine Zeile je Leistung, mit goldenem Strich davor. */ includes: readonly string[]; /** Frist und Stichwort im Abriss unter der Perforation. */ valid: { label: string; value: string }; code: { label: string; value: string }; } export interface CouponProps { content: CouponContent; className?: string; } const MONO = "font-mono text-xs tracking-[0.06em] tabular-nums"; /** * Der Grund eines Gutscheins: blasses Gold, goldene Haarlinie, runde Ecken. * * Exportiert, weil zwei Bauteile denselben Gegenstand darstellen – der große * Gutschein im Hero und der kleine Hinweis über dem Kontaktformular, dass der * Vorteil schon anhängt. Sie müssen gleich aussehen, also gibt es die Werte * einmal. Die runden Ecken sind die ausdrückliche Ausnahme von „Radius 0“ * (Kundenwunsch 10.09.2026) und gelten nur für diese beiden Stellen. */ export const COUPON_SURFACE = "rounded-[14px] border border-gold-700 bg-gold-100 text-ink"; /** * Die Reißkante: gestrichelte Haarlinie über die volle Breite, an beiden Enden * eine Kerbe. Die Kerben sind auf die Ecke gestellte Quadrate in der Grundfarbe * des umgebenden Abschnitts (`bg-bg`) – sie sehen aus wie gestanzt und kommen * ohne einen einzigen Eckenradius aus. Auf hellem Grund elfenbein, auf dunklem * tintenschwarz, ganz von selbst. */ export function CouponPerforation() { return ( ); } /** * Der Messe-Gutschein (/her-career/, Sektion 01). * * Er soll als Gutschein erkennbar sein, ohne aus dem Haus-Stil zu fallen – * also kein abgerundetes Ticket mit Schatten und Fremdschrift, sondern die * drei Merkmale, die ein Gutschein wirklich braucht, in der Sprache der Seite: * * 0. Runde Ecken. Die einzige Stelle der Website mit einem Eckenradius * (Projektregel ist sonst Radius 0, ausdrückliche Ausnahme vom 10.09.2026): * Der Gutschein stellt einen Gegenstand dar, kein Interface-Element, und * ein Gutschein mit scharfen Ecken sieht aus wie eine Tabelle. Der Radius * bleibt auf dieses eine Bauteil beschränkt – Knöpfe, Rahmen und Tafeln * ringsum sind weiter eckig. * 1. Ein eigener Grund. `--gold-100` ist der blasse Goldton der Palette – * bis hierher nirgends als Fläche benutzt und damit frei für genau das * eine Objekt, das sich vom Elfenbein abheben soll. Die Schrift darauf ist * Tinte, nicht Gold: Gold auf Gold liest sich nicht, und goldene Schrift * bleibt ohnehin dem dunklen Grund vorbehalten. * 2. Eine Reißkante. Gestrichelte Haarlinie über die volle Breite, an beiden * Enden eine Kerbe. Die Kerben sind auf die Ecke gestellte Quadrate in der * Grundfarbe der Sektion – gestanzt aussehende Löcher ohne einen einzigen * Eckenradius. * 3. Ein Abriss. Unter der Kante stehen Frist und Stichwort, das Stichwort im * eigenen Kästchen wie ein Stempelfeld. * * Der Block steht immer auf `data-theme="light"`; die Kerben nehmen mit `bg-bg` * den Grund der Sektion an. */ export function Coupon({ content, className }: CouponProps) { const { kicker, rate, unit, on, includes, valid, code } = content; return (

{kicker}

{/* Zahl und Einheit auf einer Grundlinie; die Einheit misst sich an der Zahl. */}

{rate} {unit}

{on}

{/* Dieselben Schienen wie : Strich | Text. */}
    {includes.map((item) => (
  • ))}
{/* Der Abriss: Frist links, Stichwort rechts im Stempelfeld. */}
{valid.label}
{valid.value}
{code.label}
{/* Kein `uppercase`: „herCAREER“ ist gemischt geschrieben, Versalien machten daraus ein „HERCAREER“, das die Messe so nicht führt. */}
{code.value}
); } export default Coupon;