@squadbase/vantage 0.6.2-stg.3a2ba98 → 0.7.0-dev1.275b4ed

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 (346) hide show
  1. package/dist/add-4GHF2TX2.js +6 -0
  2. package/dist/add-4GHF2TX2.js.map +1 -0
  3. package/dist/{build-O5TVNH4E.js → build-U7GO26HR.js} +9 -9
  4. package/dist/{build-O5TVNH4E.js.map → build-U7GO26HR.js.map} +1 -1
  5. package/dist/{check-WFBEDHDR.js → check-MRVAIHG5.js} +7 -7
  6. package/dist/{check-WFBEDHDR.js.map → check-MRVAIHG5.js.map} +1 -1
  7. package/dist/chunk-2IAPIOPS.js +152 -0
  8. package/dist/chunk-2IAPIOPS.js.map +1 -0
  9. package/dist/chunk-3RJEOP3J.js +174 -0
  10. package/dist/chunk-3RJEOP3J.js.map +1 -0
  11. package/dist/chunk-77CISBMG.js +7581 -0
  12. package/dist/chunk-77CISBMG.js.map +1 -0
  13. package/dist/{chunk-QDZA5JSL.js → chunk-AABMKHEU.js} +4 -4
  14. package/dist/{chunk-QDZA5JSL.js.map → chunk-AABMKHEU.js.map} +1 -1
  15. package/dist/{chunk-PVTHHV7X.js → chunk-ANZLVSEP.js} +28 -7
  16. package/dist/chunk-ANZLVSEP.js.map +1 -0
  17. package/dist/chunk-CKWPK4RO.js +50 -0
  18. package/dist/chunk-CKWPK4RO.js.map +1 -0
  19. package/dist/chunk-EG4PX726.js +678 -0
  20. package/dist/chunk-EG4PX726.js.map +1 -0
  21. package/dist/{chunk-3G43C6OL.js → chunk-GNXCX4WE.js} +46 -3
  22. package/dist/chunk-GNXCX4WE.js.map +1 -0
  23. package/dist/chunk-NZ5QIIG4.js +74 -0
  24. package/dist/chunk-NZ5QIIG4.js.map +1 -0
  25. package/dist/{chunk-BCE22JSM.js → chunk-PJ4SPXHS.js} +52 -16
  26. package/dist/chunk-PJ4SPXHS.js.map +1 -0
  27. package/dist/{chunk-RPZAALCX.js → chunk-QNOX7WLZ.js} +256 -165
  28. package/dist/chunk-QNOX7WLZ.js.map +1 -0
  29. package/dist/{chunk-ZVANIULZ.js → chunk-RNTDBX6S.js} +4 -4
  30. package/dist/{chunk-ZVANIULZ.js.map → chunk-RNTDBX6S.js.map} +1 -1
  31. package/dist/{chunk-PXRX5PEC.js → chunk-ROHNXP7J.js} +73 -4
  32. package/dist/chunk-ROHNXP7J.js.map +1 -0
  33. package/dist/chunk-S5MDTHH7.js +466 -0
  34. package/dist/chunk-S5MDTHH7.js.map +1 -0
  35. package/dist/chunk-SDJTTMLK.js +1877 -0
  36. package/dist/chunk-SDJTTMLK.js.map +1 -0
  37. package/dist/{chunk-EP6JHXSR.js → chunk-SHZM3EXB.js} +68 -12
  38. package/dist/chunk-SHZM3EXB.js.map +1 -0
  39. package/dist/chunk-TRMHNMMZ.js +61 -0
  40. package/dist/chunk-TRMHNMMZ.js.map +1 -0
  41. package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
  42. package/dist/chunk-U736PVHY.js.map +1 -0
  43. package/dist/{chunk-JGRMRXXZ.js → chunk-UWSQUHX6.js} +4 -99
  44. package/dist/chunk-UWSQUHX6.js.map +1 -0
  45. package/dist/cli.js +15 -11
  46. package/dist/cli.js.map +1 -1
  47. package/dist/client/index.d.ts +34 -3
  48. package/dist/client/index.js +211 -12
  49. package/dist/client/index.js.map +1 -1
  50. package/dist/components/index.d.ts +1768 -30
  51. package/dist/components/index.js +7 -4
  52. package/dist/delta-text-CbrOaW83.d.ts +17 -0
  53. package/dist/{dev-NZRLOQCL.js → dev-O42JFQ64.js} +24 -13
  54. package/dist/dev-O42JFQ64.js.map +1 -0
  55. package/dist/doc/index.d.ts +215 -2
  56. package/dist/doc/index.js +423 -5
  57. package/dist/doc/index.js.map +1 -1
  58. package/dist/{docs-ZGDJUHJI.js → docs-JVP4RPKT.js} +3 -3
  59. package/dist/{docs-ZGDJUHJI.js.map → docs-JVP4RPKT.js.map} +1 -1
  60. package/dist/{doctor-VFKEMR54.js → doctor-YD3XAAOT.js} +8 -8
  61. package/dist/doctor-YD3XAAOT.js.map +1 -0
  62. package/dist/format-DihQkL1N.d.ts +249 -0
  63. package/dist/markdown/index.js +1 -1
  64. package/dist/markdown/index.js.map +1 -1
  65. package/dist/{preview-QDCIVVSR.js → preview-T6CLSQVX.js} +12 -4
  66. package/dist/preview-T6CLSQVX.js.map +1 -0
  67. package/dist/query/index.d.ts +0 -11
  68. package/dist/query/index.js +2 -2
  69. package/dist/{routes-RHP5FVGD.js → routes-PVKNT777.js} +6 -6
  70. package/dist/{routes-RHP5FVGD.js.map → routes-PVKNT777.js.map} +1 -1
  71. package/dist/{search-RFBELGY7.js → search-5LC4XPB5.js} +3 -3
  72. package/dist/{search-RFBELGY7.js.map → search-5LC4XPB5.js.map} +1 -1
  73. package/dist/slide/index.d.ts +272 -1
  74. package/dist/slide/index.js +1086 -19
  75. package/dist/slide/index.js.map +1 -1
  76. package/dist/table/index.js +14 -10
  77. package/dist/table/index.js.map +1 -1
  78. package/dist/ui/index.d.ts +148 -12
  79. package/dist/ui/index.js +1340 -88
  80. package/dist/ui/index.js.map +1 -1
  81. package/dist/{upgrade-GF2P67M6.js → upgrade-6DT7ADRP.js} +7 -7
  82. package/dist/{upgrade-GF2P67M6.js.map → upgrade-6DT7ADRP.js.map} +1 -1
  83. package/dist/vite/index.d.ts +10 -0
  84. package/dist/vite/index.js +4 -4
  85. package/docs/en/agent-skills.md +1 -1
  86. package/docs/en/changelog.md +82 -0
  87. package/docs/en/cli-reference.md +30 -0
  88. package/docs/en/components.md +42 -17
  89. package/docs/en/doc/delta-text.md +40 -0
  90. package/docs/en/doc/doc-action-items.md +49 -0
  91. package/docs/en/doc/doc-callout.md +38 -0
  92. package/docs/en/doc/doc-data-table.md +60 -0
  93. package/docs/en/doc/doc-executive-summary.md +64 -0
  94. package/docs/en/doc/doc-figure.md +56 -0
  95. package/docs/en/doc/doc-key-findings.md +61 -0
  96. package/docs/en/doc/doc-kpi-scorecard.md +80 -0
  97. package/docs/en/doc/doc-notes-and-sources.md +43 -0
  98. package/docs/en/doc/doc-report-header.md +46 -0
  99. package/docs/en/pages-and-metadata.md +15 -0
  100. package/docs/en/parts/area-chart.md +99 -0
  101. package/docs/en/parts/bar-chart.md +91 -0
  102. package/docs/en/parts/bar-list.md +50 -0
  103. package/docs/en/parts/category-bar.md +37 -0
  104. package/docs/en/parts/chart-frame.md +39 -0
  105. package/docs/en/parts/data-table.md +22 -0
  106. package/docs/en/parts/delta.md +51 -0
  107. package/docs/en/parts/donut-chart.md +72 -0
  108. package/docs/en/parts/format.md +43 -0
  109. package/docs/en/parts/funnel-steps.md +2 -1
  110. package/docs/en/parts/heatmap.md +53 -0
  111. package/docs/en/parts/kpi-card.md +58 -0
  112. package/docs/en/parts/legend.md +35 -0
  113. package/docs/en/parts/line-chart.md +94 -0
  114. package/docs/en/parts/metric-value.md +3 -2
  115. package/docs/en/parts/page-shell.md +1 -1
  116. package/docs/en/parts/progress-circle.md +33 -0
  117. package/docs/en/parts/sample-data.md +39 -0
  118. package/docs/en/parts/scatter-chart.md +56 -0
  119. package/docs/en/parts/sparkline.md +1 -1
  120. package/docs/en/parts/tracker.md +36 -0
  121. package/docs/en/parts/trend-indicator.md +17 -1
  122. package/docs/en/parts/updated-at.md +30 -0
  123. package/docs/en/parts/waterfall-chart.md +56 -0
  124. package/docs/en/slide/slide-chart-full.md +48 -0
  125. package/docs/en/slide/slide-chart-insight.md +52 -0
  126. package/docs/en/slide/slide-columns.md +46 -0
  127. package/docs/en/slide/slide-comparison.md +68 -0
  128. package/docs/en/slide/slide-cover.md +39 -0
  129. package/docs/en/slide/slide-exec-summary.md +47 -0
  130. package/docs/en/slide/slide-heading.md +38 -0
  131. package/docs/en/slide/slide-kpi-grid.md +55 -0
  132. package/docs/en/slide/slide-kpi-hero.md +58 -0
  133. package/docs/en/slide/slide-next-actions.md +49 -0
  134. package/docs/en/slide/slide-scorecard-table.md +54 -0
  135. package/docs/en/slide/slide-section.md +44 -0
  136. package/docs/en/slide/slide-source-line.md +34 -0
  137. package/docs/en/ui/alert-dialog.md +42 -0
  138. package/docs/en/ui/avatar.md +31 -0
  139. package/docs/en/ui/combobox.md +74 -0
  140. package/docs/en/ui/drawer.md +41 -0
  141. package/docs/en/ui/empty.md +1 -1
  142. package/docs/en/ui/error-state.md +4 -3
  143. package/docs/en/ui/field.md +42 -0
  144. package/docs/en/ui/hover-card.md +21 -0
  145. package/docs/en/ui/kbd.md +17 -0
  146. package/docs/en/ui/loading.md +1 -1
  147. package/docs/en/ui/pagination.md +36 -0
  148. package/docs/en/ui/radio-group.md +21 -0
  149. package/docs/en/ui/toast.md +44 -0
  150. package/docs/en/ui/toggle-group.md +4 -3
  151. package/docs/en/ui-and-theming.md +1 -1
  152. package/docs/index.json +1184 -114
  153. package/docs/ja/agent-skills.md +1 -1
  154. package/docs/ja/changelog.md +84 -0
  155. package/docs/ja/cli-reference.md +29 -0
  156. package/docs/ja/components.md +68 -101
  157. package/docs/ja/doc/delta-text.md +40 -0
  158. package/docs/ja/doc/doc-action-items.md +49 -0
  159. package/docs/ja/doc/doc-callout.md +38 -0
  160. package/docs/ja/doc/doc-data-table.md +60 -0
  161. package/docs/ja/doc/doc-executive-summary.md +64 -0
  162. package/docs/ja/doc/doc-figure.md +56 -0
  163. package/docs/ja/doc/doc-key-findings.md +61 -0
  164. package/docs/ja/doc/doc-kpi-scorecard.md +80 -0
  165. package/docs/ja/doc/doc-notes-and-sources.md +43 -0
  166. package/docs/ja/doc/doc-report-header.md +46 -0
  167. package/docs/ja/page-types/csv.md +83 -0
  168. package/docs/ja/page-types/doc.md +83 -0
  169. package/docs/ja/page-types/excel.md +82 -0
  170. package/docs/ja/page-types/slide.md +133 -0
  171. package/docs/ja/page-types.md +47 -0
  172. package/docs/ja/pages-and-metadata.md +15 -0
  173. package/docs/ja/parts/area-chart.md +85 -0
  174. package/docs/ja/parts/bar-chart.md +95 -0
  175. package/docs/ja/parts/bar-list.md +58 -0
  176. package/docs/ja/parts/category-bar.md +36 -0
  177. package/docs/ja/parts/chart-frame.md +36 -0
  178. package/docs/ja/parts/data-table.md +22 -0
  179. package/docs/ja/parts/delta.md +51 -0
  180. package/docs/ja/parts/donut-chart.md +66 -0
  181. package/docs/ja/parts/echart.md +3 -0
  182. package/docs/ja/parts/format.md +44 -0
  183. package/docs/ja/parts/funnel-steps.md +27 -8
  184. package/docs/ja/parts/heatmap.md +45 -0
  185. package/docs/ja/parts/kpi-card.md +56 -0
  186. package/docs/ja/parts/legend.md +36 -0
  187. package/docs/ja/parts/line-chart.md +84 -0
  188. package/docs/ja/parts/metric-value.md +3 -2
  189. package/docs/ja/parts/page-shell.md +1 -1
  190. package/docs/ja/parts/progress-circle.md +34 -0
  191. package/docs/ja/parts/sample-data.md +61 -0
  192. package/docs/ja/parts/scatter-chart.md +69 -0
  193. package/docs/ja/parts/sparkline.md +2 -2
  194. package/docs/ja/parts/tracker.md +32 -0
  195. package/docs/ja/parts/trend-indicator.md +17 -1
  196. package/docs/ja/parts/updated-at.md +27 -0
  197. package/docs/ja/parts/waterfall-chart.md +61 -0
  198. package/docs/ja/routing.md +8 -86
  199. package/docs/ja/slide/slide-chart-full.md +48 -0
  200. package/docs/ja/slide/slide-chart-insight.md +52 -0
  201. package/docs/ja/slide/slide-columns.md +46 -0
  202. package/docs/ja/slide/slide-comparison.md +68 -0
  203. package/docs/ja/slide/slide-cover.md +39 -0
  204. package/docs/ja/slide/slide-exec-summary.md +47 -0
  205. package/docs/ja/slide/slide-heading.md +38 -0
  206. package/docs/ja/slide/slide-kpi-grid.md +55 -0
  207. package/docs/ja/slide/slide-kpi-hero.md +58 -0
  208. package/docs/ja/slide/slide-next-actions.md +49 -0
  209. package/docs/ja/slide/slide-scorecard-table.md +54 -0
  210. package/docs/ja/slide/slide-section.md +44 -0
  211. package/docs/ja/slide/slide-source-line.md +34 -0
  212. package/docs/ja/ui/alert-dialog.md +41 -0
  213. package/docs/ja/ui/avatar.md +31 -0
  214. package/docs/ja/ui/combobox.md +74 -0
  215. package/docs/ja/ui/drawer.md +41 -0
  216. package/docs/ja/ui/empty.md +1 -1
  217. package/docs/ja/ui/error-state.md +4 -3
  218. package/docs/ja/ui/field.md +42 -0
  219. package/docs/ja/ui/hover-card.md +21 -0
  220. package/docs/ja/ui/kbd.md +16 -0
  221. package/docs/ja/ui/loading.md +1 -1
  222. package/docs/ja/ui/pagination.md +36 -0
  223. package/docs/ja/ui/radio-group.md +21 -0
  224. package/docs/ja/ui/toast.md +46 -0
  225. package/docs/ja/ui/toggle-group.md +4 -3
  226. package/docs/ja/ui-and-theming.md +14 -7
  227. package/package.json +43 -29
  228. package/registry/ui/accordion.tsx +76 -0
  229. package/registry/ui/alert-dialog.tsx +189 -0
  230. package/registry/ui/alert.tsx +80 -0
  231. package/registry/ui/app-shell.tsx +424 -0
  232. package/registry/ui/area-chart.tsx +3960 -0
  233. package/registry/ui/attention-list.tsx +465 -0
  234. package/registry/ui/avatar.tsx +110 -0
  235. package/registry/ui/badge.tsx +56 -0
  236. package/registry/ui/bar-chart.tsx +3954 -0
  237. package/registry/ui/bar-list.tsx +3998 -0
  238. package/registry/ui/box-plot-chart.tsx +4214 -0
  239. package/registry/ui/breadcrumb.tsx +128 -0
  240. package/registry/ui/button.tsx +62 -0
  241. package/registry/ui/calendar.tsx +223 -0
  242. package/registry/ui/card.tsx +107 -0
  243. package/registry/ui/category-bar.tsx +1498 -0
  244. package/registry/ui/chart-frame.tsx +1604 -0
  245. package/registry/ui/checkbox.tsx +30 -0
  246. package/registry/ui/collapsible.tsx +23 -0
  247. package/registry/ui/combobox.tsx +310 -0
  248. package/registry/ui/command.tsx +198 -0
  249. package/registry/ui/dashboard-card.tsx +217 -0
  250. package/registry/ui/data-table.tsx +896 -157
  251. package/registry/ui/date-range-picker.tsx +544 -0
  252. package/registry/ui/delta.tsx +350 -0
  253. package/registry/ui/dialog.tsx +161 -0
  254. package/registry/ui/donut-chart.tsx +4006 -0
  255. package/registry/ui/drawer.tsx +229 -0
  256. package/registry/ui/dropdown-menu.tsx +274 -0
  257. package/registry/ui/echart.tsx +1178 -0
  258. package/registry/ui/field.tsx +240 -0
  259. package/registry/ui/filter-bar.tsx +551 -0
  260. package/registry/ui/funnel-steps.tsx +3843 -0
  261. package/registry/ui/heatmap.tsx +2027 -0
  262. package/registry/ui/histogram-chart.tsx +4284 -0
  263. package/registry/ui/hover-card.tsx +52 -0
  264. package/registry/ui/input-group.tsx +160 -0
  265. package/registry/ui/input.tsx +24 -0
  266. package/registry/ui/kbd.tsx +30 -0
  267. package/registry/ui/kpi-card.tsx +905 -0
  268. package/registry/ui/label.tsx +22 -0
  269. package/registry/ui/legend.tsx +3817 -0
  270. package/registry/ui/line-chart.tsx +3958 -0
  271. package/registry/ui/metric-value.tsx +62 -0
  272. package/registry/ui/multi-select.tsx +382 -0
  273. package/registry/ui/page-shell.tsx +420 -0
  274. package/registry/ui/pagination.tsx +140 -0
  275. package/registry/ui/paired-chart.tsx +4086 -0
  276. package/registry/ui/placeholder.tsx +36 -0
  277. package/registry/ui/popover.tsx +92 -0
  278. package/registry/ui/progress-circle.tsx +1033 -0
  279. package/registry/ui/progress.tsx +85 -0
  280. package/registry/ui/radio-group.tsx +39 -0
  281. package/registry/ui/sample-data.tsx +230 -0
  282. package/registry/ui/scatter-chart.tsx +4503 -0
  283. package/registry/ui/scroll-area.tsx +56 -0
  284. package/registry/ui/searchable-select.tsx +352 -0
  285. package/registry/ui/section-header.tsx +43 -0
  286. package/registry/ui/segmented-control.tsx +76 -0
  287. package/registry/ui/select.tsx +255 -0
  288. package/registry/ui/separator.tsx +27 -0
  289. package/registry/ui/sheet.tsx +139 -0
  290. package/registry/ui/sidebar.tsx +725 -0
  291. package/registry/ui/skeleton.tsx +17 -0
  292. package/registry/ui/slider.tsx +56 -0
  293. package/registry/ui/sparkline.tsx +230 -0
  294. package/registry/ui/spinner.tsx +14 -0
  295. package/registry/ui/states.tsx +247 -0
  296. package/registry/ui/status-badge.tsx +286 -0
  297. package/registry/ui/switch.tsx +34 -0
  298. package/registry/ui/table.tsx +118 -0
  299. package/registry/ui/tabs.tsx +84 -0
  300. package/registry/ui/textarea.tsx +22 -0
  301. package/registry/ui/toast.tsx +250 -0
  302. package/registry/ui/toggle-group.tsx +91 -0
  303. package/registry/ui/toggle.tsx +47 -0
  304. package/registry/ui/tooltip.tsx +72 -0
  305. package/registry/ui/tracker.tsx +1015 -0
  306. package/registry/ui/trend-indicator.tsx +217 -0
  307. package/registry/ui/updated-at.tsx +276 -0
  308. package/registry/ui/waterfall-chart.tsx +4561 -0
  309. package/skills/vantage-add-feature/SKILL.md +14 -7
  310. package/skills/vantage-design/SKILL.md +62 -52
  311. package/skills/vantage-design/references/extract.md +26 -27
  312. package/skills/vantage-design/references/format.md +12 -172
  313. package/skills/vantage-design/references/presets.md +50 -110
  314. package/skills/vantage-pitfalls/SKILL.md +10 -1
  315. package/skills/vantage-slide/SKILL.md +71 -36
  316. package/templates/AGENTS.md +54 -16
  317. package/templates/agents/api.md +36 -0
  318. package/templates/agents/csv.md +2 -1
  319. package/templates/agents/doc.md +52 -3
  320. package/templates/agents/page.md +91 -10
  321. package/templates/agents/slide.md +90 -4
  322. package/templates/agents/xlsx.md +2 -1
  323. package/theme.css +247 -132
  324. package/dist/add-EISGSZAH.js +0 -6
  325. package/dist/add-EISGSZAH.js.map +0 -1
  326. package/dist/chunk-3G43C6OL.js.map +0 -1
  327. package/dist/chunk-5ZOP4SQR.js +0 -47
  328. package/dist/chunk-5ZOP4SQR.js.map +0 -1
  329. package/dist/chunk-A2UUGASH.js.map +0 -1
  330. package/dist/chunk-BCE22JSM.js.map +0 -1
  331. package/dist/chunk-DTDVSFRY.js +0 -29
  332. package/dist/chunk-DTDVSFRY.js.map +0 -1
  333. package/dist/chunk-EP6JHXSR.js.map +0 -1
  334. package/dist/chunk-JGRMRXXZ.js.map +0 -1
  335. package/dist/chunk-KLEIVDUV.js +0 -165
  336. package/dist/chunk-KLEIVDUV.js.map +0 -1
  337. package/dist/chunk-LSRMRIXA.js +0 -2227
  338. package/dist/chunk-LSRMRIXA.js.map +0 -1
  339. package/dist/chunk-PVTHHV7X.js.map +0 -1
  340. package/dist/chunk-PXRX5PEC.js.map +0 -1
  341. package/dist/chunk-RPZAALCX.js.map +0 -1
  342. package/dist/chunk-T3FLAGI6.js +0 -316
  343. package/dist/chunk-T3FLAGI6.js.map +0 -1
  344. package/dist/dev-NZRLOQCL.js.map +0 -1
  345. package/dist/doctor-VFKEMR54.js.map +0 -1
  346. package/dist/preview-QDCIVVSR.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ # SlideKpiGrid
