feat(project-editor): add ProjectValidator with MVP validation rules

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-13 10:51:05 +04:00
parent 646a68e9fd
commit 265f2fcbac
5 changed files with 102 additions and 0 deletions

View File

@@ -504,6 +504,14 @@ export const en: Translations = {
importSource: 'Import Source',
importError: 'Import failed. Invalid bootstrap JSON.',
featureFlags: 'Feature Flags',
validationMissingLogo: 'Branding is missing a logo.',
validationNoLanguages: 'No languages are configured.',
validationInvalidUrl: 'The marketplace URL is invalid.',
validationDuplicateSlugs: 'Two or more static pages share the same slug.',
validationEmptyHomepage: 'The homepage has no sections.',
validationMissingWidget: 'A homepage section has a widget with no type.',
validationDuplicateNavLinks: 'Two or more header navigation links are duplicates.',
validationInvalidColors: 'One or more theme colors are not valid hex colors.',
},
staticPages: {
notFound: 'Page not found',

View File

@@ -504,6 +504,14 @@ export const hy: Translations = {
importSource: 'Ներմուծման աղբյուր',
importError: 'Ներմուծումը ձախողվեց։ Սխալ bootstrap JSON։',
featureFlags: 'Feature flags',
validationMissingLogo: 'Բրենդինգում բացակայում է լոգոն։',
validationNoLanguages: 'Կարգավորված լեզուներ չկան։',
validationInvalidUrl: 'Մարքեթփլեյսի URL-ը սխալ է։',
validationDuplicateSlugs: 'Երկու կամ ավելի ստատիկ էջեր ունեն նույն slug-ը։',
validationEmptyHomepage: 'Գլխավոր էջում սեկցիաներ չկան։',
validationMissingWidget: 'Գլխավոր էջի սեկցիաներից մեկն ունի վիջեթ առանց տիպի։',
validationDuplicateNavLinks: 'Վերնագրի նավիգացիայում կան կրկնվող հղումներ։',
validationInvalidColors: 'Թեմայի գույներից մեկը կամ մի քանիսը վավեր hex գույն չեն։',
},
staticPages: {
notFound: 'Էջը չի գտնվել',

View File

@@ -504,6 +504,14 @@ export const ru: Translations = {
importSource: 'Источник импорта',
importError: 'Импорт не удался. Некорректный JSON bootstrap.',
featureFlags: 'Фичи-флаги',
validationMissingLogo: 'В брендинге отсутствует логотип.',
validationNoLanguages: 'Не настроены языки.',
validationInvalidUrl: 'Некорректный URL маркетплейса.',
validationDuplicateSlugs: 'Две или более статические страницы имеют одинаковый slug.',
validationEmptyHomepage: 'На главной странице нет секций.',
validationMissingWidget: 'В секции главной страницы есть виджет без типа.',
validationDuplicateNavLinks: 'Две или более ссылки в навигации шапки дублируются.',
validationInvalidColors: 'Один или несколько цветов темы указаны некорректно.',
},
staticPages: {
notFound: 'Страница не найдена',

View File

@@ -502,6 +502,14 @@ export interface Translations {
importSource: string;
importError: string;
featureFlags: string;
validationMissingLogo: string;
validationNoLanguages: string;
validationInvalidUrl: string;
validationDuplicateSlugs: string;
validationEmptyHomepage: string;
validationMissingWidget: string;
validationDuplicateNavLinks: string;
validationInvalidColors: string;
};
staticPages: {
notFound: string;