diff --git a/src/renderer/src/assets/images/providers/aihubmix.jpg b/src/renderer/src/assets/images/providers/aihubmix.jpg deleted file mode 100644 index ba96e631..00000000 Binary files a/src/renderer/src/assets/images/providers/aihubmix.jpg and /dev/null differ diff --git a/src/renderer/src/assets/images/providers/aihubmix.webp b/src/renderer/src/assets/images/providers/aihubmix.webp new file mode 100644 index 00000000..6201815c Binary files /dev/null and b/src/renderer/src/assets/images/providers/aihubmix.webp differ diff --git a/src/renderer/src/assets/styles/ant.scss b/src/renderer/src/assets/styles/ant.scss index a598bb60..4853d903 100644 --- a/src/renderer/src/assets/styles/ant.scss +++ b/src/renderer/src/assets/styles/ant.scss @@ -199,3 +199,11 @@ overflow-y: auto; overflow-x: hidden; } + +.ant-collapse { + border: 1px solid var(--color-border); +} + +.ant-collapse-content { + border-top: 1px solid var(--color-border) !important; +} diff --git a/src/renderer/src/assets/styles/index.scss b/src/renderer/src/assets/styles/index.scss index 6be8133f..84aadd1d 100644 --- a/src/renderer/src/assets/styles/index.scss +++ b/src/renderer/src/assets/styles/index.scss @@ -40,7 +40,7 @@ --color-border-soft: #ffffff10; --color-border-mute: #ffffff05; --color-error: #f44336; - --color-link: #1677ff; + --color-link: #338cff; --color-code-background: #323232; --color-hover: rgba(40, 40, 40, 1); --color-active: rgba(55, 55, 55, 1); diff --git a/src/renderer/src/components/CustomCollapse.tsx b/src/renderer/src/components/CustomCollapse.tsx index 259e259d..c02f45c6 100644 --- a/src/renderer/src/components/CustomCollapse.tsx +++ b/src/renderer/src/components/CustomCollapse.tsx @@ -44,7 +44,7 @@ const CustomCollapse: FC = ({ borderTopRightRadius: '8px' }, body: { - borderTop: '0.5px solid var(--color-border)' + borderTop: 'none' } } diff --git a/src/renderer/src/components/EmojiIcon.tsx b/src/renderer/src/components/EmojiIcon.tsx new file mode 100644 index 00000000..71804be8 --- /dev/null +++ b/src/renderer/src/components/EmojiIcon.tsx @@ -0,0 +1,32 @@ +import { getLeadingEmoji } from '@renderer/utils' +import styled from 'styled-components' + +const EmojiIcon = styled.div<{ $emoji: string }>` + width: 26px; + height: 26px; + border-radius: 13px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + font-size: 15px; + position: relative; + overflow: hidden; + margin-right: 3px; + &:before { + width: 100%; + height: 100%; + content: ${({ $emoji }) => `'${getLeadingEmoji($emoji || ' ')}'`}; + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 200%; + transform: scale(1.5); + filter: blur(5px); + opacity: 0.4; + } +` + +export default EmojiIcon diff --git a/src/renderer/src/components/Icons/VisionIcon.tsx b/src/renderer/src/components/Icons/VisionIcon.tsx index e95608d9..4ab4c408 100644 --- a/src/renderer/src/components/Icons/VisionIcon.tsx +++ b/src/renderer/src/components/Icons/VisionIcon.tsx @@ -1,5 +1,5 @@ -import { EyeOutlined } from '@ant-design/icons' import { Tooltip } from 'antd' +import { ImageIcon } from 'lucide-react' import React, { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -10,7 +10,7 @@ const VisionIcon: FC, return ( - + ) @@ -22,9 +22,8 @@ const Container = styled.div` align-items: center; ` -const Icon = styled(EyeOutlined)` +const Icon = styled(ImageIcon)` color: var(--color-primary); - font-size: 15px; margin-right: 6px; ` diff --git a/src/renderer/src/components/Popups/AddAssistantPopup.tsx b/src/renderer/src/components/Popups/AddAssistantPopup.tsx index b091e832..77edaacb 100644 --- a/src/renderer/src/components/Popups/AddAssistantPopup.tsx +++ b/src/renderer/src/components/Popups/AddAssistantPopup.tsx @@ -13,6 +13,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' +import EmojiIcon from '../EmojiIcon' import { HStack } from '../Layout' import Scrollbar from '../Scrollbar' @@ -186,12 +187,9 @@ const PopupContainer: React.FC = ({ resolve }) => { onClick={() => onCreateAssistant(agent)} className={`agent-item ${agent.id === 'default' ? 'default' : ''} ${index === selectedIndex ? 'keyboard-selected' : ''}`} onMouseEnter={() => setSelectedIndex(index)}> - - {agent.emoji} {agent.name} + + {agent.emoji} + {agent.name} {agent.id === 'default' && {t('agents.tag.system')}} {agent.type === 'agent' && {t('agents.tag.agent')}} @@ -220,13 +218,11 @@ const AgentItem = styled.div` margin-bottom: 8px; cursor: pointer; overflow: hidden; - border: 1px solid transparent; &.default { background-color: var(--color-background-mute); } &.keyboard-selected { background-color: var(--color-background-mute); - border: 1px solid var(--color-primary); } .anticon { font-size: 16px; diff --git a/src/renderer/src/components/app/Sidebar.tsx b/src/renderer/src/components/app/Sidebar.tsx index 2093e484..198e49a4 100644 --- a/src/renderer/src/components/app/Sidebar.tsx +++ b/src/renderer/src/components/app/Sidebar.tsx @@ -12,15 +12,15 @@ import type { MenuProps } from 'antd' import { Avatar, Dropdown, Tooltip } from 'antd' import { CircleHelp, + FileSearch, Folder, Languages, LayoutGrid, - LibraryBig, MessageSquareQuote, Moon, Palette, Settings, - Sparkles, + Sparkle, Sun } from 'lucide-react' import { FC, useEffect } from 'react' @@ -131,11 +131,11 @@ const MainMenus: FC = () => { const iconMap = { assistants: , - agents: , + agents: , paintings: , translate: , minapp: , - knowledge: , + knowledge: , files: } diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 54d9f9c4..f90de198 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -1,7 +1,7 @@ import ZhinaoProviderLogo from '@renderer/assets/images/models/360.png' import HunyuanProviderLogo from '@renderer/assets/images/models/hunyuan.png' import AzureProviderLogo from '@renderer/assets/images/models/microsoft.png' -import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg' +import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.webp' import AlayaNewProviderLogo from '@renderer/assets/images/providers/alayanew.webp' import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.png' import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' diff --git a/src/renderer/src/context/AntdProvider.tsx b/src/renderer/src/context/AntdProvider.tsx index 93dcbf2c..094144d8 100644 --- a/src/renderer/src/context/AntdProvider.tsx +++ b/src/renderer/src/context/AntdProvider.tsx @@ -33,11 +33,10 @@ const AntdProvider: FC = ({ children }) => { boxShadowSecondary: 'none', defaultShadow: 'none', dangerShadow: 'none', - primaryShadow: 'none', - borderRadius: 20 + primaryShadow: 'none' }, - Select: { - borderRadius: 20 + Collapse: { + headerBg: 'transparent' } }, token: { diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 51c0c4e1..0088d842 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -33,7 +33,7 @@ }, "assistants": { "title": "Assistants", - "abbr": "Assistant", + "abbr": "Assistants", "settings.title": "Assistant Settings", "clear.content": "Clearing the topic will delete all topics and files in the assistant. Are you sure you want to continue?", "clear.title": "Clear topics", diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 00d6cb75..93d31e1a 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -932,7 +932,7 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = - + = ({ ref, selectedBases, onSelect, disabled return ( - + ) diff --git a/src/renderer/src/pages/home/Messages/CitationsList.tsx b/src/renderer/src/pages/home/Messages/CitationsList.tsx index 90926220..75f87ebe 100644 --- a/src/renderer/src/pages/home/Messages/CitationsList.tsx +++ b/src/renderer/src/pages/home/Messages/CitationsList.tsx @@ -34,7 +34,7 @@ const CitationsList: React.FC = ({ citations }) => { {citation.showFavicon && citation.url && ( )} - + {citation.title ? citation.title : {citation.hostname}} diff --git a/src/renderer/src/pages/home/Messages/MessageTools.tsx b/src/renderer/src/pages/home/Messages/MessageTools.tsx index dcc65c63..23cd0036 100644 --- a/src/renderer/src/pages/home/Messages/MessageTools.tsx +++ b/src/renderer/src/pages/home/Messages/MessageTools.tsx @@ -263,7 +263,7 @@ const ToolResponseContainer = styled.div` padding: 12px 16px; overflow: auto; max-height: 300px; - border-top: 1px solid var(--color-border); + border-top: none; position: relative; ` diff --git a/src/renderer/src/pages/home/Messages/Prompt.tsx b/src/renderer/src/pages/home/Messages/Prompt.tsx index 5a5c678a..4de68092 100644 --- a/src/renderer/src/pages/home/Messages/Prompt.tsx +++ b/src/renderer/src/pages/home/Messages/Prompt.tsx @@ -32,10 +32,9 @@ const Prompt: FC = ({ assistant, topic }) => { const Container = styled.div<{ $isDark: boolean }>` padding: 10px 20px; margin: 5px 20px 0 20px; - border-radius: 6px; + border-radius: 10px; cursor: pointer; - border: 0.5px solid var(--color-border); - background-color: ${({ $isDark }) => ($isDark ? 'var(--color-background-opacity)' : 'transparent')}; + border: 1px solid var(--color-border); ` const Text = styled.div` diff --git a/src/renderer/src/pages/home/Tabs/AssistantItem.tsx b/src/renderer/src/pages/home/Tabs/AssistantItem.tsx index 79eb7755..35d61e00 100644 --- a/src/renderer/src/pages/home/Tabs/AssistantItem.tsx +++ b/src/renderer/src/pages/home/Tabs/AssistantItem.tsx @@ -8,6 +8,7 @@ import { SortDescendingOutlined } from '@ant-design/icons' import ModelAvatar from '@renderer/components/Avatar/ModelAvatar' +import EmojiIcon from '@renderer/components/EmojiIcon' import CopyIcon from '@renderer/components/Icons/CopyIcon' import { useAssistant } from '@renderer/hooks/useAssistant' import { useAssistants } from '@renderer/hooks/useAssistant' @@ -215,11 +216,11 @@ const AssistantItem: FC = ({ assistant, isActive, onSwitch, /> ) : ( assistantIconType === 'emoji' && ( - {assistant.emoji || assistantName.slice(0, 1)} - + ) )} {assistantName} @@ -270,34 +271,6 @@ const AssistantNameRow = styled.div` gap: 8px; ` -const AssistantEmoji = styled.div<{ $emoji: string }>` - width: 26px; - height: 26px; - border-radius: 13px; - display: flex; - align-items: center; - justify-content: center; - flex-shrink: 0; - font-size: 15px; - position: relative; - overflow: hidden; - margin-right: 3px; - &:before { - width: 100%; - height: 100%; - content: ${({ $emoji }) => `'${$emoji || ' '}'`}; - position: absolute; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - font-size: 200%; - transform: scale(1.5); - filter: blur(5px); - opacity: 0.4; - } -` - const AssistantName = styled.div` font-size: 13px; ` diff --git a/src/renderer/src/pages/home/Tabs/index.tsx b/src/renderer/src/pages/home/Tabs/index.tsx index 1da312a7..06ad4516 100644 --- a/src/renderer/src/pages/home/Tabs/index.tsx +++ b/src/renderer/src/pages/home/Tabs/index.tsx @@ -184,6 +184,9 @@ const Segmented = styled(AntSegmented)` font-size: 13px; height: 100%; } + .ant-segmented-item-label[aria-selected='true'] { + color: var(--color-text); + } .iconfont { font-size: 13px; margin-left: -2px; @@ -204,6 +207,11 @@ const Segmented = styled(AntSegmented)` border-radius: var(--list-item-border-radius); box-shadow: none; } + .ant-segmented-item-label, + .ant-segmented-item-icon { + display: flex; + align-items: center; + } /* These styles ensure the same appearance as before */ border-radius: 0; box-shadow: none; diff --git a/src/renderer/src/pages/home/components/SelectModelButton.tsx b/src/renderer/src/pages/home/components/SelectModelButton.tsx index 8c629a26..ce05c18e 100644 --- a/src/renderer/src/pages/home/components/SelectModelButton.tsx +++ b/src/renderer/src/pages/home/components/SelectModelButton.tsx @@ -1,5 +1,4 @@ import ModelAvatar from '@renderer/components/Avatar/ModelAvatar' -import ModelTags from '@renderer/components/ModelTags' import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup' import { isLocalAi } from '@renderer/config/env' import { useAssistant } from '@renderer/hooks/useAssistant' @@ -33,13 +32,12 @@ const SelectModelButton: FC = ({ assistant }) => { const providerName = getProviderName(model?.provider) return ( - + {model ? model.name : t('button.select_model')} {providerName ? '| ' + providerName : ''} - ) diff --git a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx index afe1b831..cf3711c4 100644 --- a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx @@ -13,7 +13,7 @@ import { formatFileSize } from '@renderer/utils' import { bookExts, documentExts, textExts, thirdPartyApplicationExts } from '@shared/config/constant' import { Alert, Button, Dropdown, Empty, message, Tag, Tooltip, Upload } from 'antd' import dayjs from 'dayjs' -import { ChevronsDown, ChevronsUp, Plus, Search, Settings2 } from 'lucide-react' +import { ChevronsDown, ChevronsUp, Plus, Settings2 } from 'lucide-react' import VirtualList from 'rc-virtual-list' import { FC, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -21,7 +21,6 @@ import styled from 'styled-components' import CustomCollapse from '../../components/CustomCollapse' import FileItem from '../files/FileItem' -import KnowledgeSearchPopup from './components/KnowledgeSearchPopup' import KnowledgeSettingsPopup from './components/KnowledgeSettingsPopup' import StatusIcon from './components/StatusIcon' @@ -58,7 +57,6 @@ const KnowledgeContent: FC = ({ selectedBase }) => { } = useKnowledge(selectedBase.id || '') const providerName = getProviderName(base?.model.provider || '') - const rerankModelProviderName = getProviderName(base?.rerankModel?.provider || '') const disabled = !base?.version || !providerName if (!base) { @@ -239,7 +237,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => {
- + {base.model.name}
@@ -248,30 +246,8 @@ const KnowledgeContent: FC = ({ selectedBase }) => { {t('models.dimensions', { dimensions: base.dimensions || 0 })} - {base.rerankModel && ( -
-
- -
- -
- - {base.rerankModel?.name} - -
-
-
- )} -