53 lines
2.1 KiB
React
53 lines
2.1 KiB
React
import React from 'react'
|
|
|
|
import { Link } from 'react-router-dom'
|
|
import PropTypes from 'prop-types';
|
|
import { Card, Flex, Image, NavLink, Title } from '@mantine/core'
|
|
|
|
const Play = () => {
|
|
return (
|
|
<Card maw={450} sx={{
|
|
width: '100%',
|
|
height: '600px',
|
|
textAlign: 'center',
|
|
backgroundColor: '#262523'
|
|
}}>
|
|
<Flex gap="5px" px="20px" justify='center' align='center' wrap='nowrap' direction='column'>
|
|
<Title order={2} >Play Chess</Title>
|
|
<Image my="md" withPlaceholder width={200} height={120} src={null} />
|
|
{
|
|
dataList.map((item, index) => <CardItem key={index} label={item.label} description={item.description} src={item.src} to={item.to} />)
|
|
}
|
|
</Flex>
|
|
</Card>
|
|
)
|
|
}
|
|
|
|
const CardItem = ({ label, description, src, to }) => {
|
|
return (
|
|
<NavLink
|
|
component={Link}
|
|
to={to}
|
|
label={label}
|
|
icon={<Image src={src} width={50} />}
|
|
description={description}
|
|
sx={{ backgroundColor: '#1f1f1a', borderRadius: '5px' }}
|
|
/>
|
|
)
|
|
}
|
|
|
|
CardItem.propTypes = {
|
|
label: PropTypes.string,
|
|
description: PropTypes.string,
|
|
src: PropTypes.string,
|
|
to: PropTypes.string
|
|
}
|
|
|
|
const dataList = [
|
|
{ label: 'Play Online', description: 'Play vs a person of similar skill', src: 'https://www.chess.com/bundles/web/images/color-icons/blitz.a0e36339.svg', to: "/play/online" },
|
|
{ label: 'Computer', description: 'Challenge a bot from easy to master', src: 'https://www.chess.com/bundles/web/images/color-icons/computer.2318c3b4.svg', to: "/play/computer" },
|
|
{ label: 'Play Friend', description: 'Invite a friend to a game of chess', src: 'https://www.chess.com/bundles/web/images/color-icons/handshake.fb30f50b.svg', to: "/play/friend" },
|
|
{ label: 'Tournaments', description: 'Join an arena where anyone can win', src: 'https://www.chess.com/bundles/web/images/color-icons/tournaments.6de54f69.svg', to: "/play/tournament" },
|
|
]
|
|
|
|
export default Play |