Files
Cibello-app/packages/validation/src/locale.ts
T
2026-08-05 19:21:11 +07:00

27 lines
1.0 KiB
TypeScript

import { z } from "zod";
import { MEASUREMENT_SYSTEMS, TEMPERATURE_UNITS } from "@app/shared-types";
/** i18n-spec §6: alla fält oberoende och valfria vid uppdatering. */
export const updateLocalePreferencesInputSchema = z.object({
languageTag: z
.string()
.regex(/^[a-z]{2,3}(-[A-Za-z]{2,4})?(-[A-Za-z0-9]{2,8})?$/, "Ogiltig BCP 47-tagg")
.optional(),
regionCode: z
.string()
.regex(/^[A-Za-z]{2}$/, "Ogiltig ISO 3166-1 alpha-2-kod")
.transform((v) => v.toUpperCase())
.optional(),
timeZone: z.string().min(1).max(64).optional(),
measurementSystem: z.enum(MEASUREMENT_SYSTEMS).optional(),
temperatureUnit: z.enum(TEMPERATURE_UNITS).optional(),
currencyCode: z
.string()
.regex(/^[A-Za-z]{3}$/, "Ogiltig ISO 4217-kod")
.transform((v) => v.toUpperCase())
.optional(),
firstDayOfWeek: z.number().int().min(0).max(6).optional(),
use24HourTime: z.boolean().optional(),
});
export type UpdateLocalePreferencesInput = z.infer<typeof updateLocalePreferencesInputSchema>;