import { formatDate, formatDuration, resizeImage } from '@/web/utils/common' import { css, cx } from '@emotion/css' import Icon from '@/web/components/Icon' import dayjs from 'dayjs' import { useMemo } from 'react' import Image from './Image' import useIsMobile from '@/web/hooks/useIsMobile' const TrackListHeader = ({ album, playlist, onPlay, }: { album?: Album playlist?: Playlist onPlay: () => void }) => { const albumDuration = useMemo(() => { const duration = album?.songs?.reduce((acc, cur) => acc + cur.dt, 0) || 0 return formatDuration(duration, 'en', 'hh[hr] mm[min]') }, [album?.songs]) const isMobile = useIsMobile() const cover = album?.picUrl || playlist?.coverImgUrl || '' return (
{/* Cover */} Cover {/* Blur bg */} {!isMobile && ( )}
{/* Name */}
{album?.name || playlist?.name}
{/* Creator */}
{album?.artist.name || playlist?.creator.nickname}
{/* Extra info */}
{/* Album info */} {!!album && ( <> {album?.mark === 1056768 && ( )}{' '} {dayjs(album?.publishTime || 0).year()} · {album?.songs.length}{' '} tracks, {albumDuration} )} {/* Playlist info */} {!!playlist && ( <> Updated at {formatDate(playlist?.updateTime || 0, 'en')} ·{' '} {playlist.trackCount} tracks )}
{/* Description */} {!isMobile && (
{album?.description || playlist?.description}
)}
{/* Actions */}
) } export default TrackListHeader