Index: uspace/app/nav/menu.h
===================================================================
--- uspace/app/nav/menu.h	(revision 8c72f533956df49c241cb19ffbeceb0d3722ad4c)
+++ uspace/app/nav/menu.h	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -38,18 +38,6 @@
 
 #include <errno.h>
-#include <ui/control.h>
-#include <ui/menu.h>
-#include <ui/menubar.h>
-#include <ui/menuentry.h>
-#include <ui/ui.h>
 #include <ui/window.h>
-#include "nav.h"
-
-/** Navigator menu */
-typedef struct nav_menu {
-	ui_t *ui;
-	ui_window_t *window;
-	ui_menu_bar_t *menubar;
-} nav_menu_t;
+#include "types/menu.h"
 
 extern errno_t nav_menu_create(ui_window_t *, nav_menu_t **);
Index: uspace/app/nav/nav.h
===================================================================
--- uspace/app/nav/nav.h	(revision 8c72f533956df49c241cb19ffbeceb0d3722ad4c)
+++ uspace/app/nav/nav.h	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -38,22 +38,5 @@
 
 #include <errno.h>
-#include <display.h>
-#include <ui/fixed.h>
-#include <ui/ui.h>
-#include <ui/window.h>
-
-/** Navigator */
-typedef struct navigator {
-	/** User interface */
-	ui_t *ui;
-	/** Window */
-	ui_window_t *window;
-	/** Fixed layout */
-	ui_fixed_t *fixed;
-	/** Menu */
-	struct nav_menu *menu;
-	/** Panels */
-	struct panel *panel[2];
-} navigator_t;
+#include "types/nav.h"
 
 extern errno_t navigator_create(const char *, navigator_t **);
Index: uspace/app/nav/panel.h
===================================================================
--- uspace/app/nav/panel.h	(revision 8c72f533956df49c241cb19ffbeceb0d3722ad4c)
+++ uspace/app/nav/panel.h	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -37,7 +37,5 @@
 #define PANEL_H
 
-#include <adt/list.h>
 #include <errno.h>
-#include <gfx/color.h>
 #include <gfx/coord.h>
 #include <io/kbd_event.h>
@@ -45,58 +43,5 @@
 #include <ui/control.h>
 #include <ui/window.h>
-#include <stdint.h>
-#include "nav.h"
-#include "panel.h"
-
-/** Panel entry */
-typedef struct {
-	/** Containing panel */
-	struct panel *panel;
-	/** Link to @c panel->entries */
-	link_t lentries;
-	/** File name */
-	char *name;
-	/** File size */
-	uint64_t size;
-} panel_entry_t;
-
-/** Navigator panel
- *
- * This is a custom UI control.
- */
-typedef struct panel {
-	/** Base control object */
-	struct ui_control *control;
-
-	/** Containing window */
-	ui_window_t *window;
-
-	/** Panel rectangle */
-	gfx_rect_t rect;
-
-	/** Panel color */
-	gfx_color_t *color;
-
-	/** Panel cursor color */
-	gfx_color_t *curs_color;
-
-	/** Panel entries (list of panel_entry_t) */
-	list_t entries;
-
-	/** Number of entries */
-	size_t entries_cnt;
-
-	/** First entry of current page */
-	panel_entry_t *page;
-
-	/** Index of first entry of current page */
-	size_t page_idx;
-
-	/** Cursor position */
-	panel_entry_t *cursor;
-
-	/** Index of entry under cursor */
-	size_t cursor_idx;
-} panel_t;
+#include "types/panel.h"
 
 extern errno_t panel_create(ui_window_t *, panel_t **);
Index: uspace/app/nav/test/panel.c
===================================================================
--- uspace/app/nav/test/panel.c	(revision 8c72f533956df49c241cb19ffbeceb0d3722ad4c)
+++ uspace/app/nav/test/panel.c	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -32,4 +32,5 @@
 #include <pcut/pcut.h>
 #include <stdio.h>
+#include <ui/ui.h>
 #include <vfs/vfs.h>
 #include "../panel.h"
Index: uspace/app/nav/types/menu.h
===================================================================
--- uspace/app/nav/types/menu.h	(revision 2fb495228984165d057f71bfa95d721845722687)
+++ uspace/app/nav/types/menu.h	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2021 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup nav
+ * @{
+ */
+/**
+ * @file Navigator menu types
+ */
+
+#ifndef TYPES_MENU_H
+#define TYPES_MENU_H
+
+#include <ui/menubar.h>
+#include <ui/ui.h>
+#include <ui/window.h>
+
+/** Navigator menu */
+typedef struct nav_menu {
+	ui_t *ui;
+	ui_window_t *window;
+	ui_menu_bar_t *menubar;
+} nav_menu_t;
+
+#endif
+
+/** @}
+ */
Index: uspace/app/nav/types/nav.h
===================================================================
--- uspace/app/nav/types/nav.h	(revision 2fb495228984165d057f71bfa95d721845722687)
+++ uspace/app/nav/types/nav.h	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2021 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup nav
+ * @{
+ */
+/**
+ * @file Navigator types
+ */
+
+#ifndef TYPES_NAV_H
+#define TYPES_NAV_H
+
+#include <ui/fixed.h>
+#include <ui/ui.h>
+#include <ui/window.h>
+
+/** Navigator */
+typedef struct navigator {
+	/** User interface */
+	ui_t *ui;
+	/** Window */
+	ui_window_t *window;
+	/** Fixed layout */
+	ui_fixed_t *fixed;
+	/** Menu */
+	struct nav_menu *menu;
+	/** Panels */
+	struct panel *panel[2];
+} navigator_t;
+
+#endif
+
+/** @}
+ */
Index: uspace/app/nav/types/panel.h
===================================================================
--- uspace/app/nav/types/panel.h	(revision 2fb495228984165d057f71bfa95d721845722687)
+++ uspace/app/nav/types/panel.h	(revision 2fb495228984165d057f71bfa95d721845722687)
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2021 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup nav
+ * @{
+ */
+/**
+ * @file Navigator panel types
+ */
+
+#ifndef TYPES_PANEL_H
+#define TYPES_PANEL_H
+
+#include <adt/list.h>
+#include <gfx/color.h>
+#include <gfx/coord.h>
+#include <ui/window.h>
+#include <stdint.h>
+
+/** Panel entry */
+typedef struct {
+	/** Containing panel */
+	struct panel *panel;
+	/** Link to @c panel->entries */
+	link_t lentries;
+	/** File name */
+	char *name;
+	/** File size */
+	uint64_t size;
+} panel_entry_t;
+
+/** Navigator panel
+ *
+ * This is a custom UI control.
+ */
+typedef struct panel {
+	/** Base control object */
+	struct ui_control *control;
+
+	/** Containing window */
+	ui_window_t *window;
+
+	/** Panel rectangle */
+	gfx_rect_t rect;
+
+	/** Panel color */
+	gfx_color_t *color;
+
+	/** Panel cursor color */
+	gfx_color_t *curs_color;
+
+	/** Panel entries (list of panel_entry_t) */
+	list_t entries;
+
+	/** Number of entries */
+	size_t entries_cnt;
+
+	/** First entry of current page */
+	panel_entry_t *page;
+
+	/** Index of first entry of current page */
+	size_t page_idx;
+
+	/** Cursor position */
+	panel_entry_t *cursor;
+
+	/** Index of entry under cursor */
+	size_t cursor_idx;
+} panel_t;
+
+#endif
+
+/** @}
+ */
