feat: enhance UI components and implement password reset flow with improved styling and validation
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user