{"version":3,"mappings":"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","names":["Toaster","props","theme","useTheme","jsx","Sonner","DEFAULT_AUTH_STORE_STATES","authStore","set","isLoggedIn","token","useAuthStore","create","devtools","persist","createJSONStorage","isUndefined","value","DEFAULT_USER_STORE_STATES","userStore","isFetched","address","className","code","dateOfBirth","description","email","facultyName","firstName","fullName","gender","id","lastName","middleName","phoneNumber","roleName","statusText","totalDayCount","advisorName","state","useUserStore","useCategoriesStore","menu","useActivityStore","activity","DEFAULT_THEME_STORE_STATES","websiteConfigStore","name","logo","banner","previewTheme","useWebsiteConfigStore","cn","inputs","twMerge","clsx","getName","type","isAxiosError","error","axios","extractErrorMessage","axiosErrorResponse","toastErrorMessage","toast","toastSuccess","message","handleAuthorizationError","_a","setIsLoggedIn","removeToken","setIsFetched","removeUser","handleDelayRetry","failureCount","queryClient","QueryClient","previousData","commonConfig","AXIOS_INSTANCE","Axios","config","response","customClient","options","source","promise","data","status","postApiAuthLogin","authDto","getPostApiAuthLoginMutationOptions","mutationOptions","requestOptions","usePostApiAuthLogin","useMutation","getApiAuthMyInfo","signal","getGetApiAuthMyInfoQueryKey","getGetApiAuthMyInfoQueryOptions","queryOptions","useGetApiAuthMyInfo","query","useQuery","useLogout","useShallow","useCallback","useFetchUserInformation","useQueryClient","setUser","getMyInfoQuery","handleFetchUserInformation","userInformationData","useUserFullName","useMemo","buttonVariants","cva","Button","React.forwardRef","variant","size","asChild","loading","children","disabled","ref","isDisabled","Comp","Slot","Children","jsxs","Fragment","AppLoadingIcon","Err500Image","BASE_PATHS","RouterErrorBoundary","useRouteError","isRouteError","isRouteErrorResponse","handleClick","Navigate","Loading","CSS_VARIABLE_KEYS","THEMES","ThemeProvider","useEffect","appTheme","cssVariableKey","selectedTheme","key","TopBarProgress","NavigationProgressBarProvider","useNavigation","dayjs","createTheme","App","isFetchUserInformationError","isFetchingUserInformation","CssBaseline","AppThemeProvider","AppNavigationProgressBarProvider","Outlet","authenticationRoutes","Component","__vitePreload","userRoutes","adminRoutes","portalRoutesList","adminRoutesList","appRoutes","AppRouterErrorBoundary","authRoutes","router","createBrowserRouter","routes","ReactDOM","StrictMode","Suspense","QueryClientProvider","RouterProvider"],"ignoreList":[],"sources":["../../src/components/ui/sonner.tsx","../../src/stores/use-auth-store.ts","../../src/stores/use-user-store.ts","../../src/stores/use-categories-store.ts","../../src/stores/use-activity-store.ts","../../src/stores/use-website-config-store.ts","../../src/lib/utils.ts","../../src/configs/query-client.ts","../../src/configs/common.ts","../../src/api/mutator/custom-client.ts","../../src/api/endpoints/auth.ts","../../src/lib/hooks.ts","../../src/components/ui/button.tsx","../../src/assets/images/error/err500.png","../../src/constants/path/base-paths.ts","../../src/components/features/errors/router-error-boundary/RouterErrorBoundary.tsx","../../src/components/features/icons/loading/Loading.tsx","../../src/lib/themes.ts","../../src/components/features/providers/theme-provider/theme-provider.tsx","../../src/components/features/providers/navigation-progress-bar-provider/navigation-progress-bar-provider.tsx","../../src/app/app.tsx","../../src/app/pages/authentication/lib/routes.tsx","../../src/app/pages/user/lib/routes.tsx","../../src/app/pages/admin/lib/routes.tsx","../../src/app/lib/routes.tsx","../../src/router.ts","../../src/main.tsx"],"sourcesContent":["import { useTheme } from 'next-themes'\r\nimport { Toaster as Sonner } from 'sonner'\r\n\r\ntype ToasterProps = React.ComponentProps\r\n\r\nconst Toaster = ({ ...props }: ToasterProps) => {\r\n const { theme = 'system' } = useTheme()\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport { Toaster }\r\n","import { create, StateCreator } from 'zustand'\r\nimport { createJSONStorage, devtools, persist } from 'zustand/middleware'\r\n\r\n// Types\r\n// States type\r\ninterface AuthStoreStatesType {\r\n isLoggedIn: boolean\r\n token: string | null\r\n}\r\n\r\n// Actions type\r\ninterface SetTokenParamsType {\r\n token: string | null\r\n}\r\n\r\ninterface AuthStoreActionsType {\r\n setIsLoggedIn: (isLoggedIn: boolean) => void\r\n setToken: (params: SetTokenParamsType) => void\r\n removeToken: () => void\r\n}\r\n\r\n// Constants\r\nconst DEFAULT_AUTH_STORE_STATES: AuthStoreStatesType = {\r\n isLoggedIn: false,\r\n token: null\r\n}\r\n\r\n// Define store\r\nconst authStore: StateCreator = (set) => ({\r\n // States\r\n ...DEFAULT_AUTH_STORE_STATES,\r\n\r\n // Methods\r\n setIsLoggedIn: (isLoggedIn: boolean) => set(() => ({ isLoggedIn })),\r\n setToken: ({ token }) =>\r\n set(() => ({\r\n token\r\n })),\r\n removeToken: () => {\r\n set(() => ({\r\n token: null\r\n }))\r\n }\r\n})\r\n\r\nconst useAuthStore = create()(\r\n devtools(\r\n persist(authStore, {\r\n name: 'auth-store',\r\n storage: createJSONStorage(() => sessionStorage)\r\n })\r\n )\r\n)\r\n\r\nexport default useAuthStore\r\n","import { DateOnly } from '@src/api/models'\r\nimport { create, StateCreator } from 'zustand'\r\n\r\nconst isUndefined = (value: unknown) => value === undefined\r\n\r\n// Types\r\n// States type\r\ninterface UserStoreStatesType {\r\n isFetched: boolean\r\n address?: string | null\r\n className?: string | null\r\n code?: string | null\r\n dateOfBirth?: DateOnly\r\n description?: string | null\r\n email?: string | null\r\n facultyName?: string | null\r\n firstName?: string | null\r\n fullName?: string | null\r\n gender?: string | null\r\n id?: number\r\n lastName?: string | null\r\n middleName?: string | null\r\n phoneNumber?: string | null\r\n roleName?: string | null\r\n statusText?: string | null\r\n totalDayCount?: string | null\r\n advisorName?: string | null\r\n}\r\n\r\n// Actions type\r\ninterface SetUserParamsType {\r\n address?: string | null\r\n className?: string | null\r\n code?: string | null\r\n dateOfBirth?: DateOnly\r\n description?: string | null\r\n email?: string | null\r\n facultyName?: string | null\r\n firstName?: string | null\r\n fullName?: string | null\r\n gender?: string | null\r\n id?: number\r\n lastName?: string | null\r\n middleName?: string | null\r\n phoneNumber?: string | null\r\n roleName?: string | null\r\n statusText?: string | null\r\n totalDayCount?: string | null\r\n advisorName?: string | null\r\n}\r\n\r\ninterface UserStoreActionsType {\r\n setIsFetched: (isFetched: boolean) => void\r\n setUser: (params: SetUserParamsType) => void\r\n removeUser: () => void\r\n}\r\n\r\n// Constants\r\nconst DEFAULT_USER_STORE_STATES: UserStoreStatesType = {\r\n isFetched: false,\r\n address: null,\r\n className: null,\r\n code: null,\r\n dateOfBirth: {},\r\n description: null,\r\n email: null,\r\n facultyName: null,\r\n firstName: null,\r\n fullName: null,\r\n gender: null,\r\n id: 0,\r\n lastName: null,\r\n middleName: null,\r\n phoneNumber: null,\r\n roleName: null,\r\n statusText: null,\r\n totalDayCount: null,\r\n advisorName: null\r\n}\r\n\r\n// Define store\r\nconst userStore: StateCreator = (set) => {\r\n return {\r\n // States\r\n ...DEFAULT_USER_STORE_STATES,\r\n\r\n // Actions\r\n setIsFetched: (isFetched) =>\r\n set(() => ({\r\n isFetched\r\n })),\r\n setUser: ({\r\n address,\r\n className,\r\n code,\r\n dateOfBirth,\r\n description,\r\n email,\r\n facultyName,\r\n firstName,\r\n fullName,\r\n gender,\r\n id,\r\n lastName,\r\n middleName,\r\n phoneNumber,\r\n roleName,\r\n statusText,\r\n totalDayCount,\r\n advisorName\r\n }) => {\r\n // Set user data\r\n set((state) => ({\r\n address: isUndefined(address) ? state.address : address,\r\n className: isUndefined(className) ? state.className : className,\r\n code: isUndefined(code) ? state.code : code,\r\n dateOfBirth: isUndefined(dateOfBirth) ? state.dateOfBirth : dateOfBirth,\r\n description: isUndefined(description) ? state.description : description,\r\n email: isUndefined(email) ? state.email : email,\r\n facultyName: isUndefined(facultyName) ? state.facultyName : facultyName,\r\n firstName: isUndefined(firstName) ? state.firstName : firstName,\r\n fullName: isUndefined(fullName) ? state.fullName : fullName,\r\n gender: isUndefined(gender) ? state.gender : gender,\r\n id: isUndefined(id) ? state.id : id,\r\n lastName: isUndefined(lastName) ? state.lastName : lastName,\r\n middleName: isUndefined(middleName) ? state.middleName : middleName,\r\n phoneNumber: isUndefined(phoneNumber) ? state.phoneNumber : phoneNumber,\r\n roleName: isUndefined(roleName) ? state.roleName : roleName,\r\n totalDayCount: isUndefined(totalDayCount) ? state.totalDayCount : totalDayCount,\r\n advisorName: isUndefined(advisorName) ? state.advisorName : advisorName,\r\n statusText: isUndefined(statusText) ? state.statusText : statusText\r\n }))\r\n },\r\n removeUser: () => {\r\n // Reset user data\r\n set(() => ({\r\n ...DEFAULT_USER_STORE_STATES\r\n }))\r\n }\r\n }\r\n}\r\n\r\nconst useUserStore = create(userStore)\r\n\r\nexport default useUserStore\r\n","import { MenuItem } from '@src/app/pages/user/utils/Menu'\r\nimport { create } from 'zustand'\r\n\r\ninterface CategoriesState {\r\n categoriesMenu: MenuItem[]\r\n setCategoriesMenu: (menu: MenuItem[]) => void\r\n}\r\n\r\nexport const useCategoriesStore = create((set) => ({\r\n categoriesMenu: [],\r\n setCategoriesMenu: (menu) => set({ categoriesMenu: menu })\r\n}))\r\n","import { create } from 'zustand'\r\nimport { GetActivityDto } from '@src/api/models'\r\n\r\ninterface ActivityStore {\r\n activity: GetActivityDto | null\r\n setActivity: (activity: GetActivityDto) => void\r\n clearActivity: () => void\r\n}\r\n\r\nexport const useActivityStore = create((set) => ({\r\n activity: null,\r\n setActivity: (activity) => set({ activity }),\r\n clearActivity: () => set({ activity: null })\r\n}))\r\n","import { devtools } from 'zustand/middleware'\r\nimport { create, StateCreator } from 'zustand'\r\n\r\nconst isUndefined = (value: unknown) => value === undefined\r\n\r\n// Types\r\n// States type\r\ninterface WebsiteConfigStoreStatesType {\r\n name: string | null\r\n logo: {\r\n id: string\r\n path: string\r\n } | null\r\n banner: {\r\n id: string\r\n path: string\r\n } | null\r\n theme: string | null\r\n previewTheme: string | null\r\n}\r\n\r\n// Actions type\r\ninterface SetWebsiteConfigParamsType {\r\n name?: string | null\r\n logo?: {\r\n id: string\r\n path: string\r\n } | null\r\n banner?: {\r\n id: string\r\n path: string\r\n } | null\r\n theme?: string | null\r\n previewTheme?: string | null\r\n}\r\n\r\ninterface ThemeStoreActionsType {\r\n setWebsiteConfig: (params: SetWebsiteConfigParamsType) => void\r\n}\r\n\r\n// Constants\r\nconst DEFAULT_THEME_STORE_STATES: WebsiteConfigStoreStatesType = {\r\n name: null,\r\n logo: null,\r\n banner: null,\r\n theme: null,\r\n previewTheme: null\r\n}\r\n\r\n// Define store\r\nconst websiteConfigStore: StateCreator = (set) => {\r\n return {\r\n // States\r\n ...DEFAULT_THEME_STORE_STATES,\r\n\r\n // Actions\r\n setWebsiteConfig: ({ name, logo, banner, theme, previewTheme }) => {\r\n set((state) => ({\r\n name: isUndefined(name) ? state.name : name,\r\n logo: isUndefined(logo) ? state.logo : logo,\r\n banner: isUndefined(banner) ? state.banner : banner,\r\n theme: isUndefined(theme) ? state.theme : theme,\r\n previewTheme: isUndefined(previewTheme) ? state.previewTheme : previewTheme\r\n }))\r\n }\r\n }\r\n}\r\n\r\nconst useWebsiteConfigStore = create(\r\n devtools(websiteConfigStore, {\r\n name: 'website-config-store'\r\n })\r\n)\r\n\r\nexport default useWebsiteConfigStore\r\n","// Core\r\nimport { toast } from 'sonner'\r\nimport { twMerge } from 'tailwind-merge'\r\nimport axios, { AxiosError } from 'axios'\r\nimport { type ClassValue, clsx } from 'clsx'\r\n\r\n// App\r\nimport { ResponseType } from '@src/api/types/common'\r\n\r\n// Utility list\r\n// Cn\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n\r\n// Split full name\r\nexport function splitFullName(fullName: string) {\r\n const parts = fullName.trim().split(/\\s+/)\r\n let lastName = ''\r\n let middleName = ''\r\n let firstName = ''\r\n\r\n if (parts.length > 0) {\r\n lastName = parts[0]\r\n }\r\n\r\n if (parts.length === 2) {\r\n firstName = parts[1]\r\n } else if (parts.length > 2) {\r\n firstName = parts[parts.length - 1]\r\n middleName = parts.slice(1, -1).join(' ')\r\n }\r\n\r\n return {\r\n firstName,\r\n middleName,\r\n lastName\r\n }\r\n}\r\n\r\n// Get name\r\nexport function getName({\r\n type = 'FULL',\r\n lastName = '',\r\n middleName = '',\r\n firstName = ''\r\n}: {\r\n type?: 'FULL' | 'LAST_AND_MIDDLE'\r\n firstName?: string\r\n middleName?: string\r\n lastName?: string\r\n}) {\r\n switch (type) {\r\n case 'LAST_AND_MIDDLE':\r\n return `${lastName ?? ''}${middleName ? ` ${middleName}` : ''}`\r\n case 'FULL':\r\n return `${lastName ? `${lastName} ` : ''}${middleName ? `${middleName} ` : ''}${firstName}`\r\n default:\r\n return ''\r\n }\r\n}\r\n\r\n// Is axios error\r\nexport function isAxiosError(error: unknown): error is AxiosError {\r\n return axios.isAxiosError(error)\r\n}\r\n\r\n// Extract error message\r\nexport function extractErrorMessage(error: unknown) {\r\n const axiosErrorResponse = isAxiosError(error) ? error.response : null\r\n const errorMessage =\r\n // axiosErrorResponse?.data.violations?.[0]?.action?.[0]?.msg ??\r\n // axiosErrorResponse?.data.violations?.[0].message ??\r\n axiosErrorResponse?.data.message ?? 'Có lỗi xảy ra, vui lòng thử lại sau'\r\n return errorMessage\r\n}\r\n\r\n// Toast error message\r\nexport function toastErrorMessage(error: unknown) {\r\n toast.error('Thất bại', {\r\n description: extractErrorMessage(error)\r\n })\r\n}\r\n\r\n// Toast error message\r\nexport function toastSuccess(message: string) {\r\n toast.success('Thành công', {\r\n description: message\r\n })\r\n}\r\n\r\n// Is axios aborted\r\nexport function isAxiosAborted(error: unknown) {\r\n const axiosError = isAxiosError(error) ? error : null\r\n return Boolean(axiosError?.config?.signal?.aborted)\r\n}\r\n\r\n// Format time to HH:mm:ss\r\nexport function formatTime(seconds: number) {\r\n const hours: number = Math.floor(seconds / 60 / 60)\r\n const minutes: number = Math.floor(seconds / 60 - hours * 60)\r\n const remainingSeconds: number = seconds % 60\r\n return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(remainingSeconds).padStart(2, '0')}`\r\n}\r\n","// Core\r\nimport { QueryClient } from '@tanstack/react-query'\r\nimport { AxiosError, isAxiosError } from 'axios'\r\n\r\n// App\r\nimport { ResponseType } from '@src/api/types/common'\r\nimport { useAuthStore, useUserStore } from '../stores'\r\n\r\n// Handle authorization error\r\nconst handleAuthorizationError = (error: Error) => {\r\n const axiosError = error as AxiosError\r\n\r\n if (axiosError.response?.status === 401) {\r\n console.error('Token expired ...')\r\n\r\n // Reset auth store\r\n const { setIsLoggedIn, removeToken } = useAuthStore.getState()\r\n setIsLoggedIn(false)\r\n removeToken()\r\n\r\n // Reset user store\r\n const { setIsFetched, removeUser } = useUserStore.getState()\r\n setIsFetched(false)\r\n removeUser()\r\n }\r\n}\r\n\r\n// Handle delay value\r\nconst handleDelayRetry = (failureCount: number) => failureCount * 1000 + Math.random() * 1000\r\n\r\n// Query client\r\nconst queryClient = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n refetchOnWindowFocus: false,\r\n placeholderData: (previousData: unknown) => previousData,\r\n retryDelay: (failureCount) => handleDelayRetry(failureCount),\r\n throwOnError(error) {\r\n handleAuthorizationError(error)\r\n return false\r\n }\r\n },\r\n mutations: {\r\n retry: (failureCount, error) => {\r\n if (failureCount > 3 || !isAxiosError(error)) {\r\n return false\r\n }\r\n\r\n const axiosError = error as AxiosError\r\n if (\r\n axiosError.response?.status === 500\r\n // &&\r\n // axiosError.response?.data.violations?.find(\r\n // (violation) =>\r\n // violation.message.toLocaleLowerCase().includes('timeout') ||\r\n // violation.message.toLocaleLowerCase().includes('connect')\r\n // )\r\n ) {\r\n return true\r\n }\r\n return false\r\n },\r\n retryDelay: (failureCount) => handleDelayRetry(failureCount),\r\n onError: (error) => handleAuthorizationError(error)\r\n }\r\n }\r\n})\r\n\r\nexport default queryClient\r\n","export default {\r\n apiEndpoint: 'http://gateway-ctxhdntu.somee.com',\r\n imageEndpoint: 'http://gateway-ctxhdntu.somee.com',\r\n siteURL: 'http://gateway-ctxhdntu.somee.com',\r\n pageSpeedUserAgent:\r\n /(Mozilla\\/5\\.0 \\(Linux; Android 11; moto g power \\(2022\\)\\) AppleWebKit\\/537\\.36 \\(KHTML, like Gecko\\) Chrome\\/109\\.0.0.0 Mobile Safari\\/537\\.36)|(Mozilla\\/5\\.0 \\(Macintosh; Intel Mac OS X 10_15_7\\) AppleWebKit\\/537\\.36 \\(KHTML, like Gecko\\) Chrome\\/109\\.0\\.0\\.0 Safari\\/537\\.36)|(Speed Insights)|(Chrome-Lighthouse)|(PSTS[\\d.]+)/\r\n}\r\n","// Core\r\nimport Axios, { AxiosError, AxiosRequestConfig } from 'axios'\r\n\r\n// App\r\nimport { useAuthStore } from '@src/stores'\r\nimport { commonConfig } from '@src/configs'\r\n\r\n// Instance\r\nconst AXIOS_INSTANCE = Axios.create({ baseURL: commonConfig.apiEndpoint })\r\n\r\n// Request middleware\r\nAXIOS_INSTANCE.interceptors.request.use(async (config) => {\r\n config.headers.Authorization = `Bearer ${useAuthStore.getState().token ?? ''}`\r\n // config.headers['Origin'] = commonConfig.siteURL\r\n\r\n // if (config.method === 'post' && config.url?.includes('/exportJoinedOrgs')) {\r\n // config.responseType = 'blob'\r\n // config.headers['Content-Type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'\r\n // }\r\n\r\n return config\r\n})\r\n\r\n// Response middleware\r\nAXIOS_INSTANCE.interceptors.response.use(\r\n async (response) => response,\r\n (error) => Promise.reject(error)\r\n)\r\n\r\n// Custom client\r\nconst customClient = (config: AxiosRequestConfig, options?: AxiosRequestConfig): Promise => {\r\n const source = Axios.CancelToken.source()\r\n const promise = AXIOS_INSTANCE({\r\n ...config,\r\n ...options\r\n }).then(({ data, status }) => {\r\n return data instanceof Blob ? data : { ...data, statusCode: status }\r\n })\r\n\r\n // @ts-expect-error not exist cancel\r\n promise.cancel = () => {\r\n source.cancel('Query was cancelled')\r\n }\r\n return promise\r\n}\r\n\r\nexport { customClient, AXIOS_INSTANCE }\r\nexport default customClient\r\n\r\n// In some case with react-query and swr you want to be able to override the return error type so you can also do it here like this\r\n\r\nexport type ErrorType = AxiosError\r\n\r\nexport type BodyType = BodyData\r\n\r\n// Or, in case you want to wrap the body type (optional)\r\n\r\n// (if the custom instance is processing data before sending it, like changing the case for example)\r\n// export type BodyType = CamelCase;\r\n","/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * API\n * OpenAPI spec version: v1\n */\nimport {\n useInfiniteQuery,\n useMutation,\n useQuery\n} from '@tanstack/react-query'\nimport type {\n InfiniteData,\n MutationFunction,\n QueryFunction,\n QueryKey,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query'\nimport type {\n AuthDto,\n UserInfoDto\n} from '../models'\nimport { customClient } from '../mutator/custom-client';\nimport type { ErrorType, BodyType } from '../mutator/custom-client';\n\n\n\ntype SecondParameter any> = Parameters[1];\n\n\nexport const postApiAuthLogin = (\n authDto: BodyType,\n options?: SecondParameter,) => {\n \n \n return customClient(\n {url: `/api/Auth/login`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authDto\n },\n options);\n }\n \n\n\nexport const getPostApiAuthLoginMutationOptions = ,\n TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter}\n): UseMutationOptions>, TError,{data: BodyType}, TContext> => {\nconst {mutation: mutationOptions, request: requestOptions} = options ?? {};\n\n \n\n\n const mutationFn: MutationFunction>, {data: BodyType}> = (props) => {\n const {data} = props ?? {};\n\n return postApiAuthLogin(data,requestOptions)\n }\n\n \n\n\n return { mutationFn, ...mutationOptions }}\n\n export type PostApiAuthLoginMutationResult = NonNullable>>\n export type PostApiAuthLoginMutationBody = BodyType\n export type PostApiAuthLoginMutationError = ErrorType\n\n export const usePostApiAuthLogin = ,\n TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter}\n): UseMutationResult<\n Awaited>,\n TError,\n {data: BodyType},\n TContext\n > => {\n\n const mutationOptions = getPostApiAuthLoginMutationOptions(options);\n\n return useMutation(mutationOptions);\n }\n export const getApiAuthMyInfo = (\n \n options?: SecondParameter,signal?: AbortSignal\n) => {\n \n \n return customClient(\n {url: `/api/Auth/myInfo`, method: 'GET', signal\n },\n options);\n }\n \n\nexport const getGetApiAuthMyInfoQueryKey = () => {\n return [`/api/Auth/myInfo`] as const;\n }\n\n \nexport const getGetApiAuthMyInfoInfiniteQueryOptions = >>, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getGetApiAuthMyInfoQueryKey();\n\n \n\n const queryFn: QueryFunction>> = ({ signal }) => getApiAuthMyInfo(requestOptions, signal);\n\n \n\n \n\n return { queryKey, queryFn, ...queryOptions} as UseInfiniteQueryOptions>, TError, TData> & { queryKey: QueryKey }\n}\n\nexport type GetApiAuthMyInfoInfiniteQueryResult = NonNullable>>\nexport type GetApiAuthMyInfoInfiniteQueryError = ErrorType\n\nexport const useGetApiAuthMyInfoInfinite = >>, TError = ErrorType>(\n options?: { query?:Partial>, TError, TData>>, request?: SecondParameter}\n\n ): UseInfiniteQueryResult & { queryKey: QueryKey } => {\n\n const queryOptions = getGetApiAuthMyInfoInfiniteQueryOptions(options)\n\n const query = useInfiniteQuery(queryOptions) as UseInfiniteQueryResult & { queryKey: QueryKey };\n\n query.queryKey = queryOptions.queryKey ;\n\n return query;\n}\n\n\n\nexport const getGetApiAuthMyInfoQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getGetApiAuthMyInfoQueryKey();\n\n \n\n const queryFn: QueryFunction>> = ({ signal }) => getApiAuthMyInfo(requestOptions, signal);\n\n \n\n \n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey }\n}\n\nexport type GetApiAuthMyInfoQueryResult = NonNullable>>\nexport type GetApiAuthMyInfoQueryError = ErrorType\n\nexport const useGetApiAuthMyInfo = >, TError = ErrorType>(\n options?: { query?:Partial>, TError, TData>>, request?: SecondParameter}\n\n ): UseQueryResult & { queryKey: QueryKey } => {\n\n const queryOptions = getGetApiAuthMyInfoQueryOptions(options)\n\n const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey };\n\n query.queryKey = queryOptions.queryKey ;\n\n return query;\n}\n\n\n\nexport const putApiAuthMyInfo = (\n userInfoDto: BodyType,\n options?: SecondParameter,) => {\n \n \n return customClient(\n {url: `/api/Auth/myInfo`, method: 'PUT',\n headers: {'Content-Type': 'application/json', },\n data: userInfoDto\n },\n options);\n }\n \n\n\nexport const getPutApiAuthMyInfoMutationOptions = ,\n TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter}\n): UseMutationOptions>, TError,{data: BodyType}, TContext> => {\nconst {mutation: mutationOptions, request: requestOptions} = options ?? {};\n\n \n\n\n const mutationFn: MutationFunction>, {data: BodyType}> = (props) => {\n const {data} = props ?? {};\n\n return putApiAuthMyInfo(data,requestOptions)\n }\n\n \n\n\n return { mutationFn, ...mutationOptions }}\n\n export type PutApiAuthMyInfoMutationResult = NonNullable>>\n export type PutApiAuthMyInfoMutationBody = BodyType\n export type PutApiAuthMyInfoMutationError = ErrorType\n\n export const usePutApiAuthMyInfo = ,\n TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter}\n): UseMutationResult<\n Awaited>,\n TError,\n {data: BodyType},\n TContext\n > => {\n\n const mutationOptions = getPutApiAuthMyInfoMutationOptions(options);\n\n return useMutation(mutationOptions);\n }\n export const deleteApiAuthLogout = (\n \n options?: SecondParameter,) => {\n \n \n return customClient(\n {url: `/api/Auth/logout`, method: 'DELETE'\n },\n options);\n }\n \n\n\nexport const getDeleteApiAuthLogoutMutationOptions = ,\n TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter}\n): UseMutationOptions>, TError,void, TContext> => {\nconst {mutation: mutationOptions, request: requestOptions} = options ?? {};\n\n \n\n\n const mutationFn: MutationFunction>, void> = () => {\n \n\n return deleteApiAuthLogout(requestOptions)\n }\n\n \n\n\n return { mutationFn, ...mutationOptions }}\n\n export type DeleteApiAuthLogoutMutationResult = NonNullable>>\n \n export type DeleteApiAuthLogoutMutationError = ErrorType\n\n export const useDeleteApiAuthLogout = ,\n TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter}\n): UseMutationResult<\n Awaited>,\n TError,\n void,\n TContext\n > => {\n\n const mutationOptions = getDeleteApiAuthLogoutMutationOptions(options);\n\n return useMutation(mutationOptions);\n }\n ","// Core\r\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\r\nimport { useShallow } from 'zustand/react/shallow'\r\nimport { useSearchParams } from 'react-router-dom'\r\nimport { useQueryClient } from '@tanstack/react-query'\r\n\r\n// App\r\nimport { getName } from '@src/lib/utils'\r\n// import { getName, splitFullName } from '@src/lib/utils'\r\nimport { GetUserQueryType } from '@src/api/types/user'\r\nimport { useAuthStore, useUserStore } from '@src/stores'\r\nimport { getGetApiAuthMyInfoQueryKey, useGetApiAuthMyInfo } from '@src/api/endpoints/auth'\r\n\r\n// Hook list\r\n// Use query params\r\nexport const useQueryParams = () => {\r\n const [searchParams] = useSearchParams()\r\n const searchParamsObject = Object.fromEntries([...searchParams])\r\n return searchParamsObject\r\n}\r\n\r\n// Use logout\r\nexport const useLogout = () => {\r\n // Stores\r\n // Client\r\n const userStore = useUserStore(\r\n useShallow(({ setIsFetched, removeUser }) => ({\r\n setIsFetched,\r\n removeUser\r\n }))\r\n )\r\n\r\n const authStore = useAuthStore(\r\n useShallow(({ setIsLoggedIn, removeToken }) => ({\r\n setIsLoggedIn,\r\n removeToken\r\n }))\r\n )\r\n\r\n // Methods\r\n // Logout\r\n const handleLogout = useCallback(() => {\r\n authStore.removeToken()\r\n authStore.setIsLoggedIn(false)\r\n\r\n userStore.removeUser()\r\n userStore.setIsFetched(false)\r\n }, [authStore, userStore])\r\n\r\n return {\r\n handleLogout\r\n }\r\n}\r\n\r\n// Use fetch user information\r\nexport const useFetchUserInformation = () => {\r\n const queryClient = useQueryClient()\r\n\r\n // Stores\r\n // Client\r\n const userStore = useUserStore(useShallow(({ setIsFetched, setUser }) => ({ setIsFetched, setUser })))\r\n\r\n // Server\r\n const getMyInfoQuery = useGetApiAuthMyInfo({\r\n query: {\r\n enabled: false\r\n }\r\n })\r\n\r\n // Methods\r\n // Handle fetch user information\r\n const handleFetchUserInformation = useCallback(async () => {\r\n // First refetch to mark as query is fetched, this refetching doesn't fetch api\r\n if (queryClient.getQueryData(getGetApiAuthMyInfoQueryKey())) {\r\n await getMyInfoQuery.refetch()\r\n }\r\n\r\n // Fetching\r\n const { data } = await getMyInfoQuery.refetch()\r\n const userInformationData = data?.responseData\r\n if (!userInformationData) {\r\n return\r\n }\r\n\r\n // const { lastName, middleName, firstName } = splitFullName(userInformationData.full_name)\r\n\r\n // // Set user store\r\n userStore.setUser({\r\n address: userInformationData.address,\r\n className: userInformationData.className,\r\n code: userInformationData.code,\r\n dateOfBirth: userInformationData.dateOfBirth,\r\n description: userInformationData.description,\r\n email: userInformationData.email,\r\n facultyName: userInformationData.facultyName,\r\n firstName: userInformationData.firstName,\r\n fullName: userInformationData.fullName,\r\n gender: userInformationData.gender,\r\n id: userInformationData.id,\r\n lastName: userInformationData.lastName,\r\n middleName: userInformationData.middleName,\r\n phoneNumber: userInformationData.phoneNumber,\r\n roleName: userInformationData.roleName,\r\n totalDayCount: userInformationData.totalDayCount?.toString(),\r\n advisorName: userInformationData.advisorName,\r\n statusText: userInformationData.statusText\r\n })\r\n\r\n userStore.setIsFetched(true)\r\n }, [queryClient, getMyInfoQuery, userStore])\r\n\r\n return {\r\n isFetching: getMyInfoQuery.isFetching,\r\n isError: getMyInfoQuery.isError,\r\n handleFetchUserInformation\r\n }\r\n}\r\n\r\n// Use user full name\r\nexport const useUserFullName = () => {\r\n const userStore = useUserStore(\r\n useShallow(({ lastName, middleName, firstName }) => ({\r\n lastName,\r\n middleName,\r\n firstName\r\n }))\r\n )\r\n\r\n const userFullName = useMemo(() => {\r\n return getName({\r\n lastName: userStore.lastName ?? '',\r\n middleName: userStore.middleName ?? '',\r\n firstName: userStore.firstName ?? ''\r\n })\r\n }, [userStore])\r\n\r\n return userFullName\r\n}\r\n\r\n// Use skip initial effect\r\nexport const useSkipInitialEffect = (callback: CallableFunction, deps: unknown[]) => {\r\n // Ref\r\n const isInitialRenderRef = useRef(true)\r\n\r\n // Effect\r\n useEffect(() => {\r\n if (isInitialRenderRef.current) {\r\n isInitialRenderRef.current = false\r\n return\r\n }\r\n callback()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n}\r\n","// Core\r\nimport * as React from 'react'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport { cva, type VariantProps } from 'class-variance-authority'\r\n\r\n// App\r\nimport { cn } from '@src/lib/utils'\r\nimport { AppLoadingIcon } from '@src/components'\r\n\r\nconst buttonVariants = cva(\r\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\r\n {\r\n variants: {\r\n variant: {\r\n default: 'bg-[#C3151C] text-primary-foreground hover:bg-[#C3151C]/80',\r\n menu: 'hover:bg-accent hover:text-accent-foreground aria-selected:bg-[#C3151C] aria-selected:text-primary-foreground aria-selected:hover:bg-[#C3151C]',\r\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/80',\r\n success: 'bg-success text-success-foreground hover:bg-success/80',\r\n outline: 'border border-input hover:bg-accent hover:text-accent-foreground',\r\n secondary: 'bg-secondary text-secondary-foreground',\r\n ghost: 'hover:bg-accent hover:text-accent-foreground',\r\n 'ghost-secondary': 'text-primary/80 hover:bg-accent hover:text-primary',\r\n link: 'text-primary underline-offset-4 hover:underline'\r\n },\r\n size: {\r\n default: 'h-9 px-4 py-2',\r\n sm: 'h-8 rounded-md px-3 text-xs',\r\n lg: 'h-10 rounded-md px-8',\r\n icon: 'h-9 w-9'\r\n }\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 'default'\r\n }\r\n }\r\n)\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes,\r\n VariantProps {\r\n asChild?: boolean\r\n loading?: boolean\r\n}\r\n\r\nconst Button = React.forwardRef(\r\n (\r\n { className, variant, size, asChild = false, loading = false, children, disabled, type = 'button', ...props },\r\n ref\r\n ) => {\r\n const isDisabled = loading ? true : disabled\r\n const Comp = asChild ? Slot : 'button'\r\n const Children = loading ? (\r\n <>\r\n \r\n {children}\r\n \r\n ) : (\r\n children\r\n )\r\n\r\n return (\r\n \r\n {Children}\r\n \r\n )\r\n }\r\n)\r\nButton.displayName = 'Button'\r\n\r\nexport { Button, buttonVariants }\r\n","export default \"__VITE_ASSET__DGCuhEj$__\"","const BASE_PATHS = {\n // ----------------------------- Auth ----------------------------- //\n // Auth\n auth: '/auth',\n authSignIn: '/auth/sign-in',\n\n // ----------------------------- Portal ----------------------------- //\n // Portal\n portal: '/portal',\n\n // Portal User\n portalUserProfile: '/portal/user/profile',\n portalUserActivity: '/portal/user/activity',\n portalUserStatistics: '/portal/user/statistic',\n\n // Portal Activities\n portalActivities: '/portal/activities',\n portalActivityDetailId: '/portal/activity-detail/:id',\n portalUserActivitiesManagement: '/portal/user-activities/management',\n portalUserActivitiesSaved: '/portal/user-activities/save',\n\n // Portal Activity Categories\n portalActivityCategories: '/portal/activity-categories',\n\n // Portal Complaints\n portalComplaints: '/portal/complaints',\n\n // Portal Instruction\n portalInstructions: '/portal/instructions',\n\n // ----------------------------- Admin ----------------------------- //\n // Admin\n admin: '/admin',\n adminDashboard: '/admin/dashboard',\n adminProfile: '/admin/profile',\n adminStatistics: '/admin/statistics',\n adminStatisticsActivity: '/admin/statistics/activity',\n adminStatisticsParticipation: '/admin/statistics/participation',\n\n // Admin Activity\n adminActivities: '/admin/activities',\n adminActivityId: '/admin/activity/:id',\n adminActivityIdUpdate: '/admin/activity/:id/update',\n adminActivityCreation: '/admin/activity/creation',\n\n // Admin Activity Category\n adminActivityCategories: '/admin/activity-categories',\n adminActivityCategoryId: '/admin/activity-category/:id',\n adminActivityCategoryIdUpdate: '/admin/activity-category/:id/update',\n adminActivityCategoryCreation: '/admin/activity-category/creation',\n\n // Admin Activity Participant\n adminActivityParticipants: '/admin/activity/:id/participants',\n adminActivityIdSessionIdAttendanceCheck: '/admin/activity/:activity_id/session/:session_id/attendance-check',\n\n // Admin System User\n adminUsers: '/admin/users',\n adminUserId: '/admin/user/:id',\n adminUserCreation: '/admin/user/creation',\n\n // Admin System History\n adminSystemHistory: '/admin/system/history'\n}\n\nexport default BASE_PATHS\n","// Core\r\nimport { isRouteErrorResponse, Navigate, useRouteError } from 'react-router-dom'\r\n\r\n// App\r\nimport { Button } from '@src/components/ui/button'\r\nimport Err500Image from '@src/assets/images/error/err500.png'\r\n\r\n// Internal\r\nimport './RouterErrorBoundary.css'\r\nimport { BASE_PATHS } from '@src/constants/path'\r\n\r\n// Component\r\nconst RouterErrorBoundary = () => {\r\n const error = useRouteError()\r\n const isRouteError = isRouteErrorResponse(error)\r\n\r\n // Methods\r\n // Handle click\r\n const handleClick = () => {\r\n window.location.href = '/'\r\n }\r\n\r\n // Template\r\n if (isRouteError && error.status === 404) {\r\n return \r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Oops! Có lỗi xảy ra

\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default RouterErrorBoundary\r\n","// Core\r\nimport { FC } from 'react'\r\n\r\n// App\r\nimport { cn } from '@src/lib/utils'\r\n\r\n// Internal\r\nimport { LoadingProps } from './Loading.type'\r\nimport './Loading.css'\r\n\r\n// Component\r\nconst Loading: FC = ({ className }) => {\r\n // Template\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Loading\r\n","const CSS_VARIABLE_KEYS = [\r\n '--background',\r\n '--foreground',\r\n '--card',\r\n '--card-foreground',\r\n '--popover',\r\n '--popover-foreground',\r\n '--primary',\r\n '--primary-foreground',\r\n '--secondary',\r\n '--secondary-foreground',\r\n '--muted',\r\n '--muted-foreground',\r\n '--accent',\r\n '--accent-foreground',\r\n '--destructive',\r\n '--destructive-foreground',\r\n '--border',\r\n '--input',\r\n '--ring',\r\n '--chart-1',\r\n '--chart-2',\r\n '--chart-3',\r\n '--chart-4',\r\n '--chart-5'\r\n] as const\r\n\r\ntype CssVariableKey = (typeof CSS_VARIABLE_KEYS)[number]\r\n\r\ninterface ThemeType {\r\n name: string\r\n label: string\r\n activeColor: {\r\n light: string\r\n dark: string\r\n }\r\n cssVars: {\r\n light: Record\r\n dark: Record\r\n }\r\n}\r\n\r\nconst THEMES: ThemeType[] = [\r\n {\r\n name: 'default',\r\n label: 'Mặc định',\r\n activeColor: {\r\n light: '221.2 83.2% 53.3%',\r\n dark: '217.2 91.2% 59.8%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '222.2 84% 4.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '222.2 84% 4.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '222.2 84% 4.9%',\r\n '--primary': '221.2 83.2% 53.3%',\r\n '--primary-foreground': '210 40% 98%',\r\n '--secondary': '210 40% 96.1%',\r\n '--secondary-foreground': '222.2 47.4% 11.2%',\r\n '--muted': '210 40% 96.1%',\r\n '--muted-foreground': '215.4 16.3% 46.9%',\r\n '--accent': '210 40% 96.1%',\r\n '--accent-foreground': '222.2 47.4% 11.2%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '210 40% 98%',\r\n '--border': '214.3 31.8% 91.4%',\r\n '--input': '214.3 31.8% 91.4%',\r\n '--ring': '221.2 83.2% 53.3%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '222.2 84% 4.9%',\r\n '--foreground': '210 40% 98%',\r\n '--card': '222.2 84% 4.9%',\r\n '--card-foreground': '210 40% 98%',\r\n '--popover': '222.2 84% 4.9%',\r\n '--popover-foreground': '210 40% 98%',\r\n '--primary': '217.2 91.2% 59.8%',\r\n '--primary-foreground': '222.2 47.4% 11.2%',\r\n '--secondary': '217.2 32.6% 17.5%',\r\n '--secondary-foreground': '210 40% 98%',\r\n '--muted': '217.2 32.6% 17.5%',\r\n '--muted-foreground': '215 20.2% 65.1%',\r\n '--accent': '217.2 32.6% 17.5%',\r\n '--accent-foreground': '210 40% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '210 40% 98%',\r\n '--border': '217.2 32.6% 17.5%',\r\n '--input': '217.2 32.6% 17.5%',\r\n '--ring': '224.3 76.3% 48%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'zinc',\r\n label: 'Zinc',\r\n activeColor: {\r\n light: '240 5.9% 10%',\r\n dark: '240 5.2% 33.9%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '240 10% 3.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '240 10% 3.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '240 10% 3.9%',\r\n '--primary': '240 5.9% 10%',\r\n '--primary-foreground': '0 0% 98%',\r\n '--secondary': '240 4.8% 95.9%',\r\n '--secondary-foreground': '240 5.9% 10%',\r\n '--muted': '240 4.8% 95.9%',\r\n '--muted-foreground': '240 3.8% 46.1%',\r\n '--accent': '240 4.8% 95.9%',\r\n '--accent-foreground': '240 5.9% 10%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '240 5.9% 90%',\r\n '--input': '240 5.9% 90%',\r\n '--ring': '240 5.9% 10%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '240 10% 3.9%',\r\n '--foreground': '0 0% 98%',\r\n '--card': '240 10% 3.9%',\r\n '--card-foreground': '0 0% 98%',\r\n '--popover': '240 10% 3.9%',\r\n '--popover-foreground': '0 0% 98%',\r\n '--primary': '0 0% 98%',\r\n '--primary-foreground': '240 5.9% 10%',\r\n '--secondary': '240 3.7% 15.9%',\r\n '--secondary-foreground': '0 0% 98%',\r\n '--muted': '240 3.7% 15.9%',\r\n '--muted-foreground': '240 5% 64.9%',\r\n '--accent': '240 3.7% 15.9%',\r\n '--accent-foreground': '0 0% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '240 3.7% 15.9%',\r\n '--input': '240 3.7% 15.9%',\r\n '--ring': '240 4.9% 83.9%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'slate',\r\n label: 'Slate',\r\n activeColor: {\r\n light: '215.4 16.3% 46.9%',\r\n dark: '215.3 19.3% 34.5%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '222.2 84% 4.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '222.2 84% 4.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '222.2 84% 4.9%',\r\n '--primary': '222.2 47.4% 11.2%',\r\n '--primary-foreground': '210 40% 98%',\r\n '--secondary': '210 40% 96.1%',\r\n '--secondary-foreground': '222.2 47.4% 11.2%',\r\n '--muted': '210 40% 96.1%',\r\n '--muted-foreground': '215.4 16.3% 46.9%',\r\n '--accent': '210 40% 96.1%',\r\n '--accent-foreground': '222.2 47.4% 11.2%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '210 40% 98%',\r\n '--border': '214.3 31.8% 91.4%',\r\n '--input': '214.3 31.8% 91.4%',\r\n '--ring': '222.2 84% 4.9%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '222.2 84% 4.9%',\r\n '--foreground': '210 40% 98%',\r\n '--card': '222.2 84% 4.9%',\r\n '--card-foreground': '210 40% 98%',\r\n '--popover': '222.2 84% 4.9%',\r\n '--popover-foreground': '210 40% 98%',\r\n '--primary': '210 40% 98%',\r\n '--primary-foreground': '222.2 47.4% 11.2%',\r\n '--secondary': '217.2 32.6% 17.5%',\r\n '--secondary-foreground': '210 40% 98%',\r\n '--muted': '217.2 32.6% 17.5%',\r\n '--muted-foreground': '215 20.2% 65.1%',\r\n '--accent': '217.2 32.6% 17.5%',\r\n '--accent-foreground': '210 40% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '210 40% 98%',\r\n '--border': '217.2 32.6% 17.5%',\r\n '--input': '217.2 32.6% 17.5%',\r\n '--ring': '212.7 26.8% 83.9',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'stone',\r\n label: 'Stone',\r\n activeColor: {\r\n light: '25 5.3% 44.7%',\r\n dark: '33.3 5.5% 32.4%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '20 14.3% 4.1%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '20 14.3% 4.1%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '20 14.3% 4.1%',\r\n '--primary': '24 9.8% 10%',\r\n '--primary-foreground': '60 9.1% 97.8%',\r\n '--secondary': '60 4.8% 95.9%',\r\n '--secondary-foreground': '24 9.8% 10%',\r\n '--muted': '60 4.8% 95.9%',\r\n '--muted-foreground': '25 5.3% 44.7%',\r\n '--accent': '60 4.8% 95.9%',\r\n '--accent-foreground': '24 9.8% 10%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '60 9.1% 97.8%',\r\n '--border': '20 5.9% 90%',\r\n '--input': '20 5.9% 90%',\r\n '--ring': '20 14.3% 4.1%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '20 14.3% 4.1%',\r\n '--foreground': '60 9.1% 97.8%',\r\n '--card': '20 14.3% 4.1%',\r\n '--card-foreground': '60 9.1% 97.8%',\r\n '--popover': '20 14.3% 4.1%',\r\n '--popover-foreground': '60 9.1% 97.8%',\r\n '--primary': '60 9.1% 97.8%',\r\n '--primary-foreground': '24 9.8% 10%',\r\n '--secondary': '12 6.5% 15.1%',\r\n '--secondary-foreground': '60 9.1% 97.8%',\r\n '--muted': '12 6.5% 15.1%',\r\n '--muted-foreground': '24 5.4% 63.9%',\r\n '--accent': '12 6.5% 15.1%',\r\n '--accent-foreground': '60 9.1% 97.8%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '60 9.1% 97.8%',\r\n '--border': '12 6.5% 15.1%',\r\n '--input': '12 6.5% 15.1%',\r\n '--ring': '24 5.7% 82.9%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'gray',\r\n label: 'Gray',\r\n activeColor: {\r\n light: '220 8.9% 46.1%',\r\n dark: '215 13.8% 34.1%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '224 71.4% 4.1%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '224 71.4% 4.1%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '224 71.4% 4.1%',\r\n '--primary': '220.9 39.3% 11%',\r\n '--primary-foreground': '210 20% 98%',\r\n '--secondary': '220 14.3% 95.9%',\r\n '--secondary-foreground': '220.9 39.3% 11%',\r\n '--muted': '220 14.3% 95.9%',\r\n '--muted-foreground': '220 8.9% 46.1%',\r\n '--accent': '220 14.3% 95.9%',\r\n '--accent-foreground': '220.9 39.3% 11%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '210 20% 98%',\r\n '--border': '220 13% 91%',\r\n '--input': '220 13% 91%',\r\n '--ring': '224 71.4% 4.1%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '224 71.4% 4.1%',\r\n '--foreground': '210 20% 98%',\r\n '--card': '224 71.4% 4.1%',\r\n '--card-foreground': '210 20% 98%',\r\n '--popover': '224 71.4% 4.1%',\r\n '--popover-foreground': '210 20% 98%',\r\n '--primary': '210 20% 98%',\r\n '--primary-foreground': '220.9 39.3% 11%',\r\n '--secondary': '215 27.9% 16.9%',\r\n '--secondary-foreground': '210 20% 98%',\r\n '--muted': '215 27.9% 16.9%',\r\n '--muted-foreground': '217.9 10.6% 64.9%',\r\n '--accent': '215 27.9% 16.9%',\r\n '--accent-foreground': '210 20% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '210 20% 98%',\r\n '--border': '215 27.9% 16.9%',\r\n '--input': '215 27.9% 16.9%',\r\n '--ring': '216 12.2% 83.9%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'neutral',\r\n label: 'Neutral',\r\n activeColor: {\r\n light: '0 0% 45.1%',\r\n dark: '0 0% 32.2%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '0 0% 3.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '0 0% 3.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '0 0% 3.9%',\r\n '--primary': '0 0% 9%',\r\n '--primary-foreground': '0 0% 98%',\r\n '--secondary': '0 0% 96.1%',\r\n '--secondary-foreground': '0 0% 9%',\r\n '--muted': '0 0% 96.1%',\r\n '--muted-foreground': '0 0% 45.1%',\r\n '--accent': '0 0% 96.1%',\r\n '--accent-foreground': '0 0% 9%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '0 0% 89.8%',\r\n '--input': '0 0% 89.8%',\r\n '--ring': '0 0% 3.9%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '0 0% 3.9%',\r\n '--foreground': '0 0% 98%',\r\n '--card': '0 0% 3.9%',\r\n '--card-foreground': '0 0% 98%',\r\n '--popover': '0 0% 3.9%',\r\n '--popover-foreground': '0 0% 98%',\r\n '--primary': '0 0% 98%',\r\n '--primary-foreground': '0 0% 9%',\r\n '--secondary': '0 0% 14.9%',\r\n '--secondary-foreground': '0 0% 98%',\r\n '--muted': '0 0% 14.9%',\r\n '--muted-foreground': '0 0% 63.9%',\r\n '--accent': '0 0% 14.9%',\r\n '--accent-foreground': '0 0% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '0 0% 14.9%',\r\n '--input': '0 0% 14.9%',\r\n '--ring': '0 0% 83.1%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'red',\r\n label: 'Red',\r\n activeColor: {\r\n light: '0 72.2% 50.6%',\r\n dark: '0 72.2% 50.6%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '0 0% 3.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '0 0% 3.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '0 0% 3.9%',\r\n '--primary': '0 72.2% 50.6%',\r\n '--primary-foreground': '0 85.7% 97.3%',\r\n '--secondary': '0 0% 96.1%',\r\n '--secondary-foreground': '0 0% 9%',\r\n '--muted': '0 0% 96.1%',\r\n '--muted-foreground': '0 0% 45.1%',\r\n '--accent': '0 0% 96.1%',\r\n '--accent-foreground': '0 0% 9%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '0 0% 89.8%',\r\n '--input': '0 0% 89.8%',\r\n '--ring': '0 72.2% 50.6%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '0 0% 3.9%',\r\n '--foreground': '0 0% 98%',\r\n '--card': '0 0% 3.9%',\r\n '--card-foreground': '0 0% 98%',\r\n '--popover': '0 0% 3.9%',\r\n '--popover-foreground': '0 0% 98%',\r\n '--primary': '0 72.2% 50.6%',\r\n '--primary-foreground': '0 85.7% 97.3%',\r\n '--secondary': '0 0% 14.9%',\r\n '--secondary-foreground': '0 0% 98%',\r\n '--muted': '0 0% 14.9%',\r\n '--muted-foreground': '0 0% 63.9%',\r\n '--accent': '0 0% 14.9%',\r\n '--accent-foreground': '0 0% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '0 0% 14.9%',\r\n '--input': '0 0% 14.9%',\r\n '--ring': '0 72.2% 50.6%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'rose',\r\n label: 'Rose',\r\n activeColor: {\r\n light: '346.8 77.2% 49.8%',\r\n dark: '346.8 77.2% 49.8%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '240 10% 3.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '240 10% 3.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '240 10% 3.9%',\r\n '--primary': '346.8 77.2% 49.8%',\r\n '--primary-foreground': '355.7 100% 97.3%',\r\n '--secondary': '240 4.8% 95.9%',\r\n '--secondary-foreground': '240 5.9% 10%',\r\n '--muted': '240 4.8% 95.9%',\r\n '--muted-foreground': '240 3.8% 46.1%',\r\n '--accent': '240 4.8% 95.9%',\r\n '--accent-foreground': '240 5.9% 10%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '240 5.9% 90%',\r\n '--input': '240 5.9% 90%',\r\n '--ring': '346.8 77.2% 49.8%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '20 14.3% 4.1%',\r\n '--foreground': '0 0% 95%',\r\n '--popover': '0 0% 9%',\r\n '--popover-foreground': '0 0% 95%',\r\n '--card': '24 9.8% 10%',\r\n '--card-foreground': '0 0% 95%',\r\n '--primary': '346.8 77.2% 49.8%',\r\n '--primary-foreground': '355.7 100% 97.3%',\r\n '--secondary': '240 3.7% 15.9%',\r\n '--secondary-foreground': '0 0% 98%',\r\n '--muted': '0 0% 15%',\r\n '--muted-foreground': '240 5% 64.9%',\r\n '--accent': '12 6.5% 15.1%',\r\n '--accent-foreground': '0 0% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '0 85.7% 97.3%',\r\n '--border': '240 3.7% 15.9%',\r\n '--input': '240 3.7% 15.9%',\r\n '--ring': '346.8 77.2% 49.8%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'orange',\r\n label: 'Orange',\r\n activeColor: {\r\n light: '24.6 95% 53.1%',\r\n dark: '20.5 90.2% 48.2%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '20 14.3% 4.1%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '20 14.3% 4.1%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '20 14.3% 4.1%',\r\n '--primary': '24.6 95% 53.1%',\r\n '--primary-foreground': '60 9.1% 97.8%',\r\n '--secondary': '60 4.8% 95.9%',\r\n '--secondary-foreground': '24 9.8% 10%',\r\n '--muted': '60 4.8% 95.9%',\r\n '--muted-foreground': '25 5.3% 44.7%',\r\n '--accent': '60 4.8% 95.9%',\r\n '--accent-foreground': '24 9.8% 10%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '60 9.1% 97.8%',\r\n '--border': '20 5.9% 90%',\r\n '--input': '20 5.9% 90%',\r\n '--ring': '24.6 95% 53.1%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '20 14.3% 4.1%',\r\n '--foreground': '60 9.1% 97.8%',\r\n '--card': '20 14.3% 4.1%',\r\n '--card-foreground': '60 9.1% 97.8%',\r\n '--popover': '20 14.3% 4.1%',\r\n '--popover-foreground': '60 9.1% 97.8%',\r\n '--primary': '20.5 90.2% 48.2%',\r\n '--primary-foreground': '60 9.1% 97.8%',\r\n '--secondary': '12 6.5% 15.1%',\r\n '--secondary-foreground': '60 9.1% 97.8%',\r\n '--muted': '12 6.5% 15.1%',\r\n '--muted-foreground': '24 5.4% 63.9%',\r\n '--accent': '12 6.5% 15.1%',\r\n '--accent-foreground': '60 9.1% 97.8%',\r\n '--destructive': '0 72.2% 50.6%',\r\n '--destructive-foreground': '60 9.1% 97.8%',\r\n '--border': '12 6.5% 15.1%',\r\n '--input': '12 6.5% 15.1%',\r\n '--ring': '20.5 90.2% 48.2%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'green',\r\n label: 'Green',\r\n activeColor: {\r\n light: '142.1 76.2% 36.3%',\r\n dark: '142.1 70.6% 45.3%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '240 10% 3.9%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '240 10% 3.9%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '240 10% 3.9%',\r\n '--primary': '142.1 76.2% 36.3%',\r\n '--primary-foreground': '355.7 100% 97.3%',\r\n '--secondary': '240 4.8% 95.9%',\r\n '--secondary-foreground': '240 5.9% 10%',\r\n '--muted': '240 4.8% 95.9%',\r\n '--muted-foreground': '240 3.8% 46.1%',\r\n '--accent': '240 4.8% 95.9%',\r\n '--accent-foreground': '240 5.9% 10%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '0 0% 98%',\r\n '--border': '240 5.9% 90%',\r\n '--input': '240 5.9% 90%',\r\n '--ring': '142.1 76.2% 36.3%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '20 14.3% 4.1%',\r\n '--foreground': '0 0% 95%',\r\n '--popover': '0 0% 9%',\r\n '--popover-foreground': '0 0% 95%',\r\n '--card': '24 9.8% 10%',\r\n '--card-foreground': '0 0% 95%',\r\n '--primary': '142.1 70.6% 45.3%',\r\n '--primary-foreground': '144.9 80.4% 10%',\r\n '--secondary': '240 3.7% 15.9%',\r\n '--secondary-foreground': '0 0% 98%',\r\n '--muted': '0 0% 15%',\r\n '--muted-foreground': '240 5% 64.9%',\r\n '--accent': '12 6.5% 15.1%',\r\n '--accent-foreground': '0 0% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '0 85.7% 97.3%',\r\n '--border': '240 3.7% 15.9%',\r\n '--input': '240 3.7% 15.9%',\r\n '--ring': '142.4 71.8% 29.2%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'yellow',\r\n label: 'Yellow',\r\n activeColor: {\r\n light: '47.9 95.8% 53.1%',\r\n dark: '47.9 95.8% 53.1%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '20 14.3% 4.1%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '20 14.3% 4.1%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '20 14.3% 4.1%',\r\n '--primary': '47.9 95.8% 53.1%',\r\n '--primary-foreground': '26 83.3% 14.1%',\r\n '--secondary': '60 4.8% 95.9%',\r\n '--secondary-foreground': '24 9.8% 10%',\r\n '--muted': '60 4.8% 95.9%',\r\n '--muted-foreground': '25 5.3% 44.7%',\r\n '--accent': '60 4.8% 95.9%',\r\n '--accent-foreground': '24 9.8% 10%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '60 9.1% 97.8%',\r\n '--border': '20 5.9% 90%',\r\n '--input': '20 5.9% 90%',\r\n '--ring': '20 14.3% 4.1%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '20 14.3% 4.1%',\r\n '--foreground': '60 9.1% 97.8%',\r\n '--card': '20 14.3% 4.1%',\r\n '--card-foreground': '60 9.1% 97.8%',\r\n '--popover': '20 14.3% 4.1%',\r\n '--popover-foreground': '60 9.1% 97.8%',\r\n '--primary': '47.9 95.8% 53.1%',\r\n '--primary-foreground': '26 83.3% 14.1%',\r\n '--secondary': '12 6.5% 15.1%',\r\n '--secondary-foreground': '60 9.1% 97.8%',\r\n '--muted': '12 6.5% 15.1%',\r\n '--muted-foreground': '24 5.4% 63.9%',\r\n '--accent': '12 6.5% 15.1%',\r\n '--accent-foreground': '60 9.1% 97.8%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '60 9.1% 97.8%',\r\n '--border': '12 6.5% 15.1%',\r\n '--input': '12 6.5% 15.1%',\r\n '--ring': '35.5 91.7% 32.9%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n },\r\n {\r\n name: 'violet',\r\n label: 'Violet',\r\n activeColor: {\r\n light: '262.1 83.3% 57.8%',\r\n dark: '263.4 70% 50.4%'\r\n },\r\n cssVars: {\r\n light: {\r\n '--background': '0 0% 100%',\r\n '--foreground': '224 71.4% 4.1%',\r\n '--card': '0 0% 100%',\r\n '--card-foreground': '224 71.4% 4.1%',\r\n '--popover': '0 0% 100%',\r\n '--popover-foreground': '224 71.4% 4.1%',\r\n '--primary': '262.1 83.3% 57.8%',\r\n '--primary-foreground': '210 20% 98%',\r\n '--secondary': '220 14.3% 95.9%',\r\n '--secondary-foreground': '220.9 39.3% 11%',\r\n '--muted': '220 14.3% 95.9%',\r\n '--muted-foreground': '220 8.9% 46.1%',\r\n '--accent': '220 14.3% 95.9%',\r\n '--accent-foreground': '220.9 39.3% 11%',\r\n '--destructive': '0 84.2% 60.2%',\r\n '--destructive-foreground': '210 20% 98%',\r\n '--border': '220 13% 91%',\r\n '--input': '220 13% 91%',\r\n '--ring': '262.1 83.3% 57.8%',\r\n '--chart-1': '12 76% 61%',\r\n '--chart-2': '173 58% 39%',\r\n '--chart-3': '197 37% 24%',\r\n '--chart-4': '43 74% 66%',\r\n '--chart-5': '27 87% 67%'\r\n },\r\n dark: {\r\n '--background': '224 71.4% 4.1%',\r\n '--foreground': '210 20% 98%',\r\n '--card': '224 71.4% 4.1%',\r\n '--card-foreground': '210 20% 98%',\r\n '--popover': '224 71.4% 4.1%',\r\n '--popover-foreground': '210 20% 98%',\r\n '--primary': '263.4 70% 50.4%',\r\n '--primary-foreground': '210 20% 98%',\r\n '--secondary': '215 27.9% 16.9%',\r\n '--secondary-foreground': '210 20% 98%',\r\n '--muted': '215 27.9% 16.9%',\r\n '--muted-foreground': '217.9 10.6% 64.9%',\r\n '--accent': '215 27.9% 16.9%',\r\n '--accent-foreground': '210 20% 98%',\r\n '--destructive': '0 62.8% 30.6%',\r\n '--destructive-foreground': '210 20% 98%',\r\n '--border': '215 27.9% 16.9%',\r\n '--input': '215 27.9% 16.9%',\r\n '--ring': '263.4 70% 50.4%',\r\n '--chart-1': '220 70% 50%',\r\n '--chart-2': '160 60% 45%',\r\n '--chart-3': '30 80% 55%',\r\n '--chart-4': '280 65% 60%',\r\n '--chart-5': '340 75% 55%'\r\n }\r\n }\r\n }\r\n] as const\r\n\r\nexport { THEMES, CSS_VARIABLE_KEYS }\r\nexport type { ThemeType }\r\n","// Core\r\nimport { useEffect } from 'react'\r\nimport { useShallow } from 'zustand/react/shallow'\r\n\r\n// App\r\nimport { useWebsiteConfigStore } from '@src/stores'\r\nimport { CSS_VARIABLE_KEYS, THEMES } from '@src/lib/themes'\r\n\r\n// Component\r\nconst ThemeProvider = () => {\r\n // Stores\r\n // Client\r\n const websiteConfigStore = useWebsiteConfigStore(\r\n useShallow(({ theme, previewTheme }) => ({\r\n theme,\r\n previewTheme\r\n }))\r\n )\r\n\r\n // Effects\r\n useEffect(() => {\r\n const appTheme = websiteConfigStore.previewTheme ?? websiteConfigStore.theme\r\n if (!appTheme || appTheme === 'default') {\r\n for (const cssVariableKey of CSS_VARIABLE_KEYS) {\r\n document.documentElement.style.removeProperty(cssVariableKey)\r\n }\r\n return\r\n }\r\n\r\n const selectedTheme = THEMES.find((theme) => theme.name === appTheme)\r\n if (selectedTheme) {\r\n for (const [key, value] of Object.entries(selectedTheme.cssVars.light)) {\r\n document.documentElement.style.setProperty(key, value)\r\n }\r\n }\r\n }, [websiteConfigStore])\r\n\r\n // Template\r\n return null\r\n}\r\n\r\nexport default ThemeProvider\r\n","// Core\r\nimport { FC } from 'react'\r\nimport TopBarProgress from 'react-topbar-progress-indicator'\r\n\r\n// Internal\r\nimport { PropsType } from './lib/types'\r\nimport { useNavigation } from 'react-router-dom'\r\n\r\nTopBarProgress.config({\r\n barColors: {\r\n '0': 'hsl(221.2 83.2% 53.3%)',\r\n '1': 'hsl(221.2 83.2% 53.3%)'\r\n }\r\n})\r\n\r\n// Component\r\nconst NavigationProgressBarProvider: FC = () => {\r\n const navigation = useNavigation()\r\n\r\n // Template\r\n return navigation.state === 'loading' ? : null\r\n}\r\n\r\nexport default NavigationProgressBarProvider\r\n","// Core\r\nimport { useEffect } from 'react'\r\nimport { Outlet } from 'react-router-dom'\r\n\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/vi\";\r\ndayjs.locale(\"vi\");\r\n\r\n// App\r\nimport { useAuthStore } from '@src/stores'\r\nimport { useFetchUserInformation } from '@src/lib/hooks'\r\nimport { AppLoadingIcon, AppNavigationProgressBarProvider, AppThemeProvider } from '@src/components'\r\n\r\nimport { CssBaseline, ThemeProvider } from \"@mui/material\";\r\nimport { createTheme } from \"@mui/material/styles\";\r\n\r\n// Custom Theme\r\nconst theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: \"#1976d2\",\r\n },\r\n secondary: {\r\n main: \"#dc004e\",\r\n },\r\n background: {\r\n default: \"#f4f6f8\",\r\n },\r\n },\r\n});\r\n\r\n// Component\r\nconst App = () => {\r\n const {\r\n handleFetchUserInformation,\r\n isError: isFetchUserInformationError,\r\n isFetching: isFetchingUserInformation\r\n } = useFetchUserInformation()\r\n\r\n // Stores\r\n // Client\r\n const isLoggedIn = useAuthStore(({ isLoggedIn }) => isLoggedIn)\r\n\r\n // Effects\r\n useEffect(() => {\r\n console.log(\"Rebuild\")\r\n }, [])\r\n\r\n // Handle fetch user information on the first mount if user is logged in\r\n useEffect(() => {\r\n if (isLoggedIn) {\r\n handleFetchUserInformation()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // Template\r\n // Fetching\r\n if (isFetchingUserInformation) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n // Error\r\n if (isFetchUserInformationError) {\r\n window.location.href = '/'\r\n // return
Có lỗi xảy ra, vui lòng tải lại trang.
\r\n }\r\n\r\n // Finally\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default App\r\n","import { BASE_PATHS } from '@src/constants/path'\nimport { Navigate, RouteObject } from 'react-router-dom'\n\n// Routes\nconst authenticationRoutes: RouteObject = {\n path: BASE_PATHS.auth,\n lazy: async () => {\n const { default: Component } = await import('@src/app/pages/authentication')\n return {\n element: \n }\n },\n children: [\n {\n index: true,\n element: \n },\n {\n path: BASE_PATHS.authSignIn,\n lazy: async () => {\n const { default: Component } = await import('@src/app/pages/authentication/pages/sign-in')\n return {\n element: \n }\n }\n }\n ]\n}\n\nexport default authenticationRoutes\n","import { BASE_PATHS } from '@src/constants/path'\r\nimport { RouteObject } from 'react-router-dom'\r\n\r\n// Routes\r\nconst userRoutes: RouteObject = {\r\n path: BASE_PATHS.portal,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user')\r\n return { element: }\r\n },\r\n children: [\r\n {\r\n index: true,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/home')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.portalUserProfile,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/user/profile')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.portalUserActivity,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/user/my-activity')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.portalUserStatistics,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/user/statistics')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.portalActivities,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/activities/activities-list')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.portalActivities,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/activities/activities-list')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.portalActivityDetailId,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/user/pages/activities/activity-detail')\r\n return { element: }\r\n }\r\n }\r\n ]\r\n}\r\n\r\nexport default userRoutes\r\n","import { BASE_PATHS } from '@src/constants/path'\r\nimport { RouteObject } from 'react-router-dom'\r\n\r\n// Routes\r\nconst adminRoutes: RouteObject = {\r\n path: BASE_PATHS.admin,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin')\r\n return { element: }\r\n },\r\n children: [\r\n {\r\n index: true,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/home')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminDashboard,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/home')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminProfile,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/user/profile')\r\n return { element: }\r\n }\r\n },\r\n // ----------------------- Statistic -----------------------\r\n {\r\n path: BASE_PATHS.adminStatisticsActivity,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/statistics/activity-statistics')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminStatisticsParticipation,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/statistics/participation-statistics')\r\n return { element: }\r\n }\r\n },\r\n // ----------------------- System Management -----------------------\r\n {\r\n path: BASE_PATHS.adminUsers,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/system-management/user/user-list')\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminSystemHistory,\r\n lazy: async () => {\r\n const { default: Component } = await import('@src/app/pages/admin/pages/system-management/history/history-list')\r\n return { element: }\r\n }\r\n },\r\n // ----------------------- Activity Management -----------------------\r\n // -- Activity --\r\n {\r\n path: BASE_PATHS.adminActivities,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity/list'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityCreation,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity/creation'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityId,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity/detail'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityIdUpdate,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity/update'\r\n )\r\n return { element: }\r\n }\r\n },\r\n\r\n // -- Activity Category --\r\n {\r\n path: BASE_PATHS.adminActivityCategories,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity-category/list'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityCategoryCreation,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity-category/creation'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityCategoryId,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity-category/detail'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityCategoryIdUpdate,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity-category/update'\r\n )\r\n return { element: }\r\n }\r\n },\r\n\r\n // -- Activity Participant --\r\n {\r\n path: BASE_PATHS.adminActivityParticipants,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity-participant/list'\r\n )\r\n return { element: }\r\n }\r\n },\r\n {\r\n path: BASE_PATHS.adminActivityIdSessionIdAttendanceCheck,\r\n lazy: async () => {\r\n const { default: Component } = await import(\r\n '@src/app/pages/admin/pages/activity-management/activity-attendance-check/list'\r\n )\r\n return { element: }\r\n }\r\n },\r\n ]\r\n}\r\n\r\nexport default adminRoutes\r\n","// Core\nimport { Navigate, RouteObject } from 'react-router-dom'\n\n// App\nimport App from '@src/app'\nimport { AppRouterErrorBoundary } from '@src/components'\n\n// Internal\nimport authRoutes from '../pages/authentication/lib/routes'\nimport userRoutes from '../pages/user/lib/routes'\nimport adminRoutes from '../pages/admin/lib/routes'\nimport { BASE_PATHS } from '@src/constants/path'\n\n// Deploy: Portal\nconst portalRoutesList = [\n {\n element: ,\n index: true\n },\n userRoutes\n]\n\n// Deploy: Admin\nconst adminRoutesList = [\n {\n element: ,\n index: true\n },\n adminRoutes\n]\n\n// Routes\nconst appRoutes: RouteObject[] = [\n {\n path: '/',\n element: ,\n ErrorBoundary: AppRouterErrorBoundary,\n children: [\n authRoutes,\n // Deploy: Portal\n ...portalRoutesList,\n // Deploy: Admin\n ...adminRoutesList\n ]\n }\n]\n\nexport default appRoutes\n","// Core\r\nimport { createBrowserRouter } from 'react-router-dom'\r\n\r\n// App\r\nimport routes from '@src/app/lib/routes'\r\n\r\n// Router\r\nconst router = createBrowserRouter(routes)\r\n\r\nexport default router\r\n","// Core\r\nimport ReactDOM from 'react-dom/client'\r\nimport { StrictMode, Suspense } from 'react'\r\nimport { RouterProvider } from 'react-router-dom'\r\nimport { Toaster } from '@src/components/ui/sonner'\r\nimport { QueryClientProvider } from '@tanstack/react-query'\r\nimport TopBarProgress from 'react-topbar-progress-indicator'\r\n// import { ReactQueryDevtools } from '@tanstack/react-query-devtools'\r\n\r\n// App\r\nimport router from '@src/router'\r\nimport { queryClient } from '@src/configs'\r\n\r\n// Internal\r\nimport './styles/index.css'\r\n\r\n// Root\r\nReactDOM.createRoot(document.getElementById('root')!).render(\r\n \r\n }>\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n)\r\n"],"file":"assets/index-yypCsrNa.js"}