@squadbase/vantage 0.6.2-dev1.b332e5a → 0.6.2-dev1.cc66477

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 (215) hide show
  1. package/dist/add-4GHF2TX2.js +6 -0
  2. package/dist/add-4GHF2TX2.js.map +1 -0
  3. package/dist/{build-TVKFIVFQ.js → build-X5NVCQKT.js} +7 -7
  4. package/dist/{build-TVKFIVFQ.js.map → build-X5NVCQKT.js.map} +1 -1
  5. package/dist/{check-3KHZXZMQ.js → check-ZBIH422T.js} +5 -5
  6. package/dist/{check-3KHZXZMQ.js.map → check-ZBIH422T.js.map} +1 -1
  7. package/dist/chunk-2ICNHUG6.js +1820 -0
  8. package/dist/chunk-2ICNHUG6.js.map +1 -0
  9. package/dist/{chunk-5ZOP4SQR.js → chunk-2N72FKLB.js} +12 -7
  10. package/dist/chunk-2N72FKLB.js.map +1 -0
  11. package/dist/{chunk-P7W4LR3Z.js → chunk-7DZGJQ3P.js} +3 -3
  12. package/dist/{chunk-P7W4LR3Z.js.map → chunk-7DZGJQ3P.js.map} +1 -1
  13. package/dist/{chunk-U2M6HGKQ.js → chunk-AABMKHEU.js} +4 -4
  14. package/dist/{chunk-U2M6HGKQ.js.map → chunk-AABMKHEU.js.map} +1 -1
  15. package/dist/{chunk-QI3XQKHS.js → chunk-GNXCX4WE.js} +10 -3
  16. package/dist/chunk-GNXCX4WE.js.map +1 -0
  17. package/dist/{chunk-PXRX5PEC.js → chunk-PDOBHMUQ.js} +3 -3
  18. package/dist/chunk-PDOBHMUQ.js.map +1 -0
  19. package/dist/{chunk-ZVANIULZ.js → chunk-RNTDBX6S.js} +4 -4
  20. package/dist/{chunk-ZVANIULZ.js.map → chunk-RNTDBX6S.js.map} +1 -1
  21. package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
  22. package/dist/chunk-U736PVHY.js.map +1 -0
  23. package/dist/chunk-UNCSBSO4.js +7866 -0
  24. package/dist/chunk-UNCSBSO4.js.map +1 -0
  25. package/dist/{chunk-PVTHHV7X.js → chunk-V3LF7BE7.js} +27 -5
  26. package/dist/chunk-V3LF7BE7.js.map +1 -0
  27. package/dist/{chunk-LMUACBMA.js → chunk-WAMZWZJB.js} +53 -8
  28. package/dist/chunk-WAMZWZJB.js.map +1 -0
  29. package/dist/{chunk-RPZAALCX.js → chunk-XPQSTZUU.js} +254 -164
  30. package/dist/chunk-XPQSTZUU.js.map +1 -0
  31. package/dist/{chunk-DTDVSFRY.js → chunk-XQUSGIDG.js} +17 -3
  32. package/dist/chunk-XQUSGIDG.js.map +1 -0
  33. package/dist/cli.js +12 -11
  34. package/dist/cli.js.map +1 -1
  35. package/dist/client/index.d.ts +32 -3
  36. package/dist/client/index.js +205 -12
  37. package/dist/client/index.js.map +1 -1
  38. package/dist/components/index.d.ts +1975 -28
  39. package/dist/components/index.js +4 -4
  40. package/dist/{dev-GDKATCC7.js → dev-4XEDTELV.js} +8 -8
  41. package/dist/dev-4XEDTELV.js.map +1 -0
  42. package/dist/doc/index.js +2 -2
  43. package/dist/doc/index.js.map +1 -1
  44. package/dist/{docs-EJJ3BECT.js → docs-JVP4RPKT.js} +3 -3
  45. package/dist/{docs-EJJ3BECT.js.map → docs-JVP4RPKT.js.map} +1 -1
  46. package/dist/{doctor-WQXPXP6K.js → doctor-5E2VEZPK.js} +5 -5
  47. package/dist/{doctor-WQXPXP6K.js.map → doctor-5E2VEZPK.js.map} +1 -1
  48. package/dist/markdown/index.js +1 -1
  49. package/dist/markdown/index.js.map +1 -1
  50. package/dist/{preview-OGMCNQUO.js → preview-T6CLSQVX.js} +3 -3
  51. package/dist/{preview-OGMCNQUO.js.map → preview-T6CLSQVX.js.map} +1 -1
  52. package/dist/query/index.d.ts +0 -11
  53. package/dist/query/index.js +2 -2
  54. package/dist/{routes-MWBWWOJ2.js → routes-3SGAFDMC.js} +4 -4
  55. package/dist/{routes-MWBWWOJ2.js.map → routes-3SGAFDMC.js.map} +1 -1
  56. package/dist/{search-6Y422SV6.js → search-5LC4XPB5.js} +3 -3
  57. package/dist/{search-6Y422SV6.js.map → search-5LC4XPB5.js.map} +1 -1
  58. package/dist/slide/index.js +2 -2
  59. package/dist/slide/index.js.map +1 -1
  60. package/dist/table/index.js +11 -10
  61. package/dist/table/index.js.map +1 -1
  62. package/dist/ui/index.d.ts +144 -11
  63. package/dist/ui/index.js +1339 -87
  64. package/dist/ui/index.js.map +1 -1
  65. package/dist/{upgrade-HCANX4GQ.js → upgrade-JHXZBGQS.js} +6 -6
  66. package/dist/{upgrade-HCANX4GQ.js.map → upgrade-JHXZBGQS.js.map} +1 -1
  67. package/dist/vite/index.d.ts +10 -0
  68. package/dist/vite/index.js +3 -3
  69. package/docs/en/components.md +29 -15
  70. package/docs/en/parts/data-table.md +22 -0
  71. package/docs/en/parts/delta.md +50 -0
  72. package/docs/en/parts/format.md +43 -0
  73. package/docs/en/parts/kpi-card.md +57 -0
  74. package/docs/en/parts/metric-value.md +3 -2
  75. package/docs/en/parts/sparkline.md +1 -1
  76. package/docs/en/parts/trend-indicator.md +17 -1
  77. package/docs/en/ui-and-theming.md +1 -1
  78. package/docs/index.json +366 -76
  79. package/docs/ja/changelog.md +31 -0
  80. package/docs/ja/components.md +57 -101
  81. package/docs/ja/page-types/csv.md +83 -0
  82. package/docs/ja/page-types/doc.md +83 -0
  83. package/docs/ja/page-types/excel.md +82 -0
  84. package/docs/ja/page-types/slide.md +132 -0
  85. package/docs/ja/page-types.md +47 -0
  86. package/docs/ja/parts/area-chart.md +61 -0
  87. package/docs/ja/parts/bar-chart.md +69 -0
  88. package/docs/ja/parts/bar-list.md +35 -0
  89. package/docs/ja/parts/category-bar.md +36 -0
  90. package/docs/ja/parts/data-table.md +22 -0
  91. package/docs/ja/parts/delta.md +50 -0
  92. package/docs/ja/parts/donut-chart.md +47 -0
  93. package/docs/ja/parts/echart.md +3 -0
  94. package/docs/ja/parts/format.md +44 -0
  95. package/docs/ja/parts/kpi-card.md +55 -0
  96. package/docs/ja/parts/line-chart.md +58 -0
  97. package/docs/ja/parts/metric-value.md +3 -2
  98. package/docs/ja/parts/progress-circle.md +34 -0
  99. package/docs/ja/parts/sparkline.md +2 -2
  100. package/docs/ja/parts/tracker.md +32 -0
  101. package/docs/ja/parts/trend-indicator.md +17 -1
  102. package/docs/ja/routing.md +8 -86
  103. package/docs/ja/ui/alert-dialog.md +41 -0
  104. package/docs/ja/ui/avatar.md +31 -0
  105. package/docs/ja/ui/combobox.md +74 -0
  106. package/docs/ja/ui/drawer.md +41 -0
  107. package/docs/ja/ui/field.md +42 -0
  108. package/docs/ja/ui/hover-card.md +21 -0
  109. package/docs/ja/ui/kbd.md +16 -0
  110. package/docs/ja/ui/pagination.md +36 -0
  111. package/docs/ja/ui/radio-group.md +21 -0
  112. package/docs/ja/ui/toast.md +46 -0
  113. package/docs/ja/ui-and-theming.md +14 -7
  114. package/package.json +33 -24
  115. package/registry/ui/accordion.tsx +76 -0
  116. package/registry/ui/alert-dialog.tsx +189 -0
  117. package/registry/ui/alert.tsx +80 -0
  118. package/registry/ui/app-shell.tsx +287 -0
  119. package/registry/ui/area-chart.tsx +3639 -0
  120. package/registry/ui/avatar.tsx +110 -0
  121. package/registry/ui/badge.tsx +56 -0
  122. package/registry/ui/bar-chart.tsx +3636 -0
  123. package/registry/ui/bar-list.tsx +3680 -0
  124. package/registry/ui/breadcrumb.tsx +128 -0
  125. package/registry/ui/button.tsx +62 -0
  126. package/registry/ui/calendar.tsx +223 -0
  127. package/registry/ui/card.tsx +107 -0
  128. package/registry/ui/category-bar.tsx +1255 -0
  129. package/registry/ui/chart-frame.tsx +1358 -0
  130. package/registry/ui/checkbox.tsx +30 -0
  131. package/registry/ui/collapsible.tsx +23 -0
  132. package/registry/ui/combobox.tsx +310 -0
  133. package/registry/ui/command.tsx +198 -0
  134. package/registry/ui/dashboard-card.tsx +217 -0
  135. package/registry/ui/data-table.tsx +693 -146
  136. package/registry/ui/date-range-picker.tsx +390 -0
  137. package/registry/ui/delta.tsx +188 -0
  138. package/registry/ui/dialog.tsx +161 -0
  139. package/registry/ui/donut-chart.tsx +3688 -0
  140. package/registry/ui/drawer.tsx +229 -0
  141. package/registry/ui/dropdown-menu.tsx +274 -0
  142. package/registry/ui/echart.tsx +890 -0
  143. package/registry/ui/field.tsx +240 -0
  144. package/registry/ui/filter-bar.tsx +392 -0
  145. package/registry/ui/funnel-steps.tsx +3541 -0
  146. package/registry/ui/heatmap.tsx +1752 -0
  147. package/registry/ui/hover-card.tsx +52 -0
  148. package/registry/ui/input-group.tsx +160 -0
  149. package/registry/ui/input.tsx +24 -0
  150. package/registry/ui/kbd.tsx +30 -0
  151. package/registry/ui/kpi-card.tsx +677 -0
  152. package/registry/ui/label.tsx +22 -0
  153. package/registry/ui/legend.tsx +3500 -0
  154. package/registry/ui/line-chart.tsx +3637 -0
  155. package/registry/ui/metric-value.tsx +62 -0
  156. package/registry/ui/multi-select.tsx +232 -0
  157. package/registry/ui/page-shell.tsx +282 -0
  158. package/registry/ui/pagination.tsx +140 -0
  159. package/registry/ui/placeholder.tsx +36 -0
  160. package/registry/ui/popover.tsx +92 -0
  161. package/registry/ui/progress-circle.tsx +867 -0
  162. package/registry/ui/progress.tsx +85 -0
  163. package/registry/ui/radio-group.tsx +39 -0
  164. package/registry/ui/sample-data.tsx +86 -0
  165. package/registry/ui/scatter-chart.tsx +4150 -0
  166. package/registry/ui/scroll-area.tsx +56 -0
  167. package/registry/ui/searchable-select.tsx +214 -0
  168. package/registry/ui/section-header.tsx +43 -0
  169. package/registry/ui/segmented-control.tsx +76 -0
  170. package/registry/ui/select.tsx +255 -0
  171. package/registry/ui/separator.tsx +27 -0
  172. package/registry/ui/sheet.tsx +139 -0
  173. package/registry/ui/sidebar.tsx +725 -0
  174. package/registry/ui/skeleton.tsx +17 -0
  175. package/registry/ui/slider.tsx +56 -0
  176. package/registry/ui/sparkline.tsx +230 -0
  177. package/registry/ui/spinner.tsx +14 -0
  178. package/registry/ui/states.tsx +90 -0
  179. package/registry/ui/status-badge.tsx +121 -0
  180. package/registry/ui/switch.tsx +34 -0
  181. package/registry/ui/table.tsx +118 -0
  182. package/registry/ui/tabs.tsx +84 -0
  183. package/registry/ui/textarea.tsx +22 -0
  184. package/registry/ui/toast.tsx +250 -0
  185. package/registry/ui/toggle-group.tsx +91 -0
  186. package/registry/ui/toggle.tsx +47 -0
  187. package/registry/ui/tooltip.tsx +68 -0
  188. package/registry/ui/tracker.tsx +843 -0
  189. package/registry/ui/trend-indicator.tsx +74 -0
  190. package/registry/ui/updated-at.tsx +122 -0
  191. package/registry/ui/waterfall-chart.tsx +4186 -0
  192. package/skills/vantage-add-feature/SKILL.md +9 -7
  193. package/skills/vantage-design/SKILL.md +10 -2
  194. package/skills/vantage-pitfalls/SKILL.md +5 -1
  195. package/templates/AGENTS.md +22 -1
  196. package/templates/agents/csv.md +2 -1
  197. package/templates/agents/doc.md +4 -3
  198. package/templates/agents/page.md +30 -6
  199. package/templates/agents/xlsx.md +2 -1
  200. package/theme.css +241 -136
  201. package/dist/add-DY4AXANK.js +0 -6
  202. package/dist/add-DY4AXANK.js.map +0 -1
  203. package/dist/chunk-5ZOP4SQR.js.map +0 -1
  204. package/dist/chunk-A2UUGASH.js.map +0 -1
  205. package/dist/chunk-DTDVSFRY.js.map +0 -1
  206. package/dist/chunk-LMUACBMA.js.map +0 -1
  207. package/dist/chunk-NKFBFDRZ.js +0 -2241
  208. package/dist/chunk-NKFBFDRZ.js.map +0 -1
  209. package/dist/chunk-PVTHHV7X.js.map +0 -1
  210. package/dist/chunk-PXRX5PEC.js.map +0 -1
  211. package/dist/chunk-QI3XQKHS.js.map +0 -1
  212. package/dist/chunk-RPZAALCX.js.map +0 -1
  213. package/dist/chunk-VA776YE5.js +0 -316
  214. package/dist/chunk-VA776YE5.js.map +0 -1
  215. package/dist/dev-GDKATCC7.js.map +0 -1
