Merge Map tab into Server tab and remove Map tab

The Map tab provided a form for editing world-map color thresholds
(low, medium, high). Moving this into the Server tab consolidates all
server-side configuration in one place.

- Add map color thresholds section to ServerTab with full validation
- Load map thresholds on component mount with useEffect
- Implement auto-save for threshold changes via useAutoSave hook
- Display threshold color interpolation guide
- Remove MapTab component import from ConfigPage
- Remove 'map' from TabValue type
- Remove Map tab element from TabList
- Remove conditional render for MapTab
- Remove MapTab from barrel export (index.ts)
- Delete MapTab.tsx file
- Update ConfigPage test to remove MapTab mock

All 123 frontend tests pass.
This commit is contained in:
2026-03-14 21:55:30 +01:00
parent 037c18eb00
commit 9630aea877
5 changed files with 163 additions and 223 deletions

View File

@@ -8,8 +8,7 @@
* Jails — per-jail config accordion with inline editing
* Filters — structured filter.d form editor
* Actions — structured action.d form editor
* Server — server-level settings, logging, database config + flush logs
* Map — map color threshold configuration
* Server — server-level settings, logging, database config, map thresholds + flush logs
* Regex Tester — live pattern tester
* Export — raw file editors for jail, filter, and action files
*/
@@ -21,7 +20,6 @@ import {
FiltersTab,
JailsTab,
LogTab,
MapTab,
RegexTesterTab,
ServerTab,
} from "../components/config";
@@ -57,7 +55,6 @@ type TabValue =
| "filters"
| "actions"
| "server"
| "map"
| "regex"
| "log";
@@ -87,7 +84,6 @@ export function ConfigPage(): React.JSX.Element {
<Tab value="filters">Filters</Tab>
<Tab value="actions">Actions</Tab>
<Tab value="server">Server</Tab>
<Tab value="map">Map</Tab>
<Tab value="regex">Regex Tester</Tab>
<Tab value="log">Log</Tab>
</TabList>
@@ -97,7 +93,6 @@ export function ConfigPage(): React.JSX.Element {
{tab === "filters" && <FiltersTab />}
{tab === "actions" && <ActionsTab />}
{tab === "server" && <ServerTab />}
{tab === "map" && <MapTab />}
{tab === "regex" && <RegexTesterTab />}
{tab === "log" && <LogTab />}
</div>

View File

@@ -10,7 +10,6 @@ vi.mock("../../components/config", () => ({
FiltersTab: () => <div data-testid="filters-tab">FiltersTab</div>,
ActionsTab: () => <div data-testid="actions-tab">ActionsTab</div>,
ServerTab: () => <div data-testid="server-tab">ServerTab</div>,
MapTab: () => <div data-testid="map-tab">MapTab</div>,
RegexTesterTab: () => <div data-testid="regex-tab">RegexTesterTab</div>,
ExportTab: () => <div data-testid="export-tab">ExportTab</div>,
}));