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

@@ -967,6 +967,9 @@ img.twemoji {
.prose table {
@apply mb-4 w-full border-collapse;
display: block;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.prose th {
@@ -978,7 +981,7 @@ img.twemoji {
}
.prose img {
@apply my-4 max-w-full rounded-xl;
@apply my-4 h-auto max-w-full rounded-xl;
}
.prose mark {
@@ -989,6 +992,10 @@ img.twemoji {
@apply my-4 block aspect-video w-full max-w-2xl rounded-xl;
}
.prose video {
@apply my-4 block h-auto w-full max-w-full rounded-xl;
}
/* Light theme prose styles */
.light .prose {
@apply text-champagne-800;
@@ -1070,6 +1077,14 @@ img.twemoji {
@apply border border-champagne-300;
}
.light .prose video {
@apply border border-champagne-300;
}
.light .prose img {
@apply border border-champagne-300;
}
/* Support for plain text with line breaks */
.prose-plain {
@apply whitespace-pre-line;