omnivore/packages/web/components/templates/ErrorLayout.tsx

42 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-02-11 17:24:33 +00:00
import {
VStack,
HStack,
2022-02-25 21:50:59 +00:00
SpanBox,
2022-02-11 17:24:33 +00:00
} from '../elements/LayoutPrimitives'
import { StyledText } from '../elements/StyledText'
import Link from 'next/link'
2022-02-25 21:50:59 +00:00
import { Button } from '../elements/Button'
import { useGetViewerQuery } from '../../lib/networking/queries/useGetViewerQuery'
2022-02-11 17:24:33 +00:00
type ErrorPageStatusCode = 404 | 500
type ErrorLayoutProps = {
2022-02-25 21:50:59 +00:00
message?: string
2022-02-11 17:24:33 +00:00
statusCode: ErrorPageStatusCode
}
export function ErrorLayout(props: ErrorLayoutProps): JSX.Element {
2022-02-25 21:50:59 +00:00
const { viewerData } = useGetViewerQuery()
console.log(viewerData?.me)
2022-02-11 17:24:33 +00:00
return (
2022-02-25 21:50:59 +00:00
<VStack alignment="center" distribution="start" css={{ height: '100%' }}>
<HStack alignment="center" css={{ mt: '64px', verticalAlign: 'middle' }}>
<StyledText style="headline" css={{
marginRight: '25px',
padding: '32px',
borderRight: '1px solid $grayText',
}}>
{props.statusCode}
</StyledText>
<StyledText style="body">
{props.message ? props.message : 'An error occurred.'}
</StyledText>
2022-02-11 17:24:33 +00:00
</HStack>
2022-02-25 21:50:59 +00:00
<SpanBox css={{ height: '64px' }} />
<Link passHref href={viewerData?.me ? "/home" : "/login"}>
<Button style="ctaDarkYellow">{viewerData?.me ? "Go Home" : "Login"}</Button>
</Link>
2022-02-11 17:24:33 +00:00
</VStack>
)
2022-02-25 21:50:59 +00:00
}