行政・公共サービス · 新しいリソース

CFPB デザインシステム.

CFPBの編集向けグリッド、現行のタイポグラフィ、ネイティブの展開パネルを、動作する読書ワークシート、検証済みのパッケージAPI、明確なブランド利用上の境界とともに実装します。

OpenDesign ガイド8章参照項目24件オリジナルアプリケーションガイド
01

CFPB デザインシステム インターフェースプレビュー

ネイティブの説明を開き、別のチェックリストを使い、ローカルの状態をリセットできます。画面幅を変えると、12カラムのレイアウトが縦に積み重なる様子を確認できます。

エディトリアルな読書用ワークシート完全な例を開く
ネイティブのCFPB 5.10.2 CSSとExpandable JavaScriptを使用。パッケージの基本部分CSSをそのまま抽出し、システムフォントにフォールバック。アプリケーションのコンテンツは独自に作成。 · 実装リファレンス
02

CFPB デザインシステム デザインリファレンス

CFPBパッケージ5.10.2のコンパイル済みCSSとESモジュールを使用。現在公開されている基盤ガイダンスに準拠しています。このデモでは、ネイティブのExpandableクラスとJavaScriptを使用しています。グローバルな基本部分CSSは、公開モジュールの基本スタイル文字列からそのままコピーし、システムフォントへのフォールバックを設定しています。ドキュメントの表と異なるフォントサイズ調整と見出しの行送りは、バージョン管理されたコードに従っています。CFPBのロゴや提携関係を示すものではありません。

色と実際のカスタムプロパティ

ソース
名前 / ルール値 / 設定用途
--black#101820 標準のテキスト色。緑はブランドのアクセントとして使い、本文の標準色にはしないでください。
--green#20aa3f スラッグ見出しのアクセントと、組織の配色の参考例。
--pacific#0072ce リンクとインタラクションを示す色の系統。
--gray-5 / --gray-40#f7f8f9 / #b4b5b65.10.2におけるExpandableの背景色と枠線。
--red / --gold#d14124 / #ff9e1b補助的な配色。テキストによる状態表示を色だけで置き換えないでください。

バージョン管理された基本スタイルのタイポグラフィ

ソース
名前 / ルール値 / 設定用途
Current brand fontSource Sans 32025年7月にAvenir Nextから変更。デモではパッケージのsystem-uiフォールバックを使用しています。
Body16px / 1.375ブラウザーのルートサイズが標準の場合、行ボックスは22pxです。
H134px / 1.25; weight 600600px以下では26px。コード上の行の高さはデスクトップで42.5pxです。
H226px / 1.25; weight 600600px以下では22px。
H3 / H422px weight 400 / 18px weight 500小さい画面では18px / 16px。どちらも行送りは1.25です。
H514px / 1.25; weight 600大文字表記、字間1px。
Normalizationbase .517; step .0054バージョン管理されたカスタムプロパティでは、見出しのレベルに応じて調整幅が段階的に大きくなります。簡略化された基盤の表とは異なります。

グリッド、リズム、レスポンシブの範囲

ソース
名前 / ルール値 / 設定用途
Grid12 columns; 30px guttersドキュメントのレイアウトモデル。デモでは8/4のエディトリアル分割を採用しています。
Maximum width1230pxコンテンツ幅を固定せず、画面幅に応じて外側の余白を調整してください。
Edge spacing15px mobile; 30px tablet/desktop画面幅が狭い場合も、読みやすい余白を確保してください。
Breakpoints0–600, 601–900, 901–1020, 1021–1200, 1201+5.10.2モジュールでエクスポートされたvarsBreakpointsを確認済みです。
Text rhythm15px paragraph gap; 30px stacked headingsエディトリアルな余白であり、普遍的な4pxトークンスケールを示すものではありません。
Measure66 characters ideal; 45–90 range長文を読み進めるためのフォントガイダンス。プレビューでは最大幅を66chに設定しています。

Expandableの構造と実行時の動作

