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

[온보딩페이지] STEP01 이름 입력 컴포넌트 뷰 구현 & 나머지 단계 타이틀만 구현 #50

Merged
merged 30 commits into from
Jan 9, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e3381f5
feat: onBoarding 페이지 라우터 처리
ExceptAnyone Jan 7, 2024
29227fb
feat: 온보딩 페이지 step01 뷰 구현(상태관리 등 구현x)
ExceptAnyone Jan 7, 2024
109cede
style: input값 글자 인식 추가(일단 div로)
ExceptAnyone Jan 7, 2024
92e98e6
Merge branch 'develop' into feat/#41-onBoarding-step1-view
ExceptAnyone Jan 7, 2024
670c2b1
style: 온보딩에서 공통으로 쓰일 스타일 코드 묶기
ExceptAnyone Jan 7, 2024
acb81c5
feat: 온보딩 페이지'들' 임시 라우터 처리
ExceptAnyone Jan 7, 2024
d840aa3
style: 타이틀 코드 구현
ExceptAnyone Jan 7, 2024
965af37
feat: 글자수에 따른 인풋창 상태 변화 구현
ExceptAnyone Jan 7, 2024
278d49b
style: text length에 따른 border-bottom 색상 변경
ExceptAnyone Jan 7, 2024
d6484e2
feat: useFunnel 훅 작성
ExceptAnyone Jan 7, 2024
f1d89a0
style: input창 스타일링
ExceptAnyone Jan 8, 2024
10e46c6
feat: 온보딩 라우터 추가
ExceptAnyone Jan 9, 2024
8da78da
style: 공통 스타일 분리
ExceptAnyone Jan 9, 2024
c1ed849
feat: Funnel 관리하는 최상위 온보딩페이지 추가(일단 빈 페이지)
ExceptAnyone Jan 9, 2024
1d0745a
feat: useFunnel 훅에 쓰이는 상수분리
ExceptAnyone Jan 9, 2024
febe7ce
style: STEP01 이름 입력 컴포넌트 타이틀 & 인풋창 구현
ExceptAnyone Jan 9, 2024
b5427c8
style: STEP02~05까지 우선적으로 타이틀 구현
ExceptAnyone Jan 9, 2024
4facf9b
docs: 구현 방식 변경으로 인한 파일 삭제
ExceptAnyone Jan 9, 2024
8acb700
style: App.css와 index.css 제거
ExceptAnyone Jan 9, 2024
57057c7
feat: 한글 입력이 한 글자 더 입력되는 버그 해결 가능한 정규 표현식 작성
ExceptAnyone Jan 9, 2024
dfa7d86
style: 타이틀 스타일 공통 컴포넌트로 분리 및 새로 임포트
ExceptAnyone Jan 9, 2024
058bb01
feat: Title과 SubTitle 스타일 코드 공통 컴포넌트로 작성
ExceptAnyone Jan 9, 2024
318c7ed
style: Step01~05 파일을 폴더로 분리하여 이동
ExceptAnyone Jan 9, 2024
f5cd04c
style: margin을 위해 존재하는 공통 Wrapper 삭제
ExceptAnyone Jan 9, 2024
26c2340
style: 최상위 컴포넌트에서 margin 값 주는 Wrapper 작성
ExceptAnyone Jan 9, 2024
62cfb7c
style: Step01 스타일 코드 분리
ExceptAnyone Jan 9, 2024
da75f0a
Merge branch 'develop' into feat/#41-onBoarding-step1-view
ExceptAnyone Jan 9, 2024
ee3fffa
style: 구조 분해 할당 사용하여 변수 불러오는 것으로 수정
ExceptAnyone Jan 9, 2024
affc9aa
style: css 속성 순서 정렬
ExceptAnyone Jan 9, 2024
33ce82b
style: 오타 수정
ExceptAnyone Jan 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/components/onboarding/Onboarding.style.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import styled from 'styled-components';
import theme from '../../style/theme';

export const TitleWrapper = styled.div`
margin-left: 2rem;
margin-right: 2rem;
`;

export const Title = styled.p`
color: ${theme.colors.B_01};
${theme.fonts.heading_01};
`;

export const SubTitle = styled.p`
color: ${theme.colors.G_10};
${theme.fonts.caption_02};
`;
111 changes: 111 additions & 0 deletions src/components/onboarding/Step01.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import styled, { css } from 'styled-components';
import theme from '../../style/theme';
import { useState } from 'react';

const NameInput = () => {
const [text, setText] = useState<string>('');

const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setText(e.target.value);
};
return (
<>
<TitleWrapper>
<Title>선물 받을 분의</Title>
<Title>이름, 혹은 닉네임을 알려주세요</Title>
<NameInputWrapper>
<Input
type='text'
onChange={onChange}
maxLength={10}
placeholder='이름을 입력해주세요'
hasContent={text.length > 0}
maxLengthReached={text.length === 10}
/>
{/* 여기 입력되는 input text의 색상과 폰트 어떻게 설정하지... */}
<LetterLength>({text.length}/10)</LetterLength>
</NameInputWrapper>
{/* <NextBtn type='button'>
<BtnLetter>다음</BtnLetter>
</NextBtn> */}
</TitleWrapper>
</>
);
};

