feat: improve landing

This commit is contained in:
AykutSarac 2024-05-10 22:30:07 +03:00
parent 0ffbb58621
commit a51fe5f826
No known key found for this signature in database
4 changed files with 102 additions and 84 deletions

33
src/constants/landing.ts Normal file
View File

@ -0,0 +1,33 @@
export const metaDescription =
"JSON Crack Editor is a tool for visualizing into graphs, analyzing, editing, formatting, querying, transforming and validating JSON, CSV, YAML, XML, and more.";
export const images = Object.freeze([
{
id: 1,
alt: "Preview of JSON Crack Premium Editor highligting the compact visualization style of the graphs.",
},
{
id: 2,
alt: "Preview JSON Crack Premium Editor highlighting the data compare feature feature, showing the differences with red background color and using symbols to indicate the changes.",
},
{
id: 3,
alt: "Preview JSON Crack Premium Editor highlighting the data search feature, showing the search results in the data.",
},
{
id: 4,
alt: "Preview JSON Crack Premium Editor highlighting the data edit feature, showing the data in a table format with the ability to edit the data directly.",
},
{
id: 5,
alt: "Preview JSON Crack Premium Editor highlighting the data view options, showing the data in a tree view and graph view.",
},
{
id: 6,
alt: "Preview JSON Crack Premium Editor highlighting type generation feature. TypeScript, Go, JSON Schema, and more are shown.",
},
{
id: 7,
alt: "Preview JSON Crack Premium Editor highlighting the image download feature, showing the download options for the data.",
},
]);

View File

