'use client'; /** * Works / Catalogue Dashboard — Catalogue composition and performance. * * Displays: * - KPI card: total Works * - Pie chart: Works by genre * - Bar chart: Works by rights type (controlled vs uncontrolled) * - Horizontal bar chart: top 10 Works by income * - Line chart: Works added over time (monthly) * - Bar chart: writer split distribution * - DateRangeFilter at the top * * Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8 */ import { useWorksData } from '@/lib/api/queries'; import { useTranslation } from '@/lib/hooks/useTranslation'; import { formatNumber } from '@/lib/utils/format'; import { useCurrencyAxisFormatter } from '@/lib/hooks/useCurrencyFormatter'; import { chartColors } from '@/lib/constants/theme'; import DateRangeFilter from '@/components/dashboard/DateRangeFilter'; import KpiGrid from '@/components/dashboard/KpiGrid'; import KpiCard from '@/components/dashboard/KpiCard'; import ChartGrid from '@/components/dashboard/ChartGrid'; import ChartCard from '@/components/charts/ChartCard'; import LineChartWidget from '@/components/charts/LineChartWidget'; import PieChartWidget from '@/components/charts/PieChartWidget'; import BarChartWidget from '@/components/charts/BarChartWidget'; export default function WorksPage() { const { data, isLoading } = useWorksData(); const t = useTranslation(); const fmtAxis = useCurrencyAxisFormatter(); if (isLoading || !data) { return (

{t.dashboard.loading}

); } const { kpis, byGenre, byRightsType, topByIncome, addedOverTime, writerSplitDistribution } = data; return (
{/* Date Range Filter */} {/* KPI Cards */} {/* Charts */} {/* Pie chart: Works by genre */} {/* Bar chart: Works by rights type */} {/* Horizontal bar chart: top 10 Works by income */} {/* Line chart: Works added over time */} {/* Bar chart: writer split distribution */}
); }