Skip to content

Overhaul search & results UX: new search bar, results toolbar, and a map-first view #1

Description

@AhmedFr

Summary

The current search and results experience has grown awkward as the app added trip
modes, languages, and a map. The header carries a tagline and an absolute "data
updated" timestamp, the search form is a tall card that doesn't scale to per-mode
fields, and there's no first-class way to browse results on the map or to
filter/sort/page a long list. This issue tracks an end-to-end overhaul of search,
results, and the map view.

Motivation

  • Navbar is cluttered — tagline + absolute timestamp add noise and don't help the user act.
  • Search form doesn't scale — a single tall card can't cleanly show mode-relevant fields plus advanced filters.
  • Results are hard to navigate — no place filter, no sort, no list/map toggle, and long lists render all at once.
  • Map is an afterthought — no map-first browsing, no pin tooltips/popups, and the map height is a flat 100vh rather than the real viewport.

Proposed changes

Navbar & search

  • Slim the navbar to logo + name; drop the tagline and absolute timestamp.
  • Show a relative-time "data updated" pill (Intl.RelativeTimeFormat); turn the language selector into a globe pill.
  • Move the MAX pass selector into the search bar.
  • Replace the tall form card with an Airbnb-style search pill: inline mode-relevant segments, advanced filters in a popover, search + surprise actions on the right.
  • Turn "How does it work?" into a hover/focus card beside the tabs.

Results

  • Add a results toolbar: place filter, per-mode sort dropdown, and a persisted List / Map view toggle.
  • Page long lists (40 at a time) with "Show more"; cache the computed list so filter/sort/paging never recompute the search.

Map

  • Map-first view: full-bleed map with a floating results panel; pins get hover tooltips and a click popup linking to the exact trip.
  • Tint pins green→red by connection count.
  • Size the sticky map to the live measured viewport below the navbar + search bar.

States & polish

  • Clean empty / error (with retry) / loading (skeleton + boot spinner) states.
  • Custom-styled selects with a theme-aware chevron.

Acceptance criteria

  • Search bar exposes mode-relevant fields inline with advanced filters in a popover.
  • Results can be filtered by place, sorted per mode, and toggled between list and map.
  • Long result lists paginate instead of rendering everything at once.
  • Map view supports pin tooltips/popups and fills the measured viewport.
  • Empty, error, and loading states are handled cleanly.
  • pnpm test and tsc --noEmit both pass.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions