import React, { Component, ReactNode } from 'react' import styled from 'styled-components' import { Colors, flexFlow, FontSizes, getColor, typography, } from '@monorail/helpers/exports' import { css } from '@monorail/helpers/styled-components' import { ErrorType } from '@monorail/pageComponents/errorPage/errorTypes' import { Button } from '@monorail/visualComponents/buttons/Button' import { BaseLink } from '@monorail/visualComponents/hyperLink/BaseLink' import { Icon } from '@monorail/visualComponents/icon/Icon' /* * Styles */ const CCErrorPage = styled.div` ${flexFlow('column')}; align-items: center; height: 100%; justify-content: center; width: 100%; ` const IconCircle = styled.div` ${flexFlow('column')}; background: #ed6d6e; border-radius: 50%; height: 120px; width: 120px; ` const StyledIcon = styled(Icon)` color: ${getColor(Colors.White)}; margin: auto auto; ` const FourZeroFourIcon = styled.div` color: #ed6d6e; font-size: 88px; font-weight: 500; margin: auto auto; ` const Title = styled.h1` ${typography(700, FontSizes.Title1, '32px 0')}; color: ${getColor(Colors.Black89a)}; ` const ErrorMessage = styled.div` ${typography(400, FontSizes.Title3)}; color: ${getColor(Colors.Black89a)}; max-width: 448px; text-align: center; width: 100%; ` /* * Types */ type ErrorPageProps = { errorMessage?: ReactNode errorType: ErrorType title?: ReactNode } /* * Components */ const errorIcon = { [ErrorType.Default]: ( ), [ErrorType.NotAuthorized]: ( ), [ErrorType.FourZeroFour]: 404, } const errorTitle = { [ErrorType.Default]: 'Something Went Wrong', [ErrorType.NotAuthorized]: 'Not Authorized', [ErrorType.FourZeroFour]: 'We couldn’t find your page...', } const errorMsg = { [ErrorType.Default]: 'Please contact your administrator or try again later.', [ErrorType.NotAuthorized]: 'We could not verify that you are authorized to access the requested page. Sorry!', [ErrorType.FourZeroFour]: 'We searched high and low, far and wide, but can’t seem to find the page you’re looking for.', } export class ErrorPage extends Component { static defaultProps = { errorType: ErrorType.Default, } render() { const { errorType, title, errorMessage } = this.props return ( {errorIcon[errorType]} {{title ? title : errorTitle[errorType]}} { {errorMessage ? errorMessage : errorMsg[errorType]} } { } ) } }