enzostvs's picture
enzostvs HF Staff
Upload 172 files
9cd6ddb verified
import { useContext, useRef } from "react";
import { useClickAway } from "react-use";
import classNames from "classnames";
import { login } from "utils/auth";
import { Premium } from ".";
import { PremiumContext } from "./premium";
import ModalPremiumIllustration from "assets/images/premium-modal/modal-illustration.webp";
import { FormattedMessage } from "react-intl";
export const PremiumModal = () => {
const { open, setOpen } = useContext(PremiumContext);
const ref = useRef(null);
const onClose = () => setOpen(false);
useClickAway(ref, () => onClose());
return (
<div
className={classNames(
"fixed top-0 left-0 w-full h-full bg-dark-default z-30 bg-opacity-50 backdrop-blur-sm flex items-center justify-center transition-all duration-200 p-6",
{
"opacity-0 pointer-events-none": !open,
}
)}
>
<div
ref={ref}
className={classNames(
"max-w-3xl bg-dark-500 w-full rounded-2xl grid grid-cols-1 lg:grid-cols-5 overflow-hidden shadow-xl transform transition-all duration-400",
{
"opacity-0 scale-75": !open,
}
)}
>
<div className="lg:col-span-3 py-9 px-8 text-center">
<div className="flex items-center justify-center mb-3">
<Premium size={56} tooltip={false} />
</div>
<h3 className="text-white font-bold text-2xl text-center mt-1 tracking-wide">
<FormattedMessage id="freemium.modal.title" />
</h3>
<p className="text-lg text-dark-100">
<FormattedMessage
id="freemium.modal.subtitle"
values={{
span: (t) => <span className="text-white font-bold">{t}</span>,
}}
/>
</p>
<p className="text-xl text-white font-bold mt-5 flex items-center justify-center gap-2">
<FormattedMessage id="freemium.modal.step.title" />
</p>
<div className="bg-dark-default mx-auto w-full mt-4 rounded-lg">
<div className="flex items-center justify-start px-4 py-3 text-white text-opacity-60 gap-3 border-b border-dashed border-dark-300">
<span className="font-title text-white text-sm">1.</span>
<span>
<FormattedMessage
id="freemium.modal.step.1"
values={{
span: (t) => (
<span className="text-white font-medium">{t}</span>
),
}}
/>
</span>
</div>
<div className="flex items-center text-left justify-start px-4 py-3 text-white text-opacity-60 gap-3 border-b border-dashed border-dark-300">
<span className="font-title text-white text-sm">2.</span>
<span>
<FormattedMessage
id="freemium.modal.step.2"
values={{
span: (t) => (
<span className="text-white font-medium">{t}</span>
),
}}
/>
</span>
</div>
<div className="flex items-center justify-start px-4 py-3 text-white text-opacity-60 gap-3 border-b border-dashed border-dark-300">
<span className="font-title text-white text-sm">3.</span>
<span>
<FormattedMessage
id="freemium.modal.step.3"
values={{
span: (t) => (
<span className="text-white font-medium">{t}</span>
),
}}
/>
</span>
</div>
<div className="flex items-center justify-start px-4 py-3 gap-3 border-b border-dashed border-dark-300 font-semibold text-yellow">
<span className="font-title text-sm">4.</span>
<span>
<FormattedMessage id="freemium.modal.step.4" />
</span>
</div>
</div>
<button
className="bg-blue text-white rounded-lg w-full text-center px-3 py-3 mt-5 font-semibold hover:bg-opacity-80 flex items-center justify-center gap-2"
onClick={login}
>
<FormattedMessage id="freemium.modal.cta" />
<Premium size="22" tooltip={false} />
</button>
</div>
<div
style={
{
// backgroundImage: `url(${ModalPremiumIllustration.src})`,
}
}
className="w-full h-full bg-cover hidden lg:block bg-center lg:col-span-2 relative bg-blue"
>
<div
className="max-w-max absolute top-5 right-5 cursor-pointer"
onClick={onClose}
>
<svg
width={14}
height={14}
fill="none"
viewBox="0 0 123 123"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M122.443 110.277L73.625 61.459l48.695-48.694L110.081.526 61.387 49.22 12.569.402.417 12.554l48.818 48.818L.553 110.054l12.239 12.238 48.681-48.681 48.843 48.842 12.127-12.176z"
fill="#000"
/>
</svg>
</div>
</div>
</div>
</div>
);
};