refactor(storybook): fold SW Header Options stories into SW/Header

Remove the separate SW/Header/Options sidebar item. Its examples move to two
Stories directly under SW/Header (src/sw/sw-header-open.stories.tsx):
- Document Open: Open placement, label, 10-width responsive, composed bar,
  composed (controls) responsive
- Hidden Sub Controls: document New / Open and layer freeze / lock removal

No public API or component change. Tests and inventory follow the new IDs
(integrated 97/97, existing Stories pixel-identical 28/28, unused-removal
83/83). The two remaining overview failures are pre-existing historical
assertions (also failing on 5faa1f1), not new defects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shkim4andClaude Opus 5.5 committed 2026-10-19 15:02:14 +09:00
1 parent 55179b4577
commit e8409eff44
17 files changed
+168 -87

No files matched your search

@@ -13,6 +13,34 @@
],
"exportName": "ComposedControls"
},
{
"type": "story",
"subtype": "story",
"id": "sw-header--document-open",
"name": "Document Open",
"title": "SW/Header",
"importPath": "./src/sw/sw-header-open.stories.tsx",
"tags": [
"dev",
"test",
"manifest"
],
"exportName": "DocumentOpen"
},
{
"type": "story",
"subtype": "story",
"id": "sw-header--hidden-sub-controls",
"name": "Hidden Sub Controls",
"title": "SW/Header",
"importPath": "./src/sw/sw-header-open.stories.tsx",
"tags": [
"dev",
"test",
"manifest"
],
"exportName": "HiddenSubControls"
},
{
"type": "story",
"subtype": "story",
@@ -644,6 +644,8 @@
"browser": "155.0.8059.80",
"managerOrder": [
"sw-header--composed-controls",
"sw-header--document-open",
"sw-header--hidden-sub-controls",
"sw-header--overview",
"sw-header--interactive-states",
"sw-header--window-move-motion",
@@ -1,5 +1,7 @@
[
"sw-header--composed-controls",
"sw-header--document-open",
"sw-header--hidden-sub-controls",
"sw-header--overview",
"sw-header--interactive-states",
"sw-header--window-move-motion",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 226 KiB

@@ -3,6 +3,14 @@
"sw-header--composed-controls",
"Dropdown"
],
[
"sw-header--document-open",
"Document Open"
],
[
"sw-header--hidden-sub-controls",
"Hidden Sub Controls"
],
[
"sw-header--overview",
"Overview"
@@ -2,7 +2,7 @@
"baseCommit": "c8e5fbeebc26fba92998fc5ddcd28c6c110e452d",
"checks": [
{
"name": "inventory: 19 -> 10 SW/Header Stories, 338 -> 329 total plus only the 7 integrated-improvement Stories",
"name": "inventory: 19 -> 10 retained SW/Header Stories, 338 -> 329 total plus only the integrated-improvement Stories",
"status": "PASS",
"data": {
"before": [
@@ -10,14 +10,22 @@
19
],
"after": [
336,
10
334,
12
],
"sw": [
[
"sw-header--composed-controls",
"Dropdown"
],
[
"sw-header--document-open",
"Document Open"
],
[
"sw-header--hidden-sub-controls",
"Hidden Sub Controls"
],
[
"sw-header--detail-buttons",
"Detail Buttons (Shared States)"
@@ -56,10 +64,8 @@
]
],
"added": [
"sw-header-options--open-placement",
"sw-header-options--hidden-sub-controls",
"sw-header-options--composed-open",
"sw-header-options--composed-responsive",
"sw-header--document-open",
"sw-header--hidden-sub-controls",
"sw-popup--custom-content",
"sw-popup--multiple-popups",
"sw-tool--tool-buttons"
@@ -112,7 +118,7 @@
"status": "PASS",
"data": {
"unexpected": [],
"integrated": 19
"integrated": 23
}
},
{
@@ -123,6 +129,14 @@
"sw-header--composed-controls",
"Dropdown"
],
[
"sw-header--document-open",
"Document Open"
],
[
"sw-header--hidden-sub-controls",
"Hidden Sub Controls"
],
[
"sw-header--overview",
"Overview"
@@ -180,6 +194,14 @@
"name": "render sw-header--composed-controls",
"status": "PASS"
},
{
"name": "render sw-header--document-open",
"status": "PASS"
},
{
"name": "render sw-header--hidden-sub-controls",
"status": "PASS"
},
{
"name": "render sw-header--detail-buttons",
"status": "PASS"
@@ -894,14 +916,22 @@
19
],
"after": [
336,
10
334,
12
],
"sw": [
[
"sw-header--composed-controls",
"Dropdown"
],
[
"sw-header--document-open",
"Document Open"
],
[
"sw-header--hidden-sub-controls",
"Hidden Sub Controls"
],
[
"sw-header--detail-buttons",
"Detail Buttons (Shared States)"
@@ -945,6 +975,14 @@
"sw-header--composed-controls",
"Dropdown"
],
[
"sw-header--document-open",
"Document Open"
],
[
"sw-header--hidden-sub-controls",
"Hidden Sub Controls"
],
[
"sw-header--overview",
"Overview"
@@ -1,5 +1,5 @@
{
"total": 336,
"total": 334,
"sw": [
{
"id": "sw-header--composed-controls",
@@ -11,6 +11,26 @@
"manifest"
]
},
{
"id": "sw-header--document-open",
"name": "Document Open",
"title": "SW/Header",
"tags": [
"dev",
"test",
"manifest"
]
},
{
"id": "sw-header--hidden-sub-controls",
"name": "Hidden Sub Controls",
"title": "SW/Header",
"tags": [
"dev",
"test",
"manifest"
]
},
{
"id": "sw-header--detail-buttons",
"name": "Detail Buttons (Shared States)",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 224 KiB

@@ -510,14 +510,14 @@
"data": {
"cHome": {
"x": 360,
"y": 285.5,
"y": 6118.5,
"w": 80,
"h": 48,
"right": 440
},
"cOpen": {
"x": 425,
"y": 285.5,
"y": 6118.5,
"w": 58.265625,
"h": 48,
"right": 483.265625
Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 239 KiB

+1 -1
View File
@@ -1,6 +1,6 @@
# SW Header 사용 가이드
> **0.2.0 통합 개선(2026-10-19):** 로고 오른쪽 파일 열기(`documentOpenPlacement="header"`, `documentOpenLabel` 재사용, 실측 기반 More 이동), `leading` 슬롯, 하위 항목 숨김(`hiddenControls`의 `documentNew`·`documentOpen`·`layerFreeze`·`layerLock`), 도구 막대 `SWToolButton` / `SWToolGroup`, 속성창 프레임 `SWPopup`(자유 `children`)과 `SWHeaderPropertyPanel`의 `children`·`title`을 추가했습니다. API·예제는 패키지 [AI 카탈로그](../../packages/sw/ai/COMPONENT_CATALOG.md)와 [조합 패턴](../../packages/sw/ai/COMPOSITION_PATTERNS.md), Story는 `SW / Header / Options`·`SW / Tool`·`SW / Popup`, 검증은 [통합 개선 기록](./sw-integrated-improvement-2026-10-19.md)을 따릅니다.
> **0.2.0 통합 개선(2026-10-19):** 로고 오른쪽 파일 열기(`documentOpenPlacement="header"`, `documentOpenLabel` 재사용, 실측 기반 More 이동), `leading` 슬롯, 하위 항목 숨김(`hiddenControls`의 `documentNew`·`documentOpen`·`layerFreeze`·`layerLock`), 도구 막대 `SWToolButton` / `SWToolGroup`, 속성창 프레임 `SWPopup`(자유 `children`)과 `SWHeaderPropertyPanel`의 `children`·`title`을 추가했습니다. API·예제는 패키지 [AI 카탈로그](../../packages/sw/ai/COMPONENT_CATALOG.md)와 [조합 패턴](../../packages/sw/ai/COMPOSITION_PATTERNS.md), Story는 `SW / Header`의 Document Open·Hidden Sub Controls, `SW / Tool`, `SW / Popup`, 검증은 [통합 개선 기록](./sw-integrated-improvement-2026-10-19.md)을 따릅니다.
> **현재 기준 색인(2026-10-19 1차 정리):** 아래 날짜별 안내 중 최신 항목이 같은 주제의 이전 설명보다 우선합니다. 속성 필드 13개·필드 Dropdown(`picker`·`menus`·`decimals`)은 [속성창·K 가이드 추가 연결](#속성창k-가이드-추가-연결-2026-10-16)의 2026-10-19 항목, 표시·숨김(`hiddenControls`)·메뉴 순서(`menuOrder`)·속성창 4상태·형상 Slot은 [3차 절](#구성요소-표시메뉴-순서속성창-4상태형상-slot-2026-10-16-3차), 속성Bar·`controls`·Colorize는 [후속 절](#후속-5개-요구사항-연결-2026-10-16)을 봅니다. 현재 Storybook 33개 목록은 [§12](#12-storybook)와 [1차 정리 보고](./sw-first-pass-cleanup-review-2026-10-19.md)에 있습니다.
@@ -15,7 +15,7 @@
| 5 SWPopup | 속성창 프레임을 `SWPopupFrame`(내부)으로 분리해 `SWPopup`과 `SWHeaderPropertyPanel`이 같은 DOM 사용. `children`·`title`·`autoFocus`, `selection`/`properties`/`groups` 선택형. Escape 스택(안 = 그 Popup, 밖 = 최근 사용 Popup 하나, `defaultPrevented` 존중), autoFocus 시 안에서 닫히면 Focus 복귀 | PASS |
| 6 Popup 안 Dropdown | 실측: 짧은 Popup에서 레이어 목록이 본문 경계에서 잘림 확인 → 속성창 Picker의 고정 위치 계산을 `useSWFixedDropdownPosition`으로 추출해 Picker와 공개 Dropdown 5종이 공유(중복 구현 없음). `SWPopupSection` / `SWPopupRow` 추가 | PASS |
| 7 조합형 반응형 | 새 More 로직 없음. `SWHeader`의 `controls`·`documentOpenPlacement`·`leading`·`tools`로 조합형 구성이 기존 More·실측 판단을 그대로 사용. `SWTheme` 직접 배치에는 More 없음(문서화) | PARTIAL(도구 막대 자체는 More로 이동하지 않음, §6) |
| 8 문서·Storybook·소비 검증 | AI 가이드 4종·예제 E/F·README·사용 가이드, Story 3개 파일(7 Story), 독립 소비 프로젝트(SW + HM UI) | PASS |
| 8 문서·Storybook·소비 검증 | AI 가이드 4종·예제 E/F·README·사용 가이드, Story 3개 파일(5 Story: `SW/Header`의 Document Open·Hidden Sub Controls, `SW/Tool` 1, `SW/Popup` 2. 별도 Options 메뉴 없음), 독립 소비 프로젝트(SW + HM UI) | PASS |
## 2. 추가·변경 공개 API (모두 선택, 기본 동작 동일)
@@ -74,5 +74,6 @@
| [ai-docs.check.mjs](../../packages/sw/tests/ai-docs.check.mjs) | 21/21 PASS(예제 E·F 포함) |
| [integrated-visual.browser.mjs](../../packages/sw/tests/integrated-visual.browser.mjs) | 28/28 픽셀 동일 |
| [build-reproducibility.mjs](../../packages/sw/tests/build-reproducibility.mjs) | PASS: LF 2경로 × 2회 dist·Tarball 동일(`e98cc5ed…`), CRLF 복사본 dist 동일, 비-LF 파일 0 |
| storybook-unused-removal / overview(기존 회귀) | 처음 실행 78/81 · 51/54: 6건 중 4건은 이 작업이 의도적으로 바꾼 범위 단언(Story 수 329 → 336, SW 소스·AI 문서), 2건은 변경 전 기준선에서도 실패하던 overview 과거 단언. 4건은 검사 의미를 유지해 범위를 갱신(SW/Header 10개·다른 항목 동일, 추가는 승인된 7개 Story만, 다른 패키지·설정·자산 무변경, SW 변경은 통합 개선 파일 목록 안에서만) → **81/81 · 52/54**. 남은 2건은 기준선과 동일 |
| storybook-unused-removal / overview(기존 회귀) | 처음 실행 78/81 · 51/54: 6건 중 4건은 이 작업이 의도적으로 바꾼 범위 단언(Story 수 증가, SW 소스·AI 문서), 2건은 변경 전 기준선에서도 실패하던 overview 과거 단언. 4건은 검사 의미를 유지해 범위를 갱신(SW/Header 10개·다른 항목 동일, 추가는 승인된 5개 Story만, 다른 패키지·설정·자산 무변경, SW 변경은 통합 개선 파일 목록 안에서만) → **81/81 · 52/54**. Options 메뉴를 `SW/Header`로 통합한 뒤(Story 2개 렌더 검사 추가) **83/83 · 52/54** |
| overview 남은 실패 2건 — **기존 실패, 신규 결함 아님** | "24 retained Story IDs…", "retained non-Overview declarations byte-identical…": 이미 은퇴한 Dropdown Story 시점(24개, 기준 Commit `50bf5bd`)을 고정 비교하는 과거 단언입니다. 이 작업을 시작하기 전 기준선(HEAD `5faa1f1`)에서도 같은 2건이 실패했습니다([baseline-overview.log](./integrated-improvement-qa/baseline-overview.log)). 현재 인벤토리는 storybook-unused-removal이 검증하며, overview 기능 검사 52건은 모두 PASS |
| font-weight 정책 테스트 | 3/3 PASS |