pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
at main 92 lines 3.6 kB view raw
1import { Trans, useTranslation } from "react-i18next"; 2import { useNavigate } from "react-router-dom"; 3 4import { Icons } from "@/components/Icon"; 5import { Stepper } from "@/components/layout/Stepper"; 6import { BiggerCenterContainer } from "@/components/layout/ThinContainer"; 7import { VerticalLine } from "@/components/layout/VerticalLine"; 8import { Heading2, Paragraph } from "@/components/utils/Text"; 9import { MinimalPageLayout } from "@/pages/layouts/MinimalPageLayout"; 10import { Card, CardContent, Link } from "@/pages/migration/utils"; 11import { PageTitle } from "@/pages/parts/util/PageTitle"; 12 13export function MigrationPage() { 14 const navigate = useNavigate(); 15 const { t } = useTranslation(); 16 17 return ( 18 <MinimalPageLayout> 19 <PageTitle subpage k="global.pages.migration" /> 20 <BiggerCenterContainer> 21 <Stepper steps={2} current={1} className="mb-12" /> 22 <Heading2 className="!mt-0 !text-3xl"> 23 {t("migration.start.title")} 24 </Heading2> 25 <Paragraph className="max-w-[360px]"> 26 {t("migration.start.explainer")} 27 </Paragraph> 28 29 <div className="w-full flex flex-col md:flex-row gap-3"> 30 <Card 31 onClick={() => navigate("/migration/direct")} 32 className="flex-1" 33 > 34 <CardContent 35 colorClass="!text-onboarding-best" 36 title={t("migration.start.options.direct.title")} 37 subtitle={t("migration.start.options.direct.quality")} 38 description={ 39 <Trans i18nKey="migration.start.options.direct.description" /> 40 } 41 icon={Icons.CLOUD_ARROW_UP} 42 > 43 <Link>{t("migration.start.options.direct.action")}</Link> 44 </CardContent> 45 </Card> 46 <div className="hidden md:grid grid-rows-[1fr,auto,1fr] justify-center gap-4"> 47 <VerticalLine className="items-end" /> 48 <span className="text-xs uppercase font-bold"> 49 {t("migration.start.options.or")} 50 </span> 51 <VerticalLine /> 52 </div> 53 <Card 54 onClick={() => navigate("/migration/download")} 55 className="flex-1" 56 > 57 <CardContent 58 colorClass="!text-migration-good" 59 title={t("migration.start.options.download.title")} 60 subtitle={t("migration.start.options.download.quality")} 61 description={t("migration.start.options.download.description")} 62 icon={Icons.FILE_ARROW_DOWN} 63 > 64 <Link>{t("migration.start.options.download.action")}</Link> 65 </CardContent> 66 </Card> 67 <div className="hidden md:grid grid-rows-[1fr,auto,1fr] justify-center gap-4"> 68 <VerticalLine className="items-end" /> 69 <span className="text-xs uppercase font-bold"> 70 {t("migration.start.options.or")} 71 </span> 72 <VerticalLine /> 73 </div> 74 <Card 75 onClick={() => navigate("/migration/upload")} 76 className="flex-1" 77 > 78 <CardContent 79 colorClass="!text-migration-good" 80 title={t("migration.start.options.upload.title")} 81 subtitle={t("migration.start.options.upload.quality")} 82 description={t("migration.start.options.upload.description")} 83 icon={Icons.CLOUD_ARROW_UP} 84 > 85 <Link>{t("migration.start.options.upload.action")}</Link> 86 </CardContent> 87 </Card> 88 </div> 89 </BiggerCenterContainer> 90 </MinimalPageLayout> 91 ); 92}