"use client"; // ============================================================================ // Dashboard Home Page // ============================================================================ import React, { useEffect, useState } from "react"; import { DashboardHeader } from "@/components/layout/dashboard-header"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { analyticsApi } from "@/lib/api"; import { formatCurrency, formatNumber, formatMetric, formatPercent, } from "@/lib/utils/format"; import { BarChart3, TrendingUp, Users, ShoppingCart, Loader2, } from "lucide-react"; import type { SpendingAnalytics } from "@/lib/types/api"; import { useTargetChannel } from "@/components/providers/target-channel-provider"; export default function DashboardPage() { const { selectedChannel } = useTargetChannel(); const [spending, setSpending] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (!selectedChannel) { setLoading(false); return; } const loadData = async () => { try { setLoading(true); const data = await analyticsApi.spending({ grouping: "week", target_channel_id: selectedChannel.id, }); setSpending(data); } catch (error) { console.error("Error loading spending data:", error); } finally { setLoading(false); } }; loadData(); }, [selectedChannel]); if (!selectedChannel) { return ( <>

Выберите целевой канал

Для начала работы выберите целевой канал в верхнем меню

); } return ( <>
Всего закупов {loading ? ( ) : ( <>
{formatNumber(spending?.total_cost)}

{formatNumber(0 || 0, true)} за прошлый месяц

)}
Подписчиков привлечено {loading ? ( ) : ( <>
{formatNumber(spending?.total_subscriptions)}

{formatNumber(0 || 0, true)} за прошлый месяц

)}
Средний CPF {loading ? ( ) : ( <>
₽{formatMetric(spending?.avg_cpf)}

{formatPercent(0 || 0, true)} от прошлого месяца

)}
Средний CPM {loading ? ( ) : ( <>
₽{formatMetric(spending?.avg_cpm)}

{formatPercent(0 || 0, true)} от прошлого месяца

)}
Быстрый старт Начните с основных действий → Создать новый закуп → Создать креатив → Импортировать каналы → Посмотреть аналитику
); }