'use client'; import { useState, useMemo, ChangeEvent } from 'react'; import { motion } from 'framer-motion'; import { ScrollReveal, StaggerReveal } from '@/components/ui/scroll-reveal'; import { Button } from '@/components/ui/button'; import { StaticLink } from '@/components/ui/static-link'; import { Badge } from '@/components/ui/badge'; import { Input } from '@/components/ui/input'; import { Search, Calendar, ArrowRight, Newspaper, ChevronLeft, ChevronRight } from 'lucide-react'; import { COMPANY_INFO } from '@/lib/constants'; import { type NewsItem } from '@/lib/constants/news'; import { SectionLabel, EASE_OUT } from '@/components/ui/page-decoration'; const categories = ['全部', '公司新闻', '研发动态']; const ITEMS_PER_PAGE = 9; function NewsCard({ newsItem, index }: { newsItem: NewsItem; index: number }) { const [imageError, setImageError] = useState(false); return ( {newsItem.image && !imageError ? ( setImageError(true)} className="w-full h-full object-cover group-hover:scale-105 transition-transform duration-700" /> ) : ( )} {newsItem.category} {newsItem.date} {newsItem.title} {newsItem.excerpt} 阅读全文 ); } export default function NewsContentV3({ news }: { news?: NewsItem[] }) { const NEWS = news ?? []; const [selectedCategory, setSelectedCategory] = useState('全部'); const [searchQuery, setSearchQuery] = useState(''); const [currentPage, setCurrentPage] = useState(1); const filteredNews = useMemo(() => { return NEWS.filter((newsItem) => { const matchesCategory = selectedCategory === '全部' || newsItem.category === selectedCategory; const matchesSearch = newsItem.title.toLowerCase().includes(searchQuery.toLowerCase()) || newsItem.excerpt.toLowerCase().includes(searchQuery.toLowerCase()); return matchesCategory && matchesSearch; }); }, [selectedCategory, searchQuery]); const totalPages = Math.ceil(filteredNews.length / ITEMS_PER_PAGE); const paginatedNews = useMemo(() => { const startIndex = (currentPage - 1) * ITEMS_PER_PAGE; return filteredNews.slice(startIndex, startIndex + ITEMS_PER_PAGE); }, [filteredNews, currentPage]); const handlePageChange = (page: number) => { setCurrentPage(page); window.scrollTo({ top: 0, behavior: 'smooth' }); }; const handleCategoryChange = (category: string) => { setSelectedCategory(category); setCurrentPage(1); }; const handleSearchChange = (e: ChangeEvent) => { setSearchQuery(e.target.value); setCurrentPage(1); }; return ( {/* Hero Section */} News & Insights 新闻与 洞察 {COMPANY_INFO.displayName}最新动态、产品更新与行业洞察。了解数字化趋势,把握技术脉搏。 {/* Filter + News List Section */} {/* Filters */} {categories.map((category) => ( handleCategoryChange(category)} > {category} ))} {/* News Grid */} {paginatedNews.length === 0 ? ( 没有找到相关新闻 试试其他关键词或分类 ) : ( <> {paginatedNews.map((newsItem, index) => ( ))} {/* Pagination */} {totalPages > 1 && ( handlePageChange(currentPage - 1)} disabled={currentPage === 1} > {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => ( handlePageChange(page)} > {page} ))} handlePageChange(currentPage + 1)} disabled={currentPage === totalPages} > )} > )} {/* CTA Section */} Get in Touch 想了解更多? 无论您有合作意向还是想探讨技术趋势,我们都欢迎与您交流。 联系我们 了解公司 ); }
{newsItem.excerpt}
{COMPANY_INFO.displayName}最新动态、产品更新与行业洞察。了解数字化趋势,把握技术脉搏。
没有找到相关新闻
试试其他关键词或分类
无论您有合作意向还是想探讨技术趋势,我们都欢迎与您交流。