mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-10 23:02:56 +02:00
polish(core): better styling for error screens (#8736)
Co-authored-by: sebastienlorber <lorber.sebastien@gmail.com>
This commit is contained in:
parent
e21591c073
commit
7961c5b8d5
7 changed files with 52 additions and 12 deletions
|
@ -7,7 +7,10 @@
|
|||
|
||||
import React from 'react';
|
||||
import Translate from '@docusaurus/Translate';
|
||||
import {ErrorBoundaryTryAgainButton} from '@docusaurus/theme-common';
|
||||
import {
|
||||
ErrorBoundaryError,
|
||||
ErrorBoundaryTryAgainButton,
|
||||
} from '@docusaurus/theme-common';
|
||||
import type {Props} from '@theme/Error';
|
||||
import Heading from '@theme/Heading';
|
||||
|
||||
|
@ -26,9 +29,15 @@ export default function ErrorPageContent({
|
|||
This page crashed.
|
||||
</Translate>
|
||||
</Heading>
|
||||
<p>{error.message}</p>
|
||||
<div>
|
||||
<ErrorBoundaryTryAgainButton onClick={tryAgain} />
|
||||
<div className="margin-vert--lg">
|
||||
<ErrorBoundaryTryAgainButton
|
||||
onClick={tryAgain}
|
||||
className="button button--primary shadow--lw"
|
||||
/>
|
||||
</div>
|
||||
<hr />
|
||||
<div className="margin-vert--md">
|
||||
<ErrorBoundaryError error={error} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -96,4 +96,7 @@ export {
|
|||
UnlistedMetadata,
|
||||
} from './utils/unlistedUtils';
|
||||
|
||||
export {ErrorBoundaryTryAgainButton} from './utils/errorBoundaryUtils';
|
||||
export {
|
||||
ErrorBoundaryTryAgainButton,
|
||||
ErrorBoundaryError,
|
||||
} from './utils/errorBoundaryUtils';
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
.errorBoundaryError {
|
||||
white-space: pre-wrap;
|
||||
color: red;
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
import React, {type ComponentProps} from 'react';
|
||||
import Translate from '@docusaurus/Translate';
|
||||
import styles from './errorBoundaryUtils.module.css';
|
||||
|
||||
export function ErrorBoundaryTryAgainButton(
|
||||
props: ComponentProps<'button'>,
|
||||
|
@ -21,3 +22,7 @@ export function ErrorBoundaryTryAgainButton(
|
|||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
export function ErrorBoundaryError({error}: {error: Error}): JSX.Element {
|
||||
return <p className={styles.errorBoundaryError}>{error.message}</p>;
|
||||
}
|
||||
|
|
|
@ -21,16 +21,28 @@ function ErrorDisplay({error, tryAgain}: Props): JSX.Element {
|
|||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
height: '50vh',
|
||||
alignItems: 'flex-start',
|
||||
minHeight: '100vh',
|
||||
width: '100%',
|
||||
maxWidth: '80ch',
|
||||
fontSize: '20px',
|
||||
margin: '0 auto',
|
||||
padding: '1rem',
|
||||
}}>
|
||||
<h1>This page crashed.</h1>
|
||||
<p>{error.message}</p>
|
||||
<button type="button" onClick={tryAgain}>
|
||||
<h1 style={{fontSize: '3rem'}}>This page crashed</h1>
|
||||
<button
|
||||
type="button"
|
||||
onClick={tryAgain}
|
||||
style={{
|
||||
margin: '1rem 0',
|
||||
fontSize: '2rem',
|
||||
cursor: 'pointer',
|
||||
borderRadius: 20,
|
||||
padding: '1rem',
|
||||
}}>
|
||||
Try again
|
||||
</button>
|
||||
<p style={{whiteSpace: 'pre-wrap'}}>{error.message}</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ export default function ErrorBoundaryTestButton({
|
|||
}): JSX.Element {
|
||||
const [state, setState] = useState(false);
|
||||
if (state) {
|
||||
throw new Error('Boom!');
|
||||
throw new Error('Boom!\nSomething bad happened, but you can try again!');
|
||||
}
|
||||
return (
|
||||
<button type="button" onClick={() => setState(true)}>
|
||||
|
|
|
@ -31,7 +31,6 @@ const EXPECTED_CSS_MARKERS = [
|
|||
// See https://github.com/facebook/docusaurus/pull/6222
|
||||
'.markdown>h2',
|
||||
'.button--outline.button--active',
|
||||
'.DocSearch-Hit-content-wrapper',
|
||||
'--ifm-color-scheme:light',
|
||||
'.col[class*=col--]',
|
||||
'.padding-vert--xl',
|
||||
|
@ -49,6 +48,7 @@ const EXPECTED_CSS_MARKERS = [
|
|||
|
||||
// Lazy-loaded lib
|
||||
'.DocSearch-Modal',
|
||||
'.DocSearch-Hit-content-wrapper',
|
||||
];
|
||||
|
||||
const cssDirName = fileURLToPath(new URL('build/assets/css', import.meta.url));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue