feat(landing): фолбэк на глобальную тему кабинета, когда у лендинга своя не задана

У лендинга есть собственное поле background_config (тема на каждый лендинг).
Если оно не заполнено, лендинг показывал голый bg-dark-950, тогда как кабинет
всегда рисует глобальную тему-анимацию (BackgroundRenderer → getAnimationConfig).

Теперь: задан background_config → своя тема лендинга (StaticBackgroundRenderer),
пусто → глобальная тема кабинета (BackgroundRenderer). Обёртка больше не красится
непрозрачным bg-dark-950 — фон рисуется порталом за контентом поверх body #0a0f1a,
ровно как в AppShell. Глобальный конфиг анимации тянется из публичного эндпоинта.
This commit is contained in:
c0mrade
2026-06-03 12:25:20 +03:00
parent 5a6e4589c8
commit 085958342e

View File

@@ -21,7 +21,10 @@ import type {
LandingPaymentMethod,
PurchaseRequest,
} from '../api/landings';
import { StaticBackgroundRenderer } from '../components/backgrounds/BackgroundRenderer';
import {
BackgroundRenderer,
StaticBackgroundRenderer,
} from '../components/backgrounds/BackgroundRenderer';
import { CheckCircleIcon, CheckIcon, DevicesIcon, DownloadIcon } from '@/components/icons';
import LanguageSwitcher from '../components/LanguageSwitcher';
import { cn } from '../lib/utils';
@@ -1105,8 +1108,16 @@ export default function QuickPurchase() {
const showTariffCards = visibleTariffs.length > 1;
return (
<div className={cn('min-h-dvh overflow-x-hidden', !config.background_config && 'bg-dark-950')}>
{config.background_config && <StaticBackgroundRenderer config={config.background_config} />}
<div className="min-h-dvh overflow-x-hidden">
{/* Background: the landing's own per-landing theme when configured, else
fall back to the cabinet's global animated theme (instead of a bare
dark canvas). Both render via a portal behind the content, so the
wrapper stays transparent over the body's #0a0f1a. */}
{config.background_config ? (
<StaticBackgroundRenderer config={config.background_config} />
) : (
<BackgroundRenderer />
)}
<div className="mx-auto max-w-5xl px-4 py-8 sm:px-6 lg:px-8">
{/* Language switcher */}
<div className="mb-4 flex justify-end">