diff --git a/apps/web/modules/schedules/components/NewScheduleButton.tsx b/apps/web/modules/schedules/components/NewScheduleButton.tsx index d63505949c..0c43e1cd44 100644 --- a/apps/web/modules/schedules/components/NewScheduleButton.tsx +++ b/apps/web/modules/schedules/components/NewScheduleButton.tsx @@ -79,6 +79,14 @@ export function NewScheduleButton({ placeholder={t("default_schedule_name")} {...register("name", { setValueAs: (v) => (!v || v.trim() === "" ? null : v), + required:t('required'), + pattern:{ + value: new RegExp( + "^[\\p{L}\\p{M}\\p{N}\\s&\\-_'\\u2018\\u2019@.:,/]+$", + "u" + ), + message:t("invalid_characters_in_name"), + } })} /> diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 783a940ded..dda7996d16 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -9,6 +9,7 @@ "upgrade_now": "Upgrade now", "untitled": "Untitled", "accept_invitation": "Accept invitation", + "invalid_characters_in_name": "Only letters, numbers, spaces, and supported punctuation are allowed.", "max_characters": "Max. characters", "min_characters": "Min. characters", "min_characters_required": "Min. {{count}} characters required",