Tier 3Roku. SceneGraph ships no node for this, so put.io builds it from generated tokens. Every number here is read from the channel source, not designed here.DialogStyle.brs · scrim · surface · panelBorder · focus · primary
Track menucomponents/shared/TrackMenuput.io owns this
One panel serves audio, subtitle and speed selection from the player's right-hand controls. Eight row Groups are declared in XML; the panel grows to the row count and scrolls past eight.
Subtitles
Off
English
Turkish
Spanish
German
SubtitlesFive rows, 504 tall. The check marks the active track; the fill marks focus
Playback speed
0.25x
0.5x
0.75x
1x
1.25x
1.5x
1.75x
2x
Playback speedEight rows fill the 720 panel. Focus on 1.25x, 1x still active
scrim1920x1080, scrim
panel822 wide on surface, height 108 + rows + 45, centred: 504 at five rows, 720 at eight
shadow[12,12], same size, flat
border3px on all four sides, panelBorder
title[48,45], w726, h1 45: Audio tracks · Subtitles · Playback speed
rowsgroup at [48,108]; 726x63, 9 apart; label [24,12] 600 wide, body 36 text
check[660,9] 45x45 check asset, primary, on the active item only
scroll8 visible rows. Past that the window follows focus; 3px border separators appear 12 above or below the rows when more items sit there
focusrow background focus; opens on the active item
emptyone disabled row: No tracks available
Do not. Let the check stand in for focus or the fill stand in for selection. They answer different questions, and the active track is often not the focused one.
Contract: platforms/roku/DESIGN.md