@@ -16,7 +16,7 @@ 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/ にコピー(src/ があればその中)
19
+ vantage add ui <name> # /ui・/components の部品ソースを components/ui/ にコピー(src/ があればその中)
20
20
  vantage add block <name> # registry からブロックを components/blocks/ にコピー(同上)
21
21
  ```
22
22
 
@@ -121,15 +121,17 @@ vantage add ui data-table # → components/ui/data-table.tsx(編集可能
121
121
  vantage add block sales-overview # → components/blocks/sales-overview.tsx
122
122
  ```
123
123
 
124
- - **多くの UI コンポーネントは「import 専用」で、`add ui` でコピーできる名前は限られる。**
125
- 現在 registry からコピー可能なのは `data-table`(ui)と `sales-overview`(block)のみ。
126
- 未知の名前を渡すと利用可能な名前一覧を出して失敗する。
127
- - コピーが要らない大半のプリミティブは `@squadbase/vantage/ui` から、複合パーツは
128
- `@squadbase/vantage/components` から**そのまま import**するのが基本(コピー不要)。
124
+ - **基本はコピーせず import する。** プリミティブは `@squadbase/vantage/ui` から、複合パーツと
125
+ チャートは `@squadbase/vantage/components` から**そのまま import**する。
129
126
  ```tsx
130
127
  import { Button, Loading, ErrorState } from "@squadbase/vantage/ui"
131
- import { DashboardCardPreset, DataTablePreset, EChart } from "@squadbase/vantage/components"
128
+ import { DashboardCardPreset, DataTablePreset, LineChart } from "@squadbase/vantage/components"
132
129
  ```