@ -1,6 +1,17 @@
import React from "react";
import Link from "next/link";
import { Anchor, Container, Divider, Flex, Stack, Text, ThemeIcon } from "@mantine/core";
import {
Anchor,
Button,
Center,
Container,
Divider,
Flex,
Stack,
Text,
ThemeIcon,
Title,
} from "@mantine/core";
import dayjs from "dayjs";
import { FaDiscord, FaGithub, FaLinkedin } from "react-icons/fa";
import { FaXTwitter } from "react-icons/fa6";
@ -8,7 +19,16 @@ import { JSONCrackLogo } from "../JsonCrackLogo";
export const Footer = () => {
return (
<Container mt={100}>
<Container mt={150}>
<Stack align="center">
<Title c="black" order={3}>Get Started with JSON Crack</Title>
<Text fz="lg" c="dimmed">
Designed for everyone, save time understanding your data.
</Text>
<Button color="dark" component={Link} prefetch={false} href="/pricing" radius="lg" size="xl">
Get Started
</Button>
</Stack>
<Divider my={60} />
<Flex justify="space-between">
<Stack gap={4} visibleFrom="sm">

View File

@ -6,7 +6,6 @@ import {
Accordion,
Badge,
Button,
Center,
Container,
Flex,
Grid,
@ -23,16 +22,11 @@ import { Carousel } from "@mantine/carousel";
import "@mantine/carousel/styles.css";
import styled from "styled-components";
import { BiChevronDown } from "react-icons/bi";
import {
MdChevronRight,
MdCompare,
MdExtension,
MdOutlineArrowRightAlt,
MdRebaseEdit,
MdSearch,
} from "react-icons/md";
import { MdChevronRight, MdCompare, MdExtension, MdRebaseEdit, MdSearch } from "react-icons/md";
import useBackgroundCursorPosition from "use-bg-cursor-pos";
import { images, metaDescription } from "src/constants/landing";
import Layout from "src/layout/Layout";
import { gaEvent } from "src/lib/utils/gaEvent";
const PricingCards = dynamic(() => import("./pricing").then(mod => mod.PricingCards));
@ -182,41 +176,7 @@ const StyledCarouselWrapper = styled.section`
}
`;
const metaDescription =
"JSON Crack Editor is a tool for visualizing into graphs, analyzing, editing, formatting, querying, transforming and validating JSON, CSV, YAML, XML, and more.";
const images = [
{
id: 1,
alt: "Preview of JSON Crack Premium Editor highligting the compact visualization style of the graphs.",
},
{
id: 2,
alt: "Preview JSON Crack Premium Editor highlighting the data compare feature feature, showing the differences with red background color and using symbols to indicate the changes.",
},
{
id: 3,
alt: "Preview JSON Crack Premium Editor highlighting the data search feature, showing the search results in the data.",
},
{
id: 4,
alt: "Preview JSON Crack Premium Editor highlighting the data edit feature, showing the data in a table format with the ability to edit the data directly.",
},
{
id: 5,
alt: "Preview JSON Crack Premium Editor highlighting the data view options, showing the data in a tree view and graph view.",
},
{
id: 6,
alt: "Preview JSON Crack Premium Editor highlighting type generation feature. TypeScript, Go, JSON Schema, and more are shown.",
},
{
id: 7,
alt: "Preview JSON Crack Premium Editor highlighting the image download feature, showing the download options for the data.",
},
];
export const FAQ = [
export const FAQ = Object.freeze([
{
title: "What is JSON Crack and what does it do?",
content:
@ -249,7 +209,7 @@ export const FAQ = [
content:
"No, JSON Crack does not store your data anywhere unless you upload it manually. When you paste your data into the editor, it's processed on your device only to create the visualization. Your data remains completely private.",
},
];
]);
export const HomePage = () => {
const [card1, bg1] = useBackgroundCursorPosition("#f2f2f2", "#ffffff", "200px");
@ -296,30 +256,47 @@ export const HomePage = () => {
TOML
</Badge>
</Flex>
<Button
component={Link}
prefetch={false}
href="/editor"
size="xl"
fw="bold"
color="orange.5"
rightSection={<MdChevronRight size={30} />}
visibleFrom="sm"
radius="xl"
mt="lg"
>
Go to Editor
</Button>
<Flex gap="xs">
<Button
onClick={() => gaEvent("Hero Section", "click upgrade premium")}
component={Link}
prefetch={false}
href="/editor"
size="xl"
fw="bold"
color="orange.6"
rightSection={<MdChevronRight size={30} />}
visibleFrom="sm"
radius="lg"
mt="lg"
style={{ boxShadow: "0px 4px 10px rgba(0, 0, 0, 0.2)" }}
>
Go to Editor
</Button>
<Button
variant="light"
component="a"
href="/#pricing"
size="xl"
fw="bold"
color="orange.6"
visibleFrom="sm"
radius="lg"
mt="lg"
>
Explore Premium
</Button>
</Flex>
<Button
component={Link}
prefetch={false}
href="/editor"
fw="bold"
size="md"
color="orange.5"
color="orange.6"
rightSection={<MdChevronRight size={24} />}
hiddenFrom="sm"
radius="xl"
radius="lg"
mt="lg"
>
Go to Editor
@ -636,7 +613,7 @@ export const HomePage = () => {
<PricingCards />
<Container id="faq" component="section">
<Title c="dark" order={2} fz={36} fw={600} mt={100} style={{ textAlign: "center" }}>
<Title c="black" order={2} fz={36} fw={600} mt={100} style={{ textAlign: "center" }}>
Frequently Asked Questions
</Title>
<Accordion bg="white" variant="contained" mt={60}>
@ -652,20 +629,6 @@ export const HomePage = () => {
))}
</Accordion>
</Container>
<Center mt={120}>
<Button
component="a"
variant="outline"
href="https://app.jsoncrack.com/sign-up"
size="lg"
radius="md"
color="dark"
rightSection={<MdOutlineArrowRightAlt />}
>
Start using now
</Button>
</Center>
</Layout>
);
};

View File

@ -31,16 +31,18 @@ const StyledPaperFree = styled(Paper)`
border-radius: 1em;
border: 3px solid #e9e9e9;
background: white;
box-shadow:
12.5px 12.5px 10px rgba(0, 0, 0, 0.005),
100px 100px 80px rgba(0, 0, 0, 0.01);
`;
const StyledPaper = styled(Paper)`
padding: 1.5em;
width: 400px;
background:
linear-gradient(white, white) padding-box,
linear-gradient(#ec85f5, #fb7eb0 28%, #fc9f96 53%, #ffbc88 78%, #ffc86a) border-box;
border-radius: 1em;
border: 3px solid transparent;
border: 3px solid #424242;
background: white;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
`;
export const PricingCards = () => {
@ -167,12 +169,12 @@ export const PricingCards = () => {
target="_blank"
size="lg"
radius="md"
color="green"
color="dark"
fullWidth
my="md"
rightSection={<VscArrowRight />}
>
Start 1 Day Free Trial
Start Free Trial
</Button>
<Flex direction="column" justify="space-between" h={250}>
<List spacing="xs" size="sm" mt="lg" c="black" center icon="✦">