From b0f21204422d151f55cb7c24d372f99bd8d686ec Mon Sep 17 00:00:00 2001 From: hwangdae Date: Fri, 18 Jul 2025 18:30:34 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=A3=BC=EB=AC=B8=EB=82=B4=EC=97=AD=20?= =?UTF-8?q?=ED=8D=BC=EB=B8=94=EB=A6=AC=EC=8B=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/nowait-user/src/components/EmptyPage.tsx | 32 ++++++++++ .../src/components/SmallActionButton.tsx | 4 +- apps/nowait-user/src/lib/order.ts | 4 +- .../order/home/components/StoreHeader.tsx | 11 ++-- .../order/orderDetails/OrderDetailsPage.tsx | 58 +++++++++++++++++++ .../components/EmptyOrderDetails.tsx | 13 +++++ .../pages/order/orderList/OrderListPage.tsx | 1 + .../order/orderList/components/EmptyCart.tsx | 26 ++------- apps/nowait-user/src/routes/Router.tsx | 6 +- 9 files changed, 126 insertions(+), 29 deletions(-) create mode 100644 apps/nowait-user/src/components/EmptyPage.tsx create mode 100644 apps/nowait-user/src/pages/order/orderDetails/OrderDetailsPage.tsx create mode 100644 apps/nowait-user/src/pages/order/orderDetails/components/EmptyOrderDetails.tsx diff --git a/apps/nowait-user/src/components/EmptyPage.tsx b/apps/nowait-user/src/components/EmptyPage.tsx new file mode 100644 index 00000000..9cb4bdc6 --- /dev/null +++ b/apps/nowait-user/src/components/EmptyPage.tsx @@ -0,0 +1,32 @@ +import { useNavigate, useParams } from "react-router-dom"; +import { SmallActionButton } from "./SmallActionButton"; +import Add from "../assets/icon/Add.svg?react"; + +interface PropsType { + mode: "default" | "orderDetails"; + title: string; + buttonText: string; +} + +const EmptyPage = ({ mode, title, buttonText }: PropsType) => { + const navigate = useNavigate(); + const { storeId } = useParams(); + return ( +
+

+ {title} +

+ navigate(`/${storeId}`)} + > + {buttonText} + + +
+ ); +}; + +export default EmptyPage; diff --git a/apps/nowait-user/src/components/SmallActionButton.tsx b/apps/nowait-user/src/components/SmallActionButton.tsx index 6c8512b2..4599a81a 100644 --- a/apps/nowait-user/src/components/SmallActionButton.tsx +++ b/apps/nowait-user/src/components/SmallActionButton.tsx @@ -1,4 +1,5 @@ interface PropsType { + mode? : "default" | "orderDetails" type?: "button" | "submit" | "reset"; ariaLabel: string; children: React.ReactNode; @@ -6,6 +7,7 @@ interface PropsType { className?: string; } export const SmallActionButton = ({ + mode = "default", type = "button", children, onClick, @@ -16,7 +18,7 @@ export const SmallActionButton = ({ +

+ 주문내역 1건 +

+ + + + ); +}; + +export default OrderDetailsPage; diff --git a/apps/nowait-user/src/pages/order/orderDetails/components/EmptyOrderDetails.tsx b/apps/nowait-user/src/pages/order/orderDetails/components/EmptyOrderDetails.tsx new file mode 100644 index 00000000..5b3c4eab --- /dev/null +++ b/apps/nowait-user/src/pages/order/orderDetails/components/EmptyOrderDetails.tsx @@ -0,0 +1,13 @@ +import EmptyPage from "../../../../components/EmptyPage"; + +const EmptyOrderDetails = () => { + return ( + + ); +}; + +export default EmptyOrderDetails; diff --git a/apps/nowait-user/src/pages/order/orderList/OrderListPage.tsx b/apps/nowait-user/src/pages/order/orderList/OrderListPage.tsx index fd875149..93a786a4 100644 --- a/apps/nowait-user/src/pages/order/orderList/OrderListPage.tsx +++ b/apps/nowait-user/src/pages/order/orderList/OrderListPage.tsx @@ -60,6 +60,7 @@ const OrderListPage = () => { })} navigate(`/${storeId}`)} diff --git a/apps/nowait-user/src/pages/order/orderList/components/EmptyCart.tsx b/apps/nowait-user/src/pages/order/orderList/components/EmptyCart.tsx index 076bfa20..207856eb 100644 --- a/apps/nowait-user/src/pages/order/orderList/components/EmptyCart.tsx +++ b/apps/nowait-user/src/pages/order/orderList/components/EmptyCart.tsx @@ -1,26 +1,12 @@ -import { useNavigate, useParams } from "react-router-dom"; -import Add from "../../../../assets/icon/Add.svg?react"; -import { SmallActionButton } from "../../../../components/SmallActionButton"; +import EmptyPage from "../../../../components/EmptyPage"; const EmptyCart = () => { - const navigate = useNavigate(); - const { storeId } = useParams(); return ( -
-

- 아직 담긴 메뉴가 없어요. -
- 마음에 드는 메뉴를 담아주세요! -

- navigate(`/${storeId}`)} - > - 추가하기 - - -
+ ); }; diff --git a/apps/nowait-user/src/routes/Router.tsx b/apps/nowait-user/src/routes/Router.tsx index 7911939a..0b7d1487 100644 --- a/apps/nowait-user/src/routes/Router.tsx +++ b/apps/nowait-user/src/routes/Router.tsx @@ -17,6 +17,7 @@ import AddMenuPage from "../pages/order/addMenu/AddMenuPage"; import RemittanceWaitPage from "../pages/order/remittenceWait/RemittanceWaitPage"; import { TransitionGroup, CSSTransition } from "react-transition-group"; import "../components/layout/transition.css"; +import OrderDetailsPage from "../pages/order/orderDetails/OrderDetailsPage"; // AuthGuard로 래핑하는 헬퍼 함수 const withAuth = (Component: React.ComponentType) => ( @@ -71,7 +72,10 @@ const Router = () => { path="/:storeId/order/success" element={withTransition(OrderSuccessPage)} /> - + {/* 보호된 라우트 - 인증 필요 */}