@squadbase/vantage 0.2.3 → 0.3.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.
Files changed (68) hide show
  1. package/README.md +1 -1
  2. package/dist/add-DWNDA57L.js +6 -0
  3. package/dist/add-DWNDA57L.js.map +1 -0
  4. package/dist/build-QP5BL3K7.js +108 -0
  5. package/dist/build-QP5BL3K7.js.map +1 -0
  6. package/dist/check-QPFERQLO.js +38 -0
  7. package/dist/check-QPFERQLO.js.map +1 -0
  8. package/dist/chunk-2KRCGXBY.js +56 -0
  9. package/dist/chunk-2KRCGXBY.js.map +1 -0
  10. package/dist/chunk-BAM33YZ6.js +202 -0
  11. package/dist/chunk-BAM33YZ6.js.map +1 -0
  12. package/dist/chunk-C4MQRWXS.js +81 -0
  13. package/dist/chunk-C4MQRWXS.js.map +1 -0
  14. package/dist/chunk-D4Y5RWJA.js +189 -0
  15. package/dist/chunk-D4Y5RWJA.js.map +1 -0
  16. package/dist/chunk-OFFJ3OL5.js +121 -0
  17. package/dist/chunk-OFFJ3OL5.js.map +1 -0
  18. package/dist/chunk-PSEYFYAP.js +276 -0
  19. package/dist/chunk-PSEYFYAP.js.map +1 -0
  20. package/dist/chunk-R2YYVCGS.js +345 -0
  21. package/dist/chunk-R2YYVCGS.js.map +1 -0
  22. package/dist/chunk-RA6Z3OX3.js +199 -0
  23. package/dist/chunk-RA6Z3OX3.js.map +1 -0
  24. package/dist/chunk-UTEKU3LG.js +267 -0
  25. package/dist/chunk-UTEKU3LG.js.map +1 -0
  26. package/dist/chunk-VXAV2435.js +142 -0
  27. package/dist/chunk-VXAV2435.js.map +1 -0
  28. package/dist/cli.js +24 -1604
  29. package/dist/cli.js.map +1 -1
  30. package/dist/dev-NX3PMYCT.js +55 -0
  31. package/dist/dev-NX3PMYCT.js.map +1 -0
  32. package/dist/docs-M5ZUI25V.js +114 -0
  33. package/dist/docs-M5ZUI25V.js.map +1 -0
  34. package/dist/doctor-N6JMEWKT.js +58 -0
  35. package/dist/doctor-N6JMEWKT.js.map +1 -0
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/preview-CLALOEFE.js +49 -0
  40. package/dist/preview-CLALOEFE.js.map +1 -0
  41. package/dist/routes-YI25MKPF.js +119 -0
  42. package/dist/routes-YI25MKPF.js.map +1 -0
  43. package/dist/search-5TYAIQ7C.js +325 -0
  44. package/dist/search-5TYAIQ7C.js.map +1 -0
  45. package/dist/server/node.d.ts +1 -12
  46. package/dist/types-De3mo_hv.d.ts +59 -0
  47. package/dist/upgrade-3P5MBGE6.js +29 -0
  48. package/dist/upgrade-3P5MBGE6.js.map +1 -0
  49. package/dist/vite/index.d.ts +13 -0
  50. package/dist/vite/index.js +5 -1
  51. package/docs/en/changelog.md +82 -0
  52. package/docs/en/cli-reference.md +34 -4
  53. package/docs/en/components.md +2 -1
  54. package/docs/en/getting-started.md +6 -3
  55. package/docs/en/routing.md +27 -1
  56. package/docs/en/ui-and-theming.md +4 -2
  57. package/docs/ja/changelog.md +74 -0
  58. package/docs/ja/cli-reference.md +34 -4
  59. package/docs/ja/components.md +3 -2
  60. package/docs/ja/getting-started.md +6 -3
  61. package/docs/ja/routing.md +26 -1
  62. package/docs/ja/ui-and-theming.md +4 -2
  63. package/package.json +7 -4
  64. package/skills/vantage-add-feature/SKILL.md +14 -5
  65. package/skills/vantage-app/SKILL.md +9 -5
  66. package/templates/AGENTS.md +50 -6
  67. package/dist/chunk-3QKPNWKJ.js +0 -762
  68. package/dist/chunk-3QKPNWKJ.js.map +0 -1
