import { DisconnectedIcon, WarningIcon } from "outline-icons"; import * as React from "react"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; import Empty from "~/components/Empty"; import useEventListener from "~/hooks/useEventListener"; import { OfflineError } from "~/utils/errors"; import ButtonLink from "../ButtonLink"; import Flex from "../Flex"; type Props = { error: Error; retry: () => void; }; export default function LoadingError({ error, retry, ...rest }: Props) { const { t } = useTranslation(); useEventListener("online", retry); const message = error instanceof OfflineError ? ( <> {t("You’re offline.")} ) : ( <> {t("Sorry, an error occurred.")} ); return ( {message}{" "} retry()}>{t("Click to retry")}… ); } const Content = styled(Empty)` padding: 8px 0; white-space: nowrap; ${ButtonLink} { color: ${(props) => props.theme.textTertiary}; &:hover { color: ${(props) => props.theme.textSecondary}; text-decoration: underline; } } `;