'use client'; import { useCallback, useRef, useState } from 'react'; import { motion } from 'framer-motion'; import { StaticLink } from '@/components/ui/static-link'; import { Button } from '@/components/ui/button'; import { HeroInkBackground } from '@/components/ui/hero-ink-background'; import { COMPANY_INFO } from '@/lib/constants'; import { ArrowRight, MessageSquare, Search, Rocket, Handshake } from 'lucide-react'; import { useReducedMotion } from '@/hooks/use-reduced-motion'; const EASE = [0.16, 1, 0.3, 1] as const; const CAPABILITIES = [ { icon: MessageSquare, label: '需求沟通' }, { icon: Search, label: '方案诊断' }, { icon: Rocket, label: '敏捷交付' }, { icon: Handshake, label: '长期陪跑' }, ]; const JOURNEY_STEPS = [ { icon: MessageSquare, label: '需求沟通', desc: '深入理解您的业务痛点' }, { icon: Search, label: '方案诊断', desc: '量身定制技术路径' }, { icon: Rocket, label: '敏捷交付', desc: '快速迭代持续验证' }, { icon: Handshake, label: '长期陪跑', desc: '持续优化保障落地' }, ]; export function HeroSectionV2() { const [mousePos, setMousePos] = useState({ x: 0, y: 0 }); const [isCardHovered, setIsCardHovered] = useState(false); const cardRef = useRef(null); const shouldReduceMotion = useReducedMotion(); const handleCardMouseMove = useCallback((e: React.MouseEvent) => { if (!cardRef.current) { return; } const rect = cardRef.current.getBoundingClientRect(); setMousePos({ x: e.clientX - rect.left, y: e.clientY - rect.top, }); }, []); const fadeUp = (delay: number) => ({ initial: shouldReduceMotion ? {} : { opacity: 0, y: 24 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay, ease: EASE }, }); return (
{COMPANY_INFO.slogan} 企业数字化转型服务商 {COMPANY_INFO.shortName} {COMPANY_INFO.description}
setIsCardHovered(true)} onMouseLeave={() => setIsCardHovered(false)} >

从沟通到落地,全程陪伴

四步合作流程,确保每个项目科学推进、高效交付

{JOURNEY_STEPS.map((step, idx) => { const Icon = step.icon; return (
0{idx + 1} {step.label}

{step.desc}

); })}
{/* Integrated capabilities */}
{CAPABILITIES.map((cap, idx) => { const Icon = cap.icon; return (
{cap.label}
); })}
); }