From a4606d26ad946460ffd1f9de17c209822ad41293 Mon Sep 17 00:00:00 2001 From: Marco Date: Sun, 30 Aug 2026 00:15:17 +0000 Subject: [PATCH] =?UTF-8?q?PDP=20richTextSection=20width=20cap;=20swap=20s?= =?UTF-8?q?eal=E2=86=92vase,=20hourglass=E2=86=92star=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - richTextSection on Products now renders inside the same max-w-[48rem] mx-auto the fact-cards/crossSell card already use — the "Was kann er?" heading sat edge-to-edge while the cards under it were capped, still reading as unconstrained (reported 2026-08-30). - "Vintage-Porzellan"'s medallion and "Für den einen Moment"'s hourglass still didn't land (reported 2026-08-30) — replaced with a literal pottery/vase silhouette and a single star, reusing the same 'seal'/ 'hourglass' enum keys already assigned to Tasse's blocks so no new migration is needed, just new icon content behind the same keys. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_013Eg6h91yngXmSnM51wxXM8 --- app/components/ProductBlocks.tsx | 10 ++++++ app/components/icons/StepIcons.tsx | 50 ++++++++++++++++-------------- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/app/components/ProductBlocks.tsx b/app/components/ProductBlocks.tsx index eef4b75..270a059 100644 --- a/app/components/ProductBlocks.tsx +++ b/app/components/ProductBlocks.tsx @@ -141,6 +141,16 @@ export function renderProductBlock(block: ProductBlock, ctx: ProductBlockContext // from there since both return their own JSX before calling this. case "crossSell": return null; + // Same max-w-[48rem] mx-auto as the stepRow fact-cards/crossSell card + // below — without this, a heading/prose block sat edge-to-edge while + // the cards under it were capped, reading as "still not width-limited" + // even after the cards themselves were (reported 2026-08-30). + case "richTextSection": + return ( +
+ +
+ ); // Black, not brand-yellow — matching der-eine's own hand-coded Focus.tsx // icons (#231f20 stroke), which this whole PDP system is meant to look // like. STEP_ICONS' SVGs hardcode stroke="#f6a701" per-element (shared diff --git a/app/components/icons/StepIcons.tsx b/app/components/icons/StepIcons.tsx index e97bed2..8738569 100644 --- a/app/components/icons/StepIcons.tsx +++ b/app/components/icons/StepIcons.tsx @@ -178,19 +178,37 @@ function IconPause() { ); } -function IconSeal() { - // Scalloped medallion — vintage/quality-craft facts (e.g. "Vintage- - // Porzellan"), where none of the existing glyphs read as "material/ - // heritage quality" at all. +function IconVase() { + // Classic ornate pottery/vase silhouette (rim, neck, flared belly, foot) + // — a literal ceramic shape reads as "Vintage-Porzellan" far more + // directly than an abstract medallion did (reported 2026-08-30, the + // seal glyph still didn't land). + return ( + + + + + ); +} + +function IconStar() { + // A single starred moment — "Für den einen Moment" flags one thing as + // special, closer to what a star marks than an hourglass's literal + // "time passing" (reported 2026-08-30, hourglass still didn't land). return ( - ); } @@ -215,22 +233,6 @@ function IconDroplets() { ); } -function IconHourglass() { - // Classic hourglass — "for the one moment" facts, more evocative of a - // pocket of time than the flat pause-bars glyph. - return ( - - - - ); -} - // Keys MUST match the Payload StepRowBlock's `icon` select field options // (docker/payload/src/blocks/StepRowBlock.ts) exactly. export const STEP_ICONS: Record React.ReactNode> = { @@ -249,9 +251,9 @@ export const STEP_ICONS: Record React.ReactNode> = { pen: IconPen, sparkle: IconSparkle, compact: IconCompact, - seal: IconSeal, + seal: IconVase, droplets: IconDroplets, - hourglass: IconHourglass, + hourglass: IconStar, }; // Same symbolic clock icon /lebensuhr uses above its "24 Stunden" heading