feat: add SVG icons for navigation and branding, configure Tailwind CSS, and set up TypeScript

This commit is contained in:
2026-07-09 11:10:45 +05:30
parent 961066e958
commit ce12ad426e
64 changed files with 15152 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
import { z } from "zod"
// Email validation schema
export const emailSchema = 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")
.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",
})
.refine((val) => /[a-z]/.test(val), {
message: "Password must contain at least one lowercase letter",
})
.refine((val) => /[0-9]/.test(val), { message: "Password must contain at least one number" })
.refine((val) => /[!@#$%^&*(),.?":{}|<>\[\]\\/`~;'+=-]/.test(val), {
message: "Password must contain at least one special character",
}),
})
export type LoginValues = z.infer<typeof loginSchema>
// Helper to validate email synchronously
export function validateEmail(value: unknown) {
const result = emailSchema.safeParse(value)
return result.success ? { valid: true, value: result.data } : { valid: false, error: result.error }
}
export default {
emailSchema,
loginSchema,
validateEmail,
}