Commit Graph
167 Commits
Author SHA1 Message Date
shkim4 d159ad58af fix(sw): restore dropdown focus after position calculation 2026-11-10 15:33:30 +09:00
shkim4 b01ccaca01 test(sw): align regression tests with current components 2026-11-10 14:53:06 +09:00
shkim4 4c6fff5dea feat(sw): add independent popup and more design tokens 2026-11-10 13:33:27 +09:00
shkim4 1a88d575be merge: sync chart package with latest main 2026-11-10 11:51:13 +09:00
shkim4 d9434df79e fix(docs): align Storybook inventory and design documentation 2026-11-10 11:41:47 +09:00
shkim4 c42a7e1ecf merge: include Jangheon display name fix from main 2026-11-10 09:26:30 +09:00
shkim4 bcce6590ec merge: sync chart package with latest main 2026-11-10 09:22:51 +09:00
shkim4 a75fa7b560 fix(org-chart): update Jangheon company display name 2026-11-10 09:20:56 +09:00
shkim4 e42b67c53a feat(ui): standardize LNB sizing and active depth effect
- Adopt the official LNB desktop spec as package defaults: 240px column,
  14px menu text, 48px 1-depth rows and 42px 2/3-depth rows, with new
  item/subitem padding-block and profile min-height tokens.
- Match --hm-lnb-current-depth to the Storybook Manager selected item:
  sampled soft inset falloff (left/top/bottom) and a fade over the last
  quarter, keeping the concave corners and content join.
- Drop the size overrides from the LNB Story CSS and update the LNB, GNB
  and Dashboard docs, AI guides and the theme verification baseline.
2026-11-09 21:34:28 +09:00
shkim4 074ed8706b docs(theme): align palette references with the updated Green and Brown steps
Replace the old Green Default #123328 and Dark steps in the component docs,
brand color steps, runtime theme contract, token guide, loading screen doc and
the @hm-design/ui AI design rules. check:ai-docs passes. Remaining references
elsewhere are left for the final documentation consistency pass.
2026-11-09 19:23:54 +09:00
shkim4 73ef042c55 feat(theme): update Hanmac Green and Brown palette steps
Seven shared Hanmac color tokens change:
- Green Default #123328 -> #164434, Dark 1 #0a221d -> #11372d,
  Dark 2 #071e18 -> #0b2b23, Dark 3 #020a07 -> #030e0a
- Brown Default #3e3523 -> #4e422d, Dark 1 #352d1d -> #403726,
  Dark 3 #1d1810 -> #0d0b07

Updates primitives.css, the generated default values, themes/default.json,
the verification baseline and the hard-coded Default expectations in the
theme Stories and the quality-reference script. --hm-sem-on-accent is
intentionally unchanged. check:theme-defaults reports generated outputs match.
2026-11-09 19:23:43 +09:00
shkim4 db0bfe2d34 feat(chart): add solid (thick) pie and donut charts
Add HMSolidPieChart and HMSolidDonutChart: a tilted, SVG-drawn disc with an
outer wall and, for the donut, an inner wall seen through the hole. Same data,
slice angles, order, legend and tooltip as the 2D charts; the tooltip is the
same on the top face and the walls and follows the pointer. The existing 2D
charts and their props are unchanged.

- Side walls use darker HM tokens (--hm-chart-1-side .. --hm-chart-5-side) and
  a color-mix darkening for custom colors; shared chart tokens are untouched.
- Add a "입체형" example to the Pie Chart and Donut Chart stories
  (PieSolidExample, DonutSolidExample); ExampleCard description is now optional.
