import React from 'react'
import styles from './_errorPage.module.scss'
import Icon from '../Icons/Icon'
import { c } from '../../translations/LibraryTranslationService'
interface ErrorPageProps {
/**
* Company or application logo to display at the top of the error page.
* Typically an SVG or image element with appropriate branding.
*/
logo: React.ReactNode
/**
* Optional icon to display above the error title.
* Defaults to a warning/error icon if not provided.
*/
icon?: React.ReactNode
/**
* Optional title text for the error page.
* Defaults to a translated error title if not provided.
*/
title?: string
/**
* Optional main error message describing what went wrong.
* Defaults to a translated generic error message if not provided.
*/
message?: string
/**
* Required support message with contact information for users to get help.
* Often includes email addresses, phone numbers, or links to support resources.
* Use ErrorPage.EmailLink for consistent email styling.
*/
supportMessage: React.ReactNode
/**
* Optional thank you message displayed after support information.
* Defaults to a translated thank you message if not provided.
*/
thankYouMessage?: string
/**
* Optional copyright year for the footer.
* Defaults to the current year if not provided.
*/
copyrightYear?: number
/**
* Optional copyright holder name for the footer.
* Defaults to a translated company name if not provided.
*/
copyrightName?: string
/**
* Optional test identifier for QA testing and automation.
* Applied as 'qa-test-id' attribute to the root container.
*/
qaTestId?: string
}
/**
* Default error icon component that displays a warning/error icon
*/
const ErrorIcon: React.FC = () =>
/**
* Pre-styled email link component for support contact information.
* Automatically creates a mailto link with consistent styling.
*/
const EmailLink: React.FC<{ email: string }> = ({ email }) => (
{email}
)
/**
* ErrorPage is a full-screen error page component designed for displaying
* application-level errors, 500 errors, or other critical failures that
* require user attention and support contact information.
*
* The component provides a consistent layout with:
* - Company/app logo at the top
* - Prominent error icon and messaging in the center
* - Support contact information
* - Copyright footer at the bottom
*
* The ErrorPage also exposes an EmailLink sub-component for consistent
* email styling within support messages.
*
* @param props - Configuration options for the error page
* @returns A React JSX element containing the complete error page layout
*/
const ErrorPage: React.FC & { EmailLink: typeof EmailLink } = ({
logo,
icon = ,
title = c('erroTitle'),
message = c('errorMessage'),
supportMessage,
thankYouMessage = c('errorThankYou'),
copyrightYear = new Date().getFullYear(),
copyrightName = c('pattern'),
qaTestId = 'error-page',
}) => {
return (