feat(ui): 공용 단추 작은 크기 size sm 추가 · M01 표 단추 · M02 단추 적용 · M02 상세 머리 이름 줄바꿈

- createButton 에 size: "sm"(글자 캡션 크기 · 위아래 여백 2px) — 다섯 모양 모두에 먹음 · 기본은 그대로
- M01 표 안 단추는 sm 으로 바꾸고 M01 자체 축소 규칙 삭제
- M02 좌측 새로 · 본떠 만들기 · 지우기 · 카드 수정 단추에 sm
- M02 상세 화면 머리 번호 + 이름 잘림 없이 줄바꿈 · 집계표 카드 머리는 번호 · 수정 한 줄 + 이름 아래 전체 폭

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWHNLQYPZN7kKf1rzrrRZq
This commit is contained in:
2026-09-28 18:42:23 +09:00
co-authored by Claude Sonnet 5
parent 3f39b5b6c3
commit ff0d9775ec
9 changed files with 43 additions and 24 deletions
@@ -54,13 +54,19 @@
min-width: 0;
}
/* 머리 = 번호 · [수정] 한 줄, 이름은 그 아래 전체 폭 — 긴 이름도 잘리지 않게 줄바꿈 */
.m02-struct__head {
flex-wrap: wrap;
}
.m02-struct__title {
order: 1;
flex: 1 0 100%;
min-width: 0;
margin: 0;
overflow: hidden;
color: var(--color-text);
font-size: var(--text-body);
text-overflow: ellipsis;
white-space: nowrap;
overflow-wrap: anywhere; /* 이름이 길어도 잘리지 않게 줄바꿈 */
}
.m02-struct__no {
@@ -264,7 +264,7 @@ export function createStructurePanel(opts: StructurePanelOptions): StructurePane
const columnName = el("span", { className: "m02-struct__title" });
const number = el("span", { className: "m02-struct__no" });
const edit = createButton({ label: TEXT.edit, variant: "filled" });
const edit = createButton({ label: TEXT.edit, variant: "filled", size: "sm" });
const previewHost = el("div", { className: "m02-struct__preview" });
const infoCard = card(
TEXT.drawingInfo,
@@ -288,6 +288,7 @@ export function createStructurePanel(opts: StructurePanelOptions): StructurePane
const editButton = createButton({
label: fill(TEXT.editSheet, PARTS[kind].word),
variant: "ghost",
size: "sm",
});
const host = el("div", { className: "m02-struct__sheet" });
editButton.addEventListener("click", () => void openEdit(kind));
@@ -119,9 +119,9 @@ export function buildSide(opt: SideOptions): SideHandle {
const editButtons = new Map<Kind, { copy: HTMLButtonElement; del: HTMLButtonElement }>();
const actionRow = (kind: Kind): HTMLElement[] => {
if (!canEdit(layer, opt.isAdmin)) return [];
const btnNew = createButton({ label: L("M02_New"), variant: "filled" });
const copy = createButton({ label: L("M02_Copy"), variant: "ghost" });
const del = createButton({ label: L("M02_Delete"), variant: "danger" });
const btnNew = createButton({ label: L("M02_New"), variant: "filled", size: "sm" });
const copy = createButton({ label: L("M02_Copy"), variant: "ghost", size: "sm" });
const del = createButton({ label: L("M02_Delete"), variant: "danger", size: "sm" });
editButtons.set(kind, { copy, del });
btnNew.addEventListener("click", () => newTemplate(kind));
copy.addEventListener("click", copyTemplate);
@@ -26,7 +26,7 @@
.m02-main__head {
display: flex;
flex-wrap: nowrap;
flex-wrap: wrap;
align-items: center;
gap: var(--spacing-12);
}
@@ -34,10 +34,7 @@
.m02-main__title {
flex: 0 1 auto;
min-width: 3rem;
max-width: 9rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow-wrap: anywhere; /* 번호 + 이름 — 잘리지 않게 줄바꿈 */
margin: 0;
color: var(--color-text);
font-size: var(--text-body);