@axis-ds/cli 1.1.4 → 1.2.1

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 CHANGED
@@ -23,6 +23,27 @@ axis add button
23
23
  axis list
24
24
  ```
25
25
 
26
+ ## 브랜드 테마 (`axis theme`)
27
+
28
+ 프로젝트에 설치된 `@axis-ds/tokens`(1.3.0 이상)의 브랜드를 조회하고 적용합니다. 세 명령 모두 `-d, --dir <path>` 로 대상 디렉터리를 받습니다(기본: 현재 디렉터리).
29
+
30
+ ```bash
31
+ # 설치된 브랜드 목록 (이름 · 설명 · 테마)
32
+ axis theme list
33
+
34
+ # 브랜드 상세: import 경로 · Provider 예시 · 주요 토큰 · 보정 내역(a11y 메타)
35
+ axis theme info ontology
36
+
37
+ # 브랜드 적용: 전역 CSS import · package.json 의존성 · axis.config.json 의 brand
38
+ axis theme add ontology
39
+ ```
40
+
41
+ - `axis theme add` 는 `axis.config.json` 의 `globalCss` → `app/globals.css` → `src/app/globals.css` → 루트 `globals.css` 순으로 찾은 파일에 `@import "@axis-ds/tokens/css/brands/<brand>";` 를 한 줄 넣습니다. 여러 번 실행해도 같은 줄을 다시 넣지 않습니다.
42
+ - `package.json` 에 `@axis-ds/tokens` 가 없으면 `dependencies` 에 `^1.3.0` 을 더하고 설치 명령만 안내합니다. 설치는 실행하지 않습니다.
43
+ - 브랜드 CSS 는 `[data-brand="<brand>"]` 선택자로 적용되므로 `ThemeProvider defaultBrand` 나 `<html data-brand>` 가 있어야 화면이 바뀝니다. 코드는 고치지 않고 예시만 출력합니다.
44
+ - `@axis-ds/tokens` 가 없거나 1.3.0 미만이면 목록 대신 설치 · 업그레이드 안내를 내고 종료 코드 1 로 끝납니다.
45
+ - `axis check` 는 `axis.config.json` 의 `brand` 와 CSS 의 브랜드 import 가 맞는지도 봅니다.
46
+
26
47
  ## 문서
27
48
 
28
49
  자세한 사용법은 [AXIS Design System 문서](https://axis.minu.best)를 참고하세요.
@@ -84,7 +84,7 @@ ${result}`;
84
84
  console.log(chalk.bold("\uBC29\uBC95 3: \uCF54\uB4DC \uBCF5\uC0AC"));
85
85
  console.log(chalk.gray(" 1. v0.app\uC5D0\uC11C \uCF54\uB4DC \uD0ED \uC5F4\uAE30"));
86
86
  console.log(chalk.gray(" 2. \uD30C\uC77C\uBCC4\uB85C \uCF54\uB4DC \uBCF5\uC0AC"));
