Skip to content
CroStreamUI kit

Pickers & dialogs

Choosing things and confirming changes: presets, a gallery picker, media pickers and fields, a folder picker, form and prompt dialogs, and confirmations that show what will be affected.

01PresetMenu

PresetMenu

Built-in and saved looks in one menu. Each row previews the look; choosing one applies it. “Save current as…” names what you have now and warns before replacing one of yours, and deleting asks twice, in place.

Text style presets Open it with Enter or Space; arrow keys wrap. In “Delete a preset”, the first Enter arms the row, the second deletes.
Raid incoming! Signal

Try saving as “Hype train” to see the replace warning, or as “Clean” to see why built-in names are taken.

02GalleryPicker

GalleryPicker

Every element and widget in one panel: categories with counts, a search that has focus the moment it opens, an origin filter, and live previews. Arrow keys move in two dimensions; Enter or a double-click adds. Drag a tile straight onto the canvas.

Add an element Inline, as it appears inside the popover. Shift+F10 on a tile jumps to its Favourite button.

Nothing added yet.

As a popover, onto a canvas Non-blocking, so tiles can be dragged out; the panel fades while one is in flight.
Drag a tile here
PreviewTile Presentational: the grid owns focus and selection, so nothing inside is focusable.
Cheer alert Bits with a burst New
Chat box Chat on stream, with badges

03AssetPicker

AssetPicker

Pick one file from the media library: folders on the side, a debounced search, a kind filter and a thumbnail grid that pages in as you scroll. Enter or a double-click picks. Every request is numbered and aborted when a newer one replaces it, so a slow old search can never overwrite a newer one.

Choose a background Static, as the dialog draws it. Results arrive after a random 120–650 ms delay; type quickly and only the newest search shows.

Choose a background

Clips

This folder is empty.

Nothing picked yet.

Live The same picker as a modal dialog.

04AssetField

AssetField

A media value inside a form: what's chosen, with Change and Clear. It looks the id up itself, so a file that has been moved or deleted says so instead of showing a blank.

Pick a sound Inside a trigger's settings. Change opens the AssetPicker filtered to sounds.
Alert sound
Nothing chosen
Plays when the trigger fires.
Background image
Nothing chosen
Raid sound
Nothing chosen

05TreePickerDialog

TreePickerDialog

Choose a place in a tree. Places that can't be chosen stay visible, so the tree still makes sense, and say why; the current place is tagged. Search keeps the branches that lead to a match. Enter or a double-click picks.

Move “Sounds” to… Static. Focus a dimmed folder to see its reason beside the button. 2025 refuses the move, to show an error coming back.

Move “Sounds” to…

Library Current It’s already here.
Clips

Not moved yet.

Live

06FormDialog

FormDialog

A dialog whose body is a form: Enter submits, a busy state holds it open, and errors come back inline, one for the form and one per field. When submitting isn't possible yet, the reason is shown beside the button instead of hiding in a tooltip.

New overlay Static. Leave the name empty to see the reason; try “Main” for a field error or “offline” for a form error.

New overlay

A blank canvas you add elements to. You can change the size later.

Orientation

Match your OBS canvas so nothing gets scaled.

Nothing created yet.

Live

07PromptDialog

PromptDialog

One question, one field. The text is selected on open so typing replaces it; validation runs as you type, and a warning changes the button to say what will happen instead of blocking.

Rename folder Static. Type “Sounds” for the merge warning (the button becomes “Merge folders”), or a slash for an error.

Rename folder

Not renamed yet.

Live

08ImpactConfirmDialog

ImpactConfirmDialog

A confirmation that looks before it leaps: on open it finds what else the action touches and lists it. Delete stays unavailable, with the reason shown, until that list has loaded; a failed lookup offers a retry. Focus starts on Cancel.

Delete widget Static. Lists the overlays that use the widget after a short lookup.

Delete “Follower goal”?

The widget and its settings are deleted for good.

Overlays using it

Not deleted yet.

When the lookup fails Static. The first try fails; Try again succeeds with nothing else affected.

Delete “Old intro”?

The sound is removed from your library.

Triggers using it

Live