|
import React from "react"; |
|
import { Button, List, ThemeIcon, Title } from "@mantine/core"; |
|
import styled from "styled-components"; |
|
import { BsCheck } from "react-icons/bs"; |
|
import { JSONCrackLogo } from "src/layout/JsonCrackLogo"; |
|
|
|
const StyledPremiumView = styled.div` |
|
position: relative; |
|
display: flex; |
|
flex-direction: column; |
|
align-items: center; |
|
justify-content: center; |
|
width: 100%; |
|
height: 100%; |
|
background: #020015; |
|
|
|
img { |
|
filter: drop-shadow(2px 2px 1px black); |
|
} |
|
|
|
.glowing { |
|
position: relative; |
|
min-width: 700px; |
|
height: 550px; |
|
margin: -150px; |
|
transform-origin: right; |
|
animation: colorChange 5s linear infinite; |
|
} |
|
|
|
.glowing:nth-child(even) { |
|
transform-origin: left; |
|
} |
|
|
|
@keyframes colorChange { |
|
0% { |
|
filter: hue-rotate(0deg); |
|
transform: rotate(0deg); |
|
} |
|
100% { |
|
filter: hue-rotate(360deg); |
|
transform: rotate(360deg); |
|
} |
|
} |
|
|
|
.glowing span { |
|
--i: 1; |
|
position: absolute; |
|
top: calc(80px * var(--i)); |
|
left: calc(80px * var(--i)); |
|
bottom: calc(80px * var(--i)); |
|
right: calc(80px * var(--i)); |
|
} |
|
|
|
.glowing span::before { |
|
content: ""; |
|
position: absolute; |
|
top: 50%; |
|
left: -8px; |
|
width: 15px; |
|
height: 15px; |
|
background: #f00; |
|
border-radius: 50%; |
|
} |
|
|
|
.glowing span:nth-child(3n + 1)::before { |
|
background: rgba(134, 255, 0, 1); |
|
box-shadow: |
|
0 0 20px rgba(134, 255, 0, 1), |
|
0 0 40px rgba(134, 255, 0, 1), |
|
0 0 60px rgba(134, 255, 0, 1), |
|
0 0 80px rgba(134, 255, 0, 1), |
|
0 0 0 8px rgba(134, 255, 0, 0.1); |
|
} |
|
|
|
.glowing span:nth-child(3n + 2)::before { |
|
background: rgba(255, 214, 0, 1); |
|
box-shadow: |
|
0 0 20px rgba(255, 214, 0, 1), |
|
0 0 40px rgba(255, 214, 0, 1), |
|
0 0 60px rgba(255, 214, 0, 1), |
|
0 0 80px rgba(255, 214, 0, 1), |
|
0 0 0 8px rgba(255, 214, 0, 0.1); |
|
} |
|
|
|
.glowing span:nth-child(3n + 3)::before { |
|
background: rgba(0, 226, 255, 1); |
|
box-shadow: |
|
0 0 20px rgba(0, 226, 255, 1), |
|
0 0 40px rgba(0, 226, 255, 1), |
|
0 0 60px rgba(0, 226, 255, 1), |
|
0 0 80px rgba(0, 226, 255, 1), |
|
0 0 0 8px rgba(0, 226, 255, 0.1); |
|
} |
|
|
|
.glowing span:nth-child(3n + 1) { |
|
animation: animate 10s alternate infinite; |
|
} |
|
|
|
.glowing span:nth-child(3n + 2) { |
|
animation: animate-reverse 3s alternate infinite; |
|
} |
|
|
|
.glowing span:nth-child(3n + 3) { |
|
animation: animate 8s alternate infinite; |
|
} |
|
|
|
@keyframes animate { |
|
0% { |
|
transform: rotate(180deg); |
|
} |
|
50% { |
|
transform: rotate(0deg); |
|
} |
|
100% { |
|
transform: rotate(360deg); |
|
} |
|
} |
|
|
|
@keyframes animate-reverse { |
|
0% { |
|
transform: rotate(360deg); |
|
} |
|
|
|
50% { |
|
transform: rotate(180deg); |
|
} |
|
|
|
100% { |
|
transform: rotate(0deg); |
|
} |
|
} |
|
`; |
|
|
|
const StyledInfo = styled.p` |
|
width: 60%; |
|
font-weight: 600; |
|
font-size: 20px; |
|
text-align: center; |
|
color: ${({ theme }) => theme.TEXT_NORMAL}; |
|
`; |
|
|
|
const StyledContent = styled.div` |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
width: 100%; |
|
height: 100%; |
|
display: flex; |
|
flex-direction: column; |
|
align-items: center; |
|
justify-content: center; |
|
z-index: 1; |
|
`; |
|
|
|
export const PremiumView = () => ( |
|
<StyledPremiumView> |
|
<StyledContent> |
|
<Title mb="lg" style={{ pointerEvents: "none" }}> |
|
<JSONCrackLogo fontSize="4rem" /> |
|
</Title> |
|
<StyledInfo> |
|
Upgrade JSON Crack to premium and explore full potantial of your data! |
|
</StyledInfo> |
|
|
|
<List |
|
mt="lg" |
|
spacing="xs" |
|
size="md" |
|
center |
|
icon={ |
|
<ThemeIcon color="teal" size={20} radius="xl"> |
|
<BsCheck size="1rem" /> |
|
</ThemeIcon> |
|
} |
|
> |
|
<List.Item>Edit directly on graph</List.Item> |
|
<List.Item>JSON Schema support</List.Item> |
|
<List.Item>Visualize data at full capability</List.Item> |
|
<List.Item>Save & share up to 200 files</List.Item> |
|
</List> |
|
|
|
<Button |
|
mt="lg" |
|
size="lg" |
|
component="a" |
|
fw="bolder" |
|
variant="gradient" |
|
gradient={{ from: "blue", to: "teal" }} |
|
href="/pricing" |
|
target="_blank" |
|
> |
|
UPGRADE TO PREMIUM |
|
</Button> |
|
</StyledContent> |
|
|
|
<div className="glowing"> |
|
<span></span> |
|
<span></span> |
|
<span></span> |
|
</div> |
|
</StyledPremiumView> |
|
); |
|
|