2
+
3
+ > 2〜4 個の KPI を並べるスコアボード。値・増減・目標。
4
+
5
+ 2〜4 個の KPI カードを横に並べるスコアボードです。各カードにラベル・値・増減・目標が入り、幅は等分されます。
6
+
7
+ ```tsx
8
+ import { SlideKpiGrid } from "@squadbase/vantage/slide";
9
+ import type { SlideKpiGridProps, SlideKpiGridItem, SlideKpiGridDelta } from "@squadbase/vantage/slide";
10
+ ```
11
+
12
+ > [!NOTE]
13
+ > これは **`<Slide>` 1 枚の中身**です。`<Slide>` 自体は持たないので、`<Slide>` の直下に置いてください。ルートはキャンバス(1920×1080)いっぱい(100%)に広がり、`className` は受けません。余白・文字サイズ・グリッドは block の中で決まっている(1920×1080 の 12 カラム)ので、寸法を足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
14
+
15
+ ## props
16
+
17
+ | Prop | Type | Default | 説明 |
18
+ | --- | --- | --- | --- |
19
+ | `title` | `string` | | 結論を 1 文で書いた見出し(アクションタイトル)。**必須**。 |
20
+ | `items` | `SlideKpiGridItem[]` | | KPI。2〜4 個。**必須**。各要素は下の `items[].…` の行。 |
21
+ | `items[].label` | `string` | | 指標名。**必須**。 |
22
+ | `items[].value` | `number \| null` | | 数値。`null` は「—」と表示される。**必須**。`format` で整形される。 |
23
+ | `items[].format` | `ValueFormat` | | 値の整形(`"currency"` / `"percent"` / `{ type: "number", unit: "社" }` など)。`delta` と `target` の既定の整形にもなる。 |
24
+ | `items[].display` | `string` | | 表示する文字だけを置き換える(元の数値は `value` のまま `data-raw` に残る)。 |
25
+ | `items[].delta` | `SlideKpiGridDelta` | | `{ value: number; format?: ValueFormat }`。増減の大きさを符号付きで(例: `0.074` と `format: "percent"` で「+7.4%」)。向きは符号で決まり、▲ ▼ と「増」「減」も出る。`format` の既定は item の `format`。 |
26
+ | `items[].betterWhen` | `"up" \| "down"` | `"up"` | `delta` のどちらの向きが良いか。色が決まる。 |
27
+ | `items[].comparisonLabel` | `string` | | `delta` の比較相手(「前月比」)。 |
28
+ | `items[].target` | `number` | | 目標。`format` は `value` と同じ。「目標 …(達成率 …)」と表示される。達成率は value ÷ target(`betterWhen` が `"down"` なら target ÷ value)。 |
29
+ | `asOf` | `string` | | 数字を取った日。日付のみ(例: `"2026-10-01"`)。block が「2026-10-01 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
30
+ | `source` | `string` | | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
31
+
32
+ ## 使い方
33
+
34
+ ```tsx
35
+ import { Slide, SlideKpiGrid } from "@squadbase/vantage/slide";
36
+
37
+ <Slide>
38
+ <SlideKpiGrid
39
+ title="売上と継続率は計画どおり、新規獲得だけが未達"
40
+ items={[
41
+ { label: "月次売上", value: 540_000_000, format: "currency", delta: { value: 0.074, format: "percent" }, comparisonLabel: "前月比", target: 520_000_000 },
42
+ { label: "継続率", value: 0.982, format: { type: "percent", digits: 1 }, delta: { value: 0.004 }, comparisonLabel: "前月比", target: 0.98 },
43
+ { label: "新規獲得", value: 38, format: { type: "number", unit: "社" }, delta: { value: -4 }, comparisonLabel: "前月比", target: 50 },
44
+ ]}
45
+ asOf="2026-10-01"
46
+ source="社内 BI"
47
+ />
48
+ </Slide>
49
+ ```
50
+
51
+ ## 注意
52
+
53
+ - 5 個以上は描画されますが `console.warn` が出ます。スライドを分けてください。
54
+ - 値・増減・目標は数値で渡します。整形は `format` が行い、文字を変えたいときだけ `display` を使います。
55
+ - 「目標 …(達成率 …)」「増」「減」などの文言は block が出す日本語固定です。
@@ -0,0 +1,58 @@
1
+ # SlideKpiHero
2
+
3
+ > 1 つの数字を主役にする 1 枚。値・増減・推移の線。
4
+
5
+ 1 つの数字を大きく見せる 1 枚です。左 6 カラムにラベルと値(と増減)、右 6 カラムに推移の線を置きます。`trend` を渡さなければ数字が全幅を使います。
6
+
7
+ ```tsx
8
+ import { SlideKpiHero } from "@squadbase/vantage/slide";
9
+ import type { SlideKpiHeroProps, SlideKpiHeroDelta } from "@squadbase/vantage/slide";
10
+ ```
11
+
12
+ > [!NOTE]
13
+ > これは **`<Slide>` 1 枚の中身**です。`<Slide>` 自体は持たないので、`<Slide>` の直下に置いてください。ルートはキャンバス(1920×1080)いっぱい(100%)に広がり、`className` は受けません。余白・文字サイズ・グリッドは block の中で決まっている(1920×1080 の 12 カラム)ので、寸法を足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
14
+
15
+ ## props
16
+
17
+ | Prop | Type | Default | 説明 |
18
+ | --- | --- | --- | --- |
19
+ | `title` | `string` | | 結論を 1 文で書いた見出し(アクションタイトル)。**必須**。 |
20
+ | `label` | `string` | | 数字が何か(「月次売上」)。**必須**。 |
21
+ | `value` | `number \| null` | | 数値。`null` は「—」と表示される。**必須**。`format` で整形される(元の数値は `data-raw` に残り、書き出しやテストで使う)。 |
22
+ | `format` | `ValueFormat` | | 値の整形(`"currency"` / `"percent"` など)。`delta` の既定の整形にもなる。 |
23
+ | `display` | `string` | | 表示する文字だけを置き換える(元の数値は `value` のまま)。 |
24
+ | `delta` | `SlideKpiHeroDelta` | | `{ value: number; format?: ValueFormat }`。増減の大きさを符号付きで(例: `0.074` と `format: "percent"` で「+7.4%」)。向きは符号で決まり、▲ ▼ と「増」「減」も出る。`format` の既定は `format`。省くと増減は出ない。 |
25
+ | `betterWhen` | `"up" \| "down"` | `"up"` | `delta` のどちらの向きが良いか。色が決まる。 |
26
+ | `comparisonLabel` | `string` | | `delta` の比較相手(「前月比」)。 |
27
+ | `trend` | `{ x: string; y: number }[]` | | 右側の線の点。省くと数字だけの 1 枚になる。 |
28
+ | `asOf` | `string` | | 数字を取った日。日付のみ(例: `"2026-10-01"`)。block が「2026-10-01 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
29
+ | `source` | `string` | | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
30
+
31
+ ## 使い方
32
+
33
+ ```tsx
34
+ import { Slide, SlideKpiHero } from "@squadbase/vantage/slide";
35
+
36
+ <Slide>
37
+ <SlideKpiHero
38
+ title="9 月の売上は過去最高の 5.4 億円"
39
+ label="月次売上"
40
+ value={540_000_000}
41
+ format="currency"
42
+ delta={{ value: 0.074, format: "percent" }}
43
+ comparisonLabel="前月比"
44
+ trend={[
45
+ { x: "4 月", y: 460_000_000 }, { x: "5 月", y: 480_000_000 }, { x: "6 月", y: 490_000_000 },
46
+ { x: "7 月", y: 500_000_000 }, { x: "8 月", y: 503_000_000 }, { x: "9 月", y: 540_000_000 },
47
+ ]}
48
+ asOf="2026-10-01"
49
+ source="社内 BI"
50
+ />
51
+ </Slide>
52
+ ```
53
+
54
+ ## 注意
55
+
56
+ - コストのように下がることが良い指標は `betterWhen="down"` と書きます。色は `betterWhen` に従い、向き(▲ ▼ と「増」「減」)は `delta.value` の符号で決まります。
57
+ - 「増」「減」「… 時点」「出典: …」は block が出す日本語固定の文言です。
58
+ - グラフは `EChart` でアニメーションなし。pptx への書き出しはその描画を待ちます。
@@ -0,0 +1,49 @@
1
+ # SlideNextActions
2
+
3
+ > 次の打ち手。担当・期限・確認する指標つきで 3〜5 件。
4
+
5
+ 次に何をするかを示す 1 枚で、多くのレポートの最後に置きます。アクションごとに担当・期限・確認する指標を添えられます。
6
+
7
+ ```tsx
8
+ import { SlideNextActions } from "@squadbase/vantage/slide";
9
+ import type { SlideNextActionsProps, SlideNextActionsItem } from "@squadbase/vantage/slide";
10
+ ```
11
+
12
+ > [!NOTE]
13
+ > これは **`<Slide>` 1 枚の中身**です。`<Slide>` 自体は持たないので、`<Slide>` の直下に置いてください。ルートはキャンバス(1920×1080)いっぱい(100%)に広がり、`className` は受けません。余白・文字サイズ・グリッドは block の中で決まっている(1920×1080 の 12 カラム)ので、寸法を足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
14
+
15
+ ## props
16
+
17
+ | Prop | Type | 説明 |
18
+ | --- | --- | --- |
19
+ | `title` | `string` | 決定や計画を 1 文で書いた見出し。**必須**。 |
20
+ | `items` | `SlideNextActionsItem[]` | 打ち手。3〜5 件。**必須**。各要素は下の `items[].…` の行。 |
21
+ | `items[].action` | `string` | 何をするか(目的語から始めて 1 文。40 文字程度まで)。**必須**。 |
22
+ | `items[].owner` | `string` | 担当。 |
23
+ | `items[].due` | `string` | 期限。書いたまま 1 行で表示される(「10/31」。10 文字程度まで)。 |
24
+ | `items[].metric` | `string` | 確認する指標。 |
25
+ | `asOf` | `string` | 数字を取った日。日付のみ(例: `"2026-10-01"`)。block が「2026-10-01 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
26
+ | `source` | `string` | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
27
+
28
+ ## 使い方
29
+
30
+ ```tsx
31
+ import { Slide, SlideNextActions } from "@squadbase/vantage/slide";
32
+
33
+ <Slide>
34
+ <SlideNextActions
35
+ title="解約と新規獲得の施策を 3 つ、11 月末までに始める"
36
+ items={[
37
+ { action: "解約予兆スコアの上位 50 社に CS が連絡する", owner: "CS 部 山田", due: "10/31", metric: "解約率 1.5% 以下" },
38
+ { action: "紹介プログラムの特典を見直す", owner: "マーケ 佐藤", due: "11/15", metric: "紹介経由の新規 20 社" },
39
+ { action: "料金ページの導線を改善する", owner: "プロダクト 鈴木", due: "11/30", metric: "申込率 +1pt" },
40
+ ]}
41
+ />
42
+ </Slide>
43
+ ```
44
+
45
+ ## 注意
46
+
47
+ - 担当・期限・確認する指標の列は、1 件でも値があるときだけ出ます。
48
+ - 列見出し(担当 / 期限 / 確認する指標)は block が出す日本語固定で、上書きできません。
49
+ - `due` は書いたまま表示されます(「10/31」「来週まで」)。6 件以上は `console.warn` が出ます。
@@ -0,0 +1,54 @@
1
+ # SlideScorecardTable
2
+
3
+ > 指標ごとの目標と実績、状態を並べるスコアカード表。
4
+
5
+ 指標ごとに目標・実績・達成率と、状態(順調 / 要注意 / 遅延)を並べる表の 1 枚です。状態は色付きの点と言葉の両方で示すので、色だけに頼りません。
6
+
7
+ ```tsx
8
+ import { SlideScorecardTable } from "@squadbase/vantage/slide";
9
+ import type { SlideScorecardTableProps, SlideScorecardRow, SlideScorecardStatus } from "@squadbase/vantage/slide";
10
+ ```
11
+
12
+ > [!NOTE]
13
+ > これは **`<Slide>` 1 枚の中身**です。`<Slide>` 自体は持たないので、`<Slide>` の直下に置いてください。ルートはキャンバス(1920×1080)いっぱい(100%)に広がり、`className` は受けません。余白・文字サイズ・グリッドは block の中で決まっている(1920×1080 の 12 カラム)ので、寸法を足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
14
+
15
+ ## props
16
+
17
+ | Prop | Type | Default | 説明 |
18
+ | --- | --- | --- | --- |
19
+ | `title` | `string` | | 結論を 1 文で書いた見出し(アクションタイトル)。**必須**。 |
20
+ | `rows` | `SlideScorecardRow[]` | | 行。8 行まで。**必須**。各要素は下の `rows[].…` の行。 |
21
+ | `rows[].metric` | `string` | | 指標名(20 文字程度まで)。**必須**。 |
22
+ | `rows[].value` | `number \| null` | | 実績。`null` は「—」と表示される。**必須**。 |
23
+ | `rows[].format` | `ValueFormat` | | `value` と `target` の整形(`"currency"` / `"percent"` など)。 |
24
+ | `rows[].display` | `string` | | 表示する実績の文字だけを置き換える(元の数値は `value` のまま)。 |
25
+ | `rows[].target` | `number` | | 目標。`format` は `value` と同じ。どれかの行に目標があると達成率の列が出る(value ÷ target)。 |
26
+ | `rows[].betterWhen` | `"up" \| "down"` | `"up"` | どちらの向きが良いか。`"down"` なら達成率は target ÷ value になり、コストの目標を下回ると 100% を超える。 |
27
+ | `rows[].status` | `SlideScorecardStatus` | | `"on"`(順調)/ `"risk"`(要注意)/ `"off"`(遅延)。値から導かず、渡したものをそのまま出す。**必須**。 |
28
+ | `columns` | `Partial<Record<"metric" \| "target" \| "actual" \| "attainment" \| "status", string>>` | | 見出しの語を差し替える。省いた列は既定(指標 / 目標 / 実績 / 達成率 / 状態)。状態の言葉(順調 / 要注意 / 遅延)は上書きできない。 |
29
+ | `asOf` | `string` | | 数字を取った日。日付のみ(例: `"2026-10-01"`)。block が「2026-10-01 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
30
+ | `source` | `string` | | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
31
+
32
+ ## 使い方
33
+
34
+ ```tsx
35
+ import { Slide, SlideScorecardTable } from "@squadbase/vantage/slide";
36
+
37
+ <Slide>
38
+ <SlideScorecardTable
39
+ title="4 指標のうち 2 つが目標どおり、解約と新規が遅れている"
40
+ rows={[
41
+ { metric: "月次売上", value: 540_000_000, target: 520_000_000, format: "currency", status: "on" },
42
+ { metric: "継続率", value: 0.982, target: 0.98, format: { type: "percent", digits: 1 }, status: "on" },
43
+ { metric: "解約率", value: 0.018, target: 0.015, format: { type: "percent", digits: 1 }, betterWhen: "down", status: "risk" },
44
+ { metric: "新規獲得", value: 38, target: 50, format: { type: "number", unit: "社" }, status: "off" },
45
+ ]}
46
+ asOf="2026-10-01"
47
+ source="社内 BI"
48
+ />
49
+ </Slide>
50
+ ```
51
+
52
+ ## 注意
53
+
54
+ - 7 行からは文字が本文から注記のサイズに下がります。9 行以上は描画されますが `console.warn` が出ます。
@@ -0,0 +1,44 @@
1
+ # SlideSection
2
+
3
+ > 章の区切りの 1 枚。章タイトルと、任意で目次。
4
+
5
+ 章の区切りに置く 1 枚です。左に章タイトル、`items` を渡すと右に目次(番号つきの一覧)を出し、`current` の章を強調します。
6
+
7
+ ```tsx
8
+ import { SlideSection } from "@squadbase/vantage/slide";
9
+ import type { SlideSectionProps } from "@squadbase/vantage/slide";
10
+ ```
11
+
12
+ > [!NOTE]
13
+ > これは **`<Slide>` 1 枚の中身**です。`<Slide>` 自体は持たないので、`<Slide>` の直下に置いてください。ルートはキャンバス(1920×1080)いっぱい(100%)に広がり、`className` は受けません。余白・文字サイズ・グリッドは block の中で決まっている(1920×1080 の 12 カラム)ので、寸法を足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
14
+
15
+ ## props
16
+
17
+ | Prop | Type | 説明 |
18
+ | --- | --- | --- |
19
+ | `title` | `string` | 章のタイトル。**必須**。 |
20
+ | `index` | `number` | 章番号。タイトルの上に「02」のように 2 桁で出る。 |
21
+ | `lead` | `string` | その章が何に答えるかを 1 行で。 |
22
+ | `items` | `string[]` | デッキの章の一覧。右側に番号つきの目次として出る。1 行ずつなので 6 件ほどまで。省くとタイトルが全幅を使う。 |
23
+ | `current` | `number` | `items` のうち強調する章(1 始まり)。 |
24
+
25
+ ## 使い方
26
+
27
+ ```tsx
28
+ import { Slide, SlideSection } from "@squadbase/vantage/slide";
29
+
30
+ <Slide>
31
+ <SlideSection
32
+ index={2}
33
+ title="解約の動向"
34
+ lead="どの層が、いつ離れているか"
35
+ items={["全体像", "解約の動向", "要因の分析", "次の打ち手"]}
36
+ current={2}
37
+ />
38
+ </Slide>
39
+ ```
40
+
41
+ ## 注意
42
+
43
+ - 段階表示(reveal)は持ちません。必要なら呼び出し側で `Steps` などで包んでください。
44
+ - 目次に出る番号は `items` の順で自動採番されます。`index` は章番号の表示だけに使われます。
@@ -0,0 +1,34 @@
1
+ # SlideSourceLine
2
+
3
+ > [部品] スライド 1 枚の足元の 1 行。時点・出典・ページ番号。
4
+
5
+ スライド 1 枚の足元に置く 1 行です。データの時点と出典、任意で右端にページ番号を出します。12 カラムのグリッドの最下段に置く**部品**で、1 枚まるごとの block ではありません。出すものがなければ何も描きません。
6
+
7
+ ```tsx
8
+ import { SlideSourceLine } from "@squadbase/vantage/slide";
9
+ import type { SlideSourceLineProps } from "@squadbase/vantage/slide";
10
+ ```
11
+
12
+ > [!NOTE]
13
+ > これは **スライドの部品**で、1 枚まるごとの block ではありません。`<Slide>` 内の 12 カラムのグリッドの行として置きます(ルートはキャンバスいっぱい(100%×100%)には広がりません)。寸法はすべて部品の中で決まっているので、足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
14
+
15
+ ## props
16
+
17
+ | Prop | Type | 説明 |
18
+ | --- | --- | --- |
19
+ | `asOf` | `string` | 数字を取った日。日付のみ(例: `"2026-10-20"`)。「2026-10-20 時点」と表示される。「時点」は書かない。 |
20
+ | `source` | `string` | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
21
+ | `page` | `{ current: number; total: number }` | 右端に「3 / 12」と出すページ番号。呼び出し側から渡す。 |
22
+
23
+ ## 使い方
24
+
25
+ ```tsx
26
+ import { SlideSourceLine } from "@squadbase/vantage/slide";
27
+
28
+ <SlideSourceLine asOf="2026-10-20" source="社内 BI" page={{ current: 3, total: 12 }} />
29
+ ```
30
+
31
+ ## 注意
32
+
33
+ - ページ番号は SquadKit がスライドの位置を読めないため、`page` で渡します。
34
+ - 「… 時点」「出典: …」は固定の日本語です。
@@ -0,0 +1,41 @@
1
+ # Alert Dialog
2
+
3
+ > 取り消せない操作の前に確認するモーダル。
4
+
5
+ 削除など取り消せない操作の前に、ユーザーの明示的な返答を求めるモーダルです。
6
+ [`Dialog`](ui/dialog) と違い、背景のクリックでは閉じません。
7
+
8
+ ```tsx
9
+ import {
10
+ AlertDialog,
11
+ AlertDialogTrigger,
12
+ AlertDialogContent,
13
+ AlertDialogHeader,
14
+ AlertDialogMedia,
15
+ AlertDialogTitle,
16
+ AlertDialogDescription,
17
+ AlertDialogFooter,
18
+ AlertDialogCancel,
19
+ AlertDialogAction,
20
+ } from "@squadbase/vantage/ui";
21
+ ```
22
+
23
+ ## パーツ
24
+
25
+ | パーツ | 役割 |
26
+ | --- | --- |
27
+ | `AlertDialog` | 状態。`open` / `defaultOpen` / `onOpenChange` |
28
+ | `AlertDialogTrigger` | 開くきっかけ。`render` でボタンにする |
29
+ | `AlertDialogContent` | 本体。`size` で幅を選ぶ |
30
+ | `AlertDialogMedia` | 見出し横のアイコン枠 |
31
+ | `AlertDialogHeader` / `AlertDialogTitle` / `AlertDialogDescription` | 見出し |
32
+ | `AlertDialogFooter` | ボタン行 |
33
+ | `AlertDialogCancel` | 閉じるボタン(既定 `variant="outline"`) |
34
+ | `AlertDialogAction` | 実行ボタン。`Button` の props をそのまま取る |
35
+
36
+ | Prop | Type | Default | 説明 |
37
+ | --- | --- | --- | --- |
38
+ | `size` | `"default" \| "sm"` | `"default"` | `AlertDialogContent` に渡す。`sm` はボタンを 2 列に並べる。 |
39
+
40
+ `AlertDialogAction` は**押しても自動では閉じません**。処理が終わったら `open` を `false` に
41
+ するか、閉じてよいなら `AlertDialogCancel` と同じく `render` で包んでください。
@@ -0,0 +1,31 @@
1
+ # Avatar
2
+
3
+ > ユーザーの顔写真またはイニシャル。
4
+
5
+ ユーザーやオーナーを小さな丸で示します。画像が読み込めないとき・`src` が無いときは
6
+ `AvatarFallback` の中身(イニシャルなど)を出します。
7
+
8
+ ```tsx
9
+ import {
10
+ Avatar,
11
+ AvatarImage,
12
+ AvatarFallback,
13
+ AvatarBadge,
14
+ AvatarGroup,
15
+ AvatarGroupCount,
16
+ } from "@squadbase/vantage/ui";
17
+ ```
18
+
19
+ ## パーツ
20
+
21
+ | パーツ | 役割 |
22
+ | --- | --- |
23
+ | `Avatar` | 外枠。`size` で大きさを選ぶ |
24
+ | `AvatarImage` | 画像。読み込みに失敗すると描画されない |
25
+ | `AvatarFallback` | 画像が無いときの中身 |
26
+ | `AvatarBadge` | 右下の小さな丸(オンライン表示など) |
27
+ | `AvatarGroup` / `AvatarGroupCount` | 重ねて並べる。`AvatarGroupCount` は「+4」などの残数 |
28
+
29
+ | Prop | Type | Default | 説明 |
30
+ | --- | --- | --- | --- |
31
+ | `size` | `"default" \| "sm" \| "lg"` | `"default"` | `Avatar` に渡す。`sm` は 24px、`default` は 32px、`lg` は 40px。 |
@@ -0,0 +1,74 @@
1
+ # Combobox
2
+
3
+ > 入力して候補を絞り込むセレクト。
4
+
5
+ テキストを打って候補を絞り込み、1 つ(または複数)を選ぶ入力です。候補が数件なら
6
+ [`Select`](ui/select) のほうが手数が少なくて済みます。Base UI の `Combobox` の上に
7
+ 作っています。
8
+
9
+ ```tsx
10
+ import {
11
+ Combobox,
12
+ ComboboxInput,
13
+ ComboboxContent,
14
+ ComboboxEmpty,
15
+ ComboboxList,
16
+ ComboboxItem,
17
+ ComboboxGroup,
18
+ ComboboxLabel,
19
+ ComboboxCollection,
20
+ ComboboxSeparator,
21
+ ComboboxChips,
22
+ ComboboxChip,
23
+ ComboboxChipsInput,
24
+ ComboboxTrigger,
25
+ ComboboxValue,
26
+ useComboboxAnchor,
27
+ } from "@squadbase/vantage/ui";
28
+ ```
29
+
30
+ ## パーツ
31
+
32
+ | パーツ | 役割 |
33
+ | --- | --- |
34
+ | `Combobox` | 状態。`items` / `value` / `defaultValue` / `onValueChange` / `multiple` |
35
+ | `ComboboxInput` | 入力欄。`showTrigger`(既定 `true`)/ `showClear` で右端のボタンを出す |
36
+ | `ComboboxContent` | 候補のポップアップ。`side` / `align` / `anchor` |
37
+ | `ComboboxList` | 候補の並び。子に関数を渡すと、絞り込み後の `items` が 1 件ずつ渡る |
38
+ | `ComboboxItem` | 1 候補。`value` は必須 |
39
+ | `ComboboxEmpty` | 一致する候補が無いときの表示 |
40
+ | `ComboboxGroup` / `ComboboxLabel` / `ComboboxCollection` / `ComboboxSeparator` | グループ分け |
41
+ | `ComboboxChips` / `ComboboxChip` / `ComboboxChipsInput` | 複数選択をチップで見せる |
42
+ | `ComboboxTrigger` / `ComboboxValue` | 入力欄を使わずボタンで開く形 |
43
+ | `useComboboxAnchor` | チップ枠をポップアップの基準にするための ref |
44
+
45
+ | Prop | Type | Default | 説明 |
46
+ | --- | --- | --- | --- |
47
+ | `items` | `readonly unknown[]` | | `Combobox` に渡す候補。入力に応じて絞り込まれ、`ComboboxList` の関数に渡る。 |
48
+ | `multiple` | `boolean` | `false` | 複数選択にする。 |
49
+ | `onValueChange` | `(value) => void` | | 選択が変わったとき。単一選択では未選択の `null` も渡りうる。 |
50
+
51
+ ## 複数選択
52
+
53
+ `multiple` を付け、`ComboboxChips` の中にチップと `ComboboxChipsInput` を置きます。ポップアップを
54
+ チップ枠の幅に合わせるには `useComboboxAnchor()` の ref を両方に渡します。
55
+
56
+ ```tsx
57
+ const anchor = useComboboxAnchor();
58
+
59
+ <Combobox items={metrics} multiple>
60
+ <ComboboxChips ref={anchor}>
61
+ <ComboboxValue>
62
+ {(values: string[]) =>
63
+ values.map((v) => <ComboboxChip key={v}>{v}</ComboboxChip>)
64
+ }
65
+ </ComboboxValue>
66
+ <ComboboxChipsInput placeholder="指標を追加" />
67
+ </ComboboxChips>
68
+ <ComboboxContent anchor={anchor}>
69
+ <ComboboxList>
70
+ {(item: string) => <ComboboxItem key={item} value={item}>{item}</ComboboxItem>}
71
+ </ComboboxList>
72
+ </ComboboxContent>
73
+ </Combobox>;
74
+ ```
@@ -0,0 +1,41 @@
1
+ # Drawer
2
+
3
+ > 画面の端からスワイプで出し入れするパネル。
4
+
5
+ 画面の下(または上下左右)から出てくるパネルです。スワイプで閉じられるので、モバイルでの
6
+ 詳細表示やアクション一覧に向いています。デスクトップで広い面積のフォームを出すなら
7
+ [`Sheet`](ui/sheet) が素直です。Base UI の `Drawer` の上に作っています。
8
+
9
+ ```tsx
10
+ import {
11
+ Drawer,
12
+ DrawerTrigger,
13
+ DrawerContent,
14
+ DrawerHeader,
15
+ DrawerTitle,
16
+ DrawerDescription,
17
+ DrawerFooter,
18
+ DrawerClose,
19
+ } from "@squadbase/vantage/ui";
20
+ ```
21
+
22
+ ## パーツ
23
+
24
+ | パーツ | 役割 |
25
+ | --- | --- |
26
+ | `Drawer` | 状態。`open` / `defaultOpen` / `onOpenChange`、向き、スナップポイント |
27
+ | `DrawerTrigger` | 開くきっかけ。`render` でボタンにする |
28
+ | `DrawerContent` | 本体。オーバーレイとポータルを内包する |
29
+ | `DrawerHeader` / `DrawerTitle` / `DrawerDescription` | 見出し |
30
+ | `DrawerFooter` | ボタン行 |
31
+ | `DrawerClose` | 閉じるトリガー |
32
+
33
+ | Prop | Type | Default | 説明 |
34
+ | --- | --- | --- | --- |
35
+ | `swipeDirection` | `"down" \| "up" \| "left" \| "right"` | `"down"` | `Drawer` に渡す。閉じるときにスワイプする向き(= 出てくる端)。 |
36
+ | `showSwipeHandle` | `boolean` | `false` | `Drawer` に渡す。つまみ(ハンドル)を表示する。 |
37
+ | `snapPoints` | `(number \| string)[]` | | `Drawer` に渡す。途中で止まる高さ(`0.5` や `"20rem"`)。 |
38
+ | `modal` | `boolean` | `true` | `Drawer` に渡す。`false` で背景を操作可能にし、オーバーレイを出さない。 |
39
+
40
+ `DrawerTitle` は支援技術のために必須です。見せたくない場合も置いた上で `className="sr-only"` に
41
+ してください。
@@ -10,7 +10,7 @@ import { Empty } from "@squadbase/vantage/ui";
10
10
 