@@ -208,8 +208,9 @@ export default function Overview() {
208
208
 
209
209
  ## テーマ
210
210
 
211
- 見た目は CSS 変数(デザイントークン)で決まります。色や角丸を変えたいときは、プロジェクトルートの
212
- `styles.css` で変数だけを上書きします — 詳しくは [UI とテーマ](ui-and-theming) を参照してください。
211
+ 見た目は CSS 変数(デザイントークン)で決まります。色や角丸を変えたいときは、ページと同じ側に置いた
212
+ `styles.css`(`src/` があれば `src/styles.css`)で変数だけを上書きします — 詳しくは
213
+ [UI とテーマ](ui-and-theming) を参照してください。
213
214
 
214
215
  ## ソースを編集したいとき
215
216
 
@@ -20,7 +20,9 @@ pnpm add @squadbase/vantage
20
20
  ### index.tsx を書く
21
21
 
22
22
  プロジェクトルートに `index.tsx` を 1 つ置きます。**default export されたコンポーネント**が
23
- ルート `/` になります。
23
+ ルート `/` になります。ページを `src/` にまとめたい場合は `src/index.tsx` にします ―
24
+ **`src/` があるとページ走査はその中だけ**になり、`src/` は URL に現れません
25
+ (→ [ページを置く場所](routing))。
24
26
 
25
27
  ```tsx
26
28
  // index.tsx
@@ -67,8 +69,9 @@ React Fast Refresh がその場で反映します。
67
69
  エントリファイルをそのまま指すだけで `dev` が立ち上がります。
68
70
 
69
71
  ```bash
70
- vantage ./demo # フォルダ → その中で dev を起動
71
- vantage ./demo/index.tsx # ページファイル → 親フォルダを root にして dev
72
+ vantage ./demo # フォルダ → その中で dev を起動
73
+ vantage ./demo/index.tsx # ページファイル → その `package.json` があるフォルダで dev
74
+ vantage ./demo/src/index.tsx # src/ レイアウトでも同じ(root は ./demo)
72
75
  ```
73
76
 
74
77
  第 1 引数が既知コマンドでなくパスを指すとき、Vantage はそれを root として `dev` を起動します
@@ -4,8 +4,27 @@
4
4
 
5
5
  Vantage のルーティングは **ファイルの配置がそのまま URL** になります。ルーターの設定は書きません。
6
6
 
7
+ ## ページを置く場所
8
+
9
+ 置き場所は 2 通りあり、**`src/` があるかどうか**だけで決まります。設定ではなく検出です。
10
+
11
+ | プロジェクト | ページ走査のルート | `/` になるファイル |
12
+ |---|---|---|
13
+ | `src/` がある | `src/` の中だけ | `src/index.tsx` |
14
+ | `src/` が無い | プロジェクトルート直下 | `index.tsx` |
15
+
16
+ `src/` 自体は URL に現れません(`src/sales/index.tsx` → `/sales`)。1 ファイルのアプリはそのまま
17
+ 直下に置け、育ったら `src/` を作ってまとめて移せます。
18
+
19
+ > [!WARNING]
20
+ > **2 つを混ぜることはできません。** `src/` があるとルート直下の `.tsx` は走査されず、
21
+ > `vantage check` が `SRC_DIR_SPLIT` エラーで指摘します。`server/` と `public/` は常にプロジェクト
22
+ > ルート直下(`src/server/` はスキャンされません)、`styles.css` はページと同じ側に置きます。
23
+
7
24
  ## ページの規約
8
25
 
26
+ 以下の「ファイル」列は、上のページ走査ルートからの相対パスです。
27
+
9
28
  | ファイル | ルート |
10
29
  |---|---|
11
30
  | `index.tsx` | `/` |
@@ -23,7 +42,7 @@ Vantage のルーティングは **ファイルの配置がそのまま URL**
23
42
 
24
43
  ## ルーティングされないディレクトリ
25
44
 
26
- 次のディレクトリは決して走査されません。ここには自由にコードを置けます。
45
+ 次のディレクトリは(どの階層でも)決して走査されません。ここには自由にコードを置けます。
27
46
 
28
47
  ```text
29
48
  components/ 再利用する React コンポーネント
@@ -33,6 +52,12 @@ server/ API(存在するとサーバーが有効になる)
33
52
  public/ 静的アセット
34
53
  ```
35
54
 
55
+ > [!WARNING]
56
+ > **それ以外のディレクトリ名は URL のセグメントになります。** `pages/report.tsx` は
57
+ > `/pages/report` に、`utils/format.tsx` は `/utils/format` になります。`pages/`・`app/`・
58
+ > `utils/` のような足場ディレクトリからルートが生まれると `vantage check` が
59
+ > `SUSPICIOUS_ROUTE_DIR` 警告を出すので、ページでないモジュールは上の 3 つに移してください。
60
+
36
61
  ## 動的パラメータの 3 つの綴り
37
62
 
38
63
  同じパラメータが、場所によって 3 つの綴りで現れます。**必ず一致させます。**
@@ -53,8 +53,10 @@ import { cn } from "@squadbase/vantage/ui";
53
53
 
54
54
  ## テーマトークンを上書きする
55
55
 
56
- 色や角丸などのデザイントークンは CSS 変数です。上書きしたいときは、プロジェクトルートに
57
- `styles.css` を置き、**CSS 変数だけ**を上書きします。このファイルはテーマの後に自動 import されます。
56
+ 色や角丸などのデザイントークンは CSS 変数です。上書きしたいときは、**ページと同じ側**に
57
+ `styles.css` を置き、**CSS 変数だけ**を上書きします `src/` があれば `src/styles.css`、
58
+ 無ければプロジェクトルート直下(→ [ページを置く場所](routing))。このファイルはテーマの後に
59
+ 自動 import されます。
58
60
 
59
61
  ```css
60
62
  /* styles.css — CSS 変数の上書きのみ */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squadbase/vantage",
3
- "version": "0.2.3",
3
+ "version": "0.3.1",
4
4
  "description": "Data dashboard framework for Squadbase Editor. Vite-powered, config-free, one-file first.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -86,11 +86,14 @@
86
86
  "templates"
87
87
  ],
