diff --git a/apps/web/app/not-found.tsx b/apps/web/app/not-found.tsx
new file mode 100644
index 00000000..18b47d3e
--- /dev/null
+++ b/apps/web/app/not-found.tsx
@@ -0,0 +1,7 @@
+import { Error404 } from '@sambad/web-domains/common';
+
+const NotFoundPage = () => {
+ return ;
+};
+
+export default NotFoundPage;
diff --git a/packages/core/sds/src/components/Icon/assets/CrossCircle.tsx b/packages/core/sds/src/components/Icon/assets/CrossCircle.tsx
new file mode 100644
index 00000000..442e3aa9
--- /dev/null
+++ b/packages/core/sds/src/components/Icon/assets/CrossCircle.tsx
@@ -0,0 +1,14 @@
+import { IconAssetProps } from '../types';
+
+export const CrossCircle = (props: IconAssetProps) => {
+ const { color, size } = props;
+
+ return (
+
+ );
+};
diff --git a/packages/core/sds/src/components/Icon/constants.ts b/packages/core/sds/src/components/Icon/constants.ts
index bad039c8..975f36b7 100644
--- a/packages/core/sds/src/components/Icon/constants.ts
+++ b/packages/core/sds/src/components/Icon/constants.ts
@@ -7,6 +7,7 @@ import { AngleUpIcon } from './assets/AngleUp';
import { CaretDownIcon } from './assets/CaretDown';
import { CheckIcon } from './assets/Check';
import { CommentsIcon } from './assets/CommentsIcon';
+import { CrossCircle } from './assets/CrossCircle';
import { CrownIcon } from './assets/Crown';
import { Landscape } from './assets/Landscape';
import { SadUserIcon } from './assets/SadUserIcon';
@@ -32,4 +33,5 @@ export const iconMap = {
stats: Stats,
upload: Upload,
check: CheckIcon,
+ 'cross-circle': CrossCircle,
};
diff --git a/packages/web-domains/src/common/components/Error/404.tsx b/packages/web-domains/src/common/components/Error/404.tsx
new file mode 100644
index 00000000..374b369e
--- /dev/null
+++ b/packages/web-domains/src/common/components/Error/404.tsx
@@ -0,0 +1,31 @@
+'use client';
+
+import { css } from '@emotion/react';
+import { Icon, Txt } from '@sds/components';
+import { colors, size } from '@sds/theme';
+
+import { titleCss } from './styles';
+
+export const Error404 = () => {
+ return (
+
+
+
페이지를 찾을 수 없습니다
+
+ 죄송합니다. 원하시는 페이지를 찾을 수 없습니다.
+
+ 요청하신 페이지가 사라졌거나, 잘못된 경로입니다.
+
+
+ );
+};
+
+const containerCss = css({
+ width: '100%',
+ height: '100dvh',
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'center',
+ justifyContent: 'center',
+ position: 'relative',
+});
diff --git a/packages/web-domains/src/common/components/Error/index.ts b/packages/web-domains/src/common/components/Error/index.ts
index 6edbfb3f..576dbc39 100644
--- a/packages/web-domains/src/common/components/Error/index.ts
+++ b/packages/web-domains/src/common/components/Error/index.ts
@@ -1 +1,2 @@
export { Error500 } from './500';
+export { Error404 } from './404';
diff --git a/packages/web-domains/src/common/index.ts b/packages/web-domains/src/common/index.ts
index cc680dc4..88e81a3d 100644
--- a/packages/web-domains/src/common/index.ts
+++ b/packages/web-domains/src/common/index.ts
@@ -4,3 +4,4 @@ export { QueryClientProvider } from './contexts/QueryClientProvider';
export { RootLayout } from './layout/RootLayout';
export { GlobalStyle } from './styles/GlobalStyles';
export { getWebDomain } from './utils/getWebDomain';
+export * from './components/Error';