@ncds/ui-admin-mcp 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (100) hide show
  1. package/bin/components.bundle.js +15 -19
  2. package/bin/definitions/external/editor.d.ts +50 -0
  3. package/bin/definitions/external/editor.js +53 -0
  4. package/bin/definitions/external/step-guide.d.ts +61 -0
  5. package/bin/definitions/external/step-guide.js +52 -0
  6. package/bin/definitions/instructions.md +194 -10
  7. package/bin/definitions/js-api.json +352 -0
  8. package/bin/definitions/rules.json +36 -4
  9. package/bin/definitions/tool-definitions.json +33 -9
  10. package/bin/overrides/composition.json +2500 -0
  11. package/bin/server.d.ts +5 -0
  12. package/bin/server.js +97 -33
  13. package/bin/server.mjs +0 -0
  14. package/bin/tools/external/editor.d.ts +18 -0
  15. package/bin/tools/external/editor.js +88 -0
  16. package/bin/tools/external/step-guide.d.ts +19 -0
  17. package/bin/tools/external/step-guide.js +79 -0
  18. package/bin/tools/getComponentProps.d.ts +3 -0
  19. package/bin/tools/getComponentProps.js +12 -3
  20. package/bin/tools/listCompositionOverrides.d.ts +61 -0
  21. package/bin/tools/listCompositionOverrides.js +156 -0
  22. package/bin/tools/ping.d.ts +1 -1
  23. package/bin/tools/renderToHtml.d.ts +38 -7
  24. package/bin/tools/renderToHtml.js +785 -110
  25. package/bin/tools/searchComponent.d.ts +5 -0
  26. package/bin/tools/searchComponent.js +3 -3
  27. package/bin/tools/validateHtml.d.ts +8 -6
  28. package/bin/tools/validateHtml.js +74 -6
  29. package/bin/types.d.ts +60 -1
  30. package/bin/utils/bemValidator.d.ts +16 -8
  31. package/bin/utils/bemValidator.js +16 -4
  32. package/bin/utils/compliance.d.ts +7 -6
  33. package/bin/utils/compliance.js +8 -4
  34. package/bin/utils/dataLoader.d.ts +43 -14
  35. package/bin/utils/dataLoader.js +125 -22
  36. package/bin/utils/domEnvironment.js +51 -0
  37. package/bin/utils/fuzzyMatch.d.ts +4 -0
  38. package/bin/utils/fuzzyMatch.js +13 -3
  39. package/bin/utils/logger.d.ts +5 -5
  40. package/bin/utils/logger.js +5 -5
  41. package/bin/utils/response.d.ts +4 -2
  42. package/bin/utils/response.js +15 -4
  43. package/bin/utils/tokenValidator.d.ts +4 -3
  44. package/bin/utils/tokenValidator.js +13 -11
  45. package/bin/version.d.ts +4 -2
  46. package/bin/version.js +4 -2
  47. package/data/_icons.json +357 -2
  48. package/data/_meta.json +4 -5
  49. package/data/_tokens.json +8 -8
  50. package/data/badge-group.json +181 -4
  51. package/data/badge.json +146 -14
  52. package/data/block-container.json +95 -0
  53. package/data/block-header.json +208 -0
  54. package/data/bread-crumb.json +38 -2
  55. package/data/button-group.json +59 -0
  56. package/data/button.json +124 -1
  57. package/data/carousel-arrow.json +6 -11
  58. package/data/carousel-number-group.json +2 -12
  59. package/data/checkbox.json +1 -1
  60. package/data/combo-box.json +32 -8
  61. package/data/data-grid.json +240 -0
  62. package/data/date-picker.json +22 -2
  63. package/data/divider.json +1 -1
  64. package/data/dot.json +2 -2
  65. package/data/dropdown.json +187 -20
  66. package/data/editor.json +85 -0
  67. package/data/empty-state.json +168 -3
  68. package/data/featured-icon.json +20 -5
  69. package/data/file-input.json +176 -10
  70. package/data/horizontal-tab.json +219 -3
  71. package/data/image-file-input.json +176 -10
  72. package/data/input-base.json +165 -4
  73. package/data/modal.json +266 -5
  74. package/data/notification.json +56 -40
  75. package/data/number-input.json +164 -4
  76. package/data/page-title.json +135 -0
  77. package/data/pagination.json +8 -4
  78. package/data/password-input.json +252 -13
  79. package/data/progress-bar.json +28 -8
  80. package/data/progress-circle.json +9 -6
  81. package/data/radio.json +4 -3
  82. package/data/range-date-picker-with-buttons.json +187 -7
  83. package/data/range-date-picker.json +186 -6
  84. package/data/select-box.json +48 -16
  85. package/data/select.json +35 -25
  86. package/data/slider.json +1 -1
  87. package/data/spinner.json +3 -4
  88. package/data/step-guide.json +130 -0
  89. package/data/switch.json +66 -6
  90. package/data/table.json +293 -0
  91. package/data/tag.json +68 -6
  92. package/data/textarea.json +1 -1
  93. package/data/toggle.json +2 -2
  94. package/data/tooltip.json +16 -3
  95. package/data/vertical-tab.json +220 -3
  96. package/package.json +27 -25
  97. package/bin/instructions.d.ts +0 -1
  98. package/bin/instructions.js +0 -14
  99. package/bin/tools/getComponentHtml.d.ts +0 -3
  100. package/bin/tools/getComponentHtml.js +0 -30
