diff --git a/ROADMAP.md b/ROADMAP.md index 1ec6636..1ca9354 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -354,6 +354,126 @@ youlbot-webui/ --- +### D4 — 시안 기반 UI 리뉴얼 (Gemini 스타일) + +> 참고 시안: Google Gemini 스타일 — 좌측 사이드바 + 중앙 웰컴 화면 + 글로우 그라디언트 + +#### 시안 vs 현재 비교 + +| 항목 | 현재 율봇 | 시안 (Gemini 스타일) | +|------|----------|---------------------| +| 네비게이션 | 상단 수평 탭 3개 | 좌측 접이식 사이드바 | +| 빈 화면 | 빈 흰 공간 + 예시 질문 하단 | 중앙 개인화 인사 + 글로우 배경 | +| 입력창 위치 | 항상 하단 고정 | 빈 상태: 중앙 / 대화 중: 하단 | +| 입력창 모양 | 직사각형 | Pill 형태(완전 둥근 테두리) | +| 예시 질문 | 레이블 있는 리스트 | 레이블 없는 수평 chip 카드 | +| 컨트롤 위치 | 항상 노출(체크박스·버튼 3개) | 아이콘 버튼으로 숨김 처리 | +| 사용자 표시 | 드롭다운(헤더 우측) | 사이드바 하단 프로필 영역 | +| 대화 이력 | 없음 | 사이드바에 최근 대화 목록 | + +#### D4-1 — 좌측 사이드바 레이아웃 + +> 현재 탭 구조를 사이드바로 전환하는 핵심 레이아웃 변경 + +- **구조**: `gr.Blocks` 내에 `gr.Column(scale=1)` 사이드바 + `gr.Column(scale=5)` 메인 영역 +- **사이드바 구성**: + - 상단: 율봇 로고 + 사이드바 접기 버튼(☰) + - 중간: 네비게이션 (`💬 대화`, `📄 문서 등록`, `🗂 문서 관리`) + - 하단: 사용자 프로필(아이콘 + 이름) +- **사이드바 접기**: JS로 `sidebar-collapsed` CSS 클래스 토글 → `max-width: 0` 전환 +- **현재 탭** → `gr.Tab` 제거, 메인 영역을 `gr.Column(visible=...)` 3개로 교체 +- **CSS**: `.sidebar { width: 260px; transition: width .25s; }` + `.sidebar-collapsed { width: 64px; }` + +#### D4-2 — 빈 화면 웰컴 뷰 (중앙 인사 + 글로우) + +> 대화가 없을 때 Gemini 스타일 중앙 화면 표시 + +- **개인화 인사**: `"{user_name}님, 시작해 볼까요?"` — 사용자 선택값 반영 +- **글로우 그라디언트**: 화면 중앙에 파란/하늘색 방사형 그라디언트 광원 효과 + ```css + .welcome-glow { + background: radial-gradient(ellipse 60% 50% at 50% 40%, + rgba(99,179,237,.25) 0%, rgba(147,197,253,.12) 40%, transparent 70%); + } + ``` +- **전환 조건**: `chatbot` 히스토리가 비어있으면 웰컴 뷰 표시, 첫 메시지 전송 시 채팅 뷰로 전환 +- **구현**: `gr.HTML(elem_id="welcome-view")` + JS로 `chatbot` 내 메시지 수 감지 → visibility 토글 + +#### D4-3 — Pill 형태 입력창 + 위치 전환 + +> 입력창을 완전 둥근 pill 스타일로 변경하고 빈 상태에서는 화면 중앙에 배치 + +- **Pill CSS**: + ```css + .pill-input textarea { border-radius: 999px !important; padding: 14px 24px !important; } + .pill-input { border-radius: 999px !important; } + ``` +- **중앙 배치 (빈 상태)**: 웰컴 뷰 안에 별도 입력 컨테이너 배치 + - `position: relative; max-width: 680px; margin: 0 auto;` +- **아이콘 통합**: 입력창 좌측에 `+` (첨부), 우측에 전송 화살표 아이콘 +- **전환**: 첫 전송 후 하단 고정 입력창으로 자연스럽게 전환 (CSS transition) + +#### D4-4 — 예시 질문 Chip 카드 스타일 + +> 현재 리스트형 예시 질문을 시안의 수평 카드 chip으로 교체 + +- **현재**: `gr.Examples` 컴포넌트 (세로 리스트, 레이블 있음) +- **변경**: `gr.HTML`로 직접 렌더링한 수평 chip 카드 + ```html +