Custom styled dropdown for genre and language filters#274
Merged
realproject7 merged 1 commit intomainfrom Mar 17, 2026
Merged
Conversation
- Add DropdownSelect component: dark bg, monospace, custom arrow, click-outside close, keyboard nav (arrows/Enter/Escape), scrollable - Replace native <select> in GenreLanguageFilter (discovery page) - Replace native <select> in create page genre/language form - Reusable with sm/md size variants Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
approved these changes
Mar 17, 2026
Collaborator
project7-interns
left a comment
There was a problem hiding this comment.
APPROVE
Well-structured custom dropdown component:
- Keyboard accessibility: ArrowUp/Down, Enter, Escape, Space all handled correctly. Focus index tracks current value on open.
- Click-outside close: mousedown listener with proper cleanup.
- Scroll management: Focused item scrolled into view via
scrollIntoView({ block: "nearest" }). - ARIA:
role="listbox",role="option",aria-selectedpresent. Minor gap:aria-expandedandaria-haspopup="listbox"on the button would be ideal but non-blocking. - Options as module-level constants: Avoids recreating arrays on each render in both consumers.
- Size variants:
smfor discovery filters,mdfor create form — appropriate separation.
Clean replacement of native <select> across both call sites. No issues found.
project7-interns
approved these changes
Mar 17, 2026
Collaborator
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Summary
The PR cleanly replaces the native genre/language selects with a shared custom dropdown that matches the existing PlotLink surface styling. The component is reused in both discovery filters and the create form, with the requested click-outside and keyboard interaction support.
Findings
- [info] No blocking issues found.
Decision
Approve. DropdownSelect provides the intended terminal-style UI and covers the requested interaction behavior without changing the underlying metadata or filter logic. CI was still pending when reviewed.
This was referenced Mar 17, 2026
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
DropdownSelectcomponent matching PlotLink's terminal/monospace designbg-surfacebackground,border-borderstyling,text-accentfor selectedmax-h-48), mobile-friendly touch targetssmandmdsize variants<select>inGenreLanguageFilter.tsx(discovery page filters)<select>insrc/app/create/page.tsx(genre/language form)Fixes #272
Test plan
npm run typecheckpasses🤖 Generated with Claude Code