[PULSE-44] Design consistency audit fixes #12
Reference in New Issue
Block a user
No description provided.
Delete Branch "staging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Work Item
PULSE-44
Summary
• Fixed critical design consistency, accessibility, and UX issues across entire Pulse frontend
• Standardized typography hierarchy, color naming, and focus states for WCAG 2.1 Level AA compliance
• Created comprehensive design system documentation and enhanced ARIA support for screen readers
Changes
Tier 1 - Critical Accessibility & UX Fixes (13 files):
• Color naming: Fixed 12 gray-/neutral- inconsistencies in
app/onboarding/page.tsx(4 instances) andapp/sites/[id]/settings/page.tsx(8 toggle switches)• Focus states: Added
focus:ring-2 focus:ring-brand-orangepatterns to 100+ interactive elements across FAQ page, integrations page, site/org settings tabs, realtime visitor list, dashboard component buttons, site list delete buttons, footer links (35+ links), and home page strategic links• Responsive layout: Fixed realtime page mobile bug in
app/sites/[id]/realtime/page.tsx- changed fixedw-1/3tow-full md:w-1/3withflex-col md:flex-rowparentTier 2 - Typography Standardization (16 files, 25 fixes):
• H1 marketing pages: Standardized FAQ + 4 integration sub-pages to
text-4xl md:text-5xl(from inconsistent 3xl/4xl/5xl mix)• H1 app pages: Standardized 5 pages to
text-2xl-app/sites/[id]/page.tsx,app/sites/[id]/settings/page.tsx,app/sites/new/page.tsx,app/share/[id]/page.tsx,components/settings/OrganizationSettings.tsx• H2 sections: Standardized 15 instances to
text-2xl font-boldacross home sections, onboarding, not-found, pricing, tools, realtime panels, site settings (5 sections), org settings (5 sections)• H3 refinements: Fixed 5 instances - integration cards, about callout, funnel cards to
text-xl font-bold; site settings tracking script and site list empty state totext-lg font-semiboldTier 3 - Documentation & ARIA Enhancements (6 files):
• Design system: Created comprehensive
pulse-frontend/docs/DESIGN_SYSTEM.md(1,042 lines) documenting colors, typography scale, spacing system, border radius, focus patterns, component patterns, animations, accessibility guidelines, and testing checklists• ARIA enhancement: Added
role="tablist",role="tab",aria-selected, andaria-labelto settings page tabs and dashboard widget tabs inapp/sites/[id]/settings/page.tsx,components/settings/OrganizationSettings.tsx,components/dashboard/ContentStats.tsx,components/dashboard/Locations.tsx,components/dashboard/TechSpecs.tsx• Live regions: Added
aria-live="polite"andaria-atomic="true"to realtime visitor counter inapp/sites/[id]/realtime/page.tsxfor screen reader announcements• CSS consolidation guide: Created
CSS_CONSOLIDATION_GUIDE.mdwith step-by-step instructions for moving shared brand utilities to @ciphera-net/ui (future architectural improvement)Documentation created:
•
TIER1_AUDIT_REPORT.md- Complete analysis of all Tier 1 issues with line-by-line fixes (547 lines)•
TIER1_IMPLEMENTATION_COMPLETE.md- Tier 1 completion summary•
TIER2_IMPLEMENTATION_COMPLETE.md- Tier 2 typography summary•
TIER3_IMPLEMENTATION_COMPLETE.md- Tier 3 polish summary•
CSS_CONSOLIDATION_GUIDE.md- Multi-repo CSS migration guide•
CSS_CONSOLIDATION_ANALYSIS.md- Complete usage analysis showing gradient-text has already drifted between Pulse and WebsiteTest Plan
[ ] Keyboard navigation: Tab through FAQ page, integrations page, settings pages, dashboard, footer - verify visible orange focus rings on all interactive elements
[ ] Mobile responsive: Test realtime page on <768px screen - verify visitor list and session details stack vertically and both panels are readable
[ ] Color consistency: Verify onboarding page and site settings toggles use neutral- colors (no gray- classes)
[ ] Typography hierarchy: Visual scan of all pages to confirm consistent H1/H2/H3 sizing (marketing H1: 4xl→5xl, app H1: 2xl, H2: 2xl bold, H3 sections: lg semibold, H3 cards: xl bold)
[ ] ARIA verification: Test with screen reader (VoiceOver/NVDA) on settings tabs and realtime counter - should announce tab context, selection state, and live visitor count changes
[ ] Build verification: Run
npm run buildin pulse-frontend to ensure no TypeScript errors[ ] Dark mode: Verify all changes work in both light and dark modes
Greptile Overview
Greptile Summary
aria-selectedto settings/dashboard tab UIs, plus a live region for realtime visitor count.docs/DESIGN_SYSTEM.mdreference document capturing the agreed styling + a11y conventions.Confidence Score: 4/5
focus:rounded, which will silently not work and undermines the accessibility polish intent.Important Files Changed
focus:roundedthat won’t apply and should be replaced with a realrounded-*utility.focus:roundedTailwind class that should be replaced with a realrounded-*utility.focus:roundedTailwind class on back button.focus:roundedTailwind class in multiple places.focus:roundedon the “View All” button.focus:roundedon the “View All” button.focus:roundedon the “View All” button.focus:roundedon the “View All” button.Sequence Diagram
26 files reviewed, 8 comments
Edit Code Review Agent Settings | Greptile
Invalid Tailwind variant
focus:roundedwon’t do anything in Tailwind, so the link won’t get the expected rounded focus styling. Add a realrounded-*class (and optionallyfocus:ring-offset-2).Prompt To Fix With AI
Invalid Tailwind variant
These links use
focus:rounded, which Tailwind doesn’t apply (so you won’t get the intended rounded focus treatment). Add a regularrounded-*class and considerfocus:ring-offset-2for visibility.Prompt To Fix With AI
Additional Comments (6)
app/sites/[id]/realtime/page.tsxInvalid Tailwind variant
focus:roundedisn’t a valid Tailwind class (it won’t apply any border-radius on focus), so the back button won’t get the intended rounded focus treatment. Use a real radius class (e.g.rounded-md) and, if desired,focus:ring-offset-2instead.Prompt To Fix With AI
components/Footer.tsxInvalid Tailwind variant
Several links use
focus:rounded, which Tailwind won’t interpret (so you’ll get a ring but not the intended rounded clipping/shape). Prefer a standard radius class (rounded-md/rounded-lg) and optionally addfocus:ring-offset-2.Prompt To Fix With AI
components/dashboard/ContentStats.tsxInvalid Tailwind variant
focus:roundedisn’t a valid Tailwind class, so the “View All” button won’t actually become rounded on focus (only the ring classes apply). Use a normal radius class (e.g.rounded-md) and, if you want separation from the background,focus:ring-offset-2.Prompt To Fix With AI
components/dashboard/Locations.tsxInvalid Tailwind variant
focus:roundedwon’t have any effect in Tailwind. If the intent is a rounded focus treatment, apply a standard radius class and (optionally) a ring offset.Prompt To Fix With AI
components/dashboard/TechSpecs.tsxInvalid Tailwind variant
focus:roundedisn’t a Tailwind utility, so the button won’t get the intended rounded focus style. Use a normalrounded-*class and (optionally)focus:ring-offset-2.Prompt To Fix With AI
components/dashboard/TopReferrers.tsxInvalid Tailwind variant
focus:roundedisn’t a Tailwind utility, so this won’t apply the intended rounding on focus. Use a standardrounded-*class plus ring offset if needed.Prompt To Fix With AI