- Document usage and constraints in the chart package README.
2026-11-06 17:44:49 +09:00
shkim4 dc9258599c feat(chart): add @hm-design/chart package with Bar, Line, Donut, Pie, Radar, Area and Radial charts
- new workspace package packages/chart (shadcn/ui Chart + Recharts, HM Theme tokens), examples entry with sample data
- Storybook Chart group (src/chart), consumer example (examples/chart), build:chart / build:chart-example scripts
- README rewritten as the AI usage guide (install, CSS wiring, chart selection, data rules, verification)
- docs: package count/list, Submodule guide (chart workspace, React dedupe), shared AI_GUIDE row, MAINTAINING, story inventory
2026-11-06 15:52:47 +09:00
shkim4 51ff338923 fix(sw): match the lit middle step group top shade to the first group
The lit middle group overlay started at the group top, so its dark top band was about twice as thick as the first / last group face. It now starts 4.95px above the group like that face and runs to the bottom edge.
2026-11-05 18:23:34 +09:00
shkim4 c9fbb06a92 fix(sw): even out the multi step header tool group margins without window buttons
With appearance="multi" and all window controls hidden, the tool group is the last
child of the window area; give it the same 5px right margin as its left margin.
The existing 2px margin stays whenever a window button follows. default and other
headers are unchanged.
2026-11-05 17:59:21 +09:00
shkim4 42f0cb7d0b docs(sw): ask the user before substituting or omitting a missing icon
When no official public icon export covers a requested icon, the AI guides now
require asking the user first: approval to use the Storybook icon or an SVG asset
(3-A), or an asset / replacement choice when HMDesign has none (3-B). Creating,
copying, replacing or finally omitting the icon before the answer is not allowed.
Consumer-project use approval is kept separate from official package export
registration. AI_GUIDE shared copies synced.
2026-11-05 17:59:20 +09:00
shkim4 c7926aeffd fix(sw): square the multi step header process ends
- SWProcessHeader appearance="multi": the process base and both end
  covers meet the file name and the window area with right angles
  (border-radius 0, multi block only). default keeps the Strana top
  corners 6 / covers 5; step tabs, arrows, colors and sizes unchanged
- DESIGN_RULES §14 and Step Header spec §9.2 record the multi-only rule
- process-header-states.check.mjs: default 6 / 5 kept, multi 0 (17/17);
  build:sw and check:ai-docs pass, Storybook zoom shows square multi ends
2026-11-05 17:31:38 +09:00
shkim4 0086d66a94 fix(sw): refine process header empty title states and UI guidance
- AI_GUIDE stage 5 "Header 전용 스타일의 적용 범위": header-only styles stay
  in the header (SW SWHeader / SWProcessHeader / SWViewerHeader, Web GNB /
  LNBMobileHeader / DashboardHeader); no header CSS or tokens on body UI,
  no global overrides, layout-only joins, package-shared tokens unchanged,
  whole-screen use only on explicit request. Synced to the 4 package
  copies; referenced from stage 6, SW and Web AI_USAGE §3
- SWProcessHeader: with documentTitle "" the file name keeps #AEDBCC on
  hover and a default cursor (root data-document-untitled). The button,
  focus and onDocumentClick are kept; a real file name keeps the yellow
  hover and pointer. Visual vs. click difference recorded as a UX item
- Step enablement documented as implemented: only an explicit disabled
  (step, group, process, header) turns steps off; project / file state
  never does; selection is activeStepId + onStepSelect (also for host
  previous / next); no activeStepId and empty groups described
- Regression check tests/process-header-states.check.mjs (15/15);
  typecheck:sw, build:sw, check:ai-docs pass; public-api keeps its 3
  existing failures, none new
2026-11-05 16:45:54 +09:00
shkim4 6c61edadc1 fix(storybook): refine responsive page inner width
- Story page Inner side margin: 16px up to a 480px viewport, linear to 60px at 768px, 60px beyond (no width jump)
- Follow the 60px margins: Responsive 1920 row from a 2040px page (was 2000px); property compare 3 columns from 1125px, 2 columns from 787px (was 1080 / 720)
- SW browser tests: drop the removed --sb-page-max-width override, compare thresholds 787 / 1125
2026-11-05 15:59:41 +09:00
shkim4 22841affaf fix(sw): add default tooltip for pill tool buttons
- SWToolButton appearance="pill": a non-blank string children is also
  the native title; an explicit title wins and title="" turns it off;
  numbers, JSX and arrays are never converted. text / document keep
  passing only the given title. Accessible name, DOM and classes unchanged
