@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,141 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "number-input",
|
|
3
|
+
"exportName": "NumberInput",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "NumberInput은 숫자만 입력 가능한 전용 입력 컨트롤로, 직접 입력과 Spin Button(▲/▼) 조작을 모두 지원하며 Step 기능을 통해 값을 증감할 수 있습니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"숫자입력",
|
|
10
|
+
"NumberInput",
|
|
11
|
+
"스핀버튼",
|
|
12
|
+
"SpinButton",
|
|
13
|
+
"Stepper",
|
|
14
|
+
"수량",
|
|
15
|
+
"step",
|
|
16
|
+
"minValue",
|
|
17
|
+
"maxValue",
|
|
18
|
+
"trailing",
|
|
19
|
+
"leading",
|
|
20
|
+
"stepperPosition",
|
|
21
|
+
"numeric",
|
|
22
|
+
"키보드조작",
|
|
23
|
+
"NCDS"
|
|
24
|
+
],
|
|
25
|
+
"hasChildren": false,
|
|
26
|
+
"whenToUse": [
|
|
27
|
+
"NumberInput은 명확한 범위(min/max), 기본값, 증감 단위(Step)와 함께 제공되어야 하며, 사용자가 입력 가능한 범위와 단위를 입력 전에 인지할 수 있어야 한다"
|
|
28
|
+
],
|
|
29
|
+
"forbiddenRules": [
|
|
30
|
+
"min / max 없이 사용 금지",
|
|
31
|
+
"Default Value 없이 사용 금지",
|
|
32
|
+
"Step 변경 후 안내 미제공 금지",
|
|
33
|
+
"숫자 외 문자 허용 금지",
|
|
34
|
+
"Leading/Trailing 혼합 사용 금지"
|
|
35
|
+
],
|
|
36
|
+
"seeAlso": [
|
|
37
|
+
"input",
|
|
38
|
+
"slider",
|
|
39
|
+
"tooltip",
|
|
40
|
+
"label"
|
|
41
|
+
],
|
|
42
|
+
"props": {
|
|
43
|
+
"clearText": {
|
|
44
|
+
"type": "boolean",
|
|
45
|
+
"required": false
|
|
46
|
+
},
|
|
47
|
+
"destructive": {
|
|
48
|
+
"type": "boolean",
|
|
49
|
+
"required": false
|
|
50
|
+
},
|
|
51
|
+
"disabled": {
|
|
52
|
+
"type": "boolean",
|
|
53
|
+
"required": false
|
|
54
|
+
},
|
|
55
|
+
"hintText": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"required": false
|
|
58
|
+
},
|
|
59
|
+
"label": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"required": false
|
|
62
|
+
},
|
|
63
|
+
"leadingElement": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"required": false
|
|
66
|
+
},
|
|
67
|
+
"maxLength": {
|
|
68
|
+
"type": "number",
|
|
69
|
+
"required": false
|
|
70
|
+
},
|
|
71
|
+
"maxValue": {
|
|
72
|
+
"type": "number",
|
|
73
|
+
"required": false
|
|
74
|
+
},
|
|
75
|
+
"minValue": {
|
|
76
|
+
"type": "number",
|
|
77
|
+
"required": false
|
|
78
|
+
},
|
|
79
|
+
"onClearText": {
|
|
80
|
+
"type": "function",
|
|
81
|
+
"required": false
|
|
82
|
+
},
|
|
83
|
+
"required": {
|
|
84
|
+
"type": "boolean",
|
|
85
|
+
"required": false
|
|
86
|
+
},
|
|
87
|
+
"showHelpIcon": {
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"required": false
|
|
90
|
+
},
|
|
91
|
+
"showTextCount": {
|
|
92
|
+
"type": "boolean",
|
|
93
|
+
"required": false
|
|
94
|
+
},
|
|
95
|
+
"size": {
|
|
96
|
+
"type": "enum",
|
|
97
|
+
"required": false,
|
|
98
|
+
"values": [
|
|
99
|
+
"sm",
|
|
100
|
+
"xs"
|
|
101
|
+
],
|
|
102
|
+
"default": "xs"
|
|
103
|
+
},
|
|
104
|
+
"step": {
|
|
105
|
+
"type": "number",
|
|
106
|
+
"required": false,
|
|
107
|
+
"default": 1
|
|
108
|
+
},
|
|
109
|
+
"stepperPosition": {
|
|
110
|
+
"type": "enum",
|
|
111
|
+
"required": true,
|
|
112
|
+
"values": [
|
|
113
|
+
"leading",
|
|
114
|
+
"trailing"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"trailingElement": {
|
|
118
|
+
"type": "object",
|
|
119
|
+
"required": false
|
|
120
|
+
},
|
|
121
|
+
"validation": {
|
|
122
|
+
"type": "boolean",
|
|
123
|
+
"required": false
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"html": {},
|
|
127
|
+
"bemClasses": [
|
|
128
|
+
"ncua-input__number",
|
|
129
|
+
"ncua-input__stepper-button-group"
|
|
130
|
+
],
|
|
131
|
+
"usage": {
|
|
132
|
+
"import": "import { NumberInput } from '@ncds/ui-admin';",
|
|
133
|
+
"react": {
|
|
134
|
+
"default": "<NumberInput stepperPosition=\"leading\" />",
|
|
135
|
+
"size:sm": "<NumberInput size=\"sm\" stepperPosition=\"leading\" />",
|
|
136
|
+
"size:xs": "<NumberInput size=\"xs\" stepperPosition=\"leading\" />",
|
|
137
|
+
"stepperPosition:leading": "<NumberInput stepperPosition=\"leading\" />",
|
|
138
|
+
"stepperPosition:trailing": "<NumberInput stepperPosition=\"trailing\" />"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pagination",
|
|
3
|
+
"exportName": "Pagination",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "navigation",
|
|
7
|
+
"description": "Pagination은 다수의 데이터가 페이지 형태로 분포될 때 순서별 콘텐츠를 수치적으로 접근할 수 있는 내비게이션 컴포넌트입니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"Pagination",
|
|
10
|
+
"페이지네이션",
|
|
11
|
+
"페이징",
|
|
12
|
+
"페이지",
|
|
13
|
+
"내비게이션",
|
|
14
|
+
"테이블",
|
|
15
|
+
"리스트",
|
|
16
|
+
"검색결과",
|
|
17
|
+
"점프버튼",
|
|
18
|
+
"pageCount",
|
|
19
|
+
"totalCount",
|
|
20
|
+
"breakPoint",
|
|
21
|
+
"반응형",
|
|
22
|
+
"NCDS"
|
|
23
|
+
],
|
|
24
|
+
"hasChildren": false,
|
|
25
|
+
"whenToUse": [
|
|
26
|
+
"대량 데이터를 페이지 단위로 분할하여 순차적으로 탐색",
|
|
27
|
+
"20개 이상 데이터가 누적될 가능성이 있는 경우 필수 적용",
|
|
28
|
+
"10페이지 단위 그룹 이동과 첫/마지막 페이지 점프 지원"
|
|
29
|
+
],
|
|
30
|
+
"forbiddenRules": [
|
|
31
|
+
"10페이지 이하에서 이동 버튼 노출 금지",
|
|
32
|
+
"선택된 페이지 재클릭 허용 금지",
|
|
33
|
+
"10개 초과 건너뛰기 이동 금지",
|
|
34
|
+
"세로형 테이블에서 사용 금지"
|
|
35
|
+
],
|
|
36
|
+
"seeAlso": [
|
|
37
|
+
"table"
|
|
38
|
+
],
|
|
39
|
+
"htmlElement": "button",
|
|
40
|
+
"props": {
|
|
41
|
+
"breakPoint": {
|
|
42
|
+
"type": "enum",
|
|
43
|
+
"required": false,
|
|
44
|
+
"values": [
|
|
45
|
+
"mo",
|
|
46
|
+
"pc"
|
|
47
|
+
],
|
|
48
|
+
"default": "pc"
|
|
49
|
+
},
|
|
50
|
+
"className": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"required": false,
|
|
53
|
+
"default": ""
|
|
54
|
+
},
|
|
55
|
+
"currentPage": {
|
|
56
|
+
"type": "number",
|
|
57
|
+
"required": true
|
|
58
|
+
},
|
|
59
|
+
"itemCountPerPage": {
|
|
60
|
+
"type": "number",
|
|
61
|
+
"required": false,
|
|
62
|
+
"default": 10
|
|
63
|
+
},
|
|
64
|
+
"onPageChange": {
|
|
65
|
+
"type": "function",
|
|
66
|
+
"required": false
|
|
67
|
+
},
|
|
68
|
+
"pageCount": {
|
|
69
|
+
"type": "number",
|
|
70
|
+
"required": false,
|
|
71
|
+
"default": 10
|
|
72
|
+
},
|
|
73
|
+
"totalCount": {
|
|
74
|
+
"type": "number",
|
|
75
|
+
"required": true
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"html": {},
|
|
79
|
+
"bemClasses": [
|
|
80
|
+
"ncua-pagination",
|
|
81
|
+
"ncua-pagination--mo",
|
|
82
|
+
"ncua-pagination--pc",
|
|
83
|
+
"ncua-pagination__before",
|
|
84
|
+
"ncua-pagination__current-num",
|
|
85
|
+
"ncua-pagination__first",
|
|
86
|
+
"ncua-pagination__item",
|
|
87
|
+
"ncua-pagination__last",
|
|
88
|
+
"ncua-pagination__list",
|
|
89
|
+
"ncua-pagination__next",
|
|
90
|
+
"ncua-pagination__page-info",
|
|
91
|
+
"ncua-pagination__page-num"
|
|
92
|
+
],
|
|
93
|
+
"usage": {
|
|
94
|
+
"import": "import { Pagination } from '@ncds/ui-admin';",
|
|
95
|
+
"react": {
|
|
96
|
+
"default": "<Pagination currentPage={0} totalCount={0} />",
|
|
97
|
+
"breakPoint:mo": "<Pagination breakPoint=\"mo\" currentPage={0} totalCount={0} />",
|
|
98
|
+
"breakPoint:pc": "<Pagination breakPoint=\"pc\" currentPage={0} totalCount={0} />"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "password-input",
|
|
3
|
+
"exportName": "PasswordInput",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "비밀번호 전용 입력 필드로 마스킹 토글을 내장합니다",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"비밀번호",
|
|
10
|
+
"비밀번호 입력",
|
|
11
|
+
"password",
|
|
12
|
+
"패스워드",
|
|
13
|
+
"PasswordInput",
|
|
14
|
+
"비밀번호 변경",
|
|
15
|
+
"비밀번호 확인"
|
|
16
|
+
],
|
|
17
|
+
"hasChildren": false,
|
|
18
|
+
"whenToUse": [
|
|
19
|
+
"명확한 레이블과 입력 예시 Placeholder 및 유효성 안내 Helper Text와 함께 제공되어야 하는 경우",
|
|
20
|
+
"사용자가 입력 가능한 형식과 제한 조건을 입력 전에 인지할 수 있어야 하는 경우"
|
|
21
|
+
],
|
|
22
|
+
"forbiddenRules": [
|
|
23
|
+
"Label 없는 단독 Input 사용 금지",
|
|
24
|
+
"Placeholder를 Label 대체로 사용 금지",
|
|
25
|
+
"50자 이상 필드에 Text Field 사용 금지",
|
|
26
|
+
"Max 초과 입력 허용 금지",
|
|
27
|
+
"Error 상태를 실시간 남용 금지"
|
|
28
|
+
],
|
|
29
|
+
"seeAlso": [
|
|
30
|
+
"input"
|
|
31
|
+
],
|
|
32
|
+
"props": {},
|
|
33
|
+
"html": {},
|
|
34
|
+
"bemClasses": [
|
|
35
|
+
"ncua-input__icon-wrap",
|
|
36
|
+
"ncua-input__password-icon",
|
|
37
|
+
"ncua-input__right-icon"
|
|
38
|
+
],
|
|
39
|
+
"usage": {
|
|
40
|
+
"import": "import { PasswordInput } from '@ncds/ui-admin';",
|
|
41
|
+
"react": {
|
|
42
|
+
"default": "<PasswordInput />"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "progress-bar",
|
|
3
|
+
"exportName": "ProgressBar",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": true,
|
|
6
|
+
"category": "feedback",
|
|
7
|
+
"description": "ProgressBar는 작업 진행률, 로딩 프로세스, 완료율 등을 시각적으로 표시하여 사용자에게 진행 중인 작업의 정도를 퍼센트(%)로 보여주는 컴포넌트입니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"ProgressBar",
|
|
10
|
+
"프로그레스바",
|
|
11
|
+
"진행률",
|
|
12
|
+
"진행바",
|
|
13
|
+
"로딩",
|
|
14
|
+
"완료율",
|
|
15
|
+
"퍼센트",
|
|
16
|
+
"segments",
|
|
17
|
+
"세그먼트",
|
|
18
|
+
"label",
|
|
19
|
+
"다중세그먼트",
|
|
20
|
+
"color",
|
|
21
|
+
"색상",
|
|
22
|
+
"NCDS"
|
|
23
|
+
],
|
|
24
|
+
"hasChildren": false,
|
|
25
|
+
"whenToUse": [
|
|
26
|
+
"진행 상태를 직관적인 막대 형태로 시각화",
|
|
27
|
+
"단일 값 표시뿐 아니라 다중 세그먼트를 통해 항목별 비율 분포도 표현"
|
|
28
|
+
],
|
|
29
|
+
"forbiddenRules": [
|
|
30
|
+
"0-100 범위 이탈 금지",
|
|
31
|
+
"불확정 진행률에 사용 금지(Spinner 사용)",
|
|
32
|
+
"white/black 세그먼트 색상 금지",
|
|
33
|
+
"세그먼트 최대 3개 제한",
|
|
34
|
+
"장식 용도 금지"
|
|
35
|
+
],
|
|
36
|
+
"seeAlso": [
|
|
37
|
+
"progress-circle",
|
|
38
|
+
"spinner"
|
|
39
|
+
],
|
|
40
|
+
"props": {
|
|
41
|
+
"label": {
|
|
42
|
+
"type": "enum",
|
|
43
|
+
"required": false,
|
|
44
|
+
"values": [
|
|
45
|
+
"bottom",
|
|
46
|
+
"bottom-float",
|
|
47
|
+
"right",
|
|
48
|
+
"top-float"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"segments": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"required": false,
|
|
54
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/progress-bar/types\").ProgressSegment[] | undefined"
|
|
55
|
+
},
|
|
56
|
+
"showZeroLabel": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"required": false,
|
|
59
|
+
"default": false
|
|
60
|
+
},
|
|
61
|
+
"value": {
|
|
62
|
+
"type": "number",
|
|
63
|
+
"required": false
|
|
64
|
+
},
|
|
65
|
+
"valueToPercent": {
|
|
66
|
+
"type": "boolean",
|
|
67
|
+
"required": false,
|
|
68
|
+
"default": true
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"html": {},
|
|
72
|
+
"bemClasses": [
|
|
73
|
+
"ncua-progress-bar",
|
|
74
|
+
"ncua-progress-bar-",
|
|
75
|
+
"ncua-progress-bar__bar",
|
|
76
|
+
"ncua-progress-bar__bar--segments",
|
|
77
|
+
"ncua-progress-bar__content",
|
|
78
|
+
"ncua-progress-bar__fill"
|
|
79
|
+
],
|
|
80
|
+
"usage": {
|
|
81
|
+
"import": "import { ProgressBar } from '@ncds/ui-admin';",
|
|
82
|
+
"react": {
|
|
83
|
+
"default": "<ProgressBar />",
|
|
84
|
+
"label:bottom": "<ProgressBar label=\"bottom\" />",
|
|
85
|
+
"label:bottom-float": "<ProgressBar label=\"bottom-float\" />",
|
|
86
|
+
"label:right": "<ProgressBar label=\"right\" />",
|
|
87
|
+
"label:top-float": "<ProgressBar label=\"top-float\" />"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "progress-circle",
|
|
3
|
+
"exportName": "ProgressCircle",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "feedback",
|
|
7
|
+
"description": "ProgressCircle은 작업 진행 상태를 원형의 수치(%)로 시각화하여 사용자에게 현재 진행 정도를 명확하게 전달하는 컴포넌트입니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"ProgressCircle",
|
|
10
|
+
"프로그레스써클",
|
|
11
|
+
"진행률",
|
|
12
|
+
"원형",
|
|
13
|
+
"로딩",
|
|
14
|
+
"퍼센트",
|
|
15
|
+
"circle",
|
|
16
|
+
"half-circle",
|
|
17
|
+
"overlay",
|
|
18
|
+
"취소",
|
|
19
|
+
"cancel",
|
|
20
|
+
"dim",
|
|
21
|
+
"NCDS"
|
|
22
|
+
],
|
|
23
|
+
"hasChildren": false,
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"시간 예측이 어려운 장시간 진행 작업의 진행률을 원형 그래프로 시각화",
|
|
26
|
+
"Overlay(Dim Layer)와 함께 사용되어 작업 중 사용자 인터랙션을 차단하고 이탈 불안감을 최소화"
|
|
27
|
+
],
|
|
28
|
+
"forbiddenRules": [
|
|
29
|
+
"% 없는 진행 Circle 금지",
|
|
30
|
+
"100% 초과 값 표시 금지",
|
|
31
|
+
"값 점프형 급격 변화 지양",
|
|
32
|
+
"완료 즉시 사라짐 금지(0.5~1초 유지)",
|
|
33
|
+
"불확정 진행률에 사용 금지(Spinner 사용)",
|
|
34
|
+
"단순 대기(3초 이내)에 사용 금지"
|
|
35
|
+
],
|
|
36
|
+
"seeAlso": [
|
|
37
|
+
"progress-bar",
|
|
38
|
+
"spinner"
|
|
39
|
+
],
|
|
40
|
+
"props": {
|
|
41
|
+
"label": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"required": false
|
|
44
|
+
},
|
|
45
|
+
"size": {
|
|
46
|
+
"type": "enum",
|
|
47
|
+
"required": true,
|
|
48
|
+
"values": [
|
|
49
|
+
"lg",
|
|
50
|
+
"md",
|
|
51
|
+
"sm",
|
|
52
|
+
"xs",
|
|
53
|
+
"xxs"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"theme": {
|
|
57
|
+
"type": "enum",
|
|
58
|
+
"required": false,
|
|
59
|
+
"values": [
|
|
60
|
+
"circle",
|
|
61
|
+
"half-circle"
|
|
62
|
+
],
|
|
63
|
+
"default": "circle"
|
|
64
|
+
},
|
|
65
|
+
"value": {
|
|
66
|
+
"type": "number",
|
|
67
|
+
"required": true
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"html": {},
|
|
71
|
+
"bemClasses": [
|
|
72
|
+
"ncua-progress-circle",
|
|
73
|
+
"ncua-progress-circle-",
|
|
74
|
+
"ncua-progress-circle__background",
|
|
75
|
+
"ncua-progress-circle__content",
|
|
76
|
+
"ncua-progress-circle__label",
|
|
77
|
+
"ncua-progress-circle__label-container",
|
|
78
|
+
"ncua-progress-circle__label-text",
|
|
79
|
+
"ncua-progress-circle__outside-label",
|
|
80
|
+
"ncua-progress-circle__progress",
|
|
81
|
+
"ncua-progress-circle__svg"
|
|
82
|
+
],
|
|
83
|
+
"usage": {
|
|
84
|
+
"import": "import { ProgressCircle } from '@ncds/ui-admin';",
|
|
85
|
+
"react": {
|
|
86
|
+
"default": "<ProgressCircle size=\"lg\" value={0} />",
|
|
87
|
+
"size:lg": "<ProgressCircle size=\"lg\" value={0} />",
|
|
88
|
+
"size:md": "<ProgressCircle size=\"md\" value={0} />",
|
|
89
|
+
"size:sm": "<ProgressCircle size=\"sm\" value={0} />",
|
|
90
|
+
"size:xs": "<ProgressCircle size=\"xs\" value={0} />",
|
|
91
|
+
"size:xxs": "<ProgressCircle size=\"xxs\" value={0} />",
|
|
92
|
+
"theme:circle": "<ProgressCircle theme=\"circle\" size=\"lg\" value={0} />",
|
|
93
|
+
"theme:half-circle": "<ProgressCircle theme=\"half-circle\" size=\"lg\" value={0} />"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
package/data/radio.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "radio",
|
|
3
|
+
"exportName": "Radio",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "Radio는 여러 옵션 중 하나만 선택할 수 있는 단일 선택(Single Selection) 컨트롤로, 텍스트 라벨과 보조 설명을 함께 제공할 수 있습니다.",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"라디오",
|
|
10
|
+
"Radio",
|
|
11
|
+
"RadioButton",
|
|
12
|
+
"단일선택",
|
|
13
|
+
"선택",
|
|
14
|
+
"checked",
|
|
15
|
+
"unchecked",
|
|
16
|
+
"supportText",
|
|
17
|
+
"라디오그룹",
|
|
18
|
+
"RadioGroup",
|
|
19
|
+
"NCDS"
|
|
20
|
+
],
|
|
21
|
+
"hasChildren": false,
|
|
22
|
+
"whenToUse": [
|
|
23
|
+
"Radio는 최소 2개 이상 그룹으로 사용하며, 단일 선택만 허용한다",
|
|
24
|
+
"복수 선택이 필요하면 Checkbox를, 옵션이 5개 이상이면 Select(Dropdown)를 사용한다"
|
|
25
|
+
],
|
|
26
|
+
"forbiddenRules": [
|
|
27
|
+
"Radio 단독 사용 금지",
|
|
28
|
+
"기본 선택 없이 사용 지양",
|
|
29
|
+
"텍스트 라벨 없이 사용 지양",
|
|
30
|
+
"Checkbox와 혼동 금지",
|
|
31
|
+
"선택 해제 동작 구현 금지"
|
|
32
|
+
],
|
|
33
|
+
"seeAlso": [
|
|
34
|
+
"checkbox",
|
|
35
|
+
"toggle",
|
|
36
|
+
"select",
|
|
37
|
+
"label"
|
|
38
|
+
],
|
|
39
|
+
"htmlElement": "input",
|
|
40
|
+
"props": {
|
|
41
|
+
"destructive": {
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"required": false,
|
|
44
|
+
"default": false
|
|
45
|
+
},
|
|
46
|
+
"onChange": {
|
|
47
|
+
"type": "function",
|
|
48
|
+
"required": false
|
|
49
|
+
},
|
|
50
|
+
"size": {
|
|
51
|
+
"type": "enum",
|
|
52
|
+
"required": false,
|
|
53
|
+
"values": [
|
|
54
|
+
"sm",
|
|
55
|
+
"xs"
|
|
56
|
+
],
|
|
57
|
+
"default": "xs"
|
|
58
|
+
},
|
|
59
|
+
"supportText": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"required": false
|
|
62
|
+
},
|
|
63
|
+
"text": {
|
|
64
|
+
"type": "ReactNode",
|
|
65
|
+
"required": false
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"html": {},
|
|
69
|
+
"bemClasses": [
|
|
70
|
+
"ncua-radio-field",
|
|
71
|
+
"ncua-radio-field--sm",
|
|
72
|
+
"ncua-radio-field--xs",
|
|
73
|
+
"ncua-radio-field__input",
|
|
74
|
+
"ncua-radio-field__support-text",
|
|
75
|
+
"ncua-radio-field__text",
|
|
76
|
+
"ncua-radio-input"
|
|
77
|
+
],
|
|
78
|
+
"usage": {
|
|
79
|
+
"import": "import { Radio } from '@ncds/ui-admin';",
|
|
80
|
+
"react": {
|
|
81
|
+
"default": "<Radio />",
|
|
82
|
+
"size:sm": "<Radio size=\"sm\" />",
|
|
83
|
+
"size:xs": "<Radio size=\"xs\" />"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "range-date-picker-with-buttons",
|
|
3
|
+
"exportName": "RangeDatePickerWithButtons",
|
|
4
|
+
"importPath": "@ncds/ui-admin",
|
|
5
|
+
"jsRequired": false,
|
|
6
|
+
"category": "input",
|
|
7
|
+
"description": "기간 옵션 버튼이 내장된 RangeDatePicker 확장 컴포넌트로 빠른 기간 설정을 지원합니다",
|
|
8
|
+
"aliases": [
|
|
9
|
+
"기간 선택 버튼",
|
|
10
|
+
"빠른 기간",
|
|
11
|
+
"date range buttons",
|
|
12
|
+
"오늘",
|
|
13
|
+
"1주",
|
|
14
|
+
"1개월",
|
|
15
|
+
"RangeDatePickerWithButtons"
|
|
16
|
+
],
|
|
17
|
+
"hasChildren": false,
|
|
18
|
+
"whenToUse": [
|
|
19
|
+
"시작일·종료일 동일 Format·동일 Size를 유지하며 기간 옵션 ButtonGroup으로 빠른 기간 설정이 필요한 경우",
|
|
20
|
+
"overlap/period 유효성 검증으로 잘못된 입력을 방지해야 하는 경우"
|
|
21
|
+
],
|
|
22
|
+
"forbiddenRules": [
|
|
23
|
+
"시작일과 종료일의 Format 불일치 금지",
|
|
24
|
+
"기간 옵션 ButtonGroup 3개 이하 또는 8개 이상 구성 금지",
|
|
25
|
+
"시작일·종료일 DatePicker 사이즈 불일치 금지",
|
|
26
|
+
"종료일에 isEndDate 수동 false 설정 금지",
|
|
27
|
+
"조회 화면에서 Disabled Field 사용 금지",
|
|
28
|
+
"텍스트 입력 불가 UX 금지",
|
|
29
|
+
"ButtonGroup 없이 RangeDatePicker 단독 사용 시 기간 프리셋 누락 금지",
|
|
30
|
+
"구분자 ~ 외 다른 기호 사용 금지"
|
|
31
|
+
],
|
|
32
|
+
"seeAlso": [
|
|
33
|
+
"range-date-picker",
|
|
34
|
+
"date-picker"
|
|
35
|
+
],
|
|
36
|
+
"props": {
|
|
37
|
+
"currentButtonId": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"required": true,
|
|
40
|
+
"rawType": "keyof T & string"
|
|
41
|
+
},
|
|
42
|
+
"endDateOptions": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"required": true,
|
|
45
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/date-picker/DatePicker\").DatePickerProps"
|
|
46
|
+
},
|
|
47
|
+
"onDateValidation": {
|
|
48
|
+
"type": "function",
|
|
49
|
+
"required": false
|
|
50
|
+
},
|
|
51
|
+
"periodItems": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"required": false,
|
|
54
|
+
"rawType": "T | undefined"
|
|
55
|
+
},
|
|
56
|
+
"periodKeys": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": true,
|
|
59
|
+
"rawType": "(keyof T & string)[]"
|
|
60
|
+
},
|
|
61
|
+
"setCurrentButtonId": {
|
|
62
|
+
"type": "function",
|
|
63
|
+
"required": true
|
|
64
|
+
},
|
|
65
|
+
"size": {
|
|
66
|
+
"type": "enum",
|
|
67
|
+
"required": false,
|
|
68
|
+
"values": [
|
|
69
|
+
"sm",
|
|
70
|
+
"xs"
|
|
71
|
+
],
|
|
72
|
+
"default": "xs"
|
|
73
|
+
},
|
|
74
|
+
"startDateOptions": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"required": true,
|
|
77
|
+
"rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/date-picker/DatePicker\").DatePickerProps"
|
|
78
|
+
},
|
|
79
|
+
"useYesterdayAsEndDate": {
|
|
80
|
+
"type": "boolean",
|
|
81
|
+
"required": false,
|
|
82
|
+
"default": false
|
|
83
|
+
},
|
|
84
|
+
"validationOption": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"required": false
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"html": {},
|
|
90
|
+
"bemClasses": [
|
|
91
|
+
"ncua-range-date-picker-with-buttons"
|
|
92
|
+
],
|
|
93
|
+
"usage": {
|
|
94
|
+
"import": "import { RangeDatePickerWithButtons } from '@ncds/ui-admin';",
|
|
95
|
+
"react": {
|
|
96
|
+
"default": "<RangeDatePickerWithButtons currentButtonId=\"\" endDateOptions=\"\" periodKeys=\"\" setCurrentButtonId=\"\" startDateOptions=\"\" />",
|
|
97
|
+
"size:sm": "<RangeDatePickerWithButtons size=\"sm\" currentButtonId=\"\" endDateOptions=\"\" periodKeys=\"\" setCurrentButtonId=\"\" startDateOptions=\"\" />",
|
|
98
|
+
"size:xs": "<RangeDatePickerWithButtons size=\"xs\" currentButtonId=\"\" endDateOptions=\"\" periodKeys=\"\" setCurrentButtonId=\"\" startDateOptions=\"\" />"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|