@ncds/ui-admin-mcp 1.0.0-alpha.10

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 (94) hide show
  1. package/README.md +113 -0
  2. package/bin/components.bundle.js +1 -0
  3. package/bin/definitions/compliance-rules.json +64 -0
  4. package/bin/definitions/instructions.md +164 -0
  5. package/bin/definitions/js-api.json +165 -0
  6. package/bin/definitions/rules.json +59 -0
  7. package/bin/definitions/token-descriptions.json +27 -0
  8. package/bin/definitions/tool-definitions.json +58 -0
  9. package/bin/server.d.ts +1 -0
  10. package/bin/server.js +217 -0
  11. package/bin/server.mjs +8 -0
  12. package/bin/tools/getComponentProps.d.ts +4 -0
  13. package/bin/tools/getComponentProps.js +20 -0
  14. package/bin/tools/getDesignTokens.d.ts +13 -0
  15. package/bin/tools/getDesignTokens.js +20 -0
  16. package/bin/tools/listComponents.d.ts +16 -0
  17. package/bin/tools/listComponents.js +24 -0
  18. package/bin/tools/listIcons.d.ts +22 -0
  19. package/bin/tools/listIcons.js +23 -0
  20. package/bin/tools/ping.d.ts +17 -0
  21. package/bin/tools/ping.js +20 -0
  22. package/bin/tools/renderToHtml.d.ts +23 -0
  23. package/bin/tools/renderToHtml.js +267 -0
  24. package/bin/tools/searchComponent.d.ts +4 -0
  25. package/bin/tools/searchComponent.js +33 -0
  26. package/bin/tools/searchIcon.d.ts +7 -0
  27. package/bin/tools/searchIcon.js +19 -0
  28. package/bin/tools/validateHtml.d.ts +18 -0
  29. package/bin/tools/validateHtml.js +85 -0
  30. package/bin/types.d.ts +123 -0
  31. package/bin/types.js +5 -0
  32. package/bin/utils/bemValidator.d.ts +36 -0
  33. package/bin/utils/bemValidator.js +198 -0
  34. package/bin/utils/compliance.d.ts +52 -0
  35. package/bin/utils/compliance.js +199 -0
  36. package/bin/utils/dataLoader.d.ts +35 -0
  37. package/bin/utils/dataLoader.js +192 -0
  38. package/bin/utils/domEnvironment.d.ts +9 -0
  39. package/bin/utils/domEnvironment.js +75 -0
  40. package/bin/utils/fuzzyMatch.d.ts +21 -0
  41. package/bin/utils/fuzzyMatch.js +110 -0
  42. package/bin/utils/logger.d.ts +18 -0
  43. package/bin/utils/logger.js +27 -0
  44. package/bin/utils/response.d.ts +28 -0
  45. package/bin/utils/response.js +39 -0
  46. package/bin/utils/tokenValidator.d.ts +24 -0
  47. package/bin/utils/tokenValidator.js +162 -0
  48. package/bin/version.d.ts +4 -0
  49. package/bin/version.js +7 -0
  50. package/data/_icons.json +12401 -0
  51. package/data/_meta.json +12 -0
  52. package/data/_tokens.json +661 -0
  53. package/data/badge-group.json +295 -0
  54. package/data/badge.json +246 -0
  55. package/data/bread-crumb.json +87 -0
  56. package/data/button-group.json +94 -0
  57. package/data/button.json +259 -0
  58. package/data/carousel-arrow.json +87 -0
  59. package/data/carousel-number-group.json +87 -0
  60. package/data/checkbox.json +99 -0
  61. package/data/combo-box.json +173 -0
  62. package/data/date-picker.json +123 -0
  63. package/data/divider.json +91 -0
  64. package/data/dot.json +103 -0
  65. package/data/dropdown.json +258 -0
  66. package/data/empty-state.json +227 -0
  67. package/data/featured-icon.json +139 -0
  68. package/data/file-input.json +315 -0
  69. package/data/horizontal-tab.json +329 -0
  70. package/data/image-file-input.json +339 -0
  71. package/data/input-base.json +299 -0
  72. package/data/modal.json +143 -0
  73. package/data/notification.json +194 -0
  74. package/data/number-input.json +295 -0
  75. package/data/pagination.json +101 -0
  76. package/data/password-input.json +263 -0
  77. package/data/progress-bar.json +109 -0
  78. package/data/progress-circle.json +96 -0
  79. package/data/radio.json +86 -0
  80. package/data/range-date-picker-with-buttons.json +273 -0
  81. package/data/range-date-picker.json +259 -0
  82. package/data/select-box.json +193 -0
  83. package/data/select.json +132 -0
  84. package/data/slider.json +100 -0
  85. package/data/spinner.json +93 -0
  86. package/data/switch.json +156 -0
  87. package/data/tag.json +159 -0
  88. package/data/textarea.json +96 -0
  89. package/data/toggle.json +102 -0
  90. package/data/tooltip.json +185 -0
  91. package/data/vertical-tab.json +314 -0
  92. package/package.json +61 -0
  93. package/templates/.mcp.json.example +8 -0
  94. package/templates/README.md +30 -0
