import { Card } from "@/components/ui/card"; import { Progress } from "@/components/ui/progress"; import { formatDateTime } from "@/components/SearchResults"; import { addHoursToNow, formatHours } from "../song/[id]/info"; import { milestoneConfig, type CloseMilestoneInfo, type MilestoneType } from "./Milestone"; export const MilestoneVideoCard = ({ video, milestoneType, }: { video: NonNullable[number]; milestoneType: MilestoneType; }) => { const config = milestoneConfig[milestoneType]; const remainingViews = config.target - video.eta.currentViews; const progressPercentage = (video.eta.currentViews / config.target) * 100; return (
{video.bilibili_metadata.coverUrl && ( 视频封面 )}

{video.bilibili_metadata.title}

当前播放: {video.eta.currentViews.toLocaleString()} 目标: {config.target.toLocaleString()}

剩余播放: {remainingViews.toLocaleString()}

预计达成: {formatHours(video.eta.eta)}

播放速度: {Math.round(video.eta.speed)}/小时

达成时间: {addHoursToNow(video.eta.eta)}

{video.bilibili_metadata.publishedAt && ( 发布于 {formatDateTime(new Date(video.bilibili_metadata.publishedAt))} )} 观看视频 查看详情
); };