I've used zsh/curses a few times to hack together little interfaces, and it is quite workable. It makes things far simpler once you start reaching for terminfo's capabilities that require you to think about state too much. A friend of mine wrote a little mblaze⁴ frontend using it, and it felt like using single mailbox mutt with less than a hundred lines of code.
I was expecting the linked project to be a loadable module too given that bash also supports them, but it is actually a little more interesting to look at given it implements a bunch of the behaviour itself on top of tput calls.
¹ https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html#The-...
² https://github.com/zsh-users/zsh/blob/master/Functions/Misc/...
³ https://github.com/zsh-users/zsh/blob/master/Functions/Misc/...