From 454472d3441ae1008434c62e5283a84d14e951f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=88=98=ED=98=84?= Date: Tue, 20 Oct 2026 15:20:27 +0900 Subject: [PATCH] docs(sw): AI rules, example E, tests and evidence for the popup / footer / header changes AI documents (packages/sw/ai) - SWPopupPropertyRow, SWSelect, SWSlider in the catalog, usage table, composition patterns and design rules; SWViewerSlider noted as SWSlider panel. - Rule: the SWHeader layer / color dropdowns are header-only; popup layer / color / line style use SWPopupPropertyRow (property window pickers). - Footer rules: gra-border-orange surfaces, Model / Layout text unchanged on hover, side button hover, vacant surface limited to the slot row. - Header rules: measured More growing behavior (hysteresis fix A). - Example E (custom popup) uses SWPopupPropertyRow, SWSelect and SWSlider instead of SWHeaderLayerMenu in the popup. Tests (packages/sw/tests) - New footer-popup-viewer-refinement.browser.mjs (47 checks: footer stories, hover / gradient / tab text / pocket, popup pickers vs property window rows, SWSlider, unit SWSelect parity, Popup B, header trace, viewer title art). - integrated-popup / integrated-consumer: popup pickers and SWSelect instead of the header dropdown and the HM UI Select (same overlay / callback / Escape requirements). - integrated-improvement: default sections skip the retired SW/Tool story ('tool' still runs by name); storybook-inventory / simplification record the retired footer IDs; theme-inheritance widths use sw-footer--full-footer. Docs (docs/sw) - sw-footer-popup-viewer-refinement-2026-10-20.md: causes, decisions (the first-pass "header dropdown in popup" change is marked withdrawn), verification and baseline failures; evidence footer-popup-viewer-refinement-qa (47/47). Footer mapping document updated for the removed sections. Baseline failures (unchanged by this work): home-menu-integration 1, storybook-unused-removal 5 (10-19 snapshot comparisons), range-cross-browser and property-panel-comparison open stories retired on 2026-10-19. --- .../footer-full.png | Bin 0 -> 164764 bytes .../popup-custom-dropdowns.png | Bin 0 -> 45973 bytes .../popup-slider-styles.png | Bin 0 -> 23887 bytes .../popup-stack-375.png | Bin 0 -> 56548 bytes .../result.json | 782 ++++++++++++++++++ .../viewer-250-auto.png | Bin 0 -> 7702 bytes .../viewer-scale-select.png | Bin 0 -> 10373 bytes docs/sw/sw-footer-figma-mapping-2026-10-20.md | 14 +- ...oter-popup-viewer-refinement-2026-10-20.md | 121 +++ packages/sw/README.md | 2 + packages/sw/ai/AI_USAGE.md | 2 +- packages/sw/ai/COMPONENT_CATALOG.md | 9 +- packages/sw/ai/COMPOSITION_PATTERNS.md | 7 +- packages/sw/ai/DESIGN_RULES.md | 20 +- packages/sw/ai/FOOTER.md | 9 +- packages/sw/ai/VIEWER.md | 2 +- .../sw/ai/examples/ExampleE-CustomPopup.tsx | 27 +- ...footer-popup-viewer-refinement.browser.mjs | 214 +++++ .../sw/tests/integrated-consumer.browser.mjs | 10 +- .../tests/integrated-improvement.browser.mjs | 4 +- packages/sw/tests/integrated-popup.checks.mjs | 33 +- packages/sw/tests/storybook-inventory.mjs | 3 + .../storybook-simplification.browser.mjs | 2 + .../sw/tests/theme-inheritance.browser.mjs | 2 +- 24 files changed, 1211 insertions(+), 52 deletions(-) create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/footer-full.png create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/popup-custom-dropdowns.png create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/popup-slider-styles.png create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/popup-stack-375.png create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/result.json create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/viewer-250-auto.png create mode 100644 docs/sw/footer-popup-viewer-refinement-qa/viewer-scale-select.png create mode 100644 docs/sw/sw-footer-popup-viewer-refinement-2026-10-20.md create mode 100644 packages/sw/tests/footer-popup-viewer-refinement.browser.mjs diff --git a/docs/sw/footer-popup-viewer-refinement-qa/footer-full.png b/docs/sw/footer-popup-viewer-refinement-qa/footer-full.png new file mode 100644 index 0000000000000000000000000000000000000000..d0660ab0c3f009a2722f94eb19269ce49391599a GIT binary patch literal 164764 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%0AT7idh051Yw5` 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 G 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

O1`m|JB(qDunS1W(MC+@9TZ6|pOimK9%zZPg{ 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 literal 0 HcmV?d00001 diff --git a/docs/sw/footer-popup-viewer-refinement-qa/popup-custom-dropdowns.png b/docs/sw/footer-popup-viewer-refinement-qa/popup-custom-dropdowns.png new file mode 100644 index 0000000000000000000000000000000000000000..88e75d8e608b84308dcafd04897d7a39940e39f3 GIT binary patch literal 45973 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 literal 0 HcmV?d00001 diff --git a/docs/sw/footer-popup-viewer-refinement-qa/popup-slider-styles.png b/docs/sw/footer-popup-viewer-refinement-qa/popup-slider-styles.png new file mode 100644 index 0000000000000000000000000000000000000000..88a10e842f30b49347cf6df415b5a2975f8cc2ad GIT binary patch literal 23887 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 literal 0 HcmV?d00001 diff --git a/docs/sw/footer-popup-viewer-refinement-qa/popup-stack-375.png b/docs/sw/footer-popup-viewer-refinement-qa/popup-stack-375.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a4183de486a8713bc91da85db3e12313387bfa GIT binary patch literal 56548 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

#Pl1Q|YPv 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 literal 0 HcmV?d00001 diff --git a/docs/sw/footer-popup-viewer-refinement-qa/result.json b/docs/sw/footer-popup-viewer-refinement-qa/result.json new file mode 100644 index 0000000..64efc9b --- /dev/null +++ b/docs/sw/footer-popup-viewer-refinement-qa/result.json @@ -0,0 +1,782 @@ +{ + "date": "2026-10-20T05:51:47.090Z", + "checks": [ + { + "n": "Footer: 기본 Footer / States removed, full-footer + figma-variants kept", + "ok": true, + "d": [ + "sw-footer--full-footer", + "sw-footer--tool-groups", + "sw-footer--figma-variants", + "sw-footer--custom-content", + "sw-footer--responsive", + "sw-footer--parts" + ] + }, + { + "n": "Footer: full-footer keeps only 실제 Footer 조합 (3 sections removed)", + "ok": true, + "d": { + "sections": [ + "실제 Footer 조합 (동작)" + ], + "errors": [] + } + }, + { + "n": "Footer: one live footer, no Figma / reference image", + "ok": true, + "d": 1 + }, + { + "n": "Footer: category change keeps the command slot position", + "ok": true, + "d": { + "before": [ + 1389, + 817, + 12 + ], + "after": [ + 1389, + 817, + 12 + ] + } + }, + { + "n": "Footer: 보조기능 전체보기 hover = both lines accent + orange ring, 74 × 71", + "ok": true, + "d": { + "title": "rgb(255, 92, 0)", + "sub": "rgb(255, 92, 0)", + "ring": "1", + "w": 74, + "h": 71 + } + }, + { + "n": "Footer: 명령어 전체보기 hover = both lines accent + orange ring, 74 × 71", + "ok": true, + "d": { + "title": "rgb(255, 92, 0)", + "sub": "rgb(255, 92, 0)", + "ring": "1", + "w": 74, + "h": 71 + } + }, + { + "n": "Footer: side button default unchanged (subtitle #F6F4F2, no ring)", + "ok": true, + "d": [ + "rgb(246, 244, 242)", + "0" + ] + }, + { + "n": "Footer: category + hover = orange + (menu-add-hover, #FF5C00), 28px", + "ok": true, + "d": "url(\"data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'" + }, + { + "n": "Footer: Layout + hover = gra-border-orange surface with the +, 24px", + "ok": true, + "d": "url(\"data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'%20style='display:%20block;'%20width='28'%20height='12'%20viewBox='0%200%2028%20" + }, + { + "n": "Footer: Model (selected) = gra-border-orange surface, black #161410 text without outline, 73 × 22", + "ok": true, + "d": { + "bg": "none", + "before": "linear-gradient(rgb(218, 104, 19) 8.52%, rgb(255, 187, 137) 37.93%, rgb(229, 105, 13) 71.85%, rgb(174, 54, 7) 92.77%)", + "color": "rgb(22, 20, 16)", + "size": "12px", + "weight": "400", + "shadow": "none", + "text": "220,40", + "w": 73, + "h": 22 + } + }, + { + "n": "Footer: Layout 02 hover = Model surface; text identical to Default (black, size, weight, place, box)", + "ok": true, + "d": { + "l02": { + "bg": "linear-gradient(rgb(218, 104, 19) 8.52%, rgb(255, 187, 137) 37.93%, rgb(229, 105, 13) 71.85%, rgb(174, 54, 7) 92.77%)", + "before": "none", + "color": "rgb(22, 20, 16)", + "size": "12px", + "weight": "400", + "shadow": "none", + "text": "80,40", + "w": 85, + "h": 22 + }, + "l02d": { + "bg": "none", + "before": "none", + "color": "rgb(22, 20, 16)", + "size": "12px", + "weight": "400", + "shadow": "none", + "text": "80,40", + "w": 85, + "h": 22 + } + } + }, + { + "n": "Footer: Layout 01 hover = Model surface (slanted); text identical to Default", + "ok": true, + "d": { + "l01": { + "bg": "none", + "before": "linear-gradient(rgb(218, 104, 19) 8.52%, rgb(255, 187, 137) 37.93%, rgb(229, 105, 13) 71.85%, rgb(174, 54, 7) 92.77%)", + "color": "rgb(22, 20, 16)", + "size": "12px", + "weight": "400", + "shadow": "none", + "text": "80,40", + "w": 97, + "h": 22 + }, + "l01d": { + "bg": "none", + "before": "url(\"data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'%20style='display:%20block;'%20width='97'%20height='22'%20viewBox='0%200%2097%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='bg'%3e%3cg%20filter='url(%23filter0_i_0_83)'%3e%3cpath%20d='M13.6039%203.29463C15.1093%201.22467%2017.5143%200%2020.0738%200H93C95.2091%200%2097%201.79086%2097%204V22H0L13.6039%203.29463Z'%20fill='%23C3B79E'/%3e%3c/g%3e%3cpath%20d='M20.0742%200.5H93C94.933%200.5%2096.5%202.067%2096.5%204V21.5H0.981445L14.0078%203.58887C15.4191%201.64829%2017.6747%200.5%2020.0742%200.5Z'%20stroke='url(%23paint0_linear_0_83)'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='filter0_i_0_83'%20x='0'%20y='-3'%20width='97'%20height='25'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20type='matrix'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'%20result='hardAlpha'/%3e%3cfeOffset%20dy='-3'/%3e%3cfeGaussianBlur%20stdDeviation='2'/%3e%3cfeComposite%20in2='hardAlpha'%20operator='arithmetic'%20k2='-1'%20k3='1'/%3e%3cfeColorMatrix%20type='matrix'%20values='0%200%200%200%200.219608%200%200%200%200%200.188235%200%200%200%200%200.121569%200%200%200%200.25%200'/%3e%3cfeBlend%20mode='multiply'%20in2='shape'%20result='effect1_innerShadow_0_83'/%3e%3c/filter%3e%3clinearGradient%20id='paint0_linear_0_83'%20x1='56'%20y1='0'%20x2='56'%20y2='22'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-opacity='0.05'/%3e%3cstop%20offset='1'%20stop-opacity='0.3'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\")", + "color": "rgb(22, 20, 16)", + "size": "12px", + "weight": "400", + "shadow": "none", + "text": "80,40", + "w": 97, + "h": 22 + } + } + }, + { + "n": "Footer: Layout tabs return to their default look after hover", + "ok": true, + "d": { + "bg": "none", + "before": "url(\"data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'%20style='display:%20block;'%20width='97'%20height='22'%20viewBox='0%200%2097%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='bg'%3e%3cg%20filter='url(%23filter0_i_0_83)'%3e%3cpath%20d='M13.6039%203.29463C15.1093%201.22467%2017.5143%200%2020.0738%200H93C95.2091%200%2097%201.79086%2097%204V22H0L13.6039%203.29463Z'%20fill='%23C3B79E'/%3e%3c/g%3e%3cpath%20d='M20.0742%200.5H93C94.933%200.5%2096.5%202.067%2096.5%204V21.5H0.981445L14.0078%203.58887C15.4191%201.64829%2017.6747%200.5%2020.0742%200.5Z'%20stroke='url(%23paint0_linear_0_83)'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='filter0_i_0_83'%20x='0'%20y='-3'%20width='97'%20height='25'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20type='matrix'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'%20result='hardAlpha'/%3e%3cfeOffset%20dy='-3'/%3e%3cfeGaussianBlur%20stdDeviation='2'/%3e%3cfeComposite%20in2='hardAlpha'%20operator='arithmetic'%20k2='-1'%20k3='1'/%3e%3cfeColorMatrix%20type='matrix'%20values='0%200%200%200%200.219608%200%200%200%200%200.188235%200%200%200%200%200.121569%200%200%200%200.25%200'/%3e%3cfeBlend%20mode='multiply'%20in2='shape'%20result='effect1_innerShadow_0_83'/%3e%3c/filter%3e%3clinearGradient%20id='paint0_linear_0_83'%20x1='56'%20y1='0'%20x2='56'%20y2='22'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-opacity='0.05'/%3e%3cstop%20offset='1'%20stop-opacity='0.3'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\")", + "color": "rgb(22, 20, 16)", + "size": "12px", + "weight": "400", + "shadow": "none", + "text": "80,40", + "w": 97, + "h": 22 + } + }, + { + "n": "Footer: category pocket surface is the same across the whole tab for 1st · 2nd · 3rd · 4th tab", + "ok": true, + "d": [ + [ + "도형", + "hm-sw-footer__group", + "hm-sw-footer__group", + "hm-sw-footer__group" + ], + [ + "수정", + "hm-sw-footer__group", + "hm-sw-footer__group", + "hm-sw-footer__group" + ], + [ + "편집", + "hm-sw-footer__group", + "hm-sw-footer__group", + "hm-sw-footer__group" + ], + [ + "문자", + "hm-sw-footer__group", + "hm-sw-footer__group", + "hm-sw-footer__group" + ] + ] + }, + { + "n": "Footer: vacant surface covers the slot row only (46px)", + "ok": true, + "d": 46 + }, + { + "n": "Footer: a selected Layout keeps its own (brown) selected surface, distinct from hover", + "ok": true, + "d": [ + "on", + "linear-gradient(0deg, rgb(124, 108, 76) 0.48%, rgb(124, 108, 76) 85.07%, rgb(166, 148, 111) 100%)" + ] + }, + { + "n": "Footer: aux Figma comparison lives in figma-variants (6 rows)", + "ok": true, + "d": [] + }, + { + "n": "Footer: responsive 860px row renders with an overflow ▲ control", + "ok": true, + "d": { + "panelOrder": "명령 더보기 (7개)", + "errors": [] + } + }, + { + "n": "Footer: 화면 폭 변화 keeps the 6 widths, 참고 좁은 화면 + Figma 기본 구성 removed", + "ok": true, + "d": [ + "실제 조합 (바 안 명령창, command)" + ] + }, + { + "n": "Header: layer field keeps the header design (#F6F4F2, 38px, value 700)", + "ok": true, + "d": "rgb(246, 244, 242)|38px|rgb(246, 244, 242)|700" + }, + { + "n": "Popup: 도면 설정 layer = 속성창 layer picker (value, trigger, label computed look)", + "ok": true, + "d": { + "a": "rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgba(0, 0, 0, 0),28px,14px,400,none / rgb(230, 4, 3),rgba(0, 0, 0, 0),none,rgb(230, 4, 3),26px,14px,400,none / rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgb(154, 146, 132),16px,14px,700,none / layer", + "b": "rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgba(0, 0, 0, 0),28px,14px,400,none / rgb(230, 4, 3),rgba(0, 0, 0, 0),none,rgb(230, 4, 3),26px,14px,400,none / rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgb(154, 146, 132),16px,14px,700,none / layer" + } + }, + { + "n": "Popup: 도면 설정 color = 속성창 color picker (value, trigger, label computed look)", + "ok": true, + "d": { + "a": "rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgba(0, 0, 0, 0),28px,14px,400,none / rgb(230, 4, 3),rgba(0, 0, 0, 0),none,rgb(230, 4, 3),26px,14px,500,none / rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgb(154, 146, 132),16px,14px,700,none / color", + "b": "rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgba(0, 0, 0, 0),28px,14px,400,none / rgb(230, 4, 3),rgba(0, 0, 0, 0),none,rgb(230, 4, 3),26px,14px,500,none / rgb(0, 0, 0),rgba(0, 0, 0, 0),none,rgb(154, 146, 132),16px,14px,700,none / color" + } + }, + { + "n": "Popup: no SWHeader field dropdown inside any popup", + "ok": true + }, + { + "n": "Popup: layer picker opens (fixed overlay), selects and closes", + "ok": true, + "d": "Callback: layer=hatch" + }, + { + "n": "Popup: color picker chip commits the RGB value", + "ok": true, + "d": "Callback: layer=hatch → color=0,0,255" + }, + { + "n": "Popup: frame / title / close unchanged (3 popups in the main section)", + "ok": true + }, + { + "n": "Slider: A = panel (18px, no property paint), B = property (16px, property paint), same fill", + "ok": true, + "d": [ + { + "look": "panel", + "h": 18, + "fill": "0.4", + "paint": false, + "range": "#266651" + }, + { + "look": "property", + "h": 16, + "fill": "0.4", + "paint": true, + "range": "#266651" + }, + { + "look": "panel", + "h": 18, + "fill": "0.4", + "paint": false, + "range": "#266651" + } + ] + }, + { + "n": "Slider: one shared value; keyboard change on B commits through onValueCommit", + "ok": true, + "d": { + "log": "Callback: layer=hatch → color=0,0,255 → opacity(property)=50", + "afterB": [ + "50", + "50", + "50" + ] + } + }, + { + "n": "Slider: appearance selection switches the look only", + "ok": true, + "d": "property" + }, + { + "n": "Slider: disabled 40%", + "ok": true, + "d": { + "d": true, + "o": "0.4" + } + }, + { + "n": "Slider: property window gauge keeps 86 × 16 and its paint", + "ok": true, + "d": [ + 86, + 16, + true + ] + }, + { + "n": "Select: Popup 도면 설정 단위 = Viewer 축척 지정 단위 (default · hover · focus computed look)", + "ok": true, + "d": { + "ps": { + "d": "appearance=auto;height=28px;paddingLeft=8px;paddingRight=8px;borderTopWidth=1px;borderTopColor=rgb(148, 136, 113);borderTopStyle=solid;borderRadius=4px;backgroundColor=rgb(241, 236, 225);color=rgb(0, 0, 0);fontSize=12px;fontWeight=400;lineHeight=normal;outlineStyle=none;outlineColor=oklab(0.462622 -0.0726663 0.0150061 / 0.5);outlineWidth=3px;opacity=1;cursor=default;class=hm-sw-select;tag=SELECT", + "h": "appearance=auto;height=28px;paddingLeft=8px;paddingRight=8px;borderTopWidth=1px;borderTopColor=rgb(148, 136, 113);borderTopStyle=solid;borderRadius=4px;backgroundColor=rgb(241, 236, 225);color=rgb(0, 0, 0);fontSize=12px;fontWeight=400;lineHeight=normal;outlineStyle=none;outlineColor=oklab(0.462622 -0.0726663 0.0150061 / 0.5);outlineWidth=3px;opacity=1;cursor=default;class=hm-sw-select;tag=SELECT", + "f": "appearance=auto;height=28px;paddingLeft=8px;paddingRight=8px;borderTopWidth=1px;borderTopColor=rgb(148, 136, 113);borderTopStyle=solid;borderRadius=4px;backgroundColor=rgb(241, 236, 225);color=rgb(0, 0, 0);fontSize=12px;fontWeight=400;lineHeight=normal;outlineStyle=solid;outlineColor=rgb(166, 125, 3);outlineWidth=2px;opacity=1;cursor=default;class=hm-sw-select;tag=SELECT" + }, + "vs": { + "d": "appearance=auto;height=28px;paddingLeft=8px;paddingRight=8px;borderTopWidth=1px;borderTopColor=rgb(148, 136, 113);borderTopStyle=solid;borderRadius=4px;backgroundColor=rgb(241, 236, 225);color=rgb(0, 0, 0);fontSize=12px;fontWeight=400;lineHeight=normal;outlineStyle=none;outlineColor=oklab(0.462622 -0.0726663 0.0150061 / 0.5);outlineWidth=3px;opacity=1;cursor=default;class=hm-sw-select;tag=SELECT", + "h": "appearance=auto;height=28px;paddingLeft=8px;paddingRight=8px;borderTopWidth=1px;borderTopColor=rgb(148, 136, 113);borderTopStyle=solid;borderRadius=4px;backgroundColor=rgb(241, 236, 225);color=rgb(0, 0, 0);fontSize=12px;fontWeight=400;lineHeight=normal;outlineStyle=none;outlineColor=oklab(0.462622 -0.0726663 0.0150061 / 0.5);outlineWidth=3px;opacity=1;cursor=default;class=hm-sw-select;tag=SELECT", + "f": "appearance=auto;height=28px;paddingLeft=8px;paddingRight=8px;borderTopWidth=1px;borderTopColor=rgb(148, 136, 113);borderTopStyle=solid;borderRadius=4px;backgroundColor=rgb(241, 236, 225);color=rgb(0, 0, 0);fontSize=12px;fontWeight=400;lineHeight=normal;outlineStyle=solid;outlineColor=rgb(166, 125, 3);outlineWidth=2px;opacity=1;cursor=default;class=hm-sw-select;tag=SELECT" + } + } + }, + { + "n": "Select: options and selection kept (Popup mm/cm/m, Viewer mm/m), change events", + "ok": true, + "d": { + "popupOptions": [ + "mm", + "cm", + "m" + ], + "viewerOptions": [ + "mm", + "m" + ], + "popupPicked": [ + true, + "m" + ] + } + }, + { + "n": "Header: Open returns once while growing 520 → 1080 and stays", + "ok": true, + "d": [ + [ + 520, + 0, + "" + ], + [ + 560, + 0, + "" + ], + [ + 600, + 1, + "" + ], + [ + 640, + 1, + "actions" + ], + [ + 680, + 1, + "actions" + ], + [ + 720, + 1, + "" + ], + [ + 760, + 1, + "" + ], + [ + 820, + 1, + "" + ], + [ + 900, + 1, + "color" + ], + [ + 1080, + 1, + "color" + ] + ] + }, + { + "n": "Header: at 1920 every part is back and Open is shown", + "ok": true, + "d": [ + [ + 1440, + 1, + "" + ], + [ + 1920, + 1, + "" + ] + ] + }, + { + "n": "Header: shrinking, Open moves into More first (1800) and stays there", + "ok": true, + "d": [ + [ + 1800, + 0, + "dimensionStyle" + ], + [ + 1440, + 0, + "" + ], + [ + 1080, + 0, + "" + ], + [ + 900, + 0, + "" + ], + [ + 640, + 0, + "" + ], + [ + 520, + 0, + "" + ] + ] + }, + { + "n": "Header: regrowing after a shrink, Open returns once and stays", + "ok": true, + "d": [ + [ + 560, + 0, + "" + ], + [ + 600, + 1, + "" + ], + [ + 640, + 1, + "actions" + ], + [ + 680, + 1, + "actions" + ], + [ + 720, + 1, + "" + ], + [ + 900, + 1, + "color" + ], + [ + 1080, + 1, + "color" + ], + [ + 1920, + 1, + "" + ] + ] + }, + { + "n": "Popup B: same frame as Popup A", + "ok": true, + "d": [ + "314|rgb(228, 219, 201)|rgb(166, 125, 3)|rgb(255, 198, 0)|700", + "314|rgb(228, 219, 201)|rgb(166, 125, 3)|rgb(255, 198, 0)|700" + ] + }, + { + "n": "Popup B: popup layer picker (no SWHeader field)", + "ok": true + }, + { + "n": "Popup B: layer selection callback and field value", + "ok": true, + "d": "Callback: b.layer=dim" + }, + { + "n": "Popup B: 375px, no page overflow and the popup inside the viewport", + "ok": true, + "d": { + "sw": 375, + "vw": 375, + "b": [ + 32, + 343 + ] + } + }, + { + "n": "Viewer: 250 × auto title art keeps 308px and paints from the left edge (no gap)", + "ok": true, + "d": { + "w": 250, + "h": 142, + "artW": 308, + "gap": 0 + } + }, + { + "n": "Viewer: 320 / 480 popups unchanged (no gap)", + "ok": true, + "d": [ + { + "w": 250, + "h": 142, + "artW": 308, + "gap": 0 + }, + { + "w": 320, + "h": 420, + "artW": 308, + "gap": 0 + }, + { + "w": 480, + "h": 300, + "artW": 308, + "gap": 0 + } + ] + }, + { + "n": "Viewer: 250 × auto collapses to the title bar and expands back to auto height", + "ok": true, + "d": { + "h0": 142, + "h1": 32 + } + }, + { + "n": "Viewer: 250 × auto drags by its title bar", + "ok": true, + "d": { + "dx": 60, + "dy": 30 + } + }, + { + "n": "Viewer: content variants (incl. 300px) title art has no gap", + "ok": true, + "d": [ + { + "w": 314, + "h": 420, + "artW": 308, + "gap": 0 + }, + { + "w": 314, + "h": 420, + "artW": 308, + "gap": 0 + }, + { + "w": 300, + "h": 239, + "artW": 308, + "gap": 0 + } + ] + }, + { + "n": "Viewer: SWViewerSlider = SWSlider panel with viewer tokens (#266651 / #e4dbc9)", + "ok": true, + "d": { + "cls": "hm-sw-slider hm-sw-viewer-slider", + "look": "panel", + "h": 18, + "range": "#266651", + "track": "#e4dbc9" + } + } + ], + "report": { + "header": { + "grow": [ + [ + 520, + 0, + "" + ], + [ + 560, + 0, + "" + ], + [ + 600, + 1, + "" + ], + [ + 640, + 1, + "actions" + ], + [ + 680, + 1, + "actions" + ], + [ + 720, + 1, + "" + ], + [ + 760, + 1, + "" + ], + [ + 820, + 1, + "" + ], + [ + 900, + 1, + "color" + ], + [ + 1080, + 1, + "color" + ] + ], + "wide": [ + [ + 1440, + 1, + "" + ], + [ + 1920, + 1, + "" + ] + ], + "shrink": [ + [ + 1800, + 0, + "dimensionStyle" + ], + [ + 1440, + 0, + "" + ], + [ + 1080, + 0, + "" + ], + [ + 900, + 0, + "" + ], + [ + 640, + 0, + "" + ], + [ + 520, + 0, + "" + ] + ], + "regrow": [ + [ + 560, + 0, + "" + ], + [ + 600, + 1, + "" + ], + [ + 640, + 1, + "actions" + ], + [ + 680, + 1, + "actions" + ], + [ + 720, + 1, + "" + ], + [ + 900, + 1, + "color" + ], + [ + 1080, + 1, + "color" + ], + [ + 1920, + 1, + "" + ] + ] + } + } +} \ No newline at end of file diff --git a/docs/sw/footer-popup-viewer-refinement-qa/viewer-250-auto.png b/docs/sw/footer-popup-viewer-refinement-qa/viewer-250-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0d8240165f8c7d887eb5b4b4906ddd00f2964f GIT binary patch literal 7702 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 literal 0 HcmV?d00001 diff --git a/docs/sw/footer-popup-viewer-refinement-qa/viewer-scale-select.png b/docs/sw/footer-popup-viewer-refinement-qa/viewer-scale-select.png new file mode 100644 index 0000000000000000000000000000000000000000..7442e4a8d2d26fa42a7e2f1d1cffc5425dc5c700 GIT binary patch literal 10373 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 Pf0h(vRHZAxA4C2NcvK8F literal 0 HcmV?d00001 diff --git a/docs/sw/sw-footer-figma-mapping-2026-10-20.md b/docs/sw/sw-footer-figma-mapping-2026-10-20.md index 96fe09b..f9ab7e4 100644 --- a/docs/sw/sw-footer-figma-mapping-2026-10-20.md +++ b/docs/sw/sw-footer-figma-mapping-2026-10-20.md @@ -28,23 +28,23 @@ | 32 | 26:10023 | ico_arrow | 명령창·▲ | `SWFooterCommandLine` 펼치기, `SWFooter` ▲ 칸 | Default ↑ · hover · on ↓ · Variant4(on hover) → `expanded` / ▲ 패널 열림 | Figma Variant · 명령창, 화면 폭 | | 33 | 26:10048 | command (접힘) | 명령창 | `SWFooterCommandLine` | 71px, 마지막 3줄 | Figma Variant · 명령창 | | 34 | 26:10056 | command (펼침) | 명령창 | `SWFooterCommandLine expanded` | 270px | 〃 | -| 35 | 26:10097 | 레이아웃 분리 | 전체 | `SWFooter`(+ `SWFooterLayoutTabs`) | 하단 72px 전체 | 기본 Footer, Figma Variant · Footer 전체 | +| 35 | 26:10097 | 레이아웃 분리 | 전체 | `SWFooter`(+ `SWFooterLayoutTabs`) | 하단 72px 전체 | 전체 Footer · 실제 조합(Figma 기본 구성 섹션), Figma Variant · Footer 전체 | -보조 참고(35개 목록 밖, 2026-10-20 상태 수정 때 확인): 26:10104의 보조기능 버튼은 Component Set btn_객체스냅 26:9248 · btn_선택효과 26:9267 · btn_직각교차 26:9298 · btn_격자스냅 26:9320 · btn_격자배경 26:9381 · btn_선가중치 26:9412(Default / Variant2 / Variant3)의 인스턴스입니다. 기준 이미지 `src/sw/assets/figma-reference/footer/aux-buttons/`, Story = Hover / Active / Selected / Disabled. +보조 참고(35개 목록 밖, 2026-10-20 상태 수정 때 확인): 26:10104의 보조기능 버튼은 Component Set btn_객체스냅 26:9248 · btn_선택효과 26:9267 · btn_직각교차 26:9298 · btn_격자스냅 26:9320 · btn_격자배경 26:9381 · btn_선가중치 26:9412(Default / Variant2 / Variant3)의 인스턴스입니다. 기준 이미지 `src/sw/assets/figma-reference/footer/aux-buttons/`, Story = Figma 디자인별 Variant · 보조기능 버튼 섹션(2026-10-20까지는 Hover / Active / Selected / Disabled Story). 26:10097 안의 보조기능 버튼(btn_객체스냅 …, 26:10104)·측면 버튼(26:10189 / 26:10192)·구분선·bg_vacant·menu_bg도 같은 노드에서 읽어 `SWFooterAuxGroup`·`SWFooterSideButton`·`SWFooterMenu` 면으로 구현했습니다. ## 2. Storybook `SW/Footer` +2026-10-20 정리: `기본 Footer`(`sw-footer--default`)와 `Hover / Active / Selected / Disabled`(`sw-footer--states`) Story를 삭제했습니다. 두 Story의 화면은 `전체 Footer · 실제 조합`의 섹션(Figma 기본 구성 · 상태)과 숨김 `Figma 디자인별 Variant`의 보조기능 버튼 섹션으로 옮겼습니다. 같은 날 2차 정리(사용자 요청)로 `전체 Footer · 실제 조합`의 `전체 Footer — Figma 기본 구성`·`상태`·`참고: 실제 화면` 섹션과 `화면 폭 변화`의 `참고: 실제 좁은 화면`·`Figma 기본 구성 (명령창 없음)` 섹션을 삭제했습니다(Story ID 유지, 기준 이미지 파일은 보존). Figma 기본 구성 비교는 숨김 `Figma 디자인별 Variant`의 Footer 전체 노드(26:10097)에 남아 있습니다. + | Story | 내용 | |---|---| -| 기본 Footer | Figma 데이터만 넣은 `` 1920 + Figma 26:10097 하단 렌더 | -| 전체 Footer · 실제 조합 | 실제 화면 구성(SWHeader + 도면 + 좌표 + 바 안 명령창 + 명령 10개 + 분류 12개 + Layout 탭), 모든 Callback 동작, 실제 화면 이미지 | +| 전체 Footer · 실제 조합 | 실제 Footer 조합(SWHeader + 도면 + 좌표 + 바 안 명령창 + 명령 10개 + 분류 12개 + Layout 탭, 모든 Callback 동작, 각 부품의 Hover · Active · Selected · Disabled) | | 도구 그룹별 표시 | 도형(9) · 수정(NCopy) · 빈 분류, 보조기능·측면 버튼 없는 구성 | -| Figma 디자인별 Variant (35 노드) | 노드마다 Figma 렌더 ↔ 구현 상태 | -| Hover / Active / Selected / Disabled | 명령·빈 칸·분류·보조기능·측면 버튼 상태 | +| Figma 디자인별 Variant (35 노드, verification) | 노드마다 Figma 렌더 ↔ 구현 상태, 보조기능 버튼 6종 Figma ↔ 구현 4상태 | | 도구 및 메뉴 변경 예제 | 사용자 분류·lucide 아이콘·slotCount 10·빈 칸으로 명령 추가·분류 추가·문구 변경·trailing·잠긴 Layout | -| 화면 폭 변화 | 실제 조합 1920 / 1440 / 1280 / 950, 좁은 실제 화면 이미지, Figma 구성 1920 / 1280 / 1024 / 820 | +| 화면 폭 변화 | 실제 조합 1920 / 1440 / 1280 / 950 / 860 / 760(▲ 확장 목록 포함) | | 개별 부품 (조합용) | `SWFooterAuxGroup`(3·2열), `SWFooterMenu` + `SWFooterToolButton`, `SWFooterCommandLine` | ## 3. Figma·실제 화면과 구현의 차이 diff --git a/docs/sw/sw-footer-popup-viewer-refinement-2026-10-20.md b/docs/sw/sw-footer-popup-viewer-refinement-2026-10-20.md new file mode 100644 index 0000000..a77658d --- /dev/null +++ b/docs/sw/sw-footer-popup-viewer-refinement-2026-10-20.md @@ -0,0 +1,121 @@ +# SW Footer · Popup · Viewer 디자인 및 Storybook 정리 (2026-10-20) + +범위: `feature/sw-package`, 기준 HEAD `2b0e1a2`. SW 패키지(`packages/sw`)와 SW Story(`src/sw`)만 변경했습니다. Web(UI)·OrgChart·CAD 렌더링·SW 기본 폰트 정책은 변경하지 않았습니다. Commit·Push 전(승인 대기). 같은 날 2차(Header·Footer·SWSelect)·3차(Footer 탭·Popup 컨트롤) 수정과 최종 통합 검증을 §8~§12에 이어 적었습니다. + +## 1. Footer Story 정리 + +| Story (ID) | 처리 | +|---|---| +| `기본 Footer` (`sw-footer--default`) | 삭제. 화면(Figma 데이터만 넣은 `` 1920 + Figma 26:10097 하단 렌더)은 `전체 Footer · 실제 조합`의 "전체 Footer — Figma 기본 구성" 섹션으로 이동 | +| `Hover / Active / Selected / Disabled` (`sw-footer--states`) | 삭제. 상태 셀(명령·빈 칸·분류·보조기능·측면 버튼의 Default / Hover·Active / Selected / Selected+Hover / Disabled)은 `전체 Footer · 실제 조합`의 "상태" 섹션으로, 보조기능 6종 Figma 비교(`aux-buttons/*.png`)는 숨김 `Figma 디자인별 Variant`로 이동. "하나만 선택" 데모(`AuxToggleDemo`)만 제거(보조기능 토글은 실제 조합에서 동작) | +| `전체 Footer · 실제 조합` (`sw-footer--full-footer`) | 메인. 섹션: 실제 Footer 조합(동작) → 전체 Footer(Figma 기본 구성) → 상태 → 실제 화면 참고. ID·이름 유지 | +| 나머지 (`tool-groups`, `figma-variants`, `custom-content`, `responsive`, `parts`) | 유지 | + +- 삭제 Story만 쓰던 코드: `AuxToggleDemo`, Story CSS `.sw-footer-story-aux-demo` 제거. `FigmaFooter`·`StateCell`·`AUX_SETS`·`aux-buttons` 이미지는 이동한 섹션이 계속 사용합니다(Figma 기준 이미지 보존). +- Footer 컴포넌트 코드는 변경하지 않았습니다(Hover·Active·Selected·Disabled, 칸 영역 고정, ▲ 왼쪽부터 배치, 반응형, 공개 API 그대로). +- 참조 갱신: `docs/sw/sw-footer-figma-mapping-2026-10-20.md` §1·§2, `packages/sw/tests/theme-inheritance.browser.mjs`(폭별 검사 대상 `footer--default` → `footer--full-footer`), `storybook-inventory.mjs`(`retiredFooterIds`), `storybook-simplification.browser.mjs`(삭제 ID 검사 추가). 과거 증거 `docs/sw/storybook-simplification-qa/sidebar.json`은 당시 기록이라 수정하지 않았습니다. + +## 2. Popup 안 SW Dropdown (레이어·색상) — **3차에서 철회, §10 참고** + +> 2026-10-20 3차 사용자 확정: SWHeader 레이어·색상 Dropdown은 Header 전용입니다. 아래 1차 변경(필드 typography 규칙)은 제거했고, Popup의 레이어·색상은 속성창 컨트롤 `SWPopupPropertyRow`로 바꿨습니다. + + +- 원인: `.hm-sw-property`(Popup 프레임)가 `color: #000`(`--hm-sw-property-label`)·`line-height: 16px`·`letter-spacing: .02em`을 지정하고, Header 필드(`button.hm-sw-header__field`)는 SW 버튼 초기화(`color/font/letter-spacing: inherit`)로 이를 상속했습니다. Header 안에서는 `.hm-sw-header`의 `#F6F4F2`를 상속해서 문제가 없었고, Popup 안에서는 검정 글자 + 검정 외곽선(text-shadow)이 되어 글자가 뭉개졌습니다. 목록 패널은 이미 자기 색을 지정하고 있었습니다. +- 수정(`sw.css`): `:is(.hm-sw-header__field, .hm-sw-header__layer, .hm-sw-header__menu)`가 Header 글자색(`--hm-sw-header-text-color`)·글꼴 크기·400·`line-height/letter-spacing: normal`을 직접 지정. Header 안의 계산값은 이전과 같고(같은 값을 상속하던 것을 직접 지정), Hover·Selected·Expanded 규칙은 특이도가 더 높아 그대로 적용됩니다. +- 별도 컴포넌트·Story 전용 CSS 없음. `SWHeaderLayerMenu`·`SWHeaderColorMenu` 그대로 재사용, Popup 프레임·제목·닫기·고정 Overlay 동작 변경 없음. +- `레이어 속성 + 추가 콘텐츠`(SWHeaderPropertyPanel + children)의 레이어·색상은 속성창 자체 `picker` 디자인(Figma 속성창)이며 Header Dropdown이 아닙니다. 변경하지 않았습니다. + +## 3. 투명도 게이지바 — `SWSlider` + +| | 스타일 A `appearance="panel"`(기본) | 스타일 B `appearance="property"` | +|---|---|---| +| 출처 | 지금까지 SW Popup에서 쓰던 게이지바(`@hm-design/ui` Slider 실측) = `SWViewerSlider`와 같은 모양 | 속성창 4개 상태 비교의 게이지바(`SWHeaderPropertyPanel` slider) | +| 모양 | 6px 트랙 `#E0DACE`, Range `#266651`, 18px 흰 Thumb + 2px `#266651` | 6px 베이지 트랙 + 빨강 채움(Thumb 중심까지), Figma Thumb 14px + 그림자 | +| 토큰 | `--hm-sw-slider-panel-track` / `-range` / `-thumb` (기존 값만 사용) | `--hm-sw-property-range-fill` / `-fill-edge` / `-track` / `-highlight` (기존) | + +- API: `value`(필수), `min`(0)·`max`(100)·`step`(1), `onValueChange(value)`, `onValueCommit(value)`(native `change`), `appearance`, `disabled`(40%), `input` 속성. 값·이벤트·키보드는 두 모양이 같습니다. +- 우선순위: ① `appearance` Prop → ② 기본 `"panel"`. 테마 연동은 토큰 범위(SWTheme `style`·Runtime 토큰 Override로 두 모양의 색 변경). 테마 전체의 기본 모양을 바꾸는 설정은 만들지 않았습니다. +- 중복 제거: 속성창 게이지바 CSS를 `:is(속성창 range, .hm-sw-slider[data-appearance="property"])`로 공유(속성창 86 × 16 그대로). `SWViewerSlider`는 `SWSlider appearance="panel"`을 렌더링하고 뷰어 토큰(`--hm-sw-viewer-panel-switch-on`, `--hm-sw-viewer-panel-background`)을 Slider 토큰에 연결합니다(모양·뷰어 테마 Override 동일, 내부 CSS 변수 `--hm-sw-viewer-slider-percent`는 제거). +- 기존 호환: 새 Export만 추가(`SWSlider`, `SWSliderProps`, `SWSliderAppearance`). `SWViewerSliderProps`·속성창 Props 변경 없음. Popup Story의 HM UI Slider 예제는 콘텐츠 자유 예시로 유지. +- Storybook: `SW/Popup → Custom Content`에 "투명도 게이지바 스타일" 섹션(A·B 비교 Popup, `appearance` 선택 Popup + Disabled). + +## 4. Popup B (`SW/Popup → Multiple Popups`) + +- 불일치 원인은 2절과 같습니다(레이어 필드 글자가 검정으로 뭉개짐). 2절 수정으로 해결. +- Popup B의 레이어 Dropdown이 고정값이라 선택해도 바뀌지 않던 것을 Popup A처럼 호스트 상태 + Callback(`b.layer=…`)으로 연결했습니다. +- 프레임(314, 면 `#E4DBC9`, 테두리 `#A67D03`, 제목 `#FFC600` 700, 제목줄 배경)·z-index(40, 목록 고정 Overlay 30)·Escape 스택은 A·C와 같습니다. 375px에서 페이지 가로 넘침 없음. +- `SWPopup`은 외형 고정 Non-modal 프레임이며 드래그·크기 조절·접기 기능이 없습니다(그 기능은 뷰어 `SWViewerPanel`). Popup B에 해당 기능을 추가하지 않았습니다. + +## 5. Viewer 가변 크기 Popup 제목 배경 + +- 원인: 뷰어 패널은 Figma 제목 아트(``, 308px)를 오른쪽 정렬하고 왼쪽 20px을 `clip-path`로 숨긴 뒤, 남는 왼쪽을 `::before`(폭 `100% − 292px`)로 채웁니다. 호스트 전역 `img { max-width: 100% }`(Tailwind preflight, Storybook·소비 프로젝트)가 312px 미만 패널에서 아트를 패널 폭으로 줄였고, 그 결과 숨긴 20px이 패널 안으로 들어왔는데 `::before` 폭은 0이라 제목 앞 약 17px에 제목줄 녹색 배경이 드러났습니다. +- 수정(`sw-viewer.css`): 뷰어 패널 제목 아트에 `max-width: none`. Story 전용 보정 없음. 250 × auto: 아트 308px, -43px부터 표시(틈 0). 같은 문제가 `Popup Content Variants`의 300px 패널(약 10px)에도 있었고 같이 해결됩니다. 314px 이상 패널은 계산값 변화 없음. +- 최소 폭 250·자동 높이·접기/펼치기·드래그는 그대로입니다. + +## 6. 검증 + +결과는 [footer-popup-viewer-refinement-qa/](./footer-popup-viewer-refinement-qa/) 참고. (아래 표는 2026-10-20 실제 실행 결과) + +| 항목 | 결과 | +|---|---| +| `npm run typecheck`(전체 workspace, 패키지 build 포함) | PASS | +| `npm run build:sw` · `npm run build-storybook` | PASS | +| `npm run check:ai-docs` · `packages/sw/tests/ai-docs.check.mjs` | PASS · 37/37 | +| `footer-popup-viewer-refinement.browser.mjs`(신규) | **26/26 PASS**: Footer 삭제 ID·섹션·상태·칸 위치 고정·▲, Popup 필드 = Header 필드(색·면·테두리·높이·글자·외곽선·Hover·목록), SWSlider A/B·공통 값·Commit·선택·Disabled, 속성창 게이지 86 × 16, Popup B 프레임·선택·375px, Viewer 250 × auto 아트·접기·드래그, 300px 패널, SWViewerSlider 토큰 | +| `storybook-simplification.browser.mjs` | 9/9 PASS(삭제 Footer ID 검사 추가) | +| `theme-inheritance.browser.mjs` | 23/23 PASS(폭별 검사 대상 `footer--full-footer`) | +| `viewer.browser.mjs` | 70/70 PASS | +| `integrated-improvement.browser.mjs` | 61/62. FAIL 1 `resize: collapsed Open returns once…`(Header 반응형 Open 히스테리시스) — 이번 Dropdown 규칙을 뺀 빌드에서도 같은 trace로 실패해 **이번 변경과 무관**. 10-19 기록에서는 PASS였으므로 그 이후 변경에서 생긴 기존 문제로 별도 확인 필요 | +| `storybook-unused-removal.browser.mjs` | 93개 중 FAIL 5 — 10-20 간소화 보고와 같은 **기존** 스냅샷 비교 실패 | +| `range-cross-browser`, `property-panel-comparison` | 실행 불가(**기존**): 10-19 삭제된 Story(`sw-header--property-panel` 등)를 엶 | +| `viewer-regression.browser.mjs`(기준선 대비 픽셀) | 미실행 — 기준선 Storybook 빌드 필요. SWViewerSlider는 신규 검사(토큰·높이)와 viewer.browser 70/70으로 대신함 | +| Firefox 렌더링 | 미검증(Chrome만) | + +## 7. 승인 필요 + +- `SWSlider` 신규 공개 API 이름·기본값(`appearance="panel"`)·`onValueCommit` 의미. +- 토큰 `--hm-sw-slider-panel-track/-range/-thumb` 추가(값은 기존 `#E0DACE`·`#266651`·`#FFFFFF`). 일반 모드 A 트랙은 HM UI Slider 실측 `#E0DACE`, 뷰어는 기존대로 `#E4DBC9`(뷰어 패널 면) — 의도된 차이 유지. +- 테마 전체 기본 `appearance` 설정은 만들지 않음(필요 시 별도 결정). +- `SWPopup`은 화면 폭 322px 미만에서 314px보다 좁아지면 제목 아트가 줄어듭니다(기존 동작, 이번 범위 밖). + +## 8. 2차 — Header Open 히스테리시스 수정안 A (`SWHeader.tsx`, `sw.css`) + +- 원인(별도 조사 세션, 첫 실패 Commit `170a5c2`): 넓어질 때 Print/K(640)·Color(900)·속성 블록(1080)이 고정 Breakpoint로 복귀하며 남은 공간을 음수로 만들고, 그때마다 Open이 먼저 More로 밀려남. +- 수정: ① 넓어지는 중 Breakpoint로 막 돌아온 부분은 측정 공간이 없으면 More에 hold(측정 공간이 생기면 복귀). 기본 레이아웃의 Print/K는 창 영역에 있어 hold 동안 창 영역만 640 미만 상태(`data-actions-held`). ② 넓어지는 중 복귀한 Open은 다른 부분 때문에 다시 밀리지 않음(후보가 없을 때만). ③ 좁아질 때는 Open 우선 이동 유지, 접힌 동안 더 좁아지면 복귀 기준 폭도 낮춤. ④ Open 복귀는 More 스택을 기다리지 않음(파일명 폭에서 가져감). ⑤ 마지막 항목 복귀 시 More 버튼이 사라지는 몫은 More를 잠시 빼고 실측. ⑥ 같은 폭에서 한 번 복귀한 항목은 다시 hold하지 않음(무한 업데이트 방지 — 중간 검증에서 `sw-header--responsive-more` React #185를 발견해 수정). +- Trace(테스트 조건 그대로 `[data-width="520"]` 프레임 520→1080): 수정 전 `[[520,0],[560,0],[600,1],[640,0],[680,0],[720,1],[760,1],[820,1],[900,0],[1080,0]]` → 수정 후 `[[520,0],[560,0],[600,1],[640,1],[680,1],[720,1],[760,1],[820,1],[900,1],[1080,1]]`(held: 640·680 Print/K, 900·1080 Color). 1920에서 모두 복귀, 1800으로 줄이면 Open 먼저 이동, 다시 넓히면 600에서 1회 복귀. + +## 9. 2차 — Footer·SWSelect + +- 토큰 `--hm-sw-footer-gra-border-orange`(Figma gra-border-orange, 기존 `--hm-sw-footer-aux-pressed-border` 값과 동일하며 그 토큰이 이를 참조). 전체보기 버튼 Hover·Pressed = 두 줄 `#FF5C00` + 주황 그라데이션 테두리. 분류 행 + Hover = 주황 + (`menu-add-hover.svg`). Layout + Hover = 그라데이션 면 + +. Model 선택·Hover, Layout(선택 아님) Hover = 그라데이션 면. +- Story 내부 5개 삭제: 전체 Footer — Figma 기본 구성 / 상태 / 참고: 실제 화면, 화면 폭 변화의 참고: 실제 좁은 화면 / Figma 기본 구성(명령창 없음). 기준 이미지 파일(`assets/footer-reference/*.png`)은 매핑 문서 기준이라 보존, Story import만 제거. +- `SWSelect`(신규): native select, 28px · 좌우 8 · 1px `#948871` · radius 4 · `#F1ECE1` · 12px 검정. Popup 도면 설정 단위(이전 HM UI Select)와 Viewer 축척 지정 단위(이전 Story 전용 CSS `.sw-viewer-story-select`, 제거)에 적용 — Default·Hover·Focus 계산값 차이 0. +- 미사용 자산(참조 0, Figma 원본 상태라 보존): `tab-model-on.svg`, `tab-slant-hover.svg`, `tab-add-hover.svg`. + +## 10. 3차 — Footer 탭·Popup 컨트롤 + +- Footer 두 번째 분류 탭 배경 갈라짐: 원인은 탭 위치가 아니라 `bg_vacant`(마지막 명령 뒤 어두운 면)가 분류 행 아래까지 내려와 있던 것. 선택 탭의 Pocket은 위가 열린 모양이라 뒤가 비치고, `수정`(명령 1개)의 Pocket이 68px 칸 경계를 가로질러 왼쪽은 그룹 면·오른쪽은 vacant 면으로 갈라짐. vacant를 명령 칸 높이(46px)까지만 그려 모든 탭의 Pocket이 같은 그룹 면을 보임(도형·수정·편집·문자 검증). **영향:** 명령이 적은 분류(편집 등)의 Pocket 면이 이전의 어두운 vacant에서 그룹 면으로 바뀜 — 디자인 확인 권장. +- Model·Layout 텍스트: Model 선택·Hover와 Layout Hover의 글자를 Default와 같게(`#161410`, 12px, 400, 외곽선 없음, 위치·크기 불변). 이전 2차의 흰 글자·외곽선 규칙 대체. 선택된 Layout(갈색 면, 흰 글자 + 외곽선)과 이름 편집 상태는 그대로. +- Popup의 Header 전용 Dropdown 제거: 원인은 1차에서 Popup 안 `SWHeaderLayerMenu`·`SWHeaderColorMenu`를 Header처럼 보이게 한 `:is(.hm-sw-header__field, …__layer, …__menu)` typography 규칙(제거). Popup 전용 기준은 속성창 picker(`SWHeaderPropertyPickerField`, Figma 26:12250 / 26:12170)이며, 이를 SWPopup 안에서 쓰도록 공개 행 `SWPopupPropertyRow`(속성창 `PropertyEditor` 그대로)를 추가. 도면 설정·Popup B·AI Example E에 적용. 속성창 행과 계산값 동일, Popup 안 `.hm-sw-header__field` 0개, Header 필드는 변경 없음. + +## 11. 최종 검증 (2026-10-20 15:00, Storybook static 재빌드 기준) + +| 항목 | 결과 | +|---|---| +| `npm run typecheck`(workspace 전체) · `build-storybook` · `build:sw` | PASS | +| `check:ai-docs` · `packages/sw/tests/ai-docs.check.mjs` | PASS · 37/37 | +| `footer-popup-viewer-refinement.browser.mjs` | **47/47 PASS** (증거 [footer-popup-viewer-refinement-qa/](./footer-popup-viewer-refinement-qa/)) | +| `storybook-simplification` | 9/9 PASS | +| `integrated-improvement` (options) / (popup) | 61/61 / 26/26 PASS. 기본 섹션의 `tool`은 10-19 삭제된 `sw-tool--tool-buttons`를 열어 중단되던 **기준선 문제** → 기본 섹션에서 제외(이름으로는 계속 실행 가능) | +| `theme-inheritance` · `viewer.browser` | 23/23 · 70/70 PASS | +| `integrated-consumer`(npm pack → React 19 + Vite + Tailwind 4 새 프로젝트, tsc + vite build) + 브라우저 | build PASS, 46/46 PASS | +| `home-menu-integration` | 22/23, FAIL 1(`without homeMenu: logo click…`) = **기준선**(47972c5에서도 동일) | +| `storybook-unused-removal` | 93 중 FAIL 5 = **기준선**(10-19 inventory·source 스냅샷 비교). 중간 7건 중 추가 2건은 위 무한 업데이트였고 수정 후 5건으로 복귀 | +| `range-cross-browser`, `property-panel-comparison`, `followup-four`, `property-fields` | 실행 불가 = **기준선**(10-19 삭제 Story를 엶) | +| 실제 소비 프로젝트 `D:디자인시스템HMDesignSwTest-viewer`(Submodule `68fbcf6` + Workspace) | 사용 중인 SW API 14개 모두 현재 패키지에 존재(소스 호환). 해당 폴더에 미커밋 작업 20개·detached HEAD가 있어 Submodule 갱신·실행 검증은 하지 않음 — **미검증, 승인 필요** | +| Firefox, `viewer-regression`(기준선 픽셀 비교) | 미실행 | + +## 12. 남은 항목 · 승인 필요 + +- SW 기본 글꼴: 현재 `--hm-sw-header-font-family: "Noto Sans KR", …`(`sw.css` 1곳), AI 문서는 "Dotum 기본 적용 승인 대기". 사용자 기준(SW = 돋움)과 다름. 바꾸면 SW 전체 글자 폭이 달라져 Header More 측정·Footer 칸·Popup 행 폭에 영향 → 별도 승인 후 토큰 1곳 변경 + 문서 4곳 + 회귀 검증 계획. +- 그라데이션 중복: Home Menu `--hm-sw-home-menu-item-hover-border`는 같은 색의 반올림 값(8.5/37.9/71.9/92.8%). 다른 컴포넌트의 승인 값이라 통합하지 않음(검토 필요). +- 디자인 확인: 전체보기 Hover 테두리, 분류 + Hover, Model 기본(선택 아님) 베이지 유지, 명령이 적은 분류의 Pocket 면 변화. diff --git a/packages/sw/README.md b/packages/sw/README.md index 6aad8e6..3738cf8 100644 --- a/packages/sw/README.md +++ b/packages/sw/README.md @@ -1,6 +1,8 @@ # @hm-design/sw > **0.2.0 통합 개선(2026-10-19):** 패키지에 포함된 AI 안내 [ai/AI_USAGE.md](./ai/AI_USAGE.md)·[카탈로그](./ai/COMPONENT_CATALOG.md)가 공개 API의 기준입니다. 추가: `SWPopup` / `SWPopupSection` / `SWPopupRow`(속성창 외형 + `children` 자유 콘텐츠, 여러 Popup Escape 스택, Popup 안 Dropdown 고정 Overlay), `SWHeaderPropertyPanel`의 `children`·`title`·`autoFocus`와 선택형 `selection`/`properties`/`groups`, `SWToolButton` / `SWToolGroup`(기존 글자 토글·pill·파일명 면 재사용), `SWHeader`의 `documentOpenPlacement`(로고 오른쪽 Open, 실측 기반 More 이동)·`leading`, `hiddenControls`의 `documentNew`·`documentOpen`·`layerFreeze`·`layerLock`, `showNew`/`showOpen`/`showFreeze`/`showLock`. 모두 선택 Props이며 기존 화면은 그대로입니다. 빌드는 줄바꿈 정규화로 재현 가능하고 `dist/build-info.json`에 출처 Commit·도구 버전을 남깁니다. 검증 기록: 저장소 `docs/sw/sw-integrated-improvement-2026-10-19.md`. +> +> **2026-10-20:** `SWSlider` 추가(게이지바, `appearance` `"panel"` 기본 / `"property"` 속성창 모양, 값·이벤트 공통). `SWSelect`(native 선택 목록, Popup·Viewer 공통), `SWPopupPropertyRow`(Popup 안 레이어·색상 = 속성창 picker, SWHeader 필드 Dropdown은 Header 전용) 추가. SWHeader 넓어질 때 More 복귀 히스테리시스 수정(Open 재이동 없음). Footer Model·Layout 탭 주황 그라데이션·전체보기 Hover, 선택 분류 Pocket 면 통일. 뷰어 패널 312px 미만 폭의 제목 배경 누락 수정. 기록: 저장소 `docs/sw/sw-footer-popup-viewer-refinement-2026-10-20.md`. > **로고 클릭 메뉴(2026-10-19):** `SWHomeMenu` / `SWHomeMenuSection` / `SWHomeMenuItem` / `SWRecentFiles`(Figma 26:10591 2단 Header 메뉴, 최근파일 하위 패널)와 `SWHeader`의 `homeMenu`·`homeMenuOpen`·`defaultHomeMenuOpen`·`onHomeMenuOpenChange`. 기본 숨김 → 로고 클릭 열기 → 다시 클릭 닫기, 위치는 Header DOM 측정. `homeMenu`가 있으면 로고 클릭은 `onHomeClick`을 호출하지 않습니다. 모두 선택 Props이며 주지 않으면 기존 화면 그대로입니다([카탈로그 5절](./ai/COMPONENT_CATALOG.md), [예제 G](./ai/examples/ExampleG-HomeMenu.tsx)). 검증 기록: 저장소 `docs/sw/sw-home-menu-integration-2026-10-19.md`. diff --git a/packages/sw/ai/AI_USAGE.md b/packages/sw/ai/AI_USAGE.md index dad4e62..cb50552 100644 --- a/packages/sw/ai/AI_USAGE.md +++ b/packages/sw/ai/AI_USAGE.md @@ -41,7 +41,7 @@ SW 패키지에는 Header·Popup 계열이 두 벌 있습니다. 화면마다 ** | 기준 | Figma 이지빔 SW `26:8944`, 49px | 참고 DWG/DXF 뷰어 실측(1440px), 52px | | Header | `SWHeader`, 또는 `` 안의 개별 컨트롤(`SWHeaderHome`, `SWHeaderDocumentTitle`, `SWHeaderLayerMenu`, `SWHeaderColorMenu`, `SWHeaderLineStyleMenu`, `SWHeaderTextStyleMenu`, `SWHeaderDimensionStyleMenu`, `SWHeaderActions`, `SWHeaderWindowControls`, `SWHeaderProperties` …) | `SWViewerHeader`(`groups` 데이터 + `trailing`), 오른쪽 끝·`custom` 버튼 `SWViewerHeaderButton`, 상태 `SWViewerStatus` | | Dropdown | 각 필드 Dropdown(`SWHeaderLayerMenu` …) | `type: "menu"` 항목, 단독·우클릭은 `SWViewerMenu` | -| 팝업·설정창 | `SWPopup`(`titleActions`, `footer`) + `SWPopupSection` / `SWPopupRow` + `SWHeaderInput`, 속성창 `SWHeaderPropertyPanel`, 속성Bar `SWHeaderPropertyBar` | `SWViewerPanel`(이동·크기 조절·접기·`modal`, `headerActions`, `footer`) + `SWViewerSection` / `SWViewerField` / `SWViewerSwitch` / `SWViewerSlider` / `SWViewerInput` / `SWViewerButton` / `SWViewerBadge` / `SWViewerHint` | +| 팝업·설정창 | `SWPopup`(`titleActions`, `footer`) + `SWPopupSection` / `SWPopupRow` + `SWHeaderInput`, 레이어·색상 행 `SWPopupPropertyRow`(Header 필드 Dropdown은 Header 전용), 게이지바 `SWSlider`(`appearance`), 선택 목록 `SWSelect`, 속성창 `SWHeaderPropertyPanel`, 속성Bar `SWHeaderPropertyBar` | `SWViewerPanel`(이동·크기 조절·접기·`modal`, `headerActions`, `footer`) + `SWViewerSection` / `SWViewerField` / `SWViewerSwitch` / `SWViewerSlider` / `SWViewerInput` / `SWViewerButton` / `SWViewerBadge` / `SWViewerHint`, 선택 목록 `SWSelect`(뷰어 패널 토큰으로 표시) | | 로고(홈) 버튼 메뉴 | `SWHeader`의 `homeMenu`(`SWHomeMenu` 데이터, 최근파일 `SWRecentFiles`, Figma 26:10591). 기본 숨김 → 로고 클릭 열기 → 다시 클릭 닫기 | **사용하지 않음.** `SWViewerHeader`에는 홈 메뉴 Props가 없고 로고 클릭은 `onHomeClick`만 호출합니다. 파일 열기·샘플은 Header `groups`의 `button`·`menu` 항목 | | 하단 Footer | `SWFooter`(+ 바 안 명령창 `command={}`, 좌표 `status`, `SWFooterLayoutTabs`, 부품 `SWFooter*`), [FOOTER.md](./FOOTER.md) | **사용하지 않음.** 뷰어 화면에는 하단 명령 막대가 없습니다. 도면 공간 탭은 `SWViewerHeader`의 `tabs` 항목 | | 버튼·탭·토글 | `SWToolButton` / `SWToolGroup` | Header 항목 `type: "button" \| "toggle" \| "tabs" \| "switch"`, 패널 안 `SWViewerButton` | diff --git a/packages/sw/ai/COMPONENT_CATALOG.md b/packages/sw/ai/COMPONENT_CATALOG.md index 690919c..fdfb618 100644 --- a/packages/sw/ai/COMPONENT_CATALOG.md +++ b/packages/sw/ai/COMPONENT_CATALOG.md @@ -8,7 +8,7 @@ - **공통 키보드:** Click·Enter·Space 열기/닫기(Hover로는 열리지 않음), ArrowDown 열고 첫(현재) 항목 Focus, Arrow 이동, Escape·바깥 클릭·Tab 이탈 닫기(Escape는 Trigger로 Focus 복귀). - **검증 표시:** ✅ = 2026-10-19 독립 소비 프로젝트(Tarball 설치)에서 브라우저 검증, ◻ = 소비 검증 범위 밖(Storybook 검증 기록만 있음). - **먼저 모드:** SW 일반 모드(편집) / SW 뷰어 모드(도면 보기)를 [AI_USAGE.md](./AI_USAGE.md) §0으로 정합니다. **뷰어 모드는 §9(`SWViewer*`)만** 쓰고, 아래 §1~8은 일반 모드용입니다. 두 모드를 한 화면에 섞지 않습니다. -- **무엇을 쓸까(일반 모드):** Header 전체 → `SWHeader`(1). Header 부품 조합 → 개별 컨트롤(2). 팝업·설정창·정보창 → `SWPopup`(3). 도구 막대·탭·토글 → `SWToolButton` / `SWToolGroup`(4). 로고 클릭 2단 메뉴·최근파일 → `SWHeader homeMenu` / `SWHomeMenu`(5). Slider·Switch·Badge·Progress·Dialog(모달)·Label·FilterBar는 SW에 없습니다 → `@hm-design/ui`를 그대로 씁니다(필요하면 `SWPopup` children 안에). +- **무엇을 쓸까(일반 모드):** Header 전체 → `SWHeader`(1). Header 부품 조합 → 개별 컨트롤(2). 팝업·설정창·정보창 → `SWPopup`(3). 도구 막대·탭·토글 → `SWToolButton` / `SWToolGroup`(4). 로고 클릭 2단 메뉴·최근파일 → `SWHeader homeMenu` / `SWHomeMenu`(5). 게이지바(투명도 등)는 `SWSlider`, 선택 목록(단위 등)은 `SWSelect`(3). Switch·Badge·Progress·Dialog(모달)·Label·FilterBar는 SW에 없습니다 → `@hm-design/ui`를 그대로 씁니다(필요하면 `SWPopup` children 안에). - **무엇을 쓸까(일반 모드 하단):** 하단 명령 막대(보조기능·명령 칸·분류 탭·명령어 전체보기) → `SWFooter`, 도면 공간 탭(Model/Layout) → `SWFooterLayoutTabs`, 명령창 → `SWFooterCommandLine`(10, [FOOTER.md](./FOOTER.md)). - **무엇을 쓸까(뷰어 모드):** Header → `SWViewerHeader`(`groups` + `trailing`), Dropdown·우클릭 → `SWViewerMenu`, 팝업·설정창·모달 → `SWViewerPanel` + `SWViewerSection`/`SWViewerField`/`SWViewerSwitch`/`SWViewerSlider`/`SWViewerInput`/`SWViewerButton`, 상태 → `SWViewerStatus`(9). @@ -72,6 +72,9 @@ SW 공식 기준 Header(Figma 26:8944, 1920 × 49). 로고 · 파일 · 객체 | `SWPopup` | 설정·정보·사용자 정의 Popup 프레임 | `title`(필수), `children`, `onClose`(닫기 버튼·Escape), `closeLabel`(기본 `닫기`), `titleActions`(제목 막대 닫기 버튼 앞 추가 버튼), `footer`(본문 뒤 고정 영역, 본문이 스크롤해도 보임), `autoFocus`(열릴 때 Focus, 안에서 닫히면 원래 위치로 복귀. 기본: `anchorRef`가 있으면 true, 없으면 false), `anchorRef`(기준 요소 아래 고정 Overlay), `style`·`className`·`div` 속성 | 폭 314, 제목줄 30, 높이는 콘텐츠(최대 화면 − 8px, `style.maxHeight`로 더 줄일 수 있음) → 본문 스크롤. Non-modal(Dim·Portal·Focus trap 없음) | ✅ | | `SWPopupSection` | 속성창 그룹 면(제목 + 내용) | `title`, `children`, `section` 속성 | 그룹 제목 700·70% 검정, 내용 면 `--hm-sw-property-content` | ✅ | | `SWPopupRow` | 속성창 한 줄(라벨 + 값) | `label`(필수), `htmlFor`, `children`(값 컨트롤, SW 필드는 `SWHeaderInput`), `unit`, `field`(`box` 기본 · `compact` · `none`), `numeric`(숫자 편집 On), `readOnly`, `disabled` | 행 최소 32, 라벨 72, 값 상자 28(Default·Hover 테두리, 숫자 편집 시 #0F0D0A). `compact` = 41px hug 숫자 필드 | ✅ | +| `SWSlider` | 게이지바(native range, 2026-10-20). `SWPopupRow field="none"` 안이나 `SWTheme` 안 어디든 | `value`(필수), `min`(0)·`max`(100)·`step`(1), `onValueChange`(드래그·키보드마다), `onValueCommit`(값 확정 = native `change`), `appearance`(`"panel"` 기본 · `"property"`), `disabled`, `aria-label`, `input` 속성 | 모양만 다르고 값·이벤트·키보드는 같음. `panel` = 지금까지 Popup에서 쓰던 게이지바(6px 트랙 · 18px 흰 Thumb + 2px 녹색 테두리, `SWViewerSlider`와 같은 모양), `property` = 속성창 게이지바(베이지 트랙 · 빨강 채움 · Figma Thumb 14px). 폭은 행을 채움(호스트가 `style.width`로 지정 가능). Disabled 40% | ◻ | +| `SWPopupPropertyRow` | Popup 안 레이어·색상·선스타일 등 속성창 한 줄(2026-10-20) | `property`(`SWHeaderProperty`: `name`·`value`·`type`, 레이어는 `picker: "layer"` + `options`, 색상은 `type: "color"`), `menus`(`SWHeaderPropertyMenus`: `layers`·`colors`·…), `onPropertyChange(property, value)`, `className` | `SWHeaderPropertyPanel` 행과 같은 DOM·모양·동작(속성창 `picker`, 고정 Overlay 목록). **SWHeader 필드 Dropdown(`SWHeaderLayerMenu` 등)을 Popup에 넣지 않습니다** | ◻ | +| `SWSelect` | 선택 목록(native select, 2026-10-20). `SWPopupRow field="none"`, `SWViewerField`, `SWTheme` 안 어디든 | `value`/`defaultValue`, `options`(`SWSelectOption[]` = `{ value, label?, disabled? }`) 또는 ` diff --git a/packages/sw/ai/DESIGN_RULES.md b/packages/sw/ai/DESIGN_RULES.md index f117485..85ac0be 100644 --- a/packages/sw/ai/DESIGN_RULES.md +++ b/packages/sw/ai/DESIGN_RULES.md @@ -84,7 +84,7 @@ Container `hm-sw-header` 기준 Breakpoint: **< 1800** 선/문자/치수스타일 → More, **< 1180** 그리기모드 숨김, **< 1080** 상세보기 → More·창 이동 24px(창 영역 176), **< 900** 색상 → More, **< 640** 인쇄·K → More·창 이동 숨김(창 영역 64), **< 520** 레이어 상태 아이콘 숨김. More에서 고른 필드는 첫 칸(레이어 자리)에 표시되고 Dropdown이 바로 열립니다(UI 상태만, 데이터 Callback 없음). -실측 More(2026-10-19): Breakpoint 위에서 객체 수정 영역의 실제 남은 공간을 측정해, `leading`·`tools`·긴 라벨 등으로 표시할 수 없는 메뉴만 같은 단계 순서(선/문자/치수 → 그리기모드 → 속성 블록 → 색상 → 구성형의 인쇄·K, 같은 단계는 오른쪽부터)로 More에 옮기고 공간이 생기면 역순으로 돌려놓습니다. 로고 옆 Open이 가장 먼저 옮겨집니다. 메뉴 열기·닫기는 Header 요소의 위치·폭을 바꾸지 않습니다. 호스트 요소(`leading`·`tools`)는 More로 옮기지 않으므로 폭이 좁은 화면에는 많이 넣지 않습니다. +실측 More(2026-10-19): Breakpoint 위에서 객체 수정 영역의 실제 남은 공간을 측정해, `leading`·`tools`·긴 라벨 등으로 표시할 수 없는 메뉴만 같은 단계 순서(선/문자/치수 → 그리기모드 → 속성 블록 → 색상 → 구성형의 인쇄·K, 같은 단계는 오른쪽부터)로 More에 옮기고 공간이 생기면 역순으로 돌려놓습니다. 로고 옆 Open이 가장 먼저 옮겨집니다(좁아질 때). 넓어질 때(2026-10-20 수정안 A): Breakpoint로 막 돌아온 부분(인쇄·K, 색상, 속성 블록, 선/문자/치수, 그리기모드)은 실제 남은 공간이 있을 때만 돌아오고 없으면 More에 남으며, 다시 나타난 Open은 넓어지는 동안 다른 부분 때문에 More로 돌아가지 않습니다. 충분히 넓으면 모두 돌아옵니다. 메뉴 열기·닫기는 Header 요소의 위치·폭을 바꾸지 않습니다. 호스트 요소(`leading`·`tools`)는 More로 옮기지 않으므로 폭이 좁은 화면에는 많이 넣지 않습니다. 로고 클릭 메뉴는 좁은 폭에서는 가로 스크롤 없이 들어가는 섹션만 앞에서부터 보여 주고, 나머지는 끝의 더보기(⋯) 섹션으로 옮깁니다(2026-10-19 사용자 확정, Figma에 좁은 폭 디자인 없음). 더보기를 누르면 옮긴 섹션이 텍스트 메뉴(섹션 제목 + 기능 텍스트 목록, 그룹 사이 구분선)로 아래 Dropdown에 열리고, 폭이 넓어지면 원래 자리로 돌아갑니다. 화면에 남은 섹션은 Figma 타일 그대로입니다(§12). @@ -102,11 +102,14 @@ Container `hm-sw-header` 기준 Breakpoint: **< 1800** 선/문자/치수스타 | 본문 | padding 7px, 그룹 사이 8px | — | | 본문 스크롤바 | `thin`, Thumb `#9A9284` / Track `#E0DACE`(DWG/DXF Viewer 패널과 동일). 본문과 그 안의 스크롤 영역에 적용, 페이지 스크롤바는 그대로 | `--hm-sw-popup-scrollbar-thumb`, `--hm-sw-popup-scrollbar-track` | | 그룹 면(`SWPopupSection`) | 제목 700 · 검정 70%, 내용 면 `#F1ECE1`, 1px `#585349`, radius 4px | `--hm-sw-property-content` | +| 속성 행(`SWPopupPropertyRow`) | 속성창 행 그대로(라벨 72px 700, 값 상자 28px, `picker` 필드). 데이터 = `SWHeaderProperty` + `menus` | `--hm-sw-property-*`, `--hm-sw-property-field-*` | | 행(`SWPopupRow`) | 최소 32px, 라벨 72px 700 검정, 값 글자 `#E60403` 500, 단위 12px | `--hm-sw-property-label`, `--hm-sw-header-input-color` | | 값 상자 | 28px, Hover 1px `rgba(33,29,19,.4)`, 숫자 편집 On `#0F0D0A`(단위 흰색), Dropdown On `#211D13` | `--hm-sw-property-field-*` | | 동작 | Non-modal(Dim·Portal·Focus trap 없음). Escape는 Popup 안이면 그 Popup, 밖이면 최근 사용 Popup 하나. `autoFocus`면 열릴 때 Focus, 안에서 닫히면 원래 위치로 | — | -- 밝은 Popup 면에는 SW Header의 어두운 컨트롤(필드·`SWToolButton`)이 디자인상 맞지 않습니다. 쓸 수는 있지만(Dropdown은 고정 Overlay로 잘리지 않음) 행 모양이 필요하면 `SWPopupRow` + `SWHeaderInput` 또는 속성창 `picker`를 씁니다. +- **Header 필드 Dropdown(`SWHeaderLayerMenu`·`SWHeaderColorMenu`·선/문자/치수 스타일)은 SWHeader 전용 디자인입니다.** Popup 안에 넣지 않습니다(2026-10-20 사용자 확정). Popup의 레이어·색상·선스타일은 속성창 컨트롤 `SWPopupPropertyRow`(속성창과 같은 `picker` 필드: 레이어 26:12250, 색상 26:12170, 선스타일 26:12388 — 값 `#E60403`, Hover 1px `rgba(33,29,19,.4)`, On `#211D13`, 목록은 고정 Overlay)를 씁니다. 그 밖의 행은 `SWPopupRow` + `SWHeaderInput`. +- 선택 목록(단위 등)은 `SWSelect`입니다(native select, 28px · 좌우 8 · 1px `#948871` · radius 4 · 면 `#F1ECE1` · 12px 검정, 플랫폼 화살표·옵션 목록). 뷰어 축척 지정 팝업과 같은 모양이고 뷰어 패널 안에서는 `--hm-sw-viewer-panel-*` 값을 따릅니다. 토큰 `--hm-sw-select-border-color`·`-background`·`-text`. +- 게이지바는 `SWSlider`입니다. 모양 선택 우선순위: ① `appearance` Prop(명시) → ② 기본 `"panel"`. 테마 연동은 토큰 범위입니다: `panel` = `--hm-sw-slider-panel-track`(`#E0DACE`)·`-range`(`#266651`)·`-thumb`(`#FFFFFF`), `property` = `--hm-sw-property-range-fill`·`-fill-edge`·`-track`·`-highlight`(속성창과 같은 토큰). `SWTheme style`·Runtime 토큰 Override로 두 모양의 색이 함께 바뀌며, 테마 전체에서 기본 `appearance`를 바꾸는 설정은 없습니다. 새 색을 만들지 않습니다. - Popup 하단 버튼의 SW 디자인은 없습니다. 임의 색·크기로 만들지 말고 `@hm-design/ui` `Button` 등 기존 컴포넌트를 쓰거나 사용자에게 디자인을 확인합니다. ## 9. 도구 버튼 (`SWToolButton` / `SWToolGroup`) @@ -183,21 +186,22 @@ Container `hm-sw-header` 기준 Breakpoint: **< 1800** 선/문자/치수스타 |---|---|---| | 바 | 높이 72, 배경 `#060606` | `--hm-sw-footer-height`, `-background` | | 배치(1920, Figma) | 보조기능 버튼 0~74 → 2 → 보조기능 격자 76~392(위 2) → 4 → 명령 그룹 396~(위 1) → 명령어 전체보기(명령 칸 바로 뒤, 1552~1626) → 나머지 bg_vacant | — | -| 측면 버튼 | 74 × 71, 자산 면(그라데이션 + 그라데이션 테두리), 그림자 8px 60% 검정(왼쪽 버튼 → 오른쪽 5px, 오른쪽 버튼 → 왼쪽 5px). 제목 14px 1.3px 외곽선, 부제 14px 1px 외곽선, 위 18 · 줄 간격 2 | `--hm-sw-footer-side-*` | +| 측면 버튼 | 74 × 71, 자산 면(그라데이션 + 그라데이션 테두리), 그림자 8px 60% 검정(왼쪽 버튼 → 오른쪽 5px, 오른쪽 버튼 → 왼쪽 5px). 제목 14px 1.3px 외곽선, 부제 14px 1px 외곽선, 위 18 · 줄 간격 2. Hover·Pressed·Expanded = 제목·부제 `#FF5C00` + 1px 주황 그라데이션 테두리(`--hm-sw-footer-gra-border-orange`), Disabled 기본 모양 | `--hm-sw-footer-side-*` | | 보조기능 | 104 × 33, gap 2, radius 3, 면 `linear-gradient(0deg, #262218 8%, #4A3C2B 34%, #594C31 55%, #312A1B 90%)`, 아이콘 중심 (19.5, 16.5), 라벨 13px 왼쪽 36 폭 57 가운데. 테두리 1px 그라데이션(위 → 아래): Default `#886D35 0%, #423625 8.85%, #F3DBA8 26.17%, #0E0B06 83.79%, #574B30 100%`(Figma btn_* 26:9248 …) | `--hm-sw-footer-aux-*`, `--hm-sw-footer-aux-border` | -| 보조기능 상태 | Hover(선택 아님) = 테두리만 노랑 `--hm-sw-header-hover-border-gradient`(`#A67D03 → #F2CC0F → #FADD4F → #F2CC0F → #926E03`, SW Header Figma Hover 재사용 — 버튼 세트에는 Hover 없음, 사용자 확정 2026-10-20). Selected(`aria-pressed="true"`, Figma Variant2 = Variant3) = 테두리 `#DA6813 8.52%, #FFBB89 37.93%, #E5690D 71.85%, #AE3607 92.77%` + 아이콘 채움·글자 `#FF5C00`, Hover보다 우선. 아이콘 외곽선 검정 90% 1px는 모든 상태 동일 | `--hm-sw-footer-aux-hover-border`, `--hm-sw-footer-aux-pressed-border`, `--hm-sw-footer-aux-icon-color`(`#F1EDE5`) | -| 명령 그룹 면 | 테두리 위·왼쪽·아래 1px `#886D35`, 왼쪽 위 radius 4, 면 `linear-gradient(0deg, #2F281A 0%, #312A1B 5%, #332B1C 36%, #463C29 58%, #38301F 79%, #19160E 98%)`. 마지막 명령 뒤(빈 칸·나머지)는 bg_vacant `linear-gradient(0deg, #18150E 28%, #262015 41%, #332B1C 58%, #38301F 81%, #18150E 100%)` | `--hm-sw-footer-group-*`, `--hm-sw-footer-vacant-background` | +| 보조기능 상태 | Hover(선택 아님) = 테두리만 노랑 `--hm-sw-header-hover-border-gradient`(`#A67D03 → #F2CC0F → #FADD4F → #F2CC0F → #926E03`, SW Header Figma Hover 재사용 — 버튼 세트에는 Hover 없음, 사용자 확정 2026-10-20). Selected(`aria-pressed="true"`, Figma Variant2 = Variant3) = 테두리 `#DA6813 8.52%, #FFBB89 37.93%, #E5690D 71.85%, #AE3607 92.77%`(Figma `gra-border-orange` = `--hm-sw-footer-gra-border-orange`) + 아이콘 채움·글자 `#FF5C00`, Hover보다 우선. 아이콘 외곽선 검정 90% 1px는 모든 상태 동일 | `--hm-sw-footer-aux-hover-border`, `--hm-sw-footer-aux-pressed-border`, `--hm-sw-footer-aux-icon-color`(`#F1EDE5`) | +| 명령 그룹 면 | 테두리 위·왼쪽·아래 1px `#886D35`, 왼쪽 위 radius 4, 면 `linear-gradient(0deg, #2F281A 0%, #312A1B 5%, #332B1C 36%, #463C29 58%, #38301F 79%, #19160E 98%)`. 마지막 명령 뒤(빈 칸·나머지)는 bg_vacant `linear-gradient(0deg, #18150E 28%, #262015 41%, #332B1C 58%, #38301F 81%, #18150E 100%)`, 명령 칸 높이까지만(2026-10-20: 분류 행 아래로 내려가지 않아 선택 탭 Pocket 면이 어느 탭에서나 같음) | `--hm-sw-footer-group-*`, `--hm-sw-footer-vacant-background` | | 명령 칸 | 68 × 47, 라벨 14px `#F6F4F2` 위 6, 아이콘 18 × 18 위 26 가운데. 칸 사이 구분선 1 × 37(위 5) `linear-gradient(0deg, #20190E, #8A7A5B 45%, #F3DBA8 70%, #423625)` + `-1px 0 1px #000` | `--hm-sw-footer-slot-*`, `--hm-sw-footer-divider*` | | 명령 상태 | Hover = 선택(Figma Variant2 = Variant3): 글자 `#FF5C00` + 주황 아이콘. Disabled 40%(Figma 없음) | `--hm-sw-footer-accent` | | 빈 칸 | 68 × 46(위 1), + `#BEB5A6`. Hover: 주황 + 와 주황 그라데이션 점선 링(자산) | — | | 가이드 | 208 × 149, 빈 칸 위 4px 가운데, 1px `#DA6813` radius 2, 면 `#0E3C2E`, 미리보기 194 × 111(5, 5, 검정 1px), 제목 14px 외곽선, 캡션 12px `#B6D0C9` 1px 외곽선 | `--hm-sw-footer-guide-*` | | 분류 행 | 높이 24, 면 `#282216` → 위 14% `#574B30`, 안쪽 1px 테두리 그라데이션, 현재 탭 Pocket(좌우 7px 곡선, 아래 radius 2, 가장자리 `#675A3B`). 탭 14px `#D4CBBD`, 자간 10%, 위 4, 좌우 padding 8, 최소 43. 구분선 1 × 10 검정(위 7). Hover·현재 `#FF5C00` | `--hm-sw-footer-menu-*` | -| Layout 탭 | 높이 22, 12px 자간 2%. Default 면 `#C3B79E` 글자 `#161410`. On: `linear-gradient(0deg, #7C6C4C, #7C6C4C 85%, #A6946F)` 흰 글자. 이름 편집: `#0F0D0A` 빨강 `#E60403` 주황 테두리. Hover·On·편집 글자 아래 70% 검정 1.3px 외곽선. 둥근 탭: 1px `rgba(0,0,0,.05)`(Hover·편집 `#DA6813`), 위 radius 4, 안쪽 그림자 `inset 0 -3px 4px rgba(56,48,31,.25)`, ×(16) Hover 노랑. 사선 탭(마지막): 97 × 22 자산, Hover = 주황 면 + 검정 글자, On hover = 베이지 면 + 주황 글자, ×(28, 빨강 사선) | `--hm-sw-footer-tab-*` | -| Model 탭 | 73 × 22 자산(왼쪽 사선), 글자 왼쪽 22, Hover 주황, On 갈색. 앞 사선 탭과 8px 겹침 | — | +| Layout 탭 | 높이 22, 12px 자간 2%. Default 면 `#C3B79E` 글자 `#161410`. On: `linear-gradient(0deg, #7C6C4C, #7C6C4C 85%, #A6946F)` 흰 글자. 이름 편집: `#0F0D0A` 빨강 `#E60403` 주황 테두리. Hover·On·편집 글자 아래 70% 검정 1.3px 외곽선. 둥근 탭: 1px `rgba(0,0,0,.05)`(Hover·편집 `#DA6813`), 위 radius 4, 안쪽 그림자 `inset 0 -3px 4px rgba(56,48,31,.25)`, ×(16) Hover 노랑. 사선 탭(마지막): 97 × 22 자산, On hover = 베이지 면 + 주황 글자, ×(28, 빨강 사선). Hover(선택 아님, 두 모양 모두, 2026-10-20) = Model과 같은 `gra-border-orange` 면(사선 탭은 자산 모양 안)만 바뀌고 글자는 Default 그대로(`#161410` 12px 400, 외곽선 없음, 위치·크기 불변) | `--hm-sw-footer-tab-*`, `--hm-sw-footer-gra-border-orange` | +| `+` 버튼 | Layout 옆 `+`(24 × 22) Hover = `gra-border-orange` 면 + `+`(분류 행 `+` 자산). 분류 행 `+`(28 × 12) Hover = `+` 채움 `#FF5C00`(검정 외곽선 그대로) | `--hm-sw-footer-gra-border-orange`, `--hm-sw-footer-accent` | +| Model 탭 | 73 × 22 자산(왼쪽 사선), 글자 왼쪽 22. Hover·On = 자산 모양 안 `gra-border-orange` 면 + 검정 `#161410` 글자(12px 400, 외곽선 없음)(2026-10-20 사용자 확정, 이전 Figma On 갈색·흰 글자 대체). 앞 사선 탭과 8px 겹침 | `--hm-sw-footer-gra-border-orange` | | 명령창 | 566 × 71 / 270, 위 radius 4, 위 71px `linear-gradient(180deg, #635537, #262218 5%, #281F16 10%, #282216)` + 아래 `#282216`. 12px 자간 10% 줄 14, 1px 외곽선. 입력 칸 23(좌우 4) `#16130D` + `0 -1px 2px rgba(255,255,255,.25)`, `inset 0 1px 4px #000`. 화살표 18 × 18 검정 radius 2(4, 4 오른쪽 위) | `--hm-sw-footer-command-*` | | 바 안 명령창(실제 화면) | 보조기능 뒤 4px, 바 아래에 붙어 펼치면 위로 270. 남는 폭(바 − 보조기능 영역 − 명령어 전체보기)을 칸 영역 0.57 : 명령창 나머지(최소 280)로 나눔 — 칸 수는 바 폭으로만 계산, 분류의 명령 수와 무관(1920 → 12칸) | `--hm-sw-footer-command-min-width`, `--hm-sw-footer-slot-share` | | 좌표(실제 화면) | 바 위 왼쪽, 12px `#F6F4F2` 1px 외곽선, 아래 3px | — | | 좁은 폭(실제 화면) | 빈 칸이 먼저 줄고, 넘치는 명령은 마지막 칸 ▲(ico_arrow 18 × 18, 오른쪽 위 4) → 명령 칸 위 패널(같은 칸, 오른쪽 맞춤, 테두리 1px `#886D35`·아래 없음·위 radius 4, 명령 칸 면). 분류 탭 넘침 = 탭 영역 잘림 + ◀ ▶(13 × 16, 6 × 8 삼각형 `#F6F4F2`, Hover `#FF5C00`) + +. 바 1279px 이하 보조기능 아이콘만 45 × 33 | `--hm-sw-footer-aux-compact-width` | -- Figma에 없는 값: 실제 화면에서 가져온 값(바 안 명령창 배치, 좌표, ▲ 패널, 분류 ◀ ▶, 보조기능 아이콘만)과 AI 구성 값 — 디자인 확인 필요(측면 버튼 Hover 글자 `#FF5C00`, Disabled 40%, 명령창 최소 280px, 칸 영역 비율 0.57(두 실제 화면 재현 값), 보조기능 아이콘 전환 1279px, Layout 탭 이름 편집 입력의 동작). +- Figma에 없는 값: 실제 화면에서 가져온 값(바 안 명령창 배치, 좌표, ▲ 패널, 분류 ◀ ▶, 보조기능 아이콘만)과 AI 구성 값 — 디자인 확인 필요(측면 버튼 Hover 글자 `#FF5C00`·주황 테두리, 분류 행 `+` Hover, Disabled 40%, 명령창 최소 280px, 칸 영역 비율 0.57(두 실제 화면 재현 값), 보조기능 아이콘 전환 1279px, Layout 탭 이름 편집 입력의 동작). - 새 하단 UI는 위 토큰을 `var(--…)`로 읽고 `hm-sw-footer*` class를 쓰거나 덮어쓰지 않습니다. diff --git a/packages/sw/ai/FOOTER.md b/packages/sw/ai/FOOTER.md index 06fe80b..d1e0271 100644 --- a/packages/sw/ai/FOOTER.md +++ b/packages/sw/ai/FOOTER.md @@ -1,6 +1,6 @@ # SW Footer — `SWFooter` 계열 (SW 일반 모드) -SW 프로그램 하단 명령 막대입니다. 기준은 Figma 이지빔-SW `레이아웃 분리`(26:10097) 하단 72px과 부품 노드 34개(Plugin API로 읽은 값, 2026-10-20)이고, 바 안 명령창·좌표·좁은 폭 동작은 사용자 제공 실제 화면(2026-10-20)을 따릅니다. 두 기준이 다르면 Figma가 우선입니다(예: 선택된 Model 탭은 Figma On 갈색). **SW 일반 모드(편집 화면) 전용**이며 뷰어 모드(`SWViewer*`) 화면에는 쓰지 않습니다([AI_USAGE.md](./AI_USAGE.md) §0). +SW 프로그램 하단 명령 막대입니다. 기준은 Figma 이지빔-SW `레이아웃 분리`(26:10097) 하단 72px과 부품 노드 34개(Plugin API로 읽은 값, 2026-10-20)이고, 바 안 명령창·좌표·좁은 폭 동작은 사용자 제공 실제 화면(2026-10-20)을 따릅니다. 두 기준이 다르면 Figma가 우선입니다. 단, 2026-10-20 사용자 확정으로 선택된 Model 탭과 Layout 탭 Hover는 주황 그라데이션(Figma `gra-border-orange`)입니다. **SW 일반 모드(편집 화면) 전용**이며 뷰어 모드(`SWViewer*`) 화면에는 쓰지 않습니다([AI_USAGE.md](./AI_USAGE.md) §0). 컴포넌트는 **표시와 사용자 입력 전달**만 합니다. CAD 명령 실행, 명령 등록, 레이아웃 생성·삭제, 명령 해석은 소비 프로그램이 Callback을 받아 처리하고 Props를 갱신합니다. @@ -80,12 +80,13 @@ import "@hm-design/sw/styles.css" | 명령 | Default `#F6F4F2` / Variant2 Hover = Variant3 선택: `#FF5C00` + 주황 아이콘 | Hover는 CSS, 선택은 `activeToolId`·`pressed` | | 분류 탭 | Default `#D4CBBD` / Hover·현재 `#FF5C00`, 현재 탭은 Pocket | `categoryId`·`value` | | 빈 칸 | Default + / Hover 주황 점선 링 + 주황 + | Hover·Focus 시 `slotGuide` 표시 | -| Layout 탭 | Default 베이지 `#C3B79E` / Hover(×) / On 갈색 그라데이션·흰 글자 / On hover / Variant5 이름 편집(`#0F0D0A`, 빨강 `#E60403`) / Variant6 편집 + Hover | `value`, 편집 = 더블클릭·F2 또는 `editingId` | -| Model 탭 | Default / Hover 주황 / On 갈색 | `value === SW_FOOTER_MODEL` | +| Layout 탭 | Default 베이지 `#C3B79E` / Hover(선택 아님, ×) = Model과 같은 주황 그라데이션 면(글자는 Default와 동일: 검정 `#161410`, 크기·굵기·위치 불변) / On 갈색 그라데이션·흰 글자 / On hover / Variant5 이름 편집(`#0F0D0A`, 빨강 `#E60403`) / Variant6 편집 + Hover | `value`, 편집 = 더블클릭·F2 또는 `editingId` | +| Model 탭 | Default 베이지 / Hover·On = 주황 그라데이션 면(`gra-border-orange`) + 검정 `#161410` 글자 | `value === SW_FOOTER_MODEL` | +| `+` 버튼 | Layout 옆 `+` Hover = 같은 주황 그라데이션 면 + `+`. 분류 행 `+` Hover = `+` `#FF5C00` | `onAdd` / `onCategoryAdd` | | 명령창 화살표 | Default ↑ / Hover 주황 ↑ / On ↓ / On hover 주황 ↓ | `expanded` | | Disabled | Figma 없음 | SW 공통 40%(명령·빈 칸·탭·보조기능) | | 보조기능 | Figma btn_객체스냅 26:9248 … btn_선가중치 26:9412: Default 갈색 그라데이션 테두리·아이콘 `#F1EDE5`·글자 `#F6F4F2` / Variant2 = Variant3 주황 그라데이션 테두리·아이콘·글자 `#FF5C00` | Default 그대로. **Hover = 노랑 테두리만**(SW Header Figma Hover 토큰 `--hm-sw-header-hover-border-gradient`, 1px, 아이콘·글자 기본색). **Selected(`pressed`) = 주황 테두리 + 주황 아이콘 + 주황 글자 동시**, Hover 중에도·마우스가 벗어나도 유지. 크기·위치 변화 없음 | -| 측면 버튼 Hover | Figma 없음 | Footer Hover 규칙 재사용: 글자 `#FF5C00` (디자인 확인 필요) | +| 측면 버튼 Hover·Pressed | Figma 없음 | Footer 규칙 재사용(2026-10-20): 제목·부제 모두 `#FF5C00` + 테두리 주황 그라데이션(보조기능 Selected 테두리). 크기·면·그림자 그대로, Disabled는 기본 모양 (디자인 확인 필요) | ### 4.1 좁은 폭 (Figma 없음, 실제 화면 2026-10-20) diff --git a/packages/sw/ai/VIEWER.md b/packages/sw/ai/VIEWER.md index 073c554..6c76a21 100644 --- a/packages/sw/ai/VIEWER.md +++ b/packages/sw/ai/VIEWER.md @@ -71,7 +71,7 @@ | `autoFocus?` | 열 때 패널로 Focus, 닫을 때 원래 위치로 복귀(기본 true) | - Escape는 Focus가 패널 안에 있을 때 그 패널만 닫습니다. 비모달 패널은 바깥 클릭으로 닫히지 않습니다(참고 뷰어와 동일, 도구 창). 마지막으로 누른 패널이 맨 앞으로 옵니다. -- **콘텐츠 우선순위:** `children`·`footer`는 타입상 `ReactNode`이고 소스 주석도 자유 콘텐츠(“any component”)라고 적습니다. 그래도 기본은 `SWViewerSection`·`SWViewerField`·`SWViewerSwitch`·`SWViewerSlider`·`SWViewerInput`·`SWViewerButton`·`SWViewerBadge`·`SWViewerHint` 우선입니다. 이것으로 안 되는 컨트롤(예: Select·Checkbox·표)만 `@hm-design/ui` 컴포넌트나 소비 프로젝트 요소를 넣을 수 있습니다. `@hm-design/ui`는 SW 패키지 dependency가 아니어서 별도 설치(사용 유형 혼합)가 필요하고, `SWPopup`과 달리 뷰어 패널 안 `@hm-design/ui` 외형 정합성은 문서화·검증 기록이 없으므로 결과 보고에 “디자인 확인 필요”로 적습니다. Header 안에는 `@hm-design/ui` DropdownMenu 등을 직접 두지 않습니다(§1 표). +- **콘텐츠 우선순위:** `children`·`footer`는 타입상 `ReactNode`이고 소스 주석도 자유 콘텐츠(“any component”)라고 적습니다. 그래도 기본은 `SWViewerSection`·`SWViewerField`·`SWViewerSwitch`·`SWViewerSlider`·`SWViewerInput`·`SWViewerButton`·`SWViewerBadge`·`SWViewerHint`와 선택 목록 `SWSelect`(축척 지정 단위, 뷰어 패널 토큰으로 표시) 우선입니다. 이것으로 안 되는 컨트롤(예: Select·Checkbox·표)만 `@hm-design/ui` 컴포넌트나 소비 프로젝트 요소를 넣을 수 있습니다. `@hm-design/ui`는 SW 패키지 dependency가 아니어서 별도 설치(사용 유형 혼합)가 필요하고, `SWPopup`과 달리 뷰어 패널 안 `@hm-design/ui` 외형 정합성은 문서화·검증 기록이 없으므로 결과 보고에 “디자인 확인 필요”로 적습니다. Header 안에는 `@hm-design/ui` DropdownMenu 등을 직접 두지 않습니다(§1 표). - **콘텐츠 교체:** 같은 프레임에 다른 `children`을 넣습니다(레이어 목록 / 옵션 / 속성 / 입력 폼 — Storybook `Popup Content Variants`). 프레임을 복사하거나 `hm-sw-viewer-*` class로 새 팝업을 만들지 않습니다. ## 5. 올바른 사용 diff --git a/packages/sw/ai/examples/ExampleE-CustomPopup.tsx b/packages/sw/ai/examples/ExampleE-CustomPopup.tsx index 6425289..2270530 100644 --- a/packages/sw/ai/examples/ExampleE-CustomPopup.tsx +++ b/packages/sw/ai/examples/ExampleE-CustomPopup.tsx @@ -1,8 +1,9 @@ // Example E — the SW popup frame with project content (no Header). SWPopup keeps the property window design; -// children are free: SWPopupSection / SWPopupRow rows with SWHeaderInput, and an existing SW dropdown. +// children are free: SWPopupSection / SWPopupRow rows with SWHeaderInput, the unit SWSelect, the SWSlider gauge and the +// popup layer / color pickers (SWPopupPropertyRow). The SWHeader field dropdowns are header-only: never in a popup. import { useId, useState } from "react" -import { SWHeaderLayerMenu, SWHeaderInput, SWPopup, SWPopupRow, SWPopupSection, SWTheme } from "@hm-design/sw" -import { layers } from "./sample-data" +import { SWHeaderInput, SWPopup, SWPopupPropertyRow, SWPopupRow, SWPopupSection, SWSelect, SWSlider, SWTheme } from "@hm-design/sw" +import { colors, layers } from "./sample-data" export function ExampleECustomPopup({ onEvent }: { onEvent?: (name: string) => void }) { const [open, setOpen] = useState(true) @@ -10,7 +11,11 @@ export function ExampleECustomPopup({ onEvent }: { onEvent?: (name: string) => v const [name, setName] = useState("평면도-01") const [scale, setScale] = useState("100") const [x, setX] = useState("1200.5") + const unitId = useId() + const [unit, setUnit] = useState("mm") + const [opacity, setOpacity] = useState(60) const [activeLayerId, setActiveLayerId] = useState("0") + const [color, setColor] = useState("255,0,0") if (!open) return return ( @@ -22,6 +27,12 @@ export function ExampleECustomPopup({ onEvent }: { onEvent?: (name: string) => v { setScale(next); onEvent?.(`scale:${next}`) }} /> + + { setUnit(next); onEvent?.(`unit:${next}`) }} /> + + + onEvent?.(`opacity:${next}`)} /> + @@ -29,10 +40,12 @@ export function ExampleECustomPopup({ onEvent }: { onEvent?: (name: string) => v { setX(next); onEvent?.(`x:${next}`) }} /> - - {/* Inside a popup the dropdown opens as a fixed overlay, so the scrolling body never clips it. */} - { setActiveLayerId(layer.id); onEvent?.(`layer:${layer.id}`) }} /> + + {/* The property window pickers; their lists open as a fixed overlay, so the scrolling body never clips them. */} + ({ id, name })) }} + menus={{ layers }} onPropertyChange={(_, value) => { setActiveLayerId(value); onEvent?.(`layer:${value}`) }} /> + { setColor(value); onEvent?.(`color:${value}`) }} /> diff --git a/packages/sw/tests/footer-popup-viewer-refinement.browser.mjs b/packages/sw/tests/footer-popup-viewer-refinement.browser.mjs new file mode 100644 index 0000000..56d3ed7 --- /dev/null +++ b/packages/sw/tests/footer-popup-viewer-refinement.browser.mjs @@ -0,0 +1,214 @@ +// 2026-10-20 SW Footer · Popup · Viewer refinement: Footer Story cleanup, Header field dropdowns inside SWPopup, +// SWSlider appearances (panel / property), Popup B, viewer title art at narrow widths. +// Usage: build Storybook first, then node packages/sw/tests/footer-popup-viewer-refinement.browser.mjs [evidence-dir] +import { createRequire } from 'node:module' +import { readFile, writeFile, mkdir } from 'node:fs/promises' +import path from 'node:path' +import http from 'node:http' +const runtime = process.env.SW_RUNTIME_MODULES ?? 'C:/Users/user/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules' +const require = createRequire(path.join(runtime, 'index.js')) +const { chromium } = require('playwright') +const out = path.resolve(process.argv[2] ?? 'docs/sw/footer-popup-viewer-refinement-qa'); await mkdir(out, { recursive: true }) +const root = path.resolve('storybook-static'), mime = { '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.json': 'application/json', '.svg': 'image/svg+xml', '.png': 'image/png', '.ttf': 'font/ttf', '.woff2': 'font/woff2' } +const server = http.createServer(async (req, res) => { try { const p = new URL(req.url, 'http://localhost').pathname, file = path.resolve(root, '.' + decodeURIComponent(p === '/' ? '/index.html' : p)); res.setHeader('Content-Type', mime[path.extname(file)] ?? 'application/octet-stream'); res.end(await readFile(file)) } catch { res.writeHead(404).end() } }) +await new Promise(r => server.listen(0, '127.0.0.1', r)); const base = `http://127.0.0.1:${server.address().port}` +const browser = await chromium.launch({ headless: true, executablePath: process.env.SW_CHROME_PATH ?? 'C:/Program Files/Google/Chrome/Application/chrome.exe' }) +const report = {} +const checks = []; const check = (n, ok, d) => { checks.push({ n, ok, d }); console.log(ok ? 'PASS' : 'FAIL', n, ok ? '' : JSON.stringify(d)) } +const index = JSON.parse(await readFile(path.join(root, 'index.json'), 'utf8')) +let errors = [] +const page = await browser.newPage({ viewport: { width: 1920, height: 1100 } }) +page.on('pageerror', e => errors.push(e.message)); page.on('console', m => { if (m.type() === 'error') errors.push(m.text()) }) +const goto = async id => { errors = []; await page.goto(`${base}/iframe.html?id=${id}&viewMode=story`); await page.locator('#storybook-root > *').first().waitFor(); await page.waitForTimeout(300) } +const log = () => page.locator('[data-callback-log]').first().textContent() + +// 1. Footer Stories +const footer = Object.values(index.entries).filter(e => e.type === 'story' && e.title === 'SW/Footer').map(e => e.id) +check('Footer: 기본 Footer / States removed, full-footer + figma-variants kept', !footer.includes('sw-footer--default') && !footer.includes('sw-footer--states') && footer.includes('sw-footer--full-footer') && footer.includes('sw-footer--figma-variants'), footer) +await goto('sw-footer--full-footer') +const sections = await page.locator('h2').allTextContents() +// 2026-10-20 (second pass): 전체 Footer — Figma 기본 구성, 상태, 참고: 실제 화면 were removed; the live composition stays. +check('Footer: full-footer keeps only 실제 Footer 조합 (3 sections removed)', sections.some(s => s.startsWith('실제 Footer 조합')) && !['전체 Footer — Figma', '상태 —', '참고: 실제 화면'].some(t => sections.some(s => s.startsWith(t))) && errors.length === 0, { sections, errors }) +check('Footer: one live footer, no Figma / reference image', await page.locator('.hm-sw-footer').count() === 1 && await page.locator('img[src*="composition-2026"], img[src*="narrow-2026"], [aria-label^="Figma 26:10097"]').count() === 0, await page.locator('.hm-sw-footer').count()) +// command area does not move when the category changes (workspace footer) +const work = page.locator('.sw-footer-story-workspace .hm-sw-footer') +const slotBox = () => work.locator('.hm-sw-footer__slots').evaluate(e => { const r = e.getBoundingClientRect(); return [Math.round(r.x), Math.round(r.width), e.querySelectorAll('.hm-sw-footer-slot').length] }) +const before = await slotBox() +await work.locator('.hm-sw-footer-menu__tab').nth(1).click(); await page.waitForTimeout(150) +check('Footer: category change keeps the command slot position', JSON.stringify(await slotBox()) === JSON.stringify(before), { before, after: await slotBox() }) +// Hover · gradient (2026-10-20): side buttons light up whole (both lines + orange ring), + buttons, Model / Layout tabs. +const ORANGE = 'linear-gradient(rgb(218, 104, 19) 8.52%, rgb(255, 187, 137) 37.93%, rgb(229, 105, 13) 71.85%, rgb(174, 54, 7) 92.77%)' +const hoverRead = async (sel, fn) => { const el = work.locator(sel).first(); await el.hover(); await page.waitForTimeout(120); const r = await el.evaluate(fn); await page.mouse.move(2, 2); await page.waitForTimeout(80); return r } +for (const side of ['start', 'end']) { + const sel = side === 'end' ? '.hm-sw-footer-side[data-side="end"]' : '.hm-sw-footer-side:not([data-side="end"])' + const r = await hoverRead(sel, e => ({ title: getComputedStyle(e.querySelector('.hm-sw-footer-side__title')).color, sub: getComputedStyle(e.querySelector('.hm-sw-footer-side__subtitle')).color, ring: getComputedStyle(e, '::after').opacity, w: e.getBoundingClientRect().width, h: e.getBoundingClientRect().height })) + check(`Footer: ${side === 'end' ? '명령어' : '보조기능'} 전체보기 hover = both lines accent + orange ring, 74 × 71`, r.title === 'rgb(255, 92, 0)' && r.sub === 'rgb(255, 92, 0)' && r.ring === '1' && r.w === 74 && r.h === 71, r) +} +const idle = await work.locator('.hm-sw-footer-side[data-side="end"]').evaluate(e => [getComputedStyle(e.querySelector('.hm-sw-footer-side__subtitle')).color, getComputedStyle(e, '::after').opacity]) +check('Footer: side button default unchanged (subtitle #F6F4F2, no ring)', idle[0] === 'rgb(246, 244, 242)' && idle[1] === '0', idle) +const menuAdd = await hoverRead('.hm-sw-footer-menu__add', e => ({ bg: getComputedStyle(e).backgroundImage, w: e.getBoundingClientRect().width })) +check('Footer: category + hover = orange + (menu-add-hover, #FF5C00), 28px', /FF5C00/i.test(decodeURIComponent(menuAdd.bg)) && menuAdd.w === 28, menuAdd.bg.slice(0, 80)) +const tabsAdd = await hoverRead('.hm-sw-footer-tabs__add', e => ({ bg: getComputedStyle(e, '::before').backgroundImage, w: e.getBoundingClientRect().width })) +check('Footer: Layout + hover = gra-border-orange surface with the +, 24px', tabsAdd.bg.includes(ORANGE) && tabsAdd.bg.startsWith('url(') && tabsAdd.w === 24, tabsAdd.bg.slice(0, 160)) +const tabInfo = e => { const t = e.querySelector('.hm-sw-footer-tab__select'), l = e.querySelector('.hm-sw-footer-tab__label') ?? t, c = getComputedStyle(t), r = e.getBoundingClientRect(), lr = l.getBoundingClientRect(); return { bg: getComputedStyle(e).backgroundImage, before: getComputedStyle(e, '::before').backgroundImage, color: c.color, size: c.fontSize, weight: c.fontWeight, shadow: c.textShadow === 'none' ? 'none' : 'outline', text: [Math.round((lr.x - r.x) * 10), Math.round((lr.y - r.y) * 10)].join(','), w: Math.round(r.width), h: Math.round(r.height) } } +const textOf = t => [t.color, t.size, t.weight, t.shadow, t.text, t.w, t.h].join('|') +const l02d = await work.locator('.hm-sw-footer-tab[data-shape="rounded"][data-state="off"]').evaluate(tabInfo) +const l01d = await work.locator('.hm-sw-footer-tab[data-shape="slant"][data-state="off"]').evaluate(tabInfo) +const model = await work.locator('.hm-sw-footer-tab--model').evaluate(tabInfo) +check('Footer: Model (selected) = gra-border-orange surface, black #161410 text without outline, 73 × 22', model.before === ORANGE && model.color === 'rgb(22, 20, 16)' && model.shadow === 'none' && model.w === 73 && model.h === 22, model) +const l02 = await hoverRead('.hm-sw-footer-tab[data-shape="rounded"][data-state="off"]', tabInfo) +const l01 = await hoverRead('.hm-sw-footer-tab[data-shape="slant"][data-state="off"]', tabInfo) +check('Footer: Layout 02 hover = Model surface; text identical to Default (black, size, weight, place, box)', l02.bg === ORANGE && textOf(l02) === textOf(l02d) && l02.color === 'rgb(22, 20, 16)' && l02.weight === model.weight && l02.size === model.size && l02.w === 85, { l02, l02d }) +check('Footer: Layout 01 hover = Model surface (slanted); text identical to Default', l01.before === ORANGE && textOf(l01) === textOf(l01d) && l01.color === 'rgb(22, 20, 16)' && l01.weight === model.weight && l01.size === model.size && l01.w === 97, { l01, l01d }) +const l01idle = await work.locator('.hm-sw-footer-tab[data-shape="slant"][data-state="off"]').evaluate(tabInfo) +check('Footer: Layout tabs return to their default look after hover', l01idle.before !== ORANGE && textOf(l01idle) === textOf(l01d), l01idle) +// Category pocket (2026-10-20): every selected tab shows one continuous pocket surface (no vacant surface under the row). +const pockets = [] +for (let i = 0; i < 4; i++) { + await work.locator('.hm-sw-footer-menu__tab').nth(i).click(); await page.mouse.move(2, 2); await page.waitForTimeout(120) + pockets.push(await work.locator('.hm-sw-footer-menu').evaluate(m => { const t = m.querySelector('[aria-selected="true"]').getBoundingClientRect(), y = t.y + 4 + const under = x => document.elementsFromPoint(x, y).find(e => e.matches('.hm-sw-footer__vacant, .hm-sw-footer__group'))?.className + return [m.querySelector('[aria-selected="true"]').textContent, under(t.x + 3), under(t.x + t.width / 2), under(t.right - 3)] })) +} +check('Footer: category pocket surface is the same across the whole tab for 1st · 2nd · 3rd · 4th tab', pockets.every(p => p[1] === p[2] && p[2] === p[3] && p[1] === 'hm-sw-footer__group'), pockets) +const vacantH = await work.locator('.hm-sw-footer__vacant').evaluate(e => Math.round(e.getBoundingClientRect().height)) +check('Footer: vacant surface covers the slot row only (46px)', vacantH === 46, vacantH) +await work.locator('.hm-sw-footer-menu__tab').nth(0).click(); await page.mouse.move(2, 2) +await work.locator('.hm-sw-footer-tab[data-shape="rounded"] .hm-sw-footer-tab__select').click(); await page.waitForTimeout(120) +const l02on = await work.locator('.hm-sw-footer-tab[data-shape="rounded"]').evaluate(e => [e.dataset.state, getComputedStyle(e).backgroundImage]) +check('Footer: a selected Layout keeps its own (brown) selected surface, distinct from hover', l02on[0] === 'on' && l02on[1] !== ORANGE && l02on[1].includes('linear-gradient'), l02on) +await page.screenshot({ path: path.join(out, 'footer-full.png'), fullPage: true }) +await goto('sw-footer--figma-variants') +check('Footer: aux Figma comparison lives in figma-variants (6 rows)', await page.locator('.sw-footer-story-aux-row').count() === 6 && errors.length === 0, errors) +await goto('sw-footer--responsive') +await page.setViewportSize({ width: 1920, height: 1100 }) +const panelOrder = await page.locator('.sw-footer-story-width').nth(4).evaluate(async w => { + const toggle = [...w.querySelectorAll('button')].find(b => b.getAttribute('aria-expanded') !== null && b.closest('.hm-sw-footer') && !b.closest('.hm-sw-footer-command')) + return toggle ? toggle.getAttribute('aria-label') : null +}) +check('Footer: responsive 860px row renders with an overflow ▲ control', panelOrder !== null && errors.length === 0, { panelOrder, errors }) +const respSections = await page.locator('h2').allTextContents() +check('Footer: 화면 폭 변화 keeps the 6 widths, 참고 좁은 화면 + Figma 기본 구성 removed', await page.locator('.sw-footer-story-width').count() === 6 && !respSections.some(t => t.startsWith('참고: 실제 좁은 화면') || t.startsWith('Figma 기본 구성')) && await page.locator('img[src*="narrow-2026"]').count() === 0, respSections) + +// 2. Popup layer / color = the property window pickers (SWPopupPropertyRow); SWHeader field dropdowns stay header-only. +await goto('sw-header--overview') +const headerField = await page.locator('.hm-sw-header .hm-sw-header__field--layer').first().evaluate(e => { const c = getComputedStyle(e), v = getComputedStyle(e.querySelector('.hm-sw-header__field-value')); return [c.color, c.height, v.color, v.fontWeight].join('|') }) +check('Header: layer field keeps the header design (#F6F4F2, 38px, value 700)', headerField === 'rgb(246, 244, 242)|38px|rgb(246, 244, 242)|700', headerField) +await goto('sw-popup--custom-content') +const rowSig = loc => loc.evaluate(row => { const s = e => { const c = getComputedStyle(e); return [c.color, c.backgroundColor, c.backgroundImage.slice(0, 30), c.borderTopColor, c.height, c.fontSize, c.fontWeight, c.textShadow].join(',') }; return ['.hm-sw-property__value', '.hm-sw-property__trigger, .hm-sw-header__input', 'label'].map(q => row.querySelector(q) ? s(row.querySelector(q)) : '-').join(' / ') + ' / ' + row.querySelector('.hm-sw-property__value')?.dataset.picker }) +const panelRows = page.locator('[data-popups] .hm-sw-property').nth(2) +const settingsPopup = page.locator('[data-popup="settings"]') +for (const id of ['layer', 'color']) { + const a = await rowSig(settingsPopup.locator(`[data-property-id="${id}"]`)), b = await rowSig(panelRows.locator(`[data-property-id="${id}"]`)) + check(`Popup: 도면 설정 ${id} = 속성창 ${id} picker (value, trigger, label computed look)`, a === b && a.endsWith(id), { a, b }) +} +check('Popup: no SWHeader field dropdown inside any popup', await page.locator('.hm-sw-property .hm-sw-header__field').count() === 0) +await settingsPopup.locator('[data-property-id="layer"] .hm-sw-property__trigger').click(); await page.waitForTimeout(120) +const drop = await page.locator('.hm-sw-property__drop[data-picker="layer"]').evaluate(e => getComputedStyle(e).position) +await page.locator('.hm-sw-property__drop[data-picker="layer"] .hm-sw-header__layer-item', { hasText: 'HATCH' }).click(); await page.waitForTimeout(100) +check('Popup: layer picker opens (fixed overlay), selects and closes', drop === 'fixed' && (await log()).includes('layer=hatch') && await page.locator('.hm-sw-property__drop').count() === 0 && (await settingsPopup.locator('[data-property-id="layer"] .hm-sw-property__text').textContent()) === 'HATCH', await log()) +await settingsPopup.locator('[data-property-id="color"] .hm-sw-property__swatch-area').click(); await page.waitForTimeout(120) +await page.locator('.hm-sw-property__drop[data-picker="color"]').getByLabel('파랑').click(); await page.waitForTimeout(100) +check('Popup: color picker chip commits the RGB value', (await log()).includes('color=0,0,255'), await log()) +if (await page.locator('.hm-sw-property__drop').count()) await page.keyboard.press('Escape') +const frames = await page.locator('[data-popups] .hm-sw-property').count() +check('Popup: frame / title / close unchanged (3 popups in the main section)', frames === 3) + +// 3. SWSlider appearances +const sliders = await page.locator('[data-sw-slider]').evaluateAll(list => list.map(e => ({ look: e.dataset.appearance, h: Math.round(e.getBoundingClientRect().height), fill: e.style.getPropertyValue('--hm-sw-range-fill'), paint: getComputedStyle(e).getPropertyValue('--hm-sw-range-track-paint').trim().length > 0, range: getComputedStyle(e).getPropertyValue('--hm-sw-slider-panel-range').trim() }))) +check('Slider: A = panel (18px, no property paint), B = property (16px, property paint), same fill', sliders[0].look === 'panel' && sliders[0].h === 18 && !sliders[0].paint && sliders[1].look === 'property' && sliders[1].h === 16 && sliders[1].paint && sliders[0].fill === sliders[1].fill && sliders[0].range === '#266651', sliders) +await page.getByLabel('투명도 B').focus(); await page.keyboard.press('ArrowRight'); await page.waitForTimeout(100) +const afterB = await page.locator('[data-sw-slider]').evaluateAll(list => list.map(e => e.value)) +check('Slider: one shared value; keyboard change on B commits through onValueCommit', /opacity\(property\)=50/.test(await log()) && afterB.every(v => v === '50'), { log: await log(), afterB }) +await page.getByRole('combobox', { name: '게이지바 스타일' }).selectOption('property'); await page.waitForTimeout(100) +const chosen = await page.getByLabel('투명도 (선택한 스타일)').evaluate(e => e.dataset.appearance) +check('Slider: appearance selection switches the look only', chosen === 'property' && (await log()).includes('appearance=property'), chosen) +const disabledSlider = await page.getByLabel('투명도 (비활성)').evaluate(e => ({ d: e.disabled, o: getComputedStyle(e).opacity })) +check('Slider: disabled 40%', disabledSlider.d && disabledSlider.o === '0.4', disabledSlider) +await page.locator('[data-slider-popups]').screenshot({ path: path.join(out, 'popup-slider-styles.png') }) +await page.locator('[data-popups]').screenshot({ path: path.join(out, 'popup-custom-dropdowns.png') }) +// The property window gauge itself is unchanged (property-panel-compare) +await goto('sw-header--property-panel-compare') +const prop = await page.locator('.hm-sw-property__value > input[type="range"]').first().evaluate(e => { const r = e.getBoundingClientRect(); return [Math.round(r.width), Math.round(r.height), getComputedStyle(e).getPropertyValue('--hm-sw-range-track-paint').trim().length > 0] }) +check('Slider: property window gauge keeps 86 × 16 and its paint', prop[0] === 86 && prop[1] === 16 && prop[2], prop) + +// 3b. Unit select: Popup 도면 설정 = Viewer 축척 지정 (same SWSelect, same computed look in every state) +const selProps = ['appearance', 'height', 'paddingLeft', 'paddingRight', 'borderTopWidth', 'borderTopColor', 'borderTopStyle', 'borderRadius', 'backgroundColor', 'color', 'fontSize', 'fontWeight', 'lineHeight', 'outlineStyle', 'outlineColor', 'outlineWidth', 'opacity', 'cursor'] +const selRead = loc => loc.evaluate((e, p) => { const s = getComputedStyle(e); return p.map(k => `${k}=${s[k]}`).join(';') + `;class=${e.className};tag=${e.tagName}` }, selProps) +const selStates = async loc => { const d = await selRead(loc); await loc.hover(); await page.waitForTimeout(80); const h = await selRead(loc); await loc.focus(); await page.keyboard.press('Shift+Tab'); await page.keyboard.press('Tab'); await page.waitForTimeout(80); const f = await selRead(loc); await page.mouse.move(2, 2); return { d, h, f } } +await goto('sw-popup--custom-content') +const popupSel = page.locator('[data-popup="settings"] [data-sw-select="unit"]') +const ps = await selStates(popupSel) +const popupOptions = await popupSel.evaluate(e => [...e.options].map(o => o.value)) +await popupSel.selectOption('m'); await page.waitForTimeout(80) +const popupPicked = [(await log()).includes('unit=m'), await popupSel.inputValue()] +await goto('sw-viewer--content-variants') +const viewerSel = page.locator('.hm-sw-viewer-panel [data-sw-select="unit"]') +const vs = await selStates(viewerSel) +const viewerOptions = await viewerSel.evaluate(e => [...e.options].map(o => o.value)) +await viewerSel.selectOption('m'); await page.waitForTimeout(80) +check('Select: Popup 도면 설정 단위 = Viewer 축척 지정 단위 (default · hover · focus computed look)', ps.d === vs.d && ps.h === vs.h && ps.f === vs.f && ps.d.includes('class=hm-sw-select'), { ps, vs }) +check('Select: options and selection kept (Popup mm/cm/m, Viewer mm/m), change events', JSON.stringify(popupOptions) === '["mm","cm","m"]' && JSON.stringify(viewerOptions) === '["mm","m"]' && popupPicked[0] && popupPicked[1] === 'm' && await viewerSel.inputValue() === 'm', { popupOptions, viewerOptions, popupPicked }) +await page.locator('.hm-sw-viewer-panel', { hasText: '축척 지정' }).screenshot({ path: path.join(out, 'viewer-scale-select.png') }) + +// 3c. Header Open hysteresis (fix A): grow 520 → 1080, Open returns once and stays; shrink: Open moves first. +await goto('sw-header--document-open') +const probe = page.locator('[data-responsive-open] > [data-width="520"] .sw-story-frame') +const walk = async widths => { const t = []; for (const w of widths) { await probe.evaluate((e, w) => { e.style.width = `${w}px` }, w); await page.waitForTimeout(150); t.push([w, await probe.locator('[data-document-open]').count(), await probe.evaluate(e => e.querySelector('.hm-sw-header__object-area').dataset.squeezed ?? '')]) } return t } +const grow = await walk([520, 560, 600, 640, 680, 720, 760, 820, 900, 1080]) +const flips = grow.slice(1).filter((s, i) => s[1] !== grow[i][1]).length +check('Header: Open returns once while growing 520 → 1080 and stays', grow[0][1] === 0 && grow.at(-1)[1] === 1 && flips === 1, grow) +const wide = await walk([1440, 1920]) +check('Header: at 1920 every part is back and Open is shown', wide.at(-1)[1] === 1 && wide.at(-1)[2] === '', wide) +const shrink = await walk([1800, 1440, 1080, 900, 640, 520]) +check('Header: shrinking, Open moves into More first (1800) and stays there', shrink[0][1] === 0 && shrink.every(s => s[1] === 0), shrink) +const regrow = await walk([560, 600, 640, 680, 720, 900, 1080, 1920]) +const reflips = regrow.slice(1).filter((s, i) => s[1] !== regrow[i][1]).length +check('Header: regrowing after a shrink, Open returns once and stays', regrow.at(-1)[1] === 1 && reflips <= 1 && regrow.at(-1)[2] === '', regrow) +report.header = { grow, wide, shrink, regrow } + +// 4. Popup B +await goto('sw-popup--multiple-popups') +const frame = id => page.locator(`[data-popup="${id}"]`).evaluate(e => { const s = getComputedStyle(e), t = getComputedStyle(e.querySelector('.hm-sw-property__title')); return [Math.round(e.getBoundingClientRect().width), s.backgroundColor, s.borderTopColor, t.color, t.fontWeight].join('|') }) +check('Popup B: same frame as Popup A', await frame('a') === await frame('b'), [await frame('a'), await frame('b')]) +check('Popup B: popup layer picker (no SWHeader field)', await page.locator('[data-popup="b"] .hm-sw-header__field').count() === 0 && await page.locator('[data-popup="b"] [data-property-id="layer"] [data-picker="layer"]').count() === 1) +await page.locator('[data-popup="b"] [data-property-id="layer"] .hm-sw-property__trigger').click() +await page.locator('.hm-sw-property__drop[data-picker="layer"] .hm-sw-header__layer-item', { hasText: 'DIM' }).click() +check('Popup B: layer selection callback and field value', (await log()).includes('b.layer=dim') && (await page.locator('[data-popup="b"] [data-property-id="layer"] .hm-sw-property__text').textContent()) === 'DIM', await log()) +await page.setViewportSize({ width: 375, height: 812 }) +await page.waitForTimeout(200) +const narrow = await page.evaluate(() => ({ sw: document.documentElement.scrollWidth, vw: document.documentElement.clientWidth, b: (r => [Math.round(r.left), Math.round(r.right)])(document.querySelector('[data-popup="b"]').getBoundingClientRect()) })) +check('Popup B: 375px, no page overflow and the popup inside the viewport', narrow.sw <= narrow.vw && narrow.b[0] >= 0 && narrow.b[1] <= narrow.vw, narrow) +await page.screenshot({ path: path.join(out, 'popup-stack-375.png'), fullPage: true }) +await page.setViewportSize({ width: 1920, height: 1100 }) + +// 5. Viewer title art +const art = () => page.locator('.hm-sw-viewer-panel').evaluateAll(list => list.map(p => { const r = p.getBoundingClientRect(), a = p.querySelector('.hm-sw-property__title-art').getBoundingClientRect(), t = p.querySelector('.hm-sw-property__titlebar').getBoundingClientRect(); const before = parseFloat(getComputedStyle(p.querySelector('.hm-sw-property__titlebar'), '::before').width) || 0; return { w: Math.round(r.width), h: Math.round(r.height), artW: Math.round(a.width), gap: Math.max(0, (a.left + 20) - (t.left + before)) } })) +await goto('sw-viewer--variable-size') +const v = await art() +check('Viewer: 250 × auto title art keeps 308px and paints from the left edge (no gap)', v[0].w === 250 && v[0].artW === 308 && v[0].gap < 0.5, v[0]) +check('Viewer: 320 / 480 popups unchanged (no gap)', v.slice(1).every(p => p.artW === 308 && p.gap < 0.5) && v[1].w === 320 && v[2].w === 480, v) +await page.locator('.hm-sw-viewer-panel').first().screenshot({ path: path.join(out, 'viewer-250-auto.png') }) +// collapse + expand, drag +const first = page.locator('.hm-sw-viewer-panel').first() +const h0 = (await first.boundingBox()).height +const collapse = first.locator('button[aria-expanded]').first() +await collapse.click(); await page.waitForTimeout(100) +const h1 = (await first.boundingBox()).height +await collapse.click(); await page.waitForTimeout(100) +check('Viewer: 250 × auto collapses to the title bar and expands back to auto height', h1 < 40 && Math.abs((await first.boundingBox()).height - h0) < 1, { h0, h1 }) +const box = await first.locator('.hm-sw-property__titlebar').boundingBox() +await page.mouse.move(box.x + 60, box.y + 15); await page.mouse.down(); await page.mouse.move(box.x + 120, box.y + 45, { steps: 5 }); await page.mouse.up() +const moved = await first.locator('.hm-sw-property__titlebar').boundingBox() +check('Viewer: 250 × auto drags by its title bar', Math.round(moved.x - box.x) === 60 && Math.round(moved.y - box.y) === 30, { dx: moved.x - box.x, dy: moved.y - box.y }) +await goto('sw-viewer--content-variants') +const cv = await art() +check('Viewer: content variants (incl. 300px) title art has no gap', cv.every(p => p.artW === 308 && p.gap < 0.5), cv) +await goto('sw-viewer--settings-panel') +const sl = await page.locator('.hm-sw-viewer-slider').first().evaluate(e => ({ cls: e.className, look: e.dataset.appearance, h: Math.round(e.getBoundingClientRect().height), range: getComputedStyle(e).getPropertyValue('--hm-sw-slider-panel-range').trim(), track: getComputedStyle(e).getPropertyValue('--hm-sw-slider-panel-track').trim() })) +check('Viewer: SWViewerSlider = SWSlider panel with viewer tokens (#266651 / #e4dbc9)', sl.cls.includes('hm-sw-slider') && sl.look === 'panel' && sl.h === 18 && sl.range === '#266651' && sl.track === '#e4dbc9', sl) + +await writeFile(path.join(out, 'result.json'), JSON.stringify({ date: new Date().toISOString(), checks, report }, null, 1)) +console.log(`${checks.filter(c => c.ok).length}/${checks.length} PASS`) +await browser.close(); server.close() +process.exit(checks.every(c => c.ok) ? 0 : 1) diff --git a/packages/sw/tests/integrated-consumer.browser.mjs b/packages/sw/tests/integrated-consumer.browser.mjs index 9a28ab8..73c2a32 100644 --- a/packages/sw/tests/integrated-consumer.browser.mjs +++ b/packages/sw/tests/integrated-consumer.browser.mjs @@ -103,11 +103,15 @@ for (const mode of ["sw-first", "ui-first"]) { const name = e.getByLabel("이름") await name.click(); await name.fill("평면도-02"); await name.press("Enter") check(`${mode} E: row input commits`, await last() === "name:평면도-02", await last()) - await e.locator(".hm-sw-header__field--layer").click() - const menu = e.locator(".hm-sw-header__layer-menu") - check(`${mode} E: layer dropdown inside the popup is a fixed overlay`, await menu.evaluate(el => getComputedStyle(el).position) === "fixed") + // 2026-10-20: popup layer = the property window picker (SWPopupPropertyRow); no SWHeader field dropdown in a popup. + check(`${mode} E: no SWHeader field dropdown inside the popup`, await e.locator(".hm-sw-header__field").count() === 0) + await e.locator('[data-property-id="layer"] .hm-sw-property__trigger').click() + const menu = page.locator('.hm-sw-property__drop[data-picker="layer"]') + check(`${mode} E: layer picker inside the popup is a fixed overlay`, await menu.evaluate(el => getComputedStyle(el).position) === "fixed") await menu.locator(".hm-sw-header__layer-item", { hasText: "DIM" }).click() check(`${mode} E: layer selection callback`, await last() === "layer:dim", await last()) + await e.getByLabel("단위").selectOption("cm") + check(`${mode} E: SWSelect unit callback`, await last() === "unit:cm", await last()) // HM UI inside an SW popup. const ui = section("ui") diff --git a/packages/sw/tests/integrated-improvement.browser.mjs b/packages/sw/tests/integrated-improvement.browser.mjs index ceb052f..2629b0d 100644 --- a/packages/sw/tests/integrated-improvement.browser.mjs +++ b/packages/sw/tests/integrated-improvement.browser.mjs @@ -9,7 +9,9 @@ import http from 'node:http' const runtime = process.env.SW_RUNTIME_MODULES ?? 'C:/Users/user/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules' const require = createRequire(path.join(runtime, 'index.js')) const out = path.resolve(process.argv[2] ?? 'docs/sw/integrated-improvement-qa/verify') -const sections = process.argv.slice(3).length ? process.argv.slice(3) : ['options', 'tool', 'popup'] +// 'tool' opens sw-tool--tool-buttons, retired 2026-10-19 (storybook-inventory retiredToolIds): historical, run it only +// by name against an old build. The default runs the sections whose Stories exist (2026-10-20). +const sections = process.argv.slice(3).length ? process.argv.slice(3) : ['options', 'popup'] await mkdir(out, { recursive: true }) const root = path.resolve('storybook-static'), mime = { '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.json': 'application/json', '.svg': 'image/svg+xml', '.png': 'image/png', '.ttf': 'font/ttf', '.woff2': 'font/woff2' } const server = http.createServer(async (req, res) => { try { const p = new URL(req.url, 'http://localhost').pathname, file = path.resolve(root, '.' + decodeURIComponent(p === '/' ? '/index.html' : p)); 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() } }) diff --git a/packages/sw/tests/integrated-popup.checks.mjs b/packages/sw/tests/integrated-popup.checks.mjs index c67b44c..e2e20e9 100644 --- a/packages/sw/tests/integrated-popup.checks.mjs +++ b/packages/sw/tests/integrated-popup.checks.mjs @@ -18,31 +18,34 @@ export async function popupChecks({ page, goto, check, log, rect, out, report }) check('popup content: SWPopupRow is the property row (72px label, 32px row, 28px box)', rowStyle.label === '72px' && rowStyle.minH === '32px' && rowStyle.box === '28px', rowStyle) await settings.locator('[data-ui-switch]').click() check('popup content: HM UI Switch works inside', (await log()).includes('snap=false')) - await settings.locator('[data-ui-select]').click() - await page.getByRole('option', { name: 'cm' }).click() - check('popup content: HM UI Select (portal) works inside', (await log()).includes('unit=cm')) + // 2026-10-20: the unit select is SWSelect (the Viewer 축척 지정 select), no longer the HM UI Select. + await settings.locator('[data-sw-select="unit"]').selectOption('cm') + check('popup content: SWSelect (unit) works inside', (await log()).includes('unit=cm') && await settings.getByLabel('단위').inputValue() === 'cm') await settings.locator('[data-ui-slider] [role="slider"]').focus() await page.keyboard.press('ArrowRight') await page.waitForTimeout(100) check('popup content: HM UI Slider works inside', /opacity=70/.test(await log()), await log()) await settings.locator('[data-ui-apply]').click() check('popup content: HM UI Button works inside', (await log()).includes('apply')) - const layerField = settings.locator('[data-popup-layer] button.hm-sw-header__field') + // 2026-10-20: popup layer / color are the property window pickers (SWPopupPropertyRow); SWHeader field dropdowns are + // header-only. The same clipping / overlay / callback / Escape requirements apply to the popup pickers. + check('popup dropdown: no SWHeader field dropdown inside the popups', await page.locator('[data-popups] .hm-sw-header__field').count() === 0) + const layerField = settings.locator('[data-property-id="layer"] .hm-sw-property__trigger') await layerField.click() - const fieldBox = await rect(layerField), menu = settings.locator('.hm-sw-header__layer-menu') + const fieldBox = await rect(settings.locator('[data-property-id="layer"] .hm-sw-property__value')), menu = page.locator('.hm-sw-property__drop[data-picker="layer"]') const menuBox = await rect(menu) const hit = await menu.locator('.hm-sw-header__layer-row').last().evaluate(row => { const r = row.getBoundingClientRect(); const e = document.elementFromPoint(r.x + r.width / 2, r.y + r.height / 2); return row.contains(e) }) - check('popup dropdown: SW layer dropdown opens right under its field (fixed overlay) and is not clipped', await menu.evaluate(e => getComputedStyle(e).position) === 'fixed' && Math.abs(menuBox.y - (fieldBox.y + fieldBox.h)) < 1 && Math.abs(menuBox.x - fieldBox.x) < 1 && hit, { fieldBox, menuBox, hit }) + check('popup dropdown: popup layer picker opens right under its field (fixed overlay, right edge) and is not clipped', await menu.evaluate(e => getComputedStyle(e).position) === 'fixed' && Math.abs(menuBox.y - (fieldBox.y + fieldBox.h)) < 1 && Math.abs((menuBox.x + menuBox.w) - (fieldBox.x + fieldBox.w)) < 1 && hit, { fieldBox, menuBox, hit }) await page.locator('[data-popups]').screenshot({ path: path.join(out, 'popup-custom-dropdown.png') }) await menu.locator('.hm-sw-header__layer-item', { hasText: 'DIM' }).click() - check('popup dropdown: selection callback, list closes, popup stays', (await log()).includes('layer=dim') && await settings.locator('.hm-sw-header__layer-menu').count() === 0 && await settings.isVisible()) - await settings.locator('[data-popup-color] button.hm-sw-header__field').click() - const colorPanel = settings.locator('.hm-sw-header__menu-panel') - check('popup dropdown: SW color dropdown becomes a fixed overlay', await colorPanel.evaluate(e => getComputedStyle(e).position) === 'fixed') + check('popup dropdown: selection callback, list closes, popup stays', (await log()).includes('layer=dim') && await menu.count() === 0 && await settings.isVisible()) + await settings.locator('[data-property-id="color"] .hm-sw-property__swatch-area').click() + const colorPanel = page.locator('.hm-sw-property__drop[data-picker="color"]') + check('popup dropdown: popup color picker becomes a fixed overlay', await colorPanel.evaluate(e => getComputedStyle(e).position) === 'fixed') await colorPanel.getByLabel('초록').click() - check('popup dropdown: color chip callback', (await log()).includes('color=green')) - await page.keyboard.press('Escape') - check('popup dropdown: Escape closes the dropdown only', await settings.locator('.hm-sw-header__menu-panel').count() === 0 && await settings.isVisible()) + check('popup dropdown: color chip callback', (await log()).includes('color=0,255,0'), await log()) + if (await colorPanel.count()) { await colorPanel.getByLabel('초록').focus(); await page.keyboard.press('Escape') } + check('popup dropdown: Escape closes the dropdown only', await colorPanel.count() === 0 && await settings.isVisible()) const object = page.locator('[data-popup="object"]') check('object popup: read-only rows', await object.getByLabel('이름').evaluate(e => e.readOnly) && await object.getByLabel('길이').evaluate(e => e.readOnly)) @@ -62,8 +65,8 @@ export async function popupChecks({ page, goto, check, log, rect, out, report }) await goto('sw-popup--multiple-popups') const popup = id => page.locator(`[data-popup="${id}"]`) const b = popup('b') - await b.locator('[data-popup-layer] button.hm-sw-header__field').click() - const bMenu = b.locator('.hm-sw-header__layer-menu'), bHit = await bMenu.locator('.hm-sw-header__layer-footer').evaluate(row => { const r = row.getBoundingClientRect(); return row.contains(document.elementFromPoint(r.x + r.width / 2, r.y + r.height / 2)) }) + await b.locator('[data-property-id="layer"] .hm-sw-property__trigger').click() + const bMenu = page.locator('.hm-sw-property__drop[data-picker="layer"]'), bHit = await bMenu.locator('.hm-sw-header__layer-footer').evaluate(row => { const r = row.getBoundingClientRect(); return row.contains(document.elementFromPoint(r.x + r.width / 2, r.y + r.height / 2)) }) const bBox = await rect(b), menuB = await rect(bMenu) check('short popup: dropdown extends past the popup and stays fully visible (no clipping)', menuB.y + menuB.h > bBox.y + bBox.h && bHit, { bBox, menuB, bHit }) await page.locator('[data-stack]').screenshot({ path: path.join(out, 'popup-short-dropdown.png') }) diff --git a/packages/sw/tests/storybook-inventory.mjs b/packages/sw/tests/storybook-inventory.mjs index fc2b5c6..ce4a81a 100644 --- a/packages/sw/tests/storybook-inventory.mjs +++ b/packages/sw/tests/storybook-inventory.mjs @@ -26,6 +26,9 @@ export const movedHomeMenuIds = Object.fromEntries(["figma-home-on:figma", "capt export const retiredHomeMenuCompareIds = ["figma", "capture-active", "capture-outline", "capture-recent", "variants", "recent-files"].map(id => `sw-header--home-menu-${id}`) // 2026-10-20: Property Panel · 4개 비교 moved to SW/Popup in the sidebar; its ID is unchanged (meta id "sw-header"). export const movedToPopupIds = ["sw-header--property-panel-compare"] +// 2026-10-20 (Footer Story cleanup, user request): 기본 Footer and the States page were removed. Their screens are sections +// of sw-footer--full-footer (Figma 기본 구성, 상태); the aux Figma comparison moved to sw-footer--figma-variants. +export const retiredFooterIds = ["default", "states"].map(id => `sw-footer--${id}`) export const integratedChangedFiles = [ 'packages/sw/README.md', 'packages/sw/package.json', 'packages/sw/build.mjs', 'packages/sw/ai/AI_USAGE.md', 'packages/sw/ai/COMPONENT_CATALOG.md', 'packages/sw/ai/COMPOSITION_PATTERNS.md', 'packages/sw/ai/DESIGN_RULES.md', diff --git a/packages/sw/tests/storybook-simplification.browser.mjs b/packages/sw/tests/storybook-simplification.browser.mjs index faf57c1..e4bce2a 100644 --- a/packages/sw/tests/storybook-simplification.browser.mjs +++ b/packages/sw/tests/storybook-simplification.browser.mjs @@ -32,6 +32,8 @@ check(`direct URL render: ${sw.length} SW Stories, no error display / page error // 2. removed IDs are gone const removed = ['figma', 'capture-active', 'capture-outline', 'capture-recent', 'variants', 'recent-files'].map(id => `sw-header--home-menu-${id}`) check('removed Home Menu IDs absent from index', removed.every(id => !index.entries[id])) +// 2026-10-20 Footer cleanup: retired Footer IDs are gone, the two main Footer Stories stay. +check('removed Footer IDs absent, full-footer / figma-variants kept', ['sw-footer--default', 'sw-footer--states'].every(id => !index.entries[id]) && ['sw-footer--full-footer', 'sw-footer--figma-variants'].every(id => index.entries[id])) // 3. Property panel in Popup: four states await page.goto(`${base}/iframe.html?id=sw-header--property-panel-compare&viewMode=story`) await page.locator('[data-compare]').first().waitFor() diff --git a/packages/sw/tests/theme-inheritance.browser.mjs b/packages/sw/tests/theme-inheritance.browser.mjs index c0722f0..007855e 100644 --- a/packages/sw/tests/theme-inheritance.browser.mjs +++ b/packages/sw/tests/theme-inheritance.browser.mjs @@ -159,7 +159,7 @@ const snapshot = page => page.evaluate(() => [...document.querySelectorAll('.hm- })) const regression = [] for (const width of [1920, 1440, 1180, 900, 560]) for (const id of ids) { - if (width !== 1440 && !/responsive|viewer--viewer-header|footer--default|overview/.test(id)) continue + if (width !== 1440 && !/responsive|viewer--viewer-header|footer--full-footer|overview/.test(id)) continue const page = await newPage(width) await open(page, id) const a = await snapshot(page)