first commit
This commit is contained in:
61
packages/admin/src/App.tsx
Normal file
61
packages/admin/src/App.tsx
Normal file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* EmDash Admin React Application
|
||||
*
|
||||
* This is the main entry point for the admin SPA.
|
||||
* Uses TanStack Router for client-side routing and TanStack Query for data fetching.
|
||||
*
|
||||
* Plugin admin components are passed via the pluginAdmins prop and made
|
||||
* available throughout the app via PluginAdminContext.
|
||||
*/
|
||||
|
||||
import { Toasty } from "@cloudflare/kumo";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { RouterProvider } from "@tanstack/react-router";
|
||||
import * as React from "react";
|
||||
|
||||
import { ThemeProvider } from "./components/ThemeProvider";
|
||||
import { PluginAdminProvider, type PluginAdmins } from "./lib/plugin-context";
|
||||
import { createAdminRouter } from "./router";
|
||||
|
||||
// Create a query client
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: {
|
||||
staleTime: 1000 * 60, // 1 minute
|
||||
retry: 1,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Create the router with query client context
|
||||
const router = createAdminRouter(queryClient);
|
||||
|
||||
export interface AdminAppProps {
|
||||
/** Plugin admin modules keyed by plugin ID */
|
||||
pluginAdmins?: PluginAdmins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Main Admin Application
|
||||
*/
|
||||
const EMPTY_PLUGINS: PluginAdmins = {};
|
||||
|
||||
export function AdminApp({ pluginAdmins = EMPTY_PLUGINS }: AdminAppProps) {
|
||||
React.useEffect(() => {
|
||||
document.getElementById("emdash-boot-loader")?.remove();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<Toasty>
|
||||
<PluginAdminProvider pluginAdmins={pluginAdmins}>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<RouterProvider router={router} />
|
||||
</QueryClientProvider>
|
||||
</PluginAdminProvider>
|
||||
</Toasty>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export default AdminApp;
|
||||
Reference in New Issue
Block a user