11
11
  | Prop | Type | Default | 説明 |
12
12
  | --- | --- | --- | --- |
13
- | `title` | `string` | `"Nothing here yet"` | 見出し。 |
13
+ | `title` | `string` | `"表示できるデータがありません"` | 見出し。 |
14
14
  | `description` | `string` | | 見出しの下の補足文。 |
15
15
  | `icon` | `ReactNode` | | 見出しの上に置く絵柄。 |
16
16
  | `action` | `ReactNode` | | 下部に置く次の一手(ボタンやリンク)。 |
@@ -10,8 +10,9 @@ import { ErrorState } from "@squadbase/vantage/ui";
10
10
 
11
11
  | Prop | Type | Default | 説明 |
12
12
  | --- | --- | --- | --- |
13
- | `title` | `string` | `"Something went wrong"` | 見出し。 |
14
- | `message` | `ReactNode` | | 詳細。エラーメッセージをそのまま出せます。 |
13
+ | `title` | `string` | `"データを読み込めませんでした"` | 見出し。 |
14
+ | `message` | `ReactNode` | `"時間をおいて再試行してください。解決しない場合は管理者にお問い合わせください。"` | 何が起きたか、次に何をすればよいかを平易な言葉で。 |
15
+ | `details` | `ReactNode` | | 技術的な詳細(エラーメッセージやステータスコード)。「詳細を表示」の中に折りたたまれます。 |
15
16
  | `action` | `ReactNode` | | 再試行ボタンなど。 |
