@ncds/ui-admin-mcp 1.0.0-alpha.2 → 1.0.0-alpha.20
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.
- package/bin/components.bundle.js +15 -19
- package/bin/definitions/external/editor.d.ts +50 -0
- package/bin/definitions/external/editor.js +53 -0
- package/bin/definitions/external/step-guide.d.ts +61 -0
- package/bin/definitions/external/step-guide.js +52 -0
- package/bin/definitions/instructions.md +194 -10
- package/bin/definitions/js-api.json +352 -0
- package/bin/definitions/rules.json +36 -4
- package/bin/definitions/tool-definitions.json +33 -9
- package/bin/overrides/composition.json +2500 -0
- package/bin/server.d.ts +5 -0
- package/bin/server.js +97 -33
- package/bin/server.mjs +0 -0
- package/bin/tools/external/editor.d.ts +18 -0
- package/bin/tools/external/editor.js +88 -0
- package/bin/tools/external/step-guide.d.ts +19 -0
- package/bin/tools/external/step-guide.js +79 -0
- package/bin/tools/getComponentProps.d.ts +3 -0
- package/bin/tools/getComponentProps.js +12 -3
- package/bin/tools/listCompositionOverrides.d.ts +61 -0
- package/bin/tools/listCompositionOverrides.js +156 -0
- package/bin/tools/ping.d.ts +1 -1
- package/bin/tools/renderToHtml.d.ts +38 -7
- package/bin/tools/renderToHtml.js +785 -110
- package/bin/tools/searchComponent.d.ts +5 -0
- package/bin/tools/searchComponent.js +3 -3
- package/bin/tools/validateHtml.d.ts +8 -6
- package/bin/tools/validateHtml.js +74 -6
- package/bin/types.d.ts +60 -1
- package/bin/utils/bemValidator.d.ts +16 -8
- package/bin/utils/bemValidator.js +16 -4
- package/bin/utils/compliance.d.ts +7 -6
- package/bin/utils/compliance.js +8 -4
- package/bin/utils/dataLoader.d.ts +43 -14
- package/bin/utils/dataLoader.js +125 -22
- package/bin/utils/domEnvironment.js +51 -0
- package/bin/utils/fuzzyMatch.d.ts +4 -0
- package/bin/utils/fuzzyMatch.js +13 -3
- package/bin/utils/logger.d.ts +5 -5
- package/bin/utils/logger.js +5 -5
- package/bin/utils/response.d.ts +4 -2
- package/bin/utils/response.js +15 -4
- package/bin/utils/tokenValidator.d.ts +4 -3
- package/bin/utils/tokenValidator.js +13 -11
- package/bin/version.d.ts +4 -2
- package/bin/version.js +4 -2
- package/data/_icons.json +357 -2
- package/data/_meta.json +4 -5
- package/data/_tokens.json +8 -8
- package/data/badge-group.json +181 -4
- package/data/badge.json +146 -14
- package/data/block-container.json +95 -0
- package/data/block-header.json +208 -0
- package/data/bread-crumb.json +38 -2
- package/data/button-group.json +59 -0
- package/data/button.json +124 -1
- package/data/carousel-arrow.json +6 -11
- package/data/carousel-number-group.json +2 -12
- package/data/checkbox.json +1 -1
- package/data/combo-box.json +32 -8
- package/data/data-grid.json +240 -0
- package/data/date-picker.json +22 -2
- package/data/divider.json +1 -1
- package/data/dot.json +2 -2
- package/data/dropdown.json +187 -20
- package/data/editor.json +85 -0
- package/data/empty-state.json +168 -3
- package/data/featured-icon.json +20 -5
- package/data/file-input.json +176 -10
- package/data/horizontal-tab.json +219 -3
- package/data/image-file-input.json +176 -10
- package/data/input-base.json +165 -4
- package/data/modal.json +266 -5
- package/data/notification.json +56 -40
- package/data/number-input.json +164 -4
- package/data/page-title.json +135 -0
- package/data/pagination.json +8 -4
- package/data/password-input.json +252 -13
- package/data/progress-bar.json +28 -8
- package/data/progress-circle.json +9 -6
- package/data/radio.json +4 -3
- package/data/range-date-picker-with-buttons.json +187 -7
- package/data/range-date-picker.json +186 -6
- package/data/select-box.json +48 -16
- package/data/select.json +35 -25
- package/data/slider.json +1 -1
- package/data/spinner.json +3 -4
- package/data/step-guide.json +130 -0
- package/data/switch.json +66 -6
- package/data/table.json +293 -0
- package/data/tag.json +68 -6
- package/data/textarea.json +1 -1
- package/data/toggle.json +2 -2
- package/data/tooltip.json +16 -3
- package/data/vertical-tab.json +220 -3
- package/package.json +27 -25
- package/bin/instructions.d.ts +0 -1
- package/bin/instructions.js +0 -14
- package/bin/tools/getComponentHtml.d.ts +0 -3
- package/bin/tools/getComponentHtml.js +0 -30
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "data-grid",
|
|
3
|
+
"exportName": "DataGrid",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "data-display",
|
|
7
|
+
"description": "DataGrid는 관리자 화면에서 대량의 데이터를 테이블 형태로 조회·관리하기 위한 핵심 컴포넌트입니다. 조회 결과 리스트, 일반 가로형·세로형 테이블로 구분되며, Header·데이터 필드·선택·액션·필터·정렬·페이지네이션·검색결과 영역 등으로 구성됩니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"DataGrid",
|
|
10
|
+
"데이터그리드",
|
|
11
|
+
"테이블",
|
|
12
|
+
"Table",
|
|
13
|
+
"Grid",
|
|
14
|
+
"조회결과",
|
|
15
|
+
"가로형",
|
|
16
|
+
"세로형",
|
|
17
|
+
"Header",
|
|
18
|
+
"Pagination",
|
|
19
|
+
"Filter",
|
|
20
|
+
"Sort",
|
|
21
|
+
"Action Button",
|
|
22
|
+
"Row Selection",
|
|
23
|
+
"Reorder",
|
|
24
|
+
"Expand",
|
|
25
|
+
"Collapse",
|
|
26
|
+
"Empty State",
|
|
27
|
+
"Badge",
|
|
28
|
+
"Checkbox",
|
|
29
|
+
"DataGrid.SearchFilter",
|
|
30
|
+
"DataGrid.Summary",
|
|
31
|
+
"DataGrid.FilterBar",
|
|
32
|
+
"DataGrid.ActionBar",
|
|
33
|
+
"DataGrid.Table",
|
|
34
|
+
"DataGrid.Pagination",
|
|
35
|
+
"variant",
|
|
36
|
+
"search-result",
|
|
37
|
+
"horizontal",
|
|
38
|
+
"position",
|
|
39
|
+
"align",
|
|
40
|
+
"fixedHeader",
|
|
41
|
+
"maxHeight",
|
|
42
|
+
"hoverable",
|
|
43
|
+
"selectable",
|
|
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 예외"
|
|
63
|
+
],
|
|
64
|
+
"hasChildren": true,
|
|
65
|
+
"whenToUse": [
|
|
66
|
+
"DataGrid는 반드시 Block 또는 Tab 구조 내에 포함되어야 하며, Block > 세부항목 내부에 Table 구조를 중첩하는 것은 지양한다 (5개 이하 정보 제공 시에만 예외 허용)",
|
|
67
|
+
"10개 이상 데이터 관리 화면에서 적용",
|
|
68
|
+
"관리자가 데이터를 조작하는 화면",
|
|
69
|
+
"대량 데이터 일괄 처리 화면"
|
|
70
|
+
],
|
|
71
|
+
"forbiddenRules": [
|
|
72
|
+
"블록 내부 중첩 테이블 남발 금지",
|
|
73
|
+
"▲▼ 형태 정렬 UI 사용 금지",
|
|
74
|
+
"과도한 Badge/Icon 사용 금지",
|
|
75
|
+
"Row Height 임의 수정 금지",
|
|
76
|
+
"프로젝트별 임의 컬럼 정렬 변경 금지"
|
|
77
|
+
],
|
|
78
|
+
"seeAlso": [
|
|
79
|
+
"table",
|
|
80
|
+
"checkbox",
|
|
81
|
+
"radio",
|
|
82
|
+
"pagination",
|
|
83
|
+
"badge",
|
|
84
|
+
"empty-state",
|
|
85
|
+
"button",
|
|
86
|
+
"block-container"
|
|
87
|
+
],
|
|
88
|
+
"htmlElement": "div",
|
|
89
|
+
"props": {
|
|
90
|
+
"children": {
|
|
91
|
+
"type": "ReactNode",
|
|
92
|
+
"required": true
|
|
93
|
+
},
|
|
94
|
+
"variant": {
|
|
95
|
+
"type": "enum",
|
|
96
|
+
"required": false,
|
|
97
|
+
"values": [
|
|
98
|
+
"horizontal",
|
|
99
|
+
"search-result"
|
|
100
|
+
],
|
|
101
|
+
"default": "search-result"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"subComponents": {
|
|
105
|
+
"DataGrid.SearchFilter": {
|
|
106
|
+
"props": {
|
|
107
|
+
"children": {
|
|
108
|
+
"type": "ReactNode",
|
|
109
|
+
"required": true
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"DataGrid.Summary": {
|
|
114
|
+
"props": {
|
|
115
|
+
"children": {
|
|
116
|
+
"type": "ReactNode",
|
|
117
|
+
"required": true
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"DataGrid.FilterBar": {
|
|
122
|
+
"props": {
|
|
123
|
+
"children": {
|
|
124
|
+
"type": "ReactNode",
|
|
125
|
+
"required": true
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"DataGrid.ActionBar": {
|
|
130
|
+
"props": {
|
|
131
|
+
"align": {
|
|
132
|
+
"type": "enum",
|
|
133
|
+
"required": false,
|
|
134
|
+
"values": [
|
|
135
|
+
"left",
|
|
136
|
+
"right",
|
|
137
|
+
"space-between"
|
|
138
|
+
],
|
|
139
|
+
"default": "space-between"
|
|
140
|
+
},
|
|
141
|
+
"children": {
|
|
142
|
+
"type": "ReactNode",
|
|
143
|
+
"required": true
|
|
144
|
+
},
|
|
145
|
+
"position": {
|
|
146
|
+
"type": "enum",
|
|
147
|
+
"required": false,
|
|
148
|
+
"values": [
|
|
149
|
+
"bottom",
|
|
150
|
+
"top"
|
|
151
|
+
],
|
|
152
|
+
"default": "top"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"DataGrid.Table": {
|
|
157
|
+
"props": {
|
|
158
|
+
"children": {
|
|
159
|
+
"type": "ReactNode",
|
|
160
|
+
"required": true
|
|
161
|
+
},
|
|
162
|
+
"className": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"required": false
|
|
165
|
+
},
|
|
166
|
+
"fixedHeader": {
|
|
167
|
+
"type": "boolean",
|
|
168
|
+
"required": false
|
|
169
|
+
},
|
|
170
|
+
"horizontalScroll": {
|
|
171
|
+
"type": "boolean",
|
|
172
|
+
"required": false
|
|
173
|
+
},
|
|
174
|
+
"hoverable": {
|
|
175
|
+
"type": "boolean",
|
|
176
|
+
"required": false
|
|
177
|
+
},
|
|
178
|
+
"maxHeight": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"required": false,
|
|
181
|
+
"rawType": "string | number | undefined"
|
|
182
|
+
},
|
|
183
|
+
"minWidth": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"required": false,
|
|
186
|
+
"rawType": "string | number | undefined"
|
|
187
|
+
},
|
|
188
|
+
"selectable": {
|
|
189
|
+
"type": "boolean",
|
|
190
|
+
"required": false
|
|
191
|
+
},
|
|
192
|
+
"type": {
|
|
193
|
+
"type": "enum",
|
|
194
|
+
"required": false,
|
|
195
|
+
"values": [
|
|
196
|
+
"horizontal",
|
|
197
|
+
"vertical"
|
|
198
|
+
],
|
|
199
|
+
"default": "horizontal"
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"DataGrid.Pagination": {
|
|
204
|
+
"props": {
|
|
205
|
+
"children": {
|
|
206
|
+
"type": "ReactNode",
|
|
207
|
+
"required": true
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"html": {},
|
|
213
|
+
"bemClasses": [
|
|
214
|
+
"ncua-data-grid",
|
|
215
|
+
"ncua-data-grid--horizontal",
|
|
216
|
+
"ncua-data-grid--search-result",
|
|
217
|
+
"ncua-data-grid__action-bar",
|
|
218
|
+
"ncua-data-grid__action-bar ncua-data-grid__action-bar--bottom",
|
|
219
|
+
"ncua-data-grid__action-bar--bottom",
|
|
220
|
+
"ncua-data-grid__action-bar--left",
|
|
221
|
+
"ncua-data-grid__action-bar--right",
|
|
222
|
+
"ncua-data-grid__action-bar--space-between",
|
|
223
|
+
"ncua-data-grid__action-bar--top",
|
|
224
|
+
"ncua-data-grid__filter-bar",
|
|
225
|
+
"ncua-data-grid__pagination",
|
|
226
|
+
"ncua-data-grid__search-filter",
|
|
227
|
+
"ncua-data-grid__summary",
|
|
228
|
+
"ncua-data-grid__table",
|
|
229
|
+
"ncua-data-grid__table-wrapper",
|
|
230
|
+
"ncua-table--in-data-grid"
|
|
231
|
+
],
|
|
232
|
+
"usage": {
|
|
233
|
+
"import": "import { DataGrid } from '@ncds/ui-admin';",
|
|
234
|
+
"react": {
|
|
235
|
+
"default": "<DataGrid children=\"예시\" />",
|
|
236
|
+
"variant:horizontal": "<DataGrid variant=\"horizontal\" children=\"예시\" />",
|
|
237
|
+
"variant:search-result": "<DataGrid variant=\"search-result\" children=\"예시\" />"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
package/data/date-picker.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"exportName": "DatePicker",
|
|
4
4
|
"importPath": "@ncds/ui-admin",
|
|
5
5
|
"jsRequired": true,
|
|
6
|
-
"category": "input",
|
|
6
|
+
"category": "forms-and-input",
|
|
7
7
|
"description": "DatePicker는 등록일, 노출일, 검색 기간 등 날짜 또는 시간 설정이 필요한 경우 사용하는 선택 위젯입니다.",
|
|
8
8
|
"aliases": [
|
|
9
9
|
"날짜선택위젯",
|
|
@@ -37,6 +37,19 @@
|
|
|
37
37
|
"range-date-picker"
|
|
38
38
|
],
|
|
39
39
|
"htmlElement": "input",
|
|
40
|
+
"usageExamples": {
|
|
41
|
+
"default": {
|
|
42
|
+
"currentDate": "2026-03-24",
|
|
43
|
+
"size": "sm"
|
|
44
|
+
},
|
|
45
|
+
"withTime": {
|
|
46
|
+
"currentDate": "2026-03-24 14:30",
|
|
47
|
+
"datePickerOptions": {
|
|
48
|
+
"enableTime": true,
|
|
49
|
+
"dateFormat": "Y-m-d H:i"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
40
53
|
"props": {
|
|
41
54
|
"className": {
|
|
42
55
|
"type": "string",
|
|
@@ -48,7 +61,8 @@
|
|
|
48
61
|
},
|
|
49
62
|
"datePickerOptions": {
|
|
50
63
|
"type": "object",
|
|
51
|
-
"required": false
|
|
64
|
+
"required": false,
|
|
65
|
+
"rawType": "Partial<import(\"/home/runner/_work/ncds/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
|
|
52
66
|
},
|
|
53
67
|
"destructive": {
|
|
54
68
|
"type": "string",
|
|
@@ -71,6 +85,11 @@
|
|
|
71
85
|
"type": "string",
|
|
72
86
|
"required": false
|
|
73
87
|
},
|
|
88
|
+
"portal": {
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"required": false,
|
|
91
|
+
"default": false
|
|
92
|
+
},
|
|
74
93
|
"shouldFocus": {
|
|
75
94
|
"type": "boolean",
|
|
76
95
|
"required": false,
|
|
@@ -92,6 +111,7 @@
|
|
|
92
111
|
"ncua-date-picker--destructive",
|
|
93
112
|
"ncua-date-picker--disabled",
|
|
94
113
|
"ncua-date-picker--has-time",
|
|
114
|
+
"ncua-date-picker--portal",
|
|
95
115
|
"ncua-date-picker--sm",
|
|
96
116
|
"ncua-date-picker--xs",
|
|
97
117
|
"ncua-date-picker__destructive",
|
package/data/divider.json
CHANGED
package/data/dot.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"exportName": "Dot",
|
|
4
4
|
"importPath": "@ncds/ui-admin",
|
|
5
5
|
"jsRequired": false,
|
|
6
|
-
"category": "
|
|
6
|
+
"category": "image-and-icons",
|
|
7
7
|
"description": "Dot 컴포넌트는 상태나 알림을 시각적으로 표시하기 위한 작은 원형 표시기입니다",
|
|
8
8
|
"aliases": [
|
|
9
9
|
"Dot",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"md",
|
|
68
68
|
"sm"
|
|
69
69
|
],
|
|
70
|
-
"default": "
|
|
70
|
+
"default": "sm"
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"html": {},
|
package/data/dropdown.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"name": "dropdown",
|
|
3
3
|
"exportName": "Dropdown",
|
|
4
4
|
"importPath": "@ncds/ui-admin",
|
|
5
|
-
"jsRequired":
|
|
6
|
-
"category": "
|
|
5
|
+
"jsRequired": true,
|
|
6
|
+
"category": "overlays",
|
|
7
7
|
"description": "Dropdown(메뉴형)은 버튼, 아이콘, 아바타 등 트리거 요소를 통해 숨겨진 메뉴 또는 작업(Action) 목록을 레이어 형태로 노출하는 컴포넌트입니다.",
|
|
8
8
|
"aliases": [
|
|
9
9
|
"Dropdown",
|
|
@@ -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
|
"메뉴명 말줄임 처리 금지",
|
|
@@ -44,6 +49,52 @@
|
|
|
44
49
|
"icon",
|
|
45
50
|
"icon-button"
|
|
46
51
|
],
|
|
52
|
+
"usageExamples": {
|
|
53
|
+
"buttonTrigger": {
|
|
54
|
+
"trigger": {
|
|
55
|
+
"type": "button",
|
|
56
|
+
"text": "메뉴"
|
|
57
|
+
},
|
|
58
|
+
"groups": [
|
|
59
|
+
{
|
|
60
|
+
"items": [
|
|
61
|
+
{
|
|
62
|
+
"id": "edit",
|
|
63
|
+
"text": "수정"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "copy",
|
|
67
|
+
"text": "복사"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "delete",
|
|
71
|
+
"text": "삭제",
|
|
72
|
+
"type": "danger"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"iconTrigger": {
|
|
79
|
+
"trigger": {
|
|
80
|
+
"type": "icon"
|
|
81
|
+
},
|
|
82
|
+
"groups": [
|
|
83
|
+
{
|
|
84
|
+
"items": [
|
|
85
|
+
{
|
|
86
|
+
"id": "setting",
|
|
87
|
+
"text": "설정"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "logout",
|
|
91
|
+
"text": "로그아웃"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
},
|
|
47
98
|
"props": {
|
|
48
99
|
"align": {
|
|
49
100
|
"type": "enum",
|
|
@@ -51,47 +102,156 @@
|
|
|
51
102
|
"values": [
|
|
52
103
|
"left",
|
|
53
104
|
"right"
|
|
54
|
-
]
|
|
55
|
-
"default": "left"
|
|
105
|
+
]
|
|
56
106
|
},
|
|
57
107
|
"className": {
|
|
58
108
|
"type": "string",
|
|
59
109
|
"required": false
|
|
60
110
|
},
|
|
61
|
-
"closeOnClickItem": {
|
|
62
|
-
"type": "boolean",
|
|
63
|
-
"required": false,
|
|
64
|
-
"default": true
|
|
65
|
-
},
|
|
66
111
|
"closeOnClickOutside": {
|
|
67
112
|
"type": "boolean",
|
|
68
|
-
"required": false
|
|
69
|
-
"default": true
|
|
113
|
+
"required": false
|
|
70
114
|
},
|
|
71
115
|
"groups": {
|
|
72
|
-
"type": "
|
|
116
|
+
"type": "object",
|
|
73
117
|
"required": true,
|
|
74
|
-
"rawType": "import(\"/
|
|
118
|
+
"rawType": "import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownGroup[]",
|
|
119
|
+
"properties": {
|
|
120
|
+
"items": {
|
|
121
|
+
"type": "object",
|
|
122
|
+
"required": true,
|
|
123
|
+
"rawType": "import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownItemType[]",
|
|
124
|
+
"properties": {
|
|
125
|
+
"id": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"required": true
|
|
128
|
+
},
|
|
129
|
+
"text": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"required": true
|
|
132
|
+
},
|
|
133
|
+
"icon": {
|
|
134
|
+
"type": "function",
|
|
135
|
+
"required": false,
|
|
136
|
+
"semantic": "icon-component"
|
|
137
|
+
},
|
|
138
|
+
"shortcut": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"required": false
|
|
141
|
+
},
|
|
142
|
+
"onClick": {
|
|
143
|
+
"type": "function",
|
|
144
|
+
"required": false
|
|
145
|
+
},
|
|
146
|
+
"disabled": {
|
|
147
|
+
"type": "boolean",
|
|
148
|
+
"required": false
|
|
149
|
+
},
|
|
150
|
+
"type": {
|
|
151
|
+
"type": "enum",
|
|
152
|
+
"required": false,
|
|
153
|
+
"values": [
|
|
154
|
+
"danger",
|
|
155
|
+
"default"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"className": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"required": false
|
|
161
|
+
},
|
|
162
|
+
"visible": {
|
|
163
|
+
"type": "boolean",
|
|
164
|
+
"required": false
|
|
165
|
+
},
|
|
166
|
+
"required": {
|
|
167
|
+
"type": "boolean",
|
|
168
|
+
"required": false
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"sortable": {
|
|
173
|
+
"type": "boolean",
|
|
174
|
+
"required": false
|
|
175
|
+
}
|
|
176
|
+
}
|
|
75
177
|
},
|
|
76
178
|
"header": {
|
|
77
179
|
"type": "object",
|
|
78
|
-
"required": false
|
|
180
|
+
"required": false,
|
|
181
|
+
"rawType": "import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownHeaderType | undefined",
|
|
182
|
+
"properties": {
|
|
183
|
+
"type": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"required": true,
|
|
186
|
+
"rawType": "\"avatar\""
|
|
187
|
+
},
|
|
188
|
+
"avatar": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"required": false
|
|
191
|
+
},
|
|
192
|
+
"title": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"required": true
|
|
195
|
+
},
|
|
196
|
+
"subtitle": {
|
|
197
|
+
"type": "string",
|
|
198
|
+
"required": false
|
|
199
|
+
}
|
|
200
|
+
}
|
|
79
201
|
},
|
|
80
202
|
"opened": {
|
|
81
203
|
"type": "boolean",
|
|
82
|
-
"required": false
|
|
83
|
-
"default": false
|
|
204
|
+
"required": false
|
|
84
205
|
},
|
|
85
206
|
"trigger": {
|
|
86
207
|
"type": "object",
|
|
87
|
-
"required": true
|
|
208
|
+
"required": true,
|
|
209
|
+
"rawType": "import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").AvatarTrigger | import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").ButtonTrigger | import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").IconTrigger | import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").CustomTrigger",
|
|
210
|
+
"properties": {
|
|
211
|
+
"type": {
|
|
212
|
+
"type": "string",
|
|
213
|
+
"required": true,
|
|
214
|
+
"rawType": "\"avatar\""
|
|
215
|
+
},
|
|
216
|
+
"avatar": {
|
|
217
|
+
"type": "string",
|
|
218
|
+
"required": false
|
|
219
|
+
},
|
|
220
|
+
"text": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"required": false
|
|
223
|
+
},
|
|
224
|
+
"icon": {
|
|
225
|
+
"type": "function",
|
|
226
|
+
"required": false,
|
|
227
|
+
"semantic": "icon-component"
|
|
228
|
+
},
|
|
229
|
+
"children": {
|
|
230
|
+
"type": "ReactNode",
|
|
231
|
+
"required": false
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"usePortal": {
|
|
236
|
+
"type": "boolean",
|
|
237
|
+
"required": false
|
|
238
|
+
},
|
|
239
|
+
"variant": {
|
|
240
|
+
"type": "enum",
|
|
241
|
+
"required": false,
|
|
242
|
+
"values": [
|
|
243
|
+
"action",
|
|
244
|
+
"config"
|
|
245
|
+
]
|
|
88
246
|
}
|
|
89
247
|
},
|
|
90
248
|
"html": {},
|
|
91
249
|
"bemClasses": [
|
|
92
250
|
"ncua-dropdown",
|
|
251
|
+
"ncua-dropdown-",
|
|
93
252
|
"ncua-dropdown--right",
|
|
94
253
|
"ncua-dropdown__avatar",
|
|
254
|
+
"ncua-dropdown__footer",
|
|
95
255
|
"ncua-dropdown__group",
|
|
96
256
|
"ncua-dropdown__header",
|
|
97
257
|
"ncua-dropdown__header-avatar-group",
|
|
@@ -99,13 +259,18 @@
|
|
|
99
259
|
"ncua-dropdown__header-text",
|
|
100
260
|
"ncua-dropdown__header-title",
|
|
101
261
|
"ncua-dropdown__item",
|
|
102
|
-
"ncua-dropdown__item
|
|
262
|
+
"ncua-dropdown__item--config",
|
|
263
|
+
"ncua-dropdown__item--drag-preview",
|
|
103
264
|
"ncua-dropdown__item-content",
|
|
265
|
+
"ncua-dropdown__item-drag-handle",
|
|
266
|
+
"ncua-dropdown__item-drop-indicator",
|
|
104
267
|
"ncua-dropdown__item-icon",
|
|
105
268
|
"ncua-dropdown__item-shortcut",
|
|
106
269
|
"ncua-dropdown__item-text",
|
|
107
270
|
"ncua-dropdown__item-text-group",
|
|
271
|
+
"ncua-dropdown__item-visibility",
|
|
108
272
|
"ncua-dropdown__menu",
|
|
273
|
+
"ncua-dropdown__menu--portal",
|
|
109
274
|
"ncua-dropdown__menu-items",
|
|
110
275
|
"ncua-dropdown__trigger",
|
|
111
276
|
"ncua-dropdown__trigger ncua-dropdown__trigger--avatar",
|
|
@@ -117,7 +282,9 @@
|
|
|
117
282
|
"react": {
|
|
118
283
|
"default": "<Dropdown groups=\"\" trigger=\"\" />",
|
|
119
284
|
"align:left": "<Dropdown align=\"left\" groups=\"\" trigger=\"\" />",
|
|
120
|
-
"align:right": "<Dropdown align=\"right\" groups=\"\" trigger=\"\" />"
|
|
285
|
+
"align:right": "<Dropdown align=\"right\" groups=\"\" trigger=\"\" />",
|
|
286
|
+
"variant:action": "<Dropdown variant=\"action\" groups=\"\" trigger=\"\" />",
|
|
287
|
+
"variant:config": "<Dropdown variant=\"config\" groups=\"\" trigger=\"\" />"
|
|
121
288
|
}
|
|
122
289
|
}
|
|
123
290
|
}
|
package/data/editor.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "editor",
|
|
3
|
+
"exportName": "NcdsEditor",
|
|
4
|
+
"importPath": "@ncds/editor-html",
|
|
5
|
+
"jsRequired": true,
|
|
6
|
+
"category": "form",
|
|
7
|
+
"description": "froala 기반 WYSIWYG 에디터. textarea 를 in-place 변환. 외부 패키지(@ncds/editor-html) — render_to_html 호출 시 외부 분기 모듈에서 응답 직접 조립.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"Editor",
|
|
10
|
+
"에디터",
|
|
11
|
+
"WYSIWYG",
|
|
12
|
+
"위지윅",
|
|
13
|
+
"Froala",
|
|
14
|
+
"GodoEditor",
|
|
15
|
+
"NcdsEditor",
|
|
16
|
+
"리치 텍스트",
|
|
17
|
+
"rich text",
|
|
18
|
+
"ncds-editor",
|
|
19
|
+
"editor-html"
|
|
20
|
+
],
|
|
21
|
+
"hasChildren": false,
|
|
22
|
+
"whenToUse": [
|
|
23
|
+
"장문/리치 텍스트 입력이 필요한 경우 (게시글 본문·상품 설명·뉴스레터 작성 등)",
|
|
24
|
+
"이미지·표·링크 등 인라인 컨텐츠 삽입이 필요한 경우",
|
|
25
|
+
"한국어 폰트 다양성이 중요한 경우 (나눔고딕·바탕 등 9종 지원)"
|
|
26
|
+
],
|
|
27
|
+
"forbiddenRules": [
|
|
28
|
+
"단순 한 줄 텍스트 입력에 사용 금지 (Input 컴포넌트 사용)",
|
|
29
|
+
"컴포넌트 자식(children)으로 직접 마크업 주입 금지 — setHTML(html) API 사용",
|
|
30
|
+
"동적 삽입(모달 안에 textarea 추가) 시 mcp 출력 그대로 사용 금지 — window.ncdsEditor.initAll() 수동 호출 필요 (현재 mcp 미지원, 후속 스토리)"
|
|
31
|
+
],
|
|
32
|
+
"seeAlso": ["input", "textarea"],
|
|
33
|
+
"usageExamples": {
|
|
34
|
+
"default": {
|
|
35
|
+
"heightMin": 300,
|
|
36
|
+
"heightMax": 600,
|
|
37
|
+
"placeholderText": "내용을 입력하세요."
|
|
38
|
+
},
|
|
39
|
+
"resizable": {
|
|
40
|
+
"heightMin": 150,
|
|
41
|
+
"heightMax": 400,
|
|
42
|
+
"heightResize": true,
|
|
43
|
+
"placeholderText": "높이를 조정할 수 있습니다."
|
|
44
|
+
},
|
|
45
|
+
"withCustomImageUpload": {
|
|
46
|
+
"heightMin": 200,
|
|
47
|
+
"heightMax": 400,
|
|
48
|
+
"placeholderText": "이미지 업로드가 가능합니다.",
|
|
49
|
+
"imageUploadCallback": "customImageUploadHandler"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"props": {
|
|
53
|
+
"heightMin": {
|
|
54
|
+
"type": "number",
|
|
55
|
+
"required": false,
|
|
56
|
+
"default": 300
|
|
57
|
+
},
|
|
58
|
+
"heightMax": {
|
|
59
|
+
"type": "number",
|
|
60
|
+
"required": false,
|
|
61
|
+
"default": 600
|
|
62
|
+
},
|
|
63
|
+
"heightResize": {
|
|
64
|
+
"type": "boolean",
|
|
65
|
+
"required": false,
|
|
66
|
+
"default": false
|
|
67
|
+
},
|
|
68
|
+
"placeholderText": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"required": false,
|
|
71
|
+
"default": "내용을 입력하세요."
|
|
72
|
+
},
|
|
73
|
+
"imageUploadCallback": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"required": false,
|
|
76
|
+
"description": "전역 이미지 업로드 콜백 함수명. 마크업의 data-image-upload-callback 속성으로 직렬화."
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"html": {},
|
|
80
|
+
"bemClasses": ["ncds-editor-container", "fr-toolbar", "fr-element", "fr-box", "fr-resize-handle"],
|
|
81
|
+
"usage": {
|
|
82
|
+
"import": "// CDN 로드 (npm import 미지원, vanilla JS only)\n<script src=\"https://fe-sdk.cdn-nhncommerce.com/@ncds/editor/0.0/ncds-editor.js\"></script>",
|
|
83
|
+
"react": {}
|
|
84
|
+
}
|
|
85
|
+
}
|