Skip to main content

Dashboard

Welcome back! Here's your business overview.

Total Leads

247

+12% from last month

Active Clients

89

+8% from last month

Monthly Revenue

2,450

+15% from last month

Conversion Rate

36%

+3% from last month

Lead Conversion Funnel

Leads Generated 247
Consultations Booked 156
Consultations Completed 134
Clients Acquired 89

Monthly Revenue Trend

Lead Sources

Referrals
45%
Social Media
28%
Google Ads
15%
Partnerships
12%

Recent Activity

New client signed up

Sarah Johnson - 2 hours ago

Consultation scheduled

Mike Davis - 4 hours ago

Referral received

From Emma Wilson - 6 hours ago

Partnership meeting

Dr. Smith Physio - Yesterday

Quick Actions

+ value.toLocaleString(); } } } } } }); }); + value.toLocaleString(); } } } } } }); // Client Growth Chart const clientGrowthCtx = document.getElementById('clientGrowthChart').getContext('2d'); new Chart(clientGrowthCtx, { type: 'bar', data: { labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'], datasets: [{ label: 'New Clients', data: [12, 15, 8, 18, 14, 24], backgroundColor: 'rgba(16, 185, 129, 0.8)', borderColor: '#10B981', borderWidth: 1 }, { label: 'Total Active', data: [45, 58, 64, 78, 85, 89], backgroundColor: 'rgba(59, 130, 246, 0.8)', borderColor: '#3B82F6', borderWidth: 1 }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'top' } }, scales: { y: { beginAtZero: true } } } }); // Lead Sources Chart const leadSourcesCtx = document.getElementById('leadSourcesChart').getContext('2d'); new Chart(leadSourcesCtx, { type: 'doughnut', data: { labels: ['Referrals', 'Social Media', 'Google Ads', 'Events', 'Partnerships'], datasets: [{ data: [89, 67, 45, 34, 12], backgroundColor: [ '#3B82F6', '#10B981', '#F59E0B', '#8B5CF6', '#EF4444' ], borderWidth: 2, borderColor: '#ffffff' }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'bottom' } } } }); // Modal functionality const exportReportBtn = document.getElementById('exportReportBtn'); const exportReportModal = document.getElementById('exportReportModal'); const closeExportModalBtn = document.getElementById('closeExportModalBtn'); const cancelExportModalBtn = document.getElementById('cancelExportModalBtn'); const exportModalOverlay = document.getElementById('exportModalOverlay'); function openModal() { exportReportModal.classList.remove('hidden'); document.body.style.overflow = 'hidden'; exportReportModal.setAttribute('aria-hidden', 'false'); } function closeModal() { exportReportModal.classList.add('hidden'); document.body.style.overflow = 'auto'; exportReportModal.setAttribute('aria-hidden', 'true'); exportReportBtn.focus(); } // Event listeners exportReportBtn.addEventListener('click', openModal); closeExportModalBtn.addEventListener('click', closeModal); cancelExportModalBtn.addEventListener('click', closeModal); exportModalOverlay.addEventListener('click', closeModal); // ESC key listener document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && !exportReportModal.classList.contains('hidden')) { closeModal(); } }); // Focus trap exportReportModal.addEventListener('keydown', function(e) { if (e.key === 'Tab') { const focusableElements = exportReportModal.querySelectorAll('button, input, select, textarea'); const firstElement = focusableElements[0]; const lastElement = focusableElements[focusableElements.length - 1]; if (e.shiftKey && document.activeElement === firstElement) { e.preventDefault(); lastElement.focus(); } else if (!e.shiftKey && document.activeElement === lastElement) { e.preventDefault(); firstElement.focus(); } } }); });