diff --git a/src/assets/result_dog.svg b/src/assets/result_dog.svg
new file mode 100644
index 0000000..bd460df
--- /dev/null
+++ b/src/assets/result_dog.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/components/Button/ActionButton.ts b/src/components/Button/ActionButton.ts
index 5501ba6..9f2eadd 100644
--- a/src/components/Button/ActionButton.ts
+++ b/src/components/Button/ActionButton.ts
@@ -1,7 +1,7 @@
import styled, { BrandColors, FontWeight, GrayscaleColors, Typography } from 'styled-components'
type BgColorType =
- | Extract
+ | Extract
| Extract
type ActionButtonProps = {
@@ -19,6 +19,7 @@ type ActionButtonStyles = {
const ACTION_BUTTON_FONT_COLORS: Record = {
default: 'gc_4',
lighten_2: 'font_1',
+ lighten_3: 'font_1',
font_1: 'gc_4',
gc_4: 'font_1',
gc_1: 'font_4',
diff --git a/src/components/LazyComponents.tsx b/src/components/LazyComponents.tsx
index be7ed86..f8bb3ae 100644
--- a/src/components/LazyComponents.tsx
+++ b/src/components/LazyComponents.tsx
@@ -8,4 +8,5 @@ export const WalkPage = lazy(() => import('~pages/WalkPage'))
export const SocialPage = lazy(() => import('~pages/SocialPage'))
export const RegisterPage = lazy(() => import('~pages/RegisterPage/Register'))
export const RegisterDogPage = lazy(() => import('~pages/RegisterPage/Dog'))
+export const WalkCompletePage = lazy(() => import('~pages/WalkCompletePage'))
export const ProfilePage = lazy(() => import('~pages/ProfilePage'))
diff --git a/src/pages/WalkCompletePage/index.tsx b/src/pages/WalkCompletePage/index.tsx
new file mode 100644
index 0000000..4427939
--- /dev/null
+++ b/src/pages/WalkCompletePage/index.tsx
@@ -0,0 +1,45 @@
+import * as S from './styles'
+
+const walkData = {
+ date: '2024.12.14',
+ time: '1:10:00',
+ distance: '2.4km',
+ calories: '200kcal',
+ mapImage: 'https://imagedelivery.net/CJyrB-EkqcsF2D6ApJzEBg/6d853db2-fb51-465c-eaa8-e9e38be01f00/public',
+}
+
+export default function WalkCompletePage() {
+ return (
+
+ {walkData.date}
+
+
+ 견주닉넴과 밤톨이가
+
+ 30분동안 산책했어요.
+
+
+
+
+
+
+
+ {walkData.time}
+ 산책 시간
+
+
+ {walkData.distance}
+ 산책 거리
+
+
+ {walkData.calories}
+ 소모한 칼로리
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/pages/WalkCompletePage/styles.ts b/src/pages/WalkCompletePage/styles.ts
new file mode 100644
index 0000000..a3d3274
--- /dev/null
+++ b/src/pages/WalkCompletePage/styles.ts
@@ -0,0 +1,76 @@
+import { styled } from 'styled-components'
+import WalkCompleteDog from '~assets/result_dog.svg?react'
+import { Box } from '~components/Box'
+import { Typo13, Typo17, Typo20 } from '~components/Typo'
+import { FOOTER_HEIGHT } from '~constants/layout'
+
+export const WalkCompletePage = styled.div`
+ background-color: ${({ theme }) => theme.colors.brand.lighten_3};
+ width: 100%;
+ height: calc(100dvh - ${FOOTER_HEIGHT}px);
+ padding: 24px;
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+`
+
+export const Date = styled(Typo17)`
+ font-weight: 700;
+ color: #333;
+`
+
+export const Title = styled(Typo20)`
+ font-weight: 800;
+
+ span {
+ color: #8b4513;
+ }
+`
+
+export const WalkStats = styled(Box)`
+ display: flex;
+ justify-content: space-between;
+ padding: 22px 33px;
+ /* border-radius: 12px; */
+`
+
+export const StatItem = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 8px;
+`
+
+export const StatValue = styled(Typo20)`
+ font-weight: 800;
+ color: ${({ theme }) => theme.colors.grayscale.font_1};
+`
+
+export const StatLabel = styled(Typo13)`
+ font-weight: 500;
+ color: ${({ theme }) => theme.colors.grayscale.font_1};
+`
+
+export const MapSection = styled.div`
+ width: 100%;
+ height: 240px;
+ border-radius: 12px;
+ overflow: hidden;
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+`
+
+export const DogImageArea = styled.div`
+ display: flex;
+ justify-content: right;
+`
+
+export const DogImage = styled(WalkCompleteDog)`
+ width: 142px;
+ height: 151px;
+ display: flex;
+`
diff --git a/src/pages/WalkPage/components/MapComponent/index.tsx b/src/pages/WalkPage/components/MapComponent/index.tsx
index 32aa557..3ca2ed8 100644
--- a/src/pages/WalkPage/components/MapComponent/index.tsx
+++ b/src/pages/WalkPage/components/MapComponent/index.tsx
@@ -16,6 +16,7 @@ import XYZ from 'ol/source/XYZ'
import ReactDOMServer from 'react-dom/server'
import * as S from '~pages/WalkPage/styles'
import { MIN_ACCURACY, MIN_DISTANCE, MIN_TIME_INTERVAL } from '~types/map'
+import { useNavigate } from 'react-router-dom'
const ORS_API_URL = '/ors/v2/directions/foot-walking/geojson'
@@ -30,7 +31,12 @@ export const getMarkerIconString = () => {
return svgString
}
-export default function MapComponent() {
+// 모달 상태를 props로 받도록 수정
+interface MapComponentProps {
+ isModalOpen?: boolean
+}
+
+export default function MapComponent({ isModalOpen = false }: MapComponentProps) {
// 지도 관련 ref
const mapRef = useRef