From e002079723178f9e90c3a42eec32e21f146097f9 Mon Sep 17 00:00:00 2001 From: aoi-dev-0411 Date: Sat, 11 Apr 2026 06:32:02 +0900 Subject: [PATCH] feat: implement Account Type Selection screen #21 --- src/app/create-account/page.tsx | 118 +++++++++++++++++++++++++++ src/components/account-type-card.tsx | 49 +++++++++++ 2 files changed, 167 insertions(+) create mode 100644 src/app/create-account/page.tsx create mode 100644 src/components/account-type-card.tsx diff --git a/src/app/create-account/page.tsx b/src/app/create-account/page.tsx new file mode 100644 index 0000000..01c3c32 --- /dev/null +++ b/src/app/create-account/page.tsx @@ -0,0 +1,118 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { motion } from "framer-motion"; +import AccountTypeCard from "@/components/account-type-card"; + +type AccountType = "creator" | "respondent" | null; + +export default function CreateAccountPage() { + const [selected, setSelected] = useState(null); + const router = useRouter(); + + const handleContinue = () => { + if (selected === "creator") { + router.push("/create-account/surveys"); + } else if (selected === "respondent") { + router.push("/create-account/respondent"); + } + }; + + return ( +
+ +
+

+ Choose Your Account Type +

+

+ Select how you'd like to use Survexa +

+
+ +
+ + setSelected("creator")} + icon={ + + + + + } + /> + + + + setSelected("respondent")} + icon={ + + + + + + } + /> + +
+ + + + +
+
+ ); +} diff --git a/src/components/account-type-card.tsx b/src/components/account-type-card.tsx new file mode 100644 index 0000000..79d8fb2 --- /dev/null +++ b/src/components/account-type-card.tsx @@ -0,0 +1,49 @@ +"use client"; + +import { cn } from "@/lib/utils"; + +interface AccountTypeCardProps { + title: string; + description: string; + icon: React.ReactNode; + selected: boolean; + onClick: () => void; +} + +export default function AccountTypeCard({ + title, + description, + icon, + selected, + onClick, +}: AccountTypeCardProps) { + return ( + + ); +}