@ncds/ui-admin-mcp 1.0.0-alpha.17 → 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 (52) hide show
  1. package/bin/components.bundle.js +8 -8
  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/data/badge-group.json +3 -3
  28. package/data/badge.json +2 -2
  29. package/data/bread-crumb.json +1 -1
  30. package/data/button.json +2 -2
  31. package/data/combo-box.json +3 -3
  32. package/data/data-grid.json +9 -0
  33. package/data/date-picker.json +1 -1
  34. package/data/dropdown.json +9 -4
  35. package/data/empty-state.json +3 -3
  36. package/data/horizontal-tab.json +4 -4
  37. package/data/modal.json +1 -1
  38. package/data/notification.json +23 -19
  39. package/data/page-title.json +1 -1
  40. package/data/progress-bar.json +1 -1
  41. package/data/range-date-picker-with-buttons.json +4 -4
  42. package/data/range-date-picker.json +4 -4
  43. package/data/select-box.json +8 -3
  44. package/data/select.json +2 -2
  45. package/data/step-guide.json +130 -0
  46. package/data/table.json +24 -0
  47. package/data/tag.json +1 -1
  48. package/data/vertical-tab.json +4 -4
  49. package/package.json +12 -9
  50. package/bin/overrides/composition.json +0 -1302
  51. package/bin/tools/listSidecarOverrides.d.ts +0 -54
  52. package/bin/tools/listSidecarOverrides.js +0 -96
@@ -3,12 +3,11 @@
3
3
  *
4
4
  * 토큰 검증은 tokenValidator.ts에 분리.
5
5
  */
6
- import { parse } from 'node-html-parser';
7
- import type { ComponentData, ComplianceRulesData, ComplianceError, ComplianceSummary } from '../types.js';
6
+ import type { parse } from 'node-html-parser';
7
+ import type { ComplianceError, ComplianceRulesData, ComplianceSummary, ComponentData } from '../types.js';
8
8
  import type { ValidationError } from './bemValidator.js';
9
- export { detectTokenIssues } from './tokenValidator.js';
10
9
  /** NCUA 컴포넌트 누락 감지 — 태그 인덱스로 O(n) 매칭 */
