refactor(home): unify section headings, differentiate capabilities and process

Reduce the "interchangeable cards" monotony flagged in Phase 0 and apply the
warm-premium type scale.

- SectionHeading: use the type scale (eyebrow via .eyebrow with brand tint,
  text-h2 title, body-lg description). Propagates to every home section.
- CapabilitiesSection: cleaner cards with a brand-tinted icon tile, type-scale
  title/body, soft elevation (drops the AppCard wrapper).
- ProcessSection: reworked into an editorial numbered timeline (large
  translucent brand numerals, top rule, no boxes) so it no longer looks
  identical to Capabilities.

Verified: eslint clean, no new type errors, tailwind generates the utilities.
This commit is contained in:
MohFarawati
2026-07-14 22:37:09 +02:00
parent dd72f013d4
commit 59094eba85
3 changed files with 29 additions and 42 deletions
+14 -22
View File
@@ -1,4 +1,3 @@
import { AppCard } from "@/components/ui/app-card";
import { SectionHeading } from "./section-heading";
import type { ProcessSectionCopy } from "./types";
@@ -8,35 +7,28 @@ type ProcessSectionProps = {
export function ProcessSection({ copy }: ProcessSectionProps) {
return (
<section className="space-y-8">
<section className="space-y-10">
<SectionHeading
eyebrow={copy.eyebrow}
title={copy.title}
description={copy.description}
/>
<div className="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4 xl:gap-6">
<ol className="grid grid-cols-1 gap-x-8 gap-y-10 sm:grid-cols-2 lg:grid-cols-4">
{copy.steps.map((step, index) => (
<AppCard
key={step.title}
layer="single"
interactive
className="group border-border/80 bg-surface-2 transition-all duration-300 hover:-translate-y-1 hover:border-border-strong hover:shadow-panel"
>
<div className="flex h-full flex-col gap-5 p-6">
<p className="text-sm font-semibold tracking-[0.18em] text-muted-foreground">
{String(index + 1).padStart(2, "0")}
</p>
<div className="space-y-3">
<h3 className="text-2xl font-semibold tracking-[-0.05em] text-foreground">
{step.title}
</h3>
<p className="text-sm leading-7 text-muted-foreground">{step.description}</p>
</div>
</div>
</AppCard>
<li key={step.title} className="border-t border-border pt-5">
<span className="block text-[2.75rem] font-semibold leading-none tracking-tight text-brand-primary/25">
{String(index + 1).padStart(2, "0")}
</span>
<h3 className="mt-5 text-title font-semibold text-foreground">
{step.title}
</h3>
<p className="mt-2 text-small leading-relaxed text-muted-foreground">
{step.description}
</p>
</li>
))}
</div>
</ol>
</section>
);
}