@ncds/ui-admin-mcp 1.0.0-alpha.16 → 1.0.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/bin/components.bundle.js +17 -1
  2. package/bin/definitions/external/step-guide.d.ts +61 -0
  3. package/bin/definitions/external/step-guide.js +52 -0
  4. package/bin/definitions/js-api.json +47 -13
  5. package/bin/tools/external/editor.d.ts +3 -2
  6. package/bin/tools/external/editor.js +1 -1
  7. package/bin/tools/external/step-guide.d.ts +19 -0
  8. package/bin/tools/external/step-guide.js +79 -0
  9. package/bin/tools/getComponentProps.d.ts +3 -0
  10. package/bin/tools/getComponentProps.js +2 -2
  11. package/bin/tools/ping.d.ts +1 -1
  12. package/bin/tools/renderToHtml.js +9 -1
  13. package/bin/tools/searchComponent.d.ts +5 -0
  14. package/bin/tools/searchComponent.js +3 -3
  15. package/bin/tools/validateHtml.d.ts +8 -6
  16. package/bin/tools/validateHtml.js +6 -6
  17. package/bin/utils/bemValidator.d.ts +8 -6
  18. package/bin/utils/bemValidator.js +16 -4
  19. package/bin/utils/compliance.d.ts +7 -6
  20. package/bin/utils/compliance.js +5 -3
  21. package/bin/utils/dataLoader.d.ts +16 -14
  22. package/bin/utils/dataLoader.js +3 -2
  23. package/bin/utils/fuzzyMatch.js +1 -0
  24. package/bin/utils/response.js +1 -1
  25. package/bin/utils/tokenValidator.d.ts +4 -3
  26. package/bin/utils/tokenValidator.js +13 -11
  27. package/bin/version.d.ts +4 -2
  28. package/bin/version.js +4 -2
  29. package/data/_icons.json +317 -2
  30. package/data/block-container.json +95 -0
  31. package/data/block-header.json +208 -0
  32. package/data/combo-box.json +1 -2
  33. package/data/data-grid.json +33 -5
  34. package/data/dropdown.json +11 -1
  35. package/data/file-input.json +6 -5
  36. package/data/image-file-input.json +6 -5
  37. package/data/input-base.json +1 -1
  38. package/data/modal.json +5 -2
  39. package/data/notification.json +30 -22
  40. package/data/number-input.json +1 -1
  41. package/data/page-title.json +135 -0
  42. package/data/pagination.json +8 -4
  43. package/data/password-input.json +25 -10
  44. package/data/progress-bar.json +6 -5
  45. package/data/progress-circle.json +8 -5
  46. package/data/radio.json +3 -2
  47. package/data/select-box.json +17 -10
  48. package/data/step-guide.json +130 -0
  49. package/data/table.json +50 -6
  50. package/data/tag.json +7 -4
  51. package/package.json +13 -11
