Create LicensesInfos component
This commit is contained in:
@@ -0,0 +1,96 @@
|
|||||||
|
/* eslint-disable import/extensions */
|
||||||
|
|
||||||
|
import Image from 'next/image'
|
||||||
|
import PropTypes from 'prop-types'
|
||||||
|
import Typography from '@mui/material/Typography'
|
||||||
|
import Box from '@mui/material/Box'
|
||||||
|
import List from '@mui/material/List'
|
||||||
|
import ListItem from '@mui/material/ListItem'
|
||||||
|
import ListItemText from '@mui/material/ListItemText'
|
||||||
|
import Button from '@mui/material/Button'
|
||||||
|
import Link from '@mui/material/Link'
|
||||||
|
import OpenInNewIcon from '@mui/icons-material/OpenInNew'
|
||||||
|
|
||||||
|
import licencesData from './data.json'
|
||||||
|
import licensesConditions from './conditions.json'
|
||||||
|
|
||||||
|
export default function LicensesInfo({license}) {
|
||||||
|
const licenseInfo = licencesData.find(item => item.license === license)
|
||||||
|
const licenseList = licenseInfo.license.split('-')
|
||||||
|
|
||||||
|
const conditions = licenseList.map(license => licensesConditions[license])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Box>
|
||||||
|
<Box sx={{marginBottom: 1, textAlign: 'center', display: 'flex', justifyContent: 'center'}}>
|
||||||
|
<Box marginRight={0.5}>
|
||||||
|
<Image
|
||||||
|
width={46}
|
||||||
|
height={46}
|
||||||
|
alt={license}
|
||||||
|
src='/images/cc/icons/cc.svg'
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
{licenseList.map(license => (
|
||||||
|
<Box key={license} marginRight={0.5}>
|
||||||
|
<Image
|
||||||
|
width={46}
|
||||||
|
height={46}
|
||||||
|
alt={license}
|
||||||
|
src={`/images/cc/icons/${license}.svg`}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
</Box>
|
||||||
|
<Typography gutterBottom textAlign='center' variant='h4' fontWeight='bold'>{licenseInfo.title}</Typography>
|
||||||
|
<Typography gutterBottom textAlign='center' marginBottom={3} variant='h6'>{licenseInfo.subtitle}</Typography>
|
||||||
|
<Typography fontWeight='bold' variant='h5'>Vous êtes autorisé à :</Typography>
|
||||||
|
<List sx={{marginBottom: 3}}>
|
||||||
|
{Object.entries(licenseInfo.allowed).map(([action, description]) => (
|
||||||
|
<ListItem key={action} alignItems='flex-start'>
|
||||||
|
<Box marginRight={2}>
|
||||||
|
<Image
|
||||||
|
width={46}
|
||||||
|
height={46}
|
||||||
|
alt={action}
|
||||||
|
src={`/images/cc/icons/${action}.svg`}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<ListItemText
|
||||||
|
primary={<Typography sx={{textDecoration: 'underline'}} fontWeight='bold' variant='h5'>{action}</Typography>}
|
||||||
|
secondary={<Typography variant='h6'>{description}</Typography>}
|
||||||
|
/>
|
||||||
|
</ListItem>
|
||||||
|
))}
|
||||||
|
</List>
|
||||||
|
<Typography gutterBottom fontWeight='bold' variant='h5'>Conditions :</Typography>
|
||||||
|
<List sx={{marginBottom: 3}}>
|
||||||
|
{conditions.map(({name, description}, index) => (
|
||||||
|
<ListItem key={name} alignItems='flex-start'>
|
||||||
|
<Box marginRight={2}>
|
||||||
|
<Image
|
||||||
|
width={46}
|
||||||
|
height={46}
|
||||||
|
alt={licenseList[index]}
|
||||||
|
src={`/images/cc/icons/${licenseList[index]}.svg`}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<ListItemText
|
||||||
|
primary={<Typography sx={{textDecoration: 'underline'}} fontWeight='bold' variant='h5'>{name}</Typography>}
|
||||||
|
secondary={<Typography variant='h6'>{description}</Typography>}
|
||||||
|
/>
|
||||||
|
</ListItem>
|
||||||
|
))}
|
||||||
|
</List>
|
||||||
|
<Link target='_blank' rel='noreferrer' underline='none' href={licenseInfo.link}>
|
||||||
|
<Button variant='text' endIcon={<OpenInNewIcon />}>
|
||||||
|
Lien vers la licence
|
||||||
|
</Button>
|
||||||
|
</Link>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
LicensesInfo.propTypes = {
|
||||||
|
license: PropTypes.string.isRequired
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user