@squadbase/vantage 0.5.3 → 0.6.1-dev.2d25e94
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/NOTICE +73 -0
- package/README.md +6 -5
- package/dist/add-DY4AXANK.js +6 -0
- package/dist/add-DY4AXANK.js.map +1 -0
- package/dist/{build-756WIEVI.js → build-JB4VOMUI.js} +10 -10
- package/dist/{build-756WIEVI.js.map → build-JB4VOMUI.js.map} +1 -1
- package/dist/{check-KZ5PHCA6.js → check-ZJYK6RLG.js} +8 -8
- package/dist/{check-KZ5PHCA6.js.map → check-ZJYK6RLG.js.map} +1 -1
- package/dist/chunk-5ZOP4SQR.js +47 -0
- package/dist/chunk-5ZOP4SQR.js.map +1 -0
- package/dist/{chunk-EHPJXDJU.js → chunk-6S4BAIGV.js} +4 -2
- package/dist/chunk-6S4BAIGV.js.map +1 -0
- package/dist/chunk-BCE22JSM.js +510 -0
- package/dist/chunk-BCE22JSM.js.map +1 -0
- package/dist/{chunk-C4MQRWXS.js → chunk-C2CX6GLX.js} +17 -3
- package/dist/chunk-C2CX6GLX.js.map +1 -0
- package/dist/{chunk-RA6Z3OX3.js → chunk-EP6JHXSR.js} +61 -9
- package/dist/chunk-EP6JHXSR.js.map +1 -0
- package/dist/{chunk-BAM33YZ6.js → chunk-JGRMRXXZ.js} +45 -6
- package/dist/chunk-JGRMRXXZ.js.map +1 -0
- package/dist/{chunk-VXAV2435.js → chunk-KLEIVDUV.js} +30 -7
- package/dist/chunk-KLEIVDUV.js.map +1 -0
- package/dist/{chunk-JC6MT5UU.js → chunk-MXI3PZFT.js} +3 -3
- package/dist/{chunk-JC6MT5UU.js.map → chunk-MXI3PZFT.js.map} +1 -1
- package/dist/chunk-PLST5Q7T.js +2221 -0
- package/dist/chunk-PLST5Q7T.js.map +1 -0
- package/dist/chunk-PVTHHV7X.js +105 -0
- package/dist/chunk-PVTHHV7X.js.map +1 -0
- package/dist/{chunk-HQDEYCDP.js → chunk-QI3XQKHS.js} +40 -4
- package/dist/chunk-QI3XQKHS.js.map +1 -0
- package/dist/{chunk-L3TW4FNA.js → chunk-T3FLAGI6.js} +34 -13
- package/dist/chunk-T3FLAGI6.js.map +1 -0
- package/dist/{chunk-X44ZTKID.js → chunk-U2M6HGKQ.js} +61 -9
- package/dist/chunk-U2M6HGKQ.js.map +1 -0
- package/dist/chunk-ZO62C6T4.js +91 -0
- package/dist/chunk-ZO62C6T4.js.map +1 -0
- package/dist/{chunk-D4Y5RWJA.js → chunk-ZVANIULZ.js} +81 -21
- package/dist/chunk-ZVANIULZ.js.map +1 -0
- package/dist/cli.js +18 -14
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +5 -35
- package/dist/client/index.js +1 -1
- package/dist/components/index.js +3 -2212
- package/dist/components/index.js.map +1 -1
- package/dist/{dev-EILX2VTF.js → dev-FCEC3UKQ.js} +24 -13
- package/dist/dev-FCEC3UKQ.js.map +1 -0
- package/dist/doc/index.d.ts +39 -0
- package/dist/doc/index.js +38 -0
- package/dist/doc/index.js.map +1 -0
- package/dist/{docs-GP2ZHIQF.js → docs-EJJ3BECT.js} +4 -4
- package/dist/{docs-GP2ZHIQF.js.map → docs-EJJ3BECT.js.map} +1 -1
- package/dist/{doctor-FXZLMGC3.js → doctor-WHZXPERA.js} +9 -9
- package/dist/doctor-WHZXPERA.js.map +1 -0
- package/dist/manifest-DiOjyinq.d.ts +43 -0
- package/dist/{preview-WBQPCTTT.js → preview-OGMCNQUO.js} +13 -5
- package/dist/preview-OGMCNQUO.js.map +1 -0
- package/dist/query/index.js +1 -102
- package/dist/query/index.js.map +1 -1
- package/dist/router/index.d.ts +10 -0
- package/dist/router/index.js +2 -89
- package/dist/router/index.js.map +1 -1
- package/dist/{routes-WCN4KSZY.js → routes-GTFO5PUF.js} +17 -8
- package/dist/routes-GTFO5PUF.js.map +1 -0
- package/dist/{search-GLKCJXSI.js → search-6Y422SV6.js} +4 -4
- package/dist/{search-GLKCJXSI.js.map → search-6Y422SV6.js.map} +1 -1
- package/dist/server/node.d.ts +1 -1
- package/dist/server/node.js +6 -1
- package/dist/server/node.js.map +1 -1
- package/dist/slide/index.d.ts +230 -0
- package/dist/slide/index.js +1571 -0
- package/dist/slide/index.js.map +1 -0
- package/dist/table/index.d.ts +107 -0
- package/dist/table/index.js +680 -0
- package/dist/table/index.js.map +1 -0
- package/dist/types-CXFlMl8S.d.ts +121 -0
- package/dist/ui/index.js +3 -41
- package/dist/ui/index.js.map +1 -1
- package/dist/{upgrade-S64IXL42.js → upgrade-AL4KZZR4.js} +9 -9
- package/dist/upgrade-AL4KZZR4.js.map +1 -0
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.js +5 -5
- package/docs/en/agent-skills.md +22 -12
- package/docs/en/changelog.md +107 -0
- package/docs/en/cli-reference.md +42 -4
- package/docs/en/pages-and-metadata.md +17 -0
- package/docs/en/routing.md +102 -3
- package/docs/en/ui-and-theming.md +102 -0
- package/docs/index.json +2 -2
- package/docs/ja/agent-skills.md +21 -11
- package/docs/ja/changelog.md +105 -0
- package/docs/ja/cli-reference.md +41 -4
- package/docs/ja/pages-and-metadata.md +17 -0
- package/docs/ja/routing.md +98 -3
- package/docs/ja/ui-and-theming.md +100 -0
- package/package.json +33 -9
- package/skills/vantage-app/SKILL.md +4 -0
- package/skills/vantage-design/SKILL.md +137 -0
- package/skills/vantage-design/references/extract.md +110 -0
- package/skills/vantage-design/references/format.md +172 -0
- package/skills/vantage-design/references/presets.md +110 -0
- package/skills/vantage-design/scripts/contrast.mjs +166 -0
- package/skills/vantage-pitfalls/SKILL.md +41 -1
- package/skills/vantage-slide/SKILL.md +264 -0
- package/skills/vantage-slide/references/morph.md +102 -0
- package/skills/vantage-slide/references/steps.md +57 -0
- package/skills/vantage-slide/references/tokens.md +87 -0
- package/skills/vantage-slide/references/transitions.md +196 -0
- package/templates/AGENTS.md +43 -228
- package/templates/agents/api.md +49 -0
- package/templates/agents/csv.md +32 -0
- package/templates/agents/doc.md +73 -0
- package/templates/agents/page.md +187 -0
- package/templates/agents/slide.md +41 -0
- package/templates/agents/xlsx.md +33 -0
- package/theme.css +169 -0
- package/dist/add-PPCBMWEN.js +0 -6
- package/dist/add-PPCBMWEN.js.map +0 -1
- package/dist/chunk-BAM33YZ6.js.map +0 -1
- package/dist/chunk-C4MQRWXS.js.map +0 -1
- package/dist/chunk-D4Y5RWJA.js.map +0 -1
- package/dist/chunk-EHPJXDJU.js.map +0 -1
- package/dist/chunk-HQDEYCDP.js.map +0 -1
- package/dist/chunk-L3TW4FNA.js.map +0 -1
- package/dist/chunk-PSEYFYAP.js +0 -276
- package/dist/chunk-PSEYFYAP.js.map +0 -1
- package/dist/chunk-RA6Z3OX3.js.map +0 -1
- package/dist/chunk-VXAV2435.js.map +0 -1
- package/dist/chunk-X44ZTKID.js.map +0 -1
- package/dist/dev-EILX2VTF.js.map +0 -1
- package/dist/doctor-FXZLMGC3.js.map +0 -1
- package/dist/preview-WBQPCTTT.js.map +0 -1
- package/dist/routes-WCN4KSZY.js.map +0 -1
- package/dist/types-De3mo_hv.d.ts +0 -59
- package/dist/upgrade-S64IXL42.js.map +0 -1
package/docs/ja/changelog.md
CHANGED
|
@@ -8,6 +8,111 @@ Vantage のリリースごとの変更点です。新しいものが上に来ま
|
|
|
8
8
|
> まだプロトタイプ(**0.x**)です。0.x の間は **minor が実質のメジャー**扱いで、後方互換性の
|
|
9
9
|
> ない変更は minor で入ることがあります。patch は後方互換の機能追加とバグ修正のみです。
|
|
10
10
|
|
|
11
|
+
## v0.6.2
|
|
12
|
+
|
|
13
|
+
リバースプロキシの後ろで dev サーバーを動かせるようになりました(2026-09-23)。
|
|
14
|
+
|
|
15
|
+
### 追加
|
|
16
|
+
|
|
17
|
+
- **`--host [addr]` と `--allowed-hosts <list|true>`** を `vantage dev` / `vantage preview`(SPA)に
|
|
18
|
+
追加しました。Vite は `Host` ヘッダが `localhost` 以外のリクエストを 403 で拒否するため、
|
|
19
|
+
サンドボックスのプレビュープロキシやトンネルなど**別のホスト名で前に立つもの**があると
|
|
20
|
+
そのままでは届きませんでした。`--allowed-hosts` は環境変数 **`VANTAGE_ALLOWED_HOSTS`** でも
|
|
21
|
+
渡せます(フラグが優先)。どちらも指定しなければ挙動は従来どおりです。詳細は
|
|
22
|
+
[CLI リファレンス](cli-reference)を参照してください。
|
|
23
|
+
|
|
24
|
+
## v0.6.1
|
|
25
|
+
|
|
26
|
+
ドキュメントのページを書けるようになりました(2026-09-25)。
|
|
27
|
+
|
|
28
|
+
### 追加
|
|
29
|
+
|
|
30
|
+
- **`<name>.doc.tsx` がドキュメントのページになります。** `@squadbase/vantage/doc` の `Document` で
|
|
31
|
+
包むと、中の見出し・段落・リスト・表・引用・コードにクラスなしでスタイルが当たります。配色・書体・
|
|
32
|
+
本文の幅は `--doc-*` トークンで変えられます。詳しくは[ルーティング](routing)と
|
|
33
|
+
[UI とテーマ](ui-and-theming)を参照してください。
|
|
34
|
+
|
|
35
|
+
## v0.6.0
|
|
36
|
+
|
|
37
|
+
`src/` に置けるものが `.tsx` だけではなくなりました。`.csv` / `.xlsx` はそのまま表として
|
|
38
|
+
読めるページになり、`<name>.slide.tsx` はスライドデッキになります。どちらもナビに
|
|
39
|
+
ダッシュボードのページと同格で並びます。
|
|
40
|
+
|
|
41
|
+
### 追加
|
|
42
|
+
|
|
43
|
+
- **`.csv` / `.xlsx` がページになります。** `src/data/june.xlsx` を置いて `/data/june` を
|
|
44
|
+
開くと、ダウンロードせずブラウザ上で表として読めます。URL の作り方は `.tsx` と同じ
|
|
45
|
+
(`index.csv` はディレクトリにマップ)で、`vantage routes` にも `useRoutes()` のナビにも
|
|
46
|
+
同格で並びます。xlsx は複数シートを切り替えられ、元ファイルのダウンロード導線も付きます。
|
|
47
|
+
|
|
48
|
+
タイトルはファイル名から導かれます(`june.xlsx` → 「June」)。パースはブラウザで行われるので、
|
|
49
|
+
dev・ビルド後・デプロイ後で同じ URL が同じものを返します。数式・グラフ・セル書式は
|
|
50
|
+
再現されません(値として読めれば十分、という設計)。ページにしたくないファイルは `_` を
|
|
51
|
+
前置してください。
|
|
52
|
+
|
|
53
|
+
ビューアは**表計算ソフトの見た目**です —— 列は A / B / C、左に行番号、ファイルの 1 行目は
|
|
54
|
+
ヘッダとして固定、シートのタブは下端、罫線はデータの外まで続きます。読み取り専用で、
|
|
55
|
+
ツールバーもソートもありません(セルを選んで `Cmd/Ctrl+C` でコピーはできます)。
|
|
56
|
+
|
|
57
|
+
- **`@squadbase/vantage/table` サブパスを追加しました。** ファイルページを描いている表ビューア
|
|
58
|
+
そのものです。`FilePageView` を直接使えば、`_` を前置してルート化を止めたファイルを自分の
|
|
59
|
+
`definePage` 付きのページから描けます(`TableViewer` はパース済みの 1 シート、`SheetGrid` は
|
|
60
|
+
グリッド本体)。
|
|
61
|
+
|
|
62
|
+
- **`<name>.slide.tsx` がスライドデッキになります。** `.slide` はページ種別サフィックスで、
|
|
63
|
+
URL には出ません(`src/june.slide.tsx` → `/june`)。中身は `<SlideDeck>` を返す普通の React
|
|
64
|
+
コンポーネントなので、`definePage` もナビも通常のページと同じように効きます。
|
|
65
|
+
|
|
66
|
+
1920×1080 の固定キャンバスに絶対 px で書き、画面サイズに合わせて縮小されます。キーボードと
|
|
67
|
+
クリックで送れ、現在位置は `?p=` として URL に入り、ツールバーから **pptx を書き出せます**。
|
|
68
|
+
書き出しは各スライドを画像として焼くので、受け取り側にフォントが要らず日本語も欠けません。
|
|
69
|
+
|
|
70
|
+
見え方は読み手が 3 通りから選べます — **一覧 + スライド**(既定。左にサムネイル列)、
|
|
71
|
+
**スライドのみ**(`L` で一覧を閉じる)、**全画面**(`F`。一覧は退く)。一覧の開閉は `?rail=` に
|
|
72
|
+
入るのでその状態のリンクも共有できます。閉じた状態から始めたいデッキだけ
|
|
73
|
+
`<SlideDeck rail={false}>` と書きます(`embedded` は既定で閉)。
|
|
74
|
+
|
|
75
|
+
- **`@squadbase/vantage/slide` サブパスを追加しました。** `SlideDeck`・`Slide`・`Steps`・`Step`・
|
|
76
|
+
`MorphElement`・`useSlideNumber`・`useIsActiveSlide`。段階表示、ページ間トランジション、
|
|
77
|
+
2 枚にまたがる同一要素のモーフ(Keynote の「マジックムーブ」相当)を含みます。ランタイムは
|
|
78
|
+
[open-slide](https://github.com/1weiho/open-slide)(MIT)から移植したもので、帰属は
|
|
79
|
+
パッケージ同梱の `NOTICE` にあります。
|
|
80
|
+
|
|
81
|
+
- **`vantage-slide` skill を同梱しました。** キャンバスの縦方向の予算の取り方、タイプスケール、
|
|
82
|
+
段階表示、トランジションの設計原則、モーフの規則、pptx 書き出しが壊れる条件。配置は他の
|
|
83
|
+
skill と同じ `vantage add skill --all`。
|
|
84
|
+
|
|
85
|
+
- **`--slide-*` テーマトークンを追加しました。** 既定はアプリ自身のトークンへの別名なので、
|
|
86
|
+
デッキは何もしなくてもライト / ダークに追従します。`<SlideDeck theme={{ … }}>` でデッキ単位に
|
|
87
|
+
上書きできます。
|
|
88
|
+
|
|
89
|
+
- **静的診断が 3 つ増えました**(合計 11: エラー 7・警告 4)。`UNSUPPORTED_PAGE_FILE`(警告 ―
|
|
90
|
+
ビューアの無い拡張子はルートにならないので、置いても出てこない理由を告げる)、
|
|
91
|
+
`FILE_PAGE_TOO_LARGE`(警告 ― 25MB 超)、`INVALID_PAGE_VARIANT`(エラー ―
|
|
92
|
+
`_layout.slide.tsx` のように、ルートにならないファイルにサフィックスが付いている)。
|
|
93
|
+
|
|
94
|
+
- **`AGENTS.md` を「地図」+ `agents/*.md`(種類ごとの知識ファイル)に分割しました。** 通常
|
|
95
|
+
ページ・API・スライド・xlsx・csv のそれぞれに 1 ファイル(`agents/page.md` /
|
|
96
|
+
`agents/api.md` / `agents/slide.md` / `agents/xlsx.md` / `agents/csv.md`)があり、
|
|
97
|
+
`AGENTS.md` は不変条件と「何を書くか → どのファイルを読むか」の索引表だけを持ちます。
|
|
98
|
+
書こうとしている種類のファイルだけを読めば済むぶん、エージェントが最初に読み込む量が
|
|
99
|
+
減ります。`vantage add agents` はこのセット一式をアプリルート(`AGENTS.md` + `agents/`)へ
|
|
100
|
+
配置し、`vantage upgrade` はまとめて再同期します(バンドルに無いファイルは消しません)。
|
|
101
|
+
|
|
102
|
+
- **`DESIGN.md` と `vantage-design` skill を追加しました。** プロジェクトルートの `DESIGN.md` に
|
|
103
|
+
見た目の意図(配色の役割・チャート・書体・レイアウト)をトークン名で書いておくと、エージェントは
|
|
104
|
+
UI を書く前にそれを読みます(`AGENTS.md` / `agents/page.md` / `agents/slide.md` に案内を追加)。
|
|
105
|
+
`DESIGN.md` はユーザーの持ち物で、`vantage upgrade` は触りません。「ブランドに合わせて」などの
|
|
106
|
+
依頼は `vantage-design` skill が `DESIGN.md` と `styles.css` をまとめて更新します。
|
|
107
|
+
|
|
108
|
+
### 変更
|
|
109
|
+
|
|
110
|
+
- `useRoutes()` が返す `RouteInfo` に **`kind`**(`"module"` | `"file"`)と
|
|
111
|
+
**`variant`**(`"slide"`)が増えました。ナビをダッシュボード / スライド / データで分けたり、
|
|
112
|
+
種類ごとにアイコンを変えたりできます。既存のナビのコードは変更なしで動きます。
|
|
113
|
+
- `vantage routes` がファイルページとスライドを種類つきで表示するようになりました
|
|
114
|
+
(`--json` にも `kind` / `variant` / `unrouted` が出ます)。
|
|
115
|
+
|
|
11
116
|
## v0.5.3
|
|
12
117
|
|
|
13
118
|
Squadbase の Project Storage をブラウザから扱うための Skill を同梱しました。`^0.5.0` を
|
package/docs/ja/cli-reference.md
CHANGED
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
| `vantage preview` | 本番ビルドをローカルで起動(fullstack は既定 `:4173`、spa は Vite プレビュー) |
|
|
14
14
|
| `vantage check` | 静的検査(ルート・境界・禁止ファイル)。エラーがあれば exit 1 |
|
|
15
15
|
| `vantage routes` | ページ + API の URL マップを表示(`--pages` / `--apis` で片側だけ、`--detail` で仕様つき) |
|
|
16
|
-
| `vantage add <kind> <name>` | `page` / `api` / `ui` / `block` / `skill` / `agents` を雛形生成・配置(`--force` で上書き、`skill` は配置済みを走査してスキップ・`--dir` で配置先を指定) |
|
|
16
|
+
| `vantage add <kind> <name>` | `page` / `api` / `ui` / `block` / `skill` / `agents`(`AGENTS.md` + `agents/*.md`)を雛形生成・配置(`--force` で上書き、`skill` は配置済みを走査してスキップ・`--dir` で配置先を指定) |
|
|
17
17
|
| `vantage docs [name]` | 同梱のガイド + コンポーネントリファレンスを表示 |
|
|
18
18
|
| `vantage search <query>` | 同じリファレンスを全文検索(自然言語 or `--regex`) |
|
|
19
19
|
| `vantage doctor` | 環境・インストールの健全性を診断 |
|
|
20
|
-
| `vantage upgrade` | 生成成果物を再生成し、配置済みの `AGENTS.md` を正本から同期 |
|
|
20
|
+
| `vantage upgrade` | 生成成果物を再生成し、配置済みの `AGENTS.md` + `agents/*.md` を正本から同期 |
|
|
21
21
|
|
|
22
22
|
## クイックモード(パスを直接渡す)
|
|
23
23
|
|
|
@@ -351,6 +351,35 @@ vantage dev --strict-port # 5173 が取れなければ起動し
|
|
|
351
351
|
> また fullstack の `preview` は Node サーバーを 1 ポートに bind するだけなので**常に厳格**で、
|
|
352
352
|
> `--no-strict-port` は効きません。
|
|
353
353
|
|
|
354
|
+
## `--host` / `--allowed-hosts` — リバースプロキシの後ろで動かす
|
|
355
|
+
|
|
356
|
+
`vantage dev` と `vantage preview`(SPA)は、既定では `localhost` にしか bind せず、`Host` ヘッダが
|
|
357
|
+
`localhost` か bind したアドレス以外のリクエストを **403 で拒否**します(Vite の DNS リバインディング
|
|
358
|
+
対策)。サンドボックスのプレビュープロキシ・トンネル・コンテナのネットワークなど、**別のホスト名で
|
|
359
|
+
前に立つもの**があるときは、この 2 つを組み合わせて通します。
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
vantage dev --host # すべてのインターフェースで listen
|
|
363
|
+
vantage dev --host 0.0.0.0 # アドレスを明示(--host=:: の形も可)
|
|
364
|
+
vantage dev --allowed-hosts preview.example.com # プロキシが名乗るホスト名を許可(カンマ区切りで複数)
|
|
365
|
+
vantage dev --allowed-hosts true # Host の検査そのものを無効化
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
| フラグ | 意味 |
|
|
369
|
+
|---|---|
|
|
370
|
+
| `--host [addr]` | 値なしなら**すべてのインターフェース**、値があればそのアドレスに bind する(Vite の `server.host`)|
|
|
371
|
+
| `--allowed-hosts <list\|true>` | 受け付ける `Host` ヘッダの一覧(カンマ区切り)。`true` で検査を無効化(Vite の `server.allowedHosts`)|
|
|
372
|
+
|
|
373
|
+
`--allowed-hosts` は環境変数 **`VANTAGE_ALLOWED_HOSTS`** でも渡せます(同じ書式)。サーバーを起動する
|
|
374
|
+
側の仕組みがホスト名を知っている場合はそちらが便利です。フラグと環境変数の両方があれば**フラグが
|
|
375
|
+
勝ちます**。どちらも無ければ Vite の既定のままで、これまでどおり `localhost` だけを受け付けます。
|
|
376
|
+
|
|
377
|
+
> [!NOTE]
|
|
378
|
+
> `--host` の値は次のトークンを取ります。`vantage --host dev` のように直後にコマンドやパスが来る
|
|
379
|
+
> 書き方は値と取り違えるので、その場合は `--host=<addr>` か、末尾に `--host` を置いてください。
|
|
380
|
+
> fullstack の `preview` は Node サーバーがすべてのインターフェースで listen し `Host` を検査しない
|
|
381
|
+
> ので、どちらのフラグも効きません(その旨が表示されます)。
|
|
382
|
+
|
|
354
383
|
## dev のブラウザ出力 — 転送とオーバーレイ
|
|
355
384
|
|
|
356
385
|
`vantage dev` は、ブラウザ側で起きたことを**開発ターミナルへ転送します**。既定で転送するのは
|
|
@@ -411,7 +440,7 @@ VANTAGE_PROFILE=1 vantage dev
|
|
|
411
440
|
|
|
412
441
|
## 静的診断(`check`)
|
|
413
442
|
|
|
414
|
-
`vantage check` が検出する診断は次の
|
|
443
|
+
`vantage check` が検出する診断は次の 13 種類です(エラー 7・警告 6)。
|
|
415
444
|
|
|
416
445
|
| コード | 深刻度 | 意味 |
|
|
417
446
|
|---|---|---|
|
|
@@ -421,11 +450,18 @@ VANTAGE_PROFILE=1 vantage dev
|
|
|
421
450
|
| `MISSING_DEFAULT_EXPORT` | エラー | ページに default export がない |
|
|
422
451
|
| `INVALID_API_EXPORT` | エラー | API が有効な HTTP メソッドをエクスポートしていない |
|
|
423
452
|
| `CLIENT_IMPORTS_SERVER` | エラー | クライアントが `server/` から import している |
|
|
453
|
+
| `INVALID_PAGE_VARIANT` | エラー | `.slide` などのページ種別サフィックスが、ルートにならないファイルに付いている(`_layout.slide.tsx` など) |
|
|
424
454
|
| `SUSPICIOUS_ROUTE_DIR` | 警告 | `pages/`・`app/`・`utils/` など、足場に見えるディレクトリ名が URL に出ている |
|
|
425
455
|
| `PUBLIC_ENV_MISUSE` | 警告 | クライアントが `PUBLIC_` 以外の env を読んでいる |
|
|
456
|
+
| `UNSUPPORTED_PAGE_FILE` | 警告 | ビューアの無い拡張子(`.xls`・`.ods` など)を置いている。ルートにならない |
|
|
457
|
+
| `FILE_PAGE_TOO_LARGE` | 警告 | データファイルページが 25MB を超えている。そのページはエラー表示になる |
|
|
458
|
+
| `HARDCODED_COLOR` | 警告 | `.ts`/`.tsx` に色を直書きしている(`#hex`・`rgb()`/`hsl()`/`oklch()` など・`bg-[#…]`・`bg-blue-500` などの Tailwind パレット)。ファイルごとに `path:行` と置き換え候補のトークンを出す |
|
|
459
|
+
| `DESIGN_MD_TOO_LONG` | 警告 | ルートの `DESIGN.md` が 150 行を超えている。実値は `styles.css` に置き、トークン名で参照する |
|
|
426
460
|
|
|
427
461
|
いずれもユーザーコードを import・実行しません(純粋に静的な検査です)。
|
|
428
462
|
|
|
463
|
+
`HARDCODED_COLOR` は `.css` を見ません(値の置き場は `styles.css`)。地図の塗り分けのように色がデータの意味を持つ場合は、その行か直前の行に `// vantage-ignore-color`(JSX 内は `{/* vantage-ignore-color */}`)を付けると除外されます。ファイルごと除外するには先頭 5 行以内に `vantage-ignore-color-file` を書きます。
|
|
464
|
+
|
|
429
465
|
## 生成物と成果物
|
|
430
466
|
|
|
431
467
|
`dist/` の中身:
|
|
@@ -447,4 +483,5 @@ dist/
|
|
|
447
483
|
ページ・API・UI を足していってください。
|
|
448
484
|
|
|
449
485
|
AI エージェントに手順ごと渡したいときは、同梱の [エージェントと Skills](agent-skills) を
|
|
450
|
-
`vantage add skill` で、アプリの地図となる `AGENTS.md`
|
|
486
|
+
`vantage add skill` で、アプリの地図となる `AGENTS.md` と種類ごとの知識ファイル `agents/*.md` を
|
|
487
|
+
`vantage add agents` で配置してください。
|
|
@@ -43,6 +43,23 @@ export default function MonthlyAnalysis() {
|
|
|
43
43
|
> `export const page = definePage({...})` の**エクスポート名は `page` 固定**です。別名にすると
|
|
44
44
|
> メタデータが読まれません。
|
|
45
45
|
|
|
46
|
+
## データファイルページのタイトル
|
|
47
|
+
|
|
48
|
+
`.csv` / `.xlsx` の[ファイルページ](routing#tsx-以外もページになる)に `definePage` は書けないので、
|
|
49
|
+
タイトルは**ファイル名から導かれます**。
|
|
50
|
+
|
|
51
|
+
| ファイル | `title` |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `june.xlsx` | `June` |
|
|
54
|
+
| `sales_by_region.csv` | `Sales By Region` |
|
|
55
|
+
| `salesByRegion.csv` | `Sales By Region` |
|
|
56
|
+
| `kpi/index.csv` | `KPI`(`index` はディレクトリ名を借りる。全大文字は略語とみなして保つ) |
|
|
57
|
+
| ルート直下の `index.csv` | なし(`definePage` の無いルート `index.tsx` と同じ) |
|
|
58
|
+
|
|
59
|
+
`navLabel` は設定されないので、ナビの表示名も同じ値になります。名前を変えたいときは
|
|
60
|
+
**ファイルをリネーム**するか、`_` を前置してルート化を止め、tsx から `FilePageView` で描いて
|
|
61
|
+
そこに `definePage` を書きます。
|
|
62
|
+
|
|
46
63
|
## Fast Refresh との関係
|
|
47
64
|
|
|
48
65
|
`page` のような非コンポーネントのエクスポートがあっても、Vantage はそれを内部で扱うため
|
package/docs/ja/routing.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ファイルベースルーティング
|
|
2
2
|
|
|
3
|
-
> ファイルを置くだけでルートが生まれる。ページ・レイアウト・動的パラメータ・404/error
|
|
3
|
+
> ファイルを置くだけでルートが生まれる。ページ・レイアウト・動的パラメータ・404/error の規約と、tsx 以外のページ(csv / xlsx / スライド / ドキュメント)。
|
|
4
4
|
|
|
5
5
|
Vantage のルーティングは **ファイルの配置がそのまま URL** になります。ルーターの設定は書きません。
|
|
6
6
|
|
|
@@ -35,11 +35,102 @@ Vantage のルーティングは **ファイルの配置がそのまま URL**
|
|
|
35
35
|
| `_layout.tsx` | そのディレクトリ配下のレイアウト(入れ子可) |
|
|
36
36
|
| `_404.tsx` | not-found の UI(**ルートのみ**) |
|
|
37
37
|
| `_error.tsx` | error の UI(**ルートのみ**) |
|
|
38
|
+
| `monthly-report.slide.tsx` | `/monthly-report`(スライドデッキ) |
|
|
39
|
+
| `june-summary.doc.tsx` | `/june-summary`(ドキュメント) |
|
|
40
|
+
| `sales-export.csv` | `/sales-export`(表として描かれる) |
|
|
41
|
+
| `data/june.xlsx` | `/data/june`(同上) |
|
|
38
42
|
|
|
39
43
|
- `[name]` → 動的パラメータ、`[...name]` → catchall。
|
|
40
44
|
- `index` は自身のディレクトリにマップ(名前は URL から落ちる)。
|
|
41
45
|
- `_` で始まるファイルは予約(`_layout`/`_404`/`_error`)またはプライベート(ルーティングされない)。
|
|
42
46
|
|
|
47
|
+
## tsx 以外もページになる
|
|
48
|
+
|
|
49
|
+
ルートになるのは `.tsx` / `.jsx` だけではありません。**`.csv` と `.xlsx`** はそのまま表として
|
|
50
|
+
読めるページになり、**`<name>.slide.tsx`** はスライドデッキに、**`<name>.doc.tsx`** はドキュメントになります。どれも URL の作り方は
|
|
51
|
+
tsx と同じで、`vantage routes` にも `useRoutes()` のナビにも同格で並びます。
|
|
52
|
+
|
|
53
|
+
### データファイル(`.csv` / `.xlsx`)
|
|
54
|
+
|
|
55
|
+
`src/data/june.xlsx` を置いて `/data/june` を開くと、ダウンロードせずブラウザ上で表として
|
|
56
|
+
読めます。xlsx は複数シートを切り替えられ、元ファイルをダウンロードする導線も付きます。
|
|
57
|
+
|
|
58
|
+
描かれるのは**表計算ソフトそのものの見た目**です —— 列は A / B / C、左に行番号、ファイルの
|
|
59
|
+
1 行目はヘッダとして固定され、罫線はデータの外まで続きます。シートのタブは下端に並びます。
|
|
60
|
+
読み取り専用なので編集もソートもできません(セルを選んで `Cmd/Ctrl+C` でコピーはできます)。
|
|
61
|
+
並べ替えや絞り込みが要るデータは、`server/api/` から配って `DataTable` で描いてください。
|
|
62
|
+
|
|
63
|
+
- **タイトルはファイル名から導かれます**(`june.xlsx` → 「June」、`index.csv` はディレクトリ名)。
|
|
64
|
+
データファイルに `definePage` は書けないので、名前を変えたいときはファイルをリネームします。
|
|
65
|
+
- **パースはブラウザで行われます。** dev・ビルド後・デプロイ後で同じコードが同じバイトを読むので、
|
|
66
|
+
同じ URL が同じものを返します。25MB を超えるファイルはそのページにエラーが出ます
|
|
67
|
+
(`vantage check` が `FILE_PAGE_TOO_LARGE` で先に警告します)。
|
|
68
|
+
- 数式・グラフ・セル書式は再現されません。**値として読めれば十分**という設計です。
|
|
69
|
+
- ページにしたくないファイルは `_` を前置します(`_june.xlsx`)。tsx から自分で描きたいときは
|
|
70
|
+
こうしてルート化を止め、`@squadbase/vantage/table` の `FilePageView` を使います。
|
|
71
|
+
|
|
72
|
+
> [!WARNING]
|
|
73
|
+
> **ビューアの無い拡張子はルートになりません。** `.xls` / `.ods` / `.tsv` などを置いても
|
|
74
|
+
> 404 にすらならず、ナビにも `vantage routes` にも出ません。`vantage check` の
|
|
75
|
+
> `UNSUPPORTED_PAGE_FILE` 警告が唯一の告知点です。
|
|
76
|
+
|
|
77
|
+
### スライド(`.slide.tsx`)
|
|
78
|
+
|
|
79
|
+
`.slide` は**ページ種別サフィックス**で、URL には出ません(`src/june.slide.tsx` → `/june`)。
|
|
80
|
+
中身は `<SlideDeck>` を返す普通の React コンポーネントなので、`definePage` もナビも
|
|
81
|
+
通常のページと同じように効きます。
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
import { definePage } from "@squadbase/vantage";
|
|
85
|
+
import { Slide, SlideDeck } from "@squadbase/vantage/slide";
|
|
86
|
+
|
|
87
|
+
export const page = definePage({ title: "6月度レビュー", navLabel: "6月度" });
|
|
88
|
+
|
|
89
|
+
export default function Deck() {
|
|
90
|
+
return (
|
|
91
|
+
<SlideDeck>
|
|
92
|
+
<Slide>…</Slide>
|
|
93
|
+
<Slide>…</Slide>
|
|
94
|
+
</SlideDeck>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
1920×1080 の固定キャンバスに書き、画面サイズに合わせて縮小されます。キーボードとクリックで
|
|
100
|
+
送れ、左のスライド一覧は `L` で開閉、`F` で全画面、ツールバーから pptx を書き出せます。詳しくは
|
|
101
|
+
[UI とテーマ](ui-and-theming)。
|
|
102
|
+
|
|
103
|
+
> [!WARNING]
|
|
104
|
+
> `.slide` を付けられるのは**ルートになるページモジュールだけ**です。`_layout.slide.tsx` や
|
|
105
|
+
> `deck.slide.ts` は `INVALID_PAGE_VARIANT` エラーになります。また `june.slide.tsx` と
|
|
106
|
+
> `june.tsx`、`sales.csv` と `sales.tsx` はいずれも同じ URL に解決するので `ROUTE_CONFLICT` です。
|
|
107
|
+
|
|
108
|
+
### ドキュメント(`.doc.tsx`)
|
|
109
|
+
|
|
110
|
+
`.doc` も**ページ種別サフィックス**です(`src/june-summary.doc.tsx` → `/june-summary`)。上から下へ
|
|
111
|
+
読む文章のページで、中身は `<Document>` を返す普通の React コンポーネントです。
|
|
112
|
+
|
|
113
|
+
```tsx
|
|
114
|
+
import { definePage } from "@squadbase/vantage";
|
|
115
|
+
import { Document } from "@squadbase/vantage/doc";
|
|
116
|
+
|
|
117
|
+
export const page = definePage({ title: "6月度サマリー" });
|
|
118
|
+
|
|
119
|
+
export default function JuneSummary() {
|
|
120
|
+
return (
|
|
121
|
+
<Document>
|
|
122
|
+
<h1>6月度サマリー</h1>
|
|
123
|
+
<p>6月の売上は目標を 5% 上回りました。</p>
|
|
124
|
+
<table>…</table>
|
|
125
|
+
</Document>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
`<Document>` の中の見出し・段落・リスト・表・引用・コードには、クラスを書かなくてもスタイルが
|
|
131
|
+
当たります。詳しくは [UI とテーマ](ui-and-theming)。`.slide` と同じく、`.doc` を付けられるのは
|
|
132
|
+
ルートになるページモジュールだけです。
|
|
133
|
+
|
|
43
134
|
## ルーティングされないディレクトリ
|
|
44
135
|
|
|
45
136
|
次のディレクトリは(どの階層でも)決して走査されません。ここには自由にコードを置けます。
|
|
@@ -149,6 +240,8 @@ export default function RootLayout() {
|
|
|
149
240
|
| `index` | `boolean` | ディレクトリの index ルートか |
|
|
150
241
|
| `label` | `string` | `navLabel` → `title` → `path` の順で決まる表示名 |
|
|
151
242
|
| `title` / `description` / `navLabel` | `string \| undefined` | [`definePage`](pages-and-metadata) の値 |
|
|
243
|
+
| `kind` | `"module" \| "file"` | 何から描かれるか。`"file"` は `.csv` / `.xlsx` |
|
|
244
|
+
| `variant` | `"slide" \| "doc" \| undefined` | ページ種別サフィックス |
|
|
152
245
|
|
|
153
246
|
`useCurrentRoute()` は今表示中のルートを返します(404 のときは `undefined`)。
|
|
154
247
|
上の例のような「現在地」判定のほか、パンくずやページ見出しに使えます。
|
|
@@ -188,8 +281,10 @@ setSegments((prev) => [...prev, "enterprise"]);
|
|
|
188
281
|
|
|
189
282
|
## HMR とルート再生成
|
|
190
283
|
|
|
191
|
-
`.tsx`
|
|
192
|
-
|
|
284
|
+
`.tsx` ページ・データファイル・`server/api` ファイルを追加・削除すると、開発サーバーがルートを
|
|
285
|
+
再生成してフルリロードします。ページ本体を編集した場合は React Fast Refresh がその場で反映します。
|
|
286
|
+
`.csv` / `.xlsx` は**中身を書き換えたときもフルリロード**します(実行時に固定 URL から取得される
|
|
287
|
+
ので、モジュールグラフは変化しないためです)。
|
|
193
288
|
|
|
194
289
|
## 次に読む
|
|
195
290
|
|
|
@@ -40,6 +40,106 @@ export default function Overview() {
|
|
|
40
40
|
|
|
41
41
|
各コンポーネントの props と使い方は [コンポーネント](components) タブにまとめてあります。
|
|
42
42
|
|
|
43
|
+
## 専用サブパスの UI
|
|
44
|
+
|
|
45
|
+
重い依存を持つ 3 つは、使うアプリだけが取り込むよう別サブパスに隔離してあります。
|
|
46
|
+
|
|
47
|
+
| サブパス | 何が入っているか |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `@squadbase/vantage/markdown` | `MarkdownRenderer`(Shiki の全言語文法を引き込むため隔離) |
|
|
50
|
+
| `@squadbase/vantage/table` | `TableViewer` / `FilePageView`(csv・xlsx のパーサを動的 import) |
|
|
51
|
+
| `@squadbase/vantage/slide` | スライドのプリミティブ(pptx 書き出しを動的 import) |
|
|
52
|
+
|
|
53
|
+
`/components` の barrel に混ぜると、`DataTable` を使うだけのアプリにも import の辺ができて
|
|
54
|
+
バンドラが落とせなくなるためです。
|
|
55
|
+
|
|
56
|
+
### 表ビューア(`/table`)
|
|
57
|
+
|
|
58
|
+
`.csv` / `.xlsx` を `src/` に置けば[自動でページになります](routing)。自分でタイトルを付けたい、
|
|
59
|
+
ダッシュボードの一部として表を埋めたい、といったときだけ直接使います。
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
import { FilePageView, TableViewer, SheetGrid, loadWorkbook } from "@squadbase/vantage/table";
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
| 名前 | 役割 |
|
|
66
|
+
|---|---|
|
|
67
|
+
| `FilePageView` | ファイルページそのもの。URL を渡すと取得・パース・表示まで面倒を見る |
|
|
68
|
+
| `TableViewer` | 1 シートを枠付きで描く(ビューポートの残りを埋め、下端にシートタブと行数) |
|
|
69
|
+
| `SheetGrid` | 表計算ソフトのグリッド本体。高さの決まった親の中に置く |
|
|
70
|
+
| `loadWorkbook` | URL → パース済みのシート配列 |
|
|
71
|
+
|
|
72
|
+
見た目は**表計算ソフトそのもの**です —— 列は A / B / C、左に行番号、ファイルの 1 行目は
|
|
73
|
+
ヘッダとして固定、罫線はデータの外まで続きます。読み取り専用で、ツールバーもソートも
|
|
74
|
+
ページネーションもありません(セルを選んで `Cmd/Ctrl+C` でコピーはできます)。並べ替えや
|
|
75
|
+
絞り込みが要るなら、それは表ビューアではなく [`DataTable`](parts/data-table) の
|
|
76
|
+
仕事です。配色はアプリのテーマトークンで塗られるので、ダークモードにも追従します。
|
|
77
|
+
|
|
78
|
+
### スライド(`/slide`)
|
|
79
|
+
|
|
80
|
+
`<name>.slide.tsx` を[置くとスライドデッキのページになります](routing)。
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
import {
|
|
84
|
+
MorphElement, Slide, SlideDeck, Step, Steps, useSlideNumber,
|
|
85
|
+
} from "@squadbase/vantage/slide";
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
| 名前 | 役割 |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `SlideDeck` | デッキの器。`theme` でトークンを上書き、`embedded` でページ内に埋め込む、`rail={false}` で一覧を閉じた状態から始める |
|
|
91
|
+
| `Slide` | 1 枚。`transition` で enter / exit を宣言する |
|
|
92
|
+
| `Steps` / `Step` | 段階表示。`→` で 1 つずつ開く |
|
|
93
|
+
| `MorphElement` | 2 枚にまたがる同一要素を連続して動かす(同じ `id` を両方に付ける) |
|
|
94
|
+
| `useSlideNumber` | `{ current, total }`。ページ番号のフッター用 |
|
|
95
|
+
| `useIsActiveSlide` | 聴衆が見ているインスタンスかどうか。入場アニメーションの門番に使う |
|
|
96
|
+
|
|
97
|
+
読み手は見え方を 3 通りに切り替えられます — **一覧 + スライド**(既定。左にサムネイル列)、
|
|
98
|
+
**スライドのみ**(`L` で一覧を閉じ、表示領域いっぱいに描く)、**全画面**(`F`。一覧は退く)。
|
|
99
|
+
どれもコードでは決めず、開閉の状態は `?rail=` に入るのでその状態のリンクを共有できます。
|
|
100
|
+
閉じた状態から始めたいデッキだけ `<SlideDeck rail={false}>` と書きます(`embedded` は既定で閉)。
|
|
101
|
+
サムネイル列はデッキ自身の `--slide-bg` / `--slide-fg` の混色だけで塗られるので、色味を持たず
|
|
102
|
+
デッキのテーマにそのまま馴染みます。
|
|
103
|
+
|
|
104
|
+
スライドは **1920×1080 の固定キャンバス**に絶対 px で書き、画面サイズに合わせて縮小されます。
|
|
105
|
+
配色と書体は `--slide-*` トークン(下の「テーマトークン」と同じ仕組みで、既定はアプリのトークンへの
|
|
106
|
+
別名なので**ダークモードにも自動で追従します**)。
|
|
107
|
+
|
|
108
|
+
書き方の作法 — キャンバスの縦方向の予算、タイプスケール、トランジションの設計原則、モーフの規則、
|
|
109
|
+
pptx 書き出しが壊れる条件 — は同梱の **`vantage-slide` スキル**にあります
|
|
110
|
+
([エージェント Skill](agent-skills))。
|
|
111
|
+
|
|
112
|
+
> [!NOTE]
|
|
113
|
+
> スライドの中で `@squadbase/vantage/ui` のプリミティブを使わないでください。UI キットは rem と
|
|
114
|
+
> Tailwind でダッシュボード向けに組まれているので、1920×1080 を縮小投影すると `text-sm` のボタンは
|
|
115
|
+
> 実効 8px 程度になって読めません。
|
|
116
|
+
|
|
117
|
+
## ドキュメント(`/doc`)
|
|
118
|
+
|
|
119
|
+
`<name>.doc.tsx` を[置くとドキュメントのページになります](routing)。`Document` で包むと、中に
|
|
120
|
+
書いた素の HTML 要素(`h1`〜`h4`・`p`・`ul`/`ol`・`table`・`blockquote`・`pre`/`code`・`hr`・`a`・
|
|
121
|
+
`figure`/`figcaption`・`img`)に見出しの大きさ・余白・罫線が当たります。チャートは
|
|
122
|
+
[`EChart`](parts/echart) をそのまま文中に置けます。
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
import { Document } from "@squadbase/vantage/doc";
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
配色・書体・本文の幅は `--doc-*` トークンで、既定はアプリのトークンへの別名なので
|
|
129
|
+
**ダークモードにも自動で追従します**。
|
|
130
|
+
|
|
131
|
+
| トークン | 既定 | 何に効くか |
|
|
132
|
+
|---|---|---|
|
|
133
|
+
| `--doc-fg` / `--doc-muted` | `--foreground` / `--muted-foreground` | 本文 / 引用・キャプション |
|
|
134
|
+
| `--doc-accent` | `--primary` | リンク |
|
|
135
|
+
| `--doc-border` / `--doc-subtle` | `--border` / `--muted` | 罫線 / コード・表の見出し行の背景 |
|
|
136
|
+
| `--doc-font-body` / `--doc-font-heading` / `--doc-font-mono` | アプリの書体 | 本文 / 見出し / コード |
|
|
137
|
+
| `--doc-size-body` / `--doc-line-height` / `--doc-max-width` | `1rem` / `1.8` / `48rem` | 文字サイズ / 行間 / 本文の幅 |
|
|
138
|
+
|
|
139
|
+
アプリ全体では `styles.css` の `:root` で、1 つのドキュメントだけなら
|
|
140
|
+
`<Document theme={{ accent: "#2563eb" }}>` で上書きします。要素に `className` で Tailwind
|
|
141
|
+
ユーティリティを付けると、既定のスタイルより優先されます。
|
|
142
|
+
|
|
43
143
|
## Tailwind はそのまま使える
|
|
44
144
|
|
|
45
145
|
`className` に Tailwind ユーティリティを書くだけで効きます。`tailwind.config` も `postcss.config`
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@squadbase/vantage",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1-dev.2d25e94",
|
|
4
4
|
"description": "Data dashboard framework for Squadbase Editor. Vite-powered, config-free, one-file first.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Squadbase",
|
|
8
|
-
"homepage": "https://github.com/squadbase/
|
|
8
|
+
"homepage": "https://github.com/squadbase/squadbase-monorepo/tree/main/packages/vantage#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "git+https://github.com/squadbase/
|
|
11
|
+
"url": "git+https://github.com/squadbase/squadbase-monorepo.git",
|
|
12
12
|
"directory": "packages/vantage"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
|
-
"url": "https://github.com/squadbase/
|
|
15
|
+
"url": "https://github.com/squadbase/squadbase-monorepo/issues"
|
|
16
16
|
},
|
|
17
17
|
"keywords": [
|
|
18
18
|
"vantage",
|
|
@@ -25,10 +25,11 @@
|
|
|
25
25
|
"tanstack"
|
|
26
26
|
],
|
|
27
27
|
"engines": {
|
|
28
|
-
"node": ">=
|
|
28
|
+
"node": ">=22"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
|
31
|
-
"access": "public"
|
|
31
|
+
"access": "public",
|
|
32
|
+
"registry": "https://registry.npmjs.org"
|
|
32
33
|
},
|
|
33
34
|
"bin": {
|
|
34
35
|
"vantage": "./dist/cli.js"
|
|
@@ -58,6 +59,18 @@
|
|
|
58
59
|
"types": "./dist/markdown/index.d.ts",
|
|
59
60
|
"default": "./dist/markdown/index.js"
|
|
60
61
|
},
|
|
62
|
+
"./table": {
|
|
63
|
+
"types": "./dist/table/index.d.ts",
|
|
64
|
+
"default": "./dist/table/index.js"
|
|
65
|
+
},
|
|
66
|
+
"./slide": {
|
|
67
|
+
"types": "./dist/slide/index.d.ts",
|
|
68
|
+
"default": "./dist/slide/index.js"
|
|
69
|
+
},
|
|
70
|
+
"./doc": {
|
|
71
|
+
"types": "./dist/doc/index.d.ts",
|
|
72
|
+
"default": "./dist/doc/index.js"
|
|
73
|
+
},
|
|
61
74
|
"./server": {
|
|
62
75
|
"types": "./dist/server/index.d.ts",
|
|
63
76
|
"default": "./dist/server/index.js"
|
|
@@ -83,7 +96,8 @@
|
|
|
83
96
|
"theme.css",
|
|
84
97
|
"registry",
|
|
85
98
|
"skills",
|
|
86
|
-
"templates"
|
|
99
|
+
"templates",
|
|
100
|
+
"NOTICE"
|
|
87
101
|
],
|
|
88
102
|
"scripts": {
|
|
89
103
|
"build": "node scripts/build-docs.mjs && node scripts/build.mjs",
|
|
@@ -93,7 +107,12 @@
|
|
|
93
107
|
"dev": "tsup --watch --no-dts",
|
|
94
108
|
"dev:types": "tsc --noEmit --watch",
|
|
95
109
|
"typecheck": "tsc --noEmit",
|
|
96
|
-
"
|
|
110
|
+
"type-check": "tsc --noEmit",
|
|
111
|
+
"prepublishOnly": "node scripts/build-docs.mjs && node scripts/build.mjs",
|
|
112
|
+
"release": "npm publish --@squadbase:registry=https://registry.npmjs.org",
|
|
113
|
+
"site:install": "npm --prefix site install",
|
|
114
|
+
"site:dev": "npm --prefix site run dev",
|
|
115
|
+
"site:build": "npm --prefix site run build"
|
|
97
116
|
},
|
|
98
117
|
"dependencies": {
|
|
99
118
|
"@base-ui/react": "^1.6.0",
|
|
@@ -110,10 +129,14 @@
|
|
|
110
129
|
"date-fns": "^4.1.0",
|
|
111
130
|
"echarts": "^6.0.0",
|
|
112
131
|
"esbuild": "^0.28.1",
|
|
113
|
-
"
|
|
132
|
+
"fflate": "^0.8.3",
|
|
133
|
+
"hono": "^4.13.5",
|
|
134
|
+
"html-to-image": "^1.11.13",
|
|
114
135
|
"lucide-react": "^0.468.0",
|
|
136
|
+
"papaparse": "^5.7.0",
|
|
115
137
|
"picocolors": "^1.1.1",
|
|
116
138
|
"react-day-picker": "^10.0.1",
|
|
139
|
+
"read-excel-file": "^9.3.10",
|
|
117
140
|
"streamdown": "^2.5.0",
|
|
118
141
|
"tailwind-merge": "^3.0.0",
|
|
119
142
|
"tailwindcss": "^4.3.2",
|
|
@@ -126,6 +149,7 @@
|
|
|
126
149
|
},
|
|
127
150
|
"devDependencies": {
|
|
128
151
|
"@types/node": "^22.10.0",
|
|
152
|
+
"@types/papaparse": "^5.5.2",
|
|
129
153
|
"@types/react": "^19.2.0",
|
|
130
154
|
"@types/react-dom": "^19.2.0",
|
|
131
155
|
"react": "^19.2.7",
|
|
@@ -75,6 +75,10 @@ vantage add skill # 配置済みの skill(このファイルの仲間)と、そ
|
|
|
75
75
|
- 共通の枠(ヘッダ・サイドバー)は `_layout.tsx`、Not Found と例外は `_404.tsx` / `_error.tsx`。
|
|
76
76
|
- 一覧 → 詳細を作るなら、**動的パラメータの「3 つの綴り」を先に決めてから**両方のファイルを
|
|
77
77
|
書く。後から変えると静かにマッチしなくなる。
|
|
78
|
+
- **ページになるのは tsx だけではない。** `.csv` / `.xlsx` を `src/` に置けば表として読めるページに
|
|
79
|
+
なり、`<name>.slide.tsx` はスライドデッキになる(どちらもナビに同格で並ぶ)。ダッシュボード・
|
|
80
|
+
スライド・データを 1 つのアプリに並べたいときは、まずこの 2 つで足りないか考える —— 表を出すために
|
|
81
|
+
ページを書く必要は無い。スライドの書き方は `vantage-slide` スキル。
|
|
78
82
|
|
|
79
83
|
## Step 3 — データを繋ぐ
|
|
80
84
|
|