Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design: 회원가입/로그인 페이지 UI #91

Merged
merged 45 commits into from
Jan 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
9247419
Merge pull request #3 from readyvery/test
marinesnow34 Oct 31, 2023
e63f76c
Merge pull request #27 from readyvery/test
marinesnow34 Nov 25, 2023
f09c294
Config: main workflow 수정
marinesnow34 Nov 25, 2023
c4523ff
Config: s3 업로드 수정
marinesnow34 Nov 25, 2023
53134ca
Merge pull request #49 from readyvery/test
marinesnow34 Dec 1, 2023
8012101
Merge pull request #60 from readyvery/test
marinesnow34 Dec 3, 2023
6f2340d
Merge pull request #62 from readyvery/test
marinesnow34 Dec 4, 2023
6c0f51a
Merge pull request #64 from readyvery/test
marinesnow34 Dec 4, 2023
7686034
Merge pull request #67 from readyvery/test
marinesnow34 Dec 4, 2023
cd500c3
Merge pull request #69 from readyvery/test
marinesnow34 Dec 4, 2023
1c8c8f9
Merge pull request #73 from readyvery/test
marinesnow34 Dec 5, 2023
7fb1345
Merge pull request #75 from readyvery/test
hhbb0081 Dec 6, 2023
76d3079
Merge pull request #77 from readyvery/test
hhbb0081 Dec 6, 2023
349c6a7
Merge pull request #79 from readyvery/test
marinesnow34 Dec 7, 2023
78dcce8
Merge pull request #81 from readyvery/test
hhbb0081 Dec 7, 2023
1d3ba64
Merge pull request #84 from readyvery/test
hhbb0081 Dec 9, 2023
d932961
Dose: 우편번호 라이브러리 추가
KKangHHee Jan 16, 2024
23964ab
Design: 빨강 그레이 체크 추가 X아이콘 추가
KKangHHee Jan 16, 2024
4b0de86
Design: 전화번호 입력 UI 분리
KKangHHee Jan 16, 2024
52eefa9
전화번호 인증 번호 입력 UI분리
KKangHHee Jan 16, 2024
4969a21
Design: 회원가입 및 로그인 Container UI
KKangHHee Jan 16, 2024
e5f248d
Design: 입력 제한 경고 문자 디자인 분리
KKangHHee Jan 16, 2024
59b1281
Design: 빨강 입력 버튼 UI 분리
KKangHHee Jan 16, 2024
1cbd2b5
Design: 회원 가입 단계 표기 UI 분리
KKangHHee Jan 16, 2024
2384304
Design: 회원가입 아이디 입력 UI 분리
KKangHHee Jan 16, 2024
6900e28
Design: 회원가입 대표자명 입력 UI 분리
KKangHHee Jan 16, 2024
b1bfcc2
Design: 회원가입 번호 인증 UI 분리
KKangHHee Jan 16, 2024
a67381c
Design: 번호 인증 입력 UI 분리
KKangHHee Jan 16, 2024
fb64ef3
Design: 회원가입 비밀 번호 입력 UI 분리
KKangHHee Jan 16, 2024
f7d0c3e
Design: 회원가입 매장 주소 입력 UI 분리
KKangHHee Jan 16, 2024
d7d242f
Design: 아이디 찾기 페이지 UI
KKangHHee Jan 16, 2024
be8140d
Design: 아이디 찾기 실패 페이지 UI
KKangHHee Jan 16, 2024
57bbd50
Design: 아이디 찾기 아이디 송출 UI
KKangHHee Jan 16, 2024
7a9ea42
Design: 비밀번호 찾기 아이디 조회 UI
KKangHHee Jan 16, 2024
77f83c8
Design: 비밀번호 찾기 번호 조회 및 비밀번호 변경
KKangHHee Jan 16, 2024
3c7bc15
Design: 로그인 페이지 UI
KKangHHee Jan 16, 2024
eda4fa0
Design: 회원 가입 페이지 UI
KKangHHee Jan 16, 2024
c16b8dd
Design: 회원 가입 페이지 입점 관리 UI 분리
KKangHHee Jan 16, 2024
339f8a6
Design: 회원 가입 페이지 반려 UI 분리
KKangHHee Jan 16, 2024
c183b5a
Design: 회원 가입 페이지 번호 인증 UI 분리
KKangHHee Jan 16, 2024
d0288cb
Design: 회원 가입 및 유저 가게 정보 등록 UI
KKangHHee Jan 16, 2024
ea117cb
Design: 회원 가입 이용 약관 동의서 UI
KKangHHee Jan 16, 2024
d6a2cfe
Design: 입전 전 페이지 안내문 UI
KKangHHee Jan 16, 2024
2e36e22
Dose: App경로 변경
KKangHHee Jan 16, 2024
8974206
Fix: start and end csstext change flex-start and flex-end
KKangHHee Jan 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 15 additions & 19 deletions .github/workflows/main_merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,32 +18,28 @@ jobs:

