From 063ec76ebe7611d7f537b45617b96cd4e3ae5142 Mon Sep 17 00:00:00 2001
From: JuyeonLee <104489022+Juye0nLee@users.noreply.github.com>
Date: Thu, 30 May 2024 19:19:21 +0900
Subject: [PATCH] =?UTF-8?q?Revert=20"=EC=A4=91=EB=B3=B5=ED=99=95=EC=9D=B8?=
=?UTF-8?q?=EB=A7=8C=20=EC=95=88=ED=95=B4=EB=86=93=EC=9D=80=20=EC=83=81?=
=?UTF-8?q?=ED=83=9C=EC=9D=B8=EB=8D=B0=20=EC=9D=B4=EA=B1=B0=20=EB=AC=B4?=
=?UTF-8?q?=EC=8A=A8=20=EC=9D=BC=EC=9D=B4=20=EC=9E=88=EC=96=B4=EB=8F=84=20?=
=?UTF-8?q?=EC=98=A4=EB=8A=98=20=EC=95=88=EC=97=90=20=ED=95=B4=EC=84=9C=20?=
=?UTF-8?q?=EC=98=AC=EB=A6=B4=EA=B2=8C=20"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Cmpnts/Footer.css | 80 ------------
src/Cmpnts/Footer.jsx | 28 ----
src/MenteeSignup.css | 158 ----------------------
src/MenteeSignup.jsx | 267 -------------------------------------
src/MentorSignup.jsx | 287 ----------------------------------------
src/Signin.css | 84 ------------
src/recoil.js | 298 +++++++++++++++++-------------------------
7 files changed, 123 insertions(+), 1079 deletions(-)
delete mode 100644 src/Cmpnts/Footer.css
delete mode 100644 src/Cmpnts/Footer.jsx
delete mode 100644 src/MenteeSignup.css
delete mode 100644 src/MenteeSignup.jsx
delete mode 100644 src/MentorSignup.jsx
delete mode 100644 src/Signin.css
diff --git a/src/Cmpnts/Footer.css b/src/Cmpnts/Footer.css
deleted file mode 100644
index 62fb2a5..0000000
--- a/src/Cmpnts/Footer.css
+++ /dev/null
@@ -1,80 +0,0 @@
-.footer_wrap{
- width: 100vw;
- height: 20vh;
- background: #E5E5E5;
-
-}
-.footer_logo_wrap{
- display: flex;
- flex-direction: row;
- margin-left: 20vw;
- padding-top: 5vh;
-
-}
-.footer_info{
- display: flex;
- flex-direction: column;
- justify-content: space-around;
-}
-.footer_info div{
- color: #000;
- font-family: "Noto Sans";
- font-size: 1rem;
- font-style: normal;
- font-weight: 400;
- line-height: normal;
- }
-.footer_contact{
- margin-left: 20vw;
-
- display: flex;
- flex-direction: row;
-
-}
-.footer_contact_mail{
- color: #000;
- font-family: "Noto Sans";
- font-size: 1rem;
- font-style: normal;
- font-weight: 400;
- line-height: normal;
- opacity: 0.5;
-
- margin-right: 10vw;
-}
-.footer_contact_comment{
- margin-left: 20vw;
- color: #737373;
- text-align: center;
- font-family: "Noto Sans";
- font-size: 1rem;
- font-style: normal;
- font-weight: 400;
- line-height: normal;
- display: flex;
- flex-direction: row;
-}
-.footer_contact_comment div{
- margin-left: 3vw;
- margin-right: 3vw;
-}
-.footer_line{
- margin-left: 6vw;
- margin-right: 6vw;
- border: none;
- height: 3px;
- background-color: white;
- margin-top: 1.5vh;
- margin-bottom: 2vh;
-}
-.footer_copyright{
- color: #000;
- font-family: Inter;
- font-size: 1rem;
- font-style: normal;
- font-weight: 400;
- line-height: normal;
- opacity: 0.5;
- margin-left: 20vw;
- margin-top: 1vh;
-}
\ No newline at end of file
diff --git a/src/Cmpnts/Footer.jsx b/src/Cmpnts/Footer.jsx
deleted file mode 100644
index 91f395b..0000000
--- a/src/Cmpnts/Footer.jsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import Logo from "../assets/Logo";
-import NameLogo from '../assets/KNOWBASE.svg'
-import '../Styles/Footer.css'
-export default function Footer(){
- return(<>
-
-
-
-
-

-
personal home styling mentoring service
-
-
-
-
-
contact : knowbase@gmail.com
-
-
고객센터
-
공지사항
-
개인정보 처리 방침
-
-
-
-
ⓒ Know BASE . All rights reserved.
-
- >
- )
-}
\ No newline at end of file
diff --git a/src/MenteeSignup.css b/src/MenteeSignup.css
deleted file mode 100644
index f5e8ec1..0000000
--- a/src/MenteeSignup.css
+++ /dev/null
@@ -1,158 +0,0 @@
-.mentee_signup_wrap{
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
-}
-.input_info {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- margin: 5rem;
-}
-
-.input_name, .input_id, .input_pw, .input_pwconfirmed, .input_nickname{
- margin-bottom: 1rem;
-}
-
-.dropdwon_comment{
- color: rgba(0, 0, 0, 0.40);
- font-family: "Noto Sans";
- font-size: 1.5rem;
- font-style: normal;
- font-weight: 500;
- line-height: normal;
- padding-left: 2rem;
- margin-top: 1rem;
-}
-.dropdown{
- display: flex;
- flex-direction: row;
- text-align: left;
- align-items: left;
- justify-content: left;
-}
-.gender_wrapper, .age_wrapper{
- position: relative;
- display: inline-block;
- margin-left: 1rem;
-}
-
-.selected_gender, .selected_age{
- width: 7vw;
- height: 3vh;
- padding: 0.5rem;
- border: 0;
- border-radius: 5px;
- background-color:#F0EFEF;
- display: flex;
- align-items: center;
- justify-content: center; /* 텍스트와 아이콘 사이에 공간을 만듭니다 */
- color: #908F8F;
- text-align: center;
- font-family: "Noto Sans";
- font-size: 1.5rem;
- font-style: normal;
- font-weight: 400;
- line-height: normal;
-}
-.selected_gender.selected, .selected_age.selected {
- background-color: #fff; /* 초록색 배경 */
- border: 1px solid #0A7700;
- color: #0A7700; /* 초록색 글자 */
-}
-.dropdown_icon{
- position: absolute;
- right: 0.8rem; /* 오른쪽 여백 설정 */
- top: 50%;
-}
-.gender_dropdown, .age_dropdown {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: 1;
- border: 0;
- background-color: #fff;
- border-radius: 5px;
-
-}
-
-.gender_option, .age_option {
- background-color: #fff;
- color: #000;
- width: 7vw;
- height: 3vh;
- text-align: center;
- justify-content: center;
- padding: 0.5rem;
- font-family: "Noto Sans";
- font-size: 1.5rem;
- font-style: normal;
- font-weight: 400;
- line-height: normal;
-}
-
-.input_info b {
- display: block;
- color: #000;
- font-family: "Noto Sans";
- font-size: 1.5rem;
- font-style: normal;
- font-weight: 600;
- line-height: normal;
- margin-bottom: 1rem;
-}
-
-.input_field {
- width: 33vw;
- height: 6vh;
- border-radius: 5px;
- border: 0;
- background: #F0EFEF;
-}
-
-
-.input_field::placeholder {
- color: rgba(0, 0, 0, 0.40);
- font-family: "Noto Sans";
- font-size: 1.5rem;
- font-style: normal;
- font-weight: 500;
- line-height: normal;
- padding-left: 2rem;
-}
-
-.id_wrap,
-.nickname_wrap {
- position: relative;
-}
-
-.check_double {
- position: absolute;
- width: 7vw;
- height: 5vh;
- top: 0;
- bottom: 0;
- right: 5px;
- margin: auto 0;
- border-radius: 5px;
- color: rgba(0, 0, 0, 0.40);
- background-color: #fff;
-}
-.join_btn{
- height: 6vh;
- width: 20vw;
- background-color: #F0EFEF;
- color: rgba(0, 0, 0, 0.40);
- font-family: "Noto Sans";
- font-weight: 600;
- border-radius: 5px;
- margin-top: 5rem;
- border-width: 0;
- color: rgba(0, 0, 0, 0.40);
- align-items: center;
-}
-
-
-
diff --git a/src/MenteeSignup.jsx b/src/MenteeSignup.jsx
deleted file mode 100644
index e3acbd3..0000000
--- a/src/MenteeSignup.jsx
+++ /dev/null
@@ -1,267 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { useRecoilState } from "recoil";
-import {
- inputGenderState,
- inputAgeState,
- inputNameState,
- inputPasswordState,
- inputPasswordConfirmedState,
- inputNickNameState,
- inputIdState
-} from "../recoil";
-import Header from "./Header";
-import { useNavigate } from "react-router";
-import '../Styles/MenteeSignup.css';
-import downArrow from '../assets/downArrow.png';
-import Home from './Home'
-
-export default function MenteeSignup() {
- const navigate = useNavigate();
- const [inputGender, setInputGender] = useRecoilState(inputGenderState);
- const [inputAge, setInputAge] = useRecoilState(inputAgeState);
- const [inputName, setInputName] = useRecoilState(inputNameState);
- const [inputPassword, setInputPassword] = useRecoilState(inputPasswordState);
- const [inputId, setInputId] = useRecoilState(inputIdState);
- const [inputPasswordConfirmed, setInputPasswordConfirmed] = useRecoilState(inputPasswordConfirmedState);
- const [inputNickname, setInputNickName] = useRecoilState(inputNickNameState);
-
- const [showGenderDropdown, setShowGenderDropdown] = useState(false);
- const [showAgeDropdown, setShowAgeDropdown] = useState(false);
-
- const [isFormValid, setIsFormValid] = useState(false);
- const [inputErrors, setInputErrors] = useState({
- nameError: '',
- idError: '',
- passwordError: '',
- passwordConfirmedError: '',
- nicknameError: ''
- });
-
- const genderOptions = ["남성", "여성"].filter(gender => gender !== inputGender);
- const ageOptions = ["10대", "20대", "30대", "40대 이상"].filter(age => age !== inputAge);
-
- const handleGenderChange = (value) => {
- setInputGender(value === "여성" ? false : true);
- setShowGenderDropdown(false);
- };
-
- const handleAgeChange = (value) => {
- setInputAge(value);
- setShowAgeDropdown(false);
- };
-
- const validatePassword = (password) => {
- const passwordRegExp = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/;
- return passwordRegExp.test(password);
- };
-
- const validateId = (id) => {
- const idRegExp = /^[a-zA-Z0-9]{6,12}$/;
- return idRegExp.test(id);
- };
-
- const validateNickname = (nickname) => {
- const nicknameRegExp = /^[a-zA-Z0-9]{6,12}$/;
- return nicknameRegExp.test(nickname);
- };
-
- const checkFormValidity = () => {
- const errors = {
- nameError: '',
- idError: '',
- passwordError: '',
- passwordConfirmedError: '',
- nicknameError: ''
- };
-
- if (!inputName) {
- errors.nameError = '이름을 입력하세요.';
- }
- if (!inputId) {
- errors.idError = '아이디를 입력하세요.';
- } else if (!validateId(inputId)) {
- errors.idError = '아이디는 6~12자 이내의 영문 또는 숫자만 사용 가능합니다.';
- }
- if (!inputPassword) {
- errors.passwordError = '비밀번호를 입력하세요.';
- } else if (!validatePassword(inputPassword)) {
- errors.passwordError = '비밀번호는 8자 이상의 문자, 숫자, 특수기호 조합이어야 합니다.';
- }
- if (!inputPasswordConfirmed) {
- errors.passwordConfirmedError = '비밀번호를 확인하세요.';
- } else if (inputPasswordConfirmed !== inputPassword) {
- errors.passwordConfirmedError = '비밀번호가 일치하지 않습니다.';
- }
- if (!inputNickname) {
- errors.nicknameError = '닉네임을 입력하세요.';
- } else if (!validateNickname(inputNickname)) {
- errors.nicknameError = '닉네임은 6~12자 이내의 영문 또는 숫자만 사용 가능합니다.';
- }
-
- setInputErrors(errors);
-
- // 모든 필드가 유효한지 확인
- const isValid = Object.values(errors).every(error => error === '');
- setIsFormValid(isValid);
- };
-
- useEffect(() => {
- checkFormValidity();
- }, [inputName, inputGender, inputAge, inputId, inputPassword, inputPasswordConfirmed, inputNickname]);
-
-
- const handleSignUp = async () => {
- try {
- const response = await fetch("http://52.78.165.203:8080/api/user/register/mentee", {
- method : "POST",
- headers : {
- "Content-Type":"application/json; charset=utf-8"
- },
-
- body: JSON.stringify({
- "name": inputName, //이름
- "userName": inputId, //로그인할 때 쓰는 아이디
- "password": inputPassword,
- "nickname" : inputNickname, //닉네임
- "isMentor" : false,
- "gender" : inputGender, // 남자 -> true , 여자 -> false
- "age" : inputAge,
- }), //실제 데이터 파싱하여 body에 저장
- })
-
- const data = await response.json();
- console.log(data);
-
- if (response.status === 200) {
- alert('회원가입에 성공하였습니다.');
- } else if(response.status === 400){
- alert('입력값이 올바르지 않습니다.')
- }
- else if(response.status === 409){
- alert('이미 존재하는 회원입니다.')
- }
- else {
- alert('회원가입 실패');
- }
- } catch (error) {
- alert('에러 발생');
- }
-
- navigate('/');
- };
-
- return (
- <>
-
-
-
-
-
이름
-
setInputName(e.target.value)}
- />
-
{inputErrors.nameError}
-
-
-
-
-
setShowGenderDropdown(!showGenderDropdown)}
- >
- {inputGender || "성별"}
- {!inputGender &&

}
-
- {showGenderDropdown && (
-
- {genderOptions.map(gender => (
-
handleGenderChange(gender)}>
- {gender}
-
- ))}
-
- )}
-
-
-
-
-
setShowAgeDropdown(!showAgeDropdown)}
- >
- {inputAge || "연령대"}
- {!inputAge &&

}
-
- {showAgeDropdown && (
-
- {ageOptions.map(age => (
-
handleAgeChange(age)}>
- {age}
-
- ))}
-
- )}
-
-
-
*(필수)
-
-
-
아이디
-
- setInputId(e.target.value)}
- />
-
-
-
{inputErrors.idError}
-
-
-
-
비밀번호
-
setInputPassword(e.target.value)}
- />
-
{inputErrors.passwordError}
-
-
-
setInputPasswordConfirmed(e.target.value)}
- />
-
{inputErrors.passwordConfirmedError}
-
-
-
닉네임
-
- setInputNickName(e.target.value)}
- />
-
-
-
-
{inputErrors.nicknameError}
-
-
-
- >
- );
-}
diff --git a/src/MentorSignup.jsx b/src/MentorSignup.jsx
deleted file mode 100644
index cdb907d..0000000
--- a/src/MentorSignup.jsx
+++ /dev/null
@@ -1,287 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { useRecoilState } from "recoil";
-import {
- inputGenderState,
- inputAgeState,
- inputNameState,
- inputPasswordState,
- inputPasswordConfirmedState,
- inputNickNameState,
- inputIdState,
- inputCertificateState
-} from "../recoil";
-import Header from "./Header";
-import { useNavigate } from "react-router";
-import '../Styles/MenteeSignup.css';
-import downArrow from '../assets/downArrow.png';
-import Signin from "./Signin";
-
-export default function MentorSignup() {
- const navigate = useNavigate();
- const [inputGender, setInputGender] = useRecoilState(inputGenderState);
- const [inputAge, setInputAge] = useRecoilState(inputAgeState);
- const [inputName, setInputName] = useRecoilState(inputNameState);
- const [inputPassword, setInputPassword] = useRecoilState(inputPasswordState);
- const [inputId, setInputId] = useRecoilState(inputIdState);
- const [inputPasswordConfirmed, setInputPasswordConfirmed] = useRecoilState(inputPasswordConfirmedState);
- const [inputNickname, setInputNickName] = useRecoilState(inputNickNameState);
- const [inputCertificate, setInputCertificate] = useRecoilState(inputCertificateState)
- const [showGenderDropdown, setShowGenderDropdown] = useState(false);
- const [showAgeDropdown, setShowAgeDropdown] = useState(false);
-
- const [isFormValid, setIsFormValid] = useState(false);
- const [inputErrors, setInputErrors] = useState({
- nameError: '',
- idError: '',
- passwordError: '',
- passwordConfirmedError: '',
- nicknameError: ''
- });
-
- const genderOptions = ["남성", "여성"].filter(gender => gender !== inputGender);
- const ageOptions = ["10대", "20대", "30대", "40대 이상"].filter(age => age !== inputAge);
-
- const handleGenderChange = (value) => {
- setInputGender(value);
- setShowGenderDropdown(false);
- };
-
- const handleAgeChange = (value) => {
- setInputGender(value === "여성" ? false : true);
- setShowAgeDropdown(false);
- };
-
- const validatePassword = (password) => {
- const passwordRegExp = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/;
- return passwordRegExp.test(password);
- };
-
- const validateId = (id) => {
- const idRegExp = /^[a-zA-Z0-9]{6,12}$/;
- return idRegExp.test(id);
- };
-
- const validateNickname = (nickname) => {
- const nicknameRegExp = /^[a-zA-Z0-9]{6,12}$/;
- return nicknameRegExp.test(nickname);
- };
-
- const checkFormValidity = () => {
- const errors = {
- nameError: '',
- idError: '',
- passwordError: '',
- passwordConfirmedError: '',
- nicknameError: '',
- certificateError: ''
- };
-
- if (!inputName) {
- errors.nameError = '이름을 입력하세요.';
- }
- if (!inputId) {
- errors.idError = '아이디를 입력하세요.';
- } else if (!validateId(inputId)) {
- errors.idError = '아이디는 6~12자 이내의 영문 또는 숫자만 사용 가능합니다.';
- }
- if (!inputPassword) {
- errors.passwordError = '비밀번호를 입력하세요.';
- } else if (!validatePassword(inputPassword)) {
- errors.passwordError = '비밀번호는 8자 이상의 문자, 숫자, 특수기호 조합이어야 합니다.';
- }
- if (!inputPasswordConfirmed) {
- errors.passwordConfirmedError = '비밀번호를 확인하세요.';
- } else if (inputPasswordConfirmed !== inputPassword) {
- errors.passwordConfirmedError = '비밀번호가 일치하지 않습니다.';
- }
- if (!inputNickname) {
- errors.nicknameError = '닉네임을 입력하세요.';
- } else if (!validateNickname(inputNickname)) {
- errors.nicknameError = '닉네임은 6~12자 이내의 영문 또는 숫자만 사용 가능합니다.';
- }
- if(!inputCertificate){
- errors.certificateError = "재직자 인증 확인 후 가입이 완료됩니다.";
- }
-
- setInputErrors(errors);
-
- // 모든 필드가 유효한지 확인
- const isValid = Object.values(errors).every(error => error === '');
- setIsFormValid(isValid);
- };
-
- useEffect(() => {
- checkFormValidity();
- }, [inputName, inputGender, inputAge, inputId, inputPassword, inputPasswordConfirmed, inputNickname, inputCertificate]);
-
-
- const handleSignUp = async () => {
- try {
- const response = await fetch("http://52.78.165.203:8080/api/user/register/mentor", {
- method : "POST",
- headers : {
- "Content-Type":"application/json; charset=utf-8"
- },
-
- body: JSON.stringify({
- "name": inputName, //이름
- "userName": inputId, //로그인할 때 쓰는 아이디
- "password": inputPassword,
- "nickname" : inputNickname, //닉네임
- "employmentPath": inputCertificate,
- "isMentor" : false,
- "gender" : inputGender, // 남자 -> true , 여자 -> false
- "age" : inputAge,
- }),
- })
-
- const data = await response.json();
- console.log(data);
-
- if (response.status === 200) {
- alert('회원가입에 성공하였습니다.');
- } else if(response.status === 400){
- alert('입력값이 올바르지 않습니다.')
- }
- else if(response.status === 409){
- alert('이미 존재하는 회원입니다.')
- }
- else {
- alert('회원가입 실패');
- }
- } catch (error) {
- alert('에러 발생');
- }
-
- navigate('/Signin');
- };
-
- return (
- <>
-
-
-
-
-
이름
-
setInputName(e.target.value)}
- />
-
{inputErrors.nameError}
-
-
-
-
-
setShowGenderDropdown(!showGenderDropdown)}
- >
- {inputGender || "성별"}
- {!inputGender &&

}
-
- {showGenderDropdown && (
-
- {genderOptions.map(gender => (
-
handleGenderChange(gender)}>
- {gender}
-
- ))}
-
- )}
-
-
-
-
-
setShowAgeDropdown(!showAgeDropdown)}
- >
- {inputAge || "연령대"}
- {!inputAge &&

}
-
- {showAgeDropdown && (
-
- {ageOptions.map(age => (
-
handleAgeChange(age)}>
- {age}
-
- ))}
-
- )}
-
-
-
*(필수)
-
-
-
아이디
-
- setInputId(e.target.value)}
- />
-
-
-
{inputErrors.idError}
-
-
-
-
비밀번호
-
setInputPassword(e.target.value)}
- />
-
{inputErrors.passwordError}
-
-
-
setInputPasswordConfirmed(e.target.value)}
- />
-
{inputErrors.passwordConfirmedError}
-
-
-
닉네임
-
- setInputNickName(e.target.value)}
- />
-
-
-
-
{inputErrors.nicknameError}
-
-
-
증명서
-
- setInputCertificate(e.target.value)}
- />
-
-
-
{inputErrors.certificateError}
-
-
-
- >
- );
-}
diff --git a/src/Signin.css b/src/Signin.css
deleted file mode 100644
index c639560..0000000
--- a/src/Signin.css
+++ /dev/null
@@ -1,84 +0,0 @@
-.header {
- display: flex;
- width: 100vw;
- height: 10vh;
- justify-content: center;
- font-weight: bold;
- align-items: center;
- }
-
- .img_wrap {
- margin: 2rem;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .login_logo {
- width: 20vw;
- height: 30vh;
- }
-
- .login_wrap {
- align-items: center;
- display: flex;
- flex-direction: column;
- margin: 1.5rem;
- }
-
- .login_input {
- display: block;
- width: 33vw;
- height: 5vh;
- color: gray;
- border-radius: 5px;
- border-color: lightgray;
- border-width: 0.5px;
- }
-
-
- .login_btn {
- height: 6vh;
- width: 33vw;
- background-color: #F0EFEF;
- color: rgba(0, 0, 0, 0.40);
- font-family: "Noto Sans";
- font-weight: 500;
- border-radius: 5px;
- margin-top: 5rem;
- border-width: 0;
- }
-
- .login_support {
- display: flex;
- justify-content: space-between;
- width: 33vw;
- margin-bottom: 1rem;
- margin-top: 1rem;
- opacity: 0.5;
- font-size: 1.5rem;
- }
-.promote{
- opacity: 0.5;
- font-size: 1.5rem;
- margin-top: 10rem;
-}
- .login_hr {
- display: block;
- width: 33vw;
- color: rgba(0, 0, 0, 0.30);
- margin: 1rem 0;
- opacity: 0.5;
- }
-
- .signup_btn {
- height: 6vh;
- width: 33vw;
- background: rgba(0, 0, 0, 0.60);
- color:#fff;
- font-family: "Noto Sans";
- font-weight: 500;
- border-radius: 5px;
- border-width: 0;
- }
-
\ No newline at end of file
diff --git a/src/recoil.js b/src/recoil.js
index 67d5176..9330ec8 100644
--- a/src/recoil.js
+++ b/src/recoil.js
@@ -1,209 +1,157 @@
import { atom } from 'recoil'
import testImg from './assets/testImg.png'// dummy img
-import { recoilPersist } from 'recoil-persist'
+//더미 데이터 (추후 fetching한 json 데이터 매핑 필요)
+export const mentorListState = atom({
+ key: 'mentorListState',
+ default:[]
+})
-const { persistAtom } = recoilPersist(); //localStorage에 저장되며, key 이름은 'recoil-persist'로 저장됨
+export const crntMentorState = atom({
+ key: 'crntMentorState',
+ default: {}
+})
-//더미 데이터 (추후 fetching한 json 데이터 매핑 필요)
-export const mentorInfoState = atom({
- key: 'mentorInfoState',
- default:[
+export const mentiListState = atom({
+ key: 'mentiListState',
+ default: []
+})
+
+export const crntMentiState = atom({
+ key: 'crntMentiState',
+ default: {}
+ })
+
+export const selectedMainNavbarState = atom({
+ key:'selectedMainNavBarState',
+ default:''
+})
+
+export const selectedNavbarState = atom({
+ key:'selectedNavBarState',
+ default:'소개'
+})
+
+export const selectedMentiNavbarState = atom({
+ key:'selectedMentiNavbarState',
+ default:'작성 글'
+})
+
+export const postState = atom({
+ key: 'postState',
+ default: [
+ {
+ "postId": 1,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "nickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:10.199599"
+ },
+ {
+ "postId": 2,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "nickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:14.114309"
+ },
{
- img: testImg,
- name: '홍길동',
- profilePic: testImg,
- score: 5,
- count: 10,
- content: 'dummydummydummydummydummydummy',
- tag1: 'oo전문',
- tag2: '키워드',
- tag3: '앤티크',
+ "postId": 3,
+
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "mentorNickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:19.207289"
},
{
- img: testImg,
- name: '홍길동',
- profilePic: testImg,
- score: 5,
- count: 10,
- content: 'dummydummydummydummydummydummy',
- tag1: 'oo전문',
- tag2: '키워드',
- tag3: '앤티크',
+ "postId": 4,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "mentorNickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:22.670628"
},
{
- img: testImg,
- name: '홍길동',
- profilePic: testImg,
- score: 5,
- count: 10,
- content: 'dummydummydummydummydummydummy',
- tag1: 'oo전문',
- tag2: '키워드',
- tag3: '앤티크',
+ "postId": 5,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "nickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:27.979651"
},
{
- img: testImg,
- name: '홍길동',
- profilePic: testImg,
- score: 5,
- count: 10,
- content: 'dummydummydummydummydummydummy',
- tag1: 'oo전문',
- tag2: '키워드',
- tag3: '앤티크',
+ "postId": 6,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "nickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:31.325159"
},
{
- img: testImg,
- name: '홍길동',
- profilePic: testImg,
- score: 5,
- count: 10,
- content: 'dummydummydummydummydummydummy',
- tag1: 'oo전문',
- tag2: '키워드',
- tag3: '앤티크',
+ "postId": 7,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "nickname",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:44:37.524719"
},
{
- img: testImg,
- name: '홍길동',
- profilePic: testImg,
- score: 5,
- count: 10,
- content: 'dummydummydummydummydummydummy',
- tag1: 'oo전문',
- tag2: '키워드',
- tag3: '앤티크',
- }
+ "postId": 8,
+ "postTitle": "제목",
+ "postContent": "내용",
+ "postImgPath": "이미지",
+ "nickname": "MenteeNickname2",
+ "postAuthorProfImg": "string",
+ "updatedAt": "2024-05-25T16:45:10.341813"
+ },
]
})
-export const crntMentorIdxState = atom({
- key: 'crntMentorIdxState',
- default: -1
-})
-
-export const selectedNavbarState = atom({
- key:'selectedNavBarState',
- default:''
-})
-
-export const inputNickNameState = atom({
- key:'inputNickName',
- default:''
-})
-export const inputIdState = atom({
- key: 'inputIdState',
- default: '',
+export const crntPostState = atom({
+ key: 'crntPostState',
+ default: {}
})
-export const inputPasswordState = atom({
- key: 'inputPasswordState',
- default: '',
+export const postTitleState = atom({
+ key: 'postTitleState',
+ default: ''
})
-export const inputPasswordConfirmedState = atom({
- key: 'inputPasswordConfirmedState',
- default: '',
+export const postContentState = atom({
+ key: 'postContentState',
+ default: ''
})
-export const inputNameState = atom({
- key:'inputNameState',
- default:'',
-})
-export const inputGenderState = atom({
- key:'inputGenderState',
- default:'',
-})
-export const inputAgeState = atom({
- key:'inputAge',
- default:'',
-})
-export const inputCertificateState = atom({
- key:'inputCertificate',
- default: '',
+export const crntClickedCategoriesState = atom({
+ key: 'crntClickedCategoriesState',
+ default:[]
})
-export const mentorIntroState = atom({
- key: 'mentorIntro',
- default:[
- {
- title: '나는 누구인가요?',
- content: '영화보는걸 좋아하는 5년차 작곡가입니다 뭐 사용자의 자유에 의해 내용은 더 길어질수도있습니다 제가 더이상 쓸만한 내용이 없어서 지금 이렇게 쓰고있는데 최대 세줄정도가 적당하겠네요',
- },
- {
- title:'시간은 언제가 가능한가요?',
- content: '연락가능 시간 : 월,화: 오후 6시이후/그외: 언제나 가능',
- },
- {
- title: '나의 강점은 무엇이라고 생각하나요?',
- content: '시중에 나온 프로젝터는 다써봤다고 생각합니다 예상 예산과 방환경에 맞춰서 적절한 홈시어터환경을 조성해드리는데 강점이있다고 생각합니다 음악일을 하는만큼 사운드역시 충분한 지식을 갖고있으며 최적의 사운드 환경도 추가로 조성해드릴수있습니다',
- }
- ],
- effects_UNSTABLE: [persistAtom],
+export const crntClickedCategoryState = atom({
+ key: 'crntClickedCategoryState',
+ default:'조회순'
})
-export const mentorRoadmapState = atom({
- key:'mentorRoadmap',
- default:[{
- title:'로드맵 전',
- content: '필요한 정보를 수집합니다. 예를 들면 평수, 현재 방구조, 희망 스타일, 희망 예산 정도 멘토링 시간을 조정합니다.',
- },
- {
- title:'로드맵 시작',
- content: '버려야 할 가구와 남겨둘 가구를 선정합니다.
3D 인테리어 프로그램을 통한 가구배치를 해보고 예상기간 등 세부사항을 정합니다.
최종 디자인을 선정합니다.
홈스타일링 중 질문사항을 답변하는 시간을 가집니다',
- },
- {
- title:'로드맵 후',
- content: '변경된 최종 방 사진을 가지고 최종 피드백을 주고 받으며 멘토링은 끝이납니다. 정보를 수집합니다. 예를 들면 평수, 현재 방구조, 희망 스타일, 희망 예산 정도 멘토링 시간을 조정합니다.',
- }
- ]
+export const isReviewClickedState = atom({
+ key: 'isReviewClickedState',
+ default: false
})
-export const mentorQAstate = atom({
- key: 'mentorQA',
- default:[
- {
- question: '질문 내용을 입력해주세요.',
- answer: '질문 답변을 입력해주세요답변도 최대 세줄이좋을 것 같네용',
- },
- {
- question: '질문 내용을 입력해주세요.',
- answer: '질문 답변을 입력해주세요답변도 최대 세줄이좋을 것 같네용',
- },
- {
- question: '질문 내용을 입력해주세요.',
- answer: '질문 답변을 입력해주세요답변도 최대 세줄이좋을 것 같네용',
- },
- ]
+export const isReviewCreateClickedState = atom({
+ key: 'isReviewCreateClickedState',
+ default: false
})
-export const ReviewInfoState = atom({
- key:'reviewInfoState',
- default:[
- {
- before: testImg,
- after: testImg,
- title: '우리집에 생겨버린 영화관!',
- rating: 0,
- date: '2024.00.00',
- comment:'멘토님 덕분에 완전 쉽게 홈시어터 구축했습니당 최고에요. 특히 홈시어터 구축할때 예산때문에 망설이는 경우가 많은데 예산에 맞는 프로젝 최대 세줄까지만나오고 나머지는 더보기 페이지!'
- },
- {
- before: testImg,
- after: testImg,
- title: '우리집에 생겨버린 영화관!',
- rating: 1,
- date: '2024.00.00',
- comment:'멘토님 덕분에 완전 쉽게 홈시어터 구축했습니당 최고에요. 특히 홈시어터 구축할때 예산때문에 망설이는 경우가 많은데 예산에 맞는 프로젝 최대 세줄까지만나오고 나머지는 더보기 페이지!'
- },
- {
- before: testImg,
- after: testImg,
- title: '우리집에 생겨버린 영화관!',
- rating: 2,
- date: '2024.00.00',
- comment:'멘토님 덕분에 완전 쉽게 홈시어터 구축했습니당 최고에요. 특히 홈시어터 구축할때 예산때문에 망설이는 경우가 많은데 예산에 맞는 프로젝 최대 세줄까지만나오고 나머지는 더보기 페이지!'
- }
- ]
+export const isContactClickedState = atom({
+ key: 'isContactClickedState',
+ default: false
})
\ No newline at end of file