From 50bf5bda8e956a4973b923d64131f2f2285bd38c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=88=98=ED=98=84?= Date: Mon, 19 Oct 2026 10:42:32 +0900 Subject: [PATCH] chore(sw): remove selected Storybook demos --- .../after-index.json | 423 +++++++++++ .../before-index.json | 498 +++++++++++++ .../preservation/preservation-result.json | 114 +++ .../storybook-cleanup-stage1-qa/result.json | 678 ++++++++++++++++++ .../storybook-build.txt | 418 +++++++++++ .../validation-summary.json | 32 + .../window-move-motion.png | Bin 0 -> 154364 bytes .../sw-storybook-cleanup-stage1-2026-10-19.md | 67 ++ packages/sw/tests/detail-buttons.browser.mjs | 13 +- .../storybook-cleanup-stage1.browser.mjs | 148 ++++ src/sw/sw-header.stories.tsx | 261 +------ 11 files changed, 2387 insertions(+), 265 deletions(-) create mode 100644 docs/sw/storybook-cleanup-stage1-qa/after-index.json create mode 100644 docs/sw/storybook-cleanup-stage1-qa/before-index.json create mode 100644 docs/sw/storybook-cleanup-stage1-qa/preservation/preservation-result.json create mode 100644 docs/sw/storybook-cleanup-stage1-qa/result.json create mode 100644 docs/sw/storybook-cleanup-stage1-qa/storybook-build.txt create mode 100644 docs/sw/storybook-cleanup-stage1-qa/validation-summary.json create mode 100644 docs/sw/storybook-cleanup-stage1-qa/window-move-motion.png create mode 100644 docs/sw/sw-storybook-cleanup-stage1-2026-10-19.md create mode 100644 packages/sw/tests/storybook-cleanup-stage1.browser.mjs diff --git a/docs/sw/storybook-cleanup-stage1-qa/after-index.json b/docs/sw/storybook-cleanup-stage1-qa/after-index.json new file mode 100644 index 0000000..d3311f8 --- /dev/null +++ b/docs/sw/storybook-cleanup-stage1-qa/after-index.json @@ -0,0 +1,423 @@ +[ + { + "type": "story", + "subtype": "story", + "id": "sw-header--detail-buttons", + "name": "Detail Buttons (Shared States)", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest", + "verification" + ], + "exportName": "DetailButtons" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--overview", + "name": "Overview", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Overview" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--interactive-states", + "name": "Interactive States", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "InteractiveStates" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--window-move-motion", + "name": "Window Move Motion", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "WindowMoveMotion" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--composed-controls", + "name": "Composed Controls", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "ComposedControls" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--logo-slot", + "name": "Logo Slot", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LogoSlot" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--document-dropdown", + "name": "Document Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "DocumentDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--layer-dropdown", + "name": "Layer Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LayerDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--color-dropdown", + "name": "Color Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "ColorDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--line-style-dropdown", + "name": "Line Style Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LineStyleDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--text-dimension-style-dropdown", + "name": "Text · Dimension Style Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "TextDimensionStyleDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--responsive-more", + "name": "Responsive More", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "ResponsiveMore" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--layer-detail-input", + "name": "Layer Detail · Input", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LayerDetailInput" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel", + "name": "Property Panel", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanel" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-variants", + "name": "Property Panel Variants", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelVariants" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--k-guide", + "name": "K Guide", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "KGuide" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--additional-hover", + "name": "Additional Hover", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "AdditionalHover" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-bar", + "name": "Property Bar", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyBar" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--dynamic-controls", + "name": "Dynamic Controls", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "DynamicControls" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--colorize", + "name": "Colorize", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Colorize" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--composition", + "name": "Composition (Visibility · Order)", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Composition" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-none", + "name": "Property Panel · 선택 없음", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelNone" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-all", + "name": "Property Panel · 전체 선택", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelAll" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-circle", + "name": "Property Panel · 원 1개", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelCircle" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-expanded", + "name": "Property Panel · 모두 펼침", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelExpanded" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-compare", + "name": "Property Panel · 4개 비교", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelCompare" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-shape-slot", + "name": "Property Panel · 형상 Slot", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyShapeSlot" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-fields", + "name": "Property Panel · 필드 13개", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyFields" + } +] diff --git a/docs/sw/storybook-cleanup-stage1-qa/before-index.json b/docs/sw/storybook-cleanup-stage1-qa/before-index.json new file mode 100644 index 0000000..7a0d5c7 --- /dev/null +++ b/docs/sw/storybook-cleanup-stage1-qa/before-index.json @@ -0,0 +1,498 @@ +[ + { + "type": "story", + "subtype": "story", + "id": "sw-header--detail-buttons", + "name": "Detail Buttons (Shared States)", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest", + "verification" + ], + "exportName": "DetailButtons" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--overview", + "name": "Overview", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Overview" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--default", + "name": "Default", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Default" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--controls", + "name": "Controls", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Controls" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--interactive-states", + "name": "Interactive States", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "InteractiveStates" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--responsive", + "name": "Responsive", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Responsive" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--window-move-motion", + "name": "Window Move Motion", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "WindowMoveMotion" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--composed-controls", + "name": "Composed Controls", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "ComposedControls" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--logo-slot", + "name": "Logo Slot", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LogoSlot" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--document-dropdown", + "name": "Document Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "DocumentDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--layer-dropdown", + "name": "Layer Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LayerDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--color-dropdown", + "name": "Color Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "ColorDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--line-style-dropdown", + "name": "Line Style Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LineStyleDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--text-dimension-style-dropdown", + "name": "Text · Dimension Style Dropdown", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "TextDimensionStyleDropdown" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--responsive-more", + "name": "Responsive More", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "ResponsiveMore" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--text-stroke", + "name": "Text Stroke", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "TextStroke" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--layer-detail-input", + "name": "Layer Detail · Input", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "LayerDetailInput" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--dynamic-data", + "name": "Dynamic Data", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "DynamicData" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel", + "name": "Property Panel", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanel" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-variants", + "name": "Property Panel Variants", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelVariants" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--k-guide", + "name": "K Guide", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "KGuide" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--additional-hover", + "name": "Additional Hover", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "AdditionalHover" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-bar", + "name": "Property Bar", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyBar" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--dynamic-controls", + "name": "Dynamic Controls", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "DynamicControls" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--colorize", + "name": "Colorize", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Colorize" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--composition", + "name": "Composition (Visibility · Order)", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "Composition" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-none", + "name": "Property Panel · 선택 없음", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelNone" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-all", + "name": "Property Panel · 전체 선택", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelAll" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-circle", + "name": "Property Panel · 원 1개", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelCircle" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-expanded", + "name": "Property Panel · 모두 펼침", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelExpanded" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-panel-compare", + "name": "Property Panel · 4개 비교", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyPanelCompare" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-shape-slot", + "name": "Property Panel · 형상 Slot", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyShapeSlot" + }, + { + "type": "story", + "subtype": "story", + "id": "sw-header--property-fields", + "name": "Property Panel · 필드 13개", + "title": "SW/Header", + "importPath": "./src/sw/sw-header.stories.tsx", + "componentPath": "./packages/sw/dist/index.js", + "tags": [ + "dev", + "test", + "manifest" + ], + "exportName": "PropertyFields" + } +] diff --git a/docs/sw/storybook-cleanup-stage1-qa/preservation/preservation-result.json b/docs/sw/storybook-cleanup-stage1-qa/preservation/preservation-result.json new file mode 100644 index 0000000..fcc8479 --- /dev/null +++ b/docs/sw/storybook-cleanup-stage1-qa/preservation/preservation-result.json @@ -0,0 +1,114 @@ +{ + "mode": "preservation", + "browser": "155.0.8059.80", + "checks": [ + { + "name": "required responsive width 390", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0, + "documentOverflow": 0 + } + }, + { + "name": "required responsive width 768", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0, + "documentOverflow": 0 + } + }, + { + "name": "required responsive width 1280", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0, + "documentOverflow": 0 + } + }, + { + "name": "required responsive width 1440", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0, + "documentOverflow": 0 + } + }, + { + "name": "preserve property panel none", + "status": "PASS", + "data": { + "x": 360, + "y": 204.5, + "width": 314, + "height": 256 + } + }, + { + "name": "preserve property panel all", + "status": "PASS", + "data": { + "x": 360, + "y": 204.5, + "width": 314, + "height": 361 + } + }, + { + "name": "preserve property panel circle", + "status": "PASS", + "data": { + "x": 360, + "y": 204.5, + "width": 314, + "height": 658 + } + }, + { + "name": "preserve property panel expanded", + "status": "PASS", + "data": { + "x": 360, + "y": 204.5, + "width": 314, + "height": 754 + } + }, + { + "name": "preserve window motion 1400ms", + "status": "PASS" + }, + { + "name": "window motion leave clears animations", + "status": "PASS" + }, + { + "name": "preserve K guide animation", + "status": "PASS" + }, + { + "name": "K guide leave closes", + "status": "PASS" + }, + { + "name": "preserve Colorize size", + "status": "PASS" + }, + { + "name": "preserve editable Input", + "status": "PASS" + }, + { + "name": "no browser errors", + "status": "PASS", + "data": [] + } + ], + "errors": [], + "styles": {}, + "status": "PASS" +} \ No newline at end of file diff --git a/docs/sw/storybook-cleanup-stage1-qa/result.json b/docs/sw/storybook-cleanup-stage1-qa/result.json new file mode 100644 index 0000000..e8e8094 --- /dev/null +++ b/docs/sw/storybook-cleanup-stage1-qa/result.json @@ -0,0 +1,678 @@ +{ + "checks": [ + { + "name": "33 -> 28; precisely the five requested IDs removed", + "status": "PASS", + "data": [ + { + "name": "Default", + "id": "sw-header--default" + }, + { + "name": "Controls", + "id": "sw-header--controls" + }, + { + "name": "Responsive", + "id": "sw-header--responsive" + }, + { + "name": "Text Stroke", + "id": "sw-header--text-stroke" + }, + { + "name": "Dynamic Data", + "id": "sw-header--dynamic-data" + } + ] + }, + { + "name": "all retained names, IDs, ordering and tags unchanged", + "status": "PASS" + }, + { + "name": "every retained declaration unchanged except WindowMoveMotion", + "status": "PASS", + "data": [] + }, + { + "name": "retained step section is byte-identical after newline normalization", + "status": "PASS" + }, + { + "name": "production implementation, CSS, SVG/assets and Storybook configuration unchanged", + "status": "PASS" + }, + { + "name": "render sw-header--detail-buttons", + "status": "PASS" + }, + { + "name": "render sw-header--overview", + "status": "PASS" + }, + { + "name": "render sw-header--interactive-states", + "status": "PASS" + }, + { + "name": "render sw-header--window-move-motion", + "status": "PASS" + }, + { + "name": "render sw-header--composed-controls", + "status": "PASS" + }, + { + "name": "render sw-header--logo-slot", + "status": "PASS" + }, + { + "name": "render sw-header--document-dropdown", + "status": "PASS" + }, + { + "name": "render sw-header--layer-dropdown", + "status": "PASS" + }, + { + "name": "render sw-header--color-dropdown", + "status": "PASS" + }, + { + "name": "render sw-header--line-style-dropdown", + "status": "PASS" + }, + { + "name": "render sw-header--text-dimension-style-dropdown", + "status": "PASS" + }, + { + "name": "render sw-header--responsive-more", + "status": "PASS" + }, + { + "name": "render sw-header--layer-detail-input", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel-variants", + "status": "PASS" + }, + { + "name": "render sw-header--k-guide", + "status": "PASS" + }, + { + "name": "render sw-header--additional-hover", + "status": "PASS" + }, + { + "name": "render sw-header--property-bar", + "status": "PASS" + }, + { + "name": "render sw-header--dynamic-controls", + "status": "PASS" + }, + { + "name": "render sw-header--colorize", + "status": "PASS" + }, + { + "name": "render sw-header--composition", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel-none", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel-all", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel-circle", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel-expanded", + "status": "PASS" + }, + { + "name": "render sw-header--property-panel-compare", + "status": "PASS" + }, + { + "name": "render sw-header--property-shape-slot", + "status": "PASS" + }, + { + "name": "render sw-header--property-fields", + "status": "PASS" + }, + { + "name": "only the requested section remains", + "status": "PASS", + "data": [ + "단계별 진행 (3배 확대)" + ] + }, + { + "name": "removed live demos, frame specimens and callback logs absent", + "status": "PASS" + }, + { + "name": "nine original steps and 3x magnification preserved", + "status": "PASS", + "data": [ + { + "time": "rest", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [] + }, + { + "time": "0", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 0, + "duration": 1400 + }, + { + "state": "paused", + "time": 0, + "duration": 1400 + }, + { + "state": "paused", + "time": 0, + "duration": 1400 + } + ] + }, + { + "time": "204.8780487804878", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 204.8780487804878, + "duration": 1400 + }, + { + "state": "paused", + "time": 204.8780487804878, + "duration": 1400 + }, + { + "state": "paused", + "time": 204.8780487804878, + "duration": 1400 + } + ] + }, + { + "time": "409.7560975609756", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 409.7560975609756, + "duration": 1400 + }, + { + "state": "paused", + "time": 409.7560975609756, + "duration": 1400 + }, + { + "state": "paused", + "time": 409.7560975609756, + "duration": 1400 + } + ] + }, + { + "time": "443.9024390243902", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 443.9024390243902, + "duration": 1400 + }, + { + "state": "paused", + "time": 443.9024390243902, + "duration": 1400 + }, + { + "state": "paused", + "time": 443.9024390243902, + "duration": 1400 + } + ] + }, + { + "time": "682.9268292682926", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 682.9268292682926, + "duration": 1400 + }, + { + "state": "paused", + "time": 682.9268292682926, + "duration": 1400 + }, + { + "state": "paused", + "time": 682.9268292682926, + "duration": 1400 + } + ] + }, + { + "time": "887.8048780487804", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 887.8048780487804, + "duration": 1400 + }, + { + "state": "paused", + "time": 887.8048780487804, + "duration": 1400 + }, + { + "state": "paused", + "time": 887.8048780487804, + "duration": 1400 + } + ] + }, + { + "time": "1365.8536585365853", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 1365.8536585365853, + "duration": 1400 + }, + { + "state": "paused", + "time": 1365.8536585365853, + "duration": 1400 + }, + { + "state": "paused", + "time": 1365.8536585365853, + "duration": 1400 + } + ] + }, + { + "time": "1400", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 1400, + "duration": 1400 + }, + { + "state": "paused", + "time": 1400, + "duration": 1400 + }, + { + "state": "paused", + "time": 1400, + "duration": 1400 + } + ] + } + ] + }, + { + "name": "rest is static; timed specimens pause three 1400ms animations at their original positions", + "status": "PASS" + }, + { + "name": "live Hover motion advances with original 1400ms infinite cycle", + "status": "PASS", + "data": [ + { + "before": 0, + "after": 199.92699997154995, + "state": "running", + "duration": 1400, + "iterations": "infinite" + }, + { + "before": 0, + "after": 199.92699997154995, + "state": "running", + "duration": 1400, + "iterations": "infinite" + }, + { + "before": 0, + "after": 199.92699997154995, + "state": "running", + "duration": 1400, + "iterations": "infinite" + } + ] + }, + { + "name": "pointer held pauses motion and hides tooltip", + "status": "PASS" + }, + { + "name": "Hover leave resets live specimen", + "status": "PASS" + }, + { + "name": "Responsive More still switches the representative field and opens its dropdown", + "status": "PASS" + }, + { + "name": "Dynamic Controls removes a configured field", + "status": "PASS" + }, + { + "name": "Dynamic Controls restores a configured field", + "status": "PASS" + }, + { + "name": "host-owned document list can still grow dynamically", + "status": "PASS" + }, + { + "name": "retained fluid header layout at 390px", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0 + } + }, + { + "name": "retained fluid header layout at 768px", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0 + } + }, + { + "name": "retained fluid header layout at 1280px", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0 + } + }, + { + "name": "retained fluid header layout at 1440px", + "status": "PASS", + "data": { + "height": 49, + "overflow": 0 + } + }, + { + "name": "no browser errors", + "status": "PASS", + "data": [] + } + ], + "errors": [], + "baseCommit": "92830fe11db7f37eb6a45e8bbc6a5038ec579649", + "deleted": [ + { + "name": "Default", + "id": "sw-header--default" + }, + { + "name": "Controls", + "id": "sw-header--controls" + }, + { + "name": "Responsive", + "id": "sw-header--responsive" + }, + { + "name": "Text Stroke", + "id": "sw-header--text-stroke" + }, + { + "name": "Dynamic Data", + "id": "sw-header--dynamic-data" + } + ], + "browser": "155.0.8059.80", + "stages": [ + { + "time": "rest", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [] + }, + { + "time": "0", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 0, + "duration": 1400 + }, + { + "state": "paused", + "time": 0, + "duration": 1400 + }, + { + "state": "paused", + "time": 0, + "duration": 1400 + } + ] + }, + { + "time": "204.8780487804878", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 204.8780487804878, + "duration": 1400 + }, + { + "state": "paused", + "time": 204.8780487804878, + "duration": 1400 + }, + { + "state": "paused", + "time": 204.8780487804878, + "duration": 1400 + } + ] + }, + { + "time": "409.7560975609756", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 409.7560975609756, + "duration": 1400 + }, + { + "state": "paused", + "time": 409.7560975609756, + "duration": 1400 + }, + { + "state": "paused", + "time": 409.7560975609756, + "duration": 1400 + } + ] + }, + { + "time": "443.9024390243902", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 443.9024390243902, + "duration": 1400 + }, + { + "state": "paused", + "time": 443.9024390243902, + "duration": 1400 + }, + { + "state": "paused", + "time": 443.9024390243902, + "duration": 1400 + } + ] + }, + { + "time": "682.9268292682926", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 682.9268292682926, + "duration": 1400 + }, + { + "state": "paused", + "time": 682.9268292682926, + "duration": 1400 + }, + { + "state": "paused", + "time": 682.9268292682926, + "duration": 1400 + } + ] + }, + { + "time": "887.8048780487804", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 887.8048780487804, + "duration": 1400 + }, + { + "state": "paused", + "time": 887.8048780487804, + "duration": 1400 + }, + { + "state": "paused", + "time": 887.8048780487804, + "duration": 1400 + } + ] + }, + { + "time": "1365.8536585365853", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 1365.8536585365853, + "duration": 1400 + }, + { + "state": "paused", + "time": 1365.8536585365853, + "duration": 1400 + }, + { + "state": "paused", + "time": 1365.8536585365853, + "duration": 1400 + } + ] + }, + { + "time": "1400", + "zoom": "3", + "width": 456, + "height": 144, + "animations": [ + { + "state": "paused", + "time": 1400, + "duration": 1400 + }, + { + "state": "paused", + "time": 1400, + "duration": 1400 + }, + { + "state": "paused", + "time": 1400, + "duration": 1400 + } + ] + } + ], + "status": "PASS" +} diff --git a/docs/sw/storybook-cleanup-stage1-qa/storybook-build.txt b/docs/sw/storybook-cleanup-stage1-qa/storybook-build.txt new file mode 100644 index 0000000..fae8f7c --- /dev/null +++ b/docs/sw/storybook-cleanup-stage1-qa/storybook-build.txt @@ -0,0 +1,418 @@ + +> hm-design-system-poc@0.1.0 prebuild-storybook +> npm run check:theme-defaults && npm run build:packages + + +> hm-design-system-poc@0.1.0 check:theme-defaults +> node scripts/theme-defaults.mjs --check + +Theme defaults: 92 JSON colors / 94 contract defaults; generated outputs match + +> hm-design-system-poc@0.1.0 build:packages +> npm run build:org-chart && npm run build:ui && npm run build:center-graphic && npm run build:org-chart-react && npm run build:sw + + +> hm-design-system-poc@0.1.0 build:org-chart +> npm run build -w @hm-design/org-chart + + +> @hm-design/org-chart@0.1.0 build +> node build.mjs + +vite v8.3.0 building client environment for production... +transforming... +✓ 70 modules transformed. +rendering chunks... +computing gzip size... +dist/index.js 2,450.52 kB │ gzip: 1,648.92 kB + +✓ built in 95ms +vite v8.3.0 building client environment for production... +transforming... +✓ 70 modules transformed. +rendering chunks... +computing gzip size... +dist/orgchart.browser.js 2,456.85 kB │ gzip: 1,649.32 kB + +✓ built in 81ms + +> hm-design-system-poc@0.1.0 build:ui +> npm run build -w @hm-design/ui + + +> @hm-design/ui@0.1.0 build +> node ../../scripts/build-package.mjs ui + +vite v8.3.0 building client environment for production... +transforming... +✓ 70 modules transformed. +rendering chunks... +computing gzip size... +dist/theme/index.js 25.18 kB │ gzip: 3.98 kB +dist/index.js 120.43 kB │ gzip: 21.30 kB + +✓ built in 73ms + +> hm-design-system-poc@0.1.0 build:center-graphic +> npm run build -w @hm-design/center-graphic + + +> @hm-design/center-graphic@0.1.0 build +> node ../../scripts/build-package.mjs center-graphic + +vite v8.3.0 building client environment for production... +transforming... +✓ 145 modules transformed. +rendering chunks... +computing gzip size... +dist/style.css 88.68 kB │ gzip: 20.14 kB +dist/reference.js 0.65 kB │ gzip: 0.23 kB +dist/index.js 1.86 kB │ gzip: 0.84 kB +dist/FacilityBatch-PtW_fbvn.js 1,675.84 kB │ gzip: 276.13 kB + +✓ built in 118ms + +> hm-design-system-poc@0.1.0 build:org-chart-react +> npm run build -w @hm-design/org-chart-react + + +> @hm-design/org-chart-react@0.1.0 build +> node build.mjs + +vite v8.3.0 building client environment for production... +transforming... +✓ 5 modules transformed. +rendering chunks... +computing gzip size... +dist/index.js 0.09 kB │ gzip: 0.09 kB +dist/hm-dialog.js 4.39 kB │ gzip: 1.80 kB +dist/OrgChart-DZlWXlj3.js 10.50 kB │ gzip: 2.63 kB + +✓ built in 35ms + +> hm-design-system-poc@0.1.0 build:sw +> npm run build -w @hm-design/sw + + +> @hm-design/sw@0.1.0 build +> node build.mjs + +vite v8.3.0 building client environment for production... +transforming... +✓ 69 modules transformed. +rendering chunks... +computing gzip size... +dist/styles.css 100.39 kB │ gzip: 23.57 kB +dist/index.js 712.25 kB │ gzip: 337.98 kB + +✓ built in 111ms + +> hm-design-system-poc@0.1.0 build-storybook +> storybook build -o storybook-static --disable-telemetry + + +T Building storybook v10.6.1 +| +o Cleaning outputDir: storybook-static +| +o Loading presets +| +o Building manager.. +| +• Building open services.. +| +• Building preview.. +| +• Copying static files: public\fonts at storybook-static\fonts +| Vite vite v8.3.0 building client environment for production... +transforming... +| +• Copying static files: themes at storybook-static\themes +Found 1 warning while optimizing generated CSS: + +│ } +│ .bg-\[var\(\.\.\.\)\] { +│ background-color: var(...); +┆ ^-- Unexpected token Delim('.') +┆ +│ } +│ .bg-background { + +✓ 3101 modules transformed. +| +! Vite [lightningcss minify] 'host-context' is not recognized as a valid +| pseudo-class. Did you mean '::host-context' (pseudo-element) or is +| this a typo? +| 1322 | background-color: var(--hm-orgchart-dialog-close-hover); +| 1323 | } +| 1324 | :host-context(.dark) .hm-orgchart-employee-dialog-close:hover, +| | ^ +| 1325 | .dark .hm-orgchart-employee-dialog-close:hover { +| 1326 | background-color: color-mix(in oklab, +| var(--hm-orgchart-dialog-close-hover) 50%, transparent); +rendering chunks... +computing gzip size... +| Vite storybook-static/assets/input-26-11656-BIXt51ww.png +| 5.09 kB +| storybook-static/iframe.html +| 19.07 kB │ gzip: 5.42 kB +| storybook-static/assets/NotoSansKR-variable-k7NQXPol.ttf +| 10,414.58 kB +| storybook-static/assets/data-table-x0avmA1M.css +| 0.89 kB │ gzip: 0.32 kB +| storybook-static/assets/department-colors-preview-C8o8mgn-.css +| 1.12 kB │ gzip: 0.39 kB +| storybook-static/assets/org-chart-stories-CVVpQeIs.css +| 1.15 kB │ gzip: 0.39 kB +| storybook-static/assets/org-chart-expanded-BQqXfdmZ.css +| 1.34 kB │ gzip: 0.43 kB +| storybook-static/assets/story-page-B9TObVPB.css +| 1.74 kB │ gzip: 0.49 kB +| storybook-static/assets/designer-theme-Bv3QXGf0.css +| 2.88 kB │ gzip: 0.85 kB +| storybook-static/assets/reference-CElszmAj.css +| 3.13 kB │ gzip: 0.87 kB +| storybook-static/assets/center-stories-MLQreMPw.css +| 6.77 kB │ gzip: 1.49 kB +| storybook-static/assets/dashboard-layout-cwHZMCdB.css +| 6.90 kB │ gzip: 1.21 kB +| storybook-static/assets/engine-DrWcIejL.css +| 15.64 kB │ gzip: 3.10 kB +| storybook-static/assets/center-shared-CBSMPY7X.css +| 55.67 kB │ gzip: 10.48 kB +| storybook-static/assets/sw-header-C90CBOQd.css +| 71.39 kB │ gzip: 13.24 kB +| storybook-static/assets/style-BhhUui7W.css +| 93.80 kB │ gzip: 12.41 kB +| storybook-static/assets/iframe-BW1xNYqB.css +| 237.20 kB │ gzip: 36.15 kB +| storybook-static/assets/iframe-B2ZqwRQr.js +| 0.04 kB │ gzip: 0.06 kB +| storybook-static/assets/center-stories-Cr38slYE.js +| 0.09 kB │ gzip: 0.11 kB +| storybook-static/assets/org-chart-stories-BU9b3y-N.js +| 0.09 kB │ gzip: 0.11 kB +| storybook-static/assets/chart-column-CrDPAp-u.js +| 0.41 kB │ gzip: 0.29 kB +| storybook-static/assets/layout-grid-Dec_L8Aj.js +| 0.48 kB │ gzip: 0.28 kB +| storybook-static/assets/italic-C62xCiKB.js +| 0.58 kB │ gzip: 0.35 kB +| storybook-static/assets/org-chart-full-composition.stories-CmXC5sW1.js +| 0.59 kB │ gzip: 0.39 kB +| storybook-static/assets/org-chart-p1.stories-BSRSHtxP.js +| 0.59 kB │ gzip: 0.40 kB +| storybook-static/assets/org-chart-department-colors.stories-BJ6NN2og.js +| 0.60 kB │ gzip: 0.39 kB +| storybook-static/assets/settings-IEEhIdXT.js +| 0.62 kB │ gzip: 0.34 kB +| storybook-static/assets/org-chart-summary.stories-DUf6hNdy.js +| 0.76 kB │ gzip: 0.39 kB +| storybook-static/assets/center-information.stories-CTlvamgN.js +| 0.94 kB │ gzip: 0.63 kB +| storybook-static/assets/sample-users-CAqvNHXG.js +| 0.94 kB │ gzip: 0.67 kB +| storybook-static/assets/center-spatial.stories-Cq7GuYZv.js +| 0.97 kB │ gzip: 0.64 kB +| storybook-static/assets/rolldown-runtime-DkW27tQK.js +| 1.19 kB │ gzip: 0.67 kB +| storybook-static/assets/preload-helper-VEOc_cSF.js +| 1.33 kB │ gzip: 0.75 kB +| storybook-static/assets/center-title.stories-BBmUr86Z.js +| 1.36 kB │ gzip: 0.88 kB +| storybook-static/assets/org-chart-overview-internal.stories-xfMk8xm3.js +| 1.43 kB │ gzip: 0.68 kB +| storybook-static/assets/org-chart-cards.stories-5sVa_xK1.js +| 1.60 kB │ gzip: 0.92 kB +| storybook-static/assets/color.stories-CRESndSc.js +| 1.80 kB │ gzip: 1.03 kB +| storybook-static/assets/center-facility.stories-MbEz9XLY.js +| 1.90 kB │ gzip: 1.07 kB +| storybook-static/assets/loading-screen.stories-c2mCZt7h.js +| 1.96 kB │ gzip: 1.03 kB +| storybook-static/assets/story-board-CMOyevtm.js +| 1.99 kB │ gzip: 0.89 kB +| storybook-static/assets/skeleton.stories-Bn6sImwM.js +| 2.10 kB │ gzip: 1.00 kB +| storybook-static/assets/story-page-InLs9Vcj.js +| 2.13 kB │ gzip: 0.69 kB +| storybook-static/assets/verification-state-CRE5GvFI.js +| 2.15 kB │ gzip: 1.05 kB +| storybook-static/assets/hover-card.stories-DK6TOk7K.js +| 2.34 kB │ gzip: 1.09 kB +| storybook-static/assets/alert-dialog.stories-C3y8_aeE.js +| 2.48 kB │ gzip: 1.08 kB +| storybook-static/assets/separator.stories-DD1Lnw5I.js +| 2.56 kB │ gzip: 1.16 kB +| storybook-static/assets/dropdown-menu.stories-Ct3gPj8c.js +| 2.58 kB │ gzip: 1.29 kB +| storybook-static/assets/badge.stories-B45ffhR3.js +| 2.61 kB │ gzip: 1.23 kB +| storybook-static/assets/tooltip.stories-CdfcrH9l.js +| 2.65 kB │ gzip: 1.23 kB +| storybook-static/assets/publisher-regression.stories-BUA6jhK3.js +| 2.70 kB │ gzip: 1.14 kB +| storybook-static/assets/calendar.stories-JsGZzMU6.js +| 2.79 kB │ gzip: 1.30 kB +| storybook-static/assets/switch.stories-BkiV1juR.js +| 2.86 kB │ gzip: 1.28 kB +| storybook-static/assets/reference-CNG9Q7Qf.js +| 2.88 kB │ gzip: 1.24 kB +| storybook-static/assets/context-menu.stories-DYgUrl_5.js +| 2.95 kB │ gzip: 1.47 kB +| storybook-static/assets/center-shared-C3dIvnsE.js +| 2.96 kB │ gzip: 1.36 kB +| storybook-static/assets/scroll-area.stories-BDJ-Spvu.js +| 3.02 kB │ gzip: 1.30 kB +| storybook-static/assets/popover.stories-DpV76T6Y.js +| 3.05 kB │ gzip: 1.30 kB +| storybook-static/assets/aspect-ratio.stories-DgNz1xSz.js +| 3.06 kB │ gzip: 1.51 kB +| storybook-static/assets/typography.stories-CGPtsrfA.js +| 3.07 kB │ gzip: 1.42 kB +| storybook-static/assets/pagination.stories-CWF8okYi.js +| 3.12 kB │ gzip: 1.50 kB +| storybook-static/assets/alert.stories-oDf5co-_.js +| 3.16 kB │ gzip: 1.29 kB +| storybook-static/assets/label.stories-2WonSZOr.js +| 3.19 kB │ gzip: 1.39 kB +| storybook-static/assets/collapsible.stories-CHcI8y1q.js +| 3.19 kB │ gzip: 1.50 kB +| storybook-static/assets/drawer.stories-TOTXcbXX.js +| 3.23 kB │ gzip: 1.47 kB +| storybook-static/assets/radio-group.stories-z8I630HS.js +| 3.24 kB │ gzip: 1.47 kB +| storybook-static/assets/avatar.stories-Bsma4jmS.js +| 3.30 kB │ gzip: 1.45 kB +| storybook-static/assets/page-header.stories-CgClekDL.js +| 3.32 kB │ gzip: 1.30 kB +| storybook-static/assets/menubar.stories-C2OkGMXB.js +| 3.33 kB │ gzip: 1.39 kB +| storybook-static/assets/command.stories-BGdtj-Vw.js +| 3.33 kB │ gzip: 1.58 kB +| storybook-static/assets/center-overview.stories-BUlg6ljN.js +| 3.36 kB │ gzip: 1.77 kB +| storybook-static/assets/filter-bar.stories-kxI3Llmp.js +| 3.43 kB │ gzip: 1.72 kB +| storybook-static/assets/sheet.stories-BDx_nhob.js +| 3.51 kB │ gzip: 1.44 kB +| storybook-static/assets/progress.stories-c7TrYqeB.js +| 3.52 kB │ gzip: 1.60 kB +| storybook-static/assets/breadcrumb.stories-DWOevXaH.js +| 3.55 kB │ gzip: 1.52 kB +| storybook-static/assets/card.stories-ZUo4F81H.js +| 3.74 kB │ gzip: 1.63 kB +| storybook-static/assets/navigation-menu.stories-BmS0c7qz.js +| 3.86 kB │ gzip: 1.62 kB +| storybook-static/assets/resizable.stories-DoJps_3U.js +| 3.96 kB │ gzip: 1.46 kB +| storybook-static/assets/specimens-C49VJeZT.js +| 4.13 kB │ gzip: 1.36 kB +| storybook-static/assets/sonner.stories-vuU_t7oM.js +| 4.22 kB │ gzip: 1.83 kB +| storybook-static/assets/checkbox.stories-CZ2w2Qab.js +| 4.39 kB │ gzip: 1.66 kB +| storybook-static/assets/date-picker.stories-COb2hSCU.js +| 4.45 kB │ gzip: 1.68 kB +| storybook-static/assets/slider.stories-CwDpW7mP.js +| 4.53 kB │ gzip: 1.85 kB +| storybook-static/assets/org-chart-page-previews-DkDa-PWK.js +| 4.70 kB │ gzip: 2.05 kB +| storybook-static/assets/carousel.stories-CA_mwrsr.js +| 4.75 kB │ gzip: 1.91 kB +| storybook-static/assets/layout.stories-CQ6ojhKi.js +| 4.79 kB │ gzip: 1.92 kB +| storybook-static/assets/table.stories-13OnP4or.js +| 4.86 kB │ gzip: 2.02 kB +| storybook-static/assets/combobox.stories-7-ze7vBq.js +| 5.03 kB │ gzip: 2.06 kB +| storybook-static/assets/accordion.stories-CE5xTSQ-.js +| 5.05 kB │ gzip: 1.81 kB +| storybook-static/assets/OrgChart-DZlWXlj3-DpBLtOar.js +| 5.35 kB │ gzip: 1.94 kB +| storybook-static/assets/dialog.stories-BtscPLmz.js +| 5.53 kB │ gzip: 2.13 kB +| storybook-static/assets/toggle.stories-DWnnq7g_.js +| 5.81 kB │ gzip: 2.12 kB +| storybook-static/assets/data-table.stories-CV4Eyfkw.js +| 5.92 kB │ gzip: 2.51 kB +| storybook-static/assets/textarea.stories-q50rAgK3.js +| 5.99 kB │ gzip: 2.43 kB +| storybook-static/assets/runtime-loader.stories-DuMZGCVT.js +| 6.18 kB │ gzip: 2.45 kB +| storybook-static/assets/toggle-group.stories-BTaGOcrf.js +| 6.57 kB │ gzip: 2.23 kB +| storybook-static/assets/react-Q1GcV6wX.js +| 7.87 kB │ gzip: 3.01 kB +| storybook-static/assets/input.stories-Co1wru0X.js +| 8.32 kB │ gzip: 3.05 kB +| storybook-static/assets/button.stories-CW2ZQ7Bp.js +| 9.65 kB │ gzip: 3.62 kB +| storybook-static/assets/select.stories-CAX3tTcq.js +| 10.52 kB │ gzip: 3.39 kB +| storybook-static/assets/tabs.stories-DZ_x3GeH.js +| 11.57 kB │ gzip: 4.13 kB +| storybook-static/assets/org-chart.stories-D49__YqK.js +| 12.54 kB │ gzip: 4.15 kB +| storybook-static/assets/designer-theme.stories-D8Hrex2Y.js +| 14.62 kB │ gzip: 5.52 kB +| storybook-static/assets/gnb.stories-Bz0tX0qH.js +| 16.56 kB │ gzip: 5.83 kB +| storybook-static/assets/theme-CZw7CMzf.js +| 18.61 kB │ gzip: 3.18 kB +| storybook-static/assets/lnb.stories-DHeUgKcQ.js +| 23.06 kB │ gzip: 6.43 kB +| storybook-static/assets/dashboard-layout.stories-D3EPoHnA.js +| 23.84 kB │ gzip: 6.25 kB +| storybook-static/vite-inject-mocker-entry.js +| 27.84 kB │ gzip: 9.66 kB +| storybook-static/assets/reference-data-Dp4dBiCx.js +| 40.42 kB │ gzip: 9.43 kB +| storybook-static/assets/runtime-theme.stories-o-w95Yhu.js +| 61.92 kB │ gzip: 11.60 kB +| storybook-static/assets/org-chart-expanded.stories-DwIuuCDG.js +| 79.03 kB │ gzip: 10.07 kB +| storybook-static/assets/react-18-DPql6C9x.js +| 207.62 kB │ gzip: 65.12 kB +| storybook-static/assets/core-component-preview-qVlFRdYj.js +| 258.40 kB │ gzip: 146.05 kB +| storybook-static/assets/sw-header.stories-rIXaAc8o.js +| 758.58 kB │ gzip: 357.47 kB +| storybook-static/assets/reference-CBHPHHCT.js +| 1,644.48 kB │ gzip: 270.35 kB +| storybook-static/assets/iframe-DVD1nTdY.js +| 1,754.05 kB │ gzip: 503.60 kB +| storybook-static/assets/style-CNeiB0x2.js +| 2,359.94 kB │ gzip: 1,631.23 kB + +| +! Vite [plugin builtin:vite-reporter] +| (!) Some chunks are larger than 500 kB after minification. Consider: +| - Using dynamic import() to code-split the application +| - Use build.rolldownOptions.output.codeSplitting to improve chunking: +| ]8;;https://rolldown.rs/reference/OutputOptions.codeSplittinghttps://rolldown.rs/reference/OutputOptions.codeSplitting]8;; +| - Adjust chunk size limit for this warning via +| build.chunkSizeWarningLimit. +| Vite ✓ built in 3.88s +| +! Vite [PLUGIN_TIMINGS] JavaScript callbacks ran for 3.4s of this 3.9s +| build (87%). +| The slowest callbacks, timed inside each callback (the wait before a +| callback starts is excluded, the time it awaits is included): +| - plugin storybook:react-docgen-plugin transform (60%, 2.3s, 3101 +| calls) +| Additional callback time came from the callbacks below and from +| callbacks under 1s. +| 3 callbacks are listed without a time. Their calls overlapped, so the +| time inside one call includes work from other calls. To find their +| cost, profile the build with `node --cpu-prof`: +| - plugin vite:asset load (31 calls) +| - plugin @tailwindcss/vite:generate:build transform (19 calls) +| - plugin vite:css transform (19 calls) +| See ]8;;https://rolldown.rs/reference/InputOptions.checks#bundlertimingshttps://rolldown.rs/reference/InputOptions.checks#bundlertimings]8;; +| for more details. + +| +o Output directory: D:/디자인시스템/HMDesign-SW/storybook-static +| +— Storybook build completed successfully diff --git a/docs/sw/storybook-cleanup-stage1-qa/validation-summary.json b/docs/sw/storybook-cleanup-stage1-qa/validation-summary.json new file mode 100644 index 0000000..a114b9e --- /dev/null +++ b/docs/sw/storybook-cleanup-stage1-qa/validation-summary.json @@ -0,0 +1,32 @@ +{ + "storybookBuild": { + "command": "npm.cmd run build-storybook", + "exitCode": 0, + "status": "PASS", + "log": "storybook-build.txt" + }, + "swTypecheck": { + "command": "npm.cmd run typecheck:sw", + "exitCode": 0, + "status": "PASS" + }, + "storyTypecheck": { + "command": "npm.cmd exec -- tsc -p tsconfig.app.json --noEmit", + "exitCode": 0, + "status": "PASS" + }, + "browser": { + "status": "PASS", + "checks": 49 + }, + "preservation": { + "status": "PASS", + "checks": 15 + }, + "warnings": [ + "CSS optimizer: background-color: var(...) generated utility", + "OrgChart :host-context minifier warnings", + "Vite chunk size warnings" + ], + "scope": "STORYBOOK_ONLY; no new application screen; AI screen generation guard not applicable" +} diff --git a/docs/sw/storybook-cleanup-stage1-qa/window-move-motion.png b/docs/sw/storybook-cleanup-stage1-qa/window-move-motion.png new file mode 100644 index 0000000000000000000000000000000000000000..895918ab18549406dae74c8bcbbf8374a8f84791 GIT binary patch literal 154364 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 ZvV@+z*t)xWuFaNWXBp~Lu*G>=8>0 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:h.getBoundingClientRect().height,overflow:h.scrollWidth-h.clientWidth,documentOverflow:document.documentElement.scrollWidth-document.documentElement.clientWidth})) @@ -54,7 +54,7 @@ try { const box=await page.locator('.hm-sw-property').first().boundingBox() check(`preserve property panel ${id}`,box.width===314&&box.height===height,box) } - await goto('controls') + await goto('composition') const motion=page.locator('[data-sw-window-move]').first();await motion.hover() check('preserve window motion 1400ms',await motion.evaluate(e=>e.getAnimations({subtree:true}).length===3&&e.getAnimations({subtree:true}).every(a=>a.effect.getTiming().duration===1400))) await page.mouse.move(1,900);check('window motion leave clears animations',await motion.evaluate(e=>e.getAnimations({subtree:true}).length===0)) @@ -70,7 +70,8 @@ try { const ids = Object.values(index.entries).filter(e => e.title === 'SW/Header' && e.type === 'story').map(e => e.id) report.storyIds = ids if (mode === 'baseline') await writeFile(path.join(output, 'baseline-story-ids.json'), JSON.stringify(ids)) - for (const story of ['default', 'controls']) { + // These retained examples cover fixed-width and fluid headers after the two Args demos were retired. + for (const story of ['overview', 'composition']) { await goto(story) for (const width of [1920,1800,1440,1180,1080,900,768,640,520,390]) { await page.setViewportSize({ width, height:1000 }) @@ -94,9 +95,11 @@ try { await writeFile(path.join(output,'baseline.json'),JSON.stringify(snapshots,null,2)) } else { const before=JSON.parse(await readFile(path.join(output,'baseline.json'),'utf8')) - for(const key of Object.keys(before).filter(k=>!k.startsWith('text'))) check(`unchanged header ${key}`,JSON.stringify(before[key])===JSON.stringify(snapshots[key])) + for(const key of Object.keys(snapshots).filter(k=>!k.startsWith('text'))) check(`unchanged header ${key} (capture a current baseline for replacement fixtures)`,JSON.stringify(before[key])===JSON.stringify(snapshots[key])) const oldIds=JSON.parse(await readFile(path.join(output,'baseline-story-ids.json'),'utf8')) - check('all previous 31 stories retained',oldIds.length===31&&oldIds.every(id=>ids.includes(id)),{before:oldIds.length,after:ids.length}) + const retiredIds=['default','controls','responsive','text-stroke','dynamic-data'].map(id=>`sw-header--${id}`) + const retainedIds=oldIds.filter(id=>!retiredIds.includes(id)) + check('retained stories remain; only the five approved demos are absent',ids.length===28&&retainedIds.every(id=>ids.includes(id))&&retiredIds.every(id=>!ids.includes(id)),{before:oldIds.length,after:ids.length}) for(const id of ids){await goto(id.replace('sw-header--',''));check(`render ${id}`,!(await page.locator('.sb-errordisplay').isVisible()))} await goto('composition') const presets=['기본 전체','구성 A','구성 B (레이어·선스타일)','구성 C (로고만)','파일 목록 제거','레이어 제거','색상 제거','스타일 그룹 제거','여러 메뉴 제거','순서 변경','숨김 + 순서 변경'] diff --git a/packages/sw/tests/storybook-cleanup-stage1.browser.mjs b/packages/sw/tests/storybook-cleanup-stage1.browser.mjs new file mode 100644 index 0000000..e83ab76 --- /dev/null +++ b/packages/sw/tests/storybook-cleanup-stage1.browser.mjs @@ -0,0 +1,148 @@ +// Scoped verification for the five approved Story removals; serves the production build locally. +// Usage: node packages/sw/tests/storybook-cleanup-stage1.browser.mjs [evidence-dir] +import { createRequire } from 'node:module' +import { readFile, writeFile, mkdir } from 'node:fs/promises' +import { execFileSync } from 'node:child_process' +import path from 'node:path' +import http from 'node:http' +import { parse } from '@babel/parser' + +const out = path.resolve(process.argv[2] ?? 'docs/sw/storybook-cleanup-stage1-qa') +await mkdir(out, { recursive: true }) +const report = { checks: [], errors: [], baseCommit: '92830fe11db7f37eb6a45e8bbc6a5038ec579649' } +const check = (name, ok, data) => { + report.checks.push({ name, status: ok ? 'PASS' : 'FAIL', data }) + console.log(ok ? 'PASS' : 'FAIL', name) +} +const retired = ['responsive', 'text-stroke', 'dynamic-data', 'default', 'controls'].map(id => `sw-header--${id}`) +const before = JSON.parse(await readFile(path.join(out, 'before-index.json'), 'utf8')) +const after = Object.values(JSON.parse(await readFile('storybook-static/index.json', 'utf8')).entries) + .filter(e => e.type === 'story' && e.title === 'SW/Header') +await writeFile(path.join(out, 'after-index.json'), JSON.stringify(after, null, 2) + '\n') +report.deleted = before.filter(e => !after.some(a => a.id === e.id)).map(e => ({ name: e.name, id: e.id })) +check('33 -> 28; precisely the five requested IDs removed', before.length === 33 && after.length === 28 && + report.deleted.length === 5 && retired.every(id => report.deleted.some(e => e.id === id)), report.deleted) +check('all retained names, IDs, ordering and tags unchanged', JSON.stringify(before.filter(e => !retired.includes(e.id)).map(e => [e.id, e.name, e.tags])) === + JSON.stringify(after.map(e => [e.id, e.name, e.tags]))) + +// Compare declaration text with the starting commit, including every retained fixture/helper. +const file = 'src/sw/sw-header.stories.tsx' +const original = execFileSync('git', ['show', `${report.baseCommit}:${file}`], { encoding: 'utf8' }).replaceAll('\r\n', '\n') +const current = (await readFile(file, 'utf8')).replaceAll('\r\n', '\n') +const declarations = text => { + return parse(text, { sourceType: 'module', plugins: ['typescript', 'jsx'] }).program.body.map(statement => { + const n = statement.type === 'ExportNamedDeclaration' ? statement.declaration : statement + return { + name: n.type === 'VariableDeclaration' ? n.declarations.map(d => d.id.name).join(',') : + n.type === 'ImportDeclaration' ? `import:${n.source.value}` : n.id?.name ?? n.type, + text: text.slice(statement.start, statement.end), + } + }) +} +const oldDeclarations = new Map(declarations(original).map(d => [d.name, d.text])) +const changed = declarations(current).filter(d => d.name !== 'WindowMoveMotion' && oldDeclarations.get(d.name) !== d.text) +check('every retained declaration unchanged except WindowMoveMotion', changed.length === 0, changed.map(d => d.name)) +const section = text => text.match(//)?.[0] +check('retained step section is byte-identical after newline normalization', !!section(original) && section(original) === section(current)) +const productionDiff = execFileSync('git', ['diff', report.baseCommit, '--', 'packages/sw/src', 'src/sw/sw-stories.css', 'src/sw/assets', '.storybook'], { encoding: 'utf8' }) +check('production implementation, CSS, SVG/assets and Storybook configuration unchanged', productionDiff === '') + +const root = path.resolve('storybook-static') +const mime = { '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.json': 'application/json', '.svg': 'image/svg+xml', '.ttf': 'font/ttf', '.png': 'image/png' } +const server = http.createServer(async (req, res) => { + try { + const pathname = new URL(req.url, 'http://localhost').pathname + const file = path.resolve(root, '.' + decodeURIComponent(pathname === '/' ? '/index.html' : pathname)) + if (path.relative(root, file).startsWith('..')) return res.writeHead(403).end() + res.setHeader('Content-Type', mime[path.extname(file)] ?? 'application/octet-stream') + res.end(await readFile(file)) + } catch { res.writeHead(404).end() } +}) +await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)) +const base = `http://127.0.0.1:${server.address().port}` +const { chromium } = createRequire(import.meta.url)(process.env.SW_PLAYWRIGHT_PATH ?? 'C:/Users/user/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright') +let browser +try { + browser = await chromium.launch({ headless: true, executablePath: process.env.SW_CHROME_PATH ?? 'C:/Program Files/Google/Chrome/Application/chrome.exe' }) + report.browser = browser.version() + const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }) + page.on('pageerror', e => report.errors.push(e.message)) + page.on('console', m => { if (m.type() === 'error') report.errors.push(m.text()) }) + const goto = async id => { + await page.goto(`${base}/iframe.html?id=${id.startsWith('sw-header--') ? id : `sw-header--${id}`}&viewMode=story`) + await page.locator('.hm-sw-header, .hm-sw-theme').first().waitFor() + await page.evaluate(() => document.fonts.ready) + await page.mouse.move(1, 1) + } + for (const entry of after) { + await goto(entry.id) + check(`render ${entry.id}`, !(await page.locator('.sb-errordisplay').isVisible())) + } + + await goto('window-move-motion') + const titles = await page.locator('section > header h2').allTextContents() + check('only the requested section remains', JSON.stringify(titles) === JSON.stringify(['단계별 진행 (3배 확대)']), titles) + check('removed live demos, frame specimens and callback logs absent', await page.locator('[data-frame-width], [data-callback-log]').count() === 0) + const stages = await page.locator('[data-motion-time]').evaluateAll(elements => elements.map(e => { + const zoom = e.querySelector('.sw-story-zoom'), motion = e.querySelector('[data-sw-window-move]') + const box = zoom.getBoundingClientRect() + return { time: e.dataset.motionTime, zoom: getComputedStyle(zoom).zoom, width: box.width, height: box.height, + animations: motion.getAnimations({ subtree: true }).map(a => ({ state: a.playState, time: a.currentTime, duration: a.effect.getTiming().duration })) } + })) + report.stages = stages + const expected = ['rest', ...[0, 240, 480, 520, 800, 1040, 1600, 1640].map(t => String(t * 1400 / 1640))] + check('nine original steps and 3x magnification preserved', stages.length === 9 && stages.every((s, i) => s.time === expected[i] && Number(s.zoom) === 3 && s.width === 456 && s.height === 144), stages) + check('rest is static; timed specimens pause three 1400ms animations at their original positions', stages[0].animations.length === 0 && stages.slice(1).every(s => s.animations.length === 3 && s.animations.every(a => a.state === 'paused' && a.duration === 1400 && Math.abs(a.time - Number(s.time)) < 0.01))) + await page.screenshot({ path: path.join(out, 'window-move-motion.png'), fullPage: true }) + const motion = page.locator('[data-motion-time="rest"] [data-sw-window-move]') + await motion.hover() + const timing = await motion.evaluate(async e => { + const animations = e.getAnimations({ subtree: true }) + const before = animations.map(a => a.currentTime) + const started = performance.now() + await new Promise(resolve => { const tick = () => performance.now() - started >= 180 ? resolve() : requestAnimationFrame(tick); requestAnimationFrame(tick) }) + return animations.map((a, i) => ({ before: before[i], after: a.currentTime, state: a.playState, duration: a.effect.getTiming().duration, iterations: a.effect.getTiming().iterations === Infinity ? 'infinite' : a.effect.getTiming().iterations })) + }) + check('live Hover motion advances with original 1400ms infinite cycle', timing.length === 3 && timing.every(a => a.state === 'running' && a.after > a.before && a.duration === 1400 && a.iterations === 'infinite'), timing) + await page.mouse.down() + check('pointer held pauses motion and hides tooltip', await motion.evaluate(e => e.getAnimations({ subtree: true }).every(a => a.playState === 'paused') && getComputedStyle(e.querySelector('[role="tooltip"]')).visibility === 'hidden')) + await page.mouse.up() + await page.mouse.move(1, 1) + check('Hover leave resets live specimen', await motion.evaluate(e => e.getAnimations({ subtree: true }).length === 0)) + + await goto('responsive-more') + const header = page.locator('[data-frame-width="1440"] header.hm-sw-header').first() + await header.getByRole('button', { name: '더보기', exact: true }).click() + await header.locator('[role="menuitem"][data-menu="line-style"]').click() + check('Responsive More still switches the representative field and opens its dropdown', await header.locator('.hm-sw-header__line-menu').count() > 0 && await header.locator('.hm-sw-header__line-menu').isVisible()) + await page.keyboard.press('Escape') + + await goto('dynamic-controls') + await page.getByRole('checkbox', { name: '구성 color', exact: true }).uncheck() + check('Dynamic Controls removes a configured field', await page.locator('header.hm-sw-header [data-control="color"], header.hm-sw-header [data-menu="color"]').count() === 0) + await page.getByRole('checkbox', { name: '구성 color', exact: true }).check() + check('Dynamic Controls restores a configured field', await page.locator('header.hm-sw-header [data-menu="color"]').count() > 0) + await page.getByRole('button', { name: '구성 초기화', exact: true }).click() + const documents = page.locator('header.hm-sw-header .hm-sw-header__document-button') + await documents.click() + await page.getByRole('button', { name: '+ New', exact: true }).click() + await documents.click() + check('host-owned document list can still grow dynamically', await page.getByText('새 문서 1', { exact: true }).count() > 0) + + await goto('composition') + for (const width of [390, 768, 1280, 1440]) { + await page.setViewportSize({ width, height: 1000 }) + const geometry = await page.locator('header.hm-sw-header').evaluate(e => ({ height: e.getBoundingClientRect().height, overflow: e.scrollWidth - e.clientWidth })) + check(`retained fluid header layout at ${width}px`, geometry.height === 49 && geometry.overflow === 0, geometry) + } + check('no browser errors', report.errors.length === 0, report.errors) +} catch (error) { + check('suite completes', false, error.stack) +} finally { + if (browser) await browser.close() + await new Promise(resolve => server.close(resolve)) + report.status = report.checks.every(c => c.status === 'PASS') ? 'PASS' : 'FAIL' + await writeFile(path.join(out, 'result.json'), JSON.stringify(report, null, 2) + '\n') + console.log(JSON.stringify({ status: report.status, checks: report.checks.length, errors: report.errors })) + process.exitCode = report.status === 'PASS' ? 0 : 1 +} diff --git a/src/sw/sw-header.stories.tsx b/src/sw/sw-header.stories.tsx index a13e264..9b7521c 100644 --- a/src/sw/sw-header.stories.tsx +++ b/src/sw/sw-header.stories.tsx @@ -198,14 +198,6 @@ export const Overview: Story = { ), } -export const Default: Story = { - render: args => , -} - -export const Controls: Story = { - render: args => , -} - export const InteractiveStates: Story = { name: "Interactive States", parameters: { controls: { disable: true } }, @@ -260,26 +252,6 @@ export const InteractiveStates: Story = { ), } -const RESPONSIVE_WIDTHS = [1920, 1800, 1799, 1770, 1600, 1440, 1280, 1180, 1179, 1080, 1079, 900, 899, 768, 640, 639, 560, 390] - -export const Responsive: Story = { - parameters: { controls: { disable: true } }, - render: () => ( - - - {RESPONSIVE_WIDTHS.map(width => ( - - - - ))} - - ), -} - /** Preserve GIF phase ratios/positions, with the user-requested 1640 -> 1400ms speed change. */ const motionTime = (gifTime: number) => gifTime * 1400 / 1640 const MOTION_STAGES = [ @@ -320,58 +292,12 @@ function MotionSpecimen({ time }: { time?: number }) { ) } -/** Live header with a callback / animation log, to check drag and clicks under the motion. */ -function MotionDemo({ width }: { width: number }) { - const [log, setLog] = useState([]) - const ref = useRef(null) - const add = (line: string) => setLog(lines => [...lines.slice(-9), line]) - useEffect(() => { - const area = ref.current?.querySelector(".hm-sw-header__motion") - if (!area) return - // One tooltip animation per play stands for the whole motion. - const listen = (type: string, line: string) => { - const handler = (event: Event) => { if ((event as AnimationEvent).animationName.endsWith("-tooltip")) add(line) } - area.addEventListener(type, handler) - return () => area.removeEventListener(type, handler) - } - const cleanups = [listen("animationstart", "motion start"), listen("animationiteration", "motion cycle"), listen("animationend", "motion end"), listen("animationcancel", "motion reset")] - return () => cleanups.forEach(cleanup => cleanup()) - }, []) - return ( - <> -

기록: {log.length ? log.join(" → ") : "없음"}

-
- - { console.info("[SWHeader] windowMoveStart"); add("onWindowMoveStart") }} - onMinimize={() => { callbacks.onMinimize(); add("onMinimize") }} - onClose={() => { callbacks.onClose(); add("onClose") }} - /> - -
- - ) -} - export const WindowMoveMotion: Story = { name: "Window Move Motion", parameters: { controls: { disable: true } }, render: () => ( - - -
- - - -
-
+
{MOTION_STAGES.map(stage => ( @@ -382,21 +308,6 @@ export const WindowMoveMotion: Story = { ))}
- - - - - - - -
- - -
-
- -

OS 설정을 켠 뒤 위 '실제 Hover' 예제에 마우스를 올려 확인합니다. Storybook은 이 미디어 조건을 강제로 켤 수 없습니다.

-
), } @@ -1093,47 +1004,6 @@ export const ResponsiveMore: Story = { ), } -export const TextStroke: Story = { - name: "Text Stroke", - parameters: { controls: { disable: true } }, - render: () => ( - - - - - - -
- - - - - - - - - - - - - - - - - -
-
- - - -
- ), -} - /** Host-owned detail values for the editable input (the detail popup itself is not designed yet). */ function InputDemo() { const [value, setValue] = useState("4.0526") @@ -1229,135 +1099,6 @@ export const LayerDetailInput: Story = { ), } -/* Dynamic data: every list is host data. Adding, removing, renaming, revaluing and reordering items - needs no component change; ids keep each row's state; a removed current item leaves no selection. */ -type DynamicLists = { - layers: SWHeaderLayer[] - colors: SWHeaderColorOption[] - userColors: SWHeaderColorOption[] - lineTypes: SWHeaderLineType[] - lineWeights: SWHeaderLineWeight[] - textStyles: SWHeaderTextStyleOption[] - dimensionStyles: SWHeaderDimensionStyleOption[] - documents: SWHeaderDocument[] -} -type DynamicKey = keyof DynamicLists -const DYNAMIC_INITIAL: DynamicLists = { - layers: SAMPLE_LAYERS.slice(0, 4), - colors: FIGMA_COLORS, - userColors: FIGMA_USER_COLORS, - lineTypes: FIGMA_LINE_TYPES, - lineWeights: FIGMA_LINE_WEIGHTS, - textStyles: FIGMA_TEXT_STYLES, - dimensionStyles: FIGMA_DIMENSION_STYLES, - documents: CURRENT_DOCUMENT, -} -const DYNAMIC_LABELS: Record = { - layers: "레이어", colors: "기본 색상", userColors: "사용자 색상", lineTypes: "선 종류", lineWeights: "가중치", - textStyles: "문자스타일", dimensionStyles: "치수스타일", documents: "문서", -} -/** New sample item of each list (`n` keeps ids unique). */ -const DYNAMIC_FACTORY: { [K in DynamicKey]: (n: number) => DynamicLists[K][number] } = { - layers: n => ({ id: `new-layer-${n}`, name: `New-Layer-${n}`, color: "#ffa500" }), - colors: n => ({ id: `color-${n}`, color: `hsl(${(n * 67) % 360} 80% 55%)`, label: `추가 색상 ${n}` }), - userColors: n => ({ id: `user-color-${n}`, color: `hsl(${(n * 83) % 360} 70% 60%)`, label: `사용자 색상 추가 ${n}` }), - lineTypes: n => ({ id: `line-${n}`, name: `DASH-${n}`, pattern: [12, 4, 12, 4] }), - lineWeights: n => ({ id: `weight-${n}`, name: `${(0.05 * n).toFixed(2)} mm`, value: (0.05 * n).toFixed(2) }), - textStyles: n => ({ id: `text-${n}`, font: "굴림", name: `Text-${n}` }), - dimensionStyles: n => ({ id: `dim-${n}`, name: `DIM-${n}` }), - documents: n => ({ id: `doc-${n}`, name: `Sample-New-${n}.dwg` }), -} -const renameFirst = (list: T[]) => - list.map((item, index) => (index !== 0 ? item : "name" in item ? { ...item, name: `${item.name}*` } : { ...item, label: `${item.label ?? ""}*` })) - -function DynamicDataDemo() { - const [lists, setLists] = useState(DYNAMIC_INITIAL) - const [active, setActive] = useState({ layer: "layer-0", lineType: "continuous", lineWeight: "w-default", textStyle: "standard", dimensionStyle: "standard", document: "doc-current" }) - const [lineStyle, setLineStyle] = useState(figmaArgs.lineStyle!) - const [log, setLog] = useState([]) - const counter = useRef(0) - const add = (line: string) => setLog(lines => [...lines.slice(-9), line]) - const update = (key: K, next: (list: DynamicLists[K]) => DynamicLists[K], line: string) => { - setLists(current => ({ ...current, [key]: next(current[key]) })) - add(line) - } - const keys = Object.keys(lists) as DynamicKey[] - const currentDocument = lists.documents.find(item => item.id === active.document) - return ( - <> -
- {keys.map(key => ( -
- {DYNAMIC_LABELS[key]} ({lists[key].length}) - - - - -
- ))} -
- 값 · 상태 변경 - - - -
-
-

기록: {log.length ? log.join(" → ") : "없음"}

-
{`active: ${JSON.stringify(active)}`}
- - { add(`onDocumentSelect(${document.id})`); setActive(current => ({ ...current, document: document.id })) }} - onDocumentClose={document => update("documents", list => list.filter(item => item.id !== document.id), `onDocumentClose(${document.id})`)} - layers={lists.layers} - activeLayerId={active.layer} - onLayerSelect={layer => { add(`onLayerSelect(${layer.id})`); setActive(current => ({ ...current, layer: layer.id })) }} - onLayerVisibilityChange={(layer, next) => update("layers", list => list.map(item => (item.id === layer.id ? { ...item, visible: next } : item)), `onLayerVisibilityChange(${layer.id}, ${next})`)} - colors={lists.colors} - userColors={lists.userColors} - onColorSelect={option => add(`onColorSelect(${option.id})`)} - lineStyle={lineStyle} - lineTypes={lists.lineTypes} - lineWeights={lists.lineWeights} - activeLineTypeId={active.lineType} - activeLineWeightId={active.lineWeight} - onLineTypeSelect={type => { add(`onLineTypeSelect(${type.id})`); setActive(current => ({ ...current, lineType: type.id })); setLineStyle(current => ({ ...current, name: type.name })) }} - onLineWeightSelect={weight => { add(`onLineWeightSelect(${weight.id})`); setActive(current => ({ ...current, lineWeight: weight.id })); setLineStyle(current => ({ ...current, weight: weight.value ?? weight.name })) }} - onLineWeightValueChange={(weight, value) => update("lineWeights", list => list.map(item => (item.id === weight.id ? { ...item, value } : item)), `onLineWeightValueChange(${weight.id}, ${value})`)} - onLineScaleChange={value => { add(`onLineScaleChange(${value})`); setLineStyle(current => ({ ...current, scale: value })) }} - textStyles={lists.textStyles} - activeTextStyleId={active.textStyle} - onTextStyleSelect={style => { add(`onTextStyleSelect(${style.id})`); setActive(current => ({ ...current, textStyle: style.id })) }} - dimensionStyles={lists.dimensionStyles} - activeDimensionStyleId={active.dimensionStyle} - onDimensionStyleSelect={style => { add(`onDimensionStyleSelect(${style.id})`); setActive(current => ({ ...current, dimensionStyle: style.id })) }} - /> - - - ) -} - -export const DynamicData: Story = { - name: "Dynamic Data", - parameters: { controls: { disable: true } }, - render: () => ( - - - - - - - ), -} - /* Additional review 2026-10-16: fixture values are host data, never package defaults. */ const PROPERTY_GROUPS: SWHeaderPropertyGroup[] = [ { id: "common", collapsedCount: 6 },