From cb60e7a43dcba284b881af7d6e31116e3a09eb18 Mon Sep 17 00:00:00 2001 From: Lectom C Han Date: Mon, 4 Aug 2025 19:30:12 +0900 Subject: [PATCH] =?UTF-8?q?=EB=86=92=EC=9D=B4=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO.md | 30 +--------------------------- viewer/src/components/Header.tsx | 8 ++------ viewer/src/components/MainLayout.tsx | 6 +++--- viewer/src/components/PageLayout.tsx | 4 ++-- viewer/src/components/PageTitle.tsx | 2 +- viewer/src/index.css | 2 +- 6 files changed, 10 insertions(+), 42 deletions(-) diff --git a/TODO.md b/TODO.md index b7df1af..ddfe931 100644 --- a/TODO.md +++ b/TODO.md @@ -1,29 +1 @@ -# Q&A 뷰어 프로젝트 TODO 리스트 - -## Phase 1: 기반 구축 및 핵심 기능 구현 - -- [x] `GEMINI.md`에 프로젝트 개요 및 개발 계획 정리 (완료: 2025-07-30 17:53:48) -- [x] `DynamicTable` 컴포넌트 구현 및 API 연동 (완료: 2025-07-30 17:53:48) -- [x] `DynamicForm` 컴포넌트 구현 및 API 연동 (완료: 2025-07-30 17:53:48) -- [x] 피드백 목록 페이지 (`FeedbackListPage`) 구현 (완료: 2025-07-30 17:53:48) -- [x] 피드백 생성 페이지 (`FeedbackCreatePage`) 구현 (완료: 2025-07-30 17:53:48) -- [x] 피드백 상세/수정 페이지 (`FeedbackDetailPage`) 구현 (완료: 2025-07-30 17:53:48) -- [x] React Router를 이용한 전체 페이지 라우팅 설정 (완료: 2025-07-30 17:53:48) -- [x] 테이블 UI/UX 개선 (행 클릭, 특정 필드 서식 지정 등) (완료: 2025-07-30 17:53:48) -- [x] 폼 UI/UX 개선 (필드 숨김, 읽기 전용 처리 등) (완료: 2025-07-30 17:53:48) - -## Phase 2: 기능 고도화 및 안정화 - -- [x] 동적 테이블 기능 고도화 (페이지네이션, 정렬, 필터링, 날짜범위, 행 확장 등) (완료: 2025-07-31 17:20:41) -- [x] 전역 상태 관리를 위한 Zustand 도입 (프로젝트 ID, 테마) (완료: 2025-07-31 17:20:41) -- [x] 상단 헤더 및 네비게이션 구현 (완료: 2025-07-31 17:20:41) -- [x] Light/Dark/System 테마 기능 구현 및 커스텀 테마 적용 (완료: 2025-07-31 17:20:41) -- [x] TypeScript 및 빌드 오류 디버깅 및 해결 (완료: 2025-07-31 17:20:41) -- [ ] 동적 폼에 데이터 유효성 검사 기능 추가 - -## Phase 3: 인증 및 배포 - -- [ ] OIDC 클라이언트 연동 및 인증 로직 구현 -- [ ] 로그인/로그아웃 및 인증 상태 관리 -- [ ] 인증이 필요한 라우트 보호 기능 적용 -- [ ] Docker를 이용한 배포 환경 구축 +2025-08-05 10:30:00 KST - 이슈 API 연동 및 UI 개선 완료 \ No newline at end of file diff --git a/viewer/src/components/Header.tsx b/viewer/src/components/Header.tsx index bc18590..b9de07c 100644 --- a/viewer/src/components/Header.tsx +++ b/viewer/src/components/Header.tsx @@ -12,11 +12,7 @@ const menuItems = [ { name: "Issue", path: "/issues", type: "issue" }, ]; -interface HeaderProps { - className?: string; -} - -export function Header({ className }: HeaderProps) { +export function Header() { const { projectId, channelId } = useSettingsStore(); const getPath = (type: string, basePath: string) => { @@ -29,7 +25,7 @@ export function Header({ className }: HeaderProps) { const homePath = `/projects/${projectId}`; return ( -
+
{/* Left Section */}
diff --git a/viewer/src/components/MainLayout.tsx b/viewer/src/components/MainLayout.tsx index e2c3ea8..7b4bab3 100644 --- a/viewer/src/components/MainLayout.tsx +++ b/viewer/src/components/MainLayout.tsx @@ -4,9 +4,9 @@ import { Header } from "./Header"; export function MainLayout() { return ( -
-
-
+
+
+
diff --git a/viewer/src/components/PageLayout.tsx b/viewer/src/components/PageLayout.tsx index f6c0e20..5fc6dcb 100644 --- a/viewer/src/components/PageLayout.tsx +++ b/viewer/src/components/PageLayout.tsx @@ -15,11 +15,11 @@ export function PageLayout({ children, }: PageLayoutProps) { return ( -
+
{actions} -
{children}
+
{children}
); } diff --git a/viewer/src/components/PageTitle.tsx b/viewer/src/components/PageTitle.tsx index 794ce32..5bd1adc 100644 --- a/viewer/src/components/PageTitle.tsx +++ b/viewer/src/components/PageTitle.tsx @@ -19,7 +19,7 @@ export function PageTitle({ title, description, children }: PageHeaderProps) {
{children}
- + ); } diff --git a/viewer/src/index.css b/viewer/src/index.css index 4f57c43..e72cddb 100644 --- a/viewer/src/index.css +++ b/viewer/src/index.css @@ -31,7 +31,7 @@ /* Descope Theme */ --background: 240 0% 40%; /* #666 */ --foreground: 0 0% 100%; /* #fff */ - --card: 0 0% 10%; /* #1a1a1a - More noticeable dark gray */ + --card: 0 0% 10%; /* #4F442C */ --card-foreground: 0 0% 100%; /* #fff */ --popover: 0 0% 0%; /* #000 */ --popover-foreground: 0 0% 100%; /* #fff */