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