From c25e16d09389475b4b64ac4f2ab163d83c78fea7 Mon Sep 17 00:00:00 2001 From: bot-hermes Date: Thu, 13 Aug 2026 19:58:58 +0000 Subject: [PATCH] feat(ui): GitLab brand icons in GitLab surfaces --- packages/ui/src/components/chat/ChatInput.tsx | 4 ++-- .../chat/composer/ui/ComposerAttachmentControls.tsx | 4 ++-- .../chat/work-status/WorkStatusPrimaryGroup.tsx | 2 +- packages/ui/src/components/icon/sprite.ts | 1 + packages/ui/src/components/layout/ContextPanel.tsx | 2 +- .../ui/src/components/layout/ContextPanelRail.tsx | 2 +- .../sections/openchamber/GitLabSettings.tsx | 6 +++--- .../components/session/GitLabIntegrationDialog.tsx | 12 ++++++------ .../components/session/GitLabIssuePickerDialog.tsx | 2 +- .../src/components/session/GitLabMrPickerDialog.tsx | 2 +- .../ui/src/components/session/NewWorktreeDialog.tsx | 8 ++++---- packages/ui/src/components/views/GitLabMrView.tsx | 4 ++-- packages/ui/src/components/views/git/GitHeader.tsx | 2 +- scripts/generate-icon-sprite.mjs | 4 ++++ 14 files changed, 30 insertions(+), 25 deletions(-) diff --git a/packages/ui/src/components/chat/ChatInput.tsx b/packages/ui/src/components/chat/ChatInput.tsx index 2effff20..fb6976d8 100644 --- a/packages/ui/src/components/chat/ChatInput.tsx +++ b/packages/ui/src/components/chat/ChatInput.tsx @@ -2980,7 +2980,7 @@ const ChatInputComponent: React.FC = ({ onOpenSettings, scrollTo requestAnimationFrame(openIssuePicker); }} > - + {gitProvider === 'gitlab' ? t('chat.chatInput.actions.linkGitlabIssue') : t('chat.chatInput.actions.linkGithubIssue')} diff --git a/packages/ui/src/components/chat/composer/ui/ComposerAttachmentControls.tsx b/packages/ui/src/components/chat/composer/ui/ComposerAttachmentControls.tsx index df4a070a..14e4578d 100644 --- a/packages/ui/src/components/chat/composer/ui/ComposerAttachmentControls.tsx +++ b/packages/ui/src/components/chat/composer/ui/ComposerAttachmentControls.tsx @@ -128,7 +128,7 @@ export const ComposerAttachmentControls = React.memo(function ComposerAttachment requestAnimationFrame(openIssuePicker); }} > - + {t('chat.chatInput.actions.linkGitlabIssue')} - + {t('chat.chatInput.actions.linkGitlabMr')} diff --git a/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx b/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx index 2099da54..0dfd1657 100644 --- a/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx +++ b/packages/ui/src/components/chat/work-status/WorkStatusPrimaryGroup.tsx @@ -304,7 +304,7 @@ export const WorkStatusPrimaryGroup: React.FC = ({ sessionId, directory, {hasGitLabMr && gitLabMr ? ( openSurface('pr') : undefined} ariaLabel={t('chat.workStatus.action.openMr')} iconColor={`var(--pr-${gitLabMrVisualState})`} diff --git a/packages/ui/src/components/icon/sprite.ts b/packages/ui/src/components/icon/sprite.ts index 5f7fcefd..5bef3a60 100644 --- a/packages/ui/src/components/icon/sprite.ts +++ b/packages/ui/src/components/icon/sprite.ts @@ -129,6 +129,7 @@ export const iconSpriteData = { "git-repository": ``, "github": ``, "github-fill": ``, + "gitlab": ``, "global": ``, "graduation-cap": ``, "hammer": ``, diff --git a/packages/ui/src/components/layout/ContextPanel.tsx b/packages/ui/src/components/layout/ContextPanel.tsx index 67bb1ba7..d83372b9 100644 --- a/packages/ui/src/components/layout/ContextPanel.tsx +++ b/packages/ui/src/components/layout/ContextPanel.tsx @@ -214,7 +214,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 b0fae957..8660fc87 100644 --- a/packages/ui/src/components/layout/ContextPanelRail.tsx +++ b/packages/ui/src/components/layout/ContextPanelRail.tsx @@ -302,7 +302,7 @@ export const ContextPanelRail: React.FC = () => { const gitlabMrSurface: ContextSurfaceDescriptor = surface.id === 'pr' && gitProvider === 'gitlab' ? { ...surface, - icon: 'git-merge' as IconName, + icon: 'gitlab' as IconName, labelKey: 'contextPanel.mode.mr', descriptionKey: 'contextRail.surface.mr.description', } diff --git a/packages/ui/src/components/sections/openchamber/GitLabSettings.tsx b/packages/ui/src/components/sections/openchamber/GitLabSettings.tsx index b6510580..516b4fca 100644 --- a/packages/ui/src/components/sections/openchamber/GitLabSettings.tsx +++ b/packages/ui/src/components/sections/openchamber/GitLabSettings.tsx @@ -168,7 +168,7 @@ export const GitLabSettings: React.FC = () => { /> ) : (
- +
)} @@ -177,7 +177,7 @@ export const GitLabSettings: React.FC = () => { {user?.name?.trim() || user?.username || 'GitLab'}
- + {t('settings.gitlab.page.connectedAs')} {user?.username || t('settings.gitlab.page.label.unknownUser')} @@ -257,7 +257,7 @@ export const GitLabSettings: React.FC = () => { /> ) : (
- +
)}
diff --git a/packages/ui/src/components/session/GitLabIntegrationDialog.tsx b/packages/ui/src/components/session/GitLabIntegrationDialog.tsx index ae0a7799..ef729a95 100644 --- a/packages/ui/src/components/session/GitLabIntegrationDialog.tsx +++ b/packages/ui/src/components/session/GitLabIntegrationDialog.tsx @@ -348,7 +348,7 @@ export function GitLabIntegrationDialog({ <> {!isGitLabConnected ? (
- +

{t('session.gitlabIntegration.connect.title')}

@@ -606,8 +606,8 @@ export function GitLabIntegrationDialog({

}, - { id: 'mrs', label: t('session.gitlabIntegration.tabs.mergeRequests'), icon: }, + { id: 'issues', label: t('session.gitlabIntegration.tabs.issues'), icon: }, + { id: 'mrs', label: t('session.gitlabIntegration.tabs.mergeRequests'), icon: }, ]} activeId={activeTab} onSelect={(id) => { @@ -647,7 +647,7 @@ export function GitLabIntegrationDialog({
- + {t('session.gitlabIntegration.title')} @@ -655,8 +655,8 @@ export function GitLabIntegrationDialog({
}, - { id: 'mrs', label: t('session.gitlabIntegration.tabs.mergeRequests'), icon: }, + { id: 'issues', label: t('session.gitlabIntegration.tabs.issues'), icon: }, + { id: 'mrs', label: t('session.gitlabIntegration.tabs.mergeRequests'), icon: }, ]} activeId={activeTab} onSelect={(id) => { diff --git a/packages/ui/src/components/session/GitLabIssuePickerDialog.tsx b/packages/ui/src/components/session/GitLabIssuePickerDialog.tsx index 3fd2253e..1907f01c 100644 --- a/packages/ui/src/components/session/GitLabIssuePickerDialog.tsx +++ b/packages/ui/src/components/session/GitLabIssuePickerDialog.tsx @@ -718,7 +718,7 @@ export function GitLabIssuePickerDialog({ - + {title} diff --git a/packages/ui/src/components/session/GitLabMrPickerDialog.tsx b/packages/ui/src/components/session/GitLabMrPickerDialog.tsx index 335deef6..acb1ec21 100644 --- a/packages/ui/src/components/session/GitLabMrPickerDialog.tsx +++ b/packages/ui/src/components/session/GitLabMrPickerDialog.tsx @@ -462,7 +462,7 @@ export function GitLabMrPickerDialog({ - + {title} diff --git a/packages/ui/src/components/session/NewWorktreeDialog.tsx b/packages/ui/src/components/session/NewWorktreeDialog.tsx index 44a6e108..015c8c29 100644 --- a/packages/ui/src/components/session/NewWorktreeDialog.tsx +++ b/packages/ui/src/components/session/NewWorktreeDialog.tsx @@ -1585,7 +1585,7 @@ export function NewWorktreeDialog({ onClick={() => setGitlabDialogOpen(true)} className="gap-1.5 h-7" > - + {newBranchState.linkedGitLabIssue || newBranchState.linkedGitLabMr ? t('session.newWorktree.actions.change') : t('session.newWorktree.actions.startFromGitLabIssueMr')} )} @@ -1851,7 +1851,7 @@ export function NewWorktreeDialog({ {newBranchState.linkedIssue || newBranchState.linkedPr ? ( ) : ( - + )} {newBranchState.linkedIssue && ( @@ -2113,7 +2113,7 @@ export function NewWorktreeDialog({ onClick={() => setGitlabDialogOpen(true)} className="gap-1.5 h-7" > - + {newBranchState.linkedGitLabIssue || newBranchState.linkedGitLabMr ? t('session.newWorktree.actions.change') : t('session.newWorktree.actions.startFromGitLabIssueMr')} )} @@ -2353,7 +2353,7 @@ export function NewWorktreeDialog({ {newBranchState.linkedIssue || newBranchState.linkedPr ? ( ) : ( - + )} {newBranchState.linkedIssue && ( diff --git a/packages/ui/src/components/views/GitLabMrView.tsx b/packages/ui/src/components/views/GitLabMrView.tsx index 2628e1c9..ca598eed 100644 --- a/packages/ui/src/components/views/GitLabMrView.tsx +++ b/packages/ui/src/components/views/GitLabMrView.tsx @@ -434,7 +434,7 @@ export const GitLabMrView: React.FC = () => { if (!currentDirectory) { return (
- +
{t('contextPanel.gitlabMr.title')}
{t('contextPanel.gitlabMr.empty.noActiveProject')}
@@ -453,7 +453,7 @@ export const GitLabMrView: React.FC = () => { if (connected === false) { return (
- +
{t('contextPanel.gitlabMr.error.notConnected')}