Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
264f1bf
sprint mission1
LeeTaegyung Mar 31, 2025
5f955f8
refactor(mentor): 이미지 alt 내용 추가
LeeTaegyung Apr 1, 2025
e694c31
refactor(mentor): aria-label 속성 추가
LeeTaegyung Apr 1, 2025
5b86550
refactor(mentor): visual_sec 클래스명 main_visual_sec 클래스명으로 수정
LeeTaegyung Apr 1, 2025
5b97985
refactor(mentor): css 파일, reset.css와 common.css로 분리
LeeTaegyung Apr 1, 2025
ba727b2
refactor(mentor): 기본 요청 사항중 헤더의 양쪽 여백 200px 부분 수정 반영
LeeTaegyung Apr 1, 2025
5b034ad
refactor(mentor): css 변수 적용 및 변수 파일 분리
LeeTaegyung Apr 1, 2025
f14a68d
refactor(mentor): header, main, footer 태그의 class를 id로 수정
LeeTaegyung Apr 1, 2025
2c2c551
Merge pull request #2 from LeeTaegyung/Basic-이태경-sprint1
addiescode-sj Apr 3, 2025
82b3daf
feat(header): 스크롤을 해도 상단 네비게이션바가 최상단에 고정됨
LeeTaegyung Apr 8, 2025
9f9206b
style: color css 변수 등록
LeeTaegyung Apr 8, 2025
0f182f1
style: main css 분리
LeeTaegyung Apr 8, 2025
e8b8868
style: 공통 여백 변수 분리 및 main.css 수정
LeeTaegyung Apr 8, 2025
1702a3c
feat: 로그인 페이지 추가 완료
LeeTaegyung Apr 8, 2025
897ddae
feat: 회원가입 페이지 추가 완료
LeeTaegyung Apr 8, 2025
b7afd87
refactor(mentor): BEM 방법론 캐멀케이스에서 케밥케이스로 변경
LeeTaegyung Apr 14, 2025
a64c63b
refactor(mentor): autocomplate 속성 추가
LeeTaegyung Apr 14, 2025
7e6e100
refactor(mentor): aria 레이블 추가
LeeTaegyung Apr 14, 2025
a445ac7
refactor(mentor): 이미지 최적화 적용
LeeTaegyung Apr 15, 2025
8de8d2b
refactor(mentor): style 블록간의 여백추가
LeeTaegyung Apr 15, 2025
92d4853
Merge pull request #56 from LeeTaegyung/Basic-이태경-sprint2
addiescode-sj Apr 16, 2025
be1e40e
style(header): header padding 변수 등록
LeeTaegyung Apr 17, 2025
bba7c38
chore(header): 로고 이미지 반응형에 따라 picture 태그로 수정
LeeTaegyung Apr 17, 2025
3ae3659
style: 랜딩페이지 반응형 적용
LeeTaegyung Apr 17, 2025
bd2054a
style: 로그인, 회원가입 페이지 반응형 적용
LeeTaegyung Apr 17, 2025
831e6ae
feat: SNS 공유 meta 태그 추가
LeeTaegyung Apr 17, 2025
c89d9f3
refactor(mentor): 랜딩 페이지 picture 태그 img srcset 속성 사용으로 수정
LeeTaegyung Apr 22, 2025
1697909
refactor(mentor): variable.css space 변수 이름 변경
LeeTaegyung Apr 22, 2025
3bb9472
refactor(mentor): nth-of-type 가상 선택자에서 클래스명으로 수정
LeeTaegyung Apr 22, 2025
038478b
style: validation 안내 메시지 스타일 추가
LeeTaegyung Apr 24, 2025
e240602
Merge pull request #94 from LeeTaegyung/Basic-이태경-sprint3
addiescode-sj Apr 25, 2025
427e5af
feat(member): 로그인 및 회원가입 페이지 validation 추가
LeeTaegyung Apr 25, 2025
7855ca4
feat(member): 비밀번호 토글 기능 추가
LeeTaegyung Apr 25, 2025
a1cf6fd
chore: 로그인/회원가입 버튼 클릭시 링크 이동 부분을 action 속성에서 dataset으로 수정
LeeTaegyung Apr 25, 2025
635075f
refactor(mentor): isPass 네이밍 isValid 으로 수정
LeeTaegyung Apr 29, 2025
271cf29
refactor(mentor): noValue 네이밍 isEmpty로 수정
LeeTaegyung Apr 29, 2025
0888dc8
refactor(mentor): 비밀번호 토글 기능 remove/add 메소드 toggle 메소드로 수정
LeeTaegyung Apr 29, 2025
f44d420
refactor(mentor): checkValidation 함수 로직 분리
LeeTaegyung Apr 29, 2025
305d791
Merge pull request #123 from LeeTaegyung/Basic-이태경-sprint4
addiescode-sj May 7, 2025
db43963
Merge branch 'Basic-이태경' of https://github.com/LeeTaegyung/16-Sprint-…
LeeTaegyung Jul 8, 2025
40d3594
Merge branch 'React-이태경' of https://github.com/codeit-bootcamp-fronte…
LeeTaegyung Jul 8, 2025
606158d
Merge branch 'React-이태경' of https://github.com/LeeTaegyung/16-Sprint-…
LeeTaegyung Aug 4, 2025
c6d93bf
Revert "Merge branch 'Basic-이태경' of https://github.com/LeeTaegyung/16…
LeeTaegyung Aug 6, 2025
656f8f2
refactor(mentor): type -> interface로 타입 선언 키워드 수정
LeeTaegyung Aug 4, 2025
a590c4e
refactor(mentor): css변수에서 theme로 수정
LeeTaegyung Aug 4, 2025
b021426
refactor(mentor): button props variant로 수정
LeeTaegyung Aug 4, 2025
3670b38
refactor(mentor): type -> interface 키워드로 수정
LeeTaegyung Aug 4, 2025
40b8986
refactor(mentor): api 유틸 함수 타입 적용
LeeTaegyung Aug 4, 2025
4e4dac8
refactor: 메인페이지 타입스크립트 파일로 변경
LeeTaegyung Aug 5, 2025
650ae17
refactor: 로그인 페이지 ts 마이그레이션
LeeTaegyung Aug 5, 2025
8076d76
refactor: 회원가입 페이지 ts 마이그레이션
LeeTaegyung Aug 5, 2025
30fa5f1
chore: getAuthValidClassName 매개변수 타입 수정
LeeTaegyung Aug 5, 2025
a5e7e94
refactor: index ts 마이그레이션
LeeTaegyung Aug 5, 2025
38243a2
refactor: zustand 사용한 toastStore ts 마이그레이션
LeeTaegyung Aug 5, 2025
4ba7e9f
refactor: 회원가입/로그인 페이지의 유효성 검사 코드를 react-hook-form 적용하여 코드 수정
LeeTaegyung Aug 6, 2025
51b3c10
chore: Input 컴포넌트 수정으로 인한 onChange props 수정
LeeTaegyung Aug 6, 2025
72fdfac
fix: emotion import 에러 수정
LeeTaegyung Aug 6, 2025
5c2d72e
refactor(mentor): interface 선언시 사용한 Omit 제거
LeeTaegyung Aug 6, 2025
286bbee
refactor(mentor): moduleCSS -> emotion 통일되도록 수정
LeeTaegyung Aug 6, 2025
60bb560
refactor(mentor): PasswordInput 컴포넌트 수정
LeeTaegyung Aug 6, 2025
91f5869
refactor(mentor): interface 선언시 사용한 Omit 제거
LeeTaegyung Aug 6, 2025
7401167
refactor(mentor): theme 객체 형태로 적용하게 통일
LeeTaegyung Aug 6, 2025
e277b12
refactor(mentor): 비밀번호 확인 유효성 검사시 불필요한 리렌더링 발생하지 않도록 useEffect 제거후 on…
LeeTaegyung Aug 7, 2025
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
16 changes: 16 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.62.0",
"react-router-dom": "^6.30.0",
"react-scripts": "5.0.1",
"sass": "^1.89.0",
Expand Down
11 changes: 7 additions & 4 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import { createBrowserRouter, RouterProvider } from "react-router-dom";
import routes from "./routes";
import "./styles/style.scss";
import ToastContainer from "./components/Toast/ToastContainer";
import { Global } from "@emotion/react";
import { Global, ThemeProvider } from "@emotion/react";
import { globalStyle } from "./styles/globalStyle";
import { theme } from "@styles/theme";

