Should these live at the top level, or in `lib/ui/widgets`?