diff --git a/frontend/react/src/ui/contextmenus/spawncontextmenu.tsx b/frontend/react/src/ui/contextmenus/spawncontextmenu.tsx
index bd129c90..a710eb7d 100644
--- a/frontend/react/src/ui/contextmenus/spawncontextmenu.tsx
+++ b/frontend/react/src/ui/contextmenus/spawncontextmenu.tsx
@@ -37,6 +37,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { OlCoalitionToggle } from "../components/olcoalitiontoggle";
import { Coalition } from "../../types/types";
import { spawn } from "child_process";
+import { FaXmark } from "react-icons/fa6";
enum CategoryGroup {
NONE,
@@ -334,9 +335,13 @@ export function SpawnContextMenu(props: {}) {
/>
);
})}
- {blueprints?.length === 0 && No aircraft available}
+ {blueprints?.length === 0 && (
+
+ No aircraft available
+
+ )}
>
)}
@@ -384,9 +389,13 @@ export function SpawnContextMenu(props: {}) {
/>
);
})}
- {blueprints?.length === 0 && No helicopter available}
+ {blueprints?.length === 0 && (
+
+ No helicopter available
+
+ )}
>
)}
@@ -437,9 +446,13 @@ export function SpawnContextMenu(props: {}) {
/>
);
})}
- {blueprints?.length === 0 && No air defence unit available}
+ {blueprints?.length === 0 && (
+
+ No air defence unit available
+
+ )}
>
)}
@@ -505,9 +518,13 @@ export function SpawnContextMenu(props: {}) {
/>
);
})}
- {blueprints?.length === 0 && No ground unit available}
+ {blueprints?.length === 0 && (
+
+ No ground unit available
+
+ )}
>
)}
@@ -555,9 +572,13 @@ export function SpawnContextMenu(props: {}) {
/>
);
})}
- {blueprints?.length === 0 && No navy unit available}
+ {blueprints?.length === 0 && (
+
+ No navy unit available
+
+ )}
>
)}
@@ -624,7 +645,8 @@ export function SpawnContextMenu(props: {}) {
{openAccordion === CategoryGroup.STARRED && (
{Object.values(starredSpawns).length > 0 ? (
- Object.values(starredSpawns).map((spawnRequestTable) => {
+ Object.keys(starredSpawns).map((key) => {
+ const spawnRequestTable = starredSpawns[key];
return (
+ {
+ getApp().getMap().removeStarredSpawnRequestTable(key);
+ ev.stopPropagation();
+ }}
+ />
);
})
diff --git a/frontend/react/src/ui/panels/header.tsx b/frontend/react/src/ui/panels/header.tsx
index b1e62431..9f0cabde 100644
--- a/frontend/react/src/ui/panels/header.tsx
+++ b/frontend/react/src/ui/panels/header.tsx
@@ -248,7 +248,7 @@ export function Header() {
}
}}
>
-
Game Master
+
Game Master
{enabledCommandModes.length > 0 && (
<>
{loadingNewCommandMode ? (
@@ -279,7 +279,7 @@ export function Header() {
}
}}
>
-
BLUE Commander
+
BLUE Commander
{enabledCommandModes.length > 0 && (
<>
{loadingNewCommandMode ? (
@@ -310,7 +310,7 @@ export function Header() {
}
}}
>
-
RED Commander
+
RED Commander
{enabledCommandModes.length > 0 && (
<>
{loadingNewCommandMode ? (
diff --git a/frontend/react/src/ui/panels/spawnmenu.tsx b/frontend/react/src/ui/panels/spawnmenu.tsx
index ad70bf30..49c753e0 100644
--- a/frontend/react/src/ui/panels/spawnmenu.tsx
+++ b/frontend/react/src/ui/panels/spawnmenu.tsx
@@ -19,11 +19,14 @@ import {
olIconsTank,
olIconsTruck,
} from "../components/olicons";
-import { faExplosion, faSmog } from "@fortawesome/free-solid-svg-icons";
+import { faExplosion, faSmog, faStar } from "@fortawesome/free-solid-svg-icons";
import { OlEffectListEntry } from "../components/oleffectlistentry";
import { EffectSpawnMenu } from "./effectspawnmenu";
-import { BLUE_COMMANDER, COMMAND_MODE_OPTIONS_DEFAULTS, GAME_MASTER, NO_SUBSTATE, OlympusState } from "../../constants/constants";
+import { BLUE_COMMANDER, COMMAND_MODE_OPTIONS_DEFAULTS, GAME_MASTER, NO_SUBSTATE, OlympusState, SpawnSubState } from "../../constants/constants";
import { AppStateChangedEvent, CommandModeOptionsChangedEvent, StarredSpawnsChangedEvent, UnitDatabaseLoadedEvent } from "../../events";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { OlDropdownItem } from "../components/oldropdown";
+import { FaXmark } from "react-icons/fa6";
enum CategoryAccordion {
NONE,
@@ -34,6 +37,7 @@ enum CategoryAccordion {
GROUND_UNIT,
NAVY_UNIT,
EFFECT,
+ STARRED,
}
export function SpawnMenu(props: { open: boolean; onClose: () => void; children?: JSX.Element | JSX.Element[] }) {
@@ -347,13 +351,9 @@ export function SpawnMenu(props: { open: boolean; onClose: () => void; children?
/>
);
})}
- {filteredBlueprints.filter((blueprint) => blueprint.canAAA).length === 0 && (
-
- No AAA unit available
-
- )}
+ {filteredBlueprints.filter((blueprint) => blueprint.canAAA).length === 0 &&
No AAA unit available}