feat: enhance UI components and implement password reset flow with improved styling and validation

This commit is contained in:
2026-07-09 15:32:49 +05:30
parent 339d7408ae
commit ce9e138444
17 changed files with 60 additions and 55 deletions
+14 -4
View File
@@ -1,14 +1,24 @@
import { z } from "zod"
// Treats null/undefined as missing so validation surfaces one clear
// "required" message instead of a generic type error.
function requiredString(message: string) {
return z.preprocess(
(val) => (val === null || val === undefined ? "" : val),
z.string().min(1, message)
)
}
// Email validation schema
export const emailSchema = z.string().min(1, "Email is required").email("Enter a valid email")
export const emailSchema = z.preprocess(
(val) => (val === null || val === undefined ? "" : val),
z.string().min(1, "Email is required").email("Enter a valid email")
)
// Login schema (email + password) for reuse across the app
export const loginSchema = z.object({
email: emailSchema,
password: z
.string()
.min(1, "Password is required")
password: requiredString("Password is required")
.refine((val) => val.length >= 8, { message: "Password must be at least 8 characters" })
.refine((val) => /[A-Z]/.test(val), {
message: "Password must contain at least one uppercase letter",