Deactivated product shows as sold out, StepArrow to black, newsletter checkmarks fixed

- /todo-cards's detail page (the only page resolving a product regardless
  of active status) now renders both CTAs as "Ausverkauft" and disabled
  when the product is deactivated, instead of fully buyable — variants are
  dropped too, since AddToCartButton's outOfStock prop is otherwise ignored
  whenever variants is non-empty.
- StepArrow: brand orange didn't fit here after all, switched to
  near-black (#222221) per feedback.
- Newsletter/"Impulse & Tipps" checklist checkmarks (WeeklyImpulsesHero.tsx,
  WeeklyBenefits.tsx) were still the old un-recolorable icon-check.svg —
  same inline-SVG orange-checkmark fix as todo-cards/Challenge, plus
  items-start instead of items-center on WeeklyImpulsesHero's list for
  top-alignment consistency.
This commit is contained in:
Marco
2026-07-24 19:58:24 +00:00
parent 6a6d50abdb
commit 8d4f167374
5 changed files with 60 additions and 12 deletions
+12 -1
View File
@@ -8,6 +8,17 @@ const benefits = [
{ title: "Motivation & Erinnerung", desc: "Ein freundlicher Schub in die richtige Richtung." },
];
// Inline, brand-orange stroke — same fix/reasoning as
// WeeklyImpulsesHero.tsx's own IconCheck (icon-check.svg's fill can't be
// recolored from outside the SVG when loaded via <img src>/next/image).
function IconCheck() {
return (
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" className="size-5 shrink-0 mt-0.5">
<path d="M4 10.5l4.5 4.5L16 5.5" stroke="#f6a701" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" />
</svg>
);
}
export function WeeklyBenefits() {
return (
<section className="w-full bg-bg-base flex flex-col lg:flex-row gap-10 lg:gap-16 items-center py-12 md:py-16 px-[var(--layout-padding-x)]">
@@ -31,7 +42,7 @@ export function WeeklyBenefits() {
<ul className="flex flex-col gap-4 items-start w-full">
{benefits.map((b) => (
<li key={b.title} className="flex gap-[0.625rem] items-start w-full">
<Image alt="" src="/icon-check.svg" width={20} height={20} className="size-5 shrink-0 mt-0.5" />
<IconCheck />
<div className="flex flex-col gap-0.5 items-start flex-1 min-w-0">
<p className="font-semibold text-body text-text-primary">{b.title}</p>
<p className="text-body-sm text-text-muted">{b.desc}</p>
@@ -16,6 +16,17 @@ function LockIcon() {
);
}
// Inline, brand-orange stroke — icon-check.svg's fill lives in an internal
// CSS var that can't be recolored from outside the SVG when loaded via
// <img src>/next/image, same fix/reasoning as todo-cards's own IconCheck.
function IconCheck() {
return (
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" className="size-5 shrink-0 mt-0.5">
<path d="M4 10.5l4.5 4.5L16 5.5" stroke="#f6a701" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" />
</svg>
);
}
const checklist = [
"Jeden Mittwoch neue Impulse & Tipps",
"Kurz & knackig in 5 Minuten gelesen",
@@ -89,8 +100,8 @@ export function WeeklyImpulsesHero() {
<ul className="flex flex-col gap-3 items-start w-full">
{checklist.map((item) => (
<li key={item} className="flex gap-[0.625rem] items-center w-full">
<Image alt="" src="/icon-check.svg" width={20} height={20} className="size-5 shrink-0" />
<li key={item} className="flex gap-[0.625rem] items-start w-full">
<IconCheck />
<span className="flex-1 text-body text-text-primary">{item}</span>
</li>
))}