import type { SearchResult } from "@/routes/search"; interface SearchResultsProps { results: SearchResult; } const formatDateTime = (date: Date): string => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); // 月份从0开始,补0 const day = String(date.getDate()).padStart(2, "0"); const hour = String(date.getHours()).padStart(2, "0"); const minute = String(date.getMinutes()).padStart(2, "0"); const second = String(date.getSeconds()).padStart(2, "0"); return `${year}-${month}-${day} ${hour}:${minute}:${second}`; }; export function SearchResults({ results }: SearchResultsProps) { if (!results || results.length === 0) { return (

没有找到相关结果

); } return (
{results.map((result, index) => (
{result.type === "song" ? : }
))}
); } function SongResult({ result }: { result: Exclude[number] }) { if (result.type !== "song") return null; const { data } = result; return (
{data.image && ( 歌曲封面 )}

{data.name}

{data.producer &&

{data.producer}

}
{data.duration && ( {Math.floor(data.duration / 60)}:{(data.duration % 60).toString().padStart(2, "0")} )} {data.publishedAt && {formatDateTime(new Date(data.publishedAt))}}
{data.aid && ( 观看视频 )} 查看曲目详情
); } function BiliVideoResult({ result }: { result: Exclude[number] }) { if (result.type !== "bili-video") return null; const { data } = result; return (
{data.coverUrl && ( 视频封面 )}

{data.title}

{data.description && (
						{data.description}
					
)}
{data.duration && ( {Math.floor(data.duration / 60)}:{(data.duration % 60).toString().padStart(2, "0")} )} {data.publishedAt && {formatDateTime(new Date(data.publishedAt))}} {data.bvid && {data.bvid}} {data.views && {data.views.toLocaleString()} 播放}
{data.bvid && ( 观看视频 )} {data.bvid && ( 查看曲目详情 )}
); }