'use client'; import { motion } from 'framer-motion'; import { ScrollReveal, StaggerReveal } from '@/components/ui/scroll-reveal'; import { SectionLabel, EASE_OUT } from '@/components/ui/page-decoration'; import { CheckCircle2, ChevronDown } from 'lucide-react'; import { cn } from '@/lib/utils'; import { useState } from 'react'; export interface MethodologyLayer { title: string; description: string; items: string[]; } export interface MethodologyFrameworkProps { title: string; subtitle?: string; layers: MethodologyLayer[]; accentColor?: string; } export function MethodologyFramework({ title, subtitle, layers, accentColor = '#C41E3A', }: MethodologyFrameworkProps) { return (
Methodology

{title}

{subtitle && (

{subtitle}

)}
{layers.map((layer, index) => (
{String(index + 1).padStart(2, '0')}
{index < layers.length - 1 && (
)}

{layer.title}

{layer.description}

{layer.items.map((item, i) => (
{item}
))}
))}
); } export interface TechStackCategory { name: string; items: string[]; } export interface TechStackShowcaseProps { title: string; subtitle?: string; categories: TechStackCategory[]; } export function TechStackShowcase({ title, subtitle, categories }: TechStackShowcaseProps) { return (
Tech Stack

{title}

{subtitle && (

{subtitle}

)}
{categories.map((category, index) => (

{category.name}

{category.items.map((item, i) => ( {item} ))}
))}
); } export interface TimelineStep { phase: string; title: string; description: string; duration: string; deliverables: string[]; } export interface DeliveryTimelineProps { title: string; subtitle?: string; steps: TimelineStep[]; accentColor?: string; } export function DeliveryTimeline({ title, subtitle, steps, accentColor = '#C41E3A', }: DeliveryTimelineProps) { return (
Delivery Process

{title}

{subtitle && (

{subtitle}

)}
{steps.map((step, index) => (
{step.phase} {step.duration}

{step.title}

{step.description}

交付物
{step.deliverables.map((deliverable, i) => ( {deliverable} ))}
))}
); } export interface FAQItem { question: string; answer: string; } export interface FAQSectionProps { title: string; subtitle?: string; items: FAQItem[]; } export function FAQSection({ title, subtitle, items }: FAQSectionProps) { const [openIndex, setOpenIndex] = useState(0); return (
FAQ

{title}

{subtitle && (

{subtitle}

)}
{items.map((item, index) => (
{item.answer}
))}
); } export interface DataMetric { value: string; label: string; description?: string; trend?: string; trendUp?: boolean; } export interface DataProofSectionProps { title: string; subtitle?: string; metrics: DataMetric[]; } export function DataProofSection({ title, subtitle, metrics }: DataProofSectionProps) { return (
Proven Results

{title}

{subtitle && (

{subtitle}

)}
{metrics.map((metric, index) => (
{metric.value}
{metric.label}
{metric.description && (

{metric.description}

)} {metric.trend && (
{metric.trend}
)}
))}
); }