"use client";

import { Provider } from "react-redux";
import { PersistGate } from "redux-persist/integration/react";
import { Toaster } from "react-hot-toast";
import { store, persistor } from "@/store";
import { PageLoader } from "@/components/shared/Loader";
import { AuthInitializer } from "@/components/layout/AuthInitializer";
import { AppThemeProvider } from "@/components/layout/AppThemeProvider";
import { SessionFlowGuard } from "@/components/layout/SessionFlowGuard";

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <Provider store={store}>
      <PersistGate loading={<PageLoader />} persistor={persistor}>
        <AppThemeProvider>
          <AuthInitializer>
            <SessionFlowGuard>{children}</SessionFlowGuard>
          </AuthInitializer>
          <Toaster
            position="top-right"
            toastOptions={{
              duration: 4000,
              className: '!bg-card !text-foreground !border !border-border !rounded-xl !text-sm !shadow-lg',
              success: {
                iconTheme: { primary: '#2B4C77', secondary: '#fff' },
              },
              error: {
                iconTheme: { primary: '#ef4444', secondary: '#fff' },
              },
            }}
          />
        </AppThemeProvider>
      </PersistGate>
    </Provider>
  );
}
