From bb46866879206a45aca3dd8a9000e830a2930d9a Mon Sep 17 00:00:00 2001 From: bot-hermes Date: Fri, 14 Aug 2026 03:49:26 +0000 Subject: [PATCH] feat(ui): add Gitea brand icon and use it for detected Gitea providers Add the Gitea teapot mark (Simple Icons, 24x24) to the icon sprite as a custom icon, and swap the gitea fallback icons for it wherever the provider brand is shown: context rail PR surface, context panel PR tab, GitHeader PR chip, and the work-status Gitea PR row. --- .../chat/work-status/WorkStatusPrimaryGroup.tsx | 2 +- packages/ui/src/components/icon/sprite.ts | 1 + packages/ui/src/components/layout/ContextPanel.tsx | 2 +- packages/ui/src/components/layout/ContextPanelRail.tsx | 5 ++--- packages/ui/src/components/views/git/GitHeader.tsx | 8 ++++---- scripts/generate-icon-sprite.mjs | 4 ++++ 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx b/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx index d8951132..7210643c 100644 --- a/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx +++ b/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx @@ -334,7 +334,7 @@ export const WorkStatusPrimaryGroup: React.FC = ({ sessionId, directory, {hasGiteaPr && giteaPr ? ( openSurface('pr') : undefined} ariaLabel={t('chat.workStatus.action.openPr')} iconColor={`var(--pr-${giteaPrVisualState})`} diff --git a/packages/ui/src/components/icon/sprite.ts b/packages/ui/src/components/icon/sprite.ts index 5bef3a60..cb9bfff5 100644 --- a/packages/ui/src/components/icon/sprite.ts +++ b/packages/ui/src/components/icon/sprite.ts @@ -127,6 +127,7 @@ export const iconSpriteData = { "git-pr-draft": ``, "git-pull-request": ``, "git-repository": ``, + "gitea": ``, "github": ``, "github-fill": ``, "gitlab": ``, diff --git a/packages/ui/src/components/layout/ContextPanel.tsx b/packages/ui/src/components/layout/ContextPanel.tsx index 6cd0f85c..1fcb44e5 100644 --- a/packages/ui/src/components/layout/ContextPanel.tsx +++ b/packages/ui/src/components/layout/ContextPanel.tsx @@ -215,7 +215,7 @@ const getTabIcon = ( } if (tab.mode === 'pr') { - return ; + return ; } if (tab.mode === 'notes') { diff --git a/packages/ui/src/components/layout/ContextPanelRail.tsx b/packages/ui/src/components/layout/ContextPanelRail.tsx index ca5662b8..db3e507b 100644 --- a/packages/ui/src/components/layout/ContextPanelRail.tsx +++ b/packages/ui/src/components/layout/ContextPanelRail.tsx @@ -300,8 +300,7 @@ export const ContextPanelRail: React.FC = () => { // The 'pr' surface renders the GitLab MR view in GitLab repos, so // it borrows GitLab's merge-request branding instead of GitHub's. // Gitea keeps the generic pull-request branding but swaps the - // GitHub brand icon for a neutral git icon (there is no Gitea - // brand icon in the sprite). + // GitHub brand icon for the Gitea mark. const providerPrSurface: ContextSurfaceDescriptor = surface.id === 'pr' ? gitProvider === 'gitlab' ? { @@ -313,7 +312,7 @@ export const ContextPanelRail: React.FC = () => { : gitProvider === 'gitea' ? { ...surface, - icon: 'git-branch' as IconName, + icon: 'gitea' as IconName, labelKey: 'contextPanel.mode.pr', descriptionKey: 'contextRail.surface.pr.description', } diff --git a/packages/ui/src/components/views/git/GitHeader.tsx b/packages/ui/src/components/views/git/GitHeader.tsx index 234b0d5c..3cece850 100644 --- a/packages/ui/src/components/views/git/GitHeader.tsx +++ b/packages/ui/src/components/views/git/GitHeader.tsx @@ -415,9 +415,9 @@ export const GitHeader: React.FC = ({ ) : null; - // Gitea pull request chip, mirroring the GitLab MR chip above. There is no - // Gitea brand icon in the sprite, so the neutral pull-request icon carries - // the state colour. + // Gitea pull request chip, mirroring the GitLab MR chip above. Gitea states + // are surfaced with the same PR state palette so merged/closed/open read + // identically across providers. const giteaPrVisualState = giteaPr ? giteaPr.state === 'merged' ? 'merged' @@ -438,7 +438,7 @@ export const GitHeader: React.FC = ({ className="h-8 gap-1.5 px-2 typography-micro" > diff --git a/scripts/generate-icon-sprite.mjs b/scripts/generate-icon-sprite.mjs index 66bbb551..9c5e2a2a 100644 --- a/scripts/generate-icon-sprite.mjs +++ b/scripts/generate-icon-sprite.mjs @@ -41,6 +41,10 @@ const customIconData = new Map([ "gitlab", ``, ], + [ + "gitea", + ``, + ], ]) const source = readFileSync(remixPath, "utf-8")