Tier 4Tier 4 · TV (Generic): tv.put.io, Tizen, webOS. The restrained, list-first web binding is the reference presentation. Android TV shares the product behaviour but applies Google's native TV components and focus model.--component-bg · --component-bg-active · --border-hover · --radius-tv
The field is a proxy; the platform types
The search box is a focusable surface over an invisible TextInput: selecting it summons the platform IME (Tizen, webOS, Gboard TV). put.io draws no keyboard on this tier. Source: features/search/screens/Search/search-header.tsx.
The field and the Settings button share one focus recipe: fill steps to --component-bg-active, border steps to --border-hover. The field also holds that state while the input itself has IME focus.
History chips are size="sm" Buttons with the history glyph. Their labels override the button's uppercase to lowercase-as-typed: a chip replays the user's own string verbatim.
e
homework_answers_DONT_DELETE
12 items
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
3.42 GB
Seinfeld.S09E23.The.Finale.Part.2.720p.HDTV.x264-FLEET.mkv
1.20 GB
document-scan-march-2026.pdf
184 KB
Search · results stateThe result row owns the single focus target. The field receives the same fill and border treatment when focus returns to it.
screenScreen header=<SearchHeader>: no title row. The header column is the whole chrome
fieldflex 1 · padding 16 all round · radius 12 · glyph search at 48 --text-secondary · keyword 36 --text
placeholderTap to start typing in --text-secondary when the keyword is empty
settingssm Button opens the centred SelectModal Search settings: Disable/Show search history, destructive Clear search history
history chipssm Buttons, history glyph, label 24 lowercase-as-typed. Row hidden when history is empty or disabled
searchingcentred spinner + Searching... while the query is in flight
no resultscentred body text No results found. No icon, no heading
errorthe standard ErrorState (see tv-s06-states)
on openselecting a result records the keyword to history, then pushes the files screen
Contract: platforms/tv-generic/DESIGN.md · source: features/search/**, components/ui/button.tsx
Do not draw an on-screen keyboard on this tier. The shipped screen delegates typing to the platform IME; a put.io-drawn key grid exists only on Roku, where the platform ships one (MiniKeyboard) and the channel must use it.