Files
Aislo/M01_MasterData/LogicBuilder/M01_LB_Source.css
T
eomsangdonandClaude Opus 5.5 f62689dff1 feat(M01): 로직 만들기 판 왼쪽 원문 Source · Check 를 LB 타입에 맞춤(PLAN 35-2)
- renderSource: 표 이름 · 원문번호 · 기준 · 격자 · 역할 칩 · 걸린 줄 · 해당 없음/중복 · 칸 고침(on.edit) · 주 · 사용처
- Check: runExpect(lb, tables, rows) · 같은 조건 두 칸 조회는 빈틈 한 번
- 시험 test_m01_lb_check.py 9 통과 · LogicBuilder 전부 검사 초록

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ly2oHAaTDYRjcniAmHR81z
2026-10-01 11:47:53 +09:00

197 lines
3.9 KiB
CSS

/* 로직 만들기 판 — 왼쪽 원문 */
.m01-lbsrc {
display: flex;
flex-direction: column;
gap: var(--spacing-12);
min-width: 0;
font-size: var(--text-body-sm);
}
.m01-lbsrc p {
margin: 0;
}
.m01-lbsrc__muted {
color: var(--color-text-muted);
}
.m01-lbsrc__muted:empty {
display: none;
}
.m01-lbsrc__preview {
padding: var(--spacing-8) var(--spacing-12);
border-radius: var(--radius-lg);
background: color-mix(in srgb, var(--color-warning) 14%, var(--color-canvas));
color: var(--color-text);
}
.m01-lbsrc__table {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
padding: var(--spacing-12);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
background: var(--color-surface);
min-width: 0;
}
.m01-lbsrc__head {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: var(--spacing-8);
}
.m01-lbsrc__users {
margin-left: auto;
padding: 0;
border: 0;
background: none;
color: var(--color-accent);
font: inherit;
cursor: pointer;
text-decoration: underline;
}
.m01-lbsrc__warn {
color: var(--color-danger);
font-weight: 600;
}
/* 엑셀 같은 격자 */
.m01-lbsrc__grid {
max-height: 22rem;
overflow: auto;
border: 1px solid var(--color-border);
}
.m01-lbsrc__grid table {
border-collapse: collapse;
width: 100%;
}
.m01-lbsrc__grid th,
.m01-lbsrc__grid td {
padding: var(--spacing-4) var(--spacing-8);
border: 1px solid var(--color-border);
white-space: nowrap;
text-align: left;
}
.m01-lbsrc__grid thead th {
position: sticky;
top: 0;
z-index: 1;
background: var(--color-paper);
color: var(--color-text-secondary);
font-weight: 500;
vertical-align: top;
}
.m01-lbsrc__grid thead th span {
display: block;
}
.m01-lbsrc__grid .m01-lbsrc__no {
width: 2.5rem;
background: var(--color-paper);
color: var(--color-text-muted);
text-align: right;
}
.m01-lbsrc__grid td {
cursor: cell;
}
.m01-lbsrc__grid td.is-value {
text-align: right;
font-variant-numeric: tabular-nums;
}
.m01-lbsrc__grid td.is-col {
font-weight: 700;
}
.m01-lbsrc__grid tr.is-hit td {
background: color-mix(in srgb, var(--color-warning) 28%, var(--color-canvas));
}
.m01-lbsrc__grid td.is-edited {
box-shadow: inset 0 0 0 2px var(--color-accent);
}
.m01-lbsrc__grid td.is-bad {
box-shadow: inset 0 0 0 2px var(--color-danger);
}
.m01-lbsrc__input {
width: 100%;
min-width: 4rem;
padding: 0 var(--spacing-4);
border: 1px solid var(--color-accent);
font: inherit;
background: var(--color-canvas);
color: var(--color-text);
}
/* 칸 역할 칩 — 조건 파랑 · 고정 회색 · 결과 초록 · 무관 점선 */
.m01-lbsrc__chip {
margin-top: var(--spacing-4);
padding: 0 var(--spacing-8);
border: 1px solid currentColor;
border-radius: 999px;
background: transparent;
font: inherit;
font-size: var(--text-caption);
cursor: pointer;
}
.m01-lbsrc__chip.is-cond {
color: var(--color-accent);
background: color-mix(in srgb, var(--color-accent) 12%, transparent);
}
.m01-lbsrc__chip.is-fixed {
color: var(--color-text-secondary);
}
.m01-lbsrc__chip.is-result {
color: var(--color-success, #2f6b4f);
background: color-mix(in srgb, var(--color-success, #2f6b4f) 12%, transparent);
}
.m01-lbsrc__chip.is-free {
color: var(--color-text-muted);
border-style: dashed;
}
.m01-lbsrc__notes summary {
cursor: pointer;
color: var(--color-text-secondary);
}
.m01-lbsrc__notes ol {
margin: var(--spacing-4) 0 0;
padding-left: var(--spacing-16);
list-style: none;
display: flex;
flex-direction: column;
gap: var(--spacing-4);
}
.m01-lbsrc__notes li.is-used {
font-weight: 600;
}
.m01-lbsrc__tag {
margin-left: var(--spacing-8);
padding: 0 var(--spacing-4);
border-radius: 4px;
background: color-mix(in srgb, var(--color-accent) 14%, transparent);
color: var(--color-accent);
font-size: var(--text-caption);
font-weight: 500;
}