import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
import {
BarChart3,
Users,
Mail,
ShoppingCart,
TrendingUp,
Loader2,
MousePointer,
Eye
} from "lucide-react"
import { useState, useEffect } from "react"
import { useBackInStockAnalytics, useBackInStockNotifications } from "../../hooks/use-back-in-stock"
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table"
import { Badge } from "@/components/ui/badge"
export function AnalyticsTab() {
const [period, setPeriod] = useState<'7days' | '30days' | '90days'>('30days')
const { analytics, loading: analyticsLoading, fetchAnalytics } = useBackInStockAnalytics()
const { notifications, loading: notificationsLoading } = useBackInStockNotifications()
// Refetch analytics when period changes
useEffect(() => {
fetchAnalytics(period)
}, [period, fetchAnalytics])
const stats = analytics?.stats ?? {
totalSubscriptions: 0,
activeSubscriptions: 0,
totalNotificationsSent: 0,
notificationsOpened: 0,
notificationsClicked: 0,
conversions: 0,
openRate: 0,
clickRate: 0,
conversionRate: 0,
}
const topProducts = analytics?.topProducts ?? []
const getStatusBadge = (status: string) => {
switch (status) {
case 'sent':
return
{stats.activeSubscriptions} active
Back in stock notifications
Subscriptions to purchases
Emails opened
Links clicked
Purchases after notification
{product.product_name}
No subscription data yet
)}