From 6e9e2461a7209b95fb778e60632bb3e1c0594d13 Mon Sep 17 00:00:00 2001 From: MrAlders0n Date: Thu, 1 Oct 2026 07:55:14 -0400 Subject: [PATCH] Show observers as a full-width list on mobile --- src/features/observers/ObserverPage.tsx | 2 +- src/features/observers/ObserverSidebar.tsx | 24 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/features/observers/ObserverPage.tsx b/src/features/observers/ObserverPage.tsx index 1944195..5621f45 100644 --- a/src/features/observers/ObserverPage.tsx +++ b/src/features/observers/ObserverPage.tsx @@ -80,7 +80,7 @@ export function ObserverPage({ wsManager }: { wsManager: WsManager }) { } />
-
+
void directory.refetch()} range={range} selectedId={id} onSelect={select} />
diff --git a/src/features/observers/ObserverSidebar.tsx b/src/features/observers/ObserverSidebar.tsx index c6077cd..c21e0a6 100644 --- a/src/features/observers/ObserverSidebar.tsx +++ b/src/features/observers/ObserverSidebar.tsx @@ -4,7 +4,6 @@ import { useTranslation } from "react-i18next"; import { getTopObservers } from "../../api/client"; import { useRegion } from "../../hooks/useRegion"; import { formatCount } from "../../lib/formatters"; -import { Card } from "../stats/cards"; import { Segmented } from "../stats/Segmented"; import { RANGE_MS, type StatsRange } from "../stats/types"; import { observerName as nameOf } from "./observer-filter"; @@ -36,17 +35,18 @@ export function ObserverSidebar({ observers, filtered, isPending, isError, onRet }, [observers, sort, counts]); return ( - setSort(v as Sort)} - options={[{ value: "activity", label: t("observerPage.sortActivity") }, { value: "name", label: t("observerPage.sortName") }]} />} - className="flex min-h-0 w-full flex-col" - > + // a card at md+, an edge-to-edge list like the Nodes tab below it +
+
+
{t("tabs.Observers")}
+ setSort(v as Sort)} + options={[{ value: "activity", label: t("observerPage.sortActivity") }, { value: "name", label: t("observerPage.sortName") }]} /> +
{isPending ?
{t("common.loading")}
: isError ? : rows.length === 0 ?
{t(filtered ? "observerPage.noMatches" : "observerPage.none")}
: ( -
+
{rows.map((o) => { const active = o.id === selectedId; const count = counts.get(o.id); @@ -57,14 +57,14 @@ export function ObserverSidebar({ observers, filtered, isPending, isError, onRet role="option" aria-selected={active} onClick={() => onSelect(o.id)} - className={`relative shrink-0 overflow-hidden rounded border-l-2 px-2.5 py-1.5 text-left transition-colors ${ + className={`relative shrink-0 overflow-hidden border-b border-l-2 border-b-border-subtle px-4 py-3 text-left md:rounded md:border-b-0 md:px-2.5 md:py-1.5 transition-colors ${ active ? "border-primary bg-primary/10" : "border-transparent hover:bg-text-normal/3" }`} > - {count != null &&
} + {count != null &&
}
- {nameOf(o)} + {nameOf(o)} {count != null ? formatCount(count) : "—"}
@@ -72,6 +72,6 @@ export function ObserverSidebar({ observers, filtered, isPending, isError, onRet })}
)} - +
); }