chore: update premium preview images

This commit is contained in:
AykutSarac 2024-07-19 18:56:02 +03:00
parent 56f73d270a
commit 2b0b5ed884
No known key found for this signature in database
18 changed files with 145 additions and 10 deletions

View File

@ -44,6 +44,7 @@
"react-icons": "^5.2.1", "react-icons": "^5.2.1",
"react-json-tree": "^0.18.0", "react-json-tree": "^0.18.0",
"react-linkify-it": "^1.0.8", "react-linkify-it": "^1.0.8",
"react-text-transition": "^3.1.0",
"react-zoomable-ui": "^0.11.0", "react-zoomable-ui": "^0.11.0",
"reaflow": "5.2.8", "reaflow": "5.2.8",
"styled-components": "^6.1.11", "styled-components": "^6.1.11",

68
pnpm-lock.yaml generated
View File

@ -101,6 +101,9 @@ importers:
react-linkify-it: react-linkify-it:
specifier: ^1.0.8 specifier: ^1.0.8
version: 1.0.8(react@18.3.1) version: 1.0.8(react@18.3.1)
react-text-transition:
specifier: ^3.1.0
version: 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-zoomable-ui: react-zoomable-ui:
specifier: ^0.11.0 specifier: ^0.11.0
version: 0.11.0(react@18.3.1) version: 0.11.0(react@18.3.1)
@ -483,6 +486,30 @@ packages:
'@polka/url@1.0.0-next.25': '@polka/url@1.0.0-next.25':
resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
'@react-spring/animated@9.7.3':
resolution: {integrity: sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
'@react-spring/core@9.7.3':
resolution: {integrity: sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
'@react-spring/shared@9.7.3':
resolution: {integrity: sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
'@react-spring/types@9.7.3':
resolution: {integrity: sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==}
'@react-spring/web@9.7.3':
resolution: {integrity: sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
'@rollup/plugin-commonjs@24.0.0': '@rollup/plugin-commonjs@24.0.0':
resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==} resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
@ -2210,6 +2237,11 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
react-text-transition@3.1.0:
resolution: {integrity: sha512-NtXEVAXvSh78+8JAnrVjpbftzD4kPowacv4GB2Nyq9C/8ko6fSm6M/XvKWQLCaZi68i9F28b++Sp8uVThlzLyg==}
peerDependencies:
react: '>=18.0.0'
react-textarea-autosize@8.5.3: react-textarea-autosize@8.5.3:
resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -3046,6 +3078,35 @@ snapshots:
'@polka/url@1.0.0-next.25': {} '@polka/url@1.0.0-next.25': {}
'@react-spring/animated@9.7.3(react@18.3.1)':
dependencies:
'@react-spring/shared': 9.7.3(react@18.3.1)
'@react-spring/types': 9.7.3
react: 18.3.1
'@react-spring/core@9.7.3(react@18.3.1)':
dependencies:
'@react-spring/animated': 9.7.3(react@18.3.1)
'@react-spring/shared': 9.7.3(react@18.3.1)
'@react-spring/types': 9.7.3
react: 18.3.1
'@react-spring/shared@9.7.3(react@18.3.1)':
dependencies:
'@react-spring/types': 9.7.3
react: 18.3.1
'@react-spring/types@9.7.3': {}
'@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@react-spring/animated': 9.7.3(react@18.3.1)
'@react-spring/core': 9.7.3(react@18.3.1)
'@react-spring/shared': 9.7.3(react@18.3.1)
'@react-spring/types': 9.7.3
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)': '@rollup/plugin-commonjs@24.0.0(rollup@2.78.0)':
dependencies: dependencies:
'@rollup/pluginutils': 5.1.0(rollup@2.78.0) '@rollup/pluginutils': 5.1.0(rollup@2.78.0)
@ -4991,6 +5052,13 @@ snapshots:
optionalDependencies: optionalDependencies:
'@types/react': 18.2.51 '@types/react': 18.2.51
react-text-transition@3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@react-spring/web': 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
transitivePeerDependencies:
- react-dom
react-textarea-autosize@8.5.3(@types/react@18.2.51)(react@18.3.1): react-textarea-autosize@8.5.3(@types/react@18.2.51)(react@18.3.1):
dependencies: dependencies:
'@babel/runtime': 7.24.5 '@babel/runtime': 7.24.5

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

BIN
public/assets/preview/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 KiB

BIN
public/assets/preview/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 KiB

BIN
public/assets/preview/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

BIN
public/assets/preview/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

BIN
public/assets/preview/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

BIN
public/assets/preview/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 KiB

BIN
public/assets/preview/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 KiB

BIN
public/assets/preview/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

View File

@ -4,26 +4,34 @@ export const metaDescription =
export const images = Object.freeze([ export const images = Object.freeze([
{ {
id: 1, id: 1,
alt: "Preview of JSON Crack Premium Editor highligting the compact visualization style of the graphs.", alt: "⚡️ Clean and Intuitive Interface designed for productivity and ease of use.",
}, },
{ {
id: 2, 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.", alt: "🔎 Enhanced Search Experience, with the ability to focus on node as you navigate through the data.",
}, },
{ {
id: 3, id: 3,
alt: "Preview JSON Crack Premium Editor highlighting the data search feature, showing the search results in the data.", alt: "✍️ Understand your data in less time, modify the data directly on the graph.",
}, },
{ {
id: 4, 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.", alt: "📋 Download graphs as images, with options to customize the image quality and background color.",
}, },
{ {
id: 5, id: 5,
alt: "Preview JSON Crack Premium Editor highlighting type generation feature. TypeScript, Go, JSON Schema, and more are shown.", alt: "🎨 Customize the graph appearance, with options to change the node and edge colors, and the graph layout. Match the graph to your brand colors.",
}, },
{ {
id: 6, id: 6,
alt: "Preview JSON Crack Premium Editor highlighting the image download feature, showing the download options for the data.", alt: "🖍️ Compare data on the graph, with the ability to highlight the differences between two datasets.",
},
{
id: 7,
alt: "🤖 Filter and transform your data quickly and securely using the AI powered assistant.",
},
{
id: 8,
alt: "🌓 Who doesn't love dark mode? A sleek and modern design that is easy on the eyes.",
}, },
]); ]);

View File

@ -1,12 +1,24 @@
import React from "react"; import React from "react";
import dynamic from "next/dynamic";
import { Title, Overlay, Paper, rem, Grid, Flex, Image, Text, Container } from "@mantine/core"; import { Title, Overlay, Paper, rem, Grid, Flex, Image, Text, Container } from "@mantine/core";
import { Carousel } from "@mantine/carousel"; import { Carousel } from "@mantine/carousel";
import styled from "styled-components"; import styled from "styled-components";
import { ReactCompareSlider, ReactCompareSliderHandle } from "react-compare-slider"; import { ReactCompareSlider, ReactCompareSliderHandle } from "react-compare-slider";
import { FaBolt, FaExpand, FaLifeRing, FaParachuteBox, FaShapes } from "react-icons/fa"; import {
FaArrowLeft,
FaArrowRight,
FaBolt,
FaExpand,
FaLifeRing,
FaParachuteBox,
FaShapes,
} from "react-icons/fa";
import { FaShieldHalved } from "react-icons/fa6"; import { FaShieldHalved } from "react-icons/fa6";
import { presets } from "react-text-transition";
import { images } from "src/constants/landing"; import { images } from "src/constants/landing";
const TextTransition = dynamic(() => import("react-text-transition"), { ssr: false });
const StyledImageWrapper = styled.div` const StyledImageWrapper = styled.div`
max-width: 85%; max-width: 85%;
margin: 0 auto; margin: 0 auto;
@ -19,6 +31,7 @@ const StyledImageWrapper = styled.div`
`; `;
export const PremiumVsFree = () => { export const PremiumVsFree = () => {
const [currentSlide, setCurrentSlide] = React.useState(0);
const [labelOpacity, setLabelOpacity] = React.useState(1); const [labelOpacity, setLabelOpacity] = React.useState(1);
const labelStyle = { const labelStyle = {
fontSize: "1rem", fontSize: "1rem",
@ -225,12 +238,49 @@ export const PremiumVsFree = () => {
</Grid.Col> </Grid.Col>
</Grid> </Grid>
<Paper w="95%" mt={100} mx="auto" radius="md" style={{ overflow: "hidden" }} visibleFrom="xs"> <Paper
<Carousel bg="white" slideGap="md" slideSize="50%" height="100%" loop> w="95%"
mt={100}
bg="transparent"
mx="auto"
radius="md"
style={{ overflow: "hidden" }}
visibleFrom="xs"
>
<Carousel
onSlideChange={setCurrentSlide}
nextControlIcon={<FaArrowRight />}
previousControlIcon={<FaArrowLeft />}
nextControlProps={{
style: {
width: 40,
height: 40,
background: "#5199FF",
border: "1px solid #006aff",
color: "white",
opacity: 1,
},
}}
previousControlProps={{
style: {
width: 40,
height: 40,
background: "#5199FF",
border: "1px solid #006aff",
color: "white",
opacity: 1,
},
}}
bg="white"
slideGap="md"
slideSize="55%"
height="100%"
loop
>
{images.map(image => ( {images.map(image => (
<Carousel.Slide key={image.id}> <Carousel.Slide key={image.id}>
<Image <Image
src={`./assets/preview/${image.id}.jpeg`} src={`./assets/preview/${image.id}.png`}
alt={image.alt} alt={image.alt}
loading="lazy" loading="lazy"
radius="md" radius="md"
@ -241,6 +291,14 @@ export const PremiumVsFree = () => {
</Carousel.Slide> </Carousel.Slide>
))} ))}
</Carousel> </Carousel>
<Text c="black" mt="xs" fz="md" fw={500} bg="gray.1" size="lg" px="md" py="sm">
<TextTransition
springConfig={presets.wobbly}
style={{ justifyContent: "center", textAlign: "center" }}
>
{images[currentSlide].alt}
</TextTransition>
</Text>
</Paper> </Paper>
</Container> </Container>
); );