-
-
- Upload Voice to Voice Model
-
+ />
-
-
- {t("pages.contributeIndex.buttonUploadVoice")}
-
+
-
-
- Upload Vocoder
-
+
+
+
+
+
+
+
diff --git a/packages/fakeyou.com/src/v2/view/pages/upload/UploadLoraWeightPage.tsx b/packages/fakeyou.com/src/v2/view/pages/upload/UploadLoraWeightPage.tsx
new file mode 100644
index 0000000000..e13037dfa9
--- /dev/null
+++ b/packages/fakeyou.com/src/v2/view/pages/upload/UploadLoraWeightPage.tsx
@@ -0,0 +1,149 @@
+import React from "react";
+import {
+ faCircleExclamation,
+ faEye,
+ faWaveform,
+} from "@fortawesome/pro-solid-svg-icons";
+import { usePrefixedDocumentTitle } from "common/UsePrefixedDocumentTitle";
+import PageHeader from "components/layout/PageHeader";
+import {
+ Button,
+ Container,
+ CoverImageInput,
+ SplitPanel,
+ TempInput,
+ TempSelect,
+ TempTextArea,
+} from "components/common";
+import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper";
+import useLoraUpload from "hooks/useLoraUpload";
+
+interface UploadLoraWeightPageProps {
+ sessionWrapper: SessionWrapper;
+}
+
+export default function UploadLoraWeightPage({
+ sessionWrapper,
+}: UploadLoraWeightPageProps) {
+ usePrefixedDocumentTitle("Edit Voice");
+
+ const visibilityOptions = [
+ { label: "Public", value: "public" },
+ { label: "Private", value: "private" },
+ ];
+
+ const {
+ coverImg,
+ descriptionMD,
+ onChange,
+ title,
+ upload,
+ uploadPath,
+ visibility,
+ } = useLoraUpload();
+
+ if (!sessionWrapper.isLoggedIn()) {
+ return (
+