diff --git a/frontend/src/components/GameResult/GameResult.styled.ts b/frontend/src/components/GameResult/GameResult.styled.ts index 0dfd6cae4..5b6951d55 100644 --- a/frontend/src/components/GameResult/GameResult.styled.ts +++ b/frontend/src/components/GameResult/GameResult.styled.ts @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; -export const layout = css` +export const gameResultLayout = css` display: flex; flex-direction: column; justify-content: center; diff --git a/frontend/src/components/GameResult/GameResult.tsx b/frontend/src/components/GameResult/GameResult.tsx index 7355320dc..adfde8a71 100644 --- a/frontend/src/components/GameResult/GameResult.tsx +++ b/frontend/src/components/GameResult/GameResult.tsx @@ -1,6 +1,6 @@ import { useNavigate } from 'react-router-dom'; -import { gameResultTitle, gameResultTitleWrapper, layout } from './GameResult.styled'; +import { gameResultTitle, gameResultTitleWrapper, gameResultLayout } from './GameResult.styled'; import Button from '@/components/common/Button/Button'; @@ -12,7 +12,7 @@ const GameResult = () => { }; return ( -
+

게임 결과

diff --git a/frontend/src/components/NicknameList/NicknameList.styled.ts b/frontend/src/components/NicknameList/NicknameList.styled.ts index d1fe809c6..28f20d469 100644 --- a/frontend/src/components/NicknameList/NicknameList.styled.ts +++ b/frontend/src/components/NicknameList/NicknameList.styled.ts @@ -1,10 +1,10 @@ import { css } from '@emotion/react'; -export const layout = css` +export const nicknameListLayout = css` display: flex; justify-content: space-around; - width: 24.5rem; - height: 15.4rem; + width: 24.4rem; + height: 15.8rem; `; export const nicknameContainer = css` diff --git a/frontend/src/components/NicknameList/NicknameList.tsx b/frontend/src/components/NicknameList/NicknameList.tsx index a72d8c950..35f83aa0a 100644 --- a/frontend/src/components/NicknameList/NicknameList.tsx +++ b/frontend/src/components/NicknameList/NicknameList.tsx @@ -1,11 +1,11 @@ -import { layout, nicknameContainer, verticalLine } from './NicknameList.styled'; +import { nicknameListLayout, nicknameContainer, verticalLine } from './NicknameList.styled'; const NicknameList = () => { const optionANicknames = ['철수', '철수', '철수', '철수', '철수', '철수', '철수', '철수', '철수']; const optionBNicknames = ['영미', '영미', '영미']; return ( -
+
{optionANicknames.map((optionANickname) => ( {optionANickname} diff --git a/frontend/src/components/RoundVoteResult/RoundVoteResult.styled.ts b/frontend/src/components/RoundVoteResult/RoundVoteResult.styled.ts index b99fb6126..670869b95 100644 --- a/frontend/src/components/RoundVoteResult/RoundVoteResult.styled.ts +++ b/frontend/src/components/RoundVoteResult/RoundVoteResult.styled.ts @@ -2,16 +2,16 @@ import { css } from '@emotion/react'; import { Theme } from '@/styles/Theme'; -interface LayoutProps { +interface RoundVoteResultLayoutProps { percentage: number; } -export const layout = ({ percentage }: LayoutProps) => css` +export const roundVoteResultLayout = ({ percentage }: RoundVoteResultLayoutProps) => css` display: flex; justify-content: space-around; align-items: center; - width: 24.5rem; - height: 11rem; + width: 24rem; + height: 11.6rem; font-size: 1.2rem; background: linear-gradient( diff --git a/frontend/src/components/RoundVoteResult/RoundVoteResult.tsx b/frontend/src/components/RoundVoteResult/RoundVoteResult.tsx index a780a1187..634ac52e8 100644 --- a/frontend/src/components/RoundVoteResult/RoundVoteResult.tsx +++ b/frontend/src/components/RoundVoteResult/RoundVoteResult.tsx @@ -1,4 +1,4 @@ -import { layout, fontBold, voteContent } from './RoundVoteResult.styled'; +import { roundVoteResultLayout, fontBold, voteContent } from './RoundVoteResult.styled'; import useBalanceContentQuery from '@/hooks/useBalanceContentQuery'; @@ -6,7 +6,7 @@ const RoundVoteResult = () => { const { balanceContent } = useBalanceContentQuery(); return ( -
+
{balanceContent?.firstOption.name}
72%
diff --git a/frontend/src/components/SelectContainer/SelectContainer.styled.ts b/frontend/src/components/SelectContainer/SelectContainer.styled.ts index 80ba82c2c..1a134def7 100644 --- a/frontend/src/components/SelectContainer/SelectContainer.styled.ts +++ b/frontend/src/components/SelectContainer/SelectContainer.styled.ts @@ -1,11 +1,11 @@ import { css } from '@emotion/react'; -export const layout = css` +export const selectContainerLayout = css` display: flex; flex-direction: column; justify-content: center; align-items: center; - gap: 5rem; + gap: 4rem; flex-basis: 55%; `; diff --git a/frontend/src/components/SelectContainer/SelectContainer.tsx b/frontend/src/components/SelectContainer/SelectContainer.tsx index 65eed1455..76a40645d 100644 --- a/frontend/src/components/SelectContainer/SelectContainer.tsx +++ b/frontend/src/components/SelectContainer/SelectContainer.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { layout, selectSection } from './SelectContainer.styled'; +import { selectContainerLayout, selectSection } from './SelectContainer.styled'; import Button from '@/components/common/Button/Button'; import SelectOption from '@/components/SelectOption/SelectOption'; @@ -25,7 +25,7 @@ const SelectContainer = () => { return ( <> {balanceContent && ( -
+
css` +export const SelectOptionLayout = (selected: boolean) => css` display: flex; justify-content: center; align-items: center; - width: 11.4rem; + width: 11.6rem; height: 16.8rem; padding: 1.6rem; diff --git a/frontend/src/components/SelectOption/SelectOption.tsx b/frontend/src/components/SelectOption/SelectOption.tsx index 4070eb93a..cb7f7312b 100644 --- a/frontend/src/components/SelectOption/SelectOption.tsx +++ b/frontend/src/components/SelectOption/SelectOption.tsx @@ -1,4 +1,4 @@ -import { layout } from './SelectOption.styled'; +import { SelectOptionLayout } from './SelectOption.styled'; import { BalanceContent } from '@/types/balanceContent'; @@ -11,7 +11,7 @@ interface SelectOptionProps { const SelectOption = ({ option, selectedId, handleSelectOption }: SelectOptionProps) => { return ( +
+ ); +}; + +export default MainPage; diff --git a/frontend/src/pages/NicknamePage/NicknamePage.styled.ts b/frontend/src/pages/NicknamePage/NicknamePage.styled.ts new file mode 100644 index 000000000..7f9fd3a51 --- /dev/null +++ b/frontend/src/pages/NicknamePage/NicknamePage.styled.ts @@ -0,0 +1,39 @@ +import { css } from '@emotion/react'; + +import { Theme } from '@/styles/Theme'; + +export const profile = css` + width: 8rem; + height: 8rem; + margin-top: 4rem; + + background-color: ${Theme.color.gray300}; + border-radius: 50%; +`; + +export const nickname = css` + width: 26.8rem; + margin: 2rem 0; + + font-weight: 600; + font-size: 1.6rem; +`; + +export const nicknameInputWrapper = css` + display: flex; + align-items: center; + width: 26.8rem; + height: 4.8rem; + padding: 0 1rem; + + background-color: ${Theme.color.gray200}; + border-radius: 1rem; +`; + +export const nicknameInput = css` + width: 100%; + border: 0; + + background-color: ${Theme.color.gray200}; + outline: none; +`; diff --git a/frontend/src/pages/NicknamePage/NicknamePage.tsx b/frontend/src/pages/NicknamePage/NicknamePage.tsx new file mode 100644 index 000000000..0647c79bb --- /dev/null +++ b/frontend/src/pages/NicknamePage/NicknamePage.tsx @@ -0,0 +1,20 @@ +import { profile, nickname, nicknameInputWrapper, nicknameInput } from './NicknamePage.styled'; + +import Content from '@/components/layout/Content/Content'; +import { createRandomNickname } from '@/utils/nickname'; + +const NicknamePage = () => { + const randomNickname = createRandomNickname(); + + return ( + +
+
닉네임
+
+ +
+
+ ); +}; + +export default NicknamePage; diff --git a/frontend/src/pages/RoundResultPage/RoundResultPage.styled.ts b/frontend/src/pages/RoundResultPage/RoundResultPage.styled.ts index 8425470f1..410f844f0 100644 --- a/frontend/src/pages/RoundResultPage/RoundResultPage.styled.ts +++ b/frontend/src/pages/RoundResultPage/RoundResultPage.styled.ts @@ -2,5 +2,5 @@ import { css } from '@emotion/react'; export const NicknameListWrapper = css` margin-top: 1.6rem; - margin-bottom: 0.7rem; + margin-bottom: 0.8rem; `; diff --git a/frontend/src/router/index.tsx b/frontend/src/router/index.tsx index 056d3fe78..02cb7b7d9 100644 --- a/frontend/src/router/index.tsx +++ b/frontend/src/router/index.tsx @@ -4,23 +4,37 @@ import { Layout } from './layout'; import GamePage from '@/pages/GamePage/GamePage'; import GameResultPage from '@/pages/GameResultPage/GameResultPage'; +import MainPage from '@/pages/MainPage/MainPage'; +import NicknamePage from '@/pages/NicknamePage/NicknamePage'; import RoundResultPage from '@/pages/RoundResultPage/RoundResultPage'; export const router = createBrowserRouter([ + { + path: '/', + element: , + }, { path: '/', element: , children: [ { - index: true, + path: 'nickname', + element: , + }, + { + path: 'ready', + element:
게임 대기 화면
, + }, + { + path: 'game', element: , }, { - path: 'round-result', + path: 'round/result', element: , }, { - path: 'game-result', + path: 'game/result', element: , }, ], diff --git a/frontend/src/styles/GlobalStyle.ts b/frontend/src/styles/GlobalStyle.ts index f32172627..7c8fe3ef9 100644 --- a/frontend/src/styles/GlobalStyle.ts +++ b/frontend/src/styles/GlobalStyle.ts @@ -143,7 +143,6 @@ const GlobalStyle = css` ${reset} html { - margin-top: 3rem; font-size: 10px; } diff --git a/frontend/src/styles/Theme.ts b/frontend/src/styles/Theme.ts index fdf9bd95d..6939b0f62 100644 --- a/frontend/src/styles/Theme.ts +++ b/frontend/src/styles/Theme.ts @@ -1,8 +1,14 @@ const color = { // primary color + peanut200: '#FFF0D4', peanut300: '#FFF4DF', peanut400: '#FFDD9A', peanut500: '#FFD076', + + gray200: '#F3F1F1', + gray300: '#E4E4E4', + gray400: '#9D9B9B', + gray500: '#7A7A7A', } as const; export const Theme = { diff --git a/frontend/src/utils/.gitkeep b/frontend/src/utils/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/frontend/src/utils/nickname.ts b/frontend/src/utils/nickname.ts new file mode 100644 index 000000000..da1525f8d --- /dev/null +++ b/frontend/src/utils/nickname.ts @@ -0,0 +1,77 @@ +export const createRandomNickname = () => { + const adjectives = [ + '춤추는', + '노래하는', + '웃긴', + '귀여운', + '사랑스러운', + '재치있는', + '기운찬', + '활발한', + '지적인', + '영리한', + '장난꾸러기', + '유쾌한', + '깔끔한', + '매력적인', + '화려한', + '신나는', + '용감한', + '상냥한', + '달콤한', + '기발한', + '짜릿한', + '다정한', + '평온한', + '쾌활한', + '따뜻한', + '호기심 많은', + '재빠른', + '천재적인', + '엉뚱한', + '호탕한', + '멋진', + '섹시한', + '발랄한', + '당당한', + '명랑한', + '흥미로운', + ]; + const nouns = [ + '강아지', + '고양이', + '개구리', + '딱다구리', + '사자', + '호랑이', + '코끼리', + '기린', + '고래', + '판다', + '토끼', + '햄스터', + '다람쥐', + '수달', + '원숭이', + '여우', + '늑대', + '말', + '돼지', + '소', + '양', + '염소', + '치타', + '타조', + '참새', + '비둘기', + '까마귀', + '공룡', + '거북이', + '독수리', + ]; + + const randomAdjective = adjectives[Math.floor(Math.random() * adjectives.length)]; + const randomNoun = nouns[Math.floor(Math.random() * nouns.length)]; + + return `${randomAdjective} ${randomNoun}`; +};