It's possible to build one with data structures. There may be one from me or others on the pd forum. But it's really a pain to build.
I'm not even so worried about the pain of building, but about how you can make something that feels good and intuitive to use given the limited HID data you get from Pd. I mean there is no way to detect hovering or a mouse key release. I made menu widgets that required the user to keep the mouse key pressed while dragging, thus scrolling through the list of available items to pick. Number boxes and sliders work also with dragging. Nowadays, I'm starting to believe that dragging with mouse key pressed is not an ergonomic action and I'm going to avoid it whenever possible. Both, [jp.menu] and [dropDownMenu], do the selection with two clicks. I think that is the better approach.
I think there's [mousestate] or maybe something in one of the iem libraries (?), and if I remember correctly, structs can declare if a mouse is over them. But yes, there are very few options, and a solution using the gui's own possibilities would surely be better.