index.tsx 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. import React from "react";
  2. import Head from "next/head";
  3. import Link from "next/link";
  4. import { useRouter } from "next/router";
  5. import { TwitterTweetEmbed } from "react-twitter-embed";
  6. import { FaGithub, FaHeart, FaLinkedin, FaTwitter } from "react-icons/fa";
  7. import {
  8. HiCursorClick,
  9. HiLightningBolt,
  10. HiOutlineDownload,
  11. HiOutlineSearchCircle,
  12. } from "react-icons/hi";
  13. import { Producthunt } from "src/components/Producthunt";
  14. import { CarbonAds } from "src/components/CarbonAds";
  15. import pkg from "../../../package.json";
  16. import * as Styles from "./styles";
  17. import { GoalsModal } from "../Modals/GoalsModal";
  18. const Home: React.FC = () => {
  19. const { push } = useRouter();
  20. const [isModalVisible, setModalVisible] = React.useState(false);
  21. const [isMobile, setIsMobile] = React.useState(false);
  22. React.useEffect(() => {
  23. setIsMobile(window.screen.width <= 768);
  24. }, []);
  25. return (
  26. <Styles.StyledHome>
  27. <Head>
  28. <title>JSON Visio - Directly onto graphs</title>
  29. </Head>
  30. <Styles.StyledNavbar>
  31. <Styles.StyledNavLink href="/editor">Editor</Styles.StyledNavLink>
  32. <Link href="#features" passHref>
  33. <Styles.StyledNavLink>Features</Styles.StyledNavLink>
  34. </Link>
  35. <Link href="#sponsor" passHref>
  36. <Styles.StyledNavLink>Sponsor</Styles.StyledNavLink>
  37. </Link>
  38. <Styles.StyledNavLink
  39. href="https://github.com/AykutSarac/jsonvisio.com"
  40. target="_blank"
  41. rel="external"
  42. >
  43. GitHub
  44. </Styles.StyledNavLink>
  45. </Styles.StyledNavbar>
  46. <Styles.StyledHeroSection id="main">
  47. <Styles.StyledTitle>
  48. <Styles.StyledGradientText>JSON</Styles.StyledGradientText> Visio
  49. </Styles.StyledTitle>
  50. <Styles.StyledSubTitle>
  51. Seamlessly visualize your JSON data{" "}
  52. <Styles.StyledHighlightedText>instantly</Styles.StyledHighlightedText>{" "}
  53. into graphs.
  54. </Styles.StyledSubTitle>
  55. <Styles.StyledMinorTitle>
  56. Paste - Import - Fetch!
  57. </Styles.StyledMinorTitle>
  58. <Styles.StyledButton
  59. onClick={() => window.location.replace("/editor")}
  60. disabled={isMobile}
  61. >
  62. {isMobile ? "Incompatible Device" : "GO TO EDITOR"}
  63. </Styles.StyledButton>
  64. {!isMobile && (
  65. <>
  66. <Styles.StyledSponsorButton onClick={() => setModalVisible(true)}>
  67. Help JSON Visio Accomplish It's Goals
  68. <FaHeart />
  69. </Styles.StyledSponsorButton>
  70. <GoalsModal visible={isModalVisible} setVisible={setModalVisible} />
  71. </>
  72. )}
  73. </Styles.StyledHeroSection>
  74. <Styles.StyledPreviewSection>
  75. <Styles.StyledImage
  76. width="1200"
  77. height="auto"
  78. src="/jsonvisio-screenshot.png"
  79. alt="preview"
  80. />
  81. </Styles.StyledPreviewSection>
  82. <Styles.StyledFeaturesSection id="features">
  83. <Styles.StyledSectionCard>
  84. <Styles.StyledCardIcon>
  85. <HiCursorClick size={50} color="#3BA55D" />
  86. </Styles.StyledCardIcon>
  87. <Styles.StyledCardTitle>EASY-TO-USE</Styles.StyledCardTitle>
  88. <Styles.StyledCardDescription>
  89. Don&apos;t even bother to update your schema to view your JSON into
  90. graphs; directly paste, import or fetch! JSON Visio helps you to
  91. visualize without any additional values and save your time.
  92. </Styles.StyledCardDescription>
  93. </Styles.StyledSectionCard>
  94. <Styles.StyledSectionCard>
  95. <Styles.StyledCardIcon>
  96. <HiOutlineSearchCircle size={50} color="#5865F2" />
  97. </Styles.StyledCardIcon>
  98. <Styles.StyledCardTitle>SEARCH</Styles.StyledCardTitle>
  99. <Styles.StyledCardDescription>
  100. Have a huge file of values, keys or arrays? Worry no more, type in
  101. the keyword you are looking for into search input and it will take
  102. you to each node with matching result highlighting the line to
  103. understand better!
  104. </Styles.StyledCardDescription>
  105. </Styles.StyledSectionCard>
  106. <Styles.StyledSectionCard>
  107. <Styles.StyledCardIcon>
  108. <HiOutlineDownload size={50} color="#DA2877" />
  109. </Styles.StyledCardIcon>
  110. <Styles.StyledCardTitle>DOWNLOAD</Styles.StyledCardTitle>
  111. <Styles.StyledCardDescription>
  112. Download the graph to your local machine and use it wherever you
  113. want, to your blogs, website or make it a poster and paste to the
  114. wall. Who wouldn&apos;t want to see a JSON Visio graph onto their
  115. wall, eh?
  116. </Styles.StyledCardDescription>
  117. </Styles.StyledSectionCard>
  118. <Styles.StyledSectionCard>
  119. <Styles.StyledCardIcon>
  120. <HiLightningBolt size={50} color="#F5E027" />
  121. </Styles.StyledCardIcon>
  122. <Styles.StyledCardTitle>LIVE</Styles.StyledCardTitle>
  123. <Styles.StyledCardDescription>
  124. With Microsoft&apos;s Monaco Editor which is also used by VS Code,
  125. easily edit your JSON and directly view through the graphs. Also
  126. there&apos;s a JSON validator above of it to make sure there is no
  127. type error.
  128. </Styles.StyledCardDescription>
  129. </Styles.StyledSectionCard>
  130. </Styles.StyledFeaturesSection>
  131. <Styles.StyledSection id="github" reverse>
  132. <TwitterTweetEmbed
  133. tweetId="1519363257794015233"
  134. options={{
  135. width: "600",
  136. align: "center",
  137. }}
  138. />
  139. <Styles.StyledSectionArea>
  140. <Styles.StyledSubTitle>Open Source Community</Styles.StyledSubTitle>
  141. <Styles.StyledMinorTitle>
  142. Join the Open Source Community by suggesting new ideas, support by
  143. contributing; implementing new features, fixing bugs and doing
  144. changes minor to major!
  145. </Styles.StyledMinorTitle>
  146. <Styles.StyledButton
  147. onClick={() => push("https://github.com/AykutSarac/jsonvisio.com")}
  148. status="SECONDARY"
  149. >
  150. STAR ON GITHUB
  151. </Styles.StyledButton>
  152. </Styles.StyledSectionArea>
  153. </Styles.StyledSection>
  154. <Styles.StyledSection id="embed">
  155. <Styles.StyledSectionArea>
  156. <Styles.StyledSubTitle>Embed Into Your Website</Styles.StyledSubTitle>
  157. <Styles.StyledMinorTitle>
  158. Easily embed the JSON Visio graph into your website to showcase your
  159. visitors, blog readers or anybody else!
  160. </Styles.StyledMinorTitle>
  161. </Styles.StyledSectionArea>
  162. <div>
  163. <Styles.StyledIframge src="https://jsonvisio.com/widget?json=%5B%5B%22squadName%22%2C%22homeTown%22%2C%22formed%22%2C%22secretBase%22%2C%22active%22%2C%22members%22%2C%22a%7C0%7C1%7C2%7C3%7C4%7C5%22%2C%22Super%20hero%20squad%22%2C%22Metro%20City%22%2C%22n%7CWW%22%2C%22Super%20tower%22%2C%22b%7CT%22%2C%22name%22%2C%22age%22%2C%22secretIdentity%22%2C%22powers%22%2C%22a%7CC%7CD%7CE%7CF%22%2C%22Molecule%20Man%22%2C%22n%7CT%22%2C%22Dan%20Jukes%22%2C%22Radiation%20resistance%22%2C%22Turning%20tiny%22%2C%22Radiation%20blast%22%2C%22a%7CK%7CL%7CM%22%2C%22o%7CG%7CH%7CI%7CJ%7CN%22%2C%22Madame%20Uppercut%22%2C%22n%7Cd%22%2C%22Jane%20Wilson%22%2C%22Million%20tonne%20punch%22%2C%22Damage%20resistance%22%2C%22Superhuman%20reflexes%22%2C%22a%7CS%7CT%7CU%22%2C%22o%7CG%7CP%7CQ%7CR%7CV%22%2C%22Eternal%20Flame%22%2C%22n%7C4C92%22%2C%22Unknown%22%2C%22Immortality%22%2C%22Heat%20Immunity%22%2C%22Inferno%22%2C%22Teleportation%22%2C%22Interdimensional%20travel%22%2C%22a%7Ca%7Cb%7Cc%7Cd%7Ce%22%2C%22o%7CG%7CX%7CY%7CZ%7Cf%22%2C%22a%7CO%7CW%7Cg%22%2C%22o%7C6%7C7%7C8%7C9%7CA%7CB%7Ch%22%5D%2C%22i%22%5D"></Styles.StyledIframge>
  164. </div>
  165. </Styles.StyledSection>
  166. <Styles.StyledPaidSection>
  167. <Styles.StyledProducthunt>
  168. <Styles.StyledSubTitle>
  169. Support JSON Visio at
  170. <br />
  171. <Styles.StyledHighlightedText>
  172. Product Hunt
  173. </Styles.StyledHighlightedText>
  174. </Styles.StyledSubTitle>
  175. <Producthunt />
  176. </Styles.StyledProducthunt>
  177. <Styles.StyledAffiliate>
  178. <Styles.StyledSubTitle>Affiliate</Styles.StyledSubTitle>
  179. <CarbonAds />
  180. </Styles.StyledAffiliate>
  181. </Styles.StyledPaidSection>
  182. <Styles.StyledSponsorSection id="sponsor">
  183. <Styles.StyledSubTitle>Sponsors</Styles.StyledSubTitle>
  184. <Styles.StyledMinorTitle>
  185. Your supports make JSON Visio possible to continue and accessible for
  186. everyone!
  187. </Styles.StyledMinorTitle>
  188. <Styles.StyledButton
  189. status="SUCCESS"
  190. onClick={() => push("https://github.com/sponsors/AykutSarac")}
  191. >
  192. Become A Sponsor!
  193. </Styles.StyledButton>
  194. </Styles.StyledSponsorSection>
  195. <Styles.StyledFooter>
  196. <Styles.StyledFooterText>
  197. © 2022 JSON Visio - {pkg.version}
  198. </Styles.StyledFooterText>
  199. <Styles.StyledIconLinks>
  200. <Styles.StyledNavLink
  201. href="https://github.com/AykutSarac/jsonvisio.com"
  202. target="_blank"
  203. aria-label="github"
  204. >
  205. <FaGithub size={26} />
  206. </Styles.StyledNavLink>
  207. <Styles.StyledNavLink
  208. href="https://www.linkedin.com/in/aykutsarac/"
  209. target="_blank"
  210. aria-label="linkedin"
  211. >
  212. <FaLinkedin size={26} />
  213. </Styles.StyledNavLink>
  214. <Styles.StyledNavLink
  215. href="https://twitter.com/aykutsarach"
  216. target="_blank"
  217. aria-label="twitter"
  218. >
  219. <FaTwitter size={26} />
  220. </Styles.StyledNavLink>
  221. </Styles.StyledIconLinks>
  222. </Styles.StyledFooter>
  223. </Styles.StyledHome>
  224. );
  225. };
  226. export default Home;