package/data/slider.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "exportName": "Slider",
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": true,
6
- "category": "input",
6
+ "category": "forms-and-input",
7
7
  "description": "Slider는 연속적 또는 구간 기반 수치를 직관적으로 조절하는 입력 컴포넌트로, 텍스트 입력보다 범위가 명확하고 빠른 조정이 필요하며 시각적 비율이 중요한 경우 사용합니다.",
8
8
  "aliases": [
9
9
  "슬라이더",
package/data/spinner.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "exportName": "Spinner",
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": false,
6
- "category": "feedback",
6
+ "category": "feedback-and-status",
7
7
  "description": "Spinner는 데이터 조회, 검색, 업로드, 파일 생성 등 3초 이상 소요되는 처리 과정에서 사용자 불안감을 줄이기 위해 제공되는 피드백 UI입니다.",
8
8
  "aliases": [
9
9
  "Spinner",
@@ -41,9 +41,8 @@
41
41
  ],
42
42
  "props": {
43
43
  "as": {
44
- "type": "string",
44
+ "type": "function",
45
45
  "required": false,
46
- "rawType": "React.ElementType | undefined",
47
46
  "default": "p"
48
47
  },
49
48
  "backdrop": {
@@ -65,7 +64,7 @@
65
64
  "xl",
66
65
  "xs"
67
66
  ],
68
- "default": "md"
67
+ "default": "sm"
69
68
  }
70
69
  },
71
70
  "html": {},
@@ -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/switch.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "exportName": "Switch",
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": false,
6
- "category": "input",
6
+ "category": "forms-and-input",
7
7
  "description": "Switch는 하나의 기능 또는 상태에 대해 180도 다른 두 개의 선택지를 제공하는 토글형 컴포넌트로, 라디오 버튼 방식의 좌/우 영역 선택을 통해 즉각적인 상태 전환을 수행합니다.",
8
8
  "aliases": [
9
9
  "스위치",
@@ -39,6 +39,31 @@
39
39
  "selectbox",
40
40
  "toggle"
41
41
  ],
