ui: Split UI module into separate files