@ncds/ui-admin-mcp 1.0.0-alpha.17 → 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 (52) hide show
  1. package/bin/components.bundle.js +8 -8
  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/data/badge-group.json +3 -3
  28. package/data/badge.json +2 -2
  29. package/data/bread-crumb.json +1 -1
  30. package/data/button.json +2 -2
  31. package/data/combo-box.json +3 -3
  32. package/data/data-grid.json +9 -0
  33. package/data/date-picker.json +1 -1
  34. package/data/dropdown.json +9 -4
  35. package/data/empty-state.json +3 -3
  36. package/data/horizontal-tab.json +4 -4
  37. package/data/modal.json +1 -1
  38. package/data/notification.json +23 -19
  39. package/data/page-title.json +1 -1
  40. package/data/progress-bar.json +1 -1
  41. package/data/range-date-picker-with-buttons.json +4 -4
  42. package/data/range-date-picker.json +4 -4
  43. package/data/select-box.json +8 -3
  44. package/data/select.json +2 -2
  45. package/data/step-guide.json +130 -0
  46. package/data/table.json +24 -0
  47. package/data/tag.json +1 -1
  48. package/data/vertical-tab.json +4 -4
  49. package/package.json +12 -9
  50. package/bin/overrides/composition.json +0 -1302
  51. package/bin/tools/listSidecarOverrides.d.ts +0 -54
  52. package/bin/tools/listSidecarOverrides.js +0 -96
