Appearance
マークアップページの要素(図)
要素どうしの関係を図で表示する要素。位置や線は自動で決まるため、コードには入れ子と順番だけを書きます。
すべての要素に共通するルール(構造の表記、配置の属性、デザイントークン)は、要素一覧を参照してください。
Tree
指標を分解した木(KPI ツリー)を描画します。親と子のノードを線で結びます。
構造
| 項目 | 内容 |
|---|---|
| 区分 | block |
| 親 | 子に block を取る要素 |
| 子 | TreeNode |
SqlView の子孫 | 可 |
使い方
- ノードはすべて同じ幅で、木の幅を等分します。最小の幅(
<TreeNode>のminWidth)に収まらなければ、図の中で横にスクロールします- ノードを小さくしたいときは、
<Columns>で木ごと狭めます
- ノードを小さくしたいときは、
- モバイル表示では、
directionによらず、子を親の下にインデントして並べます
属性
| 属性 | 値 | 内容 |
|---|---|---|
direction | right / down既定: right | 木を伸ばす向き |
gap | none / xs / sm / md / lg / xl既定: md | 兄弟のノードの間隔。親と子の段のあいだは、少なくとも 24px + gap × 2 空けます |
height | px(例:320px) | 高さ |
例
html
<Tree>
<TreeNode>
<Card title="売上"><Text size="xl" weight="bold">1.2億</Text></Card>
<TreeNode>
<Card title="客数"><Text size="xl" weight="bold">3.4万</Text></Card>
</TreeNode>
<TreeNode>
<TreeEdge>×</TreeEdge>
<Card title="客単価"><Text size="xl" weight="bold">3,500円</Text></Card>
</TreeNode>
</TreeNode>
</Tree>TreeNode
<Tree> の 1 つのノードです。先頭に <TreeEdge> を書くと、親からの線にラベルを付けられます。根のノードには、<TreeEdge> を書けません。続く要素がノードの本体で、その後の <TreeNode> が子のノードになります。
構造
| 項目 | 内容 |
|---|---|
| 区分 | ― |
| 親 | Tree | TreeNode |
| 子 | TreeEdge? block TreeNode* |
SqlView の子孫 | 可 |
使い方
- 本体に複数の要素を置くときは、
<Card>や<Rows>で包みます
属性
| 属性 | 値 | 内容 |
|---|---|---|
minWidth | px(例:320px)既定: 160px | ノードの最小の幅。<Tree> の direction が right のときは、段の位置をそろえるため、同じ深さのノードには、そのうち最も大きい値が使われます。モバイル表示では適用されません |
TreeEdge
親のノードからの線に付けるラベルです。演算子(×・+)や区分(新規・既存)など、親と子の関係を示します。
構造
| 項目 | 内容 |
|---|---|
| 区分 | ― |
| 親 | TreeNode |
| 子 | (text | expr)* |
SqlView の子孫 | 可 |
使い方
- 文字数に上限はありません
<Tree>のdirectionがrightのときは、いちばん長いラベルに合わせて線を伸ばし、8 文字を超える分は折り返します<Tree>のdirectionがdownのときは、1 行のまま、ノードの幅を超える分を省略します- モバイル表示では、どのラベルも 3 文字以下なら線に重ね、それより長いラベルがあれば、すべてのラベルを子のノードの上に表示します
属性
属性はありません。
Flow
段階を矢印でつなぎます。ファネルや、業務・データの流れを示すときに使います。
構造
| 項目 | 内容 |
|---|---|
| 区分 | block |
| 親 | 子に block を取る要素 |
| 子 | FlowStep+ |
SqlView の子孫 | 可 |
使い方
directionがrightのときは各段階で幅を等分し、downのときは幅いっぱいに広げますrightのとき、最小の幅(<FlowStep>のminWidth)に収まらなければ、図の中で横にスクロールします- 段階を小さくしたいときは、
<Columns>で図ごと狭めます
- モバイル表示では、
rightでも縦に並びます
属性
| 属性 | 値 | 内容 |
|---|---|---|
direction | down / right既定: down | 段階を並べる向き |
gap | none / xs / sm / md / lg / xl既定: xs | 段階と矢印のあいだの間隔 |
height | px(例:320px) | 高さ |
例
html
<Flow direction="right">
<FlowStep><Card title="訪問"><Text>12,000</Text></Card></FlowStep>
<FlowStep>
<FlowEdge>8.0%</FlowEdge>
<Card title="登録"><Text>960</Text></Card>
</FlowStep>
<FlowStep>
<FlowEdge>25%</FlowEdge>
<Card title="契約"><Text>240</Text></Card>
</FlowStep>
</Flow>FlowStep
<Flow> の 1 つの段階です。先頭に <FlowEdge> を書くと、前の段階からの矢印にラベルを付けられます。最初の段階には、<FlowEdge> を書けません。
構造
| 項目 | 内容 |
|---|---|
| 区分 | ― |
| 親 | Flow |
| 子 | FlowEdge? block* |
SqlView の子孫 | 可 |
属性
| 属性 | 値 | 内容 |
|---|---|---|
gap | none / xs / sm / md / lg / xl既定: md | 子の間隔 |
minWidth | px(例:320px)既定: 160px | 段階の最小の幅。<Flow> の direction が right のときだけ適用されます |
FlowEdge
前の段階からの矢印に付けるラベルです。転換率など、段階のあいだの変化を示します。
構造
| 項目 | 内容 |
|---|---|
| 区分 | ― |
| 親 | FlowStep |
| 子 | (text | expr)* |
SqlView の子孫 | 可 |
属性
属性はありません。
Timeline
日付の付いた出来事を、縦の線に並べます。施策のリリースや障害を、数値の動きと並べて説明するときに使います。
構造
| 項目 | 内容 |
|---|---|
| 区分 | block |
| 親 | 子に block を取る要素 |
| 子 | (TimelineItem | control)+ |
SqlView の子孫 | 可 |
使い方
- 書いた順に並べます(
<For>なら SQL の結果の順)。whenによる並べ替えはしません - モバイル表示では、
whenをタイトルの上に表示します
属性
| 属性 | 値 | 内容 |
|---|---|---|
gap | none / xs / sm / md / lg / xl既定: md | 子の間隔 |
height | px(例:320px) | 高さ |
例
html
<Timeline>
<TimelineItem when="4/1" title="新料金プランを公開" color="success">
<Text>月額の上位プランを追加。初月は MRR が +8%。</Text>
</TimelineItem>
<TimelineItem when="4/18" title="決済の障害(3 時間)" color="danger" />
</Timeline>html
<SqlView id="…" page="…" sql="…">
<Timeline>
<For as="r">
<TimelineItem when="{{ formatDate(r.day, 'dayjs', 'M/D') }}" title="{{ r.title }}">
<Text color="muted">{{ r.note }}</Text>
</TimelineItem>
</For>
</Timeline>
</SqlView>TimelineItem
<Timeline> の 1 つの出来事です。子は、タイトルの下に説明として縦に並びます。
構造
| 項目 | 内容 |
|---|---|
| 区分 | ― |
| 親 | Timeline |
| 子 | block* |
SqlView の子孫 | 可 |
属性
| 属性 | 値 | 内容 |
|---|---|---|
when(必須) | 文字列 式:文字+式 | 出来事の時期("4/1"・"Q3" など)。線の左に表示します。文字列として扱い、日付として解釈しません。日付の列は formatDate で整えます |
title | 文字列 式:文字+式 | 出来事のタイトル。太字で表示します |
color | default / muted / danger / warning / success既定: default式:単一式 | 点の色 |
gap | none / xs / sm / md / lg / xl既定: xs | タイトルと子のあいだの間隔 |
Matrix
2 つの軸で分けたマトリクスです。施策の優先度(効果×工数)や、9 マス(市場の魅力×事業の強さ)の整理に使います。
構造
| 項目 | 内容 |
|---|---|
| 区分 | block |
| 親 | 子に block を取る要素 |
| 子 | MatrixCell* |
SqlView の子孫 | 可 |
使い方
<MatrixCell>を、左上から行ごとにcols×rows個書きます(2×2 なら左上・右上・左下・右下)- マスは列で幅を等分します。最小の幅(
cellMinWidth)に収まらなければ、図の中で横にスクロールします - 軸のラベルは、x は右へ、y は上へ大きくなる向きで書きます
- モバイル表示でも、列の数を保ちます
属性
| 属性 | 値 | 内容 |
|---|---|---|
cols | 整数(2〜4) 既定: 2 | 列の数 |
rows | 整数(2〜4) 既定: 2 | 行の数 |
xStart | 文字列 式:文字+式 | 横軸の左端のラベル |
xEnd | 文字列 式:文字+式 | 横軸の右端のラベル |
yStart | 文字列 式:文字+式 | 縦軸の下端のラベル |
yEnd | 文字列 式:文字+式 | 縦軸の上端のラベル |
cellMinWidth | px(例:320px) | マスの最小の幅。未指定時は 160px(モバイル表示では 120px)です。指定すると、モバイル表示でもこの幅になります |
height | px(例:320px) | 高さ |
例
html
<Matrix xStart="工数 小" xEnd="工数 大" yStart="効果 小" yEnd="効果 大">
<MatrixCell title="すぐやる" background="success"><Text>オンボーディングのメール</Text></MatrixCell>
<MatrixCell title="計画してやる"><Text>料金ページの刷新</Text></MatrixCell>
<MatrixCell title="手が空いたら"><Text>ヘルプの整理</Text></MatrixCell>
<MatrixCell title="やらない" background="muted"><Text>独自の CRM</Text></MatrixCell>
</Matrix>MatrixCell
<Matrix> の 1 マスです。
構造
| 項目 | 内容 |
|---|---|
| 区分 | ― |
| 親 | Matrix |
| 子 | block* |
SqlView の子孫 | 可 |
使い方
<SqlView>の子孫で行を各マスに振り分けるときは、マスごとに<For where="…">を書きます
属性
| 属性 | 値 | 内容 |
|---|---|---|
title | 文字列 式:文字+式 | マスのタイトル。上に太字で表示します |
background | default / none / muted / success / warning / danger既定: default式:単一式 | 背景色 |
gap | none / xs / sm / md / lg / xl既定: md | 子の間隔 |
例
html
<SqlView id="…" page="…" sql="…">
<Matrix xStart="工数 小" xEnd="工数 大" yStart="効果 小" yEnd="効果 大">
<MatrixCell title="すぐやる">
<For as="r" where="{{ r.quadrant == 'quick' }}"><Text>{{ r.name }}</Text></For>
</MatrixCell>
<MatrixCell title="計画してやる">
<For as="r" where="{{ r.quadrant == 'plan' }}"><Text>{{ r.name }}</Text></For>
</MatrixCell>
<MatrixCell title="手が空いたら">
<For as="r" where="{{ r.quadrant == 'later' }}"><Text>{{ r.name }}</Text></For>
</MatrixCell>
<MatrixCell title="やらない">
<For as="r" where="{{ r.quadrant == 'skip' }}"><Text>{{ r.name }}</Text></For>
</MatrixCell>
</Matrix>
</SqlView>