diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json
index 935034d1..d18269b7 100644
--- a/src/assets/locales/en.json
+++ b/src/assets/locales/en.json
@@ -100,7 +100,8 @@
"onboarding": "Setup",
"pagetitle": "{{title}} - movie-web",
"register": "Register",
- "settings": "Settings"
+ "settings": "Settings",
+ "migration": "Migration"
}
},
"home": {
@@ -153,6 +154,27 @@
"show": "Show"
}
},
+ "migration": {
+ "start": {
+ "title": "Migrate your data",
+ "explainer": "If you wish to migrate or backup your data, you can do so using the options below. This will allow you to keep your data when you switch backend servers.",
+ "options": {
+ "or": "or",
+ "direct": {
+ "description": "This will directly migrate your data to the new server. This is the fastest option.
This option allows you to keep your passphrase the same!",
+ "title": "Direct migration",
+ "quality": "Easiest and fastest",
+ "action": "Transfer data"
+ },
+ "download": {
+ "description": "This will download your data to your device. You can then upload it to the new server or just keep it for safekeeping.",
+ "title": "Download data",
+ "quality": "More technical",
+ "action": "Download data"
+ }
+ }
+ }
+ },
"navigation": {
"banner": {
"offline": "Check your internet connection"
diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx
index ec5e26cb..cebf308f 100644
--- a/src/components/Icon.tsx
+++ b/src/components/Icon.tsx
@@ -64,6 +64,8 @@ export enum Icons {
DONATION = "donation",
CIRCLE_QUESTION = "circle_question",
BRUSH = "brush",
+ CLOUD_ARROW_UP = "cloud_arrow_up",
+ FILE_ARROW_DOWN = "file_arrow_down",
}
export interface IconProps {
@@ -134,6 +136,8 @@ const iconList: Record = {
donation: ``,
circle_question: ``,
brush: ``,
+ cloud_arrow_up: ``,
+ file_arrow_down: ``,
};
function ChromeCastButton() {
diff --git a/src/pages/migration/Migration.tsx b/src/pages/migration/Migration.tsx
new file mode 100644
index 00000000..cd390c0f
--- /dev/null
+++ b/src/pages/migration/Migration.tsx
@@ -0,0 +1,65 @@
+import { Trans, useTranslation } from "react-i18next";
+import { useNavigate } from "react-router-dom";
+
+import { Icons } from "@/components/Icon";
+import { Stepper } from "@/components/layout/Stepper";
+import { CenterContainer } from "@/components/layout/ThinContainer";
+import { VerticalLine } from "@/components/layout/VerticalLine";
+import { Heading2, Paragraph } from "@/components/utils/Text";
+import { MinimalPageLayout } from "@/pages/layouts/MinimalPageLayout";
+import { Card, CardContent, Link } from "@/pages/migration/utils";
+import { PageTitle } from "@/pages/parts/util/PageTitle";
+
+export function MigrationPage() {
+ const navigate = useNavigate();
+ const { t } = useTranslation();
+
+ return (
+
+
+
+
+
+ {t("migration.start.title")}
+
+
+ {t("migration.start.explainer")}
+
+
+