Skip to content

feat(client): 탭 로직 구현 - #349

Merged
jm8468 merged 14 commits into
developfrom
feat/tab-logic/#289
Aug 30, 2026
Merged

feat(client): 탭 로직 구현#349
jm8468 merged 14 commits into
developfrom
feat/tab-logic/#289

Conversation

@jm8468

@jm8468 jm8468 commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

📌 Summary

관련 있는 Issue를 태그해주세요. (e.g. > - #100)

📚 Tasks

  • 해당 PR에 수행한 작업을 작성해주세요.

🔍 Describe

  • 해당 PR에서 수행한 작업에 대해서 설명해주세요

@jm8468 jm8468 linked an issue Aug 30, 2026 that may be closed by this pull request
@github-actions github-actions Bot added ✨ Feat 새로운 기능 추가 🦄 임서준 웹 37기 임서준 labels Aug 30, 2026
@jm8468
jm8468 requested a review from jogpfls August 30, 2026 12:27
@github-actions
github-actions Bot requested a review from twossu August 30, 2026 12:27
@github-actions

github-actions Bot commented Aug 30, 2026

Copy link
Copy Markdown

🎨 Storybook 배포 완료

PR 작성자: @jm8468

🔗 배포된 Storybook 보기

@jm8468
jm8468 force-pushed the feat/tab-logic/#289 branch from b51e5c5 to 08b5b8c Compare August 30, 2026 13:15

@jogpfls jogpfls left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

굳 !!!!! 간단한 코멘트만 달았어요 !! 한 번만 확인해주세요 !!

Comment thread apps/client/src/router/path.ts Outdated

export type Routes = (typeof PATH)[keyof typeof PATH];

export const getMemoDetailPath = (memoId: number) => `${PATH.MEMO}/${memoId}`;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

요거는 사용처에서 직접 ${PATH.MEMO}/${memoId} 사용하는 건 어떨까용 ? 여기는 PATH 상수를 관리하는 파일이라서 여기 위치하기엔 애매한 것 같아요 !!

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Comment thread apps/client/src/router/path.ts Outdated
LOGIN_CALLBACK: '/oauth/callback',
MEMO: '/memo',
MEMO_NEW: '/memo/new',
/** 라우트 정의용 패턴이에요. 실제 경로는 getMemoDetailPath로 만들어요. */

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

주석 정리해주시면 아리가또 고자이마스

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

layout을 직접 만들지 말고 dashboard-layout에서 관리하는건 어떨까용 ??

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

[카톡으로 대화 완료!]

Comment on lines +17 to +19
title: memo.title,
content: memo.content,
createdAt: memo.createdAt,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍🏻

@jm8468
jm8468 merged commit 791c9f2 into develop Aug 30, 2026
2 checks passed
@jm8468
jm8468 deleted the feat/tab-logic/#289 branch August 30, 2026 14:34
jogpfls added a commit that referenced this pull request Aug 31, 2026
* Fix(client): OAuth callback URL을 올바른 경로로 협의 후 OAuthRedirectGuard 제거 (#247)

* fix: 올바르지 않은 콜백 url을 방지하기 위해 구현했던 인증 가드 제거

* fix: 구글 코드 교환을 위한 API 엔드포인트 경로 수정

* fix: 로그인 콜백 엔드포인트 상수 이름 수정

* fix: 로그인 콜백 엔드포인트 상수 이름 수정

* chore: react-router 버전 업데이트(7.18.0) (#248)

* Feat(client): FilterListItem 컴포넌트 구현 (#252)

* feat: FilterListItem 컴포넌트 구현

* feat: aria-hidden 접근성 추가

* fix: props 명 변경 (`tag` -> `tagName`)

* Refactor(client): layout 구조 리팩토링 및 errorBoundary 구조 수정 (#251)

* fix: 레이아웃 파일명 이름을 private-layout에서 dashboard-layout으로 변경하여 ui만 책임지도록 변경

* fix: 디자인 수정 사항에 맞게 배경색상 변경

* fix: GlobalErrorBoundary를 App 컴포넌트에 추가하고 과하게 분리된 레이아웃 파일 삭제

* fix: RouteGuard에서 children prop 제거 및 Outlet 사용으로 수정

* fix: RouteGuard에서 'common' 모드 제거

* fix: router의 errorBoundary로 에러 처리

* fix: OAuthRedirectGuard 컴포넌트 삭제

* fix: 삭제된 로그인 콜백 API 엔드포인트 추가

* fix: 브랜치 히스토리 문제 해결

* fix: 브랜치 히스토리 문제 해결

* fix: 레거시 파일 삭제

* feat: 랜딩과 로그인 페이지에서 사용되는 header를 auth-layout으로 분리

* feat: 인증 및 대시보드 라우트 구성 요소 추가 및 레이아웃 수정

* fix: 불필요한 아이콘 임포트 제거

* fix: 라우터에서 RootLayout을 RootRoute로 변경

* fix: 로그인 링크를 a 태그에서 Link 컴포넌트로 변경

* fix: 사이드바 컴포넌트 위치를 layouts 폴더의 하위로 이동

* fix: 사이드바 컴포넌트의 임포트 경로 수정

* Chore(client, cds-ui): tag API 스펙 변경 반영 및 네이밍 통일 (#265)

* chore: 스키마 타입 업데이트

* fix: tag api 스펙 변경 반영

* fix: LABEL_KEY를 TAG_KEY로 변경하여 태그 API 스펙 반영

* fix: label에서 tag로 바뀐 필드명 적용

* fix: labelIds를 tagIds로 변경하여 태그 API 스펙 반영

* Refactor(client): Swagger 인증 적용에 따른 openapi-typescript 타입 생성 스크립트 수정 (#260)

* chore: swaagger 인증 적용에 따른 스크립트 변경

* chore: .env.example 파일에 Swagger 인증 추가

* fix: 잘못된 import 경로 수정

* Feat(client): SelectedMemo 컴포넌트 구현 (#249)

* feat: SelectedMemo 컴포넌트 구현

* fix: SelectedMemo 제거 버튼 prop 네이밍 변경

* refactor: SelectedMemo 관련 사용처 제거

* fix: 이슈 템플릿에서 Tasks 필수 작성 제거 (#275)

* Feat(client): MemoTab 컴포넌트 구현 (#269)

* feat: MemoTab 컴포넌트 구현

* fix: delete Icon의 사이즈 수정

- 32 -> 24

* feat: 탭 닫기 버튼에 aria-label 추가

* refactor: button이 중첩되지 않도록 변경

- 서로 다른 두 버튼 요소를 형제관계가 되도록 변경
- 탭 닫기 버튼에만 absolute position 적용

* refactor: 탭 닫기 버튼의 접근성 개선

* feat: 컴포넌트에 transition 추가

* chore: 주석 스타일 변경

* refactor: hover와 selected에 대한 스타일 책임 원천을 한 곳으로 축소

* Feat(client): 검색 모달 SearchBar 컴포넌트 구현 (#267)

* Feat(client): AI 답변 UsedMemoBadge 컴포넌트 구현 (#270)

* Feat(client): sidebar 컴포넌트 리디자인 반영 및 페이지 개편 반영 (#258)

* feat: 사이드바 아이템 컴포넌트 구현

* fix: SidebarItemProps의 itemText를 content로 변경

* feat: flat한 형식의 데이터를 트리 노드 형태로 전환하는 util 함수 구현

* feat: 트리 형식의 sidebar item 컴포넌트 구현

* feat: 페이지 개편과 리디자인 요구사항에 맞게 route 경로 및 path, 페이지 반영

* feat: generate:types 스크립트에 환경 변수 기반 인증 추가 및 스키마 업데이트

* feat: 사이드바 구현

* fix: 아이콘 컴포넌트의 스타일에 flexShrink 속성 추가

* feat: 사이드바 항목에 툴팁 컴포넌트 연결

* feat: 검색 모달 컴포넌트 연결

* fix: collapsedSidebar 선택자에 '&' 추가로 스타일 적용 수정

* fix: 사이드바 항목에 툴팁 표시 방식을 css로 처리

* refactor: 사이드바 섹션별로 파일 분리

* fix: 사이드바 관련 컴포넌트 및 스타일 파일 디자인시스템에서 삭제

* fix: generate:types 스크립트 간소화

* fix: 오타 수정

* fix: 함수 분리

* fix: buildTree 함수의 부모 노드 처리 로직 수정

* fix: buildTagTree 삭제 후 buildTree를 사용처에서 직접 사용하도록 수정

* fix: SidebarContext에서 setExpanded을 expand와 collapse로 변경하여 명확한 함수 이름 사용

* refactor: SidebarMenuSection 및 SidebarTagSection에서 props 제거 및 내부 상태 관리로 변경

* feat: MOCK_TAG에 졸업 프로젝트 관련 자식 태그 추가

* fix: SidebarItem에서 content가 null이 아닐 때만 텍스트를 렌더링하도록 수정

* fix: useSidebar의 toggle 함수를 toggleSidebar로 이름 변경

* refactor: SidebarItemProps에서 ButtonHTMLAttributes를 Pick으로 변경하여 필요한 속성만 포함

* feat: SidebarMenuSection 및 SidebarTagSection에 onExpand prop 추가

* fix: toggle 함수를 toggleSidebar로 이름 변경

* feat: API 명세에 맞게 재구현

* fix: props 전개 순서 수정

* fix: hasChildren 변수를 사용하여 자식 태그 렌더링 조건 변경

* feat: tag 타입 적용

* Feat(client): 커넥터 라인 컴포넌트 구현 및 사이드바 연결 (#280)

* feat: 트리 구조를 위한 커넥터 라인 컴포넌트 추가

* feat: TreeLine 컴포넌트를 사용하여 SidebarTagItem 및 SidebarTagSection의 구조 개선

* fix: sidebar가 expand 상태일 때 태그 섹션 위치 조정

* fix: 최상위 목록 스타일 추가 및 간격 설정

* fix: TreeLineRootProps 인터페이스 제거

* fix: 최상위 태그 간의 gap 주석 추가

* chore: 임시 태그 데이터 파일 삭제

* fix: 섹션마다 아이템이 선택되는 문제 해결

* fix: 태그 타입 정의 및 필터링 로직 추가

* refactor: 사이드바 선택 상태를 유니온 타입으로 변경하고 라우팅 책임 이동

* feat: 태그 넘칠 시 스크롤 구현

* Feat(client): SuggestedMemoList 컴포넌트 구현 (#273)

* feat: SuggestedMemoItem 컴포넌트 구현

* feat: Icon 컴포넌트에 shrink style 추가

- 추후 cn으로 변경 필요

* feat: SuggestedMemoList 컴포넌트 구현

* refactor: isDisabled -> isSelected로 변경

* fix: aria-label이 명시적인 의미를 가지도록 개선

* refactor: 정책을 드러내기 위한 코드 제거

- 백엔드에서 추천 메모는 최대 3개만 보내도록 관리해요.
- 해당 정책에 대한 책임 원천은 백엔드에 있어서 프론트 코드에서는 관련 코드를 제거해요.

* refactor: aria-label에 `추천` 추가

* refactor: 추천 메모가 없을 때의 렌더링 책임을 상위 컴포넌트로 이동

* refactor: suggested-memo-list의 폴더 위치 이동

* chore: 숨은 정책을 드러내기 위한 주석 추가

* fix: 영역 전체가 드롭다운 버튼이 되도록 수정

* feat: 드롭다운이 닫힐 때의 애니메이션 추가

* fix: 드롭다운의 외부 클릭 시 드롭다운이 접히도록 수정

* fix: Icon 컴포넌트 style에서 중복된 flexShrink 속성 제거

리베이스 과정에서 이 브랜치의 flexShrink 추가 커밋과 develop에
이미 병합된 동일 변경이 충돌 없이 겹쳐 들어가면서 TS1117 발생

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TYYcNBNZ2VKVikcHxddpZc

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

* Refactor(client): ai-answer 컴포넌트 리디자인 반영 (#277)

* refactor: AI 답변 컴포넌트 리디자인 기본 ui 반영

* fix: content 영역의 whiteSpace 속성 추가

* refactor: AI 메시지 기존 컴포넌트 삭제

* feat: 마크다운 라이브러리, 적용

* refactor: 마크다운 라이브러리 적용 되돌리기

* fix: AiAnswerProps에서 onRegenerate, onSaveToMemo를 필수로 변경

* refactor: ai-answer 클래스네이밍 가독성 있게 변경

* refactor: 지연님의 UsedMemoBadge컴포넌트로 교체

* fix: ai-answer 제목 grey800 변경

* Refactor(client): PromptInput 컴포넌트 리디자인 적용 (#272)

* refactor: PromptInput 및 PromptOption 컴포넌트 ai-panel폴더로 이동

* refactor: 버튼 sm 컴포넌트 비활성화 상태의 배경색 수정

* fix: selected-memo container 스타일에서 높이 추가

* fix: PromptOption border 안쪽으로 그려지도록 스타일 개선

* fix: tooltip container의 whiteSpace 속성 추가

* refactor: PromptInput 스타일 개선 및 border가 안쪽으로 그려지도록 수정

* refactor: PromptInput 컴포넌트의 props 수정 및 선택된 메모 표시 기능 추가

* refactor: PromptOption 컴포넌트의 옵션 타입 제거 및 선택 로직 간소화

* refactor: PromptInput 컴포넌트의 textarea 자동 높이 조정 기능 추가

* refactor: prompt-input 컴포넌트에서 선택된 메모가 많을경우 스크롤 되도록 수정

* fix: PromptInput 컴포넌트에서 선택된 메모의 id와 title 구조 분해 할당으로 개선

* fix: PromptInput 및 PromptOption 컴포넌트에서 핸들러 이름을 일관되게 수정

* fix: PromptInput/PromptOption 접근성 및 트랜지션 디테일 정리

* feat: PromptInput 컴포넌트의 스타일을 recipe로 변경하고 드래그 오버 상태 추가

* fix: PromptInput 컴포넌트에서 onChange 핸들러를 인라인으로 수정

* fix: PromptInput 컴포넌트에서 선택된 메모 조건 인라인으로 변경

* fix: PromptInput 컴포넌트에서 onRemoveMemo를 필수로 변경

* refactor: PromptInput 컴포넌트를 AiPrompt에 통합하고 props 정리

* refactor: PromptInput 컴포넌트의 타입을 스키마 기반으로 정리

* fix: PromptInput 컴포넌트에서 IME 조합 중 Enter 전송 방지

* refactor: PromptOption의 옵션 선택 가드 로직을 상위 컴포넌트로 이동

* refactor: PromptInput/PromptOption의 option 타입을 PromptInputValueType 기반으로 통일

* Refactor(client): 트리뷰 파일 구조 리팩토링 (#257)

* fix: 불필요 삼항연산자 삭제

* refactor: 커스텀 Edge 관련 코드 개선

- defaultEdgeOptions로 Edge의 기본 스타일 지정
- tree-custom-edge-label.tsx 삭제
- custom-edge로 이름 변경

* refactor: util 함수 하나로 통합

* refactor: 유틸함수의 코드 품질 개선

- 매직넘버 상수화
- 변수명 변경
- Array.reduce() 로직 최적화
- 가독성 개선

* refactor: index.ts 개선

외부로 export 되는 컴포넌트만 index.ts에 존재하도록 수정

* refactor: Handle 컴포넌트의 코드 품질 개선

- tree-custom-handle을 삭제하고 <Handle> 내부 attribute로 속성 제어
- (응집도) tree-memo-list와 tree-memo-list-node를 병합

* refactor: 파일구조 변경

- detail-modal과 tree-memo를 `tree-memo-list-node` 폴더 내로 이동
- TreeBaseMemoNode -> TreeMemoBaseNode 로 이름 변경

* refactor: 불필요한 폴더 깊이 축소

- modal/confirm-modal -> confirm-modal로 폴더 깊이 변경

* refactor: 인터페이스 중복 수정

- detail-modal에서 인터페이스를 import하는 방향으로 수정

* refactor: useSingleAndDoubleClick 훅 이동

- 응집도 면에서 함께 수정되는 파일을 같은 디렉토리에 두었어요.

* fix: 객체 리터럴 중복 생성 방지

* refactor: 폴더 위치를 component 안으로 이동

* refactor: 렌더링 깜빡임 개선

* fix: import 경로 수정

* fix: 더블 클릭 훅 제거

* refactor: label -> tag로 네이밍 변경

* fix: ConfirmModal import 문제 해결 (#290)

* feat: PR 리뷰어 공정 자동 할당 기능 추가 (#296)

* Feat(cds): tag 공통 컴포넌트 리디자인 적용 (#256)

* feat: 태그 norma버전 ui 구현

* fix: sm 사이즈 글자 밀림 해결

* Merge branch 'develop' of https://github.com/TEAM-CLUSTAR/CLUSTAR-CLIENT into feat/tag-component-redesign/#241

* feat: 태그 서브 컬러 10종 추가 및 색상 매핑 정리

* feat: 태그 컴포넌트 리디자인 및 삭제 버튼 추가

* fix: 태그 컴포넌트의 스타일 수정 및 글자 가운데 맞게

* Merge branch 'develop' of https://github.com/TEAM-CLUSTAR/CLUSTAR-CLIENT into feat/tag-component-redesign/#241

* refactor: 태그 컴포넌트의 색상 타입 정의를 통합하고 불필요한 파일 삭제

* refactor: 카드 컴포넌트에서 사용되는 태그컴포넌트로 교체

* fix: 카드 컴포넌트의 태그 타입을 백엔드 스키마에 맞게 수정하고 태그 크기 변경

* fix: 태그 컴포넌트의 색상 서버로 부터 받아서 사용하도록 수정

* refactor: cds-ui에서 사용하지 않는 Label/LabelList 컴포넌트 삭제

Tag 컴포넌트로 완전히 대체되어 더 이상 쓰이지 않는 Label,
LabelList 컴포넌트와 label-color-map 상수를 제거합니다.

* refactor: 메모 작성 화면의 태그 선택을 실제 백엔드 태그로 전환

하드코딩된 5개 라벨 대신 useGetTag()로 가져온 실제 태그 목록을
드롭다운에 표시하고, 선택된 태그를 colorHex 기반 Tag 컴포넌트로
렌더링하도록 수정합니다. 메모 저장 요청도 실제 태그명을
tagNames로 전달하도록 변경했습니다.

* refactor: 메모작성 탭의 태그 기반 색상 표시와 디테일모달의 태그 표시 제거

탭 색상이 더 이상 태그를 따라가지 않도록 관련 로직을 제거하고,
곧 삭제될 디테일모달에서도 태그 렌더링을 걷어냅니다.

* refactor: 태그 컴포넌트 및 관련 타입을 업데이트하고 전부 태그로 네이밍 교체

* refactor: 태그 컴포넌트에서 제거 가능 여부에 보더 스타일 반영

* fix: 태그 컴포넌트의 크기 변형에서 lineHeight 속성 제거

* fix: 태그 컴포넌트에서 불필요한 스타일 삭제

* refactor: ai 결과물 태그 스타일 적용

* refactor: 태그 컴포넌트에서 compoundVariants 제거

* fix: 태그 컴포넌트에서 ai 변형일 때 삭제 버튼 숨김

* refactor: 태그 컴포넌트 색상 매칭로 반영

* refactor: 태그 컴포넌트의 color/action prop 재설계 및 색상 매칭 상수 cds-ui로 이동

* feat: tag 컴포넌트 스토리북 작성

* fix: 태그 컴포넌트에서 color prop을 필수로 변경

* refactor: 태그 컴포넌트에서 action prop 제거

* fix: ai결과물일때 remove사용하지 못하게의 경우를 다시 원복

* fix: 태그 컴포넌트에서 ai지식 다시 제거

* refactor: 태그 컴포넌트 fill/outlined variant 기반으로 재설계

* refactor: 태그 타입에서 중복된 TagBaseProps 교차를 상위로 통합

* fix: 카드 컴포넌트 그라데이션 스타일을 isAiGenerated 대신 isNew로 분리

* fix: 태그 컴포넌트의 불필요한 removable 상태 제거

* refactor: onRemove 핸들러를 rest.onRemove로 직접 참조하도록 변경

* refactor: 트리뷰 라벨 관련 코드 정리

* Feat(client): 태그 선택 트리 컴포넌트 구현 (#287)

* feat: 태그 선택 트리 아이템 컴포넌트 구현

* feat: 태그 선택 트리 컴포넌트 구현

* fix: 태그 선택 트리 컴포넌트의 props 수정

* fix: 루트 태그아이템 하단 간격 0.8rem 맞추기

* feat: 태그 선택 트리 아이템 부드럽게 열리는 스타일 추가

* fix: expandButton의 hover상태일때 배경색 추가

* fix: 자식태그 하나만 있을 경우 부모태그 하단선 안 그려지도록 스타일 수정

* refactor: 태그 트리 상태를 Set으로 관리해 성능 개선

* fix: 태그 트리 선택 아이템의 스타일 변경 사항 반영

* feat: chevronButton 부드러운 동작 스타일 추가

* fix: tag-check-tree 컴포넌트명 변경

* chore: 스키마 업데이트 (#308)

* Refactor(client): AI Panel 컴포넌트 feature 영역으로 이동 (#311)

* refactor: AI Panel 컴포넌트 feature 영역으로 이동

* refactor: 미사용 AI Prompt 제거

* refactor: AI Panel 컴포넌트 구조 정리

* refactor: new-memo-page내에서 사용하지 않는 파일과 패키지 삭제 (#306)

* refactor: 트리뷰 파일을 페이지 폴더 내부로 이동 (#309)

* Feat(client): ParentTagList 컴포넌트 구현 (#292)

* refactor: SidebarItem을 NavItem으로 네이밍 변경 및 공용컴포넌트로 위치 이동

* feat: 부모 태그 리스트 컴포넌트 구현

* refactor: 스크롤바 스타일이 모든 요소에 적용되도록 전역 스타일 분리

* fix: NavItem을 MenuItem으로 변경

* refactor: MenuItem의 type을 size로 변경

* Feat(client): TagSelectField 컴포넌트 구현 (#298)

* feat: 태그 선택 필드 컴포넌트 구현

* feat: 태그 입력 필드 컴포넌트 구현

* fix: TagInputField 컴포넌트의 스타일 수정

* fix: TagInputField 컴포넌트의 placeholder 수정 및 포커싱 벗어낫을 시 기본 태그로 수정

* fix: 스키마 업데이트에 따라 태그 필드 컴포넌트의 불필요한 nullish 처리 제거

* fix: TagInputField의 value/onChange 제거

* fix: selectedTags.length 조건을 명시적으로 0 비교하도록 수정

* fix: onEnter 호출 방식 수정

* Feat(client): EmptyState 컴포넌트 구현 (#318)

* feat: empty state 이미지 추가

* feat: EmptyState 컴포넌트 구현

* Feat(client): MemoSearchListItem 컴포넌트 구현 (#281)

* feat: 태그 norma버전 ui 구현

* fix: sm 사이즈 글자 밀림 해결

* Merge branch 'develop' of https://github.com/TEAM-CLUSTAR/CLUSTAR-CLIENT into feat/tag-component-redesign/#241

* feat: 태그 서브 컬러 10종 추가 및 색상 매핑 정리

* feat: 태그 컴포넌트 리디자인 및 삭제 버튼 추가

* fix: 태그 컴포넌트의 스타일 수정 및 글자 가운데 맞게

* Merge branch 'develop' of https://github.com/TEAM-CLUSTAR/CLUSTAR-CLIENT into feat/tag-component-redesign/#241

* refactor: 태그 컴포넌트의 색상 타입 정의를 통합하고 불필요한 파일 삭제

* refactor: 카드 컴포넌트에서 사용되는 태그컴포넌트로 교체

* fix: 카드 컴포넌트의 태그 타입을 백엔드 스키마에 맞게 수정하고 태그 크기 변경

* fix: 태그 컴포넌트의 색상 서버로 부터 받아서 사용하도록 수정

* refactor: cds-ui에서 사용하지 않는 Label/LabelList 컴포넌트 삭제

Tag 컴포넌트로 완전히 대체되어 더 이상 쓰이지 않는 Label,
LabelList 컴포넌트와 label-color-map 상수를 제거합니다.

* refactor: 메모 작성 화면의 태그 선택을 실제 백엔드 태그로 전환

하드코딩된 5개 라벨 대신 useGetTag()로 가져온 실제 태그 목록을
드롭다운에 표시하고, 선택된 태그를 colorHex 기반 Tag 컴포넌트로
렌더링하도록 수정합니다. 메모 저장 요청도 실제 태그명을
tagNames로 전달하도록 변경했습니다.

* refactor: 메모작성 탭의 태그 기반 색상 표시와 디테일모달의 태그 표시 제거

탭 색상이 더 이상 태그를 따라가지 않도록 관련 로직을 제거하고,
곧 삭제될 디테일모달에서도 태그 렌더링을 걷어냅니다.

* refactor: 태그 컴포넌트 및 관련 타입을 업데이트하고 전부 태그로 네이밍 교체

* refactor: 태그 컴포넌트에서 제거 가능 여부에 보더 스타일 반영

* fix: 태그 컴포넌트의 크기 변형에서 lineHeight 속성 제거

* fix: 태그 컴포넌트에서 불필요한 스타일 삭제

* refactor: ai 결과물 태그 스타일 적용

* refactor: 태그 컴포넌트에서 compoundVariants 제거

* fix: 태그 컴포넌트에서 ai 변형일 때 삭제 버튼 숨김

* refactor: 태그 컴포넌트 색상 매칭로 반영

* refactor: 태그 컴포넌트의 color/action prop 재설계 및 색상 매칭 상수 cds-ui로 이동

* feat: tag 컴포넌트 스토리북 작성

* fix: 태그 컴포넌트에서 color prop을 필수로 변경

* refactor: 태그 컴포넌트에서 action prop 제거

* fix: ai결과물일때 remove사용하지 못하게의 경우를 다시 원복

* fix: 태그 컴포넌트에서 ai지식 다시 제거

* refactor: 태그 컴포넌트 fill/outlined variant 기반으로 재설계

* refactor: 태그 타입에서 중복된 TagBaseProps 교차를 상위로 통합

* fix: 카드 컴포넌트 그라데이션 스타일을 isAiGenerated 대신 isNew로 분리

* feat: MemoSearchListItem 컴포넌트 구현

* refactor: memo-search-modal을 features 레이어로 이동

* fix: Tag 컴포넌트 변경사항 반영

* fix: 메모 검색 리스트 아이템 버튼 구조 개선

---------

Co-authored-by: twossu <nadao202@naver.com>

* Chore(client): 메인 페이지, 메모 작성 페이지 이름 변경 (#320)

* chore: 페이지 이름 변경

* chore: 변경된 페이지 코드 반영

* Feat(client): CardList 컴포넌트 구현 (#284)

* chore: 기존에 있던 카드 리스트 컴포넌트 삭제

* fix: 카드 컴포넌트의 태그 타입을 백엔드 스키마에 맞게 수정 및 props 명 수정

* feat: 메모 리스트 컴포넌트 구현

* feat: memoList 컴포넌트를 memo-page에 연결

* feat: 무한 스크롤 훅 추가 및 메모 페이지에 연결

* refactor: 태그 파라미터 변수명 수정 및 메모 리스트 데이터 변수명 변경

* chore: memoListContainer의 최대 및 최소 너비 계산 수정

* chore: memo-page의 컨테이너 스타일 수정 및 배경 제거

* fix: Memoist 컴포넌트에서 불필요한 Fragment 제거

* fix: Card 컴포넌트에 key 속성 추가

* chore: Card 컴포넌트에서 불필요한 공백 제거

* fix: 이름 수정 및 스타일 조정

* fix: memo-list 컴포넌트의 그리드 스타일 및 구조 수정

* fix: memo-list 컴포넌트의 그리드 스타일 상수 정리

* fix: memo-list 컴포넌트의 그리드 스타일 함수에서 괄호 수정

* refactor: Card 컴포넌트 props를 CardInfoType 기반 개별 프로퍼티로 변경

* fix: CardInfoType에 isNew 속성 추가

* chore: 페이지 변동으로 인한 폴더 위치 변경

* fix: card 컴포넌트의 폴더 위치 변경

* fix: card 컴포넌트 명을 memo-card로 변경

* fix: 컴포넌트 네이밍을 직관적으로 변경

* chore: 충돌 해결

* Feat(client): 메모 검색 모달 구현 (#288)

* refactor: SearchBar를 memo-search-modal feature로 이동

* refactor: 검색 모달 하위 컴포넌트 폴더 구조 정리

* feat: 메모 검색 모달 구현

* refactor: 메모 검색 모달 중간 export 제거

* feat: 메모 검색 모달 EmptyState 적용

* feat: 사이드바 검색 모달 연결

* Refactor(client, cds-ui): sidebar 스타일 및 애니메이션 개선 (#335)

* feat: slideInLeft 애니메이션 추가

* refactor: 대시보드 레이아웃 및 사이드바 스타일 개선

* fix: top 속성 추가

* Feat(client): 마크다운 에디터 직접 구현 (#316)

* chore: quill 라이브러리 의존성 제거

* fix: react-quill 스타일시트 링크 제거

* feat: markdown-editor 구현

* feat: selection.ts 파일로 분리 및 선택·범위 조작 기능 구현

* feat: 인라인 서식 기능 추가 및 관련 테스트 케이스 구현

* feat: 마크다운 에디터 스타일 구현

* feat: 태그 클래스 추가 및 블록 스타일 적용

* feat: 마크다운 에디터로 전환

* chore: 파일 이름 변경

* chore: 파일 이름을 commands에서 markdown으로 변경

* fix: 마크다운 에디터 기능 함수 분리

* fix: 불필요한 주석 삭제

* fix: 구조화뷰 페이지 진입점 제거 (#340)

* Feat(client): File 컴포넌트 구현 (#330)

* feat: File 컴포넌트 구현

* refactor: 파일 위치를 memos-page로 이동

* refactor: File 컴포넌트를 shared/memo-editor로 이동

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nsgiCY3DsqJBjJb46xshQ

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* Feat(client): DeleteMemoModal 컴포넌트 구현 (#331)

* feat: DeleteMemoModal 컴포넌트 구현

* refactor: 폴더 위치를 memos-page로 이동

* refactor: DeleteMemoModal 컴포넌트를 shared/memo-editor로 이동

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nsgiCY3DsqJBjJb46xshQ

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* Feat(client): FilterModal 컴포넌트 구현 (#304)

* feat: 필터 모달 컴포넌트 스타일 추가

* feat: 필터 모달 컴포넌트 구현

* feat: 필터 모달 컴포넌트에서 선택된 태그 상태 관리 개선

* fix: 부모태그리스트 컴포넌트의 최대 높이 스타일 제거

* fix: 적용하기 버튼은 항상 활성화

* refactor: 필터 모달의 선택 태그 상태를 부모에서 주입받도록 변경

* refactor: 버튼 컴포넌트 리디자인 반영

* fix: 필터모달에서 공통버튼컴포넌트로 변경

* feat: 필터 모달에 빈 상태 UI 추가

* fix: 필터 모달에서 태그 데이터를 올바르게 가져오도록 수정

* refactor: 태그 평탄화 목록을 트리 왕복 없이 바로 조회하도록 변경

FilterModal이 트리(useGetTag)를 만든 뒤 다시 flattenTree로 펼쳐서
평탄한 목록을 얻고 있어 불필요한 왕복이 있었음. 같은 쿼리에 다른
select만 붙인 useFlatTags로 바로 평탄한 목록을 가져오도록 변경하고,
더 이상 쓰이지 않는 flattenTree는 제거

* Feat(client): 필터 버튼 및 필터 칩 리스트 ui 구현 (#322)

* feat: 필터 버튼 컴포넌트 구현

* feat: 헤더 컴포넌트에 필터 버튼 추가

* feat: 필터 칩 리스트 컴포넌트 추가

* feat: 헤더 컴포넌트에 필터칩리스트 배치 및 스타일 적용

* fix: 네이밍 직관적으로 통일성있게 변경

* fix: 스크린 리더 중복 안내 제거 및 필터 상태 노출

* fix: header컴포넌트 memos내로 폴더 이동

* refactor: PageTitle 컴포넌트를 제거하고 header에 인라인 처리

* feat: 헤더 반응형 스타일 적용

* fix: <span> 태그로 필터링 텍스트 변경

* fix: 필터 버튼의 aria-label 속성 제거

* fix: 필터 칩 리스트의 aria-hidden 속성 제거

* fix: 필터 버튼 비활성 상태에서 hover 시 스타일 추가

* Feat(client): Ai panel redesign (#313)

* feat: ic_star_gra 아이콘 추가

* feat: check 아이콘 추가

* fix: AI 추천 메모 추가 버튼 및 드롭다운 동작 개선

* feat: AI Panel 헤더 컴포넌트 구현

* fix: AI Answer 툴팁 적용

* feat: AI Panel Chat 컴포넌트 구현

* refactor: AI Panel 타입 파일명 명확화

* refactor: AI Panel 채팅 훅 로직 정리

* refactor: AI Panel 컴포넌트 구현

* refactor: AI 패널 상태를 context로 관리

* feat: AI 패널 FAB 표시 상태 연결

* refactor: AI 패널 상태를 context로 관리

* refactor: AI 채팅방 생성 시점 정리

* refactor: AI 패널 입력 상태 제어 구조 정리

* refactor: AI 패널 접근성 구조 정리

* refactor: AI 패널 empty view 컴포넌트 분리

* fix: AI 패널 heading 접근성 연결

* Feat(client): TagPopover 컴포넌트 리디자인 반영 (#301)

* feat: TagInputFieldProps 인터페이스를 type.ts 파일로 분리

* feat: TagPopover 컴포넌트 ui 구현

* fix: selectedCount 속성을 selectedIds.length로 수정

* feat: TagPopover 컴포넌트 외부 클릭 시 닫기 기능 구현

* Docs(project): README.md 폴더 구조 설명 수정 (#343)

* docs: readme 폴더 구조 수정

* docs: README.md에 기술 스택 설명 추가

* fix: 주석 공백을 일관되게 수정

* Feat(client): MemoEditor 컴포넌트 구현 (#332)

* feat: File 컴포넌트 구현

* refactor: 파일 위치를 memos-page로 이동

* refactor: File 컴포넌트를 shared/memo-editor로 이동

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nsgiCY3DsqJBjJb46xshQ

* feat: DeleteMemoModal 컴포넌트 구현

* refactor: 폴더 위치를 memos-page로 이동

* refactor: DeleteMemoModal 컴포넌트를 shared/memo-editor로 이동

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nsgiCY3DsqJBjJb46xshQ

* feat: File 컴포넌트 구현

* refactor: tag-selet-field 이동

- 메모 디테일에서도 tag-select-field가 사용돼서 shared로 이동해요

* chore: 스키마 재생성 (updatedAt, recent-viewed 반영)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RU2hgHonBDsyRzYdnJyepn

* feat: MemoDetail 컴포넌트 구현

* fix: tag-input-field를 shared로 이동해요

- 참조가 2곳 이상에서 발생해서 shared로 옮겼어요

* refactor: MemoDetail을 memos-page로 이동

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nsgiCY3DsqJBjJb46xshQ

* refactor: memo-editor 컴포넌트 구현

* chore: TODO 주석 추가

* chore: 삭제 TODO 추가

* chore: MemoEditor에 주석 삭제 및 추가

* refactor: 파일 내에서 함수의 위치 이동

* fix: memo-detail 제거

* fix: MemoEditor -> MemoDetail로 네이밍 변경

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* Feat(client): memo-detail 뷰에 markdown-editor 적용 (#345)

* chore: AGENTS.md 파일을 .gitignore에 추가

* chore: 메모 디테일 페이지에 마크다운 적용

* Feat(client): 메모 목록 페이지 태그 필터 기능 연동 (#337)

* feat: 메모 목록 페이지에 태그 필터 상태 연동

URL 쿼리 파라미터로 다중 태그 필터를 관리하고, 필터 적용/삭제 시
목록과 헤더 칩에 반영되도록 연결

* fix: 필터링중 메모가 없어도 header가 보이도록 수정

* fix: 카드 개수가 적을 때 목록이 중앙 정렬되던 문제 수정

* refactor: activeTagIds 변수로 필터링 로직 개선 및 flatTags에서 Map으로 변환

* fix: setSearchParams를 사용하여 필터 적용 로직 개선

* refactor: filterChips 생성 로직을 flatMap으로 개선

* chore: memo-detail 관련 컴포넌트 폴더 위치 변경 (#347)

* Feat(client): 메모 드래그 앤 드롭 AI 패널 연동 (#341)

* refactor: 메모 카드 드래그 앤 드롭 스타일 추가

* feat: 메모 드롭 오버레이 컴포넌트 및 스타일 추가

* fix: prompt-input컴포넌트에 드래그상태 스타일 제거

* feat: 메모 카드 드래그 시작 및 고스트 이미지 구현

* feat: AI 패널에 메모 드롭 존 연결

* feat: 메모 목록 페이지에 AI 패널 드래그앤드롭 연동

* fix: 드래그 고스트 이미지의 aria-hidden 속성 추가

* Feat(client): 검색 모달 메모 조회 API 연동 (#324)

* feat: 메모 검색 모달 구현

* refactor: 메모 검색 모달 중간 export 제거

* feat: 검색 모달 메모 조회 API 추가

* feat: 검색 모달 조회 상태 훅 추가

* feat: 최근 메모 출처별 검색 모달 UI 처리

* feat: 검색 모달에 메모 조회 상태 연결

* refactor: 메모 검색 쿼리 옵션 구조 정리

* refactor: 검색 결과 섹션 제목 계산 정리

* refactor: 메모 검색 API 타입 책임 정리

* refactor: 메모 검색 모달 container 계층 제거

* feat: 메모 검색 리스트 클릭 시 상세 경로 이동 연결

* feat(client): 탭 로직 구현 (#349)

* refactor: MemoTab 폴더 위치 변경

* feat: 탭 저장용 세션스토리지 유틸 구현

* feat: AddMemoButton 컴포넌트 구현

* feat: 탭용 Router, Layout 구현

* feat: 전체 메모 조회 페이지에서 메모 상세로 이동 가능

* fix: MemoDetail 컴포넌트 props 개선

* feat: memo/new url 경로 추가를 반영해요

* feat: 탭 로직 구현

* feat: active 탭을 닫을 때만 왼쪽 탭이 열리도록 변경

* fix: 새 메모 페이지의 무한 뒤로가기 버그 수정

* fix: MemoCardList만 스크롤되도록 변경

* fix: memo-tab의 테두리 강조 버그 수정

* chore: 주석 정리

* fix: getMemoDetailPath 함수 제거

* Feat(client): 에러/빈 상태 화면 공통 구조 정리 (#353)

* refactor: empty state 이미지 파일명 kebab-case로 통일

* feat: 공통 EmptyView 기반 NotFound 컴포넌트 구현

* feat: 전체 메모 empty view 이미지 연결

* refactor: 에러 페이지를 공통 fallback 컴포넌트로 분리

* Feat(client): 메모 작성 자동저장 로직 구현 (#352)

* fix: all_memo 네이밍을 memos로 변경

* fix: MEMOS_KEY의 ALL 값을 'all/memos'에서 'memos'로 변경

* fix: all_memo 네이밍을 memos로 변경

* feat: 메모 API 엔드포인트 및 타입 정의 추가

* fix: 스키마 데이터 타입 업데이트

* feat: 메모 삭제 기능 및 관련 타입, API 엔드포인트 추가

* feat: 수정 기능 API 구현

* fix: all_memo 네이밍을 memos로 변경

* feat: memo 페이지 진입 로직 구현

* refactor: 메모 API 및 타입 수정, null 처리 추가

* fix: useDeleteMemo 훅에서 memoId 인자 제거 및 DELETE 키 수정

* feat: 자동 저장 구현

* feat: presigned URL 발급 기능 추가 및 관련 타입 정의

* feat: 메모 첨부 파일 및 이미지 업로드 기능 추가

* fix: 메모 경로에 인덱스 로더 추가

* chore: 폴더 위치 변경

* Fix(client, cds-token): use-media-query 구현, ai-panel이 열릴 때의 따른 sidebar 열고닫힘 유무 수정 (#357)

* feat: ai 패널의 z-index에 ai-panel 업데이트 및 적용

* feat: 미디어 쿼리 상수 및 훅 추가

* feat: ai-panel 열고닫히는 상태에 따라 sidebar 열고 닫는 상태 정하는 로직 구현

* Feat(client): memos-page 태그 선택 흐름 연결 (#351)

* feat: memos-page 헤더 고정 스타일 적용

* feat: 메모 카드에 태그 선택 버튼 추가

* feat: 메모 카드 리스트에 태그 선택 기능 추가

* fix: MemoCardList에 누락된 onSelectTag prop 전달

타입 에러로 pre-push 훅(check-types)이 실패하던 문제 수정

* feat: TagPopover에 포커스 관리 기능 추가

* feat: 메모 상세 페이지에 태그 선택 Popover 추가

* feat: 메모 페이지에 태그 선택 이동 흐름 추가

* fix: MemoDetail 및 MemoPage에서 태그 선택 Popover의 기본 상태 변수 이름 변경

* fix: tag-popover 임시 빈 값으로 교체

* fix: memos-page에 스크롤 스타일 원복

* feat: tag-popover컴포넌트 페이지에 연결

* fix: memo-page.tsx develop 버전으로 원복

* fix: TagPopover 외부 클릭 시 팝오버가 닫히지 않던 문제 수정

* Feat(client): 사이드바 펼침 상태 유지 구현 (#359)

* feat: 사이드바 상태 저장 로직 개선 및 collapse 메서드 제거

* fix: 사이드바 불필요한 애니메이션 제거

* fix(scouter): 필터 모달·AI 패널 겹침 시 발생하는 z-index 레이어링 버그 수정 (#356)

* fix: 필터 모달 테두리가 배경 곡률과 어긋나는 문제 수정

Modal.Content를 감싸는 별도 div에 테두리와 배경을 그리고 있어서,
Modal.Content 자체의 borderRadius(16px)와 테두리 각도가 어긋나
네 모서리마다 직각 꼭지가 둥근 배경 밖으로 삐져나왔다.
검색 모달처럼 styles.container를 Modal.Content에 직접 얹어
같은 박스에서 배경과 테두리가 같은 radius를 공유하도록 맞췄다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BQYbPkKrY7RqW8ZVoitBMu

* refactor: z-index 스케일 100단위로 재정렬하고 sidebar 토큰 정리

레이어 값이 -2/-1/0/50/100/200/300/400처럼 단위가 뒤섞여 있어
새 레이어를 끼워 넣을 여백이 없었다. 전 구간을 100단위로 맞추고
overlay 두 개(panelOverlay, modalOverlay)만 실제 레이어보다
50 낮게 둬서 항상 자기 레이어 바로 아래 오도록 정리했다.

sidebar 토큰은 원래 사이드바 자체가 아니라 사이드바 안 툴팁이
빌려 쓰고 있었다. 정작 사이드바 nav에는 z-index가 없어서
sticky로 인해 생기는 스택 컨텍스트가 페이지 콘텐츠보다 아래로
밀리는 문제가 있었는데, 이 커밋에서는 이름만 tooltip으로 바로잡고
sidebar 자체의 z-index는 다음 커밋에서 추가한다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BQYbPkKrY7RqW8ZVoitBMu

* fix: 사이드바에 z-index가 없어 툴팁이 콘텐츠에 가려지는 문제 수정

sidebar nav는 position: sticky라 z-index 값과 무관하게 스택 컨텍스트를
만든다. 그런데 이 요소 자체에는 z-index가 없어서(auto) 전역 레벨이
0으로 취급됐고, 마찬가지로 sticky인 페이지 콘텐츠(memo-detail의
contentGroup, z-index: 1)가 사이드바 서브트리 전체보다 위로 올라왔다.
그 결과 사이드바 안 마이페이지 툴팁의 z-index(옛 sidebar 토큰, 100)는
사이드바 내부에서만 유효한 값이라 아무 효과가 없었다.

sidebar 자체에 zIndex.shell을 줘서 서브트리 레벨을 명시했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BQYbPkKrY7RqW8ZVoitBMu

* fix: AI 패널이 모달 딤보다 위에 렌더되는 문제 수정

AI 패널 컨테이너와 FAB가 모달 콘텐츠와 같은 z-index(modalContent, 400)를
쓰고 있었다. 값이 같으면 나중에 나온 DOM이 이기는데, 모달은 portal로
document.body 끝에 붙어 항상 뒤에 오니 지금까지는 우연히 모달이 위에
그려졌을 뿐 순서를 값으로 보장하지 않고 있었다.

더 큰 문제는 모달 딤(modalOverlay, 300 < 400)이 AI 패널보다 아래라
필터 모달을 열어도 오른쪽 AI 패널만 딤이 안 걸렸다. 모달 왼쪽/위/아래
바깥은 어둡고 오른쪽만 밝아서 같은 테두리인데 대비가 달라 보이고,
둥근 모서리도 흰 배경 위에서 뭉개져 보였다.

AI 패널을 앱 셸 레벨(shell, 200)로 낮춰 모달 딤 아래로 보냈다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BQYbPkKrY7RqW8ZVoitBMu

* fix: 툴팁 z-index를 tooltip 토큰으로 통일

세 곳의 hover 툴팁이 각자 다른 이유로 잘못된 값을 쓰고 있었다.
ai-panel-header, ai-answer는 modalContent(원래 400)를 그대로 빌려 썼고,
memo-detail의 tooltipBubble은 아예 default(0)라 sticky인 상위
contentGroup(1)보다 낮아 위로 펼쳐지는 툴팁이 그 아래 깔렸다.
전부 tooltip 토큰으로 바꿔 실제 역할이 이름에 드러나게 했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BQYbPkKrY7RqW8ZVoitBMu

* refactor: memo-tab 닫기 버튼의 불필요한 z-index 제거

closeTab은 position: absolute로 flex item인 selectTab 위에 이미
그려진다. z-index 없이도 페인트 순서상 absolute가 위라 값이
필요 없었다. 오히려 조상 중 스택 컨텍스트가 하나도 없어서 이
값(button, 옛값 200)이 루트까지 새어나가 AI 패널과 같은 레벨에
서 있는 상태였다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BQYbPkKrY7RqW8ZVoitBMu

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

* Feat(client): AI 패널 API 연동 (#362)

* feat: AI 패널 API 연동

* feat: AI 패널 채팅 상태와 API 응답 매핑 처리

* feat: AI 패널 추천 메모와 채팅 UI 동작 연결

* feat: 새 대화 생성 확인 모달 구현

* refactor: AI 패널 채팅 훅 책임 분리

* refactor: 추천 메모 타입과 클릭 핸들러 정리

* refactor: AI 패널 API 레이어를 feature 내부로 이동

* fix: 추천메모와 채팅 간격 추가

* Feat(client): tag-popover 태그 생성 기능 (#361)

* feat: 태그 생성 기능 추가 및 관련 API 구현

* fix: 부모 태그 미존재 시 태그 생성 로직 수정 및 훅 분리

* refactor: 부모 및 자식 태그 조회 관련 API 교체

* fix: 태그 부모/자식 조회 관련 팝오버 깜빡임 및 생성 엣지케이스 수정

* fix: 태그 입력 필드에서 포커스 아웃 시 입력값 초기화 기능 추가

* feat: 태그 입력 필드에서 슬래시 깊이 제한 기능 추가 및 관련 로직 수정

---------

Co-authored-by: jyeon03 <bjlyeon2003@naver.com>

* Chore(client): layout 관련 폴더와 sidebar 폴더 위치 변경 (#334)

* chore: sidebar 위치를 shared/layout에서 feature로 이동

* chore: layout 레이어 생성 및 폴더 이동

---------

Co-authored-by: 임서준 <84189784+jm8468@users.noreply.github.com>
Co-authored-by: 백지연 <147830921+jyeon03@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: 최윤하 <nadao202@naver.com>
Co-authored-by: jyeon03 <bjlyeon2003@naver.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat 새로운 기능 추가 🦄 임서준 웹 37기 임서준

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 메모 탭 로직 구현

2 participants