diff --git a/src/assets/images/empty-order.webp b/src/assets/images/empty-order.webp
new file mode 100644
index 0000000..a9dca34
Binary files /dev/null and b/src/assets/images/empty-order.webp differ
diff --git a/src/components/_common/EmptyState.tsx b/src/components/_common/EmptyState.tsx
index e33a68e..ad11f8d 100644
--- a/src/components/_common/EmptyState.tsx
+++ b/src/components/_common/EmptyState.tsx
@@ -26,19 +26,19 @@ const styles = StyleSheet.create({
backgroundColor: colors.WHITE,
},
icon: {
- width: 220,
- height: 220,
- marginBottom: 16,
+ width: 180,
+ height: 180,
+ marginBottom: 25,
},
title: {
- fontSize: 18,
+ fontSize: 20,
fontFamily: 'Pretendard-SemiBold',
color: '#222',
textAlign: 'center',
},
subtitle: {
- marginTop: 8,
- fontSize: 14,
+ marginTop: 5,
+ fontSize: 15,
fontFamily: 'Pretendard-Regular',
color: '#666',
textAlign: 'center',
diff --git a/src/navigations/bottomTabs/SellerBottomTabsNavigator.tsx b/src/navigations/bottomTabs/SellerBottomTabsNavigator.tsx
index 94bf112..11c3181 100644
--- a/src/navigations/bottomTabs/SellerBottomTabsNavigator.tsx
+++ b/src/navigations/bottomTabs/SellerBottomTabsNavigator.tsx
@@ -2,7 +2,6 @@ import React from 'react';
import { SvgProps } from 'react-native-svg';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
-import { MenuItem } from '../stack/SellerStackNavigator';
import AcceptActive from '@/assets/icons/accept-active.svg';
import Accept from '@/assets/icons/accept.svg';
import MenuActive from '@/assets/icons/menu-active.svg';
@@ -14,6 +13,7 @@ import { sellerNavigations } from '@/constants/navigations';
import SellerMenuScreen from '@/screens/seller/SellerMenuScreen';
import SellerMypageScreen from '@/screens/seller/SellerMypageScreen';
import SellerOrderScreen from '@/screens/seller/SellerOrderScreen';
+import { MenuItem } from '@/types/domain';
export type SellerBottomTabsParamList = {
[sellerNavigations.MENU_HOME]: { updatedMenu?: MenuItem } | undefined;
@@ -64,7 +64,7 @@ function SellerBottomTabsNavigator() {
name={sellerNavigations.MENU_HOME}
component={SellerMenuScreen}
options={{
- title: '메뉴관리',
+ title: '메뉴 관리',
tabBarIcon: ({ focused }) => renderTabIcon(focused, MenuActive, Menu),
}}
/>
diff --git a/src/screens/notification/NotificationScreen.tsx b/src/screens/notification/NotificationScreen.tsx
index b8e53a5..4a35264 100644
--- a/src/screens/notification/NotificationScreen.tsx
+++ b/src/screens/notification/NotificationScreen.tsx
@@ -20,22 +20,28 @@ const getIconByType = (type: string) => {
}
};
-// ✅ 더미데이터
const dummyNotifications = [
{
id: 1,
- type: 'ENVIRONMENT_LEVEL_UP',
- title: '레벨업',
+ type: 'ORDER_COMPLETION',
+ title: '주문 완료',
createdAt: '2분 전',
- body: '축하합니다! 환경 레벨 3단계를 달성했어요.\n환경 쿠폰이 발급되었어요',
+ body: '경성꽈배기의 주문이 접수되었습니다!\n가게에서 곧 준비를 시작할거에요.',
},
{
id: 2,
- type: 'ORDER_COMPLETION',
- title: '주문 완료',
- createdAt: '2분 전',
- body: '죠죠 대학로점의 주문이 접수되었습니다!\n가게에서 곧 준비를 시작할거에요.',
+ type: 'ENVIRONMENT_LEVEL_UP',
+ title: '레벨업',
+ createdAt: '3분 전',
+ body: '축하합니다! 환경 레벨 3단계를 달성했어요.\n환경 쿠폰이 발급되었어요',
},
+ // {
+ // id: 3,
+ // type: 'ORDER_COMPLETION',
+ // title: '주문 완료',
+ // createdAt: '5일 전',
+ // body: '죠죠 대학로점의 주문이 접수되었습니다!\n가게에서 곧 준비를 시작할거에요.',
+ // },
];
const NotificationScreen = () => {
diff --git a/src/screens/seller/SellerMenuModifyScreen.tsx b/src/screens/seller/SellerMenuModifyScreen.tsx
index 2ad16a3..d4fae85 100644
--- a/src/screens/seller/SellerMenuModifyScreen.tsx
+++ b/src/screens/seller/SellerMenuModifyScreen.tsx
@@ -18,6 +18,8 @@ import {
import { launchImageLibrary, ImagePickerResponse, Asset } from 'react-native-image-picker';
import { RouteProp, useNavigation, useRoute } from '@react-navigation/native';
import { StackNavigationProp } from '@react-navigation/stack';
+import Minus from '@/assets/icons/minus.svg';
+import Plus from '@/assets/icons/plus.svg';
import { colors } from '@/constants/colors';
import { sellerNavigations } from '@/constants/navigations';
import { SellerStackparamList } from '@/navigations/stack/SellerStackNavigator';
@@ -178,7 +180,7 @@ const SellerMenuModifyScreen = () => {
수량
- -
+
{
keyboardType="numeric"
/>
- +
+
@@ -236,7 +238,6 @@ const styles = StyleSheet.create({
marginBottom: 20,
flexDirection: 'row',
marginHorizontal: 25,
- alignItems: 'center',
gap: 5,
},
scrollContainer: {
@@ -246,16 +247,19 @@ const styles = StyleSheet.create({
flex: 1,
borderWidth: 1,
borderColor: colors.GRAY_200,
- borderRadius: 4,
- paddingHorizontal: 8,
- paddingVertical: 4,
+ borderRadius: 8,
+ paddingHorizontal: 12,
+ paddingVertical: 8,
color: colors.BLACK,
+ fontSize: 15,
+ fontFamily: 'Pretendard-Regular',
},
label: {
+ marginTop: 5,
width: 80,
- fontSize: 16,
- color: colors.GRAY_700,
- fontFamily: 'Pretendard-Regular',
+ fontSize: 15,
+ color: colors.BLACK,
+ fontFamily: 'Pretendard-Medium',
},
controls: {
flex: 1,
@@ -285,7 +289,7 @@ const styles = StyleSheet.create({
textAlign: 'center',
},
quantityInput: {
- width: 130,
+ flex: 1,
height: 40,
textAlign: 'center',
borderWidth: 1,
@@ -320,7 +324,7 @@ const styles = StyleSheet.create({
imageButton: {
marginHorizontal: 25,
marginLeft: 25 + 80 + 5,
- paddingVertical: 12,
+ paddingVertical: 8,
borderRadius: 6,
backgroundColor: colors.WHITE,
borderColor: colors.GREEN,
diff --git a/src/screens/seller/SellerMenuScreen.tsx b/src/screens/seller/SellerMenuScreen.tsx
index 2bbc8e5..c6a34a2 100644
--- a/src/screens/seller/SellerMenuScreen.tsx
+++ b/src/screens/seller/SellerMenuScreen.tsx
@@ -81,7 +81,7 @@ const SellerMenuScreen = () => {
style={styles.topContainer}
onPress={() => navigation.navigate(sellerNavigations.MENU_REGISTER)}
>
-
+
메뉴등록
@@ -90,29 +90,30 @@ const SellerMenuScreen = () => {
showsVerticalScrollIndicator={false}
contentContainerStyle={{ paddingBottom: 24 }}
>
- {menus.map((menu) => (
-
-
-
-
- {menu.name}
- {menu.info}
-
- {menu.price.toLocaleString('ko-KR')}원
-
+ {menus.map((menu, index) => (
+
+
+
+
+
+
+ {menu.name}
+ {menu.info}
+
+ {menu.price.toLocaleString('ko-KR')}원
+
+ navigation.navigate(sellerNavigations.MENU_MODIFY, { menu })}
+ >
+ 수정
+
+
-
- navigation.navigate(sellerNavigations.MENU_MODIFY, {
- menu,
- })
- }
- >
-
- 수정
-
+
+ {/* 마지막 요소가 아닐 때만 line 표시 */}
+ {index < menus.length - 1 && }
))}
@@ -129,13 +130,20 @@ const styles = StyleSheet.create({
},
innerContainer: {
paddingHorizontal: 20,
- paddingVertical: 13,
+ paddingVertical: 18,
},
topContainer: {
flexDirection: 'row',
alignItems: 'center',
- backgroundColor: colors.WHITE,
- alignSelf: 'stretch',
+ alignSelf: 'flex-start',
+ paddingLeft: 6,
+ paddingRight: 9,
+ paddingVertical: 5,
+ backgroundColor: '#079500',
+ gap: 3,
+ borderWidth: 1,
+ borderRadius: 8,
+ borderColor: '#079500',
},
listContainer: {
flexShrink: 0,
@@ -152,7 +160,7 @@ const styles = StyleSheet.create({
},
infoContainer: {
flexDirection: 'row',
- gap: 5,
+ gap: 10,
},
img: {
width: 80,
@@ -164,15 +172,16 @@ const styles = StyleSheet.create({
textContainer: {
justifyContent: 'center',
flexDirection: 'column',
+ gap: 3,
},
greenRegularText_15: {
fontSize: 15,
- fontFamily: 'Pretendard-Regular',
- color: colors.GREEN,
+ fontFamily: 'Pretendard-SemiBold',
+ color: colors.WHITE,
},
blackBoldText_15: {
- fontSize: 15,
- fontFamily: 'Pretendard-Bold',
+ fontSize: 16,
+ fontFamily: 'Pretendard-Medium',
color: colors.BLACK,
},
grayRegularText_13: {
@@ -180,15 +189,31 @@ const styles = StyleSheet.create({
fontFamily: 'Pretendard-Regular',
color: colors.GRAY_700,
},
+ editText: {
+ fontSize: 13,
+ fontFamily: 'Pretendard-Regular',
+ color: colors.BLACK,
+ },
+ priceText: {
+ fontSize: 15,
+ fontFamily: 'Pretendard-SemiBold',
+ color: colors.BLACK,
+ },
deleteButton: {
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
paddingVertical: 4,
- paddingHorizontal: 6,
- backgroundColor: colors.GRAY_200,
- borderRadius: 10,
- gap: 2,
+ paddingHorizontal: 10,
+ backgroundColor: colors.WHITE,
+ borderColor: '#9C9C9C',
+ borderWidth: 1,
+ borderRadius: 7,
+ gap: 4,
+ },
+ line: {
+ height: 1,
+ backgroundColor: '#eaeaeaff',
},
});
diff --git a/src/screens/seller/SellerMypageScreen.tsx b/src/screens/seller/SellerMypageScreen.tsx
index eb78ea5..894744b 100644
--- a/src/screens/seller/SellerMypageScreen.tsx
+++ b/src/screens/seller/SellerMypageScreen.tsx
@@ -17,7 +17,7 @@ const SellerMypageScreen = () => {
const dummyInsight = {
salesAmount: 125000,
- popularMenu: ['죠죠 야끼소바', '새우구이', '매운 우동'],
+ popularMenu: ['경성꽈배기', '팥도너츠', '김치고기 고로케'],
monthAmount: {
'2025-05': 1050000,
'2025-06': 800000,
diff --git a/src/screens/seller/SellerOrderScreen.tsx b/src/screens/seller/SellerOrderScreen.tsx
index d693cc2..5fe19f3 100644
--- a/src/screens/seller/SellerOrderScreen.tsx
+++ b/src/screens/seller/SellerOrderScreen.tsx
@@ -2,6 +2,8 @@ import { useState } from 'react';
import { Text, StyleSheet, View, FlatList, ActivityIndicator } from 'react-native';
import { TouchableOpacity } from 'react-native-gesture-handler';
import { SafeAreaView } from 'react-native-safe-area-context';
+import EmptyOrderImage from '@/assets/images/empty-order.webp';
+import EmptyState from '@/components/_common/EmptyState';
import CustomModal from '@/components/_modal/CustomModal';
import { colors } from '@/constants/colors';
import { stateMap } from '@/constants/modalStates';
@@ -25,7 +27,13 @@ const SellerOrderScreen = () => {
const { mutate: failOrder } = useFailOrder();
const renderItem = ({ item: order }: { item: SellerOrder }) => {
- const time = order.pickupDueTime.substring(11, 16);
+ const date = new Date(order.pickupDueTime);
+ const time = date.toLocaleTimeString('ko-KR', {
+ hour: '2-digit',
+ minute: '2-digit',
+ hour12: false,
+ timeZone: 'Asia/Seoul',
+ });
const formattedAmount = `${order.totalAmount.toLocaleString('ko-KR')}원`;
return (
@@ -108,7 +116,14 @@ const SellerOrderScreen = () => {
ListFooterComponent={
isFetchingNextPage ? : null
}
- contentContainerStyle={{ paddingBottom: 45 }}
+ ListEmptyComponent={
+
+ }
+ contentContainerStyle={{ flexGrow: 1, paddingBottom: 45 }}
/>
@@ -195,7 +210,7 @@ const styles = StyleSheet.create({
},
whiteRegularText_15: {
fontSize: 15,
- fontFamily: 'Pretendard-Regular',
+ fontFamily: 'Pretendard-SemiBold',
color: colors.WHITE,
},
blackRegularText_15: {
diff --git a/src/screens/store/MenuDetailScreen.tsx b/src/screens/store/MenuDetailScreen.tsx
index 22a21d4..ffea784 100644
--- a/src/screens/store/MenuDetailScreen.tsx
+++ b/src/screens/store/MenuDetailScreen.tsx
@@ -172,7 +172,7 @@ const MenuDetailScreen = () => {
{menu.dailyDiscountPercent > 0 && (
{(menu.price * count).toLocaleString()}원
)}
- {menu.discountPrice.toLocaleString()}원
+ {(menu.discountPrice * count).toLocaleString()}원
장바구니에 담기