@ncds/ui-admin-mcp 1.0.0-alpha.16 → 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 (51) hide show
  1. package/bin/components.bundle.js +17 -1
  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/bin/version.d.ts +4 -2
  28. package/bin/version.js +4 -2
  29. package/data/_icons.json +317 -2
  30. package/data/block-container.json +95 -0
  31. package/data/block-header.json +208 -0
  32. package/data/combo-box.json +1 -2
  33. package/data/data-grid.json +33 -5
  34. package/data/dropdown.json +11 -1
  35. package/data/file-input.json +6 -5
  36. package/data/image-file-input.json +6 -5
  37. package/data/input-base.json +1 -1
  38. package/data/modal.json +5 -2
  39. package/data/notification.json +30 -22
  40. package/data/number-input.json +1 -1
  41. package/data/page-title.json +135 -0
  42. package/data/pagination.json +8 -4
  43. package/data/password-input.json +25 -10
  44. package/data/progress-bar.json +6 -5
  45. package/data/progress-circle.json +8 -5
  46. package/data/radio.json +3 -2
  47. package/data/select-box.json +17 -10
  48. package/data/step-guide.json +130 -0
  49. package/data/table.json +50 -6
  50. package/data/tag.json +7 -4
  51. package/package.json +13 -11
@@ -23,9 +23,12 @@
23
23
  ],
24
24
  "hasChildren": false,
25
25
  "whenToUse": [
26
- "대량 데이터를 페이지 단위로 분할하여 순차적으로 탐색",
27
- "20개 이상 데이터가 누적될 가능성이 있는 경우 필수 적용",
28
- "10페이지 단위 그룹 이동과 첫/마지막 페이지 점프 지원"
26
+ "Pagination은 대량 데이터를 페이지 단위로 분할하여 순차적으로 탐색할 수 있게 하는 내비게이션입니다",
27
+ "20개 이상 데이터가 누적될 가능성이 있는 경우 필수 적용하며, 10페이지 단위 그룹 이동과 첫/마지막 페이지 점프를 지원합니다",
28
+ "20개 이상 데이터 누적 가능성",
29
+ "가로형 테이블",
30
+ "리스트 구조",
31
+ "검색 결과 목록"
29
32
  ],
30
33
  "forbiddenRules": [
31
34
  "10페이지 이하에서 이동 버튼 노출 금지",
@@ -34,7 +37,8 @@
34
37
  "세로형 테이블에서 사용 금지"
35
38
  ],
36
39
  "seeAlso": [
37
- "table"
40
+ "table",
41
+ "select"
38
42
  ],
39
43
  "htmlElement": "button",
