feat(B07): 269-1 좌측 패널 컨테이너 공용 양식(구조물 배치 기준) · 공용 카드 함수

- ui_template: .ui-panel-form(칸 26px · 라벨 틈 2px · 캡션 글자 · 단추 크기) · .ui-panel-btn · createPanelCard
- 칸 높이 · 라벨 틈 토큰 = theme 한 곳 · 「구조물 배치」도 같은 토큰
- B07 평면도 · 횡단도 묶음 = 공용 카드 · 도면 단추 = .ui-panel-btn · 페이지 덧칠 걷음
- 시험 test_269_panel_form · 212-3 기대값 · 130 · 153 헬퍼 공용 카드 연결

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QND7Co43B24zK2P937rdxt
This commit is contained in:
2026-10-11 16:42:57 +09:00
co-authored by Claude Opus 5.5
parent ff738b7a3c
commit 3939cd11f9
11 changed files with 210 additions and 72 deletions
+71
View File
@@ -415,6 +415,77 @@
font-size: var(--text-body-sm);
}
/* 좌측 패널 컨테이너 공용 양식(269) — 기준 = B05/B06 「구조물 배치」(칸 높이 · 라벨 · 글자 · 단추).
B05~B09 좌측 컨테이너가 `.ui-panel-form`(카드는 `createPanelCard`)을 붙임 · 아래 단추 묶음
(`.ui-sidebar-actions`)은 컨테이너 밖이라 안 먹음 · 날 단추는 `.ui-panel-btn`. */
:where(.ui-sidebar-card.ui-panel-form) {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
}
.ui-panel-form .ui-field,
.ui-panel-form .b05-route__field {
gap: var(--panel-label-gap);
}
.ui-panel-form .ui-field__label,
.ui-panel-form .b05-route__field > span {
font-size: var(--text-caption);
line-height: 1.2;
}
.ui-panel-form .ui-field__error:not(.is-visible) {
display: none;
}
.ui-panel-form input:not([type="checkbox"], [type="radio"], [type="range"]),
.ui-panel-form select {
box-sizing: border-box;
height: var(--panel-control-h);
padding: 0 6px;
font-size: var(--text-caption);
line-height: normal;
}
.ui-panel-form select.ui-select {
padding-right: 24px;
background-position: right 6px center;
background-size: 12px;
}
/* 숫자 칸 증감 화살표 없음 — 「구조물 배치」와 같게 */
.ui-panel-form input[type="number"] {
appearance: textfield;
-moz-appearance: textfield;
}
.ui-panel-form input[type="number"]::-webkit-outer-spin-button,
.ui-panel-form input[type="number"]::-webkit-inner-spin-button {
margin: 0;
appearance: none;
-webkit-appearance: none;
}
/* 단추 크기 = 「구조물 배치」 단추(`b05-route__irregular-btn`) · 색은 단추 갈래(filled · ghost) 그대로 */
.ui-panel-form .ui-btn:not(.ui-help-btn) {
padding: var(--spacing-8);
border-radius: var(--radius-inputs);
font-size: var(--text-caption);
line-height: normal;
}
/* 날 <button>(도면 단추 등) — 「구조물 배치」 단추 꼴 · 낮은 우선순위라 페이지 상태 표시(띠 · 고름)가 덮음 */
:where(.ui-panel-btn) {
padding: var(--spacing-8);
border: 1px solid var(--color-border);
border-radius: var(--radius-inputs);
background: var(--color-surface);
color: var(--color-text-body);
font-size: var(--text-caption);
cursor: pointer;
}
/* 카드 안에 다시 카드(M02 도면 안 구조물 도면 묶음) — 앞 목록과 간격 */
.ui-sidebar-card .ui-sidebar-card {
margin-top: var(--spacing-8);