Skip to content

fix(search): polish action bar tooltips and enhance empty state (#983)#987

Merged
ericsocrat merged 1 commit intomainfrom
fix/983-action-bar-empty-state
Mar 20, 2026
Merged

fix(search): polish action bar tooltips and enhance empty state (#983)#987
ericsocrat merged 1 commit intomainfrom
fix/983-action-bar-empty-state

Conversation

@ericsocrat
Copy link
Owner

Summary

Polishes action bar button accessibility and enhances the search empty state with descriptive text and popular search term chips.

Changes

  • Action bar tooltips: Added itle attributes to view mode toggle, save search button, and saved searches link for screen reader accessibility
  • Empty state enhancement: Added descriptive subtitle text and popular search term chips that trigger instant search on click
  • i18n: Added 3 new keys to en/pl/de dictionaries (�mptyStateDescription, rySearching, savedSearches)
  • Tests: 4 new Vitest tests covering empty state description, popular chips rendering, chip click behavior, and saved searches link title attribute

Verification

  • 54/54 search page tests passing
  • TypeScript: 0 errors
  • 5 files changed, +87/-4 lines

Closes #983

Copilot AI review requested due to automatic review settings March 20, 2026 04:20
@vercel
Copy link

vercel bot commented Mar 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
tryvit Ready Ready Preview, Comment Mar 20, 2026 4:22am

@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@github-actions
Copy link

📸 PR Screenshots

Captured 4 screenshots (2 mobile, 2 desktop) for 2 changed page(s):

  • i18n-dashboard
  • search

📥 Download screenshots from workflow artifacts.

Captured by PR Screenshots workflow • 2026-03-20

@github-actions
Copy link

Bundle Size Report

Metric Value
Main baseline 0 KB
This PR 0 KB
Delta +0 KB (+0%)
JS chunks 0
Hard limit 4000 KB

✅ Bundle size is within acceptable limits.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR improves the search page UX by enhancing the “no search yet” empty state and adding tooltip text to action-bar controls to help identify icon-only actions (especially on mobile).

Changes:

  • Added tooltip text (title) to view mode toggle, save search, and saved searches link.
  • Enhanced the empty state to include a descriptive subtitle and clickable popular-search chips.
  • Added new i18n strings (en/pl/de) and expanded Vitest coverage for the new UI.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
frontend/src/app/app/search/page.tsx Adds title tooltips to action bar controls; augments empty state with description and popular search chips.
frontend/src/app/app/search/page.test.tsx Adds tests for empty state description/chips, chip click behavior, and saved searches tooltip.
frontend/messages/en.json Adds new search empty-state/label strings used by the updated UI.
frontend/messages/pl.json Adds Polish equivalents for the new search UI strings.
frontend/messages/de.json Adds German equivalents for the new search UI strings.

Comment on lines 442 to 447
<button
type="button"
onClick={() => setShowSaveDialog(true)}
className="touch-target text-xs text-foreground-muted hover:text-brand"
title={t("search.saveSearch")}
>
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The Save Search button is icon-only below the xs breakpoint (the text is display:none), and it currently relies on title for labeling. title is not a reliable accessible name for screen readers, so the control can be announced without a name on mobile. Add an aria-label (and keep title only as an optional visual tooltip).

Copilot uses AI. Check for mistakes.
@@ -454,6 +456,7 @@
<Link
href="/app/search/saved"
className="touch-target text-xs text-foreground-muted hover:text-brand"
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The Saved Searches link text is hidden on small screens (hidden xs:inline), so the link can lose its accessible name. Using only title doesn’t consistently fix this for assistive tech. Add an aria-label (and optionally keep title for mouse hover) so the link is always announced correctly.

Suggested change
className="touch-target text-xs text-foreground-muted hover:text-brand"
className="touch-target text-xs text-foreground-muted hover:text-brand"
aria-label={t("search.savedSearches")}

Copilot uses AI. Check for mistakes.
Comment on lines +271 to +273
it("saved searches link has title attribute for accessibility", () => {
render(<SearchPage />, { wrapper: createWrapper() });
const link = screen.getByTitle("Saved searches");
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

This test asserts accessibility via getByTitle, but title is not a reliable accessibility mechanism and isn’t exposed consistently through the accessibility tree. After adding an aria-label/accessible name on the Saved Searches link, prefer asserting with getByRole('link', { name: ... }) instead.

Suggested change
it("saved searches link has title attribute for accessibility", () => {
render(<SearchPage />, { wrapper: createWrapper() });
const link = screen.getByTitle("Saved searches");
it("saved searches link is accessible via role and name", () => {
render(<SearchPage />, { wrapper: createWrapper() });
const link = screen.getByRole("link", { name: "Saved searches" });

Copilot uses AI. Check for mistakes.
@ericsocrat ericsocrat merged commit 5bfb802 into main Mar 20, 2026
22 checks passed
@ericsocrat ericsocrat deleted the fix/983-action-bar-empty-state branch March 20, 2026 04:30
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.

fix(search): mobile action bar polish + empty state enhancement

2 participants