Merge PR #478: stagger-анимация скрывала контент, пришедший из API после mount

framer-motion stagger раздаёт детям команду показаться один раз при монтировании
родителя; дети, смонтированные позже (когда resolve-ится react-query), оставались
в initial (opacity:0) — пустые страницы после F5/прямого захода.

- ConnectedAccounts, SavedCards: key={isLoading?...} перемонтирует контейнер
  после загрузки → stagger проигрывается со всеми детьми;
- Balance (2), Profile, Support: явные initial/animate на условных staggerItem —
  элемент самоанимируется при mount, вне оркестрации родителя;
- Wheel: исправлены несуществующие варианты hidden/show → initial/animate
  (stagger истории спинов молча не работал).

Валидация на смердженном дереве: tsc, biome lint/format, build — чисто.
Правки #477 и #478 в общих файлах (ConnectedAccounts/Profile) сосуществуют.
This commit is contained in:
Fringg
2026-07-12 23:45:08 +03:00
6 changed files with 28 additions and 10 deletions

View File

@@ -325,9 +325,11 @@ export default function Profile() {
</Card>
</motion.div>
{/* Referral Link Widget */}
{/* Referral Link Widget — self-animated: mounts after the referral queries
resolve, when the parent stagger orchestration has already finished and
would leave it stuck at opacity 0 */}
{referralTerms?.is_enabled && referralLink && (
<motion.div variants={staggerItem}>
<motion.div variants={staggerItem} initial="initial" animate="animate">
<Card>
<div className="mb-4 flex items-center justify-between">
<h2 className="text-lg font-semibold text-dark-100">{t('referral.yourLink')}</h2>