'use client'; import { useEffect, useRef, useState } from 'react'; import { motion } from 'framer-motion'; import dynamic from 'next/dynamic'; import { ChevronDown } from 'lucide-react'; import { InkReveal, SealStamp, FloatingElement } from '@/lib/animations'; import type { Product } from '@/lib/constants/products'; const InkBackground = dynamic( () => import('@/components/ui/ink-decoration').then(mod => ({ default: mod.InkBackground })), { ssr: false } ); const DataParticleFlow = dynamic( () => import('@/components/effects/data-particle-flow').then(mod => ({ default: mod.DataParticleFlow })), { ssr: false } ); interface ProductHeroSectionProps { product: Product; } export function ProductHeroSection({ product }: ProductHeroSectionProps) { const [isVisible, setIsVisible] = useState(false); const sectionRef = useRef(null); useEffect(() => { const observer = new IntersectionObserver( ([entry]) => { if (entry?.isIntersecting) { setIsVisible(true); } }, { threshold: 0.1 } ); if (sectionRef.current) { observer.observe(sectionRef.current); } return () => observer.disconnect(); }, []); return (
{/* 背景特效 */} {/* 内容 */}
{/* 分类标签 - 印章按压效果 */} 即将上市 {/* 产品名称 - 模糊揭示入场 */}

{product.title}

{/* 价值主张 - 模糊揭示入场 */}

{product.description}

{/* CTA 按钮 */}
敬请期待
{/* 滚动指示器 - 浮动元素包裹 */}
); }