A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
npx @tessl/cli install tessl/npm-react-admin@4.16.0React Admin is a comprehensive frontend framework for building admin applications on top of REST services. It provides a complete toolkit built on React, Material-UI, TypeScript, and React Hook Form, offering everything needed to create sophisticated admin interfaces with minimal code.
react-adminnpm install react-admin or yarn add react-adminReact Admin exports from multiple internal packages, providing a unified API:
// Main entry point
import { Admin, Resource } from 'react-admin';
// Core data hooks
import {
useGetList,
useGetOne,
useCreate,
useUpdate,
useDelete,
useDataProvider
} from 'react-admin';
// Authentication
import {
useAuthProvider,
useLogin,
useLogout,
usePermissions,
Authenticated
} from 'react-admin';
// Form components
import {
Form,
TextInput,
BooleanInput,
SelectInput,
DateInput,
SaveButton
} from 'react-admin';
// Display components
import {
List,
Datagrid,
TextField,
DateField,
BooleanField,
Show,
Edit,
Create
} from 'react-admin';
// Layout and UI
import {
Layout,
AppBar,
Sidebar,
Menu,
Title,
TopToolbar
} from 'react-admin';Here's a minimal React Admin application:
import { Admin, Resource, ListGuesser, EditGuesser, ShowGuesser } from 'react-admin';
import { dataProvider } from './dataProvider';
import { authProvider } from './authProvider';
const App = () => (
<Admin
dataProvider={dataProvider}
authProvider={authProvider}
title="My Admin App"
>
<Resource
name="posts"
list={ListGuesser}
edit={EditGuesser}
show={ShowGuesser}
/>
<Resource
name="users"
list={ListGuesser}
edit={EditGuesser}
show={ShowGuesser}
/>
</Admin>
);
export default App;The <Admin> component is the main entry point that sets up the entire application:
interface AdminProps {
authProvider?: AuthProvider;
dataProvider: DataProvider;
i18nProvider?: I18nProvider;
title?: string;
theme?: Theme;
layout?: LayoutComponent;
dashboard?: DashboardComponent;
loginPage?: LoginComponent | boolean;
catchAll?: CatchAllComponent;
loading?: LoadingComponent;
basename?: string;
children: React.ReactNode;
}
const Admin: React.FC<AdminProps>;Resources define the entities in your application:
interface ResourceProps {
name: string;
list?: React.ComponentType;
create?: React.ComponentType;
edit?: React.ComponentType;
show?: React.ComponentType;
icon?: React.ComponentType;
options?: ResourceOptions;
recordRepresentation?: string | RecordToStringFunction;
}
const Resource: React.FC<ResourceProps>;React Admin follows a modular architecture with several key layers:
React Admin provides comprehensive functionality across multiple domains:
Set up and configure your admin application with the main <Admin> component and define resources:
// Main admin setup
const Admin: React.FC<AdminProps>;
const Resource: React.FC<ResourceProps>;
// Core context and routing
const CoreAdmin: React.FC<CoreAdminProps>;
const CoreAdminContext: React.FC<CoreAdminContextProps>;
const CustomRoutes: React.FC<{ children: React.ReactNode }>;Handle all data operations with powerful hooks and providers:
// Query hooks
const useGetList: (resource: string, params?: GetListParams) => UseQueryResult<GetListResult>;
const useGetOne: (resource: string, params: GetOneParams) => UseQueryResult<GetOneResult>;
const useGetMany: (resource: string, params: GetManyParams) => UseQueryResult<GetManyResult>;
// Mutation hooks
const useCreate: (resource?: string, options?: UseCreateOptions) => CreateMutationResult;
const useUpdate: (resource?: string, options?: UseUpdateOptions) => UpdateMutationResult;
const useDelete: (resource?: string, options?: UseDeleteOptions) => DeleteMutationResult;
// Data provider interface
interface DataProvider {
getList: (resource: string, params: GetListParams) => Promise<GetListResult>;
getOne: (resource: string, params: GetOneParams) => Promise<GetOneResult>;
getMany: (resource: string, params: GetManyParams) => Promise<GetManyResult>;
create: (resource: string, params: CreateParams) => Promise<CreateResult>;
update: (resource: string, params: UpdateParams) => Promise<UpdateResult>;
delete: (resource: string, params: DeleteParams) => Promise<DeleteResult>;
}Secure your application with flexible authentication and permission systems:
// Auth hooks
const useLogin: () => LoginFunction;
const useLogout: () => LogoutFunction;
const useAuthState: () => AuthStateResult;
const usePermissions: () => PermissionsResult;
// Auth components
const Authenticated: React.FC<{ children: React.ReactNode }>;
const Login: React.FC<LoginProps>;
// Auth provider interface
interface AuthProvider {
login: (params: any) => Promise<any>;
logout: (params?: any) => Promise<void>;
checkAuth: (params?: any) => Promise<void>;
checkError: (error: any) => Promise<void>;
getPermissions: (params?: any) => Promise<any>;
getIdentity?: () => Promise<UserIdentity>;
}Build sophisticated forms with validation, relationships, and rich input components:
// Form components
const Form: React.FC<FormProps>;
const TextInput: React.FC<TextInputProps>;
const NumberInput: React.FC<NumberInputProps>;
const BooleanInput: React.FC<BooleanInputProps>;
const SelectInput: React.FC<SelectInputProps>;
const ReferenceInput: React.FC<ReferenceInputProps>;
const AutocompleteInput: React.FC<AutocompleteInputProps>;
// Form hooks
const useInput: (props: UseInputProps) => UseInputResult;
const useForm: () => UseFormResult;Display and interact with data collections using powerful list components:
// List components
const List: React.FC<ListProps>;
const Datagrid: React.FC<DatagridProps>;
const SimpleList: React.FC<SimpleListProps>;
const InfiniteList: React.FC<InfiniteListProps>;
// Field components
const TextField: React.FC<FieldProps>;
const NumberField: React.FC<FieldProps>;
const DateField: React.FC<DateFieldProps>;
const BooleanField: React.FC<BooleanFieldProps>;
const ReferenceField: React.FC<ReferenceFieldProps>;
// List features
const Filter: React.FC<FilterProps>;
const Pagination: React.FC<PaginationProps>;
const BulkActions: React.FC<BulkActionsProps>;Create comprehensive Create, Edit, and Show pages for your resources:
// Detail view components
const Show: React.FC<ShowProps>;
const Edit: React.FC<EditProps>;
const Create: React.FC<CreateProps>;
// Layout components
const SimpleShowLayout: React.FC<SimpleShowLayoutProps>;
const TabbedShowLayout: React.FC<TabbedShowLayoutProps>;
const Tab: React.FC<TabProps>;Structure your application with flexible layout and navigation components:
// Layout components
const Layout: React.FC<LayoutProps>;
const AppBar: React.FC<AppBarProps>;
const Sidebar: React.FC<SidebarProps>;
const Menu: React.FC<MenuProps>;
// Navigation
const MenuItemLink: React.FC<MenuItemLinkProps>;
const DashboardMenuItem: React.FC<DashboardMenuItemProps>;
const ResourceMenuItem: React.FC<ResourceMenuItemProps>;Rich set of buttons, notifications, and theming capabilities:
// Button components
const Button: React.FC<ButtonProps>;
const SaveButton: React.FC<SaveButtonProps>;
const DeleteButton: React.FC<DeleteButtonProps>;
const CreateButton: React.FC<CreateButtonProps>;
// Notifications
const useNotify: () => NotifyFunction;
const Notification: React.FC<NotificationProps>;
// Theming
const useTheme: () => ThemeResult;
const ThemeProvider: React.FC<ThemeProviderProps>;Multi-language support with flexible translation system:
// i18n hooks
const useTranslate: () => TranslateFunction;
const useLocale: () => string;
const useSetLocale: () => SetLocaleFunction;
// i18n components
const TranslatableInputs: React.FC<TranslatableInputsProps>;
const TranslatableFields: React.FC<TranslatableFieldsProps>;
// i18n provider interface
interface I18nProvider {
translate: (key: string, options?: any) => string;
changeLocale: (locale: string) => Promise<void>;
getLocale: () => string;
getLocales?: () => Locale[];
}Export functionality, preferences system, stores, and utilities:
// Export functionality
const useExporter: () => ExporterFunction;
const ExportButton: React.FC<ExportButtonProps>;
// Preferences system
const usePreference: (key: string, defaultValue?: any) => PreferenceResult;
const Configurable: React.FC<ConfigurableProps>;
// Store management
const useStore: (key: string, defaultValue?: any) => StoreResult;
const localStorageStore: Store;
const memoryStore: Store;React Admin enables rapid development of sophisticated admin interfaces while maintaining flexibility for complex customization needs. Each capability area provides both high-level components for quick setup and low-level hooks for advanced customization.