diff --git a/app/components/ProductBlocks.tsx b/app/components/ProductBlocks.tsx index 509bf0c..fb38273 100644 --- a/app/components/ProductBlocks.tsx +++ b/app/components/ProductBlocks.tsx @@ -155,7 +155,11 @@ function renderProductBlock(block: ProductBlock, ctx: ProductBlockContext): Reac const Icon = STEP_ICONS[item.icon]; return (
- {Icon && {Icon()}} + {Icon && ( + + {Icon()} + + )}

{item.title}

{item.description}

diff --git a/app/components/ProductSpotlight.tsx b/app/components/ProductSpotlight.tsx index ba8d5ad..d8d8b14 100644 --- a/app/components/ProductSpotlight.tsx +++ b/app/components/ProductSpotlight.tsx @@ -4,6 +4,7 @@ import Link from "next/link"; import { AddToCartButton } from "./AddToCartButton"; import { Reveal } from "./Reveal"; import { WishlistButton } from "./WishlistButton"; +import { ProductBadge } from "./ProductBadge"; import { getSpotlightProduct, getShippingSettings, getDefaultTaxRatePercent, getKleinunternehmer, getWishlistEnabled } from "../lib/payload"; import { formatPrice, discountPercent } from "../lib/format"; import { effectiveTaxRate } from "../lib/cartTotals"; @@ -110,17 +111,9 @@ export async function ProductSpotlight() { sizes="(min-width: 1024px) 380px, (min-width: 640px) 512px, 100vw" className="object-cover transition-transform duration-500 group-hover:scale-105" /> - {fullyOutOfStock ? ( - - Ausverkauft - - ) : ( - discount !== null && ( - - -{discount}% - - ) - )} +
+ +
{wishlistEnabled && product.spotlightShowWishlist && ( )} diff --git a/app/components/icons/StepIcons.tsx b/app/components/icons/StepIcons.tsx index be70d42..e97bed2 100644 --- a/app/components/icons/StepIcons.tsx +++ b/app/components/icons/StepIcons.tsx @@ -136,7 +136,7 @@ function IconPen() { // shared set for other PDPs — der-eine's PDP is the block-builder's // reference template, its own icons belong in the shared library too. return ( - + @@ -146,7 +146,7 @@ function IconPen() { function IconSparkle() { // Engraving/laser mark — same glyph as der-eine's own IconSparkle. return ( - + + ); @@ -178,6 +178,59 @@ 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. + return ( + + + + + ); +} + +function IconDroplets() { + // Two water drops — dishwasher-safe facts. + return ( + + + + + ); +} + +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> = { @@ -196,6 +249,9 @@ export const STEP_ICONS: Record React.ReactNode> = { pen: IconPen, sparkle: IconSparkle, compact: IconCompact, + seal: IconSeal, + droplets: IconDroplets, + hourglass: IconHourglass, }; // Same symbolic clock icon /lebensuhr uses above its "24 Stunden" heading