mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-02-16 05:37:31 +00:00
refactor: replace individual provider logos with a unified SessionProviderLogo component
This commit is contained in:
24
src/components/SessionProviderLogo.tsx
Normal file
24
src/components/SessionProviderLogo.tsx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import type { SessionProvider } from '../types/app';
|
||||||
|
import ClaudeLogo from './ClaudeLogo';
|
||||||
|
import CodexLogo from './CodexLogo';
|
||||||
|
import CursorLogo from './CursorLogo';
|
||||||
|
|
||||||
|
type SessionProviderLogoProps = {
|
||||||
|
provider?: SessionProvider | string | null;
|
||||||
|
className?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function SessionProviderLogo({
|
||||||
|
provider = 'claude',
|
||||||
|
className = 'w-5 h-5',
|
||||||
|
}: SessionProviderLogoProps) {
|
||||||
|
if (provider === 'cursor') {
|
||||||
|
return <CursorLogo className={className} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (provider === 'codex') {
|
||||||
|
return <CodexLogo className={className} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
return <ClaudeLogo className={className} />;
|
||||||
|
}
|
||||||
@@ -5,9 +5,6 @@ import { Badge } from './ui/badge';
|
|||||||
import { X, Plus, Settings as SettingsIcon, Shield, AlertTriangle, Moon, Sun, Server, Edit3, Trash2, Globe, Terminal, Zap, FolderOpen, LogIn, Key, GitBranch, Check } from 'lucide-react';
|
import { X, Plus, Settings as SettingsIcon, Shield, AlertTriangle, Moon, Sun, Server, Edit3, Trash2, Globe, Terminal, Zap, FolderOpen, LogIn, Key, GitBranch, Check } from 'lucide-react';
|
||||||
import { useTheme } from '../contexts/ThemeContext';
|
import { useTheme } from '../contexts/ThemeContext';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ClaudeLogo from './ClaudeLogo';
|
|
||||||
import CursorLogo from './CursorLogo';
|
|
||||||
import CodexLogo from './CodexLogo';
|
|
||||||
import CredentialsSettings from './CredentialsSettings';
|
import CredentialsSettings from './CredentialsSettings';
|
||||||
import GitSettings from './GitSettings';
|
import GitSettings from './GitSettings';
|
||||||
import TasksSettings from './TasksSettings';
|
import TasksSettings from './TasksSettings';
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
import React, { memo, useMemo } from 'react';
|
import React, { memo, useMemo } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ClaudeLogo from '../../ClaudeLogo.jsx';
|
import SessionProviderLogo from '../../SessionProviderLogo';
|
||||||
import CursorLogo from '../../CursorLogo.jsx';
|
|
||||||
import CodexLogo from '../../CodexLogo.jsx';
|
|
||||||
import type { ChatMessage, Provider } from '../types';
|
import type { ChatMessage, Provider } from '../types';
|
||||||
import { Markdown } from '../markdown/Markdown';
|
import { Markdown } from '../markdown/Markdown';
|
||||||
import { formatUsageLimitText } from '../utils/chatFormatting';
|
import { formatUsageLimitText } from '../utils/chatFormatting';
|
||||||
@@ -128,13 +126,7 @@ const MessageComponent = memo(({ message, index, prevMessage, createDiff, onFile
|
|||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="w-8 h-8 rounded-full flex items-center justify-center text-white text-sm flex-shrink-0 p-1">
|
<div className="w-8 h-8 rounded-full flex items-center justify-center text-white text-sm flex-shrink-0 p-1">
|
||||||
{selectedProvider === 'cursor' ? (
|
<SessionProviderLogo provider={selectedProvider} className="w-full h-full" />
|
||||||
<CursorLogo className="w-full h-full" />
|
|
||||||
) : selectedProvider === 'codex' ? (
|
|
||||||
<CodexLogo className="w-full h-full" />
|
|
||||||
) : (
|
|
||||||
<ClaudeLogo className="w-full h-full" />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="text-sm font-medium text-gray-900 dark:text-white">
|
<div className="text-sm font-medium text-gray-900 dark:text-white">
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import type { Dispatch, RefObject, SetStateAction } from 'react';
|
import type { Dispatch, RefObject, SetStateAction } from 'react';
|
||||||
import ClaudeLogo from '../../ClaudeLogo.jsx';
|
import SessionProviderLogo from '../../SessionProviderLogo';
|
||||||
import CursorLogo from '../../CursorLogo.jsx';
|
|
||||||
import CodexLogo from '../../CodexLogo.jsx';
|
|
||||||
import MessageComponent from '../messages/MessageComponent';
|
import MessageComponent from '../messages/MessageComponent';
|
||||||
import ProviderSelectionEmptyState from './ProviderSelectionEmptyState';
|
import ProviderSelectionEmptyState from './ProviderSelectionEmptyState';
|
||||||
import type { ChatMessage, Provider } from '../types';
|
import type { ChatMessage, Provider } from '../types';
|
||||||
@@ -55,13 +53,7 @@ function AssistantThinkingIndicator() {
|
|||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<div className="flex items-center space-x-3 mb-2">
|
<div className="flex items-center space-x-3 mb-2">
|
||||||
<div className="w-8 h-8 rounded-full flex items-center justify-center text-white text-sm flex-shrink-0 p-1 bg-transparent">
|
<div className="w-8 h-8 rounded-full flex items-center justify-center text-white text-sm flex-shrink-0 p-1 bg-transparent">
|
||||||
{selectedProvider === 'cursor' ? (
|
<SessionProviderLogo provider={selectedProvider} className="w-full h-full" />
|
||||||
<CursorLogo className="w-full h-full" />
|
|
||||||
) : selectedProvider === 'codex' ? (
|
|
||||||
<CodexLogo className="w-full h-full" />
|
|
||||||
) : (
|
|
||||||
<ClaudeLogo className="w-full h-full" />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
<div className="text-sm font-medium text-gray-900 dark:text-white">
|
<div className="text-sm font-medium text-gray-900 dark:text-white">
|
||||||
{selectedProvider === 'cursor' ? 'Cursor' : selectedProvider === 'codex' ? 'Codex' : 'Claude'}
|
{selectedProvider === 'cursor' ? 'Cursor' : selectedProvider === 'codex' ? 'Codex' : 'Claude'}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ClaudeLogo from '../../ClaudeLogo.jsx';
|
import SessionProviderLogo from '../../SessionProviderLogo';
|
||||||
import CursorLogo from '../../CursorLogo.jsx';
|
|
||||||
import CodexLogo from '../../CodexLogo.jsx';
|
|
||||||
import NextTaskBanner from '../../NextTaskBanner.jsx';
|
import NextTaskBanner from '../../NextTaskBanner.jsx';
|
||||||
import { CLAUDE_MODELS, CURSOR_MODELS, CODEX_MODELS } from '../../../../shared/modelConstants';
|
import { CLAUDE_MODELS, CURSOR_MODELS, CODEX_MODELS } from '../../../../shared/modelConstants';
|
||||||
import type { Provider } from '../types';
|
import type { Provider } from '../types';
|
||||||
@@ -68,7 +66,7 @@ export default function ProviderSelectionEmptyState({
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex flex-col items-center justify-center h-full gap-3">
|
<div className="flex flex-col items-center justify-center h-full gap-3">
|
||||||
<ClaudeLogo className="w-10 h-10" />
|
<SessionProviderLogo provider="claude" className="w-10 h-10" />
|
||||||
<div>
|
<div>
|
||||||
<p className="font-semibold text-gray-900 dark:text-white">Claude Code</p>
|
<p className="font-semibold text-gray-900 dark:text-white">Claude Code</p>
|
||||||
<p className="text-xs text-gray-500 dark:text-gray-400">{t('providerSelection.providerInfo.anthropic')}</p>
|
<p className="text-xs text-gray-500 dark:text-gray-400">{t('providerSelection.providerInfo.anthropic')}</p>
|
||||||
@@ -94,7 +92,7 @@ export default function ProviderSelectionEmptyState({
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex flex-col items-center justify-center h-full gap-3">
|
<div className="flex flex-col items-center justify-center h-full gap-3">
|
||||||
<CursorLogo className="w-10 h-10" />
|
<SessionProviderLogo provider="cursor" className="w-10 h-10" />
|
||||||
<div>
|
<div>
|
||||||
<p className="font-semibold text-gray-900 dark:text-white">Cursor</p>
|
<p className="font-semibold text-gray-900 dark:text-white">Cursor</p>
|
||||||
<p className="text-xs text-gray-500 dark:text-gray-400">{t('providerSelection.providerInfo.cursorEditor')}</p>
|
<p className="text-xs text-gray-500 dark:text-gray-400">{t('providerSelection.providerInfo.cursorEditor')}</p>
|
||||||
@@ -120,7 +118,7 @@ export default function ProviderSelectionEmptyState({
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex flex-col items-center justify-center h-full gap-3">
|
<div className="flex flex-col items-center justify-center h-full gap-3">
|
||||||
<CodexLogo className="w-10 h-10" />
|
<SessionProviderLogo provider="codex" className="w-10 h-10" />
|
||||||
<div>
|
<div>
|
||||||
<p className="font-semibold text-gray-900 dark:text-white">Codex</p>
|
<p className="font-semibold text-gray-900 dark:text-white">Codex</p>
|
||||||
<p className="text-xs text-gray-500 dark:text-gray-400">{t('providerSelection.providerInfo.openai')}</p>
|
<p className="text-xs text-gray-500 dark:text-gray-400">{t('providerSelection.providerInfo.openai')}</p>
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import ClaudeLogo from '../ClaudeLogo';
|
import SessionProviderLogo from '../SessionProviderLogo';
|
||||||
import CursorLogo from '../CursorLogo';
|
|
||||||
import type { AppTab, Project, ProjectSession } from '../../types/app';
|
import type { AppTab, Project, ProjectSession } from '../../types/app';
|
||||||
|
|
||||||
type MainContentTitleProps = {
|
type MainContentTitleProps = {
|
||||||
@@ -49,11 +48,7 @@ export default function MainContentTitle({
|
|||||||
<div className="min-w-0 flex items-center gap-2 flex-1 overflow-x-auto scrollbar-hide">
|
<div className="min-w-0 flex items-center gap-2 flex-1 overflow-x-auto scrollbar-hide">
|
||||||
{showSessionIcon && (
|
{showSessionIcon && (
|
||||||
<div className="w-5 h-5 flex-shrink-0 flex items-center justify-center">
|
<div className="w-5 h-5 flex-shrink-0 flex items-center justify-center">
|
||||||
{selectedSession?.__provider === 'cursor' ? (
|
<SessionProviderLogo provider={selectedSession?.__provider} className="w-4 h-4" />
|
||||||
<CursorLogo className="w-4 h-4" />
|
|
||||||
) : (
|
|
||||||
<ClaudeLogo className="w-4 h-4" />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,13 @@
|
|||||||
import { Button } from '../ui/button';
|
import { Button } from '../ui/button';
|
||||||
import { Badge } from '../ui/badge';
|
import { Badge } from '../ui/badge';
|
||||||
import { LogIn } from 'lucide-react';
|
import { LogIn } from 'lucide-react';
|
||||||
import ClaudeLogo from '../ClaudeLogo';
|
import SessionProviderLogo from '../SessionProviderLogo';
|
||||||
import CursorLogo from '../CursorLogo';
|
|
||||||
import CodexLogo from '../CodexLogo';
|
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
const agentConfig = {
|
const agentConfig = {
|
||||||
claude: {
|
claude: {
|
||||||
name: 'Claude',
|
name: 'Claude',
|
||||||
description: 'Anthropic Claude AI assistant',
|
description: 'Anthropic Claude AI assistant',
|
||||||
Logo: ClaudeLogo,
|
|
||||||
bgClass: 'bg-blue-50 dark:bg-blue-900/20',
|
bgClass: 'bg-blue-50 dark:bg-blue-900/20',
|
||||||
borderClass: 'border-blue-200 dark:border-blue-800',
|
borderClass: 'border-blue-200 dark:border-blue-800',
|
||||||
textClass: 'text-blue-900 dark:text-blue-100',
|
textClass: 'text-blue-900 dark:text-blue-100',
|
||||||
@@ -20,7 +17,6 @@ const agentConfig = {
|
|||||||
cursor: {
|
cursor: {
|
||||||
name: 'Cursor',
|
name: 'Cursor',
|
||||||
description: 'Cursor AI-powered code editor',
|
description: 'Cursor AI-powered code editor',
|
||||||
Logo: CursorLogo,
|
|
||||||
bgClass: 'bg-purple-50 dark:bg-purple-900/20',
|
bgClass: 'bg-purple-50 dark:bg-purple-900/20',
|
||||||
borderClass: 'border-purple-200 dark:border-purple-800',
|
borderClass: 'border-purple-200 dark:border-purple-800',
|
||||||
textClass: 'text-purple-900 dark:text-purple-100',
|
textClass: 'text-purple-900 dark:text-purple-100',
|
||||||
@@ -30,7 +26,6 @@ const agentConfig = {
|
|||||||
codex: {
|
codex: {
|
||||||
name: 'Codex',
|
name: 'Codex',
|
||||||
description: 'OpenAI Codex AI assistant',
|
description: 'OpenAI Codex AI assistant',
|
||||||
Logo: CodexLogo,
|
|
||||||
bgClass: 'bg-gray-100 dark:bg-gray-800/50',
|
bgClass: 'bg-gray-100 dark:bg-gray-800/50',
|
||||||
borderClass: 'border-gray-300 dark:border-gray-600',
|
borderClass: 'border-gray-300 dark:border-gray-600',
|
||||||
textClass: 'text-gray-900 dark:text-gray-100',
|
textClass: 'text-gray-900 dark:text-gray-100',
|
||||||
@@ -42,12 +37,11 @@ const agentConfig = {
|
|||||||
export default function AccountContent({ agent, authStatus, onLogin }) {
|
export default function AccountContent({ agent, authStatus, onLogin }) {
|
||||||
const { t } = useTranslation('settings');
|
const { t } = useTranslation('settings');
|
||||||
const config = agentConfig[agent];
|
const config = agentConfig[agent];
|
||||||
const { Logo } = config;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div className="flex items-center gap-3 mb-4">
|
<div className="flex items-center gap-3 mb-4">
|
||||||
<Logo className="w-6 h-6" />
|
<SessionProviderLogo provider={agent} className="w-6 h-6" />
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-lg font-medium text-foreground">{config.name}</h3>
|
<h3 className="text-lg font-medium text-foreground">{config.name}</h3>
|
||||||
<p className="text-sm text-muted-foreground">{t(`agents.account.${agent}.description`)}</p>
|
<p className="text-sm text-muted-foreground">{t(`agents.account.${agent}.description`)}</p>
|
||||||
|
|||||||
@@ -1,23 +1,18 @@
|
|||||||
import ClaudeLogo from '../ClaudeLogo';
|
import SessionProviderLogo from '../SessionProviderLogo';
|
||||||
import CursorLogo from '../CursorLogo';
|
|
||||||
import CodexLogo from '../CodexLogo';
|
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
const agentConfig = {
|
const agentConfig = {
|
||||||
claude: {
|
claude: {
|
||||||
name: 'Claude',
|
name: 'Claude',
|
||||||
color: 'blue',
|
color: 'blue',
|
||||||
Logo: ClaudeLogo,
|
|
||||||
},
|
},
|
||||||
cursor: {
|
cursor: {
|
||||||
name: 'Cursor',
|
name: 'Cursor',
|
||||||
color: 'purple',
|
color: 'purple',
|
||||||
Logo: CursorLogo,
|
|
||||||
},
|
},
|
||||||
codex: {
|
codex: {
|
||||||
name: 'Codex',
|
name: 'Codex',
|
||||||
color: 'gray',
|
color: 'gray',
|
||||||
Logo: CodexLogo,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -46,7 +41,6 @@ export default function AgentListItem({ agentId, authStatus, isSelected, onClick
|
|||||||
const { t } = useTranslation('settings');
|
const { t } = useTranslation('settings');
|
||||||
const config = agentConfig[agentId];
|
const config = agentConfig[agentId];
|
||||||
const colors = colorClasses[config.color];
|
const colors = colorClasses[config.color];
|
||||||
const { Logo } = config;
|
|
||||||
|
|
||||||
// Mobile: horizontal layout with bottom border
|
// Mobile: horizontal layout with bottom border
|
||||||
if (isMobile) {
|
if (isMobile) {
|
||||||
@@ -60,7 +54,7 @@ export default function AgentListItem({ agentId, authStatus, isSelected, onClick
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex flex-col items-center gap-1">
|
<div className="flex flex-col items-center gap-1">
|
||||||
<Logo className="w-5 h-5" />
|
<SessionProviderLogo provider={agentId} className="w-5 h-5" />
|
||||||
<span className="text-xs font-medium text-foreground">{config.name}</span>
|
<span className="text-xs font-medium text-foreground">{config.name}</span>
|
||||||
{authStatus?.authenticated && (
|
{authStatus?.authenticated && (
|
||||||
<span className={`w-1.5 h-1.5 rounded-full ${colors.dot}`} />
|
<span className={`w-1.5 h-1.5 rounded-full ${colors.dot}`} />
|
||||||
@@ -81,7 +75,7 @@ export default function AgentListItem({ agentId, authStatus, isSelected, onClick
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex items-center gap-2 mb-1">
|
<div className="flex items-center gap-2 mb-1">
|
||||||
<Logo className="w-4 h-4" />
|
<SessionProviderLogo provider={agentId} className="w-4 h-4" />
|
||||||
<span className="font-medium text-foreground">{config.name}</span>
|
<span className="font-medium text-foreground">{config.name}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-xs text-muted-foreground pl-6">
|
<div className="text-xs text-muted-foreground pl-6">
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
import type { SessionProvider } from '../../types/app';
|
|
||||||
import ClaudeLogo from '../ClaudeLogo';
|
|
||||||
import CodexLogo from '../CodexLogo';
|
|
||||||
import CursorLogo from '../CursorLogo';
|
|
||||||
|
|
||||||
type SessionProviderIconProps = {
|
|
||||||
provider: SessionProvider;
|
|
||||||
className: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function SessionProviderIcon({ provider, className }: SessionProviderIconProps) {
|
|
||||||
if (provider === 'cursor') {
|
|
||||||
return <CursorLogo className={className} />;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (provider === 'codex') {
|
|
||||||
return <CodexLogo className={className} />;
|
|
||||||
}
|
|
||||||
|
|
||||||
return <ClaudeLogo className={className} />;
|
|
||||||
}
|
|
||||||
@@ -7,7 +7,7 @@ import { formatTimeAgo } from '../../utils/dateUtils';
|
|||||||
import type { Project, ProjectSession, SessionProvider } from '../../types/app';
|
import type { Project, ProjectSession, SessionProvider } from '../../types/app';
|
||||||
import type { SessionWithProvider, TouchHandlerFactory } from './types';
|
import type { SessionWithProvider, TouchHandlerFactory } from './types';
|
||||||
import { createSessionViewModel } from './utils';
|
import { createSessionViewModel } from './utils';
|
||||||
import SessionProviderIcon from './SessionProviderIcon';
|
import SessionProviderLogo from '../SessionProviderLogo';
|
||||||
|
|
||||||
type SidebarSessionItemProps = {
|
type SidebarSessionItemProps = {
|
||||||
project: Project;
|
project: Project;
|
||||||
@@ -92,7 +92,7 @@ export default function SidebarSessionItem({
|
|||||||
isSelected ? 'bg-primary/10' : 'bg-muted/50',
|
isSelected ? 'bg-primary/10' : 'bg-muted/50',
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<SessionProviderIcon provider={session.__provider} className="w-3 h-3" />
|
<SessionProviderLogo provider={session.__provider} className="w-3 h-3" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
@@ -108,7 +108,7 @@ export default function SidebarSessionItem({
|
|||||||
</Badge>
|
</Badge>
|
||||||
)}
|
)}
|
||||||
<span className="ml-1 opacity-70">
|
<span className="ml-1 opacity-70">
|
||||||
<SessionProviderIcon provider={session.__provider} className="w-3 h-3" />
|
<SessionProviderLogo provider={session.__provider} className="w-3 h-3" />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -140,7 +140,7 @@ export default function SidebarSessionItem({
|
|||||||
onTouchEnd={touchHandlerFactory(() => onSessionSelect(session, project.name))}
|
onTouchEnd={touchHandlerFactory(() => onSessionSelect(session, project.name))}
|
||||||
>
|
>
|
||||||
<div className="flex items-start gap-2 min-w-0 w-full">
|
<div className="flex items-start gap-2 min-w-0 w-full">
|
||||||
<SessionProviderIcon provider={session.__provider} className="w-3 h-3 mt-0.5 flex-shrink-0" />
|
<SessionProviderLogo provider={session.__provider} className="w-3 h-3 mt-0.5 flex-shrink-0" />
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
<div className="text-xs font-medium truncate text-foreground">{sessionView.sessionName}</div>
|
<div className="text-xs font-medium truncate text-foreground">{sessionView.sessionName}</div>
|
||||||
<div className="flex items-center gap-1 mt-0.5">
|
<div className="flex items-center gap-1 mt-0.5">
|
||||||
@@ -157,7 +157,7 @@ export default function SidebarSessionItem({
|
|||||||
</Badge>
|
</Badge>
|
||||||
)}
|
)}
|
||||||
<span className="ml-1 opacity-70 group-hover:opacity-0 transition-opacity">
|
<span className="ml-1 opacity-70 group-hover:opacity-0 transition-opacity">
|
||||||
<SessionProviderIcon provider={session.__provider} className="w-3 h-3" />
|
<SessionProviderLogo provider={session.__provider} className="w-3 h-3" />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user