diff --git a/src/components/AIChat/assistant/AssistantInlineBar.vue b/src/components/AIChat/assistant/AssistantInlineBar.vue index 844bd558..eea57ec8 100644 --- a/src/components/AIChat/assistant/AssistantInlineBar.vue +++ b/src/components/AIChat/assistant/AssistantInlineBar.vue @@ -153,7 +153,7 @@ onUnmounted(() => { >
@@ -168,7 +168,7 @@ onUnmounted(() => { class="relative z-10 flex h-[32px] items-center justify-center whitespace-nowrap rounded-full px-4 text-[13px] font-medium transition-colors duration-200" :class="[ selectedId === assistant.id - ? 'text-primary-600 dark:text-primary-300' + ? 'text-primary-600 dark:text-primary-400' : 'text-gray-500 hover:bg-gray-200/50 hover:text-gray-800 dark:text-gray-400 dark:hover:bg-gray-700/50 dark:hover:text-gray-200', ]" @click="emit('select', assistant.id)" diff --git a/src/components/common/Sidebar.vue b/src/components/common/Sidebar.vue index 481c1c96..d896e8ce 100644 --- a/src/components/common/Sidebar.vue +++ b/src/components/common/Sidebar.vue @@ -187,16 +187,16 @@ function isPrivateChat(session: AnalysisSession): boolean { return session.type === 'private' } -// 获取会话头像显示文字:私聊取最后两字,群聊取前两字 +// 获取会话头像显示文字:私聊取最后一字,群聊取前一字 function getSessionAvatarText(session: AnalysisSession): string { const name = session.name || '' if (!name) return '?' if (isPrivateChat(session)) { - // 私聊:取最后两个字 - return name.length <= 2 ? name : name.slice(-2) + // 私聊:取最后一个字 + return name.slice(-1) } else { - // 群聊:取前两个字 - return name.length <= 2 ? name : name.slice(0, 2) + // 群聊:取第一个字 + return name.slice(0, 1) } } @@ -207,6 +207,32 @@ function getSessionAvatar(session: AnalysisSession): string | null { } return session.groupAvatar || null } + +// 根据会话 ID 生成雅致的莫兰迪色系头像背景和文字颜色(中文注释) +function getAvatarColorClass(session: AnalysisSession, isActive: boolean) { + if (isActive) { + return isPrivateChat(session) + ? 'bg-pink-500 text-white dark:bg-pink-600' + : 'bg-primary-600 text-white dark:bg-primary-500' + } + + // 雅致的低饱和度配色方案,提升侧边栏的简洁感与品质感(中文注释) + const palettes = [ + { bg: 'bg-pink-50 dark:bg-pink-950/20', text: 'text-pink-600 dark:text-pink-400' }, + { bg: 'bg-blue-50 dark:bg-blue-950/20', text: 'text-blue-600 dark:text-blue-400' }, + { bg: 'bg-emerald-50 dark:bg-emerald-950/20', text: 'text-emerald-600 dark:text-emerald-400' }, + { bg: 'bg-purple-50 dark:bg-purple-950/20', text: 'text-purple-600 dark:text-purple-400' }, + { bg: 'bg-amber-50 dark:bg-amber-950/20', text: 'text-amber-600 dark:text-amber-400' }, + ] + + const idStr = session.id || '' + let hash = 0 + for (let i = 0; i < idStr.length; i++) { + hash = idStr.charCodeAt(i) + ((hash << 5) - hash) + } + const index = Math.abs(hash) % palettes.length + return `${palettes[index].bg} ${palettes[index].text}` +} @@ -228,7 +254,8 @@ function getSessionAvatar(session: AnalysisSession): string | null { v{{ version }} -+
{{ session.name }}
+
{{ t('layout.sessionInfo', { count: session.messageCount }) }}