feat(admin): sprint 19 admin dashboard, routing, i18n

- Add admin dashboard feature (models/gateway/facade/components/page)
- Wire admin/products routes and backoffice coming-soon placeholders
- Add lastPublishedAt to ProjectEditorFacade/state
- Add dashboard i18n keys (en/ru/hy) and docs/ADMIN.md

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-14 12:21:33 +04:00
parent 6aec2ebcb2
commit 325dc17911
36 changed files with 1386 additions and 5 deletions

View File

@@ -512,6 +512,8 @@ export const ru: Translations = {
validationMissingWidget: 'В секции главной страницы есть виджет без типа.',
validationDuplicateNavLinks: 'Две или более ссылки в навигации шапки дублируются.',
validationInvalidColors: 'Один или несколько цветов темы указаны некорректно.',
validationMissingTranslations: 'Часть контента не переведена на один из поддерживаемых языков.',
validationInvalidLayouts: 'Один или несколько макетов ссылаются на неизвестный тип раскладки.',
statusDraft: 'Черновик',
statusPublished: 'Опубликовано',
unsavedChanges: 'Есть несохранённые изменения',
@@ -530,6 +532,52 @@ export const ru: Translations = {
confirmResetDraft: 'Это отменит все неопубликованные изменения и восстановит последнюю опубликованную конфигурацию. Продолжить?',
confirmResetSection: 'Это отменит неопубликованные изменения только в этой секции. Продолжить?',
},
dashboard: {
title: 'Панель управления',
subtitle: 'Обзор вашего маркетплейса',
cardMarketplaceStatus: 'Статус маркетплейса',
cardProjectName: 'Название проекта',
cardCurrentTheme: 'Текущая тема',
cardLanguages: 'Языки',
cardCategoriesCount: 'Категории',
cardProductsCount: 'Товары',
cardOrders: 'Заказы',
cardRevenue: 'Выручка',
cardLastPublish: 'Последняя публикация',
cardLastDraftSave: 'Последнее сохранение черновика',
cardBootstrapVersion: 'Версия конфигурации',
cardActiveLayout: 'Активный макет',
cardEnabledWidgets: 'Активные виджеты',
stateLoading: 'Загрузка...',
stateEmpty: 'Пока нет данных',
stateError: 'Не удалось загрузить карточку',
statePendingBackend: 'Ожидает интеграции с бэкендом',
never: 'Никогда',
quickActionsTitle: 'Быстрые действия',
actionEditProject: 'Редактировать проект',
actionCategories: 'Категории',
actionProducts: 'Товары',
actionStaticPages: 'Статические страницы',
actionTransactions: 'Транзакции',
actionOrders: 'Заказы',
actionMediaLibrary: 'Медиатека',
actionPreviewMarketplace: 'Просмотр маркетплейса',
activityTitle: 'Недавняя активность',
activityEmpty: 'Пока нет активности. Сохраните или опубликуйте изменение, чтобы увидеть его здесь.',
activityDraftSaved: 'Черновик сохранён',
activityPublished: 'Опубликовано',
healthTitle: 'Состояние системы',
healthAllClear: 'Все проверки пройдены',
healthBootstrapValid: 'Bootstrap корректен',
healthConfigurationValid: 'Конфигурация корректна',
healthMissingTranslations: 'Отсутствуют переводы',
healthInvalidColors: 'Некорректные цвета',
healthInvalidWidgetReferences: 'Некорректные ссылки виджетов',
healthInvalidLayouts: 'Некорректные макеты',
comingSoonTitle: 'Скоро',
comingSoonDescription: 'Этот раздел ещё не реализован. Загляните позже.',
backToDashboard: 'Вернуться на панель управления',
},
staticPages: {
notFound: 'Страница не найдена',
backHome: 'На главную',