import { ChakraProvider } from "@chakra-ui/react";
import { ThemeProvider } from "next-themes";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { system } from "./theme";
import { SocketProvider } from "@trustgraph/react-provider";
import { SettingsLoadingBoundary } from "./providers/SettingsLoadingBoundary";
import { ConnectionLoadingScreen } from "./providers/ConnectionLoadingScreen";
import {
NotificationProvider,
NotificationHandler,
useSettings,
} from "@trustgraph/react-state";
import { toaster } from "./components/ui/toaster";
const queryClient = new QueryClient();
// Notification handler implementation using Chakra UI toaster
const notificationHandler: NotificationHandler = {
success: (title: string) => {
toaster.create({
title: title,
type: "success",
});
},
error: (error: string) => {
toaster.create({
title: "Error: " + error,
type: "error",
});
},
warning: (warning: string) => {
toaster.create({
title: "Warning: " + warning,
type: "warning",
});
},
info: (info: string) => {
toaster.create({
title: info,
type: "info",
});
},
};
/**
* AppRoot component that configures SocketProvider with settings
*
* This component is wrapped by SettingsLoadingBoundary to ensure
* settings are loaded before attempting to connect to the socket.
*/
const AppRoot: React.FC = () => {
const { settings } = useSettings();
return (
}
>
);
};
ReactDOM.createRoot(document.getElementById("root")!).render(
,
);