@@ -0,0 +1,208 @@
1
+ {
2
+ "name": "block-header",
3
+ "exportName": "BlockHeader",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "layout",
7
+ "description": "Block Header는 Block의 최상단에 위치하며, 블록의 목적과 실행 범위를 정의하는 영역입니다.",
8
+ "aliases": [
9
+ "Block Header",
10
+ "BlockHeader",
11
+ "블록헤더",
12
+ "Section Header",
13
+ "Title",
14
+ "Tooltip",
15
+ "Action",
16
+ "Tab",
17
+ "Collapsible",
18
+ "Grid Control",
19
+ "Sub Title",
20
+ "Required Notice",
21
+ "필수 안내",
22
+ "Divider",
23
+ "NCDS"
24
+ ],
25
+ "hasChildren": true,
26
+ "whenToUse": [
27
+ "Block Header는 블록의 목적을 한눈에 전달하는 영역이다"
28
+ ],
29
+ "forbiddenRules": [
30
+ "Header에 두 줄 이상의 긴 설명 지양",
31
+ "Header Action에 `hierarchy=\"secondary-gray\" size=\"xs\"` 외 사용 금지",
32
+ "Header 내부에서 아이콘 남발 금지",
33
+ "Header 배경색 변경 금지",
34
+ "페이지 단위 탭과 블록 탭 혼용 금지",
35
+ "Grid Control을 별도 Block으로 분리 금지",
36
+ "필수 마커 없는 블록에 Required Notice 표시 금지",
37
+ "Required Notice 고정 문구 임의 변경 금지",
38
+ "Required Notice 2색 구성 임의 변경 금지"
39
+ ],
40
+ "seeAlso": [
41
+ "block-container",
42
+ "tooltip",
43
+ "tab",
44
+ "badge",
45
+ "radio-group",
46
+ "button",
47
+ "vertical-table"
48
+ ],
49
+ "htmlElement": "div",
50
+ "usageExamples": {
51
+ "basic": {
52
+ "title": "상품 기본 정보"
53
+ },
54
+ "withTooltip": {
55
+ "title": "배송 설정",
56
+ "tooltip": "배송 방법과 기본 설정을 입력하세요."
57
+ },
58
+ "withRequiredNotice": {
59
+ "title": "상품 기본 정보",
60
+ "showRequiredNotice": true
61
+ },
62
+ "collapsible": {
63
+ "title": "고급 설정",
64
+ "collapsible": {
65
+ "expanded": false,
66
+ "onToggle": "() => {}"
67
+ }
68
+ }
69
+ },
70
+ "props": {
71
+ "action": {
72
+ "type": "ReactNode",
73
+ "required": false
74
+ },
75
+ "badge": {
76
+ "type": "ReactNode",
77
+ "required": false
78
+ },
79
+ "children": {
80
+ "type": "ReactNode",
81
+ "required": false
82
+ },
83
+ "className": {
84
+ "type": "string",
85
+ "required": false
86
+ },
87
+ "collapsible": {
88
+ "type": "function",
89
+ "required": false
90
+ },
91
+ "controlStrip": {
92
+ "type": "ReactNode",
93
+ "required": false
94
+ },
95
+ "description": {
96
+ "type": "string",
97
+ "required": false
98
+ },
99
+ "showDivider": {
100
+ "type": "boolean",
101
+ "required": false,
102
+ "default": true
103
+ },
104
+ "showRequiredNotice": {
105
+ "type": "boolean",
106
+ "required": false,
107
+ "default": false
108
+ },
109
+ "title": {
110
+ "type": "ReactNode",
111
+ "required": true
112
+ },
113
+ "tooltip": {
114
+ "type": "string",
115
+ "required": false
116
+ }
117
+ },
118
+ "subComponents": {
119
+ "BlockHeader.SubTitle": {
120
+ "props": {
121
+ "action": {
122
+ "type": "ReactNode",
123
+ "required": false
124
+ },
125
+ "className": {
126
+ "type": "string",
127
+ "required": false
128
+ },
129
+ "description": {
130
+ "type": "string",
131
+ "required": false
132
+ },
133
+ "error": {
134
+ "type": "string",
135
+ "required": false
136
+ },
137
+ "required": {
138
+ "type": "boolean",
139
+ "required": false,
140
+ "default": false
141
+ },
142
+ "showDivider": {
143
+ "type": "boolean",
144
+ "required": false,
145
+ "default": true
146
+ },
147
+ "showRequiredNotice": {
148
+ "type": "boolean",
149
+ "required": false,
150
+ "default": false
151
+ },
152
+ "size": {
153
+ "type": "enum",
154
+ "required": false,
155
+ "values": [
156
+ "middle",
157
+ "sm",
158
+ "xs"
159
+ ],
160
+ "default": "sm"
161
+ },
162
+ "title": {
163
+ "type": "ReactNode",
164
+ "required": true
165
+ },
166
+ "tooltip": {
167
+ "type": "string",
168
+ "required": false
169
+ }
170
+ }
171
+ }
172
+ },
173
+ "html": {},
174
+ "bemClasses": [
175
+ "ncua-block-header",
176
+ "ncua-block-header--column",
177
+ "ncua-block-header--has-control-strip",
178
+ "ncua-block-header--has-tab",
179
+ "ncua-block-header--is-required",
180
+ "ncua-block-header--no-divider",
181
+ "ncua-block-header__action-area",
182
+ "ncua-block-header__badge",
183
+ "ncua-block-header__collapsible-btn",
184
+ "ncua-block-header__control-strip",
185
+ "ncua-block-header__description",
186
+ "ncua-block-header__required-notice",
187
+ "ncua-block-header__required-notice--gray",
188
+ "ncua-block-header__required-notice--red",
189
+ "ncua-block-header__row",
190
+ "ncua-block-header__tabs",
191
+ "ncua-block-header__title",
192
+ "ncua-block-header__title-area",
193
+ "ncua-sub-title",
194
+ "ncua-sub-title__action",
195
+ "ncua-sub-title__description",
196
+ "ncua-sub-title__error",
197
+ "ncua-sub-title__required-marker",
198
+ "ncua-sub-title__title",
199
+ "ncua-sub-title__title-area",
200
+ "ncua-sub-title__title-row"
201
+ ],
202
+ "usage": {
203
+ "import": "import { BlockHeader } from '@ncds/ui-admin';",
204
+ "react": {
205
+ "default": "<BlockHeader title=\"예시\" />"
206
+ }
207
+ }
208
+ }
@@ -40,8 +40,7 @@
40
40
  "Clear 버튼 없이 입력 유지 강제 금지"
