110 lines
5.6 KiB
TypeScript
Raw Permalink Normal View History

2025-09-16 15:35:44 +08:00
'use client';
import { useParams, useRouter } from 'next/navigation';
import { useState, useEffect } from 'react';
import PageLayout from '../../../components/PageLayout';
import Icon from '../../../components/Icon';
import { content } from '../../../data/content';
import { productsContent } from '../../../data/pageContent';
export default function ProductsPage() {
const router = useRouter();
const params = useParams();
const currentLang = typeof params.lang === 'string' ? params.lang : 'en';
// Validate language and redirect if invalid
useEffect(() => {
const supportedLangs = ['zh-CN', 'zh-TW', 'en', 'ko', 'ja'];
if (!supportedLangs.includes(currentLang)) {
router.push('/en/products');
}
}, [currentLang, router]);
const currentContent = content[currentLang as keyof typeof content] || content.en;
const pageContent =
productsContent[currentLang as keyof typeof productsContent] || productsContent.en;
const handleLanguageChange = (lang: string) => {
router.push(`/${lang}/products`);
};
return (
<PageLayout
title={pageContent.title}
description={pageContent.description}
keywords={pageContent.keywords}
currentLang={currentLang}
currentContent={currentContent}
handleLanguageChange={handleLanguageChange}
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
{/* Page Header */}
<div className="text-center mb-16">
<h1 className="text-4xl font-bold text-gray-900 mb-4">{pageContent.heading}</h1>
<p className="text-xl text-gray-600 max-w-3xl mx-auto">
{pageContent.subheading}
</p>
</div>
{/* Product Categories */}
<div className="space-y-16">
{pageContent.categories.map((category, index) => (
<div key={index} className="bg-white rounded-lg shadow-lg overflow-hidden">
<div className="bg-blue-600 text-white px-6 py-4">
<h2 className="text-2xl font-bold">{category.title}</h2>
<p className="mt-1">{category.description}</p>
</div>
<div className="grid md:grid-cols-3 gap-6 p-6">
{category.products.map((product, productIndex) => (
<div
key={productIndex}
className="border border-gray-200 rounded-lg p-6 hover:shadow-md transition-shadow"
>
<div className="w-12 h-12 bg-blue-100 text-blue-600 rounded-lg flex items-center justify-center mb-4">
<Icon name={product.icon} />
</div>
<h3 className="text-xl font-semibold mb-2">
{product.name}
</h3>
<p className="text-gray-600">{product.description}</p>
</div>
))}
</div>
</div>
))}
</div>
{/* CTA Section */}
<div className="mt-16 bg-gradient-to-r from-blue-600 to-indigo-700 rounded-lg shadow-xl text-white p-8 text-center">
<h2 className="text-3xl font-bold mb-4">{currentContent.hero.cta}</h2>
<p className="text-lg mb-6 max-w-2xl mx-auto">
{currentLang === 'en'
? 'Contact our AWS experts to discuss your specific cloud computing needs and requirements.'
: currentLang === 'zh-CN'
? '联系我们的AWS专家讨论您的特定云计算需求和要求。'
: currentLang === 'zh-TW'
? '聯繫我們的AWS專家討論您的特定雲計算需求和要求。'
: currentLang === 'ko'
? 'AWS 전문가에게 문의하여 특정 클라우드 컴퓨팅 요구 사항에 대해 논의하세요.'
: '特定のクラウドコンピューティングのニーズと要件について、AWS専門家にお問い合わせください。'}
</p>
<button
onClick={() => router.push(`/${currentLang}/contact`)}
className="bg-white text-blue-600 px-8 py-3 rounded-lg font-medium hover:bg-blue-50 transition-colors"
>
{currentLang === 'en'
? 'Contact Us'
: currentLang === 'zh-CN'
? '联系我们'
: currentLang === 'zh-TW'
? '聯繫我們'
: currentLang === 'ko'
? '문의하기'
: 'お問い合わせ'}
</button>
</div>
</div>
</PageLayout>
);
}