80 lines
2.8 KiB
TypeScript
80 lines
2.8 KiB
TypeScript
/**
|
||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||
* SPDX-License-Identifier: AGPL-3.0-only
|
||
* See the LICENSE file for details.
|
||
*/
|
||
|
||
import { useTheme } from "next-themes";
|
||
// plane imports
|
||
import { Button } from "@plane/propel/button";
|
||
// assets
|
||
import maintenanceModeDarkModeImage from "@/app/assets/instance/maintenance-mode-dark.svg?url";
|
||
import maintenanceModeLightModeImage from "@/app/assets/instance/maintenance-mode-light.svg?url";
|
||
// layouts
|
||
import DefaultLayout from "@/layouts/default-layout";
|
||
|
||
const linkMap = [
|
||
{
|
||
key: "mail_to",
|
||
label: "Служба поддержки",
|
||
value: "https://nodedc.dctouch.ru/",
|
||
},
|
||
];
|
||
|
||
// Production Error Component
|
||
interface ProdErrorComponentProps {
|
||
onGoHome: () => void;
|
||
}
|
||
|
||
export function ProdErrorComponent({ onGoHome }: ProdErrorComponentProps) {
|
||
// hooks
|
||
const { resolvedTheme } = useTheme();
|
||
|
||
// derived values
|
||
const maintenanceModeImage = resolvedTheme === "dark" ? maintenanceModeDarkModeImage : maintenanceModeLightModeImage;
|
||
|
||
return (
|
||
<DefaultLayout>
|
||
<div className="relative container mx-auto flex h-full w-full max-w-3xl items-center justify-center px-6 py-10">
|
||
<div className="nodedc-error-shell relative flex w-full flex-col gap-6 text-left">
|
||
<img
|
||
src={maintenanceModeImage}
|
||
height="176"
|
||
width="288"
|
||
alt="ProjectSettingImg"
|
||
className="mx-auto h-full w-full max-w-[18rem] object-fill object-center"
|
||
/>
|
||
<div className="flex flex-col gap-2.5">
|
||
<h1 className="text-18 font-semibold text-primary">🚧 Похоже, что-то пошло не так.</h1>
|
||
<span className="text-14 font-medium text-secondary">
|
||
Мы уже зафиксировали ошибку и пытаемся восстановить работу. Если проблема сохраняется, обратитесь в
|
||
службу поддержки и обновите страницу.
|
||
</span>
|
||
</div>
|
||
|
||
<div className="mt-1 flex items-center justify-start gap-6">
|
||
{linkMap.map((link) => (
|
||
<div key={link.key}>
|
||
<a
|
||
href={link.value}
|
||
target="_blank"
|
||
rel="noopener noreferrer"
|
||
className="nodedc-error-link text-13"
|
||
>
|
||
{link.label}
|
||
</a>
|
||
</div>
|
||
))}
|
||
</div>
|
||
|
||
<div className="flex items-center justify-start gap-6">
|
||
<Button variant="primary" size="lg" onClick={onGoHome} className="nodedc-error-primary">
|
||
На главную
|
||
</Button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</DefaultLayout>
|
||
);
|
||
}
|