From 72231298e45e8994238c6fc59e3f71c1cf8ffd86 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 18:41:10 +0900 Subject: [PATCH 01/13] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EB=B0=94=20=EA=B5=AC=ED=98=84=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/progressBar/ProgressBar.styeld.ts | 25 +++++++++++++++++++ .../common/progressBar/ProgressBar.tsx | 15 +++++++++++ src/pages/OnboardingPage.tsx | 2 ++ 3 files changed, 42 insertions(+) create mode 100644 src/components/common/progressBar/ProgressBar.styeld.ts create mode 100644 src/components/common/progressBar/ProgressBar.tsx diff --git a/src/components/common/progressBar/ProgressBar.styeld.ts b/src/components/common/progressBar/ProgressBar.styeld.ts new file mode 100644 index 0000000..86161ff --- /dev/null +++ b/src/components/common/progressBar/ProgressBar.styeld.ts @@ -0,0 +1,25 @@ +import styled from "styled-components"; + +export const ProgressBarWrapper = styled.div` + display: flex; + align-items: center; + width: 100%; + height: 14px; + border-radius: 20px; + background: #ededed; + margin-top: 2rem; + position: relative; +`; + +export const Progress = styled.div<{ $percentage: number }>` + background-color: #ffd600; + border-top-left-radius: 20px; + border-bottom-left-radius: 20px; + border-top-right-radius: ${(props) => (props.$percentage === 100 ? 20 : 0)}px; + border-bottom-right-radius: ${(props) => + props.$percentage === 100 ? 20 : 0}px; + height: 100%; + width: ${(props) => props.$percentage}%; + transition: width 0.5s ease-in-out; + position: relative; +`; diff --git a/src/components/common/progressBar/ProgressBar.tsx b/src/components/common/progressBar/ProgressBar.tsx new file mode 100644 index 0000000..e0a601c --- /dev/null +++ b/src/components/common/progressBar/ProgressBar.tsx @@ -0,0 +1,15 @@ +import * as S from "./ProgressBar.styeld"; + +interface ProgressBarProps { + percentage: number; +} + +const ProgressBar = (props: ProgressBarProps) => { + return ( + + + + ); +}; + +export default ProgressBar; diff --git a/src/pages/OnboardingPage.tsx b/src/pages/OnboardingPage.tsx index ce4f6fa..aa3a84a 100644 --- a/src/pages/OnboardingPage.tsx +++ b/src/pages/OnboardingPage.tsx @@ -2,6 +2,7 @@ import Dropdown from "@common/dropDown/Dropdown"; import { DropdownElement } from "@type/dropdown"; import { useEffect, useState } from "react"; import { CommonWrapper } from "@common/common.styled"; +import ProgressBar from "@components/common/progressBar/ProgressBar"; export const nationElements: DropdownElement[] = [ { @@ -39,6 +40,7 @@ const OnboardingPage = () => { return ( + ); From 2a786be797af84cc96efd2dce152eb43b029fe2f Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 19:44:59 +0900 Subject: [PATCH 02/13] =?UTF-8?q?feat:=20=EC=84=A0=EC=A7=80=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=20=EA=B3=B5=ED=86=B5=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=ED=98=84=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/correct.png | Bin 0 -> 895 bytes public/wrong.png | Bin 0 -> 692 bytes .../common/selectOption/SelectBtn.tsx | 38 ++++++++++++++ .../selectOption/SelectOption.styled.ts | 35 +++++++++++++ .../common/selectOption/SelectOption.tsx | 47 ++++++++++++++++++ src/type/selectOption.d.ts | 20 +++++++- 6 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 public/correct.png create mode 100644 public/wrong.png create mode 100644 src/components/common/selectOption/SelectBtn.tsx create mode 100644 src/components/common/selectOption/SelectOption.styled.ts create mode 100644 src/components/common/selectOption/SelectOption.tsx diff --git a/public/correct.png b/public/correct.png new file mode 100644 index 0000000000000000000000000000000000000000..858035d3ca1a88eacfcffb958eb02d003f311db9 GIT binary patch literal 895 zcmV-_1AzRAP)9*^xeKi|9=0ES^0hG7_nVHgVpq!e%L?a$nYleuuF?SuBn zww?niU#M7{ks!KW^PumOChel9&{S(>bsC4ym2w> z0}Q01%mMitEJ)3era9}sfT5I-Rh8rQKNgQkPY>gq?cuo1s>+0b+e`-54rd}20hjNJ zpYi8hSB||~XuRs)f(1K2q|0}gpYW$@xTV%Q?EU~tcG}W9BQMd!U_A)I&ITM9*&r$W z^ik`ua|$8Z$sxVY$RsJ(m3fFjsDSB1yx+wvBn%l@-?MUxMn1EZ)GF3PdSS|HPzhVu z2PYpUhmGTNo*`BFL%E&6L0&X9C8wn|{bmh1;^FI74Me2ddq*PDJ$SSOtr7uU_KK|5n<-(D5 zG;9t+Kt`5A>KjTrg*byHLT6g#NwJT$E;Ns`Hg|baItL+5^S>5{q*e)?X}SKMNApTu zx-d5;D5hrwMi%p);g)6+!4jbZZX7qJnSXGm3py~j`=IT)bw&;(HQTE~LPW}?8^>MD zw0x5}b2@X+Trn^iIgk`KDkMbY%>$X64$gGtDsz*OX&KYhh~3C4Hrg#MP6?a3@?~?c zGqMy;E$Lu`Z-N-WU~o>V($C-(I6Ora)0aeZWLsj{52IxACUcvEmDk$}mWUL+x&a&Xh7hN0P&OzdWP|1iLc;ZnqxR4w_}P9w zy-x}t*~Ix`Z2X=BAP9mW2!bF8f)5Ia=;bm8tv}4ii8(6sd879GcSwLhs@p=!Y`i?9nfk<-ed>MBL%gm(WPiWRC(ZLe?6QKg;E6V98|w_ z$+~-3|8(q*-Ji79NA|Q#yEHy-k#P6$dc~&!DswRhNQh~B0yw5mr-Cwe1wjx5K@bE% a2;&EN^STsLGQ*$%0000 { + const colorSet = colorSets[props.colorName]; + + return ( + + {props.text} + {props.imgURL && } + + ); +}; + +export default SelectBtn; diff --git a/src/components/common/selectOption/SelectOption.styled.ts b/src/components/common/selectOption/SelectOption.styled.ts new file mode 100644 index 0000000..20d276b --- /dev/null +++ b/src/components/common/selectOption/SelectOption.styled.ts @@ -0,0 +1,35 @@ +import { ColorSet } from "@type/selectOption"; +import styled from "styled-components"; + +export const SelectOptionContainer = styled.div<{ width?: string }>` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; + gap: 1rem; + width: ${({ width }) => (width ? width : "50%")}; +`; + +export const SelectBtnWrapper = styled.div<{ $colorSet: ColorSet }>` + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 1.5rem; + box-sizing: border-box; + width: 100%; + height: 5rem; + font-size: 2rem; + font-weight: 700; + background-color: ${({ $colorSet }) => $colorSet.background}; + color: ${({ $colorSet }) => $colorSet.color}; + border: 1px solid ${({ $colorSet }) => $colorSet.border}; + border-radius: 6px; +`; + +export const SelectIcon = styled.img` + width: 2.3rem; + height: 2.3rem; + margin-right: 10px; + vertical-align: middle; +`; diff --git a/src/components/common/selectOption/SelectOption.tsx b/src/components/common/selectOption/SelectOption.tsx new file mode 100644 index 0000000..411435c --- /dev/null +++ b/src/components/common/selectOption/SelectOption.tsx @@ -0,0 +1,47 @@ +import { SelectOptionProps } from "@type/selectOption"; +import SelectBtn from "./SelectBtn"; +import * as S from "./SelectOption.styled"; + +const SelectOption = (props: SelectOptionProps) => { + const getColorName = (state: string) => { + switch (state) { + case "correct": + return "green"; + case "wrong": + return "red"; + case "selected": + return "yellow"; + case "default": + default: + return "gray"; + } + }; + + const getImgURL = (state: string) => { + switch (state) { + case "correct": + return "/correct.png"; + case "wrong": + return "/wrong.png"; + case "selected": + return ""; + default: + return ""; + } + }; + + return ( + + {props.selectList.map((element) => ( + + ))} + + ); +}; + +export default SelectOption; diff --git a/src/type/selectOption.d.ts b/src/type/selectOption.d.ts index 5d5d4ef..f4fce1b 100644 --- a/src/type/selectOption.d.ts +++ b/src/type/selectOption.d.ts @@ -1,4 +1,22 @@ +export interface ColorSet { + background: string; + border: string; + color: string; +} + export interface SelectOptionProps { - imgURL: string; + selectList: SelectOptionElement[]; + setter: (value: string | number | null) => void; + width?: string; +} + +export interface SelectOptionElement { + text: string; + state: "correct" | "wrong" | "selected" | "default"; +} + +export interface SelectBtnProps { text: string; + colorName: string; + imgURL?: string; } From 913aa8fd31201878347e14badf49bdabb6ec40b9 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 20:13:03 +0900 Subject: [PATCH 03/13] =?UTF-8?q?chore:=20=EC=A0=88=EB=8C=80=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20hooks=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsconfig.json | 3 ++- vite.config.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 2d14fa1..7af903b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,8 @@ "@components/*": ["src/components/*"], "@common/*": ["src/components/common/*"], "@utils/*": ["src/utils/*"], - "@apis/*": ["src/apis/*"] + "@apis/*": ["src/apis/*"], + "@hooks/*": ["src/hooks/*"] } }, "files": [], diff --git a/vite.config.ts b/vite.config.ts index 791aef7..37099fa 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -22,6 +22,7 @@ export default defineConfig({ }, { find: "@utils", replacement: path.resolve(__dirname, "src/utils") }, { find: "@apis", replacement: path.resolve(__dirname, "src/apis") }, + { find: "@hooks", replacement: path.resolve(__dirname, "src/hooks") }, ], }, }); From ac7fe55a891e7dab67336591eb58127bd3a5b069 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:41:56 +0900 Subject: [PATCH 04/13] =?UTF-8?q?feat:=20=EA=B8=B0=EB=B3=B8=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20util=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/defaultData.ts | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/utils/defaultData.ts diff --git a/src/utils/defaultData.ts b/src/utils/defaultData.ts new file mode 100644 index 0000000..57e3187 --- /dev/null +++ b/src/utils/defaultData.ts @@ -0,0 +1,52 @@ +import { DropdownElement } from "@type/dropdown"; +import { ColorSet } from "@type/selectOption"; + +export const nationElements: DropdownElement[] = [ + { + text: "선택해주세요", + value: null, + }, + { + imgURL: `/america.png`, + text: "영어", + value: 1, + }, + { + imgURL: `/china.png`, + text: "중국어", + value: 2, + }, + { + imgURL: `/korea.png`, + text: "한국어", + value: 3, + }, + { + imgURL: `/japan.png`, + text: "일본어", + value: 4, + }, +]; + +export const colorSets: { [key: string]: ColorSet } = { + red: { + background: "#FFDADA", + border: "#FF5757", + color: "black", + }, + green: { + background: "#E6FFE5", + border: "#6CE368", + color: "black", + }, + yellow: { + background: "#FFF9E5", + border: "#FFC300", + color: "black", + }, + gray: { + background: "none", + border: "#D8D8D8", + color: "#909090", + }, +}; \ No newline at end of file From fc5adda1d013af4f3ae3c9e905227780e54864d4 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:42:28 +0900 Subject: [PATCH 05/13] =?UTF-8?q?feat:=20=EC=98=A8=EB=B3=B4=EB=94=A9?= =?UTF-8?q?=EC=97=90=20=EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94=20hooks=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useAgeInput.ts | 17 +++++++++++++ src/hooks/useOnboarding.ts | 51 +++++++++++++++++++++++++++++++++++++ src/hooks/useResult.ts | 11 ++++++++ src/hooks/useSelectLevel.ts | 23 +++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 src/hooks/useAgeInput.ts create mode 100644 src/hooks/useOnboarding.ts create mode 100644 src/hooks/useResult.ts create mode 100644 src/hooks/useSelectLevel.ts diff --git a/src/hooks/useAgeInput.ts b/src/hooks/useAgeInput.ts new file mode 100644 index 0000000..033fd68 --- /dev/null +++ b/src/hooks/useAgeInput.ts @@ -0,0 +1,17 @@ +import { useState } from "react"; + +const useAgeInput = () => { + const [age, setAge] = useState(null); + + const updateAge = (value: number | null) => { + setAge(value); + }; + + const getAgeText = () => { + return age !== null ? `만 ${age}세` : "만"; + }; + + return { age, updateAge, getAgeText }; +}; + +export default useAgeInput; diff --git a/src/hooks/useOnboarding.ts b/src/hooks/useOnboarding.ts new file mode 100644 index 0000000..082aff6 --- /dev/null +++ b/src/hooks/useOnboarding.ts @@ -0,0 +1,51 @@ +import { useState, useEffect } from "react"; + +const useOnboarding = () => { + const [languageId, setLanguageId] = useState(null); + const [learningLevel, setLearningLevel] = useState( + null + ); + const [age, setAge] = useState(null); + const [currentStep, setCurrentStep] = useState(0); + const [isStepCompleted, setIsStepCompleted] = useState([false, false, false]); + + const handleNextStep = () => { + if (currentStep < 2) { + setCurrentStep(currentStep + 1); + } else { + console.log(languageId, learningLevel, age); + } + }; + + const checkStepCompletion = () => { + const stepsCompletion = [false, false, false]; + if (languageId) stepsCompletion[0] = true; + if (learningLevel) stepsCompletion[1] = true; + if (age !== null) stepsCompletion[2] = true; + + setIsStepCompleted(stepsCompletion); + }; + + useEffect(() => { + checkStepCompletion(); + }, [languageId, learningLevel, age]); + + const isLastStep = currentStep === 2; + const isNextBtnActive = isStepCompleted[currentStep]; + + return { + languageId, + setLanguageId, + learningLevel, + setLearningLevel, + age, + setAge, + currentStep, + setCurrentStep, + isLastStep, + isNextBtnActive, + handleNextStep, + }; +}; + +export default useOnboarding; diff --git a/src/hooks/useResult.ts b/src/hooks/useResult.ts new file mode 100644 index 0000000..f3c5173 --- /dev/null +++ b/src/hooks/useResult.ts @@ -0,0 +1,11 @@ +import { useState, useCallback } from "react"; + +export const useResult = () => { + const [result, setResult] = useState(null); + + const updateResult = useCallback((value: string | number | null) => { + setResult(value); + }, []); + + return [result, updateResult] as const; +}; diff --git a/src/hooks/useSelectLevel.ts b/src/hooks/useSelectLevel.ts new file mode 100644 index 0000000..2b0ea28 --- /dev/null +++ b/src/hooks/useSelectLevel.ts @@ -0,0 +1,23 @@ +import { useState } from "react"; + +const useSelectLevel = () => { + const [selectedLevel, setSelectedLevel] = useState( + null + ); + + const levelOptions = [ + { text: "처음 배워요", value: "1000" }, + { text: "자주 사용되는 단어 몇 개를 알고 있어요", value: "2000" }, + { text: "기본적인 대화를 할 수 있어요", value: "3000" }, + { text: "다양한 주제에 대해 이야기할 수 있어요", value: "4000" }, + { text: "대부분의 주제에 대해 상세하게 논의할 수 있어요", value: "5000" }, + ]; + + return { + selectedLevel, + setSelectedLevel, + levelOptions, + }; +}; + +export default useSelectLevel; From 45f38379063af3359b3394fd62f0b26574840765 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:43:06 +0900 Subject: [PATCH 06/13] =?UTF-8?q?chore:=20=EC=84=A0=EC=A7=80=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/selectOption/SelectBtn.tsx | 28 ++----------------- .../selectOption/SelectOption.styled.ts | 2 +- .../common/selectOption/SelectOption.tsx | 12 +++++++- src/type/selectOption.d.ts | 2 ++ 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/components/common/selectOption/SelectBtn.tsx b/src/components/common/selectOption/SelectBtn.tsx index d77b94d..43ef0a7 100644 --- a/src/components/common/selectOption/SelectBtn.tsx +++ b/src/components/common/selectOption/SelectBtn.tsx @@ -1,34 +1,12 @@ -import { ColorSet, SelectBtnProps } from "@type/selectOption"; +import { SelectBtnProps } from "@type/selectOption"; import * as S from "./SelectOption.styled"; - -export const colorSets: { [key: string]: ColorSet } = { - red: { - background: "#FFDADA", - border: "#FF5757", - color: "black", - }, - green: { - background: "#E6FFE5", - border: "#6CE368", - color: "black", - }, - yellow: { - background: "#FFF9E5", - border: "#FFC300", - color: "black", - }, - gray: { - background: "none", - border: "#D8D8D8", - color: "#909090", - }, -}; +import { colorSets } from "@utils/defaultData"; const SelectBtn = (props: SelectBtnProps) => { const colorSet = colorSets[props.colorName]; return ( - + {props.text} {props.imgURL && } diff --git a/src/components/common/selectOption/SelectOption.styled.ts b/src/components/common/selectOption/SelectOption.styled.ts index 20d276b..c189603 100644 --- a/src/components/common/selectOption/SelectOption.styled.ts +++ b/src/components/common/selectOption/SelectOption.styled.ts @@ -8,7 +8,7 @@ export const SelectOptionContainer = styled.div<{ width?: string }>` align-items: center; position: relative; gap: 1rem; - width: ${({ width }) => (width ? width : "50%")}; + width: ${({ width }) => (width ? width : "100%")}; `; export const SelectBtnWrapper = styled.div<{ $colorSet: ColorSet }>` diff --git a/src/components/common/selectOption/SelectOption.tsx b/src/components/common/selectOption/SelectOption.tsx index 411435c..3e22450 100644 --- a/src/components/common/selectOption/SelectOption.tsx +++ b/src/components/common/selectOption/SelectOption.tsx @@ -1,8 +1,12 @@ import { SelectOptionProps } from "@type/selectOption"; import SelectBtn from "./SelectBtn"; import * as S from "./SelectOption.styled"; +import { useState } from "react"; const SelectOption = (props: SelectOptionProps) => { + const [selectedValue, setSelectedValue] = useState( + null + ); const getColorName = (state: string) => { switch (state) { case "correct": @@ -29,7 +33,12 @@ const SelectOption = (props: SelectOptionProps) => { return ""; } }; - + + const handleSelect = (value: string | number | null) => { + setSelectedValue(value); + props.setter(value); + }; + return ( {props.selectList.map((element) => ( @@ -38,6 +47,7 @@ const SelectOption = (props: SelectOptionProps) => { text={element.text} colorName={getColorName(element.state)} imgURL={getImgURL(element.state)} + onClick={() => handleSelect(element.value)} /> ))} diff --git a/src/type/selectOption.d.ts b/src/type/selectOption.d.ts index f4fce1b..fe61828 100644 --- a/src/type/selectOption.d.ts +++ b/src/type/selectOption.d.ts @@ -13,10 +13,12 @@ export interface SelectOptionProps { export interface SelectOptionElement { text: string; state: "correct" | "wrong" | "selected" | "default"; + value: string | number; } export interface SelectBtnProps { text: string; colorName: string; imgURL?: string; + onClick: () => void; } From c99c2c23112a45f168aa34ae8ccdef4df7731058 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:43:31 +0900 Subject: [PATCH 07/13] =?UTF-8?q?chore:=20=ED=8C=8C=EC=9D=BC=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=82=AC=ED=95=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/NextBtn.tsx | 12 ++++++++---- src/components/tales/taleDetail/TaleDetail.tsx | 2 +- src/hooks/test.tsx | 0 src/stories/Dropdown.stories.ts | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) delete mode 100644 src/hooks/test.tsx diff --git a/src/components/common/NextBtn.tsx b/src/components/common/NextBtn.tsx index 1368211..7b113bf 100644 --- a/src/components/common/NextBtn.tsx +++ b/src/components/common/NextBtn.tsx @@ -3,14 +3,18 @@ import { CommonBtn } from "./common.styled"; interface NextBtnProps { isActive: boolean; text: string; - width: string; + width?: string; handleBtn: () => void; } -const NextBtn = ({ width, isActive, text, handleBtn }: NextBtnProps) => { +const NextBtn = (props: NextBtnProps) => { return ( - - {text} + + {props.text} ); }; diff --git a/src/components/tales/taleDetail/TaleDetail.tsx b/src/components/tales/taleDetail/TaleDetail.tsx index 8da41ba..9341323 100644 --- a/src/components/tales/taleDetail/TaleDetail.tsx +++ b/src/components/tales/taleDetail/TaleDetail.tsx @@ -1,9 +1,9 @@ import Header from "@components/common/header/Header"; import * as S from "./TaleDetail.styled"; import Dropdown from "@components/common/dropDown/Dropdown"; -import { nationElements } from "@pages/OnboardingPage"; import { useEffect, useState } from "react"; import NextBtn from "@components/common/NextBtn"; +import { nationElements } from "@utils/defaultData"; const TaleDetail = () => { const [mood, setMood] = useState(null); diff --git a/src/hooks/test.tsx b/src/hooks/test.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/src/stories/Dropdown.stories.ts b/src/stories/Dropdown.stories.ts index d82cc24..a9a1c2d 100644 --- a/src/stories/Dropdown.stories.ts +++ b/src/stories/Dropdown.stories.ts @@ -3,7 +3,7 @@ import Dropdown from "@common/dropDown/Dropdown"; import { DropdownProps } from "@type/dropdown"; import { Meta, StoryObj } from "@storybook/react"; import { fn } from "@storybook/test"; -import { nationElements } from "@pages/OnboardingPage"; +import { nationElements } from "@utils/defaultData"; const meta: Meta = { title: "Components/Dropdown", From f79198af253ef680231db07f41254a6613500ac7 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:44:00 +0900 Subject: [PATCH 08/13] =?UTF-8?q?chore:=20css=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/progressBar/ProgressBar.styeld.ts | 4 +-- src/components/login/Login.tsx | 10 +++---- .../onboarding/onboarding.styled.ts | 30 +++++++++++++++++++ 3 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 src/components/onboarding/onboarding.styled.ts diff --git a/src/components/common/progressBar/ProgressBar.styeld.ts b/src/components/common/progressBar/ProgressBar.styeld.ts index 86161ff..22c6d92 100644 --- a/src/components/common/progressBar/ProgressBar.styeld.ts +++ b/src/components/common/progressBar/ProgressBar.styeld.ts @@ -15,9 +15,9 @@ export const Progress = styled.div<{ $percentage: number }>` background-color: #ffd600; border-top-left-radius: 20px; border-bottom-left-radius: 20px; - border-top-right-radius: ${(props) => (props.$percentage === 100 ? 20 : 0)}px; + border-top-right-radius: ${(props) => (props.$percentage >= 99 ? 20 : 0)}px; border-bottom-right-radius: ${(props) => - props.$percentage === 100 ? 20 : 0}px; + props.$percentage >= 99 ? 20 : 0}px; height: 100%; width: ${(props) => props.$percentage}%; transition: width 0.5s ease-in-out; diff --git a/src/components/login/Login.tsx b/src/components/login/Login.tsx index be19cec..9165b49 100644 --- a/src/components/login/Login.tsx +++ b/src/components/login/Login.tsx @@ -1,5 +1,5 @@ import { CommonWrapper } from "@common/common.styled"; -import { LoginBtn, LogoBox, Title } from "./Login.styled"; +import * as S from "./Login.styled"; import { kakaoURL } from "./kakaoLoginConfig"; const Login = () => { @@ -9,9 +9,9 @@ const Login = () => { return ( - {`{메인소개 멘트}`} - {`{로고이미지}`} - + {`{메인소개 멘트}`} + {`{로고이미지}`} + 3초 로그인 { alt="카카오 로그인 버튼" onClick={toLogin} /> - + ); }; diff --git a/src/components/onboarding/onboarding.styled.ts b/src/components/onboarding/onboarding.styled.ts new file mode 100644 index 0000000..14bbc11 --- /dev/null +++ b/src/components/onboarding/onboarding.styled.ts @@ -0,0 +1,30 @@ +import styled from "styled-components"; + +export const Container = styled.div` + display: flex; + flex-direction: column; + width: 100%; + min-height: 70%; + margin-top: 6rem; + gap: 4rem; +`; + +export const Title = styled.div` + font-size: 2.5rem; + font-weight: 800; +`; + +export const SubContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + gap: 2rem; +`; + +export const SubTitle = styled.div` + font-size: 2rem; + font-weight: 700; + color: #b1b1b1; +`; + + From 9d636ee7133e77acf33f41e9d510c4091d0e2d7d Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:45:00 +0900 Subject: [PATCH 09/13] =?UTF-8?q?feat:=20=EC=98=A8=EB=B3=B4=EB=94=A9=20?= =?UTF-8?q?=ED=8D=BC=EB=B8=94=EB=A6=AC=EC=8B=B1=20=EB=B0=8F=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=20=EB=8F=99=EC=9E=91=20=EA=B5=AC=ED=98=84=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/onboarding/AgeInput.tsx | 88 ++++++++++++++++++++ src/components/onboarding/SelectAge.tsx | 21 +++++ src/components/onboarding/SelectLanguage.tsx | 21 +++++ src/components/onboarding/SelectLevel.tsx | 39 +++++++++ src/pages/OnboardingPage.tsx | 67 +++++++-------- 5 files changed, 199 insertions(+), 37 deletions(-) create mode 100644 src/components/onboarding/AgeInput.tsx create mode 100644 src/components/onboarding/SelectAge.tsx create mode 100644 src/components/onboarding/SelectLanguage.tsx create mode 100644 src/components/onboarding/SelectLevel.tsx diff --git a/src/components/onboarding/AgeInput.tsx b/src/components/onboarding/AgeInput.tsx new file mode 100644 index 0000000..bfa0764 --- /dev/null +++ b/src/components/onboarding/AgeInput.tsx @@ -0,0 +1,88 @@ +import { colorSets } from "@utils/defaultData"; +import React, { ChangeEvent, FocusEvent, KeyboardEvent } from "react"; +import styled from "styled-components"; + +interface AgeInputProps { + age: string | number | null; + setter: (value: number | null) => void; +} + +const AgeInput = ({ age, setter }: AgeInputProps) => { + const [isEditing, setIsEditing] = React.useState(false); + + const handleChange = (event: ChangeEvent) => { + const value = event.target.value; + const newValue = value === "" ? null : Number(value); + setter(newValue); + }; + + const handleBlur = (event: FocusEvent) => { + setIsEditing(false); + }; + + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key === "Enter") { + setIsEditing(false); + } + }; + + return ( + + {isEditing ? ( + + ) : ( + setIsEditing(true)}> + {age !== null ? `만 ${age}세` : "만"} + + )} + + ); +}; + +export default AgeInput; + +const Container = styled.div<{ $age?: any }>` + display: flex; + align-items: center; + padding: 0 1rem; + box-sizing: border-box; + width: 50%; + height: 4.5rem; + font-size: 2rem; + font-weight: 700; + border: 1px solid + ${({ $age }) => + $age ? colorSets["yellow"].border : colorSets["gray"].border}; + background-color: ${({ $age }) => + $age ? colorSets["yellow"].background : "none"}; + border-radius: 6px; + position: relative; +`; + +const Text = styled.div` + cursor: pointer; + width: 100%; + line-height: 4.5rem; + padding: 0 1rem; +`; + +const Input = styled.input` + font-size: 2rem; + width: 100%; + box-sizing: border-box; + padding: 0 1.5rem; + border: none; + border-radius: 6px; + position: absolute; + top: 0; + left: 0; + height: 100%; + background-color: transparent; +`; diff --git a/src/components/onboarding/SelectAge.tsx b/src/components/onboarding/SelectAge.tsx new file mode 100644 index 0000000..a4bca1e --- /dev/null +++ b/src/components/onboarding/SelectAge.tsx @@ -0,0 +1,21 @@ +import AgeInput from "./AgeInput"; +import * as S from "./onboarding.styled"; + +interface SelectAgeProps { + age: string | number | null; + setter: (value: string | number | null) => void; +} + +const SelectAge = ({ age, setter }: SelectAgeProps) => { + return ( + + 학습자의 나이는 몇살인가요? + + 만 나이 + + + + ); +}; + +export default SelectAge; diff --git a/src/components/onboarding/SelectLanguage.tsx b/src/components/onboarding/SelectLanguage.tsx new file mode 100644 index 0000000..a0b08f0 --- /dev/null +++ b/src/components/onboarding/SelectLanguage.tsx @@ -0,0 +1,21 @@ +import Dropdown from "@components/common/dropDown/Dropdown"; +import * as S from "./onboarding.styled"; +import { nationElements } from "@utils/defaultData"; + +interface SelectLanguageProps { + setter: (value: string | number | null) => void; +} + +const SelectLanguage = ({ setter }: SelectLanguageProps) => { + return ( + + 어떤 언어를 배우시나요? + + 언어 + + + + ); +}; + +export default SelectLanguage; diff --git a/src/components/onboarding/SelectLevel.tsx b/src/components/onboarding/SelectLevel.tsx new file mode 100644 index 0000000..d3dc94e --- /dev/null +++ b/src/components/onboarding/SelectLevel.tsx @@ -0,0 +1,39 @@ +import SelectOption from "@components/common/selectOption/SelectOption"; +import * as S from "./onboarding.styled"; +import useSelectLevel from "@hooks/useSelectLevel"; +import { nationElements } from "@utils/defaultData"; + +interface SelectLevelProps { + languageId: number | string; + setter: (value: string | number | null) => void; +} + +const SelectLevel = ({ languageId, setter }: SelectLevelProps) => { + const { selectedLevel, setSelectedLevel, levelOptions } = useSelectLevel(); + const language = nationElements.find( + (element) => element.value === languageId + ); + + const handleOptionChange = (value: string | number | null) => { + setSelectedLevel(value); + setter(value); + }; + + return ( + + {language?.text}를 얼마나 알고 계신가요? + + ({ + text: option.text, + value: option.value, + state: selectedLevel === option.value ? "selected" : "default", + }))} + setter={handleOptionChange} + /> + + + ); +}; + +export default SelectLevel; diff --git a/src/pages/OnboardingPage.tsx b/src/pages/OnboardingPage.tsx index aa3a84a..466b469 100644 --- a/src/pages/OnboardingPage.tsx +++ b/src/pages/OnboardingPage.tsx @@ -1,47 +1,40 @@ -import Dropdown from "@common/dropDown/Dropdown"; -import { DropdownElement } from "@type/dropdown"; -import { useEffect, useState } from "react"; import { CommonWrapper } from "@common/common.styled"; import ProgressBar from "@components/common/progressBar/ProgressBar"; - -export const nationElements: DropdownElement[] = [ - { - text: "선택해주세요", - value: null, - }, - { - imgURL: `/america.png`, - text: "영어", - value: "영어", - }, - { - imgURL: `/china.png`, - text: "중국어", - value: "중국어", - }, - { - imgURL: `/korea.png`, - text: "한국어", - value: "한국어", - }, - { - imgURL: `/japan.png`, - text: "일본어", - value: "일본어", - }, -]; +import SelectLanguage from "@components/onboarding/SelectLanguage"; +import NextBtn from "@components/common/NextBtn"; +import SelectLevel from "@components/onboarding/SelectLevel"; +import SelectAge from "@components/onboarding/SelectAge"; +import useOnboarding from "@hooks/useOnboarding"; const OnboardingPage = () => { - const [result, setResult] = useState(); - - useEffect(() => { - console.log(result); - }, [result]); + const { + languageId, + setLanguageId, + learningLevel, + setLearningLevel, + age, + setAge, + currentStep, + isLastStep, + isNextBtnActive, + handleNextStep, + } = useOnboarding(); return ( - - + + {currentStep === 0 && } + {currentStep === 1 && languageId && ( + + )} + {currentStep === 2 && languageId && learningLevel && ( + + )} + ); }; From 5d86af5858056b406bcfc12be17e7fb73d396157 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sat, 24 Aug 2024 23:52:51 +0900 Subject: [PATCH 10/13] =?UTF-8?q?feat:=20=EC=99=84=EB=A3=8C=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/learningFinish.png | Bin 0 -> 28770 bytes public/onboardingFinish.png | Bin 0 -> 49806 bytes src/components/common/FinishScreen.tsx | 5 +++++ 3 files changed, 5 insertions(+) create mode 100644 public/learningFinish.png create mode 100644 public/onboardingFinish.png create mode 100644 src/components/common/FinishScreen.tsx diff --git a/public/learningFinish.png b/public/learningFinish.png new file mode 100644 index 0000000000000000000000000000000000000000..d80397508108fd99b1e368a0cc012fb3f21a237f GIT binary patch literal 28770 zcmeFZc{r497&m;)j4ey@WQ#0Ok!+PH#Y~H(R3sz{EuylOEy9dES_t(No=7H3C?d+v z@DwVKHIb~5EZMiQ%*_3rx1RU?-uM0MJC5(a@A&38GShWm>v^5mx%|%ay6>7DGZNyL z;ztMx9Wp*>jt~$0Bx&*CUx9kVzVNlm!}ydZLgJh7e}qHk8z-TV;Aw8OAHAwyKMeoj za@u!vA40FA1XyRe5pri9I=Ii`I$^ZS^8?-`}tQ#yaIbmsXF|{ljLnA@RnBIfn7* zWz%gp^BV<8zUNbKmGxP-n*XsSEJgXR9q&BrKMw}oI`FXh{*zeGi%(;Fgm26|*|25I z`pLSdMVz+4GpFqMV44WgkLwaverQFmd?6%d{NE3ujlX};c>ehPgF;&M`v*Ok>-UdF z3i0<3XZhc~Ag%kq3;zFZ{y$2a^8`eBE2M7p^q9LgJ=cF9$+7>$00GgT;w)ilF1o}k z;H1EqFZ(dqa4==Cs$pO1Kvj{fmUaG^$AymYyqS)sEwTrc5i%24VL|OL4sM%y5=(7F zkK3P|Obg;dSr3mMF>-2n-M3d7A&Xe()nTpBtEZ8bsS**)XWdZ2GLkQDuXvXzSD_g6 zvm02DcGS#=l}J7IJ@Mii^rm}EzPI--@U|{KC+Q631*Z9T1|Ont<3gQ(-K4#)>G6QR z=?cL56}Kc$-_Y})(92p7*0L(sl-8k6U!NrhY(wa4fEzS-p=k{=sKXa1ibaHq?YU=+ z&W|=`+!?=sP|j|=d&O490cRMC@7^xf(xK_b73T*$cus>4JnHP6Dj;JbuP*sfuybSlorSL9UyZCKzjA z8tYAH1avDyN4kvpG%~=Ugf$;g0`=zO0`Jk@AucSx1at za9JE_pB6#1rtL&NQ0z&9Mv~1#iJnGW=*>fEl(~<2S0`!5 zHW}zK5{QHjG%}{c`p6Y3g8E(pP`RZO3azt~CaE)BH6)u_A=LUo4R)aE8s1d`Pn(@E zvTFEWN?=BAEa9=AJm^=>K!%A(*GH(gu+q!z05`)aIR}{~xiX-|y<7MSWOz>6L!au5 z09}M6g+Q!S=>E{TNTj{3mAF_-LKTxZfm%N-$kDz_227XXo#Fd%aszw^Vd+3J&2zAs2nTxN&776@2ng^5Pg?4xj&DX#T&{1h`b7 z6-%Fv+~=-+?)#C0*x?^l9gB7CRrbH?g2tIKP6-$`J;&KY-_q5GSkRtOblbqki#ljkE?D{kN2Lucl+o@ zM6b?uyXizKrJ-jjPyS{ z46v7J5i`NXBB*hD`>W)EFIdc>MiF2fpk#>#(I}JDLkf# zXksGpT>2=K2-eY+S;FcG77MrYMNq|y6vxW0zy>2PB@%LYgm+Rb^z-7m$*J%M5>XU^ zRmkB>?o`HhzM)Y+ZG;RBpoh#eQcTa`D#_D+yJ_NUQAON30WNg!FL+}8F!vY6@_fL& zNOImyK$)h#)3N7+;ke;ONM__KYHuDF(iClf?{!Z`cL4g+)WR1s;GfsD$M;|x*+Ykb z1S7g&5}Mvb+il{x|Kt!;2RLgYobnA{}$%0AgE9;=N^k7`(6l1-gW8tE_q{g zr(!UO37q)M7(-6LWWooDdaepRSi=Pn-EJbp6ipcIEiTYwbf_1vb~F0O$R$qek96ke zv}CMlD*@%$z=V1|L25;GFUPQn6idNwvYQ4F_%f(UkK1oX3#e1q5&E)y7d1CvRCX^A zdFxqTggiQWo5PzJUfYpX)oS$BEJ3d(>Bf)+LVNFsP!Q$NlpGp4>oM##3wq%WX8@r> zIUSg271bfI6BOP9*FEdco0f_+B?uzgKq0V-TH1mzntRlcaJPGpQ73H7_#vpT_8c#b z*-zsvYjB~8Yf#>34qB*D@RAY*D;p#toW!Vcf5^*h6%L6K@@PZFZ4Dk&k)TT8q2)g& zuhqduhLNO{3GLZ-UHj|1i&X-;W@m@`2+)W!*u$Ze2c`AMnAw-Y`BQa3JeLzR)5=4J;7YAT2Ab zIXp|56Kjw>_3nY|(Lw14Vhtx=lcnRsj;{;wFYbJaD(;W!OP#-ctSbG-C0S1A<7?`i z-s&g?hW6U4{YQR;{A~C*fwA^%i-{rn-j@86gx<=-VZ0@E+HVujNmHW}jvddFcT9~{ zB~ho=qj4pZs)@V9(|*2fO?@?M2WCq7xTh8Pa7A{<)JbX`UrHci&uADj1vI!(qdKsb zb5gg9pwuoV=F>zSd|ma5imcPLq?8ispPnD+xa1bZPvVI^X7o@{-+y=RnI3hHY{F_p z*TeUYXC#68YMacxjK-cWPlf8|>Q!Hp-48l3uU1i!;pPr+tzuZy*OLt~QSC7q&S8}| z8ln~NBicMz8r17#go3(Jrq#jRy5aGyZ4!bb?1 z4ez7c{fWHaXpN-Z7|P0>6h@XOcnJ0{F=u*ZkpvMr^8%k}8H{ik{<{79=5T&HZ>7pIK`5+Fru7p4)Y#ez$x

EDeBaT;1FovhK?ByR(!m6%0tGT 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ΜH zC?<*!zDDry90k zRT;?l=^Qq08F{ez%I+}ZHnN(PIs;idwsS5uO)g|1Wb^Oea^NoFob`OGJ9o+yrOjTLe)CmLpQL+fsWT+=N*!b zR;4nlT)E@Uz1qd5JyR|j(ed{><~#lBVHo?AukQteO0pO`IiO<~4Eq>{MF+GCrw`9+ z$O=1i3DDLhLFlDP&kLB~t0edd4(Ymk5`~=q+$)N$d$Hp7&?0ciK{CJo!iA3Kq{|IM za@!_=WMHv$!-hvp6SN|YJLT{cxxdT_OYmZ>M9swO_*#_{N!#hwP zfcoRc#a9bT)+!{K^zVWkq6vZbfFvK(*Pkc61raNbc5KX8NQ?k46iMTh*HoxR$FCG) z_(Yu`xE%4j{x!kI{9&5S2(RE#B{jtJKl)EU@h37fA);Hj@q7?mLiF`IFepuAWHd;h z?lY~4B|iJ;6SxP;*W=~KM~+C54zmBo8tz}PeGYB}`g(As{;wm-LC1GgW11V=BZpx* zGqAY;VuKAny&1LKl174u^4lb}5UmbBzLIZ~7J2}GrfYK{!F`Y%wrBj5DsH0=aM2>w|7b@kilF4k35!a}42x@K0<97ueazA_T7=V$E|zjSorQyte4x zHog{yh#3fl@>!nP{+}gLu~BBH+TQWWx4MqLbW)TCbOdR~f&xU+sXNwnK^BWjEsJ_f zKK^ejP+jSKa7HS4Mn>~RAM#6cWyXV*j=pSw+Fy+mK7NqR6`+NUaA$_E6f5Ax4rdBb zx{40O~WJ%H!J+56pF5jSPiEUEPf7^)O+oSC#A*dmLY5b=lnmiz$}$`rSzH&S-x&`+L6BAvuA;Uc#HXQ$Glhx* zL|4b3J|sw2PusTw-6P>d0paEV{X%A<ax3Q6|asmhewXh zHYFSq2yWjMLbE)SfNOm;hf|coeTwhj52^K75lze_oLXX9itkyv2tZXx1u~QjUrFSs zT$;ko8%o*AER^A7;k$2GJxaCO;Ema`1dtgS*NPTjdauoP-_QlUTw#_vfnM=u{#^xZ zF!uu=$TBsw;)XrHq;40Md9#TO#RGV86^!2qSjK*2B_F|AxBRUgtiPu#R44>047h@( zYvCj>H1K;TUIziO61$*OIi5d(+Yk=QqS&bo$y9(H8u;YFDc0n_^XzYpV;a5X_c#P_ zs_}JPJ~#TH?H=(Q8~A|xcQFuzaz?ZY!;QyQRWYm!8z8JaS*=Ke1{Xc1LWe-lIDEN> zegFMHe5I%7d4mUwBqgot7Uaei#W0AKB4?bRC|zEglW#QYBdd=Ka}aY zrtwPu*+;J3&IHbA$3?1l%sgT5(yc($*;7Yz^p*|$h&SQEWi~jU1kHTRqC#(uq_3pL z9$U$8(~5;hbVBakexcVM|M8c!^5`-S@r@aoz=2mlJ2^V;+eyY5^66fL) zoVlb_aOPsC-HbV0MeV2F0sop=@evjfxYDu}Bwz83V_a%20(XFvVjx9rRBHvGb+V9p z!aYu^M2L8itQ&fB+NmKAbPc4!Ipd)&iU}XVW}`ROz^fL6=YN1X4^MRPt+q+Z8@%A< zD<^DIG2LSYSj6~RcNhy#3~AiX7N|MrG53Z3toh~guYD$JVp!hz1z0{V1l2xwQFU<@ zCUuxey#kOYnmmP*M*Q#w+Et3s7Xcga3?Rki9_W{>miA@ysdsMS!SNd-u&X4xwglNoBI{c)CYb;9p8#?d(KqSxnjXZdo*r*8oA~(g zmJ)W`iCIQ$HkJL$QS!bUFCPivyV1FUG4DUCzV~DbAvPrLv9Kb|X8)8N-pG_2gG>g4 zCd}@s-_OU>RutW}Yu6GQ4S_sp{I7<@yMUS9E!B~3Ip}XdRlJ8?D$LxmEaj(7B^WPFkjMD}G$2jI z!~jcm!|GI*dTKfBW%sC6hojI@T!TCKh151J_wISnP{$<}dl6%X+)@e09ZehvwK%S_ z!~j}O8Bu4AqVdM&l9O5PfiF*Q6l}!xGa9eG)*EJ${WF_aDEjCT4IhrL5{Z7;{28{~ zg9V*p^?WGeB>(jf4Xjs@eKEYGqYBWbHyHA%A~{tOH~Di}1+P_?xnFD+W5-@x(s?#S z)i6=K`P6@8%UNW010TTZy&Wy=a2ICRq!Z@IphTx6Va-Rd%@XVh$1Q@!I;7_9XK9f6 z2CD3wBj03`zypBq(@`x|x~7y$S22H0&FEkp^JE)s;U+ZfojJ0O2ep6>M>NYk3A%zR z=K2ViIi9@`AFX(P2qzNN0J~vpBm0CHJj-VW@dj``HYSqSvV|GvH#S~;%_`XT=>a+F z$({P{enL)@c@s8P&=W~sN+z4n+J~fS%B!t;8W+b;d$BU7ix~^#!r60zub!^f{(FEC zaUYV9nT=Z%sWc&P4r}rHOr1_YFL`0#zxDMz?;iZ$bh6w4<2rPiqejNU{;40=a`vfW zS!LsuYrz$xMcgl525J>teLP`kD8^KiFR}o-bDEmcjaJWc!1kx$!)dND_N&! zms3wTGRYOnsW{v6qnxE86{GO4Kfh0GB zL_vxJ+7)Y3PmZ^R#2I&SAe%t}%qrU1-5?1{7k|b(Hj(wxPMJ&Ize&?l_%Q9@Ac@c4 z<<7N3lSPVdq|Dm`jJFOSH8fo^O2}fY69o*%^0C)i3PTxbPygUSS2jashXd;b-mH$n ztiClDCb~>qH3f3}4peU8G8XtV?fG+}!(E(opVn}7 z9*|;x7Eqylm$QzV8EmMDcP~FB&i?Ev87j)Ne)qMF<%@OhHnM`aa!8lm2VtI`KR~uX9zi*esg$)l_;#e&uL<6NPo#3G7%liTiV~he?KNK z-?ipN;aQT8Yv{k-^JVc z6+e6pN#g`KNDPcU5i5hmEH+!6IB{YMgj?;jLpqMup|{(9`)5(rza*U0zix!w+HLb+ zuMpnYN=?m}V#DN}eY|dm3W!f{j2B&VLS}N{wn4T`HA5uJW5?HnkX?$#Vv5<=q%dS* z$c=k|Dx049$5nDA-i+Qpa7|RVt2}0yoVr}Zc3A7UwnvcOWj;vG*_$Y5rhyBd%bOr- z6_LNjCCR1s(Ey|IT1LrkZ(UNYNurz^ffBf~>CyG`Jibn8J!(cC{WZD3`QjWE6w1+{a`9qutd_=I7 zLqx!^*lV)^k_RF00U2|~d)Ou0^z>vZx|#$drckI|P)in{MQ=dqdYrJ^rhp7sO`pdS5e0oclGn#AFfKYumx zUs{~NeWr@C(}f-zR+N1(#sAOeCdoPGP2{on#x>VmR;+0BHkx@cIo6G!88FinH^2aS zlysh;nZv(@YvDV#7}Zxp^;5g3q2;0^locJug3Rt3IqF_n|Dk7S#B_!Ba~gXkLSCkY zY%uA<)E18IW0G?&Qm=08`*h^=!UcsORySv%a!*us2O!^zY6Ne3t=zYLD-ELyQ1^{* z>a??m6R?>k{$eb6XNedJu;M2LK@LN86q$AS-*P##Eg8MoTsHMgEcwj`u$n0mD`tP- z-lf=MJO`TpY9d4Yq>rrWWl#2cw)bl9aAD4%aP8H7 zz!Z%ll@|^O;O-EGEu>yk_eP*XjW&0sX}afi_R|&ju=R(m4szS$q1t!Sv}^9fz&K5g zlN0bHAwfto)MC_LWhssHCLXu{TI`*+gDrXxXkV$Tc5rJ7j$k?@cb&Rl=J9?1IHWsMN3_Y>cQ7cgy$aJ>N}CCdCDPr@+kAC(+&Vq>&?{q#StlkRa!Mygr+KX* z`5U2#9RLCkDAU0T%rp~_5~wZ0y1?SxQ9z1Q6l292E~Tu-X4gA>#r2<-DNvd>d`&M~ zah{NQFmAbLGVTDgDfVABuhhpen*S+&5A!rCqo-{^_#Tc3(F{N3%SHl#oJ9Rz)Js@u za=tX|4zd|J7Z14ccCO>gnHnFRHZ`Df!+zoRwsR(cLLy}l9`@f>7!?ZteU;pV`$*rM zhkYtKJ5MkA@DuV~JAV39+!>zceSuq}lw?4uRm;~h{$Ov_;H@=IrcOJjKzi5EdWg-b z9`^kC`A~7!_?Z$?uBt$*VJ!K#r6rY}$4vde8;g4ty*s3Im&qO5#ky+j@@6G^WzC)Z zb$z>68zCcO(|sB*|tw^AACWv@>KJ5?P^ z#SEdYE^d!CO6{jLIQNcXTJve6tdlHWYoMrj>N)Dt#C?8_$#*_V7cNwtqeY1q&Yut` zfmpp2fqmTkJc3P-49@RdZG46U=C@XZeJr_=3m2d^X{QBGJA3mr=0H%kXQqjL)1Uz* z=XZ|L_Lz35hD!TFv}wiYrAM3d-H(vN&0ajC@t0P5byMJM>I(GiQVN7uO*ode)-t(P z&RH7gfUM}F>m$Zn6}Wc!rkvS88R0Y}&wp}c*y~zGatIDHf%86;ZxSAZh4i{4XtHCa z2{^y^0vBDtba81grt_#`J16AmOXjhGIHM`MlK|#aTPr&^hR$#hV!fvm_ZDb0m^A}7>@&427*+f$VY&N}C&H)d{poM$W+7=4; z6Oqdh7t5s5ZY_x&$v!J))35Y_asWp!;48IGp0=vUVk1XMkN&zU zP5O1aEn*`aQ%`oD%;%=|xv@L5r<>#ey)?v!Kj5)P@T+H1Knb(bSAoItcPXwL;xxGF z`MB%(G^>YZ3-EDWh&E1&=K=4_5^Nt$9%zsvjg-yyXQKNLWZFTqZVoNv-19nZz(LIH}q zvr-JAc?vseicOEbKC}T$!R>$nLgo6(qy=j4*FkE~7OukWYvIZdjz+;OvIfF16LY>C zrgLUXqzvSd8SYzokaL#{W!5}2)nA903M(aF4@T{szOx1r;N*1leQ3+Sr{S{wOlM|j zlyvVtT&w|LIO-cT=u5P!tr41(Us)FI=zIxdxrFd?pr7aZnw1q+Y&N-pR?F$H&oLkF z-xS!1I&qW|WH0e);CwqRda0~uxeWbRnZlhC=~jTO@3t&r1)SC%ej4xZp)CMs%zRJg z)L^@i)&7+Z%tVHHDtb5_)IGg+=Ek!>9-8u09LA*s0DnK^IPa*=qHAgohhpbzBDpIL z<8l%nY>v3zG*Fk&T=ULEqf8XN1hT;={co8)K98#GbO^@HHT#yX8_P+cm)lmT89&tb zc5l$Npfv%l^9vyuC-ESM!H^;^6<`X^Y4(d_6Yu3%1(-aCwSTHQG)Svye(Fvd!6d3R`94Ig77-71pAP zJO8b~&1JB1p^v(F+Yx!pDPh|BTUOV7Zr2sDWpWOmS}-M`3jg0rx~w1;`njE{gOzL- zEYx0B8tAWkDaSMSD2%h`Ip^ZypziU#&kG2*3|1Cuwj;xM@6>{OtkRZuv^-4RtrQ#F zhBevqe90I6p(;Z={+rq@oe7~oy1xj6&Ptf}sbE$4auLOH90x0NOQ^rfmAn>7(s(Ee zR zD`!_K!=F+>ov*)9*(JNXP-ivv?cvncC^?m<X z2f6EW<4482fubFv#&BLlc~rScasdlhlidYVB00H**n&jA!_tJgDEsrwY~lHHH&Dyn zl^M|-^%mbhn`Vu>vzN}0vEjGUj>;Z`{kI3n>T|Fo`2C52xgCdgFRm$SpSJdm70V|31h6g*8k$7#+^ z1wA!*gY+Ab1ZjANe^oPF7|=GwAtRW7_3w>@t1Q0jWaeYXMt$ZcwAzfzyw)8@@)?DE?C3x&O;T zCN5bn15oK6H2oQt!+dsth|=X1X;2LF2!4MJz9?DV`TFZ^eF8Vp>K=OMbD8O_2p@WD zu`M%(7Zt{fQ1II5|It-^t(9ZGQ+w!4)KCL=j$f`?iNgOnmn33-1q^4 zSLFkr{7U!E@~_v!wY?9$*93oFRB+?$<(Y9(@XrfRTUadJ6|F7)lKKU*sr>~l^~usY zn1bzmTkiOUgK4|^Pl!~_fT`6NkQ`8w$M!&bjkWXjbZzBU19cPB2o|PzdH`BTwU`98 zbG7@PGC$_0GGFj<|5Z1`O^?1;y!Z0*k%_2(uOo4QNI&EDBx1;3fKJGl36qQ$bm+%- zP9Bi5&>hrgj^I{ZBz&wge|>@Z*`n2=LjCC0hn_2xS}^lXUNS1uFU&8MZNEBehEu*-3hze zXcn?HTa>%^;YD`#`~6zSiiH~CUg+Xiz3U3Jk>a2oQTC^cjrfZ+Wt-%<8c~1Oo$=|! z275ia={mzoh`%AJOOP2mBvD1h13Qny4dLcZ#OniTVM!rH@5~IS*Yf4kg3M+%ZLEkJ zOZd=7U23QyN$NLAfphSgG5MqqyZna!Gln`{Tn2r;iG)8i!$XiO_~mmYf9i6D+NI*U z!TLux2!G;_L8-%`HDlR_@YHh{iEo7If`p}cpiN@{zF?_m)G6*N?Cp@zFG%m$1LbJt z>KkP&HIxwo2K>uMhS-m$!;lJxv2o^!b5VukQVrMg3nqQDY_vIpdH8)nm&aj%Q4(Bz zzJI>M)VB-hRFwdSI(hA3(VXM?u6K96QR+K6Z?wrpP8cppl){lVGXl4wjOq1*lziGs z4agwC59WS2Sd|3V9X;U-%!z}gb8blO?G@YiJ&O@lM!zHHEmjje)wvt5+14miDK;r*Blpey`2Nz(5Zm%QCx=>Kgfan6jzD1f*$WZzOg z*DdQJ)puo5PjkGGAeTK3rM*XZ0^(@rEx&zwa+n22z{I#aP=uCKfkK_TN;@ zYs#h7UhgUrbxd8KIF@Txs=qMw`Hp8S$yu{qABP8Hu-w&U4nmN4x!O4w?v#uuhGC6X z{pZ8&d7t{XjLA7~$8jOaxKwraGoN3=>P8T}&TQ&!J+IT6EjQN8SRZ0yu<&N!wPf7* zg$u)w^zQQfcC~~66_v|U@^C$1{kHO-$9JUNs~yU(A89!8p!?3#%ZFtG-wll)E#Uhm zjzpIxWWtXh+DCEObNUuB;qGwXB4lQr*L6?~82%24S-t87h@P>+Z60KUU~g)4gjb?{KmgrtLdE zDi^>?64~n-TYkP!*5xMd(83kWguCwiB+0lUyZ4CzE1fB4P4*Gus&Fwru3d;{Djy6Q za7^H+HZL+R!QIjU$)s5$xR|C|%zKOv4wLn^&v1sVAMsI)Yi)`U}fi|&L%i=apvhOs+I8+!>ZYp7H`1U zxN>!xb`YL6{t|V?cfzu9Sex=0V%yzCiVuX< zc{A@$kt15D*mb!52Y1Ktd&)@b2$n3N0P@B9VGG-xWx8Wd!w4Jff$QYIb8IOgzweW0 z^JYGV)-f9Y8cyi-SHi_{7#uZ<;#i69x}1v{Gd&B5)wN_lz2EO5(MrS@u>k~;b!_E@ z#?_a$MpnlM$8#dSf2sTCE0s{f>oO z_dxd0Gr2c^+rr3oJH;E#+sJnd7u?==&h^F1%D6Z3C-k|Oxe6PM>aKacOrfx$ua{}0 z)-3WVmIJ}VR;`OTbmRyxwC&@8SL=jJ2#&w(@QhwyH+3?vDx0K_Wt89- z7v?@CDRY>jSVuiRi;I6io~T^CVZhQ=q!wGgx)jT!*+@%b@7Da73By#oiFe8&CzJLZ zUTL9{F~fW~LohqMp<-?;;q9Y_x`W;ELe{ZwSUQP<#{bbZ9AKcLqy^!CY9$HcU&)t57h4KJ3s1PSh3G3Gw4D#(Hk5U2 z%i=_QK+JI-G{0ZVjvu{}isFX}m8(+}Be-)EBzn~BlzXNkrps%>xUx#-dwe+wB|Z9+ z2P<54UWxZS+Uc@;tV~}bW~Loucla8Nb~0-V2D6P$FZRZ|N0CLhEgDny%wANqUxRY= z+Z}R0AW^?lcHc;i?cQ3>`JPp=v}}JiSLgJ1B@z24g7~|%a`q>RYuvvv!w9(1AQ7u^ z@zpHzOxbm22N8`w(!Zs@yv^K~xpdmP{u;JCA&7X`CDgzUNaLCRFh~{6v0E(dBQveW z32Ts+T`>VdSVm$j`kb4pYLMO+a(@kmNgU_b!yiyBpgb+NrCr@-hkZ(8jI?f)&T}7rc0-xN&ZJed|!Fe-(OPkSVZy2&AHnp^RVH8*bg z|BoJmwm2LG19GoJ)ir?{Y1d!YC?GOhsPV|k5%eI@-rDfdI?Nxqx8meEQ#u%7kJX1R||TCNyacZWIb;HY`ts@bN}f&p z6M_Ev-6iv9De_8&!>q7MBAvL~(`?S$3T`vj^Tab-?TD_+eIfV$gq) z9m;2A4ykiqqi3-n-TIYwGU)gdUsAe0oFt@W3^yeT*P+fN<5kI1gA!D6${fBi^nKHz zwc)TOccKPgacN4m-S8w>;35;ny`Q#+#DSRC0C9cspYfdfKH710vD4*r*+Nj~=|U0D zlNvQc>|{ut#17nRj>+mc*Ac1r+I8^4`oEV<`@S0`DkqYV=3aa!EsYI03|1aFQovve z`&oLW0bPkMzt#PO$`Jg&+WXG0rnau%P4@_b9;FG0%2A{Uf>K2i3*e(7D!oVW08$l@ z&=d7w14KoNAYDLdp@v?R5~T$M3_a4M6M9J9cg6FLd&eE)j{66^<6R%%!)|NNwbrb^ zIdfCBlTBEk-PWTA>aA(9`;H0)>H)=!0CR5I{oy4*ZD6RX?7tw1=&Q5cZD}bC*R?rI zIGA~5A1~;L0FEW+{Q{TmVGJDyld4LN$c01N)L6K37ti=}N7k}W>q7z@3rO$+jWj@U z?3tuVGTZ?hfM!*XvvIWux)y8;018mCrZ=E@^x^^&F2k^hopgc0ONdmO<&5(|LEhxM zv+++SNwVSUZM9RM=Td6JkA(ZuX1SW^93v(EwF^791OT_8WQsgyofWv#E5F2xGG&b? zgrD8^+EA;y*`Q0ava_#p;0MK`Df^HB8Nc(bkeM8>&2-v6FCHh`*EL ze-T9l0sPMQ{2${1;q+mEL%hNvmAKP^U`#>j!Q*RNk`T(Av#HTNERh@bchA_?fE8_O z=getkb*&oBja|@1Fk}I6G>)^qMkgM9`4gFKpU8oLT1j#^Eb~3^4=7J5EM=vO2t0U^ zKOxS`eETkQ_Rm3%?ZFxUkDvhO zIvD@I9)mqrkka}fPJ~Kjwfpdo_H~Cv<`y2>Y{W3Gr(NVcECQ6>@9}?yA&~hGgqi`O zo$nVz>v8l}FEb880X$ZD`;VvGKUGq|Qa16_-(NAATKH0da(-VQtm1;u5r+z58jNiI zW~@9jK?q|<0%UikX9iFXMLwlQx2}Bi_9v8LyLu=yYFb*)Vh{_hG?54Jh2*ZBN1Nt+ zccBFX2$_FvC8o-*&Y@OE7ApBW9{@Vt7V+0ZXYxm0d}&O`Giz>n>Af^od8|RNLZh2K z6Kco23``s3ISH;y`5&ywj`WJwOxYgq8Pa2%zzwxeJ;6IZ*G{la|D*7pK1`}4Bpljs z`V$m#g3eRA00(>lYhM$dQGuttNThE~E`G*Cig!L$>AH-Hh$evE7oUKe!Gp88n|**g zbmH5y$EN%INY2hqi0zt<_3gLL_mt z^saPzc|lY02OSum7T_R6AyIYKoDc6QyO7G|7i8U44=yt@OdhWnu(nB{abf7=eSLni z{4S_OE?(&?D%{5u)OI;cy2rgpVl|&MK2>Y=X?X1C@#F9v(;Cr2Gp}3Ow!Qr>T}214 z6|_{C6|^rT*(>y4y0O<#PN-O$$2WOGT|9BVV}9lR?B@G-eXiFXP15>u$+XZshguVA zh_?^=u^yRB2`aFDIJ3H`v=38)*5yrKK3*x(+P^)qPN>-D5$xn{Oq2C`%w99x2xbIl z)n2s_hKiHMN~dZD8IxISgZm;YP}OyCW+i{I?#EZ>%Sv}(n!wTP5)kQntaxF}b0vJs z^ww<4TPH-}cd~3Ru;d`CW&N62*4mal`*?WhsyLVO*bNGDv|%>v{`?a`9xEBMu5`)j zNrWX^iCx*%pYu=xewxrW-MR?WhZUC`L(Y&&a4*dX4V@d!2qd+2OfgIldsSZ^Qh;6G z%ZwJ>lJb5TFrrs{L`6bB_xm>Co|lz9Fl@}MH;HlZFuS~~C3+-l6Q5$i1TFloeEkAD z%RblkMHg5kcMt@)EvkDdhIK29eUEE-Q2Kdp#b)GCv$aO!(w_+S1j%Mg1oX_BpP(Al z(NU0+a&wjA=%4qyi0yIp(Ojp*qoZ#ttc2i0^~B2^@JvaDt0f1-*mR}c9H4`HbkupZ zcV?hOkZg#btZm$FqiV^H37e~!*^9&ggT(44PX7S%X^_DQfld>_!&U{#Y!6nS*#033 zhA?bZAnq8d<`6g$fpxL>{dP=EPY(q8Tcs5GuoW2A-lj;G0_>%mNu( z{K9^t?AhnBTpwJc&g5qj@%^#lSAOaH?P;uM6{PnKV{>RUQ7cD~;g{k!FD{24)urk{ z#^1Sji7m`KpI3<*rJV73sN4v|3wRrb%>oqemn>;D;Xz zpap#mqK+Jx}#pDS4NyGI&pht_j@XUkG}iiH3lZV(5# zdW2)eabN*~NC#O)tB<*kf7o~yTLO$Y7*@xhK+P9YPVg0KREM32@7UQ1M3&JR435o$ zs`wLXx^RMxQxp(66qVo@u9I$^VCVZEArTSa&p=J?9{@A|0ov>)Qvh`=8qug~h^g1g zxgrO2RPmc72peHFW%9SiQ0d=SrOySQfeuHm#u8#K%@1zmHvA}axwu(?(5eZZO+9-$ zX!3GYqyNwT<%X`>%-T?LwKQf2=j;!M#SsaqNHKKB1IHx==`(w0UO_5 z-6=hz%L<$!EFh?*U^?+>dB?$Q($5(lchcdY6?~Cpoe*|FDUvETbAdV7C(>mzy@G%j zBt}_Ju1NIks0kC+>d`4R=lo|voPIvacT$-mB7zq-Zt3WKCCoXLsp$6y`__B( z5L9dx4Jz_+`XkIuui82$4Ox8(ad1B&HKrFJTJrdeleFn}b-pkuesnlTcU3D52Q%}# zcO0@%w6??ei;r^UoK zYV8fP4M+*@_G~p9+xJ>bJtV_odCGD`VdgbajjZ?NEn?~xjZJH~HD2k;3bFz2;JqI} zWn8GwVak4`>WP+HP*okHfO;*yZ0%O0%GUB+E_12bm100w_Mhz;&%07m720WT=kq}` z@M|@Pt;6AyIRjb_#pQ;v+Z>NN8HifyC+Z+rEt?ALu zk#4uP|9z6JWZWZHto^&=V8Pc%klERtf7*U|dmSHd{p@*-Ul}&-nv z*m9f8Y9W5DJloP54|kVG7BO*Q<8?mpH%-GK;g8$sV`%w)JP0dbGeP%Cr@E<0UuYHC zV^fdWFuP`l?tX*j(qk-@-QS$+{XbG3>6))<=t`uwZoZ>a^fu*`C0z%+2W?CM-j*0BcD*0IG+$qGBico% zzmlt+J8)SA>$zo`A3#9jh4R7*0?Oe}s%(*Enn13N!a&lvbxDSL3`)%%5Yinr^h@0A zm*896MX$g&MqwQphUahK1&4R=F+fzj2Lhw&uRLTWl43}>}QEnp%>lFFGeVyG;3=b9-$tF5K^A1NiZiLn|^A~uc7WPgI3BAW`MXmld z!VvmlPpmVfNyL$EH3ZnOKo=lRD^jQW+aWFIObqnA;)3$G*pyr+_det`yIQZC)RFSL zrZZTVcc8@eBHA%TfMEHga~wS@`8Y^i@hQ=zHylV@#Y$HXp0~tU)@FX*+5LI5zcyU= z-aP3}5*uc8w63+5pSO87Ou7~HGB#{$_6^QC10XriW=kKflNk7M-lP5Vc`ruB!U{I8 z{TgNewCK?rOAp(%Ob8g&aX_RHnNaqW-xC&`#`W-HC*x5*WH%4dAnD*l+vxu~!Bw|_EjiPlTIih6!HG)jg_5pfK{W(SkA_YtKd14HlEW2}=r12ZkIAwTk+@zUXP@S>(m@)?nTe!(KM6EIZ{;%aeXE z&}=3o@uafVb?X}xYjiOB(vt&zTU6p=^7+mSTWKLfQHw#7C9<7C;ry~jm>tJ%iEz8H zmDfpJpB2yncX~?MZRB@rdZttIz$1DA5?x(iCt-?%60cjQ@j>pNF@79Av-{{%%K5%0n_h>gL9x5M-Y9<4h$I17JFSq?cJ`91gX ziXm%hk>_z9y%<%!$HBijY9uI3O7!PxiLZwkk!oW#bDNBVV;D-5&aSN(%;f7v{eiaG zuVZOvx3)r!jaJw(ako37SJKM3-Er2I4}udAR$_TE8;S-LjoDs%`t>!SNt|exf!ybuzSQ0oc0h`q2)S4J1#3DXechz|Q?K zoIh@AJ?1F&;hJ<V)6jk3%32s6BcShC*$MmX92 z${NDBlB=fX*LF}Gq4UV+iinxeldKIPi6S4KxBM!JVXyA9UPf3{!a6LyK2l)Okq(;v z`a$I!gImD-2xZdv)h*Mq8VbLI3D>8ONn10uKuQ9e$&oH2Qh1{}7tI@f(`&70XF@-n`8<)y5)r zEXkR^m@A7rc(1?P)~)}bf-C~fJ-yXIz_FQmSzh9-x_;vEII1frC075GLt(5L5_%@tf*s!0kIs92wLth@|*BsTWFH7$Q?%kiD2+^+k0sXT4m3=0S zw}iQ`E89w}#`+|1yT#V(QYg#oTH7u3LVGT#N3HaPuH#M2k$;^`kX%@Y-1dQR<3G|8 z%p~b+Rci4aCJp)rk;$PUM|Hbs322a}1}9#!hU1_?(20M+i>E3-+jIFRj?XMALI)Cl zUr8JRJ^pk%R|mLGfm|FIrz-bo87=KtK{9}zeIwq2SegW=lZK#9$|Uh^{w}Gb!r?kj zcQBCB;Su&y)y2aC%83xPd$JiWYFyJg{?Z^ye?O9IvmjccDt)4o{*)U^-%?>tZ{F0^ z3oE}o-;H?ooY5$WOkpoE;F(yXr`EM;G^BJDg7`|jJuIhu z-X1?{c!lc#(uC#{WNZmGbd_Di=ohXJru(Iw7u+D%L0Or_h;_1ec<9bbqBbpC2&%!= zY6O#mo}Pj%o=N^DvZ*v#w;XZ2VPi<5ekxM}?u#+==2`yj>H`nWeKJ+`4{j76C$b87 zhW~mPwPafP77_4Mn&-sf-%J55YpQurOcS5T?-loD zJ{{ne66G;6lH-MxD@o%A*2Xb1YhNDDAO2ZnVuHDDdrdzS9mN{4&4kIJj=P|f>3p1Q zD&#pPx|Sni#9Wix2Tudrpij(H;84HtE}Ir%=y1*zd8g?JS%G3-`V-X`;}c_m1b?g$ zx36oHC2Zb8Tmi9_r#$GCvfA4WRn$C4;ut&uf#r8e(!l#qe>^RWCBw4&$aFK>j(<;Z zHV&g+L#@-P!By#CXEOf%e&?@xjP^M>EM5X8%0B-j-7Tan2pTKSE!gk(=&n767407r zzo)4bC**%;OCgTit?c#d*NKUVyW9*N9UW(^-U@NOlzqN4KKtlL5@%u93nt~NDC*WaPYrH)FKP*T$? zu3)x?=7MHrdNs<`u)o|uQmX02S>Gx%9aM#c%)2N#qk;?kR)uYZ1c^!ZcACM7E0yDG z&2jb+a^p9MMNaPlN?Fr$6Jug6Bdm{b01ZmF4@yWpOHED1x=gpj6&|FvH`Az}m2go; zlh>7sSRV@61)1eC zY8pC+rk-LXo7zFgF4bTG;vSUEwgtwMys5bO@VtkGm31(S=iU?2_?dG;R#NHlNqVcO zYjL>y37Ju`v~(8j)5!xUCL$ zfcP|s{FJEFDT43I%kDJ)_Sey}uH^6$woF);xVGr}9z zsuDj``5)?5C4UbP+cy;Sgi|*_%F&ZFq6$89Jz%aULqbYQ(CtTe%2{VOx96v;I6=PD zWbZy$HvS>!%Nk3-5DI;~sL6*s9bXqaZJSm~Z!``@tUia5T!B%IjGpKknVNCMh(i83 zqlFbNDWVy!`JN-UI1E+O)|LR#&Paoh=~Uo>&!=xG=EKAx8RP~>W@%_HS6v2~*3Un@ z#tyx&2YeO-ReoGv3HfYzGV6SZ6-%VUNboRd0hrtYRw~7V@Hb8bix2koX_0NbxR|E- zZL)CyE)M=&_C|VkVaFyv)$fMAz)v?64rrK* zHRVy$yk+~6Nw$M4&q3c;pb7%a54UEqLJ))~z|F=&{~4=Krwlq#^(!j4lB60ss= z8RY#3lxiJ1dtO`=&S>SZ)9>SUvKTj1PL8l_P*cH7)pBDezs4iZQQ%9P4I9o}<*DE% z)FDak_kO*pfpfL+$?MW(2GZ#RbbfxNeD-O;KMBPMm|P_n+#UfJ9XV~E4pIXUBv|a- zu^rgw6Q-BCGf!?i9ixAE7v%O(nd!Jwqh+xhuAd=tS+NeVZ~x6n35p#-^GvUGHV91i zu%G_kW50R#9RxN5H?{`@dQ%7Q4^`}jp?m=6u2rc!UV{tt%O+x|qFS7zk<-p?wFMSM zvT4Ypqq|5#Vqv$1;U{TGI%I7KLf!vSFmmAWVgdimwOD~eQGo;AXRVA&S7k3s?b(VD zmII#$1IxW23~`cF&mIN*h>GU@}UE- r{=EY21{?nO_@CGOx8zMaEE4=@!iAPguYm;uLH{wheyQjJ>e2rKhLkec literal 0 HcmV?d00001 diff --git a/public/onboardingFinish.png b/public/onboardingFinish.png new file mode 100644 index 0000000000000000000000000000000000000000..6027df3f76d5498676c329ce3127a0fe09068578 GIT binary patch literal 49806 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

krqZ`b5Ny?S8o^R)WmqN+lSzW}J;sf5nXRcp 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 V`rk&zw2`r$)iTh`)3CeyzW~R=$4vkL literal 0 HcmV?d00001 diff --git a/src/components/common/FinishScreen.tsx b/src/components/common/FinishScreen.tsx new file mode 100644 index 0000000..68def70 --- /dev/null +++ b/src/components/common/FinishScreen.tsx @@ -0,0 +1,5 @@ +const FinishScreen = () => { + return
FinishScreen
; +}; + +export default FinishScreen; From 690b2e433d4198ac1c0087b338fe7ba2e59fa851 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sun, 25 Aug 2024 00:07:39 +0900 Subject: [PATCH 11/13] =?UTF-8?q?fix:=20=EC=B6=A9=EB=8F=8C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0=EC=9D=84=20=EC=9C=84=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EB=B0=8F=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/selectOption/SelectBtn.tsx | 4 ++-- ...n.styled.ts => SelectOptionList.styled.ts} | 2 +- ...{SelectOption.tsx => SelectOptionList.tsx} | 8 +++---- src/components/onboarding/SelectLevel.tsx | 4 ++-- src/type/selectList.d.ts | 24 +++++++++++++++++++ src/type/selectOption.d.ts | 24 ++++--------------- 6 files changed, 37 insertions(+), 29 deletions(-) rename src/components/common/selectOption/{SelectOption.styled.ts => SelectOptionList.styled.ts} (94%) rename src/components/common/selectOption/{SelectOption.tsx => SelectOptionList.tsx} (86%) create mode 100644 src/type/selectList.d.ts diff --git a/src/components/common/selectOption/SelectBtn.tsx b/src/components/common/selectOption/SelectBtn.tsx index 43ef0a7..20961a2 100644 --- a/src/components/common/selectOption/SelectBtn.tsx +++ b/src/components/common/selectOption/SelectBtn.tsx @@ -1,5 +1,5 @@ -import { SelectBtnProps } from "@type/selectOption"; -import * as S from "./SelectOption.styled"; +import { SelectBtnProps } from "@type/selectList"; +import * as S from "./SelectOptionList.styled"; import { colorSets } from "@utils/defaultData"; const SelectBtn = (props: SelectBtnProps) => { diff --git a/src/components/common/selectOption/SelectOption.styled.ts b/src/components/common/selectOption/SelectOptionList.styled.ts similarity index 94% rename from src/components/common/selectOption/SelectOption.styled.ts rename to src/components/common/selectOption/SelectOptionList.styled.ts index c189603..3762fb1 100644 --- a/src/components/common/selectOption/SelectOption.styled.ts +++ b/src/components/common/selectOption/SelectOptionList.styled.ts @@ -1,4 +1,4 @@ -import { ColorSet } from "@type/selectOption"; +import { ColorSet } from "@type/selectList"; import styled from "styled-components"; export const SelectOptionContainer = styled.div<{ width?: string }>` diff --git a/src/components/common/selectOption/SelectOption.tsx b/src/components/common/selectOption/SelectOptionList.tsx similarity index 86% rename from src/components/common/selectOption/SelectOption.tsx rename to src/components/common/selectOption/SelectOptionList.tsx index 3e22450..a3aa50a 100644 --- a/src/components/common/selectOption/SelectOption.tsx +++ b/src/components/common/selectOption/SelectOptionList.tsx @@ -1,9 +1,9 @@ -import { SelectOptionProps } from "@type/selectOption"; +import { SelectListProps } from "@type/selectList"; import SelectBtn from "./SelectBtn"; -import * as S from "./SelectOption.styled"; +import * as S from "./SelectOptionList.styled"; import { useState } from "react"; -const SelectOption = (props: SelectOptionProps) => { +const SelectOptionList = (props: SelectListProps) => { const [selectedValue, setSelectedValue] = useState( null ); @@ -54,4 +54,4 @@ const SelectOption = (props: SelectOptionProps) => { ); }; -export default SelectOption; +export default SelectOptionList; diff --git a/src/components/onboarding/SelectLevel.tsx b/src/components/onboarding/SelectLevel.tsx index d3dc94e..52a5b5e 100644 --- a/src/components/onboarding/SelectLevel.tsx +++ b/src/components/onboarding/SelectLevel.tsx @@ -1,7 +1,7 @@ -import SelectOption from "@components/common/selectOption/SelectOption"; import * as S from "./onboarding.styled"; import useSelectLevel from "@hooks/useSelectLevel"; import { nationElements } from "@utils/defaultData"; +import SelectOptionList from "@common/selectOption/SelectOptionList"; interface SelectLevelProps { languageId: number | string; @@ -23,7 +23,7 @@ const SelectLevel = ({ languageId, setter }: SelectLevelProps) => { {language?.text}를 얼마나 알고 계신가요? - ({ text: option.text, value: option.value, diff --git a/src/type/selectList.d.ts b/src/type/selectList.d.ts new file mode 100644 index 0000000..62e5112 --- /dev/null +++ b/src/type/selectList.d.ts @@ -0,0 +1,24 @@ +export interface ColorSet { + background: string; + border: string; + color: string; +} + +export interface SelectListProps { + selectList: SelectOptionElement[]; + setter: (value: string | number | null) => void; + width?: string; +} + +export interface SelectListElement { + text: string; + state: "correct" | "wrong" | "selected" | "default"; + value: string | number; +} + +export interface SelectBtnProps { + text: string; + colorName: string; + imgURL?: string; + onClick: () => void; +} diff --git a/src/type/selectOption.d.ts b/src/type/selectOption.d.ts index fe61828..62c2296 100644 --- a/src/type/selectOption.d.ts +++ b/src/type/selectOption.d.ts @@ -1,24 +1,8 @@ -export interface ColorSet { - background: string; - border: string; - color: string; -} - -export interface SelectOptionProps { - selectList: SelectOptionElement[]; - setter: (value: string | number | null) => void; - width?: string; -} - -export interface SelectOptionElement { +export interface SelectOptionProps extends InputImgProps { + imgURL: string; text: string; - state: "correct" | "wrong" | "selected" | "default"; - value: string | number; } -export interface SelectBtnProps { - text: string; - colorName: string; - imgURL?: string; - onClick: () => void; +export interface InputImgProps { + setIsLoading?: React.Dispatch>; } From f5d911d423634446e85bc6632fe2704fb099ae77 Mon Sep 17 00:00:00 2001 From: gominzip Date: Sun, 25 Aug 2024 00:15:15 +0900 Subject: [PATCH 12/13] =?UTF-8?q?fix:=20build=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/selectOption/SelectOptionList.tsx | 5 ----- src/components/onboarding/AgeInput.tsx | 4 ++-- src/utils/defaultData.ts | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/components/common/selectOption/SelectOptionList.tsx b/src/components/common/selectOption/SelectOptionList.tsx index a3aa50a..525fbc0 100644 --- a/src/components/common/selectOption/SelectOptionList.tsx +++ b/src/components/common/selectOption/SelectOptionList.tsx @@ -1,12 +1,8 @@ import { SelectListProps } from "@type/selectList"; import SelectBtn from "./SelectBtn"; import * as S from "./SelectOptionList.styled"; -import { useState } from "react"; const SelectOptionList = (props: SelectListProps) => { - const [selectedValue, setSelectedValue] = useState( - null - ); const getColorName = (state: string) => { switch (state) { case "correct": @@ -35,7 +31,6 @@ const SelectOptionList = (props: SelectListProps) => { }; const handleSelect = (value: string | number | null) => { - setSelectedValue(value); props.setter(value); }; diff --git a/src/components/onboarding/AgeInput.tsx b/src/components/onboarding/AgeInput.tsx index bfa0764..e2c08eb 100644 --- a/src/components/onboarding/AgeInput.tsx +++ b/src/components/onboarding/AgeInput.tsx @@ -1,5 +1,5 @@ import { colorSets } from "@utils/defaultData"; -import React, { ChangeEvent, FocusEvent, KeyboardEvent } from "react"; +import React, { ChangeEvent, KeyboardEvent } from "react"; import styled from "styled-components"; interface AgeInputProps { @@ -16,7 +16,7 @@ const AgeInput = ({ age, setter }: AgeInputProps) => { setter(newValue); }; - const handleBlur = (event: FocusEvent) => { + const handleBlur = () => { setIsEditing(false); }; diff --git a/src/utils/defaultData.ts b/src/utils/defaultData.ts index 57e3187..3d535b4 100644 --- a/src/utils/defaultData.ts +++ b/src/utils/defaultData.ts @@ -1,5 +1,5 @@ import { DropdownElement } from "@type/dropdown"; -import { ColorSet } from "@type/selectOption"; +import { ColorSet } from "@type/selectList"; export const nationElements: DropdownElement[] = [ { From 79802b7dbddcad58bdd44785b908f5f7d3af6e9d Mon Sep 17 00:00:00 2001 From: gominzip Date: Sun, 25 Aug 2024 00:17:19 +0900 Subject: [PATCH 13/13] =?UTF-8?q?fix:=20build=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/tales/readTale/ReadTale.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/tales/readTale/ReadTale.tsx b/src/components/tales/readTale/ReadTale.tsx index d345b52..c64b07a 100644 --- a/src/components/tales/readTale/ReadTale.tsx +++ b/src/components/tales/readTale/ReadTale.tsx @@ -1,12 +1,12 @@ import Header from "@components/common/header/Header"; import * as S from "./ReadTale.styled"; import Dropdown from "@components/common/dropDown/Dropdown"; -import { nationElements } from "@pages/OnboardingPage"; import { useEffect, useState } from "react"; import NextBtn from "@components/common/NextBtn"; import LoadingScreen from "@components/common/spinner/LoadingScreen"; import { createTale } from "@apis/createTales"; import { useLocation } from "react-router-dom"; +import { nationElements } from "@utils/defaultData"; const ReadTale = () => { const location = useLocation();