@squadbase/vantage-template 0.1.0-dev.c40b771 → 0.1.0-dev2.12326b6

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.
@@ -0,0 +1,32 @@
1
+ # csv ページ
2
+
3
+ フレームワーク所有の知識ファイルで、`vantage upgrade` で再同期されます。`.csv` を
4
+ ページとして置くときに読んでください。不変条件・ディレクトリ構造は `AGENTS.md` を
5
+ 先に読んでいる想定です。
6
+
7
+ ## `.csv` を置くだけでページになる
8
+
9
+ **`.csv` を `src/` に置くだけで、他のページと同格のルートになります。** URL の作り方は
10
+ `.tsx` と同じ(`src/sales-export.csv` → `/sales-export`、`index.csv` はそのディレクトリ)で、
11
+ ナビにも `vantage routes` にも並びます。開くとフレームワーク同梱の表ビューアが描き、
12
+ 元ファイルをダウンロードできます。ビューアは**表計算ソフトの見た目**です —— 列は A / B / C、
13
+ 左に行番号、ファイルの 1 行目はヘッダとして固定。読み取り専用で、編集もソートもできません
14
+ (セルを選んで `Cmd/Ctrl+C` でコピーは可)。
15
+
16
+ - **タイトルはファイル名から導かれる**(`sales-export.csv` → 「Sales Export」)。データファイルに
17
+ `definePage` は書けません。名前を変えたいときはファイルをリネームします
18
+ - **ページにしたくないファイルは `_` を前置する**(`_sales-export.csv`)。`components/`・`hooks/`・
19
+ `lib/` に置いたものも同じくページになりません
20
+ - **既定はファイルをそのまま置く(tsx を書かない)。** 自分でタイトルや説明を付けたいときだけ、`_` を
21
+ 前置してルート化を止め、tsx から描きます:
22
+ ```tsx
23
+ import { FilePageView } from "@squadbase/vantage/table"
24
+ import src from "./_sales-export.csv?url&no-inline"
25
+ export const page = definePage({ title: "売上エクスポート" })
26
+ export default () => <FilePageView src={src} kind="csv" fileName="sales-export.csv" />
27
+ ```
28
+ - 数式・グラフ・セル書式といった概念は csv には無いので、値がそのまま読めます。ブラウザで
29
+ パースするので 25MB を超えるファイルはそのページにエラーが出ます —— 大きいデータは
30
+ `server/api/` から配って `DataTable` で描いてください
31
+ - **ビューアの無い拡張子(`.tsv` など)はルートになりません。** `vantage check` の
32
+ `UNSUPPORTED_PAGE_FILE` 警告が知らせます
@@ -0,0 +1,73 @@
1
+ # ドキュメント(.doc.tsx)
2
+
3
+ フレームワーク所有の知識ファイルで、`vantage upgrade` で再同期されます。`.doc.tsx` で
4
+ ドキュメントを書くときに読んでください。不変条件・ディレクトリ構造は `AGENTS.md` を
5
+ 先に読んでいる想定です。
6
+
7
+ ## ドキュメントは `.doc.tsx` で書く
8
+
9
+ `src/june-summary.doc.tsx` → `/june-summary`。上から下へ読む文章のページで、表やチャートを
10
+ 文中に置けます。中身は `<Document>` を返す普通の React コンポーネントで、`definePage` もナビも
11
+ 通常のページと同じように効きます。
12
+
13
+ ```tsx
14
+ import { definePage } from "@squadbase/vantage"
15
+ import { EChart } from "@squadbase/vantage/components"
16
+ import { Document } from "@squadbase/vantage/doc"
17
+
18
+ export const page = definePage({ title: "6月度サマリー", navLabel: "6月度サマリー" })
19
+ export default function JuneSummary() {
20
+ return (
21
+ <Document>
22
+ <h1>6月度サマリー</h1>
23
+ <p>6月の売上は <strong>5,250 万円</strong>で、目標を 5% 上回りました。</p>
24
+ <h2>週次の売上</h2>
25
+ <figure>
26
+ <EChart option={option} height={280} ariaLabel="6月の週次売上" />
27
+ <figcaption>第4週はキャンペーン初週</figcaption>
28
+ </figure>
29
+ <table>…</table>
30
+ </Document>
31
+ )
32
+ }
33
+ ```
34
+
35
+ ## 書き方
36
+
37
+ - **素の HTML 要素で書く。** `<Document>` の中の `h1`〜`h4`・`p`・`ul`/`ol`/`li`・`table`・
38
+ `blockquote`・`pre`/`code`・`hr`・`a`・`figure`/`figcaption`・`img` には、見出しの大きさ・余白・
39
+ 罫線などが最初から当たっています。クラスは要りません。
40
+ - **Tailwind のユーティリティは、その要素だけ見た目を変えたいときに使う。** 要素の既定の
41
+ スタイルはユーティリティより弱いので、`className` を付ければそちらが勝ちます。ドキュメント全体の
42
+ 見た目を変えたいときはユーティリティを並べず、下の `--doc-*` を変えます。
43
+ - **数値はコードに直接書く。** ドキュメントは書いた時点の内容を残すページです。
44
+ `useApiQuery` などで読み込むと、開くたびに値が変わります。
45
+ - **チャートは `EChart`(`@squadbase/vantage/components`)を文中に置く。** `figure` で囲めば
46
+ `figcaption` がキャプションになります。
47
+ - **ページ全体を包むのは `<Document>` だけ。** `PageShell` などのダッシュボード用の枠で包まない
48
+ (本文の幅と余白は `<Document>` が決めます)。
49
+
50
+ ## 見た目を変える
51
+
52
+ 配色・書体・本文の幅は `--doc-*` の CSS 変数です。既定値はアプリのトークンへの別名なので、
53
+ ダークモードにもそのまま追従します。
54
+
55
+ | 変数 | 既定値 | 何に効くか |
56
+ | --- | --- | --- |
57
+ | `--doc-fg` | `var(--foreground)` | 本文の文字色 |
58
+ | `--doc-muted` | `var(--muted-foreground)` | 引用・キャプション |
59
+ | `--doc-accent` | `var(--primary)` | リンク |
60
+ | `--doc-border` | `var(--border)` | 表・`h2` の下線・引用・`hr` |
61
+ | `--doc-subtle` | `var(--muted)` | コード・表の見出し行の背景 |
62
+ | `--doc-font-body` / `--doc-font-heading` / `--doc-font-mono` | アプリの書体 | 本文 / 見出し / コード |
63
+ | `--doc-size-body` | `1rem` | 本文の文字サイズ(見出しはこれに比例) |
64
+ | `--doc-line-height` | `1.8` | 本文の行間 |
65
+ | `--doc-max-width` | `48rem` | 本文の幅 |
66
+
67
+ アプリのすべてのドキュメントに効かせるなら `styles.css` の `:root` で定義し直します。1 つの
68
+ ドキュメントだけなら `<Document theme={{ accent: "#2563eb", maxWidth: "56rem" }}>` のように
69
+ `theme` で渡します(`theme` のキーは変数名から `--doc-` を外してキャメルケースにしたもの)。
70
+
71
+ `.doc` を付けられるのはルートになるページモジュールだけで、`_layout.doc.tsx` などは
72
+ `INVALID_PAGE_VARIANT` エラーになります。`june.doc.tsx` と `june.tsx` は同じ URL に解決するので
73
+ `ROUTE_CONFLICT` です。
@@ -0,0 +1,187 @@
1
+ # ダッシュボード / 通常ページ(.tsx)
2
+
3
+ フレームワーク所有の知識ファイルで、`vantage upgrade` で再同期されます。`.tsx` の通常ページ
4
+ (ダッシュボード)を書くときに読んでください。前提となる不変条件・ディレクトリ構造は
5
+ `AGENTS.md` を先に読んでいる想定です。
6
+
7
+ プロジェクトルートに `DESIGN.md` があれば、書き始める前に読んで配色・書体・レイアウトの規則に従う。
8
+
9
+ ## 最小アプリ(2 ファイル)
10
+
11
+ `package.json` と `index.tsx` の 2 ファイルだけで動く。
12
+
13
+ `package.json`:
14
+
15
+ ```json
16
+ {
17
+ "name": "my-dashboard",
18
+ "private": true,
19
+ "type": "module",
20
+ "scripts": {
21
+ "dev": "vantage dev",
22
+ "build": "vantage build",
23
+ "preview": "vantage preview",
24
+ "check": "vantage check",
25
+ "routes": "vantage routes"
26
+ },
27
+ "dependencies": {
28
+ "@squadbase/vantage": "^0.5.0",
29
+ "react": "^19.2.7",
30
+ "react-dom": "^19.2.7"
31
+ }
32
+ }
33
+ ```
34
+
35
+ `index.tsx`(ルートのデフォルトエクスポートが `/` ページになる):
36
+
37
+ ```tsx
38
+ export default function Dashboard() {
39
+ return (
40
+ <main className="p-6">
41
+ <h1 className="text-2xl font-semibold">Dashboard</h1>
42
+ </main>
43
+ )
44
+ }
45
+ ```
46
+
47
+ ```bash
48
+ pnpm install
49
+ pnpm dev # → http://localhost:5173(HMR)
50
+ pnpm check # 静的診断(エラーがあれば exit 1)
51
+ pnpm routes # ページ/API の URL マップ
52
+ ```
53
+
54
+ `server/` ディレクトリが無いので、この構成は **SPA モード**。ページを直下に置く形だが、
55
+ `src/` を作ってその中に集めてもよい(テンプレートから始めた場合は最初から `src/` がある)。
56
+ どちらか一方に寄せること(→ `AGENTS.md` の「ディレクトリ構造」)。
57
+
58
+ ## ルーティング規約(ファイル名 → ルート)
59
+
60
+ ページルート(`src/` があればその中、無ければプロジェクトルート)からの相対パスが、そのまま
61
+ URL になる。各ページは**デフォルトエクスポートの React コンポーネントが必須**(無いと
62
+ `MISSING_DEFAULT_EXPORT`)。以下の「ファイル」列はページルートからの相対パス。
63
+
64
+ | ファイル | ルート |
65
+ | --- | --- |
66
+ | `index.tsx` | `/` |
67
+ | `monthly-analysis.tsx` | `/monthly-analysis` |
68
+ | `sales/index.tsx` | `/sales` |
69
+ | `sales/[customerId].tsx` | `/sales/:customerId`(動的パラメータ) |
70
+ | `_layout.tsx` | そのディレクトリ配下を包むネストレイアウト(`Outlet` で子を描く) |
71
+ | `_404.tsx` | Not Found ページ |
72
+ | `_error.tsx` | ルートが throw したときのエラーページ |
73
+ | `monthly-report.slide.tsx` | `/monthly-report`(スライドデッキ。詳しくは `agents/slide.md`) |
74
+ | `sales-export.csv` | `/sales-export`(詳しくは `agents/csv.md`) |
75
+ | `data/june.xlsx` | `/data/june`(詳しくは `agents/xlsx.md`) |
76
+
77
+ `components/`・`hooks/`・`lib/`・`server/`・`public/` はどの階層でもルート走査の対象外
78
+ (ページにならない)。それ以外のディレクトリ名は URL のセグメントになる(→ `AGENTS.md` の
79
+ 「ディレクトリ構造」)。
80
+
81
+ ```tsx
82
+ import { definePage } from "@squadbase/vantage"
83
+
84
+ // title は document.title、navLabel は useRoutes() で組むナビの表示名(既定は title)
85
+ export const page = definePage({ title: "Monthly Analysis · Acme", navLabel: "Monthly" })
86
+
87
+ export default function MonthlyAnalysis() {
88
+ return <main className="p-6">…</main>
89
+ }
90
+ ```
91
+
92
+ ### ナビはルート一覧から組む
93
+
94
+ `useRoutes()` がページルート一覧(スキャン順)を返すので、リンク配列を手で持たない。
95
+ `useCurrentRoute()` は現在のルート(404 なら `undefined`)。
96
+
97
+ ```tsx
98
+ import { Link, useCurrentRoute, useRoutes } from "@squadbase/vantage/router"
99
+
100
+ // 動的ルートは URL が定まらないので外す。label は navLabel → title → path の順
101
+ const routes = useRoutes().filter((r) => !r.dynamic)
102
+ const current = useCurrentRoute()
103
+
104
+ routes.map((r) => (
105
+ <Link key={r.path} to={r.to} activeClassName="font-semibold">
106
+ {r.label}
107
+ </Link>
108
+ ))
109
+ ```
110
+
111
+ `RouteInfo`: `path`(`/sales/:id`)・`to`(`/sales/$id`)・`params`・`dynamic`・`index`・`label`・
112
+ `title`・`description`・`navLabel`・`kind`(`"module"` | `"file"`)・`variant`(`"slide"`)。
113
+ 後ろの 2 つで、ナビをダッシュボード / スライド / データに分けたりアイコンを変えたりできます。
114
+
115
+ ### フィルタ状態は URL に置く
116
+
117
+ リロードで消えず、URL をそのまま共有できる。`useState` と同じ形。
118
+
119
+ ```tsx
120
+ import { useSearchParam, useSearchState } from "@squadbase/vantage/router"
121
+
122
+ const [region, setRegion] = useSearchParam("region", "all") // 常に string
123
+ const [segments, setSegments] = useSearchState<string[]>("segments", []) // JSON になる値
124
+ ```
125
+
126
+ デフォルト値(または `null`)を書くとキーは URL から消える。履歴は既定で `replace`
127
+ (`{ replace: false }` で push)。
128
+
129
+ ### 動的パラメータの「3 つの綴り」を同期させる
130
+
131
+ 崩すと静かにマッチしなくなる不変条件:
132
+
133
+ - ファイル名 `sales/[customerId].tsx`
134
+ - 表示ルート `/sales/:customerId`
135
+ - リンクトークン `to="/sales/$customerId"` + `params={{ customerId }}`
136
+
137
+ ```tsx
138
+ import { Link, useParams } from "@squadbase/vantage/router"
139
+
140
+ <Link to="/sales/$customerId" params={{ customerId: row.id }}>{row.name}</Link>
141
+
142
+ // 詳細ページ側で取り出す
143
+ const { customerId } = useParams()
144
+ ```
145
+
146
+ ## データ取得(server を持たない fetch)
147
+
148
+ 外部 API を叩くだけなら `server/` は不要。`@squadbase/vantage/query` の `useQuery` を使う:
149
+
150
+ ```tsx
151
+ import { useQuery } from "@squadbase/vantage/query"
152
+ import { Loading, ErrorState } from "@squadbase/vantage/ui"
153
+
154
+ const q = useQuery({ queryKey: ["stats"], queryFn: () => fetch("/…").then((r) => r.json()) })
155
+ if (q.isPending) return <Loading />
156
+ if (q.isError) return <ErrorState message={(q.error as Error).message} />
157
+ ```
158
+
159
+ `QueryClient` は Vantage が 1 つだけ管理する(staleTime 30s・retry 1・
160
+ refetchOnWindowFocus false・networkMode "always")。挙動を変えたいときはクエリ側のオプションで
161
+ 上書きする。
162
+ 自分の `server/api` を叩くときは `useQuery` ではなく `useApiQuery`(→ `agents/api.md`)。
163
+
164
+ ## 組み込み UI / コンポーネントの入口
165
+
166
+ - **プリミティブ**は `@squadbase/vantage/ui` から import する(`Button`・`Loading`・
167
+ `ErrorState`・`Empty`・`Select`・`Checkbox` ほか)。
168
+ - **複合パーツ**は `@squadbase/vantage/components` から(`PageShell`・`DashboardCardPreset`・
169
+ `DataTablePreset`・`EChart` ほか)。
170
+ - **どの名前が import 可能か / props の詳細は `vantage docs` で引く。** ガイドとコンポーネント
171
+ リファレンスはパッケージに同梱されていて、オフラインでも読める(→ `AGENTS.md` の
172
+ 「ドキュメントを引く」)。**名前が分からないとき**はやりたいことで `vantage search` する
173
+ (→ 同節)。
174
+ - **UI は import して使うのが既定。取り出す(eject)必要はない。** `vantage add ui|block` は
175
+ ソースを手元にコピーして**改造したいとき専用**のコマンドで、取り出せるのは
176
+ `ui: data-table` と `block: sales-overview` の 2 つだけ。それ以外の名前は import 専用で
177
+ `add` の対象ではない(未知名で実行すると候補が一覧表示される)。
178
+
179
+ ### ダークモードは opt-in
180
+
181
+ ダークのトークンが効くのは、祖先に `.dark` か `[data-theme="dark"]` が付いているときだけ。
182
+ **OS / ブラウザの設定(`prefers-color-scheme`)は見ない。** `dark:` ユーティリティも同じ
183
+ スイッチに繋いであるので(`theme.css` の `@custom-variant dark`)、自分でクラスを付けない限り
184
+ アプリは常にライトで描かれる ― `dark:` を書いてもそこだけダークになることはない。
185
+
186
+ 明暗を切り替えたいときは、レイアウトのルート要素などに `.dark` / `data-theme="dark"` を
187
+ 自分で付ける。
@@ -0,0 +1,41 @@
1
+ # スライド(.slide.tsx)
2
+
3
+ フレームワーク所有の知識ファイルで、`vantage upgrade` で再同期されます。`.slide.tsx` で
4
+ スライドデッキを書くときに読んでください。不変条件・ディレクトリ構造は `AGENTS.md` を
5
+ 先に読んでいる想定です。
6
+
7
+ プロジェクトルートに `DESIGN.md` があれば、書き始める前に読んで「スライド」の節と配色・書体の規則に従う。
8
+
9
+ ## スライドは `.slide.tsx` で書く
10
+
11
+ `src/monthly-report.slide.tsx` → `/monthly-report`。中身は `<SlideDeck>` を返す普通の React
12
+ コンポーネントで、`definePage` もナビも通常のページと同じように効きます。
13
+
14
+ ```tsx
15
+ import { Slide, SlideDeck } from "@squadbase/vantage/slide"
16
+
17
+ export const page = definePage({ title: "6月度レビュー", navLabel: "6月度" })
18
+ export default function Deck() {
19
+ return (
20
+ <SlideDeck>
21
+ <Slide>…</Slide>
22
+ <Slide>…</Slide>
23
+ </SlideDeck>
24
+ )
25
+ }
26
+ ```
27
+
28
+ **`<Slide>` は `<SlideDeck>` の直接の子に書く。** `SlideDeck` は直下の `<Slide>` 要素だけを数えるので、
29
+ `<Slide>` を自作コンポーネント(`<Slide1 />` など)や Fragment で包むと 1 枚も数えられず「1 / 0」に
30
+ なります(`{items.map((x) => <Slide key={x.id}>…</Slide>)}` のような配列は可)。共通の部品は
31
+ `<Slide>` の**中**に置くコンポーネントとして切り出します(`<Slide><CoverPage /></Slide>`)。
32
+
33
+ 1920×1080 の固定キャンバスに絶対 px で書き、画面サイズに合わせて縮小されます。キー / クリックで
34
+ 送れ、左のスライド一覧(サムネイル列)は `L` で開閉、`F` で全画面、ツールバーから pptx を
35
+ 書き出せます。**書き方の作法は同梱 Skill の
36
+ `vantage-slide`** にあります(キャンバスの縦方向の予算、段階表示、トランジション、モーフ、
37
+ pptx が壊れる条件)。
38
+
39
+ `.slide` を付けられるのはルートになるページモジュールだけで、`_layout.slide.tsx` などは
40
+ `INVALID_PAGE_VARIANT` エラーになります。`june.slide.tsx` と `june.tsx` は同じ URL に解決するので
41
+ `ROUTE_CONFLICT` です。
@@ -0,0 +1,33 @@
1
+ # xlsx ページ
2
+
3
+ フレームワーク所有の知識ファイルで、`vantage upgrade` で再同期されます。`.xlsx` を
4
+ ページとして置くときに読んでください。不変条件・ディレクトリ構造は `AGENTS.md` を
5
+ 先に読んでいる想定です。
6
+
7
+ ## `.xlsx` を置くだけでページになる
8
+
9
+ **`.xlsx` を `src/` に置くだけで、他のページと同格のルートになります。** URL の作り方は
10
+ `.tsx` と同じ(`src/data/june.xlsx` → `/data/june`、`index.xlsx` はそのディレクトリ)で、
11
+ ナビにも `vantage routes` にも並びます。開くとフレームワーク同梱の表ビューアが描き、複数シートを
12
+ 切り替えられ、元ファイルをダウンロードできます。ビューアは**表計算ソフトの見た目**です ——
13
+ 列は A / B / C、左に行番号、ファイルの 1 行目はヘッダとして固定、シートのタブは下端。
14
+ 読み取り専用で、編集もソートもできません(セルを選んで `Cmd/Ctrl+C` でコピーは可)。
15
+
16
+ - **タイトルはファイル名から導かれる**(`june.xlsx` → 「June」)。データファイルに `definePage` は
17
+ 書けません。名前を変えたいときはファイルをリネームします
18
+ - **ページにしたくないファイルは `_` を前置する**(`_june.xlsx`)。`components/`・`hooks/`・`lib/` に
19
+ 置いたものも同じくページになりません
20
+ - **既定はファイルをそのまま置く(tsx を書かない)。** 自分でタイトルや説明を付けたいときだけ、`_` を
21
+ 前置してルート化を止め、tsx から描きます:
22
+ ```tsx
23
+ import { FilePageView } from "@squadbase/vantage/table"
24
+ import src from "./_june.xlsx?url&no-inline"
25
+ export const page = definePage({ title: "6月度 売上レポート" })
26
+ export default () => <FilePageView src={src} kind="xlsx" fileName="june.xlsx" />
27
+ ```
28
+ - **複数シートに対応**しています。シートのタブは下端に並び、切り替えて閲覧できます。
29
+ - 数式・グラフ・セル書式は再現されません(値として読めれば十分、という設計)。ブラウザでパースするので
30
+ 25MB を超えるファイルはそのページにエラーが出ます —— 大きいデータは `server/api/` から配って
31
+ `DataTable` で描いてください
32
+ - **ビューアの無い拡張子(`.xls`・`.ods` など)はルートになりません。** `vantage check` の
33
+ `UNSUPPORTED_PAGE_FILE` 警告が知らせます
File without changes
@@ -7,8 +7,8 @@
7
7
  "name": "vibe-app",
