feat: information pages — admin editor with TipTap, public viewer

Admin panel:
- New section "Информационные страницы" in admin nav
- Admin list: slug, title, active toggle, edit/delete, sort order
- Admin editor: full TipTap (bold, italic, headings, lists, links,
  image/video upload, alignment, highlight, code blocks)
  with locale tabs (RU/EN/ZH/FA) for title and content
- Create/edit via URL params, slug auto-generation

Public:
- /info/:slug route with DOMPurify sanitized content
- Locale fallback, Telegram safe area, loading skeleton, 404

i18n: all 4 locales
This commit is contained in:
Fringg
2026-04-24 08:11:20 +03:00
parent d43638b34e
commit 7d6d0ba344
10 changed files with 1748 additions and 4 deletions

View File

@@ -1147,7 +1147,8 @@
"landings": "Лендинги",
"referralNetwork": "Реферальная сеть",
"news": "Новости",
"bulkActions": "Массовые действия"
"bulkActions": "Массовые действия",
"infoPages": "Инфо-страницы"
},
"panel": {
"title": "Панель администратора",
@@ -4342,6 +4343,37 @@
"prev": "Назад",
"next": "Далее"
}
},
"infoPages": {
"title": "Информационные страницы",
"subtitle": "Управление статическими информационными страницами",
"create": "Создать страницу",
"edit": "Редактировать",
"save": "Сохранить",
"saving": "Сохранение...",
"saved": "Страница сохранена",
"delete": "Удалить",
"confirmDelete": "Удалить эту страницу?",
"saveError": "Не удалось сохранить страницу. Попробуйте ещё раз.",
"noPages": "Информационных страниц пока нет",
"notFound": "Страница не найдена",
"active": "Активна",
"inactive": "Неактивна",
"localeLabel": "Язык контента",
"fields": {
"slug": "URL-адрес",
"title": "Заголовок",
"content": "Содержание",
"isActive": "Активна",
"sortOrder": "Порядок сортировки",
"icon": "Иконка (эмодзи)"
},
"locales": {
"ru": "Русский",
"en": "Английский",
"zh": "Китайский",
"fa": "Персидский"
}
}
},
"adminUpdates": {