From 7568637de2f8de7656601a8c0f5355fc6b6cf765 Mon Sep 17 00:00:00 2001 From: ttipo Date: Tue, 23 Jun 2026 00:38:59 +0900 Subject: [PATCH] =?UTF-8?q?style:=20=EB=B3=B4=EA=B3=A0=EC=84=9C=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=C2=B7=EC=9D=BC=EC=A0=95=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=8B=A4=EB=93=AC=EA=B8=B0=20+=20=EC=9D=BC=EC=A0=95=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20rem=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 보고서 모달: '전체' 탭 제거(기본=항목 있는 첫 분류), 상태 드롭다운 크기 축소, 푸터 배경을 다른 모달(.bm-foot)과 동일한 #fafbfc 로 통일 - 일정 화면: 콘텐츠 영역 상하좌우 여백 1.5rem 통일, 툴바 가로 여백 정렬 + 전역 .toolbar 의 margin-bottom 상속 차단(상단 여분 마진 제거) - 일정 하위 컴포넌트 px→rem 일괄 변환(보더 width·box-shadow 는 px 유지), ScheduleAvatar 도 size 를 rem 렌더 → '전 직원' 표식과 아바타 크기 정합 유지 Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/src/components/StatusSelect.vue | 20 ++-- .../components/schedule/ScheduleAvatar.vue | 7 +- .../schedule/ScheduleDetailPanel.vue | 112 +++++++++--------- .../schedule/ScheduleEventModal.vue | 10 +- .../components/schedule/ScheduleTimeline.vue | 66 +++++------ .../schedule/ScheduleTypeFilter.vue | 72 +++++------ frontend/src/pages/relay/SchedulePage.vue | 24 ++-- frontend/src/pages/relay/TaskDetailPage.vue | 101 +++------------- 8 files changed, 178 insertions(+), 234 deletions(-) diff --git a/frontend/src/components/StatusSelect.vue b/frontend/src/components/StatusSelect.vue index e7324f6..32bd5ca 100644 --- a/frontend/src/components/StatusSelect.vue +++ b/frontend/src/components/StatusSelect.vue @@ -90,16 +90,16 @@ function pick(v: ChecklistWorkStatus): void { .ss-btn { display: inline-flex; align-items: center; - gap: 7px; - height: 30px; - min-width: 100px; - padding: 0 9px 0 11px; + gap: 6px; + height: 26px; + min-width: 86px; + padding: 0 8px 0 9px; border: 1px solid var(--border-strong); - border-radius: 8px; + border-radius: 7px; background: var(--w); color: var(--c); font-family: inherit; - font-size: 0.781rem; + font-size: 0.719rem; font-weight: 700; cursor: pointer; white-space: nowrap; @@ -108,8 +108,8 @@ function pick(v: ChecklistWorkStatus): void { border-color: var(--c); } .ss-dot { - width: 8px; - height: 8px; + width: 7px; + height: 7px; border-radius: 50%; background: var(--c); flex-shrink: 0; @@ -119,8 +119,8 @@ function pick(v: ChecklistWorkStatus): void { text-align: left; } .ss-chev { - width: 14px; - height: 14px; + width: 13px; + height: 13px; } .ss-menu { position: fixed; diff --git a/frontend/src/components/schedule/ScheduleAvatar.vue b/frontend/src/components/schedule/ScheduleAvatar.vue index bb5ea62..79fd58c 100644 --- a/frontend/src/components/schedule/ScheduleAvatar.vue +++ b/frontend/src/components/schedule/ScheduleAvatar.vue @@ -2,9 +2,11 @@ // 일정 참석자 아바타 — 사이트 공용 UserAvatar 를 size(px)로 감싸는 얇은 어댑터. // 렌더링(이미지/실루엣)은 UserAvatar 가 단일 책임지고, 여기선 크기/원형 래퍼만 담당. // (.sa 클래스는 상세 패널 아바타 스택 CSS 의 훅으로 유지) +// size 는 px 로 받되 rem(÷16)으로 렌더 — 앱 전체 rem 스케일과 정합. +import { computed } from 'vue' import UserAvatar from '@/components/UserAvatar.vue' -withDefaults( +const props = withDefaults( defineProps<{ name?: string avatarUrl?: string | null @@ -12,12 +14,13 @@ withDefaults( }>(), { name: '', avatarUrl: null, size: 21 }, ) +const dim = computed(() => `${props.size / 16}rem`)