equinor-design-system について
equinor-design-systemは、FusionアプリでEquinor Design Systemのルールを適用するための参照スキルです。カラー、タイポグラフィ、スペーシング、アイコン、ページレイアウトの指針をまとめています。
主な機能
- 01EDSのカラーとブランド規則
- 02Typographyの書式指針
- 03スペーシングと角丸のトークン
- 04アイコンとシャドウの使用規則
- 05Fusion Portalのレイアウト制約
活用シーン
- 01Fusionアプリの色と間隔の選定
- 02EDSに沿ったテキストスタイルの設定
- 03コンポーネントのアイコンと影の選定
- 04Portalのレイアウトに沿ったページ設計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ equinor/ fusion-skills --skill equinor-design-systemインストール後、Claude Code で/equinor-design-systemを入力して読み込まれたか確認します。
同梱ファイルCHANGELOG.md
詳細
Equinor デザインシステム — デザインルール
EDS デザイントークンと Equinor ブランドの制約をまとめた簡潔なリファレンスです。すべてのルールは、eds.equinor.com および Equinor Communication Toolbox を出典としています。
このファイルは補助的な参照資料です。ワークフローの手順はありません。利用するエージェントは該当するセクションを参照し、ルールを直接適用してください。
カラートークン
すべての色の値には EDS CSS カスタムプロパティ(--eds-color-*)を使用してください。Fusion アプリのコードで生の hex、rgb()、名前付き CSS カラーを使用しないでください。以下のトークンはすべて、Fusion アプリが依存する @equinor/eds-tokens v2.x のものです。
トークンの命名パターン:
--eds-color-<layer>-<semantic>-<variant>
bg= 背景の塗りつぶしtext= 前景のテキスト/アイコンborder= ストローク/区切り線
背景トークン
| 用途 | EDS トークン |
|---|---|
| ページ/アプリのキャンバス | --eds-color-bg-canvas |
| サーフェス(カード、パネル) | --eds-color-bg-surface |
| 入力フィールドの背景 | --eds-color-bg-input |
| フローティングサーフェス(ドロップダウン、ツールチップ) | --eds-color-bg-floating |
| 背景幕/モーダルのスクリーン | --eds-color-bg-backdrop |
| プライマリアクションの塗りつぶし(デフォルト) | --eds-color-bg-fill-emphasis-default |
| プライマリアクションの塗りつぶし(ホバー) | --eds-color-bg-fill-emphasis-hover |
| プライマリアクションの塗りつぶし(アクティブ) | --eds-color-bg-fill-emphasis-active |
| 控えめな塗りつぶし(デフォルト) | --eds-color-bg-fill-muted-default |
| 控えめな塗りつぶし(ホバー) | --eds-color-bg-fill-muted-hover |
| 無効状態のサーフェス | --eds-color-bg-disabled |
| 成功サーフェス(控えめな背景) | --eds-color-bg-success-surface |
| 成功の塗りつぶし(強調) | --eds-color-bg-success-fill-emphasis-default |
| 警告サーフェス | --eds-color-bg-warning-surface |
| 警告の塗りつぶし(強調) | --eds-color-bg-warning-fill-emphasis-default |
| 危険/エラーのサーフェス | --eds-color-bg-danger-surface |
| 危険の塗りつぶし(強調) | --eds-color-bg-danger-fill-emphasis-default |
| 情報サーフェス | --eds-color-bg-info-surface |
| 情報の塗りつぶし(強調) | --eds-color-bg-info-fill-emphasis-default |
| アクセントサーフェス | --eds-color-bg-accent-surface |
| アクセントの塗りつぶし(強調) | --eds-color-bg-accent-fill-emphasis-default |
テキストトークン
| 用途 | EDS トークン |
|---|---|
| 本文の主要テキスト | --eds-color-text-strong |
| 強調/塗りつぶし背景上のテキスト | --eds-color-text-strong-on-emphasis |
| 控えめ/セカンダリテキスト | --eds-color-text-subtle |
| 無効状態のテキスト | --eds-color-text-disabled |
| リンク | --eds-color-text-link |
| 成功テキスト | --eds-color-text-success-strong |
| 成功テキスト(控えめ) | --eds-color-text-success-subtle |
| 警告テキスト | --eds-color-text-warning-strong |
| 危険/エラーテキスト | --eds-color-text-danger-strong |
| 情報テキスト | --eds-color-text-info-strong |
| アクセントテキスト | --eds-color-text-accent-strong |
ボーダートークン
| 用途 | EDS トークン |
|---|---|
| デフォルトの区切り線/ボーダー | --eds-color-border-medium |
| 控えめなボーダー | --eds-color-border-subtle |
| 強いボーダー | --eds-color-border-strong |
| フォーカスリング | --eds-color-border-focus |
| 無効状態のボーダー | --eds-color-border-disabled |
| 成功ボーダー | --eds-color-border-success-medium |
| 警告ボーダー | --eds-color-border-warning-medium |
| 危険ボーダー | --eds-color-border-danger-medium |
| 情報ボーダー | --eds-color-border-info-medium |
| アクセントボーダー | --eds-color-border-accent-medium |
ブランドの制約:Equinor レッド(
#FF1243)はプライマリロゴのみに使用します。UI アクションやセマンティックカラーには使用しないでください。クリック可能なサーフェスとセマンティックサーフェスには、すべて EDS カラートークンを使用してください。
コードでのトークンの参照
可能な場合は、@equinor/eds-tokens の JS オブジェクトよりも、styled-components で EDS CSS カスタムプロパティを優先してください。システムのダーク/ライトモードに自動的に対応します。
import styled from 'styled-components';
const Card = styled.div`
background: var(--eds-color-bg-surface);
border: 1px solid var(--eds-color-border-medium);
color: var(--eds-color-text-strong);
`;
const PrimaryButton = styled.button`
background: var(--eds-color-bg-fill-emphasis-default);
color: var(--eds-color-text-strong-on-emphasis);
&:hover {
background: var(--eds-color-bg-fill-emphasis-hover);
}
&:disabled {
background: var(--eds-color-bg-disabled);
color: var(--eds-color-text-disabled);
}
`;
タイポグラフィ
すべてのテキストの描画には、@equinor/eds-core-react の Typography を使用します。font-size、font-family、line-height を直接指定せず、EDS の variant プロパティを使用してください。
バリアントの階層
| レベル | variant | 用途 |
|---|---|---|
| ディスプレイ | h1 | ヒーロー見出し(アプリではほとんど使用しません) |
| ページタイトル | h2 | 最上位のページ見出し |
| セクション見出し | h3 | セクションタイトル、カードヘッダー |
| 小見出し | h4 | サブセクション、パネルタイトル |
| オーバーライン | overline | カテゴリーラベル、パンくずリストのテキスト |
| 本文 | body_long | 複数行の本文 |
| 短い本文 | body_short | 1行の本文、テーブルセル |
| キャプション | caption | メタデータ、タイムスタンプ、補助テキスト |
| ラベル | label | フォームフィールドのラベル |
import { Typography } from '@equinor/eds-core-react';
// Correct
<Typography variant="h3">Section heading</Typography>
<Typography variant="body_short">Table cell value</Typography>
<Typography variant="caption">Last updated 2 hours ago</Typography>
// Wrong — never do this
<p style={{ fontSize: '14px' }}>…</p>
ブランドに関する制約
Equinor のブランド書体は Equinor です(マーケティングで使用)。Fusion アプリでは、@equinor/eds-core-react で定義されている EDS システム書体を使用する必要があります。アプリの CSS で Equinor ブランドフォントをインポートしたり、上書きしたりしないでください。
スペーシングトークン
マージン、パディング、ギャップには、@equinor/eds-tokens v2 の --eds-spacing-horizontal-<size> と --eds-spacing-vertical-<size> を使用します。任意のピクセル値は使用しないでください。
水平方向と垂直方向のスケールでは同じサイズ段階を使用しますが、各段階で数ピクセル異なる場合があります。軸に適したトークンを使用してください(左右には水平方向、上下には垂直方向)。
| サイズ | 水平方向の値 | 垂直方向の値 | 用途 |
|---|---|---|---|
4xs | 2 px | 2 px | ごく小さなギャップ、アイコンの狭いパディング |
3xs | 4 px | 4 px | XS ギャップ |
2xs | 6 px | 6 px | 小さな内側のパディング |
xs | 8 px | 8 px | SM ギャップ、コンパクトなリストの間隔 |
sm | 12 px | 12 px | 内側のパディング(チップ、バッジ) |
md | 16 px | 16 px | 標準的なコンテンツのパディング |
lg | 20 px | 20 px | LG ギャップ、セクション間の間隔 |
xl | 24 px | 24 px | XL ギャップ、カード間の間隔 |
2xl | 28 px | 28 px | 大きなセクション区切り |
3xl | 32 px | 32 px | セクション単位の余白 |
const Section = styled.section`
padding-inline: var(--eds-spacing-horizontal-md);
padding-block: var(--eds-spacing-vertical-lg);
gap: var(--eds-spacing-vertical-sm);
`;
角丸
| トークン/値 | 用途 |
|---|---|
--eds-shape-corners-border-radius | 標準的な角丸(カード、ボタン) |
border-radius: 0 | 角を丸めない/四角い角 |
border-radius: 9999px | 完全なピル型(タグ、チップ) |
エレベーションとシャドウ
EDS v2(@equinor/eds-tokens ^2)では、エレベーションを CSS カスタムプロパティとして公開していません。エレベーションが必要なサーフェスには、バリアントに応じた適切なシャドウを適用する EDS の Paper コンポーネントを使用してください。または、styled-components で生の値が必要な場合は、JS オブジェクトのインポートを通じて EDS の Elevation トークンを使用してください。
import { Paper } from '@equinor/eds-core-react';
// Prefer Paper for cards/panels — elevation is handled automatically
<Paper elevation="raised">
<CardContent />
</Paper>
JS から生の box-shadow 値が必要な場合(まれです)は、値をハードコードせず、@equinor/eds-tokens からインポートしてください。
アイコンの使用
@equinor/eds-icons と EDS の Icon コンポーネントを使用します。SVG を直接インポートしたり、サードパーティのアイコンセットを使用したりしないでください。アイコンデータは必ず data プロパティで渡してください。文字列の name プロパティは使用しないでください。@equinor/eds-icons のアイコン名は snake_case です。
import { Icon } from '@equinor/eds-core-react';
import { add, close, settings } from '@equinor/eds-icons';
// Pass icon data object via the `data` prop; provide `title` for accessibility
<Icon data={add} title="Add" />
<Icon data={close} title="Close" size={16} />
<Icon data={settings} title="Settings" />
アイコンのサイズは、16、24(デフォルト)、32、40、48 の固定スケールに従います。任意のサイズは設定しないでください。
ページレイアウトのゾーン
Fusion Portal アプリは Fusion Portal シェル内で実行されます。シェルが上部ナビゲーション、左側レール、外側のマージンを管理します。アプリでこれらのゾーンを再現したり、競合させたりしないでください。
3 ゾーンのアプリシェル
| ゾーン | コンポーネント | 備考 |
|---|---|---|
| トップバー/ヘッダー | Fusion Portal シェルが提供 | アプリではグローバルヘッダーを描画しません |
| メインコンテンツ領域 | <main> またはアプリの最上位の <div> | 利用可能な幅と高さ全体を使用 |
| サイドパネル/詳細 | @equinor/fusion-react-side-sheet | 右側からスライドインします。独自の位置指定オーバーレイは使用しないでください |
レイアウトの制約
- ルートアプリコンポーネントに外側の
marginやpaddingを追加しないでください。コンテンツの余白はポータルシェルによって確保されます。 - セクション内部の間隔には、
--eds-spacing-horizontal-<size>/--eds-spacing-vertical-<size>トークンを使用してください。 - ルートコンテナに固定の
heightを設定しないでください。コンテンツが利用可能なビューポートの高さに合わせて伸縮できるようにしてください。 - ページ全体を囲むカスタムのスクロール可能なコンテナを作成しないでください。ブラウザーのスクロールを標準のスクロール領域として使用してください。
- 固定高さのグリッド/テーブル領域には、入れ子になったスクロール可能な領域を使用できます。ただし、意図を明確にし、範囲をはっきり定めてください。
空の状態と読み込み中の状態
| 状態 | パターン |
|---|---|
| 読み込み中 | コンテンツ領域の中央に配置した EDS CircularProgress または @equinor/fusion-react-progress-indicator の ProgressIndicator |
| 空(データなし) | EDS Typography と、必要に応じて主要なアクション用の EDS Button。中央または上部に配置 |
| エラー | --eds-color-text-danger-strong で色付けした EDS Typography variant="body_short" と再試行アクション |
参考資料
- EDS デザインリソース:https://eds.equinor.com/docs/resources/
- EDS コンポーネントライブラリ:https://eds.equinor.com/components/
- Equinor ブランドカラー:https://communicationtoolbox.equinor.com/point/en/equinor/component/default/100056
- Equinor ブランドタイポグラフィ:https://communicationtoolbox.equinor.com/point/en/equinor/component/default/100059
- Equinor ブランドレイアウト:https://communicationtoolbox.equinor.com/point/en/equinor/component/default/100061