Search

Search handles product keyword lookup and seller name lookup from the header, on a single results route with a products/sellers scope switch.

Each step pairs a heading and description with a decorative 3D preview of the Equivox UI. Those previews are skipped in screen reader navigation and are not interactive for assistive technology—the text beside each preview is authoritative.

Product Search

Product search runs against listing titles on the server. It handles exact matches, partial input, and typos reasonably well through Postgres full-text search and fuzzy matching, with a relevance score deciding default result order.

Results only include publicly visible listings: approved seller, visible product, clear moderation, active category. Same gates as homepage featured content and category browse. The results page reuses the standard product card grid.

Buyers can stack the shared product filters and switch sort to price. Search defaults to relevance, other product grids default to price. When no market filter is active, the buyer's selected header market soft-prioritizes local sellers in the result order without hiding everyone else.

Seller Search

Seller search matches approved shops by business name and description, with extra typo tolerance on the business name. Results use the same seller cards as the seller directory, with live product count and review average attached.

The filter surface is lighter than products: market only. Buyers can hard-filter to one region, or leave market open and let the header selection soft-prioritize local matches. Empty states distinguish a bad query from a query that matched nothing under an active market filter.

Filtering

Product filters are shared across search, category pages, seller storefront grids, and favorites. Filter state lives in the URL and updates optimistically on the client while navigation catches up, so toggling category, price, availability, origin, or market does not feel laggy.

Active selections show as removable chips, with a clear-all path when a combination returns nothing. Category is hidden on category browse, where the page already fixes taxonomy. Search alone adds a Relevance sort option.

Price covers min/max bounds and pricing type (fixed vs contact for price). Origin is a searchable country picker. Desktop exposes one control per dimension;, whereas mobile collapses the full form into a modal.