From d5d0cb70bbe8f5cf2052afeefceaccdf9843d2e9 Mon Sep 17 00:00:00 2001 From: Ishaan Gupta Date: Thu, 2 Jul 2026 18:59:40 +0530 Subject: [PATCH] Align MCP widget cards with web theme --- .../src/widget/components/WorkspaceCard.tsx | 26 +++++++++------- apps/mcp/src/widget/design/globals.css | 31 ++++++++++--------- apps/mcp/src/widget/design/tokens.css | 26 +++++++--------- apps/mcp/src/widget/design/ui/Button.tsx | 4 +-- apps/mcp/src/widget/design/ui/Card.tsx | 9 +++--- apps/mcp/src/widget/design/ui/Chip.tsx | 2 +- apps/mcp/src/widget/design/ui/Field.tsx | 2 +- apps/mcp/src/widget/design/ui/FileUpload.tsx | 4 +-- apps/mcp/src/widget/design/ui/Input.tsx | 4 +-- apps/mcp/src/widget/design/ui/Popover.tsx | 2 +- apps/mcp/src/widget/design/ui/TextArea.tsx | 4 +-- apps/mcp/src/widget/views/Confirmation.tsx | 2 +- apps/mcp/src/widget/views/Error.tsx | 2 +- apps/mcp/src/widget/views/Save.tsx | 4 +-- apps/mcp/src/widget/views/Success.tsx | 2 +- apps/mcp/src/widget/views/Upload.tsx | 4 +-- 16 files changed, 65 insertions(+), 63 deletions(-) diff --git a/apps/mcp/src/widget/components/WorkspaceCard.tsx b/apps/mcp/src/widget/components/WorkspaceCard.tsx index 24f39211..fdbf9e36 100644 --- a/apps/mcp/src/widget/components/WorkspaceCard.tsx +++ b/apps/mcp/src/widget/components/WorkspaceCard.tsx @@ -20,22 +20,24 @@ export function WorkspaceCard({ return ( onClick(containerTag.containerTag)} variant={active ? "active" : "interactive"} > - + - {containerTag.emoji ? ( - - {containerTag.emoji} - - ) : ( - - )} + + {containerTag.emoji ? ( + + {containerTag.emoji} + + ) : ( + + )} + {name} @@ -43,11 +45,11 @@ export function WorkspaceCard({ {active ? : null} -
+
{containerTag.containerTag}
{(containerTag.documentCount > 0 || containerTag.memoryCount > 0) && ( -
+
{containerTag.documentCount} doc {containerTag.documentCount === 1 ? "" : "s"} diff --git a/apps/mcp/src/widget/design/globals.css b/apps/mcp/src/widget/design/globals.css index fcca5b5b..531ff85b 100644 --- a/apps/mcp/src/widget/design/globals.css +++ b/apps/mcp/src/widget/design/globals.css @@ -14,6 +14,9 @@ --color-bg-muted: var(--bg-muted); --color-bg-elevated: var(--bg-elevated); --color-bg-overlay: var(--bg-overlay); + --color-bg-panel: var(--bg-panel); + --color-bg-control: var(--bg-control); + --color-bg-control-hover: var(--bg-control-hover); --color-border: var(--border); --color-border-muted: var(--border-muted); @@ -95,7 +98,7 @@ linear-gradient(180deg, #0b1119 0%, #070b11 100%); color: var(--text-primary); font-family: var(--font-sans); - letter-spacing: -0.01em; + letter-spacing: 0; line-height: var(--leading-normal); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -121,11 +124,11 @@ min-height: 280px; overflow: hidden; background: - linear-gradient(rgba(75, 160, 250, 0.035) 1px, transparent 1px), - linear-gradient(90deg, rgba(75, 160, 250, 0.035) 1px, transparent 1px), + linear-gradient(rgba(75, 160, 250, 0.04) 1px, transparent 1px), + linear-gradient(90deg, rgba(75, 160, 250, 0.04) 1px, transparent 1px), radial-gradient( circle at 50% 108%, - rgba(75, 160, 250, 0.22), + rgba(75, 160, 250, 0.18), transparent 42% ), linear-gradient(180deg, #0b1119 0%, #070b11 100%); @@ -182,14 +185,14 @@ pointer-events: none; background: radial-gradient( ellipse at 50% 48%, - rgba(255, 255, 255, 0.34) 0%, - rgba(71, 168, 253, 0.42) 11%, - rgba(0, 153, 255, 0.32) 28%, - rgba(20, 16, 255, 0.28) 48%, + rgba(255, 255, 255, 0.22) 0%, + rgba(71, 168, 253, 0.3) 12%, + rgba(0, 153, 255, 0.22) 28%, + rgba(20, 16, 255, 0.18) 48%, transparent 74% ); - filter: blur(18px); - opacity: 0.9; + filter: blur(20px); + opacity: 0.78; } .mcp-widget-shell-graph .mcp-widget-glow { @@ -202,9 +205,9 @@ gap: var(--space-2); margin: var(--space-4) var(--page-header-px) 0; padding: 7px 10px 7px 8px; - border: 1px solid var(--border); + border: 1px solid #263348; border-radius: var(--radius-lg); - background: rgba(13, 18, 26, 0.78); + background: rgba(8, 11, 15, 0.92); backdrop-filter: blur(18px); box-shadow: var(--shadow-sm); } @@ -217,9 +220,7 @@ color: var(--accent); border-radius: var(--radius-md); background: #080b0f; - box-shadow: - inset 1.5px 1.5px 4.5px rgba(0, 0, 0, 0.7), - inset 0 1px 1px rgba(255, 255, 255, 0.03); + box-shadow: inset 1.5px 1.5px 4.5px rgba(0, 0, 0, 0.7); } .mcp-widget-brand-mark svg { diff --git a/apps/mcp/src/widget/design/tokens.css b/apps/mcp/src/widget/design/tokens.css index d6a49dad..2df3ebce 100644 --- a/apps/mcp/src/widget/design/tokens.css +++ b/apps/mcp/src/widget/design/tokens.css @@ -305,19 +305,20 @@ --bg-primary: #0b1119; --bg-secondary: #101822; --bg-muted: #131b28; - --bg-elevated: #1b1f24; + --bg-elevated: #080b0f; --bg-overlay: rgba(13, 18, 26, 0.78); - --bg-control: #0d121a; - --bg-control-hover: #111923; + --bg-panel: #101822; + --bg-control: #080b0f; + --bg-control-hover: #0d121a; - --border: rgba(255, 255, 255, 0.12); - --border-muted: rgba(255, 255, 255, 0.07); - --border-control: rgba(255, 255, 255, 0.14); - --border-accent: rgba(34, 97, 202, 0.45); + --border: #263348; + --border-muted: #161f2c; + --border-control: #263348; + --border-accent: rgba(75, 160, 250, 0.5); --text-primary: #fafafa; --text-secondary: #d0dae7; - --text-muted: #a0aec4; + --text-muted: #8b8b8b; --text-inverse: #0b1119; --success: #4ade80; @@ -341,12 +342,9 @@ --radius-md: 6px; --radius-lg: 8px; - --shadow-sm: - 0 2px 10px rgba(0, 0, 0, 0.18), inset 0 1px 1px rgba(255, 255, 255, 0.06); - --shadow-md: - 0 10px 30px rgba(0, 0, 0, 0.28), inset 0 1px 1px rgba(255, 255, 255, 0.08); - --shadow-lg: - 0 20px 60px rgba(0, 0, 0, 0.42), inset 0 1px 1px rgba(255, 255, 255, 0.08); + --shadow-sm: 0 2px 12px rgba(0, 0, 0, 0.2); + --shadow-md: 0 12px 34px rgba(0, 0, 0, 0.28); + --shadow-lg: 0 20px 54px rgba(0, 0, 0, 0.38); --graph-bg: #0b1119; --graph-doc-fill: #1b1f24; diff --git a/apps/mcp/src/widget/design/ui/Button.tsx b/apps/mcp/src/widget/design/ui/Button.tsx index d68dbedf..d6a7b6ee 100644 --- a/apps/mcp/src/widget/design/ui/Button.tsx +++ b/apps/mcp/src/widget/design/ui/Button.tsx @@ -27,7 +27,7 @@ const buttonVariants = cva( secondary: [ "bg-[var(--bg-control)] text-[var(--text-primary)]", "border border-[var(--border-control)]", - "hover:bg-[var(--bg-control-hover)] hover:border-[var(--border-accent)]", + "hover:bg-[var(--bg-control-hover)] hover:border-[#3374FF]/50", ].join(" "), ghost: [ "text-[var(--text-primary)]", @@ -94,7 +94,7 @@ export const Button = forwardRef( {shortcut && !loading ? ( {label ? ( // biome-ignore lint/a11y/noLabelWithoutControl: generic field wrapper where children provide the input -