130
+ - `add ui` は**改造したいときだけ**使う。`/ui` と `/components` の部品はすべて kebab-case 名で
131
+ コピーできる(`add ui bar-chart`・`add ui combobox`)。未知の名前を渡すと利用可能な名前一覧を
132
+ 出して失敗する。
133
+ - グラフは型付きチャート(`LineChart`・`BarChart` など)から選ぶ。選び方は `agents/page.md` の
134
+ 「グラフはまず型付きチャートで描く」。
133
135
  - **props は `vantage docs <name>` で確認してから書く**(`vantage docs button`・
134
136
  `vantage docs parts/data-table`。名前が分からなければ `vantage search <やりたいこと>` で
135
137
  探してから `vantage docs` に渡す)。
@@ -77,19 +77,27 @@ Vantage アプリの見た目は 2 つのファイルで決まる。
77
77
 
78
78
  ```css
79
79
  body {
80
- font-family: "<Font>", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", Meiryo, sans-serif;
80
+ font-family: "<Font>", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", Meiryo, ui-sans-serif, system-ui, sans-serif;
81
81
  }
82
82
  :root {
83
- --slide-font-display: "<Font>", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, sans-serif;
83
+ --slide-font-display: "<Font>", -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", Meiryo, system-ui, sans-serif;
84
84
  --slide-font-body: var(--slide-font-display);
85
85
  }
86
86
  ```
