diff --git a/mobile/app/(auth)/login.tsx b/mobile/app/(auth)/login.tsx index a47c0dd..1f6159a 100644 --- a/mobile/app/(auth)/login.tsx +++ b/mobile/app/(auth)/login.tsx @@ -1,21 +1,85 @@ -import { Link } from "expo-router" -import { Text, View } from "react-native" +import { zodResolver } from "@hookform/resolvers/zod" +import { Link, useRouter } from "expo-router" +import { Controller, useForm } from "react-hook-form" +import { View } from "react-native" +import { Button, Input, Typography } from "../../src/components" +import { useAuthStore } from "../../src/store/useAuthStore" +import { colors, spacing } from "../../src/theme/tokens" +import { type LoginFormValues, loginSchema } from "../../src/validation/auth" export default function LoginScreen() { + const router = useRouter() + const setToken = useAuthStore((state) => state.setToken) + const { + control, + handleSubmit, + formState: { errors, isSubmitting }, + } = useForm({ + resolver: zodResolver(loginSchema), + defaultValues: { + email: "", + password: "", + }, + mode: "onBlur", + }) + + const onSubmit = async ({ email }: LoginFormValues) => { + const token = `session_${email.toLowerCase()}` + setToken(token) + router.replace("/(tabs)/discover") + } + return ( - Welcome Back - Phase 1 auth UI scaffold. - Mock Sign In + Welcome Back + + Sign in to continue matching with dishes around you. + + ( + + )} + /> + ( + + )} + /> +