From e19d72ebb8c90cfa349dd8349fcc30e49dbb37df Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Fri, 30 Jan 2026 14:16:26 +0100 Subject: [PATCH] feat: enhance PDF export with top pages/referrers and move export button to page header --- app/share/[id]/page.tsx | 24 +++++++++- components/dashboard/Chart.tsx | 25 +--------- components/dashboard/ExportModal.tsx | 69 +++++++++++++++++++++++++++- 3 files changed, 90 insertions(+), 28 deletions(-) diff --git a/app/share/[id]/page.tsx b/app/share/[id]/page.tsx index 1a97e63..fcea382 100644 --- a/app/share/[id]/page.tsx +++ b/app/share/[id]/page.tsx @@ -11,8 +11,8 @@ import TopReferrers from '@/components/dashboard/TopReferrers' import Locations from '@/components/dashboard/Locations' import TechSpecs from '@/components/dashboard/TechSpecs' import PerformanceStats from '@/components/dashboard/PerformanceStats' -import { Select, DatePicker as DatePickerModal, Captcha } from '@ciphera-net/ui' -import { ZapIcon } from '@ciphera-net/ui' +import { Select, DatePicker as DatePickerModal, Captcha, DownloadIcon, ZapIcon } from '@ciphera-net/ui' +import ExportModal from '@/components/dashboard/ExportModal' // Helper to get date ranges const getDateRange = (days: number) => { @@ -45,6 +45,7 @@ export default function PublicDashboardPage() { // Date range state const [dateRange, setDateRange] = useState(getDateRange(30)) const [isDatePickerOpen, setIsDatePickerOpen] = useState(false) + const [isExportModalOpen, setIsExportModalOpen] = useState(false) const [todayInterval, setTodayInterval] = useState<'minute' | 'hour'>('hour') const [multiDayInterval, setMultiDayInterval] = useState<'hour' | 'day'>('day') @@ -294,6 +295,14 @@ export default function PublicDashboardPage() {
+ +