@ncds/ui-admin-mcp 1.0.0-alpha.2
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.
- package/README.md +113 -0
- package/bin/components.bundle.js +21 -0
- package/bin/definitions/compliance-rules.json +64 -0
- package/bin/definitions/instructions.md +96 -0
- package/bin/definitions/rules.json +57 -0
- package/bin/definitions/token-descriptions.json +27 -0
- package/bin/definitions/tool-definitions.json +42 -0
- package/bin/instructions.d.ts +1 -0
- package/bin/instructions.js +14 -0
- package/bin/server.d.ts +1 -0
- package/bin/server.js +164 -0
- package/bin/server.mjs +8 -0
- package/bin/tools/getComponentHtml.d.ts +3 -0
- package/bin/tools/getComponentHtml.js +30 -0
- package/bin/tools/getComponentProps.d.ts +4 -0
- package/bin/tools/getComponentProps.js +17 -0
- package/bin/tools/getDesignTokens.d.ts +13 -0
- package/bin/tools/getDesignTokens.js +20 -0
- package/bin/tools/listComponents.d.ts +16 -0
- package/bin/tools/listComponents.js +24 -0
- package/bin/tools/listIcons.d.ts +22 -0
- package/bin/tools/listIcons.js +23 -0
- package/bin/tools/ping.d.ts +17 -0
- package/bin/tools/ping.js +20 -0
- package/bin/tools/renderToHtml.d.ts +21 -0
- package/bin/tools/renderToHtml.js +177 -0
- package/bin/tools/searchComponent.d.ts +4 -0
- package/bin/tools/searchComponent.js +33 -0
- package/bin/tools/searchIcon.d.ts +7 -0
- package/bin/tools/searchIcon.js +19 -0
- package/bin/tools/validateHtml.d.ts +18 -0
- package/bin/tools/validateHtml.js +85 -0
- package/bin/types.d.ts +111 -0
- package/bin/types.js +5 -0
- package/bin/utils/bemValidator.d.ts +36 -0
- package/bin/utils/bemValidator.js +198 -0
- package/bin/utils/compliance.d.ts +52 -0
- package/bin/utils/compliance.js +199 -0
- package/bin/utils/dataLoader.d.ts +33 -0
- package/bin/utils/dataLoader.js +174 -0
- package/bin/utils/domEnvironment.d.ts +9 -0
- package/bin/utils/domEnvironment.js +25 -0
- package/bin/utils/fuzzyMatch.d.ts +21 -0
- package/bin/utils/fuzzyMatch.js +110 -0
- package/bin/utils/logger.d.ts +18 -0
- package/bin/utils/logger.js +27 -0
- package/bin/utils/response.d.ts +26 -0
- package/bin/utils/response.js +28 -0
- package/bin/utils/tokenValidator.d.ts +24 -0
- package/bin/utils/tokenValidator.js +162 -0
- package/bin/version.d.ts +4 -0
- package/bin/version.js +7 -0
- package/data/_icons.json +12361 -0
- package/data/_meta.json +12 -0
- package/data/_tokens.json +661 -0
- package/data/badge-group.json +121 -0
- package/data/badge.json +130 -0
- package/data/bread-crumb.json +51 -0
- package/data/button-group.json +94 -0
- package/data/button.json +143 -0
- package/data/carousel-arrow.json +87 -0
- package/data/carousel-number-group.json +87 -0
- package/data/checkbox.json +99 -0
- package/data/combo-box.json +157 -0
- package/data/date-picker.json +109 -0
- package/data/divider.json +91 -0
- package/data/dot.json +103 -0
- package/data/dropdown.json +123 -0
- package/data/empty-state.json +64 -0
- package/data/featured-icon.json +125 -0
- package/data/file-input.json +161 -0
- package/data/horizontal-tab.json +114 -0
- package/data/image-file-input.json +185 -0
- package/data/input-base.json +145 -0
- package/data/modal.json +131 -0
- package/data/notification.json +176 -0
- package/data/number-input.json +141 -0
- package/data/pagination.json +101 -0
- package/data/password-input.json +45 -0
- package/data/progress-bar.json +90 -0
- package/data/progress-circle.json +96 -0
- package/data/radio.json +86 -0
- package/data/range-date-picker-with-buttons.json +101 -0
- package/data/range-date-picker.json +87 -0
- package/data/select-box.json +177 -0
- package/data/select.json +116 -0
- package/data/slider.json +100 -0
- package/data/spinner.json +94 -0
- package/data/switch.json +109 -0
- package/data/tag.json +101 -0
- package/data/textarea.json +96 -0
- package/data/toggle.json +102 -0
- package/data/tooltip.json +185 -0
- package/data/vertical-tab.json +99 -0
- package/package.json +71 -0
- package/templates/.mcp.json.example +8 -0
- package/templates/README.md +30 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "range-date-picker",
|
|
3
|
+
"exportName": "RangeDatePicker",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "RangeDatePicker는 시작일~종료일 기간 범위를 선택해야 하는 경우 사용하는 복합 선택 위젯입니다. 검색 기간 설정, 노출 기간 설정, 이벤트 기간 설정 등 두 날짜의 쌍(Pair)이 필요한 모든 상황에서 사용합니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"범위날짜선택",
|
|
10
|
+
"RangeDatePicker",
|
|
11
|
+
"RangeDatePickerWithButtons",
|
|
12
|
+
"컴포넌트",
|
|
13
|
+
"기간선택",
|
|
14
|
+
"시작일",
|
|
15
|
+
"종료일",
|
|
16
|
+
"날짜범위",
|
|
17
|
+
"ButtonGroup",
|
|
18
|
+
"기간옵션",
|
|
19
|
+
"periodKeys",
|
|
20
|
+
"validationOption",
|
|
21
|
+
"onDateValidation",
|
|
22
|
+
"overlap",
|
|
23
|
+
"period",
|
|
24
|
+
"NCDS"
|
|
25
|
+
],
|
|
26
|
+
"hasChildren": false,
|
|
27
|
+
"whenToUse": [
|
|
28
|
+
"시작일·종료일 동일 Format·동일 Size를 유지",
|
|
29
|
+
"기간 옵션 ButtonGroup(4~7개)으로 빠른 기간 설정 지원",
|
|
30
|
+
"overlap/period 유효성 검증으로 잘못된 입력 방지"
|
|
31
|
+
],
|
|
32
|
+
"forbiddenRules": [
|
|
33
|
+
"시작일과 종료일의 Format 불일치 금지",
|
|
34
|
+
"기간 옵션 ButtonGroup 3개 이하 또는 8개 이상 구성 금지",
|
|
35
|
+
"시작일·종료일 DatePicker 사이즈 불일치 금지",
|
|
36
|
+
"종료일에 isEndDate 수동 false 설정 금지",
|
|
37
|
+
"조회 화면에서 Disabled Field 사용 금지",
|
|
38
|
+
"텍스트 입력 불가 UX 금지",
|
|
39
|
+
"ButtonGroup 없이 기간 프리셋 누락 금지",
|
|
40
|
+
"구분자 ~ 외 다른 기호 사용 금지"
|
|
41
|
+
],
|
|
42
|
+
"seeAlso": [
|
|
43
|
+
"date-picker",
|
|
44
|
+
"button-group"
|
|
45
|
+
],
|
|
46
|
+
"props": {
|
|
47
|
+
"endDateOptions": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"required": true,
|
|
50
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/date-picker/DatePicker\").DatePickerProps"
|
|
51
|
+
},
|
|
52
|
+
"onDateValidation": {
|
|
53
|
+
"type": "function",
|
|
54
|
+
"required": false
|
|
55
|
+
},
|
|
56
|
+
"size": {
|
|
57
|
+
"type": "enum",
|
|
58
|
+
"required": false,
|
|
59
|
+
"values": [
|
|
60
|
+
"sm",
|
|
61
|
+
"xs"
|
|
62
|
+
],
|
|
63
|
+
"default": "xs"
|
|
64
|
+
},
|
|
65
|
+
"startDateOptions": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"required": true,
|
|
68
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/date-picker/DatePicker\").DatePickerProps"
|
|
69
|
+
},
|
|
70
|
+
"validationOption": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"required": false
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"html": {},
|
|
76
|
+
"bemClasses": [
|
|
77
|
+
"ncua-range-date-picker"
|
|
78
|
+
],
|
|
79
|
+
"usage": {
|
|
80
|
+
"import": "import { RangeDatePicker } from '@ncds/ui-admin';",
|
|
81
|
+
"react": {
|
|
82
|
+
"default": "<RangeDatePicker endDateOptions=\"\" startDateOptions=\"\" />",
|
|
83
|
+
"size:sm": "<RangeDatePicker size=\"sm\" endDateOptions=\"\" startDateOptions=\"\" />",
|
|
84
|
+
"size:xs": "<RangeDatePicker size=\"xs\" endDateOptions=\"\" startDateOptions=\"\" />"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "select-box",
|
|
3
|
+
"exportName": "SelectBox",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": true,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "Selectbox는 목록(레이어) 중에서 하나 이상의 항목을 선택하는 입력 컴포넌트로, 선택 가능한 옵션이 3~30개 정도이며 공간 효율이 중요한 경우 사용합니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"셀렉트박스",
|
|
10
|
+
"Selectbox",
|
|
11
|
+
"SelectBox",
|
|
12
|
+
"Dropdown",
|
|
13
|
+
"드롭다운",
|
|
14
|
+
"Single Select",
|
|
15
|
+
"Multi Select",
|
|
16
|
+
"Chips",
|
|
17
|
+
"옵션선택",
|
|
18
|
+
"placeholder",
|
|
19
|
+
"optionItems",
|
|
20
|
+
"multiple",
|
|
21
|
+
"react-hook-form",
|
|
22
|
+
"NCDS"
|
|
23
|
+
],
|
|
24
|
+
"hasChildren": true,
|
|
25
|
+
"whenToUse": [
|
|
26
|
+
"옵션 수 6개 이상 또는 공간 제약 시 사용",
|
|
27
|
+
"옵션 3~30개인 경우",
|
|
28
|
+
"테이블 내부 컴팩트 영역에서 옵션 선택 필요",
|
|
29
|
+
"상태/분류/정렬 단일 선택",
|
|
30
|
+
"팀 멤버/태그/필터 다중 선택"
|
|
31
|
+
],
|
|
32
|
+
"forbiddenRules": [
|
|
33
|
+
"옵션 2개(180도 반대 의미)인데 Selectbox 사용 금지",
|
|
34
|
+
"옵션 수 5개 이하+공간 충분한데 Selectbox 남용 금지",
|
|
35
|
+
"30개 이상 옵션을 일반 Selectbox로만 제공 금지",
|
|
36
|
+
"다중 선택형에서 선택 완료 없이 즉시 확정 UX 혼용 금지",
|
|
37
|
+
"말줄임 Chips에 Tooltip 미제공 금지",
|
|
38
|
+
"Read only에서 레이어 열림 동작 제공 금지",
|
|
39
|
+
"Read only를 Disabled로 대체하여 값 가독성 저하 지양",
|
|
40
|
+
"Disabled 상태에서 Tooltip/설명 없이 클릭 시도 유도 금지"
|
|
41
|
+
],
|
|
42
|
+
"seeAlso": [
|
|
43
|
+
"radio",
|
|
44
|
+
"checkbox",
|
|
45
|
+
"switch",
|
|
46
|
+
"input",
|
|
47
|
+
"tooltip"
|
|
48
|
+
],
|
|
49
|
+
"htmlElement": "div",
|
|
50
|
+
"props": {
|
|
51
|
+
"align": {
|
|
52
|
+
"type": "enum",
|
|
53
|
+
"required": false,
|
|
54
|
+
"values": [
|
|
55
|
+
"left",
|
|
56
|
+
"right"
|
|
57
|
+
],
|
|
58
|
+
"default": "left"
|
|
59
|
+
},
|
|
60
|
+
"autoWidth": {
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"required": false,
|
|
63
|
+
"default": true
|
|
64
|
+
},
|
|
65
|
+
"children": {
|
|
66
|
+
"type": "ReactNode",
|
|
67
|
+
"required": false
|
|
68
|
+
},
|
|
69
|
+
"destructive": {
|
|
70
|
+
"type": "boolean",
|
|
71
|
+
"required": false,
|
|
72
|
+
"default": false
|
|
73
|
+
},
|
|
74
|
+
"disabled": {
|
|
75
|
+
"type": "boolean",
|
|
76
|
+
"required": false,
|
|
77
|
+
"default": false
|
|
78
|
+
},
|
|
79
|
+
"disabledPlaceholder": {
|
|
80
|
+
"type": "boolean",
|
|
81
|
+
"required": false,
|
|
82
|
+
"default": false
|
|
83
|
+
},
|
|
84
|
+
"hintText": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"required": false
|
|
87
|
+
},
|
|
88
|
+
"maxHeight": {
|
|
89
|
+
"type": "number",
|
|
90
|
+
"required": false,
|
|
91
|
+
"default": "DEFAULT_MAX_HEIGHT"
|
|
92
|
+
},
|
|
93
|
+
"multiple": {
|
|
94
|
+
"type": "boolean",
|
|
95
|
+
"required": false,
|
|
96
|
+
"default": false
|
|
97
|
+
},
|
|
98
|
+
"onChange": {
|
|
99
|
+
"type": "function",
|
|
100
|
+
"required": false
|
|
101
|
+
},
|
|
102
|
+
"onEdit": {
|
|
103
|
+
"type": "function",
|
|
104
|
+
"required": false
|
|
105
|
+
},
|
|
106
|
+
"optionItems": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"required": false,
|
|
109
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
|
|
110
|
+
"default": "[]"
|
|
111
|
+
},
|
|
112
|
+
"placeholder": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"required": false,
|
|
115
|
+
"default": "선택하세요"
|
|
116
|
+
},
|
|
117
|
+
"register": {
|
|
118
|
+
"type": "object",
|
|
119
|
+
"required": false
|
|
120
|
+
},
|
|
121
|
+
"size": {
|
|
122
|
+
"type": "enum",
|
|
123
|
+
"required": false,
|
|
124
|
+
"values": [
|
|
125
|
+
"md",
|
|
126
|
+
"sm",
|
|
127
|
+
"xs"
|
|
128
|
+
],
|
|
129
|
+
"default": "xs"
|
|
130
|
+
},
|
|
131
|
+
"type": {
|
|
132
|
+
"type": "enum",
|
|
133
|
+
"required": false,
|
|
134
|
+
"values": [
|
|
135
|
+
"default",
|
|
136
|
+
"simple"
|
|
137
|
+
],
|
|
138
|
+
"default": "default"
|
|
139
|
+
},
|
|
140
|
+
"value": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"required": false,
|
|
143
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/dropdown/option\").OptionValue | undefined"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"html": {},
|
|
147
|
+
"bemClasses": [
|
|
148
|
+
"ncua-hint-text",
|
|
149
|
+
"ncua-selectbox",
|
|
150
|
+
"ncua-selectbox--disabled",
|
|
151
|
+
"ncua-selectbox--multiple",
|
|
152
|
+
"ncua-selectbox--open",
|
|
153
|
+
"ncua-selectbox--simple",
|
|
154
|
+
"ncua-selectbox__arrow",
|
|
155
|
+
"ncua-selectbox__arrow--up",
|
|
156
|
+
"ncua-selectbox__content",
|
|
157
|
+
"ncua-selectbox__content-inner",
|
|
158
|
+
"ncua-selectbox__tags",
|
|
159
|
+
"ncua-selectbox__value",
|
|
160
|
+
"ncua-selectbox__value-container",
|
|
161
|
+
"ncua-selectbox__value-icon",
|
|
162
|
+
"ncua-selectbox__value-text"
|
|
163
|
+
],
|
|
164
|
+
"usage": {
|
|
165
|
+
"import": "import { SelectBox } from '@ncds/ui-admin';",
|
|
166
|
+
"react": {
|
|
167
|
+
"default": "<SelectBox />",
|
|
168
|
+
"align:left": "<SelectBox align=\"left\" />",
|
|
169
|
+
"align:right": "<SelectBox align=\"right\" />",
|
|
170
|
+
"size:md": "<SelectBox size=\"md\" />",
|
|
171
|
+
"size:sm": "<SelectBox size=\"sm\" />",
|
|
172
|
+
"size:xs": "<SelectBox size=\"xs\" />",
|
|
173
|
+
"type:default": "<SelectBox type=\"default\" />",
|
|
174
|
+
"type:simple": "<SelectBox type=\"simple\" />"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
package/data/select.json
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "select",
|
|
3
|
+
"exportName": "Select",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "네이티브 HTML select 래퍼로, 간단한 드롭다운 목록에서 하나의 항목을 선택하는 입력 컴포넌트입니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"셀렉트",
|
|
10
|
+
"드롭다운 선택",
|
|
11
|
+
"목록 선택",
|
|
12
|
+
"dropdown select",
|
|
13
|
+
"카테고리",
|
|
14
|
+
"정렬",
|
|
15
|
+
"필터",
|
|
16
|
+
"Select",
|
|
17
|
+
"SelectBox",
|
|
18
|
+
"셀렉트박스",
|
|
19
|
+
"Dropdown",
|
|
20
|
+
"드롭다운",
|
|
21
|
+
"옵션선택",
|
|
22
|
+
"placeholder",
|
|
23
|
+
"react-hook-form",
|
|
24
|
+
"Single Select"
|
|
25
|
+
],
|
|
26
|
+
"hasChildren": true,
|
|
27
|
+
"whenToUse": [
|
|
28
|
+
"간단한 목록에서 하나를 선택하는 맥락",
|
|
29
|
+
"커스텀 드롭다운이 불필요한 단순 선택",
|
|
30
|
+
"옵션 수 6개 이상이거나 공간이 제한적인 경우"
|
|
31
|
+
],
|
|
32
|
+
"forbiddenRules": [
|
|
33
|
+
"옵션 2개(반대 의미)이면 Switch 우선",
|
|
34
|
+
"5개 이하+공간 충분하면 Radio/Checkbox 우선",
|
|
35
|
+
"30개 이상 옵션을 일반 select로만 제공 금지",
|
|
36
|
+
"Read only 상태에서 레이어 열림 동작 제공 금지",
|
|
37
|
+
"Disabled 상태에서 Tooltip/설명 없이 클릭 시도 유도 금지",
|
|
38
|
+
"말줄임 Chips에 Tooltip 미제공 금지"
|
|
39
|
+
],
|
|
40
|
+
"seeAlso": [
|
|
41
|
+
"selectbox",
|
|
42
|
+
"combobox"
|
|
43
|
+
],
|
|
44
|
+
"htmlElement": "select",
|
|
45
|
+
"props": {
|
|
46
|
+
"children": {
|
|
47
|
+
"type": "ReactNode",
|
|
48
|
+
"required": false
|
|
49
|
+
},
|
|
50
|
+
"destructive": {
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"required": false,
|
|
53
|
+
"default": false
|
|
54
|
+
},
|
|
55
|
+
"disabledPlaceholder": {
|
|
56
|
+
"type": "boolean",
|
|
57
|
+
"required": false,
|
|
58
|
+
"default": false
|
|
59
|
+
},
|
|
60
|
+
"hintText": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"required": false
|
|
63
|
+
},
|
|
64
|
+
"optionItems": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"required": false,
|
|
67
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined"
|
|
68
|
+
},
|
|
69
|
+
"placeholder": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"required": false
|
|
72
|
+
},
|
|
73
|
+
"register": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"required": false
|
|
76
|
+
},
|
|
77
|
+
"size": {
|
|
78
|
+
"type": "enum",
|
|
79
|
+
"required": false,
|
|
80
|
+
"values": [
|
|
81
|
+
"md",
|
|
82
|
+
"sm",
|
|
83
|
+
"xs"
|
|
84
|
+
],
|
|
85
|
+
"default": "md"
|
|
86
|
+
},
|
|
87
|
+
"type": {
|
|
88
|
+
"type": "enum",
|
|
89
|
+
"required": false,
|
|
90
|
+
"values": [
|
|
91
|
+
"default",
|
|
92
|
+
"simple"
|
|
93
|
+
],
|
|
94
|
+
"default": "default"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"html": {},
|
|
98
|
+
"bemClasses": [
|
|
99
|
+
"ncua-hint-text",
|
|
100
|
+
"ncua-select",
|
|
101
|
+
"ncua-select--simple",
|
|
102
|
+
"ncua-select__content",
|
|
103
|
+
"ncua-select__tag"
|
|
104
|
+
],
|
|
105
|
+
"usage": {
|
|
106
|
+
"import": "import { Select } from '@ncds/ui-admin';",
|
|
107
|
+
"react": {
|
|
108
|
+
"default": "<Select />",
|
|
109
|
+
"size:md": "<Select size=\"md\" />",
|
|
110
|
+
"size:sm": "<Select size=\"sm\" />",
|
|
111
|
+
"size:xs": "<Select size=\"xs\" />",
|
|
112
|
+
"type:default": "<Select type=\"default\" />",
|
|
113
|
+
"type:simple": "<Select type=\"simple\" />"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
package/data/slider.json
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "slider",
|
|
3
|
+
"exportName": "Slider",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": true,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "Slider는 연속적 또는 구간 기반 수치를 직관적으로 조절하는 입력 컴포넌트로, 텍스트 입력보다 범위가 명확하고 빠른 조정이 필요하며 시각적 비율이 중요한 경우 사용합니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"슬라이더",
|
|
10
|
+
"Slider",
|
|
11
|
+
"Range",
|
|
12
|
+
"Thumb",
|
|
13
|
+
"Track",
|
|
14
|
+
"범위선택",
|
|
15
|
+
"단일값",
|
|
16
|
+
"min",
|
|
17
|
+
"max",
|
|
18
|
+
"step",
|
|
19
|
+
"labelPosition",
|
|
20
|
+
"드래그",
|
|
21
|
+
"키보드조작",
|
|
22
|
+
"NCDS"
|
|
23
|
+
],
|
|
24
|
+
"hasChildren": false,
|
|
25
|
+
"whenToUse": [
|
|
26
|
+
"min/max와 step이 반드시 정의되어야 하며 정밀 수치 입력이 필요한 경우 NumberInput과 조합하거나 대체",
|
|
27
|
+
"최소값과 최대값이 명확한 경우",
|
|
28
|
+
"값이 상대적 비율로 이해되는 경우",
|
|
29
|
+
"빠른 조정을 선호하는 경우",
|
|
30
|
+
"0~100 범위 기반 수치"
|
|
31
|
+
],
|
|
32
|
+
"forbiddenRules": [
|
|
33
|
+
"min/max 없이 사용 금지",
|
|
34
|
+
"step 정의 없이 사용 금지",
|
|
35
|
+
"값 표시 없이 정밀 값 조정 요구 금지",
|
|
36
|
+
"정밀 수치 입력 필요한 곳에서 단독 사용 금지",
|
|
37
|
+
"Range Slider에서 Thumb 교차 허용 금지"
|
|
38
|
+
],
|
|
39
|
+
"seeAlso": [
|
|
40
|
+
"number-input",
|
|
41
|
+
"input",
|
|
42
|
+
"tooltip"
|
|
43
|
+
],
|
|
44
|
+
"props": {
|
|
45
|
+
"className": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"required": false
|
|
48
|
+
},
|
|
49
|
+
"disabled": {
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"required": false,
|
|
52
|
+
"default": false
|
|
53
|
+
},
|
|
54
|
+
"labelPosition": {
|
|
55
|
+
"type": "enum",
|
|
56
|
+
"required": false,
|
|
57
|
+
"values": [
|
|
58
|
+
"bottom",
|
|
59
|
+
"top-floating"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"max": {
|
|
63
|
+
"type": "number",
|
|
64
|
+
"required": false,
|
|
65
|
+
"default": 100
|
|
66
|
+
},
|
|
67
|
+
"min": {
|
|
68
|
+
"type": "number",
|
|
69
|
+
"required": false,
|
|
70
|
+
"default": 0
|
|
71
|
+
},
|
|
72
|
+
"onChange": {
|
|
73
|
+
"type": "function",
|
|
74
|
+
"required": false
|
|
75
|
+
},
|
|
76
|
+
"step": {
|
|
77
|
+
"type": "number",
|
|
78
|
+
"required": false,
|
|
79
|
+
"default": 1
|
|
80
|
+
},
|
|
81
|
+
"value": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"required": false,
|
|
84
|
+
"rawType": "number | [number, number] | undefined",
|
|
85
|
+
"default": 0
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"html": {},
|
|
89
|
+
"bemClasses": [
|
|
90
|
+
"ncua-slider"
|
|
91
|
+
],
|
|
92
|
+
"usage": {
|
|
93
|
+
"import": "import { Slider } from '@ncds/ui-admin';",
|
|
94
|
+
"react": {
|
|
95
|
+
"default": "<Slider />",
|
|
96
|
+
"labelPosition:bottom": "<Slider labelPosition=\"bottom\" />",
|
|
97
|
+
"labelPosition:top-floating": "<Slider labelPosition=\"top-floating\" />"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "spinner",
|
|
3
|
+
"exportName": "Spinner",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "feedback",
|
|
7
|
+
"description": "Spinner는 데이터 조회, 검색, 업로드, 파일 생성 등 3초 이상 소요되는 처리 과정에서 사용자 불안감을 줄이기 위해 제공되는 피드백 UI입니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"Spinner",
|
|
10
|
+
"스피너",
|
|
11
|
+
"로딩",
|
|
12
|
+
"loading",
|
|
13
|
+
"불확정",
|
|
14
|
+
"비동기",
|
|
15
|
+
"대기",
|
|
16
|
+
"backdrop",
|
|
17
|
+
"dim",
|
|
18
|
+
"오버레이",
|
|
19
|
+
"취소",
|
|
20
|
+
"장시간",
|
|
21
|
+
"General",
|
|
22
|
+
"Long",
|
|
23
|
+
"NCDS"
|
|
24
|
+
],
|
|
25
|
+
"hasChildren": true,
|
|
26
|
+
"whenToUse": [
|
|
27
|
+
"불확정 로딩 상태를 시각적으로 전달",
|
|
28
|
+
"진행률(%)을 알 수 없는 비동기 작업에서 사용",
|
|
29
|
+
"진행률이 확정된 경우에는 ProgressBar 또는 ProgressCircle을 사용"
|
|
30
|
+
],
|
|
31
|
+
"forbiddenRules": [
|
|
32
|
+
"3초 미만 작업에 사용 금지",
|
|
33
|
+
"확정 진행률에 사용 금지(ProgressBar/ProgressCircle 사용)",
|
|
34
|
+
"안내 문구 없이 장시간 노출 금지",
|
|
35
|
+
"오버레이 없이 전체 페이지 로딩 사용 금지",
|
|
36
|
+
"장식 용도 금지"
|
|
37
|
+
],
|
|
38
|
+
"seeAlso": [
|
|
39
|
+
"progress-bar",
|
|
40
|
+
"progress-circle"
|
|
41
|
+
],
|
|
42
|
+
"props": {
|
|
43
|
+
"as": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"required": false,
|
|
46
|
+
"rawType": "React.ElementType | undefined",
|
|
47
|
+
"default": "p"
|
|
48
|
+
},
|
|
49
|
+
"backdrop": {
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"required": false,
|
|
52
|
+
"default": false
|
|
53
|
+
},
|
|
54
|
+
"children": {
|
|
55
|
+
"type": "ReactNode",
|
|
56
|
+
"required": false
|
|
57
|
+
},
|
|
58
|
+
"size": {
|
|
59
|
+
"type": "enum",
|
|
60
|
+
"required": false,
|
|
61
|
+
"values": [
|
|
62
|
+
"lg",
|
|
63
|
+
"md",
|
|
64
|
+
"sm",
|
|
65
|
+
"xl",
|
|
66
|
+
"xs"
|
|
67
|
+
],
|
|
68
|
+
"default": "md"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"html": {},
|
|
72
|
+
"bemClasses": [
|
|
73
|
+
"ncua-spinner",
|
|
74
|
+
"ncua-spinner--backdrop",
|
|
75
|
+
"ncua-spinner--lg",
|
|
76
|
+
"ncua-spinner--md",
|
|
77
|
+
"ncua-spinner--sm",
|
|
78
|
+
"ncua-spinner--xl",
|
|
79
|
+
"ncua-spinner--xs",
|
|
80
|
+
"ncua-spinner__content",
|
|
81
|
+
"ncua-spinner__text"
|
|
82
|
+
],
|
|
83
|
+
"usage": {
|
|
84
|
+
"import": "import { Spinner } from '@ncds/ui-admin';",
|
|
85
|
+
"react": {
|
|
86
|
+
"default": "<Spinner />",
|
|
87
|
+
"size:lg": "<Spinner size=\"lg\" />",
|
|
88
|
+
"size:md": "<Spinner size=\"md\" />",
|
|
89
|
+
"size:sm": "<Spinner size=\"sm\" />",
|
|
90
|
+
"size:xl": "<Spinner size=\"xl\" />",
|
|
91
|
+
"size:xs": "<Spinner size=\"xs\" />"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
package/data/switch.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "switch",
|
|
3
|
+
"exportName": "Switch",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "Switch는 하나의 기능 또는 상태에 대해 180도 다른 두 개의 선택지를 제공하는 토글형 컴포넌트로, 라디오 버튼 방식의 좌/우 영역 선택을 통해 즉각적인 상태 전환을 수행합니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"스위치",
|
|
10
|
+
"Switch",
|
|
11
|
+
"토글",
|
|
12
|
+
"Toggle",
|
|
13
|
+
"On",
|
|
14
|
+
"Off",
|
|
15
|
+
"사용함",
|
|
16
|
+
"사용안함",
|
|
17
|
+
"이진선택",
|
|
18
|
+
"즉각전환",
|
|
19
|
+
"SwitchOption",
|
|
20
|
+
"SwitchSize",
|
|
21
|
+
"NCDS"
|
|
22
|
+
],
|
|
23
|
+
"hasChildren": false,
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"선택지가 정확히 2개이고 180도 반대 의미이며 하위 옵션이 없는 경우",
|
|
26
|
+
"좌측=On 우측=Off를 일관 유지",
|
|
27
|
+
"테이블 내 사용은 메인/핵심 옵션에 한해 제한적 허용"
|
|
28
|
+
],
|
|
29
|
+
"forbiddenRules": [
|
|
30
|
+
"다중 옵션 기능에 Switch 사용 금지",
|
|
31
|
+
"하위 옵션 존재 시 Switch 사용 금지",
|
|
32
|
+
"강조 스타일로 특정 상태 유도 금지",
|
|
33
|
+
"3개 이상 선택지에 사용 금지",
|
|
34
|
+
"Title 영역에 Switch 적용 지양"
|
|
35
|
+
],
|
|
36
|
+
"seeAlso": [
|
|
37
|
+
"radio",
|
|
38
|
+
"checkbox",
|
|
39
|
+
"selectbox",
|
|
40
|
+
"toggle"
|
|
41
|
+
],
|
|
42
|
+
"props": {
|
|
43
|
+
"className": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"required": false
|
|
46
|
+
},
|
|
47
|
+
"defaultValue": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"required": false,
|
|
50
|
+
"rawType": "string | boolean | undefined",
|
|
51
|
+
"default": "left.value"
|
|
52
|
+
},
|
|
53
|
+
"disabled": {
|
|
54
|
+
"type": "boolean",
|
|
55
|
+
"required": false,
|
|
56
|
+
"default": false
|
|
57
|
+
},
|
|
58
|
+
"left": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": true
|
|
61
|
+
},
|
|
62
|
+
"name": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"required": true
|
|
65
|
+
},
|
|
66
|
+
"onChange": {
|
|
67
|
+
"type": "function",
|
|
68
|
+
"required": false
|
|
69
|
+
},
|
|
70
|
+
"refs": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"required": false
|
|
73
|
+
},
|
|
74
|
+
"right": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"required": true
|
|
77
|
+
},
|
|
78
|
+
"size": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"required": false,
|
|
81
|
+
"rawType": "any",
|
|
82
|
+
"default": "xs"
|
|
83
|
+
},
|
|
84
|
+
"value": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"required": false,
|
|
87
|
+
"rawType": "string | boolean | undefined"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"html": {},
|
|
91
|
+
"bemClasses": [
|
|
92
|
+
"ncua-switch",
|
|
93
|
+
"ncua-switch--disabled",
|
|
94
|
+
"ncua-switch__label",
|
|
95
|
+
"ncua-switch__option",
|
|
96
|
+
"ncua-switch__option--active",
|
|
97
|
+
"ncua-switch__option--inactive",
|
|
98
|
+
"ncua-switch__option--left",
|
|
99
|
+
"ncua-switch__option--right",
|
|
100
|
+
"ncua-switch__radio ncua-switch__radio--left",
|
|
101
|
+
"ncua-switch__radio ncua-switch__radio--right"
|
|
102
|
+
],
|
|
103
|
+
"usage": {
|
|
104
|
+
"import": "import { Switch } from '@ncds/ui-admin';",
|
|
105
|
+
"react": {
|
|
106
|
+
"default": "<Switch left=\"\" name=\"\" right=\"\" />"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|