Skip to content
New issue

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

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

Already on GitHub? # to your account

feat: 밋팀 관리 페이지(대시보드, 밋팀, 멤버, 구인 현황, 설정) UI 및 기능 구현 #34

Merged
merged 110 commits into from
Jan 17, 2024
Merged
Show file tree
Hide file tree
Changes from 95 commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
dfca4da
refactor: #10 ComponentProps 인터페이스 -> 타입
kimsuyeon0916 Nov 26, 2023
2358c20
style: #18 globalStyle.Css 내html 태그 폰트 사이즈 설정
kimsuyeon0916 Dec 26, 2023
5740811
refactor: #18 진행중 밋팀 관리 페이지 탭 구조 변경
kimsuyeon0916 Dec 27, 2023
b0ae746
feat: #18 랜덤 컬러 생성 유틸함수 구현
kimsuyeon0916 Dec 29, 2023
6b95f48
feat: #18 태그와 색깔 매칭 유틸 함수 구현
kimsuyeon0916 Dec 29, 2023
336c8de
style: #18 메인 사이즈 변경 및 테두리 굵기 조절
kimsuyeon0916 Dec 29, 2023
ea40214
style: #18 메뉴 탭 사이즈 및 스타일 변경
kimsuyeon0916 Dec 29, 2023
b280a40
feat: #18 필수 정보 컴포넌트 제작
kimsuyeon0916 Dec 29, 2023
52b32b6
feat: #18 밋팀 타이틀 컴포넌트 제작
kimsuyeon0916 Dec 29, 2023
d69de20
feat: #18 뒤로가기 컴포넌트 제작
kimsuyeon0916 Dec 29, 2023
8228307
feat: #18 밋팀 관리 페이지 레이아웃 배치
kimsuyeon0916 Dec 29, 2023
e0be807
refactor: CustomSelect 컴포넌트 any 타입 제거
kimsuyeon0916 Dec 29, 2023
992a2e8
refactor: #18 밋팀 관리 메뉴+메인 분리
kimsuyeon0916 Jan 2, 2024
72c98e8
feat: #18 진행 상태 대시보드 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 3, 2024
52404c0
style: #18 Main 내 공통 스타일 추가
kimsuyeon0916 Jan 3, 2024
aa49027
feat: #18 이슈 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 3, 2024
caf1f1a
refactor: #18 필수 정보 내의 태그 데이터 형태 변경
kimsuyeon0916 Jan 3, 2024
2dc7369
feat: #18 진행 상태 대시보드 UI를 위한 상수 데이터 생성
kimsuyeon0916 Jan 3, 2024
5ed9188
refactor: #18 진행 상태 대시보드 내의 바로가기 버튼 UI 문구 변경
kimsuyeon0916 Jan 3, 2024
f5b3f12
feat: #18 옵션 메뉴 유틸 컴포넌트 제작
kimsuyeon0916 Jan 4, 2024
489ce1d
feat: #18 옵션 버튼 컴포넌트 제작
kimsuyeon0916 Jan 4, 2024
af507aa
feat: #18 옵션 모달리스 컴포넌트 제작
kimsuyeon0916 Jan 4, 2024
d3e10e0
feat: #18 옵션 버튼, 모달리스 감싸는 컴포넌트 제작
kimsuyeon0916 Jan 4, 2024
8152634
feat: #18 링크 UI 구성을 위한 상수 데이터 제작
kimsuyeon0916 Jan 4, 2024
d8f3f06
feat: #18 링크 컴포넌트 제작
kimsuyeon0916 Jan 4, 2024
f4a1b1d
feat: #18 밋팀 정보 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 5, 2024
4e5d2ba
style: #18 링크 컴포넌트 스타일 구조 변경
kimsuyeon0916 Jan 5, 2024
c0cec59
chore: #18 react-quill 에디터 기본 설정
kimsuyeon0916 Jan 5, 2024
5443d61
refactor: #18 밋팀 탭 컴포넌트 리팩토링
kimsuyeon0916 Jan 5, 2024
fa82004
feat: #18 Recoil 추가
kimsuyeon0916 Jan 5, 2024
e3034cd
refactor: #18 밋팀 관리 탭 상태를 recoil 로 관리하도록 변경 및 버튼에 onClick 이벤트 적용
kimsuyeon0916 Jan 5, 2024
895722e
style: #18 이슈 컴포넌트 스타일 추가
kimsuyeon0916 Jan 5, 2024
64b31a8
chore: #18 밋팀 관리 페이지 폴더 위치 이동
kimsuyeon0916 Jan 5, 2024
3306096
chore: #18 링크 컴포넌트 저장 버튼 이름 변경
kimsuyeon0916 Jan 5, 2024
51b50dc
feat: #18 대시보드 링크 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 5, 2024
c5c674e
style: #18 대시보드 링크와 링크 컴포넌트 스타일 분리
kimsuyeon0916 Jan 5, 2024
6e1a6de
chore: #18 링크 컴포넌트 UI 구성을 위한 상수 데이터 수정
kimsuyeon0916 Jan 5, 2024
5eb19c0
style: #18 링크 컴포넌트 스타일 변경
kimsuyeon0916 Jan 5, 2024
40e2b76
fix: #18 대시보드 링크 컴포넌트 내 함수 구조 변경
kimsuyeon0916 Jan 5, 2024
091c8b4
feat: #18 원형 프로필 컴포넌트 제작
kimsuyeon0916 Jan 7, 2024
5e5b6d3
refactor: #18 진행 상태 현황 close(닫기) 버튼 제거
kimsuyeon0916 Jan 7, 2024
605db3c
refactor: #18 링크 리스트 mock data 추가
kimsuyeon0916 Jan 7, 2024
1bf09e3
style: #18 진행 상태 현황 디자인 변경
kimsuyeon0916 Jan 7, 2024
7d6496d
style: #18 원형 프로필 컴포넌트 스타일 변경
kimsuyeon0916 Jan 7, 2024
110d722
chore: #18 Mock/상수 데이터 파일명 변경
kimsuyeon0916 Jan 7, 2024
ba7164e
feat: #18 대시보드 멤버 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 7, 2024
dc0d988
style: #18 이슈 컴포넌트 스타일 추가
kimsuyeon0916 Jan 7, 2024
b21b554
style: #18 옵션 모달 컴포넌트 포인터 커서로 변경
kimsuyeon0916 Jan 7, 2024
ca05170
feat: #18 멤버 Mock 데이터 추가
kimsuyeon0916 Jan 7, 2024
06e425a
chore: #18 import 문 내 변수명 변경
kimsuyeon0916 Jan 7, 2024
e40a35a
feat: #18 대시보드 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 7, 2024
2c49a56
feat: #18 링크 컴포넌트 취소 버튼 추가
kimsuyeon0916 Jan 7, 2024
37e4b82
style: #18 대시보드 버튼 컬러 변경
kimsuyeon0916 Jan 7, 2024
6305d44
fix: #18 대시보드 링크 버튼 안나타나는 이슈 해결
kimsuyeon0916 Jan 7, 2024
c85b5b7
refactor: #18 밋팀 정보 Mock/상수 데이터 따로 파일로 저장
kimsuyeon0916 Jan 7, 2024
84af02f
feat: #18 클립보드 복사 유틸 함수 제작
kimsuyeon0916 Jan 12, 2024
b7785a2
chore: #18 링크 및 이미지 태그에 설명 속성 추가
kimsuyeon0916 Jan 12, 2024
298c9a2
feat: #18 유저 카드 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 12, 2024
993e6b8
feat: #18 유저 연락처 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 12, 2024
f8ba93a
feat: #18 멤버 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 12, 2024
8bdc995
feat: #18 멤버 Mock/상수 데이터 수정
kimsuyeon0916 Jan 12, 2024
bb09ef1
style: #18 옵션 모달 높이 고정 제거
kimsuyeon0916 Jan 12, 2024
daca8e0
refactor: #18 밋팀 정보 컴포넌트 폴더 위치 변경 및 스타일드 컴포넌트 네이밍 변경
kimsuyeon0916 Jan 12, 2024
24f4c28
feat: #18 구인글 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 12, 2024
941df32
feat: #18 구인 정보 Mock 데이터 추가
kimsuyeon0916 Jan 12, 2024
6b8b262
chore: #18 밋팀 정보 컴포넌트 폴더 위치 변경
kimsuyeon0916 Jan 12, 2024
c8bb3ae
style: #18 대시보드 링크 연락 수단 추가 버튼 디자인 변경
kimsuyeon0916 Jan 15, 2024
e09baec
style: #18 대시보드 멤버 멤버 추가 버튼 디자인 변경
kimsuyeon0916 Jan 15, 2024
e369ea0
feat: #18 대시보드 컴포넌트 상태에 다른 변경 디자인 적용
kimsuyeon0916 Jan 15, 2024
379bac3
style: #18 구인 정보 컴포넌트 placeHolder 변경
kimsuyeon0916 Jan 15, 2024
93d81a3
style: #18 멤버 연락처 컴포넌트 버튼 커서 포인터로 변경
kimsuyeon0916 Jan 15, 2024
aa19c13
feat: #18 신청자 목록 Mock Data 생성
kimsuyeon0916 Jan 15, 2024
9275cf2
feat: #18 신청자 신청 카드 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 15, 2024
d20842a
feat: #18 신청자 목록 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 15, 2024
b875f7c
style: #18 필수 정보 컴포넌트 스타일 변경
kimsuyeon0916 Jan 15, 2024
c667d85
feat: #18 이슈 Mock 데이터 변경
kimsuyeon0916 Jan 15, 2024
b52708b
feat: #18 구인 정보 Mock 데이터 변경
kimsuyeon0916 Jan 15, 2024
3e813ec
style: #18 멤버 프로필 컴포넌트 스타일 변경
kimsuyeon0916 Jan 15, 2024
5bb4ff3
style: #18 서브 정보 컴포넌트 스타일 변경
kimsuyeon0916 Jan 15, 2024
8d77aa4
feat: #18 진행 상태 Mock Data 변경
kimsuyeon0916 Jan 15, 2024
07de600
feat: #18 구인 시작 버튼/구인 마감일 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 15, 2024
796d740
feat: #18 구인 정보 컴포넌트 편집 상태 변경 상태 관리 변경
kimsuyeon0916 Jan 15, 2024
b81f665
feat: #18 진행 상태 컴포넌트 html 태그 변경
kimsuyeon0916 Jan 15, 2024
0a7dfdb
feat: #18 구인 현황 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 15, 2024
32a5d79
feat: #18 대시보드 컴포넌트 상태 Mock Data 변경
kimsuyeon0916 Jan 15, 2024
41be684
chore: #18 utils 폴더 내의 컴포넌트들을 component 폴더로 변경
kimsuyeon0916 Jan 15, 2024
d70bda9
feat: #18 필수 정보 입력 컴포넌트 생성
kimsuyeon0916 Jan 15, 2024
dcfd6a8
feat: #18 설정 컴포넌트 제작 및 스타일 추가
kimsuyeon0916 Jan 15, 2024
1b41515
chore: #18 아톰 구인 기본 상태 변경
kimsuyeon0916 Jan 15, 2024
117af4e
feat: #18 옵션 동작 변경
kimsuyeon0916 Jan 15, 2024
5a6a8ac
chore: #18 인터페이스 Props 접미사 제거
kimsuyeon0916 Jan 15, 2024
c2f6be3
chore: #18 밋팀 관리 페이지 라우터 경로 변경
kimsuyeon0916 Jan 15, 2024
6923e66
Merge branch 'develop' into refactor/#18_refactor_managementPage_in_p…
kimsuyeon0916 Jan 15, 2024
eeb36d0
chore: #18 라우터 경로 변경
kimsuyeon0916 Jan 15, 2024
ecfb27a
chore: #18 atom conflict 해결
kimsuyeon0916 Jan 15, 2024
8d08089
chore: #18 util 함수 확장자 변경
kimsuyeon0916 Jan 16, 2024
9286bf2
chore: #18 스타일드 컴포넌트 오타명 수정
kimsuyeon0916 Jan 16, 2024
2f8ed12
refactor: #18 useRecoilState 를 읽고 쓰는 경우에 따라 변경
kimsuyeon0916 Jan 16, 2024
2544cf7
chore: #18 헤더 svg 파일 프로퍼티 네이밍 camelCase로 변경
kimsuyeon0916 Jan 16, 2024
5a6fc9a
refactor: #18 한쪽만 값이 있는 삼항 연산자 제거
kimsuyeon0916 Jan 17, 2024
759c3e7
feat: #18 뒤로가기 기능 구현
kimsuyeon0916 Jan 17, 2024
b962485
refactor: #18 setState() 함수 내에 콜백 함수 적용
kimsuyeon0916 Jan 17, 2024
ac9be99
chore: #18 console.log() 제거
kimsuyeon0916 Jan 17, 2024
99f4589
refactor: #18 Content 삭제 및 메인, 메뉴 컴포넌트 props 제거
kimsuyeon0916 Jan 17, 2024
39d4a41
refactor: #18 컴포넌트 props 넘겨주는 방식 변경
kimsuyeon0916 Jan 17, 2024
bb77053
feat: #18 산출물 등록 페이지 연결
kimsuyeon0916 Jan 17, 2024
92a7c80
style: #18 밋팀 관리 페이지 너비 변경
kimsuyeon0916 Jan 17, 2024
c4caf77
fix: #18 멤버, 신청자 프로필 이미지 엑스박스 이슈 해결
kimsuyeon0916 Jan 17, 2024
441d615
chore: #18 onClick 함수 내 오타 정정
kimsuyeon0916 Jan 17, 2024
13c3860
refactor: #18 매직 상수 제거
kimsuyeon0916 Jan 17, 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
1 change: 1 addition & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import React from 'react';
import { Outlet } from 'react-router-dom';
import { Header } from './components/index';
import { ScrollToTop } from './utils/index';
Expand Down
15 changes: 15 additions & 0 deletions src/atom.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
import { atom } from 'recoil';