41
41
  ],
42
42
  "seeAlso": [
43
- "selectbox",
44
- "select"
43
+ "button"
45
44
  ],
46
45
  "htmlElement": "div",
47
46
  "props": {
@@ -4,7 +4,7 @@
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": false,
6
6
  "category": "data-display",
7
- "description": "DataGrid는 관리자 화면에서 대량의 데이터를 테이블 형태로 조회·관리하기 위한 핵심 컴포넌트입니다.",
7
+ "description": "DataGrid는 관리자 화면에서 대량의 데이터를 테이블 형태로 조회·관리하기 위한 핵심 컴포넌트입니다. 조회 결과 리스트, 일반 가로형·세로형 테이블로 구분되며, Header·데이터 필드·선택·액션·필터·정렬·페이지네이션·검색결과 영역 등으로 구성됩니다.",
8
8
  "aliases": [
9
9
  "DataGrid",
10
10
  "데이터그리드",
@@ -41,10 +41,29 @@
41
41
  "maxHeight",
42
42
  "hoverable",
43
43
  "selectable",
44
- "NCDS"
44
+ "NCDS",
45
+ "가로스크롤",
46
+ "horizontal scroll",
47
+ "scrollX",
48
+ "overflow-x",
49
+ "column min-width",
50
+ "셀 최소 너비",
51
+ "셀 최소 글자수",
52
+ "1140",
53
+ "table min-width",
54
+ "줄바꿈",
55
+ "word-break",
56
+ "콘텐츠 타입별 차등",
57
+ "2단 wrapper",
58
+ "Portal",
59
+ "Floating UI",
60
+ "스크롤 컨테이너",
61
+ "scrollbar token",
62
+ "Modal DataGrid 예외"
45
63
  ],
46
64
  "hasChildren": true,
47
65
  "whenToUse": [
66
+ "DataGrid는 반드시 Block 또는 Tab 구조 내에 포함되어야 하며, Block > 세부항목 내부에 Table 구조를 중첩하는 것은 지양한다 (5개 이하 정보 제공 시에만 예외 허용)",
48
67
  "10개 이상 데이터 관리 화면에서 적용",
49
68
  "관리자가 데이터를 조작하는 화면",
50
69
  "대량 데이터 일괄 처리 화면"
@@ -57,14 +76,14 @@
57
76
  "프로젝트별 임의 컬럼 정렬 변경 금지"
58
77
  ],
59
78
  "seeAlso": [
60
- "button",
79
+ "table",
61
80
  "checkbox",
62
81
  "radio",
63
82
  "pagination",
64
83
  "badge",
65
84
  "empty-state",
66
- "block-container",
67
- "table"
85
+ "button",
86
+ "block-container"
68
87
  ],
69
88
  "htmlElement": "div",
70
89
  "props": {
@@ -148,6 +167,10 @@
148
167
  "type": "boolean",
149
168
  "required": false
150
169
  },
170
+ "horizontalScroll": {
171
+ "type": "boolean",
172
+ "required": false
173
+ },
151
174
  "hoverable": {
152
175
  "type": "boolean",
153
176
  "required": false
@@ -157,6 +180,11 @@
157
180
  "required": false,
158
181
  "rawType": "string | number | undefined"
159
182
  },
183
+ "minWidth": {
184
+ "type": "string",
185
+ "required": false,
186
+ "rawType": "string | number | undefined"
187
+ },
160
188
  "selectable": {
161
189
  "type": "boolean",
162
190
  "required": false
@@ -28,7 +28,12 @@
28
28
  "hasChildren": true,
29
29
  "whenToUse": [
30
30
  "Dropdown은 값 선택이 아닌 액션 실행 컴포넌트입니다",
31
- "제한된 화면 공간에서 다수의 작업을 구조적으로 제공할 사용합니다"
31
+ "값을 선택하는 Selectbox와 달리, 메뉴 항목 선택 즉시 특정 기능이 실행됩니다",
32
+ "제한된 화면 공간에서 다수의 작업을 구조적으로 제공할 때 사용합니다",
33
+ "다수 액션 제공",
34
+ "사용자 계정 메뉴",
35
+ "관리/설정 메뉴",
36
+ "제한된 공간의 보조 액션"
32
37
  ],
33
38
  "forbiddenRules": [
34
39
  "메뉴명 말줄임 처리 금지",
@@ -227,6 +232,10 @@
227
232
  }
228
233
  }
229
234
  },
