import { QueryClientProvider } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import { OverlayProvider } from 'overlay-kit';
import type { PropsWithChildren } from 'react';

import { queryClient } from '@/shared/queryCache';
import { Toaster } from '@/shared/ui/sonner';
import { TooltipProvider } from '@/shared/ui/tooltip';

export const AppProviders = ({ children }: PropsWithChildren) => {
  return (
    <QueryClientProvider client={queryClient}>
      <TooltipProvider>
        <OverlayProvider>{children}</OverlayProvider>
      </TooltipProvider>
      <Toaster />
      {/* 이 패키지는 프로덕션 빌드에서 스스로 렌더를 멈추지만, 조건을 눈에 보이게 둔다 —
          화면 심사가 개발 서버를 보고 "프로덕션에 개발 도구가 남았다"고 잡은 적이 있다 */}
      {import.meta.env.DEV && <ReactQueryDevtools initialIsOpen={false} />}
    </QueryClientProvider>
  );
};
