import Image from "next/image"; import { getTrustBadges } from "../lib/payload"; // Content now lives in Payload (TrustBadges collection) instead of being // hardcoded here, so copy (e.g. the shipping timeframe/threshold numbers) // can be updated without a code deploy. If the fetch fails or nothing is // seeded yet, the row just doesn't render rather than showing stale // hardcoded fallback text that could drift from the real numbers. export async function TrustRow() { const items = await getTrustBadges(); if (items.length === 0) return null; return (
{/* Below lg (1024px): a CSS Grid with `grid-template-rows: subgrid` — not a fixed min-height guess — so every badge's "icon+title" box shares the SAME row track height (auto-sized to whichever badge's title actually needs 2 lines), and every description starts exactly at that row's bottom edge regardless of how many lines its own title happens to wrap to. Icon beside text (the lg: layout below) is what made a full row of 3 badges too wide below ~1024px in the first place (see git history: originally lg:-gated for exactly this, then briefly tried flex-wrap, which put an odd 3rd item alone on its own wrapped line and read as disorganized) — icon above text instead shrinks each badge down to just its text column's width, letting a real row of 3 fit without wrapping at all. Two structurally different layouts (icon-above-title here vs. icon-beside-a-title/description- stack at lg:) don't share one flexible markup shape cleanly, so this renders as two separate blocks (lg:hidden / hidden lg:flex) rather than fighting one shape across both breakpoints. */}
{items.map((item) => (

{item.title}

{item.description}

))}
{/* lg+: original icon-beside-text row with dividers, unchanged. */}
{items.map((item, i) => (
{i > 0 &&
}

{item.title}

{item.description}

))}
); }