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

@@ -345,6 +345,15 @@ const icons = {
<path d="m21 21-4.3-4.3" />
</SvgIcon>
),
'file-text': (
<SvgIcon>
<path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
<line x1="16" y1="13" x2="8" y2="13" />
<line x1="16" y1="17" x2="8" y2="17" />
<line x1="10" y1="9" x2="8" y2="9" />
</SvgIcon>
),
chevron: (
<SvgIcon>
<path d="m9 18 6-6-6-6" />
@@ -561,6 +570,12 @@ const sections: AdminSection[] = [
to: '/admin/email-templates',
permission: 'email_templates:read',
},
{
name: 'admin.nav.infoPages',
icon: 'file-text',
to: '/admin/info-pages',
permission: 'settings:read',
},
{
name: 'admin.nav.updates',
icon: 'refresh',