@@ -0,0 +1,339 @@
1
+ {
2
+ "name": "image-file-input",
3
+ "exportName": "ImageFileInput",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "input",
7
+ "description": "상품 이미지 등 시각적으로 참조되어야 하는 이미지 업로드 영역에 사용되는 컴포넌트입니다",
8
+ "aliases": [
9
+ "이미지파일인풋",
10
+ "ImageFileInput",
11
+ "이미지업로드",
12
+ "썸네일",
13
+ "미리보기",
14
+ "이미지첨부",
15
+ "파일찾기",
16
+ "업로드",
17
+ "accept",
18
+ "maxFileCount",
19
+ "maxFileSize",
20
+ "onFail",
21
+ "multiple",
22
+ "hintText",
23
+ "hintItems",
24
+ "destructive",
25
+ "NCDS"
26
+ ],
27
+ "hasChildren": false,
28
+ "whenToUse": [
29
+ "썸네일 중심 UI를 기본으로 하며 이미지 비율 왜곡 없이 중앙 정렬하고 삭제는 Hover 시에만 노출해야 하는 경우",
30
+ "이미지 업로드와 미리보기가 필요한 경우",
31
+ "일반 파일이 아닌 이미지 전용 업로드 영역"
32
+ ],
33
+ "forbiddenRules": [
34
+ "단일 영역에서 다중 이미지 누적 금지",
35
+ "최대 등록 수 초과 시 무반응 처리 금지",
36
+ "Hover 없이 삭제 기능 항상 노출 금지",
37
+ "이미지 비율 왜곡 노출 금지",
38
+ "파일명 중심 UI로 구성 금지",
39
+ "제한 정책 안내 없이 업로드 허용 금지"
40
+ ],
41
+ "seeAlso": [
42
+ "file-input"
43
+ ],
44
+ "props": {
45
+ "accept": {
46
+ "type": "string",
47
+ "required": false
48
+ },
49
+ "buttonLabel": {
50
+ "type": "string",
51
+ "required": false,
52
+ "default": "파일 찾기"
53
+ },
54
+ "destructive": {
55
+ "type": "boolean",
56
+ "required": false
57
+ },
58
+ "disabled": {
59
+ "type": "boolean",
60
+ "required": false
61
+ },
62
+ "hintItems": {
63
+ "type": "object",
64
+ "required": false,
65
+ "rawType": "string[] | undefined"
66
+ },
67
+ "hintText": {
68
+ "type": "string",
69
+ "required": false
70
+ },
71
+ "imagePreviewTooltipLabel": {
72
+ "type": "string",
73
+ "required": false,
74
+ "default": "이미지 업로드"
75
+ },
76
+ "isRequired": {
77
+ "type": "boolean",
78
+ "required": false
79
+ },
80
+ "label": {
81
+ "type": "string",
82
+ "required": false
83
+ },
84
+ "leadingElement": {
85
+ "type": "object",
86
+ "required": false,
87
+ "properties": {
88
+ "type": {
89
+ "type": "string",
90
+ "required": true,
91
+ "rawType": "\"text\""
92
+ },
93
+ "text": {
94
+ "type": "string",
95
+ "required": false
96
+ },
97
+ "icon": {
98
+ "type": "function",
99
+ "required": false
100
+ },
101
+ "size": {
102
+ "type": "number",
103
+ "required": false
104
+ },
105
+ "color": {
106
+ "type": "enum",
107
+ "required": false,
108
+ "values": [
109
+ "black",
110
+ "blue500",
111
+ "blue600",
112
+ "currentColor",
113
+ "gray100",
114
+ "gray200",
115
+ "gray300",
116
+ "gray400",
117
+ "gray500",
118
+ "gray600",
119
+ "gray700",
120
+ "green500",
121
+ "green600",
122
+ "orange500",
123
+ "orange600",
124
+ "pink100",
125
+ "pink600",
126
+ "red500",
127
+ "red600",
128
+ "secondary-gray-blue-100",
129
+ "secondary-gray-blue-200",
130
+ "secondary-gray-blue-300",
131
+ "secondary-gray-blue-400",
132
+ "secondary-gray-blue-450",
133
+ "secondary-gray-blue-50",
134
+ "secondary-gray-blue-500",
135
+ "secondary-gray-blue-600",
136
+ "secondary-gray-blue-700",
137
+ "violet300",
138
+ "violet600",
139
+ "white",
140
+ "yellow600"
141
+ ]
142
+ },
143
+ "className": {
144
+ "type": "string",
145
+ "required": false
146
+ },
147
+ "children": {
148
+ "type": "ReactNode",
149
+ "required": false
150
+ },
151
+ "placement": {
152
+ "type": "enum",
153
+ "required": false,
154
+ "values": [
155
+ "inside",
156
+ "outside"
157
+ ]
158
+ }
159
+ }
160
+ },
161
+ "maxFileCount": {
162
+ "type": "number",
163
+ "required": false
164
+ },
165
+ "maxFileSize": {
166
+ "type": "number",
167
+ "required": false
168
+ },
169
+ "maxLength": {
170
+ "type": "number",
171
+ "required": false
172
+ },
173
+ "onChange": {
174
+ "type": "function",
175
+ "required": false
176
+ },
177
+ "onFail": {
178
+ "type": "function",
179
+ "required": false
180
+ },
181
+ "onFileSelect": {
182
+ "type": "function",
183
+ "required": false
184
+ },
185
+ "required": {
186
+ "type": "boolean",
187
+ "required": false
188
+ },
189
+ "showFileInput": {
190
+ "type": "boolean",
191
+ "required": false,
192
+ "default": true
193
+ },
194
+ "showFileTagList": {
195
+ "type": "boolean",
196
+ "required": false,
197
+ "default": true
198
+ },
199
+ "showHelpIcon": {
200
+ "type": "boolean",
201
+ "required": false
202
+ },
203
+ "showHintText": {
204
+ "type": "boolean",
205
+ "required": false,
206
+ "default": true
207
+ },
208
+ "showTextCount": {
209
+ "type": "boolean",
210
+ "required": false
211
+ },
212
+ "size": {
213
+ "type": "enum",
214
+ "required": false,
215
+ "values": [
216
+ "sm",
217
+ "xs"
218
+ ],
219
+ "default": "sm"
220
+ },
221
+ "trailingElement": {
222
+ "type": "object",
223
+ "required": false,
224
+ "properties": {
225
+ "type": {
226
+ "type": "string",
227
+ "required": true,
228
+ "rawType": "\"icon\""
229
+ },
230
+ "icon": {
231
+ "type": "function",
232
+ "required": false
233
+ },
234
+ "size": {
235
+ "type": "number",
236
+ "required": false
237
+ },
238
+ "color": {
239
+ "type": "enum",
240
+ "required": false,
241
+ "values": [
242
+ "black",
243
+ "blue500",
244
+ "blue600",
245
+ "currentColor",
246
+ "gray100",
247
+ "gray200",
248
+ "gray300",
249
+ "gray400",
250
+ "gray500",
251
+ "gray600",
252
+ "gray700",
253
+ "green500",
254
+ "green600",
255
+ "orange500",
256
+ "orange600",
257
+ "pink100",
258
+ "pink600",
259
+ "red500",
260
+ "red600",
261
+ "secondary-gray-blue-100",
262
+ "secondary-gray-blue-200",
263
+ "secondary-gray-blue-300",
264
+ "secondary-gray-blue-400",
265
+ "secondary-gray-blue-450",
266
+ "secondary-gray-blue-50",
267
+ "secondary-gray-blue-500",
268
+ "secondary-gray-blue-600",
269
+ "secondary-gray-blue-700",
270
+ "violet300",
271
+ "violet600",
272
+ "white",
273
+ "yellow600"
274
+ ]
275
+ },
276
+ "className": {
277
+ "type": "string",
278
+ "required": false
279
+ },
280
+ "children": {
281
+ "type": "ReactNode",
282
+ "required": false
283
+ },
284
+ "placement": {
285
+ "type": "enum",
286
+ "required": false,
287
+ "values": [
288
+ "inside",
289
+ "outside"
290
+ ]
291
+ },
292
+ "label": {
293
+ "type": "string",
294
+ "required": false
295
+ },
296
+ "isSubmit": {
297
+ "type": "boolean",
298
+ "required": false
299
+ },
300
+ "onClick": {
301
+ "type": "function",
302
+ "required": false
303
+ }
304
+ }
305
+ },
306
+ "validation": {
307
+ "type": "boolean",
308
+ "required": false
309
+ },
310
+ "value": {
311
+ "type": "object",
312
+ "required": false,
313
+ "rawType": "File[] | undefined"
314
+ }
315
+ },
316
+ "html": {},
317
+ "bemClasses": [
318
+ "ncua-file-input",
319
+ "ncua-file-input--sm",
320
+ "ncua-file-input--xs",
321
+ "ncua-file-input__hint-item",
322
+ "ncua-file-input__hint-list",
323
+ "ncua-file-input__input-container",
324
+ "ncua-file-input__label",
325
+ "ncua-image-file-input",
326
+ "ncua-image-file-input__empty-slot-wrapper",
327
+ "ncua-image-file-input__preview-container",
328
+ "ncua-image-file-input__previews",
329
+ "ncua-input__help-icon"
330
+ ],
331
+ "usage": {
332
+ "import": "import { ImageFileInput } from '@ncds/ui-admin';",
333
+ "react": {
334
+ "default": "<ImageFileInput />",
335
+ "size:sm": "<ImageFileInput size=\"sm\" />",
336
+ "size:xs": "<ImageFileInput size=\"xs\" />"
337
+ }
338
+ }
339
+ }
@@ -0,0 +1,299 @@
1
+ {
2
+ "name": "input-base",
3
+ "exportName": "InputBase",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "input",
7
+ "description": "Input은 사용자에게 텍스트 데이터를 입력받는 UI 요소로, 다양한 사이즈와 상태를 지원하며 입력 필드 앞뒤로 아이콘, 텍스트, 버튼 등의 요소를 배치할 수 있습니다.",
8
+ "aliases": [
9
+ "인풋",
10
+ "InputBase",
11
+ "InputBase",
12
+ "PasswordInput",
13
+ "텍스트입력",
14
+ "비밀번호",
15
+ "이메일",
16
+ "드롭다운",
17
+ "리딩텍스트",
18
+ "트레일링버튼",
19
+ "clearText",
20
+ "showTextCount",
21
+ "maxLength",
22
+ "leadingElement",
23
+ "trailingElement",
24
+ "validation",
25
+ "destructive",
26
+ "NCDS"
27
+ ],
28
+ "hasChildren": false,
29
+ "whenToUse": [
30
+ "Input은 명확한 레이블, 입력 예시(Placeholder), 유효성 안내(Helper Text)와 함께 제공되어야 하며, 사용자가 입력 가능한 형식과 제한 조건을 입력 전에 인지할 수 있어야 한다"
31
+ ],
32
+ "forbiddenRules": [
33
+ "Label 없는 단독 Input 사용 금지",
34
+ "Placeholder를 Label 대체로 사용 금지",
35
+ "50자 이상 필드에 Text Field 사용 금지",
36
+ "Max 초과 입력 허용 금지",
37
+ "Error 상태를 실시간 남용 금지"
38
+ ],
39
+ "seeAlso": [
40
+ "textarea",
41
+ "button",
42
+ "dropdown",
43
+ "tooltip",
44
+ "file-input",
45
+ "image-file-input"
46
+ ],
47
+ "htmlElement": "input",
48
+ "props": {
49
+ "clearText": {
50
+ "type": "boolean",
51
+ "required": false
52
+ },
53
+ "destructive": {
54
+ "type": "boolean",
55
+ "required": false
56
+ },
57
+ "disabled": {
58
+ "type": "boolean",
59
+ "required": false
60
+ },
61
+ "hintText": {
62
+ "type": "string",
63
+ "required": false
64
+ },
65
+ "label": {
66
+ "type": "string",
67
+ "required": false
68
+ },
69
+ "leadingElement": {
70
+ "type": "object",
71
+ "required": false,
72
+ "properties": {
73
+ "type": {
74
+ "type": "string",
75
+ "required": true,
76
+ "rawType": "\"text\""
77
+ },
78
+ "text": {
79
+ "type": "string",
80
+ "required": false
81
+ },
82
+ "icon": {
83
+ "type": "function",
84
+ "required": false
85
+ },
86
+ "size": {
87
+ "type": "number",
88
+ "required": false
89
+ },
90
+ "color": {
91
+ "type": "enum",
92
+ "required": false,
93
+ "values": [
94
+ "black",
95
+ "blue500",
96
+ "blue600",
97
+ "currentColor",
98
+ "gray100",
99
+ "gray200",
100
+ "gray300",
101
+ "gray400",
102
+ "gray500",
103
+ "gray600",
104
+ "gray700",
105
+ "green500",
106
+ "green600",
107
+ "orange500",
108
+ "orange600",
109
+ "pink100",
110
+ "pink600",
111
+ "red500",
112
+ "red600",
113
+ "secondary-gray-blue-100",
114
+ "secondary-gray-blue-200",
115
+ "secondary-gray-blue-300",
116
+ "secondary-gray-blue-400",
117
+ "secondary-gray-blue-450",
118
+ "secondary-gray-blue-50",
119
+ "secondary-gray-blue-500",
120
+ "secondary-gray-blue-600",
121
+ "secondary-gray-blue-700",
122
+ "violet300",
123
+ "violet600",
124
+ "white",
125
+ "yellow600"
126
+ ]
127
+ },
128
+ "className": {
129
+ "type": "string",
130
+ "required": false
131
+ },
132
+ "children": {
133
+ "type": "ReactNode",
134
+ "required": false
135
+ },
136
+ "placement": {
137
+ "type": "enum",
138
+ "required": false,
139
+ "values": [
140
+ "inside",
141
+ "outside"
142
+ ]
143
+ }
144
+ }
145
+ },
146
+ "maxLength": {
147
+ "type": "number",
148
+ "required": false
149
+ },
150
+ "onClearText": {
151
+ "type": "function",
152
+ "required": false
153
+ },
154
+ "required": {
155
+ "type": "boolean",
156
+ "required": false
157
+ },
158
+ "showHelpIcon": {
159
+ "type": "boolean",
160
+ "required": false
161
+ },
162
+ "showTextCount": {
163
+ "type": "boolean",
164
+ "required": false
165
+ },
166
+ "size": {
167
+ "type": "enum",
168
+ "required": false,
169
+ "values": [
170
+ "sm",
171
+ "xs"
172
+ ],
173
+ "default": "xs"
174
+ },
175
+ "trailingElement": {
176
+ "type": "object",
177
+ "required": false,
178
+ "properties": {
179
+ "type": {
180
+ "type": "string",
181
+ "required": true,
182
+ "rawType": "\"icon\""
183
+ },
184
+ "icon": {
185
+ "type": "function",
186
+ "required": false
187
+ },
188
+ "size": {
189
+ "type": "number",
190
+ "required": false
191
+ },
192
+ "color": {
193
+ "type": "enum",
194
+ "required": false,
195
+ "values": [
196
+ "black",
197
+ "blue500",
198
+ "blue600",
199
+ "currentColor",
200
+ "gray100",
201
+ "gray200",
202
+ "gray300",
203
+ "gray400",
204
+ "gray500",
205
+ "gray600",
206
+ "gray700",
207
+ "green500",
208
+ "green600",
209
+ "orange500",
210
+ "orange600",
211
+ "pink100",
212
+ "pink600",
213
+ "red500",
214
+ "red600",
215
+ "secondary-gray-blue-100",
216
+ "secondary-gray-blue-200",
217
+ "secondary-gray-blue-300",
218
+ "secondary-gray-blue-400",
219
+ "secondary-gray-blue-450",
220
+ "secondary-gray-blue-50",
221
+ "secondary-gray-blue-500",
222
+ "secondary-gray-blue-600",
223
+ "secondary-gray-blue-700",
224
+ "violet300",
225
+ "violet600",
226
+ "white",
227
+ "yellow600"
228
+ ]
229
+ },
230
+ "className": {
231
+ "type": "string",
232
+ "required": false
233
+ },
234
+ "children": {
235
+ "type": "ReactNode",
236
+ "required": false
237
+ },
238
+ "placement": {
239
+ "type": "enum",
240
+ "required": false,
241
+ "values": [
242
+ "inside",
243
+ "outside"
244
+ ]
245
+ },
246
+ "label": {
247
+ "type": "string",
248
+ "required": false
249
+ },
250
+ "isSubmit": {
251
+ "type": "boolean",
252
+ "required": false
253
+ },
254
+ "onClick": {
255
+ "type": "function",
256
+ "required": false
257
+ }
258
+ }
259
+ },
260
+ "validation": {
261
+ "type": "boolean",
262
+ "required": false
263
+ }
264
+ },
265
+ "html": {},
266
+ "bemClasses": [
267
+ "ncua-input",
268
+ "ncua-input--sm",
269
+ "ncua-input--xs",
270
+ "ncua-input__",
271
+ "ncua-input__button",
272
+ "ncua-input__clear",
273
+ "ncua-input__clear-icon",
274
+ "ncua-input__content",
275
+ "ncua-input__content-wrap",
276
+ "ncua-input__destructive-icon",
277
+ "ncua-input__field",
278
+ "ncua-input__field-text-count",
279
+ "ncua-input__field-text-count-current",
280
+ "ncua-input__help-icon",
281
+ "ncua-input__hint-text",
282
+ "ncua-input__icon-wrap",
283
+ "ncua-input__icon-wrap ncua-input__right-icon",
284
+ "ncua-input__label",
285
+ "ncua-input__leading-text",
286
+ "ncua-input__leading-text-wrap",
287
+ "ncua-input__right-icon",
288
+ "ncua-input__trailing-button",
289
+ "ncua-input__validation-icon"
290
+ ],
291
+ "usage": {
292
+ "import": "import { InputBase } from '@ncds/ui-admin';",
293
+ "react": {
294
+ "default": "<InputBase />",
295
+ "size:sm": "<InputBase size=\"sm\" />",
296
+ "size:xs": "<InputBase size=\"xs\" />"
297
+ }
298
+ }
299
+ }