diff --git a/lib/types/nav-types.js b/lib/types/nav-types.js
--- a/lib/types/nav-types.js
+++ b/lib/types/nav-types.js
@@ -1,7 +1,36 @@
 // @flow
 
+import t from 'tcomb';
+import type { TEnums } from 'tcomb';
+
 export type BaseNavInfo = {
   +startDate: string,
   +endDate: string,
   ...
 };
+export type WebNavigationTab = 'calendar' | 'chat' | 'settings';
+export const webNavigationTabValidator: TEnums = t.enums.of([
+  'calendar',
+  'chat',
+  'settings',
+]);
+export type WebLoginMethod = 'form' | 'qr-code';
+export const webLoginMethodValidator: TEnums = t.enums.of(['form', 'qr-code']);
+export type WebNavigationSettingsSection =
+  | 'account'
+  | 'friend-list'
+  | 'block-list'
+  | 'keyservers'
+  | 'danger-zone';
+export const webNavigationSettingsSectionValidator: TEnums = t.enums.of([
+  'account',
+  'friend-list',
+  'block-list',
+  'keyservers',
+  'danger-zone',
+]);
+export type WebNavigationChatMode = 'view' | 'create';
+export const webNavigationChatModeValidator: TEnums = t.enums.of([
+  'view',
+  'create',
+]);
diff --git a/web/app-list/app-list-item.react.js b/web/app-list/app-list-item.react.js
--- a/web/app-list/app-list-item.react.js
+++ b/web/app-list/app-list-item.react.js
@@ -6,11 +6,11 @@
 import SWMansionIcon, {
   type Icon,
 } from 'lib/components/SWMansionIcon.react.js';
+import type { WebNavigationTab } from 'lib/types/nav-types.js';
 
 import css from './app-list-item.css';
 import { useSelector } from '../redux/redux-utils.js';
 import { navTabSelector } from '../selectors/nav-selectors.js';
-import type { WebNavigationTab } from '../types/nav-types.js';
 
 type Props = {
   +id: WebNavigationTab,
diff --git a/web/selectors/nav-selectors.js b/web/selectors/nav-selectors.js
--- a/web/selectors/nav-selectors.js
+++ b/web/selectors/nav-selectors.js
@@ -7,12 +7,12 @@
 import { currentCalendarQuery } from 'lib/selectors/nav-selectors.js';
 import type { CalendarQuery } from 'lib/types/entry-types.js';
 import type { CalendarFilter } from 'lib/types/filter-types.js';
+import type {
+  WebNavigationSettingsSection,
+  WebNavigationTab,
+} from 'lib/types/nav-types.js';
 
 import type { AppState } from '../redux/redux-setup.js';
-import {
-  type WebNavigationTab,
-  type WebNavigationSettingsSection,
-} from '../types/nav-types.js';
 
 const dateExtractionRegex = /^([0-9]{4})-([0-9]{2})-[0-9]{2}$/;
 
diff --git a/web/settings/user-settings-list-item.react.js b/web/settings/user-settings-list-item.react.js
--- a/web/settings/user-settings-list-item.react.js
+++ b/web/settings/user-settings-list-item.react.js
@@ -3,10 +3,11 @@
 import classNames from 'classnames';
 import * as React from 'react';
 
+import type { WebNavigationSettingsSection } from 'lib/types/nav-types.js';
+
 import css from './user-settings-list-item.css';
 import { useSelector } from '../redux/redux-utils.js';
 import { navSettingsSectionSelector } from '../selectors/nav-selectors.js';
-import type { WebNavigationSettingsSection } from '../types/nav-types.js';
 
 type Props = {
   +id: WebNavigationSettingsSection,
diff --git a/web/sidebar/community-drawer-item-community-handlers.react.js b/web/sidebar/community-drawer-item-community-handlers.react.js
--- a/web/sidebar/community-drawer-item-community-handlers.react.js
+++ b/web/sidebar/community-drawer-item-community-handlers.react.js
@@ -8,6 +8,7 @@
   updateChatCommunityFilter,
 } from 'lib/actions/community-actions.js';
 import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
+import type { WebNavigationTab } from 'lib/types/nav-types.js';
 import { useDispatch } from 'lib/utils/redux-utils.js';
 
 import type { CommunityDrawerItemCommunityHandler } from './community-drawer-item-handler.react.js';
@@ -17,7 +18,6 @@
   useOnClickThread,
   useThreadIsActive,
 } from '../selectors/thread-selectors.js';
