/ src / renderer.tsx
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 />);