diff --git a/app/components/icons/StepIcons.tsx b/app/components/icons/StepIcons.tsx
index e3766b2..be70d42 100644
--- a/app/components/icons/StepIcons.tsx
+++ b/app/components/icons/StepIcons.tsx
@@ -130,6 +130,44 @@ function IconCup() {
);
}
+function IconPen() {
+ // Pen/nib — same glyph as der-eine's own hand-coded Focus.tsx IconMetal
+ // (32x32 coords carried over unchanged), now available through the
+ // 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 (
+
+ );
+}
+
+function IconSparkle() {
+ // Engraving/laser mark — same glyph as der-eine's own IconSparkle.
+ return (
+
+ );
+}
+
+function IconCompact() {
+ // Four corner brackets pointing inward — same glyph as der-eine's own
+ // IconCompact ("fits anywhere").
+ return (
+
+ );
+}
+
function IconPause() {
// Two rounded bars — "sit still for a moment" steps.
return (
@@ -155,6 +193,9 @@ export const STEP_ICONS: Record React.ReactNode> = {
shield: IconShield,
cup: IconCup,
pause: IconPause,
+ pen: IconPen,
+ sparkle: IconSparkle,
+ compact: IconCompact,
};
// Same symbolic clock icon /lebensuhr uses above its "24 Stunden" heading
diff --git a/app/der-eine/page.tsx b/app/der-eine/page.tsx
index 3b0d65b..08bb455 100644
--- a/app/der-eine/page.tsx
+++ b/app/der-eine/page.tsx
@@ -1,21 +1,22 @@
import type { Metadata } from "next";
-import { Hero } from "./components/Hero";
-import { Focus } from "./components/Focus";
-import { PasstDazu } from "./components/PasstDazu";
-import { Testimonials } from "./components/Testimonials";
-import { Pricing } from "./components/Pricing";
+import { notFound } from "next/navigation";
+import { ProductBlocks } from "../components/ProductBlocks";
import { Footer } from "../components/Footer";
import { getProductBySlug, getCompanySettings } from "../lib/payload";
import { buildProductSchema } from "../lib/structuredData";
const title = "Der Eine. – Für die eine Sache, die gerade zählt.";
-// Description reads from the live product instead of a separately
-// hardcoded string, unlike this page's own `title` — matches
-// /tasse-die-pause's own pattern (see that page's comment). Two
-// hand-maintained copies of the same text used to drift apart: this one
-// used to say something different from Products.description (which feeds
-// the cart/checkout/JSON-LD elsewhere) — same field, one source now.
+// der-eine was the reference template the whole PDP block-builder system
+// was designed to match (gallery sizing, black stepRow-facts icons,
+// CTA-label pattern — see ProductBlocks.tsx's own comments) — now migrated
+// onto it itself, same as /tasse-die-pause before it. Testimonials.tsx
+// dropped entirely rather than migrated: the PDP builder no longer offers
+// testimonialsRef (removed 2026-08-29, unused everywhere; the planned
+// replacement is a real reviews feature). Hero.tsx/Focus.tsx/
+// Testimonials.tsx/Pricing.tsx/PasstDazu.tsx in ./components are now dead
+// code, left for a follow-up cleanup pass rather than deleted here — same
+// as /tasse-die-pause's own old components.
export async function generateMetadata(): Promise {
const product = await getProductBySlug("stift-kugelschreiber");
const description = product?.descriptionText || undefined;
@@ -33,21 +34,14 @@ export default async function DerEinePage() {
getProductBySlug("stift-kugelschreiber"),
getCompanySettings(),
]);
- const productSchema = product
- ? buildProductSchema(product, "https://einfach-produktiv.mk360.de/der-eine", seller)
- : null;
+ if (!product) notFound();
+ const productSchema = buildProductSchema(product, "https://einfach-produktiv.mk360.de/der-eine", seller);
return (
<>
- {productSchema && (
-
- )}
+
-
-
-
-
-
+
>