27 lines
1.0 KiB
TypeScript
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>;
|