From bfe0559a8cc0a14dfb0918a62ce8bb9dcf8f6e16 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Fri, 6 Feb 2026 12:29:12 +0100 Subject: [PATCH 1/3] TIER 1 - BLOCKING (Accessibility & Usability Failures) --- app/faq/page.tsx | 2 +- app/integrations/page.tsx | 4 +-- app/onboarding/page.tsx | 8 ++--- app/page.tsx | 4 +-- app/sites/[id]/realtime/page.tsx | 8 ++--- app/sites/[id]/settings/page.tsx | 32 ++++++++++---------- components/Footer.tsx | 22 +++++++------- components/dashboard/ContentStats.tsx | 4 +-- components/dashboard/Locations.tsx | 4 +-- components/dashboard/TechSpecs.tsx | 4 +-- components/dashboard/TopReferrers.tsx | 2 +- components/settings/OrganizationSettings.tsx | 8 ++--- components/sites/SiteList.tsx | 2 +- 13 files changed, 52 insertions(+), 52 deletions(-) diff --git a/app/faq/page.tsx b/app/faq/page.tsx index ea63f70..feb027c 100644 --- a/app/faq/page.tsx +++ b/app/faq/page.tsx @@ -58,7 +58,7 @@ function FAQItem({ faq, index }: { faq: typeof faqs[0]; index: number }) { > @@ -115,9 +115,9 @@ export default function RealtimePage() { -
+
{/* Visitors List */} -
+

Active Sessions

@@ -145,7 +145,7 @@ export default function RealtimePage() { exit={{ opacity: 0, x: -10 }} transition={{ duration: 0.2 }} onClick={() => handleSelectVisitor(visitor)} - className={`w-full text-left p-4 hover:bg-neutral-50 dark:hover:bg-neutral-800/50 transition-colors ${ + className={`w-full text-left p-4 hover:bg-neutral-50 dark:hover:bg-neutral-800/50 transition-colors focus:outline-none focus:ring-2 focus:ring-brand-orange focus:ring-inset ${ selectedVisitor?.session_id === visitor.session_id ? 'bg-neutral-50 dark:bg-neutral-800/50 ring-1 ring-inset ring-neutral-200 dark:ring-neutral-700' : '' }`} > diff --git a/app/sites/[id]/settings/page.tsx b/app/sites/[id]/settings/page.tsx index f1fe4d7..fea73d3 100644 --- a/app/sites/[id]/settings/page.tsx +++ b/app/sites/[id]/settings/page.tsx @@ -317,7 +317,7 @@ export default function SiteSettingsPage() {
@@ -515,7 +515,7 @@ export default function SiteSettingsPage() {
@@ -555,7 +555,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, is_public: e.target.checked })} className="sr-only peer" /> -
+
@@ -581,7 +581,7 @@ export default function SiteSettingsPage() { @@ -607,7 +607,7 @@ export default function SiteSettingsPage() { }} className="sr-only peer" /> -
+
@@ -688,7 +688,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, collect_page_paths: e.target.checked })} className="sr-only peer" /> -
+
@@ -709,7 +709,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, collect_referrers: e.target.checked })} className="sr-only peer" /> -
+
@@ -730,7 +730,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, collect_device_info: e.target.checked })} className="sr-only peer" /> -
+
@@ -775,7 +775,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, collect_screen_resolution: e.target.checked })} className="sr-only peer" /> -
+
@@ -799,7 +799,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, filter_bots: e.target.checked })} className="sr-only peer" /> -
+
@@ -823,7 +823,7 @@ export default function SiteSettingsPage() { onChange={(e) => setFormData({ ...formData, enable_performance_insights: e.target.checked })} className="sr-only peer" /> -
+
diff --git a/components/Footer.tsx b/components/Footer.tsx index 3fc5060..9c28614 100644 --- a/components/Footer.tsx +++ b/components/Footer.tsx @@ -51,13 +51,13 @@ export function Footer({ LinkComponent = Link, appName = 'Pulse', isAuthenticate © 2024-{year} Ciphera. All rights reserved.
- + Why {appName} - + Pricing - + FAQ
@@ -102,7 +102,7 @@ export function Footer({ LinkComponent = Link, appName = 'Pulse', isAuthenticate href="https://github.com/ciphera-net" target="_blank" rel="noopener noreferrer" - className="w-9 h-9 rounded-lg bg-neutral-100 dark:bg-neutral-800 flex items-center justify-center text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange hover:bg-neutral-200 dark:hover:bg-neutral-700 transition-colors" + className="w-9 h-9 rounded-lg bg-neutral-100 dark:bg-neutral-800 flex items-center justify-center text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange hover:bg-neutral-200 dark:hover:bg-neutral-700 transition-colors focus:outline-none focus:ring-2 focus:ring-brand-orange" aria-label="GitHub" > @@ -111,7 +111,7 @@ export function Footer({ LinkComponent = Link, appName = 'Pulse', isAuthenticate href="https://x.com/cipheranet" target="_blank" rel="noopener noreferrer" - className="w-9 h-9 rounded-lg bg-neutral-100 dark:bg-neutral-800 flex items-center justify-center text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange hover:bg-neutral-200 dark:hover:bg-neutral-700 transition-colors" + className="w-9 h-9 rounded-lg bg-neutral-100 dark:bg-neutral-800 flex items-center justify-center text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange hover:bg-neutral-200 dark:hover:bg-neutral-700 transition-colors focus:outline-none focus:ring-2 focus:ring-brand-orange" aria-label="X (Twitter)" > @@ -130,14 +130,14 @@ export function Footer({ LinkComponent = Link, appName = 'Pulse', isAuthenticate href={link.href} target="_blank" rel="noopener noreferrer" - className="text-sm text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange transition-colors" + className="text-sm text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange transition-colors focus:outline-none focus:ring-2 focus:ring-brand-orange focus:rounded" > {link.name} ) : ( {link.name} @@ -158,14 +158,14 @@ export function Footer({ LinkComponent = Link, appName = 'Pulse', isAuthenticate href={link.href} target="_blank" rel="noopener noreferrer" - className="text-sm text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange transition-colors" + className="text-sm text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange transition-colors focus:outline-none focus:ring-2 focus:ring-brand-orange focus:rounded" > {link.name} ) : ( {link.name} @@ -186,14 +186,14 @@ export function Footer({ LinkComponent = Link, appName = 'Pulse', isAuthenticate href={link.href} target="_blank" rel="noopener noreferrer" - className="text-sm text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange transition-colors" + className="text-sm text-neutral-600 dark:text-neutral-400 hover:text-brand-orange dark:hover:text-brand-orange transition-colors focus:outline-none focus:ring-2 focus:ring-brand-orange focus:rounded" > {link.name} ) : ( {link.name} diff --git a/components/dashboard/ContentStats.tsx b/components/dashboard/ContentStats.tsx index c19277d..f764e56 100644 --- a/components/dashboard/ContentStats.tsx +++ b/components/dashboard/ContentStats.tsx @@ -96,7 +96,7 @@ export default function ContentStats({ topPages, entryPages, exitPages, domain, {showViewAll && ( @@ -107,7 +107,7 @@ export default function ContentStats({ topPages, entryPages, exitPages, domain, @@ -207,7 +207,7 @@ export default function Locations({ countries, cities, regions, geoDataLevel = ' @@ -130,7 +130,7 @@ export default function TechSpecs({ browsers, os, devices, screenResolutions, co diff --git a/components/settings/OrganizationSettings.tsx b/components/settings/OrganizationSettings.tsx index 4663854..63cb1bf 100644 --- a/components/settings/OrganizationSettings.tsx +++ b/components/settings/OrganizationSettings.tsx @@ -353,7 +353,7 @@ export default function OrganizationSettings() {