feat: add page 404 #8

Merged
redrockjs merged 1 commits from dev into main 2025-12-15 07:43:14 +00:00
7 changed files with 122 additions and 15 deletions
Showing only changes of commit 963cc4d904 - Show all commits

24
.idea/workspace.xml generated
View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

11
src/app/not-found.tsx Normal file
View 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 />;
}

View File

@@ -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';

View File

@@ -0,0 +1 @@
export * from './ui';

View 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;
}
}
}

View 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 };