'use client'; import { ArrowUpRight, Database, Users, BarChart3, FileText, Truck, Building2 } from 'lucide-react'; import { InkCard } from '@/components/ui/ink-wash/InkCard'; import type { LucideIcon } from 'lucide-react'; interface ProductCardProps { title: string; description: string; href: string; index: number; status?: '研发中' | '内测中' | '已发布'; } const productIcons: LucideIcon[] = [Database, Users, FileText, BarChart3, Truck, Building2]; const PRODUCT_COLORS = [ { bg: 'rgba(var(--color-brand-rgb), 0.08)', text: 'var(--color-brand)', border: 'rgba(var(--color-brand-rgb), 0.12)' }, { bg: 'rgba(var(--color-accent-blue-rgb), 0.08)', text: 'var(--color-accent-blue)', border: 'rgba(var(--color-accent-blue-rgb), 0.12)' }, { bg: 'rgba(var(--color-accent-purple-rgb), 0.08)', text: 'var(--color-accent-purple)', border: 'rgba(var(--color-accent-purple-rgb), 0.12)' }, { bg: 'rgba(var(--color-accent-cyan-rgb), 0.08)', text: 'var(--color-accent-cyan)', border: 'rgba(var(--color-accent-cyan-rgb), 0.12)' }, { bg: 'rgba(var(--color-brand-rgb), 0.08)', text: 'var(--color-brand)', border: 'rgba(var(--color-brand-rgb), 0.12)' }, { bg: 'rgba(var(--color-accent-blue-rgb), 0.08)', text: 'var(--color-accent-blue)', border: 'rgba(var(--color-accent-blue-rgb), 0.12)' }, ] as const; const productConfig: { icon: LucideIcon; color: { bg: string; text: string; border: string } }[] = productIcons.map((icon, i) => ({ icon, color: PRODUCT_COLORS[i % PRODUCT_COLORS.length] ?? PRODUCT_COLORS[0], })); const defaultConfig = { icon: Database, color: PRODUCT_COLORS[0], }; const statusConfig = { '研发中': { bg: 'rgba(var(--color-brand-rgb), 0.06)', text: 'var(--color-brand)', border: 'rgba(var(--color-brand-rgb), 0.12)' }, '内测中': { bg: 'rgba(var(--color-warning-rgb), 0.06)', text: 'var(--color-warning)', border: 'rgba(var(--color-warning-rgb), 0.12)' }, '已发布': { bg: 'rgba(var(--color-success-rgb), 0.06)', text: 'var(--color-success)', border: 'rgba(var(--color-success-rgb), 0.12)' }, } as const; export function ProductCard({ title, description, href, index, status }: ProductCardProps) { const config = productConfig[index] ?? defaultConfig; const IconComponent = config.icon; const statusStyle = status ? statusConfig[status] : null; return ( {/* 产品图标 */}
{/* 状态标签 + 序号 */}
{status && statusStyle && ( {status} )} {String(index + 1).padStart(2, '0')}
{/* 标题 */}

{title}

{/* 描述 */}

{description}

{/* 研发中/内测中 提示 */} {(status === '研发中' || status === '内测中') && (
{status === '研发中' ? '正在积极开发中,欢迎提前交流需求' : '即将上线,欢迎预约内测体验'}
)} {/* CTA 链接 */}
{status === '研发中' ? '了解规划' : status === '内测中' ? '申请内测' : '了解更多'}
); }