fix+style: deploy modal/banner, back button, table stability

버그픽스
- 배포 확정 활성화: tojson 따옴표가 oninput 속성을 깨뜨리던 것 → data-confirm 비교로 수정
- ghost 버튼 호버 시 글자 하얘짐 → 호버 색 명시(새로고침/페이저/테마토글 공통)

UX/디자인
- 배포 모달: 취소·배포확정 한 줄, 저장소명만 mono, 순 변화 +초록/−빨강, 표 chrome 제거
- 배포 성공: 별도 다이얼로그 제거 → 모달 닫힘 + 배지 이동 + 완료 배너(여백·크기 정돈)
- 대시보드 백링크: ghost 버튼 + 화살표, 제목과 간격 확보
- 표 액션 셀 고정 박스(172x36) → 동기화/완료/진행 전환 시 행·열 안 흔들림
  (완료 'v3', 진행 'n/m·NN%', 실패는 축약+title 로 사유)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-17 16:53:01 +09:00
parent 59134927d8
commit bfd84fe94a
6 changed files with 153 additions and 44 deletions

View File

@@ -170,8 +170,9 @@ section {
line-height: 0;
}
.theme-toggle:hover {
--pico-background-color: var(--bg-alt);
--pico-background-color: var(--surface);
--pico-border-color: var(--text-dim);
--pico-color: var(--text);
}
.theme-toggle .icon {
width: 18px;
@@ -230,6 +231,7 @@ button,
transition:
background-color 0.12s ease,
border-color 0.12s ease,
opacity 0.15s ease,
transform 0.096s ease;
}
button:active,
@@ -259,8 +261,9 @@ button.ghost,
}
button.ghost:hover,
[role="button"].ghost:hover {
--pico-background-color: var(--bg-alt);
--pico-background-color: var(--surface);
--pico-border-color: var(--text-dim);
--pico-color: var(--text); /* 호버 시 글자 하얘짐 방지 */
}
/* 아이콘 + 글자 버튼 */
.btn-icon {
@@ -378,11 +381,14 @@ th.num {
text-align: right;
}
/* 액션 셀: swap(버튼진행률) 시 행 높이 안 흔들리게 고정 */
/* 액션 셀: 버튼진행률↔완료배지로 내용이 바뀌어도 행 높이·열 너비가 안 변하게
너비·높이를 고정한 박스로 만든다. 넘치는 내용은 클립. */
.row-action {
display: flex;
align-items: center;
min-height: 34px;
width: 172px;
height: 36px;
overflow: hidden;
}
/* 검증 배지 칩 (dot + 라벨, 이모지 없음) */
@@ -420,6 +426,12 @@ th.num {
background: var(--accent-soft);
}
/* 뒤로가기(대시보드) 버튼 — ghost, 제목과 간격 확보 */
.back-btn {
margin-bottom: 20px;
text-decoration: none;
}
/* 버전 검증 상세 */
.verify-detail {
display: flex;
@@ -441,15 +453,105 @@ th.num {
color: var(--danger);
}
/* 배포 완료 배너 (#flash) */
.flash-banner {
display: flex;
align-items: center;
gap: 10px;
margin: 4px 0 22px;
padding: 12px 16px;
border-radius: 10px;
background: rgba(0, 200, 150, 0.1);
color: var(--success-text);
font-size: 15px;
font-weight: 600;
}
.flash-banner .flash-dot {
flex: none;
width: 8px;
height: 8px;
border-radius: 50%;
background: currentColor;
}
.flash-banner .flash-sub {
color: var(--text-muted);
font-weight: 500;
font-size: 13px;
}
.flash-banner .flash-warn {
margin-left: auto;
color: var(--warning-text);
font-weight: 500;
font-size: 13px;
}
/* 배포 확인 모달 — 본문/표/라벨 15px 로 통일 */
.deploy-modal h3 {
font-size: 20px;
}
.deploy-note {
font-size: 17px;
color: var(--text-secondary);
margin-bottom: 14px;
}
.deploy-preview {
margin: 0 0 18px;
font-size: 17px;
}
.deploy-preview,
.deploy-preview tr,
.deploy-preview th,
.deploy-preview td {
border: none;
background: none;
}
.deploy-preview th {
width: 30%;
padding: 8px 0;
text-align: left;
font-weight: 500;
color: var(--text-muted);
}
.deploy-preview td {
padding: 8px 0;
text-align: right;
}
.confirm-label {
display: block;
font-size: 17px;
}
/* 입력란만 작게 (본문보다 4px 작은 14px + 컴팩트 높이) */
.confirm-label input {
margin-top: 8px;
font-size: 14px;
--pico-form-element-spacing-vertical: 0.5rem;
height: auto;
}
.modal-actions {
display: flex;
justify-content: flex-end;
align-items: center;
gap: 10px;
margin-top: 20px;
}
/* 모달 버튼: 편안한 표준 크기, 한 줄, 너비 auto */
.modal-actions button {
width: auto;
margin: 0;
padding: 11px 20px;
font-size: 16px;
}
/* 동기화 진행률 바 */
.sync-progress {
display: flex;
flex-direction: column;
gap: 5px;
min-width: 150px;
width: 150px;
}
.sync-progress progress {
margin: 0;
width: 100%;
height: 6px;
}
.sync-progress small {