Files
ncd-fe/packages/pl-fe/src/features/ui/router/error-column.tsx
nicole mikołajczyk a81f727fb6 pl-fe: finalize migration?
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-01-03 22:19:24 +01:00

46 lines
1.4 KiB
TypeScript

import React from 'react';
import { defineMessages, useIntl } from 'react-intl';
import Column from 'pl-fe/components/ui/column';
import IconButton from 'pl-fe/components/ui/icon-button';
import Stack from 'pl-fe/components/ui/stack';
import Text from 'pl-fe/components/ui/text';
import { isNetworkError } from 'pl-fe/utils/errors';
import type { ErrorRouteComponent } from '@tanstack/react-router';
const messages = defineMessages({
title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' },
body: { id: 'bundle_column_error.body', defaultMessage: 'Something went wrong while loading this page.' },
retry: { id: 'bundle_column_error.retry', defaultMessage: 'Try again' },
});
const ErrorColumn: ErrorRouteComponent = ({ error, reset }) => {
const intl = useIntl();
const handleRetry = () => {
reset();
};
if (!isNetworkError(error)) {
throw error;
}
return (
<Column label={intl.formatMessage(messages.title)}>
<Stack space={4} alignItems='center' justifyContent='center' className='min-h-[160px] rounded-lg p-10'>
<IconButton
iconClassName='h-10 w-10'
title={intl.formatMessage(messages.retry)}
src={require('@phosphor-icons/core/regular/arrows-clockwise.svg')}
onClick={handleRetry}
/>
<Text align='center' theme='muted'>{intl.formatMessage(messages.body)}</Text>
</Stack>
</Column>
);
};
export { ErrorColumn as default };