- DESIGN_RULES §15: Header UX principles (ellipsis full text, icon-only
  tool buttons, print class shared by pill, font-dependent widths, scope)
- Reference them from DESIGN_RULES §3·§9, COMPONENT_CATALOG §4·§11,
  AI_USAGE §5.4, SW Header spec §17 and Step Header spec §12
2026-11-05 15:55:23 +09:00
shkim4 e70082550e fix(sw): widen the step header text logo to its content
- SWProcessHeader logoText: at least 58px and as wide as the text,
  instead of a fixed 58px place that cut longer words (home >= 106px)
- Align JSDoc (SWHeader, SWViewerHeader, SWProcessHeader) and docs with
  the content-width logo slot: DESIGN_RULES §1 common rule and §14,
  COMPONENT_CATALOG, VIEWER.md, SW Header / Step Header specs
- No prop or public API change
2026-11-05 15:49:08 +09:00
shkim4 9a861a8d55 docs(sw): define header tool icon reuse and window control rules
- AI_USAGE §5: single rule for design-based header tools (icon priority
  1-3, Storybook fixtures vs public API, pill icon states, window control
  omission via hiddenControls, existing-screen preservation, web/desktop)
- Reference §5 from AI_GUIDE (+4 synced copies), COMPOSITION_PATTERNS,
  COMPONENT_CATALOG, DESIGN_RULES §9
- Process header spec §13: Figma tool icon export on hold, proposed
  swProcessToolIcons and preconditions (no source/API change)
2026-11-05 15:35:17 +09:00
shkim4 5be47f9c6f fix(sw): refine middle step active background 2026-11-04 17:23:28 +09:00
shkim4 adbb034cb1 feat(sw): add step header with multi-step and split layout support 2026-11-03 14:58:53 +09:00
shkim4 eabbf274e3 feat(sw): footer command group and more panel use the button border gradient
Deploy Storybook / deploy (push) Successful in 1m13s
The command group and the more panel 1px border now use the same gradient as
the side and auxiliary buttons (--hm-sw-footer-group-border), replacing the
solid #886D35 token --hm-sw-footer-group-border-color.
2026-10-27 09:08:32 +09:00
shkim4 559641e022 test(sw): open the Firefox Overview check with &verification
Deploy Storybook / deploy (push) Successful in 1m12s
The Overview selection controls are shown only with &verification since
the 2026-10-21 simplification; overview.browser.mjs already used it, so
the Firefox suite stopped before its popup checks. Now 9/9 PASS.
2026-10-26 20:28:23 +09:00
shkim4 6b60096752 feat(center-graphic): tunnel and bridge section shapes in simple examples
Deploy Storybook / deploy (push) Successful in 1m11s
- CompactFacilityConnection gets an optional segmentShape ('tunnel' |
  'bridge'); omitted keeps the narrow centre strip
- Tunnel: 30% rounded section with a white outline and a dot on each end
- Bridge: 30% square section with white end lines and a square mark at
  each end
2026-10-26 20:15:10 +09:00
shkim4 c56cfc4931 feat(center-graphic): centre administrative labels on their column axis
- Section 4 demo: each row centred in its column, captions kept left
- Plain labels take the trailing letter-spacing out of their box so a
  centred label is centred on its letters
2026-10-26 20:15:09 +09:00
shkim4 cabd2f67de feat(sw): viewer header keeps every menu down to 520px
Deploy Storybook / deploy (push) Successful in 1m16s
- File name: clamp(80px, min(45cqw - 256px, 100cqw - 780px), 360px),
  56px below 560px; 1280px and wider unchanged
- Model / Layout tabs narrow (name, then count ellipsized) down to the new
  --hm-sw-viewer-tabs-min-width (48px) before anything moves into More;
  the measurement counts them at that minimum once every icon step applies
- Switch items get an optional shortLabel shown below 560px (어두운 배경 ->
  배경); counts hidden there
