@squadbase/vantage 0.6.2-dev1.05a930b → 0.6.2-dev1.100dfeb
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/{build-X5NVCQKT.js → build-U7GO26HR.js} +7 -7
- package/dist/{build-X5NVCQKT.js.map → build-U7GO26HR.js.map} +1 -1
- package/dist/{check-ZBIH422T.js → check-MRVAIHG5.js} +5 -5
- package/dist/{check-ZBIH422T.js.map → check-MRVAIHG5.js.map} +1 -1
- 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-6OTTGAPO.js +44 -0
- package/dist/chunk-6OTTGAPO.js.map +1 -0
- package/dist/{chunk-V3LF7BE7.js → chunk-ANZLVSEP.js} +4 -5
- package/dist/chunk-ANZLVSEP.js.map +1 -0
- package/dist/{chunk-XQUSGIDG.js → chunk-CKWPK4RO.js} +10 -3
- package/dist/chunk-CKWPK4RO.js.map +1 -0
- package/dist/chunk-JXFCSF3K.js +673 -0
- package/dist/chunk-JXFCSF3K.js.map +1 -0
- package/dist/{chunk-7DZGJQ3P.js → chunk-PJ4SPXHS.js} +23 -6
- package/dist/chunk-PJ4SPXHS.js.map +1 -0
- package/dist/{chunk-IUPSBD6W.js → chunk-QOXXOFGL.js} +23 -886
- package/dist/chunk-QOXXOFGL.js.map +1 -0
- package/dist/{chunk-CEXAQQ5W.js → chunk-S5MDTHH7.js} +180 -18
- package/dist/chunk-S5MDTHH7.js.map +1 -0
- package/dist/{chunk-2ICNHUG6.js → chunk-SDJTTMLK.js} +64 -7
- package/dist/chunk-SDJTTMLK.js.map +1 -0
- package/dist/{chunk-WAMZWZJB.js → chunk-SHZM3EXB.js} +19 -8
- package/dist/chunk-SHZM3EXB.js.map +1 -0
- package/dist/{chunk-JKLLFVEU.js → chunk-UWSQUHX6.js} +4 -99
- package/dist/chunk-UWSQUHX6.js.map +1 -0
- package/dist/cli.js +6 -6
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +8 -2
- package/dist/client/index.js.map +1 -1
- package/dist/components/index.d.ts +11 -247
- package/dist/components/index.js +4 -1
- package/dist/delta-text-CvwBGJ95.d.ts +15 -0
- package/dist/{dev-4XEDTELV.js → dev-O42JFQ64.js} +7 -7
- package/dist/{dev-4XEDTELV.js.map → dev-O42JFQ64.js.map} +1 -1
- package/dist/doc/index.d.ts +215 -2
- package/dist/doc/index.js +307 -3
- package/dist/doc/index.js.map +1 -1
- package/dist/{doctor-5E2VEZPK.js → doctor-YD3XAAOT.js} +5 -5
- package/dist/{doctor-5E2VEZPK.js.map → doctor-YD3XAAOT.js.map} +1 -1
- package/dist/format-U0cQl069.d.ts +243 -0
- package/dist/query/index.js +2 -2
- package/dist/{routes-3SGAFDMC.js → routes-PVKNT777.js} +4 -4
- package/dist/{routes-3SGAFDMC.js.map → routes-PVKNT777.js.map} +1 -1
- package/dist/slide/index.d.ts +272 -1
- package/dist/slide/index.js +972 -2
- package/dist/slide/index.js.map +1 -1
- package/dist/table/index.js +6 -3
- package/dist/table/index.js.map +1 -1
- package/dist/{upgrade-JHXZBGQS.js → upgrade-6DT7ADRP.js} +4 -4
- package/dist/{upgrade-JHXZBGQS.js.map → upgrade-6DT7ADRP.js.map} +1 -1
- package/dist/vite/index.js +3 -3
- package/docs/en/agent-skills.md +1 -1
- package/docs/en/changelog.md +2 -0
- package/docs/en/components.md +13 -2
- 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/delta.md +4 -3
- 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/kpi-card.md +2 -1
- 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-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/index.json +857 -77
- package/docs/ja/agent-skills.md +1 -1
- package/docs/ja/changelog.md +2 -0
- package/docs/ja/components.md +12 -1
- 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/slide.md +1 -0
- package/docs/ja/pages-and-metadata.md +15 -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/delta.md +5 -4
- 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/kpi-card.md +2 -1
- 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-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/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/delta.tsx +7 -4
- package/registry/ui/echart.tsx +123 -1
- package/registry/ui/kpi-card.tsx +9 -4
- package/skills/vantage-design/SKILL.md +54 -54
- 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 +5 -0
- package/skills/vantage-slide/SKILL.md +54 -36
- package/templates/AGENTS.md +32 -16
- package/templates/agents/doc.md +48 -0
- package/templates/agents/page.md +23 -2
- package/templates/agents/slide.md +77 -3
- package/theme.css +10 -7
- package/dist/chunk-2ICNHUG6.js.map +0 -1
- package/dist/chunk-7DZGJQ3P.js.map +0 -1
- package/dist/chunk-CEXAQQ5W.js.map +0 -1
- package/dist/chunk-IUPSBD6W.js.map +0 -1
- package/dist/chunk-JKLLFVEU.js.map +0 -1
- package/dist/chunk-V3LF7BE7.js.map +0 -1
- package/dist/chunk-WAMZWZJB.js.map +0 -1
- package/dist/chunk-XQUSGIDG.js.map +0 -1
|
@@ -1,172 +1,12 @@
|
|
|
1
|
-
# DESIGN.md
|
|
2
|
-
|
|
3
|
-
`DESIGN.md`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **150 行以内。** 超えると `vantage check` が `DESIGN_MD_TOO_LONG` を警告する。エージェントが
|
|
14
|
-
毎回全文を読むファイルなので、網羅より判断に効くルールを優先する。
|
|
15
|
-
- **YAML frontmatter は付けない。** 先頭は下の「冒頭のコメント」から始める。
|
|
16
|
-
- **会話中の指示が優先。** `DESIGN.md` は既定値であって、個別の依頼を拒む根拠にしない。
|
|
17
|
-
- ロゴ・画像は `public/` 配下のパスで参照する(`public/brand/logo.svg`)。画像を埋め込まない。
|
|
18
|
-
|
|
19
|
-
## 節の順番と見出し
|
|
20
|
-
|
|
21
|
-
見出しは日本語 + 英語の括弧書き(外部の DESIGN.md — Stitch など — の節と対応づけやすくするため)。
|
|
22
|
-
この順番を崩さない。無い情報の節は消さずに「特になし」と書く。
|
|
23
|
-
|
|
24
|
-
| # | 見出し | 書くこと |
|
|
25
|
-
| --- | --- | --- |
|
|
26
|
-
| 0 | 冒頭のコメント(`<!-- … -->`) | 何のファイルか / 値は styles.css / 会話の指示が優先 / 「このサイトに合わせて」で更新できること / upgrade が触らないこと |
|
|
27
|
-
| 1 | `## 全体のトーン (Overview)` | 2〜4 行のトーン。最後に「ブランド素材:」行(任意。`public/` のパス) |
|
|
28
|
-
| 2 | `## 色 (Colors)` | 役割 → トークンの表。行は **主色 / 強調 / 良い / 悪い / 注意 / 背景の段階 / 境界 / 文字**。専用トークンが無い役割は「専用トークンなし」+ 代替 |
|
|
29
|
-
| 3 | `## チャート (Charts)` | 系列の順番(`--chart-1..5` とその色味)、1 系列だけ強調するときの色、良い / 悪いの色、禁止の組み合わせ、プリセット名 |
|
|
30
|
-
| 4 | `## 書体 (Typography)` | 見出し / 本文 / 数字 / スライドの書体(`--slide-font-display` / `--slide-font-body`)と、サイズの段階(Tailwind クラス・`--slide-size-*`) |
|
|
31
|
-
| 5 | `## レイアウトと密度 (Layout)` | カード・余白(`gap-*`)・`--radius`・並べ方・密度 |
|
|
32
|
-
| 6 | `## 成果物の種類ごとの規則 (Per-artifact)` | `### ダッシュボード` と `### スライド` の小節(他の種類があれば小節を足す) |
|
|
33
|
-
| 7 | `## Do / Don't` | 3 つずつ程度 |
|
|
34
|
-
|
|
35
|
-
外部の DESIGN.md の対応: Overview / Colors / Typography / Layout(Spacing・Elevation 含む)/
|
|
36
|
-
Components → 「成果物の種類ごとの規則」/ Do's and Don'ts。値は `styles.css` へ移す
|
|
37
|
-
(→ `extract.md` の「外部の DESIGN.md」)。
|
|
38
|
-
|
|
39
|
-
## 使えるトークン
|
|
40
|
-
|
|
41
|
-
| 系統 | トークン |
|
|
42
|
-
| --- | --- |
|
|
43
|
-
| 面と文字 | `--background` `--foreground` `--card` `--card-foreground` `--popover` `--popover-foreground` |
|
|
44
|
-
| 主色など | `--primary` `--primary-foreground` `--secondary` `--secondary-foreground` `--accent` `--accent-foreground` `--muted` `--muted-foreground` `--destructive` `--destructive-foreground` |
|
|
45
|
-
| 境界 | `--border` `--input` `--ring` |
|
|
46
|
-
| チャート | `--chart-1` 〜 `--chart-5` |
|
|
47
|
-
| 形 | `--radius` |
|
|
48
|
-
| サイドバー | `--sidebar` `--sidebar-foreground` `--sidebar-primary` … |
|
|
49
|
-
| スライド | `--slide-bg` `--slide-fg` `--slide-accent` `--slide-muted` `--slide-radius` `--slide-font-display` `--slide-font-body` `--slide-size-hero` `--slide-size-body` |
|
|
50
|
-
|
|
51
|
-
- `--muted` `--accent` `--secondary` `--border` は背景・境界用。文字色の役割に割り当てない。
|
|
52
|
-
- 良い / 注意の専用トークンは無い。`--chart-*` の中から割り当てるか、「専用トークンなし」と書く。
|
|
53
|
-
- ページ本文の書体はトークンではなく `body` の `font-family`(`styles.css` の `body` セレクタで上書きする。
|
|
54
|
-
`:root` / `html` に書いても `theme.css` の `body` 指定に負けて効かない)。
|
|
55
|
-
- `--slide-bg` などは既定で `--background` などの別名。`.dark` に書き直す必要は無い。
|
|
56
|
-
|
|
57
|
-
## 雛形(中立の既定テーマ)
|
|
58
|
-
|
|
59
|
-
ベーステンプレート(`packages/vantage-template/template/DESIGN.md`)と**同じ内容**。どちらかを
|
|
60
|
-
直したらもう片方も合わせること。既定テーマ(無彩色の `--primary`、チャートは `blue` プリセット)を
|
|
61
|
-
そのまま説明しているので、新規に作るときはこれを写して、変えた役割の行だけを書き換える。
|
|
62
|
-
|
|
63
|
-
````markdown
|
|
64
|
-
<!--
|
|
65
|
-
DESIGN.md — このアプリの「見た目の意図」を書くファイルです。
|
|
66
|
-
|
|
67
|
-
- 実際の色・角丸・書体の値は src/styles.css にあります。ここにはトークン名(--primary など)と
|
|
68
|
-
使い分けのルールだけを書き、色コードは書きません。
|
|
69
|
-
- エージェントはページ・スライド・コンポーネントを書く前にこのファイルを読みます。
|
|
70
|
-
会話の中での指示はこのファイルより優先されます。
|
|
71
|
-
- 「このサイトに合わせて」「色を落ち着いた感じに」と頼めば、このファイルと styles.css を
|
|
72
|
-
まとめて更新します。
|
|
73
|
-
- このファイルはあなたのものです。`vantage upgrade` が書き換えることはありません。
|
|
74
|
-
-->
|
|
75
|
-
|
|
76
|
-
# デザイン
|
|
77
|
-
|
|
78
|
-
## 全体のトーン (Overview)
|
|
79
|
-
|
|
80
|
-
- 落ち着いた無彩色のベースに、データだけが色を持つ業務ダッシュボード。
|
|
81
|
-
- 装飾より読みやすさを優先する。影・グラデーション・アニメーションは最小限。
|
|
82
|
-
- 数字が主役。1 画面で伝えたいことを 1 つに絞り、補足は小さく添える。
|
|
83
|
-
- ブランド素材: なし(ロゴを使う場合は `public/brand/logo.svg` のように `public/` 配下のパスで書く)
|
|
84
|
-
|
|
85
|
-
## 色 (Colors)
|
|
86
|
-
|
|
87
|
-
色は必ずトークン(Tailwind のセマンティッククラス)で指定する。素のパレット(`bg-blue-600` など)や
|
|
88
|
-
色コードを直接書かない。
|
|
89
|
-
|
|
90
|
-
| 役割 | トークン | 使う場所 |
|
|
91
|
-
| --- | --- | --- |
|
|
92
|
-
| 主色 (Primary) | `--primary` / `--primary-foreground` | 主要ボタン、選択中の状態。既定は無彩色 |
|
|
93
|
-
| 強調 (Accent) | `--chart-1` | 1 つだけ目立たせたい数値・系列・リンク的な強調 |
|
|
94
|
-
| 良い (Positive) | `--chart-2` | 前期比のプラスなど、良い変化の小さな印 |
|
|
95
|
-
| 悪い (Negative) | `--destructive` | 前期比のマイナス、エラー、削除操作 |
|
|
96
|
-
| 注意 (Warning) | 専用トークンなし | 文言とアイコンで示し、色は `--muted-foreground` |
|
|
97
|
-
| 背景の段階 | `--background` → `--card` → `--muted` | ページ → カード → カード内の区画・ホバー |
|
|
98
|
-
| 境界 | `--border` / `--input` / `--ring` | 罫線、入力欄、フォーカス |
|
|
99
|
-
| 文字 | `--foreground` / `--muted-foreground` | 本文 / 補足・ラベル・単位 |
|
|
100
|
-
|
|
101
|
-
- `--muted`・`--accent`・`--secondary`・`--border` は背景・境界用。文字色に使わない。
|
|
102
|
-
- 増減(▲▼・前期比)は向きで色を分ける: 増加・プラスは `--chart-2`(または `--primary`)、
|
|
103
|
-
減少・マイナスは `--destructive`。下向きの矢印やマイナスを `--primary` で塗らない。
|
|
104
|
-
- ライトとダークの両方がトークンで決まるので `dark:` を並べない。
|
|
105
|
-
|
|
106
|
-
## チャート (Charts)
|
|
107
|
-
|
|
108
|
-
- 系列の順番は `--chart-1` → `--chart-2` → `--chart-3` → `--chart-4` → `--chart-5`
|
|
109
|
-
(現在はプリセット `blue`: 青 → ティール → フクシア → バイオレット → グレー)。
|
|
110
|
-
- 1 系列だけを目立たせるときは、その系列を `--chart-1`、残りをすべて `--chart-5`(グレー)にする。
|
|
111
|
-
- 良い / 悪いを色で塗り分けるときは `--chart-2` / `--destructive`。色だけに頼らず ▲▼ や符号も添える。
|
|
112
|
-
- 系列は 5 つまで。それ以上はグループ化するか「その他」にまとめる。
|
|
113
|
-
- 禁止: 同じチャートで `--destructive` を普通の系列色として使う(悪い値に見える)。
|
|
114
|
-
- 禁止: 隣り合う系列に `--chart-3` と `--chart-4` を並べて細い線で描く(見分けにくい)。
|
|
115
|
-
- 配色を丸ごと変えるときは `npx @squadbase/vantage-template chart <preset>` を使う
|
|
116
|
-
(`blue` / `ocean` / `sunset` / `forest` / `berry` / `mono`)。
|
|
117
|
-
|
|
118
|
-
## 書体 (Typography)
|
|
119
|
-
|
|
120
|
-
| 用途 | 指定 | 備考 |
|
|
121
|
-
| --- | --- | --- |
|
|
122
|
-
| 見出し・本文 | 日本語を含むシステムフォント(`body` の `font-family`) | Web フォントは使わない |
|
|
123
|
-
| 数字 | 同上 + `tabular-nums` | 桁がそろうように必ず付ける |
|
|
124
|
-
| スライドの見出し | `--slide-font-display` | 既定は日本語を含むシステムフォント |
|
|
125
|
-
| スライドの本文 | `--slide-font-body` | 既定は見出しと同じ |
|
|
126
|
-
|
|
127
|
-
サイズの段階(ダッシュボード):
|
|
128
|
-
|
|
129
|
-
- ページ見出し: `text-2xl font-bold`
|
|
130
|
-
- カード見出し・ラベル: `text-sm font-medium text-muted-foreground`
|
|
131
|
-
- KPI の数値: `text-3xl font-semibold tabular-nums`
|
|
132
|
-
- 本文・表: `text-sm`
|
|
133
|
-
- 注釈・出典: `text-xs text-muted-foreground`
|
|
134
|
-
|
|
135
|
-
スライドのサイズは `--slide-size-hero`(表紙・大きな数字)と `--slide-size-body`(本文)を基準にする。
|
|
136
|
-
|
|
137
|
-
## レイアウトと密度 (Layout)
|
|
138
|
-
|
|
139
|
-
- 情報はカード(`bg-card` + `border-border`)で区切る。角丸は `--radius` に従う(個別に変えない)。
|
|
140
|
-
- グリッドの間隔は `gap-4`。セクション間は `gap-6` 程度。
|
|
141
|
-
- KPI は 1 行に 2〜4 枚。その下にチャート、最後に明細の表。
|
|
142
|
-
- 密度は「中」。余白を削って詰め込むより、ページを分ける。
|
|
143
|
-
|
|
144
|
-
## 成果物の種類ごとの規則 (Per-artifact)
|
|
145
|
-
|
|
146
|
-
### ダッシュボード
|
|
147
|
-
|
|
148
|
-
- 先頭に KPI カード、次にトレンドのチャート、最後に明細の表。
|
|
149
|
-
- 各 KPI には比較対象(前月比・目標比など)を 1 つ添える。
|
|
150
|
-
- チャートのタイトルは結論を書く(「売上推移」より「売上は 3 か月連続で増加」)。
|
|
151
|
-
|
|
152
|
-
### スライド
|
|
153
|
-
|
|
154
|
-
- 1 枚に 1 メッセージ。見出しに結論を書く。
|
|
155
|
-
- 色は `--slide-bg` / `--slide-fg` / `--slide-accent` / `--slide-muted` を使う
|
|
156
|
-
(既定では `--background` / `--foreground` / `--primary` / `--muted-foreground` に連動)。
|
|
157
|
-
- 強調色は 1 枚につき 1 か所まで。
|
|
158
|
-
|
|
159
|
-
## Do / Don't
|
|
160
|
-
|
|
161
|
-
Do:
|
|
162
|
-
|
|
163
|
-
- トークンと Tailwind のセマンティッククラスで色を指定する。
|
|
164
|
-
- 数値には単位と比較対象を付ける。
|
|
165
|
-
- 色の意味(良い / 悪い / 強調)をアプリ全体でそろえる。
|
|
166
|
-
|
|
167
|
-
Don't:
|
|
168
|
-
|
|
169
|
-
- 色コードや素のパレットクラスを直接書く。
|
|
170
|
-
- 1 画面で強調色を何か所にも使う。
|
|
171
|
-
- 3D チャート・円グラフの多用・装飾目的のグラデーション。
|
|
172
|
-
````
|
|
1
|
+
# 任意の DESIGN.md
|
|
2
|
+
|
|
3
|
+
`DESIGN.md` は、プロジェクトルートに置く**ユーザー所有の任意のファイル**。新規プロジェクトには作らない。
|
|
4
|
+
ユーザーが望んだときだけ、ユーザー固有の意図(密度・スライドの見出し方針・ブランド素材など)を書く。
|
|
5
|
+
|
|
6
|
+
- 色・書体・角丸の値と色の割り当ては書かない。テーマ(`styles.css`、ThemeDialog、CLI の `theme` / `chart`)が持つ。
|
|
7
|
+
デザイン変更の依頼を `DESIGN.md` に記録しない。
|
|
8
|
+
- 見た目の規則は `AGENTS.md` の「見た目の規約」節が正本。`DESIGN.md` はそれに**加えて**従われる。
|
|
9
|
+
色の割り当てが食い違うときはテーマを優先する。
|
|
10
|
+
- 既存の `DESIGN.md` は消さない。`vantage upgrade` も `vantage add agents` も書き換えない。
|
|
11
|
+
- 150 行以内(超えると `vantage check` が `DESIGN_MD_TOO_LONG` を警告する)。YAML frontmatter は付けない。
|
|
12
|
+
- ロゴ・画像は `public/` 配下のパスで参照する(`public/brand/logo.svg`)。
|
|
@@ -1,110 +1,50 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
- `--primary`
|
|
51
|
-
|
|
52
|
-
```css
|
|
53
|
-
:root {
|
|
54
|
-
--primary: var(--color-sky-700);
|
|
55
|
-
--primary-foreground: oklch(0.985 0 0);
|
|
56
|
-
}
|
|
57
|
-
.dark,
|
|
58
|
-
[data-theme="dark"] {
|
|
59
|
-
--primary: var(--color-sky-300);
|
|
60
|
-
--primary-foreground: oklch(0.205 0 0);
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
- `DESIGN.md` の差分: 「全体のトーン」を上の文に。チャートの色味を「スカイ → シアン → インディゴ →
|
|
65
|
-
ティール → スレート」に。良い = `--chart-4`(ティール)。1 系列の強調は `--chart-1` + 残り `--chart-5`。
|
|
66
|
-
禁止: `--chart-1` と `--chart-2` を隣り合う細い線で並べる(どちらも明るい青系)。
|
|
67
|
-
|
|
68
|
-
## `vivid`
|
|
69
|
-
|
|
70
|
-
- トーン: 明るく勢いのある暖色。KPI とトレンドを大きく見せ、強調色をはっきり使う。
|
|
71
|
-
- チャート: `sunset`(オレンジ → アンバー → ローズ → イエロー → ストーン)。
|
|
72
|
-
- `--primary`(オレンジ 600 は白文字で 4.5:1 に届かないので 700 を使う):
|
|
73
|
-
|
|
74
|
-
```css
|
|
75
|
-
:root {
|
|
76
|
-
--primary: var(--color-orange-700);
|
|
77
|
-
--primary-foreground: oklch(0.985 0 0);
|
|
78
|
-
}
|
|
79
|
-
.dark,
|
|
80
|
-
[data-theme="dark"] {
|
|
81
|
-
--primary: var(--color-orange-400);
|
|
82
|
-
--primary-foreground: oklch(0.205 0 0);
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
- `DESIGN.md` の差分: トーンを上の文に。主色の行を「濃いオレンジ」に。良い = 専用色なし(▲ と
|
|
87
|
-
`--foreground`)、悪い = `--destructive`。禁止: `--chart-3`(ローズ)と `--destructive` を同じ
|
|
88
|
-
チャートに置く(悪い値と区別できない)。1 系列の強調は `--chart-1` + 残り `--chart-5`。
|
|
89
|
-
|
|
90
|
-
## `mono`
|
|
91
|
-
|
|
92
|
-
- トーン: 白黒と灰色だけ。色で意味を運ばず、太さ・順番・ラベルで読ませる。
|
|
93
|
-
- チャート: `mono`(ジンク 900 → 200。ダークでは反転)。
|
|
94
|
-
- `--primary`(チャートの両端と同じジンク):
|
|
95
|
-
|
|
96
|
-
```css
|
|
97
|
-
:root {
|
|
98
|
-
--primary: var(--color-zinc-900);
|
|
99
|
-
--primary-foreground: oklch(0.985 0 0);
|
|
100
|
-
}
|
|
101
|
-
.dark,
|
|
102
|
-
[data-theme="dark"] {
|
|
103
|
-
--primary: var(--color-zinc-200);
|
|
104
|
-
--primary-foreground: oklch(0.205 0 0);
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
- `DESIGN.md` の差分: トーンを上の文に。強調 = `--chart-1`(最も濃い灰)。良い = 専用色なし(▲ と
|
|
109
|
-
符号)、悪い = `--destructive`(**画面で唯一の有彩色**として使う)。チャートは系列を 3 つまでにし、
|
|
110
|
-
それ以上は直接ラベルを付ける。禁止: 隣り合う `--chart-4` と `--chart-5`(明度差が小さい)。
|
|
1
|
+
# 初期デザイン(テーマ)
|
|
2
|
+
|
|
3
|
+
プロジェクトの見た目の出発点は、SquadKit の 7 テーマから選ぶ。**テーマ id はプロジェクト作成の
|
|
4
|
+
ワークフローが参照するので変えないこと。** テーマは主色・背景・文字・境界・チャート 5 色・角丸・書体を
|
|
5
|
+
まとめて持つ(ライトとダークの両方)。
|
|
6
|
+
|
|
7
|
+
| id | トーン | 向く場面 |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| `neutral` | 既定。Vantage の素の見た目(青の主色と無彩色の面) | 迷ったとき・おまかせ |
|
|
10
|
+
| `ocean` | 青を基調にした落ち着いた信頼感。角丸はやや小さめ | 報告書・経営向け |
|
|
11
|
+
| `forest` | 緑を基調にした自然な印象。丸ゴシック系の書体、角丸はやや小さめ | 環境・ヘルスケア・自然 |
|
|
12
|
+
| `sunset` | 橙を基調にした温かみ。角丸はやや大きめ | 営業・マーケティング |
|
|
13
|
+
| `violet` | 紫を基調にしたやわらかい印象。角丸は大きめ | 華やかさ・ポップ |
|
|
14
|
+
| `rose` | 赤紫からピンクの落ち着いた色。角丸は大きめ(`--destructive` の赤とは別の色) | 華やかさ・ポップ |
|
|
15
|
+
| `mono` | 無彩色寄り。チャートも彩度を抑え、角丸は最小。等幅フォント | 印刷・資料への貼り付け |
|
|
16
|
+
|
|
17
|
+
## 当てる
|
|
18
|
+
|
|
19
|
+
プロジェクトルートで次を実行する。`--dry-run` で書き込まずに結果を見られる。
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx @squadbase/vantage-template theme <id>
|
|
23
|
+
npx @squadbase/vantage-template theme ocean --reset-chart # chart コマンドで選んだ配色を捨て、テーマのチャート色に揃える
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- `styles.css` の ``/* squadkit-theme — regenerated by `theme`; edits here are lost */`` 〜
|
|
27
|
+
`/* squadkit-theme:end */` の範囲(テーマ範囲)だけを差し替える。**範囲の中は手で編集しない**。
|
|
28
|
+
マーカーが無いファイルには自動で足される。同じ id を再実行しても変わらない。
|
|
29
|
+
- テーマ範囲はファイル先頭の `:root` より後ろに置かれ、同じ詳細度なら後ろが勝つ。
|
|
30
|
+
先頭の `:root` に手書きした `--primary` などはテーマに負ける。
|
|
31
|
+
- `chart <preset>` の範囲(`--chart-*` だけ)はテーマ範囲の**後ろ**に置かれ、テーマのチャート色に勝つ。
|
|
32
|
+
チャートの配色もテーマに任せるなら `--reset-chart` で外す。
|
|
33
|
+
|
|
34
|
+
## 旧プリセット id の読み替え
|
|
35
|
+
|
|
36
|
+
古い呼び出しの `default` / `calm` / `vivid` / `mono` は、`theme` コマンドがそのまま受けて次の id として扱う。
|
|
37
|
+
|
|
38
|
+
| 旧 | 新 |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| `default` | `neutral` |
|
|
41
|
+
| `calm` | `ocean` |
|
|
42
|
+
| `vivid` | `sunset` |
|
|
43
|
+
| `mono` | `mono` |
|
|
44
|
+
|
|
45
|
+
## テーマに無い値(ブランド色など)
|
|
46
|
+
|
|
47
|
+
テーマの `--primary` を変えたい、特定の色だけブランドに合わせたい、というときは、テーマを当てたうえで
|
|
48
|
+
**`/* squadkit-theme:end */`(チャート範囲があればその終端)より後ろ**に、変えたいトークンだけ
|
|
49
|
+
`:root` と `.dark, [data-theme="dark"]` の**両方**に書く。前に書くとテーマに負ける。
|
|
50
|
+
`scripts/contrast.mjs` で `--primary-foreground` / `--primary` をライトとダークで確かめる。
|
|
@@ -94,6 +94,11 @@ Base UI の `SelectValue` は選択中の **value をそのまま描き**、`Sel
|
|
|
94
94
|
- 表示ルート `/sales/:customerId`
|
|
95
95
|
- リンク `to="/sales/$customerId"` + `params={{ customerId }}` / 取り出し `useParams().customerId`
|
|
96
96
|
|
|
97
|
+
## 日本語アプリは `lang` を指定する
|
|
98
|
+
|
|
99
|
+
ルート `src/_layout.tsx` に `export const lang = "ja"`(リテラル)が無いと `<html lang="en">` のままで、
|
|
100
|
+
スライドの見出しが文節の途中で折れる。内容が日本語なら必ず指定する。
|
|
101
|
+
|
|
97
102
|
## ページ:`definePage` の値はリテラルで書く
|
|
98
103
|
|
|
99
104
|
title/description/navLabel は**ビルド時に静的抽出**される。変数・関数呼び出し・テンプレート補間を
|
|
@@ -43,9 +43,8 @@ export default function JuneDeck() {
|
|
|
43
43
|
|
|
44
44
|
- **1 ファイル = 1 デッキ = 1 ルート。** `export default` は `<SlideDeck>` を返す React コンポーネント
|
|
45
45
|
(通常のページと同じ契約なので、`vantage check` も `vantage routes` も特別扱いをしません)。
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
テンプレート補間は不可)。ナビの表示名はこれで決まります。
|
|
46
|
+
- **ファイル形式の MUST / SHOULD(`<Slide>` は `<SlideDeck>` の直下、`<Step>` は `<Steps>` の直下、
|
|
47
|
+
`definePage` はリテラル など)は `agents/slide.md` と `agents/page.md` が正本**です。ここでは繰り返しません。
|
|
49
48
|
- **`.slide` を付けられるのはルートになるページモジュールだけ。** `_layout.slide.tsx` や
|
|
50
49
|
`deck.slide.ts` は `INVALID_PAGE_VARIANT` エラーになります。
|
|
51
50
|
- **`june.slide.tsx` と `june.tsx` は同じ URL** になるので `ROUTE_CONFLICT` です。どちらかを消すこと。
|
|
@@ -56,10 +55,24 @@ export default function JuneDeck() {
|
|
|
56
55
|
スライド専用のコンポーネントを `components/` に切り出すと、デッキ 1 本を読むのに 2 ファイル
|
|
57
56
|
追わせることになります。
|
|
58
57
|
|
|
58
|
+
## まず block を探す
|
|
59
|
+
|
|
60
|
+
1 枚分の中身は、手で組む前に `@squadbase/vantage/slide` の block(`SlideCover` `SlideExecSummary`
|
|
61
|
+
`SlideKpiHero` `SlideKpiGrid` `SlideChartInsight` `SlideScorecardTable` `SlideNextActions` `SlideSection` `SlideComparison` `SlideChartFull`)に
|
|
62
|
+
合うものがないか探します。`<Slide>` の**中**に置き、props は `vantage docs <name>`(例:
|
|
63
|
+
`vantage docs slide-cover`)で引く。一覧は `agents/slide.md` が正本です。
|
|
64
|
+
- props は block 間で共通: `value: number | null` + `format`(上書きだけ `display`)、`delta: { value, format? }` + `betterWhen` + `comparisonLabel`、`target: number`、`source` は文字列、`asOf` は日付だけ(「時点」は block が付ける)。
|
|
65
|
+
|
|
66
|
+
- block は `@squadbase/vantage/slide` から import する。**新しい import 元は増えない**(下の
|
|
67
|
+
「import してよいもの」と矛盾しない)。`vantage add` でコピーするものでもない。
|
|
68
|
+
- block が合わない**1 枚だけ**を、この下の規約で手書きする。デッキ全体を手書きに切り替えない。
|
|
69
|
+
- デッキ以外のファイルは作らない。block を使っても、デッキは 1 ファイルのままで、独自の
|
|
70
|
+
ヘルパーコンポーネントは同じ `.slide.tsx` に書く。
|
|
71
|
+
|
|
59
72
|
## import してよいもの
|
|
60
73
|
|
|
61
74
|
- `@squadbase/vantage/slide` — `SlideDeck` `Slide` `Steps` `Step` `MorphElement` `useSlideNumber`
|
|
62
|
-
`useIsActiveSlide` `SlideCanvas`
|
|
75
|
+
`useIsActiveSlide` `SlideCanvas`、1 枚分の block(`SlideCover` ほか上の 10 個)、手書きの 1 枚に使う部品(`SlideHeading` `SlideSourceLine` `SlideColumns` `SlideColumn` `DeltaText`)と、その型
|
|
63
76
|
- `@squadbase/vantage` — `definePage`
|
|
64
77
|
- `@squadbase/vantage/components` の `EChart` — **チャートを載せるときはこれ**(→「チャート」)
|
|
65
78
|
- `lucide-react` のアイコン
|
|
@@ -77,21 +90,25 @@ export default function JuneDeck() {
|
|
|
77
90
|
- 各スライドのルート要素はキャンバスを埋める(`width: "100%"; height: "100%"`)
|
|
78
91
|
- インライン `style={{ … }}` を使う。読み込んだ CSS はグローバルです
|
|
79
92
|
|
|
80
|
-
|
|
93
|
+
以下の値がスライドの規約です。ヒーローと本文は `var(--slide-size-hero)` /
|
|
94
|
+
`var(--slide-size-body)` としても読めます(→ `references/tokens.md`)。
|
|
95
|
+
|
|
96
|
+
### タイプスケール
|
|
81
97
|
|
|
82
98
|
| 要素 | サイズ |
|
|
83
99
|
| --- | --- |
|
|
84
|
-
| ヒーロータイトル |
|
|
85
|
-
| セクション見出し |
|
|
86
|
-
| ページ見出し |
|
|
87
|
-
| 本文 |
|
|
88
|
-
| キャプション / ラベル |
|
|
100
|
+
| ヒーロータイトル | 168px |
|
|
101
|
+
| セクション見出し | 88px |
|
|
102
|
+
| ページ見出し | 64px |
|
|
103
|
+
| 本文 | 36px |
|
|
104
|
+
| キャプション / ラベル | 24px |
|
|
89
105
|
|
|
90
|
-
###
|
|
106
|
+
### 余白とグリッド
|
|
91
107
|
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
108
|
+
- セーフエリア: キャンバス端から **左右 160px・上下 120px**。中身はこの内側の **1600 × 840px** に置き、文字を端に触れさせない
|
|
109
|
+
- グリッド: 内容幅 1600px を **12 列**(列幅 104px・溝 32px)に割る
|
|
110
|
+
- line-height: 見出し 1.2、本文 1.6
|
|
111
|
+
- 要素間: 32 / 48 / 64px のどれか
|
|
95
112
|
|
|
96
113
|
### 縦方向の予算 — 中身は 1080px に収まらなければならない
|
|
97
114
|
|
|
@@ -99,33 +116,32 @@ export default function JuneDeck() {
|
|
|
99
116
|
計算して収まることを確かめること。**これがスライドが壊れる原因の第 1 位**で、確かめない限り
|
|
100
117
|
溢れていると思ってください。
|
|
101
118
|
|
|
102
|
-
**使える高さ** = `1080 −
|
|
103
|
-
先に padding を決めて、その予算の中で設計します。
|
|
119
|
+
**使える高さ** = `1080 − 上下のセーフエリア(120px × 2)` = **840px**。この予算の中で設計します。
|
|
104
120
|
|
|
105
121
|
**要素の高さ** = `文字サイズ × line-height × 行数`。2 行に折り返す箇条書きは 2 行と数えます。
|
|
106
|
-
次の要素を足す前に、その下の gap(32
|
|
122
|
+
次の要素を足す前に、その下の gap(32 / 48 / 64px)を加算してください。
|
|
107
123
|
|
|
108
|
-
**計算例 — 本文 1
|
|
124
|
+
**計算例 — 本文 1 枚(予算 840px):**
|
|
109
125
|
|
|
110
126
|
| 要素 | 高さ |
|
|
111
127
|
| --- | --- |
|
|
112
|
-
|
|
|
128
|
+
| ページ見出し: 64px × 1.2 × 1 行 | 76.8px |
|
|
113
129
|
| gap | 64px |
|
|
114
|
-
| 本文:
|
|
130
|
+
| 本文: 36px × 1.6 × 3 行 | 172.8px |
|
|
115
131
|
| gap | 48px |
|
|
116
|
-
| 箇条書き 5 行:
|
|
117
|
-
| 箇条書き間の gap 4 つ:
|
|
118
|
-
| **合計** | **
|
|
132
|
+
| 箇条書き 5 行: 36px × 1.6 × 1 行 | 288px(5 × 57.6px) |
|
|
133
|
+
| 箇条書き間の gap 4 つ: 32px | 128px |
|
|
134
|
+
| **合計** | **777.6px ✅ 840 に収まる** |
|
|
119
135
|
|
|
120
|
-
|
|
136
|
+
箇条書きを 6 つにすると 867.2px で溢れます。**書く前に毎ページこの検算をすること。**
|
|
121
137
|
|
|
122
138
|
**ページ単位の規則:**
|
|
123
139
|
|
|
124
140
|
- 「見出し + 本文」か「見出し + 5 つ以内の短い箇条書き」のどちらか。両方は載せない
|
|
125
141
|
- 箇条書きは選んだ文字サイズで 1 行に収まること。折り返すなら短くするか別ページに割る
|
|
126
|
-
- ヒーロータイトル(
|
|
127
|
-
- セクション見出し(
|
|
128
|
-
-
|
|
142
|
+
- ヒーロータイトル(168px)はタイトル + サブタイトル 1 行 + アイブロウまで。それ以外は載せない
|
|
143
|
+
- セクション見出し(88px)のページにはほとんど何も足さない
|
|
144
|
+
- 収めるためにセーフエリアを削る・タイプスケールより小さい文字にする・本文の line-height を 1.6 未満に
|
|
129
145
|
詰める、をやりたくなったら**ページを 2 枚に割る**。予算が厳しいときは分割が常に正解
|
|
130
146
|
|
|
131
147
|
**`overflow: auto/scroll`・負のマージン・transform で溢れを隠さないこと。** キャンバスは固定で、
|
|
@@ -139,7 +155,7 @@ export default function JuneDeck() {
|
|
|
139
155
|
それ以外はプレーンな const にする(→ `references/tokens.md`)
|
|
140
156
|
- **書体** — ディスプレイ 1 + 本文 1。指定がなければシステムスタック。見出しは太く(800–900)、
|
|
141
157
|
本文は通常(400–500)
|
|
142
|
-
- **レイアウトグリッド** —
|
|
158
|
+
- **レイアウトグリッド** — セーフエリアと 12 列グリッド(→「余白とグリッド」)を全ページで貫く。左揃えは編集的、中央揃えは儀礼的
|
|
143
159
|
- **美学のコミットメント** — 1 つ選ぶ: ミニマル / マキシマル / エディトリアル / レトロ /
|
|
144
160
|
ブルータリスト / ソフト・パステル / ネオン / 紙・印刷。混ぜない
|
|
145
161
|
|
|
@@ -152,12 +168,12 @@ export default function JuneDeck() {
|
|
|
152
168
|
// ✅ 各カードが独自の JSX ノードを持つ
|
|
153
169
|
const Card = ({ label, value }: { label: string; value: string }) => (
|
|
154
170
|
<div style={{ flex: 1 }}>
|
|
155
|
-
<div style={{ fontSize:
|
|
156
|
-
<div style={{ fontSize:
|
|
171
|
+
<div style={{ fontSize: 24, opacity: 0.6 }}>{label}</div>
|
|
172
|
+
<div style={{ fontSize: 88, fontWeight: 800 }}>{value}</div>
|
|
157
173
|
</div>
|
|
158
174
|
)
|
|
159
175
|
|
|
160
|
-
<div style={{ display: "flex", gap:
|
|
176
|
+
<div style={{ display: "flex", gap: 64 }}>
|
|
161
177
|
<Card label="売上" value="¥5.2億" />
|
|
162
178
|
<Card label="解約率" value="1.4%" />
|
|
163
179
|
</div>
|
|
@@ -169,6 +185,8 @@ const Card = ({ label, value }: { label: string; value: string }) => (
|
|
|
169
185
|
|
|
170
186
|
これは**視覚要素が繰り返すとき**の話で、データが繰り返すときの話ではありません。純粋な
|
|
171
187
|
テキストの箇条書き(`<ul><li>`)は各 `<li>` が既に独立した JSX ノードなので、そのままで正しい。
|
|
188
|
+
`<SlideDeck>` の直下に `<Slide>` を配列で渡すこと自体はファイル形式として可能です(`agents/slide.md`)が、
|
|
189
|
+
1 枚ごとの文言・図を変えるスライドは 1 枚ずつ書きます。
|
|
172
190
|
|
|
173
191
|
## ページ番号
|
|
174
192
|
|
|
@@ -250,8 +268,8 @@ pptx 書き出しのために描き終わりを待たせる必要があります
|
|
|
250
268
|
- [ ] `export default` が `<SlideDeck>` を返している
|
|
251
269
|
- [ ] `<Slide>` が `<SlideDeck>` の直下にある
|
|
252
270
|
- [ ] 各スライドのルート要素が `100% × 100%` を埋めている
|
|
253
|
-
- [ ]
|
|
254
|
-
- [ ] **全ページで(文字サイズ × line-height × 行数)+ gap
|
|
271
|
+
- [ ] 文字がセーフエリア(左右 160px・上下 120px)の内側にある
|
|
272
|
+
- [ ] **全ページで(文字サイズ × line-height × 行数)+ gap ≤ 840px。** 際どいなら分割
|
|
255
273
|
- [ ] 箇条書きが 2 行目に折り返していない
|
|
256
274
|
- [ ] 配色とタイプスケールが全ページで一貫している
|
|
257
275
|
- [ ] 1 ページ 1 メッセージ
|
|
@@ -267,11 +285,11 @@ pptx 書き出しのために描き終わりを待たせる必要があります
|
|
|
267
285
|
## アンチパターン
|
|
268
286
|
|
|
269
287
|
- ❌ 文字の壁。1 ページ 40 語を超えたら分割する
|
|
270
|
-
- ❌
|
|
288
|
+
- ❌ キャンバス全面を本文で使う。セーフエリア(左右 160px・上下 120px)を守る
|
|
271
289
|
- ❌ 縦に 1080px を溢れさせる。切れた中身は見えない — 分割する
|
|
272
290
|
- ❌ `overflow: auto` / `scroll` / `hidden` で溢れを「隠す」。バグを隠しただけ
|
|
273
|
-
- ❌
|
|
274
|
-
- ❌
|
|
291
|
+
- ❌ 詰め込むためにタイプスケールより小さい文字にする・セーフエリアを削る
|
|
292
|
+
- ❌ 本文を 36px 未満にする。プロジェクタで読めない
|
|
275
293
|
- ❌ `@squadbase/vantage/ui` のプリミティブをスライドに置く(縮小されて読めなくなる)
|
|
276
294
|
- ❌ 依存を追加する。使えるのは `@squadbase/vantage/*` と `lucide-react` と標準 Web API だけ
|
|
277
295
|
- ❌ スライド用のコンポーネントを別ファイルに切り出す
|