@@ -61,7 +61,7 @@
61
61
  "endDateOptions": {
62
62
  "type": "object",
63
63
  "required": true,
64
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
64
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
65
65
  "properties": {
66
66
  "size": {
67
67
  "type": "enum",
@@ -82,7 +82,7 @@
82
82
  "datePickerOptions": {
83
83
  "type": "object",
84
84
  "required": false,
85
- "rawType": "Partial<import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
85
+ "rawType": "Partial<import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
86
86
  },
87
87
  "destructive": {
88
88
  "type": "string",
@@ -144,7 +144,7 @@
144
144
  "startDateOptions": {
145
145
  "type": "object",
146
146
  "required": true,
147
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
147
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
148
148
  "properties": {
149
149
  "size": {
150
150
  "type": "enum",
@@ -165,7 +165,7 @@
165
165
  "datePickerOptions": {
166
166
  "type": "object",
167
167
  "required": false,
168
- "rawType": "Partial<import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
168
+ "rawType": "Partial<import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
169
169
  },
170
170
  "destructive": {
171
171
  "type": "string",
@@ -66,7 +66,7 @@
66
66
  "endDateOptions": {
67
67
  "type": "object",
68
68
  "required": true,
69
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
69
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
70
70
  "properties": {
71
71
  "size": {
72
72
  "type": "enum",
@@ -87,7 +87,7 @@
87
87
  "datePickerOptions": {
88
88
  "type": "object",
89
89
  "required": false,
90
- "rawType": "Partial<import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
90
+ "rawType": "Partial<import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
91
91
  },
92
92
  "destructive": {
93
93
  "type": "string",
@@ -135,7 +135,7 @@
135
135
  "startDateOptions": {
136
136
  "type": "object",
137
137
  "required": true,
138
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
138
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/forms-and-input/date-picker/DatePicker\").DatePickerProps",
139
139
  "properties": {
140
140
  "size": {
141
141
  "type": "enum",
@@ -156,7 +156,7 @@
156
156
  "datePickerOptions": {
157
157
  "type": "object",
158
158
  "required": false,
159
- "rawType": "Partial<import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
159
+ "rawType": "Partial<import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
160
160
  },
161
161
  "destructive": {
162
162
  "type": "string",
@@ -108,7 +108,7 @@
108
108
  "optionItems": {
109
109
  "type": "object",
110
110
  "required": false,
111
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
111
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
112
112
  "properties": {
113
113
  "id": {
114
114
  "type": "string",
@@ -135,7 +135,7 @@
135
135
  "register": {
136
136
  "type": "object",
137
137
  "required": false,
138
- "rawType": "import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/react-hook-form@7.72.0_react@18.2.0/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
138
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/react-hook-form@7.72.0_react@18.2.0/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
139
139
  },
140
140
  "size": {
141
141
  "type": "enum",
@@ -156,15 +156,20 @@
156
156
  ],
157
157
  "default": "default"
158
158
  },
159
+ "usePortal": {
160
+ "type": "boolean",
161
+ "required": false
162
+ },
159
163
  "value": {
160
164
  "type": "object",
161
165
  "required": false,
162
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionValue | undefined"
166
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionValue | undefined"
163
167
  }
164
168
  },
165
169
  "html": {},
166
170
  "bemClasses": [
167
171
  "ncua-hint-text",
172
+ "ncua-select-dropdown--portal",
168
173
  "ncua-selectbox",
169
174
  "ncua-selectbox--disabled",
170
175
  "ncua-selectbox--multiple",
package/data/select.json CHANGED
@@ -57,7 +57,7 @@
57
57
  "optionItems": {
58
58
  "type": "object",
59
59
  "required": false,
60
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
60
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
61
61
  "properties": {
62
62
  "id": {
63
63
  "type": "string",
@@ -82,7 +82,7 @@
82
82
  "register": {
83
83
  "type": "object",
84
84
  "required": false,
85
- "rawType": "import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/react-hook-form@7.72.0_react@18.2.0/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
85
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/react-hook-form@7.72.0_react@18.2.0/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
86
86
  },
87
87
  "size": {
88
88
  "type": "enum",
@@ -0,0 +1,130 @@
1
+ {
2
+ "name": "step-guide",
3
+ "exportName": "stepGuide",
4
+ "importPath": "step-guide",
5
+ "jsRequired": true,
6
+ "category": "overlays",
7
+ "description": "vanilla JS 함수 기반 step-by-step 가이드 투어. 신규 기능 출시 온보딩 또는 관리자 페이지 인터랙티브 가이드용. CDN 로드 후 window.stepGuide({el, options}) 함수 호출로 시작. 외부 패키지(step-guide) — render_to_html 호출 시 외부 분기 모듈에서 응답 직접 조립.",
8
+ "aliases": [
9
+ "step-guide",
10
+ "stepguide",
11
+ "ncdsstepguide",
12
+ "step_guide",
13
+ "투어",
14
+ "온보딩",
15
+ "코치마크",
16
+ "coachmark",
17
+ "튜토리얼",
18
+ "tutorial"
19
+ ],
20
+ "hasChildren": false,
21
+ "whenToUse": [
22
+ "신규 기능 출시 시 사용자에게 단계별 안내가 필요한 경우",
23
+ "관리자 페이지의 복잡한 워크플로우를 단계별로 강조해야 하는 경우",
24
+ "온보딩 화면에서 주요 UI 요소를 순차적으로 지목해야 하는 경우"
25
+ ],
26
+ "forbiddenRules": [
27
+ "React 컴포넌트로 직접 사용 금지 — useEffect 내 window.stepGuide({el, options}) 호출 + cleanup 에서 instance.exit() 호출 필수",
28
+ "정적 HTML 미리보기 불가 — 런타임에 오버레이가 동작하므로 render_to_html 응답의 init 스니펫을 페이지에 붙여 동작 검증 필요",
29
+ "step.element 는 DOM 마운트 후에만 참조 가능 — 컴포넌트 mount 이후 stepGuide() 호출"
30
+ ],
31
+ "seeAlso": ["modal", "tooltip"],
32
+ "usageExamples": {
33
+ "default": {
34
+ "steps": [
35
+ {
36
+ "title": "1단계",
37
+ "description": "첫 번째 안내",
38
+ "element": "#step1",
39
+ "position": "bottom"
40
+ },
41
+ {
42
+ "title": "2단계",
43
+ "description": "두 번째 안내",
44
+ "element": "#step2",
45
+ "position": "bottom"
46
+ }
47
+ ]
48
+ },
49
+ "positionAll": {
50
+ "steps": [
51
+ { "title": "위쪽", "description": "위쪽 위치", "element": "#top", "position": "top" },
52
+ { "title": "오른쪽", "description": "오른쪽 위치", "element": "#right", "position": "right" },
53
+ { "title": "아래쪽", "description": "아래쪽 위치", "element": "#bottom", "position": "bottom" },
54
+ { "title": "왼쪽", "description": "왼쪽 위치", "element": "#left", "position": "left" }
55
+ ]
56
+ },
57
+ "withSkipBtn": {
58
+ "hideSkip": false,
59
+ "steps": [
60
+ {
61
+ "title": "스킵 가능",
62
+ "description": "사용자가 '나중에 하기' 로 건너뛸 수 있습니다",
63
+ "element": "#step1",
64
+ "position": "bottom"
65
+ }
66
+ ]
67
+ }
68
+ },
69
+ "props": {
70
+ "steps": {
71
+ "type": "Step[]",
72
+ "required": true,
73
+ "description": "단계 배열. 각 Step 은 { element?: string | null, title: string, description?: string, subText?: string, position?: 'top' | 'right' | 'bottom' | 'left', customStyle?: Record<string, string>, isFixed?: boolean }"
74
+ },
75
+ "useAnimation": {
76
+ "type": "boolean",
77
+ "required": false,
78
+ "default": true,
79
+ "description": "애니메이션 사용 여부"
80
+ },
81
+ "buttonLabel": {
82
+ "type": "{ prev: string; next: string; done: string; skip: string }",
83
+ "required": false,
84
+ "description": "버튼 라벨 (v2 default: 이전 / 다음 / 완료 / 나중에 하기)"
85
+ },
86
+ "hideSkip": {
87
+ "type": "boolean",
88
+ "required": false,
89
+ "default": true,
90
+ "description": "스킵(나중에 하기) 버튼 숨김 여부"
91
+ },
92
+ "hideStepCount": {
93
+ "type": "boolean",
94
+ "required": false,
95
+ "default": true,
96
+ "description": "스텝 카운트(1 / N) 숨김 여부"
97
+ },
98
+ "hideStepPrefix": {
99
+ "type": "boolean",
100
+ "required": false,
101
+ "default": false,
102
+ "description": "STEP N prefix 숨김 여부. 단계 1개일 때는 옵션과 무관하게 자동 생략됨"
103
+ },
104
+ "exitOnOverlayClick": {
105
+ "type": "boolean",
106
+ "required": false,
107
+ "default": true,
108
+ "description": "오버레이 클릭 시 종료 여부"
109
+ }
110
+ },
111
+ "html": {},
112
+ "bemClasses": [
113
+ "ncua-coachmark-backdrop",
114
+ "ncua-coachmark-container",
115
+ "ncua-coachmark-overlay",
116
+ "ncua-coachmark-reference",
117
+ "ncua-coachmark-tooltip",
118
+ "ncua-coachmark-tooltip__title",
119
+ "ncua-coachmark-tooltip__title-step",
120
+ "ncua-coachmark-tooltip__description",
121
+ "ncua-coachmark-tooltip__sub-text",
122
+ "ncua-coachmark-tooltip__menu",
123
+ "ncua-coachmark-tooltip__count",
124
+ "ncua-coachmark-dummy"
125
+ ],
126
+ "usage": {
127
+ "import": "// CDN 로드 (npm import 미지원, vanilla JS only)\n<link rel=\"stylesheet\" href=\"https://fe-sdk.cdn-nhncommerce.com/@ncds/step-guide/2.0/step-guide.min.css\" />\n<script src=\"https://fe-sdk.cdn-nhncommerce.com/@ncds/step-guide/2.0/step-guide.min.js\"></script>",
128
+ "react": {}
129
+ }
130
+ }
package/data/table.json CHANGED
@@ -86,6 +86,11 @@
86
86
  "required": false,
87
87
  "default": false
88
88
  },
89
+ "horizontalScroll": {
90
+ "type": "boolean",
91
+ "required": false,
92
+ "default": false
93
+ },
89
94
  "hoverable": {
90
95
  "type": "boolean",
91
96
  "required": false,
@@ -96,6 +101,11 @@
96
101
  "required": false,
97
102
  "rawType": "string | number | undefined"
98
103
  },
104
+ "minWidth": {
105
+ "type": "string",
106
+ "required": false,
107
+ "rawType": "string | number | undefined"
108
+ },
99
109
  "selectable": {
100
110
  "type": "boolean",
101
111
  "required": false,
@@ -154,6 +164,11 @@
154
164
  },
155
165
  "Table.HeaderCell": {
156
166
  "props": {
167
+ "minWidth": {
168
+ "type": "string",
169
+ "required": false,
170
+ "rawType": "string | number | undefined"
171
+ },
157
172
  "onSort": {
158
173
  "type": "function",
159
174
  "required": false
@@ -208,6 +223,11 @@
208
223
  },
209
224
  "Table.ColGroup": {
210
225
  "props": {
226
+ "minWidths": {
227
+ "type": "object",
228
+ "required": false,
229
+ "rawType": "(string | number)[] | undefined"
230
+ },
211
231
  "widths": {
212
232
  "type": "object",
213
233
  "required": true,
@@ -241,6 +261,10 @@
241
261
  "ncua-table__cell",
242
262
  "ncua-table__empty",
243
263
  "ncua-table__footer",
264
+ "ncua-table__h-scroll-container",
265
+ "ncua-table__h-scroll-inner",
266
+ "ncua-table__h-scrollbar",
267
+ "ncua-table__h-scrollbar-thumb",
244
268
  "ncua-table__header",
245
269
  "ncua-table__header-cell",
246
270
  "ncua-table__header-cell--sortable",
package/data/tag.json CHANGED
@@ -57,7 +57,7 @@
57
57
  "icon": {
58
58
  "type": "object",
59
59
  "required": false,
60
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
60
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
61
61
  "properties": {
62
62
  "type": {
63
63
  "type": "string",
@@ -59,7 +59,7 @@
59
59
  "menus": {
60
60
  "type": "object",
61
61
  "required": false,
62
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/tab/TabButton\").TabButtonProps[] | undefined",
62
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/tab/TabButton\").TabButtonProps[] | undefined",
63
63
  "properties": {
64
64
  "id": {
65
65
  "type": "string",
@@ -96,7 +96,7 @@
96
96
  "badgeInfo": {
97
97
  "type": "object",
98
98
  "required": false,
99
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/feedback-and-status/badge/Badge\").BadgeProps | undefined",
99
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/feedback-and-status/badge/Badge\").BadgeProps | undefined",
100
100
  "properties": {
101
101
  "label": {
102
102
  "type": "string",
@@ -130,7 +130,7 @@
130
130
  "leadingIcon": {
131
131
  "type": "object",
132
132
  "required": false,
133
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
133
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
134
134
  "properties": {
135
135
  "type": {
136
136
  "type": "string",
@@ -193,7 +193,7 @@
193
193
  "trailingIcon": {
194
194
  "type": "object",
195
195
  "required": false,
196
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
196
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
197
197
  "properties": {
198
198
  "type": {
199
199
  "type": "string",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncds/ui-admin-mcp",
3
- "version": "1.0.0-alpha.17",
3
+ "version": "1.0.0-alpha.18",
4
4
  "description": "NCDS UI Admin MCP 서버 — AI 에이전트가 NCUA 컴포넌트를 조회하고 HTML을 검증할 수 있는 MCP 서버",
5
5
  "bin": {
6
6
  "ncua-mcp": "./bin/server.mjs"
@@ -39,21 +39,24 @@
39
39
  "license": "SEE LICENSE IN LICENSE",
40
40
  "private": false,
41
41
  "dependencies": {
42
+ "@atlaskit/pragmatic-drag-and-drop": "1.8.1",
43
+ "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "2.1.0",
44
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
45
+ "@atlaskit/pragmatic-drag-and-drop-react-accessibility": "1.1.4",
42
46
  "@modelcontextprotocol/sdk": "^1.27.1",
43
- "@ncds/types-common": "^1.0.0",
44
- "@ncds/types-layout": "^1.0.0",
45
47
  "@ncds/ui-admin-icon": "0.1.9",
46
- "classnames": "^2.3.2",
48
+ "classnames": "2.5.1",
49
+ "dompurify": "3.4.1",
47
50
  "flatpickr": "4.6.13",
48
51
  "jsdom": "^26.1.0",
49
- "lodash": "^4.17.21",
50
- "lodash-es": "^4.17.21",
51
- "moment": "^2.30.1",
52
+ "lodash": "4.18.1",
53
+ "lodash-es": "4.18.1",
54
+ "moment": "2.30.1",
52
55
  "node-html-parser": "^7.1.0",
53
56
  "react": "^18.2.0",
54
57
  "react-dom": "^18.2.0",
55
- "react-flatpickr": "^4.0.10",
56
- "swiper": "^11.1.1",
58
+ "react-flatpickr": "4.0.11",
59
+ "swiper": "12.1.3",
57
60
  "zod": "^4.3.6"
58
61
  },
59
62
  "devDependencies": {