@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,94 @@
1
+ {
2
+ "name": "button-group",
3
+ "exportName": "ButtonGroup",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "action",
7
+ "description": "ButtonGroup은 관련된 버튼을 하나의 그룹으로 묶어 통합된 UI 구조를 제공하는 컴포넌트입니다",
8
+ "aliases": [
9
+ "버튼그룹",
10
+ "ButtonGroup",
11
+ "컴포넌트",
12
+ "Toolset",
13
+ "Default",
14
+ "선택형",
15
+ "도구형",
16
+ "isCurrent",
17
+ "hasBorder",
18
+ "onlyIcon",
19
+ "그룹",
20
+ "NCDS"
21
+ ],
22
+ "hasChildren": true,
23
+ "whenToUse": [
24
+ "그룹의 성격(도구형 vs 선택형)에 따라 타입이 결정되는 상황",
25
+ "사용자가 그룹의 인터랙션 패턴과 현재 상태를 즉시 이해해야 하는 상황"
26
+ ],
27
+ "forbiddenRules": [
28
+ "그룹 내 혼합 사이즈 사용",
29
+ "Toolset(v1)에서 선택 상태 유지 사용",
30
+ "Default(v2)에서 다중 선택 허용",
31
+ "의미적으로 관련 없는 버튼 그룹화 (최대 6개 이내 권장)",
32
+ "그룹 내 서로 다른 콘텐츠 구성(Text/Icon) 혼용",
33
+ "NCDS 기준 외 임의 스타일 변경"
34
+ ],
35
+ "seeAlso": [
36
+ "button"
37
+ ],
38
+ "htmlElement": "button",
39
+ "props": {
40
+ "children": {
41
+ "type": "ReactNode",
42
+ "required": true
43
+ },
44
+ "className": {
45
+ "type": "string",
46
+ "required": false
47
+ },
48
+ "disabled": {
49
+ "type": "boolean",
50
+ "required": false,
51
+ "default": false
52
+ },
53
+ "hasBorder": {
54
+ "type": "boolean",
55
+ "required": false,
56
+ "default": true
57
+ },
58
+ "onlyIcon": {
59
+ "type": "boolean",
60
+ "required": false,
61
+ "default": false
62
+ },
63
+ "size": {
64
+ "type": "enum",
65
+ "required": false,
66
+ "values": [
67
+ "md",
68
+ "sm",
69
+ "xs",
70
+ "xxs"
71
+ ],
72
+ "default": "xs"
73
+ }
74
+ },
75
+ "html": {},
76
+ "bemClasses": [
77
+ "ncua-button-group",
78
+ "ncua-button-group--md",
79
+ "ncua-button-group--sm",
80
+ "ncua-button-group--xs",
81
+ "ncua-button-group--xxs",
82
+ "ncua-button-group__item"
83
+ ],
84
+ "usage": {
85
+ "import": "import { ButtonGroup } from '@ncds/ui-admin';",
86
+ "react": {
87
+ "default": "<ButtonGroup children=\"예시\" />",
88
+ "size:md": "<ButtonGroup size=\"md\" children=\"예시\" />",
89
+ "size:sm": "<ButtonGroup size=\"sm\" children=\"예시\" />",
90
+ "size:xs": "<ButtonGroup size=\"xs\" children=\"예시\" />",
91
+ "size:xxs": "<ButtonGroup size=\"xxs\" children=\"예시\" />"
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,259 @@
1
+ {
2
+ "name": "button",
3
+ "exportName": "Button",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "action",
7
+ "description": "버튼은 사용자의 명시적 실행 의도를 수행하는 핵심 Action 컴포넌트입니다",
8
+ "aliases": [
9
+ "버튼",
10
+ "Button",
11
+ "컴포넌트",
12
+ "hierarchy",
13
+ "Primary",
14
+ "Secondary",
15
+ "Destructive",
16
+ "Text버튼",
17
+ "사이즈",
18
+ "아이콘",
19
+ "disabled",
20
+ "Loading",
21
+ "Focused",
22
+ "Hover",
23
+ "Confirm",
24
+ "NCDS",
25
+ "액션"
26
+ ],
27
+ "hasChildren": true,
28
+ "whenToUse": [
29
+ "역할과 중요도에 따라 계층(hierarchy)이 결정되는 상황",
30
+ "페이지 내 시각적 우선순위를 명확히 전달해야 하는 상황"
31
+ ],
32
+ "forbiddenRules": [
33
+ "Primary 버튼 복수 사용 (페이지당 1개)",
34
+ "버튼 사이즈 혼용 (같은 영역 내)",
35
+ "네비게이션 용도로 버튼 사용",
36
+ "NCDS 기준 외 임의 색상, radius, padding, 인터랙션 변경",
37
+ "Disabled 상태에서 시각적 강조나 인터랙션 하이라이트 추가",
38
+ "아이콘을 꾸밈 요소로만 사용",
39
+ "Destructive 외 Variant에서 Red 600/700 계열 색상 사용"
40
+ ],
41
+ "seeAlso": [
42
+ "button-group"
43
+ ],
44
+ "htmlElement": "button",
45
+ "props": {
46
+ "children": {
47
+ "type": "ReactNode",
48
+ "required": false
49
+ },
50
+ "className": {
51
+ "type": "string",
52
+ "required": false
53
+ },
54
+ "disabled": {
55
+ "type": "boolean",
56
+ "required": false
57
+ },
58
+ "hierarchy": {
59
+ "type": "enum",
60
+ "required": false,
61
+ "values": [
62
+ "destructive",
63
+ "primary",
64
+ "secondary",
65
+ "secondary-gray",
66
+ "tertiary",
67
+ "tertiary-gray",
68
+ "text",
69
+ "text-gray",
70
+ "text-red"
71
+ ]
72
+ },
73
+ "label": {
74
+ "type": "ReactNode",
75
+ "required": true
76
+ },
77
+ "leadingIcon": {
78
+ "type": "object",
79
+ "required": false,
80
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
81
+ "properties": {
82
+ "type": {
83
+ "type": "string",
84
+ "required": true,
85
+ "rawType": "\"icon\""
86
+ },
87
+ "icon": {
88
+ "type": "function",
89
+ "required": false
90
+ },
91
+ "color": {
92
+ "type": "enum",
93
+ "required": false,
94
+ "values": [
95
+ "black",
96
+ "blue500",
97
+ "blue600",
98
+ "currentColor",
99
+ "gray100",
100
+ "gray200",
101
+ "gray300",
102
+ "gray400",
103
+ "gray500",
104
+ "gray600",
105
+ "gray700",
106
+ "green500",
107
+ "green600",
108
+ "orange500",
109
+ "orange600",
110
+ "pink100",
111
+ "pink600",
112
+ "red500",
113
+ "red600",
114
+ "secondary-gray-blue-100",
115
+ "secondary-gray-blue-200",
116
+ "secondary-gray-blue-300",
117
+ "secondary-gray-blue-400",
118
+ "secondary-gray-blue-450",
119
+ "secondary-gray-blue-50",
120
+ "secondary-gray-blue-500",
121
+ "secondary-gray-blue-600",
122
+ "secondary-gray-blue-700",
123
+ "violet300",
124
+ "violet600",
125
+ "white",
126
+ "yellow600"
127
+ ]
128
+ },
129
+ "size": {
130
+ "type": "number",
131
+ "required": false
132
+ },
133
+ "children": {
134
+ "type": "ReactNode",
135
+ "required": false
136
+ }
137
+ }
138
+ },
139
+ "onlyIcon": {
140
+ "type": "boolean",
141
+ "required": false
142
+ },
143
+ "size": {
144
+ "type": "enum",
145
+ "required": false,
146
+ "values": [
147
+ "md",
148
+ "sm",
149
+ "xs",
150
+ "xxs"
151
+ ]
152
+ },
153
+ "trailingIcon": {
154
+ "type": "object",
155
+ "required": false,
156
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
157
+ "properties": {
158
+ "type": {
159
+ "type": "string",
160
+ "required": true,
161
+ "rawType": "\"icon\""
162
+ },
163
+ "icon": {
164
+ "type": "function",
165
+ "required": false
166
+ },
167
+ "color": {
168
+ "type": "enum",
169
+ "required": false,
170
+ "values": [
171
+ "black",
172
+ "blue500",
173
+ "blue600",
174
+ "currentColor",
175
+ "gray100",
176
+ "gray200",
177
+ "gray300",
178
+ "gray400",
179
+ "gray500",
180
+ "gray600",
181
+ "gray700",
182
+ "green500",
183
+ "green600",
184
+ "orange500",
185
+ "orange600",
186
+ "pink100",
187
+ "pink600",
188
+ "red500",
189
+ "red600",
190
+ "secondary-gray-blue-100",
191
+ "secondary-gray-blue-200",
192
+ "secondary-gray-blue-300",
193
+ "secondary-gray-blue-400",
194
+ "secondary-gray-blue-450",
195
+ "secondary-gray-blue-50",
196
+ "secondary-gray-blue-500",
197
+ "secondary-gray-blue-600",
198
+ "secondary-gray-blue-700",
199
+ "violet300",
200
+ "violet600",
201
+ "white",
202
+ "yellow600"
203
+ ]
204
+ },
205
+ "size": {
206
+ "type": "number",
207
+ "required": false
208
+ },
209
+ "children": {
210
+ "type": "ReactNode",
211
+ "required": false
212
+ }
213
+ }
214
+ },
215
+ "underline": {
216
+ "type": "boolean",
217
+ "required": false
218
+ }
219
+ },
220
+ "html": {},
221
+ "bemClasses": [
222
+ "ncua-btn",
223
+ "ncua-btn--destructive",
224
+ "ncua-btn--md",
225
+ "ncua-btn--primary",
226
+ "ncua-btn--secondary",
227
+ "ncua-btn--secondary-gray",
228
+ "ncua-btn--sm",
229
+ "ncua-btn--tertiary",
230
+ "ncua-btn--tertiary-gray",
231
+ "ncua-btn--text",
232
+ "ncua-btn--text-gray",
233
+ "ncua-btn--text-red",
234
+ "ncua-btn--xs",
235
+ "ncua-btn--xxs",
236
+ "ncua-btn__label",
237
+ "ncua-button-close-x",
238
+ "ncua-button-stepper"
239
+ ],
240
+ "usage": {
241
+ "import": "import { Button } from '@ncds/ui-admin';",
242
+ "react": {
243
+ "default": "<Button label=\"예시\" />",
244
+ "hierarchy:destructive": "<Button hierarchy=\"destructive\" label=\"예시\" />",
245
+ "hierarchy:primary": "<Button hierarchy=\"primary\" label=\"예시\" />",
246
+ "hierarchy:secondary": "<Button hierarchy=\"secondary\" label=\"예시\" />",
247
+ "hierarchy:secondary-gray": "<Button hierarchy=\"secondary-gray\" label=\"예시\" />",
248
+ "hierarchy:tertiary": "<Button hierarchy=\"tertiary\" label=\"예시\" />",
249
+ "hierarchy:tertiary-gray": "<Button hierarchy=\"tertiary-gray\" label=\"예시\" />",
250
+ "hierarchy:text": "<Button hierarchy=\"text\" label=\"예시\" />",
251
+ "hierarchy:text-gray": "<Button hierarchy=\"text-gray\" label=\"예시\" />",
252
+ "hierarchy:text-red": "<Button hierarchy=\"text-red\" label=\"예시\" />",
253
+ "size:md": "<Button size=\"md\" label=\"예시\" />",
254
+ "size:sm": "<Button size=\"sm\" label=\"예시\" />",
255
+ "size:xs": "<Button size=\"xs\" label=\"예시\" />",
256
+ "size:xxs": "<Button size=\"xxs\" label=\"예시\" />"
257
+ }
258
+ }
259
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "carousel-arrow",
3
+ "exportName": "CarouselArrow",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "feedback",
7
+ "description": "CarouselArrow는 캐러셀의 이전/다음 페이지로 이동할 수 있는 화살표 버튼 컴포넌트입니다.",
8
+ "aliases": [
9
+ "CarouselArrow",
10
+ "캐러셀",
11
+ "화살표",
12
+ "캐러셀화살표",
13
+ "chevron",
14
+ "이전",
15
+ "다음",
16
+ "페이지이동",
17
+ "Default",
18
+ "Line",
19
+ "네비게이션",
20
+ "NCDS"
21
+ ],
22
+ "hasChildren": false,
23
+ "whenToUse": [
24
+ "캐러셀 내비게이션 전용 버튼",
25
+ "좌/우 방향 화살표를 통해 콘텐츠 페이지 간 이동을 직관적으로 유도"
26
+ ],
27
+ "forbiddenRules": [
28
+ "단일 방향만 사용 금지(left/right 쌍 필수)",
29
+ "캐러셀 외 용도 금지",
30
+ "커스텀 아이콘 금지",
31
+ "크기 임의 변경 금지"
32
+ ],
33
+ "seeAlso": [
34
+ "carousel-number-group"
35
+ ],
36
+ "props": {
37
+ "chevron": {
38
+ "type": "enum",
39
+ "required": true,
40
+ "values": [
41
+ "left",
42
+ "right"
43
+ ]
44
+ },
45
+ "className": {
46
+ "type": "string",
47
+ "required": false
48
+ },
49
+ "onClick": {
50
+ "type": "function",
51
+ "required": false
52
+ },
53
+ "size": {
54
+ "type": "string",
55
+ "required": true,
56
+ "rawType": "\"md\""
57
+ },
58
+ "type": {
59
+ "type": "enum",
60
+ "required": false,
61
+ "values": [
62
+ "default",
63
+ "line"
64
+ ],
65
+ "default": "default"
66
+ }
67
+ },
68
+ "html": {},
69
+ "bemClasses": [
70
+ "ncua-carousel-arrow",
71
+ "ncua-carousel-arrow--default",
72
+ "ncua-carousel-arrow--left",
73
+ "ncua-carousel-arrow--line",
74
+ "ncua-carousel-arrow--right",
75
+ "ncua-carousel-arrow__icon"
76
+ ],
77
+ "usage": {
78
+ "import": "import { CarouselArrow } from '@ncds/ui-admin';",
79
+ "react": {
80
+ "default": "<CarouselArrow chevron=\"left\" size=\"\" />",
81
+ "chevron:left": "<CarouselArrow chevron=\"left\" size=\"\" />",
82
+ "chevron:right": "<CarouselArrow chevron=\"right\" size=\"\" />",
83
+ "type:default": "<CarouselArrow type=\"default\" chevron=\"left\" size=\"\" />",
84
+ "type:line": "<CarouselArrow type=\"line\" chevron=\"left\" size=\"\" />"
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "carousel-number-group",
3
+ "exportName": "CarouselNumberGroup",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "feedback",
7
+ "description": "CarouselNumberGroup은 캐러셀의 현재 페이지와 전체 페이지 수를 표시하는 컴포넌트입니다.",
8
+ "aliases": [
9
+ "CarouselNumberGroup",
10
+ "캐러셀",
11
+ "숫자그룹",
12
+ "페이지번호",
13
+ "현재페이지",
14
+ "전체페이지",
15
+ "슬래시",
16
+ "페이지인디케이터",
17
+ "Dark",
18
+ "Light",
19
+ "Framed",
20
+ "NCDS"
21
+ ],
22
+ "hasChildren": false,
23
+ "whenToUse": [
24
+ "캐러셀 페이지 인디케이터 전용",
25
+ "슬래시(/)로 구분된 형태로 현재 페이지와 전체 페이지 수를 직관적으로 표시"
26
+ ],
27
+ "forbiddenRules": [
28
+ "캐러셀 외 용도 금지",
29
+ "currentPage/totalPage 누락 금지",
30
+ "currentPage가 totalPage 초과 금지",
31
+ "크기 임의 변경 금지",
32
+ "슬래시(/) 구분 형식 변경 금지"
33
+ ],
34
+ "seeAlso": [
35
+ "carousel-arrow"
36
+ ],
37
+ "props": {
38
+ "color": {
39
+ "type": "enum",
40
+ "required": false,
41
+ "values": [
42
+ "dark",
43
+ "light"
44
+ ],
45
+ "default": "light"
46
+ },
47
+ "currentPage": {
48
+ "type": "number",
49
+ "required": true
50
+ },
51
+ "framed": {
52
+ "type": "boolean",
53
+ "required": false,
54
+ "default": true
55
+ },
56
+ "size": {
57
+ "type": "enum",
58
+ "required": false,
59
+ "values": [
60
+ "sm"
61
+ ],
62
+ "default": "sm"
63
+ },
64
+ "totalPage": {
65
+ "type": "number",
66
+ "required": true
67
+ }
68
+ },
69
+ "html": {},
70
+ "bemClasses": [
71
+ "ncua-carousel-number-group",
72
+ "ncua-carousel-number-group--dark",
73
+ "ncua-carousel-number-group--light",
74
+ "ncua-carousel-number-group--sm",
75
+ "ncua-carousel-number-group__number",
76
+ "ncua-carousel-number-group__total"
77
+ ],
78
+ "usage": {
79
+ "import": "import { CarouselNumberGroup } from '@ncds/ui-admin';",
80
+ "react": {
81
+ "default": "<CarouselNumberGroup currentPage={0} totalPage={0} />",
82
+ "color:dark": "<CarouselNumberGroup color=\"dark\" currentPage={0} totalPage={0} />",
83
+ "color:light": "<CarouselNumberGroup color=\"light\" currentPage={0} totalPage={0} />",
84
+ "size:sm": "<CarouselNumberGroup size=\"sm\" currentPage={0} totalPage={0} />"
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "checkbox",
3
+ "exportName": "Checkbox",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": false,
6
+ "category": "input",
7
+ "description": "체크박스는 사용자가 목록에서 하나 이상의 항목을 선택하거나 옵션을 활성화/비활성화할 때 사용하는 핵심 Selection 컴포넌트입니다.",
8
+ "aliases": [
9
+ "체크박스",
10
+ "Checkbox",
11
+ "컴포넌트",
12
+ "선택",
13
+ "다중선택",
14
+ "indeterminate",
15
+ "부분선택",
16
+ "checked",
17
+ "disabled",
18
+ "destructive",
19
+ "supportText",
20
+ "Focused",
21
+ "Hover",
22
+ "NCDS",
23
+ "폼",
24
+ "Form"
25
+ ],
26
+ "hasChildren": false,
27
+ "whenToUse": [
28
+ "체크박스는 다중 선택 전용 Selection 컴포넌트이며, 선택 상태(Checked/Unchecked/Indeterminate)와 인터랙션 상태가 시각적으로 즉시 구분되어야 한다"
29
+ ],
30
+ "forbiddenRules": [
31
+ "단일 선택 용도로 체크박스 사용",
32
+ "레이블 없이 체크박스만 단독 배치 (테이블 행 선택 제외)",
33
+ "레이블을 체크박스 좌측에 배치",
34
+ "체크박스로 즉시 실행 동작 트리거",
35
+ "Indeterminate 상태를 사용자 직접 조작으로 진입",
36
+ "NCDS 기준 외 임의 색상, radius, 크기 변경",
37
+ "Disabled 상태에서 시각적 강조나 인터랙션 하이라이트 추가",
38
+ "가로 정렬 시 5개 이상의 체크박스 나열",
39
+ "supportText를 에러 메시지 용도로 사용",
40
+ "on/off 토글 용도로 체크박스 사용"
41
+ ],
42
+ "seeAlso": [
43
+ "radio",
44
+ "toggle",
45
+ "button"
46
+ ],
47
+ "htmlElement": "input",
48
+ "props": {
49
+ "destructive": {
50
+ "type": "boolean",
51
+ "required": false,
52
+ "default": false
53
+ },
54
+ "indeterminate": {
55
+ "type": "boolean",
56
+ "required": false,
57
+ "default": false
58
+ },
59
+ "onChange": {
60
+ "type": "function",
61
+ "required": false
62
+ },
63
+ "size": {
64
+ "type": "enum",
65
+ "required": false,
66
+ "values": [
67
+ "sm",
68
+ "xs"
69
+ ],
70
+ "default": "xs"
71
+ },
72
+ "supportText": {
73
+ "type": "string",
74
+ "required": false
75
+ },
76
+ "text": {
77
+ "type": "ReactNode",
78
+ "required": false
79
+ }
80
+ },
81
+ "html": {},
82
+ "bemClasses": [
83
+ "ncua-checkbox-field",
84
+ "ncua-checkbox-field--sm",
85
+ "ncua-checkbox-field--xs",
86
+ "ncua-checkbox-field__input",
87
+ "ncua-checkbox-field__support-text",
88
+ "ncua-checkbox-field__text",
89
+ "ncua-checkbox-input"
90
+ ],
91
+ "usage": {
92
+ "import": "import { Checkbox } from '@ncds/ui-admin';",
93
+ "react": {
94
+ "default": "<Checkbox />",
95
+ "size:sm": "<Checkbox size=\"sm\" />",
96
+ "size:xs": "<Checkbox size=\"xs\" />"
97
+ }
98
+ }
99
+ }