Merge remote-tracking branch 'origin/sub_laptop_7' into main_laptop_1

This commit is contained in:
2026-10-27 00:07:39 +09:00
11 changed files with 84 additions and 43 deletions
@@ -15,11 +15,6 @@
font-size: 1.15em;
color: var(--color-text);
}
.m02-dfip__muted {
margin: 0;
color: var(--color-text-muted);
font-size: var(--text-body-sm);
}
.m02-dfip__unit {
margin: 0;
font-weight: 600;
@@ -263,7 +263,8 @@ function drawChosen(
...(rule && e.rule
? [
el("div", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: t("RuleLine", { f: e.rule.field, n: e.rule.from.name }),
}),
]
@@ -271,7 +272,11 @@ function drawChosen(
],
}),
val,
el("span", { className: "m02-dfip__muted", text: e.unit || "-" }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: e.unit || "-",
}),
createButton({
label: t("Remove"),
variant: "ghost",
@@ -313,7 +318,7 @@ async function drawFind(
): Promise<void> {
const q = createInputField({ type: "search", placeholder: t("Search"), compact: true });
const list = el("div", { className: "m02-dfip__list" });
const count = el("span", { className: "m02-dfip__muted" });
const count = el("span", { className: "ui-text ui-text--muted", attrs: { "data-text": "14" } });
const bar: HTMLElement[] = [];
let file = "";
let sub = "";
@@ -380,11 +385,16 @@ async function drawFind(
className: "m02-dfip__name",
children: [
el("strong", { text: String(r["이름"] ?? "") }),
el("span", { className: "m02-dfip__muted", text: ` ${r["규격"] ?? ""}` }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: ` ${r["규격"] ?? ""}`,
}),
],
}),
el("span", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: `${v === null ? "" : fmt(v)} ${unitText}`.trim(),
}),
],
@@ -152,7 +152,7 @@ export function renderLogicInput(
chapter,
);
const list = el("div", { className: "m02-dfip__list" });
const info = el("span", { className: "m02-dfip__muted" });
const info = el("span", { className: "ui-text ui-text--muted", attrs: { "data-text": "14" } });
const prev = createButton({
label: t("Prev"),
variant: "ghost",
@@ -197,10 +197,15 @@ export function renderLogicInput(
className: "m02-dfip__name",
children: [
el("strong", { text: i.이름 }),
el("span", { className: "m02-dfip__muted", text: ` ${i.원문번호}` }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: ` ${i.원문번호}`,
}),
// 별칭으로 맞았으면 그 별칭을 작게(208-1)
el("span", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: ` ${aliasNote(matchLogic(q.input.value, i).alias)}`,
}),
el("span", {
@@ -210,7 +215,11 @@ export function renderLogicInput(
}),
],
}),
el("span", { className: "m02-dfip__muted", text: i.결과단위 }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: i.결과단위,
}),
],
});
b.addEventListener("click", () => void pick(i));
@@ -299,9 +308,19 @@ function showChosen(
...(valueNode
? [valueNode]
: extra
? [el("span", { className: "m02-dfip__muted", text: extra })]
? [
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: extra,
}),
]
: []),
el("span", { className: "m02-dfip__muted", text: unit || "-" }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: unit || "-",
}),
],
});
host.replaceChildren(
@@ -178,7 +178,7 @@ function itemList(
): HTMLElement {
const q = createInputField({ type: "search", placeholder: t("Search"), compact: true });
const list = el("div", { className: "m02-dfip__list" });
const info = el("span", { className: "m02-dfip__muted" });
const info = el("span", { className: "ui-text ui-text--muted", attrs: { "data-text": "14" } });
let page = 1;
let seq = 0;
const own = base ? null : scopeBoxes({ sub: "", detail: "" }, () => ((page = 1), void load()));
@@ -222,11 +222,16 @@ function itemList(
className: "m02-dfip__name",
children: [
el("strong", { text: it.name }),
el("span", { className: "m02-dfip__muted", text: ` ${it.spec}` }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: ` ${it.spec}`,
}),
],
}),
el("span", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: `${it.price === null ? "" : fmt(it.price)} ${it.unit}`.trim(),
}),
],
@@ -396,7 +401,10 @@ export function renderMaterial(
...(els.length
? els.map((e) => {
const val = el("strong", { className: "m02-dfip__value", text: "—" });
const note = el("span", { className: "m02-dfip__muted" });
const note = el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
});
const kind =
e.mode === "choice" ? t("Choice") : e.mode === "rule" ? t("Rule") : t("Fixed");
const row = el("div", {
@@ -416,7 +424,11 @@ export function renderMaterial(
],
}),
val,
el("span", { className: "m02-dfip__muted", text: e.unit || "-" }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: e.unit || "-",
}),
createButton({
label: t("Remove"),
variant: "ghost",
@@ -600,7 +612,8 @@ export function renderMaterial(
});
body.replaceChildren(
el("p", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: mode === "choice" ? t("ChoiceHelp") : t("RuleHelp"),
}),
name.root,
@@ -195,7 +195,8 @@ export function renderTablePick(
children: [
el("strong", { text: `${s.section} ${s.title}` }),
el("span", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: `${s.chapter} · ${t("SecLine", { t: s.tables })}`,
}),
],
@@ -229,7 +230,8 @@ export function renderTablePick(
children: [
el("strong", { text: h.이름 }),
el("span", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: t("TableLine", {
b: h.기준 || "—",
c: Object.keys(h.조건).length,
@@ -321,7 +323,8 @@ function showChosen(
(e) =>
body.replaceChildren(
el("p", {
className: "m02-dfip__muted",
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: e instanceof Error ? e.message : t("Failed"),
}),
),
@@ -94,7 +94,11 @@ export function renderVariables(
const unit = el("div", { className: "m02-dfip__unitfield" });
const drawUnit = (): void =>
unit.replaceChildren(
el("span", { className: "m02-dfip__muted", text: t("Unit") }),
el("span", {
className: "ui-text ui-text--muted",
attrs: { "data-text": "14" },
text: t("Unit"),
}),
createUnitPick({
value: unitValue || NO_UNIT,
ariaLabel: t("Unit"),
@@ -57,12 +57,6 @@
max-width: 100%;
}
.m02-dfout__muted {
margin: 0;
color: var(--color-text-muted);
font-size: var(--text-caption);
}
.m02-dfout__round {
margin: var(--spacing-8) 0;
color: var(--color-text-body);
@@ -180,7 +180,7 @@ export function renderOutputPanel(
onPick: setUnit,
});
/** 단위 표준의 소수자리 제안(주 ① 반올림) — 값(비용 아님)이고 끝수를 안 정했을 때 */
const suggestNote = el("span", { className: "m02-dfout__muted" });
const suggestNote = el("span", { className: "ui-text ui-text--muted" });
if (cost === "값" && !box.output?.round)
void suggestPlaces(box.output?.unit ?? box.unit).then((p) => {
if (p === null) return;
@@ -204,7 +204,7 @@ export function renderOutputPanel(
const round = box.output?.round;
const stepName = (n: number): string => (n === 0 ? "1" : String(Number((10 ** -n).toFixed(n))));
let fallback: CfRound = { places: 1, method: "버림" };
const roundNote = el("span", { className: "m02-dfout__muted" });
const roundNote = el("span", { className: "ui-text ui-text--muted" });
const noteOf = (r: CfRound | undefined): string =>
r
? `${to("RoundUser")}: ${roundText(r)}`
@@ -95,12 +95,6 @@
white-space: normal;
}
.m02-dfver__muted {
margin: 0;
color: var(--color-text-muted);
font-size: var(--text-caption);
}
/* 쉬는 갈래 — 문제가 아니라 회색으로 */
.m02-dfver__rest {
padding: var(--spacing-8) var(--spacing-12);
+3 -3
View File
@@ -222,7 +222,7 @@ function slotRow(box: CfBox, e: CfElementRef, on: CfVerifyOn, lg: CfLogic): HTML
},
}),
el("span", {
className: "m02-dfver__muted",
className: "ui-text ui-text--muted",
text: tv("Page", { p: got.page, n: pages, t: got.total }),
}),
createButton({
@@ -293,7 +293,7 @@ function ruleRow(e: CfElementRef, lg: CfLogic, result: CfEvalResult): HTMLElemen
className: "m02-dfver__now",
text: value ? tv("Loading") : tv("NeedValue"),
});
const note = el("span", { className: "m02-dfver__muted" });
const note = el("span", { className: "ui-text ui-text--muted" });
if (value) {
void findMaterials({
q: e.scope?.찾는말,
@@ -320,7 +320,7 @@ function ruleRow(e: CfElementRef, lg: CfLogic, result: CfEvalResult): HTMLElemen
children: [el("strong", { text: elementPort(e) }), state, note],
}),
el("span", {
className: "m02-dfver__muted",
className: "ui-text ui-text--muted",
text: `${from ? `${from} · ` : ""}${tv("Cond", { field: rule.field, v: value || rule.from.name, op: rule.op })}`,
}),
],
+9
View File
@@ -95,3 +95,12 @@ def test_m02_parts_in_place():
def test_m02_css_no_old_alias():
for name, css in _m02_src(".css").items():
assert not OLD_ALIAS.search(css), f"{name}: 옛 보라 별칭"
def test_m02_dataflow_muted_spans_use_ui_text():
"""553-8 ① — 흐린 글 span · div · p 는 보조 글 부품 꼴 · 옛 __muted 걷음."""
ts = "".join(_m02_src(".ts").values())
css = "".join(_m02_src(".css").values())
for gone in ("m02-dfip__muted", "m02-dfout__muted", "m02-dfver__muted"):
assert gone not in ts and gone not in css, f"옛 변종 {gone} 남음"
assert len(re.findall(r'"ui-text ui-text--muted",\s*attrs: \{ "data-text": "14" \}', ts)) >= 21