refactor(animations): converge P2 stagger delays to ≤60ms target

Task #16 P2: converge 25 stagger/delay delays to ≤60ms target.

scope: 12 files, 25 staggerDelay/delayChildren props
before: 0.07/0.08/0.1/0.12s -> after: 0.05s (50ms, aligns ScrollReveal default)

verified:
- tsc --noEmit: clean (TSC_EXIT=0)
- eslint (12 files): 0 errors, 22 pre-existing warnings only
- jest: 130/130 suites, 1573 passed, 2 skipped, 0 failed (JEST_EXIT=0)
- motion audit: P0=0, P1=5 preserved, P2=0, OK=425

note: P1 residual 5 preserved (flip-clock 2 + page-transition 2 by
semantics; design-system.ts 1 dead-code deferred). visual regression
waived: stagger is entrance delay, reducedMotion yields same pixels.

Co-Authored-By: 阿睿 <workbuddy@local>
This commit is contained in:
2026-09-03 22:41:10 +08:00
co-authored by 阿睿
parent 495f6d4eca
commit 04e91e3dbf
12 changed files with 25 additions and 25 deletions
@@ -118,7 +118,7 @@ function ChallengesSection({ challenges }: ChallengesSectionProps) {
</ScrollReveal>
<div className="space-y-px bg-border-primary">
<StaggerReveal staggerDelay={0.1} delayChildren={0.05}>
<StaggerReveal staggerDelay={0.05} delayChildren={0.05}>
{challenges.map((challenge, idx) => (
<div
key={idx}
@@ -165,7 +165,7 @@ function SolutionsSection({ solutions }: SolutionsSectionProps) {
</ScrollReveal>
<div className="grid md:grid-cols-2 gap-px bg-border-primary">
<StaggerReveal staggerDelay={0.1} delayChildren={0.05}>
<StaggerReveal staggerDelay={0.05} delayChildren={0.05}>
{solutions.map((solution, idx) => (
<div
key={idx}
@@ -220,7 +220,7 @@ function ValuePropositionSection({ valueProposition }: ValuePropositionProps) {
</ScrollReveal>
<div className="grid md:grid-cols-3 gap-px bg-border-primary">
<StaggerReveal staggerDelay={0.12} delayChildren={0.05}>
<StaggerReveal staggerDelay={0.05} delayChildren={0.05}>
{valueProposition.points.map((point, idx) => {
const icon = VALUE_ICONS[point.icon] || <Settings className="w-6 h-6" />;
return (
@@ -275,7 +275,7 @@ function SuiteCombinationSection({ suiteCombination, products }: SuiteCombinatio
</ScrollReveal>
<div className="grid lg:grid-cols-5 gap-px bg-border-primary mb-px">
<StaggerReveal staggerDelay={0.1} delayChildren={0.05}>
<StaggerReveal staggerDelay={0.05} delayChildren={0.05}>
{primaryProducts.map((product) => product && (
<div
key={product.id}