diff --git a/src/app/tools/tankopedia/[id]/components/Configure.tsx b/src/app/tools/tankopedia/[id]/components/Configure.tsx
deleted file mode 100644
index 51c277f8e..000000000
--- a/src/app/tools/tankopedia/[id]/components/Configure.tsx
+++ /dev/null
@@ -1,188 +0,0 @@
-import { Flex, Heading } from '@radix-ui/themes';
-import { use } from 'react';
-import { ModuleButton } from '../../../../../components/ModuleButton';
-import { checkConsumableInclusivity } from '../../../../../core/blitzkrieg/checkConsumableInclusivity';
-import { consumableDefinitions } from '../../../../../core/blitzkrieg/consumablesDefinitions';
-import { equipmentDefinitions } from '../../../../../core/blitzkrieg/equipmentDefinitions';
-import { TIER_ROMAN_NUMERALS } from '../../../../../core/blitzkrieg/tankDefinitions';
-import { mutateDuel, useDuel } from '../../../../../stores/duel';
-import {
- mutateTankopediaTemporary,
- useTankopediaTemporary,
-} from '../../../../../stores/tankopedia';
-
-export function Configure() {
- const protagonist = useDuel((state) => state.protagonist!);
- const awaitedEquipmentDefinitions = use(equipmentDefinitions);
- const awaitedConsumableDefinitions = use(consumableDefinitions);
- const equipmentRows =
- awaitedEquipmentDefinitions.presets[protagonist.tank.equipment];
- const equipmentMatrix = useTankopediaTemporary(
- (state) => state.equipmentMatrix,
- );
- const consumables = useTankopediaTemporary((state) => state.consumables);
- const consumablesList = Object.values(awaitedConsumableDefinitions).filter(
- (consumable) =>
- checkConsumableInclusivity(consumable, protagonist.tank, protagonist.gun),
- );
-
- return (
-
- Configure
-
-
-
- Modules
-
-
-
- {protagonist.tank.turrets.map((thisTurret, index) => {
- return (
- {
- mutateDuel((draft) => {
- draft.protagonist!.turret = thisTurret;
- draft.protagonist!.gun = thisTurret.guns.at(-1)!;
- draft.protagonist!.shell =
- thisTurret.guns.at(-1)!.shells[0];
- });
- }}
- />
- );
- })}
-
-
-
- {protagonist.turret.guns.map((thisGun, index) => {
- return (
- {
- mutateDuel((draft) => {
- draft.protagonist!.gun = thisGun;
- draft.protagonist!.shell = thisGun.shells[0];
- });
- }}
- />
- );
- })}
-
-
-
-
-
- Equipment
-
-
- {equipmentRows.map((equipmentRow, rowIndex) => (
-
- {equipmentRow.map((equipment, columnIndex) => (
-
- {
- mutateTankopediaTemporary((draft) => {
- if (equipmentMatrix[rowIndex][columnIndex] === -1) {
- draft.equipmentMatrix[rowIndex][columnIndex] = 0;
- } else {
- draft.equipmentMatrix[rowIndex][columnIndex] = -1;
- }
- });
- }}
- />
- {
- mutateTankopediaTemporary((draft) => {
- if (equipmentMatrix[rowIndex][columnIndex] === 1) {
- draft.equipmentMatrix[rowIndex][columnIndex] = 0;
- } else {
- draft.equipmentMatrix[rowIndex][columnIndex] = 1;
- }
- });
- }}
- />
-
- ))}
-
- ))}
-
-
-
-
-
- Consumables (max {protagonist.tank.consumables})
-
-
-
- {consumablesList.map((consumable, index) => {
- const selected = consumables.includes(consumable.id);
-
- return (
- {
- mutateTankopediaTemporary((draft) => {
- if (selected) {
- draft.consumables = draft.consumables.filter(
- (id) => id !== consumable.id,
- );
- } else {
- draft.consumables.push(consumable.id);
- }
- });
- }}
- />
- );
- })}
-
-
-
-
- {/*
-
- Camouflage
-
-
-
- Consumables
-
-
-
- Provisions
- */}
-
- );
-}
diff --git a/src/app/tools/tankopedia/[id]/components/Configure/components/Consumables.tsx b/src/app/tools/tankopedia/[id]/components/Configure/components/Consumables.tsx
new file mode 100644
index 000000000..f2d24596c
--- /dev/null
+++ b/src/app/tools/tankopedia/[id]/components/Configure/components/Consumables.tsx
@@ -0,0 +1,60 @@
+import { Flex, Heading, Text } from '@radix-ui/themes';
+import { use } from 'react';
+import { ModuleButton } from '../../../../../../../components/ModuleButton';
+import { checkConsumableInclusivity } from '../../../../../../../core/blitzkrieg/checkConsumableInclusivity';
+import { consumableDefinitions } from '../../../../../../../core/blitzkrieg/consumablesDefinitions';
+import { useDuel } from '../../../../../../../stores/duel';
+import {
+ mutateTankopediaTemporary,
+ useTankopediaTemporary,
+} from '../../../../../../../stores/tankopedia';
+
+export function Consumables() {
+ const protagonist = useDuel((state) => state.protagonist!);
+ const awaitedConsumableDefinitions = use(consumableDefinitions);
+ const consumables = useTankopediaTemporary((state) => state.consumables);
+ const consumablesList = Object.values(awaitedConsumableDefinitions).filter(
+ (consumable) =>
+ checkConsumableInclusivity(consumable, protagonist.tank, protagonist.gun),
+ );
+
+ return (
+
+
+ Consumables{' '}
+ (max {protagonist.tank.consumables})
+
+
+
+ {consumablesList.map((consumable, index) => {
+ const selected = consumables.includes(consumable.id);
+
+ return (
+ {
+ mutateTankopediaTemporary((draft) => {
+ if (selected) {
+ draft.consumables = draft.consumables.filter(
+ (id) => id !== consumable.id,
+ );
+ } else {
+ draft.consumables.push(consumable.id);
+ }
+ });
+ }}
+ />
+ );
+ })}
+
+
+ );
+}
diff --git a/src/app/tools/tankopedia/[id]/components/Configure/components/Equipments.tsx b/src/app/tools/tankopedia/[id]/components/Configure/components/Equipments.tsx
new file mode 100644
index 000000000..551bb5dcc
--- /dev/null
+++ b/src/app/tools/tankopedia/[id]/components/Configure/components/Equipments.tsx
@@ -0,0 +1,68 @@
+import { Flex, Heading } from '@radix-ui/themes';
+import { use } from 'react';
+import { ModuleButton } from '../../../../../../../components/ModuleButton';
+import { equipmentDefinitions } from '../../../../../../../core/blitzkrieg/equipmentDefinitions';
+import { useDuel } from '../../../../../../../stores/duel';
+import {
+ mutateTankopediaTemporary,
+ useTankopediaTemporary,
+} from '../../../../../../../stores/tankopedia';
+
+export function Equipments() {
+ const protagonist = useDuel((state) => state.protagonist!);
+ const awaitedEquipmentDefinitions = use(equipmentDefinitions);
+ const equipmentRows =
+ awaitedEquipmentDefinitions.presets[protagonist.tank.equipment];
+ const equipmentMatrix = useTankopediaTemporary(
+ (state) => state.equipmentMatrix,
+ );
+
+ return (
+
+ Equipments
+
+
+ {equipmentRows.map((equipmentRow, rowIndex) => (
+
+ {equipmentRow.map((equipment, columnIndex) => (
+
+ {
+ mutateTankopediaTemporary((draft) => {
+ if (equipmentMatrix[rowIndex][columnIndex] === -1) {
+ draft.equipmentMatrix[rowIndex][columnIndex] = 0;
+ } else {
+ draft.equipmentMatrix[rowIndex][columnIndex] = -1;
+ }
+ });
+ }}
+ />
+ {
+ mutateTankopediaTemporary((draft) => {
+ if (equipmentMatrix[rowIndex][columnIndex] === 1) {
+ draft.equipmentMatrix[rowIndex][columnIndex] = 0;
+ } else {
+ draft.equipmentMatrix[rowIndex][columnIndex] = 1;
+ }
+ });
+ }}
+ />
+
+ ))}
+
+ ))}
+
+
+ );
+}
diff --git a/src/app/tools/tankopedia/[id]/components/Configure/components/Modules.tsx b/src/app/tools/tankopedia/[id]/components/Configure/components/Modules.tsx
new file mode 100644
index 000000000..d42383c53
--- /dev/null
+++ b/src/app/tools/tankopedia/[id]/components/Configure/components/Modules.tsx
@@ -0,0 +1,64 @@
+import { Flex, Heading } from '@radix-ui/themes';
+import { ModuleButton } from '../../../../../../../components/ModuleButton';
+import { TIER_ROMAN_NUMERALS } from '../../../../../../../core/blitzkrieg/tankDefinitions';
+import { mutateDuel, useDuel } from '../../../../../../../stores/duel';
+
+export function Modules() {
+ const protagonist = useDuel((state) => state.protagonist!);
+
+ return (
+
+ Modules
+
+
+
+ {protagonist.tank.turrets.map((thisTurret, index) => {
+ return (
+ {
+ mutateDuel((draft) => {
+ draft.protagonist!.turret = thisTurret;
+ draft.protagonist!.gun = thisTurret.guns.at(-1)!;
+ draft.protagonist!.shell =
+ thisTurret.guns.at(-1)!.shells[0];
+ });
+ }}
+ />
+ );
+ })}
+
+
+
+ {protagonist.turret.guns.map((thisGun, index) => {
+ return (
+ {
+ mutateDuel((draft) => {
+ draft.protagonist!.gun = thisGun;
+ draft.protagonist!.shell = thisGun.shells[0];
+ });
+ }}
+ />
+ );
+ })}
+
+
+
+ );
+}
diff --git a/src/app/tools/tankopedia/[id]/components/Configure/index.tsx b/src/app/tools/tankopedia/[id]/components/Configure/index.tsx
new file mode 100644
index 000000000..57b73e568
--- /dev/null
+++ b/src/app/tools/tankopedia/[id]/components/Configure/index.tsx
@@ -0,0 +1,31 @@
+import { Flex, Heading } from '@radix-ui/themes';
+import { Consumables } from './components/Consumables';
+import { Equipments } from './components/Equipments';
+import { Modules } from './components/Modules';
+
+export function Configure() {
+ return (
+
+ Configure
+
+
+
+
+
+
+
+ {/*
+
+ Camouflage
+
+
+
+ Consumables
+
+
+
+ Provisions
+ */}
+
+ );
+}