8
8
  "dependencies": {
9
9
  "@squadbase/react": "^0.1.0",
10
- "@squadbase/vantage": "^0.5.3",
11
- "@squadbase/vantage-sdk": "^0.1.0",
10
+ "@squadbase/vantage": "0.6.1-dev2.04fa7f3",
11
+ "@squadbase/vantage-sdk": "0.1.1-dev2.ebd5413",
12
12
  "date-fns": "^4.1.0",
13
13
  "lucide-react": "^0.468.0",
14
14
  "react": "^19.2.7",
@@ -1396,9 +1396,9 @@
1396
1396
  }
1397
1397
  },
1398
1398
  "node_modules/@squadbase/vantage": {
1399
- "version": "0.5.3",
1400
- "resolved": "https://registry.npmjs.org/@squadbase/vantage/-/vantage-0.5.3.tgz",
1401
- "integrity": "sha512-wu/qY1S1x1+zSlYU53BaLnCQdWSE6lq7Q5plBqJkYF4CR1/Y9zfb4govMmVF6w1s1oDsgWolBUgkDPh17vkHrw==",
1399
+ "version": "0.6.1-dev2.04fa7f3",
1400
+ "resolved": "https://registry.npmjs.org/@squadbase/vantage/-/vantage-0.6.1-dev2.04fa7f3.tgz",
1401
+ "integrity": "sha512-Jxa7bhTCFizsvbCxmO/6dURBYqZIRZADNgiSscs2hLaDPqNlxubx18HcOH6GVQQaWwSG4k8OA4sS/fg/X/3XPg==",
1402
1402
  "license": "MIT",
1403
1403
  "dependencies": {
1404
1404
  "@base-ui/react": "^1.6.0",
@@ -1415,10 +1415,14 @@
1415
1415
  "date-fns": "^4.1.0",
1416
1416
  "echarts": "^6.0.0",
1417
1417
  "esbuild": "^0.28.1",
1418
- "hono": "^4.12.30",
1418
+ "fflate": "^0.8.3",
1419
+ "hono": "^4.13.5",
1420
+ "html-to-image": "^1.11.13",
1419
1421
  "lucide-react": "^0.468.0",
1422
+ "papaparse": "^5.7.0",
1420
1423
  "picocolors": "^1.1.1",
1421
1424
  "react-day-picker": "^10.0.1",
1425
+ "read-excel-file": "^9.3.10",
1422
1426
  "streamdown": "^2.5.0",
1423
1427
  "tailwind-merge": "^3.0.0",
1424
1428
  "tailwindcss": "^4.3.2",
@@ -1429,7 +1433,7 @@
1429
1433
  "vantage": "dist/cli.js"
1430
1434
  },
1431
1435
  "engines": {
1432
- "node": ">=20"
1436
+ "node": ">=22"
1433
1437
  },
1434
1438
  "peerDependencies": {
1435
1439
  "react": ">=18.2.0",
@@ -1437,9 +1441,9 @@
1437
1441
  }
1438
1442
  },
