screen-shell-content-split

Installation
SKILL.md

One screen, several interchangeable looks

The shell collects state, runs the effects, hosts the sheets and dialogs, and owns the gesture state machines. A content composable is handed a snapshot and a set of callbacks and does nothing but render. Adding a look is then a new file plus one branch.

// adapted
val state = PlayerContentState(screenData = …, controllerState = …, artworkPagerState = …, …)
val actions = PlayerContentActions(onUIEvent = { vm.onUIEvent(it) }, onShowQueue = { showQueue = true }, …)
when (style) {
    STYLE_TONAL -> PlayerContentTonal(state = state, actions = actions)
    else -> PlayerContentClassic(state = state, actions = actions)
}

Traps

Installs
9
GitHub Stars
1.5K
First Seen
Aug 30, 2026