import * as React from 'react';
import { CoreAdminContext, CoreAdminContextProps } from './CoreAdminContext';
import { CoreAdminUI, CoreAdminUIProps } from './CoreAdminUI';
/**
* Main admin component, entry point to the application.
*
* Initializes the various contexts (auth, data, i18n, router)
* and defines the main routes.
*
* Expects a list of resources as children, or a function returning a list of
* resources based on the permissions.
*
* @example
*
* // static list of resources
*
* import {
* CoreAdmin,
* Resource,
* ListGuesser,
* useDataProvider,
* } from 'ra-core';
*
* const App = () => (
*
*
*
* );
*
* // dynamic list of resources based on permissions
*
* import {
* CoreAdmin,
* Resource,
* ListGuesser,
* useDataProvider,
* } from 'ra-core';
*
* const App = () => (
*
* {permissions => [
* ,
* ]}
*
* );
*
* // If you have to build a dynamic list of resources using a side effect,
* // you can't use . But as it delegates to sub components,
* // it's relatively straightforward to replace it:
*
* import * as React from 'react';
* import { useEffect, useState } from 'react';
* import {
* CoreAdminContext,
* CoreAdminUI,
* Resource,
* ListGuesser,
* useDataProvider,
* } from 'ra-core';
*
* const App = () => (
*
*
*
* );
*
* const UI = () => {
* const [resources, setResources] = useState([]);
* const dataProvider = useDataProvider();
* useEffect(() => {
* dataProvider.introspect().then(r => setResources(r));
* }, []);
*
* return (
*
* {resources.map(resource => (
*
* ))}
*
* );
* };
*/
export const CoreAdmin = (props: CoreAdminProps) => {
const {
authProvider,
basename,
catchAll,
children,
dashboard,
dataProvider,
disableTelemetry,
history,
i18nProvider,
queryClient,
layout,
loading,
loginPage,
menu, // deprecated, use a custom layout instead
ready,
requireAuth,
store,
title = 'React Admin',
} = props;
return (
{children}
);
};
export type CoreAdminProps = CoreAdminContextProps & CoreAdminUIProps;