1439
1443
  "node_modules/@squadbase/vantage-sdk": {
1440
- "version": "0.1.0",
1441
- "resolved": "https://registry.npmjs.org/@squadbase/vantage-sdk/-/vantage-sdk-0.1.0.tgz",
1442
- "integrity": "sha512-5dknrb6wkFIHeHWf6SsOL0gtcTxr5+WZWgBxGSj3UlEBt2l4JKNZJ7T7DsXE1vUq9WxfLryrfBkEf3sEHGO9yQ==",
1444
+ "version": "0.1.1-dev2.ebd5413",
1445
+ "resolved": "https://registry.npmjs.org/@squadbase/vantage-sdk/-/vantage-sdk-0.1.1-dev2.ebd5413.tgz",
1446
+ "integrity": "sha512-+RGJkHYwKUtbf8sjdmjQ7j3eC0WemcXS3ywXCgLUPn8EGPqkoM0vrkJMshnniiTLN9uiAhKFWT4WgFpR9kwj9g==",
1443
1447
  "license": "MIT"
1444
1448
  },
1445
1449
  "node_modules/@streamdown/code": {
@@ -3151,6 +3155,12 @@
3151
3155
  }
3152
3156
  }
3153
3157
  },
3158
+ "node_modules/fflate": {
3159
+ "version": "0.8.3",
3160
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz",
3161
+ "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==",
3162
+ "license": "MIT"
3163
+ },
3154
3164
  "node_modules/fsevents": {
3155
3165
  "version": "2.3.3",
3156
3166
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -3367,6 +3377,12 @@
3367
3377
  "node": ">=16.9.0"
3368
3378
  }