87
87
 
88
88
  欧文の Web フォントだけを先頭に足すときも、日本語の system face(`"Hiragino Sans"` 〜 `Meiryo`)は
89
89
  必ず残す。消すとカナ・漢字がブラウザ任せのフォールバックになり、細く表示される。
90
+ `ui-sans-serif` / `system-ui` は日本語の face より**後ろ**に置く。日本語の Windows ではどちらも
91
+ Yu Gothic UI(UI のリサイズを避けるために字幅を詰めた書体)に解決され、カナがここで決まって
92
+ 半角風に見える。macOS の Chrome は `-apple-system` を解釈しないので `BlinkMacSystemFont` も並べる。
93
+ 既存アプリの `styles.css` に `ui-sans-serif, system-ui, …` が先頭にある、または `"Yu Gothic UI"` が
94
+ 残っているときは、`body` の `font-family` を上の並びに直す(ほかの行は書き換えない)。
90
95
  日本語の Web フォントは face が 100 を超えるので原則使わない(pptx 書き出しも壊れる。
91
96
  `vantage-slide` の `references/tokens.md` 参照)。
92
97
 
98
+ 長い表(ダッシュボード): カードに `max-h-*` + `overflow-y-auto` の縦スクロール領域を作らず、
99
+ ページング付きの `DataTablePreset`(`enablePagination`)にする(ホイールや End キーがページに届かなくなるため)。
100
+
93
101
  `DESIGN.md`: `references/format.md` の書式で書く。**色コードを書かない**(トークン名だけ)。
