'use client'; import { motion } from 'framer-motion'; import { CTAButton } from '@/components/ui/cta-button'; import { CTA_LABELS } from '@/lib/constants/cta-labels'; import { CheckCircle2, Zap, Clock, Users, Award, TrendingUp, Shield } from 'lucide-react'; import type { LucideIcon } from 'lucide-react'; import type { Service } from '@/lib/constants/services'; import { L3EmptyFallback, CaseStudiesSection } from '@/components/detail'; const EASE_OUT = [0.22, 1, 0.36, 1] as const; const FEATURE_ICONS: LucideIcon[] = [Zap, Clock, Users, Award, TrendingUp, Shield]; function DetailHero({ service }: { service: Service }) { const firstBenefit = service.benefits?.[0] || '效率提升 40%'; return (
{service.title}
{firstBenefit}
{service.description} {CTA_LABELS.consult} 查看案例
); } function OverviewSection({ service }: { service: Service }) { return (

解决什么问题

{service.overview}

{service.benefits?.slice(0, 4).map((benefit, i) => (
{benefit}
))}
); } function FeaturesSection({ service }: { service: Service }) { return (

核心能力

每一项能力都来自核心团队的项目实践与持续打磨

{service.features.map((feature, index) => { const [title, desc] = feature.split(':'); const Icon = FEATURE_ICONS[index % FEATURE_ICONS.length]!; return (

{desc ? title : feature.slice(0, 10)}

{desc || feature}

); })}
); } function ProcessSection({ service }: { service: Service }) { if (!service.process || service.process.length === 0) return null; return (

服务流程

标准化流程,确保每个项目可控、可预期

{service.process.slice(0, 5).map((step, index) => { const [title, desc] = step.split(':'); return (

{desc ? title : step.slice(0, 6)}

{desc || step}

); })}
); } // L3 信任层「客户案例」已合并至共享组件(@/components/detail)。 // 原本地实现为异类:卡片 motion.a 链接 /cases/(依赖尚不存在的案例数据,链向 404 // 违反零编造)+ 动效 0.8s 违规。统一后卡片不带链接,id="cases" 保留供 hero CTA 锚点。 function CTASection() { return (

准备好开始了吗?

无论是一个明确的项目,还是一个模糊的想法,我们都愿意坐下来和您一起理清楚。
首次咨询免费,没有任何销售压力。

{CTA_LABELS.consult} 返回服务列表
); } export default function ServiceDetailContentV4({ service }: { service: Service }) { return (
); }