export const contentState = atom({
key: 'contentState',
default: '대시보드',
});

export const recruitmentState = atom({
key: 'recruitmentState',
default: true,
});

export const recruitmentInformationEditState = atom({
key: 'recruitmentInformationEditState',
default: false,
});

export const areaState = atom({
key: 'areaState1',
default: '',
Expand Down
4 changes: 2 additions & 2 deletions src/components/customSelect/CustomSelect.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState } from 'react';
import React, { useState } from 'react';
import S from './CustomSelect.styled';
import { useRecoilState } from 'recoil';
import { areaState, categoryState, fieldState } from '../../atom';
Expand Down Expand Up @@ -40,7 +40,7 @@ const CustomSelect = ({ optionData, $isMember, type }: ICustomSelect) => {
<S.CustomSelect onClick={onClickhandler} $isMember={$isMember} $show={showOptions}>
<S.Label $isSelected={currentValue}>{currentValue}</S.Label>
<S.SelectOptions $show={showOptions}>
{optionData.map((data: any, index: number) => (
{optionData.map((data: string, index: number) => (
<S.Option key={index} value={data} onClick={handleOnChangeSelectValue}>
{data}
</S.Option>
Expand Down
14 changes: 14 additions & 0 deletions src/components/goBack/GoBack.styled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import styled from 'styled-components';
import { SlArrowLeft } from 'react-icons/sl';

const GoBackButton = styled(SlArrowLeft)`
position: absolute;
left: -4.85rem;
width: 3rem;
height: 4.8rem;
cursor: pointer;
`;

const S = { GoBackButton };

export default S;
12 changes: 12 additions & 0 deletions src/components/goBack/GoBack.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from 'react';
import S from './GoBack.styled';

const GoBack = () => {
return (
<>
<S.GoBackButton />
</>
);
};

export default GoBack;
103 changes: 101 additions & 2 deletions src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,62 @@ import Information from './meeteam/main/information/Information';
import Member from './meeteam/main/member/Member';
import MemberProfile from './meeteam/main/member/MemberProfile';
import MemberRadioBox from './meeteam/main/member/MemberRadioBox';
import WorkRegistration from './meeteam/main/workRegistration/WorkRegistration';
import Setting from './meeteam/main/setting/Setting';
import DashBoard from './meeteam/main/dashBoard/DashBorad';
import Recruitment from './meeteam/main/recruitment/Recruitment';
import RequiredInformation from './meeteam/requiredInformation/RequiredInformation';
import ProgressStatus from './meeteam/progressStatus/ProgressStatus';
import Title from './meeteam/title/Title';
import Issue from './meeteam/main/issue/Issue';
import { issueList, ISSUE_RIGHT_ARROW_ICON } from './meeteam/main/issue/IssueData';
import Content from './meeteam/Content';
import {
statusList,
STATUS_DONE_ICON,
STATUS_CLOSE_ICON,
STATUS_RIGHT_ARROW_ICON,
} from './meeteam/progressStatus/StatusData';
import Link from './meeteam/main/link/Link';
import DashBoardLink from './meeteam/main/dashBoard/dashBoardLink/DashBoardLink';
import {
memberList,
MEMBER_PROFILE_DEFAULT_ICON,
MEMBER_PLUS_ICON,
MEMBER_PLUS_CARD,
MEMBER_BOTTOM_ARROW_ICON,
} from './meeteam/main/member/MemberData';
import type { MeeTeamMember } from './meeteam/main/member/MemberData';
import {
meeteamInformation,
recruitmentInformation,
BOTTOM_ARROW_ICON,
TOP_ARROW_BUTTON,
} from './meeteam/main/information/InformationData';
import MemberCard from './meeteam/memberCard/MemberCard';
import MemberContact from './meeteam/memberContact/MemberContact';
import MeeteamInformation from './meeteam/main/information/subInformation/MeeteamInformation';
import RecruitmentInformation from './meeteam/main/information/subInformation/RecruitmentInformation';
import ApplicantView from './meeteam/main/recruitment/applicantView/ApplicantView';
import {
applicantList,
SMALL_BOTTOM_ARROW_ICON,
SMALL_TOP_ARROW_BUTTON,
} from './meeteam/main/recruitment/applicantView/ApplicantViewData';
import type { Applicant } from './meeteam/main/recruitment/applicantView/ApplicantViewData';
import ApplicantCard from './meeteam/main/recruitment/applicantView/applicantCard/ApplicantCard';
import RecruitmentDeadLine from './meeteam/main/recruitment/RecruitmentDeadLine';
import Toggle from './toggle/Toggle';
import GoBack from './goBack/GoBack';
import KebabMenu from './kebabMenu/KebabMenu';
import KebabMenuIcon from './kebabMenuIcon/KebabMenu';
import OptionMenu from './optionMenu/OptionMenu';
import RadiusProfile from './profile/RadiusProfile';
import {
linkList,
LINK_BOTTOM_ARROW_ICON,
LINK_SHORTCUTS_BUTTON,
} from './meeteam/main/link/LinkData';
import EssentialInformation from './meeteam/main/information/subInformation/EssentialInformation';
import Sidebar from './sidebar/Sidebar';
import Card from './meeteam/card/Card';
import Tag from './meeteam/tag/Tag';
Expand All @@ -40,8 +94,53 @@ export {
Member,
MemberProfile,
MemberRadioBox,
WorkRegistration,
Setting,
DashBoard,
Recruitment,
RequiredInformation,
ProgressStatus,
Title,
Issue,
issueList,
ISSUE_RIGHT_ARROW_ICON,
Content,
statusList,
STATUS_DONE_ICON,
STATUS_RIGHT_ARROW_ICON,
STATUS_CLOSE_ICON,
Link,
DashBoardLink,
memberList,
MeeTeamMember,
MEMBER_PROFILE_DEFAULT_ICON,
MEMBER_PLUS_ICON,
MEMBER_PLUS_CARD,
MEMBER_BOTTOM_ARROW_ICON,
meeteamInformation,
recruitmentInformation,
BOTTOM_ARROW_ICON,
TOP_ARROW_BUTTON,
MemberCard,
MemberContact,
MeeteamInformation,
RecruitmentInformation,
ApplicantView,
applicantList,
SMALL_BOTTOM_ARROW_ICON,
SMALL_TOP_ARROW_BUTTON,
Applicant,
ApplicantCard,
RecruitmentDeadLine,
Toggle,
GoBack,
KebabMenu,
KebabMenuIcon,
OptionMenu,
RadiusProfile,
linkList,
LINK_BOTTOM_ARROW_ICON,
LINK_SHORTCUTS_BUTTON,
EssentialInformation,
AddButton,
Sidebar,
Card,
Expand Down
11 changes: 11 additions & 0 deletions src/components/kebabMenu/KebabMenu.styled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import styled from 'styled-components';

const KebabMenuLayout = styled.div`
position: relative;
display: flex;
margin-left: auto;
`;

const S = { KebabMenuLayout };

export default S;
43 changes: 43 additions & 0 deletions src/components/kebabMenu/KebabMenu.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import React, { useState, useRef, useEffect } from 'react';
import { KebabMenuIcon, OptionMenu } from '..';
import S from './KebabMenu.styled';

interface Option {
title: string;
optionClickHandler: (e: React.MouseEvent<HTMLLIElement>) => void;
}
export type { Option };

const KebabMenu = (props: { options: Option[] }) => {
const [showModal, setShowModal] = useState(false);

const modalRef = useRef<HTMLDivElement>(null);

useEffect(() => {
const outSideClickHandler = (e: MouseEvent) => {
const target = e.target as HTMLDivElement;
console.log(target);
console.log(modalRef);

if (showModal && modalRef.current && !modalRef.current.contains(target)) {
setShowModal(false);
}
};

document.addEventListener('click', outSideClickHandler);
return () => document.removeEventListener('click', outSideClickHandler);
}, [showModal]);

const optionClickHandler = () => {
setShowModal(prev => !prev);
};

return (
<S.KebabMenuLayout ref={modalRef}>
<KebabMenuIcon onClick={optionClickHandler} />
{showModal && <OptionMenu options={props.options} />}
</S.KebabMenuLayout>
);
};

export default KebabMenu;
52 changes: 52 additions & 0 deletions src/components/kebabMenuIcon/KebabMenu.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import React from 'react';
import S from './KebabMenuIcon.styled';

const KebabMenuIcon = (props: { onClick: React.MouseEventHandler<HTMLButtonElement> }) => {
return (
<S.KebabMenuIconLayout type='button' onClick={props.onClick}>
<svg
xmlns='http://www.w3.org/2000/svg'
width='23'
height='23'
viewBox='0 0 23 23'
fill='none'
>
<path
d='M11.25 12.4375C11.7678 12.4375 12.1875 12.0178 12.1875 11.5C12.1875 10.9822 11.7678 10.5625 11.25 10.5625C10.7322 10.5625 10.3125 10.9822 10.3125 11.5C10.3125 12.0178 10.7322 12.4375 11.25 12.4375Z'
fill='black'
/>
<path
d='M11.25 5.875C11.7678 5.875 12.1875 5.45527 12.1875 4.9375C12.1875 4.41973 11.7678 4 11.25 4C10.7322 4 10.3125 4.41973 10.3125 4.9375C10.3125 5.45527 10.7322 5.875 11.25 5.875Z'
fill='black'
/>
<path
d='M11.25 19C11.7678 19 12.1875 18.5803 12.1875 18.0625C12.1875 17.5447 11.7678 17.125 11.25 17.125C10.7322 17.125 10.3125 17.5447 10.3125 18.0625C10.3125 18.5803 10.7322 19 11.25 19Z'
fill='black'
/>
<path
d='M11.25 12.4375C11.7678 12.4375 12.1875 12.0178 12.1875 11.5C12.1875 10.9822 11.7678 10.5625 11.25 10.5625C10.7322 10.5625 10.3125 10.9822 10.3125 11.5C10.3125 12.0178 10.7322 12.4375 11.25 12.4375Z'
stroke='black'
strokeWidth='1.5'
strokeLinecap='round'
strokeLinejoin='round'
/>
<path
d='M11.25 5.875C11.7678 5.875 12.1875 5.45527 12.1875 4.9375C12.1875 4.41973 11.7678 4 11.25 4C10.7322 4 10.3125 4.41973 10.3125 4.9375C10.3125 5.45527 10.7322 5.875 11.25 5.875Z'
stroke='black'
strokeWidth='1.5'
strokeLinecap='round'
strokeLinejoin='round'
/>
<path
d='M11.25 19C11.7678 19 12.1875 18.5803 12.1875 18.0625C12.1875 17.5447 11.7678 17.125 11.25 17.125C10.7322 17.125 10.3125 17.5447 10.3125 18.0625C10.3125 18.5803 10.7322 19 11.25 19Z'
stroke='black'
strokeWidth='1.5'
strokeLinecap='round'
strokeLinejoin='round'
/>
</svg>
</S.KebabMenuIconLayout>
);
};

export default KebabMenuIcon;
11 changes: 11 additions & 0 deletions src/components/kebabMenuIcon/KebabMenuIcon.styled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import styled from 'styled-components';

const KebabMenuIconLayout = styled.button`
all: unset;
display: flex;
cursor: pointer;
`;

const S = { KebabMenuIconLayout };

export default S;
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import React, { useState } from 'react';
import { ProgressBar, Menu, Main } from '../components';
import React from 'react';
import { Menu, Main } from '..';
import { useRecoilState } from 'recoil';
import { contentState } from '../../atom';

const ManagementPage = () => {
const [content, setContent] = useState('📁 정보');
const Content = () => {
const [content, setContent] = useRecoilState(contentState);
const clickedHandler: React.MouseEventHandler<HTMLButtonElement> = e => {
const button = e.target as HTMLButtonElement;
if (!button.textContent) {
Expand All @@ -13,11 +15,10 @@ const ManagementPage = () => {

return (
<>
<ProgressBar />
<Menu menu={content} clickedHandler={clickedHandler} />
<Main content={content} />
</>
);
};

export default ManagementPage;
export default Content;
Loading