import Link from "next/link"; import Image from "next/image"; import { Reveal, RevealGroup, RevealItem } from "./Reveal"; import { getWerkzeugeCards } from "../lib/payload"; // Content now lives in Payload (WerkzeugeCards collection). Icons use a // uniform box here (object-contain) rather than the previous hardcoded // per-card hand-tuned width/height/rotation — that only made sense for a // fixed, known set of 3 SVGs authored upside-down for a specific // hand-drawn look, which doesn't generalize to a real CMS field. The 3 // original icons were re-exported pre-flipped/rotated as PNGs so they // still display correctly with plain object-contain. export async function Tools() { const tools = await getWerkzeugeCards(); if (tools.length === 0) return null; return (
{/* Section header */}

Meine Werkzeuge

Werkzeuge für einen leichteren Alltag.

{/* Tools grid — 3 cols md+, stacked below md; internal icon+text layout stays horizontal at every size, only the outer span changes */} {tools.map((tool) => ( {/* Icon — uniform box, pre-flipped/rotated source asset */}
{/* Card content — self-stretch + h-full + justify-between so the CTA always sits at the same bottom edge across all 3 cards, regardless of how many lines the description wraps to. The parent RevealItem's items-start (needed to keep the icon top-aligned, not stretched) otherwise stops this one child from filling the grid-equalized row height — matches the Figma card-content spec (h-full items-start justify-between), which the earlier implementation had dropped. gap-4 alongside justify-between guarantees a minimum text→CTA gap even for the tallest card (the one that defines the row height, and so has ~zero leftover space for justify-between to distribute on its own). */}

{tool.title}

{tool.description}

→ {tool.ctaLabel}
))}
); }