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)
}