refactor: 공용 폼 모달 BaseModal + 전역 .form-* 필드 클래스 (Phase 1a)
- components/common/BaseModal.vue 신설: backdrop+헤더(제목/닫기)+본문/푸터 슬롯, Teleport·ESC·바깥클릭 닫기 내장. 전역 .modal* 와 충돌 없게 bm- 접두 클래스 사용 - relay.css 에 .form-field/-label/-row/-input/-textarea/-select(+wrap/chev) 표준 추가 - 일정·카테고리 모달을 BaseModal + .form-* 로 전환(중복 모달/필드 CSS 제거, 푸터 버튼은 전역 .mbtn 사용) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -569,6 +569,90 @@ body {
|
||||
color: var(--text-3);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
* 폼 필드 (폼 모달 공통 — BaseModal 본문 등에서 사용)
|
||||
* ============================================================ */
|
||||
.form-field {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.form-label {
|
||||
font-size: 0.781rem;
|
||||
font-weight: 600;
|
||||
color: var(--text-2);
|
||||
}
|
||||
.form-row {
|
||||
display: flex;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
.form-row .form-field {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
.form-input {
|
||||
width: 100%;
|
||||
height: 2.5rem;
|
||||
padding: 0 0.75rem;
|
||||
border: 1px solid var(--border-strong);
|
||||
border-radius: var(--radius);
|
||||
font-family: inherit;
|
||||
font-size: 0.844rem;
|
||||
color: var(--text);
|
||||
background: #fff;
|
||||
}
|
||||
.form-input::placeholder {
|
||||
color: var(--text-3);
|
||||
}
|
||||
.form-input:focus {
|
||||
outline: none;
|
||||
border-color: var(--accent);
|
||||
box-shadow: 0 0 0 3px var(--accent-weak);
|
||||
}
|
||||
.form-textarea {
|
||||
height: auto;
|
||||
min-height: 5.75rem;
|
||||
padding: 0.625rem 0.75rem;
|
||||
line-height: 1.5;
|
||||
resize: vertical;
|
||||
}
|
||||
/* 네이티브 select 래퍼 + 셰브론 */
|
||||
.form-select-wrap {
|
||||
position: relative;
|
||||
}
|
||||
.form-select {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
width: 100%;
|
||||
height: 2.5rem;
|
||||
padding: 0 2.125rem 0 0.75rem;
|
||||
border: 1px solid var(--border-strong);
|
||||
border-radius: var(--radius);
|
||||
font-family: inherit;
|
||||
font-size: 0.844rem;
|
||||
color: var(--text);
|
||||
background: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
.form-select:focus {
|
||||
outline: none;
|
||||
border-color: var(--accent);
|
||||
box-shadow: 0 0 0 3px var(--accent-weak);
|
||||
}
|
||||
.form-select-chev {
|
||||
position: absolute;
|
||||
right: 0.625rem;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
display: grid;
|
||||
color: var(--text-3);
|
||||
pointer-events: none;
|
||||
}
|
||||
.form-select-chev svg {
|
||||
width: 0.9375rem;
|
||||
height: 0.9375rem;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
* 더보기 버튼 (목록 페이지네이션 공통)
|
||||
* ============================================================ */
|
||||
|
||||
Reference in New Issue
Block a user