diff --git a/apps/frontend/app/components/Onboarding.tsx b/apps/frontend/app/components/Onboarding.tsx new file mode 100644 index 0000000..865743a --- /dev/null +++ b/apps/frontend/app/components/Onboarding.tsx @@ -0,0 +1,67 @@ +export default function Onboarding({ onBack }: { onBack: () => void }) { + return ( +
+ + +
+

Welcome to CS+SG

+

Set up your basic profile

+
+ + {/* Avatar and Identity Fields */} +
+
+
+
+
+
+
+
+ +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + {/* Links Section */} +
+ +
+ + +
+
+
+ +
+
+
+ + +
+ ); +} diff --git a/apps/frontend/app/components/SignUpForm.tsx b/apps/frontend/app/components/SignUpForm.tsx new file mode 100644 index 0000000..342757c --- /dev/null +++ b/apps/frontend/app/components/SignUpForm.tsx @@ -0,0 +1,37 @@ +import Link from "next/link"; + +export default function SignupForm({ onSignupSuccess }: { onSignupSuccess: () => void }) { + return ( +
+

Register

+
+
+ + +
+
+ + +
+
+ +

+ Have an account?{" "} + + Login + +

+
+ ); +} diff --git a/apps/frontend/app/forgot-password/page.tsx b/apps/frontend/app/forgot-password/page.tsx new file mode 100644 index 0000000..468f9e1 --- /dev/null +++ b/apps/frontend/app/forgot-password/page.tsx @@ -0,0 +1,12 @@ +export default function ForgotPasswordPage() { + return ( +
+
+

Forgot Password

+

Enter your email to reset your password.

+ + +
+
+ ); +} diff --git a/apps/frontend/app/login/page.tsx b/apps/frontend/app/login/page.tsx new file mode 100644 index 0000000..1d19a5d --- /dev/null +++ b/apps/frontend/app/login/page.tsx @@ -0,0 +1,92 @@ +"use client"; +import { useState } from "react"; +import Link from "next/link"; + +export default function LoginPage() { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + + const logLoginAttempt = (method: "standard" | "github" | "google") => { + console.log("Login attempt", { + method, + email, + password, + }); + }; + + const handleLogin = () => logLoginAttempt("standard"); + const handleGithubLogin = () => logLoginAttempt("github"); + const handleGoogleLogin = () => logLoginAttempt("google"); + + return ( +
+
+

Login

+
+
+ + setEmail(event.target.value)} + className="w-full rounded border border-slate-300 bg-white px-3 py-2 text-slate-900 placeholder:text-slate-400" + placeholder="you@example.com" + /> +
+
+ + setPassword(event.target.value)} + className="w-full rounded border border-slate-300 bg-white px-3 py-2 text-slate-900 placeholder:text-slate-400" + placeholder="Enter your password" + /> +
+
+ +
+ + Forgot Password? + +
+ {/* ... Divider ... */} +
+ + +
+

+ Don't have an account?{" "} + + Register + +

+
+
+ ); +} diff --git a/apps/frontend/app/signup/page.tsx b/apps/frontend/app/signup/page.tsx new file mode 100644 index 0000000..52497d4 --- /dev/null +++ b/apps/frontend/app/signup/page.tsx @@ -0,0 +1,18 @@ +"use client"; +import { useState } from "react"; +import SignUpForm from "../components/SignUpForm"; +import Onboarding from "../components/Onboarding"; + +export default function SignupPage() { + const [isSignedUp, setIsSignedUp] = useState(false); + + return ( +
+ {isSignedUp ? ( + setIsSignedUp(false)} /> + ) : ( + setIsSignedUp(true)} /> + )} +
+ ); +}