'use client'; import { useState } from 'react'; import Link from 'next/link'; import ProductModal from './ProductModal'; interface Product { name: string; desc: string; price: string; features: string[]; badge?: string; popular?: boolean; } interface Category { title: string; products: Product[]; } interface ProductsClientComponentProps { categories: Category[]; contactText: string; locale: string; } export default function ProductsClientComponent({ categories, contactText, locale }: ProductsClientComponentProps) { const [selectedProduct, setSelectedProduct] = useState(null); const [isModalOpen, setIsModalOpen] = useState(false); const [clickedProduct, setClickedProduct] = useState(null); // 类别标题到锚点ID的映射 const getCategoryId = (title: string) => { const mapping: { [key: string]: string } = { '云服务器': 'cloud-server', '雲服務器': 'cloud-server', 'Cloud Server': 'cloud-server', '安全防护': 'security', '安全防護': 'security', 'Security': 'security', '存储服务': 'storage', '存儲服務': 'storage', 'Storage': 'storage', '数据库服务': 'database', '數據庫服務': 'database', 'Database': 'database', '网络服务': 'network', '網絡服務': 'network', 'Network': 'network', '人工智能': 'ai', '人工智慧': 'ai', 'AI': 'ai' }; return mapping[title] || title.toLowerCase().replace(/\s+/g, '-'); }; const handleProductClick = (product: Product) => { setSelectedProduct(product); setIsModalOpen(true); }; const handleCardClick = (productName: string) => { setClickedProduct(clickedProduct === productName ? null : productName); }; const handleCloseModal = () => { setIsModalOpen(false); setSelectedProduct(null); }; return ( <> {/* Products Section */}
{categories.map((category, categoryIndex) => (

{category.title}

{category.products.map((product, productIndex) => (
handleCardClick(product.name)} className={`bg-white rounded-xl shadow-sm hover:shadow-xl transition-all duration-300 overflow-hidden hover:-translate-y-2 relative group cursor-pointer ${ clickedProduct === product.name ? 'ring-2 ring-blue-500 ring-opacity-50' : '' }`} > {/* 产品标签 */} {(product as any).badge && (
{(product as any).badge}
)} {/* 热门标签 */} {(product as any).popular && (
🔥 热门
)}

{product.name}

{product.desc}

{product.price} {product.price.includes('/月') && ( 按月计费 )}
{product.features.slice(0, 4).map((feature, featureIndex) => (
{feature}
))} {product.features.length > 4 && (
+{product.features.length - 4} 更多功能
)}
e.stopPropagation()} className={`w-full py-3 px-4 rounded-lg font-semibold transition-all duration-300 text-center block text-sm ${ clickedProduct === product.name ? 'bg-gradient-to-r from-blue-600 to-purple-600 text-white hover:from-blue-700 hover:to-purple-700 shadow-lg' : 'bg-blue-600 text-white hover:bg-blue-700' }`} > {contactText}
))}
))}
{/* 产品详情模态框 */} ); }