@mcp-b/react-components 0.6.1 → 0.6.2

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.
@@ -206,21 +206,29 @@ function McpServerSetup({ setup }) {
206
206
  }
207
207
  function renderMcpServerIcon(server) {
208
208
  const icon = server.icon;
209
- if (typeof icon === "string") return /* @__PURE__ */ jsx("img", {
209
+ if (typeof icon === "string") return /* @__PURE__ */ jsx(McpServerIconImage, {
210
210
  src: icon,
211
- alt: "",
212
- loading: "lazy",
213
- decoding: "async",
214
- referrerPolicy: "no-referrer"
211
+ name: server.name
215
212
  });
216
- if (icon) return /* @__PURE__ */ jsx("img", {
213
+ if (icon) return /* @__PURE__ */ jsx(McpServerIconImage, {
217
214
  src: icon.src,
215
+ name: server.name
216
+ });
217
+ return server.name.slice(0, 1);
218
+ }
219
+ function McpServerIconImage({ src, name }) {
220
+ const [failed, setFailed] = React.useState(false);
221
+ if (failed) return name.slice(0, 1);
222
+ return /* @__PURE__ */ jsx("img", {
223
+ src,
218
224
  alt: "",
225
+ width: 16,
226
+ height: 16,
219
227
  loading: "lazy",
220
228
  decoding: "async",
221
- referrerPolicy: "no-referrer"
229
+ referrerPolicy: "no-referrer",
230
+ onError: () => setFailed(true)
222
231
  });
223
- return server.name.slice(0, 1);
224
232
  }
225
233
  /**
226
234
  * Compact popover trigger for showing AgentConnectionPanel inline.
@@ -103,20 +103,34 @@ function getStatusLabel(status) {
103
103
  return "";
104
104
  }
105
105
  function renderIcon(icon, name) {
106
- if (typeof icon === "string") return /* @__PURE__ */ jsx(IconImage, { src: icon });
107
- if (icon) return /* @__PURE__ */ jsx(IconImage, { src: icon.src });
106
+ if (typeof icon === "string") return /* @__PURE__ */ jsx(IconImage, {
107
+ src: icon,
108
+ name
109
+ });
110
+ if (icon) return /* @__PURE__ */ jsx(IconImage, {
111
+ src: icon.src,
112
+ name
113
+ });
108
114
  return /* @__PURE__ */ jsx("span", {
109
115
  className: "mcp-server-picker__fallback-icon",
110
116
  children: name.slice(0, 1)
111
117
  });
112
118
  }
113
- function IconImage({ src }) {
119
+ function IconImage({ src, name }) {
120
+ const [failed, setFailed] = React.useState(false);
121
+ if (failed) return /* @__PURE__ */ jsx("span", {
122
+ className: "mcp-server-picker__fallback-icon",
123
+ children: name.slice(0, 1)
124
+ });
114
125
  return /* @__PURE__ */ jsx("img", {
115
126
  src,
116
127
  alt: "",
128
+ width: 20,
129
+ height: 20,
117
130
  loading: "lazy",
118
131
  decoding: "async",
119
- referrerPolicy: "no-referrer"
132
+ referrerPolicy: "no-referrer",
133
+ onError: () => setFailed(true)
120
134
  });
121
135
  }
122
136
  function groupServers(servers) {
@@ -43,7 +43,7 @@ declare const DCR_MCP_SERVER_CARDS: readonly [{
43
43
  readonly url: "https://mcp.canva.com/mcp";
44
44
  readonly description: "Create and edit Canva designs";
45
45
  readonly category: "DCR MCP servers";
46
- readonly icon: "https://cdn.simpleicons.org/canva/00C4CC";
46
+ readonly icon: "https://www.canva.com/favicon.ico";
47
47
  }, {
48
48
  readonly id: "calendly";
49
49
  readonly name: "Calendly";
@@ -64,7 +64,7 @@ declare const DCR_MCP_SERVER_CARDS: readonly [{
64
64
  readonly url: "https://mcp.close.com/mcp";
65
65
  readonly description: "Access CRM leads and sales activity";
66
66
  readonly category: "DCR MCP servers";
67
- readonly icon: "https://cdn.simpleicons.org/close/004DFF";
67
+ readonly icon: "https://cdn.prod.website-files.com/61717799a852418a278cfa9b/69e787e66659174d6c555923_favicon.png";
68
68
  }, {
69
69
  readonly id: "cloudflare";
70
70
  readonly name: "Cloudflare";
@@ -148,7 +148,7 @@ declare const DCR_MCP_SERVER_CARDS: readonly [{
148
148
  readonly url: "https://mcp.monday.com/mcp";
149
149
  readonly description: "Access monday.com workspace data";
150
150
  readonly category: "DCR MCP servers";
151
- readonly icon: "https://cdn.simpleicons.org/mondaydotcom/FF3D57";
151
+ readonly icon: "https://monday.com/favicon.ico";
152
152
  }, {
153
153
  readonly id: "neon";
154
154
  readonly name: "Neon";
@@ -190,7 +190,7 @@ declare const DCR_MCP_SERVER_CARDS: readonly [{
190
190
  readonly url: "https://ramp-mcp-remote.ramp.com/mcp";
191
191
  readonly description: "Use finance and spend management data";
192
192
  readonly category: "DCR MCP servers";
193
- readonly icon: "https://cdn.simpleicons.org/ramp/00D26A";
193
+ readonly icon: "https://ramp.com/favicon.ico";
194
194
  }, {
195
195
  readonly id: "sentry";
196
196
  readonly name: "Sentry";
@@ -430,7 +430,7 @@ declare const MANUAL_MCP_SERVER_CARDS: readonly [{
430
430
  readonly url: "https://mcp.svc.cloud.microsoft/enterprise";
431
431
  readonly description: "Query Microsoft Graph tenant data";
432
432
  readonly category: "Manual setup MCP servers";
433
- readonly icon: "https://cdn.simpleicons.org/microsoft/5E5E5E";
433
+ readonly icon: "https://www.microsoft.com/favicon.ico";
434
434
  readonly manualSetup: {
435
435
  readonly description: "Provision the preview tenant resource, register the client, grant delegated MCP permissions, and connect with Microsoft Entra OAuth.";
436
436
  readonly links: readonly [{
@@ -447,7 +447,7 @@ declare const MANUAL_MCP_SERVER_CARDS: readonly [{
447
447
  readonly url: "https://www.microsoft.com/releasecommunications/mcp";
448
448
  readonly description: "Check Microsoft 365 roadmap and Azure updates";
449
449
  readonly category: "Manual setup MCP servers";
450
- readonly icon: "https://cdn.simpleicons.org/microsoft/5E5E5E";
450
+ readonly icon: "https://www.microsoft.com/favicon.ico";
451
451
  readonly manualSetup: {
452
452
  readonly description: "No OAuth is required; add the Streamable HTTP endpoint directly to the MCP client.";
453
453
  readonly links: readonly [{
@@ -461,7 +461,7 @@ declare const MANUAL_MCP_SERVER_CARDS: readonly [{
461
461
  readonly url: "https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads";
462
462
  readonly description: "Read and query Salesforce CRM records";
463
463
  readonly category: "Manual setup MCP servers";
464
- readonly icon: "https://cdn.simpleicons.org/salesforce/00A1E0";
464
+ readonly icon: "https://www.salesforce.com/favicon.ico";
465
465
  readonly manualSetup: {
466
466
  readonly description: "Create a Salesforce External Client App with mcp_api and refresh_token scopes, require PKCE, activate the hosted server, and connect with the consumer key.";
467
467
  readonly links: readonly [{
@@ -481,7 +481,7 @@ declare const MANUAL_MCP_SERVER_CARDS: readonly [{
481
481
  readonly url: "https://mcp.slack.com/mcp";
482
482
  readonly description: "Search channels, send messages, and manage canvases";
483
483
  readonly category: "Manual setup MCP servers";
484
- readonly icon: "https://cdn.simpleicons.org/slack/4A154B";
484
+ readonly icon: "https://slack.com/favicon.ico";
485
485
  readonly manualSetup: {
486
486
  readonly description: "Create or reuse a Slack app, enable MCP access, add user scopes and redirect URLs, then connect with the app client ID and secret.";
487
487
  readonly links: readonly [{
@@ -25,7 +25,7 @@ const DCR_MCP_SERVER_CARDS = [
25
25
  url: "https://mcp.canva.com/mcp",
26
26
  description: "Create and edit Canva designs",
27
27
  category: DCR_CATEGORY,
28
- icon: "https://cdn.simpleicons.org/canva/00C4CC"
28
+ icon: "https://www.canva.com/favicon.ico"
29
29
  },
30
30
  {
31
31
  id: "calendly",
@@ -49,7 +49,7 @@ const DCR_MCP_SERVER_CARDS = [
49
49
  url: "https://mcp.close.com/mcp",
50
50
  description: "Access CRM leads and sales activity",
51
51
  category: DCR_CATEGORY,
52
- icon: "https://cdn.simpleicons.org/close/004DFF"
52
+ icon: "https://cdn.prod.website-files.com/61717799a852418a278cfa9b/69e787e66659174d6c555923_favicon.png"
53
53
  },
54
54
  {
55
55
  id: "cloudflare",
@@ -145,7 +145,7 @@ const DCR_MCP_SERVER_CARDS = [
145
145
  url: "https://mcp.monday.com/mcp",
146
146
  description: "Access monday.com workspace data",
147
147
  category: DCR_CATEGORY,
148
- icon: "https://cdn.simpleicons.org/mondaydotcom/FF3D57"
148
+ icon: "https://monday.com/favicon.ico"
149
149
  },
150
150
  {
151
151
  id: "neon",
@@ -193,7 +193,7 @@ const DCR_MCP_SERVER_CARDS = [
193
193
  url: "https://ramp-mcp-remote.ramp.com/mcp",
194
194
  description: "Use finance and spend management data",
195
195
  category: DCR_CATEGORY,
196
- icon: "https://cdn.simpleicons.org/ramp/00D26A"
196
+ icon: "https://ramp.com/favicon.ico"
197
197
  },
198
198
  {
199
199
  id: "sentry",
@@ -485,7 +485,7 @@ const MANUAL_MCP_SERVER_CARDS = [
485
485
  url: "https://mcp.svc.cloud.microsoft/enterprise",
486
486
  description: "Query Microsoft Graph tenant data",
487
487
  category: MANUAL_CATEGORY,
488
- icon: "https://cdn.simpleicons.org/microsoft/5E5E5E",
488
+ icon: "https://www.microsoft.com/favicon.ico",
489
489
  manualSetup: {
490
490
  description: "Provision the preview tenant resource, register the client, grant delegated MCP permissions, and connect with Microsoft Entra OAuth.",
491
491
  links: [{
@@ -503,7 +503,7 @@ const MANUAL_MCP_SERVER_CARDS = [
503
503
  url: "https://www.microsoft.com/releasecommunications/mcp",
504
504
  description: "Check Microsoft 365 roadmap and Azure updates",
505
505
  category: MANUAL_CATEGORY,
506
- icon: "https://cdn.simpleicons.org/microsoft/5E5E5E",
506
+ icon: "https://www.microsoft.com/favicon.ico",
507
507
  manualSetup: {
508
508
  description: "No OAuth is required; add the Streamable HTTP endpoint directly to the MCP client.",
509
509
  links: [{
@@ -518,7 +518,7 @@ const MANUAL_MCP_SERVER_CARDS = [
518
518
  url: "https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads",
519
519
  description: "Read and query Salesforce CRM records",
520
520
  category: MANUAL_CATEGORY,
521
- icon: "https://cdn.simpleicons.org/salesforce/00A1E0",
521
+ icon: "https://www.salesforce.com/favicon.ico",
522
522
  manualSetup: {
523
523
  description: "Create a Salesforce External Client App with mcp_api and refresh_token scopes, require PKCE, activate the hosted server, and connect with the consumer key.",
524
524
  links: [
@@ -543,7 +543,7 @@ const MANUAL_MCP_SERVER_CARDS = [
543
543
  url: "https://mcp.slack.com/mcp",
544
544
  description: "Search channels, send messages, and manage canvases",
545
545
  category: MANUAL_CATEGORY,
546
- icon: "https://cdn.simpleicons.org/slack/4A154B",
546
+ icon: "https://slack.com/favicon.ico",
547
547
  manualSetup: {
548
548
  description: "Create or reuse a Slack app, enable MCP access, add user scopes and redirect URLs, then connect with the app client ID and secret.",
549
549
  links: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
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": {
@@ -49,7 +49,7 @@
49
49
  "anser": "^2.3.5",
50
50
  "shiki": "^3.23.0",
51
51
  "streamdown": "^2.5.0",
52
- "@mcp-b/design-tokens": "0.6.1"
52
+ "@mcp-b/design-tokens": "0.6.2"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@ai-sdk/react": "^3.0.194",