
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import { registerServiceWorker } from './lib/register-sw';
import { AuthProvider } from './providers/AuthProvider';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ThemeProvider } from './providers/ThemeProvider';
import { toast as sonnerToast } from 'sonner';

// Global UX rule: suppress low-value toasts (success/info/loading/warning/message).
// Only `toast.error` remains visible — keeps the chat UI distraction-free.
const noop: any = () => '' as any;
(sonnerToast as any).success = noop;
(sonnerToast as any).info = noop;
(sonnerToast as any).warning = noop;
(sonnerToast as any).loading = noop;
(sonnerToast as any).message = noop;

// Register service worker for PWA
registerServiceWorker();

// Create a react-query client
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      retry: false,
      refetchOnWindowFocus: false,
      staleTime: 5 * 60 * 1000,      // 5 minutes
      gcTime: 10 * 60 * 1000, // 10 minutes
    },
  },
});

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <QueryClientProvider client={queryClient}>
      <ThemeProvider defaultTheme="light" storageKey="theme">
        <AuthProvider>
          <App />
        </AuthProvider>
      </ThemeProvider>
    </QueryClientProvider>
  </React.StrictMode>,
);
