Tier 3Roku. The Overhang is a stock Roku node. The custom FileListItem stacks a raw filename over its caption; SceneGraph ships no stock row with this anatomy.DesignTokens.brs · primary · appBackground · focus · text · textMuted
The row is the one thing put.io had to build
FileListItem.xml: a Group holding a hidden FocusBackground and a horizontal LayoutGroup at translation="[35,60]": 50×50 icon, title (h2 36) over caption (27) with 10px spacing, then an eye.
No value slot. listItemMainTextWidth(1716) gives the title 1490px, so long raw filenames ellipsize before the row edge. The caption is size - date; the eye marks a saved playback position.
The header title is the folder name, Your Files at the root. Options (✱) opens the delete dialog for the focused row; the Overhang's Delete affordance is the only hint on screen.
put.io
Your Files
Delete
homework_answers_DONT_DELETE
4 MB - Jan 9, 2026
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
3 GB - May 2, 2026
Seinfeld.S09E23.The.Finale.Part.2.720p.HDTV.x264-FLEET.mkv
1 GB - May 2, 2026
podcast_ep127_final_mixdown_v2.mp3
72 MB - Mar 14, 2026
document-scan-march-2026.pdf
210 KB - Mar 3, 2026
Files · custom FileListItem in a stock MarkupListEvery file-type glyph is primary; the folder uses fill weight. Sizes truncate to whole units. The PDF row appears only with the media-only filter off.
list[102,189] · rows [1716,120] · spacing 30 · numRows="6" · fixedFocusWrap
iconsfile-folder, file-video, file-audio, file-image, file-text, else file-other
captionconvertSize (whole units) - convertDate (short month)
eye40×40 textMuted, shown when start_from > 0
folder openthe row blinks a 50px spinner Poster while the folder loads
emptyThis folder is empty. / Upload files to this folder from put.io and they will appear here. · media-only: No media files here
Per-control detail, the token map and the full don't list live in platforms/roku/DESIGN.md.
Do not use PosterGrid or RowList. Both are built for catalogue apps with artwork.

A grid of grey rectangles shows fewer items, truncates longer names, and turns a straight D-pad path into one that crosses the screen.