import React from 'react'
import { Head } from '@inertiajs/react'
import AdminLayout from '../../../Layouts/AdminLayout'
import AnalyticsNav from './AnalyticsNav'
function StatCard({ label, value }) {
return (
{label}
{Number(value || 0).toLocaleString()}
)
}
function formatDelta(delta) {
if (delta === null || delta === undefined) {
return 'new'
}
if (Number(delta) === 0) {
return '0%'
}
return `${Number(delta) > 0 ? '+' : ''}${Number(delta).toLocaleString()}%`
}
function PromptLibraryTrend({ trend }) {
const current = trend?.current || {}
const deltas = trend?.deltas || {}
const items = [
{ label: 'Views', value: Number(current.views || 0).toLocaleString(), delta: deltas.views },
{ label: 'Unique Visitors', value: Number(current.uniqueVisitors || 0).toLocaleString(), delta: deltas.uniqueVisitors },
{ label: 'Engaged Views', value: Number(current.engagedViews || 0).toLocaleString(), delta: deltas.engagedViews },
{ label: 'Engagement Rate', value: `${Number(current.engagementRate || 0).toLocaleString()}%`, delta: deltas.engagementRate },
]
return (
Prompt Library Trend
{trend?.range?.current?.from} to {trend?.range?.current?.to} compared with {trend?.range?.previous?.from} to {trend?.range?.previous?.to}
Popularity {Number(current.popularityScore || 0).toLocaleString()}
{items.map((item) => (
{item.label}
{item.value}
{formatDelta(item.delta)} vs previous
))}
)
}
function PopularPromptPeriodUsage({ usage }) {
const periods = usage?.periods || []
return (
Popular Prompt Period Usage
Which ranking window people actually open on the public popular-prompts page.
{Number(usage?.totalViews || 0).toLocaleString()} views · {Number(usage?.totalVisitors || 0).toLocaleString()} visitors
{periods.length ? periods.map((period) => (
{period.label}
{period.period}
{Number(period.views || 0).toLocaleString()}
Views
{Number(period.uniqueVisitors || 0).toLocaleString()}
Visitors
{Number(period.share || 0).toLocaleString()}%
Share
)) :
No popular prompt period events have been tracked in this range yet.
}
)
}
function ContentList({ title, items = [] }) {
return (
{title}
{items.length ? items.map((item) => (
{item.title}
{item.content_type_label}
{item.popularity_score}
popularity
)) :
No rollup data yet for this range.
}
)
}
export default function AcademyAnalyticsOverview({ nav = [], range, stats, promptLibraryTrend = null, popularPromptPeriodUsage = null, topContent = [], topWeek = [] }) {
return (
Range
{range?.from} to {range?.to}
{promptLibraryTrend ?
: null}
{popularPromptPeriodUsage ?
: null}
)
}