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 && down arrow} -
- {showGenderDropdown && ( -
- {genderOptions.map(gender => ( -
handleGenderChange(gender)}> - {gender} -
- ))} -
- )} -
-
-
-
-
setShowAgeDropdown(!showAgeDropdown)} - > - {inputAge || "연령대"} - {!inputAge && down arrow} -
- {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 && down arrow} -
- {showGenderDropdown && ( -
- {genderOptions.map(gender => ( -
handleGenderChange(gender)}> - {gender} -
- ))} -
- )} -
-
-
-
-
setShowAgeDropdown(!showAgeDropdown)} - > - {inputAge || "연령대"} - {!inputAge && down arrow} -
- {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