import React, { useEffect, useState } from "react"; import { ResourceErrorRouterParams } from "@pankod/refine-core"; import { RefineErrorPageProps } from "@pankod/refine-ui-types"; import { useNavigation, useTranslate, useResourceWithRoute, useRouterContext, } from "@pankod/refine-core"; import { Box, Title, Text, Group, Tooltip, ActionIcon, Button, Space, } from "@mantine/core"; import { IconInfoCircle } from "@tabler/icons"; export const ErrorComponent: React.FC = () => { const [errorMessage, setErrorMessage] = useState(); const { push } = useNavigation(); const translate = useTranslate(); const actionTypes = ["edit", "create", "show"]; const { useParams } = useRouterContext(); const params = useParams(); const resource = useResourceWithRoute(); useEffect(() => { const action = params.action ?? "list"; const resourceName = params.resource; setErrorMessage( translate( "pages.error.info", { action, resource: resourceName, }, `You may have forgotten to add the "${action}" component to "${resourceName}" resource.`, ), ); if (resourceName) { const resourceFromRoute = resource(resourceName); if ( action && actionTypes.includes(action) && !resourceFromRoute[action] ) { setErrorMessage( translate( "pages.error.info", { action, resource: resourceName, }, `You may have forgotten to add the "${action}" component to "${resourceName}" resource.`, ), ); } } }, [params]); return ( ({ textAlign: "center", fontWeight: 900, fontSize: 220, lineHeight: 1, color: theme.colorScheme === "dark" ? theme.colors.dark[4] : theme.colors.gray[2], [theme.fn.smallerThan("sm")]: { fontSize: 120, }, })} > 404 {translate( "pages.error.404", "Sorry, the page you visited does not exist.", )} {errorMessage && ( )} ); };