This is the destination for the search icon in the bottom navigation. Search sits in the mint header and is not focused on entry, so the keyboard does not open until the field is tapped. There is no back control, because search is a root tab rather than a pushed screen.
Newest first, five rows maximum. Older terms fall off the list rather than collapsing behind a control. Tapping a row loads that term into the search field and runs the query. Tapping the X removes only that term and the list reflows. When every term is removed the section disappears completely rather than showing an empty state.
Condition handles carrying the medically reviewed badge, ranked by follower count. Five rows maximum on the landing screen. The badge is the signal for the section, so no row appears here without one.
See more opens a bottom sheet with the full set. The sheet has its own search that filters within medically reviewed accounts only. The control reads See more when the sheet is closed and See less when it is open, and tapping it while open dismisses the sheet.
People rather than condition handles: patient creators and verified HCPs. Each row shows display name, handle, and the conditions they post about, truncated at one line. Five rows maximum, same see more behaviour and a separate sheet scoped to people.
Follow is optimistic and toggles in place: dark filled pill for Follow, outlined pill for Following. State is held per account and shared between the landing rows and the sheet, so following inside a sheet is reflected the moment it closes. Follow never navigates away from search.
Refreshing is the only action that re-ranks the two account lists. Following an account updates that single row in place and nothing else moves, because the previous behaviour reshuffled both lists on follow and threw away whatever the person was reading.
Dragging down from the top of the list pulls the list with resistance and reveals a circular indicator that fills as the drag approaches the threshold, around 62px of travel. Releasing short of the threshold springs back and does nothing.
Releasing past the threshold locks the list down by 46px, the indicator switches to an indeterminate spin, and a green gradient stroke travels left to right along the bottom edge of the header. The header and the search field stay in place for the whole load, so search remains available while the lists are being fetched. When the refresh lands the lists re-render and the list settles back to its resting position, and the stroke runs one last faster pass left to right on the same edge as the completion signal before fading out.
Typing in the header field filters all three sections live against term, handle, display name, and condition label. Sections with no matches are hidden rather than shown empty. If nothing matches anywhere, a single empty state replaces the list. Clearing the field restores the default landing state.
Sheet is a standard iOS bottom sheet at roughly 88% height, dismissed by the grabber drag, the close control, tapping the scrim, or the see less control. Sheet search clears on dismiss. The list behind the sheet keeps its scroll position.
Whether recent searches persist across sessions or per device, and whether they should be clearable in one action. Whether suggested to follow is personalised on condition selection at onboarding or on engagement. Whether the sheets should paginate once an account list passes roughly fifty entries.