- More appears only below about 520px; viewer test and AI guides updated
2026-10-26 20:00:50 +09:00
shkim4 7976801034 feat(sw): 3-column property compare, clamp Overview panel, narrower viewer file name
- Property Panel compare page: from 1080px, none/all stacked in column 1,
  circle and expanded side by side (2x2 and 1 column below)
- Overview Stage: the property panel is clamped to the Stage height so the
  Stage gets no scrollbar; the panel body scrolls
- Viewer header file name: clamp(140px, calc(45cqw - 256px), 360px) so a
  950px header shows no More; 1280px and wider unchanged
2026-10-26 19:36:08 +09:00
shkim4 6780abb42d feat(sw): remove no-logo case from SW Header Logo story
Deploy Storybook / deploy (push) Successful in 2m17s
Viewer Logo story keeps its no-logo case. Viewer test expects 2 SW headers.
2026-10-26 16:02:40 +09:00
shkim4 fa7747cdbb docs(ai): add submodule consumer check order and modification limits
Deploy Storybook / deploy (push) Successful in 1m11s
2026-10-23 18:46:19 +09:00
shkim4 6d32317b65 docs(ai): enforce source UI preservation in HMDesign migrations
Deploy Storybook / deploy (push) Successful in 2m11s
2026-10-23 18:28:32 +09:00
shkim4 db03e155dd feat(sw): refine headers, status label, popups and AI guide rules
Deploy Storybook / deploy (push) Successful in 1m10s
- SW Header: the five field previews hide and return together in one
  measured step; from 760 to 1920px the groups from 레이어 to 치수스타일
  share the room left before 속성보기, above 1920px they keep the 1920
  widths (controls bars and < 760px unchanged)
- SW Viewer Header Model / Layout: long names ellipsize in equal buttons
  (minmax(0, 1fr), name counted at --hm-sw-viewer-tab-name-basis) so they
  never change the box or the measured steps; green outer outline and its
  tokens removed; 378px / 42px, text-shadow and state unchanged
- SWViewerStatus: the label keeps the width of its widest real state text
  (idle keeps its icon slot), so a state change never moves the header;
  with too little room it ellipsizes after the file name gives way