42
+ "usageExamples": {
43
+ "default": {
44
+ "left": {
45
+ "label": "사용함",
46
+ "value": "on"
47
+ },
48
+ "right": {
49
+ "label": "사용안함",
50
+ "value": "off"
51
+ },
52
+ "name": "feature-toggle"
53
+ },
54
+ "boolean": {
55
+ "left": {
56
+ "label": "활성",
57
+ "value": true
58
+ },
59
+ "right": {
60
+ "label": "비활성",
61
+ "value": false
62
+ },
63
+ "name": "active-toggle",
64
+ "size": "sm"
65
+ }
66
+ },
42
67
  "props": {
43
68
  "className": {
44
69
  "type": "string",
@@ -57,7 +82,18 @@
57
82
  },
58
83
  "left": {
59
84
  "type": "object",
60
- "required": true
85
+ "required": true,
86
+ "properties": {
87
+ "label": {
88
+ "type": "ReactNode",
89
+ "required": true
90
+ },
91
+ "value": {
92
+ "type": "string",
93
+ "required": true,
94
+ "rawType": "string | boolean"
95
+ }
96
+ }
61
97
  },
62
98
  "name": {
63
99
  "type": "string",
@@ -73,12 +109,28 @@
73
109
  },
74
110
  "right": {
75
111
  "type": "object",
76
- "required": true
112
+ "required": true,
113
+ "properties": {
114
+ "label": {
115
+ "type": "ReactNode",
116
+ "required": true
117
+ },
118
+ "value": {
119
+ "type": "string",
120
+ "required": true,
121
+ "rawType": "string | boolean"
122
+ }
123
+ }
77
124
  },
78
125
  "size": {
79
- "type": "string",
126
+ "type": "enum",
80
127
  "required": false,
81
- "rawType": "any",
128
+ "values": [
129
+ "md",
130
+ "sm",
131
+ "xs",
132
+ "xxs"
133
+ ],
82
134
  "default": "xs"
83
135
  },
84
136
  "value": {
@@ -91,6 +143,10 @@
91
143
  "bemClasses": [
92
144
  "ncua-switch",
93
145
  "ncua-switch--disabled",
146
+ "ncua-switch--md",
147
+ "ncua-switch--sm",
148
+ "ncua-switch--xs",
149
+ "ncua-switch--xxs",
94
150
  "ncua-switch__label",
95
151
  "ncua-switch__option",
96
152
  "ncua-switch__option--active",
@@ -103,7 +159,11 @@
103
159
  "usage": {
104
160
  "import": "import { Switch } from '@ncds/ui-admin';",
105
161
  "react": {
106
- "default": "<Switch left=\"\" name=\"\" right=\"\" />"
162
+ "default": "<Switch left=\"\" name=\"\" right=\"\" />",
163
+ "size:md": "<Switch size=\"md\" left=\"\" name=\"\" right=\"\" />",
164
+ "size:sm": "<Switch size=\"sm\" left=\"\" name=\"\" right=\"\" />",
165
+ "size:xs": "<Switch size=\"xs\" left=\"\" name=\"\" right=\"\" />",
166
+ "size:xxs": "<Switch size=\"xxs\" left=\"\" name=\"\" right=\"\" />"
107
167
  }
108
168
  }
109
169
  }
@@ -0,0 +1,293 @@
1
+ {
2
+ "name": "table",
3
+ "exportName": "Table",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "data-display",
7
+ "description": "Table은 어드민 SaaS 환경에서 데이터 표현을 위한 핵심 구조 컴포넌트입니다.",
8
+ "aliases": [
9
+ "Table",
10
+ "Horizontal Table",
11
+ "Vertical Table",
12
+ "List Table",
13
+ "Description Table",
14
+ "테이블",
15
+ "목록",
16
+ "데이터 표시",
17
+ "Row",
18
+ "Cell",
19
+ "Header",
20
+ "HeaderCell",
21
+ "Table.Row",
22
+ "Table.Cell",
23
+ "Table.HeaderCell",
24
+ "Table.ColGroup",
25
+ "Table.Footer",
26
+ "Table.Empty",
27
+ "Table.Pagination",
28
+ "fixedHeader",
29
+ "maxHeight",
30
+ "hoverable",
31
+ "selectable",
32
+ "sortDirection",
33
+ "onSort",
34
+ "isHeader",
35
+ "status",
36
+ "colSpan",
37
+ "widths",
38
+ "Pagination",
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"
57
+ ],
58
+ "hasChildren": true,
59
+ "whenToUse": [
60
+ "Table은 데이터를 일관된 구조로 전달하고, 정렬·선택·페이지네이션을 통해 효율적인 데이터 탐색을 지원하는 컴포넌트이다"
61
+ ],
62
+ "forbiddenRules": [
63
+ "컬러 토큰 외 임의 색상 사용 금지",
64
+ "Row Height 임의 수정 금지",
65
+ "텍스트 정렬 규칙 무시 금지",
66
+ "프로젝트별 Padding 임의 변경 금지",
67
+ "정렬 아이콘 위치 변경 금지"
68
+ ],
69
+ "seeAlso": [
70
+ "checkbox",
71
+ "pagination",
72
+ "badge",
73
+ "empty-state",
74
+ "button",
75
+ "spinner",
76
+ "block-container"
77
+ ],
78
+ "htmlElement": "div",
79
+ "props": {
80
+ "children": {
81
+ "type": "ReactNode",
82
+ "required": true
83
+ },
84
+ "fixedHeader": {
85
+ "type": "boolean",
86
+ "required": false,
87
+ "default": false
88
+ },
89
+ "horizontalScroll": {
90
+ "type": "boolean",
91
+ "required": false,
92
+ "default": false
93
+ },
94
+ "hoverable": {
95
+ "type": "boolean",
96
+ "required": false,
97
+ "default": true
98
+ },
99
+ "maxHeight": {
100
+ "type": "string",
101
+ "required": false,
102
+ "rawType": "string | number | undefined"
103
+ },
104
+ "minWidth": {
105
+ "type": "string",
106
+ "required": false,
107
+ "rawType": "string | number | undefined"
108
+ },
109
+ "selectable": {
110
+ "type": "boolean",
111
+ "required": false,
112
+ "default": false
113
+ },
114
+ "type": {
115
+ "type": "enum",
116
+ "required": false,
117
+ "values": [
118
+ "horizontal",
119
+ "vertical"
120
+ ],
121
+ "default": "horizontal"
122
+ }
123
+ },
124
+ "subComponents": {
125
+ "Table.Header": {
126
+ "props": {
127
+ "children": {
128
+ "type": "ReactNode",
129
+ "required": true
130
+ },
131
+ "className": {
132
+ "type": "string",
133
+ "required": false
134
+ }
135
+ }
136
+ },
137
+ "Table.Body": {
138
+ "props": {
139
+ "children": {
140
+ "type": "ReactNode",
141
+ "required": true
142
+ },
143
+ "className": {
144
+ "type": "string",
145
+ "required": false
146
+ }
147
+ }
148
+ },
149
+ "Table.Row": {
150
+ "props": {
151
+ "selected": {
152
+ "type": "boolean",
153
+ "required": false
154
+ },
155
+ "status": {
156
+ "type": "enum",
157
+ "required": false,
158
+ "values": [
159
+ "error",
160
+ "warning"
161
+ ]
162
+ }
163
+ }
164
+ },
165
+ "Table.HeaderCell": {
166
+ "props": {
167
+ "minWidth": {
168
+ "type": "string",
169
+ "required": false,
170
+ "rawType": "string | number | undefined"
171
+ },
172
+ "onSort": {
173
+ "type": "function",
174
+ "required": false
175
+ },
176
+ "sortDirection": {
177
+ "type": "enum",
178
+ "required": false,
179
+ "values": [
180
+ "asc",
181
+ "desc",
182
+ "none"
183
+ ]
184
+ },
185
+ "width": {
186
+ "type": "string",
187
+ "required": false,
188
+ "rawType": "string | number | undefined"
189
+ }
190
+ }
191
+ },
192
+ "Table.Cell": {
193
+ "props": {
194
+ "isHeader": {
195
+ "type": "boolean",
196
+ "required": false
197
+ }
198
+ }
199
+ },
200
+ "Table.Footer": {
201
+ "props": {
202
+ "children": {
203
+ "type": "ReactNode",
204
+ "required": true
205
+ },
206
+ "className": {
207
+ "type": "string",
208
+ "required": false
209
+ }
210
+ }
211
+ },
212
+ "Table.Pagination": {
213
+ "props": {
214
+ "children": {
215
+ "type": "ReactNode",
216
+ "required": true
217
+ },
218
+ "className": {
219
+ "type": "string",
220
+ "required": false
221
+ }
222
+ }
223
+ },
224
+ "Table.ColGroup": {
225
+ "props": {
226
+ "minWidths": {
227
+ "type": "object",
228
+ "required": false,
229
+ "rawType": "(string | number)[] | undefined"
230
+ },
231
+ "widths": {
232
+ "type": "object",
233
+ "required": true,
234
+ "rawType": "(string | number)[]"
235
+ }
236
+ }
237
+ },
238
+ "Table.Empty": {
239
+ "props": {
240
+ "children": {
241
+ "type": "ReactNode",
242
+ "required": false
243
+ },
244
+ "colSpan": {
245
+ "type": "number",
246
+ "required": true
247
+ }
248
+ }
249
+ }
250
+ },
251
+ "html": {},
252
+ "bemClasses": [
253
+ "ncua-table",
254
+ "ncua-table--fixed-header",
255
+ "ncua-table--horizontal",
256
+ "ncua-table--hoverable",
257
+ "ncua-table--selectable",
258
+ "ncua-table--vertical",
259
+ "ncua-table-wrapper",
260
+ "ncua-table__body",
261
+ "ncua-table__cell",
262
+ "ncua-table__empty",
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",
268
+ "ncua-table__header",
269
+ "ncua-table__header-cell",
270
+ "ncua-table__header-cell--sortable",
271
+ "ncua-table__header-cell-inner",
272
+ "ncua-table__header-cell-text",
273
+ "ncua-table__pagination",
274
+ "ncua-table__row",
275
+ "ncua-table__row--error",
276
+ "ncua-table__row--selected",
277
+ "ncua-table__row--warning",
278
+ "ncua-table__scroll-area",
279
+ "ncua-table__scroll-container",
280
+ "ncua-table__scrollbar",
281
+ "ncua-table__scrollbar-thumb",
282
+ "ncua-table__sort-icon",
283
+ "ncua-table__table"
284
+ ],
285
+ "usage": {
286
+ "import": "import { Table } from '@ncds/ui-admin';",
287
+ "react": {
288
+ "default": "<Table children=\"예시\" />",
289
+ "type:horizontal": "<Table type=\"horizontal\" children=\"예시\" />",
290
+ "type:vertical": "<Table type=\"vertical\" children=\"예시\" />"
291
+ }
292
+ }
293
+ }
package/data/tag.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "exportName": "Tag",
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": true,
6
- "category": "feedback",
6
+ "category": "feedback-and-status",
7
7
  "description": "Tag 컴포넌트는 정보를 분류하고 필터링하기 위한 시각적 표시를 제공합니다. 레이블, 카테고리, 필터 등을 나타내는 데 사용되며, 아이콘, 닫기 버튼, 체크박스, 카운트 등의 기능을 포함할 수 있습니다.",
8
8
  "aliases": [
9
9
  "Tag",
@@ -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": {
@@ -53,7 +56,66 @@
53
56
  },
54
57
  "icon": {
55
58
  "type": "object",
56
- "required": false
59
+ "required": false,
60
+ "rawType": "import(\"/home/runner/_work/ncds/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
61
+ "properties": {
62
+ "type": {
63
+ "type": "string",
64
+ "required": true,
65
+ "rawType": "\"icon\""
66
+ },
67
+ "icon": {
68
+ "type": "function",
69
+ "required": false,
70
+ "semantic": "icon-component"
71
+ },
72
+ "color": {
73
+ "type": "enum",
74
+ "required": false,
75
+ "values": [
76
+ "black",
77
+ "blue500",
78
+ "blue600",
79
+ "currentColor",
80
+ "gray100",
81
+ "gray200",
82
+ "gray300",
83
+ "gray400",
84
+ "gray500",
85
+ "gray600",
86
+ "gray700",
87
+ "green500",
88
+ "green600",
89
+ "orange500",
90
+ "orange600",
91
+ "pink100",
92
+ "pink600",
93
+ "red500",
94
+ "red600",
95
+ "secondary-gray-blue-100",
96
+ "secondary-gray-blue-200",
97
+ "secondary-gray-blue-300",
98
+ "secondary-gray-blue-400",
99
+ "secondary-gray-blue-450",
100
+ "secondary-gray-blue-50",
101
+ "secondary-gray-blue-500",
102
+ "secondary-gray-blue-600",
103
+ "secondary-gray-blue-700",
104
+ "violet300",
105
+ "violet600",
106
+ "white",
107
+ "yellow600"
108
+ ]
109
+ },
110
+ "size": {
111
+ "type": "number",
112
+ "required": false
113
+ },
114
+ "children": {
115
+ "type": "ReactNode",
116
+ "required": false
117
+ }
118
+ }
57
119
  },
58
120
  "maxLength": {
59
121
  "type": "number",
@@ -3,7 +3,7 @@
3
3
  "exportName": "Textarea",
4
4
  "importPath": "@ncds/ui-admin",
5
5
  "jsRequired": false,
6
- "category": "input",
6
+ "category": "forms-and-input",
7
7
  "description": "Textarea(멀티라인 인풋)는 여러 줄의 사용형 텍스트 입력을 위한 컴포넌트입니다.",
8
8
  "aliases": [
9
9
  "Textarea",