@mcp-b/react-components 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@ interface McpServerPickerProps {
16
16
  onRetry?: McpServerConnectionAction;
17
17
  /** Called when a ready/connected server should refresh discovery through an app-owned Agent RPC. */
18
18
  onRefresh?: McpServerConnectionAction;
19
- /** Called when a server transport should close but the stored config should remain. */
19
+ /** Called when an authenticating or connected server should be removed or disconnected. */
20
20
  onDisconnect?: McpServerConnectionAction;
21
21
  /** Offset from the plus trigger to the menu, useful for prompt composers. */
22
22
  sideOffset?: number;
@@ -120,6 +120,12 @@ function McpServerPickerRow({ server, mcp, onConnect, onAuthorize, onDisconnect,
120
120
  label: pending("authorize") ? `Opening ${server.name}` : `Authorize ${server.name}`,
121
121
  onClick: () => onAuthorize(connectedServerId, connectedServer)
122
122
  }) : null,
123
+ connectedServer?.state === "authenticating" && connectedServerId && onDisconnect ? /* @__PURE__ */ jsx(McpServerActionItem, {
124
+ disabled: pending("disconnect"),
125
+ icon: /* @__PURE__ */ jsx(MinusIcon, {}),
126
+ label: pending("disconnect") ? `Cancelling ${server.name} authentication` : `Cancel ${server.name} authentication`,
127
+ onClick: () => onDisconnect(connectedServerId, connectedServer)
128
+ }) : null,
123
129
  connectedServer?.state === "failed" && connectedServerId && onRetry ? /* @__PURE__ */ jsx(McpServerActionItem, {
124
130
  disabled: pending("retry"),
125
131
  icon: /* @__PURE__ */ jsx(RefreshIcon, {}),
@@ -4,11 +4,15 @@
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  width: 100%;
7
+ min-width: 0;
7
8
  /* Hard cap, Codex-style, on the WHOLE unit — collapsed line and expanded
8
9
  log alike — so toggling never reflows the conversation width. Plain rem,
9
10
  not min(100%, …): percentages are ignored in intrinsic-size contributions,
10
11
  so the min() let wide nowrap rows inflate content-sized ancestors. */
11
12
  max-width: 36rem;
13
+ /* Live tool labels and panels must never contribute a wider intrinsic size
14
+ when Activity is inserted into a narrow chat transcript. */
15
+ contain: inline-size;
12
16
  /* Whitespace separates the work log from message prose around it */
13
17
  margin-block: 0.5rem;
14
18
  font-family: inherit;
@@ -17,6 +21,8 @@
17
21
 
18
22
  .activity__trigger {
19
23
  display: flex;
24
+ width: 100%;
25
+ min-width: 0;
20
26
  align-items: center;
21
27
  gap: var(--sigvelo-spacing-1-5);
22
28
  padding-block: var(--sigvelo-spacing-1-5);
@@ -3,6 +3,7 @@
3
3
  position: relative;
4
4
  width: 100%;
5
5
  height: 100%;
6
+ min-width: 0;
6
7
  min-height: 0;
7
8
  background-color: var(--sigvelo-color-surface);
8
9
  color: var(--sigvelo-color-text);
@@ -10,6 +11,7 @@
10
11
  }
11
12
 
12
13
  .agent-chat__conversation {
14
+ min-width: 0;
13
15
  height: 100%;
14
16
  min-height: 0;
15
17
  }
@@ -18,6 +20,8 @@
18
20
  --agent-chat-composer-size is set from a ResizeObserver in AgentChat. */
19
21
  .agent-chat__transcript-content {
20
22
  gap: 0.875rem;
23
+ min-inline-size: 0;
24
+ max-inline-size: 100%;
21
25
  inline-size: min(100%, var(--agent-chat-content-max-inline-size));
22
26
  margin-inline: auto;
23
27
  padding-block: 1rem calc(var(--agent-chat-composer-size, 5rem) + 0.5rem);
@@ -35,7 +39,9 @@
35
39
  }
36
40
 
37
41
  .agent-chat__scroll-button {
38
- inset-block-end: calc(var(--agent-chat-composer-size, 5rem) + 0.5rem);
42
+ --message-scroller-button-inset-block-end: calc(
43
+ var(--agent-chat-composer-size, 5rem) + var(--sigvelo-spacing-2)
44
+ );
39
45
  }
40
46
 
41
47
  /* Floating over the transcript: solid behind the controls, fading out
@@ -60,7 +60,7 @@
60
60
  .message-scroller__button {
61
61
  position: absolute;
62
62
  inset-inline-start: 50%;
63
- inset-block-end: 1rem;
63
+ inset-block-end: var(--message-scroller-button-inset-block-end, 1rem);
64
64
  z-index: 1;
65
65
  translate: -50% 0;
66
66
  border-radius: 999rem;
@@ -3,6 +3,7 @@
3
3
  flex-direction: column;
4
4
  gap: 0.25rem;
5
5
  width: 100%;
6
+ min-width: 0;
6
7
  font-family: inherit;
7
8
  color: var(--sigvelo-color-text);
8
9
  }
@@ -20,6 +21,7 @@
20
21
  .message__content {
21
22
  display: inline-block;
22
23
  max-width: min(42rem, 85%);
24
+ min-width: 0;
23
25
  padding-block: 0.5rem;
24
26
  padding-inline: var(--sigvelo-spacing-3);
25
27
  border-radius: var(--sigvelo-radius-lg);
@@ -21,6 +21,16 @@
21
21
  overflow-wrap: anywhere;
22
22
  }
23
23
 
24
+ .message[data-from="user"] [data-streamdown="link"] {
25
+ color: var(--sigvelo-color-primary-text-on-bg);
26
+ }
27
+
28
+ [data-streamdown="link"]:focus-visible {
29
+ outline: var(--sigvelo-focus-width) solid currentColor;
30
+ outline-offset: var(--sigvelo-focus-offset);
31
+ border-radius: var(--sigvelo-radius-xs);
32
+ }
33
+
24
34
  /* Links render as <button> when link safety is enabled. */
25
35
  button[data-streamdown="link"] {
26
36
  appearance: none;
@@ -108,6 +108,7 @@
108
108
  }
109
109
 
110
110
  .workspace-explorer__tree .file-tree__name {
111
+ flex: 0 1 auto;
111
112
  line-height: 1.4;
112
113
  }
113
114
 
@@ -78,7 +78,7 @@ declare const CHECKED_IN_CODEX_MODELS: readonly [{
78
78
  readonly upgradeInfo: null;
79
79
  readonly availabilityNux: null;
80
80
  readonly hidden: boolean;
81
- readonly inputModalities: ("image" | "text")[];
81
+ readonly inputModalities: ("text" | "image")[];
82
82
  readonly supportsPersonality: boolean;
83
83
  readonly additionalSpeedTiers: never[];
84
84
  readonly serviceTiers: never[];
@@ -98,7 +98,7 @@ declare const CHECKED_IN_CODEX_MODELS: readonly [{
98
98
  readonly upgradeInfo: null;
99
99
  readonly availabilityNux: null;
100
100
  readonly hidden: boolean;
101
- readonly inputModalities: ("image" | "text")[];
101
+ readonly inputModalities: ("text" | "image")[];
102
102
  readonly supportsPersonality: boolean;
103
103
  readonly additionalSpeedTiers: never[];
104
104
  readonly serviceTiers: never[];
@@ -115,7 +115,7 @@ declare const CHECKED_IN_CODEX_MODELS: readonly [{
115
115
  readonly upgradeInfo: null;
116
116
  readonly availabilityNux: null;
117
117
  readonly hidden: boolean;
118
- readonly inputModalities: ("image" | "text")[];
118
+ readonly inputModalities: ("text" | "image")[];
119
119
  readonly supportsPersonality: boolean;
120
120
  readonly additionalSpeedTiers: never[];
121
121
  readonly serviceTiers: never[];
@@ -132,7 +132,7 @@ declare const CHECKED_IN_CODEX_MODELS: readonly [{
132
132
  readonly upgradeInfo: null;
133
133
  readonly availabilityNux: null;
134
134
  readonly hidden: boolean;
135
- readonly inputModalities: ("image" | "text")[];
135
+ readonly inputModalities: ("text" | "image")[];
136
136
  readonly supportsPersonality: boolean;
137
137
  readonly additionalSpeedTiers: never[];
138
138
  readonly serviceTiers: never[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "description": "MCP-B React components built on Base UI and shared design tokens, including Cloudflare Think chat primitives.",
5
5
  "homepage": "https://design-system.sigvelo.com",
6
6
  "bugs": {
@@ -53,7 +53,7 @@
53
53
  "lucide-react": "^1.23.0",
54
54
  "shiki": "^3.23.0",
55
55
  "streamdown": "^2.5.0",
56
- "@mcp-b/design-tokens": "0.14.0"
56
+ "@mcp-b/design-tokens": "0.14.1"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@ai-sdk/react": "^3.0.222",