Files
pawol.nu/components/akey/an-vedette.js
T

74 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use client'
import PropTypes from 'prop-types'
import Card from '@mui/material/Card'
import CardActionArea from '@mui/material/CardActionArea'
import CardContent from '@mui/material/CardContent'
import Typography from '@mui/material/Typography'
import Box from '@mui/material/Box'
import Chip from '@mui/material/Chip'
import Image from 'next/image'
import Link from 'next/link'
import {getAlias} from '../../lib/utils/get-alias'
import {formatKuveti} from '../../lib/kuveti'
const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
// 1×1 gris neutre — placeholder pendant le chargement
const BLUR_DATA_URL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNsYAAAAAYAAjCB0C8AAAAASUVORK5CYII='
export default function AnVedette({teks}) {
const {titre, artistes, annee, couverture, slug} = teks
const aliases = getAlias(artistes, teks.prioriteArtistes)
const fmt = formatKuveti(couverture, 'medium')
return (
<Box sx={{mb: 4}}>
<Chip
label='NEW RELEASE'
size='small'
color='primary'
sx={{mb: 1.5, fontWeight: 'bold', letterSpacing: 1}}
/>
<Card sx={{borderRadius: 2, overflow: 'hidden'}}>
<CardActionArea component={Link} href={`/paroles/${slug}`}>
<Box sx={{position: 'relative', width: '100%', aspectRatio: {xs: '1 / 1', sm: '16 / 9'}, maxHeight: {sm: 420}}}>
{fmt?.url ? (
<Image
fill
priority
src={`${IMAGE_URL}${fmt.url}`}
alt={titre}
placeholder='blur'
blurDataURL={BLUR_DATA_URL}
sizes='(max-width: 600px) 100vw, 800px'
style={{objectFit: 'cover'}}
/>
) : (
<Box sx={{width: '100%', height: '100%', bgcolor: 'grey.300'}} />
)}
</Box>
<CardContent>
<Typography variant='h5' component='h2' sx={{fontWeight: 'bold', mb: 0.5}}>
{titre}
</Typography>
<Typography variant='body1' color='text.secondary'>
{aliases}
</Typography>
{annee && (
<Typography variant='body2' color='text.secondary'>
{annee}
</Typography>
)}
</CardContent>
</CardActionArea>
</Card>
</Box>
)
}
AnVedette.propTypes = {
teks: PropTypes.object.isRequired
}