87
- console.log(chalk.gray(" 3. axis-cli v0 convert\uB85C \uBCC0\uD658\n"));
87
+ console.log(chalk.gray(" 3. npx @axis-ds/cli v0 convert\uB85C \uBCC0\uD658\n"));
88
88
  const { method } = await prompts({
89
89
  type: "select",
90
90
  name: "method",
@@ -118,7 +118,7 @@ ${result}`;
118
118
  console.log(chalk.bold("3. \uB85C\uCEEC\uC5D0\uC11C \uD074\uB860:"));
119
119
  console.log(chalk.cyan(" git clone https://github.com/your-org/v0-project.git\n"));
120
120
  console.log(chalk.bold("4. AXIS \uBCC0\uD658:"));
121
- console.log(chalk.cyan(" axis-cli v0 convert ./v0-project/components/*.tsx\n"));
121
+ console.log(chalk.cyan(" npx @axis-ds/cli v0 convert ./v0-project/components/*.tsx\n"));
122
122
  console.log(chalk.gray("\uD301: GitHub Actions\uB85C \uC790\uB3D9 \uBCC0\uD658 \uC6CC\uD06C\uD50C\uB85C\uB3C4 \uC124\uC815 \uAC00\uB2A5\uD569\uB2C8\uB2E4.\n"));
123
123
  }
124
124
  // ZIP 파일에서 변환
@@ -134,7 +134,7 @@ ${result}`;
134
134
  console.log(chalk.yellow("\nZIP \uBCC0\uD658 \uAE30\uB2A5\uC740 \uCD94\uD6C4 \uAD6C\uD604 \uC608\uC815\uC785\uB2C8\uB2E4."));
135
135
  console.log(chalk.gray("\uD604\uC7AC\uB294 \uC218\uB3D9\uC73C\uB85C \uC555\uCD95 \uD574\uC81C \uD6C4 convert \uBA85\uB839\uC5B4\uB97C \uC0AC\uC6A9\uD558\uC138\uC694:\n"));
136
136
  console.log(chalk.cyan(" unzip v0-project.zip -d ./v0-project"));
137
- console.log(chalk.cyan(" axis-cli v0 convert ./v0-project/components/*.tsx\n"));
137
+ console.log(chalk.cyan(" npx @axis-ds/cli v0 convert ./v0-project/components/*.tsx\n"));
138
138
  }
139
139
  // 클립보드에서 변환
140
140
  async convertFromClipboard() {
@@ -185,7 +185,7 @@ ${result}`;
185
185
  console.log(chalk.gray(" AI/LLM \uAD00\uB828 UI\uC5D0\uB294 @axis-ds/agentic-ui \uC0AC\uC6A9:"));
186
186
  console.log(chalk.cyan(" import { StreamingText } from '@axis-ds/agentic-ui'\n"));
187
187
  console.log(chalk.bold("5. \uC790\uB3D9 \uBCC0\uD658"));
188
- console.log(chalk.cyan(" axis-cli v0 convert <file.tsx>\n"));
188
+ console.log(chalk.cyan(" npx @axis-ds/cli v0 convert <file.tsx>\n"));
189
189
  }
190
190
  };
191
191
  function getV0Url(path2 = "") {
@@ -852,7 +852,7 @@ async function initSync(owner, repo, projectNumber) {
852
852
  console.log(chalk.gray(` \uD504\uB85C\uC81D\uD2B8: #${projectNumber}`));
853
853
  console.log();
854
854
  console.log(chalk.cyan("\uB2E4\uC74C \uBA85\uB839\uC5B4\uB85C \uB3D9\uAE30\uD654\uB97C \uC2DC\uC791\uD558\uC138\uC694:"));
855
- console.log(chalk.cyan(" npx axis-cli sync"));
855
+ console.log(chalk.cyan(" npx @axis-ds/cli sync"));
856
856
  console.log();
857
857
  } catch (error) {
858
858
  spinner.fail(`\uC624\uB958: ${error.message}`);
@@ -35,8 +35,8 @@ var MonetClient = class {
35
35
  );
36
36
  }
37
37
  console.log(chalk.gray("\n\uC0AC\uC6A9\uBC95:"));
38
- console.log(chalk.gray(" axis-cli monet browse <category> # \uCE74\uD14C\uACE0\uB9AC \uCEF4\uD3EC\uB10C\uD2B8 \uBCF4\uAE30"));
39
- console.log(chalk.gray(" axis-cli monet search <query> # \uCEF4\uD3EC\uB10C\uD2B8 \uAC80\uC0C9\n"));
38
+ console.log(chalk.gray(" npx @axis-ds/cli monet browse <category> # \uCE74\uD14C\uACE0\uB9AC \uCEF4\uD3EC\uB10C\uD2B8 \uBCF4\uAE30"));
39
+ console.log(chalk.gray(" npx @axis-ds/cli monet search <query> # \uCEF4\uD3EC\uB10C\uD2B8 \uAC80\uC0C9\n"));
40
40
  }
41
41
  // 컴포넌트 검색 (웹 URL 안내)
42
42
  async searchComponents(query) {
@@ -82,7 +82,7 @@ var MonetClient = class {
82
82
  console.log(chalk.gray("\n\uCEF4\uD3EC\uB10C\uD2B8 \uAC00\uC838\uC624\uAE30:"));
83
83
  console.log(chalk.gray(" 1. \uC6F9\uC5D0\uC11C \uCEF4\uD3EC\uB10C\uD2B8 \uC120\uD0DD"));
84
84
  console.log(chalk.gray(" 2. Copy Code \uBC84\uD2BC \uD074\uB9AD"));
85
- console.log(chalk.gray(" 3. axis-cli monet import \uC2E4\uD589\n"));
85
+ console.log(chalk.gray(" 3. npx @axis-ds/cli monet import \uC2E4\uD589\n"));
86
86
  }
87
87
  // 카테고리별 예시 컴포넌트
88
88
  getCategoryExamples(category) {