export default NameInput;

const TitleWrapper = styled.div`
/* background-color: pink; */
margin-left: 2rem;
margin-right: 2rem;
`;

const Title = styled.p`
color: ${theme.colors.B_01};
${theme.fonts.heading_01};
`;

const NameInputWrapper = styled.div`
/* background-color: skyblue; */
width: 100%;
display: inline-flex;
flex-direction: column;
align-items: flex-start;
Copy link
Member

Choose a reason for hiding this comment

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

이거 저희 theme에서 mixin inlineFlexBox 사용해보면 될 것 같아용!

Copy link
Member Author

Choose a reason for hiding this comment

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

습관이 참 무섭네요 ㅠ ㅋㅋㅋ mixin 바로 적용하겠슴다

gap: 0.4rem;
margin-top: 7.2rem;
`;

const Input = styled.input<{ hasContent: boolean; maxLengthReached: boolean }>`
width: 100%;
border: none;
display: flex;
justify-content: center;
align-items: flex-start;
gap: 0.8rem;
outline: none;
border-bottom: 0.1rem solid ${theme.colors.G_02};

${(props) =>
props.hasContent &&
css`
border-bottom: 0.1rem solid ${theme.colors.P_06};
`}

${(props) =>
props.maxLengthReached &&
css`
border-bottom: 0.1rem solid ${theme.colors.G_02};
`}

&::focus {
color: ${theme.colors.P_05};
${theme.fonts.body_05}
}

&::placeholder {
font-family: 'SUIT';
color: ${theme.colors.G_07};
${theme.fonts.body_06}
}
`;

const LetterLength = styled.p`
color: ${theme.colors.G_07};
${theme.fonts.body_10}
`;

// const NextBtn = styled.button`
// display: inline-flex;
// height: 4.4rem;
// padding: 1rem 1.1rem 1rem 2rem;
// align-items: center;
// flex-shrink: 0;
// border-radius: 9.9rem;
// margin-right: 2rem;
// background-color: ${theme.colors.Grayscale.G_02};
// `;

// const BtnLetter = styled.p`
// color: ${theme.colors.Grayscale.G_07};
// `;
11 changes: 11 additions & 0 deletions src/components/onboarding/Step02.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import * as S from './Onboarding.style';

const ThumbnailInput = () => {
return (
<S.TitleWrapper>
<S.Title>썸네일을 등록해주세요</S.Title>
</S.TitleWrapper>
);
};

export default ThumbnailInput;
13 changes: 13 additions & 0 deletions src/components/onboarding/Step03.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as S from './Onboarding.style';

const GiftDelivery = () => {
return (
<S.TitleWrapper>
<S.Title>님께</S.Title>
<S.Title>언제 선물을</S.Title>
<S.Title>전달하실 예정인가요?</S.Title>
</S.TitleWrapper>
);
};

export default GiftDelivery;
13 changes: 13 additions & 0 deletions src/components/onboarding/Step04.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as S from './Onboarding.style';

const SetTournamentSchedule = () => {
return (
<S.TitleWrapper>
<S.Title>선물 토너먼트</S.Title>
<S.Title>시작 일정을 설정해주세요</S.Title>
<S.SubTitle>토너먼트 시작 전까지 선물을 등록할 수 있어요.</S.SubTitle>
</S.TitleWrapper>
);
};

export default SetTournamentSchedule;
13 changes: 13 additions & 0 deletions src/components/onboarding/Step05.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as S from './Onboarding.style';

const SetTournamentDuration = () => {
return (
<S.TitleWrapper>
<S.Title>선물 토너먼트</S.Title>
<S.Title>진행 시간을 설정해주세요</S.Title>
<S.SubTitle>토너먼트가 아래 시간 동안 진행돼요.</S.SubTitle>
</S.TitleWrapper>
);
};

export default SetTournamentDuration;
7 changes: 7 additions & 0 deletions src/core/onboarding.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export const ONBOARDING_FORM_STEP = [
'NAME',
'THUMBNAIL',
'PRESENT',
'TOURNAMENT_SCHEDULE_REGISTRATION',
'TOURNAMENT_PROCEEDING',
] as const;
7 changes: 7 additions & 0 deletions src/pages/OnBoardingPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
//온보딩 모든 컴포넌트를 funnel로 관리하는 최상위 페이지

const OnBoardingPage = () => {
return <div></div>;
};

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

const router = createBrowserRouter([
{
Expand All @@ -16,6 +17,10 @@ const router = createBrowserRouter([
path: '/mypage',
element: <Mypage />,
},
{
path: '/onboarding',
element: <OnBoardingPage />,
},
],
},
]);
Expand Down
Loading