94
102
  150 行を超えない(超えると `vantage check` が `DESIGN_MD_TOO_LONG` を出す)。ロゴなどの素材は
95
103
  `public/brand/logo.svg` のように `public/` 配下のパスで「ブランド素材」行に書く。
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vantage-pitfalls
3
- description: Vantage(@squadbase/vantage)アプリを書くときに静かに壊れる落とし穴のリファレンス。Base UI は Radix ではない(asChild 無し・render プロップ)、Select の value/label、クライアントから server/ を import しない、EChart の配色と高さ、動的パラメータの3綴り同期、PUBLIC_ env、HttpError、csv/xlsx ページの URL 衝突とサイズ上限、スライドの data-waitfor など。Vantage の UI コンポーネントやルーティングが思った通りに動かないとき、ビルドやスタイルが静かに欠落するときに参照する。
3
+ description: Vantage(@squadbase/vantage)アプリを書くときに静かに壊れる落とし穴のリファレンス。Base UI は Radix ではない(asChild 無し・render プロップ)、Select の value/label、クライアントから server/ を import しない、チャートの色指定と EChart の配色・高さ、動的パラメータの3綴り同期、PUBLIC_ env、HttpError、csv/xlsx ページの URL 衝突とサイズ上限、スライドの data-waitfor など。Vantage の UI コンポーネントやルーティングが思った通りに動かないとき、ビルドやスタイルが静かに欠落するときに参照する。
4
4
  ---
5
5
 
6
6
  # Vantage アプリの落とし穴リファレンス
