+ {this.state.loadingBackup && !this.state.mapLoad && (
+
+ Loading map...
+
+ )}
+ {this.img && this.state.mapLoad && (
+
+ )}
+ {parsedSvgData && this.state.mapLoad && (
+
+ )}
+
+ );
+ }
+}
diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.js b/tgui/packages/tgui/interfaces/OverwatchConsole.js
index 1a6f67ac7ccd..1805f231fb16 100644
--- a/tgui/packages/tgui/interfaces/OverwatchConsole.js
+++ b/tgui/packages/tgui/interfaces/OverwatchConsole.js
@@ -61,7 +61,6 @@ const SquadPanel = (props, context) => {
const { act, data } = useBackend(context);
const [category, setCategory] = useLocalState(context, 'selected', 'monitor');
- let hello = 2;
return (
<>
diff --git a/tgui/packages/tgui/interfaces/TacmapAdminPanel.js b/tgui/packages/tgui/interfaces/TacmapAdminPanel.js
new file mode 100644
index 000000000000..a5d00c688a2f
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/TacmapAdminPanel.js
@@ -0,0 +1,164 @@
+import { useBackend, useLocalState } from '../backend';
+import { Tabs, Section, Button, Stack, Flex } from '../components';
+import { DrawnMap } from './DrawnMap';
+import { Window } from '../layouts';
+
+const PAGES = [
+ {
+ title: 'USCM',
+ component: () => FactionPage,
+ color: 'blue',
+ icon: 'medal',
+ },
+ {
+ title: 'Hive',
+ component: () => FactionPage,
+ color: 'purple',
+ icon: 'star',
+ },
+];
+
+export const TacmapAdminPanel = (props, context) => {
+ const { data } = useBackend(context);
+ const {
+ uscm_map,
+ xeno_map,
+ uscm_svg,
+ xeno_svg,
+ uscm_ckeys,
+ xeno_ckeys,
+ uscm_names,
+ xeno_names,
+ uscm_times,
+ xeno_times,
+ uscm_selection,
+ xeno_selection,
+ map_fallback,
+ last_update_time,
+ } = data;
+
+ const [pageIndex, setPageIndex] = useLocalState(context, 'pageIndex', 0);
+
+ const PageComponent = PAGES[pageIndex].component();
+
+ return (
+