2
0

index.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { createRoot } from 'react-dom/client'
  2. import { RouterProvider } from 'react-router';
  3. import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
  4. import { ThemeProvider } from '@/client/components/theme-provider';
  5. import { Toaster } from '@/client/components/ui/sonner';
  6. import dayjs from 'dayjs';
  7. import weekday from 'dayjs/plugin/weekday';
  8. import localeData from 'dayjs/plugin/localeData';
  9. import 'dayjs/locale/zh-cn';
  10. import { AuthProvider } from './hooks/AuthProvider';
  11. import { router } from './routes';
  12. // 配置 dayjs 插件
  13. dayjs.extend(weekday);
  14. dayjs.extend(localeData);
  15. // 设置 dayjs 语言
  16. dayjs.locale('zh-cn');
  17. // 创建QueryClient实例
  18. const queryClient = new QueryClient({
  19. defaultOptions: {
  20. queries: {
  21. retry: 1,
  22. refetchOnWindowFocus: false,
  23. },
  24. },
  25. });
  26. // 应用入口组件
  27. const App = () => {
  28. return (
  29. <QueryClientProvider client={queryClient}>
  30. <ThemeProvider defaultTheme="light" storageKey="admin-theme">
  31. <AuthProvider>
  32. <RouterProvider router={router} />
  33. <Toaster
  34. position="top-right"
  35. expand={false}
  36. richColors
  37. closeButton
  38. />
  39. </AuthProvider>
  40. </ThemeProvider>
  41. </QueryClientProvider>
  42. )
  43. };
  44. const rootElement = document.getElementById('root')
  45. if (rootElement) {
  46. const root = createRoot(rootElement)
  47. root.render(
  48. <App />
  49. )
  50. }