diff --git a/ui/pages/_error.js b/ui/pages/_error.js new file mode 100644 index 0000000..9a8535d --- /dev/null +++ b/ui/pages/_error.js @@ -0,0 +1,143 @@ +import * as React from 'react' +import styled from 'styled-components' +import MediaQuery from '../kit/media' + +const Overlay = styled.div` + opacity: 0.6; + pointer-events: none; + position: fixed; + top: 50px; + bottom: 0; + left: 0; + right: 0; + z-index: -1; + background-image: radial-gradient(circle, var(--c-dark), var(--c-dark) 1px, transparent 1px, transparent); + background-size: 27px 27px; +` + +const ResponsiveSplitter = styled.div` + display: flex; + align-items: center; + justify-content: center; + line-height: 1.6; + font-size: 1.3em; + flex-direction: column; + + ${() => MediaQuery({ + md: `flex-direction: row; min-height: 100vh; position: relative; top: -50px;` + })} + + & > div { + margin: 1rem; + } + + & section { + text-align: center; + ${() => MediaQuery({ + md: `text-align: left;` + })} + } +` + +const JapaneseFlair = styled.section` + color: var(--c-3); + font-size: 0.9rem; +` + +const Code = styled.h1` + margin: 0; + padding: 0; + font-size: 4em; + ${() => MediaQuery({ + md: `font-size: 2em;` + })} +` + +export default class CustomErrorPage extends React.Component { + static getInitialProps ({ res, err }) { + const statusCode = res ? res.statusCode : err ? err.statusCode : null + return { statusCode } + } + + render404 () { + return
404
+ 403
+ 500
+ Oops.
+