Summary
Redesign the discovery filter bar to use a GitHub-style inline filter pattern — all filters displayed as a single-line token string inside one bordered box, with clickable parameters that open dropdowns.
Current
Four separate controls (Writer toggle, Genre dropdown, Language dropdown, Sort dropdown) laid out as a 2x2 grid on mobile and flex row on desktop. Takes up too much vertical space on mobile.
File: src/app/page.tsx:60-65
Desired
1. Single-line filter box (GitHub-style)
All filters rendered inline in one bordered box, like GitHub's filter bar:
┌──────────────────────────────────────────────────────────────┐
│ writer:All genre:Romance lang:English ↕ sort │
└──────────────────────────────────────────────────────────────┘
- One bordered container holding all filter tokens
- Format:
label:value pairs separated by spaces
- Values in green accent color (
text-accent) — labels in muted
- Sort icon on the right end (inside the same box or adjacent)
2. Clickable params with dropdown
- Clicking any
label:value pair opens a dropdown positioned below the clicked token
- Dropdown shows the available options for that filter
- Only one dropdown open at a time (clicking another closes the previous)
- Clicking outside closes the dropdown
3. Mobile: sort as icon
- On mobile, replace the "Sort: Recent" dropdown with a sort icon (e.g.
↕ or arrow-up-down icon) to save horizontal space
- This allows all filters + sort to fit in one line on mobile
- Tapping the icon opens the sort options dropdown
Reference
See GitHub's filter bar: is:issue state:open — each token is inline, values are colored, clicking opens a dropdown.
Visual reference (from screenshots)
Current mobile — filters wrap to 2x2 grid, sort on second row:
Writer: [All] Human AI | Romance ▼ |
| Korean ▼ | Sort: | Recent ▼ |
Desired mobile — single line:
┌─────────────────────────────────────────────┐
│ writer:All genre:All lang:English ↕ │
└─────────────────────────────────────────────┘
Components to modify/create
- Replace or refactor
WriterFilter, GenreFilter, LanguageFilter, SortDropdown into a unified FilterBar component
- Or wrap existing components in a new inline layout with shared dropdown logic
Acceptance Criteria
Labels
agent/T3, plotlink, ui, design
Summary
Redesign the discovery filter bar to use a GitHub-style inline filter pattern — all filters displayed as a single-line token string inside one bordered box, with clickable parameters that open dropdowns.
Current
Four separate controls (Writer toggle, Genre dropdown, Language dropdown, Sort dropdown) laid out as a 2x2 grid on mobile and flex row on desktop. Takes up too much vertical space on mobile.
File:
src/app/page.tsx:60-65Desired
1. Single-line filter box (GitHub-style)
All filters rendered inline in one bordered box, like GitHub's filter bar:
label:valuepairs separated by spacestext-accent) — labels in muted2. Clickable params with dropdown
label:valuepair opens a dropdown positioned below the clicked token3. Mobile: sort as icon
↕or arrow-up-down icon) to save horizontal spaceReference
See GitHub's filter bar:
is:issue state:open— each token is inline, values are colored, clicking opens a dropdown.Visual reference (from screenshots)
Current mobile — filters wrap to 2x2 grid, sort on second row:
Desired mobile — single line:
Components to modify/create
WriterFilter,GenreFilter,LanguageFilter,SortDropdowninto a unifiedFilterBarcomponentAcceptance Criteria
label:valuetokens in a single bordered boxtext-accent)tab,writer,genre,lang)Labels
agent/T3,plotlink,ui,design