if (import.meta.env.DEV) {
	import('react-grab')
}

import { ErrorPage, NotFound } from '@packages/ui/blocks/error/pages'
import { QueryClientProvider } from '@tanstack/react-query'
import { createRouter, RouterProvider } from '@tanstack/react-router'
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import queryClient from '@/lib/query'
import { routeTree } from './routeTree.gen'
import './styles/globals.css'
import setFavicon from '@packages/assets/dom'
import faviconUrl from '@packages/assets/favicon.ico'

setFavicon(faviconUrl)

const router = createRouter({
	routeTree,
	defaultPreload: 'intent',
	scrollRestoration: true,
	notFoundMode: 'root',
	defaultNotFoundComponent: NotFound,
	defaultErrorComponent: ErrorPage
})

declare module '@tanstack/react-router' {
	interface Register {
		router: typeof router
	}
}

const rootEl = document.getElementById('root')
if (!rootEl) throw new Error('Root element #root not found')

createRoot(rootEl).render(
	<StrictMode>
		<QueryClientProvider client={queryClient}>
			<RouterProvider router={router} />
		</QueryClientProvider>
	</StrictMode>
)
