diff --git a/public/gif/onboarding_1.gif b/public/gif/onboarding_1.gif new file mode 100644 index 00000000..5900ff6e Binary files /dev/null and b/public/gif/onboarding_1.gif differ diff --git a/public/gif/onboarding_2.gif b/public/gif/onboarding_2.gif new file mode 100644 index 00000000..52bbfa74 Binary files /dev/null and b/public/gif/onboarding_2.gif differ diff --git a/public/gif/onboarding_3.gif b/public/gif/onboarding_3.gif new file mode 100644 index 00000000..f2447464 Binary files /dev/null and b/public/gif/onboarding_3.gif differ diff --git a/src/app/onboarding/layout.tsx b/src/app/onboarding/layout.tsx deleted file mode 100644 index 852264a5..00000000 --- a/src/app/onboarding/layout.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { ReactNode } from 'react'; - -interface OnboardingLayout { - children: ReactNode; -} - -export default function Layout({ children }: OnboardingLayout) { - return
{children}
; -} diff --git a/src/app/onboarding/page.tsx b/src/app/onboarding/page.tsx index ff284b8c..e275acd4 100644 --- a/src/app/onboarding/page.tsx +++ b/src/app/onboarding/page.tsx @@ -9,7 +9,7 @@ export default function Page() { const [step, setStep] = useState(ONBOARDING_CONTENT[0].step); return ( -
+
{ONBOARDING_CONTENT.map( (content) => step >= content.step && ( @@ -18,6 +18,7 @@ export default function Page() { title={content.title} content={content.content} videoUrl={content.videoUrl} + gifUrl={content.gifUrl} icon={content.icon} onNextStep={() => setStep((prev) => prev + 1)} key={content.step} diff --git a/src/components/common/Pin/index.tsx b/src/components/common/Pin/index.tsx index a0bfc414..cbbcf190 100644 --- a/src/components/common/Pin/index.tsx +++ b/src/components/common/Pin/index.tsx @@ -41,7 +41,7 @@ export default function Pin({ {!isActive && ( diff --git a/src/components/onboarding/Scene/index.tsx b/src/components/onboarding/Scene/index.tsx index 59dbef1e..ca86d1a0 100644 --- a/src/components/onboarding/Scene/index.tsx +++ b/src/components/onboarding/Scene/index.tsx @@ -1,6 +1,7 @@ import { motion } from 'framer-motion'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; +import Image from 'next/image'; import OnboardingModal from '@components/onboarding/Modal'; import { pageTransitionVariant } from '@constants/motions'; @@ -10,6 +11,7 @@ interface SceneProps { title: string; content: string; videoUrl: string; + gifUrl: string; icon: string; onNextStep: () => void; } @@ -18,15 +20,23 @@ export default function Scene({ step, title, content, - videoUrl, + // videoUrl, + gifUrl, onNextStep, }: SceneProps) { const router = useRouter(); const [buttonActive, setButtonActive] = useState(false); - const handleVideoEnd = () => { - setButtonActive(true); - }; + /* TODO: IOS 영상 이슈 대응 필요 */ + // const handleVideoEnd = () => { + // setButtonActive(true); + // }; + + useEffect(() => { + setTimeout(() => { + setButtonActive(true); + }, 2000); + }, [router, step]); const handleClickNext = () => { onNextStep(); @@ -42,14 +52,21 @@ export default function Scene({ initial="initial" animate={['animate', 'opacity']} > -