Codebase-wide sweep bringing the web client into strict compliance with the AGENTS.md TypeScript and Mantine/React conventions: ~170 inline 2+-static-prop elements extracted to named .withProps() constants across ~77 files, the AGENTS.md rule wording tightened to match (static-prop boundary + Accordion/Transition/data-*/Box exemptions), a real ScreenStage Box->Flex layout regression fixed (direction: column) with a Storybook regression guard, and an App.tsx double-cast tightened. Closes #1762.
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { Badge, Tooltip } from "@mantine/core";
|
|
import type { ResourceSubscriptionStreamStatus } from "../../../../../../core/mcp/types.js";
|
|
import { subscriptionStreamPresentation } from "./subscriptionStreamUtils";
|
|
|
|
export interface SubscriptionStreamBadgeProps {
|
|
/** Lifecycle status of the modern `subscriptions/listen` stream. */
|
|
status: ResourceSubscriptionStreamStatus;
|
|
}
|
|
|
|
const StreamTooltip = Tooltip.withProps({
|
|
multiline: true,
|
|
w: 260,
|
|
withArrow: true,
|
|
});
|
|
|
|
/**
|
|
* Status indicator for the modern-era resource-subscription listen stream
|
|
* (#1630). Only meaningful on the modern era — the caller gates rendering on
|
|
* `streamState.active`. Renders a labelled dot badge (green/yellow/gray) in the
|
|
* Subscriptions section header, explaining the stream in a tooltip.
|
|
*/
|
|
export function SubscriptionStreamBadge({
|
|
status,
|
|
}: SubscriptionStreamBadgeProps) {
|
|
const { color, label, tooltip } = subscriptionStreamPresentation(status);
|
|
return (
|
|
<StreamTooltip label={tooltip}>
|
|
<Badge variant="dot" color={color}>
|
|
{label}
|
|
</Badge>
|
|
</StreamTooltip>
|
|
);
|
|
}
|