Skip to content

[jules] a11y: Complete keyboard navigation for Dashboard and Friends pages#310

Open
Devasy wants to merge 1 commit intomainfrom
jules-a11y-keyboard-nav-dashboard-friends-15600808817016522657
Open

[jules] a11y: Complete keyboard navigation for Dashboard and Friends pages#310
Devasy wants to merge 1 commit intomainfrom
jules-a11y-keyboard-nav-dashboard-friends-15600808817016522657

Conversation

@Devasy
Copy link
Copy Markdown
Owner

@Devasy Devasy commented Mar 31, 2026

Added comprehensive keyboard navigation support to the Dashboard and Friends pages.

  • Applied focus-visible states to all interactive elements (Quick Actions, individual/group comparison balances, friend cards, error retries, and search inputs).
  • Re-styled focus states dynamically to conform with both the Glassmorphism and Neobrutalism design patterns.
  • Enhanced ARIA metadata on the Friends page to properly announce the relationship between expandable summary buttons and their breakdown details containers (aria-controls, aria-expanded).
  • Included tracking updates to todo.md and changelog.md.

PR created automatically by Jules for task 15600808817016522657 started by @Devasy23

Summary by CodeRabbit

Release Notes

  • New Features
    • Full keyboard navigation now available on Dashboard and Friends pages
    • Added visible focus indicators for interactive elements with theme-aware styling support
    • Enhanced ARIA attributes on expandable elements for improved assistive technology support

…pages

Added comprehensive keyboard navigation support to the Dashboard and Friends pages.
- Applied `focus-visible` states to all interactive elements (Quick Actions, individual/group comparison balances, friend cards, error retries, and search inputs).
- Re-styled focus states dynamically to conform with both the Glassmorphism and Neobrutalism design patterns.
- Enhanced ARIA metadata on the Friends page to properly announce the relationship between expandable summary buttons and their breakdown details containers (`aria-controls`, `aria-expanded`).
- Included tracking updates to `todo.md` and `changelog.md`.

Co-authored-by: Devasy23 <110348311+Devasy23@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@Devasy Devasy requested a review from vrajpatelll as a code owner March 31, 2026 20:01
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 31, 2026

Deploy Preview for split-but-wiser ready!

Name Link
🔨 Latest commit 01909f2
🔍 Latest deploy log https://app.netlify.com/projects/split-but-wiser/deploys/69cc281ea4206e0008d40acb
😎 Deploy Preview https://deploy-preview-310--split-but-wiser.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 31, 2026

Walkthrough

This pull request implements keyboard navigation and focus styling improvements across the Web Dashboard and Friends pages. Changes include adding theme-aware focus-visible ring styling to interactive elements, improving ARIA attributes for accessibility on expandable containers, and updating project documentation to reflect completion of these accessibility enhancements.

Changes

Cohort / File(s) Summary
Documentation Updates
.Jules/changelog.md, .Jules/todo.md
Added accessibility completion entries documenting keyboard navigation implementation and focus-visible styling for Dashboard and Friends pages, marked as completed on 2026-03-31.
Dashboard Component
web/pages/Dashboard.tsx
Updated navigation button Tailwind classes to include outline-none and focus-visible ring/offset styling with theme-dependent colors (Neobrutalism: black/white; default: blue-500/white).
Friends Component
web/pages/Friends.tsx
Enhanced focus styling on search input, retry button, and view details button with theme-aware focus-visible rings; added aria-controls, aria-expanded, and id attributes to friend toggle buttons and expanded details containers for improved accessibility.

Possibly related PRs

  • PR #224: Modifies the same Jules documentation files (changelog.md and todo.md) for tracking changes and task completion.

Suggested reviewers

  • vrajpatelll
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: completing keyboard navigation accessibility for Dashboard and Friends pages, with the [jules] prefix indicating the project context.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov bot commented Mar 31, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (main@9404621). Learn more about missing BASE report.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #310   +/-   ##
=======================================
  Coverage        ?   63.55%           
=======================================
  Files           ?       21           
  Lines           ?     2456           
  Branches        ?      254           
=======================================
  Hits            ?     1561           
  Misses          ?      831           
  Partials        ?       64           
