From dad9afe8380ab96cf037fdfcde7921c450f6ec13 Mon Sep 17 00:00:00 2001
From: Maximilian Kaske <56969857+mxkaske@users.noreply.github.com>
Date: Fri, 16 Oct 2026 21:46:46 +0200
Subject: [PATCH] feat(dashboard): warn when page components link inactive
monitors (#2923)
* feat(dashboard): warn when page components link inactive monitors
Inactive monitors don't collect data, so their status page bars stay empty.
The components form now warns about it and shows an Active/Inactive tooltip
per row; the docs explain the behavior and point to static components or
Reports only.
* chore: point ship command at the existing format script
* fix: make monitor status dot keyboard accessible and clarify inactive monitor docs
---
.claude/commands/ship.md | 2 +-
.../(dashboard)/monitors/[id]/nav-actions.tsx | 33 +-----------
.../components/common/monitor-status-dot.tsx | 51 +++++++++++++++++++
.../forms/components/form-components.tsx | 38 +++++++++-----
.../pages/docs/reference/page-components.mdx | 11 ++--
5 files changed, 87 insertions(+), 48 deletions(-)
create mode 100644 apps/dashboard/src/components/common/monitor-status-dot.tsx
diff --git a/.claude/commands/ship.md b/.claude/commands/ship.md
index e063ec98e..5dee41b02 100644
--- a/.claude/commands/ship.md
+++ b/.claude/commands/ship.md
@@ -20,7 +20,7 @@ $ARGUMENTS - optional branch name
- Confirm there are uncommitted changes (from status above). If none, stop.
- Confirm current branch. If not on `main`, ask user before proceeding.
- Warn if any .env or credential files would be staged.
-- Run `pnpm format:fix` in the root directory to fix formatting issues
+- Run `pnpm format` in the root directory to fix formatting issues
## 2. Create Branch
diff --git a/apps/dashboard/src/app/(dashboard)/monitors/[id]/nav-actions.tsx b/apps/dashboard/src/app/(dashboard)/monitors/[id]/nav-actions.tsx
index 84ac57a45..cfcdca253 100644
--- a/apps/dashboard/src/app/(dashboard)/monitors/[id]/nav-actions.tsx
+++ b/apps/dashboard/src/app/(dashboard)/monitors/[id]/nav-actions.tsx
@@ -17,6 +17,7 @@ import { useParams, usePathname, useRouter } from "next/navigation";
import { useState } from "react";
import { toast } from "sonner";
+import { MonitorStatusDot } from "@/components/common/monitor-status-dot";
import { DataTableSheetTest } from "@/components/data-table/response-logs/data-table-sheet-test";
import { QuickActions } from "@/components/dropdowns/quick-actions";
import { NavFeedback } from "@/components/nav/nav-feedback";
@@ -212,37 +213,7 @@ export function NavActions() {
diff --git a/apps/web/src/content/pages/docs/reference/page-components.mdx b/apps/web/src/content/pages/docs/reference/page-components.mdx
index 9ad99ecb3..fedf2cd52 100644
--- a/apps/web/src/content/pages/docs/reference/page-components.mdx
+++ b/apps/web/src/content/pages/docs/reference/page-components.mdx
@@ -23,9 +23,9 @@ Page components come in two distinct types, each serving different purposes on y
**Type:** `monitor`
-Monitor components are linked to an active monitor in your workspace. They automatically inherit the monitor's status and display real-time health information.
+Monitor components are linked to a monitor in your workspace. While the monitor is active, they automatically inherit its status and display real-time health information.
-**Characteristics:**
+**Characteristics (while the linked monitor is active):**
- Display live monitor status (up, degraded, down).
- Show active incidents from the linked monitor.
- Include historical uptime data.
@@ -38,6 +38,10 @@ Monitor components are linked to an active monitor in your workspace. They autom
- Tracking critical service dependencies.
- Monitoring infrastructure components.
+
+
#### Configuring monitor components
When you create a monitor component, you link it to an existing monitor in your workspace. This connection provides several benefits:
@@ -63,7 +67,7 @@ Monitor components calculate uptime percentages based on:
**Monitor selection:**
When adding a monitor component, the dashboard shows you available monitors with indicators for:
- **Public/Private status**: Whether the monitor is already public.
-- **Active status**: Only active monitors can be linked.
+- **Active status**: Inactive monitors can be linked, but don't share data until they're activated again. The dashboard warns you when a linked monitor is inactive.
- **Already linked**: Monitors already used on this status page are unavailable.