Skip to content

Conversation

@i-meant-to-be
Copy link
Contributor

🚩 연관 이슈

closed #52

📝 작업 내용

개요

이전 PR에서 해결되지 않은 문제가 있어, 이를 수정하고 콜리의 의견까지 반영하고 나니 생각보다 변화된 내용이 많아서, 새로 PR을 작성하여 올립니다.

UI 설명

스크린샷_13-1-2025_154612_localhost

상단 바

  • 토론 유형, 테이블 이름과 토론 주제를 표시합니다.
  • 이 화면에서 토론 주제는 변경 불가능합니다.

중앙 타이머

  • 타이머 상단에는 현재 발언(찬/반론, 최종 발언과 교차 질의, 작전 시간) 순서와 발언자의 번호가 표시됩니다.
  • 중립적인 차례(최종 발언, 교차 질의)의 경우 배경색은 회색, 찬성의 차례에는 파란색, 반대의 차례에는 빨간색입니다.
  • 하단 3개의 버튼은 각각 시작, 일시정지, 초기화 기능을 담당합니다.
  • 타이머는 0초가 되어도 멈추지 않으며, 사용자가 일시정지하기 전까지 음수 상태로 계속 동작합니다.
  • 타이머는 30초에 종 한 번, 0초에 종 두 번을 울립니다.
  • 키보드의 스페이스 바를 눌러 타이머를 일시정지하거나 시작할 수 있습니다.
  • 버튼의 크기가 이전 PR 기준 작업물에 비해 커졌습니다.

중앙 좌우측 이전/다음 발언 순서

  • 중앙 좌측에는 바로 전의 발언 순서가, 중앙 우측에는 바로 다음의 발언 순서가 표시됩니다.
  • 역시 마찬가지로 중립, 찬성, 반대에 따라 배경색이 바뀝니다.
  • 컴포넌트 상단 화살표 버튼을 클릭하면 즉시 이전/다음 차례로 이동합니다.
  • 키보드의 좌우측 화살표를 눌러 즉시 이전/다음 차례로 이동할 수 있습니다.

배경

  • 정지 상태일 때는 무색
  • (정상) 동작 중이며, 잔여 시간 > 30초일 때, 초록색 계열 그라데이션
  • (타임아웃 임박) 동작 중이며, 0 < 잔여 시간 <= 30초일 때, 노란색 계열 그라데이션
  • (타임아웃) 동작 중이며, 잔여 시간 < 0초일 때, 붉은색 계열 그라데이션

소스 코드 특이사항

  • useQuery 함수를 통해 API 요청하여 그 응답으로 동작할 수 있는 상태입니다. msw 정상 동작 확인되었습니다.
  • TimerComponent.tsx 파일에서 3개의 useEffect 함수를 사용하고 있습니다. 1개의 useEffect 함수에 3개 기능을 다 합칠지, 아니면 3개의 함수로 분리할지 고민을 했었는데, "각 기능의 연관성이 적으면 분리하는 것이 적절하다"는 GPT 답변에 따라 분리하는 쪽으로 가닥을 잡았습니다. 3개의 useEffect는 각각 아래의 역할을 담당합니다:
    • 키보드 이벤트 감지
    • 종 울리기
    • 잔여 시간에 따른 배경색 변경
  • API 요청 시, 로딩 중 및 오류일 때 관련 메시지를 출력하도록 조건문을 구성하였습니다. 그러나, FE 차원에서 데이터 로딩 실패 시 특정한 오류 페이지로 라우팅시킬 것인지 등에 대해 논의해 볼 사항이 있을 것으로 생각됩니다.

