xpeditis2.0/apps/frontend/src/components/providers.tsx
2026-08-13 12:26:46 +02:00

53 lines
1.6 KiB
TypeScript

/**
* Providers Component
*
* Client-side providers wrapper for the application
*/
'use client';
import { useState } from 'react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { AuthProvider } from '@/lib/context/auth-context';
import { SubscriptionProvider } from '@/lib/context/subscription-context';
import { CookieProvider } from '@/lib/context/cookie-context';
import CookieConsent from '@/components/CookieConsent';
import { ToastProvider } from '@/components/ui/toast';
import { TooltipProvider } from '@/components/ui/tooltip';
import { ConfirmProvider } from '@/components/ui/use-confirm';
export function Providers({ children }: { children: React.ReactNode }) {
// Create a client instance per component instance
// This ensures the QueryClient is stable across rerenders
const [queryClient] = useState(
() =>
new QueryClient({
defaultOptions: {
queries: {
staleTime: 60 * 1000, // 1 minute
refetchOnWindowFocus: false,
},
},
})
);
return (
<QueryClientProvider client={queryClient}>
<AuthProvider>
<SubscriptionProvider>
<CookieProvider>
<TooltipProvider delayDuration={300}>
<ToastProvider>
<ConfirmProvider>
{children}
<CookieConsent />
</ConfirmProvider>
</ToastProvider>
</TooltipProvider>
</CookieProvider>
</SubscriptionProvider>
</AuthProvider>
</QueryClientProvider>
);
}