feat: landing analytics goals, daily bar chart, referrer tracking, contact persistence

- Add per-landing analytics goals (view/click) with admin editor toggle
- Add sticky pay button option for mobile landing pages
- Add daily purchases bar chart (created vs paid) to landing stats
- Replace single purchase count with created/paid split in stats summary
- Add referrer tracking to purchases with hostname display in stats
- Add time display to purchase cards alongside date
- Pass user timezone to stats API for correct daily grouping
- Clamp referrer (500 chars) and subid (255 chars) to backend limits
- Persist contact value per-landing-slug in localStorage
- Fire buy_success analytics goal on successful delivery
- Export USER_TIMEZONE from format utils
- Add analytics/stats translations for fa.json and zh.json locales

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Fringg
2026-04-29 09:17:52 +03:00
parent a50bd39df2
commit 020f4c95e2
11 changed files with 482 additions and 79 deletions

View File

@@ -180,7 +180,19 @@ function SortableLandingCard({
</div>
<div className="text-sm text-dark-400">
<span>
{landing.purchase_stats.total} {t('admin.landings.purchaseCount')}
{landing.purchase_stats.total}
<span className="ml-1 text-dark-600">
{t('admin.landings.stats.created', 'created')}
</span>
<span className="mx-1 text-dark-600">/</span>
<span className="text-success-400">
{landing.purchase_stats.paid +
landing.purchase_stats.delivered +
landing.purchase_stats.pending_activation}
</span>
<span className="ml-1 text-dark-600">
{t('admin.landings.stats.paid', 'paid')}
</span>
</span>
</div>
</div>