import { Suspense, lazy, useEffect } from "react"; import { createFileRoute, redirect, Link } from "@tanstack/react-router"; import { authClient } from "@/lib/auth-client"; import { useAnalytics } from "@/hooks/use-analytics"; import { trackUmamiEvent, AnalyticsEvent } from "@/lib/umami"; import { MaterialIcon } from "@/components/ui/MaterialIcon"; import { OverviewCards } from "@/components/analytics/OverviewCards"; import { WeaknessPanel } from "@/components/analytics/WeaknessPanel"; const ChartsBundle = lazy(() => import("@/components/analytics/ChartsBundle")); export const Route = createFileRoute("/analytics")({ component: AnalyticsComponent, beforeLoad: async () => { const session = await authClient.getSession(); if (!session.data) { redirect({ to: "/login", throw: true }); } return { session }; }, }); function ChartSkeleton() { return (
); } function AnalyticsComponent() { const { overview, byExamType, bySectionType, byFormat, trend, weaknesses, timeAnalytics, isLoading, } = useAnalytics(); useEffect(() => { trackUmamiEvent(AnalyticsEvent.VIEW_ANALYTICS); }, []); if (isLoading) { return (
{Array.from({ length: 6 }).map((_, i) => (
))}
); } return (
{/* Header */}
Beranda Analitik

Analitik

Pantau perkembangan dan identifikasi area untuk ditingkatkan.

{/* Overview */}
{/* Charts — lazy loaded */} }> {/* Weaknesses */}
); }