A shell is not a terminal emulator. It's a program that does text I/O (perhaps with a terminal, perhaps not) and implements basic system functionality like executing programs and often scripting.
Most people interact with a shell through a terminal emulator, though. The alternative is something like emacs's eshell. Or an actual "terminal" which hasn't been even available for purchase for many decades.
I wouldn't either, which I why I didn't include that interaction in the definition I gave. A shell just implements basic system functionality, it doesn't necessarily function as a UI.