diff --git a/src/features/nodes/types.ts b/src/features/nodes/types.ts index a748f44..2c24ff2 100644 --- a/src/features/nodes/types.ts +++ b/src/features/nodes/types.ts @@ -15,7 +15,6 @@ export interface NodeSummary { defaultScope?: string; // most recently matched transport scope name, e.g. "#bc" iatas: NodeIATA[]; knownNeighborCount: number; // distinct first-hop neighbors we've resolved for this node - neighborIds?: string[]; // first-hop neighbor node ids; only present when the list request opts in (?neighbors) // Set when this node also runs as an observer (watches traffic for uplink). isObserver drives the // map's observer-pip marker variant; observerId, when present, links to that observer's detail. isObserver?: boolean; diff --git a/src/features/stats/MeshTab.tsx b/src/features/stats/MeshTab.tsx index 47a5585..ebd0f3c 100644 --- a/src/features/stats/MeshTab.tsx +++ b/src/features/stats/MeshTab.tsx @@ -1,6 +1,6 @@ import { useMemo } from "react"; import { formatCount } from "../../lib/formatters"; -import { useChartColors, nodeTypeColor } from "./chartTheme"; +import { useChartColors, type ChartColors } from "./chartTheme"; import { useStatsOverview, useStatsObservations, usePayloadBreakdown, useTopNodes, useTopObservers, useRadioPresets, useScopes, useNodeTypes } from "./useStats"; import { observationsAreaOption, leaderboardOption, typeBarOption, donutOption, presetBarsOption } from "./chartOptions"; import { Card, ChartCard, StatCard } from "./cards"; diff --git a/src/features/stats/StatsSubHeader.tsx b/src/features/stats/StatsSubHeader.tsx index 7853f9a..a0d33af 100644 --- a/src/features/stats/StatsSubHeader.tsx +++ b/src/features/stats/StatsSubHeader.tsx @@ -59,40 +59,21 @@ interface Props { } export function StatsSubHeader({ tab, onTabChange, range, onRangeChange }: Props) { - const isMobile = useIsMobile(); return ( -
- {/* pills don't scale on a phone as sections grow — swap to a compact dropdown there */} - {isMobile ? ( - onTabChange(v as StatsTab)} - /> - ) : ( -
- onTabChange(v as StatsTab)} - ariaLabel="Stats section" - size="md" - /> -
- )} - {/* the graph is topology, not time-series — no range to pick */} - {tab !== "graph" && ( - onRangeChange(v as StatsRange)} - ariaLabel="Time range" - /> - )} +
+ onTabChange(v as StatsTab)} + ariaLabel="Stats section" + size="md" + /> + onRangeChange(v as StatsRange)} + ariaLabel="Time range" + />
); } diff --git a/tests/api/client.test.ts b/tests/api/client.test.ts index 0cdb141..d2d7b4b 100644 --- a/tests/api/client.test.ts +++ b/tests/api/client.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it, vi } from "vitest"; -import { getPackets, getNodesPage, getObserversPage, getScopes, getKnownRoutesPage, searchKnownRoutes, getChannels, getChannelMessagesPage, getTraces, getTraceDetail, getStatsOverview, getTopObservers, getStatsNodeTypes } from "../../src/api/client"; +import { getNodesPage, getObserversPage, getScopes, getKnownRoutesPage, searchKnownRoutes, getChannels, getChannelMessagesPage, getTraces, getTraceDetail, getStatsOverview, getTopObservers, getStatsNodeTypes } from "../../src/api/client"; import type { NodeSummary } from "../../src/features/nodes/types"; import type { ObserverSummary } from "../../src/features/observers/types"; import type { ChannelMessage, ChannelSummary } from "../../src/features/channels/types";