@squadbase/vantage 0.6.2-dev1.5aae04e → 0.6.2-dev1.81c1bbe
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/dist/chunk-2IAPIOPS.js +152 -0
- package/dist/chunk-2IAPIOPS.js.map +1 -0
- package/dist/chunk-57GHR5LN.js +163 -0
- package/dist/chunk-57GHR5LN.js.map +1 -0
- package/dist/{chunk-XPQSTZUU.js → chunk-7S52M2SL.js} +4 -3
- package/dist/chunk-7S52M2SL.js.map +1 -0
- package/dist/chunk-JXFCSF3K.js +673 -0
- package/dist/chunk-JXFCSF3K.js.map +1 -0
- package/dist/{chunk-HKSVYMYJ.js → chunk-RU6WKEOG.js} +56 -927
- package/dist/chunk-RU6WKEOG.js.map +1 -0
- package/dist/components/index.d.ts +3 -243
- package/dist/components/index.js +5 -2
- package/dist/doc/index.d.ts +194 -2
- package/dist/doc/index.js +334 -3
- package/dist/doc/index.js.map +1 -1
- package/dist/format-U0cQl069.d.ts +243 -0
- package/dist/slide/index.d.ts +177 -1
- package/dist/slide/index.js +864 -1
- package/dist/slide/index.js.map +1 -1
- package/dist/table/index.js +5 -2
- package/dist/table/index.js.map +1 -1
- package/dist/ui/index.d.ts +4 -1
- package/dist/ui/index.js +3 -3
- package/dist/ui/index.js.map +1 -1
- package/docs/en/components.md +11 -2
- package/docs/en/doc/doc-action-items.md +49 -0
- package/docs/en/doc/doc-callout.md +38 -0
- package/docs/en/doc/doc-data-table.md +60 -0
- package/docs/en/doc/doc-executive-summary.md +64 -0
- package/docs/en/doc/doc-figure.md +56 -0
- package/docs/en/doc/doc-key-findings.md +61 -0
- package/docs/en/doc/doc-kpi-scorecard.md +80 -0
- package/docs/en/doc/doc-report-header.md +46 -0
- package/docs/en/parts/area-chart.md +99 -0
- package/docs/en/parts/bar-chart.md +91 -0
- package/docs/en/parts/bar-list.md +50 -0
- package/docs/en/parts/category-bar.md +37 -0
- package/docs/en/parts/chart-frame.md +39 -0
- package/docs/en/parts/donut-chart.md +72 -0
- package/docs/en/parts/funnel-steps.md +2 -1
- package/docs/en/parts/heatmap.md +53 -0
- package/docs/en/parts/legend.md +35 -0
- package/docs/en/parts/line-chart.md +94 -0
- package/docs/en/parts/progress-circle.md +33 -0
- package/docs/en/parts/sample-data.md +39 -0
- package/docs/en/parts/scatter-chart.md +56 -0
- package/docs/en/parts/tracker.md +36 -0
- package/docs/en/parts/updated-at.md +30 -0
- package/docs/en/parts/waterfall-chart.md +56 -0
- package/docs/en/slide/slide-chart-insight.md +52 -0
- package/docs/en/slide/slide-cover.md +39 -0
- package/docs/en/slide/slide-exec-summary.md +47 -0
- package/docs/en/slide/slide-kpi-grid.md +55 -0
- package/docs/en/slide/slide-kpi-hero.md +58 -0
- package/docs/en/slide/slide-next-actions.md +49 -0
- package/docs/en/slide/slide-scorecard-table.md +54 -0
- package/docs/en/ui/alert-dialog.md +42 -0
- package/docs/en/ui/avatar.md +31 -0
- package/docs/en/ui/combobox.md +74 -0
- package/docs/en/ui/drawer.md +41 -0
- package/docs/en/ui/empty.md +1 -1
- package/docs/en/ui/error-state.md +4 -3
- package/docs/en/ui/field.md +42 -0
- package/docs/en/ui/hover-card.md +21 -0
- package/docs/en/ui/kbd.md +17 -0
- package/docs/en/ui/loading.md +1 -1
- package/docs/en/ui/pagination.md +36 -0
- package/docs/en/ui/radio-group.md +21 -0
- package/docs/en/ui/toast.md +44 -0
- package/docs/en/ui/toggle-group.md +4 -3
- package/docs/index.json +697 -77
- package/docs/ja/components.md +10 -1
- package/docs/ja/doc/doc-action-items.md +49 -0
- package/docs/ja/doc/doc-callout.md +38 -0
- package/docs/ja/doc/doc-data-table.md +60 -0
- package/docs/ja/doc/doc-executive-summary.md +64 -0
- package/docs/ja/doc/doc-figure.md +56 -0
- package/docs/ja/doc/doc-key-findings.md +61 -0
- package/docs/ja/doc/doc-kpi-scorecard.md +80 -0
- package/docs/ja/doc/doc-report-header.md +46 -0
- package/docs/ja/parts/area-chart.md +49 -25
- package/docs/ja/parts/bar-chart.md +50 -24
- package/docs/ja/parts/bar-list.md +31 -8
- package/docs/ja/parts/chart-frame.md +36 -0
- package/docs/ja/parts/donut-chart.md +45 -26
- package/docs/ja/parts/funnel-steps.md +27 -8
- package/docs/ja/parts/heatmap.md +45 -0
- package/docs/ja/parts/legend.md +36 -0
- package/docs/ja/parts/line-chart.md +48 -22
- package/docs/ja/parts/sample-data.md +61 -0
- package/docs/ja/parts/scatter-chart.md +69 -0
- package/docs/ja/parts/updated-at.md +27 -0
- package/docs/ja/parts/waterfall-chart.md +61 -0
- package/docs/ja/slide/slide-chart-insight.md +52 -0
- package/docs/ja/slide/slide-cover.md +39 -0
- package/docs/ja/slide/slide-exec-summary.md +47 -0
- package/docs/ja/slide/slide-kpi-grid.md +55 -0
- package/docs/ja/slide/slide-kpi-hero.md +58 -0
- package/docs/ja/slide/slide-next-actions.md +49 -0
- package/docs/ja/slide/slide-scorecard-table.md +54 -0
- package/docs/ja/ui/empty.md +1 -1
- package/docs/ja/ui/error-state.md +4 -3
- package/docs/ja/ui/loading.md +1 -1
- package/docs/ja/ui/toggle-group.md +4 -3
- package/package.json +2 -2
- package/registry/ui/area-chart.tsx +45 -19
- package/registry/ui/bar-chart.tsx +45 -19
- package/registry/ui/bar-list.tsx +44 -17
- package/registry/ui/box-plot-chart.tsx +45 -19
- package/registry/ui/category-bar.tsx +44 -17
- package/registry/ui/chart-frame.tsx +44 -17
- package/registry/ui/delta.tsx +4 -4
- package/registry/ui/donut-chart.tsx +46 -19
- package/registry/ui/echart.tsx +171 -54
- package/registry/ui/heatmap.tsx +45 -19
- package/registry/ui/histogram-chart.tsx +45 -19
- package/registry/ui/legend.tsx +44 -17
- package/registry/ui/line-chart.tsx +45 -19
- package/registry/ui/page-shell.tsx +7 -7
- package/registry/ui/paired-chart.tsx +45 -19
- package/registry/ui/sample-data.tsx +1 -1
- package/registry/ui/scatter-chart.tsx +45 -19
- package/registry/ui/slider.tsx +1 -1
- package/registry/ui/status-badge.tsx +8 -8
- package/registry/ui/tooltip.tsx +6 -2
- package/registry/ui/tracker.tsx +9 -3
- package/registry/ui/trend-indicator.tsx +2 -2
- package/registry/ui/waterfall-chart.tsx +45 -19
- package/skills/vantage-design/SKILL.md +27 -25
- package/skills/vantage-design/references/extract.md +16 -14
- package/skills/vantage-design/references/format.md +6 -5
- package/skills/vantage-design/references/presets.md +60 -110
- package/skills/vantage-slide/SKILL.md +54 -36
- package/templates/AGENTS.md +2 -2
- package/templates/agents/doc.md +45 -0
- package/templates/agents/page.md +22 -1
- package/templates/agents/slide.md +55 -2
- package/theme.css +16 -15
- package/dist/chunk-HKSVYMYJ.js.map +0 -1
- package/dist/chunk-XPQSTZUU.js.map +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# SampleData
|
|
2
|
+
|
|
3
|
+
> まだ実データにつながっていない「見本の値」に印を付ける。
|
|
4
|
+
|
|
5
|
+
下書きの段階で、クエリをつなぐ前に並べた値を囲みます。囲んだ中の `KpiCard` と `DashboardCardPreset` が、見出しに
|
|
6
|
+
**「見本の値」のバッジ**を出します。バッジは色だけでなく言葉で伝え、ツールチップで意味も説明します。実データを
|
|
7
|
+
つなぎ終えたら `SampleData` を外します。
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { SampleData, SampleBadge } from "@squadbase/vantage/components";
|
|
11
|
+
import type { SampleDataProps, SampleBadgeProps } from "@squadbase/vantage/components";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## SampleData
|
|
15
|
+
|
|
16
|
+
| Prop | Type | Default | 説明 |
|
|
17
|
+
| --- | --- | --- | --- |
|
|
18
|
+
| `label` | `string` | `"見本の値"` | 印の文言。 |
|
|
19
|
+
| `children` | `ReactNode` | | 印を付けたい部品。 |
|
|
20
|
+
|
|
21
|
+
`SampleData` 自身は箱を持ちません(`display: contents`)。親の grid・subgrid から見ると中のカードが直接の子の
|
|
22
|
+
ままなので、`KpiCard` の行の区切りは揃ったままです。
|
|
23
|
+
|
|
24
|
+
カードは 1 枚につき印を 1 回だけ出します。`DashboardCardPreset` が見出しに出したら、その中のグラフや表は
|
|
25
|
+
重ねて出しません。素のグラフに印を付けたいときは `DashboardCardPreset` に入れてください。
|
|
26
|
+
|
|
27
|
+
## SampleBadge
|
|
28
|
+
|
|
29
|
+
バッジ単体です。`SampleData` の外で、見本であることを自分で示したいときに使います。`<span>` の属性もそのまま渡せます。
|
|
30
|
+
|
|
31
|
+
| Prop | Type | Default | 説明 |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
| `label` | `string` | `"見本の値"` | 印の文言。 |
|
|
34
|
+
| `className` | `string` | | 足すクラス。 |
|
|
35
|
+
|
|
36
|
+
## SampleClaim と useSampleMark
|
|
37
|
+
|
|
38
|
+
自作のカード部品が `SampleData` に対応するための部品です。`useSampleMark()` は、いま印を出すべきなら
|
|
39
|
+
`{ label }`、なければ `null` を返します。印を出したカードは、中身を `<SampleClaim>` で包んで、内側の部品が
|
|
40
|
+
同じ印を繰り返さないようにします。
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
import { SampleBadge, SampleClaim, useSampleMark } from "@squadbase/vantage/components";
|
|
44
|
+
|
|
45
|
+
function MyCard({ title, children }: { title: string; children: React.ReactNode }) {
|
|
46
|
+
const mark = useSampleMark();
|
|
47
|
+
return (
|
|
48
|
+
<section>
|
|
49
|
+
<h3>
|
|
50
|
+
{title} {mark && <SampleBadge label={mark.label} />}
|
|
51
|
+
</h3>
|
|
52
|
+
<SampleClaim>{children}</SampleClaim>
|
|
53
|
+
</section>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> [!NOTE]
|
|
59
|
+
> `SampleData` は「実データにまだつながっていない」ことを示します。速報値のように、実データだが確定前の値は
|
|
60
|
+
> `KpiCard` やグラフの `provisional` で示し、混ぜません。文中や見出しの中の値 1 つだけが仮なら
|
|
61
|
+
> [`Placeholder`](parts/placeholder) を使います。同じ値に両方は付けません。
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ScatterChart
|
|
2
|
+
|
|
3
|
+
> 2 つの数値の関係と外れ値を見せる型付きの散布図。大きさを足せばバブルチャートになる。
|
|
4
|
+
|
|
5
|
+
広告費と売上、客単価と購入頻度のように、2 つの数値の関係を点の位置で見ます。**行の配列(`data`)と、
|
|
6
|
+
横軸・縦軸の列名(`x` / `y`)**を渡すだけで描けます。`size` でバブル、`series` で色分け(`--chart-1..5` を
|
|
7
|
+
固定順)、`labelKey` で点の名前の表示ができます。散布図は位置で読むので、軸は既定でデータの範囲に合わせ、
|
|
8
|
+
0 起点にしません。
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { ScatterChart } from "@squadbase/vantage/components";
|
|
12
|
+
import type { ScatterChartProps, ScatterReferenceLine } from "@squadbase/vantage/components";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Default | 説明 |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `data` | `Record<string, unknown>[]` | | 行の配列。**必須**。1 行が 1 点。x か y が数値でない行は描かない。 |
|
|
18
|
+
| `x` | `string` | | 横軸に使う数値の列名。**必須**。 |
|
|
19
|
+
| `y` | `string` | | 縦軸に使う数値の列名。**必須**。 |
|
|
20
|
+
| `size` | `string` | | 点の面積に使う数値の列名。渡すとバブルチャートになる。0 を基準に面積が比例し、null・0 以下は最小の大きさ。 |
|
|
21
|
+
| `index` | `string` | | 点の名前の列名。ツールチップの見出しとデータ表の先頭列になる。 |
|
|
22
|
+
| `labelKey` | `string` | | 点の脇に書く文字の列名。重なるラベルは自動で間引く(ツールチップには常に出る)。`index` が無ければ名前も兼ねる。 |
|
|
23
|
+
| `series` | `string` | | 系列分けの列名。値ごとに色を分け、凡例を出す。6 つ以上は点の多い 5 つ +「その他」(灰色)にまとまる。 |
|
|
24
|
+
| `seriesLabel` | `string` | | 凡例の見出し。系列があって凡例が出るときだけ、凡例の左に小さく書く。 |
|
|
25
|
+
| `highlight` | `string \| string[]` | | 前面に出す系列(`series` 列の値)。指定した系列は不透明で手前に、指定外は薄く背面に描く。 |
|
|
26
|
+
| `referenceLines` | `ScatterReferenceLine[]` | | 基準線(目標・平均・しきい値)。`{ axis: "x" \| "y", value, label? }`。中立色の破線で、軸の範囲が線まで広がる。 |
|
|
27
|
+
| `colors` | `ChartSeriesColor[] \| Record<string, ChartSeriesColor>` | `["chart-1", …, "chart-5"]` | 系列色。`"chart-1"`〜`"chart-5"` か意味色。配列は系列の出現順、record は系列名ごと。「その他」は常に灰色。 |
|
|
28
|
+
| `labels` | `Record<string, string>` | | 列名・系列の値 → 表示名(軸のタイトル・凡例・ツールチップ・データ表)。 |
|
|
29
|
+
| `format` | `ValueFormat` | `"compact"` | x・y・size の既定の書式。 |
|
|
30
|
+
| `xFormat` | `ValueFormat` | | 横軸と x の値の書式。`format` より優先。 |
|
|
31
|
+
| `yFormat` | `ValueFormat` | | 縦軸と y の値の書式。`format` より優先。 |
|
|
32
|
+
| `sizeFormat` | `ValueFormat` | | `size` の値の書式(ツールチップ・データ表)。 |
|
|
33
|
+
| `valueFormatter` | `(value: number) => string` | | 書式を関数で直接渡す逃げ道。x・y・size すべてに使われ、`format` 系より優先。 |
|
|
34
|
+
| `minValue` | `number` | | 縦軸の下限。データが下回れば広がる。 |
|
|
35
|
+
| `maxValue` | `number` | | 縦軸の上限。データが超えれば広がる。 |
|
|
36
|
+
| `xMinValue` | `number` | | 横軸の下限。 |
|
|
37
|
+
| `xMaxValue` | `number` | | 横軸の上限。並べて比べる散布図には同じ範囲を渡す。 |
|
|
38
|
+
| `fitToData` | `boolean` | `true` | 両軸をデータの範囲に合わせる。`false` で両軸を 0 から始める。 |
|
|
39
|
+
| `showLegend` | `boolean` | `true` | 凡例を出す(系列が 2 つ以上のときだけ)。 |
|
|
40
|
+
| `showTooltip` | `boolean` | `true` | ホバーでツールチップを出す。 |
|
|
41
|
+
| `summary` | `string \| "auto"` | | 1 文要約。`"auto"` で点の数と y が最大の点から組む。省略時は要約なし。 |
|
|
42
|
+
| `title` | `string` | | グラフの見出し。プロット領域の読み上げ名にもなる。 |
|
|
43
|
+
| `isLoading` | `boolean` | | 読み込み中。最終形と同じ高さのスケルトンを出す。 |
|
|
44
|
+
| `emptyState` | `{ title?: string; description?: string; action?: ReactNode }` | | `data` が空のときの表示。高さは保たれる。既定の題は「表示できるデータがありません」。 |
|
|
45
|
+
| `height` | `number` | `288` | プロット領域の高さ(px)。 |
|
|
46
|
+
| `chartOptions` | `EChartsOption` | | 生成した option に最後に深くマージする逃げ道。 |
|
|
47
|
+
| `actions` | `boolean \| { includeTitle?: boolean }` | `false` | 右上に PNG 保存 / コピーのボタンを出す(ホバー時)。見出しと要約は既定で画像に含まれ、`includeTitle: false` で外せる。 |
|
|
48
|
+
| `fileName` | `string` | `"chart.png"` | PNG 保存時のファイル名(拡張子つき)。 |
|
|
49
|
+
| `className` | `string` | | 外枠(`<figure>`)のクラス。幅はここで決める。 |
|
|
50
|
+
| `ariaLabel` | `string` | | 見出しが無いときのプロット領域の読み上げ名。 |
|
|
51
|
+
|
|
52
|
+
## 基準線と強調
|
|
53
|
+
|
|
54
|
+
目標や平均は `referenceLines` で引きます。数が多い点の中に埋もれる少数の系列は `highlight` で手前に出し、
|
|
55
|
+
残りを薄くします。
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
<ScatterChart
|
|
59
|
+
data={rows}
|
|
60
|
+
x="spend"
|
|
61
|
+
y="roas"
|
|
62
|
+
series="channel"
|
|
63
|
+
highlight="SNS"
|
|
64
|
+
referenceLines={[{ axis: "y", value: 3, label: "目標 ROAS 3" }]}
|
|
65
|
+
/>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
> [!NOTE]
|
|
69
|
+
> 幅が 480px 未満になると、ラベルは y が高い 2 点だけになり、凡例はプロットの下に移ります。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# UpdatedAt
|
|
2
|
+
|
|
3
|
+
> データの鮮度を示す更新時刻。相対時刻に、タイムゾーンつきの絶対時刻を添える。
|
|
4
|
+
|
|
5
|
+
「23 分前に更新」のような鮮度の表示です。`<time>` 要素で、`dateTime` に ISO 形式の時刻を持ち、ツールチップと
|
|
6
|
+
`title` に**タイムゾーンつきの絶対時刻**(「2026/10/20 16:41 JST」)が出ます。表示は 60 秒ごとに更新されます。
|
|
7
|
+
「今」が大事なページでは `variant="absolute-first"` で「16:41 更新(23 分前)」と併記します。
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { UpdatedAt } from "@squadbase/vantage/components";
|
|
11
|
+
import type { UpdatedAtProps } from "@squadbase/vantage/components";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Default | 説明 |
|
|
15
|
+
| --- | --- | --- | --- |
|
|
16
|
+
| `at` | `Date \| string \| number` | | データを最後に更新した時刻。**必須**。 |
|
|
17
|
+
| `variant` | `"relative" \| "absolute-first"` | `"relative"` | `relative` は「23 分前に更新」。`absolute-first` は「16:41 更新(23 分前)」で、今日でなければ日付も付く。 |
|
|
18
|
+
| `timeZone` | `string` | | 絶対時刻に使う IANA タイムゾーン(`"Asia/Tokyo"` など)。省略時は実行環境のもの。 |
|
|
19
|
+
| `prefix` | `string` | | ラベルの前に置く文字(`"売上データ: "`)。 |
|
|
20
|
+
| `now` | `Date \| number` | | 「現在時刻」を固定する(テスト・見本用)。渡すと 60 秒ごとの更新を止める。 |
|
|
21
|
+
| `className` | `string` | | 足すクラス。 |
|
|
22
|
+
|
|
23
|
+
1 分未満の差は「たった今」と出ます。
|
|
24
|
+
|
|
25
|
+
> [!NOTE]
|
|
26
|
+
> 最初の描画(サーバーとクライアント)は ISO の `dateTime` だけの空の `<time>` で、マウント後にラベルが入ります。
|
|
27
|
+
> 表示が閲覧者の時計とタイムゾーンに依存するためで、ハイドレーションの不一致は起きません。
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# WaterfallChart
|
|
2
|
+
|
|
3
|
+
> 増減の積み上がりを見せる型付きのウォーターフォール。売上から粗利までの内訳や、前期からの増減要因に。
|
|
4
|
+
|
|
5
|
+
段ごとの増減が累計をどう動かすかを、階段状の棒で描きます。**行の配列(`data`)・段の名前の列(`index`)・
|
|
6
|
+
金額の列(`categories`)**を渡し、合計の段は `totals` に名前で挙げます。合計の行の値は省けば直前までの累計を
|
|
7
|
+
計算します。増加は `--positive-fill`、減少は `--negative-fill`、合計は `--chart-1`。各棒には符号つきの金額も
|
|
8
|
+
書くので、色だけで向きを伝えません。縦軸は常に 0 を含みます。
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { WaterfallChart } from "@squadbase/vantage/components";
|
|
12
|
+
import type { WaterfallChartProps, WaterfallMode } from "@squadbase/vantage/components";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Default | 説明 |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `data` | `Record<string, unknown>[]` | | 行の配列。**必須**。1 行が 1 段で、並びがそのまま左から右の順。値は number か数値文字列。null は棒を描かず「—」。 |
|
|
18
|
+
| `index` | `string` | | 段の名前に使う列名。**必須**。 |
|
|
19
|
+
| `categories` | `string[]` | | 金額の列名を 1 つだけ入れた配列(`["amount"]`)。**必須**。2 つ以上渡しても最初の 1 つだけを使う。 |
|
|
20
|
+
| `totals` | `string[]` | | 合計の段にする行の `index` の値。0 から累計まで届く棒になる。値が null なら直前までの累計。 |
|
|
21
|
+
| `polarity` | `"higher-is-better" \| "lower-is-better" \| "neutral"` | `"higher-is-better"` | 増えるのが良いか。解約数のように増えて悪い指標は `lower-is-better` で増減の色が入れ替わる。`neutral` は増減とも中立色(符号は付く)。 |
|
|
22
|
+
| `mode` | `"total" \| "delta"` | `"total"` | `delta` は増減の段だけを、開始を 0 とした累計増減の軸で描き、末尾に「純増」の棒を足す。開始・終了の値は図の上の注記に出る。合計に対して増減が小さい(目安 5% 未満)ときに使う。 |
|
|
23
|
+
| `labels` | `Record<string, string>` | | 段の名前 → 表示名(軸・ツールチップ・データ表)。無いキーはそのまま。 |
|
|
24
|
+
| `format` | `ValueFormat` | `"compact"` | 数値の書式(`"currency"` や `{ type: "number", unit: "件" }` など)。軸・棒のラベル・ツールチップで同じ。 |
|
|
25
|
+
| `valueFormatter` | `(value: number) => string` | | 書式を関数で直接渡す逃げ道。`format` より優先。 |
|
|
26
|
+
| `minValue` | `number` | | 縦軸の下限。軸は常に 0 を含むので 0 以下の値だけ有効。データが下回れば広がる。 |
|
|
27
|
+
| `maxValue` | `number` | | 縦軸の上限。データが超えれば広がる。並べて比べるグラフには同じ値を渡して軸をそろえる。 |
|
|
28
|
+
| `yAxisWidth` | `number` | | y 軸ラベルの幅(px)。並べたグラフのプロット領域を揃えたいときに固定する。 |
|
|
29
|
+
| `showValues` | `boolean` | `true` | 各棒に符号つきの増減額(合計は累計)を書く。 |
|
|
30
|
+
| `showTooltip` | `boolean` | `true` | ホバーで増減と累計を出す。 |
|
|
31
|
+
| `summary` | `string \| "auto"` | | グラフが言っていることの 1 文要約。`"auto"` で最初と最後の値、最大の増加・減少から組む。省略時は要約なし。 |
|
|
32
|
+
| `title` | `string` | | グラフの見出し。プロット領域の読み上げ名にもなる。 |
|
|
33
|
+
| `isLoading` | `boolean` | | 読み込み中。最終形と同じ高さのスケルトンを出す。 |
|
|
34
|
+
| `emptyState` | `{ title?: string; description?: string; action?: ReactNode }` | | `data` が空のときの表示。高さは保たれる。既定の題は「表示できるデータがありません」。 |
|
|
35
|
+
| `height` | `number` | `288` | プロット領域の高さ(px)。 |
|
|
36
|
+
| `chartOptions` | `EChartsOption` | | 生成した option に最後に深くマージする逃げ道。 |
|
|
37
|
+
| `actions` | `boolean \| { includeTitle?: boolean }` | `false` | 右上に PNG 保存 / コピーのボタンを出す(ホバー時)。見出しと要約は既定で画像に含まれ、`includeTitle: false` で外せる。 |
|
|
38
|
+
| `fileName` | `string` | `"chart.png"` | PNG 保存時のファイル名(拡張子つき)。 |
|
|
39
|
+
| `className` | `string` | | 外枠(`<figure>`)のクラス。幅はここで決める。 |
|
|
40
|
+
| `ariaLabel` | `string` | | 見出しが無いときのプロット領域の読み上げ名。 |
|
|
41
|
+
|
|
42
|
+
## 増減が小さいときは delta
|
|
43
|
+
|
|
44
|
+
総額に対して増減が小さいと、棒が総額の高い軸に埋もれて線のようになります。`mode="delta"` にすると
|
|
45
|
+
増減だけを 0 起点の累計で描き、最後に「純増」の棒を足します。`totals` に挙げた行(前期・当期)は棒にならず、
|
|
46
|
+
図の上の注記になります。
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
<WaterfallChart
|
|
50
|
+
data={rows}
|
|
51
|
+
index="item"
|
|
52
|
+
categories={["amount"]}
|
|
53
|
+
totals={["前期", "当期"]}
|
|
54
|
+
mode="delta"
|
|
55
|
+
format="currency"
|
|
56
|
+
/>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
> [!NOTE]
|
|
60
|
+
> 解約数や原価のように増えて悪い値の段を並べるときは `polarity="lower-is-better"` にします。色の意味が
|
|
61
|
+
> 入れ替わるだけで、棒の向きと符号は変わりません。
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# SlideChartInsight
|
|
2
|
+
|
|
3
|
+
> グラフ 1 つと、その読み解き。レポートでいちばん多い 1 枚。
|
|
4
|
+
|
|
5
|
+
グラフ 1 つ(12 カラムのうち 8)と、その読み解き(残りの 4、最大 3 点)を並べる 1 枚です。グラフは `line` / `bar` / `area`。キャンバス用の文字サイズで、ツールチップとアニメーションなしで組まれるので、pptx に見た目のまま書き出せます。
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SlideChartInsight } from "@squadbase/vantage/slide";
|
|
9
|
+
import type { SlideChartInsightProps, SlideChartInsightChart } 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
|
+
| `chart` | `SlideChartInsightChart` | | `{ type: "line" \| "bar" \| "area"; categories: string[]; series: { name: string; data: number[] }[] }`。**必須**。系列が 2 つ以上なら凡例が出る。 |
|
|
21
|
+
| `insights` | `string[]` | | グラフの読み解き。2〜3 点。**必須**。 |
|
|
22
|
+
| `chartSide` | `"left" \| "right"` | `"left"` | グラフを置く側。 |
|
|
23
|
+
| `asOf` | `string` | | 数字を取った日。日付のみ(例: `"2026-10-01"`)。block が「2026-10-01 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
|
|
24
|
+
| `source` | `string` | | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
|
|
25
|
+
|
|
26
|
+
## 使い方
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { Slide, SlideChartInsight } from "@squadbase/vantage/slide";
|
|
30
|
+
|
|
31
|
+
<Slide>
|
|
32
|
+
<SlideChartInsight
|
|
33
|
+
title="解約率は 6 月以降、毎月下がり続けている"
|
|
34
|
+
chart={{
|
|
35
|
+
type: "line",
|
|
36
|
+
categories: ["6 月", "7 月", "8 月", "9 月"],
|
|
37
|
+
series: [{ name: "解約率(%)", data: [2.7, 2.4, 2.1, 1.8] }],
|
|
38
|
+
}}
|
|
39
|
+
insights={[
|
|
40
|
+
"オンボーディング刷新後の 3 か月で 0.9pt 低下",
|
|
41
|
+
"低下は中小企業プランが中心",
|
|
42
|
+
]}
|
|
43
|
+
asOf="2026-10-01"
|
|
44
|
+
source="社内 BI"
|
|
45
|
+
/>
|
|
46
|
+
</Slide>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 注意
|
|
50
|
+
|
|
51
|
+
- 4 点以上の `insights` は描画されますが `console.warn` が出ます。スライドを分けてください。
|
|
52
|
+
- 型付きグラフ(`LineChart` など)は使いません。この block が `EChart` で直接組みます。
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# SlideCover
|
|
2
|
+
|
|
3
|
+
> デッキの表紙。タイトル・サブタイトル・期間・作成者・時点を 1 枚に収める。
|
|
4
|
+
|
|
5
|
+
デッキの表紙です。タイトルは左 8 カラムに置かれ、期間・作成者・時点は下端の 1 行にまとまります。
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SlideCover } from "@squadbase/vantage/slide";
|
|
9
|
+
import type { SlideCoverProps } 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
|
+
| `subtitle` | `string` | タイトルの下の 1 行。 |
|
|
21
|
+
| `period` | `string` | 対象期間(「2026 年 7 月〜9 月」)。 |
|
|
22
|
+
| `author` | `string` | 作成者・チーム名。 |
|
|
23
|
+
| `asOf` | `string` | 数字を取った日。日付のみ(例: `"2026-10-20"`)。block が「2026-10-20 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
|
|
24
|
+
| `source` | `string` | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
|
|
25
|
+
|
|
26
|
+
## 使い方
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { Slide, SlideCover } from "@squadbase/vantage/slide";
|
|
30
|
+
|
|
31
|
+
<Slide>
|
|
32
|
+
<SlideCover title="2026 年度 第 2 四半期 事業レビュー" subtitle="売上・解約・新規獲得の振り返りと次の打ち手" period="2026 年 7 月〜9 月" author="事業企画チーム" asOf="2026-10-20" source="社内 BI" />
|
|
33
|
+
</Slide>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 注意
|
|
37
|
+
|
|
38
|
+
- 表紙は 1 デッキに 1 枚です。2 枚目以降の見出しは他の block のアクションタイトルで書きます。
|
|
39
|
+
- サブタイトルは目的や読み手を 1 行で。長い説明は 2 枚目以降へ。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# SlideExecSummary
|
|
2
|
+
|
|
3
|
+
> 結論を先に伝える 1 枚。アクションタイトルと 3〜5 個の要点。
|
|
4
|
+
|
|
5
|
+
結論が先の 1 枚です。アクションタイトルの下に、1 行の見出し(と任意の補足 1 行)を持つ要点を 3〜5 個並べます。
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SlideExecSummary } from "@squadbase/vantage/slide";
|
|
9
|
+
import type { SlideExecSummaryProps, SlideExecSummaryPoint } 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
|
+
| `points` | `SlideExecSummaryPoint[]` | | 要点(`{ headline: string; detail?: string }`)。3〜5 個。**必須**。 |
|
|
21
|
+
| `layout` | `"rows" \| "columns"` | `"rows"` | `rows` は番号付きで縦に積む。`columns` は横に並べる(3〜4 個向き)。 |
|
|
22
|
+
| `asOf` | `string` | | 数字を取った日。日付のみ(例: `"2026-10-01"`)。block が「2026-10-01 時点」と 1 回だけ「時点」を付けるので、「時点」は書かない。 |
|
|
23
|
+
| `source` | `string` | | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
|
|
24
|
+
|
|
25
|
+
## 使い方
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { Slide, SlideExecSummary } from "@squadbase/vantage/slide";
|
|
29
|
+
|
|
30
|
+
<Slide>
|
|
31
|
+
<SlideExecSummary
|
|
32
|
+
title="Q2 は売上が計画を 4% 上回り、解約の改善が次の課題"
|
|
33
|
+
points={[
|
|
34
|
+
{ headline: "売上は 5.4 億円で計画比 +4%", detail: "新規 38 社が牽引" },
|
|
35
|
+
{ headline: "解約率は 1.8% まで低下", detail: "オンボーディング刷新の効果" },
|
|
36
|
+
{ headline: "新規獲得は目標に 12 社届かず", detail: "紹介経由が想定の半分" },
|
|
37
|
+
]}
|
|
38
|
+
asOf="2026-10-20"
|
|
39
|
+
source="社内 BI"
|
|
40
|
+
/>
|
|
41
|
+
</Slide>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 注意
|
|
45
|
+
|
|
46
|
+
- 6 個以上は描画されますが、`console.warn` が出ます。スライドを分けてください。
|
|
47
|
+
- `title` は話題(「売上の状況」)ではなく、結論の文で書きます。
|
|
@@ -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` が出ます。
|
package/docs/ja/ui/empty.md
CHANGED
|
@@ -10,7 +10,7 @@ import { Empty } from "@squadbase/vantage/ui";
|
|
|
10
10
|
|
|
11
11
|
| Prop | Type | Default | 説明 |
|
|
12
12
|
| --- | --- | --- | --- |
|
|
13
|
-
| `title` | `string` | `"
|
|
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` | `"
|
|
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
|
-
|
|
38
|
+
details={error.message}
|
|
38
39
|
action={<Button variant="outline" onClick={() => refetch()}>再試行</Button>}
|
|
39
40
|
/>
|
|
40
41
|
);
|
package/docs/ja/ui/loading.md
CHANGED
|
@@ -12,7 +12,7 @@ import { Loading } from "@squadbase/vantage/ui";
|
|
|
12
12
|
|
|
13
13
|
| Prop | Type | Default | 説明 |
|
|
14
14
|
| --- | --- | --- | --- |
|
|
15
|
-
| `label` | `string` | `"
|
|
15
|
+
| `label` | `string` | `"読み込んでいます…"` | スピナーの右に出すテキスト。 |
|
|
16
16
|
| `className` | `string` | | 足すクラス。既定では最小高 30vh で縦横中央に置かれます。 |
|
|
17
17
|
|
|
18
18
|
レイアウトを保ったまま待たせたいときは [`Skeleton`](ui/skeleton)、ボタンの中など
|