feat: info pages — tab replacement, custom pages on /info, responsive fixes

- Add replaces_tab field to admin editor with conflict detection
- Show custom InfoPages as extra tabs on /info page
- Replace built-in tab content when replacement is configured
- Rich DOMPurify sanitizer for TipTap content (images, video, iframe)
- Fix query race: built-in queries wait for tab-replacements to load
- Horizontal scroll for tabs on mobile, 44px touch targets
- Responsive prose: scrollable tables, h-auto on img/video, light theme borders
- Loyalty tier names truncation, progress bar labels stack on mobile
This commit is contained in:
Fringg
2026-04-24 15:01:11 +03:00
parent c16593aeee
commit 656946952a
9 changed files with 481 additions and 29 deletions

View File

@@ -3393,8 +3393,18 @@
"isActive": "فعال",
"sortOrder": "ترتیب",
"icon": "آیکون (ایموجی)",
"pageType": "نوع صفحه"
"pageType": "نوع صفحه",
"replacesTab": "جایگزینی تب"
},
"replacesTabNone": "بدون جایگزینی",
"replacesTabOptions": {
"faq": "FAQ",
"rules": "قوانین",
"privacy": "حریم خصوصی",
"offer": "پیشنهاد"
},
"replacesTabConflict": "قبلا اختصاص داده شده",
"replacesTabWarning": "صفحه دیگری قبلا این تب را جایگزین کرده است. با ذخیره، آن صفحه حذف خواهد شد.",
"filter": {
"all": "همه",
"page": "صفحات",