blockmatic/src/context/Loading.tsx
2024-12-26 23:32:25 +00:00

28 lines
772 B
TypeScript

import { createContext, ReactNode, useState } from "react";
import LoadingIndicator from "@/assets/loading.svg?react";
interface Context {
loading: boolean;
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
}
interface Props {
children: ReactNode;
}
export const LoadingContext = createContext<Context>({} as Context);
export const LoadingProvider = ({ children }: Props) => {
const [loading, setLoading] = useState(true);
return (
<LoadingContext.Provider value={{ loading, setLoading }}>
{loading && (
<div className="absolute w-full h-full z-[9999] backdrop-brightness-50 flex justify-center items-center gap-4">
<LoadingIndicator fill="white" className="w-16 h-16" />
</div>
)}
{children}
</LoadingContext.Provider>
);
};