import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import { BrowserRouter } from 'react-router' import { ThemeProvider } from 'next-themes' import './index.css' // 一次性迁移旧 LokiDeploy 时代的 localStorage key → opsxloki.*(保留登录态/主题/折叠/查询历史) function migrateStorage() { const pairs: Array<[string, string]> = [ ['lokideploy.auth.token', 'opsxloki.auth.token'], ['lokideploy.auth.refresh-token', 'opsxloki.auth.refresh-token'], ['lokideploy.auth.user', 'opsxloki.auth.user'], ['lokideploy.theme.mode', 'opsxloki.theme.mode'], ['lokideploy.layout.collapsed', 'opsxloki.layout.collapsed'], ['lokideploy_log_query_history', 'opsxloki_log_query_history'], ] for (const [oldKey, newKey] of pairs) { const v = localStorage.getItem(oldKey) if (v !== null && localStorage.getItem(newKey) === null) { localStorage.setItem(newKey, v) localStorage.removeItem(oldKey) } } } migrateStorage() import App from './App.tsx' import ErrorBoundary from '@/components/ErrorBoundary' // 主题:class 策略(.dark),三态 light/dark/system,key 带命名空间; // next-themes 会在挂载前注入主题脚本,避免暗色首帧白闪 createRoot(document.getElementById('root')!).render( , )