2024-02-15 21:49:12 -05:00

220 lines
6.7 KiB
TypeScript

import * as React from 'react';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import Card from '@mui/material/Card';
import Chip from '@mui/material/Chip';
import CardActions from '@mui/material/CardActions';
import CardContent from '@mui/material/CardContent';
import Container from '@mui/material/Container';
import Divider from '@mui/material/Divider';
import Grid from '@mui/material/Grid';
import Typography from '@mui/material/Typography';
import AutoAwesomeIcon from '@mui/icons-material/AutoAwesome';
import CheckCircleRoundedIcon from '@mui/icons-material/CheckCircleRounded';
const tiers = [
{
title: 'Free',
price: '0',
description: [
'10 users included',
'2 GB of storage',
'Help center access',
'Email support',
],
buttonText: 'Sign up for free',
buttonVariant: 'outlined',
},
{
title: 'Professional',
subheader: 'Recommended',
price: '15',
description: [
'20 users included',
'10 GB of storage',
'Help center access',
'Priority email support',
'Dedicated team',
'Best deals',
],
buttonText: 'Start now',
buttonVariant: 'contained',
},
{
title: 'Enterprise',
price: '30',
description: [
'50 users included',
'30 GB of storage',
'Help center access',
'Phone & email support',
],
buttonText: 'Contact us',
buttonVariant: 'outlined',
},
];
export default function Pricing() {
return (
<Container
id="pricing"
sx={{
pt: { xs: 4, sm: 12 },
pb: { xs: 8, sm: 16 },
position: 'relative',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
gap: { xs: 3, sm: 6 },
}}
>
<Box
sx={{
width: { sm: '100%', md: '60%' },
textAlign: { sm: 'left', md: 'center' },
}}
>
<Typography component="h2" variant="h4" color="text.primary">
Pricing
</Typography>
<Typography variant="body1" color="text.secondary">
Quickly build an effective pricing table for your potential customers with
this layout. <br />
It&apos;s built with default Material UI components with little
customization.
</Typography>
</Box>
<Grid container spacing={3} alignItems="center" justifyContent="center">
{tiers.map((tier) => (
<Grid
item
key={tier.title}
xs={12}
sm={tier.title === 'Enterprise' ? 12 : 6}
md={4}
>
<Card
sx={{
p: 2,
display: 'flex',
flexDirection: 'column',
gap: 4,
border: tier.title === 'Professional' ? '1px solid' : undefined,
borderColor:
tier.title === 'Professional' ? 'primary.main' : undefined,
background:
tier.title === 'Professional'
? 'linear-gradient(#033363, #021F3B)'
: undefined,
}}
>
<CardContent>
<Box
sx={{
mb: 1,
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
color:
tier.title === 'Professional' ? 'primary.contrastText' : '',
}}
>
<Typography component="h3" variant="h6">
{tier.title}
</Typography>
{tier.title === 'Professional' && (
<Chip
icon={<AutoAwesomeIcon />}
label={tier.subheader}
size="small"
sx={{
background: (theme) =>
theme.palette.mode === 'light' ? '' : 'none',
backgroundColor: 'primary.contrastText',
'& .MuiChip-label': {
color: 'primary.dark',
},
'& .MuiChip-icon': {
color: 'primary.dark',
},
}}
/>
)}
</Box>
<Box
sx={{
display: 'flex',
alignItems: 'baseline',
color:
tier.title === 'Professional'
? 'primary.contrastText'
: undefined,
}}
>
<Typography component="h3" variant="h2">
${tier.price}
</Typography>
<Typography component="h3" variant="h6">
&nbsp; per month
</Typography>
</Box>
<Divider
sx={{
my: 2,
opacity: 0.2,
borderColor: 'grey.500',
}}
/>
{tier.description.map((line) => (
<Box
key={line}
sx={{
py: 1,
display: 'flex',
gap: 1.5,
alignItems: 'center',
}}
>
<CheckCircleRoundedIcon
sx={{
width: 20,
color:
tier.title === 'Professional'
? 'primary.light'
: 'primary.main',
}}
/>
<Typography
component="text"
variant="subtitle2"
sx={{
color:
tier.title === 'Professional'
? 'primary.contrastText'
: undefined,
}}
>
{line}
</Typography>
</Box>
))}
</CardContent>
<CardActions>
<Button
fullWidth
variant={tier.buttonVariant as 'outlined' | 'contained'}
component="a"
href="/material-ui/getting-started/templates/checkout/"
target="_blank"
>
{tier.buttonText}
</Button>
</CardActions>
</Card>
</Grid>
))}
</Grid>
</Container>
);
}