Search bar
One --bg-muted box holding everything search needs: the query, the mode, and the button. The input gives up its own well and border to the box, so the box takes the focus colour: it is the field. Enter submits; the button is there for pointers. Below about 28rem the controls wrap under the query.
States and modes
The mode is a soft toggle made a touch wider (1.8rem tall, .75rem sides). Off reads meaning: passages close to what you describe, ranked. On reads exact text: literal matches, newest first. The search button is a send pill.
Anatomy
form.search-bar[role=search]
input[type=text] grows, at least 12rem; no well of its own
div.controls pushed right
button.chip-toggle.soft the mode
button.send.pill search ↵
box
--bg-muted, --border-default hairline, a 12px radius (a literal, shared with the chat bar), padding .55rem .6rem .55rem .9rem. The border turns --border-accent while anything inside has focus.
query
The input with its well, border and padding taken away: body serif, 1.8rem tall, line-height 1.4.
controls
.5rem apart, after a .9rem gap; they wrap below the query when the bar is narrow.
Tokens
Fill --bg-muted; rule --border-default, focus --border-accent; query --text-default, placeholder --text-muted. In Figma: Search bar, state × mode, with query and mode properties; the search button is a Button instance.