import { Box, Flex, Heading, Link, Text, Tooltip } from '@chakra-ui/react';
import { InfoIcon } from '@chakra-ui/icons';

type RoadmapGridItemProps = {
  title: string;
  subtitle: string;
  isCommunity?: boolean;
  isUpcoming?: boolean;
  colorIndex?: number;
  url: string;
};

const bgColorList = [
  'red.100',
  'yellow.100',
  'green.200',
  'teal.200',
  'blue.200',
  'red.200',
  'gray.200',
  'teal.200',
  'yellow.100',
  'green.200',
  'red.200',
];

export function HomeRoadmapItem(props: RoadmapGridItemProps) {
  const {
    title,
    subtitle,
    isCommunity,
    colorIndex = 0,
    url,
    isUpcoming,
  } = props;

  return (
    <Box
      as={Link}
      href={url}
      _hover={{
        textDecoration: 'none',
        bg: 'rgba(255,255,255,.10)',
      }}
      sx={{
        // On mobile devices, don't change the scale
        '@media (hover: none)': {
          '&:hover': {
            bg: 'rgba(255,255,255,.05)',
          },
        },
      }}
      flex={1}
      shadow="2xl"
      className={'home-roadmap-item'}
      bg={'rgba(255,255,255,.05)'}
      color="white"
      p="15px"
      rounded="10px"
      pos="relative"
    >
      {isCommunity && (
        <Tooltip label={'Community contribution'} hasArrow placement="top">
          <InfoIcon opacity={0.5} position="absolute" top="10px" right="10px" />
        </Tooltip>
      )}

      <Heading
        fontSize={['17px', '17px', '22px']}
        color={bgColorList[colorIndex]}
        mb="5px"
      >
        {title}
      </Heading>
      <Text color="gray.200" fontSize={['13px']}>
        {subtitle}
      </Text>

      {isUpcoming && (
        <Flex
          alignItems="center"
          justifyContent="center"
          pos="absolute"
          left={0}
          right={0}
          top={0}
          bottom={0}
          rounded="10px"
        >
          <Text
            color="white"
            bg="gray.600"
            zIndex={1}
            fontWeight={600}
            p={'5px 10px'}
            rounded="10px"
          >
            Upcoming
          </Text>
          <Box
            bg={'black'}
            pos="absolute"
            top={0}
            left={0}
            right={0}
            bottom={0}
            rounded={'10px'}
            opacity={0.5}
          />
        </Flex>
      )}
    </Box>
  );
}