소스 코드 구조

  • /TimerPage.tsx
    타이머가 탑재되는 페이지이며, DefaultLayout 기반으로 작성되었습니다.
  • /components/common/*
    타이머 구현에 전역적으로 사용된 공통 컴포넌트들의 집합입니다.
  • /components/TimerComponent.tsx
    버튼, 양옆 이전/다음 차례 요약 등을 포함하고 있는 완전한 타이머입니다.
  • /components/DebateInfoSummary.tsx
    타이머 양옆에 표시되는 이전/다음 차례를 요약해 표시하는 컴포넌트입니다.
  • /components/Timer/Timer.tsx
    타이머의 잔여 시간을 표시합니다.
  • /components/Timer/TimerController.tsx
    타이머 하단의 3개 버튼입니다.

🏞️ 스크린샷 (선택)

배경 색상 스크린샷

스크린샷_13-1-2025_154626_localhost

🗣️ 리뷰 요구사항 (선택)

  • 이번 프로젝트에서 컴포넌트 코드 짜는 게 처음이라, 피드백 있으시다면 편하게 남겨주세요!

@i-meant-to-be i-meant-to-be added feat 기능 개발 fix 버그 수정 labels Jan 13, 2025
@i-meant-to-be i-meant-to-be self-assigned this Jan 13, 2025
Copy link
Contributor

@jaeml06 jaeml06 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. 한번 확인해주세요

src/index.css Outdated
}
.gradient-timer-timeout {
background-image: linear-gradient(270deg, #f87171, #dc2626, #f43f5e);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

css 파일도 EOL이 적용되지 않는 것 같네요...

Comment on lines 9 to 15
decorators: [
(Story) => (
<GlobalPortal.Provider>
<Story />
</GlobalPortal.Provider>
),
],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.storybook의 preview.ts에 전역적으로 decorators에 GlobalPortal이 선언되었어서 해당 코드는 필요 없을 것 같습니다.

Comment on lines 26 to 27
const [index, setIndex] = useState<number>(0);
const [bg, setBg] = useState<string>('');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

타입스크립트에서 자체적으로 타입추론이 가능한 경우, 타입을 지정하지 않습니다. 현재 초기값으로 0, ''이 지정되어 있으므로 , 을 지정하지 않아도 됩니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분의 경우, 타입 추론이 가능함은 알고는 있었으나, 개인적으로 타입을 확실하게 눈으로 볼 수 있도록 명확히 표기하는 습관이 있어서 그렇게 작성하고 있습니다. 큰 문제가 없다면 유지해도 괜찮을까요? 아니면 논의 후 코드 컨벤션으로 정하는 것도 가능한 방안일 것 같습니다.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드의 명확성과 유지보수성을 고려해서 타입을 명시적으로 작성하는 것이 나은 것 같습니다.

Copy link
Contributor

@jaeml06 jaeml06 Jan 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 유지해도 됩니다.
예전에 저도 이부분에서 고민한 적이 있었는데 예전 리뷰 받았던 내용을 첨부해드리겠습니다.
한번 생각해볼만한 이야기 같아요
image

Comment on lines 9 to 36

formatStanceToString: (stance: Stance) => {
switch (stance) {
case 'PROS':
return '찬성';
case 'CONS':
return '반대';
default:
return '중립';
}
},

formatDebateTypeToString: (debateType: DebateType) => {
switch (debateType) {
case 'OPENING':
return '입론';
case 'REBUTTAL':
return '반론';
case 'CROSS':
return '교차 질의';
case 'CLOSING':
return '최종 발언';
case 'TIME_OUT':
return '작전 시간';
default:
return 'UNDEFINED';
}
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UNDEFINED를 굳이 지정할 것이 아니라면 함수로 변환하는 것이 아니라
타입스크립트의 Record를 사용하는 것이 타입 안전성을 유지하고 더 편할 수 있다고 생각합니다.

type Stance = 'PROS' | 'CONS' | 'NEUTRAL';
type DebateType = 'OPENING' | 'REBUTTAL' | 'CROSS' | 'CLOSING' | 'TIME_OUT';

const StanceToString: Record<Stance, string> = {
  PROS: '찬성',
  CONS: '반대',
  NEUTRAL: '중립',
};

const DebateTypeToString: Record<DebateType, string> = {
  OPENING: '입론',
  REBUTTAL: '반론',
  CROSS: '교차 질의',
  CLOSING: '최종 발언',
  TIME_OUT: '작전 시간',
};

Comment on lines +19 to +23
// Get query
const { data, isLoading, isError } = useQuery({
queryKey: queryKey,
queryFn: () => getParliamentaryTableData(tableId, memberId),
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

후에 이 훅도 따로 hooks 폴더에 분리하는 것도 좋을 것 같네요

Comment on lines 5 to 7
bgColor?: string;
hoverColor?: string;
contentColor?: string;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

대안
이런 css는 각각의 pros로 받는 것이 나니라 style 객체로 받는 것은 어떠신가요?

color:{
   bg?: string
   ....
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 스토리북이 동작하지 않는 것 같은데
image
저만 그런건가요?

<div className="flex flex-wrap items-center gap-2 px-2 md:w-auto md:gap-3">
<span className="text-lg md:text-base md:text-xl">토론 주제</span>
<h1 className="w-full p-2 text-base font-bold md:w-[30rem] md:text-2xl">
{data === undefined ? '주제 불러오기 실패' : data!.info.agenda}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 지금까지 착각하고 있었던 것 같은데... agenda가 토론 주제인가요?
주제는 저장안한다고 기억했다가 문서를 보니 agenda가 주제인 것 같네요

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agenda라는 단어를 토론 주제로 인식하고 작업했습니다. 혹시나 해서 지금 확인을 해 보니, BE에서 제공해 준 API 명세서에서도 agenda 필드를 토론 주제라고 설명하고 있네요.

Comment on lines 6 to 8
function formatTwoDigits(num: number): string {
return num.toString().padStart(2, '0');
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이것도 util로 분리하는 것이 좋을 것 같네요


export default function Spinner() {
return (
<div>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

div 태그로 감싼 이유가 있을까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원래 수정 전에 <div> 태그 안에 TainwindCSS 스타일이 몇 개 지정되어 있었는데, 수정하면서 스타일 빼고 난 후 태그 자체를 없애지는 않은 것 같네요. 수정할 때 같이 반영할게요!

@i-meant-to-be i-meant-to-be added the refactor 기능 변경 없이 코드만 변경했을 경우 label Jan 15, 2025
@i-meant-to-be
Copy link
Contributor Author

/noti

@jaeml06

작성해주신 피드백 반영하여 새 커밋 올렸습니다! 확인해보시고 추가 피드백 있으시면 의견 편하게 남겨주세요.

후에 이 훅도 따로 hooks 폴더에 분리하는 것도 좋을 것 같네요

추가로, 의견 남겨주신 것 중 useQuery를 훅으로 대체하자는 제안은 현재 치코님 PR(#57)에서 작성이 완료된 것(/src/hooks/useGetParliamentaryTableData.tsx)으로 파악하고 있어, 이 PR과 57번 PR이 모두 병합되면 별도 리팩터링 이슈를 생성하여 수정하도록 하겠습니다.

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력
Copy link
Contributor

@jaeml06 jaeml06 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 확인했습니다. 고생하셨어요!

Copy link
Member

@eunwoo-levi eunwoo-levi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변경 내용 모두 확인하였습니다. 수고하셨습니다!

@i-meant-to-be i-meant-to-be merged commit 8cc9fd4 into develop Jan 15, 2025
1 check passed
@i-meant-to-be i-meant-to-be deleted the feat/#52 branch January 15, 2025 14:21
i-meant-to-be added a commit that referenced this pull request Jan 24, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
jaeml06 added a commit that referenced this pull request Jan 30, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
@i-meant-to-be i-meant-to-be mentioned this pull request Feb 3, 2025
jaeml06 pushed a commit that referenced this pull request Feb 4, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
jaeml06 pushed a commit that referenced this pull request Feb 4, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* chore: 프로젝트 초기 세팅

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [FIX] QA에서 식별한 버그 해결 - 숀 (#92)

* feat: Fixed header's elements at the correct position

* fix: Fixed bugs identified at QA

* fix: Let TimerPage print error text when app failed to load data

* fix: Fixed test codes affected by last commits

* refactor: StickyTriSectionHeader변경에 따른 UI 수정

* feat: TableOverview 홈화면 버튼 추가

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FIX] QA에서 식별한 버그 해결 - 치코 (#93)

* feat: 토론주제를 정상적으로 서버에 전달하도록 변경

* fix: 테이블 수정에서 상수로 되어있던 데이터 초기화 수정

* fix: 쿼리파라미터를 유지하도록 수정

* chore: preview 포트 3000으로 수정

* feat: 테이블을 없을시, 제출 버튼 블록처리 추가

* test: 테이블 추가하기 diabled상황 추가에 따른 테스트 수정

* [FIX] QA에서 식별한 버그 해결 - 엘 (#94)

* fix: TableList 화면에서 토론 유형이 영어(PARLIAMENTARY)로 표시되는 문제 해결

* fix: TableList 화면에서 토론 시간이 초가 아니라 분으로 표시되는 문제 해결

* fit: TableList 화면에서 테이블을 삭제한 후 화면이 다시 렌더링되지 않는 문제 해결

* fix: CI Test 를 통과하기 위해 test code 수정

* refactor: typeMapping 메소드 이용하여 토론 유형 매칭

* [FIX, CHORE] mock에서 드래그앤 드롭 UI가 깨지는 문제 수정, Storybook 자동 배포 yml 작성 (#81)

* fix: msw 모킹값 변경

* fix: 키값을 더 고유한 값으로 변경

* chore: storybook 자동 배포 yml 작성

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [CHORE] main 브랜치로 배포 (#87) (#97)

* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>

* [FEAT] invalidateQueries 사용하여 Table 삭제 시 즉시 업데이트 반영 (#99)

* feat: invalidateQueries를 사용하여 Table를 삭제한 후 성공할 시 최신 데이터를 반영

* feat: setTimeout을 사용하여 먼저 UI를 갱신한 후 alert을 표시하여 사용자경험(UX)를 향상

* [REFACTOR] 1차 UT에 있었던 1, 2순위 수정 사항 반영 (#102)

* refactor: 생성, 수정 환경에서 문구 구분

* refactor: 드래그앤드롭 바 디자인 변경

* fix: 타임박스가 헤더 영역을 침범하는 문제 수정

* test: 문구 변경에 따른 테스트 수정

* Update issue templates

* docs: 파일명 수정

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* chore: 프로젝트 초기 세팅

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* chore:  storybook 설정 추가

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [CHORE] main 브랜치로 배포 (#87) (#97)

* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫…
jaeml06 pushed a commit that referenced this pull request Feb 4, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
jaeml06 pushed a commit that referenced this pull request Feb 4, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* chore: 프로젝트 초기 세팅

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [FIX] QA에서 식별한 버그 해결 - 숀 (#92)

* feat: Fixed header's elements at the correct position

* fix: Fixed bugs identified at QA

* fix: Let TimerPage print error text when app failed to load data

* fix: Fixed test codes affected by last commits

* refactor: StickyTriSectionHeader변경에 따른 UI 수정

* feat: TableOverview 홈화면 버튼 추가

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FIX] QA에서 식별한 버그 해결 - 치코 (#93)

* feat: 토론주제를 정상적으로 서버에 전달하도록 변경

* fix: 테이블 수정에서 상수로 되어있던 데이터 초기화 수정

* fix: 쿼리파라미터를 유지하도록 수정

* chore: preview 포트 3000으로 수정

* feat: 테이블을 없을시, 제출 버튼 블록처리 추가

* test: 테이블 추가하기 diabled상황 추가에 따른 테스트 수정

* [FIX, CHORE] mock에서 드래그앤 드롭 UI가 깨지는 문제 수정, Storybook 자동 배포 yml 작성 (#81)

* fix: msw 모킹값 변경

* fix: 키값을 더 고유한 값으로 변경

* chore: storybook 자동 배포 yml 작성

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [CHORE] main 브랜치로 배포 (#87) (#97)

* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>

* [REFACTOR] 1차 UT에 있었던 1, 2순위 수정 사항 반영 (#102)

* refactor: 생성, 수정 환경에서 문구 구분

* refactor: 드래그앤드롭 바 디자인 변경

* fix: 타임박스가 헤더 영역을 침범하는 문제 수정

* test: 문구 변경에 따른 테스트 수정

* Update issue templates

* docs: 파일명 수정

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* chore: 프로젝트 초기 세팅

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* chore:  storybook 설정 추가

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [CHORE] main 브랜치로 배포 (#87) (#97)

* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 …
jaeml06 pushed a commit that referenced this pull request Feb 4, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
jaeml06 pushed a commit that referenced this pull request Feb 4, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
jaeml06 added a commit that referenced this pull request Feb 4, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
katie424 pushed a commit that referenced this pull request Jun 1, 2025
* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>
katie424 pushed a commit that referenced this pull request Jun 1, 2025
* Update issue templates

* docs: 파일명 수정

* chore: 프로젝트 초기 세팅

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [FIX] QA에서 식별한 버그 해결 - 숀 (#92)

* feat: Fixed header's elements at the correct position

* fix: Fixed bugs identified at QA

* fix: Let TimerPage print error text when app failed to load data

* fix: Fixed test codes affected by last commits

* refactor: StickyTriSectionHeader변경에 따른 UI 수정

* feat: TableOverview 홈화면 버튼 추가

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FIX] QA에서 식별한 버그 해결 - 치코 (#93)

* feat: 토론주제를 정상적으로 서버에 전달하도록 변경

* fix: 테이블 수정에서 상수로 되어있던 데이터 초기화 수정

* fix: 쿼리파라미터를 유지하도록 수정

* chore: preview 포트 3000으로 수정

* feat: 테이블을 없을시, 제출 버튼 블록처리 추가

* test: 테이블 추가하기 diabled상황 추가에 따른 테스트 수정

* [FIX] QA에서 식별한 버그 해결 - 엘 (#94)

* fix: TableList 화면에서 토론 유형이 영어(PARLIAMENTARY)로 표시되는 문제 해결

* fix: TableList 화면에서 토론 시간이 초가 아니라 분으로 표시되는 문제 해결

* fit: TableList 화면에서 테이블을 삭제한 후 화면이 다시 렌더링되지 않는 문제 해결

* fix: CI Test 를 통과하기 위해 test code 수정

* refactor: typeMapping 메소드 이용하여 토론 유형 매칭

* [FIX, CHORE] mock에서 드래그앤 드롭 UI가 깨지는 문제 수정, Storybook 자동 배포 yml 작성 (#81)

* fix: msw 모킹값 변경

* fix: 키값을 더 고유한 값으로 변경

* chore: storybook 자동 배포 yml 작성

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [CHORE] main 브랜치로 배포 (#87) (#97)

* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* feat: LoginPage Storybook 구현

* test: LinkButton 스토리북 구현

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [TEST] 로그인 및 테이블 조회 컴포넌트 테스트코드 구현 (#37)

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------



* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FIX] Mock Handler 파일에서 타입 에러 해결  (#54)

* feat: Table 타입인 TableInfo 정의

* refactor: result 객체에 속핸 info의 타입을 명시하기 위해 request에 TableInfo 타입 명시

* chore: 이미 정의되있던 PostDebateTableResponseType 타입 사용

* [CHORE] VS Code 작업 영역에 대한 설정 파일 추가 #62

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------



* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [HOTFIX] GitHub Actions 빌드 실패 문제 해결 (#73)

- TableCompositionStep 상수 값을 한글(타임박스입력)에서 영어(TimeBox)로 바꾸며 발생한 문제 수정
- Type 상수 값을 한글(의회식 토론)에서 영어(PARLIAMENTARY)로 바꾸며 발생한 문제 수정

* [FEAT] AWS S3 및 FrontCloud dev, prod 각각 분리 배포 및 github action 구축 (#76)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* feat: dev 배포를 위한 deploy 코드 작성

* feat: prod 배포를 위한 deploy 코드 작성

* chore: merge 후 생성된 불 필요한 코드 삭제

* chore: dev 배포 명료성을 위해 access key 및 secret key 네이밍 변경

* chore: Dev 배포 관련 yml파일에서 bucket 네이밍 변경

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------



* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [HOTFIX] 배포된 앱이 서버와 통신하지 못하는 문제 수정 (#84)

* [FIX] PostUserResponseType타입 수정, TableOverview에서 tableId를 url에서 정상적으로 가져오도록 수정 (#86)

* fix: PostUserResponseType 타입 변경

* fix: 정적 navigate 제거

* fix: 불필요한 console.log제거

* fix: tableId를 정상적으로 불러오도록 수정

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>
Co-authored-by: EunWoo <eunwoo1341@gmail.com>

* [FEAT] invalidateQueries 사용하여 Table 삭제 시 즉시 업데이트 반영 (#99)

* feat: invalidateQueries를 사용하여 Table를 삭제한 후 성공할 시 최신 데이터를 반영

* feat: setTimeout을 사용하여 먼저 UI를 갱신한 후 alert을 표시하여 사용자경험(UX)를 향상

* [REFACTOR] 1차 UT에 있었던 1, 2순위 수정 사항 반영 (#102)

* refactor: 생성, 수정 환경에서 문구 구분

* refactor: 드래그앤드롭 바 디자인 변경

* fix: 타임박스가 헤더 영역을 침범하는 문제 수정

* test: 문구 변경에 따른 테스트 수정

* Update issue templates

* docs: 파일명 수정

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* chore: 프로젝트 초기 세팅

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* chore:  storybook 설정 추가

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [FIX] 타임 테이블 구성 페이지 피드백 사항 반영 (#29)

* fix: 텍스트를 더 자세하게 수정

* feat: 최상단 컴포넌트에 GlobalPortal추가

* fix: 하단 버튼에 main의 content가 가려지던 문제 수정

* refactor: formatSecondsToMinutes 반환 값 변경

* feat: 선택 진영에 따라 모달 제목 텍스트 색상 변경

* feat: input을 select로 변경

* feat: stace에 따른 색상 변경 함수 구현

* feat: debateType가 중립일 경우 stance을 값을 빈문자열로 표시

* feat: input Numer의 leading zero삭제

* feat: 초기값을 이전 설정한 값으로 설정되게 변경

* feat: stace가 중립일 speakerNumber 수정 불가능하게 변경

* feat: 이전 데이터가 중립일 경우 debateType이 이전 데이터를 반영하지 않도록 변경

* [TEST] 테이블 목록 컴포넌트 Storybook 테스트코드 구현 (#35)

* test: Table 컴포넌트 Storybook 구현

* test: TableListPage 페이지 Storybook 구현

* test: DropdownForDebateType 컴포넌트 Storybook 구현

* fix: test 코드 통과를 위해 코드 h2 tag 수정

* [FEAT] 테이블 조회 화면 구현 (#34)

* refactor: PropsAndConsTitle의 재사용에 따른 폴더 위치 변경

* feat: 테이블 선택 페이지 기본 레이아웃 구현

* fix: footerWrapper을 flex정렬 방향 변경

* refactor: FixedFooterWrapper position 속정 변경에 따른 컴포넌트 명 수정

* feat: TableOverview 라우터 추가

* test: TableOverview 스토리북 작성

* test: PropsAndConsTitle의 위치 변경

* feat: 불필요한 주석 제거

* feat: 버튼 text 수정

* test: MemoryRouter추가

* fix: 사용되지 않은 getStanceColor 수정

* [CHORE] API 처리를 위해 패키지 추가 (#39)

* chore: Added API-related packages to the project

* chore: Added and modified codes for API

- 가상 API 사용을 위한 msw 관련 파일 추가
- TanStack Query 및 msw 대응하여 main.tsx 수정

* chore: Let msw only enabled on 'dev-mock' mode

* chore: Added one blank line at end of package.json

* chore: Added EOL at end of environment variable files

* [FEAT] 테이블 수정 및 삭제 구현 (#44)

* chore: 수정 및 삭제 아이콘을 위해 react-icons 추가

* feat: Table 컴포넌트에 Icons 추가

* feat: implement handleDelete method

* feat: implement EditModalButton to edit Tables

* refactor: stopPropagation method with MouseEvent 추가
- 버튼 클릭 이벤트가 상위로 전파되는 것을 막기 위해서 추가함

* feat: Edit 버튼 눌렀을 때, CreateTableModal 나오게 구현

* chore: unused closeModal function 삭제

* feat: Table 삭제를 위해 DeleteModalButton 구현

* feat: EditTableModal 구현

* feat: EditTableButton 구현
- 이후 수정 RestAPI 로직 추가 필요

* refactor: Edit 관련 컴포넌트에 name 매개변수 추가

* refactor: DebateTable 타입에 extends하여 delete 타입 추가

* refactor: 토론 유형 수정 불가

* refactor: 토론유형 hover: curser-not-allowed 추가

* refactor: handleDelete 함수형 업데이트로 수정

* refactor: EditTableButton 컴포넌트에 closeModal 매개변수 추가

* fix: TableListPage 테스트코드 수정

* [FEAT] 타임박스에 수정 및 삭제 UI 추가 (#42)

* chore: 수정, 삭제 아이콘 이용을 위한 react-icons 추가

* style: 컴포넌트 간의 간경을 더 좁게 수정

* feat: 수정, 삭제 버튼을 합친 EditDeleteButtons 컴포넌트 구현

* style: 분기에 따른 컴포넌트의 높이를 동일하게 수정

* feat: 수정, 삭제 handler 함수 작성

* refactor: 가독성을 위해 중첩된 삼항연산자 분리

* feat: 삭제 버튼 클릭 시, 삭제 확인 모달 구현

* feat: EditDeleteButtons에 aria-label 추가

* test: EditDeleteButtons 스토리북 코드 작성

* feat: TableSetup 테스트에 수정, 삭제 기능 테스트 추가

* [FEAT] API 요청 관련 기능 구현 (#45)

* feat: Added API mocking handler

* feat: Implemented API request logics

- 추가로, BE API 명세서의 반환 예시에 맞추어 일부 변수 이름을 수정

* refactor: Applied some minor changes

- URL 생성 함수가 슬래시(/)를 여러 개 포함하는 문제 수정
- 모든 API 함수를 apis.ts에 통합 (추후 메소드 많아지면 분리)

* feat: Let msw handler catch arguments

그 외 변경사항으로, API 함수들에서 경로 매개변수(path parameters)가 생략되어 있었던 문제를 해결

* refactor: 주석 추가

* fix: DebateTable 인터페이스 변경에 따른 일부 오류 수정

* feat: Added string identifier for 'useQuery' function

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* [FEAT] 타임박스의 수정을 드래그앤드롭으로 변경하는 기능 구현 (#47)

* feat: 이벤트 발생 비용 감소를 위한 useThrottle 작성

* faet: 타임박스 드래그앤 드롭을 위한 useDragAndDrop 구현

* feat: 타임박스에 드래그앤드롭 영역 지정

* feat: TableSetup에 드래그앤 드롭 선언

* refactor: 불필요한 주석 삭제

* fix: 병합과정에서 발생한 오류 수정

* [CHORE] storybook에 전역적인 decorators 설정 추가 (#50)

* chore: 라우터, GlobalPortal설정을 전역 설정에 decorators로 추가

* chore: storybook에 msw 설정 추가

* [FEAT] 타이머 화면 구현 (#58)

* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed

* [FEAT] `ErrorBoundary` 도입 (#65)

* feat: ErrorBoundary 도입

* feat: Wrapped router with ErrorBoundaryWrapper

* feat: Enabled 'throwOnError' option on QueryClient

* feat: Added refresh button on ErrorPage

* refactor: Applied feedbacks from PR review

- Declared string constants for ErrorBoundary
- Set icon size on 'size' parameter instead of TailwindCSS 'className'

* [FEAT] API 연결과 테이블 생성과 수정을 위해 funnel 패턴을 이용하여 멀티 스텝 폼 구현 (#57)

* fix: 응답 타입을 문서에 맞게 수정

* feat: Agenda 타입 추가

* feat: 테이블을 추가하는 api 훅 추가

* feat: 테이블을 삭제하는 api 훅 추가

* feat: 사용자를 추가하는 api 훅 추가

* feat: 의회식 토론을 수정하는 api 훅 추가

* feat: 토론 리스트를 가져오는 api 훅 추가

* feat: 의호식 토론 정보를 가져오는 api 훅 추가

* style: 컴포넌트간의 간격 추가

* feat: multi-step form 구현을 위한 useFunnel 작성

* feat: multi-step form동안에 새로고침시에도 상태 유지를 위한 useBrowserStorage 구현

* feat: DropdownForDebateType의 로직 변경

* feat: 멀티 스텝을 이용한 방식으로 수정으로 인한 생성 모달, TableSetupPage를 변경

* feat: 테이블 생성과 수정을 위한 멀티 스텝 폼, TableComposition 구현

* feat: 테이블 form 정보 커스텀 훅 구현

* feat: 로그인 페이지에 상태와 api훅 추가

* fix: 타임박스 ui 버그 수정

* feat: 멀티 스텝 폼을 위해 TableSetupPage의 commponents 파일 이동

* feat: 테이블 수정을 모달에서 멀티스텝 폼 변경으로 인한 수정

* refactor: 더미 데이터 제거

* feat: composition 라우터 추가

* fix: 응답값에 맞게 msw 수정

* feat: 테이블 조회에 api 훅 추가

* refactor: 모달에서 멀티스텝폼 변경으로 인한 컴포넌트 명 변경

* fix: agenda와 type의 혼동으로 type 문제 수정

* fix: TableComposition 구현으로 인한 불필요한 파일 삭제

* fix: Type 타입을 영어로 수정

* fix: import 경로 수정

* feat: 테스트 mock을 위한 vitest 설정

* test: TableComposition 구현으로 인한 수정사항 반영

* feat: 버튼에 aria-label 추가

* chore: storybook msw 사용가능하게 설정 추가

* fix: stace 오타 변경

* test: storybook 경로 변경

* test: TableCompositon 스토리북 코드 작성

* fix: TableSetup삭제로 인한 라우터 변경

* chore: cleanup 함수 추가

* feat: 인터페이스 명 수정

* refactor: 한글에서 영어로 상수 변경

* refactor: NEUTRAL Stance 타입 변경

* refactor: typeMapping을 constants로 분리

* refactor: DebatePanel의 DebateTypeToString 수정

* refactor: type 값을 영어 상수로 변경

* [CHORE] 배포 파이프라인 자동화 구축 (#60)

* feat: useMutation 사용하여 restAPI post요청 구현

* refactor: useLoginUser 훅으로 분리

* chore: setting Up a Deployment Automation Pipeline

* chore: cd 파일 pr branch 명 변경

* fix: 불필요한 코드 지우기

* build: 패키지 매니저 변경

* build: pr types 추가

* fix: handleLogin 에 '/table' 경로로 라우팅 추가하여 test코드 통과

* fix: 올바른 test코드 위한 수정

* fix: mockServiceWorker 에서 불필요한 코드 삭제

* fix: mockServiceWorekr 필요없는 코드 삭제

* fix: 오류 해결을 위해 build 다시 생성

* fix: eslintignore 와 stylelintignore 설정을 통해 불필요한 검사 제외

* chore: gitignore 에 /dist 추가하여 빌드파일 제외

* chore: stylelintignore eol 추가

* chore: .eslintignore 삭제 및 eslint.config.js 파일 안 ignore 추가

* chore: dist 디렉토리 삭제

* chore: CD 파일에 pr types 에 'synchronize', 'reopened' 제거

* fix: 병합과정에 충돌 오류 수정

---------

Co-authored-by: jaeml06 <jaeml0630@gmail.com>

* hotfix: 에러바운더리 코드가 삭제된 것에 대한 반영 (#69)

* [REFACTOR] 타이머 기능 개선 외 (#66)

* refactor: Applied several changes

- Changed interval to 1000 ms (1 sec)
- Added function that changes background to remove duplication of same codes
- Removed isRunning not necessary

* feat: Made TimerPage be able to catch parameters

* fix: Recovered deleted ErrorBoundary related files

* fix: Set icon size on 'size' argument instead of 'className'

* refactor: Separated loading component to page

* refactor: Applied several changes

- Moved TimerLoadingPage to /src/TimerPage from /src/TimerPage/component
- Set css file to print CR/LF correctly
- Changed 'useQuery' to 'useGetParliamentaryTableData' hook

* refactor: Deleted unneccesary codes

* [FEAT] 닉네임 기반 로그인 구현 (#71)

* feat: 로그인 시, memberId를 반환하도록 변경

* feat: memberId를 session 스토리지에 저장하도록 util 함수 작성

* fix: currentStep을 영문으로 변경

* feat: 정적으로 선언되 memberId를 스토리지에서 가져오도록 변경

* refactor: route.tsx 위치를 routes 폴더로 변경

* feat: ProtectedRoute 구현

* feat:  ProtectedRoute 적용

* refactor: routes위치 변경에 따른 import 수정

* feat: 토론하기 클릭 시, TimerPage 연결

* refactor: 라우터 변경에 따른 수정사항 반영

---------

Co-authored-by: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com>

* [FEAT] 추가 작전 시간 타이머 구현 외 (#77)

* feat: Changed API base url to deployed server

* feat: Implemented AdditionalTimerComponent

* fix: Recovered horizontal padding of useModal wrapper

* feat: Deleted top margin of AdditionalTimerSummaryItem

* fix: Fixed linting errors

* fix: Removed hard-coded URL on source codes

* fix: Make app get server URL from .env file

* chore: Deleted .env files

* chore: Updated .gitignore file to ignore .env files

* [CHORE] 배포 최적화 및 배포 환경 구분 (#82)

* chore: Separated deploy environments and variables

* chore: Applined vite-plugin-compressions2 to compress builds

* chore: Changed job name

* fix: Added quotes on target path of Cloudfront cache invalidation

* chore: Changed web page title

* chore: Removed compression-related packages and codes

* [CHORE] main 브랜치로 배포 (#87) (#97)

* Update issue templates

* docs: 파일명 수정

* docs: PR 템플릿 생성 (#2)

* docs: 자동 issue 설정 할당

* docs: 불필요한 주석 제거

* docs: 이슈 프로젝트 권한 추가

* docs: 자동할당 로직 변경

* feat: 권한 문제로 자동 Project할당 제거

* docs: PR 자동할당 yml 작성

* docs: 불필요한 Project 정보 제거

* docs: Discord comment 알림 yml 작성

* chore: 프로젝트 초기 세팅

* chore: prettier 설정 추가

* feat: 3개의 영역으로 구분된 header(StickyTriSectionHeader) 구현

* feat: 하단에 고정되어 있는 footer wrapper 구현

* feat: main 레이아웃 구현

* feat: 중첩 컴포넌트로 기본 레이아웃 구현

* design: layout의 ContentContanier 가운데 정렬 추가

* design: layout의 ContentContanier padding 추가

* feat: PropsAndConsTitle 구현

* feat: TimerCreationButton 구현

* feat: 테이블 타입 작성

* feat: 초를 분, 초로 포맷팅하는 함수 구현

* feat: DebatePanel 구현

* feat: 테이블 구성 페이지 초기 UI rngus

* feat: Pretendard 웹폰트  추가

* chore:  storybook 설정 추가

* test: DebatePanel 스토리 북 작성

* test: PropsAndConsTitle 스토리북 테스트 작성

* test: TimerCreationButton 스토리북 테스트 작성

* fix: 파일명에 불필요한 공백 제거

* [FEAT] 페이지 라우팅 적용 (#22)

* chore: install react-router-dom

* feat: App.tsx와 main.tsx 에서 라우팅 설정

* refactor: createBrowerRouter 방식 적용
- router.tsx 파일 생성하여 라우터 적용
- main.tsx 에서     <RouterProvider router={router} /> 적용

* chore: 불필요한 App.tsx 컴포넌트 삭제

* chore: eol prettier 적용

* [FEAT] 타이머 박스 생성 모달 구현 (#17)

* feat: 포털 렌더링 관리를 위한 GlobalPortal 컴포넌트 추가

* feat: 모달 생성을 위한 modal 커스텀 훅 구현

* feat: GlobalPortal 적용

* feat: 제출 이벤트, 버튼 추가

* feat: uesModal 구조 변경

* feat: Stance, DebateType에 export 추가

* test: useModal 테스트 코드 작성

* feat: 타이머 박스 생성 모달 구현

* feat: 타임 테이블 구성 페이지 피그마 UI에 맞게 구성

* refactor: 불필요한 테스트 파일 삭제

* test: 타임 테이블 구성 페이지 스토리북 작성

* test: 타임 테이블 구성 페이지 테스트 코드 작성

* refactor: params변경에 따른 수정

* test: GlbalPortal 추가

* chore: chromatic 추가

* fix: 파일명에 불필요한 공백 제거

* chore: 크로매틱 배포 토큰 변경

* [FEAT] 로그인 페이지 구현 (#24)

* feat: 로그인 페이지 전체 레이아웃

* feat: 로그인 버튼 구현

* feat: 닉네임 별 페이지 목록 페이지 라우팅 설정

* refactor: scale 효과 추가 및 font 굵기 조절

* refactor: tailwind css 가독성 향상 및 개선

* refactor: LinkButton 재사용성 향상
- url과 title을 props로 넘김

* chore: eslint 자동 정렬 설정

* chore: LoginPage eslint 자동 정렬 적용

* refactor: input placeholder 가독성 향상을 위해 글꼴 색깔 변경

* chore: lint와 test를 넣은 CI yml 파일 작성 (#27)

* [FEAT] 테이블 목록화면 구현 (#26)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫기 버튼 가독성을 위해  위치 변경 및 크기 변경

* refactor: ModalProps 타입 분리

* chore: Table 컴포넌트에 시간 단위 '분' 추가

* refactor: Modal props 컴포넌트 안에 배치

* refactor: useModal 훅에 esc 닫는 기능 추가

* refactor: useModal 적용하여 기존 모달 리팩토링

* refactor: 모달 닫기 버튼 사이즈 변경

* refactor: TimerCreationContent Padding 증가

* refactor: Modal 닫기 버튼 위치 조정 및 사이즈 변경

* refactor: TableProps 분리 제거

* refactor: Modal 컴포넌트를 ModalWrapper 감싸기

* refactor: responsive Table UI 로 리팩토링

* refactor: responsive Modal UI 리팩토링

* refactor: Table 타입 분리 및 Type네이밍 변경

* [TEST] 로그인 페이지 Storybook 테스트코드 구현 (#31)

* feat: TableListPage 와이어 프레임 구현

* refactor: grid 가운데 정렬 및 gap 추가

* feat: Table 컴포넌트 구현

* feat: AddTable 컴포넌트 구현
- 클릭 시 새로운 토론 생성

* feat: TableProps 추가

* 페이지 테이블 모달 구현

* refactor: 모달 와이어프레임 구현

* feat: 토론 시간 이름 및 토론 유형 UI 구현

* feat: 토론 유형 선택 토글 구현

* refactor: 토론 유형 토글 선택 기능 구현

* refactor: 토론 유형 토글 컴포넌트로 분리

* style: UI 색상 변경
- amber-500

* feat: CreateTableButton 컴포넌트 구현
- 테이블 만들기 버튼 클릭 시 '/' 로 이동

* refactor: Table 컴포넌트 라우팅 적용

* chore: dummy data 제거

* chore: dummy data 주석처리

* chore: dummy data 추가

* refactor: TableProps 타입 분리

* refactor: 닫…
katie424 pushed a commit that referenced this pull request Jun 1, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
katie424 pushed a commit that referenced this pull request Jun 1, 2025
* feat: Implemented TimerPage

* feat: Applied sound effect

And applied minor design changed

* refactor: Let TimerComponent change TimerPage's background

* fix: NEUTRAL 항목에 불필요한 아이콘 뜨는 오류 수정

* feat: Added keyboard event listener on Timer

* fix: 토론 순서 조작 시 발생하는 인덱스 초과 오버플로우 해결

* feat: 피드백에 따른 디자인 변경 사항 반영

* feat: Added loading and error screen on TimerPage

* feat: Applied feedbacks from PR

* fix: 타이머가 현재 debateInfo의 index를 불러오지 못하는 오류 수정

* refactor: 콘솔 로깅 비활성화

* fix: Storybook 출력되지 않는 문제 수정

- use-sound 패키지 제거하고 HTML 태그로 소리 출력
- 별도 컴포넌트를 거치지 않고 직접 gif 파일을 불러와 출력

* refactor: Removed unnecessary codes and comments

* refactor: Hoisted all data and functions to the root page

* fix: Cleared focus on button when space bar pressed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 기능 개발 fix 버그 수정 refactor 기능 변경 없이 코드만 변경했을 경우

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[FEAT] 타이머 화면 구현

4 participants