Function
How far a double tap on an edge of the video skips — five, ten or twenty
seconds — chosen where a learner already looks for playback settings, beside
Speed and Accessibility. It renders nothing on its own; it is meant for a
DefaultVideoLayout slot, and LessonVideoPlayer mounts it in
settingsMenuItemsEnd.
It is built from the library's own menu parts, not from this project's
DropdownMenu. Menu.Root with DefaultMenuButton and
DefaultMenuRadioGroup is the exact composition Vidstack's DefaultSpeedMenu
uses, so this entry inherits the gear button, the popover's placement in
each layout, the focus handling, the menuitemradio semantics, and the
vds-* theme classes — including the small layout's sheet, which is the
shape an iPhone learner actually gets, and the placement inside the pinned
player when the video fills the viewport. Rebuilding those for one setting
would put three regressions where the gesture is most used.
The radio group speaks string; the rest of the app speaks seconds.
That conversion is done here and nowhere else — String(...) on the way
out, parseSeekStepSeconds on the way back — so no other module has
to know that the library's value type differs from the preference's.
The copy comes from next-intl under Components.SeekStepMenu, not from
the translations map handed to DefaultVideoLayout: that map is keyed by
Vidstack's own English words and belongs to the library's own controls. The
option labels go through an ICU plural, so each locale phrases the seconds
itself.
The seek-step setting, as an entry in the player's own settings menu.