@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,173 @@
1
+ {
2
+ "name": "combo-box",
3
+ "exportName": "ComboBox",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "input",
7
+ "description": "ComboBox는 여러 개의 데이터에서 검색(입력)하거나 리스트에서 옵션을 골라 빠르게 선택하는 복합 선택 컴포넌트입니다.",
8
+ "aliases": [
9
+ "콤보박스",
10
+ "ComboBox",
11
+ "컴포넌트",
12
+ "검색",
13
+ "선택",
14
+ "Single",
15
+ "Multi",
16
+ "Chip",
17
+ "Dropdown",
18
+ "Filter",
19
+ "Like검색",
20
+ "옵션",
21
+ "Placeholder",
22
+ "Filled",
23
+ "Focused",
24
+ "Open",
25
+ "Destructive",
26
+ "전체선택",
27
+ "선택완료",
28
+ "Clear",
29
+ "NCDS"
30
+ ],
31
+ "hasChildren": true,
32
+ "whenToUse": [
33
+ "ComboBox는 검색 입력 + 드롭다운 선택이 결합된 복합 선택 컴포넌트로, 5~500개 옵션 범위에서 사용하며, 멀티 선택 시 반드시 \"선택 완료\" 버튼으로 확정해야 합니다"
34
+ ],
35
+ "forbiddenRules": [
36
+ "5개 이하 옵션에서 Search ComboBox 남용 금지",
37
+ "500개 초과 옵션을 단일 레이어로 제공 금지",
38
+ "검색 결과 없음 메시지 미제공 금지",
39
+ "멀티 선택에서 자동 확정 UX 사용 금지",
40
+ "Clear 버튼 없이 입력 유지 강제 금지"
41
+ ],
42
+ "seeAlso": [
43
+ "selectbox",
44
+ "select"
45
+ ],
46
+ "htmlElement": "div",
47
+ "props": {
48
+ "children": {
49
+ "type": "ReactNode",
50
+ "required": false
51
+ },
52
+ "destructive": {
53
+ "type": "boolean",
54
+ "required": false,
55
+ "default": false
56
+ },
57
+ "disabled": {
58
+ "type": "boolean",
59
+ "required": false,
60
+ "default": false
61
+ },
62
+ "hintText": {
63
+ "type": "string",
64
+ "required": false
65
+ },
66
+ "label": {
67
+ "type": "string",
68
+ "required": false
69
+ },
70
+ "maxHeight": {
71
+ "type": "number",
72
+ "required": false,
73
+ "default": "defaultMaxHeight"
74
+ },
75
+ "multiple": {
76
+ "type": "boolean",
77
+ "required": false,
78
+ "default": false
79
+ },
80
+ "onChange": {
81
+ "type": "function",
82
+ "required": false
83
+ },
84
+ "onEdit": {
85
+ "type": "function",
86
+ "required": false
87
+ },
88
+ "onSearch": {
89
+ "type": "function",
90
+ "required": false
91
+ },
92
+ "optionItems": {
93
+ "type": "object",
94
+ "required": false,
95
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
96
+ "properties": {
97
+ "id": {
98
+ "type": "string",
99
+ "required": true,
100
+ "rawType": "string | number"
101
+ },
102
+ "label": {
103
+ "type": "string",
104
+ "required": true
105
+ },
106
+ "icon": {
107
+ "type": "function",
108
+ "required": false
109
+ }
110
+ },
111
+ "default": "[]"
112
+ },
113
+ "placeholder": {
114
+ "type": "string",
115
+ "required": false,
116
+ "default": "검색하세요"
117
+ },
118
+ "register": {
119
+ "type": "object",
120
+ "required": false,
121
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
122
+ },
123
+ "required": {
124
+ "type": "boolean",
125
+ "required": false,
126
+ "default": false
127
+ },
128
+ "searchValue": {
129
+ "type": "string",
130
+ "required": false,
131
+ "default": ""
132
+ },
133
+ "showFooterButtons": {
134
+ "type": "boolean",
135
+ "required": false,
136
+ "default": false
137
+ },
138
+ "size": {
139
+ "type": "enum",
140
+ "required": false,
141
+ "values": [
142
+ "sm",
143
+ "xs"
144
+ ],
145
+ "default": "xs"
146
+ },
147
+ "value": {
148
+ "type": "object",
149
+ "required": false,
150
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/dropdown/option\").OptionValue | undefined"
151
+ }
152
+ },
153
+ "html": {},
154
+ "bemClasses": [
155
+ "ncua-combobox",
156
+ "ncua-combobox--disabled",
157
+ "ncua-combobox--open",
158
+ "ncua-combobox--sm",
159
+ "ncua-combobox--xs",
160
+ "ncua-combobox__content",
161
+ "ncua-combobox__tags",
162
+ "ncua-input__icon-wrap ncua-input__right-icon",
163
+ "ncua-select-dropdown__no-results"
164
+ ],
165
+ "usage": {
166
+ "import": "import { ComboBox } from '@ncds/ui-admin';",
167
+ "react": {
168
+ "default": "<ComboBox />",
169
+ "size:sm": "<ComboBox size=\"sm\" />",
170
+ "size:xs": "<ComboBox size=\"xs\" />"
171
+ }
172
+ }
173
+ }
@@ -0,0 +1,123 @@
1
+ {
2
+ "name": "date-picker",
3
+ "exportName": "DatePicker",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "input",
7
+ "description": "DatePicker는 등록일, 노출일, 검색 기간 등 날짜 또는 시간 설정이 필요한 경우 사용하는 선택 위젯입니다.",
8
+ "aliases": [
9
+ "날짜선택위젯",
10
+ "DatePicker",
11
+ "컴포넌트",
12
+ "날짜",
13
+ "시간",
14
+ "캘린더",
15
+ "flatpickr",
16
+ "destructive",
17
+ "currentDate",
18
+ "isEndDate",
19
+ "datePickerOptions",
20
+ "enableTime",
21
+ "NCDS"
22
+ ],
23
+ "hasChildren": false,
24
+ "whenToUse": [
25
+ "날짜/시간/날짜+시간 3가지 변형으로 제공하며 텍스트 직접 입력을 항상 허용",
26
+ "Variant별 고정 Width(날짜 138px / 날짜+시간 177px)를 유지"
27
+ ],
28
+ "forbiddenRules": [
29
+ "초 단위 불필요 영역에 노출 금지",
30
+ "같은 Variant 내 사이즈 불일치 금지",
31
+ "기간 옵션 3개 이하 또는 8개 이상 구성 금지",
32
+ "조회 화면에서 Disabled Field 사용 금지",
33
+ "텍스트 입력 불가 UX 금지",
34
+ "NCDS Icon 외 임의 아이콘/이미지 사용 금지"
35
+ ],
36
+ "seeAlso": [
37
+ "range-date-picker"
38
+ ],
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
+ },
53
+ "props": {
54
+ "className": {
55
+ "type": "string",
56
+ "required": false
57
+ },
58
+ "currentDate": {
59
+ "type": "string",
60
+ "required": true
61
+ },
62
+ "datePickerOptions": {
63
+ "type": "object",
64
+ "required": false,
65
+ "rawType": "Partial<import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
66
+ },
67
+ "destructive": {
68
+ "type": "string",
69
+ "required": false
70
+ },
71
+ "isEndDate": {
72
+ "type": "boolean",
73
+ "required": false,
74
+ "default": false
75
+ },
76
+ "onChangeDate": {
77
+ "type": "function",
78
+ "required": true
79
+ },
80
+ "onValidationError": {
81
+ "type": "function",
82
+ "required": false
83
+ },
84
+ "placeholder": {
85
+ "type": "string",
86
+ "required": false
87
+ },
88
+ "shouldFocus": {
89
+ "type": "boolean",
90
+ "required": false,
91
+ "default": true
92
+ },
93
+ "size": {
94
+ "type": "enum",
95
+ "required": false,
96
+ "values": [
97
+ "sm",
98
+ "xs"
99
+ ],
100
+ "default": "xs"
101
+ }
102
+ },
103
+ "html": {},
104
+ "bemClasses": [
105
+ "ncua-date-picker",
106
+ "ncua-date-picker--destructive",
107
+ "ncua-date-picker--disabled",
108
+ "ncua-date-picker--has-time",
109
+ "ncua-date-picker--sm",
110
+ "ncua-date-picker--xs",
111
+ "ncua-date-picker__destructive",
112
+ "ncua-date-picker__ico",
113
+ "ncua-date-picker__input"
114
+ ],
115
+ "usage": {
116
+ "import": "import { DatePicker } from '@ncds/ui-admin';",
117
+ "react": {
118
+ "default": "<DatePicker currentDate=\"\" onChangeDate=\"\" />",
119
+ "size:sm": "<DatePicker size=\"sm\" currentDate=\"\" onChangeDate=\"\" />",
120
+ "size:xs": "<DatePicker size=\"xs\" currentDate=\"\" onChangeDate=\"\" />"
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "divider",
3
+ "exportName": "Divider",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "data-display",
7
+ "description": "콘텐츠 영역을 시각적으로 구분하는 수평 또는 수직 구분선 컴포넌트입니다.",
8
+ "aliases": [
9
+ "Divider",
10
+ "구분선",
11
+ "경계선",
12
+ "separator",
13
+ "hr",
14
+ "수평선",
15
+ "수직선",
16
+ "구분",
17
+ "경계",
18
+ "레이아웃구분"
19
+ ],
20
+ "hasChildren": true,
21
+ "whenToUse": [
22
+ "콘텐츠 영역 간 시각적 경계가 필요할 때"
23
+ ],
24
+ "forbiddenRules": [
25
+ "장식 목적으로 과도한 사용 금지",
26
+ "콘텐츠 없이 시각적 장식으로만 사용 금지",
27
+ "동일 영역에 과도한 반복 사용 금지"
28
+ ],
29
+ "seeAlso": [
30
+ "empty-state"
31
+ ],
32
+ "props": {
33
+ "children": {
34
+ "type": "ReactNode",
35
+ "required": true
36
+ },
37
+ "className": {
38
+ "type": "string",
39
+ "required": false
40
+ },
41
+ "style": {
42
+ "type": "enum",
43
+ "required": false,
44
+ "values": [
45
+ "background-fill",
46
+ "single-line"
47
+ ],
48
+ "default": "single-line"
49
+ },
50
+ "type": {
51
+ "type": "enum",
52
+ "required": true,
53
+ "values": [
54
+ "button",
55
+ "button-group",
56
+ "button-group-icon",
57
+ "button-icon",
58
+ "heading",
59
+ "text"
60
+ ]
61
+ }
62
+ },
63
+ "html": {},
64
+ "bemClasses": [
65
+ "ncua-divider",
66
+ "ncua-divider--background-fill",
67
+ "ncua-divider--button",
68
+ "ncua-divider--button-group",
69
+ "ncua-divider--button-group-icon",
70
+ "ncua-divider--button-icon",
71
+ "ncua-divider--heading",
72
+ "ncua-divider--single-line",
73
+ "ncua-divider--text",
74
+ "ncua-divider__content",
75
+ "ncua-divider__line"
76
+ ],
77
+ "usage": {
78
+ "import": "import { Divider } from '@ncds/ui-admin';",
79
+ "react": {
80
+ "default": "<Divider children=\"예시\" type=\"button\" />",
81
+ "style:background-fill": "<Divider style=\"background-fill\" children=\"예시\" type=\"button\" />",
82
+ "style:single-line": "<Divider style=\"single-line\" children=\"예시\" type=\"button\" />",
83
+ "type:button": "<Divider type=\"button\" children=\"예시\" />",
84
+ "type:button-group": "<Divider type=\"button-group\" children=\"예시\" />",
85
+ "type:button-group-icon": "<Divider type=\"button-group-icon\" children=\"예시\" />",
86
+ "type:button-icon": "<Divider type=\"button-icon\" children=\"예시\" />",
87
+ "type:heading": "<Divider type=\"heading\" children=\"예시\" />",
88
+ "type:text": "<Divider type=\"text\" children=\"예시\" />"
89
+ }
90
+ }
91
+ }
package/data/dot.json ADDED
@@ -0,0 +1,103 @@
1
+ {
2
+ "name": "dot",
3
+ "exportName": "Dot",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "icon",
7
+ "description": "Dot 컴포넌트는 상태나 알림을 시각적으로 표시하기 위한 작은 원형 표시기입니다",
8
+ "aliases": [
9
+ "Dot",
10
+ "닷",
11
+ "점",
12
+ "인디케이터",
13
+ "상태표시",
14
+ "베이스컴포넌트",
15
+ "neutral",
16
+ "error",
17
+ "warning",
18
+ "success",
19
+ "info",
20
+ "blue",
21
+ "pink",
22
+ "disabled",
23
+ "Badge",
24
+ "NCDS"
25
+ ],
26
+ "hasChildren": false,
27
+ "whenToUse": [
28
+ "상태 뱃지 내 인디케이터",
29
+ "알림 뱃지 내 표시",
30
+ "항목 상태 분류"
31
+ ],
32
+ "forbiddenRules": [
33
+ "Dot 단독 사용 금지",
34
+ "일반 텍스트와 직접 조합 금지",
35
+ "커스텀 색상 사용 금지",
36
+ "의미와 맞지 않는 색상 사용 금지",
37
+ "같은 레벨 내 Size 혼용 금지"
38
+ ],
39
+ "seeAlso": [
40
+ "badge"
41
+ ],
42
+ "htmlElement": "span",
43
+ "props": {
44
+ "className": {
45
+ "type": "string",
46
+ "required": false
47
+ },
48
+ "color": {
49
+ "type": "enum",
50
+ "required": false,
51
+ "values": [
52
+ "blue",
53
+ "disabled",
54
+ "error",
55
+ "neutral",
56
+ "pink",
57
+ "success",
58
+ "warning"
59
+ ],
60
+ "default": "success"
61
+ },
62
+ "size": {
63
+ "type": "enum",
64
+ "required": false,
65
+ "values": [
66
+ "lg",
67
+ "md",
68
+ "sm"
69
+ ],
70
+ "default": "md"
71
+ }
72
+ },
73
+ "html": {},
74
+ "bemClasses": [
75
+ "ncua-dot",
76
+ "ncua-dot--blue",
77
+ "ncua-dot--disabled",
78
+ "ncua-dot--error",
79
+ "ncua-dot--lg",
80
+ "ncua-dot--md",
81
+ "ncua-dot--neutral",
82
+ "ncua-dot--pink",
83
+ "ncua-dot--sm",
84
+ "ncua-dot--success",
85
+ "ncua-dot--warning"
86
+ ],
87
+ "usage": {
88
+ "import": "import { Dot } from '@ncds/ui-admin';",
89
+ "react": {
90
+ "default": "<Dot />",
91
+ "color:blue": "<Dot color=\"blue\" />",
92
+ "color:disabled": "<Dot color=\"disabled\" />",
93
+ "color:error": "<Dot color=\"error\" />",
94
+ "color:neutral": "<Dot color=\"neutral\" />",
95
+ "color:pink": "<Dot color=\"pink\" />",
96
+ "color:success": "<Dot color=\"success\" />",
97
+ "color:warning": "<Dot color=\"warning\" />",
98
+ "size:lg": "<Dot size=\"lg\" />",
99
+ "size:md": "<Dot size=\"md\" />",
100
+ "size:sm": "<Dot size=\"sm\" />"
101
+ }
102
+ }
103
+ }