From de06404b3ce2fd45c74c1bf24925a04417db88d9 Mon Sep 17 00:00:00 2001 From: sikkzz Date: Fri, 31 Jan 2025 15:40:09 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=98=81=EC=88=98=EC=A6=9D=20=EC=9D=B8?= =?UTF-8?q?=EC=8B=9D=20=EC=8B=A4=ED=8C=A8=20ui=20=EC=A0=9C=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/img/img-recognition-fail.png | Bin 0 -> 8450 bytes .../RecognitionFail.module.scss | 36 ++++++++++++++++++ .../RecognitionFail/RecognitionFail.tsx | 27 +++++++++++++ src/pages/RecognitionFailPage.tsx | 13 +++++++ src/router/AppRouter.tsx | 5 +++ 5 files changed, 81 insertions(+) create mode 100644 src/assets/img/img-recognition-fail.png create mode 100644 src/components/RecognitionFail/RecognitionFail.module.scss create mode 100644 src/components/RecognitionFail/RecognitionFail.tsx create mode 100644 src/pages/RecognitionFailPage.tsx diff --git a/src/assets/img/img-recognition-fail.png b/src/assets/img/img-recognition-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..ad25898db9e734264da43a49e2e9da1ddc76afcf GIT binary patch literal 8450 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 CA;E$G literal 0 HcmV?d00001 diff --git a/src/components/RecognitionFail/RecognitionFail.module.scss b/src/components/RecognitionFail/RecognitionFail.module.scss new file mode 100644 index 0000000..70651ed --- /dev/null +++ b/src/components/RecognitionFail/RecognitionFail.module.scss @@ -0,0 +1,36 @@ +.RecognitionFail { + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-bottom: 2.5rem; + height: calc(100vh - 2.75rem); + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + background: var(--color-bg-gradient); + + .Title { + padding-top: 5rem; + padding-bottom: 1.25rem; + + display: flex; + flex-direction: column; + gap: 0.625rem; + + & > span { + white-space: pre-line; + } + } + + .Image { + display: flex; + justify-content: center; + align-items: center; + } + + .Bottom { + display: flex; + align-items: center; + gap: 0.875rem; + } +} diff --git a/src/components/RecognitionFail/RecognitionFail.tsx b/src/components/RecognitionFail/RecognitionFail.tsx new file mode 100644 index 0000000..63b09ef --- /dev/null +++ b/src/components/RecognitionFail/RecognitionFail.tsx @@ -0,0 +1,27 @@ +import styles from "@/components/RecognitionFail/RecognitionFail.module.scss"; +import Button from "@/components/ui/Button/Button"; +import Text from "@/components/ui/Text/Text"; + +const RecognitionFail = () => { + return ( +
+
+ + 영수증 인식에 실패했어요 + + + {`깨끗한 배경에 영수증을 놓고\n전체가 잘 나오도록 촬영해 주세요`} + +
+
+ recognitionFailImg +
+
+
+
+ ); +}; + +export default RecognitionFail; diff --git a/src/pages/RecognitionFailPage.tsx b/src/pages/RecognitionFailPage.tsx new file mode 100644 index 0000000..fdb90c9 --- /dev/null +++ b/src/pages/RecognitionFailPage.tsx @@ -0,0 +1,13 @@ +import Navbar from "@/components/common/Navbar"; +import RecognitionFail from "@/components/RecognitionFail/RecognitionFail"; + +const RecognitionFailPage = () => { + return ( + <> + + + + ); +}; + +export default RecognitionFailPage; diff --git a/src/router/AppRouter.tsx b/src/router/AppRouter.tsx index 6481c13..f5a6b6f 100644 --- a/src/router/AppRouter.tsx +++ b/src/router/AppRouter.tsx @@ -3,6 +3,7 @@ import { RouterProvider, createBrowserRouter } from "react-router-dom"; import App from "@/App"; import HomePage from "@/pages/HomePage"; +import RecognitionFailPage from "@/pages/RecognitionFailPage"; const AppRouter = () => { const router = createBrowserRouter([ @@ -14,6 +15,10 @@ const AppRouter = () => { path: "", element: , }, + { + path: "/recognition-fail", + element: , + }, ], }, ]);