A small room model where exported declarative actions update switches and grouped lights through useViewerActions.
The exported binding object is passed to ModelViewer as state.
BindingBuilder creates the records. We add actions to the switch records, pass the bindings into the viewer, and patch the same bindings when an action runs.