feat(i18n): localize category action messages
This commit is contained in:
@@ -1,18 +1,39 @@
|
||||
import { z } from "zod"
|
||||
|
||||
export const createCategorySchema = z.object({
|
||||
name: z
|
||||
.string()
|
||||
.min(3, {
|
||||
error: "Name is required and must be at least 3 characters long",
|
||||
})
|
||||
.nonempty("Name is required and must be at least 3 characters long"),
|
||||
})
|
||||
import type { Dictionary } from "@/i18n/dictionaries"
|
||||
|
||||
export type CategorySchemaCopy = Dictionary["inventory"]["categories"]["schema"]
|
||||
|
||||
const defaultCategorySchemaCopy: CategorySchemaCopy = {
|
||||
nameRequired: "Name is required and must be at least 3 characters long",
|
||||
idRequired: "ID is required",
|
||||
}
|
||||
|
||||
export function buildCreateCategorySchema(copy: CategorySchemaCopy) {
|
||||
return z.object({
|
||||
name: z
|
||||
.string()
|
||||
.min(3, {
|
||||
error: copy.nameRequired,
|
||||
})
|
||||
.nonempty(copy.nameRequired),
|
||||
})
|
||||
}
|
||||
|
||||
export function buildUpdateCategorySchema(copy: CategorySchemaCopy) {
|
||||
return buildCreateCategorySchema(copy).extend({
|
||||
id: z.string().nonempty(copy.idRequired),
|
||||
})
|
||||
}
|
||||
|
||||
export const createCategorySchema = buildCreateCategorySchema(
|
||||
defaultCategorySchemaCopy,
|
||||
)
|
||||
|
||||
export type CreateCategoryFormType = z.infer<typeof createCategorySchema>
|
||||
|
||||
export const updateCategorySchema = createCategorySchema.extend({
|
||||
id: z.string().nonempty("ID is required"),
|
||||
})
|
||||
export const updateCategorySchema = buildUpdateCategorySchema(
|
||||
defaultCategorySchemaCopy,
|
||||
)
|
||||
|
||||
export type UpdateCategoryFormType = z.infer<typeof updateCategorySchema>
|
||||
|
||||
Reference in New Issue
Block a user