fix: emoji icon empty

This commit is contained in:
kangfenmao 2025-04-14 10:43:39 +08:00
parent 81538a5446
commit ffc8a33ccf
3 changed files with 36 additions and 20 deletions

View File

@ -1,7 +1,24 @@
import { getLeadingEmoji } from '@renderer/utils' import { getLeadingEmoji } from '@renderer/utils'
import { FC } from 'react'
import styled from 'styled-components' import styled from 'styled-components'
const EmojiIcon = styled.div<{ $emoji: string }>` interface EmojiIconProps {
emoji: string
className?: string
}
const EmojiIcon: FC<EmojiIconProps> = ({ emoji, className }) => {
const _emoji = getLeadingEmoji(emoji || '⭐️') || '⭐️'
return (
<Container className={className}>
<EmojiBackground>{_emoji}</EmojiBackground>
{_emoji}
</Container>
)
}
const Container = styled.div`
width: 26px; width: 26px;
height: 26px; height: 26px;
border-radius: 13px; border-radius: 13px;
@ -13,10 +30,11 @@ const EmojiIcon = styled.div<{ $emoji: string }>`
position: relative; position: relative;
overflow: hidden; overflow: hidden;
margin-right: 3px; margin-right: 3px;
&:before { `
const EmojiBackground = styled.div`
width: 100%; width: 100%;
height: 100%; height: 100%;
content: ${({ $emoji }) => `'${getLeadingEmoji($emoji || ' ')}'`};
position: absolute; position: absolute;
inset: 0; inset: 0;
display: flex; display: flex;
@ -26,7 +44,6 @@ const EmojiIcon = styled.div<{ $emoji: string }>`
transform: scale(1.5); transform: scale(1.5);
filter: blur(5px); filter: blur(5px);
opacity: 0.4; opacity: 0.4;
}
` `
export default EmojiIcon export default EmojiIcon

View File

@ -188,7 +188,7 @@ const PopupContainer: React.FC<Props> = ({ resolve }) => {
className={`agent-item ${agent.id === 'default' ? 'default' : ''} ${index === selectedIndex ? 'keyboard-selected' : ''}`} className={`agent-item ${agent.id === 'default' ? 'default' : ''} ${index === selectedIndex ? 'keyboard-selected' : ''}`}
onMouseEnter={() => setSelectedIndex(index)}> onMouseEnter={() => setSelectedIndex(index)}>
<HStack alignItems="center" gap={5} style={{ overflow: 'hidden', maxWidth: '100%' }}> <HStack alignItems="center" gap={5} style={{ overflow: 'hidden', maxWidth: '100%' }}>
<EmojiIcon $emoji={agent.emoji || ''}>{agent.emoji}</EmojiIcon> <EmojiIcon emoji={agent.emoji || ''} />
<span className="text-nowrap">{agent.name}</span> <span className="text-nowrap">{agent.name}</span>
</HStack> </HStack>
{agent.id === 'default' && <Tag color="green">{t('agents.tag.system')}</Tag>} {agent.id === 'default' && <Tag color="green">{t('agents.tag.system')}</Tag>}

View File

@ -217,10 +217,9 @@ const AssistantItem: FC<AssistantItemProps> = ({ assistant, isActive, onSwitch,
) : ( ) : (
assistantIconType === 'emoji' && ( assistantIconType === 'emoji' && (
<EmojiIcon <EmojiIcon
$emoji={assistant.emoji || assistantName.slice(0, 1)} emoji={assistant.emoji || assistantName.slice(0, 1)}
className={isPending && !isActive ? 'animation-pulse' : ''}> className={isPending && !isActive ? 'animation-pulse' : ''}
{assistant.emoji || assistantName.slice(0, 1)} />
</EmojiIcon>
) )
)} )}
<AssistantName className="text-nowrap">{assistantName}</AssistantName> <AssistantName className="text-nowrap">{assistantName}</AssistantName>