11
- export declare const detectNcuaOmission: (params: {
10
+ declare const detectNcuaOmission: (params: {
12
11
  root: ReturnType<typeof parse>;
13
12
  complianceRules: ComplianceRulesData;
14
13
  componentMap: Map<string, ComponentData>;
@@ -20,7 +19,7 @@ export declare const detectNcuaOmission: (params: {
20
19
  };
21
20
  };
22
21
  /** NCUA 컴포넌트 내부 커스텀 스타일 감지 */
23
- export declare const detectCustomNotSeparated: (params: {
22
+ declare const detectCustomNotSeparated: (params: {
24
23
  root: ReturnType<typeof parse>;
25
24
  rootClassMap: Map<string, string>;
26
25
  warnings: ValidationError[];
@@ -32,7 +31,7 @@ export declare const detectCustomNotSeparated: (params: {
32
31
  };
33
32
  };
34
33
  /** 준수도 점수 + 요약 빌드 */
35
- export declare const buildComplianceSummary: (params: {
34
+ declare const buildComplianceSummary: (params: {
36
35
  ncuaErrors: ComplianceError[];
37
36
  tokenErrors: ComplianceError[];
38
37
  customErrors: ComplianceError[];
@@ -50,3 +49,5 @@ export declare const buildComplianceSummary: (params: {
50
49
  violated: number;
51
50
  };
52
51
  }) => ComplianceSummary;
52
+ export { buildComplianceSummary, detectCustomNotSeparated, detectNcuaOmission };
53
+ export { detectTokenIssues } from './tokenValidator.js';
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildComplianceSummary = exports.detectCustomNotSeparated = exports.detectNcuaOmission = exports.detectTokenIssues = void 0;
3
+ exports.detectTokenIssues = exports.detectNcuaOmission = exports.detectCustomNotSeparated = exports.buildComplianceSummary = void 0;
4
4
  const bemValidator_js_1 = require("./bemValidator.js");
5
- var tokenValidator_js_1 = require("./tokenValidator.js");
6
- Object.defineProperty(exports, "detectTokenIssues", { enumerable: true, get: function () { return tokenValidator_js_1.detectTokenIssues; } });
7
5
  // ── 상수 ─────────────────────────────────────────────────────────────────
8
6
  const MAX_COMPLIANCE_ERRORS = 10;
9
7
  const NCUA_NOT_USED_MEDIUM_WEIGHT = 0.5;
@@ -188,8 +186,10 @@ const buildComplianceSummary = (params) => {
188
186
  ncuaNotUsedCount +
189
187
  (tokenUsage.correct + tokenUsage.missing + tokenUsage.invalid) +
190
188
  (customSeparation.clean + customSeparation.violated);
189
+ // biome-ignore lint/style/noMagicNumbers: 점수 0~1 boundary (clamp)
191
190
  const score = totalCheckpoints === 0 ? 1.0 : Math.max(0, Math.min(1, 1 - weightedViolations / totalCheckpoints));
192
191
  return {
192
+ // biome-ignore lint/style/noMagicNumbers: 2자리 소수점 반올림 (×100/100)
193
193
  score: Math.round(score * 100) / 100,
194
194
  errors: allErrors.slice(0, MAX_COMPLIANCE_ERRORS),
195
195
  ncuaUsage,
@@ -199,3 +199,5 @@ const buildComplianceSummary = (params) => {
199
199
  };
200
200
  };
201
201
  exports.buildComplianceSummary = buildComplianceSummary;
202
+ var tokenValidator_js_1 = require("./tokenValidator.js");
203
+ Object.defineProperty(exports, "detectTokenIssues", { enumerable: true, get: function () { return tokenValidator_js_1.detectTokenIssues; } });
@@ -1,34 +1,36 @@
1
- import type { ComponentData, IconData, TokenData, ComplianceRulesData, JsApiInfo } from '../types.js';
2
- export declare const DEFAULT_DATA_DIR: string;
3
- export interface CdnMeta {
1
+ import type { ComplianceRulesData, ComponentData, IconData, JsApiInfo, TokenData } from '../types.js';
2
+ declare const DEFAULT_DATA_DIR: string;
3
+ interface CdnMeta {
4
4
  version: string;
5
5
  css: string;
6
6
  js: string;
7
7
  }
8
- export interface IconMeta {
8
+ interface IconMeta {
9
9
  packageName: string;
10
10
  version: string;
11
11
  }
12
12
  /** data/ 디렉토리의 JSON 파일을 읽어 componentMap으로 반환 */
13
- export declare const loadComponentsFromDir: (dataDir: string) => Map<string, ComponentData>;
13
+ declare const loadComponentsFromDir: (dataDir: string) => Map<string, ComponentData>;
14
14
  /** data/_icons.json을 읽어 IconData로 반환 (파일 없으면 빈 데이터) */
15
- export declare const loadIconData: (dataDir: string) => IconData;
15
+ declare const loadIconData: (dataDir: string) => IconData;
16
16
  /** _meta.json 파싱 결과 */
17
- export interface MetaData {
17
+ interface MetaData {
18
18
  cdn: CdnMeta | null;
19
19
  icon: IconMeta | null;
20
20
  }
21
21
  /** data/_meta.json에서 CDN + icon 메타를 1회 읽기로 로드 */
22
- export declare const loadMeta: (dataDir: string) => MetaData;
22
+ declare const loadMeta: (dataDir: string) => MetaData;
23
23
  /** data/_tokens.json을 읽어 TokenData로 반환 (파일 없으면 빈 데이터) */
24
- export declare const loadTokenData: (dataDir: string) => TokenData;
24
+ declare const loadTokenData: (dataDir: string) => TokenData;
25
25
  /** definitions/compliance-rules.json을 로드하여 ComplianceRulesData로 반환 (파일 없으면 null) */
26
- export declare const loadComplianceRules: (definitionsDir: string) => ComplianceRulesData | null;
26
+ declare const loadComplianceRules: (definitionsDir: string) => ComplianceRulesData | null;
27
27
  /** definitions/instructions.md를 로드하여 문자열 반환 */
28
- export declare const loadInstructions: (definitionsDir: string) => string;
28
+ declare const loadInstructions: (definitionsDir: string) => string;
29
29
  /** definitions/js-api.json을 로드하여 exportName→JsApiInfo Map 반환 */
30
- export declare const loadJsApi: (definitionsDir: string) => Map<string, JsApiInfo>;
30
+ declare const loadJsApi: (definitionsDir: string) => Map<string, JsApiInfo>;
31
31
  /** componentMap에서 이름으로 단일 컴포넌트 조회 */
32
- export declare const getComponent: (map: Map<string, ComponentData>, name: string) => ComponentData | undefined;
32
+ declare const getComponent: (map: Map<string, ComponentData>, name: string) => ComponentData | undefined;
33
33
  /** componentMap의 모든 컴포넌트를 배열로 반환 */
34
- export declare const getAllComponents: (map: Map<string, ComponentData>) => ComponentData[];
34
+ declare const getAllComponents: (map: Map<string, ComponentData>) => ComponentData[];
35
+ export { DEFAULT_DATA_DIR, getAllComponents, getComponent, loadComplianceRules, loadComponentsFromDir, loadIconData, loadInstructions, loadJsApi, loadMeta, loadTokenData, };
36
+ export type { CdnMeta, IconMeta, MetaData };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getAllComponents = exports.getComponent = exports.loadJsApi = exports.loadInstructions = exports.loadComplianceRules = exports.loadTokenData = exports.loadMeta = exports.loadIconData = exports.loadComponentsFromDir = exports.DEFAULT_DATA_DIR = void 0;
6
+ exports.loadTokenData = exports.loadMeta = exports.loadJsApi = exports.loadInstructions = exports.loadIconData = exports.loadComponentsFromDir = exports.loadComplianceRules = exports.getComponent = exports.getAllComponents = exports.DEFAULT_DATA_DIR = void 0;
7
7
  /**
8
8
  * dataLoader — mcp/data/*.json + definitions/ 파일을 읽어 반환
9
9
  *
@@ -17,7 +17,8 @@ const fs_1 = __importDefault(require("fs"));
17
17
  const path_1 = __importDefault(require("path"));
18
18
  const logger_js_1 = require("./logger.js");
19
19
  const response_js_1 = require("./response.js");
20
- exports.DEFAULT_DATA_DIR = path_1.default.resolve(__dirname, '../../data');
20
+ const DEFAULT_DATA_DIR = path_1.default.resolve(__dirname, '../../data');
21
+ exports.DEFAULT_DATA_DIR = DEFAULT_DATA_DIR;
21
22
  // ── 검증 헬퍼 (§ 3.8 복잡한 조건을 의도가 드러나는 이름으로 분리) ──────────
22
23
  /** JSON.parse 결과가 name: string 필드를 가진 컴포넌트 객체인지 검증 */
23
24
  const isValidComponentJson = (data) => !!data && typeof data === 'object' && 'name' in data && typeof data.name === 'string';
@@ -63,6 +63,7 @@ exports.similarity = similarity;
63
63
  *
64
64
  * @returns null이면 매칭 실패, FuzzyResult면 매칭 성공
65
65
  */
66
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: 정확/포함/퍼지 단계별 매칭 분기 — 알고리즘 본질, 별 리팩토링 거리
66
67
  const fuzzyMatch = (query, target) => {
67
68
  const q = normalize(query);
68
69
  const t = normalize(target);
@@ -27,7 +27,7 @@ const componentNotFoundResponse = (name) => (0, exports.errorResponse)('COMPONEN
27
27
  exports.componentNotFoundResponse = componentNotFoundResponse;
28
28
  /** ping 미호출 시 응답에 핵심 rules를 주입하는 래퍼 */
29
29
  const appendPingReminder = (response, reminder) => {
30
- const text = response.content[0].text + '\n\n' + reminder;
30
+ const text = `${response.content[0].text}\n\n${reminder}`;
31
31
  return { ...response, content: [{ type: 'text', text }] };
32
32
  };
33
33
  exports.appendPingReminder = appendPingReminder;
@@ -6,11 +6,11 @@
6
6
  import type { parse } from 'node-html-parser';
7
7
  import type { ComplianceError, TokenData } from '../types.js';
8
8
  /** hex 값(lowercase) → 토큰 CSS 변수명 배열 역방향 매핑 빌드 — server.ts에서 1회 호출 */
9
- export declare const buildTokenValueMap: (tokenData: TokenData) => Map<string, string[]>;
9
+ declare const buildTokenValueMap: (tokenData: TokenData) => Map<string, string[]>;
10
10
  /** inline style + <style> 블록의 CSS 텍스트를 하나로 합침 */
11
- export declare const extractAllCss: (root: ReturnType<typeof parse>) => string;
11
+ declare const extractAllCss: (root: ReturnType<typeof parse>) => string;
12
12
  /** 토큰 미사용 + 무효 토큰 감지 */
13
- export declare const detectTokenIssues: (params: {
13
+ declare const detectTokenIssues: (params: {
14
14
  root: ReturnType<typeof parse>;
15
15
  tokenData: TokenData;
16
16
  tokenValueMap: Map<string, string[]>;
@@ -22,3 +22,4 @@ export declare const detectTokenIssues: (params: {
22
22
  invalid: number;
23
23
  };
24
24
  };
25
+ export { buildTokenValueMap, detectTokenIssues, extractAllCss };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.detectTokenIssues = exports.extractAllCss = exports.buildTokenValueMap = void 0;
3
+ exports.extractAllCss = exports.detectTokenIssues = exports.buildTokenValueMap = void 0;
4
4
  // ── server.ts 사전 계산용 ───────────────────────────────────────────────
5
5
  /** hex 값(lowercase) → 토큰 CSS 변수명 배열 역방향 매핑 빌드 — server.ts에서 1회 호출 */
6
6
  const buildTokenValueMap = (tokenData) => {
@@ -25,14 +25,18 @@ const HEX_PATTERN_SOURCE = /#([0-9a-fA-F]{3,8})\b/g.source;
25
25
  const RGB_PATTERN_SOURCE = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/g.source;
26
26
  const VAR_PATTERN_SOURCE = /var\(\s*(--[a-zA-Z0-9-]+)(?:\s*,\s*[^)]+)?\s*\)/g.source;
27
27
  // ── 순수 헬퍼 ────────────────────────────────────────────────────────────
28
+ const HEX_RADIX = 16;
29
+ const HEX_BYTE_LENGTH = 2;
30
+ const HEX_SHORT_LENGTH = 3;
31
+ const HEX_FULL_LENGTH = 6;
28
32
  /** rgb(r,g,b) → #rrggbb hex 변환 */
29
- const rgbToHex = (r, g, b) => `#${[r, g, b].map((v) => v.toString(16).padStart(2, '0')).join('')}`;
33
+ const rgbToHex = (r, g, b) => `#${[r, g, b].map((v) => v.toString(HEX_RADIX).padStart(HEX_BYTE_LENGTH, '0')).join('')}`;
30
34
  /** 3자리 hex를 6자리로 정규화 */
31
35
  const normalizeHex = (hex) => {
32
36
  const h = hex.toLowerCase().replace('#', '');
33
- if (h.length === 3)
37
+ if (h.length === HEX_SHORT_LENGTH)
34
38
  return `#${h[0]}${h[0]}${h[1]}${h[1]}${h[2]}${h[2]}`;
35
- return `#${h.slice(0, 6)}`;
39
+ return `#${h.slice(0, HEX_FULL_LENGTH)}`;
36
40
  };
37
41
  /** var()의 prefix가 토큰 시스템에 속하는지 확인 */
38
42
  const hasKnownTokenPrefix = (varName, prefixSet) => {
@@ -83,16 +87,15 @@ exports.extractAllCss = extractAllCss;
83
87
  /** CSS 텍스트에서 하드코딩된 색상값(hex/rgb)을 추출 */
84
88
  const collectHardcodedColors = (css) => {
85
89
  const colors = [];
86
- let match;
87
90
  const hexPattern = new RegExp(HEX_PATTERN_SOURCE, 'g');
88
- while ((match = hexPattern.exec(css)) !== null) {
91
+ for (const match of css.matchAll(hexPattern)) {
89
92
  colors.push({ raw: match[0], normalized: normalizeHex(match[0]) });
90
93
  }
91
94
  const rgbPattern = new RegExp(RGB_PATTERN_SOURCE, 'g');
92
- while ((match = rgbPattern.exec(css)) !== null) {
95
+ for (const match of css.matchAll(rgbPattern)) {
93
96
  colors.push({
94
97
  raw: match[0],
95
- normalized: rgbToHex(parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10)),
98
+ normalized: rgbToHex(Number.parseInt(match[1], 10), Number.parseInt(match[2], 10), Number.parseInt(match[3], 10)),
96
99
  });
97
100
  }
98
101
  return colors;
@@ -126,9 +129,8 @@ const collectInvalidTokenErrors = (css, tokenNameSet, tokenPrefixSet) => {
126
129
  const errors = [];
127
130
  let correct = 0;
128
131
  let invalid = 0;
129
- let varMatch;
130
132
  const varPattern = new RegExp(VAR_PATTERN_SOURCE, 'g');
131
- while ((varMatch = varPattern.exec(css)) !== null) {
133
+ for (const varMatch of css.matchAll(varPattern)) {
132
134
  const varName = varMatch[1];
133
135
  if (!hasKnownTokenPrefix(varName, tokenPrefixSet))
134
136
  continue;
@@ -151,7 +153,7 @@ const collectInvalidTokenErrors = (css, tokenNameSet, tokenPrefixSet) => {
151
153
  /** 토큰 미사용 + 무효 토큰 감지 */
152
154
  const detectTokenIssues = (params) => {
153
155
  const { root, tokenData, tokenValueMap } = params;
154
- const allCss = (0, exports.extractAllCss)(root);
156
+ const allCss = extractAllCss(root);
155
157
  const notUsed = collectTokenNotUsedErrors(allCss, tokenValueMap);
156
158
  const invalidResult = collectInvalidTokenErrors(allCss, buildTokenNameSet(tokenData), buildTokenPrefixSet(tokenData));
157
159
  return {
@@ -59,7 +59,7 @@
59
59
  "groupIcon": {
60
60
  "type": "object",
61
61
  "required": false,
62
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
62
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
63
63
  "properties": {
64
64
  "type": {
65
65
  "type": "string",
@@ -134,7 +134,7 @@
134
134
  "leadingIcon": {
135
135
  "type": "object",
136
136
  "required": false,
137
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
137
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
138
138
  "properties": {
139
139
  "type": {
140
140
  "type": "string",
@@ -211,7 +211,7 @@
211
211
  "trailingIcon": {
212
212
  "type": "object",
213
213
  "required": false,
214
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
214
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
215
215
  "properties": {
216
216
  "type": {
217
217
  "type": "string",
package/data/badge.json CHANGED
@@ -81,7 +81,7 @@
81
81
  "leadingIcon": {
82
82
  "type": "object",
83
83
  "required": false,
84
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
84
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
85
85
  "properties": {
86
86
  "type": {
87
87
  "type": "string",
@@ -154,7 +154,7 @@
154
154
  "trailingIcon": {
155
155
  "type": "object",
156
156
  "required": false,
157
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
157
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
158
158
  "properties": {
159
159
  "type": {
160
160
  "type": "string",
@@ -57,7 +57,7 @@
57
57
  "items": {
58
58
  "type": "object",
59
59
  "required": true,
60
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/navigation/bread-crumb/BreadCrumb\").BreadcrumbItemProps[]",
60
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/navigation/bread-crumb/BreadCrumb\").BreadcrumbItemProps[]",
61
61
  "properties": {
62
62
  "href": {
63
63
  "type": "string",
package/data/button.json CHANGED
@@ -77,7 +77,7 @@
77
77
  "leadingIcon": {
78
78
  "type": "object",
79
79
  "required": false,
80
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
80
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
81
81
  "properties": {
82
82
  "type": {
83
83
  "type": "string",
@@ -158,7 +158,7 @@
158
158
  "trailingIcon": {
159
159
  "type": "object",
160
160
  "required": false,
161
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
161
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
162
162
  "properties": {
163
163
  "type": {
164
164
  "type": "string",
@@ -91,7 +91,7 @@
91
91
  "optionItems": {
92
92
  "type": "object",
93
93
  "required": false,
94
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
94
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionType[] | undefined",
95
95
  "properties": {
96
96
  "id": {
97
97
  "type": "string",
@@ -118,7 +118,7 @@
118
118
  "register": {
119
119
  "type": "object",
120
120
  "required": false,
121
- "rawType": "import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/react-hook-form@7.72.0_react@18.2.0/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
121
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/react-hook-form@7.72.0_react@18.2.0/node_modules/react-hook-form/dist/types/form\").UseFormRegisterReturn | undefined"
122
122
  },
123
123
  "required": {
124
124
  "type": "boolean",
@@ -147,7 +147,7 @@
147
147
  "value": {
148
148
  "type": "object",
149
149
  "required": false,
150
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionValue | undefined"
150
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/dropdown/option\").OptionValue | undefined"
151
151
  }
152
152
  },
153
153
  "html": {},
@@ -167,6 +167,10 @@
167
167
  "type": "boolean",
168
168
  "required": false
169
169
  },
170
+ "horizontalScroll": {
171
+ "type": "boolean",
172
+ "required": false
173
+ },
170
174
  "hoverable": {
171
175
  "type": "boolean",
172
176
  "required": false
@@ -176,6 +180,11 @@
176
180
  "required": false,
177
181
  "rawType": "string | number | undefined"
178
182
  },
183
+ "minWidth": {
184
+ "type": "string",
185
+ "required": false,
186
+ "rawType": "string | number | undefined"
187
+ },
179
188
  "selectable": {
180
189
  "type": "boolean",
181
190
  "required": false
@@ -62,7 +62,7 @@
62
62
  "datePickerOptions": {
63
63
  "type": "object",
64
64
  "required": false,
65
- "rawType": "Partial<import(\"/Users/nhn/Project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
65
+ "rawType": "Partial<import(\"/Users/nhncommerce/Desktop/project/ncds/node_modules/.pnpm/flatpickr@4.6.13/node_modules/flatpickr/dist/types/options\").BaseOptions> | undefined"
66
66
  },
67
67
  "destructive": {
68
68
  "type": "string",
@@ -115,12 +115,12 @@
115
115
  "groups": {
116
116
  "type": "object",
117
117
  "required": true,
118
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownGroup[]",
118
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownGroup[]",
119
119
  "properties": {
120
120
  "items": {
121
121
  "type": "object",
122
122
  "required": true,
123
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownItemType[]",
123
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownItemType[]",
124
124
  "properties": {
125
125
  "id": {
126
126
  "type": "string",
@@ -178,7 +178,7 @@
178
178
  "header": {
179
179
  "type": "object",
180
180
  "required": false,
181
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownHeaderType | undefined",
181
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").DropdownHeaderType | undefined",
182
182
  "properties": {
183
183
  "type": {
184
184
  "type": "string",
@@ -206,7 +206,7 @@
206
206
  "trigger": {
207
207
  "type": "object",
208
208
  "required": true,
209
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").AvatarTrigger | import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").ButtonTrigger | import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").IconTrigger | import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").CustomTrigger",
209
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").AvatarTrigger | import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").ButtonTrigger | import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").IconTrigger | import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/dropdown/Dropdown\").CustomTrigger",
210
210
  "properties": {
211
211
  "type": {
212
212
  "type": "string",
@@ -232,6 +232,10 @@
232
232
  }
233
233
  }
234
234
  },
235
+ "usePortal": {
236
+ "type": "boolean",
237
+ "required": false
238
+ },
235
239
  "variant": {
236
240
  "type": "enum",
237
241
  "required": false,
@@ -266,6 +270,7 @@
266
270
  "ncua-dropdown__item-text-group",
267
271
  "ncua-dropdown__item-visibility",
268
272
  "ncua-dropdown__menu",
273
+ "ncua-dropdown__menu--portal",
269
274
  "ncua-dropdown__menu-items",
270
275
  "ncua-dropdown__trigger",
271
276
  "ncua-dropdown__trigger ncua-dropdown__trigger--avatar",
@@ -37,7 +37,7 @@
37
37
  "buttons": {
38
38
  "type": "object",
39
39
  "required": false,
40
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/feedback-and-status/empty-state/EmptyState\").ButtonOptions | import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/feedback-and-status/empty-state/EmptyState\").ButtonOptions[] | undefined",
40
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/feedback-and-status/empty-state/EmptyState\").ButtonOptions | import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/feedback-and-status/empty-state/EmptyState\").ButtonOptions[] | undefined",
41
41
  "properties": {
42
42
  "label": {
43
43
  "type": "string",
@@ -79,7 +79,7 @@
79
79
  "leadingIcon": {
80
80
  "type": "object",
81
81
  "required": false,
82
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
82
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
83
83
  "properties": {
84
84
  "type": {
85
85
  "type": "string",
@@ -142,7 +142,7 @@
142
142
  "trailingIcon": {
143
143
  "type": "object",
144
144
  "required": false,
145
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
145
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
146
146
  "properties": {
147
147
  "type": {
148
148
  "type": "string",
@@ -60,7 +60,7 @@
60
60
  "menus": {
61
61
  "type": "object",
62
62
  "required": false,
63
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/tab/TabButton\").TabButtonProps[] | undefined",
63
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/tab/TabButton\").TabButtonProps[] | undefined",
64
64
  "properties": {
65
65
  "id": {
66
66
  "type": "string",
@@ -97,7 +97,7 @@
97
97
  "badgeInfo": {
98
98
  "type": "object",
99
99
  "required": false,
100
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/feedback-and-status/badge/Badge\").BadgeProps | undefined",
100
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/feedback-and-status/badge/Badge\").BadgeProps | undefined",
101
101
  "properties": {
102
102
  "label": {
103
103
  "type": "string",
@@ -131,7 +131,7 @@
131
131
  "leadingIcon": {
132
132
  "type": "object",
133
133
  "required": false,
134
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
134
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
135
135
  "properties": {
136
136
  "type": {
137
137
  "type": "string",
@@ -194,7 +194,7 @@
194
194
  "trailingIcon": {
195
195
  "type": "object",
196
196
  "required": false,
197
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
197
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
198
198
  "properties": {
199
199
  "type": {
200
200
  "type": "string",
package/data/modal.json CHANGED
@@ -211,7 +211,7 @@
211
211
  "featuredIcon": {
212
212
  "type": "object",
213
213
  "required": false,
214
- "rawType": "{ icon: import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/types/side-slot\").SlotIconComponent; color: import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/image-and-icons/featured-icon/FeaturedIcon\").FeaturedIconColor; theme: import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/image-and-icons/featured-icon/FeaturedIcon\").FeaturedIconTheme; } | undefined",
214
+ "rawType": "{ icon: import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/types/side-slot\").SlotIconComponent; color: import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/image-and-icons/featured-icon/FeaturedIcon\").FeaturedIconColor; theme: import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/image-and-icons/featured-icon/FeaturedIcon\").FeaturedIconTheme; } | undefined",
215
215
  "properties": {
216
216
  "icon": {
217
217
  "type": "function",
@@ -45,7 +45,7 @@
45
45
  "actions": {
46
46
  "type": "object",
47
47
  "required": false,
48
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/overlays/notification/Notification\").NotificationAction[] | undefined",
48
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/overlays/notification/Notification\").NotificationAction[] | undefined",
49
49
  "properties": {
50
50
  "label": {
51
51
  "type": "string",
@@ -105,12 +105,13 @@
105
105
  },
106
106
  "title": {
107
107
  "type": "ReactNode",
108
- "required": true
108
+ "required": false
109
109
  },
110
110
  "type": {
111
111
  "type": "enum",
112
112
  "required": false,
113
113
  "values": [
114
+ "callout",
114
115
  "floating",
115
116
  "full-width",
116
117
  "message"
@@ -120,15 +121,17 @@
120
121
  },
121
122
  "html": {},
122
123
  "bemClasses": [
124
+ "ncua-callout-notification",
125
+ "ncua-callout-notification--callout",
126
+ "ncua-callout-notification--error",
127
+ "ncua-callout-notification--floating",
128
+ "ncua-callout-notification--full-width",
129
+ "ncua-callout-notification--info",
130
+ "ncua-callout-notification--message",
131
+ "ncua-callout-notification--neutral",
132
+ "ncua-callout-notification--success",
133
+ "ncua-callout-notification--warning",
123
134
  "ncua-floating-notification",
124
- "ncua-floating-notification--error",
125
- "ncua-floating-notification--floating",
126
- "ncua-floating-notification--full-width",
127
- "ncua-floating-notification--info",
128
- "ncua-floating-notification--message",
129
- "ncua-floating-notification--neutral",
130
- "ncua-floating-notification--success",
131
- "ncua-floating-notification--warning",
132
135
  "ncua-floating-notification__actions",
133
136
  "ncua-floating-notification__close-button",
134
137
  "ncua-floating-notification__container",
@@ -169,15 +172,16 @@
169
172
  "usage": {
170
173
  "import": "import { Notification } from '@ncds/ui-admin';",
171
174
  "react": {
172
- "default": "<Notification title=\"예시\" />",
173
- "color:error": "<Notification color=\"error\" title=\"예시\" />",
174
- "color:info": "<Notification color=\"info\" title=\"예시\" />",
175
- "color:neutral": "<Notification color=\"neutral\" title=\"예시\" />",
176
- "color:success": "<Notification color=\"success\" title=\"예시\" />",
177
- "color:warning": "<Notification color=\"warning\" title=\"예시\" />",
178
- "type:floating": "<Notification type=\"floating\" title=\"예시\" />",
179
- "type:full-width": "<Notification type=\"full-width\" title=\"예시\" />",
180
- "type:message": "<Notification type=\"message\" title=\"예시\" />"
175
+ "default": "<Notification />",
176
+ "color:error": "<Notification color=\"error\" />",
177
+ "color:info": "<Notification color=\"info\" />",
178
+ "color:neutral": "<Notification color=\"neutral\" />",
179
+ "color:success": "<Notification color=\"success\" />",
180
+ "color:warning": "<Notification color=\"warning\" />",
181
+ "type:callout": "<Notification type=\"callout\" />",
182
+ "type:floating": "<Notification type=\"floating\" />",
183
+ "type:full-width": "<Notification type=\"full-width\" />",
184
+ "type:message": "<Notification type=\"message\" />"
181
185
  }
182
186
  }
183
187
  }
@@ -56,7 +56,7 @@
56
56
  "breadcrumbItems": {
57
57
  "type": "object",
58
58
  "required": false,
59
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/layout/page-title/PageTitle\").PageTitleBreadcrumbItem[] | undefined",
59
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/layout/page-title/PageTitle\").PageTitleBreadcrumbItem[] | undefined",
60
60
  "properties": {
61
61
  "label": {
62
62
  "type": "string",
@@ -52,7 +52,7 @@
52
52
  "segments": {
53
53
  "type": "object",
54
54
  "required": false,
55
- "rawType": "import(\"/Users/nhn/Project/ncds/packages/ui-admin/src/components/feedback-and-status/progress-bar/types\").ProgressSegment[] | undefined",
55
+ "rawType": "import(\"/Users/nhncommerce/Desktop/project/ncds/packages/ui-admin/src/components/feedback-and-status/progress-bar/types\").ProgressSegment[] | undefined",
56
56
  "properties": {
57
57
  "value": {
58
58
  "type": "number",