2022-03-13 14:40:38 +08:00
|
|
|
import ArtistInline from '@/components/ArtistsInline'
|
|
|
|
import Skeleton from '@/components/Skeleton'
|
|
|
|
import { resizeImage } from '@/utils/common'
|
|
|
|
|
|
|
|
const TrackListGrid = ({
|
|
|
|
track,
|
|
|
|
isSkeleton = false,
|
|
|
|
}: {
|
|
|
|
track: Track
|
|
|
|
isSkeleton: boolean
|
|
|
|
}) => {
|
|
|
|
return (
|
|
|
|
<div
|
|
|
|
className={classNames(
|
|
|
|
'group grid w-full rounded-xl after:scale-[.98] after:rounded-xl',
|
|
|
|
'grid-cols-1 py-1.5 px-2'
|
|
|
|
)}
|
|
|
|
>
|
2022-03-17 19:30:43 +08:00
|
|
|
<div className='grid grid-cols-[3rem_auto] items-center'>
|
2022-03-13 14:40:38 +08:00
|
|
|
{/* Cover */}
|
|
|
|
<div>
|
|
|
|
{!isSkeleton && (
|
|
|
|
<img
|
|
|
|
src={resizeImage(track.al.picUrl, 'xs')}
|
2022-03-17 19:30:43 +08:00
|
|
|
className='box-content h-9 w-9 rounded-md border border-black border-opacity-[.03]'
|
2022-03-13 14:40:38 +08:00
|
|
|
/>
|
|
|
|
)}
|
|
|
|
{isSkeleton && (
|
2022-03-17 19:30:43 +08:00
|
|
|
<Skeleton className='mr-4 h-9 w-9 rounded-md border border-gray-100' />
|
2022-03-13 14:40:38 +08:00
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{/* Track name & Artists */}
|
2022-03-17 19:30:43 +08:00
|
|
|
<div className='flex flex-col justify-center'>
|
2022-03-13 14:40:38 +08:00
|
|
|
{!isSkeleton && (
|
|
|
|
<div
|
2022-03-17 19:30:43 +08:00
|
|
|
v-if='!isSkeleton'
|
|
|
|
className='line-clamp-1 break-all text-base font-semibold'
|
2022-03-13 14:40:38 +08:00
|
|
|
>
|
|
|
|
{track.name}
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
{isSkeleton && (
|
2022-03-17 19:30:43 +08:00
|
|
|
<Skeleton className='text-base'>PLACEHOLDER12345</Skeleton>
|
2022-03-13 14:40:38 +08:00
|
|
|
)}
|
|
|
|
|
2022-03-17 19:30:43 +08:00
|
|
|
<div className='text-xs'>
|
2022-03-13 14:40:38 +08:00
|
|
|
{!isSkeleton && <ArtistInline artists={track.ar} />}
|
|
|
|
{isSkeleton && (
|
2022-03-17 19:30:43 +08:00
|
|
|
<Skeleton className='w-2/3 translate-y-px'>PLACE</Skeleton>
|
2022-03-13 14:40:38 +08:00
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default TrackListGrid
|