-import type { WebNavigationTab } from '../types/nav-types.js';
 
 export type HandlerProps = {
   +setHandler: (handler: CommunityDrawerItemCommunityHandler) => void,
diff --git a/web/sidebar/community-drawer-item-handlers.react.js b/web/sidebar/community-drawer-item-handlers.react.js
--- a/web/sidebar/community-drawer-item-handlers.react.js
+++ b/web/sidebar/community-drawer-item-handlers.react.js
@@ -3,6 +3,7 @@
 import * as React from 'react';
 
 import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
+import type { WebNavigationTab } from 'lib/types/nav-types.js';
 
 import type { CommunityDrawerItemHandler } from './community-drawer-item-handler.react.js';
 import { useCommunityIsPickedCalendar } from '../selectors/calendar-selectors.js';
@@ -10,7 +11,6 @@
   useOnClickThread,
   useThreadIsActive,
 } from '../selectors/thread-selectors.js';
-import type { WebNavigationTab } from '../types/nav-types.js';
 
 export type HandlerProps = {
   +setHandler: (handler: CommunityDrawerItemHandler) => void,
diff --git a/web/sidebar/community-drawer-item.react.js b/web/sidebar/community-drawer-item.react.js
--- a/web/sidebar/community-drawer-item.react.js
+++ b/web/sidebar/community-drawer-item.react.js
@@ -3,6 +3,7 @@
 import classnames from 'classnames';
 import * as React from 'react';
 
+import type { WebNavigationTab } from 'lib/types/nav-types.js';
 import type { CommunityDrawerItemData } from 'lib/utils/drawer-utils.react.js';
 import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js';
 
@@ -15,7 +16,6 @@
   getExpandButton,
 } from './community-drawer-utils.react.js';
 import ThreadAvatar from '../avatars/thread-avatar.react.js';
-import type { WebNavigationTab } from '../types/nav-types.js';
 
 export type DrawerItemProps = {
   +itemData: CommunityDrawerItemData<string>,
diff --git a/web/sidebar/community-drawer-utils.react.js b/web/sidebar/community-drawer-utils.react.js
--- a/web/sidebar/community-drawer-utils.react.js
+++ b/web/sidebar/community-drawer-utils.react.js
@@ -3,13 +3,13 @@
 import * as React from 'react';
 
 import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
+import type { WebNavigationTab } from 'lib/types/nav-types.js';
 import type { CommunityDrawerItemData } from 'lib/utils/drawer-utils.react';
 
 import css from './community-drawer-item.css';
 import CommunityDrawerItemChat from './community-drawer-item.react.js';
 import { ExpandButton } from './expand-buttons.react.js';
 import SubchannelsButton from './subchannels-button.react.js';
-import type { WebNavigationTab } from '../types/nav-types.js';
 
 const indentation = 14;
 const subchannelsButtonIndentation = 24;
diff --git a/web/types/nav-types.js b/web/types/nav-types.js
--- a/web/types/nav-types.js
+++ b/web/types/nav-types.js
@@ -5,35 +5,23 @@
 
 import { threadInfoValidator } from 'lib/permissions/minimally-encoded-thread-permissions-validators.js';
 import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
-import { type BaseNavInfo } from 'lib/types/nav-types.js';
+import {
+  type BaseNavInfo,
+  type WebLoginMethod,
+  type WebNavigationChatMode,
+  type WebNavigationSettingsSection,
+  type WebNavigationTab,
+  webLoginMethodValidator,
+  webNavigationChatModeValidator,
+  webNavigationSettingsSectionValidator,
+  webNavigationTabValidator,
+} from 'lib/types/nav-types.js';
 import {
   type AccountUserInfo,
   accountUserInfoValidator,
 } from 'lib/types/user-types.js';
 import { tID, tShape } from 'lib/utils/validation-utils.js';
 
-export type WebNavigationTab = 'calendar' | 'chat' | 'settings';
-const webNavigationTabValidator = t.enums.of(['calendar', 'chat', 'settings']);
-export type WebLoginMethod = 'form' | 'qr-code';
-const webLoginMethodValidator = t.enums.of(['form', 'qr-code']);
-
-export type WebNavigationSettingsSection =
-  | 'account'
-  | 'friend-list'
-  | 'block-list'
-  | 'keyservers'
-  | 'danger-zone';
-const webNavigationSettingsSectionValidator = t.enums.of([
-  'account',
-  'friend-list',
-  'block-list',
-  'keyservers',
-  'danger-zone',
-]);
-
-export type WebNavigationChatMode = 'view' | 'create';
-const webNavigationChatModeValidator = t.enums.of(['view', 'create']);
-
 export type WebNavInfo = {
   ...$Exact<BaseNavInfo>,
   +tab: WebNavigationTab,