_error.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _interop_require_default = require("@swc/helpers/lib/_interop_require_default.js").default;
  7. var _react = _interop_require_default(require("react"));
  8. var _head = _interop_require_default(require("../shared/lib/head"));
  9. const statusCodes = {
  10. 400: 'Bad Request',
  11. 404: 'This page could not be found',
  12. 405: 'Method Not Allowed',
  13. 500: 'Internal Server Error'
  14. };
  15. function _getInitialProps({ res , err }) {
  16. const statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
  17. return {
  18. statusCode
  19. };
  20. }
  21. const styles = {
  22. error: {
  23. fontFamily: '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
  24. height: '100vh',
  25. textAlign: 'center',
  26. display: 'flex',
  27. flexDirection: 'column',
  28. alignItems: 'center',
  29. justifyContent: 'center'
  30. },
  31. desc: {
  32. display: 'inline-block',
  33. textAlign: 'left',
  34. lineHeight: '49px',
  35. height: '49px',
  36. verticalAlign: 'middle'
  37. },
  38. h1: {
  39. display: 'inline-block',
  40. margin: 0,
  41. marginRight: '20px',
  42. padding: '0 23px 0 0',
  43. fontSize: '24px',
  44. fontWeight: 500,
  45. verticalAlign: 'top',
  46. lineHeight: '49px'
  47. },
  48. h2: {
  49. fontSize: '14px',
  50. fontWeight: 'normal',
  51. lineHeight: '49px',
  52. margin: 0,
  53. padding: 0
  54. }
  55. };
  56. var _Component;
  57. class Error extends (_Component = _react.default.Component) {
  58. render() {
  59. const { statusCode , withDarkMode =true } = this.props;
  60. const title = this.props.title || statusCodes[statusCode] || 'An unexpected error has occurred';
  61. return /*#__PURE__*/ _react.default.createElement("div", {
  62. style: styles.error
  63. }, /*#__PURE__*/ _react.default.createElement(_head.default, null, /*#__PURE__*/ _react.default.createElement("title", null, statusCode ? `${statusCode}: ${title}` : 'Application error: a client-side exception has occurred')), /*#__PURE__*/ _react.default.createElement("div", null, /*#__PURE__*/ _react.default.createElement("style", {
  64. dangerouslySetInnerHTML: {
  65. __html: `
  66. body { margin: 0; color: #000; background: #fff; }
  67. .next-error-h1 {
  68. border-right: 1px solid rgba(0, 0, 0, .3);
  69. }
  70. ${withDarkMode ? `@media (prefers-color-scheme: dark) {
  71. body { color: #fff; background: #000; }
  72. .next-error-h1 {
  73. border-right: 1px solid rgba(255, 255, 255, .3);
  74. }
  75. }` : ''}`
  76. }
  77. }), statusCode ? /*#__PURE__*/ _react.default.createElement("h1", {
  78. className: "next-error-h1",
  79. style: styles.h1
  80. }, statusCode) : null, /*#__PURE__*/ _react.default.createElement("div", {
  81. style: styles.desc
  82. }, /*#__PURE__*/ _react.default.createElement("h2", {
  83. style: styles.h2
  84. }, this.props.title || statusCode ? title : /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, "Application error: a client-side exception has occurred (see the browser console for more information)"), "."))));
  85. }
  86. }
  87. Error.displayName = 'ErrorPage';
  88. Error.getInitialProps = _getInitialProps;
  89. Error.origGetInitialProps = _getInitialProps;
  90. exports.default = Error;
  91. //# sourceMappingURL=_error.js.map