@@ -59,6 +59,10 @@ Base UI の `SelectValue` は選択中の **value をそのまま描き**、`Sel
59
59
 
60
60
  ## チャート:`EChart` の配色はトークン追従。上書きは `option.color`
61
61
 
62
+ ふつうの推移・比較・構成比は型付きチャート(`LineChart`・`BarChart` など。→ `agents/page.md`)で
63
+ 描く。その `colors` に渡すのはトークン名 `"chart-1"`〜`"chart-5"` か CSS 色で、Tailwind クラス
64
+ (`"bg-blue-500"` など)は効かない。以下は `EChart` を直接使うときの話。
65
+
62
66
  系列色は `--chart-1..5`、軸・凡例・ツールチップは文字色/境界色のトークンから組まれる
63
67
  (init 時にトークンの実値を解決している)。ライト / ダークの切り替えにも、`styles.css` の
64
68
  書き換えやテーマプリセットの適用にも追従する。
@@ -93,13 +93,25 @@ root/
93
93
  | `@squadbase/vantage/router` | `Link`・`Outlet`・`useParams`・`useSearch`・`useNavigate`・`redirect`・`notFound`・`useRoutes`・`useCurrentRoute`・`useSearchParam`・`useSearchState` |
94
94
  | `@squadbase/vantage/query` | `useApiQuery`・`useApiMutation`・`apiJson`・`apiFetch`・`apiUrl`・`ApiError`、ほか `useQuery`/`useMutation` など TanStack Query の再エクスポート |
95
95
  | `@squadbase/vantage/ui` | shadcn/ui(Base UI バリアント)プリミティブ(`Button`・`Loading`・`ErrorState`・`Empty` ほか) |
96
- | `@squadbase/vantage/components` | 複合パーツ(`PageShell`・`DashboardCardPreset`・`DataTablePreset`・`EChart` ほか) |
96
+ | `@squadbase/vantage/components` | 複合パーツ(`PageShell`・`DashboardCardPreset`・`DataTablePreset`、KPI の `KpiCard`・`Delta`、型付きチャート `LineChart`・`BarChart`・`AreaChart`・`DonutChart`・`BarList` ほか、`EChart`、書式の `formatValue`) |
97
97
  | `@squadbase/vantage/table` | `FilePageView`・`TableViewer`(データファイルページの表ビューア) |
98
98
  | `@squadbase/vantage/slide` | `SlideDeck`・`Slide`・`Steps`・`Step`・`MorphElement`・`useSlideNumber`・`useIsActiveSlide`(スライド専用。1920×1080 の固定キャンバス) |
99
99
  | `@squadbase/vantage/doc` | `Document`(ドキュメント専用。中の素の HTML 要素に見出し・表などのスタイルが当たる) |
100
100
  | `@squadbase/vantage/markdown` | `MarkdownRenderer`(Shiki を隔離するための専用サブパス) |
101
101
  | `@squadbase/vantage/server` | `ApiContext`・`ApiHandler`・`HttpError`・`isHttpError`・`json`(server/ 側でのみ使う) |
102
102
 
103
+ **KPI は `KpiCard`、増減は `Delta`(`comparison` と `polarity` を渡す)。** 向き・率・色は値から計算
104
+ されるので手で渡さない。`TrendIndicator` は非推奨(`direction` を手で渡すので値と食い違いうる)。props は
105
+ `vantage docs kpi-card` / `vantage docs delta` を引く。
106
+
107
+ ```tsx
108
+ import { KpiCard, Delta } from "@squadbase/vantage/components";
109
+
110
+ <KpiCard label="売上" value={48_200_000} format="currency"
111
+ comparison={{ previous: 42_900_000, vs: "prior-period" }} />
112
+ <Delta value={0.021} comparison={{ previous: 0.026, vs: "prior-period" }} polarity="lower-is-better" />
113
+ ```
114
+
103
115
  ## モードは 2 つ、切り替えるのは `server/` の有無だけ
104
116
 
105
117
  `server/` ディレクトリがあれば **fullstack**、無ければ **SPA**。`vantage-manifest.json` の
@@ -137,6 +149,15 @@ root/
137
149
  | `.xlsx` ページ | `agents/xlsx.md` |
138
150
  | `.csv` ページ | `agents/csv.md` |
139
151
 
152
+ **ページになるのは `.tsx` / `.jsx`(`.slide.tsx`・`.doc.tsx` を含む)・`.csv`・`.xlsx` だけ。**
153
+
154
+ - `.xls`・`.xlsm`・`.xlsb`・`.ods`・`.tsv`・`.numbers`・`.parquet` はルートにならず、404 にもならない。
155
+ `vantage check` の `UNSUPPORTED_PAGE_FILE` 警告だけが知らせる。`.xlsx` / `.csv` に変換して置く
156
+ - `.md`・`.json`・`.txt` は何も言わずに無視される。Markdown を見せたいときは `.tsx` のページで
157
+ `MarkdownRenderer`(`@squadbase/vantage/markdown`)に渡す
158
+ - `.csv` / `.xlsx` はブラウザでパースする。25MB を超えるとそのページにエラーが出る
159
+ (`FILE_PAGE_TOO_LARGE` 警告)。20 万行を超えるシートは先頭 20 万行だけが表示される
160
+
140
161
  ## 環境変数
141
162
 
142
163
  - **クライアントで読めるのは `import.meta.env.PUBLIC_*` と `MODE`/`DEV`/`PROD`/`SSR`/`BASE_URL`
@@ -27,6 +27,7 @@
27
27
  ```
