From 421a868a1a6eeac0c27bc1eb927f78e941e5feb8 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sun, 23 Aug 2026 17:21:31 +0300 Subject: [PATCH] feat(ui): add Linear and Cloudflare tool icons --- packages/ui/src/components/chat/PermissionCard.tsx | 8 ++++++++ .../components/chat/message/parts/toolPresentation.tsx | 6 ++++++ packages/ui/src/components/icon/sprite.ts | 2 ++ scripts/generate-icon-sprite.mjs | 10 ++++++++++ 4 files changed, 26 insertions(+) diff --git a/packages/ui/src/components/chat/PermissionCard.tsx b/packages/ui/src/components/chat/PermissionCard.tsx index ae243290..cd63576b 100644 --- a/packages/ui/src/components/chat/PermissionCard.tsx +++ b/packages/ui/src/components/chat/PermissionCard.tsx @@ -66,6 +66,14 @@ const getToolIcon = (toolName: string) => { return ; } + if (tool === 'linear' || tool.startsWith('linear_')) { + return ; + } + + if (tool === 'cloudflare' || tool.startsWith('cloudflare_') || tool === 'claudflare' || tool.startsWith('claudflare_')) { + return ; + } + return ; }; diff --git a/packages/ui/src/components/chat/message/parts/toolPresentation.tsx b/packages/ui/src/components/chat/message/parts/toolPresentation.tsx index f4b627ba..df6edd59 100644 --- a/packages/ui/src/components/chat/message/parts/toolPresentation.tsx +++ b/packages/ui/src/components/chat/message/parts/toolPresentation.tsx @@ -56,6 +56,12 @@ export const getToolIcon = (toolName: string) => { if (tool === 'openchamber') { return ; } + if (tool === 'linear' || tool.startsWith('linear_')) { + return ; + } + if (tool === 'cloudflare' || tool.startsWith('cloudflare_') || tool === 'claudflare' || tool.startsWith('claudflare_')) { + return ; + } if (tool === 'openchamber_web') { return ; } diff --git a/packages/ui/src/components/icon/sprite.ts b/packages/ui/src/components/icon/sprite.ts index d6da37c9..f02f026d 100644 --- a/packages/ui/src/components/icon/sprite.ts +++ b/packages/ui/src/components/icon/sprite.ts @@ -2,6 +2,8 @@ // Do not edit manually. Run the script to update. export const iconSpriteData = { + "linear": ``, + "cloudflare": ``, "add": ``, "add-circle": ``, "ai-agent": ``, diff --git a/scripts/generate-icon-sprite.mjs b/scripts/generate-icon-sprite.mjs index 3098bb05..1732625a 100644 --- a/scripts/generate-icon-sprite.mjs +++ b/scripts/generate-icon-sprite.mjs @@ -37,6 +37,16 @@ const customIconData = new Map([ "command-code", ``, ], + // Linear logo, adapted from the supplied 100x100 mark to the 24x24 sprite viewBox. + [ + "linear", + ``, + ], + // Cloudflare logo, reduced to a single currentColor silhouette. + [ + "cloudflare", + ``, + ], ]) const source = readFileSync(remixPath, "utf-8")