16
17
  | `className` | `string` | | 足すクラス。 |
17
18
 
@@ -34,7 +35,7 @@ export default function Customers() {
34
35
  if (error)
35
36
  return (
36
37
  <ErrorState
37
- message={error.message}
38
+ details={error.message}
38
39
  action={<Button variant="outline" onClick={() => refetch()}>再試行</Button>}
39
40
  />
40
41
  );
@@ -0,0 +1,42 @@
1
+ # Field
2
+
3
+ > ラベル・説明・エラーを入力と束ねるフォームのレイアウト部品。
4
+
5
+ 入力 1 つぶんのラベル・補足説明・エラーメッセージを、決まった間隔と向きで並べる部品です。
6
+ 入力そのものは [`Input`](ui/input) や [`Switch`](ui/switch) などを
7
+ 中に置きます。
8
+
9
+ ```tsx
10
+ import {
11
+ Field,
12
+ FieldLabel,
13
+ FieldDescription,
14
+ FieldError,
15
+ FieldContent,
16
+ FieldTitle,
17
+ FieldGroup,
18
+ FieldSet,
19
+ FieldLegend,
20
+ FieldSeparator,
21
+ } from "@squadbase/vantage/ui";
22
+ ```
23
+
24
+ ## パーツ
25
+
26
+ | パーツ | 役割 |
27
+ | --- | --- |
28
+ | `Field` | 入力 1 つぶんの外枠。`orientation` で並び方を選ぶ |
29
+ | `FieldLabel` | ラベル(`Label` を使う)。`htmlFor` で入力と結ぶ |
30
+ | `FieldDescription` | 補足説明 |
31
+ | `FieldError` | エラー。`children` か `errors`(`{ message }[]`)を渡す。空なら描画しない |
32
+ | `FieldContent` | 横並びのときにラベルと説明をまとめる列 |
33
+ | `FieldTitle` | `<label>` ではない見出し |
34
+ | `FieldGroup` | 複数の `Field` を縦に並べる |
35
+ | `FieldSet` / `FieldLegend` | `<fieldset>` / `<legend>` |
36
+ | `FieldSeparator` | 区切り線。中に文字も置ける |
37
+
38
+ | Prop | Type | Default | 説明 |
39
+ | --- | --- | --- | --- |
40
+ | `orientation` | `"vertical" \| "horizontal" \| "responsive"` | `"vertical"` | `Field` に渡す。`responsive` はコンテナ幅が広いときだけ横並びにする。 |
41
+ | `data-invalid` | `boolean` | | `Field` に付けるとラベルと説明がエラー色になる。入力には `aria-invalid` を付ける。 |
42
+ | `errors` | `Array<{ message?: string } \| undefined>` | | `FieldError` に渡す。複数あれば箇条書きにし、重複は 1 つにまとめる。 |
@@ -0,0 +1,21 @@
1
+ # Hover Card
2
+
3
+ > リンクにホバーすると出るプレビューカード。
4
+
5
+ リンクや用語にポインタを載せたとき(キーボードではフォーカスしたとき)に、補足の内容を
6
+ カードで見せます。指標の定義やユーザーのプロフィールなど、**読むだけ**の情報向けです。
7
+ 操作を伴うなら [`Popover`](ui/popover)、短い一言なら
8
+ [`Tooltip`](ui/tooltip) を使ってください。Base UI の `PreviewCard` の上に作っています。
9
+
10
+ ```tsx
11
+ import { HoverCard, HoverCardTrigger, HoverCardContent } from "@squadbase/vantage/ui";
12
+ ```
13
+
14
+ `HoverCardTrigger` は既定で `<a>` を描画します。別の要素にしたい場合は `render` を渡します。
15
+
16
+ | Prop | Type | Default | 説明 |
17
+ | --- | --- | --- | --- |
18
+ | `side` | `"top" \| "right" \| "bottom" \| "left"` | `"bottom"` | `HoverCardContent` に渡す。トリガーのどちら側に出すか。 |
19
+ | `align` | `"start" \| "center" \| "end"` | `"center"` | `HoverCardContent` に渡す。 |
20
+ | `sideOffset` | `number` | `4` | `HoverCardContent` とトリガーの距離(px)。 |
21
+ | `delay` | `number` | `600` | `HoverCardTrigger` に渡す。開くまでのミリ秒。 |
@@ -0,0 +1,16 @@
1
+ # Kbd
2
+
3
+ > キーボードのキー表示。
4
+
5
+ ショートカットキーを表示するための小さな部品です。複数のキーは `KbdGroup` で並べます。
6
+
7
+ ```tsx
8
+ import { Kbd, KbdGroup } from "@squadbase/vantage/ui";
9
+ ```
10
+
11
+ | Prop | Type | 説明 |
12
+ | --- | --- | --- |
13
+ | `Kbd` | `ComponentProps<"kbd">` | 1 つのキー。 |
14
+ | `KbdGroup` | `ComponentProps<"div">` | キーを横に並べる。 |
15
+
16
+ ボタンや [`Tooltip`](ui/tooltip) の中に置くと、周りの文字色に合わせて馴染みます。
@@ -12,7 +12,7 @@ import { Loading } from "@squadbase/vantage/ui";
12
12
 
13
13
  | Prop | Type | Default | 説明 |
14
14
  | --- | --- | --- | --- |
15
- | `label` | `string` | `"Loading…"` | スピナーの右に出すテキスト。 |
15
+ | `label` | `string` | `"読み込んでいます…"` | スピナーの右に出すテキスト。 |
16
16
  | `className` | `string` | | 足すクラス。既定では最小高 30vh で縦横中央に置かれます。 |
17
17
 
18
18
  レイアウトを保ったまま待たせたいときは [`Skeleton`](ui/skeleton)、ボタンの中など
@@ -0,0 +1,36 @@
1
+ # Pagination
2
+
3
+ > ページ送りのリンク列。
4
+
5
+ 一覧をページに分けたときのページ送りです。見た目だけの部品で、現在ページや総ページ数は
6
+ 持ちません — 状態は呼び出し側(URL の検索パラメータや `useState`)で管理します。
7
+
8
+ ```tsx
9
+ import {
10
+ Pagination,
11
+ PaginationContent,
12
+ PaginationItem,
13
+ PaginationLink,
14
+ PaginationPrevious,
15
+ PaginationNext,
16
+ PaginationEllipsis,
17
+ } from "@squadbase/vantage/ui";
18
+ ```
19
+
20
+ ## パーツ
21
+
22
+ | パーツ | 役割 |
23
+ | --- | --- |
24
+ | `Pagination` | `<nav>`。`aria-label="pagination"` 付き |
25
+ | `PaginationContent` / `PaginationItem` | `<ul>` / `<li>` |
26
+ | `PaginationLink` | 1 ページ分の `<a>`。`isActive` で現在ページを示す |
27
+ | `PaginationPrevious` / `PaginationNext` | 前後への `<a>`。`text` で文言を変える |
28
+ | `PaginationEllipsis` | 省略記号 |
29
+
30
+ | Prop | Type | Default | 説明 |
31
+ | --- | --- | --- | --- |
32
+ | `isActive` | `boolean` | | `PaginationLink` に渡す。`aria-current="page"` と枠線付きの見た目になる。 |
33
+ | `text` | `string` | `"Previous" / "Next"` | `PaginationPrevious` / `PaginationNext` のラベル(640px 未満では隠れる)。 |
34
+
35
+ リンクは素の `<a>` なので、`href` を渡すとそのまま遷移します。画面内の状態だけを変えたい場合は
36
+ `onClick` で `preventDefault()` してください。