import { useIsFetching, useIsMutating } from "@tanstack/react-query"; import { useRouterState } from "@tanstack/react-router"; import { useEffect, useRef, useState } from "react"; import { cn } from "@/lib/utils"; export function LoadingBar() { const isNavigating = useRouterState({ select: (s) => s.status === "pending", }); const isFetching = useIsFetching(); const isMutating = useIsMutating(); const [visible, setVisible] = useState(false); const timerRef = useRef>(undefined); const loading = isNavigating || isFetching > 0 || isMutating > 0; useEffect(() => { if (loading) { timerRef.current = setTimeout(() => setVisible(true), 200); } else { clearTimeout(timerRef.current); setVisible(false); } return () => clearTimeout(timerRef.current); }, [loading]); return (