@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
package/data/tag.json ADDED
@@ -0,0 +1,159 @@
1
+ {
2
+ "name": "tag",
3
+ "exportName": "Tag",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "feedback",
7
+ "description": "Tag 컴포넌트는 정보를 분류하고 필터링하기 위한 시각적 표시를 제공합니다. 레이블, 카테고리, 필터 등을 나타내는 데 사용되며, 아이콘, 닫기 버튼, 체크박스, 카운트 등의 기능을 포함할 수 있습니다.",
8
+ "aliases": [
9
+ "Tag",
10
+ "태그",
11
+ "레이블",
12
+ "카테고리",
13
+ "필터",
14
+ "분류",
15
+ "icon",
16
+ "dot",
17
+ "country",
18
+ "checkbox",
19
+ "close",
20
+ "count",
21
+ "maxLength",
22
+ "truncation",
23
+ "NCDS"
24
+ ],
25
+ "hasChildren": true,
26
+ "whenToUse": [
27
+ "정보 분류와 필터링을 위한 시각적 라벨",
28
+ "사용자가 콘텐츠를 빠르게 분류/식별/필터링할 수 있도록 지원"
29
+ ],
30
+ "forbiddenRules": [
31
+ "disabled 태그에 액션 제공 금지",
32
+ "과도한 태그 나열 금지",
33
+ "텍스트 없는 태그 사용 금지"
34
+ ],
35
+ "seeAlso": [
36
+ "badge",
37
+ "badge-group",
38
+ "checkbox",
39
+ "dot"
40
+ ],
41
+ "props": {
42
+ "children": {
43
+ "type": "ReactNode",
44
+ "required": false
45
+ },
46
+ "close": {
47
+ "type": "boolean",
48
+ "required": false
49
+ },
50
+ "count": {
51
+ "type": "string",
52
+ "required": false
53
+ },
54
+ "icon": {
55
+ "type": "object",
56
+ "required": false,
57
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
58
+ "properties": {
59
+ "type": {
60
+ "type": "string",
61
+ "required": true,
62
+ "rawType": "\"icon\""
63
+ },
64
+ "icon": {
65
+ "type": "function",
66
+ "required": false
67
+ },
68
+ "color": {
69
+ "type": "enum",
70
+ "required": false,
71
+ "values": [
72
+ "black",
73
+ "blue500",
74
+ "blue600",
75
+ "currentColor",
76
+ "gray100",
77
+ "gray200",
78
+ "gray300",
79
+ "gray400",
80
+ "gray500",
81
+ "gray600",
82
+ "gray700",
83
+ "green500",
84
+ "green600",
85
+ "orange500",
86
+ "orange600",
87
+ "pink100",
88
+ "pink600",
89
+ "red500",
90
+ "red600",
91
+ "secondary-gray-blue-100",
92
+ "secondary-gray-blue-200",
93
+ "secondary-gray-blue-300",
94
+ "secondary-gray-blue-400",
95
+ "secondary-gray-blue-450",
96
+ "secondary-gray-blue-50",
97
+ "secondary-gray-blue-500",
98
+ "secondary-gray-blue-600",
99
+ "secondary-gray-blue-700",
100
+ "violet300",
101
+ "violet600",
102
+ "white",
103
+ "yellow600"
104
+ ]
105
+ },
106
+ "size": {
107
+ "type": "number",
108
+ "required": false
109
+ },
110
+ "children": {
111
+ "type": "ReactNode",
112
+ "required": false
113
+ }
114
+ }
115
+ },
116
+ "maxLength": {
117
+ "type": "number",
118
+ "required": false,
119
+ "default": 20
120
+ },
121
+ "onButtonClick": {
122
+ "type": "function",
123
+ "required": false
124
+ },
125
+ "size": {
126
+ "type": "enum",
127
+ "required": false,
128
+ "values": [
129
+ "md",
130
+ "sm"
131
+ ],
132
+ "default": "sm"
133
+ },
134
+ "text": {
135
+ "type": "string",
136
+ "required": true
137
+ }
138
+ },
139
+ "html": {},
140
+ "bemClasses": [
141
+ "ncua-tag",
142
+ "ncua-tag--md",
143
+ "ncua-tag--sm",
144
+ "ncua-tag--truncated",
145
+ "ncua-tag__close",
146
+ "ncua-tag__count",
147
+ "ncua-tag__text",
148
+ "ncua-tag__tooltip",
149
+ "ncua-tag__tooltip-content"
150
+ ],
151
+ "usage": {
152
+ "import": "import { Tag } from '@ncds/ui-admin';",
153
+ "react": {
154
+ "default": "<Tag text=\"\" />",
155
+ "size:md": "<Tag size=\"md\" text=\"\" />",
156
+ "size:sm": "<Tag size=\"sm\" text=\"\" />"
157
+ }
158
+ }
159
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "textarea",
3
+ "exportName": "Textarea",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "input",
7
+ "description": "Textarea(멀티라인 인풋)는 여러 줄의 사용형 텍스트 입력을 위한 컴포넌트입니다.",
8
+ "aliases": [
9
+ "Textarea",
10
+ "멀티라인",
11
+ "다중입력",
12
+ "TextArea",
13
+ "텍스트영역",
14
+ "Placeholder",
15
+ "CharacterCount",
16
+ "글자수",
17
+ "Resize",
18
+ "Helper Text",
19
+ "Destructive",
20
+ "NCDS"
21
+ ],
22
+ "hasChildren": false,
23
+ "whenToUse": [
24
+ "Textarea는 50자 이상 다중 줄 입력에 사용하며, 반드시 외부 Label과 maxLength를 함께 정의한다",
25
+ "Width는 고정, Height만 Resize 허용"
26
+ ],
27
+ "forbiddenRules": [
28
+ "30자 이하 입력 항목에 Textarea 사용 금지",
29
+ "Label 없이 단독 사용 금지",
30
+ "Placeholder를 설명 텍스트 대체로 사용 금지",
31
+ "Max 정의 없이 무제한 입력 허용 금지",
32
+ "Width 자유 Resize 허용 금지"
33
+ ],
34
+ "seeAlso": [
35
+ "input",
36
+ "editor"
37
+ ],
38
+ "htmlElement": "textarea",
39
+ "props": {
40
+ "characterCount": {
41
+ "type": "boolean",
42
+ "required": false
43
+ },
44
+ "className": {
45
+ "type": "string",
46
+ "required": false
47
+ },
48
+ "destructive": {
49
+ "type": "boolean",
50
+ "required": false
51
+ },
52
+ "disabled": {
53
+ "type": "boolean",
54
+ "required": false
55
+ },
56
+ "hintText": {
57
+ "type": "string",
58
+ "required": false
59
+ },
60
+ "label": {
61
+ "type": "string",
62
+ "required": false
63
+ },
64
+ "required": {
65
+ "type": "boolean",
66
+ "required": false
67
+ },
68
+ "size": {
69
+ "type": "enum",
70
+ "required": false,
71
+ "values": [
72
+ "sm",
73
+ "xs"
74
+ ],
75
+ "default": "xs"
76
+ }
77
+ },
78
+ "html": {},
79
+ "bemClasses": [
80
+ "ncua-input",
81
+ "ncua-input--textarea",
82
+ "ncua-input__text-count",
83
+ "ncua-input__text-count-text",
84
+ "ncua-input__text-count-text-count",
85
+ "ncua-input__text-count-wrap",
86
+ "ncua-input__textarea"
87
+ ],
88
+ "usage": {
89
+ "import": "import { Textarea } from '@ncds/ui-admin';",
90
+ "react": {
91
+ "default": "<Textarea />",
92
+ "size:sm": "<Textarea size=\"sm\" />",
93
+ "size:xs": "<Textarea size=\"xs\" />"
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,102 @@
1
+ {
2
+ "name": "toggle",
3
+ "exportName": "Toggle",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "input",
7
+ "description": "Toggle은 단일 기능의 활성/비활성 상태를 즉시 전환하는 컨트롤입니다. 설정 값의 ON/OFF, 수신 여부, 사용 여부 등 즉각 반영되는 상태 전환 UI에 사용합니다.",
8
+ "aliases": [
9
+ "Toggle",
10
+ "토글",
11
+ "Switch",
12
+ "스위치",
13
+ "ON",
14
+ "OFF",
15
+ "활성",
16
+ "비활성",
17
+ "사용",
18
+ "미사용",
19
+ "노출",
20
+ "미노출",
21
+ "Checked",
22
+ "Disabled",
23
+ "Thumb",
24
+ "Track",
25
+ "NCDS"
26
+ ],
27
+ "hasChildren": false,
28
+ "whenToUse": [
29
+ "즉시 반영되는 이진 상태(ON/OFF) 전환에만 사용",
30
+ "저장 후 반영, 3개 이상 옵션, 2차 부가 옵션이 있는 경우 Toggle을 사용하지 않는다"
31
+ ],
32
+ "forbiddenRules": [
33
+ "3개 이상 옵션에 Toggle 사용 금지",
34
+ "저장 후 반영되는 설정에 Toggle 사용 금지",
35
+ "2차 부가 옵션이 있는 경우 사용 금지",
36
+ "다중 선택 개념에 사용 금지",
37
+ "조건 선택 개념에 사용 금지",
38
+ "동일 화면 내 Size 혼용 금지"
39
+ ],
40
+ "seeAlso": [
41
+ "checkbox",
42
+ "radio",
43
+ "switch",
44
+ "select"
45
+ ],
46
+ "htmlElement": "input",
47
+ "props": {
48
+ "className": {
49
+ "type": "string",
50
+ "required": false
51
+ },
52
+ "disabled": {
53
+ "type": "boolean",
54
+ "required": false,
55
+ "default": false
56
+ },
57
+ "onChange": {
58
+ "type": "function",
59
+ "required": false
60
+ },
61
+ "size": {
62
+ "type": "enum",
63
+ "required": false,
64
+ "values": [
65
+ "md",
66
+ "sm"
67
+ ],
68
+ "default": "md"
69
+ },
70
+ "supportText": {
71
+ "type": "string",
72
+ "required": false,
73
+ "default": ""
74
+ },
75
+ "text": {
76
+ "type": "string",
77
+ "required": false,
78
+ "default": ""
79
+ }
80
+ },
81
+ "html": {},
82
+ "bemClasses": [
83
+ "ncua-toggle",
84
+ "ncua-toggle--disabled",
85
+ "ncua-toggle--md",
86
+ "ncua-toggle--sm",
87
+ "ncua-toggle__input",
88
+ "ncua-toggle__slider",
89
+ "ncua-toggle__support-text",
90
+ "ncua-toggle__switch",
91
+ "ncua-toggle__text",
92
+ "ncua-toggle__text-wrapper"
93
+ ],
94
+ "usage": {
95
+ "import": "import { Toggle } from '@ncds/ui-admin';",
96
+ "react": {
97
+ "default": "<Toggle />",
98
+ "size:md": "<Toggle size=\"md\" />",
99
+ "size:sm": "<Toggle size=\"sm\" />"
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,185 @@
1
+ {
2
+ "name": "tooltip",
3
+ "exportName": "Tooltip",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "overlay",
7
+ "description": "Tooltip은 항목, 데이터, 기능 등에 대해 추가 설명이 필요한 경우 보조 정보를 제공하는 말풍선 내 UI 컴포넌트입니다.",
8
+ "aliases": [
9
+ "Tooltip",
10
+ "툴팁",
11
+ "Short Form",
12
+ "Long Form",
13
+ "Hover",
14
+ "보조설명",
15
+ "치환코드",
16
+ "aria-describedby",
17
+ "position",
18
+ "iconType",
19
+ "tooltipType",
20
+ "hideArrow",
21
+ "NCDS"
22
+ ],
23
+ "hasChildren": false,
24
+ "whenToUse": [
25
+ "기본 화면의 흐름을 방해하지 않으면서 필요한 보조 정보를 즉시 제공해야 합니다",
26
+ "과도한 사용이나 긴 내용은 사용자 경험을 저해합니다"
27
+ ],
28
+ "forbiddenRules": [
29
+ "Short Form에 텍스트 링크 사용 금지",
30
+ "Short Form에 버튼 포함 금지",
31
+ "Short Form 80자 초과 금지",
32
+ "Short Form에 상호작용 요소 포함 금지",
33
+ "Long Form Modal 중앙 정렬 금지",
34
+ "Long Form Dim 처리 금지",
35
+ "Long Form 300자 초과 금지",
36
+ "치환코드 복사 시 Tooltip 자동 닫힘 금지",
37
+ "치환코드 Tooltip Modal 전환 금지",
38
+ "치환코드 Tooltip에 Confirm Alert 사용 금지"
39
+ ],
40
+ "seeAlso": [
41
+ "icon",
42
+ "notification"
43
+ ],
44
+ "props": {
45
+ "className": {
46
+ "type": "string",
47
+ "required": false
48
+ },
49
+ "content": {
50
+ "type": "ReactNode",
51
+ "required": false
52
+ },
53
+ "hideArrow": {
54
+ "type": "boolean",
55
+ "required": false,
56
+ "default": false
57
+ },
58
+ "iconColor": {
59
+ "type": "string",
60
+ "required": false,
61
+ "default": "var(--gray-300)"
62
+ },
63
+ "iconStyle": {
64
+ "type": "enum",
65
+ "required": false,
66
+ "values": [
67
+ "alert-circle",
68
+ "help-circle"
69
+ ],
70
+ "default": "help-circle"
71
+ },
72
+ "iconType": {
73
+ "type": "enum",
74
+ "required": false,
75
+ "values": [
76
+ "fill",
77
+ "stroke"
78
+ ],
79
+ "default": "stroke"
80
+ },
81
+ "position": {
82
+ "type": "enum",
83
+ "required": false,
84
+ "values": [
85
+ "auto",
86
+ "bottom",
87
+ "bottom-left",
88
+ "bottom-right",
89
+ "left",
90
+ "right",
91
+ "top",
92
+ "top-left",
93
+ "top-right"
94
+ ],
95
+ "default": "auto"
96
+ },
97
+ "size": {
98
+ "type": "enum",
99
+ "required": false,
100
+ "values": [
101
+ "md",
102
+ "sm"
103
+ ],
104
+ "default": "sm"
105
+ },
106
+ "title": {
107
+ "type": "string",
108
+ "required": false
109
+ },
110
+ "tooltipType": {
111
+ "type": "enum",
112
+ "required": false,
113
+ "values": [
114
+ "black",
115
+ "white"
116
+ ],
117
+ "default": "black"
118
+ },
119
+ "type": {
120
+ "type": "enum",
121
+ "required": false,
122
+ "values": [
123
+ "long",
124
+ "short"
125
+ ],
126
+ "default": "short"
127
+ }
128
+ },
129
+ "html": {},
130
+ "bemClasses": [
131
+ "ncua-tooltip",
132
+ "ncua-tooltip--alert-circle",
133
+ "ncua-tooltip--auto",
134
+ "ncua-tooltip--black",
135
+ "ncua-tooltip--bottom",
136
+ "ncua-tooltip--bottom-left",
137
+ "ncua-tooltip--bottom-right",
138
+ "ncua-tooltip--fill",
139
+ "ncua-tooltip--help-circle",
140
+ "ncua-tooltip--hidden-arrow",
141
+ "ncua-tooltip--left",
142
+ "ncua-tooltip--long",
143
+ "ncua-tooltip--md",
144
+ "ncua-tooltip--right",
145
+ "ncua-tooltip--short",
146
+ "ncua-tooltip--sm",
147
+ "ncua-tooltip--stroke",
148
+ "ncua-tooltip--top",
149
+ "ncua-tooltip--top-left",
150
+ "ncua-tooltip--top-right",
151
+ "ncua-tooltip--white",
152
+ "ncua-tooltip__bg",
153
+ "ncua-tooltip__bg--force-hidden",
154
+ "ncua-tooltip__bg--measuring",
155
+ "ncua-tooltip__bg--visible",
156
+ "ncua-tooltip__close-button",
157
+ "ncua-tooltip__content",
158
+ "ncua-tooltip__title"
159
+ ],
160
+ "usage": {
161
+ "import": "import { Tooltip } from '@ncds/ui-admin';",
162
+ "react": {
163
+ "default": "<Tooltip />",
164
+ "iconStyle:alert-circle": "<Tooltip iconStyle=\"alert-circle\" />",
165
+ "iconStyle:help-circle": "<Tooltip iconStyle=\"help-circle\" />",
166
+ "iconType:fill": "<Tooltip iconType=\"fill\" />",
167
+ "iconType:stroke": "<Tooltip iconType=\"stroke\" />",
168
+ "position:auto": "<Tooltip position=\"auto\" />",
169
+ "position:bottom": "<Tooltip position=\"bottom\" />",
170
+ "position:bottom-left": "<Tooltip position=\"bottom-left\" />",
171
+ "position:bottom-right": "<Tooltip position=\"bottom-right\" />",
172
+ "position:left": "<Tooltip position=\"left\" />",
173
+ "position:right": "<Tooltip position=\"right\" />",
174
+ "position:top": "<Tooltip position=\"top\" />",
175
+ "position:top-left": "<Tooltip position=\"top-left\" />",
176
+ "position:top-right": "<Tooltip position=\"top-right\" />",
177
+ "size:md": "<Tooltip size=\"md\" />",
178
+ "size:sm": "<Tooltip size=\"sm\" />",
179
+ "tooltipType:black": "<Tooltip tooltipType=\"black\" />",
180
+ "tooltipType:white": "<Tooltip tooltipType=\"white\" />",
181
+ "type:long": "<Tooltip type=\"long\" />",
182
+ "type:short": "<Tooltip type=\"short\" />"
183
+ }
184
+ }
185
+ }