diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx
index 8e2a2ae..130ec88 100644
--- a/src/components/Nav.tsx
+++ b/src/components/Nav.tsx
@@ -19,7 +19,7 @@ function Nav({ currentPage }: NavProps) {
{t('nav.home')}
{t('nav.servers')}
-
{t('nav.blog')}
+
{t('nav.blog')}
{t('nav.git')}
{t('nav.forum')}
{t('nav.friends')}
diff --git a/src/locales/en.json b/src/locales/en.json
index 2a16eac..eea5b2b 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -73,6 +73,20 @@
"english": "English",
"chinese": "中文"
},
+ "blog": {
+ "title": "Community Blog",
+ "subtitle": "Stay updated with the latest news, tutorials, and insights from the Counter-Strike community",
+ "featuredPost": "Featured Article",
+ "recentPosts": "Recent Posts",
+ "readMore": "Read More",
+ "by": "by",
+ "categories": "Categories",
+ "loadMore": "Load More Articles",
+ "subscribe": "Subscribe to Newsletter",
+ "subscribeDesc": "Get the latest articles and updates delivered to your inbox",
+ "emailPlaceholder": "Enter your email address",
+ "subscribeBtn": "Subscribe"
+ },
"friends": {
"title": "Friend Links",
"subtitle": "Discover amazing communities and resources from our partner websites",
diff --git a/src/locales/zh.json b/src/locales/zh.json
index 332ef91..24e7894 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -73,6 +73,20 @@
"english": "English",
"chinese": "中文"
},
+ "blog": {
+ "title": "社区博客",
+ "subtitle": "及时了解反恐精英社区的最新新闻、教程和见解",
+ "featuredPost": "精选文章",
+ "recentPosts": "最新文章",
+ "readMore": "阅读更多",
+ "by": "作者",
+ "categories": "分类",
+ "loadMore": "加载更多文章",
+ "subscribe": "订阅新闻通讯",
+ "subscribeDesc": "将最新文章和更新发送到您的收件箱",
+ "emailPlaceholder": "输入您的电子邮件地址",
+ "subscribeBtn": "订阅"
+ },
"friends": {
"title": "友情链接",
"subtitle": "发现来自我们合作伙伴网站的精彩社区和资源",
diff --git a/src/main.tsx b/src/main.tsx
index f62c9dc..d263d06 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -6,6 +6,7 @@ import './i18n'
import { ThemeProvider } from './contexts/ThemeContext'
import App from './App.tsx'
import Friends from './pages/Friends.tsx'
+import Blog from './pages/Blog.tsx'
createRoot(document.getElementById('root')!).render(
@@ -14,6 +15,7 @@ createRoot(document.getElementById('root')!).render(
} />
} />
+ } />
diff --git a/src/pages/Blog.tsx b/src/pages/Blog.tsx
new file mode 100644
index 0000000..3d1a39e
--- /dev/null
+++ b/src/pages/Blog.tsx
@@ -0,0 +1,474 @@
+import { useTranslation } from 'react-i18next'
+import { Link } from 'react-router-dom'
+import Layout from '../components/Layout'
+import '../App.css'
+
+interface BlogPost {
+ id: number
+ title: string
+ excerpt: string
+ content: string
+ author: string
+ date: string
+ readTime: string
+ category: string
+ tags: string[]
+ image?: string
+}
+
+function Blog() {
+ const { t } = useTranslation()
+
+ // Mock blog posts data
+ const blogPosts: BlogPost[] = [
+ {
+ id: 1,
+ title: "Mastering Counter-Strike: Advanced Tactics and Strategies",
+ excerpt: "Learn the advanced tactics that separate professional players from casual gamers. From positioning to communication, discover the secrets of competitive CS.",
+ content: "Full article content here...",
+ author: "ProGamer99",
+ date: "2025-10-01",
+ readTime: "8 min read",
+ category: "Strategy",
+ tags: ["Counter-Strike", "Tactics", "Professional"],
+ image: "🎯"
+ },
+ {
+ id: 2,
+ title: "The Evolution of Esports: From LAN Parties to Global Tournaments",
+ excerpt: "Explore how esports has grown from small local tournaments to billion-dollar industry with global audiences and professional athletes.",
+ content: "Full article content here...",
+ author: "EsportsAnalyst",
+ date: "2025-09-28",
+ readTime: "6 min read",
+ category: "Esports",
+ tags: ["Esports", "History", "Tournaments"],
+ image: "🏆"
+ },
+ {
+ id: 3,
+ title: "Building the Perfect Gaming Setup: Hardware Guide 2025",
+ excerpt: "A comprehensive guide to building the ultimate gaming setup for Counter-Strike and other competitive games. From monitors to peripherals.",
+ content: "Full article content here...",
+ author: "TechReviewer",
+ date: "2025-09-25",
+ readTime: "12 min read",
+ category: "Hardware",
+ tags: ["Gaming Setup", "Hardware", "PC Building"],
+ image: "🖥️"
+ },
+ {
+ id: 4,
+ title: "Community Spotlight: Rising Stars in CS Competitive Scene",
+ excerpt: "Meet the up-and-coming players who are making waves in the Counter-Strike competitive scene. Their stories, strategies, and paths to success.",
+ content: "Full article content here...",
+ author: "CommunityManager",
+ date: "2025-09-22",
+ readTime: "10 min read",
+ category: "Community",
+ tags: ["Players", "Community", "Rising Stars"],
+ image: "⭐"
+ },
+ {
+ id: 5,
+ title: "Mental Health in Competitive Gaming: Staying Sharp",
+ excerpt: "The importance of mental health in competitive gaming. Tips and strategies for maintaining focus, managing stress, and performing at your best.",
+ content: "Full article content here...",
+ author: "SportsPsychologist",
+ date: "2025-09-20",
+ readTime: "7 min read",
+ category: "Wellness",
+ tags: ["Mental Health", "Gaming", "Performance"],
+ image: "🧠"
+ },
+ {
+ id: 6,
+ title: "Server Administration: Running Your Own CS Game Server",
+ excerpt: "A complete guide to setting up and managing your own Counter-Strike game server. From basic setup to advanced configuration and maintenance.",
+ content: "Full article content here...",
+ author: "ServerAdmin",
+ date: "2025-09-18",
+ readTime: "15 min read",
+ category: "Technical",
+ tags: ["Server", "Administration", "Technical"],
+ image: "🖧"
+ }
+ ]
+
+ const categories = [...new Set(blogPosts.map(post => post.category))]
+ const featuredPost = blogPosts[0]
+ const recentPosts = blogPosts.slice(1, 4)
+
+ return (
+
+ {/* Blog Page Header */}
+
+
+
+ {t('blog.title')}
+
+
+ {t('blog.subtitle')}
+
+
+
+
+ {/* Featured Post */}
+
+
+
+ {t('blog.featuredPost')}
+
+
+
+
+ {featuredPost.category}
+
+
+ {featuredPost.title}
+
+
+ {featuredPost.excerpt}
+
+
+
+ {t('blog.by')} {featuredPost.author}
+
+
+ {featuredPost.date}
+
+
+ {featuredPost.readTime}
+
+
+
{
+ e.currentTarget.style.transform = 'translateY(-2px)'
+ }}
+ onMouseLeave={(e) => {
+ e.currentTarget.style.transform = 'translateY(0)'
+ }}
+ >
+ {t('blog.readMore')}
+
+
+
+ {featuredPost.image}
+
+
+
+
+
+ {/* Blog Content */}
+
+
+
+ {/* Main Content */}
+
+
+ {t('blog.recentPosts')}
+
+
+
+ {recentPosts.map(post => (
+
{
+ e.currentTarget.style.transform = 'translateY(-5px)'
+ e.currentTarget.style.boxShadow = '0 10px 30px var(--accent-shadow)'
+ }}
+ onMouseLeave={(e) => {
+ e.currentTarget.style.transform = 'translateY(0)'
+ e.currentTarget.style.boxShadow = 'none'
+ }}
+ >
+
+
+ {post.image}
+
+
+
+ {post.category}
+
+
+ {post.title}
+
+
+ {post.excerpt}
+
+
+
+ {t('blog.by')} {post.author}
+
+
+ {post.date}
+
+
+ {post.readTime}
+
+
+
+ {post.tags.map(tag => (
+
+ #{tag}
+
+ ))}
+
+
+
+
+ ))}
+
+
+ {/* Load More Button */}
+
+
+
+
+
+ {/* Sidebar */}
+
+
+
+
+ )
+}
+
+export default Blog
\ No newline at end of file