renderer.tsx
1 import { createRoot } from 'react-dom/client'; 2 import { App } from './App'; 3 import { applyTheme } from '../lib/theme'; 4 import './globals.css'; 5 6 // Apply the user's preferred theme as early as possible to avoid a 7 // flash. We default to system; App.tsx loads the actual preference 8 // once the renderer mounts and re-applies if it differs. 9 applyTheme('system'); 10 11 // ─── Native UI: disable web-like behaviors ───────────────────── 12 window.addEventListener('contextmenu', (e) => e.preventDefault()); 13 document.addEventListener('dragover', (e) => e.preventDefault()); 14 document.addEventListener('drop', (e) => e.preventDefault()); 15 16 if (window.electronAPI.isPackaged) { 17 window.addEventListener('keydown', (e) => { 18 if (!(e.ctrlKey || e.metaKey)) return; 19 if (e.key === 'r' || e.key === 'u' || e.key === 'p') { 20 e.preventDefault(); 21 } 22 }); 23 } 24 25 const container = document.getElementById('root'); 26 if (!container) throw new Error('No #root element found'); 27 28 createRoot(container).render(<App />);