@exulu/frontend 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +163 -160
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +2 -2
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +5 -5
- package/dist/.next/server/chunks/2270.js +145 -132
- package/dist/.next/server/chunks/{5084.js → 2587.js} +1 -1
- package/dist/.next/server/chunks/3503.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -1
- package/dist/.next/server/chunks/7944.js +1 -1
- package/dist/.next/server/chunks/8286.js +1 -1
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1707-06e693c4a709c147.js +2 -0
- package/dist/.next/static/chunks/1707-06e693c4a709c147.js.map +1 -0
- package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js → 1957-34f17de1e14e45de.js} +1 -1
- package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js.map → 1957-34f17de1e14e45de.js.map} +1 -1
- package/dist/.next/static/chunks/{2293-48a95904b834eccc.js → 2293-592e22dde70d632b.js} +1 -1
- package/dist/.next/static/chunks/{2293-48a95904b834eccc.js.map → 2293-592e22dde70d632b.js.map} +1 -1
- package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js +2 -0
- package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js.map +1 -0
- package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js +2 -0
- package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js.map +1 -0
- package/dist/.next/static/chunks/3246-1812de142455a0ac.js +2 -0
- package/dist/.next/static/chunks/3246-1812de142455a0ac.js.map +1 -0
- package/dist/.next/static/chunks/{3750-e3d1b2cccd265190.js → 3750-d0ae5d73288be8de.js} +2 -2
- package/dist/.next/static/chunks/3750-d0ae5d73288be8de.js.map +1 -0
- package/dist/.next/static/chunks/{3832-d7782d6a2771ae6c.js → 3832-0b8edbcc671f4cc0.js} +2 -2
- package/dist/.next/static/chunks/3832-0b8edbcc671f4cc0.js.map +1 -0
- package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js → 4386-21ac377a719ebdfa.js} +1 -1
- package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js.map → 4386-21ac377a719ebdfa.js.map} +1 -1
- package/dist/.next/static/chunks/4612-da512770f949561a.js +2 -0
- package/dist/.next/static/chunks/4612-da512770f949561a.js.map +1 -0
- package/dist/.next/static/chunks/{5825-efd4db1da512bd7f.js → 4760-d5ceb992b68e35ca.js} +2 -2
- package/dist/.next/static/chunks/4760-d5ceb992b68e35ca.js.map +1 -0
- package/dist/.next/static/chunks/{6367-59655a85d75e19be.js → 6367-aa5020cbea5354e2.js} +1 -1
- package/dist/.next/static/chunks/{6367-59655a85d75e19be.js.map → 6367-aa5020cbea5354e2.js.map} +1 -1
- package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js +2 -0
- package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js.map +1 -0
- package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js → 8030-5d38a3f1a4ad44cb.js} +1 -1
- package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js.map → 8030-5d38a3f1a4ad44cb.js.map} +1 -1
- package/dist/.next/static/chunks/9105-143f12397a76a332.js +2 -0
- package/dist/.next/static/chunks/9105-143f12397a76a332.js.map +1 -0
- package/dist/.next/static/chunks/9877-378934ae38c6760c.js +2 -0
- package/dist/.next/static/chunks/9877-378934ae38c6760c.js.map +1 -0
- package/dist/.next/static/chunks/{9953-95900a236271a222.js → 9953-02d5b52553a5c573.js} +2 -2
- package/dist/.next/static/chunks/{9953-95900a236271a222.js.map → 9953-02d5b52553a5c573.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js → page-37918149a8e909b0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js.map → page-37918149a8e909b0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js → page-9cff3b35b042d46a.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js.map → page-9cff3b35b042d46a.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js → layout-ba702af6bb56baa2.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js.map → layout-ba702af6bb56baa2.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js → page-8b00a98d285829b1.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js.map → page-8b00a98d285829b1.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js → page-1e978e117d5086a1.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js.map → page-1e978e117d5086a1.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js → page-c54b4bc8d0ac4ac8.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js.map → page-c54b4bc8d0ac4ac8.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-0c7c1b0e1713bf60.js → layout-dfdb5c1cdc7ddefc.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-0c7c1b0e1713bf60.js.map → layout-dfdb5c1cdc7ddefc.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-a7728cf9b0524489.js → page-c956d9892676aa4f.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c956d9892676aa4f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/{page-8b38d8d29f275704.js → page-944bfc4f0a001e4c.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-944bfc4f0a001e4c.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js +2 -0
- package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js → page-6c0cd9ef20cd1461.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js.map → page-6c0cd9ef20cd1461.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js → page-5e2be54e76b8509c.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js.map → page-5e2be54e76b8509c.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js → layout-f2e0f42a08c96bb8.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js.map → layout-f2e0f42a08c96bb8.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js → page-2c03bbe32800acc3.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js.map → page-2c03bbe32800acc3.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js → page-b977b5c658004717.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js.map → page-b977b5c658004717.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3acc39cb8a718331.js → page-08596ece49a811b9.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/token/page-08596ece49a811b9.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js → page-49212081be40aeca.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js.map → page-49212081be40aeca.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js → page-9ce762918374f616.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js.map → page-9ce762918374f616.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js → page-0e2b7038546d9f7a.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js.map → page-0e2b7038546d9f7a.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js → page-141d5d3f735454fe.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js.map → page-141d5d3f735454fe.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js → page-fb1bb3ea6f7cae47.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js.map → page-fb1bb3ea6f7cae47.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/workflows/{page-e38f9456120dab69.js → page-2b839fdbc55c297b.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-2b839fdbc55c297b.js.map +1 -0
- package/dist/.next/static/css/0f539b50cca35462.css +4 -0
- package/dist/.next/static/css/0f539b50cca35462.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/package.json +1 -1
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +0 -2
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +0 -1
- package/dist/.next/static/chunks/3171-6996819b8863d41f.js +0 -2
- package/dist/.next/static/chunks/3171-6996819b8863d41f.js.map +0 -1
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +0 -1
- package/dist/.next/static/chunks/3832-d7782d6a2771ae6c.js.map +0 -1
- package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js +0 -2
- package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js.map +0 -1
- package/dist/.next/static/chunks/5110-098aa924c3108fa4.js +0 -2
- package/dist/.next/static/chunks/5110-098aa924c3108fa4.js.map +0 -1
- package/dist/.next/static/chunks/5825-efd4db1da512bd7f.js.map +0 -1
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +0 -2
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +0 -1
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js +0 -2
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +0 -1
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +0 -2
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-8b38d8d29f275704.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/explorer/page-e6b1c034c07776e2.js +0 -2
- package/dist/.next/static/chunks/app/(application)/explorer/page-e6b1c034c07776e2.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/token/page-3acc39cb8a718331.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +0 -1
- package/dist/.next/static/css/9c08ae5d990a6b14.css +0 -4
- package/dist/.next/static/css/9c08ae5d990a6b14.css.map +0 -1
- /package/dist/.next/static/{3j63p6b3zZZB_v1Hn8Mxp → exslB-IPXi_veOKFA4L1Z}/_buildManifest.js +0 -0
- /package/dist/.next/static/{3j63p6b3zZZB_v1Hn8Mxp → exslB-IPXi_veOKFA4L1Z}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/dashboard/page-4a1956febf5235b6.js","mappings":"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","sources":["webpack://_N_E/?d82f","webpack://_N_E/./components/dashboard/summary-cards.tsx","webpack://_N_E/./components/dashboard/leaderboard.tsx","webpack://_N_E/./app/(application)/dashboard/page.tsx","webpack://_N_E/./components/ui/calendar.tsx","webpack://_N_E/./components/dashboard/date-range-selector.tsx","webpack://_N_E/./components/dashboard/donut-chart.tsx","webpack://_N_E/./components/dashboard/time-series-chart.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/chart.tsx","webpack://_N_E/./components/ui/popover.tsx","webpack://_N_E/./components/ui/select.tsx","webpack://_N_E/./components/ui/skeleton.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./types/enums/statistics.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/dashboard/page.tsx\");\n","\"use client\";\n\nimport { DocumentNode, useQuery } from \"@apollo/client\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { subDays, subHours } from \"date-fns\";\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\";\nimport { useMemo } from \"react\";\n\ninterface SummaryCardProps {\n title: string;\n currentValue: number;\n previousValue: number;\n isLoading?: boolean;\n}\n\nfunction SummaryCardElement({ title, currentValue, previousValue, isLoading }: SummaryCardProps) {\n if (isLoading) {\n return (\n <Card className=\"animate-pulse\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-3\">\n <CardTitle className=\"text-sm font-medium text-slate-700 dark:text-slate-300\">{title}</CardTitle>\n <div className=\"p-2 rounded-full\">\n <div className=\"h-4 w-4 rounded\" />\n </div>\n </CardHeader>\n <CardContent>\n <Skeleton className=\"h-8 w-24 mb-3\" />\n <div className=\"space-y-1\">\n <Skeleton className=\"h-3 w-28\" />\n <Skeleton className=\"h-3 w-20\" />\n </div>\n </CardContent>\n </Card>\n );\n }\n\n const percentageChange = previousValue > 0 ? ((currentValue - previousValue) / previousValue) * 100 : 0;\n const isPositive = percentageChange > 0;\n const isNeutral = percentageChange === 0;\n\n const TrendIcon = isNeutral ? Minus : isPositive ? TrendingUp : TrendingDown;\n const trendColor = isNeutral ? \"text-muted-foreground\" : isPositive ? \"text-green-600\" : \"text-red-600\";\n\n return (\n <Card className=\"hover:shadow-lg transition-all duration-300 hover:-translate-y-1\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-3\">\n <CardTitle className=\"text-sm font-medium text-slate-700 dark:text-slate-300\">{title}</CardTitle>\n <div className={`p-2 rounded-full ${isNeutral ? 'bg-gray-200 dark:bg-gray-700' : isPositive ? 'bg-green-100 dark:bg-green-900/30' : 'bg-red-100 dark:bg-red-900/30'}`}>\n <TrendIcon className={`h-4 w-4 ${trendColor}`} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"text-3xl font-bold bg-gradient-to-r from-slate-900 to-slate-700 dark:from-slate-100 dark:to-slate-300 bg-clip-text text-transparent mb-2\">\n {currentValue.toLocaleString()}\n </div>\n <p className=\"text-xs text-slate-600 dark:text-slate-400\">\n <span className={`font-medium ${trendColor}`}>\n {isNeutral ? \"No change\" : `${Math.abs(percentageChange).toFixed(1)}% ${isPositive ? \"increase\" : \"decrease\"}`}\n </span>\n <br />\n <span className=\"text-slate-500 dark:text-slate-500\">\n vs 7-day avg: {previousValue.toLocaleString()}\n </span>\n </p>\n </CardContent>\n </Card>\n );\n}\n\nexport function SummaryCard({\n query,\n entity,\n title\n}: {\n query: DocumentNode,\n entity: \"agent_sessions\" | \"jobs\" | \"tracking\",\n title: string\n}) {\n // Stabilize dates to prevent constant re-renders\n const dates = useMemo(() => {\n const now = new Date();\n return {\n now: now.toISOString(),\n twentyFourHoursAgo: subHours(now, 24).toISOString(),\n sevenDaysAgo: subDays(now, 7).toISOString()\n };\n }, []); // Empty dependency array means this only runs once\n\n // 24h data\n const { data: data24h, loading: loading24h } = useQuery(query, {\n variables: { from: dates.twentyFourHoursAgo, to: dates.now }\n });\n\n // 7-day data (for average calculation)\n const { data: data7d, loading: loading7d } = useQuery(query, {\n variables: { from: dates.sevenDaysAgo, to: dates.now }\n });\n\n\n // Calculate totals\n const getTotal = (data: any) => {\n if (!data || !Array.isArray(data)) return 0;\n return data.reduce((sum: number, item: any) => sum + (item.count || 0), 0);\n };\n\n const twentyFourHourTotal = getTotal(data24h?.[`${entity}Statistics`]);\n\n // Calculate 7-day averages (divide by 7 for daily average)\n const sevenDayAverage = Math.round(getTotal(data7d?.[`${entity}Statistics`]) / 7);\n\n const isLoading = \n loading24h\n loading7d\n\n return (\n <SummaryCardElement\n title={`${title} (24h)`}\n currentValue={twentyFourHourTotal}\n previousValue={sevenDayAverage}\n isLoading={isLoading}\n />\n );\n}","\"use client\";\n\nimport { DocumentNode, useQuery } from \"@apollo/client\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Trophy, Medal, Award } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport { STATISTICS_TYPE } from \"@/types/enums/statistics\";\n\ninterface LeaderboardEntry {\n name: string;\n value: number;\n rank: number;\n}\n\ninterface LeaderboardProps {\n title: string;\n query: DocumentNode;\n type?: STATISTICS_TYPE;\n dateRange: { from: Date; to: Date };\n icon?: React.ReactNode;\n subtitle?: string;\n valueLabel?: string;\n emptyMessage?: string;\n maxEntries?: number;\n nameFilter?: string | string[];\n hydrationQuery?: DocumentNode;\n hydrationField?: string;\n}\n\nexport function Leaderboard({\n title,\n query,\n type,\n dateRange,\n icon,\n subtitle,\n valueLabel = \"calls\",\n emptyMessage = \"No data available\",\n maxEntries = 10,\n nameFilter,\n hydrationQuery,\n hydrationField\n}: LeaderboardProps) {\n const dates = useMemo(() => ({\n from: dateRange.from.toISOString(),\n to: dateRange.to.toISOString()\n }), [dateRange]);\n\n // Build query variables based on query type and filters\n const queryVariables = useMemo(() => {\n const baseVars = {\n from: dates.from,\n to: dates.to\n };\n\n // Add names filter if provided (for user/project/agent statistics)\n if (nameFilter) {\n return {\n ...baseVars,\n names: Array.isArray(nameFilter) ? nameFilter : [nameFilter]\n };\n }\n\n // Add type if provided (for other statistics)\n return type ? { ...baseVars, type } : baseVars;\n }, [dates.from, dates.to, type, nameFilter]);\n\n const { data, loading } = useQuery(query, {\n variables: queryVariables\n });\n\n // Extract IDs for hydration\n const idsToHydrate = useMemo(() => {\n if (!data?.trackingStatistics || !hydrationQuery) return [];\n\n return data.trackingStatistics\n .filter((item: any) => item?.group && item?.count)\n .map((item: any) => item.group)\n .slice(0, maxEntries);\n }, [data, maxEntries, hydrationQuery]);\n\n console.log(\"[EXULU] IDs to hydrate:\", idsToHydrate);\n console.log(\"[EXULU] Hydration query:\", hydrationQuery);\n\n // Fetch names if hydration is needed\n const { data: hydrationData, loading: hydrationLoading } = useQuery(hydrationQuery || query, {\n variables: { ids: idsToHydrate },\n skip: !hydrationQuery || idsToHydrate.length === 0\n });\n\n console.log(\"[EXULU] Hydration data:\", hydrationData);\n\n const leaderboardData = useMemo(() => {\n if (!data?.trackingStatistics) return [];\n\n const entries: LeaderboardEntry[] = data.trackingStatistics\n .filter((item: any) => item?.group && item?.count)\n .map((item: any) => {\n let displayName = item.group;\n\n // Hydrate the name if hydration data is available\n if (hydrationData && hydrationField) {\n const hydratedItem = hydrationData[hydrationField]?.find(\n (h: any) => {\n console.log(\"[EXULU] Hydrated item:\", h);\n console.log(\"[EXULU] Item group:\", item.group);\n if (typeof h.id === \"number\") {\n return h.id === parseInt(item.group);\n } else {\n return h.id === item.group;\n }\n }\n );\n if (hydratedItem) {\n // Use name, or fallback to firstname + lastname, or email\n displayName = hydratedItem.name ||\n (hydratedItem.firstname && hydratedItem.lastname\n ? `${hydratedItem.firstname} ${hydratedItem.lastname}`\n : hydratedItem.email) ||\n item.group;\n }\n }\n\n return {\n name: displayName,\n value: item.count\n };\n })\n .sort((a: any, b: any) => b.value - a.value)\n .slice(0, maxEntries)\n .map((item: any, index: number) => ({\n ...item,\n rank: index + 1\n }));\n\n return entries;\n }, [data, hydrationData, hydrationField, maxEntries]);\n\n const getRankIcon = (rank: number) => {\n switch (rank) {\n case 1:\n return <Trophy className=\"h-5 w-5 text-yellow-500\" />;\n case 2:\n return <Medal className=\"h-5 w-5 text-gray-400\" />;\n case 3:\n return <Award className=\"h-5 w-5 text-amber-700\" />;\n default:\n return <span className=\"text-sm font-semibold text-muted-foreground\">#{rank}</span>;\n }\n };\n\n const getRankColor = (rank: number) => {\n switch (rank) {\n case 1:\n return \"bg-gradient-to-r from-yellow-50 to-yellow-100 dark:from-yellow-900/20 dark:to-yellow-800/20 border-yellow-200 dark:border-yellow-800\";\n case 2:\n return \"bg-gradient-to-r from-gray-50 to-gray-100 dark:from-gray-800/20 dark:to-gray-700/20 border-gray-200 dark:border-gray-700\";\n case 3:\n return \"bg-gradient-to-r from-amber-50 to-amber-100 dark:from-amber-900/20 dark:to-amber-800/20 border-amber-200 dark:border-amber-800\";\n default:\n return \"bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-700\";\n }\n };\n\n if (loading || (hydrationQuery && hydrationLoading)) {\n return (\n <Card className=\"h-full flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-xl font-bold flex items-center gap-2\">\n {icon}\n {title}\n </CardTitle>\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n </CardHeader>\n <CardContent className=\"flex-1 space-y-3 overflow-auto\">\n {[...Array(5)].map((_, i) => (\n <Skeleton key={i} className=\"h-16 w-full\" />\n ))}\n </CardContent>\n </Card>\n );\n }\n\n if (!leaderboardData.length) {\n return (\n <Card className=\"h-full flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-xl font-bold flex items-center gap-2\">\n {icon}\n {title}\n </CardTitle>\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n </CardHeader>\n <CardContent className=\"flex-1 flex items-center justify-center\">\n <p className=\"text-muted-foreground text-sm\">{emptyMessage}</p>\n </CardContent>\n </Card>\n );\n }\n\n const maxValue = leaderboardData[0]?.value || 1;\n\n return (\n <Card className=\"h-full flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-xl font-bold flex items-center gap-2\">\n {icon}\n {title}\n </CardTitle>\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n </CardHeader>\n <CardContent className=\"flex-1 space-y-2 overflow-auto\">\n {leaderboardData.map((entry) => {\n const percentage = (entry.value / maxValue) * 100;\n\n return (\n <div\n key={entry.name}\n className={`relative overflow-hidden rounded-lg border-2 p-3 transition-all duration-300 hover:shadow-md hover:scale-105 ${getRankColor(entry.rank)}`}\n >\n {/* Progress bar background */}\n <div\n className=\"absolute inset-0 bg-gradient-to-r from-blue-100/50 to-transparent dark:from-blue-900/20 transition-all duration-500\"\n style={{ width: `${percentage}%` }}\n />\n\n {/* Content */}\n <div className=\"relative flex items-center justify-between gap-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <div className=\"flex-shrink-0\">\n {getRankIcon(entry.rank)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-semibold text-sm truncate\" title={entry.name}>\n {entry.name}\n </p>\n {entry.rank <= 3 && (\n <p className=\"text-xs text-muted-foreground\">\n {entry.rank === 1 ? \"Top performer\" : entry.rank === 2 ? \"Runner up\" : \"Third place\"}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"flex-shrink-0 text-right\">\n <p className=\"text-lg font-bold text-slate-900 dark:text-slate-100\">\n {entry.value.toLocaleString()}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {valueLabel}\n </p>\n </div>\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport { subDays } from \"date-fns\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { DateRange } from \"react-day-picker\";\nimport { STATISTICS_TYPE, STATISTICS_TYPE_ENUM } from \"@/types/enums/statistics\";\nimport { SummaryCard } from \"@/components/dashboard/summary-cards\";\nimport { DateRangeSelector } from \"@/components/dashboard/date-range-selector\";\nimport { TimeSeriesChart } from \"@/components/dashboard/time-series-chart\";\nimport { DonutChart } from \"@/components/dashboard/donut-chart\";\nimport { Leaderboard } from \"@/components/dashboard/leaderboard\";\nimport {\n GET_AGENT_SESSIONS_STATISTICS,\n GET_WORKFLOW_RUNS_STATISTICS,\n GET_AGENT_RUN_STATISTICS,\n GET_FUNCTION_CALLS_STATISTICS,\n GET_TOKEN_USAGE_STATISTICS,\n GET_USER_STATISTICS,\n GET_PROJECT_STATISTICS,\n GET_AGENT_STATISTICS,\n GET_USERS_BY_IDS,\n GET_PROJECTS_BY_IDS\n} from \"@/queries/queries\";\nimport { Users, Layers, Bot } from \"lucide-react\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function DashboardPage() {\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\n from: subDays(new Date(), 14),\n to: new Date()\n });\n\n const [selectedType, setSelectedType] = useState<STATISTICS_TYPE>(\"AGENT_RUN\");\n const [unit, setUnit] = useState<\"tokens\" | \"count\">(\"count\");\n const [groupBy, setGroupBy] = useState<string>(\"label\");\n const [leaderboardView, setLeaderboardView] = useState<\"count\" | \"tokens\">(\"count\");\n\n return (\n <div className=\"flex-1 flex flex-col p-8 pt-6 h-screen\">\n {/* Header Section */}\n <div className=\"flex items-center justify-between mb-8\">\n <div className=\"space-y-2\">\n <h2 className=\"text-4xl font-bold tracking-tight bg-clip-text\">\n Analytics Dashboard\n </h2>\n <p className=\"text-lg\">\n Monitor your AI workflows and performance metrics.\n </p>\n </div>\n\n {/* Date Range Selector - moved to header */}\n <div className=\"flex items-center space-x-2\">\n <DateRangeSelector\n dateRange={dateRange}\n onDateRangeChange={setDateRange}\n maxDays={30}\n />\n </div>\n </div>\n\n {/* Summary Cards - Enhanced with better spacing */}\n <div className=\"mb-8\">\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-5\">\n <SummaryCard query={GET_AGENT_SESSIONS_STATISTICS} entity=\"agent_sessions\" title=\"Agent Sessions\" />\n <SummaryCard query={GET_AGENT_RUN_STATISTICS} entity=\"tracking\" title=\"Agent Calls\" />\n <SummaryCard query={GET_TOKEN_USAGE_STATISTICS} entity=\"tracking\" title=\"Token Usage\" />\n <SummaryCard query={GET_WORKFLOW_RUNS_STATISTICS} entity=\"jobs\" title=\"Workflow Runs\" />\n <SummaryCard query={GET_FUNCTION_CALLS_STATISTICS} entity=\"tracking\" title=\"Function Calls\" />\n </div>\n </div>\n\n {/* Charts Grid - Improved layout and spacing */}\n <div className=\"flex-1 grid gap-6 md:grid-cols-3\">\n <div className=\"rounded-lg border md:col-span-2 p-6 flex flex-col\">\n <TimeSeriesChart\n dateRange={dateRange}\n selectedType={selectedType}\n onTypeChange={setSelectedType}\n onUnitChange={setUnit}\n unit={unit}\n unitOptions={[\n { value: 'tokens', label: 'Tokens' },\n { value: 'count', label: 'Count' }\n ]}\n dataTypes={[\n STATISTICS_TYPE_ENUM.CONTEXT_RETRIEVE,\n STATISTICS_TYPE_ENUM.SOURCE_UPDATE,\n STATISTICS_TYPE_ENUM.EMBEDDER_UPSERT,\n STATISTICS_TYPE_ENUM.EMBEDDER_GENERATE,\n STATISTICS_TYPE_ENUM.EMBEDDER_DELETE,\n STATISTICS_TYPE_ENUM.WORKFLOW_RUN,\n STATISTICS_TYPE_ENUM.CONTEXT_UPSERT,\n STATISTICS_TYPE_ENUM.TOOL_CALL,\n STATISTICS_TYPE_ENUM.AGENT_RUN\n ]}\n />\n </div>\n <div className=\"rounded-lg border p-6 flex flex-col\">\n <DonutChart\n groupByOptions={[\n { value: 'label', label: 'Label' },\n { value: 'user', label: 'User' },\n { value: 'role', label: 'Role' }\n ]}\n dateRange={dateRange}\n selectedType={selectedType}\n groupBy={groupBy}\n unit={leaderboardView === \"count\" ? \"count\" : \"tokens\"}\n onGroupByChange={setGroupBy}\n />\n </div>\n </div>\n\n {/* Leaderboards Section */}\n <div className=\"mt-8 mb-5\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-2xl font-bold\">Leaderboards</h3>\n <div className=\"flex items-center gap-2 bg-secondary-foreground/10 dark:bg-secondary-foreground/20 p-1 rounded-lg\">\n <button\n onClick={() => setLeaderboardView(\"count\")}\n className={`px-4 py-2 rounded-md text-sm font-medium transition-all ${\n leaderboardView === \"count\"\n ? \"bg-white dark:bg-primary shadow-sm text-secondary\"\n : \"hover:text-primary dark:hover:text-primary\"\n }`}\n >\n Count\n </button>\n <button\n onClick={() => setLeaderboardView(\"tokens\")}\n className={`px-4 py-2 rounded-md text-sm font-medium transition-all ${\n leaderboardView === \"tokens\"\n ? \"bg-white dark:bg-primary shadow-sm text-secondary\"\n : \"hover:text-primary dark:hover:text-primary\"\n }`}\n >\n Tokens\n </button>\n </div>\n </div>\n <div className=\"grid gap-6 md:grid-cols-3 mb-5\">\n <Leaderboard\n title=\"Top Users\"\n subtitle={leaderboardView === \"count\" ? \"Most active users by agent calls\" : \"Most active users by token usage\"}\n query={GET_USER_STATISTICS}\n dateRange={{\n from: dateRange?.from || subDays(new Date(), 14),\n to: dateRange?.to || new Date()\n }}\n icon={<Users className=\"h-5 w-5 text-blue-500\" />}\n valueLabel={leaderboardView === \"count\" ? \"calls\" : \"tokens\"}\n maxEntries={10}\n nameFilter={leaderboardView === \"count\" ? [\"count\"] : [\"inputTokens\", \"outputTokens\"]}\n hydrationQuery={GET_USERS_BY_IDS}\n hydrationField=\"userByIds\"\n />\n <Leaderboard\n title=\"Top Projects\"\n subtitle={leaderboardView === \"count\" ? \"Most active projects by agent calls\" : \"Most active projects by token usage\"}\n query={GET_PROJECT_STATISTICS}\n dateRange={{\n from: dateRange?.from || subDays(new Date(), 14),\n to: dateRange?.to || new Date()\n }}\n icon={<Layers className=\"h-5 w-5 text-purple-500\" />}\n valueLabel={leaderboardView === \"count\" ? \"calls\" : \"tokens\"}\n maxEntries={10}\n nameFilter={leaderboardView === \"count\" ? [\"count\"] : [\"inputTokens\", \"outputTokens\"]}\n hydrationQuery={GET_PROJECTS_BY_IDS}\n hydrationField=\"projectByIds\"\n />\n <Leaderboard\n title=\"Top Agents\"\n subtitle={leaderboardView === \"count\" ? \"Most used agents by call count\" : \"Most used agents by token usage\"}\n query={GET_AGENT_STATISTICS}\n dateRange={{\n from: dateRange?.from || subDays(new Date(), 14),\n to: dateRange?.to || new Date()\n }}\n icon={<Bot className=\"h-5 w-5 text-green-500\" />}\n valueLabel={leaderboardView === \"count\" ? \"calls\" : \"tokens\"}\n maxEntries={10}\n nameFilter={leaderboardView === \"count\" ? [\"count\"] : [\"inputTokens\", \"outputTokens\"]}\n />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\",\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ ...props }) => <ChevronLeft className=\"size-4\" />,\n IconRight: ({ ...props }) => <ChevronRight className=\"size-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon } from \"@radix-ui/react-icons\";\nimport { format, subDays, differenceInDays, addDays } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\n\ninterface DateRangeSelectorProps {\n dateRange: DateRange | undefined;\n maxDays?: number;\n onDateRangeChange: (dateRange: DateRange | undefined) => void;\n className?: string;\n}\n\nexport function DateRangeSelector({ dateRange, onDateRangeChange, className, maxDays = 30 }: DateRangeSelectorProps) {\n const { toast } = useToast();\n\n const handleDateRangeChange = (newRange: DateRange | undefined) => {\n if (newRange?.from && newRange?.to) {\n const daysDifference = differenceInDays(newRange.to, newRange.from);\n if (daysDifference > maxDays) {\n // Show toast notification\n toast({\n title: \"Date range too large\",\n description: `Please select a date range of ${maxDays} days or less.`,\n variant: \"destructive\",\n });\n return;\n }\n }\n onDateRangeChange(newRange);\n };\n\n // Disable dates that would create a range > maxDays\n const disabledDays = React.useMemo(() => {\n if (!dateRange?.from) return [];\n \n const fromDate = dateRange.from;\n const minDate = addDays(fromDate, -maxDays);\n const maxDate = addDays(fromDate, maxDays);\n \n return [\n { before: minDate },\n { after: maxDate }\n ];\n }, [dateRange?.from, maxDays]);\n\n return (\n <div className={cn(\"grid gap-2\", className)}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n id=\"date\"\n variant={\"outline\"}\n className={cn(\n \"w-[260px] justify-start text-left font-normal\",\n !dateRange && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateRange?.from ? (\n dateRange.to ? (\n <>\n {format(dateRange.from, \"LLL dd, y\")} -{\" \"}\n {format(dateRange.to, \"LLL dd, y\")}\n </>\n ) : (\n format(dateRange.from, \"LLL dd, y\")\n )\n ) : (\n <span>Pick a date range</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"end\">\n <Calendar\n initialFocus\n mode=\"range\"\n defaultMonth={dateRange?.from}\n selected={dateRange}\n onSelect={handleDateRangeChange}\n disabled={disabledDays}\n numberOfMonths={2}\n />\n <div className=\"p-3 pt-0 text-xs text-muted-foreground border-t\">\n Maximum range: {maxDays} days\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_DONUT_STATISTICS } from \"@/queries/queries\";\nimport { STATISTICS_TYPE } from \"@/types/enums/statistics\";\nimport { PieChart, Pie, Cell } from 'recharts';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\";\nimport { DateRange } from \"react-day-picker\";\n\ninterface DonutChartProps {\n groupByOptions: { label: string, value: string }[];\n dateRange: DateRange | undefined;\n selectedType: STATISTICS_TYPE;\n groupBy: string;\n onGroupByChange: (groupBy: string) => void;\n unit: \"tokens\" | \"count\";\n}\n\nconst CHART_COLORS = [\n \"hsl(var(--chart-1))\",\n \"hsl(var(--chart-2))\",\n \"hsl(var(--chart-3))\",\n \"hsl(var(--chart-4))\",\n \"hsl(var(--chart-5))\",\n \"hsl(var(--chart-6))\",\n \"hsl(var(--chart-7))\",\n \"hsl(var(--chart-8))\",\n \"hsl(var(--chart-9))\",\n \"hsl(var(--chart-10))\"\n];\n\nfunction transformGroupValue(value: string): string {\n if (!value || typeof value !== 'string') return 'Unknown';\n\n // Handle various formats and make them user-friendly\n return value\n .replace(/_/g, ' ')\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nexport function DonutChart({ groupByOptions, dateRange, selectedType, groupBy, onGroupByChange, unit }: DonutChartProps) {\n const { data, loading, error } = useQuery(GET_DONUT_STATISTICS, {\n variables: {\n type: selectedType,\n groupBy,\n from: dateRange?.from?.toISOString(),\n to: dateRange?.to?.toISOString(),\n names: unit === \"tokens\" ? [\"inputTokens\", \"outputTokens\"] : [\"count\"]\n },\n skip: !dateRange?.from || !dateRange?.to\n });\n\n const { chartData, chartConfig } = React.useMemo(() => {\n if (!data?.trackingStatistics) return { chartData: [], chartConfig: {} };\n\n const sortedData = data.trackingStatistics\n .map((item: any, index: number) => ({\n name: transformGroupValue(item?.group),\n value: item?.count,\n fill: CHART_COLORS[index % CHART_COLORS.length]\n }))\n .sort((a: any, b: any) => b.value - a.value); // Sort by count descending\n\n const config: ChartConfig = sortedData.reduce((acc: any, item: any, index: number) => {\n acc[item.name] = {\n label: item.name,\n color: CHART_COLORS[index % CHART_COLORS.length],\n };\n return acc;\n }, {});\n\n return { chartData: sortedData, chartConfig: config };\n }, [data]);\n\n const renderCustomLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }: any) => {\n if (percent < 0.05) return null; // Don't show labels for slices less than 5%\n\n const RADIAN = Math.PI / 180;\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n return (\n <text\n x={x}\n y={y}\n fill=\"black\"\n textAnchor={x > cx ? 'start' : 'end'}\n dominantBaseline=\"central\"\n fontSize=\"12\"\n fontWeight=\"600\"\n paintOrder=\"stroke\"\n >\n {`${(percent * 100).toFixed(0)}%`}\n </text>\n );\n };\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-xl font-semibold\">Distribution</h3>\n {groupByOptions.length > 0 && (\n <div className=\"w-full max-w-[150px]\">\n <Select value={groupBy} onValueChange={onGroupByChange}>\n <SelectTrigger>\n <SelectValue placeholder=\"Group by\" />\n </SelectTrigger>\n <SelectContent>\n {groupByOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n <div className=\"flex-1 min-h-0\">\n {loading ? (\n <div className=\"space-y-4 h-full\">\n <Skeleton className=\"h-full w-full\" />\n </div>\n ) : error ? (\n <div className=\"flex items-center justify-center h-full text-red-500\">\n Error loading distribution data: {error.message}\n </div>\n ) : chartData.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-muted-foreground text-center\">\n No data available for the selected date range, type, and grouping.\n </div>\n ) : (\n <ChartContainer config={chartConfig} className=\"h-full w-full\">\n <PieChart>\n <defs>\n {chartData.map((entry: any, index: number) => (\n <radialGradient\n key={`gradient-${index}`}\n id={`gradient-${entry.name.replace(/\\s+/g, '-')}`}\n cx=\"50%\"\n cy=\"50%\"\n r=\"50%\"\n >\n <stop\n offset=\"0%\"\n stopColor={entry.fill}\n stopOpacity={1}\n />\n <stop\n offset=\"100%\"\n stopColor={entry.fill}\n stopOpacity={0.8}\n />\n </radialGradient>\n ))}\n </defs>\n <Pie\n data={chartData}\n cx=\"50%\"\n cy=\"50%\"\n labelLine={false}\n label={renderCustomLabel}\n outerRadius=\"75%\"\n innerRadius=\"45%\"\n dataKey=\"value\"\n strokeWidth={3}\n >\n {chartData.map((entry: any, index: number) => (\n <Cell\n key={`cell-${index}`}\n fill={`url(#gradient-${entry.name.replace(/\\s+/g, '-')})`}\n />\n ))}\n </Pie>\n <ChartTooltip\n content={\n <ChartTooltipContent\n nameKey=\"name\"\n hideLabel\n formatter={(value: any, name: any) => [\n typeof value === 'number' ? value.toLocaleString() : value,\n \" \" + String(name)\n ]}\n />\n }\n />\n </PieChart>\n </ChartContainer>\n )}\n </div>\n </div>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_TIME_SERIES_STATISTICS } from \"@/queries/queries\";\nimport { STATISTICS_TYPE } from \"@/types/enums/statistics\";\nimport { XAxis, YAxis, CartesianGrid, Area, AreaChart } from 'recharts';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\";\nimport { format, eachDayOfInterval, startOfDay } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\n\ninterface TimeSeriesChartProps {\n dateRange: DateRange | undefined;\n selectedType: STATISTICS_TYPE;\n onTypeChange: (type: STATISTICS_TYPE) => void;\n onUnitChange: (unit: 'tokens' | 'count') => void;\n dataTypes: string[];\n unit: 'tokens' | 'count';\n unitOptions: { label: string, value: string }[];\n}\n\nfunction transformEnumToLabel(enumValue: string): string {\n return enumValue\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nconst chartConfig = {\n count: {\n label: \"Count\",\n color: \"hsl(var(--muted-foreground))\",\n },\n} satisfies ChartConfig\n\nexport function TimeSeriesChart({ dataTypes, dateRange, selectedType, onTypeChange, onUnitChange, unit, unitOptions }: TimeSeriesChartProps) {\n const { data, loading, error } = useQuery(GET_TIME_SERIES_STATISTICS, {\n variables: {\n type: selectedType,\n name: unit,\n from: dateRange?.from?.toISOString(),\n to: dateRange?.to?.toISOString(),\n names: [unit]\n },\n skip: !dateRange?.from || !dateRange?.to\n });\n\n const chartData = React.useMemo(() => {\n if (!data?.trackingStatistics || !dateRange?.from || !dateRange?.to) return [];\n\n // Transform API data into a map for quick lookup\n const dataMap = new Map();\n data.trackingStatistics.forEach((item: any) => {\n const dateObj = new Date(typeof item.group === 'number' ? item.group : Number(item.group));\n const dateKey = format(startOfDay(dateObj), 'yyyy-MM-dd');\n dataMap.set(dateKey, item.count);\n });\n\n // Generate all dates in the range\n const allDates = eachDayOfInterval({\n start: startOfDay(dateRange.from),\n end: startOfDay(dateRange.to)\n });\n\n // Fill gaps with zero values\n return allDates.map(date => {\n const dateKey = format(date, 'yyyy-MM-dd');\n const count = dataMap.get(dateKey) || 0;\n\n return {\n date: date.getTime(),\n count: count,\n formattedDate: format(date, 'MMM dd'),\n dateObj: date\n };\n });\n }, [data, dateRange]);\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-xl font-semibold\">Time Series Analytics</h3>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-[150px]\">\n <Select value={selectedType} onValueChange={(value) => onTypeChange(value as STATISTICS_TYPE)}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select data type\" />\n </SelectTrigger>\n <SelectContent>\n {dataTypes?.map((type) => (\n <SelectItem key={type} value={type}>\n {transformEnumToLabel(type) + \" \"}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n {\n unitOptions?.length > 1 && (<div className=\"w-[150px]\">\n <Select value={unit} onValueChange={(value) => onUnitChange(value as 'tokens' | 'count')}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select unit\" />\n </SelectTrigger>\n <SelectContent>\n {unitOptions?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>)\n }\n </div>\n </div>\n\n <div className=\"flex-1 min-h-0\">\n {loading ? (\n <div className=\"space-y-4 h-full\">\n <Skeleton className=\"h-full w-full\" />\n </div>\n ) : error ? (\n <div className=\"flex items-center justify-center h-full text-red-500\">\n Error loading time series data: {error.message}\n </div>\n ) : chartData.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-muted-foreground\">\n No data available for the selected date range and type\n </div>\n ) : (\n <ChartContainer config={chartConfig} className=\"h-full w-full\">\n <AreaChart data={chartData}>\n <defs>\n <linearGradient id=\"fillCount\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop\n offset=\"5%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.3}\n />\n <stop\n offset=\"95%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.05}\n />\n </linearGradient>\n <linearGradient id=\"strokeCount\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n <stop\n offset=\"0%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.8}\n />\n <stop\n offset=\"100%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.6}\n />\n </linearGradient>\n </defs>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeOpacity={0.3}\n vertical={false}\n />\n <XAxis\n dataKey=\"formattedDate\"\n tick={{ fontSize: 12, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n axisLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n />\n <YAxis\n tick={{ fontSize: 12, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n axisLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n />\n <ChartTooltip\n labelFormatter={(label: any, payload: any) => {\n if (payload && payload[0]) {\n return format(payload[0].payload.dateObj, 'PPP') + \" \";\n }\n return label;\n }}\n content={<ChartTooltipContent\n nameKey=\"name\"\n hideLabel\n formatter={(value: any, name: any) => [\n typeof value === 'number' ? value.toLocaleString() : value,\n \" \" + String(name)\n ]}\n />}\n />\n <ChartLegend content={<ChartLegendContent />} />\n <Area\n type=\"monotone\"\n dataKey=\"count\"\n stroke=\"url(#strokeCount)\"\n strokeWidth={3}\n fill=\"url(#fillCount)\"\n fillOpacity={0.6}\n dot={{\n fill: \"hsl(var(--muted-foreground))\",\n strokeWidth: 2,\n r: 4,\n strokeOpacity: 0.8\n }}\n activeDot={{\n r: 6,\n strokeWidth: 2,\n fill: \"hsl(var(--background))\",\n stroke: \"hsl(var(--muted-foreground))\",\n strokeOpacity: 1\n }}\n name={transformEnumToLabel(selectedType)}\n />\n </AreaChart>\n </ChartContainer>\n )}\n </div>\n </div>\n );\n}","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n})\nChartContainer.displayName = \"Chart\"\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n)\nChartTooltipContent.displayName = \"ChartTooltip\"\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n }\n)\nChartLegendContent.displayName = \"ChartLegend\"\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\";\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","\"use client\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import { cn } from \"@/lib/utils\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","export type STATISTICS_TYPE = \"CONTEXT_RETRIEVE\" | \"SOURCE_UPDATE\" | \"EMBEDDER_UPSERT\" | \"EMBEDDER_GENERATE\" | \"EMBEDDER_DELETE\" | \"WORKFLOW_RUN\" | \"CONTEXT_UPSERT\" | \"TOOL_CALL\" | \"AGENT_RUN\";\n\nexport const STATISTICS_TYPE_ENUM = {\n CONTEXT_RETRIEVE: \"CONTEXT_RETRIEVE\",\n SOURCE_UPDATE: \"SOURCE_UPDATE\",\n EMBEDDER_UPSERT: \"EMBEDDER_UPSERT\",\n EMBEDDER_GENERATE: \"EMBEDDER_GENERATE\",\n EMBEDDER_DELETE: \"EMBEDDER_DELETE\",\n WORKFLOW_RUN: \"WORKFLOW_RUN\",\n CONTEXT_UPSERT: \"CONTEXT_UPSERT\",\n TOOL_CALL: \"TOOL_CALL\",\n AGENT_RUN: \"AGENT_RUN\"\n};\n"],"names":["Promise","resolve","then","__webpack_require__","bind","SummaryCardElement","param","title","currentValue","previousValue","isLoading","jsx_runtime","jsxs","Card","className","CardHeader","jsx","CardTitle","div","CardContent","Skeleton","percentageChange","isPositive","isNeutral","TrendIcon","Minus","TrendingUp","TrendingDown","trendColor","concat","toLocaleString","p","span","Math","abs","toFixed","br","SummaryCard","query","entity","dates","useMemo","now","Date","toISOString","twentyFourHoursAgo","subHours","sevenDaysAgo","subDays","data","data24h","loading","loading24h","useQuery","variables","from","to","data7d","loading7d","getTotal","Array","isArray","reduce","sum","item","count","twentyFourHourTotal","sevenDayAverage","round","Leaderboard","leaderboardData","type","dateRange","icon","subtitle","valueLabel","emptyMessage","maxEntries","nameFilter","hydrationQuery","hydrationField","queryVariables","baseVars","names","idsToHydrate","trackingStatistics","filter","group","map","slice","console","log","hydrationData","hydrationLoading","ids","skip","length","displayName","hydratedItem","find","h","id","parseInt","name","firstname","lastname","email","value","sort","a","b","index","rank","getRankIcon","Trophy","Medal","Award","getRankColor","_","i","maxValue","percentage","entry","style","width","dynamic","DashboardPage","setDateRange","useState","selectedType","setSelectedType","unit","setUnit","groupBy","setGroupBy","leaderboardView","setLeaderboardView","h2","DateRangeSelector","onDateRangeChange","maxDays","GET_AGENT_SESSIONS_STATISTICS","GET_AGENT_RUN_STATISTICS","GET_TOKEN_USAGE_STATISTICS","GET_WORKFLOW_RUNS_STATISTICS","GET_FUNCTION_CALLS_STATISTICS","TimeSeriesChart","onTypeChange","onUnitChange","unitOptions","label","dataTypes","STATISTICS_TYPE_ENUM","CONTEXT_RETRIEVE","SOURCE_UPDATE","EMBEDDER_UPSERT","EMBEDDER_GENERATE","EMBEDDER_DELETE","WORKFLOW_RUN","CONTEXT_UPSERT","TOOL_CALL","AGENT_RUN","DonutChart","groupByOptions","onGroupByChange","h3","button","onClick","GET_USER_STATISTICS","Users","GET_USERS_BY_IDS","GET_PROJECT_STATISTICS","Layers","GET_PROJECTS_BY_IDS","GET_AGENT_STATISTICS","Bot","Calendar","classNames","showOutsideDays","props","DayPicker","cn","months","month","caption","caption_label","nav","nav_button","buttonVariants","variant","nav_button_previous","nav_button_next","table","head_row","head_cell","row","cell","day","day_range_end","day_selected","day_today","day_outside","day_disabled","day_range_middle","day_hidden","components","IconLeft","ChevronLeft","IconRight","ChevronRight","toast","useToast","disabledDays","React","fromDate","before","addDays","after","Popover","PopoverTrigger","asChild","Button","CalendarIcon","Fragment","format","PopoverContent","align","initialFocus","mode","defaultMonth","selected","onSelect","newRange","daysDifference","differenceInDays","description","disabled","numberOfMonths","CHART_COLORS","error","GET_DONUT_STATISTICS","chartData","chartConfig","sortedData","replace","split","word","charAt","toUpperCase","toLowerCase","join","fill","config","acc","color","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","Select","onValueChange","SelectTrigger","SelectValue","placeholder","SelectContent","SelectItem","option","message","ChartContainer","PieChart","defs","radialGradient","cx","cy","r","stop","offset","stopColor","stopOpacity","Pie","labelLine","midAngle","innerRadius","outerRadius","percent","RADIAN","PI","radius","x","cos","text","y","sin","textAnchor","dominantBaseline","fontSize","fontWeight","paintOrder","dataKey","strokeWidth","Cell","ChartTooltip","content","ChartTooltipContent","nameKey","hideLabel","formatter","String","transformEnumToLabel","enumValue","GET_TIME_SERIES_STATISTICS","dataMap","Map","forEach","dateObj","Number","dateKey","startOfDay","set","allDates","eachDayOfInterval","start","end","date","get","getTime","formattedDate","AreaChart","linearGradient","x1","y1","x2","y2","CartesianGrid","strokeDasharray","stroke","strokeOpacity","vertical","XAxis","tick","tickLine","axisLine","YAxis","labelFormatter","payload","ChartLegend","ChartLegendContent","Area","fillOpacity","dot","activeDot","ref","CardDescription","CardFooter","THEMES","light","dark","ChartContext","useChart","context","children","uniqueId","chartId","Provider","data-chart","ChartStyle","RechartsPrimitive","colorConfig","Object","entries","theme","dangerouslySetInnerHTML","__html","prefix","itemConfig","key","active","indicator","hideIndicator","labelClassName","labelKey","tooltipLabel","getPayloadConfigFromPayload","nestLabel","indicatorColor","undefined","hideIcon","verticalAlign","backgroundColor","payloadPayload","configLabelKey","PopoverPrimitive","sideOffset","SelectPrimitive","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","position","SelectLabel","Check","SelectSeparator","toastTimeouts","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","reducer","state","action","toasts","t","open","listeners","memoryState","listener","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","setState","push","indexOf","splice"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/chunks/app/(application)/dashboard/page-c54b4bc8d0ac4ac8.js","mappings":"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","sources":["webpack://_N_E/?d82f","webpack://_N_E/./components/dashboard/summary-cards.tsx","webpack://_N_E/./components/dashboard/leaderboard.tsx","webpack://_N_E/./app/(application)/dashboard/page.tsx","webpack://_N_E/./components/ui/calendar.tsx","webpack://_N_E/./components/dashboard/date-range-selector.tsx","webpack://_N_E/./components/dashboard/donut-chart.tsx","webpack://_N_E/./components/dashboard/time-series-chart.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/chart.tsx","webpack://_N_E/./components/ui/popover.tsx","webpack://_N_E/./components/ui/select.tsx","webpack://_N_E/./components/ui/skeleton.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./types/enums/statistics.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/dashboard/page.tsx\");\n","\"use client\";\n\nimport { DocumentNode, useQuery } from \"@apollo/client\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { subDays, subHours } from \"date-fns\";\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\";\nimport { useMemo } from \"react\";\n\ninterface SummaryCardProps {\n title: string;\n currentValue: number;\n previousValue: number;\n isLoading?: boolean;\n}\n\nfunction SummaryCardElement({ title, currentValue, previousValue, isLoading }: SummaryCardProps) {\n if (isLoading) {\n return (\n <Card className=\"animate-pulse\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-3\">\n <CardTitle className=\"text-sm font-medium text-slate-700 dark:text-slate-300\">{title}</CardTitle>\n <div className=\"p-2 rounded-full\">\n <div className=\"h-4 w-4 rounded\" />\n </div>\n </CardHeader>\n <CardContent>\n <Skeleton className=\"h-8 w-24 mb-3\" />\n <div className=\"space-y-1\">\n <Skeleton className=\"h-3 w-28\" />\n <Skeleton className=\"h-3 w-20\" />\n </div>\n </CardContent>\n </Card>\n );\n }\n\n const percentageChange = previousValue > 0 ? ((currentValue - previousValue) / previousValue) * 100 : 0;\n const isPositive = percentageChange > 0;\n const isNeutral = percentageChange === 0;\n\n const TrendIcon = isNeutral ? Minus : isPositive ? TrendingUp : TrendingDown;\n const trendColor = isNeutral ? \"text-muted-foreground\" : isPositive ? \"text-green-600\" : \"text-red-600\";\n\n return (\n <Card className=\"hover:shadow-lg transition-all duration-300 hover:-translate-y-1\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-3\">\n <CardTitle className=\"text-sm font-medium text-slate-700 dark:text-slate-300\">{title}</CardTitle>\n <div className={`p-2 rounded-full ${isNeutral ? 'bg-gray-200 dark:bg-gray-700' : isPositive ? 'bg-green-100 dark:bg-green-900/30' : 'bg-red-100 dark:bg-red-900/30'}`}>\n <TrendIcon className={`h-4 w-4 ${trendColor}`} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"text-3xl font-bold bg-gradient-to-r from-slate-900 to-slate-700 dark:from-slate-100 dark:to-slate-300 bg-clip-text text-transparent mb-2\">\n {currentValue.toLocaleString()}\n </div>\n <p className=\"text-xs text-slate-600 dark:text-slate-400\">\n <span className={`font-medium ${trendColor}`}>\n {isNeutral ? \"No change\" : `${Math.abs(percentageChange).toFixed(1)}% ${isPositive ? \"increase\" : \"decrease\"}`}\n </span>\n <br />\n <span className=\"text-slate-500 dark:text-slate-500\">\n vs 7-day avg: {previousValue.toLocaleString()}\n </span>\n </p>\n </CardContent>\n </Card>\n );\n}\n\nexport function SummaryCard({\n query,\n entity,\n title\n}: {\n query: DocumentNode,\n entity: \"agent_sessions\" | \"jobs\" | \"tracking\",\n title: string\n}) {\n // Stabilize dates to prevent constant re-renders\n const dates = useMemo(() => {\n const now = new Date();\n return {\n now: now.toISOString(),\n twentyFourHoursAgo: subHours(now, 24).toISOString(),\n sevenDaysAgo: subDays(now, 7).toISOString()\n };\n }, []); // Empty dependency array means this only runs once\n\n // 24h data\n const { data: data24h, loading: loading24h } = useQuery(query, {\n variables: { from: dates.twentyFourHoursAgo, to: dates.now }\n });\n\n // 7-day data (for average calculation)\n const { data: data7d, loading: loading7d } = useQuery(query, {\n variables: { from: dates.sevenDaysAgo, to: dates.now }\n });\n\n\n // Calculate totals\n const getTotal = (data: any) => {\n if (!data || !Array.isArray(data)) return 0;\n return data.reduce((sum: number, item: any) => sum + (item.count || 0), 0);\n };\n\n const twentyFourHourTotal = getTotal(data24h?.[`${entity}Statistics`]);\n\n // Calculate 7-day averages (divide by 7 for daily average)\n const sevenDayAverage = Math.round(getTotal(data7d?.[`${entity}Statistics`]) / 7);\n\n const isLoading = \n loading24h\n loading7d\n\n return (\n <SummaryCardElement\n title={`${title} (24h)`}\n currentValue={twentyFourHourTotal}\n previousValue={sevenDayAverage}\n isLoading={isLoading}\n />\n );\n}","\"use client\";\n\nimport { DocumentNode, useQuery } from \"@apollo/client\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Trophy, Medal, Award } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport { STATISTICS_TYPE } from \"@/types/enums/statistics\";\n\ninterface LeaderboardEntry {\n name: string;\n value: number;\n rank: number;\n}\n\ninterface LeaderboardProps {\n title: string;\n query: DocumentNode;\n type?: STATISTICS_TYPE;\n dateRange: { from: Date; to: Date };\n icon?: React.ReactNode;\n subtitle?: string;\n valueLabel?: string;\n emptyMessage?: string;\n maxEntries?: number;\n nameFilter?: string | string[];\n hydrationQuery?: DocumentNode;\n hydrationField?: string;\n}\n\nexport function Leaderboard({\n title,\n query,\n type,\n dateRange,\n icon,\n subtitle,\n valueLabel = \"calls\",\n emptyMessage = \"No data available\",\n maxEntries = 10,\n nameFilter,\n hydrationQuery,\n hydrationField\n}: LeaderboardProps) {\n const dates = useMemo(() => ({\n from: dateRange.from.toISOString(),\n to: dateRange.to.toISOString()\n }), [dateRange]);\n\n // Build query variables based on query type and filters\n const queryVariables = useMemo(() => {\n const baseVars = {\n from: dates.from,\n to: dates.to\n };\n\n // Add names filter if provided (for user/project/agent statistics)\n if (nameFilter) {\n return {\n ...baseVars,\n names: Array.isArray(nameFilter) ? nameFilter : [nameFilter]\n };\n }\n\n // Add type if provided (for other statistics)\n return type ? { ...baseVars, type } : baseVars;\n }, [dates.from, dates.to, type, nameFilter]);\n\n const { data, loading } = useQuery(query, {\n variables: queryVariables\n });\n\n // Extract IDs for hydration\n const idsToHydrate = useMemo(() => {\n if (!data?.trackingStatistics || !hydrationQuery) return [];\n\n return data.trackingStatistics\n .filter((item: any) => item?.group && item?.count)\n .map((item: any) => item.group)\n .slice(0, maxEntries);\n }, [data, maxEntries, hydrationQuery]);\n\n console.log(\"[EXULU] IDs to hydrate:\", idsToHydrate);\n console.log(\"[EXULU] Hydration query:\", hydrationQuery);\n\n // Fetch names if hydration is needed\n const { data: hydrationData, loading: hydrationLoading } = useQuery(hydrationQuery || query, {\n variables: { ids: idsToHydrate },\n skip: !hydrationQuery || idsToHydrate.length === 0\n });\n\n console.log(\"[EXULU] Hydration data:\", hydrationData);\n\n const leaderboardData = useMemo(() => {\n if (!data?.trackingStatistics) return [];\n\n const entries: LeaderboardEntry[] = data.trackingStatistics\n .filter((item: any) => item?.group && item?.count)\n .map((item: any) => {\n let displayName = item.group;\n\n // Hydrate the name if hydration data is available\n if (hydrationData && hydrationField) {\n const hydratedItem = hydrationData[hydrationField]?.find(\n (h: any) => {\n console.log(\"[EXULU] Hydrated item:\", h);\n console.log(\"[EXULU] Item group:\", item.group);\n if (typeof h.id === \"number\") {\n return h.id === parseInt(item.group);\n } else {\n return h.id === item.group;\n }\n }\n );\n if (hydratedItem) {\n // Use name, or fallback to firstname + lastname, or email\n displayName = hydratedItem.name ||\n (hydratedItem.firstname && hydratedItem.lastname\n ? `${hydratedItem.firstname} ${hydratedItem.lastname}`\n : hydratedItem.email) ||\n item.group;\n }\n }\n\n return {\n name: displayName,\n value: item.count\n };\n })\n .sort((a: any, b: any) => b.value - a.value)\n .slice(0, maxEntries)\n .map((item: any, index: number) => ({\n ...item,\n rank: index + 1\n }));\n\n return entries;\n }, [data, hydrationData, hydrationField, maxEntries]);\n\n const getRankIcon = (rank: number) => {\n switch (rank) {\n case 1:\n return <Trophy className=\"h-5 w-5 text-yellow-500\" />;\n case 2:\n return <Medal className=\"h-5 w-5 text-gray-400\" />;\n case 3:\n return <Award className=\"h-5 w-5 text-amber-700\" />;\n default:\n return <span className=\"text-sm font-semibold text-muted-foreground\">#{rank}</span>;\n }\n };\n\n const getRankColor = (rank: number) => {\n switch (rank) {\n case 1:\n return \"bg-gradient-to-r from-yellow-50 to-yellow-100 dark:from-yellow-900/20 dark:to-yellow-800/20 border-yellow-200 dark:border-yellow-800\";\n case 2:\n return \"bg-gradient-to-r from-gray-50 to-gray-100 dark:from-gray-800/20 dark:to-gray-700/20 border-gray-200 dark:border-gray-700\";\n case 3:\n return \"bg-gradient-to-r from-amber-50 to-amber-100 dark:from-amber-900/20 dark:to-amber-800/20 border-amber-200 dark:border-amber-800\";\n default:\n return \"bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-700\";\n }\n };\n\n if (loading || (hydrationQuery && hydrationLoading)) {\n return (\n <Card className=\"h-full flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-xl font-bold flex items-center gap-2\">\n {icon}\n {title}\n </CardTitle>\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n </CardHeader>\n <CardContent className=\"flex-1 space-y-3 overflow-auto\">\n {[...Array(5)].map((_, i) => (\n <Skeleton key={i} className=\"h-16 w-full\" />\n ))}\n </CardContent>\n </Card>\n );\n }\n\n if (!leaderboardData.length) {\n return (\n <Card className=\"h-full flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-xl font-bold flex items-center gap-2\">\n {icon}\n {title}\n </CardTitle>\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n </CardHeader>\n <CardContent className=\"flex-1 flex items-center justify-center\">\n <p className=\"text-muted-foreground text-sm\">{emptyMessage}</p>\n </CardContent>\n </Card>\n );\n }\n\n const maxValue = leaderboardData[0]?.value || 1;\n\n return (\n <Card className=\"h-full flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-4\">\n <div className=\"space-y-1\">\n <CardTitle className=\"text-xl font-bold flex items-center gap-2\">\n {icon}\n {title}\n </CardTitle>\n {subtitle && <p className=\"text-sm text-muted-foreground\">{subtitle}</p>}\n </div>\n </CardHeader>\n <CardContent className=\"flex-1 space-y-2 overflow-auto\">\n {leaderboardData.map((entry) => {\n const percentage = (entry.value / maxValue) * 100;\n\n return (\n <div\n key={entry.name}\n className={`relative overflow-hidden rounded-lg border-2 p-3 transition-all duration-300 hover:shadow-md hover:scale-105 ${getRankColor(entry.rank)}`}\n >\n {/* Progress bar background */}\n <div\n className=\"absolute inset-0 bg-gradient-to-r from-blue-100/50 to-transparent dark:from-blue-900/20 transition-all duration-500\"\n style={{ width: `${percentage}%` }}\n />\n\n {/* Content */}\n <div className=\"relative flex items-center justify-between gap-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <div className=\"flex-shrink-0\">\n {getRankIcon(entry.rank)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-semibold text-sm truncate\" title={entry.name}>\n {entry.name}\n </p>\n {entry.rank <= 3 && (\n <p className=\"text-xs text-muted-foreground\">\n {entry.rank === 1 ? \"Top performer\" : entry.rank === 2 ? \"Runner up\" : \"Third place\"}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"flex-shrink-0 text-right\">\n <p className=\"text-lg font-bold text-slate-900 dark:text-slate-100\">\n {entry.value.toLocaleString()}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {valueLabel}\n </p>\n </div>\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport { subDays } from \"date-fns\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { DateRange } from \"react-day-picker\";\nimport { STATISTICS_TYPE, STATISTICS_TYPE_ENUM } from \"@/types/enums/statistics\";\nimport { SummaryCard } from \"@/components/dashboard/summary-cards\";\nimport { DateRangeSelector } from \"@/components/dashboard/date-range-selector\";\nimport { TimeSeriesChart } from \"@/components/dashboard/time-series-chart\";\nimport { DonutChart } from \"@/components/dashboard/donut-chart\";\nimport { Leaderboard } from \"@/components/dashboard/leaderboard\";\nimport {\n GET_AGENT_SESSIONS_STATISTICS,\n GET_WORKFLOW_RUNS_STATISTICS,\n GET_AGENT_RUN_STATISTICS,\n GET_FUNCTION_CALLS_STATISTICS,\n GET_TOKEN_USAGE_STATISTICS,\n GET_USER_STATISTICS,\n GET_PROJECT_STATISTICS,\n GET_AGENT_STATISTICS,\n GET_USERS_BY_IDS,\n GET_PROJECTS_BY_IDS\n} from \"@/queries/queries\";\nimport { Users, Layers, Bot } from \"lucide-react\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function DashboardPage() {\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\n from: subDays(new Date(), 14),\n to: new Date()\n });\n\n const [selectedType, setSelectedType] = useState<STATISTICS_TYPE>(\"AGENT_RUN\");\n const [unit, setUnit] = useState<\"tokens\" | \"count\">(\"count\");\n const [groupBy, setGroupBy] = useState<string>(\"label\");\n const [leaderboardView, setLeaderboardView] = useState<\"count\" | \"tokens\">(\"count\");\n\n return (\n <div className=\"flex-1 flex flex-col p-8 pt-6 h-screen\">\n {/* Header Section */}\n <div className=\"flex items-center justify-between mb-8\">\n <div className=\"space-y-2\">\n <h2 className=\"text-4xl font-bold tracking-tight bg-clip-text\">\n Analytics Dashboard\n </h2>\n <p className=\"text-lg\">\n Monitor your AI workflows and performance metrics.\n </p>\n </div>\n\n {/* Date Range Selector - moved to header */}\n <div className=\"flex items-center space-x-2\">\n <DateRangeSelector\n dateRange={dateRange}\n onDateRangeChange={setDateRange}\n maxDays={30}\n />\n </div>\n </div>\n\n {/* Summary Cards - Enhanced with better spacing */}\n <div className=\"mb-8\">\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-5\">\n <SummaryCard query={GET_AGENT_SESSIONS_STATISTICS} entity=\"agent_sessions\" title=\"Agent Sessions\" />\n <SummaryCard query={GET_AGENT_RUN_STATISTICS} entity=\"tracking\" title=\"Agent Calls\" />\n <SummaryCard query={GET_TOKEN_USAGE_STATISTICS} entity=\"tracking\" title=\"Token Usage\" />\n <SummaryCard query={GET_WORKFLOW_RUNS_STATISTICS} entity=\"jobs\" title=\"Workflow Runs\" />\n <SummaryCard query={GET_FUNCTION_CALLS_STATISTICS} entity=\"tracking\" title=\"Function Calls\" />\n </div>\n </div>\n\n {/* Charts Grid - Improved layout and spacing */}\n <div className=\"flex-1 grid gap-6 md:grid-cols-3\">\n <div className=\"rounded-lg border md:col-span-2 p-6 flex flex-col\">\n <TimeSeriesChart\n dateRange={dateRange}\n selectedType={selectedType}\n onTypeChange={setSelectedType}\n onUnitChange={setUnit}\n unit={unit}\n unitOptions={[\n { value: 'tokens', label: 'Tokens' },\n { value: 'count', label: 'Count' }\n ]}\n dataTypes={[\n STATISTICS_TYPE_ENUM.CONTEXT_RETRIEVE,\n STATISTICS_TYPE_ENUM.SOURCE_UPDATE,\n STATISTICS_TYPE_ENUM.EMBEDDER_UPSERT,\n STATISTICS_TYPE_ENUM.EMBEDDER_GENERATE,\n STATISTICS_TYPE_ENUM.EMBEDDER_DELETE,\n STATISTICS_TYPE_ENUM.WORKFLOW_RUN,\n STATISTICS_TYPE_ENUM.CONTEXT_UPSERT,\n STATISTICS_TYPE_ENUM.TOOL_CALL,\n STATISTICS_TYPE_ENUM.AGENT_RUN\n ]}\n />\n </div>\n <div className=\"rounded-lg border p-6 flex flex-col\">\n <DonutChart\n groupByOptions={[\n { value: 'label', label: 'Label' },\n { value: 'user', label: 'User' },\n { value: 'role', label: 'Role' }\n ]}\n dateRange={dateRange}\n selectedType={selectedType}\n groupBy={groupBy}\n unit={leaderboardView === \"count\" ? \"count\" : \"tokens\"}\n onGroupByChange={setGroupBy}\n />\n </div>\n </div>\n\n {/* Leaderboards Section */}\n <div className=\"mt-8 mb-5\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-2xl font-bold\">Leaderboards</h3>\n <div className=\"flex items-center gap-2 bg-secondary-foreground/10 dark:bg-secondary-foreground/20 p-1 rounded-lg\">\n <button\n onClick={() => setLeaderboardView(\"count\")}\n className={`px-4 py-2 rounded-md text-sm font-medium transition-all ${\n leaderboardView === \"count\"\n ? \"bg-white dark:bg-primary shadow-sm text-secondary\"\n : \"hover:text-primary dark:hover:text-primary\"\n }`}\n >\n Count\n </button>\n <button\n onClick={() => setLeaderboardView(\"tokens\")}\n className={`px-4 py-2 rounded-md text-sm font-medium transition-all ${\n leaderboardView === \"tokens\"\n ? \"bg-white dark:bg-primary shadow-sm text-secondary\"\n : \"hover:text-primary dark:hover:text-primary\"\n }`}\n >\n Tokens\n </button>\n </div>\n </div>\n <div className=\"grid gap-6 md:grid-cols-3 mb-5\">\n <Leaderboard\n title=\"Top Users\"\n subtitle={leaderboardView === \"count\" ? \"Most active users by agent calls\" : \"Most active users by token usage\"}\n query={GET_USER_STATISTICS}\n dateRange={{\n from: dateRange?.from || subDays(new Date(), 14),\n to: dateRange?.to || new Date()\n }}\n icon={<Users className=\"h-5 w-5 text-blue-500\" />}\n valueLabel={leaderboardView === \"count\" ? \"calls\" : \"tokens\"}\n maxEntries={10}\n nameFilter={leaderboardView === \"count\" ? [\"count\"] : [\"inputTokens\", \"outputTokens\"]}\n hydrationQuery={GET_USERS_BY_IDS}\n hydrationField=\"userByIds\"\n />\n <Leaderboard\n title=\"Top Projects\"\n subtitle={leaderboardView === \"count\" ? \"Most active projects by agent calls\" : \"Most active projects by token usage\"}\n query={GET_PROJECT_STATISTICS}\n dateRange={{\n from: dateRange?.from || subDays(new Date(), 14),\n to: dateRange?.to || new Date()\n }}\n icon={<Layers className=\"h-5 w-5 text-purple-500\" />}\n valueLabel={leaderboardView === \"count\" ? \"calls\" : \"tokens\"}\n maxEntries={10}\n nameFilter={leaderboardView === \"count\" ? [\"count\"] : [\"inputTokens\", \"outputTokens\"]}\n hydrationQuery={GET_PROJECTS_BY_IDS}\n hydrationField=\"projectByIds\"\n />\n <Leaderboard\n title=\"Top Agents\"\n subtitle={leaderboardView === \"count\" ? \"Most used agents by call count\" : \"Most used agents by token usage\"}\n query={GET_AGENT_STATISTICS}\n dateRange={{\n from: dateRange?.from || subDays(new Date(), 14),\n to: dateRange?.to || new Date()\n }}\n icon={<Bot className=\"h-5 w-5 text-green-500\" />}\n valueLabel={leaderboardView === \"count\" ? \"calls\" : \"tokens\"}\n maxEntries={10}\n nameFilter={leaderboardView === \"count\" ? [\"count\"] : [\"inputTokens\", \"outputTokens\"]}\n />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\",\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ ...props }) => <ChevronLeft className=\"size-4\" />,\n IconRight: ({ ...props }) => <ChevronRight className=\"size-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon } from \"@radix-ui/react-icons\";\nimport { format, subDays, differenceInDays, addDays } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\n\ninterface DateRangeSelectorProps {\n dateRange: DateRange | undefined;\n maxDays?: number;\n onDateRangeChange: (dateRange: DateRange | undefined) => void;\n className?: string;\n}\n\nexport function DateRangeSelector({ dateRange, onDateRangeChange, className, maxDays = 30 }: DateRangeSelectorProps) {\n const { toast } = useToast();\n\n const handleDateRangeChange = (newRange: DateRange | undefined) => {\n if (newRange?.from && newRange?.to) {\n const daysDifference = differenceInDays(newRange.to, newRange.from);\n if (daysDifference > maxDays) {\n // Show toast notification\n toast({\n title: \"Date range too large\",\n description: `Please select a date range of ${maxDays} days or less.`,\n variant: \"destructive\",\n });\n return;\n }\n }\n onDateRangeChange(newRange);\n };\n\n // Disable dates that would create a range > maxDays\n const disabledDays = React.useMemo(() => {\n if (!dateRange?.from) return [];\n \n const fromDate = dateRange.from;\n const minDate = addDays(fromDate, -maxDays);\n const maxDate = addDays(fromDate, maxDays);\n \n return [\n { before: minDate },\n { after: maxDate }\n ];\n }, [dateRange?.from, maxDays]);\n\n return (\n <div className={cn(\"grid gap-2\", className)}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n id=\"date\"\n variant={\"outline\"}\n className={cn(\n \"w-[260px] justify-start text-left font-normal\",\n !dateRange && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateRange?.from ? (\n dateRange.to ? (\n <>\n {format(dateRange.from, \"LLL dd, y\")} -{\" \"}\n {format(dateRange.to, \"LLL dd, y\")}\n </>\n ) : (\n format(dateRange.from, \"LLL dd, y\")\n )\n ) : (\n <span>Pick a date range</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"end\">\n <Calendar\n initialFocus\n mode=\"range\"\n defaultMonth={dateRange?.from}\n selected={dateRange}\n onSelect={handleDateRangeChange}\n disabled={disabledDays}\n numberOfMonths={2}\n />\n <div className=\"p-3 pt-0 text-xs text-muted-foreground border-t\">\n Maximum range: {maxDays} days\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_DONUT_STATISTICS } from \"@/queries/queries\";\nimport { STATISTICS_TYPE } from \"@/types/enums/statistics\";\nimport { PieChart, Pie, Cell } from 'recharts';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\";\nimport { DateRange } from \"react-day-picker\";\n\ninterface DonutChartProps {\n groupByOptions: { label: string, value: string }[];\n dateRange: DateRange | undefined;\n selectedType: STATISTICS_TYPE;\n groupBy: string;\n onGroupByChange: (groupBy: string) => void;\n unit: \"tokens\" | \"count\";\n}\n\nconst CHART_COLORS = [\n \"hsl(var(--chart-1))\",\n \"hsl(var(--chart-2))\",\n \"hsl(var(--chart-3))\",\n \"hsl(var(--chart-4))\",\n \"hsl(var(--chart-5))\",\n \"hsl(var(--chart-6))\",\n \"hsl(var(--chart-7))\",\n \"hsl(var(--chart-8))\",\n \"hsl(var(--chart-9))\",\n \"hsl(var(--chart-10))\"\n];\n\nfunction transformGroupValue(value: string): string {\n if (!value || typeof value !== 'string') return 'Unknown';\n\n // Handle various formats and make them user-friendly\n return value\n .replace(/_/g, ' ')\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nexport function DonutChart({ groupByOptions, dateRange, selectedType, groupBy, onGroupByChange, unit }: DonutChartProps) {\n const { data, loading, error } = useQuery(GET_DONUT_STATISTICS, {\n variables: {\n type: selectedType,\n groupBy,\n from: dateRange?.from?.toISOString(),\n to: dateRange?.to?.toISOString(),\n names: unit === \"tokens\" ? [\"inputTokens\", \"outputTokens\"] : [\"count\"]\n },\n skip: !dateRange?.from || !dateRange?.to\n });\n\n const { chartData, chartConfig } = React.useMemo(() => {\n if (!data?.trackingStatistics) return { chartData: [], chartConfig: {} };\n\n const sortedData = data.trackingStatistics\n .map((item: any, index: number) => ({\n name: transformGroupValue(item?.group),\n value: item?.count,\n fill: CHART_COLORS[index % CHART_COLORS.length]\n }))\n .sort((a: any, b: any) => b.value - a.value); // Sort by count descending\n\n const config: ChartConfig = sortedData.reduce((acc: any, item: any, index: number) => {\n acc[item.name] = {\n label: item.name,\n color: CHART_COLORS[index % CHART_COLORS.length],\n };\n return acc;\n }, {});\n\n return { chartData: sortedData, chartConfig: config };\n }, [data]);\n\n const renderCustomLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }: any) => {\n if (percent < 0.05) return null; // Don't show labels for slices less than 5%\n\n const RADIAN = Math.PI / 180;\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n return (\n <text\n x={x}\n y={y}\n fill=\"black\"\n textAnchor={x > cx ? 'start' : 'end'}\n dominantBaseline=\"central\"\n fontSize=\"12\"\n fontWeight=\"600\"\n paintOrder=\"stroke\"\n >\n {`${(percent * 100).toFixed(0)}%`}\n </text>\n );\n };\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-xl font-semibold\">Distribution</h3>\n {groupByOptions.length > 0 && (\n <div className=\"w-full max-w-[150px]\">\n <Select value={groupBy} onValueChange={onGroupByChange}>\n <SelectTrigger>\n <SelectValue placeholder=\"Group by\" />\n </SelectTrigger>\n <SelectContent>\n {groupByOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n <div className=\"flex-1 min-h-0\">\n {loading ? (\n <div className=\"space-y-4 h-full\">\n <Skeleton className=\"h-full w-full\" />\n </div>\n ) : error ? (\n <div className=\"flex items-center justify-center h-full text-red-500\">\n Error loading distribution data: {error.message}\n </div>\n ) : chartData.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-muted-foreground text-center\">\n No data available for the selected date range, type, and grouping.\n </div>\n ) : (\n <ChartContainer config={chartConfig} className=\"h-full w-full\">\n <PieChart>\n <defs>\n {chartData.map((entry: any, index: number) => (\n <radialGradient\n key={`gradient-${index}`}\n id={`gradient-${entry.name.replace(/\\s+/g, '-')}`}\n cx=\"50%\"\n cy=\"50%\"\n r=\"50%\"\n >\n <stop\n offset=\"0%\"\n stopColor={entry.fill}\n stopOpacity={1}\n />\n <stop\n offset=\"100%\"\n stopColor={entry.fill}\n stopOpacity={0.8}\n />\n </radialGradient>\n ))}\n </defs>\n <Pie\n data={chartData}\n cx=\"50%\"\n cy=\"50%\"\n labelLine={false}\n label={renderCustomLabel}\n outerRadius=\"75%\"\n innerRadius=\"45%\"\n dataKey=\"value\"\n strokeWidth={3}\n >\n {chartData.map((entry: any, index: number) => (\n <Cell\n key={`cell-${index}`}\n fill={`url(#gradient-${entry.name.replace(/\\s+/g, '-')})`}\n />\n ))}\n </Pie>\n <ChartTooltip\n content={\n <ChartTooltipContent\n nameKey=\"name\"\n hideLabel\n formatter={(value: any, name: any) => [\n typeof value === 'number' ? value.toLocaleString() : value,\n \" \" + String(name)\n ]}\n />\n }\n />\n </PieChart>\n </ChartContainer>\n )}\n </div>\n </div>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_TIME_SERIES_STATISTICS } from \"@/queries/queries\";\nimport { STATISTICS_TYPE } from \"@/types/enums/statistics\";\nimport { XAxis, YAxis, CartesianGrid, Area, AreaChart } from 'recharts';\nimport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, type ChartConfig } from \"@/components/ui/chart\";\nimport { format, eachDayOfInterval, startOfDay } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\n\ninterface TimeSeriesChartProps {\n dateRange: DateRange | undefined;\n selectedType: STATISTICS_TYPE;\n onTypeChange: (type: STATISTICS_TYPE) => void;\n onUnitChange: (unit: 'tokens' | 'count') => void;\n dataTypes: string[];\n unit: 'tokens' | 'count';\n unitOptions: { label: string, value: string }[];\n}\n\nfunction transformEnumToLabel(enumValue: string): string {\n return enumValue\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nconst chartConfig = {\n count: {\n label: \"Count\",\n color: \"hsl(var(--muted-foreground))\",\n },\n} satisfies ChartConfig\n\nexport function TimeSeriesChart({ dataTypes, dateRange, selectedType, onTypeChange, onUnitChange, unit, unitOptions }: TimeSeriesChartProps) {\n const { data, loading, error } = useQuery(GET_TIME_SERIES_STATISTICS, {\n variables: {\n type: selectedType,\n name: unit,\n from: dateRange?.from?.toISOString(),\n to: dateRange?.to?.toISOString(),\n names: [unit]\n },\n skip: !dateRange?.from || !dateRange?.to\n });\n\n const chartData = React.useMemo(() => {\n if (!data?.trackingStatistics || !dateRange?.from || !dateRange?.to) return [];\n\n // Transform API data into a map for quick lookup\n const dataMap = new Map();\n data.trackingStatistics.forEach((item: any) => {\n const dateObj = new Date(typeof item.group === 'number' ? item.group : Number(item.group));\n const dateKey = format(startOfDay(dateObj), 'yyyy-MM-dd');\n dataMap.set(dateKey, item.count);\n });\n\n // Generate all dates in the range\n const allDates = eachDayOfInterval({\n start: startOfDay(dateRange.from),\n end: startOfDay(dateRange.to)\n });\n\n // Fill gaps with zero values\n return allDates.map(date => {\n const dateKey = format(date, 'yyyy-MM-dd');\n const count = dataMap.get(dateKey) || 0;\n\n return {\n date: date.getTime(),\n count: count,\n formattedDate: format(date, 'MMM dd'),\n dateObj: date\n };\n });\n }, [data, dateRange]);\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-xl font-semibold\">Time Series Analytics</h3>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-[150px]\">\n <Select value={selectedType} onValueChange={(value) => onTypeChange(value as STATISTICS_TYPE)}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select data type\" />\n </SelectTrigger>\n <SelectContent>\n {dataTypes?.map((type) => (\n <SelectItem key={type} value={type}>\n {transformEnumToLabel(type) + \" \"}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n {\n unitOptions?.length > 1 && (<div className=\"w-[150px]\">\n <Select value={unit} onValueChange={(value) => onUnitChange(value as 'tokens' | 'count')}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select unit\" />\n </SelectTrigger>\n <SelectContent>\n {unitOptions?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>)\n }\n </div>\n </div>\n\n <div className=\"flex-1 min-h-0\">\n {loading ? (\n <div className=\"space-y-4 h-full\">\n <Skeleton className=\"h-full w-full\" />\n </div>\n ) : error ? (\n <div className=\"flex items-center justify-center h-full text-red-500\">\n Error loading time series data: {error.message}\n </div>\n ) : chartData.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-muted-foreground\">\n No data available for the selected date range and type\n </div>\n ) : (\n <ChartContainer config={chartConfig} className=\"h-full w-full\">\n <AreaChart data={chartData}>\n <defs>\n <linearGradient id=\"fillCount\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop\n offset=\"5%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.3}\n />\n <stop\n offset=\"95%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.05}\n />\n </linearGradient>\n <linearGradient id=\"strokeCount\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n <stop\n offset=\"0%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.8}\n />\n <stop\n offset=\"100%\"\n stopColor=\"hsl(var(--muted-foreground))\"\n stopOpacity={0.6}\n />\n </linearGradient>\n </defs>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--muted-foreground))\"\n strokeOpacity={0.3}\n vertical={false}\n />\n <XAxis\n dataKey=\"formattedDate\"\n tick={{ fontSize: 12, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n axisLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n />\n <YAxis\n tick={{ fontSize: 12, fill: \"hsl(var(--muted-foreground))\" }}\n tickLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n axisLine={{ stroke: \"hsl(var(--muted-foreground))\", strokeOpacity: 0.5 }}\n />\n <ChartTooltip\n labelFormatter={(label: any, payload: any) => {\n if (payload && payload[0]) {\n return format(payload[0].payload.dateObj, 'PPP') + \" \";\n }\n return label;\n }}\n content={<ChartTooltipContent\n nameKey=\"name\"\n hideLabel\n formatter={(value: any, name: any) => [\n typeof value === 'number' ? value.toLocaleString() : value,\n \" \" + String(name)\n ]}\n />}\n />\n <ChartLegend content={<ChartLegendContent />} />\n <Area\n type=\"monotone\"\n dataKey=\"count\"\n stroke=\"url(#strokeCount)\"\n strokeWidth={3}\n fill=\"url(#fillCount)\"\n fillOpacity={0.6}\n dot={{\n fill: \"hsl(var(--muted-foreground))\",\n strokeWidth: 2,\n r: 4,\n strokeOpacity: 0.8\n }}\n activeDot={{\n r: 6,\n strokeWidth: 2,\n fill: \"hsl(var(--background))\",\n stroke: \"hsl(var(--muted-foreground))\",\n strokeOpacity: 1\n }}\n name={transformEnumToLabel(selectedType)}\n />\n </AreaChart>\n </ChartContainer>\n )}\n </div>\n </div>\n );\n}","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n})\nChartContainer.displayName = \"Chart\"\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n)\nChartTooltipContent.displayName = \"ChartTooltip\"\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n }\n)\nChartLegendContent.displayName = \"ChartLegend\"\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\";\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","\"use client\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import { cn } from \"@/lib/utils\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","export type STATISTICS_TYPE = \"CONTEXT_RETRIEVE\" | \"SOURCE_UPDATE\" | \"EMBEDDER_UPSERT\" | \"EMBEDDER_GENERATE\" | \"EMBEDDER_DELETE\" | \"WORKFLOW_RUN\" | \"CONTEXT_UPSERT\" | \"TOOL_CALL\" | \"AGENT_RUN\";\n\nexport const STATISTICS_TYPE_ENUM = {\n CONTEXT_RETRIEVE: \"CONTEXT_RETRIEVE\",\n SOURCE_UPDATE: \"SOURCE_UPDATE\",\n EMBEDDER_UPSERT: \"EMBEDDER_UPSERT\",\n EMBEDDER_GENERATE: \"EMBEDDER_GENERATE\",\n EMBEDDER_DELETE: \"EMBEDDER_DELETE\",\n WORKFLOW_RUN: \"WORKFLOW_RUN\",\n CONTEXT_UPSERT: \"CONTEXT_UPSERT\",\n TOOL_CALL: \"TOOL_CALL\",\n AGENT_RUN: \"AGENT_RUN\"\n};\n"],"names":["Promise","resolve","then","__webpack_require__","bind","SummaryCardElement","param","title","currentValue","previousValue","isLoading","jsx_runtime","jsxs","Card","className","CardHeader","jsx","CardTitle","div","CardContent","Skeleton","percentageChange","isPositive","isNeutral","TrendIcon","Minus","TrendingUp","TrendingDown","trendColor","concat","toLocaleString","p","span","Math","abs","toFixed","br","SummaryCard","query","entity","dates","useMemo","now","Date","toISOString","twentyFourHoursAgo","subHours","sevenDaysAgo","subDays","data","data24h","loading","loading24h","useQuery","variables","from","to","data7d","loading7d","getTotal","Array","isArray","reduce","sum","item","count","twentyFourHourTotal","sevenDayAverage","round","Leaderboard","leaderboardData","type","dateRange","icon","subtitle","valueLabel","emptyMessage","maxEntries","nameFilter","hydrationQuery","hydrationField","queryVariables","baseVars","names","idsToHydrate","trackingStatistics","filter","group","map","slice","console","log","hydrationData","hydrationLoading","ids","skip","length","displayName","hydratedItem","find","h","id","parseInt","name","firstname","lastname","email","value","sort","a","b","index","rank","getRankIcon","Trophy","Medal","Award","getRankColor","_","i","maxValue","percentage","entry","style","width","dynamic","DashboardPage","setDateRange","useState","selectedType","setSelectedType","unit","setUnit","groupBy","setGroupBy","leaderboardView","setLeaderboardView","h2","DateRangeSelector","onDateRangeChange","maxDays","GET_AGENT_SESSIONS_STATISTICS","GET_AGENT_RUN_STATISTICS","GET_TOKEN_USAGE_STATISTICS","GET_WORKFLOW_RUNS_STATISTICS","GET_FUNCTION_CALLS_STATISTICS","TimeSeriesChart","onTypeChange","onUnitChange","unitOptions","label","dataTypes","STATISTICS_TYPE_ENUM","CONTEXT_RETRIEVE","SOURCE_UPDATE","EMBEDDER_UPSERT","EMBEDDER_GENERATE","EMBEDDER_DELETE","WORKFLOW_RUN","CONTEXT_UPSERT","TOOL_CALL","AGENT_RUN","DonutChart","groupByOptions","onGroupByChange","h3","button","onClick","GET_USER_STATISTICS","Users","GET_USERS_BY_IDS","GET_PROJECT_STATISTICS","Layers","GET_PROJECTS_BY_IDS","GET_AGENT_STATISTICS","Bot","Calendar","classNames","showOutsideDays","props","DayPicker","cn","months","month","caption","caption_label","nav","nav_button","buttonVariants","variant","nav_button_previous","nav_button_next","table","head_row","head_cell","row","cell","day","day_range_end","day_selected","day_today","day_outside","day_disabled","day_range_middle","day_hidden","components","IconLeft","ChevronLeft","IconRight","ChevronRight","toast","useToast","disabledDays","React","fromDate","before","addDays","after","Popover","PopoverTrigger","asChild","Button","CalendarIcon","Fragment","format","PopoverContent","align","initialFocus","mode","defaultMonth","selected","onSelect","newRange","daysDifference","differenceInDays","description","disabled","numberOfMonths","CHART_COLORS","error","GET_DONUT_STATISTICS","chartData","chartConfig","sortedData","replace","split","word","charAt","toUpperCase","toLowerCase","join","fill","config","acc","color","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","Select","onValueChange","SelectTrigger","SelectValue","placeholder","SelectContent","SelectItem","option","message","ChartContainer","PieChart","defs","radialGradient","cx","cy","r","stop","offset","stopColor","stopOpacity","Pie","labelLine","midAngle","innerRadius","outerRadius","percent","RADIAN","PI","radius","x","cos","text","y","sin","textAnchor","dominantBaseline","fontSize","fontWeight","paintOrder","dataKey","strokeWidth","Cell","ChartTooltip","content","ChartTooltipContent","nameKey","hideLabel","formatter","String","transformEnumToLabel","enumValue","GET_TIME_SERIES_STATISTICS","dataMap","Map","forEach","dateObj","Number","dateKey","startOfDay","set","allDates","eachDayOfInterval","start","end","date","get","getTime","formattedDate","AreaChart","linearGradient","x1","y1","x2","y2","CartesianGrid","strokeDasharray","stroke","strokeOpacity","vertical","XAxis","tick","tickLine","axisLine","YAxis","labelFormatter","payload","ChartLegend","ChartLegendContent","Area","fillOpacity","dot","activeDot","ref","CardDescription","CardFooter","THEMES","light","dark","ChartContext","useChart","context","children","uniqueId","chartId","Provider","data-chart","ChartStyle","RechartsPrimitive","colorConfig","Object","entries","theme","dangerouslySetInnerHTML","__html","prefix","itemConfig","key","active","indicator","hideIndicator","labelClassName","labelKey","tooltipLabel","getPayloadConfigFromPayload","nestLabel","indicatorColor","undefined","hideIcon","verticalAlign","backgroundColor","payloadPayload","configLabelKey","PopoverPrimitive","sideOffset","SelectPrimitive","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","position","SelectLabel","Check","SelectSeparator","toastTimeouts","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","reducer","state","action","toasts","t","open","listeners","memoryState","listener","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","setState","push","indexOf","splice"],"sourceRoot":""}
|