<$reveal state="$:/state/zoomin-fullscreen" type="nomatch" text="yes">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/state/zoomin-fullscreen" text="yes"/>
<$action-setfield $tiddler="$:/view" text="zoomin"/>
<$action-sendmessage $message="tm-full-screen"/>
zoomin
</$button>
</$reveal>
<$reveal state="$:/state/zoomin-fullscreen" type="match" text="yes">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/state/zoomin-fullscreen" text="no"/>
<$action-setfield $tiddler="$:/view" text="classic"/>
<$action-sendmessage $message="tm-full-screen"/>
zoomout
</$button>
</$reveal>
that would be a simple button to toggle your modes
note that there's no reliant way to distinguish between toggling fullscreen off if it's on or on if it's off
that means that if you press "escape" while you're fullscreen or click the fullscreen button in the sidebar this button then sets fullscreen on when you leave zoomin mode
---
your second question:
I assume that with states you mean the tiddlers that are shown and maybe if the sidebar is shown or not
You can do that, too
The shown tiddlers are stored in the "$:/StoryList" tiddler
The sidebar state is in "$:/state/sidebar"
Knowing that, you can extend the button:
<$reveal state="$:/state/zoomin-fullscreen" type="nomatch" text="yes">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/state/zoomin-fullscreen" text="yes"/>
<$action-setfield $tiddler="$:/view" text="zoomin"/>
<$action-sendmessage $message="tm-full-screen"/>
<$action-setfield $tiddler="$:/storylist/classic/save" text={{$:/StoryList!!list}}/>
<$action-setfield $tiddler="$:/StoryList" $field="list" $value={{$:/storylist/zoomin/save}}/>
<$action-setfield $tiddler="$:/sidebarstate/classic/save" text={{$:/state/sidebar}}/>
<$action-setfield $tiddler="$:/state/sidebar" text={{$:/sidebarstate/zoomin/save}}/>
zoomin
</$button>
</$reveal>
<$reveal state="$:/state/zoomin-fullscreen" type="match" text="yes">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/state/zoomin-fullscreen" text="no"/>
<$action-setfield $tiddler="$:/view" text="classic"/>
<$action-sendmessage $message="tm-full-screen"/>
<$action-setfield $tiddler="$:/storylist/zoomin/save" text={{$:/StoryList!!list}}/>
<$action-setfield $tiddler="$:/StoryList" $field="list" $value={{$:/storylist/classic/save}}/>
<$action-setfield $tiddler="$:/sidebarstate/zoomin/save" text={{$:/state/sidebar}}/>
<$action-setfield $tiddler="$:/state/sidebar" text={{$:/sidebarstate/classic/save}}/>
zoomout
</$button>
</$reveal>
you can try this code on
tiddlywiki.com to see if it fits your needs
best wishes, BTC