feat: add page 404
This commit is contained in:
24
.idea/workspace.xml
generated
24
.idea/workspace.xml
generated
@@ -5,19 +5,12 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
|
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/src/app/sitemap/page.tsx" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/app/not-found.tsx" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/src/views/sitemap/index.ts" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/views/not-found/index.ts" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/src/views/sitemap/model/breadcrums.ts" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/views/not-found/styles.module.scss" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/src/views/sitemap/model/links.ts" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/views/not-found/ui.tsx" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/src/views/sitemap/styles.module.scss" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/src/views/sitemap/ui.tsx" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/ekspertiza/ocenochnaja/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/ekspertiza/ocenochnaja/page.tsx" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/shared/api/api.service.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/api/api.service.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/shared/config/routes.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/config/api-routes.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/shared/const/menu.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/const/menu.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/views/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/index.ts" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/index.ts" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/widgets/footer/ui.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/widgets/footer/ui.tsx" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -25,7 +18,7 @@
|
|||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="DarkyenusTimeTracker">
|
<component name="DarkyenusTimeTracker">
|
||||||
<option name="totalTimeSeconds" value="251068" />
|
<option name="totalTimeSeconds" value="252589" />
|
||||||
<option name="gitIntegration" value="true" />
|
<option name="gitIntegration" value="true" />
|
||||||
<option name="naggedAbout" value="1" />
|
<option name="naggedAbout" value="1" />
|
||||||
</component>
|
</component>
|
||||||
@@ -33,8 +26,8 @@
|
|||||||
<option name="RECENT_TEMPLATES">
|
<option name="RECENT_TEMPLATES">
|
||||||
<list>
|
<list>
|
||||||
<option value="TypeScript JSX File" />
|
<option value="TypeScript JSX File" />
|
||||||
<option value="SCSS File" />
|
|
||||||
<option value="TypeScript File" />
|
<option value="TypeScript File" />
|
||||||
|
<option value="SCSS File" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -76,10 +69,10 @@
|
|||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"nodejs_package_manager_path": "npm",
|
||||||
"npm.Next.js: server-side.executor": "Run",
|
"npm.Next.js: server-side.executor": "Run",
|
||||||
"prettierjs.PrettierConfiguration.Package": "C:\\dev-projects\\ocenka-web\\node_modules\\prettier",
|
"prettierjs.PrettierConfiguration.Package": "C:\\dev-personal\\ocenka-web\\node_modules\\prettier",
|
||||||
"settings.editor.selected.configurable": "terminal",
|
"settings.editor.selected.configurable": "terminal",
|
||||||
"to.speed.mode.migration.done": "true",
|
"to.speed.mode.migration.done": "true",
|
||||||
"ts.external.directory.path": "C:\\dev-projects\\ocenka-web\\node_modules\\typescript\\lib",
|
"ts.external.directory.path": "C:\\dev-personal\\ocenka-web\\node_modules\\typescript\\lib",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}]]></component>
|
||||||
@@ -142,6 +135,7 @@
|
|||||||
<workItem from="1765705636949" duration="904000" />
|
<workItem from="1765705636949" duration="904000" />
|
||||||
<workItem from="1765708416527" duration="881000" />
|
<workItem from="1765708416527" duration="881000" />
|
||||||
<workItem from="1765709337833" duration="2887000" />
|
<workItem from="1765709337833" duration="2887000" />
|
||||||
|
<workItem from="1765782728360" duration="1605000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
BIN
public/images/404.png
Normal file
BIN
public/images/404.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 233 KiB |
11
src/app/not-found.tsx
Normal file
11
src/app/not-found.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { NotFound } from '@/views';
|
||||||
|
import { Metadata } from 'next';
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Ошибка 404 - страница не найдена',
|
||||||
|
description: 'Вы попали на несуществующую страницу',
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function Page() {
|
||||||
|
return <NotFound />;
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ export * from './privacy-policy';
|
|||||||
export * from './cookie';
|
export * from './cookie';
|
||||||
export * from './user-agreement';
|
export * from './user-agreement';
|
||||||
export * from './sitemap';
|
export * from './sitemap';
|
||||||
|
export * from './not-found';
|
||||||
|
|
||||||
//Expertise
|
//Expertise
|
||||||
export * from './expertise/category';
|
export * from './expertise/category';
|
||||||
|
|||||||
1
src/views/not-found/index.ts
Normal file
1
src/views/not-found/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export * from './ui';
|
||||||
66
src/views/not-found/styles.module.scss
Normal file
66
src/views/not-found/styles.module.scss
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
.Container {
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: rem(1540px);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: rem(40px);
|
||||||
|
padding: rem(10px);
|
||||||
|
|
||||||
|
@include iftablet {
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
padding: rem(20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
@include iflaptop {
|
||||||
|
padding: rem(28px);
|
||||||
|
}
|
||||||
|
|
||||||
|
@include ifdesktop {
|
||||||
|
padding: rem(40px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.Image {
|
||||||
|
flex: 1;
|
||||||
|
.Img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.Info {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.Header {
|
||||||
|
font-family: $font-roboto;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: rem(32px);
|
||||||
|
line-height: 130%;
|
||||||
|
color: $color-green;
|
||||||
|
margin-bottom: rem(40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.Text {
|
||||||
|
font-family: $font-roboto;
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: rem(16px);
|
||||||
|
line-height: 130%;
|
||||||
|
color: $color-text;
|
||||||
|
margin-bottom: rem(20px);
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $color-green;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: $color-green-hover;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
34
src/views/not-found/ui.tsx
Normal file
34
src/views/not-found/ui.tsx
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import s from './styles.module.scss';
|
||||||
|
import Link from 'next/link';
|
||||||
|
import { ROUTES } from '@shared/const/route';
|
||||||
|
import notFoundImg from '@public/images/404.png';
|
||||||
|
import Image from 'next/image';
|
||||||
|
|
||||||
|
function NotFound() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section className={s.Container}>
|
||||||
|
<div className={s.Image}>
|
||||||
|
<Image
|
||||||
|
className={s.Img}
|
||||||
|
src={notFoundImg}
|
||||||
|
alt={'Страница не найдена'}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className={s.Info}>
|
||||||
|
<h2 className={s.Header}>Вы попали на несуществующую страницу!</h2>
|
||||||
|
<p className={s.Text}>
|
||||||
|
Вы можете вернутся к предыдущему шагу или перейти на главную
|
||||||
|
</p>
|
||||||
|
<p className={s.Text}>
|
||||||
|
<Link href={ROUTES.HOME}>
|
||||||
|
<strong>Перейти на главную</strong>
|
||||||
|
</Link>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export { NotFound };
|
||||||
Reference in New Issue
Block a user