@squadbase/vantage 0.6.2-stg.3a2ba98 → 0.7.0-dev1.1197de7
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/add-4GHF2TX2.js +6 -0
- package/dist/add-4GHF2TX2.js.map +1 -0
- package/dist/{build-O5TVNH4E.js → build-U7GO26HR.js} +9 -9
- package/dist/{build-O5TVNH4E.js.map → build-U7GO26HR.js.map} +1 -1
- package/dist/{check-WFBEDHDR.js → check-MRVAIHG5.js} +7 -7
- package/dist/{check-WFBEDHDR.js.map → check-MRVAIHG5.js.map} +1 -1
- package/dist/{chunk-QDZA5JSL.js → chunk-AABMKHEU.js} +4 -4
- package/dist/{chunk-QDZA5JSL.js.map → chunk-AABMKHEU.js.map} +1 -1
- package/dist/{chunk-PVTHHV7X.js → chunk-ANZLVSEP.js} +28 -7
- package/dist/chunk-ANZLVSEP.js.map +1 -0
- package/dist/chunk-CKWPK4RO.js +50 -0
- package/dist/chunk-CKWPK4RO.js.map +1 -0
- package/dist/chunk-EG4PX726.js +678 -0
- package/dist/chunk-EG4PX726.js.map +1 -0
- package/dist/{chunk-3G43C6OL.js → chunk-GNXCX4WE.js} +46 -3
- package/dist/chunk-GNXCX4WE.js.map +1 -0
- package/dist/chunk-LYUGDHSF.js +61 -0
- package/dist/chunk-LYUGDHSF.js.map +1 -0
- package/dist/{chunk-RPZAALCX.js → chunk-MQUIAP66.js} +321 -165
- package/dist/chunk-MQUIAP66.js.map +1 -0
- package/dist/chunk-P2KIHF65.js +152 -0
- package/dist/chunk-P2KIHF65.js.map +1 -0
- package/dist/{chunk-BCE22JSM.js → chunk-PJ4SPXHS.js} +52 -16
- package/dist/chunk-PJ4SPXHS.js.map +1 -0
- package/dist/{chunk-ZVANIULZ.js → chunk-RNTDBX6S.js} +4 -4
- package/dist/{chunk-ZVANIULZ.js.map → chunk-RNTDBX6S.js.map} +1 -1
- package/dist/{chunk-PXRX5PEC.js → chunk-ROHNXP7J.js} +73 -4
- package/dist/chunk-ROHNXP7J.js.map +1 -0
- package/dist/chunk-S5MDTHH7.js +466 -0
- package/dist/chunk-S5MDTHH7.js.map +1 -0
- package/dist/chunk-SDJTTMLK.js +1877 -0
- package/dist/chunk-SDJTTMLK.js.map +1 -0
- package/dist/{chunk-EP6JHXSR.js → chunk-SHZM3EXB.js} +68 -12
- package/dist/chunk-SHZM3EXB.js.map +1 -0
- package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
- package/dist/chunk-U736PVHY.js.map +1 -0
- package/dist/{chunk-JGRMRXXZ.js → chunk-UWSQUHX6.js} +4 -99
- package/dist/chunk-UWSQUHX6.js.map +1 -0
- package/dist/chunk-XRKSIC5Z.js +176 -0
- package/dist/chunk-XRKSIC5Z.js.map +1 -0
- package/dist/chunk-YJQCB3UP.js +10764 -0
- package/dist/chunk-YJQCB3UP.js.map +1 -0
- package/dist/cli.js +15 -11
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +34 -3
- package/dist/client/index.js +211 -12
- package/dist/client/index.js.map +1 -1
- package/dist/components/index.d.ts +2389 -31
- package/dist/components/index.js +7 -4
- package/dist/delta-text-tav2Lh5d.d.ts +17 -0
- package/dist/{dev-NZRLOQCL.js → dev-O42JFQ64.js} +24 -13
- package/dist/dev-O42JFQ64.js.map +1 -0
- package/dist/doc/index.d.ts +215 -2
- package/dist/doc/index.js +423 -5
- package/dist/doc/index.js.map +1 -1
- package/dist/{docs-ZGDJUHJI.js → docs-JVP4RPKT.js} +3 -3
- package/dist/{docs-ZGDJUHJI.js.map → docs-JVP4RPKT.js.map} +1 -1
- package/dist/{doctor-VFKEMR54.js → doctor-YD3XAAOT.js} +8 -8
- package/dist/doctor-YD3XAAOT.js.map +1 -0
- package/dist/format-D34piCei.d.ts +250 -0
- package/dist/geo-japan-7BMSOJRX.js +8 -0
- package/dist/geo-japan-7BMSOJRX.js.map +1 -0
- package/dist/geo-us-GVOG7VXH.js +8 -0
- package/dist/geo-us-GVOG7VXH.js.map +1 -0
- package/dist/geo-world-35HL56UU.js +8 -0
- package/dist/geo-world-35HL56UU.js.map +1 -0
- package/dist/markdown/index.js +1 -1
- package/dist/markdown/index.js.map +1 -1
- package/dist/{preview-QDCIVVSR.js → preview-T6CLSQVX.js} +12 -4
- package/dist/preview-T6CLSQVX.js.map +1 -0
- package/dist/query/index.d.ts +0 -11
- package/dist/query/index.js +2 -2
- package/dist/{routes-RHP5FVGD.js → routes-PVKNT777.js} +6 -6
- package/dist/{routes-RHP5FVGD.js.map → routes-PVKNT777.js.map} +1 -1
- package/dist/{search-RFBELGY7.js → search-5LC4XPB5.js} +3 -3
- package/dist/{search-RFBELGY7.js.map → search-5LC4XPB5.js.map} +1 -1
- package/dist/slide/index.d.ts +272 -1
- package/dist/slide/index.js +1086 -19
- package/dist/slide/index.js.map +1 -1
- package/dist/table/index.js +13 -10
- package/dist/table/index.js.map +1 -1
- package/dist/ui/index.d.ts +148 -12
- package/dist/ui/index.js +1339 -88
- package/dist/ui/index.js.map +1 -1
- package/dist/{upgrade-GF2P67M6.js → upgrade-6DT7ADRP.js} +7 -7
- package/dist/{upgrade-GF2P67M6.js.map → upgrade-6DT7ADRP.js.map} +1 -1
- package/dist/vite/index.d.ts +10 -0
- package/dist/vite/index.js +4 -4
- package/docs/en/agent-skills.md +1 -1
- package/docs/en/changelog.md +82 -0
- package/docs/en/cli-reference.md +30 -0
- package/docs/en/components.md +42 -17
- package/docs/en/doc/delta-text.md +40 -0
- 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-notes-and-sources.md +43 -0
- package/docs/en/doc/doc-report-header.md +46 -0
- package/docs/en/pages-and-metadata.md +15 -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/data-table.md +22 -0
- package/docs/en/parts/delta.md +51 -0
- package/docs/en/parts/donut-chart.md +72 -0
- package/docs/en/parts/draft-chart.md +42 -0
- package/docs/en/parts/format.md +43 -0
- package/docs/en/parts/funnel-steps.md +2 -1
- package/docs/en/parts/heatmap.md +53 -0
- package/docs/en/parts/kpi-card.md +58 -0
- package/docs/en/parts/legend.md +35 -0
- package/docs/en/parts/line-chart.md +94 -0
- package/docs/en/parts/metric-value.md +3 -2
- package/docs/en/parts/page-shell.md +2 -2
- 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/sparkline.md +1 -1
- package/docs/en/parts/tracker.md +36 -0
- package/docs/en/parts/trend-indicator.md +17 -1
- package/docs/en/parts/updated-at.md +30 -0
- package/docs/en/parts/waterfall-chart.md +56 -0
- package/docs/en/slide/slide-chart-full.md +48 -0
- package/docs/en/slide/slide-chart-insight.md +52 -0
- package/docs/en/slide/slide-columns.md +46 -0
- package/docs/en/slide/slide-comparison.md +68 -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-heading.md +38 -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/slide/slide-section.md +44 -0
- package/docs/en/slide/slide-source-line.md +34 -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/en/ui-and-theming.md +1 -1
- package/docs/index.json +1222 -132
- package/docs/ja/agent-skills.md +1 -1
- package/docs/ja/changelog.md +84 -0
- package/docs/ja/cli-reference.md +29 -0
- package/docs/ja/components.md +68 -101
- package/docs/ja/doc/delta-text.md +40 -0
- 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-notes-and-sources.md +43 -0
- package/docs/ja/doc/doc-report-header.md +46 -0
- package/docs/ja/page-types/csv.md +83 -0
- package/docs/ja/page-types/doc.md +83 -0
- package/docs/ja/page-types/excel.md +82 -0
- package/docs/ja/page-types/slide.md +133 -0
- package/docs/ja/page-types.md +47 -0
- package/docs/ja/pages-and-metadata.md +15 -0
- package/docs/ja/parts/area-chart.md +85 -0
- package/docs/ja/parts/bar-chart.md +95 -0
- package/docs/ja/parts/bar-list.md +58 -0
- package/docs/ja/parts/category-bar.md +36 -0
- package/docs/ja/parts/chart-frame.md +36 -0
- package/docs/ja/parts/data-table.md +22 -0
- package/docs/ja/parts/delta.md +51 -0
- package/docs/ja/parts/donut-chart.md +66 -0
- package/docs/ja/parts/draft-chart.md +40 -0
- package/docs/ja/parts/echart.md +3 -0
- package/docs/ja/parts/format.md +44 -0
- package/docs/ja/parts/funnel-steps.md +27 -8
- package/docs/ja/parts/heatmap.md +45 -0
- package/docs/ja/parts/kpi-card.md +56 -0
- package/docs/ja/parts/legend.md +36 -0
- package/docs/ja/parts/line-chart.md +84 -0
- package/docs/ja/parts/metric-value.md +3 -2
- package/docs/ja/parts/page-shell.md +2 -2
- package/docs/ja/parts/progress-circle.md +34 -0
- package/docs/ja/parts/sample-data.md +61 -0
- package/docs/ja/parts/scatter-chart.md +69 -0
- package/docs/ja/parts/sparkline.md +2 -2
- package/docs/ja/parts/tracker.md +32 -0
- package/docs/ja/parts/trend-indicator.md +17 -1
- package/docs/ja/parts/updated-at.md +27 -0
- package/docs/ja/parts/waterfall-chart.md +61 -0
- package/docs/ja/routing.md +8 -86
- package/docs/ja/slide/slide-chart-full.md +48 -0
- package/docs/ja/slide/slide-chart-insight.md +52 -0
- package/docs/ja/slide/slide-columns.md +46 -0
- package/docs/ja/slide/slide-comparison.md +68 -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-heading.md +38 -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/slide/slide-section.md +44 -0
- package/docs/ja/slide/slide-source-line.md +34 -0
- package/docs/ja/ui/alert-dialog.md +41 -0
- package/docs/ja/ui/avatar.md +31 -0
- package/docs/ja/ui/combobox.md +74 -0
- package/docs/ja/ui/drawer.md +41 -0
- package/docs/ja/ui/empty.md +1 -1
- package/docs/ja/ui/error-state.md +4 -3
- package/docs/ja/ui/field.md +42 -0
- package/docs/ja/ui/hover-card.md +21 -0
- package/docs/ja/ui/kbd.md +16 -0
- package/docs/ja/ui/loading.md +1 -1
- package/docs/ja/ui/pagination.md +36 -0
- package/docs/ja/ui/radio-group.md +21 -0
- package/docs/ja/ui/toast.md +46 -0
- package/docs/ja/ui/toggle-group.md +4 -3
- package/docs/ja/ui-and-theming.md +14 -7
- package/package.json +43 -29
- package/registry/parts.json +5221 -0
- package/registry/ui/accordion.tsx +76 -0
- package/registry/ui/alert-dialog.tsx +189 -0
- package/registry/ui/alert.tsx +80 -0
- package/registry/ui/app-shell.tsx +424 -0
- package/registry/ui/area-chart.tsx +3960 -0
- package/registry/ui/attention-list.tsx +465 -0
- package/registry/ui/avatar.tsx +110 -0
- package/registry/ui/badge.tsx +56 -0
- package/registry/ui/bar-chart.tsx +3954 -0
- package/registry/ui/bar-list.tsx +3998 -0
- package/registry/ui/box-plot-chart.tsx +4214 -0
- package/registry/ui/breadcrumb.tsx +128 -0
- package/registry/ui/button.tsx +62 -0
- package/registry/ui/calendar.tsx +223 -0
- package/registry/ui/card.tsx +107 -0
- package/registry/ui/category-bar.tsx +1498 -0
- package/registry/ui/chart-frame.tsx +1612 -0
- package/registry/ui/checkbox.tsx +30 -0
- package/registry/ui/collapsible.tsx +23 -0
- package/registry/ui/combo-chart.tsx +1852 -0
- package/registry/ui/combobox.tsx +310 -0
- package/registry/ui/command.tsx +198 -0
- package/registry/ui/dashboard-card.tsx +219 -0
- package/registry/ui/data-table.tsx +899 -158
- package/registry/ui/date-range-picker.tsx +544 -0
- package/registry/ui/delta.tsx +352 -0
- package/registry/ui/dialog.tsx +161 -0
- package/registry/ui/donut-chart.tsx +4006 -0
- package/registry/ui/drawer.tsx +229 -0
- package/registry/ui/dropdown-menu.tsx +274 -0
- package/registry/ui/echart.tsx +1178 -0
- package/registry/ui/field.tsx +240 -0
- package/registry/ui/filter-bar.tsx +553 -0
- package/registry/ui/forecast-chart.tsx +4734 -0
- package/registry/ui/funnel-steps.tsx +3843 -0
- package/registry/ui/heatmap.tsx +2027 -0
- package/registry/ui/histogram-chart.tsx +4284 -0
- package/registry/ui/hover-card.tsx +52 -0
- package/registry/ui/input-group.tsx +160 -0
- package/registry/ui/input.tsx +24 -0
- package/registry/ui/kbd.tsx +30 -0
- package/registry/ui/kpi-card.tsx +907 -0
- package/registry/ui/label.tsx +22 -0
- package/registry/ui/legend.tsx +3817 -0
- package/registry/ui/line-chart.tsx +3958 -0
- package/registry/ui/metric-value.tsx +62 -0
- package/registry/ui/multi-select.tsx +382 -0
- package/registry/ui/page-shell.tsx +441 -0
- package/registry/ui/pagination.tsx +140 -0
- package/registry/ui/paired-chart.tsx +4086 -0
- package/registry/ui/pivot-table.tsx +1260 -0
- package/registry/ui/placeholder.tsx +36 -0
- package/registry/ui/popover.tsx +92 -0
- package/registry/ui/progress-circle.tsx +1033 -0
- package/registry/ui/progress.tsx +85 -0
- package/registry/ui/radio-group.tsx +39 -0
- package/registry/ui/sample-data.tsx +230 -0
- package/registry/ui/scatter-chart.tsx +4503 -0
- package/registry/ui/scroll-area.tsx +56 -0
- package/registry/ui/searchable-select.tsx +352 -0
- package/registry/ui/section-header.tsx +43 -0
- package/registry/ui/segmented-control.tsx +76 -0
- package/registry/ui/select.tsx +255 -0
- package/registry/ui/separator.tsx +27 -0
- package/registry/ui/sheet.tsx +139 -0
- package/registry/ui/sidebar.tsx +725 -0
- package/registry/ui/skeleton.tsx +17 -0
- package/registry/ui/slider.tsx +56 -0
- package/registry/ui/sparkline.tsx +230 -0
- package/registry/ui/spinner.tsx +14 -0
- package/registry/ui/states.tsx +247 -0
- package/registry/ui/status-badge.tsx +286 -0
- package/registry/ui/switch.tsx +34 -0
- package/registry/ui/table.tsx +118 -0
- package/registry/ui/tabs.tsx +84 -0
- package/registry/ui/textarea.tsx +22 -0
- package/registry/ui/toast.tsx +250 -0
- package/registry/ui/toggle-group.tsx +91 -0
- package/registry/ui/toggle.tsx +47 -0
- package/registry/ui/tooltip.tsx +72 -0
- package/registry/ui/tracker.tsx +1015 -0
- package/registry/ui/treemap.tsx +1917 -0
- package/registry/ui/trend-indicator.tsx +217 -0
- package/registry/ui/updated-at.tsx +276 -0
- package/registry/ui/waterfall-chart.tsx +4561 -0
- package/skills/vantage-add-feature/SKILL.md +14 -7
- package/skills/vantage-design/SKILL.md +62 -52
- package/skills/vantage-design/references/extract.md +26 -27
- package/skills/vantage-design/references/format.md +12 -172
- package/skills/vantage-design/references/presets.md +50 -110
- package/skills/vantage-pitfalls/SKILL.md +10 -1
- package/skills/vantage-slide/SKILL.md +71 -36
- package/templates/AGENTS.md +54 -16
- package/templates/agents/api.md +36 -0
- package/templates/agents/csv.md +2 -1
- package/templates/agents/doc.md +52 -3
- package/templates/agents/page.md +91 -10
- package/templates/agents/slide.md +90 -4
- package/templates/agents/xlsx.md +2 -1
- package/theme.css +247 -132
- package/dist/add-EISGSZAH.js +0 -6
- package/dist/add-EISGSZAH.js.map +0 -1
- package/dist/chunk-3G43C6OL.js.map +0 -1
- package/dist/chunk-5ZOP4SQR.js +0 -47
- package/dist/chunk-5ZOP4SQR.js.map +0 -1
- package/dist/chunk-A2UUGASH.js.map +0 -1
- package/dist/chunk-BCE22JSM.js.map +0 -1
- package/dist/chunk-DTDVSFRY.js +0 -29
- package/dist/chunk-DTDVSFRY.js.map +0 -1
- package/dist/chunk-EP6JHXSR.js.map +0 -1
- package/dist/chunk-JGRMRXXZ.js.map +0 -1
- package/dist/chunk-KLEIVDUV.js +0 -165
- package/dist/chunk-KLEIVDUV.js.map +0 -1
- package/dist/chunk-LSRMRIXA.js +0 -2227
- package/dist/chunk-LSRMRIXA.js.map +0 -1
- package/dist/chunk-PVTHHV7X.js.map +0 -1
- package/dist/chunk-PXRX5PEC.js.map +0 -1
- package/dist/chunk-RPZAALCX.js.map +0 -1
- package/dist/chunk-T3FLAGI6.js +0 -316
- package/dist/chunk-T3FLAGI6.js.map +0 -1
- package/dist/dev-NZRLOQCL.js.map +0 -1
- package/dist/doctor-VFKEMR54.js.map +0 -1
- package/dist/preview-QDCIVVSR.js.map +0 -1
|
@@ -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 点だけになり、凡例はプロットの下に移ります。
|
|
@@ -38,10 +38,10 @@ import type { SparklineDataPoint, SparklineVariant } from "@squadbase/vantage/co
|
|
|
38
38
|
|
|
39
39
|
## EChart との使い分け
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
軸・凡例・ツールチップ・複数系列が要るなら、まず型付きグラフ([`LineChart`](parts/line-chart)・[`AreaChart`](parts/area-chart)・[`BarChart`](parts/bar-chart))を使い、細かい制御が要るときだけ [`EChart`](parts/echart) を使います。
|
|
42
42
|
`Sparkline` が持つのは「値の並びの形」だけで、**目盛りも数値も出しません**。
|
|
43
43
|
|
|
44
44
|
> [!NOTE]
|
|
45
45
|
> `aria-hidden="true"` が付いているため、スクリーンリーダーには読まれません。実際の数値は
|
|
46
46
|
> [`MetricValue`](parts/metric-value) や
|
|
47
|
-
> [`
|
|
47
|
+
> [`Delta`](parts/delta) など、テキストとして隣に置いてください。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Tracker
|
|
2
|
+
|
|
3
|
+
> 期間ごとの状態を小さなブロックの列で示す。稼働状況やバッチの結果に。
|
|
4
|
+
|
|
5
|
+
1 期間 = 1 ブロックで状態を色分けして並べます。日ごとの稼働状況・バッチの成否・日次目標の
|
|
6
|
+
達成 / 未達のような**連続した状態**に向きます。ブロックにホバーすると `tooltip` が出ます。
|
|
7
|
+
ECharts を使わない HTML で、配色はテーマに追従します。
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { Tracker } from "@squadbase/vantage/components";
|
|
11
|
+
import type { TrackerBlock, ChartColor } from "@squadbase/vantage/components";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Prop | Type | Default | 説明 |
|
|
15
|
+
| --- | --- | --- | --- |
|
|
16
|
+
| `data` | `TrackerBlock[]` | | `{ color?: ChartColor; tooltip?: string; key?: string \| number }` の配列。**必須**。左から古い順。 |
|
|
17
|
+
| `defaultColor` | `ChartColor` | | `color` の無いブロックの色。既定は muted-foreground を淡くした灰色(データ無し・未実行に)。 |
|
|
18
|
+
| `hoverEffect` | `boolean` | `true` | ホバー中のブロックを薄くする。 |
|
|
19
|
+
| `className` | `string` | | 足すクラス。高さは既定 `h-8`。 |
|
|
20
|
+
|
|
21
|
+
残りの props は外側の `<div>` にそのまま渡ります。
|
|
22
|
+
|
|
23
|
+
## 状態に色を割り当てる
|
|
24
|
+
|
|
25
|
+
`color` はトークン名か CSS カラーです。失敗に `var(--destructive)` を使うと、テーマの
|
|
26
|
+
破壊的操作の色と揃います。
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
const COLOR = { ok: "chart-2", warn: "chart-3", error: "var(--destructive)" } as const;
|
|
30
|
+
|
|
31
|
+
<Tracker data={days.map((d) => ({ color: COLOR[d.status], tooltip: `${d.date} ${d.label}` }))} />
|
|
32
|
+
```
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
# TrendIndicator
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 非推奨。新規は Delta を使う。増減の矢印と変化率。
|
|
4
|
+
|
|
5
|
+
> [!WARNING]
|
|
6
|
+
> **非推奨です。新規のコードでは [`Delta`](parts/delta) を使ってください。**
|
|
7
|
+
> `TrendIndicator` は向き(`direction`)と色を手で渡すため、値と矢印が食い違うことがあります。`Delta` は今期と
|
|
8
|
+
> 比較相手の値から向き・率・色・ラベルを計算します。KPI をカードで見せるなら
|
|
9
|
+
> [`KpiCard`](parts/kpi-card) を使います。
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
// 旧
|
|
13
|
+
<TrendIndicator value={12.4} direction="up" />
|
|
14
|
+
<TrendIndicator value={0.4} direction="down" positiveIsGood={false} />
|
|
15
|
+
|
|
16
|
+
// 新
|
|
17
|
+
<Delta value={1_240_000} comparison={{ previous: 1_103_000, vs: "prior-period" }} />
|
|
18
|
+
<Delta value={0.021} comparison={{ previous: 0.026, vs: "prior-period" }} polarity="lower-is-better" />
|
|
19
|
+
```
|
|
4
20
|
|
|
5
21
|
前期比などの変化を、矢印と変化率で示します。**「上がった=良い」とは限らない**ので、色は
|
|
6
22
|
`direction` と `positiveIsGood` の組み合わせで決まります — 解約率のように下がる方が良い指標では
|
|
@@ -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
|
+
> 入れ替わるだけで、棒の向きと符号は変わりません。
|
package/docs/ja/routing.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ファイルベースルーティング
|
|
2
2
|
|
|
3
|
-
> ファイルを置くだけでルートが生まれる。ページ・レイアウト・動的パラメータ・404/error
|
|
3
|
+
> ファイルを置くだけでルートが生まれる。ページ・レイアウト・動的パラメータ・404/error の規約。
|
|
4
4
|
|
|
5
5
|
Vantage のルーティングは **ファイルの配置がそのまま URL** になります。ルーターの設定は書きません。
|
|
6
6
|
|
|
@@ -46,92 +46,13 @@ Vantage のルーティングは **ファイルの配置がそのまま URL**
|
|
|
46
46
|
|
|
47
47
|
## tsx 以外もページになる
|
|
48
48
|
|
|
49
|
-
ルートになるのは `.tsx` / `.jsx`
|
|
50
|
-
|
|
51
|
-
tsx
|
|
49
|
+
ルートになるのは `.tsx` / `.jsx` だけではありません。**`<name>.slide.tsx`** はスライドデッキに、
|
|
50
|
+
**`<name>.doc.tsx`** はドキュメントに、**`.csv` と `.xlsx`** はそのまま表として読めるページに
|
|
51
|
+
なります。どれも URL の作り方は tsx と同じで、`.slide` / `.doc` と拡張子は URL に出ません
|
|
52
|
+
(`june.slide.tsx`・`june.csv` → `/june`)。`vantage routes` にも `useRoutes()` のナビにも同格で並びます。
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
`src/data/june.xlsx` を置いて `/data/june` を開くと、ダウンロードせずブラウザ上で表として
|
|
56
|
-
読めます。xlsx は複数シートを切り替えられ、元ファイルをダウンロードする導線も付きます。
|
|
57
|
-
|
|
58
|
-
描かれるのは**表計算ソフトそのものの見た目**です —— 列は A / B / C、左に行番号、ファイルの
|
|
59
|
-
1 行目はヘッダとして固定され、罫線はデータの外まで続きます。シートのタブは下端に並びます。
|
|
60
|
-
読み取り専用なので編集もソートもできません(セルを選んで `Cmd/Ctrl+C` でコピーはできます)。
|
|
61
|
-
並べ替えや絞り込みが要るデータは、`server/api/` から配って `DataTable` で描いてください。
|
|
62
|
-
|
|
63
|
-
- **タイトルはファイル名から導かれます**(`june.xlsx` → 「June」、`index.csv` はディレクトリ名)。
|
|
64
|
-
データファイルに `definePage` は書けないので、名前を変えたいときはファイルをリネームします。
|
|
65
|
-
- **パースはブラウザで行われます。** dev・ビルド後・デプロイ後で同じコードが同じバイトを読むので、
|
|
66
|
-
同じ URL が同じものを返します。25MB を超えるファイルはそのページにエラーが出ます
|
|
67
|
-
(`vantage check` が `FILE_PAGE_TOO_LARGE` で先に警告します)。
|
|
68
|
-
- 数式・グラフ・セル書式は再現されません。**値として読めれば十分**という設計です。
|
|
69
|
-
- ページにしたくないファイルは `_` を前置します(`_june.xlsx`)。tsx から自分で描きたいときは
|
|
70
|
-
こうしてルート化を止め、`@squadbase/vantage/table` の `FilePageView` を使います。
|
|
71
|
-
|
|
72
|
-
> [!WARNING]
|
|
73
|
-
> **ビューアの無い拡張子はルートになりません。** `.xls` / `.ods` / `.tsv` などを置いても
|
|
74
|
-
> 404 にすらならず、ナビにも `vantage routes` にも出ません。`vantage check` の
|
|
75
|
-
> `UNSUPPORTED_PAGE_FILE` 警告が唯一の告知点です。
|
|
76
|
-
|
|
77
|
-
### スライド(`.slide.tsx`)
|
|
78
|
-
|
|
79
|
-
`.slide` は**ページ種別サフィックス**で、URL には出ません(`src/june.slide.tsx` → `/june`)。
|
|
80
|
-
中身は `<SlideDeck>` を返す普通の React コンポーネントなので、`definePage` もナビも
|
|
81
|
-
通常のページと同じように効きます。
|
|
82
|
-
|
|
83
|
-
```tsx
|
|
84
|
-
import { definePage } from "@squadbase/vantage";
|
|
85
|
-
import { Slide, SlideDeck } from "@squadbase/vantage/slide";
|
|
86
|
-
|
|
87
|
-
export const page = definePage({ title: "6月度レビュー", navLabel: "6月度" });
|
|
88
|
-
|
|
89
|
-
export default function Deck() {
|
|
90
|
-
return (
|
|
91
|
-
<SlideDeck>
|
|
92
|
-
<Slide>…</Slide>
|
|
93
|
-
<Slide>…</Slide>
|
|
94
|
-
</SlideDeck>
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
1920×1080 の固定キャンバスに書き、画面サイズに合わせて縮小されます。キーボードとクリックで
|
|
100
|
-
送れ、左のスライド一覧は `L` で開閉、`F` で全画面、ツールバーから pptx を書き出せます。詳しくは
|
|
101
|
-
[UI とテーマ](ui-and-theming)。
|
|
102
|
-
|
|
103
|
-
> [!WARNING]
|
|
104
|
-
> `.slide` を付けられるのは**ルートになるページモジュールだけ**です。`_layout.slide.tsx` や
|
|
105
|
-
> `deck.slide.ts` は `INVALID_PAGE_VARIANT` エラーになります。また `june.slide.tsx` と
|
|
106
|
-
> `june.tsx`、`sales.csv` と `sales.tsx` はいずれも同じ URL に解決するので `ROUTE_CONFLICT` です。
|
|
107
|
-
|
|
108
|
-
### ドキュメント(`.doc.tsx`)
|
|
109
|
-
|
|
110
|
-
`.doc` も**ページ種別サフィックス**です(`src/june-summary.doc.tsx` → `/june-summary`)。上から下へ
|
|
111
|
-
読む文章のページで、中身は `<Document>` を返す普通の React コンポーネントです。
|
|
112
|
-
|
|
113
|
-
```tsx
|
|
114
|
-
import { definePage } from "@squadbase/vantage";
|
|
115
|
-
import { Document } from "@squadbase/vantage/doc";
|
|
116
|
-
|
|
117
|
-
export const page = definePage({ title: "6月度サマリー" });
|
|
118
|
-
|
|
119
|
-
export default function JuneSummary() {
|
|
120
|
-
return (
|
|
121
|
-
<Document>
|
|
122
|
-
<h1>6月度サマリー</h1>
|
|
123
|
-
<p>6月の売上は目標を 5% 上回りました。</p>
|
|
124
|
-
<table>…</table>
|
|
125
|
-
</Document>
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
`<Document>` の中の見出し・段落・リスト・表・引用・コードには、クラスを書かなくてもスタイルが
|
|
131
|
-
当たります。詳しくは [UI とテーマ](ui-and-theming)。右下の「PDF として保存」ボタン(ブラウザの
|
|
132
|
-
言語が日本語以外なら「Save as PDF」)から印刷ダイアログを開けます。印刷されるのはドキュメントの本文
|
|
133
|
-
だけで、アプリのヘッダーやサイドバーは載らず、ダークモードでもライトの配色で出ます。`.slide` と
|
|
134
|
-
同じく、`.doc` を付けられるのはルートになるページモジュールだけです。
|
|
54
|
+
それぞれの書き方・できること・制限、そして**置いてもページにならないファイル**(`.xls`・`.tsv`・
|
|
55
|
+
`.md` など)は [ページの種類](page-types) にまとめてあります。
|
|
135
56
|
|
|
136
57
|
## ルーティングされないディレクトリ
|
|
137
58
|
|
|
@@ -291,3 +212,4 @@ setSegments((prev) => [...prev, "enterprise"]);
|
|
|
291
212
|
## 次に読む
|
|
292
213
|
|
|
293
214
|
- [ページと definePage](pages-and-metadata) — ページの契約とメタデータ
|
|
215
|
+
- [ページの種類](page-types) — スライド・ドキュメント・CSV・Excel
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# SlideChartFull
|
|
2
|
+
|
|
3
|
+
> グラフ 1 つを 12 カラム全幅で見せる 1 枚。下に 1 行の注記。
|
|
4
|
+
|
|
5
|
+
横幅が要るグラフ(カテゴリが多い・系列が長い)を全幅で見せる 1 枚です。グラフの下に、読み方や注目点を 1 行(`note`)で添えられます。
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SlideChartFull } from "@squadbase/vantage/slide";
|
|
9
|
+
import type { SlideChartFullProps } 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
|
+
| `chart` | `SlideChartInsightChart` | `{ type: "line" \| "bar" \| "area"; categories: string[]; series: { name: string; data: number[] }[] }`。**必須**。`SlideChartInsight` と同じ形・同じ描画。系列が 2 つ以上なら凡例が出る。 |
|
|
21
|
+
| `note` | `string` | グラフの下の 1 行。読み方や注目点。60 文字ほどまで。 |
|
|
22
|
+
| `asOf` | `string` | 数字を取った日。日付のみ(例: `"2026-10-01"`)。「2026-10-01 時点」と表示される。「時点」は書かない。 |
|
|
23
|
+
| `source` | `string` | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
|
|
24
|
+
|
|
25
|
+
## 使い方
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { Slide, SlideChartFull } from "@squadbase/vantage/slide";
|
|
29
|
+
|
|
30
|
+
<Slide>
|
|
31
|
+
<SlideChartFull
|
|
32
|
+
title="売上は 9 月に過去最高を更新した"
|
|
33
|
+
chart={{
|
|
34
|
+
type: "line",
|
|
35
|
+
categories: ["4 月", "5 月", "6 月", "7 月", "8 月", "9 月"],
|
|
36
|
+
series: [{ name: "売上(百万円)", data: [460, 480, 490, 500, 503, 540] }],
|
|
37
|
+
}}
|
|
38
|
+
note="9 月は大型案件 2 件の計上を含む"
|
|
39
|
+
asOf="2026-10-01"
|
|
40
|
+
source="社内 BI"
|
|
41
|
+
/>
|
|
42
|
+
</Slide>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 注意
|
|
46
|
+
|
|
47
|
+
- グラフは `EChart` でアニメーションなし・ツールチップなし。pptx への書き出しはその描画(`data-waitfor="canvas"`)を待ちます。
|
|
48
|
+
- 読み解きの文を並べたいときは `SlideChartInsight` を使います。
|
|
@@ -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,46 @@
|
|
|
1
|
+
# SlideColumns
|
|
2
|
+
|
|
3
|
+
> [部品] スライド本文の 12 カラム配置。SlideColumns と SlideColumn。
|
|
4
|
+
|
|
5
|
+
スライド本文の 12 カラム配置です。`SlideColumns` の中に `SlideColumn` を並べ、それぞれが `span` カラム分を取ります(8 / 4、6 / 6、4 / 4 / 4 など)。グリッドの本文の行に置く**部品**で、1 枚まるごとの block ではありません。
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SlideColumns, SlideColumn } from "@squadbase/vantage/slide";
|
|
9
|
+
import type { SlideColumnsProps, SlideColumnProps } from "@squadbase/vantage/slide";
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
> [!NOTE]
|
|
13
|
+
> これは **スライドの部品**で、1 枚まるごとの block ではありません。`<Slide>` 内の 12 カラムのグリッドの行として置きます(ルートはキャンバスいっぱい(100%×100%)には広がりません)。寸法はすべて部品の中で決まっているので、足さないでください。デッキの組み方は [スライド](page-types/slide) を参照してください。
|
|
14
|
+
|
|
15
|
+
## props
|
|
16
|
+
|
|
17
|
+
### SlideColumns
|
|
18
|
+
|
|
19
|
+
| Prop | Type | Default | 説明 |
|
|
20
|
+
| --- | --- | --- | --- |
|
|
21
|
+
| `children` | `ReactNode` | | `SlideColumn` を並べる。**必須**。 |
|
|
22
|
+
| `align` | `"start" \| "center" \| "stretch"` | `"stretch"` | 行の中での縦方向の揃え。 |
|
|
23
|
+
|
|
24
|
+
### SlideColumn
|
|
25
|
+
|
|
26
|
+
| Prop | Type | 説明 |
|
|
27
|
+
| --- | --- | --- |
|
|
28
|
+
| `span` | `number` | 12 カラムのうち何カラム分を取るか(1〜12)。**必須**。 |
|
|
29
|
+
| `children` | `ReactNode` | 列の中身。**必須**。 |
|
|
30
|
+
|
|
31
|
+
## 使い方
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
import { SlideColumns, SlideColumn } from "@squadbase/vantage/slide";
|
|
35
|
+
|
|
36
|
+
<SlideColumns align="center">
|
|
37
|
+
<SlideColumn span={8}>{/* グラフ */}</SlideColumn>
|
|
38
|
+
<SlideColumn span={4}>{/* 読み解き */}</SlideColumn>
|
|
39
|
+
</SlideColumns>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 注意
|
|
43
|
+
|
|
44
|
+
- 並べた `span` の合計は 12 にします。
|
|
45
|
+
- 間隔とカラム数はスライドの仕様値で決まっています。
|
|
46
|
+
- 列の中身が列の高さいっぱいに広がるべきときは、その中身側で `height: "100%"` を指定します。
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# SlideComparison
|
|
2
|
+
|
|
3
|
+
> A と B、施策の前と後を 2〜3 列で並べる 1 枚。
|
|
4
|
+
|
|
5
|
+
2〜3 列を横に並べて比べる 1 枚です。各列に見出し・主役の数字(と増減)・要点を置き、下に 1 行の結論(`verdict`)を出せます。列は 12 カラムを等分します(6 / 6 または 4 / 4 / 4)。
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { SlideComparison } from "@squadbase/vantage/slide";
|
|
9
|
+
import type { SlideComparisonProps, SlideComparisonColumn } 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
|
+
| `columns` | `SlideComparisonColumn[]` | 2〜3 列。**必須**。各列は下の表のとおり。 |
|
|
21
|
+
| `verdict` | `string` | どちらが優れるか、何が続くかを 1 行で。 |
|
|
22
|
+
| `asOf` | `string` | 数字を取った日。日付のみ(例: `"2026-10-01"`)。「2026-10-01 時点」と表示される。「時点」は書かない。 |
|
|
23
|
+
| `source` | `string` | 出典(例: `"社内 BI"`)。「出典: 社内 BI」と表示される。 |
|
|
24
|
+
|
|
25
|
+
### SlideComparisonColumn
|
|
26
|
+
|
|
27
|
+
| Prop | Type | Default | 説明 |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| `heading` | `string` | | その列が何か(「旧プラン」「施策前」)。**必須**。 |
|
|
30
|
+
| `points` | `string[]` | | 短い要点。**必須**。1 列 3 件まで、1 件 24 文字ほどまで。列ごとに同じ種類の要点を同じ順で書く。 |
|
|
31
|
+
| `value` | `number \| null` | | 主役の数字。`null` は「—」。`format` で整形される。 |
|
|
32
|
+
| `format` | `ValueFormat` | | 値の整形(`"currency"` / `"percent"` など)。`delta` の既定の整形にもなる。 |
|
|
33
|
+
| `display` | `string` | | 整形済みの文字列(「1.2 億円」)。`value` より優先される。 |
|
|
34
|
+
| `delta` | `{ value: number \| null; format?: ValueFormat }` | | 主役の数字の増減そのもの(`percent` なら比率)。向きは符号で決まる。`format` を省くと列の `format` を使う。 |
|
|
35
|
+
| `comparisonLabel` | `string` | | `delta` が何との比較かを示す名前(「前月比」「旧プラン比」)。増減の前に薄く出る。 |
|
|
36
|
+
| `betterWhen` | `"up" \| "down"` | `"up"` | `delta` のどちらの向きが良いか。解約率・コストは `"down"`。 |
|
|
37
|
+
|
|
38
|
+
## 使い方
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
import { Slide, SlideComparison } from "@squadbase/vantage/slide";
|
|
42
|
+
|
|
43
|
+
<Slide>
|
|
44
|
+
<SlideComparison
|
|
45
|
+
title="新プランは旧プランより解約が少ない"
|
|
46
|
+
columns={[
|
|
47
|
+
{ heading: "旧プラン", value: 0.024, format: "percent", points: ["月額 9,800 円", "導入支援なし"] },
|
|
48
|
+
{
|
|
49
|
+
heading: "新プラン",
|
|
50
|
+
value: 0.018,
|
|
51
|
+
format: "percent",
|
|
52
|
+
delta: { value: -0.006 },
|
|
53
|
+
comparisonLabel: "旧プラン比",
|
|
54
|
+
betterWhen: "down",
|
|
55
|
+
points: ["月額 12,800 円", "導入支援つき"],
|
|
56
|
+
},
|
|
57
|
+
]}
|
|
58
|
+
verdict="導入支援の有無が解約率の差の主因"
|
|
59
|
+
asOf="2026-10-01"
|
|
60
|
+
source="社内 BI"
|
|
61
|
+
/>
|
|
62
|
+
</Slide>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 注意
|
|
66
|
+
|
|
67
|
+
- 列が 2〜3 でない、または要点が多い・長いと、コンソールに警告が出ます。スライドを分けてください。
|
|
68
|
+
- 増減は `DeltaText`(▲ ▼ と「増」「減」つき)で描かれます。極性は `betterWhen` のみで指定します。
|
|
@@ -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 枚目以降へ。
|