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-20 11:50:58 +08:00
co-authored by 阿睿
parent 2aa0e21319
commit e5a2efdaa2
12 changed files with 25 additions and 25 deletions
+3 -3
View File
@@ -358,7 +358,7 @@ function TrustSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) {
</div>
{/* 首批客户共创计划:如实呈现共创/内测/授权公开状态,不虚构客户 */}
<StaggerReveal staggerDelay={0.08}>
<StaggerReveal staggerDelay={0.05}>
<div className="p-6 sm:p-8 bg-brand-bg border border-[rgba(196,30,58,0.15)]" data-testid="early-access-banner">
<div className="flex items-center gap-3 mb-4">
<span className="text-[13px] tracking-[0.12em] font-semibold text-brand">
@@ -439,7 +439,7 @@ function NarrativeSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) {
<div className="grid md:grid-cols-3 gap-px bg-border-primary">
{NARRATIVE_ACTS_CMS.map((act) => (
<StaggerReveal key={act.number} staggerDelay={0.08}>
<StaggerReveal key={act.number} staggerDelay={0.05}>
<div className="group relative h-full bg-bg-primary p-8 sm:p-10 md:p-12 transition-colors duration-300 hover:bg-bg-secondary">
<div className="flex items-start justify-between mb-8">
<span
@@ -517,7 +517,7 @@ function InsightsSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) {
<div className="grid grid-cols-1 md:grid-cols-2 gap-px bg-border-primary border border-border-primary">
{items.slice(0, 4).map((insight, i) => (
<StaggerReveal key={i} staggerDelay={0.07}>
<StaggerReveal key={i} staggerDelay={0.05}>
<a
href={insight.href}
className="group flex flex-col h-full bg-bg-primary p-8 sm:p-10 md:p-12 transition-colors duration-300 hover:bg-bg-secondary"