- name: Set .env from secrets
run: |
echo "PORT=${{ secrets.MAIN_PORT }}" > .env
echo "WDS_SOCKET_PORT=0" >> .env
echo "NODE_PATH=src/" >> .env
echo "REACT_APP_API_ROOT=${{ secrets.MAIN_REACT_APP_API_ROOT }}" >> .env
echo "REACT_APP_HOME_URL=${{ secrets.MAIN_REACT_APP_HOME_URL }}" >> .env
echo "${{ secrets.MAIN_ENV }}" > .env

- name: cat env file
run: cat .env

- name: Generate build # React Build
run: npm run build

- name: file copy
uses: actions/upload-artifact@v3
with:
name: build
path: build
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: file download
uses: actions/download-artifact@v3
with:
name: build
path: build
# - name: file copy
# uses: actions/upload-artifact@v3
# with:
# name: build
# path: build
# deploy:
# needs: build
# runs-on: ubuntu-latest
# steps:
# - name: file download
# uses: actions/download-artifact@v3
# with:
# name: build
# path: build
- name: Upload to S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.S3_MAIN_ACCESS_KEY_ID }}
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"react-apexcharts": "^1.4.1",
"react-bootstrap": "^2.9.1",
"react-cookie": "^6.1.1",
"react-daum-postcode": "^3.1.3",
"react-dom": "^18.2.0",
"react-icons": "^4.11.0",
"react-modal": "^3.16.1",
Expand Down
42 changes: 36 additions & 6 deletions src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,32 @@ import SalesPage from "../src/pages/Sales/Sales";
import "./App.css";
import Auth from "./hoc/auth.jsx";
import useInterval from "./hooks/useInterval.jsx";
import HomePage from "./pages/Home/Home";
import MainPage from "./pages/Main/MainPage.jsx";
// import HomePage from "./pages/Home/Home"; 카카오 로그인
// import MainPage from "./pages/Main/MainPage.jsx";
// 추가 페이지
import SignupPage from "./pages/Signup/SignupPage.jsx";
import LoginPage from "./pages/Login/LoginPage.jsx";
import FindIdPage from "./pages/Find/FindIdPage/FindIdPage.jsx";//아이디 찾기-전화번호 인증
import UserFindIdPage from "./pages/Find/FindIdPage/UserFindIdPage/UserFindIdPage.jsx";//아이디 찾기 결과-아이디 반환
import NoneFindIdPage from "./pages/Find/FindIdPage/NoneFindIdPage/NoneFindIdPage.jsx";//아이디 찾기 결과-회원 X
import FindPasswordPage from "./pages/Find/FindPasswordPage/FindPasswordPage.jsx";//비밀번호 찾기 - 아이디 조회
import ChangePasswordPage from "./pages/Find/FindPasswordPage/ChangePasswordPage/ChangePasswordPage.jsx";//비밀번호 변경 - 전화번호 인증
import ChangeNewPasswordPage from "./pages/Find/FindPasswordPage/ChangePasswordPage/ChangeNewPasswordPage/ChangeNewPasswordPage.jsx";//비밀번호 변경 - 새 비밀번호 인증
import PhoneAuthPage from "./pages/Signup/PhoneAuth/PhoneAuthPage.jsx";
import VerificationPage from "./pages/Signup/Verification/VerificationPage.jsx";
import TermsPage from "./pages/Signup/Terms/TermsPage.jsx";
import JudgeResultsBeforePage from "./pages/Signup/JudgeResults/JudgeResultsBeforePage.jsx";
import JudgeResultsRejectPage from "./pages/Signup/JudgeResults/JudgeResultsReject/JudgeResultsRejectPage.jsx";
import ApplicationForm from "./components/signup/ApplicationForm/ApplicationForm.jsx";

