feat: update landing

This commit is contained in:
AykutSarac 2024-07-27 13:05:56 +03:00
parent 035f6b8baa
commit 80c82e25c9
No known key found for this signature in database
9 changed files with 187 additions and 300 deletions

View File

@ -30,6 +30,11 @@ const Questions = [
title: "Can I export the generated graphs?", title: "Can I export the generated graphs?",
content: "Yes, you can export the generated graphs as PNG, JPEG, or SVG files.", content: "Yes, you can export the generated graphs as PNG, JPEG, or SVG files.",
}, },
{
title: "How to use VS Code extension?",
content:
"You can use the VS Code extension to visualize JSON data directly in your editor. Install the extension from the VS Code marketplace and follow the instructions at extension's page.",
},
]; ];
export const FAQ = () => { export const FAQ = () => {

View File

@ -58,7 +58,7 @@ export const Features = () => {
<Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder> <Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder>
<Flex align="center" gap={8} mb={16}> <Flex align="center" gap={8} mb={16}>
<FaBolt color="orange" size={24} /> <FaBolt color="orange" size={24} />
<Text c="gray.9" fz={{ base: 16, md: 20, lg: 26, xl: 28 }} fw={600}> <Text c="gray.9" fz={{ base: 16, md: 18, lg: 24, xl: 26 }} fw={500}>
Real-time Visualization Real-time Visualization
</Text> </Text>
</Flex> </Flex>
@ -77,7 +77,7 @@ export const Features = () => {
<Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder> <Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder>
<Flex align="center" gap={8} mb={16}> <Flex align="center" gap={8} mb={16}>
<FaHeart color="#ff5555" size={26} /> <FaHeart color="#ff5555" size={26} />
<Text c="gray.9" fz={{ base: 16, md: 20, lg: 26, xl: 28 }} fw={600}> <Text c="gray.9" fz={{ base: 16, md: 18, lg: 24, xl: 26 }} fw={500}>
Simple Simple
</Text> </Text>
</Flex> </Flex>
@ -96,7 +96,7 @@ export const Features = () => {
<Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder> <Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder>
<Flex align="center" gap={8} mb={16}> <Flex align="center" gap={8} mb={16}>
<FaMagic color="#8c0075" size={24} /> <FaMagic color="#8c0075" size={24} />
<Text c="gray.9" fz={{ base: 16, md: 20, lg: 26, xl: 28 }} fw={600}> <Text c="gray.9" fz={{ base: 16, md: 18, lg: 24, xl: 26 }} fw={500}>
Generate Generate
</Text> </Text>
</Flex> </Flex>
@ -116,7 +116,7 @@ export const Features = () => {
<Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder> <Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder>
<Flex align="center" gap={8} mb={16}> <Flex align="center" gap={8} mb={16}>
<FaPalette color="#4890fd" size={24} /> <FaPalette color="#4890fd" size={24} />
<Text c="gray.9" fz={{ base: 16, md: 20, lg: 26, xl: 28 }} fw={600}> <Text c="gray.9" fz={{ base: 16, md: 18, lg: 24, xl: 26 }} fw={500}>
Customizable Customizable
</Text> </Text>
</Flex> </Flex>
@ -136,7 +136,7 @@ export const Features = () => {
<Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder> <Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder>
<Flex align="center" gap={8} mb={16}> <Flex align="center" gap={8} mb={16}>
<FaShieldHalved color="black" size={24} /> <FaShieldHalved color="black" size={24} />
<Text c="gray.9" fz={{ base: 16, md: 20, lg: 26, xl: 28 }} fw={600}> <Text c="gray.9" fz={{ base: 16, md: 18, lg: 24, xl: 26 }} fw={500}>
Privacy First Privacy First
</Text> </Text>
</Flex> </Flex>
@ -156,7 +156,7 @@ export const Features = () => {
<Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder> <Paper h="100%" p="lg" radius="md" bg="gray.0" withBorder>
<Flex align="center" gap={8} mb={16}> <Flex align="center" gap={8} mb={16}>
<FaShapes color="#00a571" size={24} /> <FaShapes color="#00a571" size={24} />
<Text c="gray.9" fz={{ base: 16, md: 20, lg: 26, xl: 28 }} fw={600}> <Text c="gray.9" fz={{ base: 16, md: 18, lg: 24, xl: 26 }} fw={500}>
Advanced Features Advanced Features
</Text> </Text>
</Flex> </Flex>

View File

@ -5,6 +5,7 @@ import styled from "styled-components";
const StyledPreviewWrapper = styled.div` const StyledPreviewWrapper = styled.div`
margin: 0 auto; margin: 0 auto;
position: relative; position: relative;
padding: 5rem 0;
`; `;
export const HeroPreview = () => { export const HeroPreview = () => {
@ -54,13 +55,13 @@ export const HeroPreview = () => {
onChange={setSelectedFeature} onChange={setSelectedFeature}
orientation="vertical" orientation="vertical"
withItemsBorders={false} withItemsBorders={false}
color="grape"
bg="transparent" bg="transparent"
color="orange.7"
size="lg" size="lg"
visibleFrom="sm" visibleFrom="sm"
styles={{ styles={{
control: { control: {
background: "#8f8f8f52", background: "rgba(168, 168, 168, 0.2)",
borderRadius: "4px", borderRadius: "4px",
}, },
root: { root: {

View File

@ -1,11 +1,42 @@
import React from "react"; import React from "react";
import { Stack, Flex, Badge, Button } from "@mantine/core"; import { Manrope } from "next/font/google";
import { Stack, Flex, Badge, Button, Text } from "@mantine/core";
import styled from "styled-components"; import styled from "styled-components";
import { MdChevronRight } from "react-icons/md"; import { MdChevronRight } from "react-icons/md";
const manrope = Manrope({
subsets: ["latin-ext"],
});
const StyledHeroSection = styled.main` const StyledHeroSection = styled.main`
position: relative; position: relative;
&:before {
position: absolute;
content: "";
width: 100%;
height: 100%;
image-rendering: pixelated;
-webkit-mask-image: linear-gradient(to bottom, transparent, 20%, white, 80%, transparent);
mask-image: linear-gradient(to bottom, transparent, 20%, white, 80%, transparent);
--line-color-1: #f5f5f5;
--line-color-2: #f8f8f8;
background-image: linear-gradient(var(--line-color-1) 1.5px, transparent 1.5px),
linear-gradient(90deg, var(--line-color-1) 1.5px, transparent 1.5px),
linear-gradient(var(--line-color-2) 1px, transparent 1px),
linear-gradient(90deg, var(--line-color-2) 1px, transparent 1px);
background-position:
-1.5px -1.5px,
-1.5px -1.5px,
-1px -1px,
-1px -1px;
background-size:
100px 100px,
100px 100px,
20px 20px,
20px 20px;
}
@media only screen and (max-width: 1240px) { @media only screen and (max-width: 1240px) {
flex-direction: column; flex-direction: column;
} }
@ -13,23 +44,15 @@ const StyledHeroSection = styled.main`
const StyledHeroTitle = styled.h1` const StyledHeroTitle = styled.h1`
position: relative; position: relative;
font-size: 2rem; font-size: 2.2rem;
font-weight: 600; font-weight: 800;
display: inline; display: inline;
color: #272727; color: #272727;
width: fit-content; width: fit-content;
line-height: 1.2; line-height: 1.12;
letter-spacing: -1px; letter-spacing: -0.02em;
max-width: 30rem; max-width: 30rem;
font-family: ${manrope.style.fontFamily};
span {
display: inline-block;
white-space: nowrap;
padding: 0 0.5rem;
color: white;
background: black;
transform: rotate(-1.5deg);
}
@media only screen and (min-width: 576px) { @media only screen and (min-width: 576px) {
font-size: 3.2rem; font-size: 3.2rem;
@ -42,32 +65,31 @@ const StyledHeroTitle = styled.h1`
} }
@media only screen and (min-width: 1400px) { @media only screen and (min-width: 1400px) {
font-size: 4rem; font-size: 4.2rem;
max-width: 48rem; max-width: 50rem;
} }
`; `;
const StyledHeroText = styled.p` const StyledHeroText = styled.p`
font-size: 1.2rem; font-size: 1rem;
color: #626262; color: #626262;
font-weight: 500; font-weight: 500;
max-width: 100%; max-width: 75%;
min-width: 400px;
margin-top: 1rem; margin-top: 1rem;
text-align: center; text-align: center;
strong { strong {
font-weight: 500; font-weight: 500;
color: #0073ff; color: #be7d1c;
} }
@media only screen and (min-width: 576px) { @media only screen and (min-width: 576px) {
font-size: 1.3rem; font-size: 1.15rem;
max-width: 80%; max-width: 80%;
} }
@media only screen and (min-width: 1400px) { @media only screen and (min-width: 1400px) {
font-size: 1.2rem; font-size: 1.3rem;
max-width: 60%; max-width: 60%;
} }
`; `;
@ -78,7 +100,7 @@ const StyledHeroSectionBody = styled.div`
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 9rem 10%; padding: 7rem 10%;
overflow: hidden; overflow: hidden;
text-align: center; text-align: center;
gap: 60px; gap: 60px;
@ -95,10 +117,7 @@ export const HeroSection = () => {
<StyledHeroSection id="hero-section"> <StyledHeroSection id="hero-section">
<StyledHeroSectionBody> <StyledHeroSectionBody>
<Stack flex="1" miw={250} mx="auto" align="center"> <Stack flex="1" miw={250} mx="auto" align="center">
<StyledHeroTitle> <StyledHeroTitle>Visualize JSON into interactive graphs</StyledHeroTitle>
Convert any JSON into
<span>interactive graphs</span>
</StyledHeroTitle>
<StyledHeroText> <StyledHeroText>
The best JSON viewer tool to <strong>visualize</strong>, <strong>format</strong> and{" "} The best JSON viewer tool to <strong>visualize</strong>, <strong>format</strong> and{" "}
<strong>modify</strong>. <strong>modify</strong>.
@ -120,23 +139,37 @@ export const HeroSection = () => {
TOML TOML
</Badge> </Badge>
</Flex> </Flex>
<Flex gap="md" wrap="wrap" justify="center">
<Button <Button
component="a" component="a"
variant="gradient" color="gray.2"
gradient={{ href="/#preview"
from: "#4466ff", size="lg"
to: "#003ba9", radius="sm"
}} fw={500}
href="/#pricing" fz="md"
size="xl" mt="lg"
radius="md" visibleFrom="xs"
fw={600} >
rightSection={<MdChevronRight size={30} />} Learn more
mt="lg" </Button>
> <Button
Start Typing component="a"
</Button> color="orange"
href="/#pricing"
size="lg"
radius="sm"
fw={500}
fz="md"
rightSection={<MdChevronRight size={30} />}
mt="lg"
>
Start using free
</Button>
</Flex>
<Text c="gray.6" size="xs" mt="-10">
No registration needed.
</Text>
</Stack> </Stack>
</StyledHeroSectionBody> </StyledHeroSectionBody>
</StyledHeroSection> </StyledHeroSection>

View File

@ -45,10 +45,10 @@ export const PremiumVsFree = () => {
}} }}
radius="xl" radius="xl"
mx="auto" mx="auto"
mb="-16.5rem" mb="-18rem"
style={{ style={{
textAlign: "center", textAlign: "center",
background: "linear-gradient(rgb(33, 148, 87) 40%, rgb(255, 255, 255) 90%)", background: "linear-gradient(rgb(207, 116, 3) 40%, rgb(255, 255, 255) 90%)",
}} }}
> >
<Title <Title
@ -71,15 +71,14 @@ export const PremiumVsFree = () => {
xs: 16, xs: 16,
}} }}
maw={{ maw={{
base: "80%", base: "60%",
sm: "70%", sm: "50%",
}} }}
c="gray.2" c="gray.2"
mb={60} mb={60}
> >
Designed to help you navigate through your data with ease. <br /> Designed to help you navigate through your data with ease. <br /> Smaller, faster, and
The editor provides a clean and intuitive interface that allows you to focus on what more efficient than ever before.
matters most: your data.
</Text> </Text>
</Paper> </Paper>

View File

@ -10,8 +10,9 @@ const inter = Inter({
}); });
const StyledLayoutWrapper = styled.div` const StyledLayoutWrapper = styled.div`
background-image: radial-gradient(#ededed 2px, #ffffff 2px); background: #fff;
background-size: 40px 40px; /* background-image: radial-gradient(#ededed 2px, #ffffff 2px); */
/* background-size: 40px 40px; */
font-family: ${inter.style.fontFamily}; font-family: ${inter.style.fontFamily};
`; `;

View File

@ -6,6 +6,7 @@ import { JSONCrackLogo } from "./JsonCrackLogo";
const StyledNavbarWrapper = styled.div` const StyledNavbarWrapper = styled.div`
z-index: 3; z-index: 3;
padding-top: 1rem;
transition: background 0.2s ease-in-out; transition: background 0.2s ease-in-out;
`; `;
@ -14,7 +15,7 @@ const StyledNavbar = styled.nav`
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
width: 100%; width: 100%;
max-width: 1157px; max-width: 1200px;
margin: 0 auto; margin: 0 auto;
padding: 12px 24px; padding: 12px 24px;
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.1);
@ -53,10 +54,10 @@ export const Navbar = () => {
href="/#pricing" href="/#pricing"
variant="subtle" variant="subtle"
color="black" color="black"
radius="md" radius="sm"
size="sm" size="sm"
ml={50} ml={50}
fw={400} fw={500}
> >
Pricing Pricing
</Button> </Button>
@ -66,9 +67,9 @@ export const Navbar = () => {
target="_blank" target="_blank"
variant="subtle" variant="subtle"
color="black" color="black"
radius="md" radius="sm"
size="sm" size="sm"
fw={400} fw={500}
> >
VS Code VS Code
</Button> </Button>
@ -78,9 +79,9 @@ export const Navbar = () => {
href="/docs" href="/docs"
variant="subtle" variant="subtle"
color="black" color="black"
radius="md" radius="sm"
size="sm" size="sm"
fw={400} fw={500}
> >
Docs Docs
</Button> </Button>
@ -90,9 +91,9 @@ export const Navbar = () => {
href="/#faq" href="/#faq"
variant="subtle" variant="subtle"
color="black" color="black"
radius="md" radius="sm"
size="sm" size="sm"
fw={400} fw={500}
> >
FAQ FAQ
</Button> </Button>
@ -102,21 +103,19 @@ export const Navbar = () => {
variant="default" variant="default"
component="a" component="a"
href="https://app.jsoncrack.com/sign-in" href="https://app.jsoncrack.com/sign-in"
radius="md" radius="sm"
visibleFrom="sm" visibleFrom="sm"
size="md" size="md"
fw={600}
> >
Sign in Sign in
</Button> </Button>
<Button <Button
component="a" component="a"
color="brightBlue" color="orange"
href="/editor" href="/editor"
radius="md" radius="sm"
visibleFrom="sm" visibleFrom="sm"
size="md" size="md"
fw={600}
> >
Editor Editor
</Button> </Button>

View File

@ -198,36 +198,38 @@ export const GraphView = ({ isWidget = false }: GraphProps) => {
> >
<GraphCanvas isWidget={isWidget} /> <GraphCanvas isWidget={isWidget} />
</Space> </Space>
<Dialog {!isWidget && (
opened={!isDialogClosed} <Dialog
size="lg" opened={!isDialogClosed}
radius="md" size="lg"
withBorder radius="md"
position={{ withBorder
right: 15, position={{
bottom: 40, right: 15,
}} bottom: 40,
onClose={() => setDialogClosed(true)} }}
> onClose={() => setDialogClosed(true)}
<Text size="sm" fw={500}> >
Try the powerful Premium editor for larger graphs and advanced features with money-back <Text size="sm" fw={500}>
guarantee. Try the powerful Premium editor for larger graphs and advanced features with
</Text> money-back guarantee.
<Group justify="right" mt="sm"> </Text>
<Button variant="default" onClick={() => setDialogClosed(true)}> <Group justify="right" mt="sm">
Close <Button variant="default" onClick={() => setDialogClosed(true)}>
</Button> Close
<Button </Button>
color="green" <Button
onClick={() => { color="green"
setVisible("upgrade")(true); onClick={() => {
setDialogClosed(true); setVisible("upgrade")(true);
}} setDialogClosed(true);
> }}
Explore >
</Button> Explore
</Group> </Button>
</Dialog> </Group>
</Dialog>
)}
</StyledEditorWrapper> </StyledEditorWrapper>
</> </>
); );

View File

@ -10,14 +10,13 @@ import {
Paper, Paper,
SegmentedControl, SegmentedControl,
Center, Center,
Badge, // ThemeIcon, Badge,
Tooltip, Tooltip,
Anchor, Anchor,
} from "@mantine/core"; } from "@mantine/core";
import styled from "styled-components"; import styled from "styled-components";
import { AiOutlineInfoCircle } from "react-icons/ai"; import { AiOutlineInfoCircle } from "react-icons/ai";
import { IoIosCheckmarkCircle } from "react-icons/io"; import { FaCheck, FaXmark } from "react-icons/fa6";
import { IoCheckmarkCircle, IoCloseCircle } from "react-icons/io5";
import { VscArrowRight, VscLinkExternal } from "react-icons/vsc"; import { VscArrowRight, VscLinkExternal } from "react-icons/vsc";
import Layout from "src/layout/Layout"; import Layout from "src/layout/Layout";
import { gaEvent } from "src/lib/utils/gaEvent"; import { gaEvent } from "src/lib/utils/gaEvent";
@ -35,30 +34,13 @@ export const purchaseLinks = {
"https://jsoncrack.lemonsqueezy.com/checkout/buy/577928ea-fb09-4076-9307-3e5931b35ad0?desc=0&enabled=82417", "https://jsoncrack.lemonsqueezy.com/checkout/buy/577928ea-fb09-4076-9307-3e5931b35ad0?desc=0&enabled=82417",
}; };
const StyledPaper = styled(Paper)<{ $highlight?: boolean } & any>` const StyledPaper = styled(Paper)`
padding: 1.5em; padding: 1.5em;
width: 350px; width: 350px;
border-radius: 4px; border-radius: 4px;
border: 2px solid #e9e9e9; border: 2px solid #e9e9e9;
${({ $highlight }) => $highlight && "border: 3px solid #28c417;"}
background: white; background: white;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
${({ $highlight }) =>
$highlight &&
`
&::before {
content: "Recommended";
background: #28c417;
position: absolute;
transform: translate(-27px, -61px);
font-weight: 500;
color: white;
padding: 6px 8px;
border-top-right-radius: 6px;
border-top-left-radius: 6px;
}
`}
`; `;
export const PricingCards = () => { export const PricingCards = () => {
@ -83,8 +65,8 @@ export const PricingCards = () => {
label: ( label: (
<Flex align="center" gap="xs"> <Flex align="center" gap="xs">
Annual{" "} Annual{" "}
<Badge radius="sm" variant="light" color="green"> <Badge radius="sm" variant="light" color="orange">
{PRICING.getAnnualSave()}% OFF Save {PRICING.getAnnualSave()}%
</Badge> </Badge>
</Flex> </Flex>
), ),
@ -109,125 +91,7 @@ export const PricingCards = () => {
}} }}
mx="auto" mx="auto"
> >
{/* <StyledPaper> <StyledPaper>
<Flex justify="space-between">
<Stack gap="0">
<Text fw={500} size="xl" c="black">
Partner
</Text>
<ThemeIcon variant="transparent" size={59}>
<PiChats color="black" size={50} />
</ThemeIcon>
<Text fz="xs" c="gray.7">
Contact us for custom pricing
</Text>
</Stack>
</Flex>
<Button
component="a"
color="green"
onClick={() => gaEvent("Pricing", "click partner plan")}
href="mailto:contact@jsoncrack.com"
target="_blank"
size="lg"
radius="md"
fullWidth
my="md"
rightSection={<VscArrowRight />}
>
Contact Us
</Button>
<Text mt="xs" fz="xs" c="dimmed">
Integrate JSON Crack into your applications and websites.
</Text>
<Flex direction="column" justify="space-between">
<List
spacing="md"
size="sm"
mt="xs"
c="black"
center
icon={<IoIosCheckmarkCircle color="green" size="20" />}
>
<List.Item>
<Tooltip
color="blue"
label="Integrate premium graph visualization into your own website/apps using iframe"
maw={350}
multiline
withArrow
>
<Text
c="gray.7"
fw={600}
fz="sm"
style={{ textDecoration: "underline", textDecorationStyle: "dashed" }}
>
JSON Crack Premium Widget
</Text>
</Tooltip>
</List.Item>
<List.Item>
<Text c="gray.7" fw={600} fz="sm">
1 Domain / Plan
</Text>
</List.Item>
<List.Item>
<Tooltip
color="blue"
label="Listen for events like node click, hover, center etc. Display your own UI"
maw={350}
multiline
withArrow
>
<Text
c="gray.7"
fw={600}
fz="sm"
style={{ textDecoration: "underline", textDecorationStyle: "dashed" }}
>
Events API
</Text>
</Tooltip>
</List.Item>
<List.Item>
<Tooltip
color="blue"
label="Customize the look and feel of the editor matching with your own branding"
maw={350}
multiline
withArrow
>
<Text
c="gray.7"
fw={600}
fz="sm"
style={{ textDecoration: "underline", textDecorationStyle: "dashed" }}
>
Custom Theming
</Text>
</Tooltip>
</List.Item>
<List.Item>
<Text c="gray.7" fw={600} fz="sm">
White Labeling
</Text>
</List.Item>
<List.Item>
<Text c="gray.7" fw={600} fz="sm">
Onboarding and engineering support
</Text>
</List.Item>
<List.Item>
<Text c="gray.7" fw={600} fz="sm">
High-priority customer support
</Text>
</List.Item>
</List>
</Flex>
</StyledPaper> */}
<StyledPaper $highlight>
<Flex justify="space-between"> <Flex justify="space-between">
<Stack gap="0"> <Stack gap="0">
<Flex align="center"> <Flex align="center">
@ -236,12 +100,12 @@ export const PricingCards = () => {
</Text> </Text>
{!isMonthly && ( {!isMonthly && (
<Badge <Badge
fw={500} fw={600}
size="lg" size="md"
variant="light" variant="light"
c="#41B619" c="orange"
radius="md" radius="sm"
color="green" color="orange"
ml="sm" ml="sm"
> >
SAVE {PRICING.getAnnualSave()}% SAVE {PRICING.getAnnualSave()}%
@ -264,7 +128,7 @@ export const PricingCards = () => {
</Flex> </Flex>
<Button <Button
component="a" component="a"
color="#2ba80f" color="orange"
onClick={() => gaEvent("Pricing", "click upgrade premium")} onClick={() => gaEvent("Pricing", "click upgrade premium")}
href={isMonthly ? purchaseLinks.monthly : purchaseLinks.annual} href={isMonthly ? purchaseLinks.monthly : purchaseLinks.annual}
target="_blank" target="_blank"
@ -274,19 +138,19 @@ export const PricingCards = () => {
my="md" my="md"
rightSection={<VscArrowRight />} rightSection={<VscArrowRight />}
> >
Get Started Upgrade
</Button> </Button>
<Text mt="xs" fz="xs" c="dimmed"> <Text mt="xs" fz="xs" c="dimmed">
Advanced features, better performance and optimized user interface. Remake version with advanced features, better performance and smooth user interface.
</Text> </Text>
<Flex direction="column" justify="space-between"> <Flex direction="column" justify="space-between">
<List <List
spacing="md" spacing="sm"
size="sm" size="sm"
mt="xs" mt="xs"
c="black" c="black"
center center
icon={<IoCheckmarkCircle color="green" size="20" />} icon={<FaCheck size="18" color="#E8580C" />}
> >
<List.Item> <List.Item>
<Tooltip <Tooltip
@ -306,7 +170,7 @@ export const PricingCards = () => {
textUnderlineOffset: "2px", textUnderlineOffset: "2px",
}} }}
> >
Large data support Larger data support
</Text> </Text>
</Tooltip> </Tooltip>
</List.Item> </List.Item>
@ -328,36 +192,19 @@ export const PricingCards = () => {
textUnderlineOffset: "2px", textUnderlineOffset: "2px",
}} }}
> >
Compact Graphs & High Performance Compact and Fast Visualization
</Text> </Text>
</Tooltip> </Tooltip>
</List.Item> </List.Item>
<List.Item> <List.Item>
<Text c="black" fw={500} fz="sm"> <Text c="black" fw={500} fz="sm">
Compare Data Differences Compare data
</Text> </Text>
</List.Item> </List.Item>
<List.Item> <List.Item>
<Tooltip <Text c="black" fw={500} fz="sm">
color="blue" Edit data on graph
label="Click on a node at graph to update data on editor." </Text>
maw={350}
multiline
withArrow
>
<Text
c="black"
fw={500}
fz="sm"
style={{
textDecoration: "underline",
textDecorationStyle: "dashed",
textUnderlineOffset: "2px",
}}
>
Edit Data on Graph
</Text>
</Tooltip>
</List.Item> </List.Item>
<List.Item> <List.Item>
<Text c="black" fw={500} fz="sm"> <Text c="black" fw={500} fz="sm">
@ -411,16 +258,16 @@ export const PricingCards = () => {
Go to Editor Go to Editor
</Button> </Button>
<Text mt="xs" fz="xs" c="dimmed"> <Text mt="xs" fz="xs" c="dimmed">
Basic version of the editor with limited features. Basic version of the editor with limited features, open-source.
</Text> </Text>
<Flex direction="column" justify="space-between"> <Flex direction="column" justify="space-between">
<List <List
spacing="md" spacing="sm"
size="sm" size="sm"
mt="lg" mt="lg"
c="black" c="black"
center center
icon={<IoIosCheckmarkCircle color="green" size="20" />} icon={<FaCheck size="18" color="#E8580C" />}
> >
<List.Item> <List.Item>
<Tooltip <Tooltip
@ -478,28 +325,28 @@ export const PricingCards = () => {
Store 25 documents Store 25 documents
</Text> </Text>
</List.Item> </List.Item>
<List.Item icon={<IoCloseCircle color="gray" size={20} />}> <List.Item icon={<FaXmark color="gray" size={20} />}>
<Text c="gray.7" fw={500} fz="sm"> <Text c="gray.6" fw={500} fz="sm">
Compact Visualization Edit data on graph
</Text> </Text>
</List.Item> </List.Item>
<List.Item icon={<IoCloseCircle color="gray" size={20} />}> <List.Item icon={<FaXmark color="gray" size={20} />}>
<Text c="gray.7" fw={500} fz="sm"> <Text c="gray.6" fw={500} fz="sm">
Compare Data
</Text>
</List.Item>
<List.Item icon={<IoCloseCircle color="gray" size={20} />}>
<Text c="gray.7" fw={500} fz="sm">
Edit Data on Graph
</Text>
</List.Item>
<List.Item icon={<IoCloseCircle color="gray" size={20} />}>
<Text c="gray.7" fw={500} fz="sm">
AI-powered data filter AI-powered data filter
</Text> </Text>
</List.Item> </List.Item>
<List.Item icon={<IoCloseCircle color="gray" size={20} />}> <List.Item icon={<FaXmark color="gray" size={20} />}>
<Text c="gray.7" fw={500} fz="sm"> <Text c="gray.6" fw={500} fz="sm">
Compact visualization
</Text>
</List.Item>
<List.Item icon={<FaXmark color="gray" size={20} />}>
<Text c="gray.6" fw={500} fz="sm">
Compare data
</Text>
</List.Item>
<List.Item icon={<FaXmark color="gray" size={20} />}>
<Text c="gray.6" fw={500} fz="sm">
Customize graph colors Customize graph colors
</Text> </Text>
</List.Item> </List.Item>