- Popups: body inset shadow removed, title SVG drop shadow removed, viewer
  panel title icons use --hm-sw-viewer-panel-icon-color (#c7bda9)
- Storybook: SW/Viewer › Model / Layout story removed
- AI guide (docs/ai + package copies): design-only changes for every
  component, content limits for Submodule consumers (Header excluded),
  Submodule usage rules; VIEWER / DESIGN_RULES synced
- viewer.browser.mjs: explicit 1920 / 1440 labels and approved 1280
  icon-only expectations
2026-10-23 18:18:17 +09:00
shkim4 325ec25e37 feat(sw): refine viewer model layout design and theme tokens
Deploy Storybook / deploy (push) Successful in 1m13s
- Model / Layout tabs follow Figma 7652:40344: gradient faces, gold / green
  gradient borders, blurred outline, inner shadow and top gloss, with every
  color in its own --hm-sw-viewer-tab(s)-* token (consumer-overridable)
- Box height matches the adjacent field group (42px, from the control height
  token); padding 1px 1px 1.5px, button side padding 5px, 1px right margin
  for a tabs-only first group; 378px max width, equal buttons and the
  measured More steps are unchanged; existing text-shadow kept
- Storybook: SW/Viewer > Model / Layout story (states and token override);
  Logo story listed before Responsive More
- AI docs (VIEWER.md, DESIGN_RULES.md) and viewer / text-weight test
  expectations updated
2026-10-23 16:27:41 +09:00
shkim4 7a5236f3ad fix(sw): expand viewer model layout tabs and strengthen responsive tests
Deploy Storybook / deploy (push) Successful in 1m13s
2026-10-23 13:50:33 +09:00
shkim4 e492a84f1d docs(sw): standardize viewer property slider usage 2026-10-23 13:12:36 +09:00
shkim4 81127a4e44 fix(sw): remove top margin from card sections
Deploy Storybook / deploy (push) Successful in 1m14s
2026-10-23 12:54:06 +09:00
shkim4 89011a2e42 docs: standardize Git submodule and workspace installation
Deploy Storybook / deploy (push) Successful in 1m12s
2026-10-23 11:06:19 +09:00
shkim4 3a4c63b5a4 fix(sw): align header trailing border gradients
Deploy Storybook / deploy (push) Successful in 2m18s
2026-10-23 11:05:42 +09:00
shkim4 860c301cd9 docs(sw): sync viewer header spacing guidelines
Deploy Storybook / deploy (push) Successful in 2m12s
2026-10-23 10:01:32 +09:00
shkim4 d2845885dc fix(sw): adjust viewer header document spacing
Deploy Storybook / deploy (push) Successful in 1m23s
2026-10-23 09:59:15 +09:00
shkim4 205864b8a0 fix(sw): align header logo styles and refine viewer UI
Deploy Storybook / deploy (push) Successful in 1m13s
2026-10-23 09:55:13 +09:00
shkim4 1d206c86cf fix(sw): align header gradient borders with Figma
Deploy Storybook / deploy (push) Successful in 1m14s
The file-name and object-editing surfaces of SWHeader and SWViewerHeader
now draw the Figma gradient strokes (26:10374, 26:10375, read with the
Plugin API) through a transparent 1px border, so size, radius and text
position are unchanged. New tokens --hm-sw-header-document-border-gradient
and --hm-sw-header-object-border-gradient; the solid border colors stay
for compatibility and for the home, window area, print button and menus.

Update the SW Header design spec, the SW AI design rules and the example
layout CSS to the gradient borders.
2026-10-23 00:28:12 +09:00
shkim4 4c29894e56 refactor(storybook): simplify component and preview examples
Drop page / section descriptions, state notes and repeated captions from
the representative Stories of 44 components, the Patterns, Center
Graphic and OrgChart pages. Value readouts, spec lists and captions hide
only on the representative page; hidden verification Stories keep them.
Tabs Default API and the Filter Bar draft / applied counts move to the
hidden DefaultApi and DraftApplied Stories; Center Overview is hidden
with its direct URL kept. Story IDs are unchanged.

Align the component, pattern and OrgChart docs with the pages, point the
quality reference check at the DraftApplied Story, and make the P8
styles check expect no section header on the preview-only Expanded page.
2026-10-23 00:28:05 +09:00
shkim4 2f1edd47eb fix(sw): viewer popup inputs match the property window, header labels hide by group
Deploy Storybook / deploy (push) Successful in 1m11s
Viewer popup value inputs (number, text) take the property window field: transparent
1px border, radius 2, 7px inset, 14px 500 #E60403; hover / editing border, #0F0D0A
editing face with the outlined value. A field unit (px/mm) sits inside the box and
turns white on the editing face. Layer search, sizes and layout unchanged.

Viewer header labels hide per iconOnlyBelow value instead of one by one: 레이어 /
설정 / 속성 together, 전체 보기 on its own; More collapse unchanged.

Verified in Storybook: Settings Popup editing / unit / gauge sync; Responsive More
at 1920 / 1440 / 1280 / ~1100 / 950, shrink-and-grow restore, no overflow.
Not re-run: viewer browser tests.
2026-10-22 21:08:38 +09:00
shkim4 83405c4ca2 fix(sw): viewer header hides button labels one at a time by measured room
Deploy Storybook / deploy (push) Successful in 1m11s
Labels with an icon now go icon-only one item at a time while the header lacks room (Open,
then the panel toggles, 전체 보기 last) instead of all together, and come back as the room
returns; collapse into More is unchanged.

Verified: Responsive More rows (1440 / 1280 keep 전체 보기 text, 950 / 860 icons, 760 / 520
More), shrink-and-grow restore, no overflow. Not re-run: viewer browser tests.
2026-10-22 20:58:22 +09:00
shkim4 6d46289fc5 feat(sw): measured header compaction, gauge recolor, popup menu and story cleanups
Deploy Storybook / deploy (push) Successful in 1m12s
- SWHeader (760-1799px): pictures hide one at a time by measured room (치수 아이콘, 선 그림,
  글꼴명, 색상 칩, 레이어 상태 아이콘), then the file name narrows 310 -> 96px, then values
  ellipsize; re-fit after web fonts load. 가중치/스케일 columns grow for longer values.
- Gauge style B / property window range: Figma controll_bar_new 633:77827 colors, ring and
  shadow on the previous size (6px track, 14px thumb).
- Property window: editable text values (e.g. 하이퍼링크) get the editing face like numbers.
- SW Header › Logo: same cases, order and layout as SW Viewer › Logo (ID kept).
- Storybook inner: 80vw from 1920px. Responsive More 1920px rows use the page's usable width
  (container sw-story-page) and span 1920px when there is room.
- SW/Popup sidebar: Property Panel only; Custom Content / Multiple Popups tagged verification.
- SW Viewer Settings Popup: 축척 지정 demo popup removed, frame 620px.
- Tests: inventory / simplification sidebar expectations, Popup-only unit select check.

Verified: check:ai-docs PASS, changed test syntax, headless Chrome checks of header compaction,
Responsive 1920 rows (1920 hidden / 2560, 3840 shown), Popup sidebar, Settings Popup.
Not verified: integrated-visual baselines (not updated), full regression, changed tests not run.
2026-10-22 20:50:39 +09:00
shkim4 c1549b2b4f feat(sw): viewer layer bulb, popup toggle switch, footer layout and 1440px story inner
Deploy Storybook / deploy (push) Successful in 1m11s
- SW Viewer layer popup: search + 전체 레이어 fixed, only the list scrolls; the all-layers
  control is the SWLayerVisibilityIcon bulb (role="switch"), one light #d2c8b4 line under it.
- Example H and the layer popup AI docs follow the bulb layout (VIEWER, DESIGN_RULES,
  COMPONENT_CATALOG, COMPOSITION_PATTERNS, AI_GUIDE sync).
- Popup toggle switch (Figma toggle_btn_new 633:75188 / 633:75902): one sw.css face for the
  HM UI Switch in SWPopup and SWViewerSwitch in SWViewerPanel; SW Header switches unchanged.
- SW Footer stories: no inner scrollers, fluid screens; workspace fits the viewport.
- SW Footer category tabs keep their positions when selected (divider slots kept, pocket
  edges drawn over the neighbours' padding).
- Storybook .sb-page-inner: 1440px max from 1920px (was 80vw).
- SW Header equal-split change was cancelled; header CSS unchanged.

Verified: check:ai-docs PASS, viewer test 49 PASS (1 FAIL hover face + timeout pre-existing),
footer-design-review 21 PASS, browser checks of switch/footer/inner.
Not verified: footer-popup-viewer-refinement (needs full Storybook build), text-weight/hover
tests, Switch 37x16 AI docs (deferred).
2026-10-22 20:20:00 +09:00
shkim4 258e0a4b68 docs(storybook): tidy SW Storybook gauges, responsive rows and page titles
Deploy Storybook / deploy (push) Successful in 1m11s
- SWPopup Custom Content and the SW Viewer options panel use SWSlider style B
  (appearance="property") only; the A/B comparison, the style select and the
  green panel gauge are gone (SWViewerSlider itself is unchanged).
- SW Header / Viewer / Footer Responsive More: the 1920px row shows only when the
  content Inner is 1920px or wider (container query); Footer rows fit the page
  width without scrollers so ▲ More handles narrow widths.
- Logo pages fit without scrollers; SW Header Logo Slot is "Logo" in the sidebar
  with the title "SW Header — 로고" (ID sw-header--logo-slot kept).
- Property Panel (was "Property Panel · 4개 비교"): no Inner scroller, the page
  scrolls, 2 × 2 grid with one column below 720px.
- SW Footer drops the "실제 Footer 조합 (동작)" heading; SW Viewer Header page is
  titled "SW Viewer Header" with 기본형 and 최소화 · 닫기 버튼 only.
- Browser tests, inventory and README follow these changes; visual baselines are
  not updated.
2026-10-22 19:42:20 +09:00