feat: 初始化画个标仓库 - AI驱动设计系统(BYOK模式) - 224源/371504图标+25海报源+130技能
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
// 甄房换肤 · Electron 桌面外壳 + docs 独立工具页
|
||||
// 注意:这些文件是「深色外壳」上下文,同一个旧色在这里的含义与 WEB 不同 ——
|
||||
// 例如 #FFB31A 在 WEB 是警告色(→ #E76500),在外壳里是「品牌浅色」(→ #4D9BF6),
|
||||
// 所以不能复用 WEB 的映射表,必须单独一套。
|
||||
// 用法: node _design-test/apply-electron-colors.js (预演)
|
||||
// node _design-test/apply-electron-colors.js --write (真写)
|
||||
const fs = require('fs');
|
||||
|
||||
const WRITE = process.argv.includes('--write');
|
||||
const ZF = 'e:/KF_7/ZhenOS-ZF';
|
||||
|
||||
const FILES = [
|
||||
`${ZF}/xiaohuju/resources/splash/splash.html`,
|
||||
`${ZF}/xiaohuju/resources/offline/offline.html`,
|
||||
`${ZF}/xiaohuju/resources/blocked/blocked.html`,
|
||||
`${ZF}/xiaohuju/src/common/constants.js`,
|
||||
`${ZF}/xiaohuju/src/preload/titlebar.js`,
|
||||
`${ZF}/docs/财务策算测算器-v2.html`,
|
||||
`${ZF}/docs/财务策算测算器.html`
|
||||
];
|
||||
|
||||
// 十六进制(大小写不敏感)
|
||||
const HEX = [
|
||||
['#ff822d', '#0070F2'], // blocked.html 里的品牌亮色
|
||||
['#ff7a1a', '#0070F2'], // 品牌亮色 → 交互蓝
|
||||
['#ff9a4d', '#4D9BF6'],
|
||||
['#ff8a3d', '#4D9BF6'],
|
||||
['#ffb31a', '#4D9BF6'], // 外壳里的「品牌浅色」→ 浅蓝(非警告橙)
|
||||
['#ffc48a', '#A6CFFF'],
|
||||
['#1a130d', '#071527'], // 最深底 → 甄房最深墨蓝
|
||||
['#2e241a', '#0C2340'],
|
||||
['#241c14', '#0A1D35'], // 标题栏底
|
||||
['#33281d', '#0C2340'],
|
||||
['#f1e4d2', '#EAF0F6'], // 标题栏符号(暖白 → 冷白)
|
||||
['#f6ead8', '#F0F4F8'],
|
||||
['#2a2118', '#131E29'],
|
||||
['#3a322a', '#556B82'],
|
||||
['#756a5e', '#5F7590'],
|
||||
['#d9481c', '#AA0808'],
|
||||
['#2e9e5b', '#256F3A'],
|
||||
['#ffb31a', '#4D9BF6']
|
||||
];
|
||||
|
||||
// rgb()/rgba() 三元组(保留 rgb/rgba 前缀与后面的 alpha)
|
||||
const RGB = [
|
||||
[/255,\s*122,\s*26/g, '0, 112, 242'],
|
||||
[/255,\s*130,\s*45/g, '0, 112, 242'],
|
||||
[/255,\s*179,\s*26/g, '77, 155, 246'],
|
||||
[/241,\s*228,\s*210/g, '240, 244, 248'], // 暖白带透明
|
||||
[/58,\s*50,\s*42/g, '12, 35, 64'],
|
||||
[/26,\s*19,\s*13/g, '7, 21, 39'],
|
||||
[/42,\s*33,\s*24/g, '19, 30, 41'],
|
||||
[/51,\s*40,\s*29/g, '12, 35, 64']
|
||||
];
|
||||
|
||||
let grand = 0, touched = 0;
|
||||
for (const f of FILES) {
|
||||
if (!fs.existsSync(f)) { console.log(' 跳过(不存在): ' + f.split('/').pop()); continue; }
|
||||
let txt = fs.readFileSync(f, 'utf8');
|
||||
const orig = txt;
|
||||
const hits = [];
|
||||
for (const [from, to] of HEX) {
|
||||
const re = new RegExp(from, 'gi');
|
||||
const n = (txt.match(re) || []).length;
|
||||
if (n) { txt = txt.replace(re, to); hits.push(from + '→' + to + ' ×' + n); grand += n; }
|
||||
}
|
||||
for (const [re, to] of RGB) {
|
||||
const n = (txt.match(re) || []).length;
|
||||
if (n) { txt = txt.replace(re, to); hits.push('rgb元组 ×' + n); grand += n; }
|
||||
}
|
||||
if (txt !== orig) { touched++; console.log(' ' + f.replace(ZF + '/', '') + '\n ' + hits.join(' ')); }
|
||||
if (WRITE && txt !== orig) fs.writeFileSync(f, txt);
|
||||
}
|
||||
console.log('\n涉及 ' + touched + ' 个文件 / 替换 ' + grand + ' 处 ' + (WRITE ? '(已写入)' : '(预演,加 --write 生效)'));
|
||||
Reference in New Issue
Block a user