235
+ "usePortal": {
236
+ "type": "boolean",
237
+ "required": false
238
+ },
230
239
  "variant": {
231
240
  "type": "enum",
232
241
  "required": false,
@@ -261,6 +270,7 @@
261
270
  "ncua-dropdown__item-text-group",
262
271
  "ncua-dropdown__item-visibility",
263
272
  "ncua-dropdown__menu",
273
+ "ncua-dropdown__menu--portal",
264
274
  "ncua-dropdown__menu-items",
265
275
  "ncua-dropdown__trigger",
266
276
  "ncua-dropdown__trigger ncua-dropdown__trigger--avatar",
@@ -4,12 +4,13 @@
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": true,
6
6
  "category": "forms-and-input",
7
- "description": "File Upload가 필요한 영역에서 공통 UI/UX를 적용하는 입력 컴포넌트입니다",
7
+ "description": "FileInput은 File Upload가 필요한 영역에서 공통 UI/UX를 적용하는 입력 컴포넌트입니다.",
8
8
  "aliases": [
9
9
  "파일인풋",
10
10
  "FileInput",
11
11
  "파일업로드",
12
12
  "파일첨부",
13
+ "컴포넌트",
13
14
  "파일찾기",
14
15
  "업로드",
15
16
  "accept",
@@ -24,9 +25,7 @@
24
25
  ],
25
26
  "hasChildren": false,
26
27
  "whenToUse": [
27
- "제한 정책 안내문을 항상 노출하며 파일명 텍스트 중심 UI를 기본으로 하고 삭제 기능을 필수 제공해야 하는 경우",
28
- "단일 파일 또는 다중 파일 업로드가 필요한 경우",
29
- "이미지가 아닌 일반 파일 업로드 영역"
28
+ "FileInput은 제한 정책 안내문을 항상 노출하며, 파일명 텍스트 중심 UI를 기본으로 하고, 삭제 기능을 필수 제공합니다"
30
29
  ],
31
30
  "forbiddenRules": [
32
31
  "제한 정책 안내 없이 업로드 허용 금지",
@@ -36,7 +35,9 @@
36
35
  "삭제 기능 없는 업로드 UI 제공 금지"
37
36
  ],
38
37
  "seeAlso": [
39
- "image-file-input"
38
+ "button",
39
+ "tag",
40
+ "tooltip"
40
41
  ],
41
42
  "props": {
42
43
  "accept": {
@@ -4,7 +4,7 @@
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": true,
6
6
  "category": "forms-and-input",
7
- "description": "상품 이미지 등 시각적으로 참조되어야 하는 이미지 업로드 영역에 사용되는 컴포넌트입니다",
7
+ "description": "ImageFileInput은 상품 이미지 등 시각적으로 참조되어야 하는 이미지 업로드 영역에 사용되는 컴포넌트입니다.",
8
8
  "aliases": [
9
9
  "이미지파일인풋",
10
10
  "ImageFileInput",
@@ -12,6 +12,7 @@
12
12
  "썸네일",
13
13
  "미리보기",
14
14
  "이미지첨부",
15
+ "컴포넌트",
15
16
  "파일찾기",
16
17
  "업로드",
17
18
  "accept",
@@ -26,9 +27,7 @@
26
27
  ],
27
28
  "hasChildren": false,
28
29
  "whenToUse": [
29
- "썸네일 중심 UI를 기본으로 하며 이미지 비율 왜곡 없이 중앙 정렬하고 삭제는 Hover 시에만 노출해야 하는 경우",
30
- "이미지 업로드와 미리보기가 필요한 경우",
31
- "일반 파일이 아닌 이미지 전용 업로드 영역"
30
+ "ImageFileInput은 썸네일 중심 UI를 기본으로 하며, 이미지 비율 왜곡 없이 중앙 정렬하고, 삭제는 Hover 시에만 노출합니다"
32
31
  ],
33
32
  "forbiddenRules": [
34
33
  "단일 영역에서 다중 이미지 누적 금지",
@@ -39,7 +38,9 @@
39
38
  "제한 정책 안내 없이 업로드 허용 금지"
40
39
  ],
41
40
  "seeAlso": [
42
- "file-input"
41
+ "file-input",
42
+ "button",
43
+ "tooltip"
43
44
  ],
44
45
  "props": {
45
46
  "accept": {
@@ -7,7 +7,7 @@
7
7
  "description": "Input은 사용자에게 텍스트 데이터를 입력받는 UI 요소로, 다양한 사이즈와 상태를 지원하며 입력 필드 앞뒤로 아이콘, 텍스트, 버튼 등의 요소를 배치할 수 있습니다.",
8
8
  "aliases": [
9
9
  "인풋",
10
- "InputBase",
10
+ "Input",
11
11
  "InputBase",
12
12
  "PasswordInput",
13
13
  "텍스트입력",
package/data/modal.json CHANGED
@@ -31,13 +31,16 @@
31
31
  "NCDS"
32
32
  ],
33
33
  "hasChildren": true,
34
- "whenToUse": [],
34
+ "whenToUse": [
35
+ "Modal은 현재 흐름을 중단하고 사용자 집중을 요구하는 UI 패턴입니다",
36
+ "단순 알림이나 페이지 이동 대체용으로 남용해서는 안 되며, 정보 확인/입력/처리성 작업에만 한정하여 사용합니다"
37
+ ],
35
38
  "forbiddenRules": [
36
39
  "단순 알림에 과도한 Modal 사용 금지",
37
40
  "버튼 3개 이상 구성 금지",
38
41
  "페이지 이동 대체용 사용 금지",
39
42
  "화면 전환을 모두 Modal로 처리 금지",
40
- "좌/우 스크롤 구조 금지",
43
+ "좌/우 스크롤 구조 금지 (Modal Content 자체)",
41
44
  "배경 스크롤 허용 금지"
42
45
  ],
43
46
  "seeAlso": [
@@ -26,15 +26,19 @@
26
26
  "NCDS"
27
27
  ],
28
28
  "hasChildren": false,
29
- "whenToUse": [],
29
+ "whenToUse": [
30
+ "Notification은 비차단(non-blocking) 알림 UI 컴포넌트이다",
31
+ "4가지 type(floating, full-width, message, callout)별 시각 토큰과 구현 규격을 정의한다"
32
+ ],
30
33
  "forbiddenRules": [
31
34
  "Toast에 Dim 처리 금지",
32
- "Message type에 info 컬러 사용 금지"
35
+ "Message · floating type에 info 컬러 사용 금지"
33
36
  ],
34
37
  "seeAlso": [
38
+ "modal",
39
+ "button",
35
40
  "featured-icon",
36
- "icon",
37
- "modal"
41
+ "icon"
38
42
  ],
39
43
  "htmlElement": "div",
40
44
  "props": {
@@ -101,12 +105,13 @@
101
105
  },
102
106
  "title": {
103
107
  "type": "ReactNode",
104
- "required": true
108
+ "required": false
105
109
  },
106
110
  "type": {
107
111
  "type": "enum",
108
112
  "required": false,
109
113
  "values": [
114
+ "callout",
110
115
  "floating",
111
116
  "full-width",
112
117
  "message"
@@ -116,15 +121,17 @@
116
121
  },
117
122
  "html": {},
118
123
  "bemClasses": [
124
+ "ncua-callout-notification",
125
+ "ncua-callout-notification--callout",
126
+ "ncua-callout-notification--error",
127
+ "ncua-callout-notification--floating",
128
+ "ncua-callout-notification--full-width",
129
+ "ncua-callout-notification--info",
130
+ "ncua-callout-notification--message",
131
+ "ncua-callout-notification--neutral",
132
+ "ncua-callout-notification--success",
133
+ "ncua-callout-notification--warning",
119
134
  "ncua-floating-notification",
120
- "ncua-floating-notification--error",
121
- "ncua-floating-notification--floating",
122
- "ncua-floating-notification--full-width",
123
- "ncua-floating-notification--info",
124
- "ncua-floating-notification--message",
125
- "ncua-floating-notification--neutral",
126
- "ncua-floating-notification--success",
127
- "ncua-floating-notification--warning",
128
135
  "ncua-floating-notification__actions",
129
136
  "ncua-floating-notification__close-button",
130
137
  "ncua-floating-notification__container",
@@ -165,15 +172,16 @@
165
172
  "usage": {
166
173
  "import": "import { Notification } from '@ncds/ui-admin';",
167
174
  "react": {
168
- "default": "<Notification title=\"예시\" />",
169
- "color:error": "<Notification color=\"error\" title=\"예시\" />",
170
- "color:info": "<Notification color=\"info\" title=\"예시\" />",
171
- "color:neutral": "<Notification color=\"neutral\" title=\"예시\" />",
172
- "color:success": "<Notification color=\"success\" title=\"예시\" />",
173
- "color:warning": "<Notification color=\"warning\" title=\"예시\" />",
174
- "type:floating": "<Notification type=\"floating\" title=\"예시\" />",
175
- "type:full-width": "<Notification type=\"full-width\" title=\"예시\" />",
176
- "type:message": "<Notification type=\"message\" title=\"예시\" />"
175
+ "default": "<Notification />",
176
+ "color:error": "<Notification color=\"error\" />",
177
+ "color:info": "<Notification color=\"info\" />",
178
+ "color:neutral": "<Notification color=\"neutral\" />",
179
+ "color:success": "<Notification color=\"success\" />",
180
+ "color:warning": "<Notification color=\"warning\" />",
181
+ "type:callout": "<Notification type=\"callout\" />",
182
+ "type:floating": "<Notification type=\"floating\" />",
183
+ "type:full-width": "<Notification type=\"full-width\" />",
184
+ "type:message": "<Notification type=\"message\" />"
177
185
  }
178
186
  }
179
187
  }
@@ -34,7 +34,7 @@
34
34
  "Leading/Trailing 혼합 사용 금지"
35
35
  ],
36
36
  "seeAlso": [
37
- "input",
37
+ "input-base",
38
38
  "slider",
39
39
  "tooltip",
40
40
  "label"
@@ -0,0 +1,135 @@
1
+ {
2
+ "name": "page-title",
3
+ "exportName": "PageTitle",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "layout",
7
+ "description": "PageTitle은 페이지 최상단에 위치하며, 현재 페이지의 위치·목적·핵심 액션을 정의하는 영역입니다.",
8
+ "aliases": [
9
+ "PageTitle",
10
+ "Page Header",
11
+ "Page Title",
12
+ "페이지 타이틀",
13
+ "페이지 헤더",
14
+ "BreadCrumb",
15
+ "Back Button",
16
+ "Title",
17
+ "Action",
18
+ "Fixed Header",
19
+ "Tab Wrapper",
20
+ "탭 래퍼",
21
+ "페이지 탭",
22
+ "페이지 레벨 탭",
23
+ "NCDS"
24
+ ],
25
+ "hasChildren": false,
26
+ "whenToUse": [
27
+ "PageTitle은 페이지의 목적과 위치를 한눈에 전달하고, 핵심 액션의 진입점이 되는 영역이다",
28
+ "일반 목록/설정 페이지",
29
+ "상세 조회/수정 페이지",
30
+ "스크롤 시 상단 고정",
31
+ "Block Header와 혼동 시"
32
+ ],
33
+ "forbiddenRules": [
34
+ "PageTitle에 Primary 버튼 2개 이상 배치 금지",
35
+ "PageTitle 배경색 변경 금지",
36
+ "Title에 두 줄 이상의 긴 텍스트 지양",
37
+ "Fixed Variant에서 BreadCrumb 노출 금지",
38
+ "Block Header와 PageTitle 스타일 혼용 금지",
39
+ "Back Button을 일반 페이지(Default)에서 사용 금지",
40
+ "Guide Button의 스타일 변경 금지",
41
+ "PageTitle 영역에 Form 요소 배치 금지",
42
+ "BreadCrumb 구분자에 텍스트 문자(`>`) 사용 금지",
43
+ "Action Button을 Title Row/Title Container 안에 배치 금지",
44
+ "NCDS 외부 아이콘 사용 금지",
45
+ "Default ↔ Fixed 전환 미구현 금지"
46
+ ],
47
+ "seeAlso": [
48
+ "bread-crumb",
49
+ "button",
50
+ "block-header",
51
+ "block-container",
52
+ "horizontal-tab"
53
+ ],
54
+ "htmlElement": "header",
55
+ "props": {
56
+ "breadcrumbItems": {
57
+ "type": "object",
58
+ "required": false,
59
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/layout/page-title/PageTitle\").PageTitleBreadcrumbItem[] | undefined",
60
+ "properties": {
61
+ "label": {
62
+ "type": "string",
63
+ "required": true
64
+ },
65
+ "href": {
66
+ "type": "string",
67
+ "required": false
68
+ }
69
+ }
70
+ },
71
+ "className": {
72
+ "type": "string",
73
+ "required": false
74
+ },
75
+ "guideButton": {
76
+ "type": "ReactNode",
77
+ "required": false
78
+ },
79
+ "onBack": {
80
+ "type": "function",
81
+ "required": false
82
+ },
83
+ "primaryAction": {
84
+ "type": "ReactNode",
85
+ "required": false
86
+ },
87
+ "secondaryAction": {
88
+ "type": "ReactNode",
89
+ "required": false
90
+ },
91
+ "title": {
92
+ "type": "string",
93
+ "required": true
94
+ },
95
+ "variant": {
96
+ "type": "enum",
97
+ "required": false,
98
+ "values": [
99
+ "default",
100
+ "detail",
101
+ "fixed",
102
+ "fixed-detail"
103
+ ],
104
+ "default": "default"
105
+ }
106
+ },
107
+ "html": {},
108
+ "bemClasses": [
109
+ "ncua-page-title",
110
+ "ncua-page-title--fixed",
111
+ "ncua-page-title__actions",
112
+ "ncua-page-title__back-btn",
113
+ "ncua-page-title__breadcrumb",
114
+ "ncua-page-title__breadcrumb-current",
115
+ "ncua-page-title__breadcrumb-item",
116
+ "ncua-page-title__breadcrumb-separator",
117
+ "ncua-page-title__container",
118
+ "ncua-page-title__guide-btn",
119
+ "ncua-page-title__header",
120
+ "ncua-page-title__header--has-breadcrumb",
121
+ "ncua-page-title__page-header",
122
+ "ncua-page-title__title",
123
+ "ncua-page-title__title-row"
124
+ ],
125
+ "usage": {
126
+ "import": "import { PageTitle } from '@ncds/ui-admin';",
127
+ "react": {
128
+ "default": "<PageTitle title=\"\" />",
129
+ "variant:default": "<PageTitle variant=\"default\" title=\"\" />",
130
+ "variant:detail": "<PageTitle variant=\"detail\" title=\"\" />",
131
+ "variant:fixed": "<PageTitle variant=\"fixed\" title=\"\" />",
132
+ "variant:fixed-detail": "<PageTitle variant=\"fixed-detail\" title=\"\" />"
133
+ }
134
+ }
135
+ }