ソース
名前 / ルール値 / 設定用途
Rooto-expandable背景と枠線の修飾は、それぞれ個別に選べる任意の設定です。
Required descendants__header, __label, __contentヘッダーはネイティブのボタンです。実行時に動作フックとARIA状態が追加されます。
InitializationExpandable.init(container)一致するルートに対して初期化されたインスタンスを返します。
Instance APIexpand(), collapse(), isExpanded(), getLabelText()古いtoggleTargetStateのドキュメント項目ではなく、公開されている5.10.2を基準に確認しています。
Initial expanded stateo-expandable--onload-open初期化前に設定してください。実行時に制御される表示クラスを手動で変更しないでください。
Group choiceo-expandable-group--accordion相互排他動作はオプトイン方式です。プレビューでは、開いたパネルを比較できるよう、同時に複数を開ける設定にしています。
03

CFPB デザインシステム 完全ガイド

実際のインターフェースで、このデザインシステムを選び、適用し、レビューするための実践ガイドです。

DESIGN-cfpb.md

詳しいガイダンス、実装の出発点、ソースへのリンクをまとめています。

ガイドをダウンロード

CFPB デザインシステム CFPBの実装範囲

装飾より先に、消費者向けの情報を

CFPBは、フォームや開示コンポーネントとともに、エディトリアルな情報設計を採用しています。グリッド、文字の階層、小さな大文字のスラッグ見出しも、よく知られた緑と同じくらい重要です。このサンプルは、独自に作成した読書用ワークシートです。重要な案内は常に表示し、任意の説明にはネイティブのExpandableを使用しています。金融上の推奨、苦情の申し立て、政府サービスではありません。

この OpenDesign ガイドから

パッケージは公開されていますが、政府の紋章とCFPBの名称にはそれぞれ別の使用制限があります。コードを再利用しても、サービスが公式になるわけではありません。そのため、この例では紋章、ロゴ、公式サイトのバナー、政府機関を模したヘッダーを使用していません。

関連する仕様を確認する

CFPB デザインシステム タイポグラフィと読み進めるリズム

Source Sans 3とバージョンによる違い

現在のフォントガイダンスでは、2025年7月にAvenir Nextから変更されたSource Sans 3を指定しています。この例は外部ホストのフォントに依存せず、コンパイル済みのシステムフォントへのフォールバックを意図的に使用しています。実際のブランド導入では、ライセンス取得済みフォントのファイルを、ドキュメントに記載されたライセンスフォント用mixinを通じて提供してください。

公開されている見出しの表と、現在の基本スタイル文字列は一致していません。パッケージ5.10.2では、H1は1.25の行送りを伴う2.125emです。ルートサイズが16pxの場合は34/42.5となり、表にある行の高さ60pxとは異なります。上記のリファレンスは、実行可能なソースに従っています。見出しの正規化にはレベルごとの調整も使われるため、簡略化された表をグローバルな上書き設定にしないでください。

段落は1行あたり約66文字、段落間は15pxを目安にします。見出しは、コンパクトなH5/スラッグの表記を除き、文頭のみ大文字にします。これにより、すべての段落をカードに押し込めることなく、ガイダンス記事を見通しよく読めます。

関連する仕様を確認する

CFPB デザインシステム 色とエディトリアルな構成

緑そのものではなく、色の役割を意識する

コンパイル済みのCSSでは、--black、--green、--pacificと、段階別の補助色の系統が公開されています。テキストにはblackを使い、インタラクションをより明確に示す色としてPacificを使います。Expandableの薄いグレーの背景は、読みやすさを区切るためのもので、無効状態を示すものではありません。ネイティブのスラッグ見出しでは、全幅に引いた細いグレーの線に、短い太めの緑の線を組み合わせます。

