Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[선물홈 세부 페이지] 친구 등록, 2030 세부 페이지 UI 구현 #51

Merged
merged 13 commits into from
Jan 9, 2024
Merged
23 changes: 23 additions & 0 deletions src/components/common/MiniTimer/MiniTimer.styled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import styled from 'styled-components';

export const MiniTimerWrapper = styled.div`
width: 10.3rem;
height: 2.7rem;

padding: 0.3rem 1rem;
margin: 2.2rem 0 1.2rem 0;

display: flex;
justify-content: center;
align-items: center;

column-gap: 0.4rem;

border-radius: 1.4rem;
background: ${({ theme }) => theme.colors.G_01};
`;

export const MiniTimerNumbers = styled.span`
${({ theme }) => theme.fonts.body_09};
color: ${({ theme }) => theme.colors.P_06};
`;
15 changes: 15 additions & 0 deletions src/components/common/MiniTimer/MiniTimer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import * as S from './MiniTimer.styled';

interface MiniTimerProps {
time: string;
}

function MiniTimer({ time }: MiniTimerProps) {
return (
<S.MiniTimerWrapper>
<S.MiniTimerNumbers>{time}</S.MiniTimerNumbers>
</S.MiniTimerWrapper>
);
}

export default MiniTimer;
7 changes: 7 additions & 0 deletions src/pages/GiftAddPage/GiftAddPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as S from './GiftAddPage.styled';

function GiftAddPage() {
return <S.GiftAddPageWrapper></S.GiftAddPageWrapper>;
}

export default GiftAddPage;
62 changes: 62 additions & 0 deletions src/pages/GiftHomeDetail/GiftHomeDetail.styled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import styled from 'styled-components';

export const GiftHomeDetailPageWrapper = styled.div`
width: 100%;

display: flex;
flex-direction: column;
align-items: center;

background-color: ${({ theme }) => theme.colors.white};
`;

export const GiftHomeDetailWrapper = styled.div`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

article도 좋을 것 같아요!

width: 100%;
padding: 0 2rem;

display: flex;
justify-content: space-between;
flex-wrap: wrap;
`;

export const GiftsItemWrapper = styled.div`
width: 16rem;
height: 25.7rem;
padding: 0;

display: flex;
flex-direction: column;
align-items: flex-start;
`;

export const GiftsItemImage = styled.img`
width: 16rem;
height: 16rem;

border-radius: 1rem;
background-color: ${({ theme }) => theme.colors.G_03};
border: 1px solid ${({ theme }) => theme.colors.G_02};
`;

export const GiftsItemTitle = styled.p`
display: -webkit-box;
width: 12.8rem;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;

${({ theme }) => theme.fonts.body_09};
overflow: hidden;
color: ${({ theme }) => theme.colors.black};
text-overflow: ellipsis;
text-align: left;
`;

export const GiftsItemPrice = styled.span`
${({ theme }) => theme.fonts.body_07};
color: ${({ theme }) => theme.colors.black};
`;

export const GiftsItemUser = styled.span`
${({ theme }) => theme.fonts.caption_02};
color: ${({ theme }) => theme.colors.G_08};
`;
43 changes: 43 additions & 0 deletions src/pages/GiftHomeDetail/GiftHomeDetail2030.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import * as S from './GiftHomeDetail.styled';
import MiniTimer from '../../components/common/MiniTimer/MiniTimer';

function GiftHomeDetail() {
const price = 42000;
const name = '왕호은';
const time = '00:00:00';

return (
<S.GiftHomeDetailPageWrapper>
{/* 공통 헤더 추가 예정 */}
<MiniTimer time={time} />
<S.GiftHomeDetailWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>{name}</S.GiftsItemUser>
</S.GiftsItemWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>{name}</S.GiftsItemUser>
</S.GiftsItemWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>{name}</S.GiftsItemUser>
</S.GiftsItemWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>{name}</S.GiftsItemUser>
</S.GiftsItemWrapper>
</S.GiftHomeDetailWrapper>
</S.GiftHomeDetailPageWrapper>
);
}

export default GiftHomeDetail;
52 changes: 52 additions & 0 deletions src/pages/GiftHomeDetail/GiftHomeDetailFriends.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import * as S from './GiftHomeDetail.styled';
import MiniTimer from '../../components/common/MiniTimer/MiniTimer';

function GiftHomeDetail() {
const price = 42000;
const name = '왕호은';
const people = 3;
const time = '00:00:00';

return (
<S.GiftHomeDetailPageWrapper>
{/* 공통 헤더 추가 예정 */}
<MiniTimer time={time} />
<S.GiftHomeDetailWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>
{name} | 인당 {Math.floor(price / people)}원
</S.GiftsItemUser>
</S.GiftsItemWrapper>
Comment on lines +15 to +22
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컴포넌트를 분리할 수 있다면 분리하자! 라는 마인드의 관점도 추천드립니다! minitimer 부분 처리하는 컴포넌트와 지금 아이템 데이터패칭 부분이 지금 코드에선 같이 존재하니까 이 부분 분리하는 것도 더 좋은 관심사의 분리가 될 수 있을 것 같아 의견을 제시해보아용!

<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>
{name} | 인당 {Math.floor(price / people)}원
</S.GiftsItemUser>
</S.GiftsItemWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>
{name} | 인당 {Math.floor(price / people)}원
</S.GiftsItemUser>
</S.GiftsItemWrapper>
<S.GiftsItemWrapper>
<S.GiftsItemImage></S.GiftsItemImage>
<S.GiftsItemTitle>어센틱 로고 후디 멜란지 그레이</S.GiftsItemTitle>
<S.GiftsItemPrice>{price}원</S.GiftsItemPrice>
<S.GiftsItemUser>
{name} | 인당 {Math.floor(price / people)}원
</S.GiftsItemUser>
</S.GiftsItemWrapper>
</S.GiftHomeDetailWrapper>
</S.GiftHomeDetailPageWrapper>
);
}

export default GiftHomeDetail;
12 changes: 12 additions & 0 deletions src/router/Router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { createBrowserRouter } from 'react-router-dom';
import Main from '../pages/Main';
import Mypage from '../pages/Mypage';
import Layout from '../layouts/Layout';
import GiftHomeDetailFriends from '../pages/GiftHomeDetail/GiftHomeDetailFriends';
import GiftHomeDetail2030 from '../pages/GiftHomeDetail/GiftHomeDetail2030';

const router = createBrowserRouter([
{
Expand All @@ -16,6 +18,16 @@ const router = createBrowserRouter([
path: '/mypage',
element: <Mypage />,
},
{
// 임의로 세부페이지 추가
path: '/giftdetailfriends',
element: <GiftHomeDetailFriends />,
},
{
// 임의로 세부페이지 추가
path: '/giftdetail2030',
element: <GiftHomeDetail2030 />,
},
],
},
]);
Expand Down
1 change: 1 addition & 0 deletions src/style/GlobalStyle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ ${reset}
scrollbar-width: none; /* 파이어폭스 스크롤바 숨김 */

margin: 0 auto;
padding:0;
font-size: 62.5%;
-ms-overflow-style: none; /* 인터넷 익스플로러 스크롤바 숨김 */
scrollbar-width: none; /* 파이어폭스 스크롤바 숨김 */
Expand Down