'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import { Locale } from '../lib/i18n'; import { getTranslations } from '../lib/translations'; interface BlogShowcaseProps { locale: Locale; } export default function BlogShowcase({ locale }: BlogShowcaseProps) { const t = getTranslations(locale); const [hoveredPost, setHoveredPost] = useState(null); // 获取博客文章数据 const blogPosts = [ { id: 'featured', ...t.blog.posts.featured, image: 'featured', }, { id: 'post1', ...t.blog.posts.post1, image: 'post1', }, { id: 'post2', ...t.blog.posts.post2, image: 'post2', }, { id: 'post3', ...t.blog.posts.post3, image: 'post3', }, ]; const getCategoryColor = (category: string) => { switch (category) { case 'playerStories': return 'bg-amber-500'; case 'development': return 'bg-green-500'; case 'ecoFacts': return 'bg-emerald-500'; default: return 'bg-blue-500'; } }; const getCategoryName = (category: string) => { switch (category) { case 'playerStories': return t.blog.categories.playerStories; case 'development': return t.blog.categories.development; case 'ecoFacts': return t.blog.categories.ecoFacts; default: return category; } }; const getImageGradient = (imageId: string) => { const gradients = { featured: 'from-purple-500 via-blue-500 to-indigo-600', post1: 'from-amber-500 via-orange-500 to-red-500', post2: 'from-cyan-500 via-blue-500 to-indigo-500', post3: 'from-green-500 via-emerald-500 to-teal-500', }; return gradients[imageId as keyof typeof gradients] || 'from-gray-500 to-gray-600'; }; return (
{/* Section Header */}

{t.blog.title}

{t.blog.subtitle}

{t.blog.categories.all}
{/* Blog Posts Grid */}
{/* Featured Post */}
setHoveredPost(blogPosts[0].id)} onMouseLeave={() => setHoveredPost(null)} >
{/* Featured Post Image */}
{/* Animated particles for featured post */}
{[...Array(6)].map((_, i) => (
))}
{getCategoryName(blogPosts[0].category)}
{t.blog.featured}
{blogPosts[0].author} {blogPosts[0].date} {blogPosts[0].readTime}
{/* Featured Post Content */}

{blogPosts[0].title}

{blogPosts[0].excerpt}

{t.blog.readMore} →
{/* Other Posts */}
{blogPosts.slice(1).map((post, index) => (
setHoveredPost(post.id)} onMouseLeave={() => setHoveredPost(null)} >
{/* Post Image */}
{/* Mini particles */}
{[...Array(3)].map((_, i) => (
))}
{getCategoryName(post.category)}
{/* Post Content */}

{post.title}

{post.excerpt}

{post.author} {post.readTime}
))}
{/* Bottom CTA */}

{t.blog.stayUpdated}

{t.blog.stayUpdatedDesc}

{t.blog.exploreAll}
); }