function App() {
const router = createBrowserRouter(routes, {
Expand All @@ -13,9 +14,11 @@ function App() {
});
return (
<>
<Global styles={globalStyle} />
<RouterProvider router={router} future={{ v7_startTransition: true }} />
<ToastContainer />
<ThemeProvider theme={theme}>
<Global styles={globalStyle(theme)} />
<RouterProvider router={router} future={{ v7_startTransition: true }} />
<ToastContainer />
</ThemeProvider>
</>
);
}
Expand Down
45 changes: 0 additions & 45 deletions src/components/AuthFormInput/AuthFormInput.js

This file was deleted.

31 changes: 31 additions & 0 deletions src/components/AuthFormInput/AuthFormInput.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import PasswordInput from "../PasswordInput/PasswordInput";
import Input from "../Input/Input";
import { forwardRef, InputHTMLAttributes } from "react";
import {
AuthFormItem,
AuthFormLabel,
AuthFormErrorMsg,
} from "@styles/formStyles";

interface Props extends InputHTMLAttributes<HTMLInputElement> {
label: string;
errorMsg?: string;
}

const AuthFormInput = forwardRef<HTMLInputElement, Props>(
({ label, errorMsg, ...props }, ref) => {
return (
<AuthFormItem>
<AuthFormLabel>{label}</AuthFormLabel>
{props.type === "password" ? (
<PasswordInput ref={ref} {...props} />
) : (
<Input ref={ref} {...props} />
)}
{errorMsg && <AuthFormErrorMsg>{errorMsg}</AuthFormErrorMsg>}
</AuthFormItem>
);
}
);

export default AuthFormInput;
18 changes: 0 additions & 18 deletions src/components/AuthGuide/AuthGuide.js

This file was deleted.

39 changes: 39 additions & 0 deletions src/components/AuthGuide/AuthGuide.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import styled from "@emotion/styled/macro";
import { theme } from "@styles/theme";
import { Link } from "react-router-dom";

interface Props {
guideTxt: string;
linkTxt: string;
linkUrl: string;
}

const AuthGuide = ({ guideTxt, linkTxt, linkUrl }: Props) => {
return (
<AuthGuideBox>
<p>{guideTxt}</p>
<AuthGuideLink to={linkUrl} aria-label={`${linkTxt} 페이지로 이동`}>
{linkTxt}
</AuthGuideLink>
</AuthGuideBox>
);
};

const AuthGuideBox = styled.div`
display: flex;
align-items: center;
justify-content: center;
margin-top: 24px;
font-size: 14px;
font-weight: 500;
gap: 5px;
`;

const AuthGuideLink = styled(Link)`
text-decoration: underline;
text-underline-offset: 3px;
text-decoration-thickness: 2px;
color: ${theme.colors.primaryColor};
`;

export default AuthGuide;
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { Link } from "react-router-dom";
import snsGoogle from "../../assets/images/icons/ic_sns_google.svg";
import snsKakao from "../../assets/images/icons/ic_sns_kakao.svg";
import styled from "@emotion/styled/macro";

const AuthSns = () => {
return (
<div className="auth-sns">
<h2 className="auth-sns__label">간편 로그인하기</h2>
<ul className="auth-sns__list">
<AuthSnsBox>
<AuthSnsLabel>간편 로그인하기</AuthSnsLabel>
<AuthSnsList>
<li>
<Link
to="https://www.google.com/"
Expand All @@ -23,9 +24,31 @@ const AuthSns = () => {
<img src={snsKakao} alt="카카오톡 아이콘" width="44" height="44" />
</Link>
</li>
</ul>
</div>
</AuthSnsList>
</AuthSnsBox>
);
};

const AuthSnsBox = styled.div`
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 24px;
padding: 16px 23px;
background-color: #e6f2ff;
border-radius: 8px;
`;

const AuthSnsLabel = styled.h2`
display: block;
font-size: 16px;
font-weight: 500;
`;

const AuthSnsList = styled.ul`
display: flex;
align-items: center;
gap: 16px;
`;

export default AuthSns;
9 changes: 3 additions & 6 deletions src/components/Button/Button.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { ButtonHTMLAttributes, ReactNode } from "react";
import { ButtonStyle, ButtonStyleProps } from "./ButtonStyle";

interface BaseButtonProps {
onClick?: () => void;
interface ButtonProps
extends ButtonHTMLAttributes<HTMLButtonElement>,
ButtonStyleProps {
children: ReactNode;
}

type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &
BaseButtonProps &
ButtonStyleProps;

const Button = ({ onClick, children, ...props }: ButtonProps) => {
return (
<ButtonStyle onClick={onClick} {...props}>
Expand Down
21 changes: 11 additions & 10 deletions src/components/Button/ButtonStyle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,35 @@ import { css } from "@emotion/react";
import styled from "@emotion/styled/macro";
import { mq } from "../../styles/mixins";
import { Link } from "react-router-dom";
import { theme } from "@styles/theme";

export interface ButtonStyleProps {
color?: keyof typeof ButtonColors;
variant?: keyof typeof ButtonStyles;
size?: keyof typeof ButtonSize;
round?: boolean;
}

export const ButtonColors = {
export const ButtonStyles = {
primary: css`
color: #fff;
background-color: var(--btn-primary);
background-color: ${theme.btn.primary};

&:hover {
background-color: var(--btn-primary-hover);
background-color: ${theme.btn.hover};
}

&:active {
background-color: var(--btn-primary-click);
background-color: ${theme.btn.click};
}

&:disabled {
background-color: var(--btn-disabled);
background-color: ${theme.btn.disabled};
}
`,
white: css`
border: 1px solid var(--primary-color);
color: var(--primary-color);
background-color: var(--white);
border: 1px solid ${theme.colors.primaryColor};
color: ${theme.colors.primaryColor};
background-color: ${theme.colors.white};
`,
custom: css``,
};
Expand Down Expand Up @@ -69,7 +70,7 @@ export const ButtonBaseStyle = (props: ButtonStyleProps) => css`
cursor: pointer;

${props.size ? ButtonSize[props.size] : ButtonSize["sm"]};
${props.color ? ButtonColors[props.color] : ButtonColors["primary"]};
${props.variant ? ButtonStyles[props.variant] : ButtonStyles["primary"]};
border-radius: ${props.round ? "40px" : "8px"};
`;

Expand Down
30 changes: 0 additions & 30 deletions src/components/Input/Input.js

This file was deleted.

5 changes: 0 additions & 5 deletions src/components/Input/Input.module.scss

This file was deleted.

10 changes: 10 additions & 0 deletions src/components/Input/Input.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { forwardRef, InputHTMLAttributes } from "react";
import { InputStyle } from "@styles/formStyles";

interface Props extends InputHTMLAttributes<HTMLInputElement> {}

const Input = forwardRef<HTMLInputElement, Props>(({ ...props }, ref) => {
return <InputStyle ref={ref} {...props} />;
});

export default Input;
Loading
Loading