+
+
+
REMOTE UPDATES
+
+ push updater bundles to enrolled workers · {hosts.length} WORKER{hosts.length === 1 ? '' : 'S'}
+
diff --git a/decnet_web/src/components/Swarm.css b/decnet_web/src/components/Swarm.css
index 269e2b44..e52cc919 100644
--- a/decnet_web/src/components/Swarm.css
+++ b/decnet_web/src/components/Swarm.css
@@ -1,16 +1,34 @@
-.dashboard-header {
+.swarm-root .page-header {
display: flex;
- align-items: center;
+ align-items: flex-end;
justify-content: space-between;
+ gap: 24px;
+ padding-bottom: 16px;
margin-bottom: 24px;
+ border-bottom: 1px solid var(--panel-border);
}
-.dashboard-header h1 {
+.swarm-root .page-title-group {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+}
+
+.swarm-root .page-header h1 {
display: flex;
align-items: center;
- gap: 12px;
- font-size: 1.4rem;
- letter-spacing: 2px;
+ gap: 10px;
+ font-size: 1.3rem;
+ letter-spacing: 4px;
+ font-weight: 700;
+ margin: 0;
+ color: var(--matrix);
+}
+
+.swarm-root .page-sub {
+ font-size: 0.7rem;
+ opacity: 0.5;
+ letter-spacing: 1px;
}
.panel {
diff --git a/decnet_web/src/components/SwarmHosts.tsx b/decnet_web/src/components/SwarmHosts.tsx
index d9f0634a..5f054972 100644
--- a/decnet_web/src/components/SwarmHosts.tsx
+++ b/decnet_web/src/components/SwarmHosts.tsx
@@ -90,12 +90,19 @@ const SwarmHosts: React.FC = () => {
}
};
+ const online = hosts.filter((h) => h.status === 'online').length;
+
return (
-
-
-
SWARM Hosts
+
+
+
+
SWARM HOSTS
+
+ {loading ? 'LOADING…' : `${hosts.length} ENROLLED · ${online} ONLINE`}
+
+