Match block-driven PDP hero/pricing panel to hand-coded siblings visually
Reported: einfach-anfangen's block-built PDP looked visually far off from todo-cards. Root cause: ProductBlocks.tsx wrapped every block (including the hero) in one generic padded div, so the hero image lost its edge-to-edge desktop bleed/hover-scale and neither section had its own Reveal scroll-in animation, unlike every hand-coded PDP. ProductHero and ProductPricingPanel now render their own full <section> matching todo-cards' Hero.tsx/Pricing.tsx exactly (own Reveal, own grid, own padding) instead of relying on the shared per-block wrapper, which now only applies to genuinely generic content blocks. Also wires up the testimonialsRef block for Products.layout (added to the backend in commit 82583a1) — same async-fetch handling as PageBlocks.tsx, plus the 'einfach-anfangen' TestimonialsPage value. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J1Hu5bZ1kZUgKhab6yNwCt
This commit is contained in:
+3
-1
@@ -859,7 +859,7 @@ export async function getWerkzeugeCards(): Promise<WerkzeugeCard[]> {
|
||||
}));
|
||||
}
|
||||
|
||||
export type TestimonialsPage = "todo-cards" | "newsletter" | "klarheits-check" | "der-eine";
|
||||
export type TestimonialsPage = "todo-cards" | "newsletter" | "klarheits-check" | "der-eine" | "einfach-anfangen";
|
||||
|
||||
export type Testimonial = { id: number; quote: string; name: string; role: string; avatar: string };
|
||||
|
||||
@@ -1346,6 +1346,7 @@ export type ProductBlock =
|
||||
| { blockType: "pillList"; id: string; items: { id: string; label: string }[] }
|
||||
| { blockType: "checklistImage"; id: string; image: string | null; items: { id: string; text: string }[] }
|
||||
| { blockType: "table"; id: string; labelHeader: string; valueHeader: string; rows: { id: string; label: string; value: string }[] }
|
||||
| { blockType: "testimonialsRef"; id: string; page: TestimonialsPage }
|
||||
| { blockType: "ctaCard"; id: string; eyebrow: string; title: string; description: string | null; href: string };
|
||||
|
||||
type PayloadProductBlock =
|
||||
@@ -1359,6 +1360,7 @@ type PayloadProductBlock =
|
||||
| { blockType: "pillList"; id: string; items: { id: string; label: string }[] }
|
||||
| { blockType: "checklistImage"; id: string; image: PayloadPageImageField; items: { id: string; text: string }[] }
|
||||
| { blockType: "table"; id: string; labelHeader: string; valueHeader: string; rows: { id: string; label: string; value: string }[] }
|
||||
| { blockType: "testimonialsRef"; id: string; page: TestimonialsPage }
|
||||
| { blockType: "ctaCard"; id: string; eyebrow: string; title: string; description?: string | null; href: string };
|
||||
|
||||
function mapPayloadProductBlock(block: PayloadProductBlock): ProductBlock {
|
||||
|
||||
Reference in New Issue
Block a user