feat(newsletter, checkout): add consent links, unify trust-note styling, optimize images
Every email-signup form (Home/newsletter Newsletter section, /newsletter hero, /challenge, the Newsletter overlay) now links "Datenschutzerklärung" to /datenschutz next to its consent checkbox, opened in a new tab so a partially filled form isn't lost. Checkout gets an equivalent AGB + Datenschutzerklärung note under the order button, and the Versand modal's Widerrufsbelehrung link also opens in a new tab. Unified the "Keine Werbung. Jederzeit abbestellbar." trust note (icon + #888 copy) across all newsletter forms, matching /challenge's existing style instead of each form having its own wording/color. Also converted the remaining raw <img> tags in these files to next/image per the no-img-element lint rule (bandwidth/LCP).
This commit is contained in:
@@ -293,7 +293,9 @@ export function CheckoutContent({
|
||||
<span className="flex-1 text-body-sm text-text-primary">{method.title}</span>
|
||||
<span className="flex items-center gap-2 shrink-0">
|
||||
{method.icons.map((icon, i) => (
|
||||
<img key={i} alt="" src={icon} className="h-5 w-auto" />
|
||||
<div key={i} className="relative h-5 w-8 shrink-0">
|
||||
<Image src={icon} alt="" fill sizes="32px" className="object-contain" />
|
||||
</div>
|
||||
))}
|
||||
</span>
|
||||
</label>
|
||||
@@ -307,8 +309,19 @@ export function CheckoutContent({
|
||||
Jetzt kaufen (zahlungspflichtig)
|
||||
</Link>
|
||||
|
||||
<p className="text-label text-text-muted text-center w-full">
|
||||
Mit dem Kauf akzeptierst du unsere{" "}
|
||||
<Link href="/agb" target="_blank" rel="noopener noreferrer" className="underline hover:text-brand">
|
||||
AGB
|
||||
</Link>{" "}
|
||||
und die{" "}
|
||||
<Link href="/datenschutz" target="_blank" rel="noopener noreferrer" className="underline hover:text-brand">
|
||||
Datenschutzerklärung
|
||||
</Link>.
|
||||
</p>
|
||||
|
||||
<div className="flex gap-2 items-center justify-center w-full">
|
||||
<img alt="" src="/icon-lock.svg" className="w-3.5 h-4" />
|
||||
<Image alt="" src="/icon-lock.svg" width={14} height={16} className="w-3.5 h-4" />
|
||||
<span className="text-body-sm text-text-muted">Sichere SSL-Verschlüsselung</span>
|
||||
</div>
|
||||
</Reveal>
|
||||
@@ -398,7 +411,7 @@ export function CheckoutContent({
|
||||
<div className="flex flex-col gap-4 items-start w-full">
|
||||
{trustBadges.map((b) => (
|
||||
<div key={b.id} className="flex gap-3 items-start w-full">
|
||||
<img alt="" src={b.icon} className="size-5 shrink-0 object-contain mt-0.5" />
|
||||
<Image alt="" src={b.icon} width={20} height={20} className="size-5 shrink-0 object-contain mt-0.5" />
|
||||
<div className="flex-1 flex flex-col gap-0.5">
|
||||
<p className="text-body-sm font-semibold text-text-primary">{b.title}</p>
|
||||
<p className="text-label text-text-muted">{b.description}</p>
|
||||
@@ -412,7 +425,7 @@ export function CheckoutContent({
|
||||
which puts the divider under the icon — the two aren't meant
|
||||
to be identical, see project notes on this pattern). */}
|
||||
<div className="bg-bg-muted flex gap-5 items-start p-6 rounded-md w-full">
|
||||
<img alt="" src="/icon-envelope-hint.png" className="h-8 w-10 shrink-0 object-contain" />
|
||||
<Image alt="" src="/icon-envelope-hint.png" width={40} height={32} className="h-8 w-10 shrink-0 object-contain" />
|
||||
<div className="flex flex-col gap-2 items-start flex-1 min-w-0 text-text-primary">
|
||||
{/* Conditional on the (unchecked-by-default) consent
|
||||
checkbox above, not stated as a given — a pre-ticked
|
||||
|
||||
Reference in New Issue
Block a user