3369
3379
  },
3380
+ "node_modules/html-to-image": {
3381
+ "version": "1.11.13",
3382
+ "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz",
3383
+ "integrity": "sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==",
3384
+ "license": "MIT"
3385
+ },
3370
3386
  "node_modules/html-url-attributes": {
3371
3387
  "version": "3.0.1",
3372
3388
  "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
@@ -4738,6 +4754,12 @@
4738
4754
  "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
4739
4755
  }
4740
4756
  },
4757
+ "node_modules/node-int64": {
4758
+ "version": "0.4.0",
4759
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
4760
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
4761
+ "license": "MIT"
4762
+ },
4741
4763
  "node_modules/oniguruma-parser": {
4742
4764
  "version": "0.12.2",
4743
4765
  "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz",
@@ -4761,6 +4783,12 @@
4761
4783
  "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==",
4762
4784
  "license": "MIT"
4763
4785
  },
4786
+ "node_modules/papaparse": {
4787
+ "version": "5.7.0",
4788
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.7.0.tgz",
4789
+ "integrity": "sha512-qBGxg/7Q3Kl9Wfhrz2Z74UnvnHTXLNG6jmKJFeBvP2+y4lV7So+7SR62+Zd47JvdrCkX+nDcnr0ObPzek/+6RA==",
4790
+ "license": "MIT"
4791
+ },
4764
4792
  "node_modules/parse-entities": {
4765
4793
  "version": "4.0.2",
4766
4794
  "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
@@ -4992,6 +5020,21 @@
4992
5020
  }
