ui: 模型选择栏布局重设计
- 新增渐变图标指示器 - select 更大圆角 + 更粗边框 + hover/focus 渐变高亮 - 能力标签改为独立彩色 pill(Think 紫色、Vision 青色) - 箭头图标改为青色 - model-bar.js 适配新 badge 元素
This commit is contained in:
+10
-18
@@ -6,14 +6,15 @@
|
||||
import { state, KEYS } from '../state.js';
|
||||
import { formatSize } from '../utils.js';
|
||||
|
||||
let modelSelectEl, modelInfoBadgeEl, thinkCheckbox, thinkWrap;
|
||||
let modelSelectEl, badgeThinkEl, badgeVisionEl, thinkCheckbox, thinkWrap;
|
||||
|
||||
/** 缓存模型能力 { modelName: { think: bool, vision: bool } } */
|
||||
const modelCapabilityCache = new Map();
|
||||
|
||||
export function initModelBar() {
|
||||
modelSelectEl = document.querySelector('#modelSelect');
|
||||
modelInfoBadgeEl = document.querySelector('#modelInfoBadge');
|
||||
badgeThinkEl = document.querySelector('#badgeThink');
|
||||
badgeVisionEl = document.querySelector('#badgeVision');
|
||||
thinkCheckbox = document.querySelector('#toggleThink');
|
||||
thinkWrap = document.querySelector('#thinkToggleWrap');
|
||||
|
||||
@@ -25,7 +26,8 @@ export function initModelBar() {
|
||||
await checkModelCapability(model);
|
||||
} else {
|
||||
setThinkAvailable(false);
|
||||
setModelBadge('');
|
||||
badgeThinkEl.style.display = 'none';
|
||||
badgeVisionEl.style.display = 'none';
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -45,7 +47,7 @@ export async function loadModels() {
|
||||
|
||||
if (!data.models || data.models.length === 0) {
|
||||
modelSelectEl.innerHTML = '<option value="">未安装任何模型</option>';
|
||||
setModelBadge('');
|
||||
badgeThinkEl.style.display = 'none'; badgeVisionEl.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -74,7 +76,7 @@ export async function loadModels() {
|
||||
} catch (err) {
|
||||
console.error('[ModelBar] 加载模型失败:', err);
|
||||
modelSelectEl.innerHTML = '<option value="">加载失败 - 检查连接</option>';
|
||||
setModelBadge('');
|
||||
badgeThinkEl.style.display = 'none'; badgeVisionEl.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,11 +118,9 @@ async function checkModelCapability(modelName) {
|
||||
function applyCapability(modelName, caps) {
|
||||
setThinkAvailable(caps.think);
|
||||
|
||||
// 更新信息标签
|
||||
const tags = [];
|
||||
if (caps.think) tags.push('🧠 Think');
|
||||
if (caps.vision) tags.push('👁️ Vision');
|
||||
setModelBadge(tags.join(' '));
|
||||
// 更新能力标签
|
||||
badgeThinkEl.style.display = caps.think ? '' : 'none';
|
||||
badgeVisionEl.style.display = caps.vision ? '' : 'none';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -139,14 +139,6 @@ function setThinkAvailable(available) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新模型信息标签
|
||||
*/
|
||||
function setModelBadge(text) {
|
||||
modelInfoBadgeEl.textContent = text;
|
||||
modelInfoBadgeEl.style.display = text ? '' : 'none';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前选择的模型
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user