The current state.
The transition to apply; see WidgetAction.
The next state. setMinute clamps the minute to [0, 1440] and recomputes date;
setDate/setLng keep the solar minute-of-day and recompute date; setShadows/setEnabled
just set the corresponding flag; an unknown action returns the input unchanged.
Apply an action to the state, returning a new immutable WidgetState (the input is never mutated).