|  | import i18n from '@/locales/config'; | 
					
						
						|  | import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; | 
					
						
						|  | import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; | 
					
						
						|  | import { App, ConfigProvider, ConfigProviderProps } from 'antd'; | 
					
						
						|  | import enUS from 'antd/locale/en_US'; | 
					
						
						|  | import zhCN from 'antd/locale/zh_CN'; | 
					
						
						|  | import zh_HK from 'antd/locale/zh_HK'; | 
					
						
						|  | import dayjs from 'dayjs'; | 
					
						
						|  | import advancedFormat from 'dayjs/plugin/advancedFormat'; | 
					
						
						|  | import customParseFormat from 'dayjs/plugin/customParseFormat'; | 
					
						
						|  | import localeData from 'dayjs/plugin/localeData'; | 
					
						
						|  | import weekOfYear from 'dayjs/plugin/weekOfYear'; | 
					
						
						|  | import weekYear from 'dayjs/plugin/weekYear'; | 
					
						
						|  | import weekday from 'dayjs/plugin/weekday'; | 
					
						
						|  | import React, { ReactNode, useEffect, useState } from 'react'; | 
					
						
						|  | import storage from './utils/authorization-util'; | 
					
						
						|  |  | 
					
						
						|  | dayjs.extend(customParseFormat); | 
					
						
						|  | dayjs.extend(advancedFormat); | 
					
						
						|  | dayjs.extend(weekday); | 
					
						
						|  | dayjs.extend(localeData); | 
					
						
						|  | dayjs.extend(weekOfYear); | 
					
						
						|  | dayjs.extend(weekYear); | 
					
						
						|  |  | 
					
						
						|  | const AntLanguageMap = { | 
					
						
						|  | en: enUS, | 
					
						
						|  | zh: zhCN, | 
					
						
						|  | 'zh-TRADITIONAL': zh_HK, | 
					
						
						|  | }; | 
					
						
						|  |  | 
					
						
						|  | const queryClient = new QueryClient(); | 
					
						
						|  |  | 
					
						
						|  | type Locale = ConfigProviderProps['locale']; | 
					
						
						|  |  | 
					
						
						|  | const RootProvider = ({ children }: React.PropsWithChildren) => { | 
					
						
						|  | const getLocale = (lng: string) => | 
					
						
						|  | AntLanguageMap[lng as keyof typeof AntLanguageMap] ?? enUS; | 
					
						
						|  |  | 
					
						
						|  | const [locale, setLocal] = useState<Locale>(getLocale(storage.getLanguage())); | 
					
						
						|  |  | 
					
						
						|  | i18n.on('languageChanged', function (lng: string) { | 
					
						
						|  | storage.setLanguage(lng); | 
					
						
						|  | setLocal(getLocale(lng)); | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  | useEffect(() => { | 
					
						
						|  |  | 
					
						
						|  | const lng = storage.getLanguage(); | 
					
						
						|  | if (lng) { | 
					
						
						|  | i18n.changeLanguage(lng); | 
					
						
						|  | } | 
					
						
						|  | }, []); | 
					
						
						|  |  | 
					
						
						|  | return ( | 
					
						
						|  | <QueryClientProvider client={queryClient}> | 
					
						
						|  | <ConfigProvider | 
					
						
						|  | theme={{ | 
					
						
						|  | token: { | 
					
						
						|  | fontFamily: 'Inter', | 
					
						
						|  | }, | 
					
						
						|  | }} | 
					
						
						|  | locale={locale} | 
					
						
						|  | > | 
					
						
						|  | <App> {children}</App> | 
					
						
						|  | </ConfigProvider> | 
					
						
						|  | <ReactQueryDevtools buttonPosition={'top-left'} /> | 
					
						
						|  | </QueryClientProvider> | 
					
						
						|  | ); | 
					
						
						|  | }; | 
					
						
						|  |  | 
					
						
						|  | export function rootContainer(container: ReactNode) { | 
					
						
						|  | return <RootProvider>{container}</RootProvider>; | 
					
						
						|  | } | 
					
						
						|  |  |