'use client' import { useEffect, useState } from 'react' import { useParams } from 'next/navigation' import { getDateRange, formatDate } from '@ciphera-net/ui' import { Select, DatePicker } from '@ciphera-net/ui' import { getPerformanceByPage } from '@/lib/api/stats' import { useDashboard } from '@/lib/swr/dashboard' import { useMinimumLoading, useSkeletonFade } from '@/components/skeletons' import dynamic from 'next/dynamic' const PerformanceStats = dynamic(() => import('@/components/dashboard/PerformanceStats')) function getThisWeekRange(): { start: string; end: string } { const today = new Date() const dayOfWeek = today.getDay() const monday = new Date(today) monday.setDate(today.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1)) return { start: formatDate(monday), end: formatDate(today) } } function getThisMonthRange(): { start: string; end: string } { const today = new Date() const firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1) return { start: formatDate(firstOfMonth), end: formatDate(today) } } function PerformanceSkeleton() { return (
{[1, 2, 3].map(i => (
))}
) } export default function PerformancePage() { const params = useParams() const siteId = params.id as string const [period, setPeriod] = useState('30') const [dateRange, setDateRange] = useState(() => getDateRange(30)) const [isDatePickerOpen, setIsDatePickerOpen] = useState(false) const { data: dashboard, isLoading: loading } = useDashboard(siteId, dateRange.start, dateRange.end) const site = dashboard?.site ?? null const showSkeleton = useMinimumLoading(loading && !dashboard) const fadeClass = useSkeletonFade(showSkeleton) useEffect(() => { const domain = site?.domain document.title = domain ? `Performance \u00b7 ${domain} | Pulse` : 'Performance | Pulse' }, [site?.domain]) if (showSkeleton) return if (site && !site.enable_performance_insights) { return (

Performance insights are disabled

Enable performance insights in your site settings to start collecting Core Web Vitals data.

) } return (
{/* Header */}

Performance

Core Web Vitals from real user sessions