88
88
  "scripts": {
89
- "build": "node scripts/build-docs.mjs && tsup",
89
+ "build": "node scripts/build-docs.mjs && node scripts/build.mjs",
90
+ "build:js": "tsup --no-dts",
91
+ "build:types": "tsup --dts-only",
90
92
  "build:docs": "node scripts/build-docs.mjs",
91
- "dev": "tsup --watch",
93
+ "dev": "tsup --watch --no-dts",
94
+ "dev:types": "tsc --noEmit --watch",
92
95
  "typecheck": "tsc --noEmit",
93
- "prepublishOnly": "node scripts/build-docs.mjs && tsup"
96
+ "prepublishOnly": "node scripts/build-docs.mjs && node scripts/build.mjs"
94
97
  },
95
98
  "dependencies": {
96
99
  "@base-ui/react": "^1.6.0",
@@ -16,8 +16,8 @@ CLI は雛形を出すだけで、規約の遵守はこちらの責任。**追
16
16
  ```bash
17
17
  vantage add page <name> # ルートページ(.tsx)
18
18
  vantage add api <name> # server/api/**.ts の API モジュール
19
- vantage add ui <name> # registry から UI ソースを components/ui/ にコピー
20
- vantage add block <name> # registry からブロックを components/blocks/ にコピー
19
+ vantage add ui <name> # registry から UI ソースを components/ui/ にコピー(src/ があればその中)
20
+ vantage add block <name> # registry からブロックを components/blocks/ にコピー(同上)
21
21
  ```
22
22
 
23
23
  `--force` で既存ファイルを上書き。`add` の雛形は import に `@squadbase/vantage` を焼き込む。
@@ -25,12 +25,18 @@ vantage add block <name> # registry からブロックを components/blocks/
25
25
  ## ページを追加する
26
26
 
27
27
  ```bash
28
- vantage add page monthly-analysis # → ./monthly-analysis.tsx → ルート /monthly-analysis
29
- vantage add page sales/index # → ./sales/index.tsx → ルート /sales
28
+ vantage add page monthly-analysis # → monthly-analysis.tsx → ルート /monthly-analysis
29
+ vantage add page sales/index # → sales/index.tsx → ルート /sales
30
30
  vantage add page "sales/[customerId]" # → 動的ルート /sales/:customerId
31
31
  ```
32
32
 
33
- 出力される雛形は `definePage` + デフォルトエクスポートのコンポーネント。ファイル名の規約:
33
+ **引数はページルートからの相対パス**(= ルートそのもの)。`add` は置き場所を自分で判断する
34
+ プロジェクトに `src/` があれば `src/monthly-analysis.tsx`、無ければ直下に書く。手でファイルを
35
+ 作るときも同じ規則で、**混ぜてはならない**(`src/` があるのに直下に置くと `SRC_DIR_SPLIT`
36
+ エラー。詳細は AGENTS.md の「ディレクトリ構造」)。
37
+
38
+ 出力される雛形は `definePage` + デフォルトエクスポートのコンポーネント。ファイル名の規約
39
+ (ページルートからの相対パス):
34
40
 
35
41
  | ファイル | ルート | 用途 |
36
42
  | --- | --- | --- |
@@ -51,6 +57,9 @@ vantage add page "sales/[customerId]" # → 動的ルート /sales/:customerI
51
57
  - 表示ルート `/foo/:id`
52
58
  - リンク `to="/foo/$id"` + `params={{ id }}`、取り出しは `const { id } = useParams()`
53
59
  4. `components/`・`hooks/`・`lib/`・`server/`・`public/` はページにならない(ルート走査対象外)。
60
+ **それ以外のディレクトリ名はそのまま URL のセグメントになる** ― `pages/`・`app/`・`utils/`
61
+ のような足場ディレクトリを切ると `/pages/report` のような URL ができる
62
+ (`SUSPICIOUS_ROUTE_DIR` 警告)。ページでないモジュールは上の 3 つに置く。
54
63
 
55
64
  ## API を追加する(fullstack)
56
65
 
@@ -19,14 +19,17 @@ description: Vantage(@squadbase/vantage)ダッシュボードアプリを一か
19
19
  3. **データを繋ぐ** — 外部 API か、自前の `server/api` か
20
20
  4. **仕上げ** — `check` → `build` → `preview`
21
21
 
22
- **各段階の終わりに `vantage check` を通す。** 静的診断(禁止ファイル・ルート衝突・境界違反・
23
- API export・env 誤用)はユーザーコードを実行しないので速く、エラーがあれば exit 1 になる。
22
+ **各段階の終わりに `vantage check` を通す。** 静的診断(禁止ファイル・`src/` の分裂・ルート
23
+ 衝突・境界違反・API export・env 誤用)はユーザーコードを実行しないので速く、エラーがあれば
24
+ exit 1 になる。
24
25
  まとめて最後に回すと、原因の切り分けが難しくなる。
25
26
 
26
27
  ## Step 1 — 骨組み
27
28
 
28
29
  新規なら `package.json` と `index.tsx` の 2 ファイルだけ。設定ファイルは**作らない**
29
- (`vite.config.*` 等は `vantage check` がエラーにする)
30
+ (`vite.config.*` 等は `vantage check` がエラーにする)。ページを `src/` にまとめたいなら
31
+ `src/index.tsx` にする ― **`src/` があればページ走査はその中だけ**になり、直下に残した `.tsx`
32
+ は無視される(`SRC_DIR_SPLIT` エラー)。どちらか一方に寄せること。
30
33
 
31
34
  ```json
32
35
  {
@@ -41,7 +44,7 @@ API export・env 誤用)はユーザーコードを実行しないので速く
41
44
  "routes": "vantage routes"
42
45
  },
43
46
  "dependencies": {
44
- "@squadbase/vantage": "^0.2.0",
47
+ "@squadbase/vantage": "^0.3.0",
45
48
  "react": "^19.2.7",
46
49
  "react-dom": "^19.2.7"
47
50
  }
@@ -54,8 +57,9 @@ API export・env 誤用)はユーザーコードを実行しないので速く
54
57
  **既存アプリに合流したときは、作る前に現状を読む:**
55
58
 
56
59
  ```bash
57
- vantage routes # 既にあるページと API の URL マップ
60
+ vantage routes # 既にあるページと API の URL マップ(file 列がページの置き場所)
58
61
  vantage check # いま壊れていないか(これから出すエラーと切り分ける)
62
+ ls src/ # あればページは src/ の中だけ。無ければプロジェクトルート直下
59
63
  ls server/ # あれば fullstack モード。無ければ SPA
60
64
  vantage add skill # 配置済みの skill(このファイルの仲間)と、その場所
61
65
  ```
@@ -22,6 +22,9 @@ UI キット・開発サーバー・API サーバー・ビルドはすべて Van
22
22
 
23
23
  ## 不変条件(破ると静かに壊れる)
24
24
 
25
+ - **ページは `src/` の中か、プロジェクトルート直下か、どちらか一方。** `src/` があれば走査は
26
+ `src/` だけになり、ルート直下に残した `.tsx` は無視される(`SRC_DIR_SPLIT` エラー)。
27
+ 新しいファイルは既にある側に置く(→「ディレクトリ構造」)。
25
28
  - **設定ファイルを作らない。** `vite.config.*`・`tailwind.config.*`・`postcss.config.*`・
26
29
  `components.json`・`vantage.config.*` はすべて禁止。存在すると `vantage check` がエラーにする
27
30
  (`FORBIDDEN_FILE`)。テーマ調整は `styles.css` のトークンで行う。
@@ -39,6 +42,43 @@ UI キット・開発サーバー・API サーバー・ビルドはすべて Van
39
42
  ため、変数・関数呼び出し・テンプレート補間は使わない。`page` エクスポートはランタイムでは
40
43
  読まれない。
41
44
 
45
+ ## ディレクトリ構造(ページをどこに置くか)
46
+
47
+ **ページの置き場所は 2 通りあり、`src/` があるかどうかだけで決まる。混ぜてはならない。**
48
+
49
+ - `src/` が**ある** → ページは `src/` の中だけ。ルート直下に置いた `.tsx` はルートにならず、
50
+ `SRC_DIR_SPLIT` エラーになる。
51
+ - `src/` が**無い** → ページはプロジェクトルート直下。
52
+
53
+ **ファイルを足す前に `src/` の有無を確認し、既にある側に置く**(`ls` するだけでよい)。URL は
54
+ どちらでも同じで、`src/` は URL に現れない(`src/sales/index.tsx` → `/sales`)。
55
+
56
+ ```text
57
+ root/
58
+ ├── src/ # ある場合、ページはこの中だけ(無ければ以下が root 直下)
59
+ │ ├── index.tsx # /
60
+ │ ├── monthly-analysis.tsx # /monthly-analysis
61
+ │ ├── sales/index.tsx # /sales
62
+ │ ├── _layout.tsx # ルートレイアウト
63
+ │ ├── components/ # ページ走査の対象外(URL にならない)
64
+ │ ├── hooks/ lib/ # 同上
65
+ │ └── styles.css # 任意のグローバル CSS
66
+ ├── server/ # 常にプロジェクトルート直下。src/ の中ではない
67
+ │ ├── api/… # /api/*
68
+ │ └── utils.ts
69
+ ├── public/ # 静的ファイル。常にプロジェクトルート直下
70
+ ├── package.json # managed
71
+ └── tsconfig.json # managed
72
+ ```
73
+
74
+ - **`server/` と `public/` は常にプロジェクトルート直下。** `src/server/` は決してスキャン
75
+ されない(`SRC_DIR_SPLIT` エラー)。
76
+ - **`styles.css` はページと同じ側**に置く(`src/` があれば `src/styles.css`)。
77
+ - **ディレクトリ名はそのまま URL のセグメントになる。** `pages/`・`app/`・`utils/` のような
78
+ 足場ディレクトリを切ると、その名前が URL に出る(`pages/report.tsx` → `/pages/report`)。
79
+ `SUSPICIOUS_ROUTE_DIR` 警告で知らされる。ページでないモジュールは `components/`・`hooks/`・
80
+ `lib/` に置く ― この 3 つ(と `server/`・`public/`)はどの階層でも走査されない。
81
+
42
82
  ## import サブパスの地図
43
83
 
44
84
  | import 元 | 提供するもの |
@@ -82,7 +122,7 @@ UI キット・開発サーバー・API サーバー・ビルドはすべて Van
82
122
  "routes": "vantage routes"
83
123
  },
84
124
  "dependencies": {
85
- "@squadbase/vantage": "^0.2.0",
125
+ "@squadbase/vantage": "^0.3.0",
86
126
  "react": "^19.2.7",
87
127
  "react-dom": "^19.2.7"
88
128
  }
@@ -108,12 +148,15 @@ pnpm check # 静的診断(エラーがあれば exit 1)
108
148
  pnpm routes # ページ/API の URL マップ
109
149
  ```
110
150
 
111
- `server/` ディレクトリが無いので、この構成は **SPA モード**。
151
+ `server/` ディレクトリが無いので、この構成は **SPA モード**。ページを直下に置く形だが、
152
+ `src/` を作ってその中に集めてもよい(テンプレートから始めた場合は最初から `src/` がある)。
153
+ どちらか一方に寄せること(→「ディレクトリ構造」)。
112
154
 
113
155
  ## ルーティング規約(ファイル名 → ルート)
114
156
 
115
- ルートディレクトリ直下の `.tsx`/`.jsx` がそのままページになる。各ページは**デフォルト
116
- エクスポートの React コンポーネントが必須**(無いと `MISSING_DEFAULT_EXPORT`)。
157
+ ページルート(`src/` があればその中、無ければプロジェクトルート)からの相対パスが、そのまま
158
+ URL になる。各ページは**デフォルトエクスポートの React コンポーネントが必須**(無いと
159
+ `MISSING_DEFAULT_EXPORT`)。以下の「ファイル」列はページルートからの相対パス。
117
160
 
118
161
  | ファイル | ルート |
119
162
  | --- | --- |
@@ -125,7 +168,8 @@ pnpm routes # ページ/API の URL マップ
125
168
  | `_404.tsx` | Not Found ページ |
126
169
  | `_error.tsx` | ルートが throw したときのエラーページ |
127
170
 
128
- `components/`・`hooks/`・`lib/`・`server/`・`public/` はルート走査の対象外(ページにならない)。
171
+ `components/`・`hooks/`・`lib/`・`server/`・`public/` はどの階層でもルート走査の対象外
172
+ (ページにならない)。それ以外のディレクトリ名は URL のセグメントになる(→「ディレクトリ構造」)。
129
173
 
130
174
  ```tsx
131
175
  import { definePage } from "@squadbase/vantage"
@@ -302,7 +346,7 @@ vantage search テーブル --limit 5 --json # 機械可読(slug + score + sn
302
346
  ## 検証・ビルド・プレビュー
303
347
 
304
348
  ```bash
305
- pnpm check # 静的診断(禁止ファイル・ルート衝突・境界・API export・env 誤用)
349
+ pnpm check # 静的診断(禁止ファイル・src/ の分裂・ルート衝突・境界・API export・env 誤用)
306
350
  pnpm routes # ページ + API の URL マップ
307
351
  pnpm build # dist/ に client(+ server)+ vantage-manifest.json
308
352
  pnpm preview # 本番ビルドをローカル実行