paginate folder structure

This commit is contained in:
AykutSarac 2022-06-25 19:37:24 +03:00
parent 2cf1ecf7af
commit bd596c995c
6 changed files with 525 additions and 510 deletions

View File

@ -7,7 +7,7 @@ const nextConfig = {
reactStrictMode: true,
exportPathMap: () => ({
"/": { page: "/" },
"/editor": { page: "/editor" },
"/editor": { page: "/Editor" },
}),
compiler: {
styledComponents: true,

View File

@ -0,0 +1,219 @@
import React from "react";
import Head from "next/head";
import Link from "next/link";
import { useRouter } from "next/router";
import { TwitterTweetEmbed } from "react-twitter-embed";
import { FaGithub, FaLinkedin, FaTwitter } from "react-icons/fa";
import {
HiCursorClick,
HiLightningBolt,
HiOutlineDownload,
HiOutlineSearchCircle,
} from "react-icons/hi";
import { Producthunt } from "src/components/Producthunt";
import { CarbonAds } from "src/components/CarbonAds";
import pkg from "../../../package.json";
import * as Styles from "./styles";
const Home: React.FC = () => {
const { push } = useRouter();
const [isMobile, setIsMobile] = React.useState(false);
React.useLayoutEffect(() => {
setIsMobile(window.screen.width <= 768);
}, []);
return (
<Styles.StyledHome>
<Head>
<title>JSON Visio - Directly onto graphs</title>
</Head>
<Styles.StyledNavbar>
<Styles.StyledNavLink href="/editor">Editor</Styles.StyledNavLink>
<Link href="#features" passHref>
<Styles.StyledNavLink>Features</Styles.StyledNavLink>
</Link>
<Link href="#sponsor" passHref>
<Styles.StyledNavLink>Sponsor</Styles.StyledNavLink>
</Link>
<Styles.StyledNavLink
href="https://github.com/AykutSarac/jsonvisio.com"
target="_blank"
rel="external"
>
GitHub
</Styles.StyledNavLink>
</Styles.StyledNavbar>
<Styles.StyledHeroSection id="main">
<Styles.StyledTitle>
<Styles.StyledGradientText>JSON</Styles.StyledGradientText> Visio
</Styles.StyledTitle>
<Styles.StyledSubTitle>
Seamlessly visualize your JSON data
<Styles.StyledHighlightedText>instantly</Styles.StyledHighlightedText>
into graphs.
</Styles.StyledSubTitle>
<Styles.StyledMinorTitle>
Paste - Import - Fetch!
</Styles.StyledMinorTitle>
<Styles.StyledButton
onClick={() => window.location.replace("/editor")}
disabled={isMobile}
>
{isMobile ? "Incompatible Device" : "GO TO EDITOR"}
</Styles.StyledButton>
</Styles.StyledHeroSection>
<Styles.StyledPreviewSection>
<Styles.StyledImage
width="1200"
height="auto"
src="/jsonvisio-screenshot.png"
alt="preview"
/>
</Styles.StyledPreviewSection>
<Styles.StyledFeaturesSection id="features">
<Styles.StyledSectionCard>
<Styles.StyledCardIcon>
<HiCursorClick size={50} color="#3BA55D" />
</Styles.StyledCardIcon>
<Styles.StyledCardTitle>EASY-TO-USE</Styles.StyledCardTitle>
<Styles.StyledCardDescription>
Don&apos;t even bother to update your schema to view your JSON into
graphs; directly paste, import or fetch! JSON Visio helps you to
visualize without any additional values and save your time.
</Styles.StyledCardDescription>
</Styles.StyledSectionCard>
<Styles.StyledSectionCard>
<Styles.StyledCardIcon>
<HiOutlineSearchCircle size={50} color="#5865F2" />
</Styles.StyledCardIcon>
<Styles.StyledCardTitle>SEARCH</Styles.StyledCardTitle>
<Styles.StyledCardDescription>
Have a huge file of values, keys or arrays? Worry no more, type in
the keyword you are looking for into search input and it will take
you to each node with matching result highlighting the line to
understand better!
</Styles.StyledCardDescription>
</Styles.StyledSectionCard>
<Styles.StyledSectionCard>
<Styles.StyledCardIcon>
<HiOutlineDownload size={50} color="#DA2877" />
</Styles.StyledCardIcon>
<Styles.StyledCardTitle>DOWNLOAD</Styles.StyledCardTitle>
<Styles.StyledCardDescription>
Download the graph to your local machine and use it wherever you
want, to your blogs, website or make it a poster and paste to the
wall. Who wouldn&apos;t want to see a JSON Visio graph onto their
wall, eh?
</Styles.StyledCardDescription>
</Styles.StyledSectionCard>
<Styles.StyledSectionCard>
<Styles.StyledCardIcon>
<HiLightningBolt size={50} color="#F5E027" />
</Styles.StyledCardIcon>
<Styles.StyledCardTitle>LIVE</Styles.StyledCardTitle>
<Styles.StyledCardDescription>
With Microsoft&apos;s Monaco Editor which is also used by VS Code,
easily edit your JSON and directly view through the graphs. Also
there&apos;s a JSON validator above of it to make sure there is no
type error.
</Styles.StyledCardDescription>
</Styles.StyledSectionCard>
</Styles.StyledFeaturesSection>
<Styles.StyledGitHubSection id="github">
<TwitterTweetEmbed
tweetId="1519363257794015233"
options={{
width: "600",
align: "center",
}}
/>
<Styles.StyledSectionArea>
<Styles.StyledSubTitle>Open Source Community</Styles.StyledSubTitle>
<Styles.StyledMinorTitle>
Join the Open Source Community by suggesting new ideas, support by
contributing; implementing new features, fixing bugs and doing
changes minor to major!
</Styles.StyledMinorTitle>
<Styles.StyledButton
onClick={() => push("https://github.com/AykutSarac/jsonvisio.com")}
status="SECONDARY"
>
STAR ON GITHUB
</Styles.StyledButton>
</Styles.StyledSectionArea>
</Styles.StyledGitHubSection>
<Styles.StyledPaidSection>
<Styles.StyledProducthunt>
<Styles.StyledSubTitle>
Support JSON Visio at
<br />
<Styles.StyledHighlightedText>
Product Hunt
</Styles.StyledHighlightedText>
</Styles.StyledSubTitle>
<Producthunt />
</Styles.StyledProducthunt>
<Styles.StyledAffiliate>
<Styles.StyledSubTitle>Affiliate</Styles.StyledSubTitle>
<CarbonAds />
</Styles.StyledAffiliate>
</Styles.StyledPaidSection>
<Styles.StyledSponsorSection id="sponsor">
<Styles.StyledSubTitle>Sponsors</Styles.StyledSubTitle>
<Styles.StyledMinorTitle>
Your supports make JSON Visio possible to continue and accessible for
everyone!
</Styles.StyledMinorTitle>
<Styles.StyledButton
status="SUCCESS"
onClick={() => push("https://www.patreon.com/aykutsarac")}
>
Become A Sponsor!
</Styles.StyledButton>
</Styles.StyledSponsorSection>
<Styles.StyledFooter>
<Styles.StyledFooterText>
© 2022 JSON Visio - {pkg.version}
</Styles.StyledFooterText>
<Styles.StyledIconLinks>
<Styles.StyledNavLink
href="https://github.com/AykutSarac/jsonvisio.com"
target="_blank"
aria-label="github"
>
<FaGithub size={26} />
</Styles.StyledNavLink>
<Styles.StyledNavLink
href="https://www.linkedin.com/in/aykutsarac/"
target="_blank"
aria-label="linkedin"
>
<FaLinkedin size={26} />
</Styles.StyledNavLink>
<Styles.StyledNavLink
href="https://twitter.com/aykutsarach"
target="_blank"
aria-label="twitter"
>
<FaTwitter size={26} />
</Styles.StyledNavLink>
</Styles.StyledIconLinks>
</Styles.StyledFooter>
</Styles.StyledHome>
);
};
export default Home;

View File

@ -0,0 +1,299 @@
import { Button } from "src/components/Button";
import styled from "styled-components";
export const StyledHome = styled.div`
display: flex;
flex-direction: column;
gap: 8em;
font-family: "Roboto", sans-serif;
* {
box-sizing: border-box;
}
@media only screen and (max-width: 768px) {
gap: 3em;
}
`;
export const StyledGradientText = styled.span`
background: #ffb76b;
background: linear-gradient(
to right,
#ffb76b 0%,
#ffa73d 30%,
#ff7c00 60%,
#ff7f04 100%
);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
`;
export const StyledNavbar = styled.nav`
display: flex;
justify-content: center;
align-items: center;
width: 100%;
padding: 16px 16px;
gap: 20px;
@media only screen and (max-width: 768px) {
a:first-of-type {
display: none;
}
}
`;
export const StyledHeroSection = styled.section`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 1.5em;
min-height: 45vh;
padding: 0 3%;
`;
export const StyledNavLink = styled.a`
display: flex;
justify-content: center;
align-items: center;
font-size: 1rem;
cursor: pointer;
transition: color 0.2s;
&:hover {
font-weight: 500;
color: ${({ theme }) => theme.ORANGE};
}
`;
export const StyledTitle = styled.h1`
font-size: 5rem;
font-weight: 900;
margin: 0;
@media only screen and (max-width: 768px) {
font-size: 3rem;
}
`;
export const StyledSubTitle = styled.h2`
color: #dedede;
text-align: center;
font-size: 2.5rem;
max-width: 40rem;
margin: 0;
@media only screen and (max-width: 768px) {
font-size: 1.75rem;
}
`;
export const StyledMinorTitle = styled.p`
color: #b4b4b4;
text-align: center;
font-size: 1.25rem;
margin: 0;
letter-spacing: 1.2px;
@media only screen and (max-width: 992px) {
font-size: 1rem;
}
`;
export const StyledButton = styled(Button)`
background: ${({ status }) => !status && "#a13cc2"};
padding: 12px 24px;
div {
font-family: "Roboto", sans-serif;
font-weight: 700;
font-size: 16px;
}
`;
export const StyledFeaturesSection = styled.section`
display: flex;
max-width: 85%;
margin: 0 auto;
gap: 2rem;
padding: 60px 3%;
@media only screen and (max-width: 768px) {
flex-direction: column;
max-width: 80%;
}
`;
export const StyledSectionCard = styled.div`
text-align: center;
flex: 1;
`;
export const StyledCardTitle = styled.div`
font-weight: 700;
font-size: 1.5rem;
padding: 1.5rem 0 0.5rem;
letter-spacing: 1px;
`;
export const StyledCardIcon = styled.div``;
export const StyledCardDescription = styled.p`
color: #e0e0e0;
text-align: left;
line-height: 1.5rem;
font-size: 0.875rem;
`;
export const StyledGitHubSection = styled.section`
display: flex;
flex-direction: row;
justify-content: space-between;
max-width: 85%;
margin: 0 auto;
gap: 4rem;
line-height: 1.5;
padding: 60px 3%;
& > div {
width: 100%;
}
@media only screen and (max-width: 768px) {
flex-direction: column-reverse;
max-width: 80%;
}
`;
export const StyledSectionArea = styled.div`
display: flex;
flex-direction: column;
gap: 2rem;
width: 40%;
margin-top: 3rem;
h2,
p {
text-align: left;
letter-spacing: unset;
}
@media only screen and (max-width: 768px) {
width: 100%;
h2,
p {
text-align: center;
}
button {
align-self: center;
}
}
`;
export const StyledSponsorSection = styled.section`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
max-width: 85%;
margin: 0 auto;
gap: 2rem;
line-height: 1.5;
padding: 60px 3%;
@media only screen and (max-width: 768px) {
max-width: 80%;
}
`;
export const StyledPreviewSection = styled.section`
display: flex;
flex-direction: row;
justify-content: space-between;
max-width: 85%;
margin: 0 auto;
padding: 0 3%;
@media only screen and (max-width: 768px) {
display: none;
max-width: 80%;
}
`;
export const StyledImage = styled.img`
max-width: 100%;
filter: drop-shadow(0px 0px 12px rgba(255, 255, 255, 0.6));
`;
export const StyledFooter = styled.footer`
display: flex;
flex-direction: row;
justify-content: space-between;
width: 80%;
margin: 0 auto;
padding: 30px 3%;
border-top: 1px solid #b4b4b4;
opacity: 0.7;
`;
export const StyledFooterText = styled.p`
color: #b4b4b4;
`;
export const StyledIconLinks = styled.div`
display: flex;
gap: 20px;
${StyledNavLink} {
color: unset;
}
`;
export const StyledHighlightedText = styled.span`
text-decoration: underline;
text-decoration-style: dashed;
text-decoration-color: #eab308;
`;
export const StyledProducthunt = styled.div`
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
gap: 3rem;
border-right: 1px solid white;
padding-right: 3rem;
@media only screen and (max-width: 768px) {
border-right: none;
border-bottom: 1px solid white;
padding-bottom: 3rem;
padding-right: 0;
}
`;
export const StyledPaidSection = styled.section`
display: flex;
max-width: 85%;
margin: 0 auto;
gap: 2rem;
padding: 60px 3%;
@media only screen and (max-width: 768px) {
flex-direction: column;
max-width: 80%;
}
`;
export const StyledAffiliate = styled.div`
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
gap: 3rem;
`;

View File

@ -2,16 +2,15 @@ import React from "react";
import type { AppProps } from "next/app";
import { Toaster } from "react-hot-toast";
import { ThemeProvider } from "styled-components";
import * as Sentry from "@sentry/nextjs";
import { init } from "@sentry/nextjs";
import GlobalStyle from "src/constants/globalStyle";
import { darkTheme, lightTheme } from "src/constants/theme";
import { useConfig, withConfig } from "src/hocs/config";
import { GoogleAnalytics } from "src/components/GoogleAnalytics";
import Script from "next/script";
if (process.env.NODE_ENV !== "development") {
Sentry.init({
init({
dsn: "https://d3345591295d4dd1b8c579b62003d939@o1284435.ingest.sentry.io/6495191",
tracesSampleRate: 0.5,
});

View File

@ -1,510 +1,8 @@
import React from "react";
import Head from "next/head";
import Link from "next/link";
import { useRouter } from "next/router";
import { FaGithub, FaLinkedin, FaTwitter } from "react-icons/fa";
import {
HiCursorClick,
HiLightningBolt,
HiOutlineDownload,
HiOutlineSearchCircle,
} from "react-icons/hi";
import { TwitterTweetEmbed } from "react-twitter-embed";
import { Button } from "src/components/Button";
import { Producthunt } from "src/components/Producthunt";
import { CarbonAds } from "src/components/CarbonAds";
import styled from "styled-components";
import pkg from "../../package.json";
import Home from "src/containers/Home";
const StyledHome = styled.div`
display: flex;
flex-direction: column;
gap: 8em;
font-family: "Roboto", sans-serif;
* {
box-sizing: border-box;
}
@media only screen and (max-width: 768px) {
gap: 3em;
}
`;
const StyledGradientText = styled.span`
background: #ffb76b;
background: linear-gradient(
to right,
#ffb76b 0%,
#ffa73d 30%,
#ff7c00 60%,
#ff7f04 100%
);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
`;
const StyledNavbar = styled.nav`
display: flex;
justify-content: center;
align-items: center;
width: 100%;
padding: 16px 16px;
gap: 20px;
@media only screen and (max-width: 768px) {
a:first-of-type {
display: none;
}
}
`;
const StyledHeroSection = styled.section`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 1.5em;
min-height: 45vh;
padding: 0 3%;
`;
const StyledNavLink = styled.a`
display: flex;
justify-content: center;
align-items: center;
font-size: 1rem;
cursor: pointer;
transition: color 0.2s;
&:hover {
font-weight: 500;
color: ${({ theme }) => theme.ORANGE};
}
`;
const StyledTitle = styled.h1`
font-size: 5rem;
font-weight: 900;
margin: 0;
@media only screen and (max-width: 768px) {
font-size: 3rem;
}
`;
const StyledSubTitle = styled.h2`
color: #dedede;
text-align: center;
font-size: 2.5rem;
max-width: 40rem;
margin: 0;
@media only screen and (max-width: 768px) {
font-size: 1.75rem;
}
`;
const StyledMinorTitle = styled.p`
color: #b4b4b4;
text-align: center;
font-size: 1.25rem;
margin: 0;
letter-spacing: 1.2px;
@media only screen and (max-width: 992px) {
font-size: 1rem;
}
`;
const StyledButton = styled(Button)`
background: ${({ status }) => !status && "#a13cc2"};
padding: 12px 24px;
div {
font-family: "Roboto", sans-serif;
font-weight: 700;
font-size: 16px;
}
`;
const StyledFeaturesSection = styled.section`
display: flex;
max-width: 85%;
margin: 0 auto;
gap: 2rem;
padding: 60px 3%;
@media only screen and (max-width: 768px) {
flex-direction: column;
max-width: 80%;
}
`;
const StyledSectionCard = styled.div`
text-align: center;
flex: 1;
`;
const StyledCardTitle = styled.div`
font-weight: 700;
font-size: 1.5rem;
padding: 1.5rem 0 0.5rem;
letter-spacing: 1px;
`;
const StyledCardIcon = styled.div``;
const StyledCardDescription = styled.p`
color: #e0e0e0;
text-align: left;
line-height: 1.5rem;
font-size: 0.875rem;
`;
const StyledGitHubSection = styled.section`
display: flex;
flex-direction: row;
justify-content: space-between;
max-width: 85%;
margin: 0 auto;
gap: 4rem;
line-height: 1.5;
padding: 60px 3%;
& > div {
width: 100%;
}
@media only screen and (max-width: 768px) {
flex-direction: column-reverse;
max-width: 80%;
}
`;
const StyledSectionArea = styled.div`
display: flex;
flex-direction: column;
gap: 2rem;
width: 40%;
margin-top: 3rem;
h2,
p {
text-align: left;
letter-spacing: unset;
}
@media only screen and (max-width: 768px) {
width: 100%;
h2,
p {
text-align: center;
}
button {
align-self: center;
}
}
`;
const StyledSponsorSection = styled.section`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
max-width: 85%;
margin: 0 auto;
gap: 2rem;
line-height: 1.5;
padding: 60px 3%;
@media only screen and (max-width: 768px) {
max-width: 80%;
}
`;
const StyledPreviewSection = styled.section`
display: flex;
flex-direction: row;
justify-content: space-between;
max-width: 85%;
margin: 0 auto;
padding: 0 3%;
@media only screen and (max-width: 768px) {
display: none;
max-width: 80%;
}
`;
const StyledImage = styled.img`
max-width: 100%;
filter: drop-shadow(0px 0px 12px rgba(255, 255, 255, 0.6));
`;
const StyledFooter = styled.footer`
display: flex;
flex-direction: row;
justify-content: space-between;
width: 80%;
margin: 0 auto;
padding: 30px 3%;
border-top: 1px solid #b4b4b4;
opacity: 0.7;
`;
const StyledFooterText = styled.p`
color: #b4b4b4;
`;
const StyledIconLinks = styled.div`
display: flex;
gap: 20px;
${StyledNavLink} {
color: unset;
}
`;
const StyledHighlightedText = styled.span`
text-decoration: underline;
text-decoration-style: dashed;
text-decoration-color: #eab308;
`;
const StyledProducthunt = styled.div`
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
gap: 3rem;
border-right: 1px solid white;
padding-right: 3rem;
@media only screen and (max-width: 768px) {
border-right: none;
border-bottom: 1px solid white;
padding-bottom: 3rem;
padding-right: 0;
}
`;
const StyledPaidSection = styled.section`
display: flex;
max-width: 85%;
margin: 0 auto;
gap: 2rem;
padding: 60px 3%;
@media only screen and (max-width: 768px) {
flex-direction: column;
max-width: 80%;
}
`;
const StyledAffiliate = styled.div`
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
gap: 3rem;
`;
const Home: React.FC = () => {
const { push } = useRouter();
const [isMobile, setIsMobile] = React.useState(false);
React.useEffect(() => {
setIsMobile(window.screen.width <= 768);
}, []);
return (
<StyledHome>
<Head>
<title>JSON Visio - Directly onto graphs</title>
</Head>
<StyledNavbar>
<StyledNavLink href="/editor">Editor</StyledNavLink>
<Link href="#features" passHref>
<StyledNavLink>Features</StyledNavLink>
</Link>
<Link href="#sponsor" passHref>
<StyledNavLink>Sponsor</StyledNavLink>
</Link>
<StyledNavLink
href="https://github.com/AykutSarac/jsonvisio.com"
target="_blank"
rel="external"
>
GitHub
</StyledNavLink>
</StyledNavbar>
<StyledHeroSection id="main">
<StyledTitle>
<StyledGradientText>JSON</StyledGradientText> Visio
</StyledTitle>
<StyledSubTitle>
Seamlessly visualize your JSON data{" "}
<StyledHighlightedText>instantly</StyledHighlightedText> into graphs.
</StyledSubTitle>
<StyledMinorTitle>Paste - Import - Fetch!</StyledMinorTitle>
<StyledButton
onClick={() => window.location.replace("/editor")}
disabled={isMobile}
>
{isMobile ? "Incompatible Device" : "GO TO EDITOR"}
</StyledButton>
</StyledHeroSection>
<StyledPreviewSection>
<StyledImage
width="1200"
height="auto"
src="/jsonvisio-screenshot.png"
alt="preview"
/>
</StyledPreviewSection>
<StyledFeaturesSection id="features">
<StyledSectionCard>
<StyledCardIcon>
<HiCursorClick size={50} color="#3BA55D" />
</StyledCardIcon>
<StyledCardTitle>EASY-TO-USE</StyledCardTitle>
<StyledCardDescription>
Don&apos;t even bother to update your schema to view your JSON into
graphs; directly paste, import or fetch! JSON Visio helps you to
visualize without any additional values and save your time.
</StyledCardDescription>
</StyledSectionCard>
<StyledSectionCard>
<StyledCardIcon>
<HiOutlineSearchCircle size={50} color="#5865F2" />
</StyledCardIcon>
<StyledCardTitle>SEARCH</StyledCardTitle>
<StyledCardDescription>
Have a huge file of values, keys or arrays? Worry no more, type in
the keyword you are looking for into search input and it will take
you to each node with matching result highlighting the line to
understand better!
</StyledCardDescription>
</StyledSectionCard>
<StyledSectionCard>
<StyledCardIcon>
<HiOutlineDownload size={50} color="#DA2877" />
</StyledCardIcon>
<StyledCardTitle>DOWNLOAD</StyledCardTitle>
<StyledCardDescription>
Download the graph to your local machine and use it wherever you
want, to your blogs, website or make it a poster and paste to the
wall. Who wouldn&apos;t want to see a JSON Visio graph onto their
wall, eh?
</StyledCardDescription>
</StyledSectionCard>
<StyledSectionCard>
<StyledCardIcon>
<HiLightningBolt size={50} color="#F5E027" />
</StyledCardIcon>
<StyledCardTitle>LIVE</StyledCardTitle>
<StyledCardDescription>
With Microsoft&apos;s Monaco Editor which is also used by VS Code,
easily edit your JSON and directly view through the graphs. Also
there&apos;s a JSON validator above of it to make sure there is no
type error.
</StyledCardDescription>
</StyledSectionCard>
</StyledFeaturesSection>
<StyledGitHubSection id="github">
<TwitterTweetEmbed
tweetId="1519363257794015233"
options={{
width: "600",
align: "center",
}}
/>
<StyledSectionArea>
<StyledSubTitle>Open Source Community</StyledSubTitle>
<StyledMinorTitle>
Join the Open Source Community by suggesting new ideas, support by
contributing; implementing new features, fixing bugs and doing
changes minor to major!
</StyledMinorTitle>
<StyledButton
onClick={() => push("https://github.com/AykutSarac/jsonvisio.com")}
status="SECONDARY"
>
STAR ON GITHUB
</StyledButton>
</StyledSectionArea>
</StyledGitHubSection>
<StyledPaidSection>
<StyledProducthunt>
<StyledSubTitle>
Support JSON Visio at
<br />
<StyledHighlightedText>Product Hunt</StyledHighlightedText>
</StyledSubTitle>
<Producthunt />
</StyledProducthunt>
<StyledAffiliate>
<StyledSubTitle>Affiliate</StyledSubTitle>
<CarbonAds />
</StyledAffiliate>
</StyledPaidSection>
<StyledSponsorSection id="sponsor">
<StyledSubTitle>Sponsors</StyledSubTitle>
<StyledMinorTitle>
Your supports make JSON Visio possible to continue and accessible for
everyone!
</StyledMinorTitle>
<StyledButton
status="SUCCESS"
onClick={() => push("https://www.patreon.com/aykutsarac")}
>
Become A Sponsor!
</StyledButton>
</StyledSponsorSection>
<StyledFooter>
<StyledFooterText>© 2022 JSON Visio - {pkg.version}</StyledFooterText>
<StyledIconLinks>
<StyledNavLink
href="https://github.com/AykutSarac/jsonvisio.com"
target="_blank"
aria-label="github"
>
<FaGithub size={26} />
</StyledNavLink>
<StyledNavLink
href="https://www.linkedin.com/in/aykutsarac/"
target="_blank"
aria-label="linkedin"
>
<FaLinkedin size={26} />
</StyledNavLink>
<StyledNavLink
href="https://twitter.com/aykutsarach"
target="_blank"
aria-label="twitter"
>
<FaTwitter size={26} />
</StyledNavLink>
</StyledIconLinks>
</StyledFooter>
</StyledHome>
);
const LandingPage: React.FC = () => {
return <Home />;
};
export default Home;
export default LandingPage;