fix: responsive, ARIA, performance and CSS cleanup improvements
Addresses remaining medium and low severity audit findings: - H2: Dark mode @media selector narrowed to :root:not([data-theme]) so OS-preference and manual-override blocks are now mutually exclusive - L2: Remove ~410 lines of dead Slides Builder CSS (no component exists) - M2: VAT toggle uses flex spacer instead of margin-inline-start:auto, preventing layout break when filter bar wraps at medium-small widths - M3: Page content max-width aligned to 1400px (matches nav bar) - M5: Period picker toggle now has aria-controls="period-picker-panel" pointing to the InlinePicker root in both Dashboard and Comparison - M6: Offline badge cache timestamp exposed via sr-only span for screen reader accessibility (was title-only before) - M7: chartOpts/barHorizOpts/barNoLegend wrapped in useMemo([baseOpts]) to prevent unnecessary Chart.js re-renders - L4: Filter bar scrolls horizontally on mobile instead of wrapping - L5: Metrics grid uses auto-fit/minmax to eliminate orphaned cards Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -250,6 +250,11 @@ function App() {
|
||||
<line x1="12" y1="20" x2="12.01" y2="20"/>
|
||||
</svg>
|
||||
{t('app.offline') || 'Offline'}
|
||||
{cacheInfo && (
|
||||
<span className="sr-only">
|
||||
{` (cached ${new Date(cacheInfo.timestamp || '').toLocaleString()})`}
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
)}
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user