mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-26 09:20:24 -05:00
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { z } from "zod";
|
|
import { customField, select, stringConstant, toggle } from "~/form/fields";
|
|
import { themeInputSchema } from "~/utils/zod";
|
|
|
|
const customThemeSchema = z.object({
|
|
_action: stringConstant("UPDATE_CUSTOM_THEME"),
|
|
newValue: customField({ initialValue: null }, themeInputSchema.nullable()),
|
|
});
|
|
|
|
export const clockFormatSchema = z.object({
|
|
_action: stringConstant("UPDATE_CLOCK_FORMAT"),
|
|
newValue: select({
|
|
label: "labels.clockFormat",
|
|
items: [
|
|
{ value: "auto", label: "options.clockFormat.auto" },
|
|
{ value: "24h", label: "options.clockFormat.24h" },
|
|
{ value: "12h", label: "options.clockFormat.12h" },
|
|
],
|
|
}),
|
|
});
|
|
|
|
export const disableBuildAbilitySortingSchema = z.object({
|
|
_action: stringConstant("UPDATE_DISABLE_BUILD_ABILITY_SORTING"),
|
|
newValue: toggle({
|
|
label: "labels.disableBuildAbilitySorting",
|
|
bottomText: "bottomTexts.disableBuildAbilitySorting",
|
|
}),
|
|
});
|
|
|
|
export const disallowScrimPickupsFromUntrustedSchema = z.object({
|
|
_action: stringConstant("DISALLOW_SCRIM_PICKUPS_FROM_UNTRUSTED"),
|
|
newValue: toggle({
|
|
label: "labels.disallowScrimPickupsFromUntrusted",
|
|
bottomText: "bottomTexts.disallowScrimPickupsFromUntrusted",
|
|
}),
|
|
});
|
|
|
|
export const updateNoScreenSchema = z.object({
|
|
_action: stringConstant("UPDATE_NO_SCREEN"),
|
|
newValue: toggle({
|
|
label: "labels.noScreen",
|
|
bottomText: "bottomTexts.noScreen",
|
|
}),
|
|
});
|
|
|
|
export const settingsEditSchema = z.union([
|
|
customThemeSchema,
|
|
disableBuildAbilitySortingSchema,
|
|
disallowScrimPickupsFromUntrustedSchema,
|
|
updateNoScreenSchema,
|
|
clockFormatSchema,
|
|
]);
|