Files
frontend/apps/fo/src/app/providers/app-provider.tsx
T

51 lines
1.7 KiB
TypeScript

"use client";
import { DndProvider } from "react-dnd";
import { MultiBackend, getBackendOptions } from "@minoru/react-dnd-treeview";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
import { ConfirmProvider } from "@frontend-opensource/use-react-hooks";
import { AuthWrapper } from "@/src/entities/auth/lib/auth-wrapper";
import { MenuWrapper } from "@/src/entities/menu";
import { PromptProvider, StoreProvider } from "@/src/shared/providers";
import { AlertDialog } from "@/src/shared/ui/alert-dialog";
import { PromptDialog } from "@/src/shared/ui/prompt-dialog";
import { ConfirmDialog } from "@/src/shared/ui/confirm-dialog";
import { StoreProvider as FoStoreProvider } from "@/app/store";
const AppProvider = ({ children }: Readonly<{ children: React.ReactNode }>) => {
const queryClient = new QueryClient();
return (
<QueryClientProvider client={queryClient}>
<StoreProvider>
<PromptProvider>
<ConfirmProvider>
<AuthWrapper>
<MenuWrapper>
<DndProvider
backend={MultiBackend}
options={getBackendOptions()}
>
<FoStoreProvider>
{children}
</FoStoreProvider>
</DndProvider>
</MenuWrapper>
<AlertDialog />
<PromptDialog />
<ConfirmDialog />
</AuthWrapper>
</ConfirmProvider>
</PromptProvider>
</StoreProvider>
<div className="text-2xl">
<ReactQueryDevtools initialIsOpen={false} />
</div>
</QueryClientProvider>
);
};
export { AppProvider };