|
|
@ -1,4 +1,5 @@ |
|
|
|
import classNames from "classnames"; |
|
|
|
import classNames from "classnames"; |
|
|
|
|
|
|
|
import { Trans, useTranslation } from "react-i18next"; |
|
|
|
import { useNavigate } from "react-router-dom"; |
|
|
|
import { useNavigate } from "react-router-dom"; |
|
|
|
|
|
|
|
|
|
|
|
import { Button } from "@/components/buttons/Button"; |
|
|
|
import { Button } from "@/components/buttons/Button"; |
|
|
@ -23,20 +24,23 @@ export function OnboardingPage() { |
|
|
|
const navigate = useNavigate(); |
|
|
|
const navigate = useNavigate(); |
|
|
|
const skipModal = useModal("skip"); |
|
|
|
const skipModal = useModal("skip"); |
|
|
|
const { completeAndRedirect } = useRedirectBack(); |
|
|
|
const { completeAndRedirect } = useRedirectBack(); |
|
|
|
|
|
|
|
const { t } = useTranslation(); |
|
|
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
return ( |
|
|
|
<MinimalPageLayout> |
|
|
|
<MinimalPageLayout> |
|
|
|
<PageTitle subpage k="global.pages.about" /> |
|
|
|
<PageTitle subpage k="global.pages.onboarding" /> |
|
|
|
<Modal id={skipModal.id}> |
|
|
|
<Modal id={skipModal.id}> |
|
|
|
<ModalCard> |
|
|
|
<ModalCard> |
|
|
|
<ModalCard> |
|
|
|
<ModalCard> |
|
|
|
<Heading1 className="!mt-0">Lorem ipsum</Heading1> |
|
|
|
<Heading1 className="!mt-0"> |
|
|
|
<Paragraph>Lorem ipsum Lorem ipsum Lorem ipsum</Paragraph> |
|
|
|
{t("onboarding.defaultConfirm.title")} |
|
|
|
|
|
|
|
</Heading1> |
|
|
|
|
|
|
|
<Paragraph>{t("onboarding.defaultConfirm.description")}</Paragraph> |
|
|
|
<Button theme="secondary" onClick={skipModal.hide}> |
|
|
|
<Button theme="secondary" onClick={skipModal.hide}> |
|
|
|
Lorem ipsum |
|
|
|
{t("onboarding.defaultConfirm.cancel")} |
|
|
|
</Button> |
|
|
|
</Button> |
|
|
|
<Button theme="danger" onClick={() => completeAndRedirect()}> |
|
|
|
<Button theme="danger" onClick={() => completeAndRedirect()}> |
|
|
|
Lorem ipsum |
|
|
|
{t("onboarding.defaultConfirm.confirm")} |
|
|
|
</Button> |
|
|
|
</Button> |
|
|
|
</ModalCard> |
|
|
|
</ModalCard> |
|
|
|
</ModalCard> |
|
|
|
</ModalCard> |
|
|
@ -44,22 +48,21 @@ export function OnboardingPage() { |
|
|
|
<CenterContainer> |
|
|
|
<CenterContainer> |
|
|
|
<Stepper steps={2} current={1} className="mb-12" /> |
|
|
|
<Stepper steps={2} current={1} className="mb-12" /> |
|
|
|
<Heading2 className="!mt-0 !text-3xl max-w-[435px]"> |
|
|
|
<Heading2 className="!mt-0 !text-3xl max-w-[435px]"> |
|
|
|
Let's get you set up with movie-web |
|
|
|
{t("onboarding.start.title")} |
|
|
|
</Heading2> |
|
|
|
</Heading2> |
|
|
|
<Paragraph className="max-w-[320px]"> |
|
|
|
<Paragraph className="max-w-[320px]"> |
|
|
|
To get the best streams possible, you will need to choose which |
|
|
|
{t("onboarding.start.explainer")} |
|
|
|
streaming method you want to use. |
|
|
|
|
|
|
|
</Paragraph> |
|
|
|
</Paragraph> |
|
|
|
|
|
|
|
|
|
|
|
<div className="w-full grid grid-cols-[1fr,auto,1fr] gap-3"> |
|
|
|
<div className="w-full grid grid-cols-[1fr,auto,1fr] gap-3"> |
|
|
|
<Card onClick={() => navigate("/onboarding/proxy")}> |
|
|
|
<Card onClick={() => navigate("/onboarding/proxy")}> |
|
|
|
<CardContent |
|
|
|
<CardContent |
|
|
|
colorClass="!text-onboarding-good" |
|
|
|
colorClass="!text-onboarding-good" |
|
|
|
title="Custom proxy" |
|
|
|
title={t("onboarding.start.options.proxy.title")} |
|
|
|
subtitle="Good quality" |
|
|
|
subtitle={t("onboarding.start.options.proxy.quality")} |
|
|
|
description="Set up a proxy in only 5 minutes and gain access to great sources." |
|
|
|
description={t("onboarding.start.options.proxy.description")} |
|
|
|
> |
|
|
|
> |
|
|
|
<Link>Set up proxy</Link> |
|
|
|
<Link>{t("onboarding.start.options.proxy.action")}</Link> |
|
|
|
</CardContent> |
|
|
|
</CardContent> |
|
|
|
</Card> |
|
|
|
</Card> |
|
|
|
<div className="grid grid-rows-[1fr,auto,1fr] justify-center gap-4"> |
|
|
|
<div className="grid grid-rows-[1fr,auto,1fr] justify-center gap-4"> |
|
|
@ -70,24 +73,24 @@ export function OnboardingPage() { |
|
|
|
<Card onClick={() => navigate("/onboarding/extension")}> |
|
|
|
<Card onClick={() => navigate("/onboarding/extension")}> |
|
|
|
<CardContent |
|
|
|
<CardContent |
|
|
|
colorClass="!text-onboarding-best" |
|
|
|
colorClass="!text-onboarding-best" |
|
|
|
title="Browser extension" |
|
|
|
title={t("onboarding.start.options.extension.title")} |
|
|
|
subtitle="Best quality" |
|
|
|
subtitle={t("onboarding.start.options.extension.quality")} |
|
|
|
description="Install browser extension and gain access to the best sources." |
|
|
|
description={t("onboarding.start.options.extension.description")} |
|
|
|
> |
|
|
|
> |
|
|
|
<Link>Install extension</Link> |
|
|
|
<Link>{t("onboarding.start.options.extension.action")}</Link> |
|
|
|
</CardContent> |
|
|
|
</CardContent> |
|
|
|
</Card> |
|
|
|
</Card> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<p className="text-center mt-12"> |
|
|
|
<p className="text-center mt-12"> |
|
|
|
I don't want good quality, <br /> |
|
|
|
<Trans i18nKey="onboarding.start.options.default.text"> |
|
|
|
<a |
|
|
|
<br /> |
|
|
|
onClick={skipModal.show} |
|
|
|
<a |
|
|
|
type="button" |
|
|
|
onClick={skipModal.show} |
|
|
|
className="text-onboarding-link hover:opacity-75 cursor-pointer" |
|
|
|
type="button" |
|
|
|
> |
|
|
|
className="text-onboarding-link hover:opacity-75 cursor-pointer" |
|
|
|
use the default setup |
|
|
|
/> |
|
|
|
</a> |
|
|
|
</Trans> |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
</CenterContainer> |
|
|
|
</CenterContainer> |
|
|
|
</MinimalPageLayout> |
|
|
|
</MinimalPageLayout> |
|
|
|