2016-10-09 09:25:38 +00:00
|
|
|
import React from 'react'
|
2016-10-25 08:16:54 +00:00
|
|
|
import style, { merge } from 'next/css'
|
2016-10-09 09:25:38 +00:00
|
|
|
|
|
|
|
export default class Error extends React.Component {
|
|
|
|
static getInitialProps ({ res, xhr }) {
|
|
|
|
const statusCode = res ? res.statusCode : xhr.status
|
|
|
|
return { statusCode }
|
|
|
|
}
|
|
|
|
|
|
|
|
render () {
|
|
|
|
const { statusCode } = this.props
|
2016-10-17 00:00:17 +00:00
|
|
|
const title = statusCode === 404 ? 'This page could not be found' : 'Internal Server Error'
|
2016-10-09 09:25:38 +00:00
|
|
|
|
2016-10-21 16:39:20 +00:00
|
|
|
return <div className={merge(styles.error, styles['error_' + statusCode])}>
|
|
|
|
<div className={styles.text}>
|
|
|
|
<h1 className={styles.h1}>{statusCode}</h1>
|
|
|
|
<div className={styles.desc}>
|
|
|
|
<h2 className={styles.h2}>{title}.</h2>
|
2016-10-09 09:25:38 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-10-21 16:39:20 +00:00
|
|
|
const styles = {
|
|
|
|
error: style({
|
2016-10-09 09:25:38 +00:00
|
|
|
color: '#000',
|
|
|
|
background: '#fff',
|
|
|
|
top: 0,
|
|
|
|
bottom: 0,
|
|
|
|
left: 0,
|
|
|
|
right: 0,
|
|
|
|
position: 'absolute',
|
2016-10-28 18:00:41 +00:00
|
|
|
fontFamily: '-apple-system, "SF UI Text", "Helvetica Neue", "Lucida Grande", sans-serif',
|
2016-10-09 09:25:38 +00:00
|
|
|
textAlign: 'center',
|
|
|
|
paddingTop: '20%'
|
2016-10-21 16:39:20 +00:00
|
|
|
}),
|
2016-10-09 09:25:38 +00:00
|
|
|
|
2016-10-21 16:39:20 +00:00
|
|
|
desc: style({
|
2016-10-09 09:25:38 +00:00
|
|
|
display: 'inline-block',
|
|
|
|
textAlign: 'left',
|
|
|
|
lineHeight: '49px',
|
|
|
|
height: '49px',
|
|
|
|
verticalAlign: 'middle'
|
2016-10-21 16:39:20 +00:00
|
|
|
}),
|
2016-10-09 09:25:38 +00:00
|
|
|
|
2016-10-21 16:39:20 +00:00
|
|
|
h1: style({
|
2016-10-09 09:25:38 +00:00
|
|
|
display: 'inline-block',
|
|
|
|
borderRight: '1px solid rgba(0, 0, 0,.3)',
|
|
|
|
margin: 0,
|
|
|
|
marginRight: '20px',
|
|
|
|
padding: '10px 23px',
|
|
|
|
fontSize: '24px',
|
|
|
|
fontWeight: 500,
|
|
|
|
verticalAlign: 'top'
|
2016-10-21 16:39:20 +00:00
|
|
|
}),
|
2016-10-09 09:25:38 +00:00
|
|
|
|
2016-10-21 16:39:20 +00:00
|
|
|
h2: style({
|
2016-10-09 09:25:38 +00:00
|
|
|
fontSize: '14px',
|
|
|
|
fontWeight: 'normal',
|
|
|
|
margin: 0,
|
|
|
|
padding: 0
|
2016-10-21 16:39:20 +00:00
|
|
|
})
|
|
|
|
}
|