new-api/web/default/src/features/errors/general-error.tsx
CaIon 0f9f094a48
feat(default): reorganize system settings pricing UI
Refine the default system settings structure and model pricing editor so pricing configuration is easier to scan and edit.
2026-05-06 16:29:45 +08:00

63 lines
1.9 KiB
TypeScript
Vendored

import { useNavigate, useRouter } from '@tanstack/react-router'
import { useTranslation } from 'react-i18next'
import { cn } from '@/lib/utils'
import { Button } from '@/components/ui/button'
const FEEDBACK_URL = 'https://github.com/QuantumNous/new-api/issues'
type GeneralErrorProps = React.HTMLAttributes<HTMLDivElement> & {
minimal?: boolean
}
export function GeneralError({
className,
minimal = false,
}: GeneralErrorProps) {
const { t } = useTranslation()
const navigate = useNavigate()
const { history } = useRouter()
return (
<div className={cn('h-svh w-full', className)}>
<div className='m-auto flex h-full w-full flex-col items-center justify-center gap-2'>
{!minimal && (
<h1 className='text-[7rem] leading-tight font-bold'>500</h1>
)}
<span className='font-medium'>
{t('Oops! Something went wrong')} {`:')`}
</span>
<p className='text-muted-foreground text-center'>
{t('We apologize for the inconvenience.')} <br />{' '}
{t('Please try again later.')}
</p>
{!minimal && (
<p className='text-muted-foreground text-center text-sm'>
{t('If this keeps happening, please report it on GitHub Issues.')}
</p>
)}
{!minimal && (
<div className='mt-6 flex flex-wrap justify-center gap-4'>
<Button variant='outline' onClick={() => history.go(-1)}>
{t('Go Back')}
</Button>
<Button
variant='outline'
render={
<a
href={FEEDBACK_URL}
target='_blank'
rel='noopener noreferrer'
/>
}
>
{t('Report an issue')}
</Button>
<Button onClick={() => navigate({ to: '/' })}>
{t('Back to Home')}
</Button>
</div>
)}
</div>
</div>
)
}