import * as React from "react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { AuthProvider, useAuth, AuthPage } from "../auth/src"; import { UploadProvider } from "./providers/UploadProvider"; import AdminLayout from "./components/AdminLayout"; import ResourceView from "./components/ResourceView"; import { getAppConfig } from "./config"; import { initializeApiClients } from "./api/client"; import { AppConfig } from "./types/config"; import { Box, Typography, Paper, CircularProgress } from "@mui/material"; import AppTheme from "../src/shared-theme/AppTheme"; const queryClient = new QueryClient(); // Create a context for the app config export const ConfigContext = React.createContext(null); function Dashboard() { const config = React.useContext(ConfigContext); return ( Welcome to the Admin Panel Select a resource from the sidebar to manage data. {config?.resources.map((res) => ( {res.pluralLabel} ))} ); } function AdminApp() { const { currentUser, login, logout, loading, error } = useAuth(); const config = React.useContext(ConfigContext); const [selectedResourceName, setSelectedResourceName] = React.useState< string | null >(null); if (!currentUser) { return ( {}} // Disable registration for Admin loading={loading} error={error} onSwitchMode={() => {}} onBack={() => {}} currentUser={null} /> ); } const selectedResource = config?.resources.find( (r) => r.name === selectedResourceName ); return ( {selectedResource ? ( ) : ( )} ); } export default function App() { const [config, setConfig] = React.useState(null); React.useEffect(() => { getAppConfig().then((cfg) => { initializeApiClients(cfg.baseUrl, cfg.authBaseUrl); setConfig(cfg); }); }, []); if (!config) { return ( ); } return ( ); }