4993
5021
  }
4994
5022
  },
5023
+ "node_modules/read-excel-file": {
5024
+ "version": "9.3.10",
5025
+ "resolved": "https://registry.npmjs.org/read-excel-file/-/read-excel-file-9.3.10.tgz",
5026
+ "integrity": "sha512-zFcBdzunLCGBmLRT4Q3mLPJnhKPAXXfGAZ83feODlEqX2aRUbgF1h/n2oY0UF7I8tVwnJNRas6fTRD5veDUs+g==",
5027
+ "license": "MIT",
5028
+ "dependencies": {
5029
+ "fflate": "^0.8.3",
5030
+ "saxen": "^11.1.0",
5031
+ "unzipper-esm": "^0.13.3",
5032
+ "worker-f": "^0.1.12"
5033
+ },
5034
+ "engines": {
5035
+ "node": ">=18"
5036
+ }
5037
+ },
4995
5038
  "node_modules/regex": {
4996
5039
  "version": "6.1.0",
4997
5040
  "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz",
@@ -5195,6 +5238,15 @@
5195
5238
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
5196
5239
  "license": "MIT"
5197
5240
  },
5241
+ "node_modules/saxen": {
5242
+ "version": "11.2.0",
5243
+ "resolved": "https://registry.npmjs.org/saxen/-/saxen-11.2.0.tgz",
5244
+ "integrity": "sha512-2bG564AAJcm/3vyZC0Uhs/mACrH+4AHMaKHKAB2M5xMqomUZa27FQ7MYaQGFKVcJk/MVzSEQ34A8QZWW+eiWEw==",
5245
+ "license": "MIT",
5246
+ "engines": {
5247
+ "node": ">= 20.12"
5248
+ }
5249
+ },
5198
5250
  "node_modules/scheduler": {
5199
5251
  "version": "0.27.0",
5200
5252
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
@@ -5535,6 +5587,19 @@
5535
5587
  "url": "https://opencollective.com/unified"
5536
5588
  }