このワークシートでは、メインの読書面を白のままにしています。緑はセクションの区切りに使い、進捗数は通常の読みやすいテキストで示しています。項目が完了またはチェック済みであることは、緑と赤を見分けられなくても理解できます。配色のすべてに、成功やエラーの意味を独自に与えることはしていません。

  • 控えめなExpandableの背景には--gray-5を、枠線には--gray-40を使います。
  • リンクは、色相だけでなく下線やインタラクション時の表示でも判別できるようにしてください。
  • ブランド識別要素は、許可された用途に限って使用してください。配色のライセンスは、提携関係を示唆する許可ではありません。

関連する仕様を確認する

CFPB デザインシステム 12カラムと適切な情報密度

余白を活かした記事

ドキュメントに記載されたグリッドは12列で、ガターは固定の30px、最大幅は1230pxです。モバイルでは外側の余白を15px、それより大きなレイアウトでは30pxにします。このプレビューでは、901px以上の場合、記事を8列、作業チェックリストを4列に分け、幅が狭くなるとチェックリストを記事の下に配置します。この分割は公開済みのグリッドを使ったアプリケーションのレイアウトであり、公式の汎用ページテンプレートではありません。

ページを広くできる場合でも、長文の最大幅は66chに保ちます。ボタンは折り返し、サイドバーには固定高さや入れ子のスクロール領域を設けません。説明を開くと通常のドキュメントの高さが伸びるため、リソースページに埋め込まれたプレビューでも同じレイアウトを使えます。

関連する仕様を確認する

CFPB デザインシステム ネイティブのExpandable構造

トリガーと任意のコンテンツを分ける

旧式のExpandableルートには、__headerボタン、__label、__content領域が含まれます。フォーカス対象はボタンです。この例ではspan要素をラベルに使い、装飾用のプラス/マイナス表示はアクセシブルネームから除外しています。ライブラリは初期化時に展開状態と動作に必要なフックを設定するため、アプリケーション側で同じ変更を重ねて行う必要はありません。

--backgroundと--borderの修飾子で枠線付きの表示にします。--padded修飾子はラベルも大きくなる、よりゆったりした表示です。すべての開閉パネルで使う必要はありません。読者が任意の説明を開く前に課題を理解できるよう、重要なワークシートの指示は非表示のパネルの外に置きます。

html
<div class="o-expandable o-expandable--background o-expandable--border">
  <button class="o-expandable__header" type="button">
    <span class="o-expandable__label">Keep the question specific</span>
    <span class="o-expandable__cues" aria-hidden="true">
      <span class="o-expandable__cue-open">+</span>
      <span class="o-expandable__cue-close">−</span>
    </span>
  </button>
  <div class="o-expandable__content">
    <p>Describe the document and the words you want explained.</p>
  </div>
</div>

コードリファレンス

関連する仕様を確認する

CFPB デザインシステム 開閉パネルとチェックリストの動作

独立した2種類の状態

開閉パネルの状態はネイティブライブラリが管理します。ワークシートでは通常のチェックボックス3つの値と、それに応じた完了数を管理します。パネルを開いてもタスクは完了にならず、タスクにチェックを入れても説明は閉じません。これらは意図的に分けたモデルです。表示されていることは、内容を理解した証拠にはなりません。

5.10.2のインスタンスでは、expand、collapse、isExpandedが利用できます。公開されているExpandablesのページには古いtoggleTargetStateの記述があるため、このガイドでは実際のバージョンAPIを使います。「すべて開く」と「すべて閉じる」では、初期化済みのインスタンスを順に操作します。ここでは読者が2つの説明を見比べられるよう、各パネルを個別に開閉できる構成が適しています。

リセット操作ではすべてのチェックボックスを未選択にし、ライブラリのAPIを使ってパネルを閉じます。送信完了を示すメッセージを作り出すことはありません。チェックボックスを変更するたびにキーボードフォーカスを移動させず、丁寧な通知を行うステータス要素で進捗を知らせます。

関連する仕様を確認する

CFPB デザインシステム コンパイル済みアセットと基本スタイル

クラシックスクリプトではなくESモジュール

