Add an accessible label to the notification-bell icon button (a11y)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
- #50 by @lovewave02 — closed without merging
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- next.js, typescript
- Domain
- accessibility, frontend
Research direction
Start with src/components/notification-bell.tsx at the DropdownMenuTrigger, then compare the accessible-name patterns in src/components/theme-toggle.tsx and src/components/mobile-nav.tsx. Check other icon-only controls as requested; done means the bell name and unread count are available to assistive technology, any other gaps are fixed, and pnpm build passes.
Written by the indexing model from the issue text.
Description
Good first issue (accessibility)
The notifications trigger in src/components/notification-bell.tsx is an icon-only button (<Bell />) with no accessible name — screen readers announce nothing:
<DropdownMenuTrigger className="relative rounded-full p-1.5 ...">
<Bell size={18} />
{unreadCount > 0 && ( <span ...>{unreadCount}</span> )}
</DropdownMenuTrigger>
Our convention: every interactive control has an accessible name (see the a11y note in the component inventory). Other icon buttons already do this — theme-toggle.tsx (aria-label="Toggle theme"), mobile-nav.tsx / sheet.tsx (sr-only text).
What to do
- Give the trigger an
aria-label(e.g."Notifications"). - Reflect the unread count for assistive tech — e.g.
aria-label={unreadCount > 0 ? \Notifications, ${unreadCount} unread` : "Notifications"}`. - While you're here, audit other icon-only controls for the same gap and fix any you find.
Acceptance
- Notification bell has a meaningful accessible name (verified in the a11y tree / VoiceOver)
- Unread state is conveyed to screen readers
-
pnpm buildpasses
Pointers
- File:
src/components/notification-bell.tsx(theDropdownMenuTrigger~L45) - Reference patterns:
src/components/theme-toggle.tsx,src/components/mobile-nav.tsx
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 6
- Avg merge
- 13h 29m
- Merged PRs (30d)
- 56
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from grasshopper-protocol/grsshppr
-
bug UX
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
grasshopper-protocol/grsshppr#209 ·
Maintainers usually reply within 1 day
-
Add tests for utils.ts cn() functionPossibly taken @yogesh201sits claimed this 6 days ago. Opengood first issue testing
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
grasshopper-protocol/grsshppr#81 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
code quality documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
grasshopper-protocol/grsshppr#78 ·
Maintainers usually reply within 1 day
-
a11y documentation good first issue UI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
grasshopper-protocol/grsshppr#77 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
grasshopper-protocol/grsshppr#46 ·
Maintainers usually reply within 1 day
All issues in grasshopper-protocol/grsshppr
Similar issues
-
backend refactor
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
NIAEFEUP/tts#927 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
callstackincubator/react-native-harness#296 ·
Maintainers usually reply within 1 day
-
status:in-linear
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
n8n-io/n8n#42293 · 1 comment ·
Maintainers usually reply within 1 day
-
verified
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 5 days
-
Add inputmode attribute support (forwarded to the inner input)May be free again A pull request for this issue was closed without being merged. Openenhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Neovici/cosmoz-input#467 ·
Maintainers usually reply within 1 day