5537
5589
  },
5590
+ "node_modules/unzipper-esm": {
5591
+ "version": "0.13.3",
5592
+ "resolved": "https://registry.npmjs.org/unzipper-esm/-/unzipper-esm-0.13.3.tgz",
5593
+ "integrity": "sha512-LUO6VZ6fCzkDbdMev0/fOhoIeVGKaOkTIOoYxVLE0SQjfvmAHK+oywl7lfhloSZIsdGJ25mJ18Mtd9CyTASjrA==",
5594
+ "license": "MIT",
5595
+ "dependencies": {
5596
+ "graceful-fs": "^4.2.2",
5597
+ "node-int64": "^0.4.0"
5598
+ },
5599
+ "engines": {
5600
+ "node": ">=8.0.0"
5601
+ }
5602
+ },
5538
5603
  "node_modules/use-callback-ref": {
5539
5604
  "version": "1.3.3",
5540
5605
  "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz",
@@ -5729,6 +5794,15 @@
5729
5794
  "url": "https://github.com/sponsors/wooorm"
5730
5795
  }
5731
5796
  },
5797
+ "node_modules/worker-f": {
5798
+ "version": "0.1.20",
5799
+ "resolved": "https://registry.npmjs.org/worker-f/-/worker-f-0.1.20.tgz",
5800
+ "integrity": "sha512-7z5K5z4x++FykhpDTfriT/dOu7CmSap9BBv38DVFU3CD38obopq+DoFH75yBV3butpGm+OeqR9BKdSvYJSnUfQ==",
5801
+ "license": "MIT",
5802
+ "engines": {
5803
+ "node": ">=12"
5804
+ }
5805
+ },
5732
5806
  "node_modules/zod": {
5733
5807
  "version": "4.4.3",
5734
5808
  "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
@@ -12,8 +12,8 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@squadbase/react": "^0.1.0",
15
- "@squadbase/vantage": "^0.5.3",
16
- "@squadbase/vantage-sdk": "^0.1.0",
15
+ "@squadbase/vantage": "0.6.1-dev2.04fa7f3",
16
+ "@squadbase/vantage-sdk": "0.1.1-dev2.ebd5413",
17
17
  "date-fns": "^4.1.0",
18
18
  "lucide-react": "^0.468.0",
19
19
  "react": "^19.2.7",
@@ -0,0 +1,5 @@
1
+ [project]
2
+ name = "pipelines"
3
+ version = "0.1.0"
4
+ requires-python = ">=3.11"
5
+ dependencies = ["adamas>=0.2.0", "pandas", "requests"]