feat: add news section with admin editor and public article view

- NewsSection with animated grid background, category filters, featured cards
- AdminNews list page with toggle publish/featured, pagination
- AdminNewsCreate with TipTap rich text editor, URL validation
- NewsArticle detail page with DOMPurify sanitization, Telegram back button
- Toggle component with WCAG 44px touch targets, role=switch
- Prose styles for highlight marks and responsive iframes
- i18n translations (en, ru, zh, fa)
This commit is contained in:
Fringg
2026-03-23 10:49:46 +03:00
parent 5b12784ab8
commit 99fc33625e
17 changed files with 7750 additions and 70 deletions

View File

@@ -4473,5 +4473,59 @@
"shareModalActivateViaCabinet": "Or via website:",
"copyMessage": "Copy message",
"shareToastCopied": "Message copied"
},
"news": {
"title": "News & Updates",
"filterAll": "All",
"readMore": "Read more",
"readTime": "min read",
"loadMore": "Load more",
"noNews": "No news yet",
"backToHome": "Back",
"views": "views",
"admin": {
"title": "News Management",
"create": "Create Article",
"edit": "Edit",
"delete": "Delete",
"confirmDelete": "Delete this article?",
"published": "Published",
"draft": "Draft",
"featured": "Featured",
"titleLabel": "Title",
"slugLabel": "URL Slug",
"categoryLabel": "Category",
"categoryColorLabel": "Category Color",
"tagLabel": "Tag",
"excerptLabel": "Short Description",
"contentLabel": "Content",
"imageLabel": "Featured Image",
"readTimeLabel": "Read Time (min)",
"save": "Save",
"saving": "Saving...",
"saveError": "Failed to save article. Please try again.",
"saved": "Article saved",
"deleted": "Article deleted",
"toolbar": {
"bold": "Bold",
"italic": "Italic",
"underline": "Underline",
"strikethrough": "Strikethrough",
"heading1": "Heading 1",
"heading2": "Heading 2",
"heading3": "Heading 3",
"bulletList": "Bullet List",
"orderedList": "Ordered List",
"blockquote": "Blockquote",
"codeBlock": "Code Block",
"alignLeft": "Align Left",
"alignCenter": "Align Center",
"highlight": "Highlight",
"link": "Link",
"image": "Image",
"imageUrlPrompt": "Image URL:",
"linkUrlPrompt": "URL:"
}
}
}
}