From 74eccc3d503929917d5bf4e59f3b1a31bf1c01b4 Mon Sep 17 00:00:00 2001 From: BFlat Date: Tue, 18 Jul 2023 08:03:45 +0700 Subject: [PATCH] step components --- .../fakeyou.com/src/scss/site-refresh.scss | 51 ++++++++++++++++++ .../voice_designer/VoiceDesignerPage.tsx | 53 +++++++++++++++---- .../voice_designer/components/Stepper.tsx | 40 +++++++++++++- .../components/StepperControls.tsx | 26 ++++++--- .../components/steps/Complete.tsx | 7 +++ .../components/steps/UploadSamples.tsx | 11 ++++ .../components/steps/VoiceDetails.tsx | 7 +++ 7 files changed, 176 insertions(+), 19 deletions(-) create mode 100644 packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/Complete.tsx create mode 100644 packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/UploadSamples.tsx create mode 100644 packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/VoiceDetails.tsx diff --git a/packages/fakeyou.com/src/scss/site-refresh.scss b/packages/fakeyou.com/src/scss/site-refresh.scss index c5c5db3e5f..fb4f557b0e 100644 --- a/packages/fakeyou.com/src/scss/site-refresh.scss +++ b/packages/fakeyou.com/src/scss/site-refresh.scss @@ -1310,6 +1310,57 @@ styles with important tags: color: rgba($white, 0.85) !important; font-weight: 500 !important; } + + .stepper-container { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + + .stepper-number { + font-size: 16px; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + min-width: 32px; + background-color: $secondary; + border-radius: 48px; + opacity: 0.4; + transition: all 0.2s; + + &.active { + background-color: $primary; + opacity: 1; + } + } + + .stepper-description { + font-size: 18px; + font-weight: 600; + white-space: nowrap; + opacity: 0.4; + transition: all 0.2s; + + &.active { + opacity: 1; + } + } + + .stepper-line { + flex-grow: 1; + height: 3px; + background: $secondary; + transition: all 0.2s; + + &.active { + background-color: $primary; + opacity: 1; + } + } + } } select { diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerPage.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerPage.tsx index 62f81bb80f..5af063546c 100644 --- a/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerPage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerPage.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { faWaveform } from "@fortawesome/pro-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { usePrefixedDocumentTitle } from "common/UsePrefixedDocumentTitle"; @@ -6,29 +6,62 @@ import { PageHeaderWithImage } from "v2/view/_common/PageHeaderWithImage"; import { Panel } from "v2/view/_common/Panel"; import { Stepper } from "./components/Stepper"; import { StepperControls } from "./components/StepperControls"; +import { motion } from "framer-motion"; +import { container } from "data/animation"; +import { UploadSamples } from "./components/steps/UploadSamples"; +import { VoiceDetails } from "./components/steps/VoiceDetails"; +import { Complete } from "./components/steps/Complete"; function VoiceDesignerPage(this: any) { usePrefixedDocumentTitle("Voice Designer"); + const [currentStep, setCurrentStep] = useState(0); + const steps = ["Upload Samples", "Voice Details", "Complete"]; + + const displayStep = (step: any) => { + switch (step) { + case 0: + return ; + case 1: + return ; + case 2: + return ; + default: + } + }; + + const handleBack = () => { + if (currentStep > 0) { + setCurrentStep(currentStep - 1); + } + }; + + const handleNext = () => { + if (currentStep < steps.length - 1) { + setCurrentStep(currentStep + 1); + } + }; + return ( -
+ } title={<>Voice Designer} - subText={ - <> - Clone your own voice or a voice you have permission and rights to! - - } + subText={<>Upload and instantly clone your voice!} showButtons={false} /> - - + {/* Stepper */} + + +
{displayStep(currentStep)}
+ + {/* Navigation Controls */} +
-
+ ); } diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/Stepper.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/Stepper.tsx index f829cb4f41..07029c37c6 100644 --- a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/Stepper.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/Stepper.tsx @@ -1,7 +1,43 @@ import React from "react"; -function Stepper(this: any) { - return
; +interface StepperProps { + steps: string[]; + currentStep: number; } +const Stepper: React.FC = ({ steps, currentStep }) => { + return ( +
+ {steps.map((step, index) => ( +
+
+ {index + 1} +
+
+ {step} +
+ {index !== steps.length - 1 && ( +
+ )} +
+ ))} +
+ ); +}; + export { Stepper }; diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/StepperControls.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/StepperControls.tsx index 42243cde17..19e2b53caa 100644 --- a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/StepperControls.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/StepperControls.tsx @@ -1,12 +1,24 @@ import React from "react"; -function StepperControls(this: any) { - return ( -
- - -
- ); +interface StepperControlsProps { + onBack: () => void; + onNext: () => void; } +const StepperControls: React.FC = ({ + onBack, + onNext, +}) => { + return ( +
+ + +
+ ); +}; + export { StepperControls }; diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/Complete.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/Complete.tsx new file mode 100644 index 0000000000..f2f945d89d --- /dev/null +++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/Complete.tsx @@ -0,0 +1,7 @@ +import React from "react"; + +function Complete() { + return <>Complete; +} + +export { Complete }; diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/UploadSamples.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/UploadSamples.tsx new file mode 100644 index 0000000000..c35345dcf5 --- /dev/null +++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/UploadSamples.tsx @@ -0,0 +1,11 @@ +import React from "react"; + +function UploadSamples() { + return ( +
+ +
+ ); +} + +export { UploadSamples }; diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/VoiceDetails.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/VoiceDetails.tsx new file mode 100644 index 0000000000..8213074975 --- /dev/null +++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/components/steps/VoiceDetails.tsx @@ -0,0 +1,7 @@ +import React from "react"; + +function VoiceDetails() { + return <>Voice Details; +} + +export { VoiceDetails };