import { StrictMode } from 'react';

import { RouterProvider, createRouter } from '@tanstack/react-router';
import { createRoot } from 'react-dom/client';
import { I18nextProvider } from 'react-i18next';

import { setRouterInstance } from '@/core/services/http-client';
import '@/core/styles/global.scss';
import i18next from '@/libs/i18n';

import 'ckeditor5/ckeditor5.css';

import Provider from './app/-Provider';
import { routeTree } from './routeTree.gen';

// Create the router
const router = createRouter({ routeTree });

// Inject router to http-client to avoid window.location reload
setRouterInstance(router);

// Register router for type safety
declare module '@tanstack/react-router' {
  interface Register {
    router: typeof router;
  }
}

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <Provider>
      <I18nextProvider i18n={i18next}>
        <RouterProvider router={router} />
      </I18nextProvider>
    </Provider>
  </StrictMode>,
);
