mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-05 22:03:36 +08:00
- 整体布局:按新版 UI 重构左侧导航、对象树、连接分组和右键菜单体系 - 数据视图:优化 DDL 侧栏、横向滚动、筛选输入、编辑入口和虚拟表格体验 - AI 面板:重构新版入口、输入区、模型选择、快捷键和悬浮布局 - 标签与快捷键:补齐 Tab 悬浮信息、复制交互和 Mac/Windows 快捷键配置 - 工程质量:新增 v2 主题样式、菜单组件、外观工具和回归测试覆盖
109 lines
3.7 KiB
TypeScript
109 lines
3.7 KiB
TypeScript
export type DriverManagerWorkbenchTheme = {
|
|
isDark: boolean;
|
|
pageBg: string;
|
|
sectionBg: string;
|
|
sectionBorder: string;
|
|
cardBg: string;
|
|
cardBorder: string;
|
|
cardWarningBorder: string;
|
|
cardReadyBorder: string;
|
|
statBg: string;
|
|
statBorder: string;
|
|
updateNoteBg: string;
|
|
updateNoteBorder: string;
|
|
mutedText: string;
|
|
titleText: string;
|
|
warningText: string;
|
|
};
|
|
|
|
/** v2 = body[data-ui-version="v2"],由 App.tsx 切换。 */
|
|
const isV2 = (): boolean => {
|
|
if (typeof document === 'undefined' || !document.body) return false;
|
|
return document.body.getAttribute('data-ui-version') === 'v2';
|
|
};
|
|
|
|
export const buildDriverManagerWorkbenchTheme = (darkMode: boolean, _opacity: number): DriverManagerWorkbenchTheme => {
|
|
// ─── v2 palette ──────────────────────────────────────────────
|
|
if (isV2()) {
|
|
if (darkMode) {
|
|
return {
|
|
isDark: true,
|
|
pageBg: '#161a21',
|
|
sectionBg: '#1b1f27',
|
|
sectionBorder: '0.5px solid rgba(255,255,255,0.06)',
|
|
cardBg: '#161a21',
|
|
cardBorder: '0.5px solid rgba(255,255,255,0.10)',
|
|
cardWarningBorder: '0.5px solid rgba(245, 158, 11, 0.36)',
|
|
cardReadyBorder: '0.5px solid rgba(34, 197, 94, 0.36)',
|
|
statBg: '#1b1f27',
|
|
statBorder: '0.5px solid rgba(255,255,255,0.06)',
|
|
updateNoteBg: 'rgba(245, 158, 11, 0.10)',
|
|
updateNoteBorder: '0.5px solid rgba(245, 158, 11, 0.30)',
|
|
mutedText: '#80868f',
|
|
titleText: '#f1f3f5',
|
|
warningText: '#f59e0b',
|
|
};
|
|
}
|
|
return {
|
|
isDark: false,
|
|
pageBg: '#ffffff',
|
|
sectionBg: '#fafaf8',
|
|
sectionBorder: '0.5px solid rgba(15,23,42,0.08)',
|
|
cardBg: '#ffffff',
|
|
cardBorder: '0.5px solid rgba(15,23,42,0.12)',
|
|
cardWarningBorder: '0.5px solid rgba(217, 119, 6, 0.32)',
|
|
cardReadyBorder: '0.5px solid rgba(22, 163, 74, 0.28)',
|
|
statBg: '#fafaf8',
|
|
statBorder: '0.5px solid rgba(15,23,42,0.08)',
|
|
updateNoteBg: 'rgba(217, 119, 6, 0.08)',
|
|
updateNoteBorder: '0.5px solid rgba(217, 119, 6, 0.24)',
|
|
mutedText: '#6b7280',
|
|
titleText: '#0c1322',
|
|
warningText: '#d97706',
|
|
};
|
|
}
|
|
|
|
// ─── legacy palette ──────────────────────────────────────────
|
|
if (darkMode) {
|
|
const darkSurface = 'rgb(31, 31, 31)';
|
|
|
|
return {
|
|
isDark: true,
|
|
pageBg: darkSurface,
|
|
sectionBg: darkSurface,
|
|
sectionBorder: '1px solid rgba(255, 255, 255, 0.08)',
|
|
cardBg: darkSurface,
|
|
cardBorder: '1px solid rgba(255, 255, 255, 0.08)',
|
|
cardWarningBorder: '1px solid rgba(250, 173, 20, 0.35)',
|
|
cardReadyBorder: '1px solid rgba(82, 196, 26, 0.22)',
|
|
statBg: darkSurface,
|
|
statBorder: '1px solid rgba(255, 255, 255, 0.08)',
|
|
updateNoteBg: darkSurface,
|
|
updateNoteBorder: '1px solid rgba(250, 173, 20, 0.24)',
|
|
mutedText: 'rgba(255, 255, 255, 0.62)',
|
|
titleText: '#f5f7ff',
|
|
warningText: '#f6c453',
|
|
};
|
|
}
|
|
|
|
const lightSurface = 'rgb(255, 255, 255)';
|
|
|
|
return {
|
|
isDark: false,
|
|
pageBg: lightSurface,
|
|
sectionBg: lightSurface,
|
|
sectionBorder: '1px solid rgba(5, 5, 5, 0.08)',
|
|
cardBg: lightSurface,
|
|
cardBorder: '1px solid rgba(5, 5, 5, 0.08)',
|
|
cardWarningBorder: '1px solid rgba(250, 173, 20, 0.35)',
|
|
cardReadyBorder: '1px solid rgba(82, 196, 26, 0.22)',
|
|
statBg: lightSurface,
|
|
statBorder: '1px solid rgba(5, 5, 5, 0.08)',
|
|
updateNoteBg: lightSurface,
|
|
updateNoteBorder: '1px solid rgba(250, 173, 20, 0.24)',
|
|
mutedText: 'rgba(5, 5, 5, 0.62)',
|
|
titleText: 'rgba(5, 5, 5, 0.92)',
|
|
warningText: '#d48806',
|
|
};
|
|
};
|