40
44
  "props": {
@@ -4,20 +4,30 @@
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": false,
6
6
  "category": "forms-and-input",
7
- "description": "비밀번호 전용 입력 필드로 마스킹 토글을 내장합니다",
7
+ "description": "Input은 사용자에게 텍스트 데이터를 입력받는 UI 요소로, 다양한 사이즈와 상태를 지원하며 입력 필드 앞뒤로 아이콘, 텍스트, 버튼 등의 요소를 배치할 수 있습니다.",
8
8
  "aliases": [
9
- "비밀번호",
10
- "비밀번호 입력",
11
- "password",
12
- "패스워드",
9
+ "인풋",
10
+ "Input",
11
+ "InputBase",
13
12
  "PasswordInput",
14
- "비밀번호 변경",
15
- "비밀번호 확인"
13
+ "텍스트입력",
14
+ "비밀번호",
15
+ "이메일",
16
+ "드롭다운",
17
+ "리딩텍스트",
18
+ "트레일링버튼",
19
+ "clearText",
20
+ "showTextCount",
21
+ "maxLength",
22
+ "leadingElement",
23
+ "trailingElement",
24
+ "validation",
25
+ "destructive",
26
+ "NCDS"
16
27
  ],
17
28
  "hasChildren": false,
18
29
  "whenToUse": [
19
- "명확한 레이블과 입력 예시 Placeholder 유효성 안내 Helper Text와 함께 제공되어야 하는 경우",
20
- "사용자가 입력 가능한 형식과 제한 조건을 입력 전에 인지할 수 있어야 하는 경우"
30
+ "Input은 명확한 레이블, 입력 예시(Placeholder), 유효성 안내(Helper Text)와 함께 제공되어야 하며, 사용자가 입력 가능한 형식과 제한 조건을 입력 전에 인지할 수 있어야 한다"
21
31
  ],
22
32
  "forbiddenRules": [
23
33
  "Label 없는 단독 Input 사용 금지",
@@ -27,7 +37,12 @@
27
37
  "Error 상태를 실시간 남용 금지"
28
38
  ],
29
39
  "seeAlso": [
30
- "input"
40
+ "textarea",
41
+ "button",
42
+ "dropdown",
43
+ "tooltip",
44
+ "file-input",
45
+ "image-file-input"
31
46
  ],
32
47
  "props": {
33
48
  "clearText": {
@@ -23,19 +23,20 @@
23
23
  ],
24
24
  "hasChildren": false,
25
25
  "whenToUse": [
26
- "진행 상태를 직관적인 막대 형태로 시각화",
27
- "단일 값 표시뿐 아니라 다중 세그먼트를 통해 항목별 비율 분포도 표현"
26
+ "ProgressBar는 진행 상태를 직관적인 막대 형태로 시각화하여 사용자가 작업의 현재 상태와 남은 정도를 즉시 파악할 수 있도록 합니다",
27
+ "단일 값 표시뿐 아니라 다중 세그먼트를 통해 항목별 비율 분포도 표현할 수 있습니다"
28
28
  ],
29
29
  "forbiddenRules": [
30
- "0-100 범위 이탈 금지",
31
- "불확정 진행률에 사용 금지(Spinner 사용)",
30
+ "0100 범위 이탈 금지",
31
+ "불확정 진행률에 사용 금지",
32
32
  "white/black 세그먼트 색상 금지",
33
33
  "세그먼트 최대 3개 제한",
34
34
  "장식 용도 금지"
35
35
  ],
36
36
  "seeAlso": [
37
37
  "progress-circle",
38
- "spinner"
38
+ "spinner",
39
+ "skeleton"
39
40
  ],
40
41
  "props": {
41
42
  "label": {
@@ -22,20 +22,23 @@
22
22
  ],
23
23
  "hasChildren": false,
24
24
  "whenToUse": [
25
- "시간 예측이 어려운 장시간 진행 작업의 진행률을 원형 그래프로 시각화",
26
- "Overlay(Dim Layer)와 함께 사용되어 작업 중 사용자 인터랙션을 차단하고 이탈 불안감을 최소화"
25
+ "ProgressCircle은 시간 예측이 어려운 장시간 진행 작업의 진행률을 원형 그래프로 시각화하여 사용자에게 현재 상태와 남은 정도를 즉시 파악할 수 있도록 합니다",
26
+ "Overlay(Dim Layer)와 함께 사용되어 작업 중 사용자 인터랙션을 차단하고, 이탈 불안감을 최소화합니다"
27
27
  ],
28
28
  "forbiddenRules": [
29
29
  "% 없는 진행 Circle 금지",
30
30
  "100% 초과 값 표시 금지",
31
31
  "값 점프형 급격 변화 지양",
32
- "완료 즉시 사라짐 금지(0.5~1초 유지)",
33
- "불확정 진행률에 사용 금지(Spinner 사용)",
32
+ "완료 즉시 사라짐 금지",
33
+ "불확정 진행률에 사용 금지",
34
34
  "단순 대기(3초 이내)에 사용 금지"
35
35
  ],
36
36
  "seeAlso": [
37
37
  "progress-bar",
38
- "spinner"
38
+ "spinner",
39
+ "skeleton",
40
+ "toast",
41
+ "alert"
39
42
  ],
40
43
  "props": {
41
44
  "label": {
package/data/radio.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": false,
6
6
  "category": "forms-and-input",
7
- "description": "Radio는 여러 옵션 중 하나만 선택할 수 있는 단일 선택(Single Selection) 컨트롤로, 텍스트 라벨과 보조 설명을 함께 제공할 수 있습니다.",
7
+ "description": "Radio는 여러 옵션 중 하나만 선택할 수 있는 단일 선택(Single Selection) 컨트롤로, 텍스트 레이블과 보조 설명을 함께 제공할 수 있습니다.",
8
8
  "aliases": [
9
9
  "라디오",
10
10
  "Radio",
@@ -26,7 +26,7 @@
26
26
  "forbiddenRules": [
27
27
  "Radio 단독 사용 금지",
28
28
  "기본 선택 없이 사용 지양",
29
- "텍스트 라벨 없이 사용 지양",
29
+ "텍스트 레이블 없이 사용 지양",
30
30
  "Checkbox와 혼동 금지",
31
31
  "선택 해제 동작 구현 금지"
32
32
  ],
@@ -34,6 +34,7 @@
34
34
  "checkbox",
35
35
  "toggle",
36
36
  "select",
37
+ "dropdown",
37
38
  "label"
38
39
  ],
39
40
  "htmlElement": "input",
@@ -23,27 +23,29 @@
23
23
  ],
24
24
  "hasChildren": true,
25
25
  "whenToUse": [
26
- "옵션 수 6개 이상 또는 공간 제약 시 사용",
27
- "옵션 3~30개인 경우",
28
- "테이블 내부 컴팩트 영역에서 옵션 선택 필요",
29
- "상태/분류/정렬 단일 선택",
30
- " 멤버/태그/필터 다중 선택"
26
+ "Selectbox는 옵션 수 6개 이상 또는 공간 제약 시 사용하며, 옵션 2개(180도 반대)는 Switch, 5개 이하+공간 충분은 Radio/Checkbox를 우선한다",
27
+ "다중 선택 시 '선택 완료' 버튼 필수",
28
+ "선택 가능한 옵션이 3~30개인 경우",
29
+ "화면 공간이 제한되어 Radio/Checkbox를 배치하기 어려운 경우",
30
+ "테이블 내부 컴팩트한 영역에서 옵션 선택이 필요한 경우",
31
+ "상태/분류/정렬 등 단일 선택이 필요한 경우",
32
+ "팀 멤버/태그/필터 등 다중 선택이 필요한 경우"
31
33
  ],
32
34
  "forbiddenRules": [
33
35
  "옵션 2개(180도 반대 의미)인데 Selectbox 사용 금지",
34
- "옵션 수 5개 이하+공간 충분한데 Selectbox 남용 금지",
36
+ "옵션 수 5개 이하 & 공간 충분한데 Selectbox 남용 금지",
35
37
  "30개 이상 옵션을 일반 Selectbox로만 제공 금지",
36
- "다중 선택형에서 선택 완료 없이 즉시 확정 UX 혼용 금지",
37
- "말줄임 Chips에 Tooltip 미제공 금지",
38
+ "다중 선택형에서 '선택 완료' 없이 즉시 확정 UX 혼용 금지",
39
+ "말줄임 처리된 Chips에 Tooltip 미제공 금지",
38
40
  "Read only에서 레이어 열림 동작 제공 금지",
39
- "Read only를 Disabled로 대체하여 값 가독성 저하 지양",
41
+ "Read only를 Disabled로 대체하여 값 가독성을 떨어뜨리는 구성 지양",
40
42
  "Disabled 상태에서 Tooltip/설명 없이 클릭 시도 유도 금지"
41
43
  ],
42
44
  "seeAlso": [
43
45
  "radio",
44
46
  "checkbox",
45
47
  "switch",
46
- "input",
48
+ "input-base",
47
49
  "tooltip"
48
50
  ],
49
51
  "htmlElement": "div",
@@ -154,6 +156,10 @@
154
156
  ],
155
157
  "default": "default"
156
158
  },
159
+ "usePortal": {
160
+ "type": "boolean",
161
+ "required": false
162
+ },
157
163
  "value": {
158
164
  "type": "object",
159
165
  "required": false,
@@ -163,6 +169,7 @@
163
169
  "html": {},
164
170
  "bemClasses": [
165
171
  "ncua-hint-text",
172
+ "ncua-select-dropdown--portal",
166
173
  "ncua-selectbox",
167
174
  "ncua-selectbox--disabled",
168
175
  "ncua-selectbox--multiple",
@@ -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
@@ -36,24 +36,44 @@
36
36
  "colSpan",
37
37
  "widths",
38
38
  "Pagination",
39
- "NCDS"
39
+ "NCDS",
40
+ "가로스크롤",
41
+ "horizontal scroll",
42
+ "scrollX",
43
+ "overflow-x",
44
+ "column min-width",
45
+ "셀 최소 너비",
46
+ "셀 최소 글자수",
47
+ "1140",
48
+ "table min-width",
49
+ "줄바꿈",
50
+ "word-break",
51
+ "콘텐츠 타입별 차등",
52
+ "2단 wrapper",
53
+ "Portal",
54
+ "Floating UI",
55
+ "스크롤 컨테이너",
56
+ "scrollbar token"
40
57
  ],
41
58
  "hasChildren": true,
42
- "whenToUse": [],
59
+ "whenToUse": [
60
+ "Table은 데이터를 일관된 구조로 전달하고, 정렬·선택·페이지네이션을 통해 효율적인 데이터 탐색을 지원하는 컴포넌트이다"
61
+ ],
43
62
  "forbiddenRules": [
44
63
  "컬러 토큰 외 임의 색상 사용 금지",
45
64
  "Row Height 임의 수정 금지",
46
65
  "텍스트 정렬 규칙 무시 금지",
47
66
  "프로젝트별 Padding 임의 변경 금지",
48
- "정렬 아이콘 위치 변경 금지",
49
- "Vertical Table을 Block에 배치 시 Block Body padding 0 override 금지",
50
- "Vertical Table을 Block에 배치 시 Table [outer] 래퍼 생략 금지"
67
+ "정렬 아이콘 위치 변경 금지"
51
68
  ],
52
69
  "seeAlso": [
53
70
  "checkbox",
54
71
  "pagination",
55
72
  "badge",
56
- "empty-state"
73
+ "empty-state",
74
+ "button",
75
+ "spinner",
76
+ "block-container"
57
77
  ],
58
78
  "htmlElement": "div",
59
79
  "props": {
@@ -66,6 +86,11 @@
66
86
  "required": false,
67
87
  "default": false
68
88
  },
89
+ "horizontalScroll": {
90
+ "type": "boolean",
91
+ "required": false,
92
+ "default": false
93
+ },
69
94
  "hoverable": {
70
95
  "type": "boolean",
71
96
  "required": false,
@@ -76,6 +101,11 @@
76
101
  "required": false,
77
102
  "rawType": "string | number | undefined"
78
103
  },
104
+ "minWidth": {
105
+ "type": "string",
106
+ "required": false,
107
+ "rawType": "string | number | undefined"
108
+ },
79
109
  "selectable": {
80
110
  "type": "boolean",
81
111
  "required": false,
@@ -134,6 +164,11 @@
134
164
  },
135
165
  "Table.HeaderCell": {
136
166
  "props": {
167
+ "minWidth": {
168
+ "type": "string",
169
+ "required": false,
170
+ "rawType": "string | number | undefined"
171
+ },
137
172
  "onSort": {
138
173
  "type": "function",
139
174
  "required": false
@@ -188,6 +223,11 @@
188
223
  },
189
224
  "Table.ColGroup": {
190
225
  "props": {
226
+ "minWidths": {
227
+ "type": "object",
228
+ "required": false,
229
+ "rawType": "(string | number)[] | undefined"
230
+ },
191
231
  "widths": {
192
232
  "type": "object",
193
233
  "required": true,
@@ -221,6 +261,10 @@
221
261
  "ncua-table__cell",
222
262
  "ncua-table__empty",
223
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",
224
268
  "ncua-table__header",
225
269
  "ncua-table__header-cell",
226
270
  "ncua-table__header-cell--sortable",
package/data/tag.json CHANGED
@@ -24,19 +24,22 @@
24
24
  ],
25
25
  "hasChildren": true,
26
26
  "whenToUse": [
27
- "정보 분류와 필터링을 위한 시각적 라벨",
28
- "사용자가 콘텐츠를 빠르게 분류/식별/필터링할 있도록 지원"
27
+ "Tag는 정보 분류와 필터링을 위한 시각적 레이블로, 사용자가 콘텐츠를 빠르게 분류·식별·필터링할 수 있도록 합니다",
28
+ "작고 간결한 형태로 다양한 컨텍스트에서 사용되며, 아이콘·액션을 통해 의미를 전달합니다"
29
29
  ],
30
30
  "forbiddenRules": [
31
31
  "disabled 태그에 액션 제공 금지",
32
32
  "과도한 태그 나열 금지",
33
- "텍스트 없는 태그 사용 금지"
33
+ "텍스트 없는 태그 사용 금지",
34
+ "상태·중요도 표시에 Tag 사용 금지"
34
35
  ],
35
36
  "seeAlso": [
36
37
  "badge",
37
38
  "badge-group",
38
39
  "checkbox",
39
- "dot"
40
+ "icon",
41
+ "dot",
42
+ "tooltip"
40
43
  ],
41
44
  "props": {
42
45
  "children": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncds/ui-admin-mcp",
3
- "version": "1.0.0-alpha.16",
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"
@@ -19,9 +19,10 @@
19
19
  "extract:icons": "tsx scripts/extract-icons.ts",
20
20
  "extract:tokens": "tsx scripts/extract-design-tokens.ts",
21
21
  "generate:cdn-meta": "tsx scripts/generate-cdn-meta.ts",
22
+ "generate:version-ts": "tsx scripts/generate-version-ts.ts",
22
23
  "build:bundle": "tsx scripts/build-bundle.ts",
23
24
  "build:server": "mkdir -p bin && rm -rf bin/definitions && cp -r src/definitions bin/definitions && find bin/definitions -name '*.ts' -delete && tsc --project tsconfig.json",
24
- "build": "pnpm extract && pnpm extract:icons && pnpm extract:tokens && pnpm generate:cdn-meta && pnpm build:bundle && pnpm build:server",
25
+ "build": "pnpm extract && pnpm extract:icons && pnpm extract:tokens && pnpm generate:cdn-meta && pnpm generate:version-ts && pnpm build:bundle && pnpm build:server",
25
26
  "check-meta": "tsx scripts/check-meta-coherence.ts",
26
27
  "test": "vitest run --config vitest.config.ts",
27
28
  "test:coverage": "vitest run --coverage --config vitest.config.ts",
@@ -43,20 +44,19 @@
43
44
  "@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
44
45
  "@atlaskit/pragmatic-drag-and-drop-react-accessibility": "1.1.4",
45
46
  "@modelcontextprotocol/sdk": "^1.27.1",
46
- "@ncds/types-common": "^1.0.0",
47
- "@ncds/types-layout": "^1.0.0",
48
- "@ncds/ui-admin-icon": "0.1.6",
49
- "classnames": "^2.3.2",
47
+ "@ncds/ui-admin-icon": "0.1.9",
48
+ "classnames": "2.5.1",
49
+ "dompurify": "3.4.1",
50
50
  "flatpickr": "4.6.13",
51
51
  "jsdom": "^26.1.0",
52
- "lodash": "^4.17.21",
53
- "lodash-es": "^4.17.21",
54
- "moment": "^2.30.1",
52
+ "lodash": "4.18.1",
53
+ "lodash-es": "4.18.1",
54
+ "moment": "2.30.1",
55
55
  "node-html-parser": "^7.1.0",
56
56
  "react": "^18.2.0",
57
57
  "react-dom": "^18.2.0",
58
- "react-flatpickr": "^4.0.10",
59
- "swiper": "^11.1.1",
58
+ "react-flatpickr": "4.0.11",
59
+ "swiper": "12.1.3",
60
60
  "zod": "^4.3.6"
61
61
  },
62
62
  "devDependencies": {
@@ -66,6 +66,8 @@
66
66
  "@types/react": "^18.3.20",
67
67
  "esbuild": "^0.28.0",
68
68
  "ts-morph": "^27.0.2",
69
+ "tsx": "^4.21.0",
70
+ "typescript": "5.9.3",
69
71
  "vitest": "^4.1.4"
70
72
  }
71
73
  }