tcod-base features a UI (user interface) implementation which is used to build both the modular, in-play UI (for example, the message panel and the debug panel) and all non-in-play screens (for example, the main menu screen).
Conceptually, the UI system comprises elements (for example, a UI button or a UI panel) which can be combined and/or overridden to compose a complete UI piece. A complete UI piece can then be drawn as required, for example by a state's on_draw method.
Each UI element and each complete UI piece is defined in its own module (in /game/ui).