first commit

This commit is contained in:
2026-01-17 14:17:42 +05:30
commit 0f194eb9e7
328 changed files with 73544 additions and 0 deletions

22
lib/validations/auth.ts Normal file
View File

@@ -0,0 +1,22 @@
import { z } from 'zod'
export const signInSchema = z.object({
email: z.string().email('Invalid email address'),
password: z.string().min(6, 'Password must be at least 6 characters'),
})
export const signUpSchema = z.object({
name: z.string().min(2, 'Name must be at least 2 characters'),
email: z.string().email('Invalid email address'),
password: z.string().min(6, 'Password must be at least 6 characters'),
confirmPassword: z.string(),
phone: z.string().optional(),
referralCode: z.string().optional(),
role: z.enum(['CUSTOMER', 'MEMBER']).optional(),
}).refine((data) => data.password === data.confirmPassword, {
message: "Passwords don't match",
path: ["confirmPassword"],
})
export type SignInValues = z.infer<typeof signInSchema>
export type SignUpValues = z.infer<typeof signUpSchema>

View File

@@ -0,0 +1,23 @@
import { z } from 'zod'
export const productSchema = z.object({
name: z.string().min(1, 'Product name is required'),
description: z.string().optional(),
price: z.number().positive('Price must be positive'),
discount: z.number().min(0).max(100).default(0),
images: z.array(z.string().url()).default([]),
stock: z.number().int().min(0).default(0),
categoryId: z.string().min(1, 'Category is required'),
sku: z.string().min(1, 'SKU is required'),
slug: z.string().min(1, 'Slug is required')
})
export const categorySchema = z.object({
name: z.string().min(1, 'Category name is required'),
description: z.string().optional(),
image: z.string().url().optional(),
isActive: z.boolean().default(true)
})
export type ProductInput = z.infer<typeof productSchema>
export type CategoryInput = z.infer<typeof categorySchema>