ErrorPage

Полноэкранная error-страница. Тип ошибки (errorType) задаёт заголовок, код статуса, текст и набор действий; справа — декоративная иллюстрация, скрытая на mobile.

Когда использовать

  • Нужно показать пользователю системную ошибку или недоступность страницы целым экраном.
  • Требуется типовой набор: заголовок с кодом статуса, поясняющий текст, кнопка действия и ссылки на главную/назад.
  • Нужна точка входа в поддержку (onSupportCenterClick).

Когда не нужен:

  • Локальная ошибка внутри блока или формы:
    • используйте Alert или inline-сообщение.
  • Загрузочное/пустое состояние без ошибки — это Skeleton / empty-state, а не ErrorPage.

Анатомия

Error type (default FrontendError)

Главная ось — errorType. Определяет заголовок, код статуса, текст и какие действия видны:

  • FrontendError — непредвиденная ошибка. Кнопка «Обновить», ссылки «На главную» и «Назад».
  • PageUnavailable — сервис недоступен (403). Кнопка «На главную», ссылка «Назад».
  • PageNotFound — страница не найдена (404). Кнопка «На главную».
  • Offline — нет соединения. Кнопка «Обновить».
  • Redirect — ссылка устарела. Кнопка «Перейти» на mainPageUrl.
  • Custom — контент берётся из custom.

Logo variant (default None)

Логотип над заголовком (logoVariant):

  • Cloud — фирменный логотип cloud.ru.
  • Custom — свой узел через проп logo.
  • None — без логотипа.

Custom

При errorType='Custom' объект custom задаёт:

  • title — заголовок.
  • description — текст под заголовком.
  • statusCode — код статуса в теге у заголовка.
  • mainButtonlabel / href / onClick / icon главной кнопки.
  • showMainPageLink / showBackLink — видимость ссылок.
  • actionWrapperClassName — класс на контейнере действий.

Установка

pnpm add @cloud-ru/ds-uikit-product-error-pages
import { ErrorPage } from '@cloud-ru/ds-uikit-product-error-pages'
import '@cloud-ru/ds-uikit-product-error-pages/style.css'

Примеры использования

Страница не найдена

Страница не найденаerrorType='PageNotFound' с логотипом cloud.ru и кнопкой поддержки.

Page not found404

Try starting from another page
Go to the main page
tsx
import { ERROR_TYPE, ErrorPage, LOGO_VARIANT } from '@cloud-ru/ds-uikit-product-error-pages';

export function NotFound() {
  return (
    <ErrorPage
      errorType={ERROR_TYPE.PageNotFound}
      logoVariant={LOGO_VARIANT.Cloud}
      mainPageUrl='/'
      onSupportCenterClick={() => window.open('https://cloud.ru/support', '_blank')}
    />
  );
}

Нет соединения

Нет соединенияerrorType='Offline' — заголовок и кнопка «Обновить» без кода статуса.

No Internet Connection

Check your internet connection and try refreshing the page
tsx
import { ERROR_TYPE, ErrorPage, LOGO_VARIANT } from '@cloud-ru/ds-uikit-product-error-pages';

export function Offline() {
  return <ErrorPage errorType={ERROR_TYPE.Offline} logoVariant={LOGO_VARIANT.Cloud} />;
}

Кастомный контент

Кастомный контентerrorType='Custom' — свой заголовок, код статуса, кнопка и логотип.
ACME

Quota exceeded429

Your project reached its resource limit. Upgrade the plan to continue.
tsx
import { ERROR_TYPE, ErrorPage, LOGO_VARIANT } from '@cloud-ru/ds-uikit-product-error-pages';

export function Custom() {
  return (
    <ErrorPage
      errorType={ERROR_TYPE.Custom}
      logoVariant={LOGO_VARIANT.Custom}
      logo={<span>ACME</span>}
      mainPageUrl='/dashboard'
      custom={{
        title: 'Quota exceeded',
        description: 'Your project reached its resource limit. Upgrade the plan to continue.',
        statusCode: 429,
        mainButton: { label: 'Upgrade plan', href: '/billing' },
        showMainPageLink: true,
        showBackLink: true,
      }}
    />
  );
}

Props

Types

PropsErrorPageProps
PropTypeDefaultRequiredDescription
classNamestringnoДополнительный класс.
customErrorPageCustomConfignoОбъект с кастомными настройками, используется только для `ERROR_TYPE.Custom`.
data-test-idstringno
errorType"Custom" | "FrontendError" | "Offline" | "PageNotFound" | "PageUnavailable" | "Redirect"FrontendErrornoТип ошибки — определяет заголовок, текст, код статуса и набор действий.
logoReactNodenoКастомный логотип, используется только с `LOGO_VARIANT.Custom`.
logoVariant"Cloud" | "Custom" | "None"NonenoВариант логотипа над заголовком.
mainPageUrlstring/noURL главной страницы (для кнопки/ссылки «На главную»).
onSupportCenterClick(() => void)noОбработчик клика по кнопке «Служба поддержки». Если задан — кнопка отображается.
showMainButtonbooleantruenoПоказать основную (filled) кнопку действия.

Types

ErrorPageProps

Storybook

Figma