'use client' /** * 最近项目布局组件集 * 5 种不同的排版方式,使用系统实际的卡片设计风格 */ import { AppIcon, IconGradientDefs } from '@/components/ui/icons' import type { MockProject } from './shared' import { formatTimeAgo } from './shared' /** 通用的项目统计行 — 模仿系统真实卡片中的渐变统计 */ function ProjectStats({ project, t }: { project: MockProject; t: (key: string) => string }) { return (
) } /** * 排版1: 网格卡片 * 标准 5 列网格,卡片内容模仿系统真实结构(标题+描述+统计+时间) */ export function LayoutGrid({ projects, t }: { projects: MockProject[]; t: (key: string, params?: Record) => string }) { return (

{t('recentProjects')}

{projects.map((p) => (

{p.name}

{p.description}

{formatTimeAgo(p.updatedAt, t)}
))}
) } /** * 排版2: 横向滚动 * 一排横滚大卡片,更有沉浸感 */ export function LayoutScroll({ projects, t }: { projects: MockProject[]; t: (key: string, params?: Record) => string }) { return (

{t('recentProjects')}

{projects.map((p) => (

{p.name}

{p.description}

{formatTimeAgo(p.updatedAt, t)}
))}
) } /** * 排版3: 紧凑列表 * 左右布局的一行式列表,信息紧凑 */ export function LayoutList({ projects, t }: { projects: MockProject[]; t: (key: string, params?: Record) => string }) { return (

{t('recentProjects')}

{projects.map((p) => (

{p.name}

{p.description}

{formatTimeAgo(p.updatedAt, t)}
))}
) } /** * 排版4: 突出首项 * 第一个项目大卡片占满左侧,右侧两列堆叠小卡片 */ export function LayoutFeatured({ projects, t }: { projects: MockProject[]; t: (key: string, params?: Record) => string }) { const [first, ...rest] = projects return (

{t('recentProjects')}

{/* 大卡片 */} {first && (
{t('latestUpdate')}

{first.name}

{first.description}

{formatTimeAgo(first.updatedAt, t)}
)} {/* 小卡片网格 */}
{rest.map((p) => (

{p.name}

{p.description}

{formatTimeAgo(p.updatedAt, t)}
))}
) } /** * 排版5: 极简圆点列表 * 和输入框同宽的极简列表,仅显示项目名和关键数据 */ export function LayoutMinimalList({ projects, t }: { projects: MockProject[]; t: (key: string, params?: Record) => string }) { return (

{t('recentProjects')}

{projects.map((p) => (
{p.name}
{p.stats.episodes} {t('episodes')} {p.stats.images} {t('images')} {formatTimeAgo(p.updatedAt, t)}
))}
) }