バージョンを固定してパッケージをインストールし、コンパイル済みアセット2つを静的ファイル用ディレクトリにコピーしてから、モジュールスクリプトでExpandableをインポートします。公開済みの5.10.2のindex.jsにはESのエクスポートが含まれているため、古い導入例にあるクラシックスクリプト用のscriptタグをコピーすると構文エラーになります。また、旧式のExpandableルートも自動では初期化されません。

コンポーネントのスタイルシートだけでは、ページ全体の見出しと本文のスタイルは適用されません。本番プロジェクトでは、公式導入ガイドに示された方法でパッケージの基本SCSSをコンパイルできます。この単独の例では、同じ公開済みモジュールに含まれる基本スタイルの文字列をそのまま抽出し、別ファイルとしてローカルに保存しています。この抽出はローカルでのパッケージング上の選択であり、新たに公開されたCFPBのエントリーポイントではありません。

アイコン参照を含むソースSCSSをビルドする場合は、プロジェクトで説明されているPostCSSのSVG置換処理を含めてください。コンパイル済みスナップショットでは、これらの参照はすでに解決されています。--cfpb-background-icon-svgが未解決のままになる、独自のSass専用セットアップを作らないでください。

  1. 5.10.2をインストールし、ローカルで配信するアセットとともにTERMS.mdを保持してください。
  2. コンポーネントのCSSと選択したグローバル基本スタイルを読み込み、フォントを明示的に設定してください。
  3. モジュールとしてインポートし、マークアップの用意ができてからコンテナを初期化します。続いて、返されたインスタンスにアプリケーションの操作を紐付けてください。

関連する仕様を確認する

CFPB デザインシステム 読み進める操作を確認する

開閉パネルだけではアクセシビリティの確認は完了しない

画面幅が狭い場合は、ネイティブの基本スタイルによってメインタイトルが縮小され、チェックリストは記事の後に配置されます。デスクトップ幅では、2列のレイアウトで任意の説明と作業メモを並べて表示します。パネルを閉じた状態だけでなく、すべて開いた状態でも両方の表示をテストしてください。

Tabキーで各ネイティブボタンに移動し、EnterまたはSpaceで開閉します。ライブラリがaria-expandedを更新し、非表示のコンテンツがTabキーでの移動対象から外れることを確認してください。次に、タスクを2つチェックして説明をすべて開閉し、リセットするまでは完了数が2のまま変わらないことを確認します。こうしたテストでは、スクリーンショットでは分からないアプリケーションとライブラリ間の状態の競合を見つけられます。

このローカルの例では、ストレージ、分析、ネットワーク送信、実際の個人データは使用していません。ネイティブコンポーネントを使うだけで、サイトのアクセシビリティが保証されるわけではありません。導入先のサービスでは、コントラスト、コンテンツ、ブラウザー対応状況、支援技術での動作を引き続き確認する必要があります。

関連する仕様を確認する

CFPB デザインシステムのコンポーネント例

ネイティブのExpandable

必須の旧式構造、装飾用の表示、任意の補足説明コンテンツ。

html
<div class="o-expandable o-expandable--background o-expandable--border">
  <button class="o-expandable__header" type="button">
    <span class="o-expandable__label">Keep the question specific</span>
    <span class="o-expandable__cues" aria-hidden="true">
      <span class="o-expandable__cue-open">+</span>
      <span class="o-expandable__cue-close">−</span>
    </span>
  </button>
  <div class="o-expandable__content">
    <p>Describe the document and the words you want explained.</p>
  </div>
</div>

コードリファレンス

開閉パネルを初期化して操作する

5.10.2のモジュールと返されたインスタンスを使います。グローバル基本スタイルを使うかどうかは別途判断してください。

html
npm install --save-exact @cfpb/[email protected]
# Copy the published compiled files as static assets:
mkdir -p public/vendor/cfpb
cp node_modules/@cfpb/cfpb-design-system/dist/index.css public/vendor/cfpb/
cp node_modules/@cfpb/cfpb-design-system/dist/index.js public/vendor/cfpb/