function App() {
const [cookies, , removeCookies] = useCookies();
const navigate = useNavigate();
const apiUrl = process.env.REACT_APP_API_ROOT;
let location = useLocation();

const NewLoginPage = Auth(MainPage, false);
const NewHomePage = Auth(HomePage, true);
// const NewLoginPage = Auth(MainPage, false);
// const NewHomePage = Auth(HomePage, true); 카카오 로그인
const NewInventoryPage = Auth(InventoryPage, true);
const NewSalesPage = Auth(SalesPage, true);
const NewMyPage = Auth(Mypage, true);
Expand Down Expand Up @@ -66,7 +81,7 @@ function App() {
<div>
<div className="App">
<Routes>
<Route path="/" element={<NewLoginPage />} />
<Route path="/" element={<LoginPage />} />
<Route path="/*" element={<Navigate to="/"></Navigate>}></Route>
</Routes>
</div>
Expand All @@ -82,10 +97,25 @@ function App() {

<Suspense fallback={<div>Loading...</div>}>
<Routes>
<Route path="/home" element={<NewHomePage />} />
<Route path="/" element={<LoginPage />} />
<Route path="/Inventory" element={<NewInventoryPage />} />
<Route path="/Sales" element={<NewSalesPage />} />
<Route path="/Mypage" element={<NewMyPage />} />
<Route path="/signup" element={<SignupPage />} />
{/* 추가 */}
<Route path="/signup/auth/phone" element={<PhoneAuthPage />} />
<Route path="/signup/auth/verification" element={<VerificationPage />} />
<Route path="/signup/auth/terms" element={<TermsPage />} />
<Route path="/signup/auth/results" element={<ApplicationForm />} />
<Route path="/signup/auth/results/before" element={<JudgeResultsBeforePage />} />
<Route path="/signup/auth/results/reject" element={<JudgeResultsRejectPage />} />
<Route path="/login" element={<LoginPage />} />
<Route path="/find/id" element={<FindIdPage />} />
<Route path="/find/id/serch" element={<UserFindIdPage />} />
<Route path="/find/id/none" element={<NoneFindIdPage />} />
<Route path="/find/password" element={<FindPasswordPage />} />
<Route path="/find/password/change" element={<ChangePasswordPage />} />
<Route path="/find/password/change/user" element={<ChangeNewPasswordPage />} />
<Route path="/*" element={<Navigate to="/"></Navigate>}></Route>
</Routes>
</Suspense>
Expand Down
3 changes: 3 additions & 0 deletions src/assets/icon_check_black.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/assets/icons/icon_check_black.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/assets/icons/icon_chk.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/assets/icons/icon_x.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
.loginpage-find-form{
height: 18.6rem;
min-width: 15rem;
}
.loginpage-find-form-input-div{
display: flex;
align-items: center;
}

.loginpage-findId-input{
border-radius: 0.25rem;
border: 0.05rem solid rgba(131, 131, 131, 1);
font-size: 0.8rem;
min-width: 8.25rem;
height: 1rem;
padding: 0.8rem 1rem 0.7rem 1rem;
margin-right: 0.25rem;
font-family: "Pretendard";
}

.loginpage-findId-form-submit{
border-radius: 0.25rem;
border: 0.05rem solid rgba(131, 131, 131, 1);
/* padding: 0.8rem 1.4rem 0.7rem 1.4rem; */
height: 2.5rem;
min-width: 3.7rem;
align-items: center;
justify-content: row;
background-color: white;
font-family: "Pretendard";
font-size: 0.8rem;
font-weight: 500;
}

.buttonClicked{
background-color: #FFEAEF;
/* padding: 0.8rem 1.4rem 0.7rem 1.2rem; */
}

.loginpage-form-submit-button-position{
position: absolute;
transform: translateX(0%);
bottom: 4.95rem;
}

/* w:768, h:1024일 때 */
@media screen and (min-width: 481px) and (max-width: 768px) {
.loginpage-findId-input {
width: 10.5rem;
}
.loginpage-findId-form-submit{
/* width: 5.25rem; */
width: 4.25rem;
}
}

/* w:1024, h:1024일 때 */
@media screen and (min-width: 769px) {
.loginpage-findId-input {
width: 10.5rem;
}
.loginpage-findId-form-submit{
width: 4.25rem;
}
}

/* w:480, h:800일 때 */
@media screen and (max-width: 480px) {
.loginpage-findId-form-submit{
max-width: 4.4rem;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import React, { useState } from "react";
import RedButton from "../../redButton/RedButton";
import "./CertificationInput.css";
import CertificationNumInput from "../CertificationNumInput/CertificationNumInput";
// import { Link } from "react-router-dom";

function CertificationInput({ id, type, placeholder, requiredname, text, buttonText }) {
const [chkButton, setChkButton] = useState(false); // 인증버튼 클릭 여부

const handleButtonClick = () => {
setChkButton(true);
};

const renderCertificationNumInput = () => {
if (type === "tel" && chkButton) {
return <CertificationNumInput />;
}
return null;
};

return (
<>
<div className="loginpage-find-form-input-div">
<input
id={id}
type={type}
placeholder={placeholder}
requiredname={requiredname}
className="loginpage-findId-input"
/>
<button
type="submit"
onClick={handleButtonClick}
className={`loginpage-findId-form-submit ${chkButton ? "buttonClicked" : ""}`}
>
{text === "인증" ? (chkButton ? "재인증" : text) : "조회"}
</button>
</div>

<form>
{renderCertificationNumInput()}
<div className="loginpage-form-submit-button-position">
<RedButton type="submit" onSubmit={(e) => e.preventDefault()}>
{buttonText}
</RedButton>
</div>
</form>
</>
);
}

export default CertificationInput;
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
.loginpage-user-num-input-style{
position: "relative"
}

.loginpage-user-auth-num{
border-radius: 0.25rem;
border: 0.05rem solid rgba(131, 131, 131, 1);
font-size: 0.8rem;
margin: 0.4375rem 0;
width: 15rem;/*17rem-2rem*/
height: 1rem; /*2.5rem-1.5rem*/
padding: 0.7rem 0.9rem 0.7rem 1rem;
font-family: "Pretendard";
}

.timer{
position: absolute;
top: 50%;
right: 5.1rem;
transform: translateY(-50%);
font-family: "Pretendard";
font-size: 0.8rem;
color: #838383;
}

/* w:768, h:1024일 때 */
@media screen and (min-width: 481px) and (max-width: 768px) {
.loginpage-user-auth-num {
width: 15rem;
}
}

/* w:1024, h:1024일 때 */
@media screen and (min-width: 769px) {
.loginpage-user-auth-num {
width: 15rem;
}
}

/* w:480, h:800일 때 */
@media screen and (max-width: 480px) {
.loginpage-user-auth-num {
max-width: 13rem;
}
.timer{
right: 3.1rem;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import React, { useState, useEffect } from "react";
import LoginChkAlrm from "../../LoginChkAlrm/LoginChkAlrm";
import "./CertificationNumInput.css";

const AUTH_CODE = "1234";//서버에서 받아오는 값
const TIMER_DURATION = 600;//타이머 시간 설정(600초)

const Timer = ({ minutes, seconds }) => (
<div className="timer">
{minutes}:{seconds < 10 ? `0${seconds}` : seconds}
</div>
);


function CertificationNumInput(){
const [chkNum, setChkNum] = useState("");
const [timer, setTimer] = useState(TIMER_DURATION);
const [isAuth, setIsAuth] = useState();

useEffect(() => {
const interval = setInterval(() => {
setTimer((prevTimer) => prevTimer - 1);
}, 1000);

return () => clearInterval(interval);
}, [setTimer]);

const handleInputText = (e) => {
const newChkNum = e.target.value;
setChkNum(newChkNum);
equlChknum(newChkNum, AUTH_CODE);
};

const equlChknum = (inputNum, serverNum) => {
if (serverNum === inputNum) {
setIsAuth(true);
} else if (serverNum !== inputNum) {
setIsAuth(false);
} else {
setIsAuth(null);
}
};


const renderMessage = () => {
if (timer <= 0) {
return <LoginChkAlrm icon={"X"} paddingSize={"0.45rem"}>인증 시간이 초과되었습니다.</LoginChkAlrm>;
} else if (timer > 0 && !isAuth) {
return <LoginChkAlrm icon={"X"} paddingSize={"0.45rem"}>인증번호가 일치하지 않습니다.</LoginChkAlrm>;
} else if (timer > 0 && isAuth) {
return <LoginChkAlrm icon={""} paddingSize={"0.45rem"}>인증이 완료되었습니다.</LoginChkAlrm>;
}
};

return (
<>
<div className="loginpage-user-num-input-style">
<div>
<input
id="username"
type="text"
placeholder="인증번호"
required
name="username"
value={chkNum}
onChange={handleInputText}
className="loginpage-user-auth-num"
/>
{timer > 0 && <Timer minutes={Math.floor(timer / 60)} seconds={timer % 60} />}
</div>
</div>

<div>{renderMessage()}</div>
</>
);
};

export default CertificationNumInput;
Loading