diff --git a/frontend/src/ts/commandline/lists/font-family.ts b/frontend/src/ts/commandline/lists/font-family.ts index 37ef6c1628c1..98cf96e981a1 100644 --- a/frontend/src/ts/commandline/lists/font-family.ts +++ b/frontend/src/ts/commandline/lists/font-family.ts @@ -1,4 +1,5 @@ -import { Command } from "../types"; +import { FontNameSchema } from "@monkeytype/schemas/fonts"; +import { Command, withValidation } from "../types"; import { buildCommandForConfigKey } from "../util"; import FileStorage from "../../utils/file-storage"; @@ -6,6 +7,7 @@ import { showNoticeNotification } from "../../states/notifications"; import { Config } from "../../config/store"; import { setConfig } from "../../config/setters"; import { applyFontFamily } from "../../ui"; + const fromMeta = buildCommandForConfigKey("fontFamily"); if (fromMeta.subgroup) { @@ -17,12 +19,15 @@ if (fromMeta.subgroup) { subgroup: { title: "Custom font...", list: [ - { + withValidation({ id: "customFontName", display: "Custom name...", icon: "fa-font", alias: "custom font name", input: true, + validation: { + schema: FontNameSchema, + }, defaultValue: (): string => { return Config.fontFamily.replace(/_/g, " "); }, @@ -31,7 +36,7 @@ if (fromMeta.subgroup) { const fontName = input.replaceAll(/ /g, "_"); setConfig("fontFamily", fontName); }, - }, + }), { id: "customLocalFont", display: "Local font...", diff --git a/frontend/src/ts/components/pages/settings/custom-setting/FontFamily.tsx b/frontend/src/ts/components/pages/settings/custom-setting/FontFamily.tsx index 19ace4b8a7c4..aa84e53390e4 100644 --- a/frontend/src/ts/components/pages/settings/custom-setting/FontFamily.tsx +++ b/frontend/src/ts/components/pages/settings/custom-setting/FontFamily.tsx @@ -1,4 +1,5 @@ import { ConfigSchema } from "@monkeytype/schemas/configs"; +import { FontNameSchema } from "@monkeytype/schemas/fonts"; import { createResource, For, JSXElement, Show } from "solid-js"; import { z } from "zod"; @@ -170,7 +171,7 @@ export function FontFamily(): JSXElement { text: "Make sure you have the font installed on your computer before applying", buttonText: "apply", schema: z.object({ - fontName: z.string(), + fontName: FontNameSchema, }), inputs: { fontName: {