import { QueryClientProvider } from "@tanstack/react-query"; import type { ReactNode } from "react"; import { RouterProvider } from "react-router-dom"; import { queryClient } from "./app/queryClient"; import { router } from "./app/router"; import { Spinner } from "./components/Spinner"; import { ToastProvider } from "./context/ToastContext"; import { setAppTzOffsetHours } from "./domain/format"; import { useAuthConfig } from "./hooks/auth"; /** * Пояс приложения (APP_TZ_OFFSET_HOURS) приходит с сервера и нужен до первой отрисовки: * функции format.ts читают его синхронно (#68). Пока конфиг грузится — спиннер; если он * недоступен (нет сети), рендерим с запасным поясом, чтобы не запереть приложение. */ function AppTimeZone({ children }: { children: ReactNode }) { const { data, isPending } = useAuthConfig(); if (data) setAppTzOffsetHours(data.tz_offset_hours); if (isPending) return ; return <>{children}; } export function App() { return ( ); }