json / src /pages /pricing.tsx
xinnni's picture
Upload 146 files
f909d7c verified
import React from "react";
import Head from "next/head";
import {
Flex,
Stack,
Button,
List,
ThemeIcon,
Text,
Paper,
Badge,
SegmentedControl,
Center,
Tooltip,
} from "@mantine/core";
import { AiOutlineInfoCircle } from "react-icons/ai";
import { BsCheck, BsX } from "react-icons/bs";
import { FaBolt } from "react-icons/fa6";
import { VscArrowRight, VscInfo } from "react-icons/vsc";
import Layout from "src/layout/Layout";
import useUser from "src/store/useUser";
const purchaseLinks = {
monthly:
"https://herowand.lemonsqueezy.com/checkout/buy/ce30521f-c7cc-44f3-9435-995d3260ba22?media=0&enabled=67805%2C82417",
annual:
"https://herowand.lemonsqueezy.com/checkout/buy/577928ea-fb09-4076-9307-3e5931b35ad0?media=0&enabled=67805%2C82417",
};
const Pricing = () => {
const email = useUser(state => state.user?.email);
const [isMonthly, setIsMonthly] = React.useState(true);
const paymentURL = (url: string) => {
if (email) url += `?checkout[email]=${email}`;
return url;
};
return (
<Layout>
<Head>
<title>Pricing - JSON Crack</title>
</Head>
<Center my="lg">
<SegmentedControl
onChange={v => setIsMonthly(v === "Monthly")}
size="lg"
data={["Monthly", "Yearly"]}
w={200}
radius="xl"
/>
</Center>
<Flex gap="lg" wrap="wrap" justify="center" w="fit-content" p="lg" mx="auto">
<Paper bg="white" p="xl" radius="lg" withBorder w={325}>
<Flex justify="space-between">
<Stack gap="0">
<Text fz="xl" fw="bold" c="black">
Free
</Text>
<Text fz={32} fw="bold" c="black">
$0
</Text>
<Text fz="xs" c="gray.6">
billed {isMonthly ? "monthly" : "annually"}
</Text>
</Stack>
</Flex>
<Button my="md" size="md" radius="md" color="black" variant="outline" fullWidth>
Free
</Button>
<Flex direction="column" justify="space-between" h={200}>
<List
spacing="xs"
size="sm"
mt="lg"
center
icon={
<ThemeIcon color="dark.6" size={20} radius="xl">
<BsCheck size="1rem" />
</ThemeIcon>
}
>
<List.Item>
<Text c="black" fz="sm">
Save & share up to 15 files
</Text>
</List.Item>
<List.Item>
<Text c="black" fz="sm">
Visualize all data formats
</Text>
</List.Item>
<List.Item
icon={
<ThemeIcon color="gray.5" size={20} radius="xl">
<BsX size="1rem" />
</ThemeIcon>
}
>
<Text c="gray.6" fz="sm">
Maximum Capability
</Text>
</List.Item>
<List.Item
icon={
<ThemeIcon color="gray.5" size={20} radius="xl">
<BsX size="1rem" />
</ThemeIcon>
}
>
<Text c="gray.6" fz="sm">
JSON Schema
</Text>
</List.Item>
<List.Item
icon={
<ThemeIcon color="gray.5" size={20} radius="xl">
<BsX size="1rem" />
</ThemeIcon>
}
>
<Text c="gray.6" fz="sm">
Edit data through graph
</Text>
</List.Item>
</List>
</Flex>
</Paper>
<Paper
p="xl"
radius="lg"
bg="white"
withBorder
w={325}
style={{ borderColor: "black", borderWidth: "2px" }}
>
<Flex justify="space-between">
<Stack gap="0">
<Flex align="center" gap="xs">
<Text fz="xl" fw="bold" c="black">
Premium
</Text>
<Badge size="sm" color="red" leftSection={<FaBolt />}>
Most Popular
</Badge>
</Flex>
<Flex gap="xs" align="center">
<Text fz={32} fw="bold" c="black">
${isMonthly ? "5" : "60"}
</Text>
<Text fz="md" fw="bold" c="dimmed" style={{ textDecoration: "line-through" }}>
${isMonthly ? "7" : "84"}
</Text>
</Flex>
<Text fz="xs" c="gray.6">
billed {isMonthly ? "monthly" : "annually"}
</Text>
</Stack>
</Flex>
<Button
component="a"
href={paymentURL(isMonthly ? purchaseLinks.monthly : purchaseLinks.annual)}
target="_blank"
size="md"
radius="md"
color="dark"
fullWidth
my="md"
rightSection={<VscArrowRight />}
>
Upgrade
</Button>
<Flex direction="column" justify="space-between" h={200}>
<List
spacing="xs"
size="sm"
mt="lg"
center
icon={
<ThemeIcon color="dark.6" size={20} radius="xl">
<BsCheck size="1rem" />
</ThemeIcon>
}
>
<List.Item>
<Text c="black" fz="sm">
Maximum capability
</Text>
</List.Item>
<List.Item>
<Text c="black" fz="sm">
Save & share up to 200 files
</Text>
</List.Item>
<List.Item>
<Text c="black" fz="sm">
Visualize all data formats
</Text>
</List.Item>
<List.Item>
<Text c="black" fz="sm">
JSON Schema
</Text>
</List.Item>
<List.Item>
<Text c="black" fz="sm">
Edit data through graph
</Text>
</List.Item>
<List.Item>
<Text c="blue" fz="sm">
Join alpha test of JC AI{" "}
<Tooltip label="You will receive 10 credits per day.">
<ThemeIcon size="xs" variant="transparent" style={{ verticalAlign: "middle" }}>
<VscInfo />
</ThemeIcon>
</Tooltip>
</Text>
</List.Item>
</List>
</Flex>
</Paper>
<Paper bg="white" p="xl" radius="lg" withBorder w={325}>
<Flex justify="space-between">
<Stack gap="0">
<Text fz="xl" fw="bold" c="black">
Enterprise
</Text>
<Text fz={32} fw="bold" c="black">
Custom
</Text>
<Text fz="xs" c="gray.6">
billed {isMonthly ? "monthly" : "annually"}
</Text>
</Stack>
</Flex>
<Button
component="a"
href="mailto:[email protected]?subject=Enterprise%20Plan%20Inquiry&body=Please%20replace%20this%20text%20with%20your%20inquiry%20content."
target="_blank"
size="md"
radius="md"
variant="outline"
color="dark"
fullWidth
my="md"
rightSection={<VscArrowRight />}
>
Contact Us
</Button>
<Flex direction="column" justify="space-between" h={200}>
<List
spacing="xs"
size="sm"
mt="lg"
center
icon={
<ThemeIcon color="dark.6" size={20} radius="xl">
<BsCheck size="1rem" />
</ThemeIcon>
}
c="black"
>
<List.Item>Everything from previous plans</List.Item>
<List.Item
icon={
<ThemeIcon color="dark.6" size={20} radius="xl">
<BsCheck size="1rem" />
</ThemeIcon>
}
c="black"
>
Unlimited premium accounts for work email
</List.Item>
<List.Item
icon={
<ThemeIcon color="dark.6" size={20} radius="xl">
<BsCheck size="1rem" />
</ThemeIcon>
}
c="black"
>
Shared cloud in app
</List.Item>
</List>
</Flex>
</Paper>
</Flex>
<Text pt="sm" size="sm" c="dimmed" style={{ textAlign: "center" }}>
<AiOutlineInfoCircle style={{ marginRight: "4px" }} />
Payment email must be matching with the account registered to the JSON Crack.
</Text>
</Layout>
);
};
export default Pricing;