fix(docs): align Storybook inventory and design documentation
This commit is contained in:
1 parent
4c7d3460f1
commit
d9434df79e
15 files changed
+310
-193
No files matched your search
@@ -87,6 +87,7 @@ const koreanLabels = {
|
||||
'patterns-data-filter-bar': '필터 바',
|
||||
'patterns-layout': '화면 구성',
|
||||
'patterns-layout-gnb': '전체 메뉴 (GNB)',
|
||||
'patterns-layout-dashboard': '대시보드',
|
||||
'patterns-layout-lnb': '좌측 메뉴 (LNB)',
|
||||
'patterns-layout-dashboard-layout': '대시보드',
|
||||
'patterns-layout-page-header': '페이지 헤더',
|
||||
|
||||
@@ -44,7 +44,7 @@ const preview: Preview = {
|
||||
["Alert", "Sonner"],
|
||||
],
|
||||
"Patterns",
|
||||
["Data", ["Data Table", "Filter Bar"], "Layout", ["GNB", "LNB", "Dashboard Layout", "Loading Screen"]],
|
||||
["Data", ["Data Table", "Filter Bar"], "Layout", ["GNB", "LNB", "Dashboard", "Loading Screen"]],
|
||||
"SW",
|
||||
["Header", ["SW Header", "*"], "Viewer", "Step Header", "Popup", "하단 명령어바", ["SW 하단 명령어바", "*"], "Theme"],
|
||||
"조직도",
|
||||
|
||||
@@ -6,56 +6,56 @@ This is a classification record. No Story IDs, exports or titles are renamed. HI
|
||||
|
||||
## Summary
|
||||
|
||||
- PRIMARY: 82
|
||||
- PRIMARY: 75
|
||||
- VERIFICATION: 256
|
||||
- UTILITY: 38
|
||||
- UTILITY: 49
|
||||
- LEGACY / DUPLICATE: 0
|
||||
- KEEP: 82
|
||||
- HIDE: 294
|
||||
- KEEP: 75
|
||||
- HIDE: 305
|
||||
- MERGE_CANDIDATE: 33
|
||||
- DELETE_CANDIDATE: 0
|
||||
- Story files: 82
|
||||
- Stories: 376
|
||||
- Hierarchy: Foundation → Components → Patterns → Center Graphic → Theme
|
||||
- Stories: 380
|
||||
- Hierarchy: Foundation → Components → Patterns → SW → 조직도 → 노선도 → Verification → Theme
|
||||
|
||||
## Full inventory
|
||||
|
||||
### Center Graphic/Facility
|
||||
### 노선도/시설물
|
||||
|
||||
Source: `src/center/center-facility.stories.tsx`; meta.tags: []
|
||||
|
||||
- Tunnel — Tunnel; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Bridge — Bridge; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Intersection — Intersection; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Junction — Junction; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Interchange — Interchange; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Roadside — Roadside; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Linked — Linked; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Tunnel — 터널; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Bridge — 교량; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Intersection — 교차로; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Junction — 분기점; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Interchange — 나들목; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Roadside — 휴게소 · 졸음쉼터; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Linked — 연계 시설물; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- TunnelPlayground — 직접 테스트 (터널); tags: ["verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Center Graphic/Information
|
||||
### 노선도/정보
|
||||
|
||||
Source: `src/center/center-information.stories.tsx`; meta.tags: []
|
||||
|
||||
- Information — Information; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Information — 정보; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### Center Graphic/Overview
|
||||
### 노선도/Overview
|
||||
|
||||
Source: `src/center/center-overview.stories.tsx`; meta.tags: []
|
||||
|
||||
- Overview — Overview; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Center Graphic/Spatial
|
||||
### 노선도/노선·공간
|
||||
|
||||
Source: `src/center/center-spatial.stories.tsx`; meta.tags: []
|
||||
|
||||
- Spatial — Spatial; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Spatial — 노선·공간; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### Center Graphic/Title
|
||||
### 노선도/사업명
|
||||
|
||||
Source: `src/center/center-title.stories.tsx`; meta.tags: []
|
||||
|
||||
- Compositions — Title; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Compositions — 사업명; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Playground — Playground; tags: ["verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Components/Disclosure/Accordion
|
||||
@@ -275,9 +275,9 @@ Source: `src/components/input.stories.tsx`; meta.tags: []
|
||||
|
||||
### Components/Form/Label
|
||||
|
||||
Source: `src/components/label.stories.tsx`; meta.tags: []
|
||||
Source: `src/components/label.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
- All — Label; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- All — Label; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Components/Navigation/Menubar
|
||||
|
||||
@@ -477,14 +477,14 @@ Source: `src/components/textarea.stories.tsx`; meta.tags: []
|
||||
|
||||
### Components/Form/Toggle Group
|
||||
|
||||
Source: `src/components/toggle-group.stories.tsx`; meta.tags: []
|
||||
Source: `src/components/toggle-group.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
- All — Toggle Group; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- SingleSelection — Single; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- MultipleSelection — Multiple; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- VerticalGroup — Vertical; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ManyOptions — Many Options; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ContentNodes — Content Nodes; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- All — Toggle Group; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- SingleSelection — Single; tags: ["internal","verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- MultipleSelection — Multiple; tags: ["internal","verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- VerticalGroup — Vertical; tags: ["internal","verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ManyOptions — Many Options; tags: ["internal","verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ContentNodes — Content Nodes; tags: ["internal","verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Components/Form/Toggle
|
||||
|
||||
@@ -503,31 +503,31 @@ Source: `src/components/tooltip.stories.tsx`; meta.tags: []
|
||||
- All — Tooltip; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Open — Open; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Foundation/Hanmac Color
|
||||
### Foundation/한맥 컬러
|
||||
|
||||
Source: `src/foundation/color.stories.tsx`; meta.tags: []
|
||||
|
||||
- All — Hanmac Color; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- All — 한맥 컬러; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### Foundation/Company Colors
|
||||
### Foundation/가족사 컬러
|
||||
|
||||
Source: `src/foundation/company-colors.stories.tsx`; meta.tags: []
|
||||
|
||||
- All — Company Colors; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- All — 가족사 컬러; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### Foundation/Layout
|
||||
|
||||
Source: `src/foundation/layout.stories.tsx`; meta.tags: []
|
||||
Source: `src/foundation/layout.stories.tsx`; meta.tags: ["verification"]
|
||||
|
||||
- All — Layout; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- All — Layout; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Foundation/Typography
|
||||
### Foundation/폰트
|
||||
|
||||
Source: `src/foundation/typography.stories.tsx`; meta.tags: []
|
||||
|
||||
- All — Typography; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- All — 폰트; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### OrgChart/Components/Cards
|
||||
### 조직도/Components/Cards
|
||||
|
||||
Source: `src/org-chart/org-chart-cards.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
@@ -541,25 +541,25 @@ Source: `src/org-chart/org-chart-cards.stories.tsx`; meta.tags: ["internal"]
|
||||
- OrganizationLeader — 조직장; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Employee — 일반 직원; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### OrgChart/Department Colors
|
||||
### 조직도/부서별 색상
|
||||
|
||||
Source: `src/org-chart/org-chart-department-colors.stories.tsx`; meta.tags: []
|
||||
|
||||
- DepartmentColors — Department Colors; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- DepartmentColors — 부서별 색상; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### OrgChart/Expanded OrgChart
|
||||
### 조직도/확장 조직도
|
||||
|
||||
Source: `src/org-chart/org-chart-expanded.stories.tsx`; meta.tags: []
|
||||
|
||||
- ExpandedOrgChart — Expanded OrgChart; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- ExpandedOrgChart — 확장 조직도; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### OrgChart/Full Composition
|
||||
### 조직도/전체 구성
|
||||
|
||||
Source: `src/org-chart/org-chart-full-composition.stories.tsx`; meta.tags: []
|
||||
|
||||
- FullComposition — Full Composition; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- FullComposition — 전체 구성; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### OrgChart/Verification/Overview
|
||||
### 조직도/Verification/Overview
|
||||
|
||||
Source: `src/org-chart/org-chart-overview-internal.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
@@ -567,13 +567,13 @@ Source: `src/org-chart/org-chart-overview-internal.stories.tsx`; meta.tags: ["in
|
||||
- PositionSummary — Position Summary; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- AffiliationSummary — Affiliation Summary; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### OrgChart/Overview
|
||||
### 조직도/개요
|
||||
|
||||
Source: `src/org-chart/org-chart-p1.stories.tsx`; meta.tags: []
|
||||
|
||||
- LogoPersonnelSummary — Overview; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- LogoPersonnelSummary — 개요; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### OrgChart/Components/Summaries
|
||||
### 조직도/Components/Summaries
|
||||
|
||||
Source: `src/org-chart/org-chart-summary.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
@@ -581,16 +581,16 @@ Source: `src/org-chart/org-chart-summary.stories.tsx`; meta.tags: ["internal"]
|
||||
- AffiliationSummary — Affiliation Summary; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- StatusSummary — Status Summary; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### OrgChart/Content
|
||||
### 조직도/콘텐츠
|
||||
|
||||
Source: `src/org-chart/org-chart.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
- BasicOrganization — Basic Organization; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- OrganizationHierarchy — Organization Hierarchy; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- EmployeeCards — Employee Cards; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- OrganizationSummary — Organization Summary; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- BasicOrganization — 기본 조직도; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- OrganizationHierarchy — 조직 계층; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- EmployeeCards — 직원 카드; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- OrganizationSummary — 조직 요약; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- JSONDataUpdate — JSON Data Update; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- LoadingEmptyError — Loading / Empty / Error; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- LoadingEmptyError — 로딩 / 비어 있음 / 오류; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ResponsiveContainer — Responsive Container; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- MultipleInstances — Multiple Instances; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
@@ -612,6 +612,8 @@ Source: `src/patterns/dashboard-layout.stories.tsx`; meta.tags: []
|
||||
Source: `src/patterns/data-table.stories.tsx`; meta.tags: []
|
||||
|
||||
- All — Data Table; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Overview — Overview; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- BasicSearch — Basic Search; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- WithFilterBarStory — With Filter Bar; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Loading — Loading; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Empty — Empty; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
@@ -631,6 +633,7 @@ Source: `src/patterns/gnb.stories.tsx`; meta.tags: []
|
||||
- Default — Default; tags: ["verification"]; VERIFICATION; HIDE; MERGE_CANDIDATE. Representative board may cover the same specimen; keep direct QA until behavioral equivalence is reviewed.
|
||||
- Sticky — Sticky; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Sidebar — GNB Sidebar; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- BrownSidebar — Brown Sidebar; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- NavigationMenuOpen — Navigation Menu Open; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ShortDepthOpen — Short Depth Open; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- RightEdgeLongDepth — Right Edge Long Depth; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
@@ -673,26 +676,27 @@ Source: `src/patterns/lnb.stories.tsx`; meta.tags: []
|
||||
|
||||
### Patterns/Layout/Loading Screen
|
||||
|
||||
Source: `src/patterns/loading-screen.stories.tsx`; meta.tags: []
|
||||
Source: `src/patterns/loading-screen.stories.tsx`; meta.tags: ["internal"]
|
||||
|
||||
- All — Loading Screen; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Inline — Inline; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- All — Loading Screen; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Inline — Inline; tags: ["internal","verification"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Patterns/Layout/Page Header
|
||||
|
||||
Source: `src/patterns/page-header.stories.tsx`; meta.tags: []
|
||||
Source: `src/patterns/page-header.stories.tsx`; meta.tags: ["verification"]
|
||||
|
||||
- All — Page Header; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- All — Page Header; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- FullPage — Full Page; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### SW/Footer
|
||||
### SW/하단 명령어바
|
||||
|
||||
Source: `src/sw/sw-footer.stories.tsx`; meta.tags: []
|
||||
|
||||
- FullFooter — SW Footer; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- FullFooter — SW 하단 명령어바; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- ToolGroups — 도구 그룹별 표시; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- FigmaVariants — Figma 디자인별 Variant (35 노드); tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- CustomContent — 도구 및 메뉴 변경 예제; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Responsive — Responsive More; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Responsive — 화면 너비; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Parts — 개별 부품 (조합용); tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### SW/Header
|
||||
@@ -705,7 +709,7 @@ Source: `src/sw/sw-header-dropdown.stories.tsx`; meta.tags: []
|
||||
|
||||
Source: `src/sw/sw-header-home-menu.stories.tsx`; meta.tags: []
|
||||
|
||||
- HomeMenu — Home Menu; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- HomeMenu — Home Menu; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- HomeMenuCaptureDefault — Home Menu · 비교 캔버스 · Default; tags: ["!autodocs","verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- HomeMenuHeaderComposition — Home Menu · Header 조합 · 로고 클릭; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- HomeMenuDynamicData — Home Menu · Props · 데이터 변경; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
@@ -730,9 +734,9 @@ Source: `src/sw/sw-header.stories.tsx`; meta.tags: []
|
||||
- Overview — SW Header; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- InteractiveStates — Interactive States; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- WindowMoveMotion — Window Move Motion; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- LogoSlot — Logo; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- LogoSlot — 로고; tags: ["internal"]; UTILITY; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- DocumentDropdown — Document Dropdown; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ResponsiveMore — Responsive More; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- ResponsiveMore — 화면 너비; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- KGuide — K Guide; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### SW/Popup
|
||||
@@ -747,7 +751,7 @@ Source: `src/sw/sw-popup.stories.tsx`; meta.tags: []
|
||||
Source: `src/sw/sw-process-header.stories.tsx`; meta.tags: []
|
||||
|
||||
- ProcessHeader — Step Header; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Responsive — Responsive More; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Responsive — 화면 너비; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- SplitOpen — 화면 분할; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- MultiStep — Multi Step; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- FixedWidths — Fixed Widths; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
@@ -761,7 +765,7 @@ Source: `src/sw/sw-process-header.stories.tsx`; meta.tags: []
|
||||
|
||||
Source: `src/sw/sw-property-panel.stories.tsx`; meta.tags: []
|
||||
|
||||
- PropertyPanelCompare — Property Panel; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- PropertyPanelCompare — 속성창; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
|
||||
### SW/Theme
|
||||
|
||||
@@ -778,10 +782,10 @@ Source: `src/sw/sw-viewer.stories.tsx`; meta.tags: []
|
||||
- States — Item States; tags: ["verification"]; VERIFICATION; HIDE; MERGE_CANDIDATE. Representative board may cover the same specimen; keep direct QA until behavioral equivalence is reviewed.
|
||||
- Dropdowns — Header + Dropdown; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- SettingsPanel — Settings Popup; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- ContentVariants — Settings Popup; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- ContentVariants — 설정창; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- VariableSize — Variable Size Popups; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
- Logo — Logo; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Responsive — Responsive More; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Logo — 로고; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- Responsive — 화면 너비; tags: []; PRIMARY; KEEP. Representative story or distinct reference page.
|
||||
- CompareWithSWHeader — SWHeader vs Viewer Header; tags: ["verification"]; VERIFICATION; HIDE. Keep direct URL and tag-filter access; excluded from default sidebar.
|
||||
|
||||
### Theme/Designer Playground
|
||||
|
||||
@@ -24,7 +24,22 @@ const inventory = files.map(file => {
|
||||
return { file: path.relative(root, file).replaceAll('\\', '/'), title, metaTags, stories }
|
||||
})
|
||||
const all = inventory.flatMap(f => f.stories)
|
||||
const summary = { storyFiles: files.length, stories: all.length, categories: Object.fromEntries(['PRIMARY', 'VERIFICATION', 'UTILITY', 'LEGACY / DUPLICATE'].map(c => [c, all.filter(s => s.category === c).length])), decisions: Object.fromEntries(['KEEP', 'HIDE', 'MERGE_CANDIDATE', 'DELETE_CANDIDATE'].map(c => [c, all.filter(s => s.decision === c || s.candidate === c).length])), hierarchy: ['Foundation', 'Components', 'Patterns', 'Center Graphic', 'Theme'] }
|
||||
// Top-level groups that actually exist, in the storySort order of .storybook/preview.tsx ("*" = unlisted groups).
|
||||
function topLevelHierarchy() {
|
||||
const groups = [...new Set(inventory.map(f => f.title.split('/')[0]))]
|
||||
const source = fs.readFileSync(path.join(root, '.storybook/preview.tsx'), 'utf8').replace(/\/\/.*$/gm, '')
|
||||
const start = source.indexOf('[', source.indexOf('order:'))
|
||||
const order = []
|
||||
for (let i = start, depth = 0; i < source.length; i++) {
|
||||
const ch = source[i]
|
||||
if (ch === '[') depth++
|
||||
else if (ch === ']' && --depth === 0) break
|
||||
else if (ch === '"') { const end = source.indexOf('"', i + 1); if (depth === 1) order.push(source.slice(i + 1, end)); i = end }
|
||||
}
|
||||
const unlisted = groups.filter(g => !order.includes(g)).sort()
|
||||
return order.flatMap(g => g === '*' ? unlisted : groups.includes(g) ? [g] : []).concat(order.includes('*') ? [] : unlisted)
|
||||
}
|
||||
const summary = { storyFiles: files.length, stories: all.length, categories: Object.fromEntries(['PRIMARY', 'VERIFICATION', 'UTILITY', 'LEGACY / DUPLICATE'].map(c => [c, all.filter(s => s.category === c).length])), decisions: Object.fromEntries(['KEEP', 'HIDE', 'MERGE_CANDIDATE', 'DELETE_CANDIDATE'].map(c => [c, all.filter(s => s.decision === c || s.candidate === c).length])), hierarchy: topLevelHierarchy() }
|
||||
const output = path.join(root, '.storybook', 'qa')
|
||||
fs.mkdirSync(output, { recursive: true })
|
||||
fs.writeFileSync(path.join(output, 'story-inventory.json'), JSON.stringify({ summary, inventory }, null, 2) + '\n')
|
||||
|
||||
+204
-107
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"summary": {
|
||||
"storyFiles": 82,
|
||||
"stories": 376,
|
||||
"stories": 380,
|
||||
"categories": {
|
||||
"PRIMARY": 82,
|
||||
"PRIMARY": 75,
|
||||
"VERIFICATION": 256,
|
||||
"UTILITY": 38,
|
||||
"UTILITY": 49,
|
||||
"LEGACY / DUPLICATE": 0
|
||||
},
|
||||
"decisions": {
|
||||
"KEEP": 82,
|
||||
"HIDE": 294,
|
||||
"KEEP": 75,
|
||||
"HIDE": 305,
|
||||
"MERGE_CANDIDATE": 33,
|
||||
"DELETE_CANDIDATE": 0
|
||||
},
|
||||
@@ -18,20 +18,23 @@
|
||||
"Foundation",
|
||||
"Components",
|
||||
"Patterns",
|
||||
"Center Graphic",
|
||||
"SW",
|
||||
"조직도",
|
||||
"노선도",
|
||||
"Verification",
|
||||
"Theme"
|
||||
]
|
||||
},
|
||||
"inventory": [
|
||||
{
|
||||
"file": "src/center/center-facility.stories.tsx",
|
||||
"title": "Center Graphic/Facility",
|
||||
"title": "노선도/시설물",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "center-graphic-facility--tunnel",
|
||||
"exportName": "Tunnel",
|
||||
"name": "Tunnel",
|
||||
"name": "터널",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -42,7 +45,7 @@
|
||||
{
|
||||
"id": "center-graphic-facility--bridge",
|
||||
"exportName": "Bridge",
|
||||
"name": "Bridge",
|
||||
"name": "교량",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -53,7 +56,7 @@
|
||||
{
|
||||
"id": "center-graphic-facility--intersection",
|
||||
"exportName": "Intersection",
|
||||
"name": "Intersection",
|
||||
"name": "교차로",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -64,7 +67,7 @@
|
||||
{
|
||||
"id": "center-graphic-facility--junction",
|
||||
"exportName": "Junction",
|
||||
"name": "Junction",
|
||||
"name": "분기점",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -75,7 +78,7 @@
|
||||
{
|
||||
"id": "center-graphic-facility--interchange",
|
||||
"exportName": "Interchange",
|
||||
"name": "Interchange",
|
||||
"name": "나들목",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -86,7 +89,7 @@
|
||||
{
|
||||
"id": "center-graphic-facility--roadside",
|
||||
"exportName": "Roadside",
|
||||
"name": "Roadside",
|
||||
"name": "휴게소 · 졸음쉼터",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -97,7 +100,7 @@
|
||||
{
|
||||
"id": "center-graphic-facility--linked",
|
||||
"exportName": "Linked",
|
||||
"name": "Linked",
|
||||
"name": "연계 시설물",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -124,13 +127,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/center/center-information.stories.tsx",
|
||||
"title": "Center Graphic/Information",
|
||||
"title": "노선도/정보",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "center-graphic-information--information",
|
||||
"exportName": "Information",
|
||||
"name": "Information",
|
||||
"name": "정보",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -142,7 +145,7 @@
|
||||
},
|
||||
{
|
||||
"file": "src/center/center-overview.stories.tsx",
|
||||
"title": "Center Graphic/Overview",
|
||||
"title": "노선도/Overview",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
@@ -164,13 +167,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/center/center-spatial.stories.tsx",
|
||||
"title": "Center Graphic/Spatial",
|
||||
"title": "노선도/노선·공간",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "center-graphic-spatial--spatial",
|
||||
"exportName": "Spatial",
|
||||
"name": "Spatial",
|
||||
"name": "노선·공간",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -182,13 +185,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/center/center-title.stories.tsx",
|
||||
"title": "Center Graphic/Title",
|
||||
"title": "노선도/사업명",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "center-graphic-title--compositions",
|
||||
"exportName": "Compositions",
|
||||
"name": "Title",
|
||||
"name": "사업명",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -1871,18 +1874,22 @@
|
||||
{
|
||||
"file": "src/components/label.stories.tsx",
|
||||
"title": "Components/Form/Label",
|
||||
"metaTags": [],
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
"stories": [
|
||||
{
|
||||
"id": "components-form-label--all",
|
||||
"exportName": "All",
|
||||
"name": "Label",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
],
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -3494,18 +3501,22 @@
|
||||
{
|
||||
"file": "src/components/toggle-group.stories.tsx",
|
||||
"title": "Components/Form/Toggle Group",
|
||||
"metaTags": [],
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
"stories": [
|
||||
{
|
||||
"id": "components-form-toggle-group--all",
|
||||
"exportName": "All",
|
||||
"name": "Toggle Group",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
],
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "components-form-toggle-group--single-selection",
|
||||
@@ -3515,9 +3526,10 @@
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal",
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
@@ -3530,9 +3542,10 @@
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal",
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
@@ -3545,9 +3558,10 @@
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal",
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
@@ -3560,9 +3574,10 @@
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal",
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
@@ -3575,9 +3590,10 @@
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal",
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
@@ -3697,13 +3713,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/foundation/color.stories.tsx",
|
||||
"title": "Foundation/Hanmac Color",
|
||||
"title": "Foundation/한맥 컬러",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "foundation-color--all",
|
||||
"exportName": "All",
|
||||
"name": "Hanmac Color",
|
||||
"name": "한맥 컬러",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -3715,13 +3731,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/foundation/company-colors.stories.tsx",
|
||||
"title": "Foundation/Company Colors",
|
||||
"title": "Foundation/가족사 컬러",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "foundation-company-colors--all",
|
||||
"exportName": "All",
|
||||
"name": "Company Colors",
|
||||
"name": "가족사 컬러",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -3734,30 +3750,34 @@
|
||||
{
|
||||
"file": "src/foundation/layout.stories.tsx",
|
||||
"title": "Foundation/Layout",
|
||||
"metaTags": [],
|
||||
"metaTags": [
|
||||
"verification"
|
||||
],
|
||||
"stories": [
|
||||
{
|
||||
"id": "foundation-layout--all",
|
||||
"exportName": "All",
|
||||
"name": "Layout",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"effectiveTags": [
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "src/foundation/typography.stories.tsx",
|
||||
"title": "Foundation/Typography",
|
||||
"title": "Foundation/폰트",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "foundation-typography--all",
|
||||
"exportName": "All",
|
||||
"name": "Typography",
|
||||
"name": "폰트",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -3769,7 +3789,7 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-cards.stories.tsx",
|
||||
"title": "OrgChart/Components/Cards",
|
||||
"title": "조직도/Components/Cards",
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
@@ -3895,13 +3915,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-department-colors.stories.tsx",
|
||||
"title": "OrgChart/Department Colors",
|
||||
"title": "조직도/부서별 색상",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "orgchart--department-colors",
|
||||
"exportName": "DepartmentColors",
|
||||
"name": "Department Colors",
|
||||
"name": "부서별 색상",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -3913,13 +3933,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-expanded.stories.tsx",
|
||||
"title": "OrgChart/Expanded OrgChart",
|
||||
"title": "조직도/확장 조직도",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "orgchart--expanded-org-chart",
|
||||
"exportName": "ExpandedOrgChart",
|
||||
"name": "Expanded OrgChart",
|
||||
"name": "확장 조직도",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -3931,13 +3951,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-full-composition.stories.tsx",
|
||||
"title": "OrgChart/Full Composition",
|
||||
"title": "조직도/전체 구성",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "orgchart--full-composition",
|
||||
"exportName": "FullComposition",
|
||||
"name": "Full Composition",
|
||||
"name": "전체 구성",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -3949,7 +3969,7 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-overview-internal.stories.tsx",
|
||||
"title": "OrgChart/Verification/Overview",
|
||||
"title": "조직도/Verification/Overview",
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
@@ -3997,13 +4017,13 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-p1.stories.tsx",
|
||||
"title": "OrgChart/Overview",
|
||||
"title": "조직도/개요",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "orgchart--logo-personnel-summary",
|
||||
"exportName": "LogoPersonnelSummary",
|
||||
"name": "Overview",
|
||||
"name": "개요",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -4015,7 +4035,7 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart-summary.stories.tsx",
|
||||
"title": "OrgChart/Components/Summaries",
|
||||
"title": "조직도/Components/Summaries",
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
@@ -4063,7 +4083,7 @@
|
||||
},
|
||||
{
|
||||
"file": "src/org-chart/org-chart.stories.tsx",
|
||||
"title": "OrgChart/Content",
|
||||
"title": "조직도/콘텐츠",
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
@@ -4071,7 +4091,7 @@
|
||||
{
|
||||
"id": "orgchart-content--basic-organization",
|
||||
"exportName": "BasicOrganization",
|
||||
"name": "Basic Organization",
|
||||
"name": "기본 조직도",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
@@ -4084,7 +4104,7 @@
|
||||
{
|
||||
"id": "orgchart-content--organization-hierarchy",
|
||||
"exportName": "OrganizationHierarchy",
|
||||
"name": "Organization Hierarchy",
|
||||
"name": "조직 계층",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
@@ -4097,7 +4117,7 @@
|
||||
{
|
||||
"id": "orgchart-content--employee-cards",
|
||||
"exportName": "EmployeeCards",
|
||||
"name": "Employee Cards",
|
||||
"name": "직원 카드",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
@@ -4110,7 +4130,7 @@
|
||||
{
|
||||
"id": "orgchart-content--organization-summary",
|
||||
"exportName": "OrganizationSummary",
|
||||
"name": "Organization Summary",
|
||||
"name": "조직 요약",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
@@ -4136,7 +4156,7 @@
|
||||
{
|
||||
"id": "orgchart-content--loading-empty-error",
|
||||
"exportName": "LoadingEmptyError",
|
||||
"name": "Loading / Empty / Error",
|
||||
"name": "로딩 / 비어 있음 / 오류",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
@@ -4313,6 +4333,36 @@
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
},
|
||||
{
|
||||
"id": "patterns-data-data-table--overview",
|
||||
"exportName": "Overview",
|
||||
"name": "Overview",
|
||||
"storyTags": [
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "patterns-data-data-table--basic-search",
|
||||
"exportName": "BasicSearch",
|
||||
"name": "Basic Search",
|
||||
"storyTags": [
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "patterns-data-data-table--with-filter-bar-story",
|
||||
"exportName": "WithFilterBarStory",
|
||||
@@ -4454,6 +4504,21 @@
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "patterns-layout-gnb--brown-sidebar",
|
||||
"exportName": "BrownSidebar",
|
||||
"name": "Brown Sidebar",
|
||||
"storyTags": [
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "patterns-layout-gnb--navigation-menu-open",
|
||||
"exportName": "NavigationMenuOpen",
|
||||
@@ -4972,18 +5037,22 @@
|
||||
{
|
||||
"file": "src/patterns/loading-screen.stories.tsx",
|
||||
"title": "Patterns/Layout/Loading Screen",
|
||||
"metaTags": [],
|
||||
"metaTags": [
|
||||
"internal"
|
||||
],
|
||||
"stories": [
|
||||
{
|
||||
"id": "patterns-layout-loading-screen--all",
|
||||
"exportName": "All",
|
||||
"name": "Loading Screen",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
],
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "patterns-layout-loading-screen--inline",
|
||||
@@ -4992,6 +5061,44 @@
|
||||
"storyTags": [
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal",
|
||||
"verification"
|
||||
],
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "src/patterns/page-header.stories.tsx",
|
||||
"title": "Patterns/Layout/Page Header",
|
||||
"metaTags": [
|
||||
"verification"
|
||||
],
|
||||
"stories": [
|
||||
{
|
||||
"id": "patterns-layout-page-header--all",
|
||||
"exportName": "All",
|
||||
"name": "Page Header",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [
|
||||
"verification"
|
||||
],
|
||||
"category": "VERIFICATION",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "patterns-layout-page-header--full-page",
|
||||
"exportName": "FullPage",
|
||||
"name": "Full Page",
|
||||
"storyTags": [
|
||||
"verification"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"verification"
|
||||
],
|
||||
@@ -5002,33 +5109,15 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "src/patterns/page-header.stories.tsx",
|
||||
"title": "Patterns/Layout/Page Header",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "patterns-layout-page-header--all",
|
||||
"exportName": "All",
|
||||
"name": "Page Header",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "src/sw/sw-footer.stories.tsx",
|
||||
"title": "SW/Footer",
|
||||
"title": "SW/하단 명령어바",
|
||||
"metaTags": [],
|
||||
"stories": [
|
||||
{
|
||||
"id": "sw-footer--full-footer",
|
||||
"exportName": "FullFooter",
|
||||
"name": "SW Footer",
|
||||
"name": "SW 하단 명령어바",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5084,7 +5173,7 @@
|
||||
{
|
||||
"id": "sw-footer--responsive",
|
||||
"exportName": "Responsive",
|
||||
"name": "Responsive More",
|
||||
"name": "화면 너비",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5140,12 +5229,16 @@
|
||||
"id": "sw-header--home-menu",
|
||||
"exportName": "HomeMenu",
|
||||
"name": "Home Menu",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"storyTags": [
|
||||
"internal"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
],
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "sw-header--home-menu-capture-default",
|
||||
@@ -5376,13 +5469,17 @@
|
||||
{
|
||||
"id": "sw-header--logo-slot",
|
||||
"exportName": "LogoSlot",
|
||||
"name": "Logo",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
"decision": "KEEP",
|
||||
"name": "로고",
|
||||
"storyTags": [
|
||||
"internal"
|
||||
],
|
||||
"effectiveTags": [
|
||||
"internal"
|
||||
],
|
||||
"category": "UTILITY",
|
||||
"decision": "HIDE",
|
||||
"candidate": null,
|
||||
"reason": "Representative story or distinct reference page."
|
||||
"reason": "Keep direct URL and tag-filter access; excluded from default sidebar."
|
||||
},
|
||||
{
|
||||
"id": "sw-header--document-dropdown",
|
||||
@@ -5402,7 +5499,7 @@
|
||||
{
|
||||
"id": "sw-header--responsive-more",
|
||||
"exportName": "ResponsiveMore",
|
||||
"name": "Responsive More",
|
||||
"name": "화면 너비",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5483,7 +5580,7 @@
|
||||
{
|
||||
"id": "sw-step-header--responsive",
|
||||
"exportName": "Responsive",
|
||||
"name": "Responsive More",
|
||||
"name": "화면 너비",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5621,7 +5718,7 @@
|
||||
{
|
||||
"id": "sw-header--property-panel-compare",
|
||||
"exportName": "PropertyPanelCompare",
|
||||
"name": "Property Panel",
|
||||
"name": "속성창",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5732,7 +5829,7 @@
|
||||
{
|
||||
"id": "sw-viewer--content-variants",
|
||||
"exportName": "ContentVariants",
|
||||
"name": "Settings Popup",
|
||||
"name": "설정창",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5758,7 +5855,7 @@
|
||||
{
|
||||
"id": "sw-viewer--logo",
|
||||
"exportName": "Logo",
|
||||
"name": "Logo",
|
||||
"name": "로고",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
@@ -5769,7 +5866,7 @@
|
||||
{
|
||||
"id": "sw-viewer--responsive",
|
||||
"exportName": "Responsive",
|
||||
"name": "Responsive More",
|
||||
"name": "화면 너비",
|
||||
"storyTags": [],
|
||||
"effectiveTags": [],
|
||||
"category": "PRIMARY",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> 기준 우선순위: 2026-10-10 추가 수정 요청의 확정 사항 → 충돌하지 않는 D-01/D-02 → 현재 HM Component/Pattern/Theme → 현재 Storybook/구현 → 과거 문서. [현재 추가 수정 기준](docs/guidelines/publisher-additional-review-2026-10-10.md). 미확정 값은 임의 확정하지 않으며 과거 검증 기록은 보존합니다.
|
||||
|
||||
shadcn/ui(Radix, Tailwind v4, CVA) 기반 HM 디자인 시스템 시제품. React + TypeScript + Vite, 개발 Storybook 포트 6024(포터블 테스트 ZIP은 기본 6007, 충돌 시 자동 변경). 실행법과 파일 위치는 `README.md`를 따른다.
|
||||
shadcn/ui(Radix, Tailwind v4, CVA) 기반 HM 디자인 시스템 시제품. React + TypeScript + Vite, 개발 Storybook 포트 6024(과거 포터블 테스트 ZIP의 6007은 당시 기록이며 현재 Git Clone에는 ZIP이 포함되지 않는다). 실행법과 파일 위치는 `README.md`를 따른다.
|
||||
|
||||
## 지침 문서
|
||||
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@
|
||||
| ③ OrgChart | `@hm-design/org-chart`(Core) + React면 `@hm-design/org-chart-react` | `node_modules/@hm-design/org-chart/ai/` (React 어댑터 안내는 `node_modules/@hm-design/org-chart-react/ai/AI_USAGE.md`) | `@hm-design/org-chart`, `@hm-design/org-chart-react`, 선택 `@hm-design/org-chart-react/hm-dialog` | `@hm-design/org-chart/engine.css`, `@hm-design/org-chart/style.css`(URL로 전달 — Shadow DOM 안에 로드) |
|
||||
| 기타 | `@hm-design/center-graphic` | AI 지침 없음. 패키지 `README.md`만 | `@hm-design/center-graphic`, 선택 `@hm-design/center-graphic/reference`(Storybook 검토용 참고 데모, 컴포넌트 API 아님) | JS 진입점이 자동 import. 명시가 필요하면 `@hm-design/center-graphic/style.css` |
|
||||
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 peer입니다.
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 `@hm-design/ui`·`@hm-design/sw`·`@hm-design/center-graphic`의 peer이고, `@hm-design/org-chart-react`는 React `^19`만 peer로 요구합니다. `@hm-design/org-chart`(Core)는 peer가 없습니다.
|
||||
|
||||
## 1단계. 사용 목적 확인
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ HMDesignSystem/
|
||||
|
||||
### 5.1 패키지 구성과 Storybook 통합 (구현됨 — 2026-10-02 패키지 분리)
|
||||
|
||||
**하나의 Git 저장소 + 두 개의 독립 배포 패키지 + 하나의 통합 Storybook**을 기본으로 한다. 2026-10-02에 npm workspaces(`packages/*`)로 분리했다. `packages/ui`(`@hm-design/ui`)에 Button·Input·Select·Card·Dialog와 Theme(`src/theme/*.css`, `theme.css`, `tailwind.css`)이 있고, `packages/center-graphic`(`@hm-design/center-graphic`)은 ui-viz CENTER Web Reference(제목·정보·노선/공간·시설물)를 이식해 구현했다(기준 문서 `docs/center-graphic/README.md`). 둘은 서로 의존하지 않는다. 루트는 Storybook(`.storybook/`, `src/**/*.stories.tsx`; UI는 `Components`, CENTER는 `Center Graphic` 최상위 그룹)과 Demo(`src/App.tsx`, `src/hm-theme.css`), 컴포넌트 문서(`docs/components/`)를 유지하며 Story와 Demo는 `@hm-design/ui`를 workspace 패키지로 import한다. 두 패키지는 `private: false`이며 ESM JS·타입 선언·CSS를 compiled `dist`에서 export한다. `npm run build:packages`가 library 산출물을 생성하며 HM 패키지는 npm Registry로 배포하지 않고 [Git Submodule + npm Workspace](external-install-submodule.md)로 연결한다. 소비 앱은 `@import "tailwindcss"; @import "@hm-design/ui/tailwind.css"; @import "@hm-design/ui/theme.css"`를 쓴다. UI dist에는 `fonts/`의 글꼴과 OFL이 포함되며 compiled `theme.css`는 상대 `./fonts/` 경로를 사용한다. Source `packages/ui/src/theme.css`는 `/fonts/NotoSansKR-variable.ttf`를 사용하므로 App/Storybook 개발 서버는 `public/fonts/`를 서빙한다.
|
||||
**하나의 Git 저장소 + 여러 독립 배포 패키지 + 하나의 통합 Storybook**을 기본으로 한다(현재 패키지 목록은 `README.md`의 패키지 구성을 따른다). 2026-10-02에 npm workspaces(`packages/*`)로 분리했다. `packages/ui`(`@hm-design/ui`)에 Button·Input·Select·Card·Dialog와 Theme(`src/theme/*.css`, `theme.css`, `tailwind.css`)이 있고, `packages/center-graphic`(`@hm-design/center-graphic`)은 ui-viz CENTER Web Reference(제목·정보·노선/공간·시설물)를 이식해 구현했다(기준 문서 `docs/center-graphic/README.md`). 둘은 서로 의존하지 않는다. 루트는 Storybook(`.storybook/`, `src/**/*.stories.tsx`; UI는 `Components`, CENTER는 `노선도` 최상위 그룹(분리 당시 이름 `Center Graphic`))과 Demo(`src/App.tsx`, `src/hm-theme.css`), 컴포넌트 문서(`docs/components/`)를 유지하며 Story와 Demo는 `@hm-design/ui`를 workspace 패키지로 import한다. 두 패키지는 `private: false`이며 ESM JS·타입 선언·CSS를 compiled `dist`에서 export한다. `npm run build:packages`가 library 산출물을 생성하며 HM 패키지는 npm Registry로 배포하지 않고 [Git Submodule + npm Workspace](external-install-submodule.md)로 연결한다. 소비 앱은 `@import "tailwindcss"; @import "@hm-design/ui/tailwind.css"; @import "@hm-design/ui/theme.css"`를 쓴다. UI dist에는 `fonts/`의 글꼴과 OFL이 포함되며 compiled `theme.css`는 상대 `./fonts/` 경로를 사용한다. Source `packages/ui/src/theme.css`는 `/fonts/NotoSansKR-variable.ttf`를 사용하므로 App/Storybook 개발 서버는 `public/fonts/`를 서빙한다.
|
||||
|
||||
아래는 목표 구조다.
|
||||
|
||||
@@ -109,7 +109,7 @@ HMDesignSystem/
|
||||
- 두 패키지는 따로 설치하고 따로 버전을 올릴 수 있어야 한다. 그래픽만 필요한 프로젝트가 UI 패키지 전체를 설치하지 않도록 한다.
|
||||
- 의존성 방향: UI → Design Token / Theme, center-graphic → 자체 그래픽 리소스. `center-graphic → ui` 필수 의존은 만들지 않고, 공유가 필요하면 최소 수준의 Token만 공유한다.
|
||||
- `tokens` 또는 `theme` 패키지의 별도 분리는 규모가 커지거나 여러 제품이 테마를 독립적으로 공유해야 할 때 검토한다. 그 전에는 두 패키지로 운영한다.
|
||||
- Storybook은 하나로 통합해 UI와 Center Graphic을 함께 검수한다. 메뉴 구조는 패키지 폴더 구조와 같을 필요가 없고 검토 편의를 기준으로 한다. 컴포넌트는 §6.3의 규칙대로 대표 Story가 바로 열리는 1뎁스 항목으로 두고, Playground·Compatibility·verification Story는 기본 메뉴에서 숨긴다. Center Graphic도 같은 원칙을 따른다.
|
||||
- Storybook은 하나로 통합해 UI·SW·조직도·노선도(CENTER)를 함께 검수한다. 메뉴 구조는 패키지 폴더 구조와 같을 필요가 없고 검토 편의를 기준으로 한다. 컴포넌트는 §6.3의 규칙대로 대표 Story가 바로 열리는 1뎁스 항목으로 두고, Playground·Compatibility·verification Story는 기본 메뉴에서 숨긴다. 노선도(CENTER, 이전 이름 Center Graphic)도 같은 원칙을 따른다.
|
||||
- 다른 문서의 `@company/ui`는 `@hm-design/ui`의 자리표시자로 읽고, 이름 치환은 패키징 작업 때 한꺼번에 한다. Storybook 최상위 그룹은 CENTER 구현 시점에 `Center Graphic`만 추가했고 기존 `Components`는 이름을 바꾸지 않았다(`UI Components`로의 개명은 필요할 때 정한다).
|
||||
|
||||
#### CENTER 규격의 적용 범위
|
||||
@@ -314,8 +314,8 @@ packages/ui 구조에서 나머지 UI 컴포넌트 추가
|
||||
```
|
||||
|
||||
- **Card와 Dialog 완료를 패키지 분리 작업의 시작 기준점으로 한다.** 그 기준을 충족해 2026-10-02에 분리했다(§5.1).
|
||||
- 현재 Storybook은 `Components`, `Patterns`, `Center Graphic`으로 통합 운영한다. `Theme`의 verification Story는 기본 sidebar에서 숨긴다.
|
||||
- 패키지 구성은 §5.1을 따른다(하나의 Git 저장소, `@hm-design/ui`와 `@hm-design/center-graphic`, 독립 설치·버전 관리).
|
||||
- 현재 Storybook 최상위 그룹은 `Foundation`, `Components`, `Patterns`, `SW`, `조직도`, `노선도`, `Verification`, `Theme`이다(정렬 기준 `.storybook/preview.tsx`). `verification`·`internal` 태그 Story(`Verification` 그룹과 `Theme`의 verification Story 포함)는 기본 sidebar에서 숨긴다.
|
||||
- 패키지 구성은 §5.1을 따른다(하나의 Git 저장소, `@hm-design/ui`·`@hm-design/sw`·`@hm-design/org-chart`·`@hm-design/org-chart-react`·`@hm-design/center-graphic`, 독립 설치·버전 관리. 역할·진입점은 `README.md`의 패키지 구성).
|
||||
- `center-graphic` 실제 작업을 시작할 때 CENTER 문서와 assets의 읽기 범위·우선순위를 별도로 확정한다. 그 전까지 §5.1의 CENTER 적용 범위를 따른다.
|
||||
|
||||
상세 적용 절차는 [개발 적용 가이드](개발-적용-가이드.md), 발행과 복구 절차는 [운영/배포 가이드](운영-배포-가이드.md)를 따른다.
|
||||
@@ -245,7 +245,7 @@ Compact / Sidebar mobile hide: NONE
|
||||
|
||||
- 충분한 폭에서는 기존 배치를 사용한다. 작은 viewport에서는 내부 최소 폭을 유지하고 Dashboard 전용 root에서만 가로 스크롤한다. Sidebar slot은 항상 렌더링된다.
|
||||
- 960px 근거: KPI 4 × 200px + 간격 3 × 24px + padding 2 × 34px + 세로 scrollbar 여유 20px. Compact 상태 바 실측 약 549px, 브랜드 약 125px, 날개 35px도 이 폭에서 겹치지 않는다.
|
||||
- Sidebar 구성은 콘텐츠 최소 폭에 LNB 폭을 더한다. Desktop은 기존 `--hm-lnb-width`를 읽고, ≤1023px에서는 Dashboard 내부에만 `--hm-lnb-width: var(--hm-dashboard-sidebar-width, 272px)`와 LNB `display:flex`를 적용한다. 공통 `lnb.css`의 모바일 숨김은 유지된다.
|
||||
- Sidebar 구성의 최소 폭은 콘텐츠 최소 폭에 `--hm-dashboard-sidebar-width`(기본 272px)를 더한 값이다(`[data-sidebar]`일 때 `min-width: calc(var(--hm-dashboard-min-width) + var(--hm-dashboard-sidebar-width))`). `DashboardSidebar` 폭도 같은 토큰을 직접 쓴다. Dashboard CSS는 `--hm-lnb-width` 등 GNB/LNB CSS 변수와 반응형 분기를 읽지 않는다(`dashboard-layout.css` 첫 줄).
|
||||
- 기본 콘텐츠 최소 폭은 `--hm-dashboard-min-width`로 조정할 수 있다. 기본값 960px은 현재 Desktop 구성 측정 기준이며 별도 콘텐츠를 넣으면 그 구성을 기준으로 조정한다.
|
||||
- Compact 메뉴는 숨기거나 wrap하지 않는다. Dashboard 안 Filter Bar도 한 줄과 기존 control 폭을 유지하며 공통 Filter Bar 모바일 정책은 변경하지 않는다. 본문 텍스트는 자연스럽게 줄바꿈한다.
|
||||
- GNB의 전역 메뉴·모바일 Sheet와 일반 LNB의 공통 responsive 정책, Theme/Color Token, Story ID/hierarchy는 변경하지 않는다.
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
| ③ OrgChart | `@hm-design/org-chart`(Core) + React면 `@hm-design/org-chart-react` | `node_modules/@hm-design/org-chart/ai/` (React 어댑터 안내는 `node_modules/@hm-design/org-chart-react/ai/AI_USAGE.md`) | `@hm-design/org-chart`, `@hm-design/org-chart-react`, 선택 `@hm-design/org-chart-react/hm-dialog` | `@hm-design/org-chart/engine.css`, `@hm-design/org-chart/style.css`(URL로 전달 — Shadow DOM 안에 로드) |
|
||||
| 기타 | `@hm-design/center-graphic` | AI 지침 없음. 패키지 `README.md`만 | `@hm-design/center-graphic`, 선택 `@hm-design/center-graphic/reference`(Storybook 검토용 참고 데모, 컴포넌트 API 아님) | JS 진입점이 자동 import. 명시가 필요하면 `@hm-design/center-graphic/style.css` |
|
||||
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 peer입니다.
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 `@hm-design/ui`·`@hm-design/sw`·`@hm-design/center-graphic`의 peer이고, `@hm-design/org-chart-react`는 React `^19`만 peer로 요구합니다. `@hm-design/org-chart`(Core)는 peer가 없습니다.
|
||||
|
||||
## 1단계. 사용 목적 확인
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
| ③ OrgChart | `@hm-design/org-chart`(Core) + React면 `@hm-design/org-chart-react` | `node_modules/@hm-design/org-chart/ai/` (React 어댑터 안내는 `node_modules/@hm-design/org-chart-react/ai/AI_USAGE.md`) | `@hm-design/org-chart`, `@hm-design/org-chart-react`, 선택 `@hm-design/org-chart-react/hm-dialog` | `@hm-design/org-chart/engine.css`, `@hm-design/org-chart/style.css`(URL로 전달 — Shadow DOM 안에 로드) |
|
||||
| 기타 | `@hm-design/center-graphic` | AI 지침 없음. 패키지 `README.md`만 | `@hm-design/center-graphic`, 선택 `@hm-design/center-graphic/reference`(Storybook 검토용 참고 데모, 컴포넌트 API 아님) | JS 진입점이 자동 import. 명시가 필요하면 `@hm-design/center-graphic/style.css` |
|
||||
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 peer입니다.
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 `@hm-design/ui`·`@hm-design/sw`·`@hm-design/center-graphic`의 peer이고, `@hm-design/org-chart-react`는 React `^19`만 peer로 요구합니다. `@hm-design/org-chart`(Core)는 peer가 없습니다.
|
||||
|
||||
## 1단계. 사용 목적 확인
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
| ③ OrgChart | `@hm-design/org-chart`(Core) + React면 `@hm-design/org-chart-react` | `node_modules/@hm-design/org-chart/ai/` (React 어댑터 안내는 `node_modules/@hm-design/org-chart-react/ai/AI_USAGE.md`) | `@hm-design/org-chart`, `@hm-design/org-chart-react`, 선택 `@hm-design/org-chart-react/hm-dialog` | `@hm-design/org-chart/engine.css`, `@hm-design/org-chart/style.css`(URL로 전달 — Shadow DOM 안에 로드) |
|
||||
| 기타 | `@hm-design/center-graphic` | AI 지침 없음. 패키지 `README.md`만 | `@hm-design/center-graphic`, 선택 `@hm-design/center-graphic/reference`(Storybook 검토용 참고 데모, 컴포넌트 API 아님) | JS 진입점이 자동 import. 명시가 필요하면 `@hm-design/center-graphic/style.css` |
|
||||
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 peer입니다.
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 `@hm-design/ui`·`@hm-design/sw`·`@hm-design/center-graphic`의 peer이고, `@hm-design/org-chart-react`는 React `^19`만 peer로 요구합니다. `@hm-design/org-chart`(Core)는 peer가 없습니다.
|
||||
|
||||
## 1단계. 사용 목적 확인
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
| ③ OrgChart | `@hm-design/org-chart`(Core) + React면 `@hm-design/org-chart-react` | `node_modules/@hm-design/org-chart/ai/` (React 어댑터 안내는 `node_modules/@hm-design/org-chart-react/ai/AI_USAGE.md`) | `@hm-design/org-chart`, `@hm-design/org-chart-react`, 선택 `@hm-design/org-chart-react/hm-dialog` | `@hm-design/org-chart/engine.css`, `@hm-design/org-chart/style.css`(URL로 전달 — Shadow DOM 안에 로드) |
|
||||
| 기타 | `@hm-design/center-graphic` | AI 지침 없음. 패키지 `README.md`만 | `@hm-design/center-graphic`, 선택 `@hm-design/center-graphic/reference`(Storybook 검토용 참고 데모, 컴포넌트 API 아님) | JS 진입점이 자동 import. 명시가 필요하면 `@hm-design/center-graphic/style.css` |
|
||||
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 peer입니다.
|
||||
모든 패키지는 서로 독립입니다(`@hm-design/org-chart-react`만 Core에 의존, `@hm-design/ui`는 `/hm-dialog`를 쓸 때만 선택 peer). React·React DOM `^19`는 `@hm-design/ui`·`@hm-design/sw`·`@hm-design/center-graphic`의 peer이고, `@hm-design/org-chart-react`는 React `^19`만 peer로 요구합니다. `@hm-design/org-chart`(Core)는 peer가 없습니다.
|
||||
|
||||
## 1단계. 사용 목적 확인
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
| 컴포넌트 (Export) | 용도 | HM Props |
|
||||
|---|---|---|
|
||||
| `Calendar` | 달력(react-day-picker) | react-day-picker Props |
|
||||
| `DatePicker` / 타입 `DatePickerSize` | 날짜 입력 | `value`·`defaultValue`(Date), `onValueChange`, `controlled`, `placeholder`, `size`: `medium` · `large`(기본), `format`(기본 `YYYY.MM.DD`), `calendarProps`(disabled·startMonth·endMonth·locale·captionLayout·weekStartsOn·today) |
|
||||
| `DatePicker` / 타입 `DatePickerSize` | 날짜 입력 | `value`·`defaultValue`(Date), `onValueChange`, `controlled`, `placeholder`, `size`: `medium` · `large`(기본), `format`(`(date: Date) => string`, 기본 출력 `YYYY.MM.DD`), `calendarProps`(disabled·startMonth·endMonth·locale·captionLayout·weekStartsOn·today) |
|
||||
| `Combobox` / 타입 `ComboboxOption`, `ComboboxSize` | 검색 가능한 선택 | `options: { value, label, disabled? }[]`(필수), `value`·`defaultValue`, `onValueChange`, `controlled`, `placeholder`, `searchPlaceholder`, `emptyText`, `size`: `medium` · `large`(기본) |
|
||||
| `Command`, `CommandInput`, `CommandList`, `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`, `CommandShortcut` | 명령 검색(cmdk) | 없음 |
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
- 토큰 범위: `:root, [data-hm-theme]`. Runtime Theme(`@hm-design/ui/theme`)가 같은 변수를 바꿉니다.
|
||||
- Light/Dark 분기 없음. 컴포넌트 CSS에 `html`·`body`·`*` 규칙을 추가하지 않습니다.
|
||||
- 이름을 추측하지 않습니다. 특히 `--hm-sem-text-*`, `--hm-sem-border-*`, `--hm-sem-stroke-divider`는 **선언되어 있지 않습니다**(아래 표의 이름을 씀). 없는 토큰을 fallback 색으로 감추지 않습니다.
|
||||
- 이름을 추측하지 않습니다. 특히 `--hm-sem-text-*`, `--hm-sem-stroke-divider`는 **선언되어 있지 않고**, `--hm-sem-border-*`는 Button 내부용 `--hm-sem-border-action-primary` 외에는 **선언되어 있지 않습니다**(아래 표의 이름을 씀). 없는 토큰을 fallback 색으로 감추지 않습니다.
|
||||
- Tailwind utility로는 shadcn 매핑 utility(`bg-card`, `text-primary`, `text-muted-foreground` 등)를 쓸 수 있습니다. HM 값과 다를 수 있는 임의 utility 색(`bg-green-700` 등)은 쓰지 않습니다.
|
||||
|
||||
## 1. 기본 팔레트 (primitives → `--hm-sem-palette-*`)
|
||||
|
||||
Reference in new issue
Block a user