Search
The search UI has three components, all imported from @/components/search. Today’s search is a basic keyword match on name or title across organisations, projects, articles and people. Search across every content type is on the roadmap. See also Search & Discovery.
Both search fields read useSearchParams(), so TopNavClient wraps each in a Suspense boundary to keep static pages prerendering.
SearchBar
Section titled “SearchBar”The desktop search form in the top nav, shown when no page has replaced the nav’s left slot. On submit it navigates to searchHref(value). If no initialQuery is passed, it seeds from ?q=.
Source: src/components/search/SearchBar.tsx
MobileSearchBar
Section titled “MobileSearchBar”The mobile top nav collapsed into a full-width search field (opened by MobileSearchTrigger, see Navigation). In docked mode, on the /search page, submitting uses router.replace, so refining a query doesn’t stack history entries, and back/Escape leave the page. The value re-syncs from ?q= on back/forward navigation.
Source: src/components/search/MobileSearchBar.tsx
SearchResultsFeed
Section titled “SearchResultsFeed”The infinite results list on /search. It is a GenericInfiniteFeed with entity="search" that renders the matching domain card for each result kind. The page passes the first page server-rendered and keys the feed by query, so a new query resets it.