# In the HTML document:
<link rel="stylesheet" href="/vendor/cfpb/index.css">
<!-- Supply project global/base typography separately. -->
<script type="module">
  import { Expandable } from '/vendor/cfpb/index.js';
  const panels = Expandable.init(document.querySelector('#guide'));
  document.querySelector('#open-all').addEventListener('click', () => {
    panels.forEach(panel => panel.expand());
  });
  document.querySelector('#close-all').addEventListener('click', () => {
    panels.forEach(panel => panel.collapse());
  });
</script>

コードリファレンス

  • 公開済みの5.10.2はESMです。クラシックスクリプトとして読み込まないでください。
  • この例では、パッケージからそのまま抽出した基本スタイルを使い、ベンダーのSOURCE.mdにその旨を記載しています。

単体で動作するサンプル一式

レイアウト、操作要素、初期化処理を含むドキュメント全体です。リンク先のサンプルアーカイブを展開すると、このプレビューで使用する正確な相対パスのベンダーアセットが得られます。その後、HTTP経由で配信してください。

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>CFPB reading worksheet specimen</title><link rel="stylesheet" href="vendor/cfpb-5.10.2/index.css"><link rel="stylesheet" href="vendor/cfpb-5.10.2/base-extracted.css"><style>*{box-sizing:border-box}body{margin:0;background:#fff}main{max-width:1230px;margin:auto;padding:30px}header{max-width:66ch;margin-bottom:30px}.layout{display:grid;grid-template-columns:2fr 1fr;gap:30px}.article{min-width:0}.o-expandable{margin:15px 0}.toolbar{display:flex;gap:15px;flex-wrap:wrap;margin:15px 0}.notes{border-top:5px solid var(--gray-40);padding-top:15px}.notes label{display:flex;gap:10px;margin:20px 0;align-items:flex-start}.notes input{flex:none;width:20px;height:20px;margin-top:2px;accent-color:var(--pacific)}.o-expandable__content p{max-width:66ch}.eyebrow{color:var(--gray);font-size:14px}.note{font-size:14px;margin-top:30px;color:var(--gray)}button{font-family:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--pacific);outline-offset:3px}@media(max-width:900px){.layout{grid-template-columns:1fr}}@media(max-width:600px){main{padding:20px 15px}}</style><main><header><p class="eyebrow">Independent educational specimen · CFPB components</p><h1>Make your question easier to answer</h1><p>Use this reading worksheet to organize a question about an unfamiliar document. No information is submitted or saved.</p></header><div class="layout"><section class="article" id="guide"><div class="m-slug-header"><h2 class="m-slug-header__heading">Before a conversation</h2></div><p>A useful question identifies the document, quotes the unclear wording, and says what you want explained. Keep account numbers and other private details out of this practice worksheet.</p><div class="toolbar"><button id="open-all" class="a-btn a-btn--secondary">Open all explanations</button><button id="close-all" class="a-btn a-btn--secondary">Close all</button></div><div class="o-expandable o-expandable--background o-expandable--border">
  <button class="o-expandable__header" type="button">
    <span class="o-expandable__label">Keep the question specific</span>
    <span class="o-expandable__cues" aria-hidden="true">
      <span class="o-expandable__cue-open">+</span>
      <span class="o-expandable__cue-close">−</span>
    </span>
  </button>
  <div class="o-expandable__content">
    <p>Describe the document and the words you want explained.</p>
  </div>
</div><div class="o-expandable o-expandable--background o-expandable--border">
  <button class="o-expandable__header" type="button">
    <span class="o-expandable__label">Separate a question from a request</span>
    <span class="o-expandable__cues" aria-hidden="true">
      <span class="o-expandable__cue-open">+</span>
      <span class="o-expandable__cue-close">−</span>
    </span>
  </button>
  <div class="o-expandable__content">
    <p>“What does this label mean?” asks for an explanation. “Please send a copy” asks for an action. Writing them separately makes the desired response easier to identify.</p>
  </div>
</div><p class="note">Original practice content. This example does not provide financial advice or represent a CFPB service.</p></section><aside class="notes"><h2>Your working notes</h2><p>Use the checklist as a local memory aid.</p><label><input type="checkbox">I can name the document I am asking about.</label><label><input type="checkbox">I have identified the wording I want explained.</label><label><input type="checkbox">I know whether I need an explanation or an action.</label><p id="count" role="status" aria-live="polite">0 of 3 notes checked</p><button id="reset" class="a-btn">Reset worksheet</button></aside></div></main><script type="module">import {Expandable} from './vendor/cfpb-5.10.2/index.js';const panels=Expandable.init(document.querySelector('#guide'));document.querySelector('#open-all').onclick=()=>panels.forEach(x=>x.expand());document.querySelector('#close-all').onclick=()=>panels.forEach(x=>x.collapse());const checks=[...document.querySelectorAll('input[type=checkbox]')];const update=()=>document.querySelector('#count').textContent=checks.filter(x=>x.checked).length+' of 3 notes checked';checks.forEach(x=>x.onchange=update);document.querySelector('#reset').onclick=()=>{checks.forEach(x=>x.checked=false);update();panels.forEach(x=>x.collapse())};window.demoReady=true;</script></html>

コードリファレンス

  • 完全なサンプルは「ソース」からダウンロードできます。READMEに正確なローカル起動コマンドが記載されています。
  • ベンダーのパスはこのドキュメントからの相対パスのままにしてください。アーカイブには、このプレビューで使用するアセット一式が含まれています。
04

CFPB デザインシステム AIエージェントの設定

実装の出発点

ローカルのデモでは、ネイティブの5.10.2コンパイル済みモジュールとCSSを実行します。npmからコピーする手順はプロジェクト向けです。ソースSCSSをビルドする場合は、説明されているアイコン処理も必要です。Sourcesにある完全な動作例のZIPには、プレビューで使う依存関係とドキュメント一式も含まれています。展開したディレクトリでpython3 -m http.server 8080を実行し、http://localhost:8080/cfpb.htmlを開いてください。モジュールを使う例をfile://経由で開かないでください。

bash / html
npm install --save-exact @cfpb/[email protected]
# Copy the published compiled files as static assets:
mkdir -p public/vendor/cfpb
cp node_modules/@cfpb/cfpb-design-system/dist/index.css public/vendor/cfpb/
cp node_modules/@cfpb/cfpb-design-system/dist/index.js public/vendor/cfpb/

# In the HTML document:
<link rel="stylesheet" href="/vendor/cfpb/index.css">
<!-- Supply project global/base typography separately. -->
<script type="module">
  import { Expandable } from '/vendor/cfpb/index.js';
  const panels = Expandable.init(document.querySelector('#guide'));
  document.querySelector('#open-all').addEventListener('click', () => {
    panels.forEach(panel => panel.expand());
  });
  document.querySelector('#close-all').addEventListener('click', () => {
    panels.forEach(panel => panel.collapse());
  });
</script>

あなたのプロジェクト向けプロンプト

AI エージェント用プロンプト
CFPB を参考にした、独立した編集用ワークシートを作成します。実際の 5.10.2 Expandable モジュールを使用してください。必須のヘッダー/ラベル/コンテンツ構造、すべてを開く・閉じる独立したアクション、開示状態を切り替えても値が保持される通常のチェックボックス式チェックリストを含めます。12 列の 8/4 構成を採用し、901px 未満では縦積みにします。モバイルでは左右に 15px の余白を設け、本文の行幅は 66ch にします。基本タイポグラフィはコンポーネント CSS とは別に指定してください。CFPB の識別マーク、金融アドバイス、実際には機能しない送信処理、ESM バンドルでの classic-script インポートは追加しないでください。
05

CFPB デザインシステム 参照元と対象範囲

独立した実装リファレンスです。ネイティブのパッケージコンポーネントは、CFPB との提携を示すものではありません。オリジナルの教育用コンテンツであり、金融アドバイスや送信機能はありません。再利用する前に TERMS.md を確認してください。