2022-02-09 18:40:40 +01:00
|
|
|
import {
|
|
|
|
Flex,
|
|
|
|
Heading,
|
|
|
|
List,
|
|
|
|
ListIcon,
|
|
|
|
ListItem,
|
|
|
|
Text,
|
|
|
|
useColorModeValue,
|
|
|
|
VStack,
|
|
|
|
} from '@chakra-ui/react'
|
|
|
|
import * as React from 'react'
|
|
|
|
import { CheckIcon } from '../../../assets/icons/CheckIcon'
|
|
|
|
import { Card, CardProps } from './Card'
|
|
|
|
|
|
|
|
export interface PricingCardData {
|
|
|
|
features: string[]
|
|
|
|
name: string
|
|
|
|
price: string
|
|
|
|
}
|
|
|
|
|
|
|
|
interface PricingCardProps extends CardProps {
|
|
|
|
data: PricingCardData
|
|
|
|
icon?: JSX.Element
|
|
|
|
button: React.ReactElement
|
|
|
|
}
|
|
|
|
|
|
|
|
export const PricingCard = (props: PricingCardProps) => {
|
2022-03-17 14:37:00 +01:00
|
|
|
const { data, icon, button, ...rest } = props
|
2022-02-09 18:40:40 +01:00
|
|
|
const { features, price, name } = data
|
2022-03-17 14:37:00 +01:00
|
|
|
const accentColor = useColorModeValue('blue.500', 'white')
|
2022-02-09 18:40:40 +01:00
|
|
|
|
|
|
|
return (
|
2022-03-17 14:37:00 +01:00
|
|
|
<Card rounded="xl" bgColor="gray.800" {...rest}>
|
2022-02-09 18:40:40 +01:00
|
|
|
<VStack spacing={6}>
|
|
|
|
{icon}
|
|
|
|
<Heading size="md" fontWeight="extrabold">
|
|
|
|
{name}
|
|
|
|
</Heading>
|
|
|
|
</VStack>
|
|
|
|
<Flex
|
|
|
|
align="flex-end"
|
|
|
|
justify="center"
|
|
|
|
fontWeight="extrabold"
|
|
|
|
color={accentColor}
|
|
|
|
my="8"
|
|
|
|
>
|
|
|
|
<Heading size="2xl" fontWeight="inherit" lineHeight="0.9em">
|
|
|
|
{price}
|
|
|
|
</Heading>
|
|
|
|
{(price.includes('$') || price.includes('€')) && (
|
|
|
|
<Text fontWeight="inherit" fontSize="xl">
|
|
|
|
/ mo
|
|
|
|
</Text>
|
|
|
|
)}
|
|
|
|
</Flex>
|
|
|
|
<List spacing="4" mb="8" maxW="30ch" mx="auto">
|
|
|
|
{features.map((feature, index) => (
|
|
|
|
<ListItem fontWeight="medium" key={index}>
|
|
|
|
<ListIcon
|
|
|
|
fontSize="xl"
|
|
|
|
as={CheckIcon}
|
|
|
|
marginEnd={2}
|
|
|
|
color={accentColor}
|
2022-03-17 14:37:00 +01:00
|
|
|
fill="blue.200"
|
2022-02-09 18:40:40 +01:00
|
|
|
/>
|
|
|
|
{feature}
|
|
|
|
</ListItem>
|
|
|
|
))}
|
|
|
|
</List>
|
|
|
|
{button}
|
|
|
|
</Card>
|
|
|
|
)
|
|
|
|
}
|