import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import { mockIPC, mockWindows } from '@tauri-apps/api/mocks'; import { emit } from '@tauri-apps/api/event'; import App from '../../src/App'; import { I18nProvider } from '../../src/i18n'; import { initializeTheme } from '../../src/theme'; import type { AppTheme } from '../../src/themeController'; import '../../src/styles/index.css'; const params = new URLSearchParams(location.search); const platform = params.get('platform') || 'windows'; const storageKey = 'easy-cli-proxy-api.theme'; if (params.has('reset')) localStorage.removeItem(storageKey); if (params.has('saved')) localStorage.setItem(storageKey, params.get('saved')!); localStorage.setItem('easy-cli-proxy-api.locale', params.get('locale') || 'zh-CN'); let system: AppTheme = params.get('system') === 'light' ? 'light' : 'dark'; let override: AppTheme | null = null; let appearance: AppTheme = system; const calls: { cmd: string; args: unknown }[] = []; const notify = (theme: AppTheme) => emit('tauri://theme-changed', theme); mockWindows('main'); mockIPC(async (cmd, args: any) => { calls.push({ cmd, args }); if (cmd === 'detect_core_platform') return { os: platform, arch: 'x86_64' }; if (cmd === 'get_linux_system_theme') return params.has('no-portal') ? null : system; if (cmd === 'plugin:window|theme') return override ?? system; if (cmd === 'plugin:window|set_theme') { override = args.value ?? null; appearance = override ?? (platform === 'linux' ? 'light' : system); const changed = appearance; setTimeout(() => void notify(changed), 0); return; } if (cmd.includes('background_color') || cmd === 'set_app_locale') return; if (cmd === 'plugin:app|version') return '0.0.0'; if (cmd === 'get_core_status') return { installed: false, running: false, starting: false, managed: false }; if (cmd === 'get_gui_settings') return { host: '127.0.0.1', port: 8317, closeBehavior: 'ask' }; if (cmd === 'get_core_config_settings') return { apiKeys: [] }; if (cmd === 'get_core_tls_settings') return { enabled: false }; if (cmd === 'check_app_update') return { updateAvailable: false, currentVersion: '0.0.0' }; if (cmd === 'get_app_update_task') return { running: false, phase: 'idle' }; if (cmd === 'check_latest_core') return { version: '0.0.0' }; throw new Error(`Theme fixture does not implement ${cmd}`); }, { shouldMockEvents: true }); Object.assign(window, { isTauri: platform !== 'browser', themeFixture: { calls, get appearance() { return appearance; }, async setSystem(theme: AppTheme) { system = theme; if (platform === 'linux' || override === null) { appearance = theme; await notify(theme); } }, }, }); initializeTheme(); createRoot(document.getElementById('root')!).render( , );