import fs from 'fs/promises'; import path from 'path'; async function walk(dir) { const files = await fs.readdir(dir, { withFileTypes: true }); let results = []; for (const file of files) { const res = path.resolve(dir, file.name); if (file.isDirectory()) { results = results.concat(await walk(res)); } else if (file.name.endsWith('.vue')) { results.push(res); } } return results; } async function fixColors() { const dirs = [path.resolve('app', 'components'), path.resolve('app', 'pages'), path.resolve('app', 'layouts')]; let files = []; for (const dir of dirs) { try { files = files.concat(await walk(dir)); } catch (e) { // Ignore if dir doesn't exist } } for (const file of files) { let content = await fs.readFile(file, 'utf-8'); let original = content; // Generic regex for hardcoded grayscales in styles const grayscales = { '#000000': 'var(--bg-primary, #111111)', '#000': 'var(--bg-primary, #111111)', '#111111': 'var(--bg-primary, #111111)', '#111': 'var(--bg-primary, #111111)', '#1a1a1a': 'var(--bg-secondary, #1a1a1a)', '#222222': 'var(--bg-tertiary, #222222)', '#222': 'var(--bg-tertiary, #222222)', '#2a2a2a': 'var(--bg-tertiary, #2a2a2a)', '#333333': 'var(--bg-quaternary, #333333)', '#333': 'var(--bg-quaternary, #333333)', '#3a3a3a': 'var(--bg-quaternary, #3a3a3a)', '#444444': 'var(--text-disabled, #444444)', '#444': 'var(--text-disabled, #444444)', '#666666': 'var(--text-quaternary, #666666)', '#666': 'var(--text-quaternary, #666666)', '#888888': 'var(--text-tertiary, #888888)', '#888': 'var(--text-tertiary, #888888)', '#999999': 'var(--text-tertiary, #999999)', '#999': 'var(--text-tertiary, #999999)', '#aaaaaa': 'var(--text-secondary, #aaaaaa)', '#aaa': 'var(--text-secondary, #aaaaaa)', '#cccccc': 'var(--text-secondary, #cccccc)', '#ccc': 'var(--text-secondary, #cccccc)', '#dddddd': 'var(--border-secondary, #dddddd)', '#ddd': 'var(--border-secondary, #dddddd)', '#eeeeee': 'var(--border-primary, #eeeeee)', '#eee': 'var(--border-primary, #eeeeee)', '#ffffff': 'var(--text-primary, #ffffff)', '#fff': 'var(--text-primary, #ffffff)' }; // We only want to replace inside