28
28
  - 数式・グラフ・セル書式といった概念は csv には無いので、値がそのまま読めます。ブラウザで
29
29
  パースするので 25MB を超えるファイルはそのページにエラーが出ます —— 大きいデータは
30
- `server/api/` から配って `DataTable` で描いてください
30
+ `server/api/` から配って `DataTable` で描いてください。20 万行を超えると先頭
31
+ 20 万行だけが表示されます(残りはダウンロードして見る)
31
32
  - **ビューアの無い拡張子(`.tsv` など)はルートになりません。** `vantage check` の
32
33
  `UNSUPPORTED_PAGE_FILE` 警告が知らせます
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```tsx
14
14
  import { definePage } from "@squadbase/vantage"
15
- import { EChart } from "@squadbase/vantage/components"
15
+ import { BarChart } from "@squadbase/vantage/components"
16
16
  import { Document } from "@squadbase/vantage/doc"
17
17
 
18
18
  export const page = definePage({ title: "6月度サマリー", navLabel: "6月度サマリー" })
@@ -23,7 +23,7 @@ export default function JuneSummary() {
23
23
  <p>6月の売上は <strong>5,250 万円</strong>で、目標を 5% 上回りました。</p>
24
24
  <h2>週次の売上</h2>
25
25
  <figure>
26
- <EChart option={option} height={280} ariaLabel="6月の週次売上" />
26
+ <BarChart data={weekly} index="week" categories={["売上"]} height={280} ariaLabel="6月の週次売上" />
27
27
  <figcaption>第4週はキャンペーン初週</figcaption>
28
28
  </figure>
29
29
  <table>…</table>
@@ -42,7 +42,8 @@ export default function JuneSummary() {
42
42
  見た目を変えたいときはユーティリティを並べず、下の `--doc-*` を変えます。
43
43
  - **数値はコードに直接書く。** ドキュメントは書いた時点の内容を残すページです。
44
44
  `useApiQuery` などで読み込むと、開くたびに値が変わります。
45
- - **チャートは `EChart`(`@squadbase/vantage/components`)を文中に置く。** `figure` で囲めば
45
+ - **チャートは型付きチャート(`BarChart`・`LineChart` など。`@squadbase/vantage/components`)を
46
+ 文中に置く**(選び方は `agents/page.md` の「グラフはまず型付きチャートで描く」)。`figure` で囲めば
46
47
  `figcaption` がキャプションになります。
47
48
  - **PDF の保存ボタンは作らない。** `<Document>` が右下に PDF 保存のボタンを出し、印刷時は
48
49
  本文だけをライトの配色で出します。
@@ -164,17 +164,41 @@ refetchOnWindowFocus false・networkMode "always")。挙動を変えたいとき
164
164
  ## 組み込み UI / コンポーネントの入口
165
165
 
166
166
  - **プリミティブ**は `@squadbase/vantage/ui` から import する(`Button`・`Loading`・
167
- `ErrorState`・`Empty`・`Select`・`Checkbox` ほか)。
167
+ `ErrorState`・`Empty`・`Select`・`Checkbox`・`RadioGroup`・`Field`・`Combobox`・`Pagination`・
168
+ `Avatar`・`Kbd`・`HoverCard`・`AlertDialog`・`Drawer`・`Toaster` + `toast.add()` ほか)。
168
169
  - **複合パーツ**は `@squadbase/vantage/components` から(`PageShell`・`DashboardCardPreset`・
169
- `DataTablePreset`・`EChart` ほか)。
170
+ `DataTablePreset`・型付きチャート(下の「グラフ」)・`EChart` ほか)。
170
171
  - **どの名前が import 可能か / props の詳細は `vantage docs` で引く。** ガイドとコンポーネント
171
172
  リファレンスはパッケージに同梱されていて、オフラインでも読める(→ `AGENTS.md` の
172
173
  「ドキュメントを引く」)。**名前が分からないとき**はやりたいことで `vantage search` する
173
174
  (→ 同節)。
174
- - **UI は import して使うのが既定。取り出す(eject)必要はない。** `vantage add ui|block` は
175
- ソースを手元にコピーして**改造したいとき専用**のコマンドで、取り出せるのは
176
- `ui: data-table` と `block: sales-overview` の 2 つだけ。それ以外の名前は import 専用で
177
- `add` の対象ではない(未知名で実行すると候補が一覧表示される)。
175
+ - **UI は import して使うのが既定。取り出す(eject)必要はない。** `vantage add ui <name>` は
176
+ ソースを手元にコピーして**改造したいとき専用**のコマンド。`/ui` のプリミティブも
177
+ `/components` の複合パーツも全部取り出せる(名前は kebab-case: `add ui bar-chart`。
178
+ ブロックは `add block sales-overview`。未知名で実行すると候補が一覧表示される)。
179
+
180
+ ### 長い表はページングする(縦スクロール箱を作らない)
181
+
182
+ - 行が多い表は `DataTablePreset`(または `DataTable`)に `enablePagination` を付けて**ページング**する
183
+ (既定は 10 行 / ページ。ページングは既定で無効なので、付け忘れると全行が並ぶ)。素の `<table>` を
184
+ 手書きして全行を流し込まない。
185
+ - カードの中に `max-h-*` + `overflow-y-auto` の**縦スクロール領域を作らない**。ホイールやキー
186
+ (End / Space)がその箱に吸われ、ページ全体がスクロールしなくなる。高さは内容に任せる。
187
+ - 横に広い表の `overflow-x-auto` は構わない。`SheetGrid`(`.csv` / `.xlsx` のビューア)は
188
+ グリッドとして意図した入れ子スクロールなので対象外。
189
+
190
+ ### グラフはまず型付きチャートで描く
191
+
192
+ - 推移は `LineChart` / `AreaChart`、比較は `BarChart`、構成比は `DonutChart`。`data`(行の配列)・
193
+ `index`(x 軸の列)・`categories`(系列の列)を渡すだけで、option は書かない
194
+ (`DonutChart` は `category` / `value`)。
195
+ - 上位 N 件は `BarList`、判定帯や予算消化は `CategoryBar`、達成率は `ProgressCircle`、
196
+ 日ごとの状態は `Tracker`。
197
+ - `EChart` + `EChartsOption` は、二軸・散布図・ヒートマップ・注釈線など型付きチャートの props で
198
+ 表せないときだけ使う。
199
+ - 色は省略してテーマトークンに任せる。指定するなら `"chart-1"`〜`"chart-5"` か
200
+ `"var(--destructive)"` などの CSS 色。hex の直書きや Tailwind クラスは使わない。
201
+ - 数値の書式(`¥`・`%`・桁区切り)は `valueFormatter` に渡す。
178
202
 
179
203
  ### ダークモードは opt-in
180
204
 
@@ -28,6 +28,7 @@
28
28
  - **複数シートに対応**しています。シートのタブは下端に並び、切り替えて閲覧できます。
29
29
  - 数式・グラフ・セル書式は再現されません(値として読めれば十分、という設計)。ブラウザでパースするので
30
30
  25MB を超えるファイルはそのページにエラーが出ます —— 大きいデータは `server/api/` から配って
31
- `DataTable` で描いてください
31
+ `DataTable` で描いてください。20 万行を超えると先頭
32
+ 20 万行だけが表示されます(残りはダウンロードして見る)
32
33
  - **ビューアの無い拡張子(`.xls`・`.ods` など)はルートになりません。** `vantage check` の
33
34
  `UNSUPPORTED_PAGE_FILE` 警告が知らせます