Components Coverage Δ
Authentication System 71.35% <ø> (?)
Expense Management 70.15% <ø> (?)
Group Management 73.78% <ø> (?)
User Management 97.16% <ø> (?)
Backend Core 70.78% <ø> (?)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@web/pages/Friends.tsx`:
- Around line 153-154: The focus styles in the Glassmorphism branch use both
focus:ring-2 focus:ring-blue-500/50 and focus-visible:ring-2 which can stack;
update the non-Neobrutalism class string (the ternary branch in Friends.tsx
producing 'bg-white/10 border border-white/20 ...') to remove the plain focus:
classes and use focus-visible:ring-2 focus-visible:ring-blue-500/50 (and
focus-visible:ring-offset if needed) instead so only focus-visible variants are
applied, matching the rest of the PR and avoiding conflicting
:focus/:focus-visible stacking.
- Around line 307-312: The "View Details" button inside the Friends component
has no onClick handler; either wire it to the same navigation/action used by the
other buttons in this file or remove it until ready. Locate the button (the
element rendering "View Details" and using the isNeo variable and ArrowRight
icon) and add an onClick prop that calls the existing handler used elsewhere in
this component (reuse the same function the other action buttons call) or, if no
action exists yet, remove the button markup to avoid a dead control. Ensure the
added handler performs the intended navigation/action and keeps the existing
styling logic.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a22c9065-7114-4314-996c-9a7856d19077

📥 Commits

Reviewing files that changed from the base of the PR and between 9404621 and 01909f2.

⛔ Files ignored due to path filters (1)
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (4)
  • .Jules/changelog.md
  • .Jules/todo.md
  • web/pages/Dashboard.tsx
  • web/pages/Friends.tsx

Comment on lines +153 to +154
? 'bg-white border-2 border-black shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] focus:translate-x-[2px] focus:translate-y-[2px] focus:shadow-[2px_2px_0px_0px_rgba(0,0,0,1)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-black dark:focus-visible:ring-white rounded-none placeholder:text-black/40'
: 'bg-white/10 border border-white/20 focus:bg-white/20 focus:border-blue-400 focus:ring-2 focus:ring-blue-500/50 backdrop-blur-md rounded-2xl text-white placeholder:text-white/40'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Minor: Potential focus style conflict on non-Neobrutalism theme.

The Glassmorphism branch combines focus:ring-2 focus:ring-blue-500/50 with focus-visible:ring-2. Since :focus and :focus-visible can both apply during keyboard navigation, this may cause unpredictable ring stacking. Consider using only focus-visible: classes for consistency with the rest of the PR.

💡 Suggested simplification
-                : 'bg-white/10 border border-white/20 focus:bg-white/20 focus:border-blue-400 focus:ring-2 focus:ring-blue-500/50 backdrop-blur-md rounded-2xl text-white placeholder:text-white/40'
+                : 'bg-white/10 border border-white/20 focus:bg-white/20 focus:border-blue-400 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 backdrop-blur-md rounded-2xl text-white placeholder:text-white/40'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/pages/Friends.tsx` around lines 153 - 154, The focus styles in the
Glassmorphism branch use both focus:ring-2 focus:ring-blue-500/50 and
focus-visible:ring-2 which can stack; update the non-Neobrutalism class string
(the ternary branch in Friends.tsx producing 'bg-white/10 border border-white/20
...') to remove the plain focus: classes and use focus-visible:ring-2
focus-visible:ring-blue-500/50 (and focus-visible:ring-offset if needed) instead
so only focus-visible variants are applied, matching the rest of the PR and
avoiding conflicting :focus/:focus-visible stacking.

Comment on lines +307 to 312
<button type="button" className={`w-full mt-4 py-2 text-sm font-bold flex items-center justify-center gap-2 transition-colors outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${isNeo
? 'bg-black text-white hover:bg-gray-800 rounded-none focus-visible:ring-black dark:focus-visible:ring-white'
: 'bg-white/10 hover:bg-white/20 rounded-xl focus-visible:ring-white/50'
}`}>
View Details <ArrowRight size={14} />
</button>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if there's an onClick handler for "View Details" buttons elsewhere or if this is a known TODO
rg -n "View Details" web/pages/Friends.tsx -A 5 -B 2

Repository: Devasy/splitwiser

Length of output: 439


🏁 Script executed:

sed -n '305,315p' web/pages/Friends.tsx

Repository: Devasy/splitwiser

Length of output: 843


🏁 Script executed:

sed -n '280,320p' web/pages/Friends.tsx

Repository: Devasy/splitwiser

Length of output: 2479


🏁 Script executed:

rg -i "todo|fixme|wip|placeholder" web/pages/Friends.tsx

Repository: Devasy/splitwiser

Length of output: 628


🏁 Script executed:

rg -n "onClick" web/pages/Friends.tsx | head -20

Repository: Devasy/splitwiser

Length of output: 179


Add onClick handler to "View Details" button

The button in the Group Breakdown section has no click handler, while other buttons in this file do (e.g., line 253). Either implement the navigation/action or remove the button until functionality is ready.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/pages/Friends.tsx` around lines 307 - 312, The "View Details" button
inside the Friends component has no onClick handler; either wire it to the same
navigation/action used by the other buttons in this file or remove it until
ready. Locate the button (the element rendering "View Details" and using the
isNeo variable and ArrowRight icon) and add an onClick prop that calls the
existing handler used elsewhere in this component (reuse the same function the
other action buttons call) or, if no action exists yet, remove the button markup
to avoid a dead control. Ensure the added handler performs the intended
navigation/action and keeps the existing styling logic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant