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

Designsystemet デザインシステム.

文字数フィードバックと表示状態の保持機能を備えたタスクブリーフ編集画面を通して、Designsystemetの実際のテーマロール、サイズモード、ネイティブな入力フィールドの動作を確認できます。

OpenDesign ガイド6章参考項目 35 件オリジナルアプリケーションガイド
01

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

ネイティブの文字数カウンターを確認し、テーマとサイズを変更して、変更内容に応じて確認状態を保持または無効にしてください。

サイズと外観を変えてブリーフを確認完全な例を開く
ネイティブ Designsystemet 1.23.0 の ds-field の動作、CSS、ローカルの Inter フォントを使ったデフォルトテーマ。· 実装リファレンス
02

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

@digdir/designsystemet-css/web 1.23.0 のデフォルトテーマのエクスポートとネイティブな ds-field の実装。カラーの各行にはライトモードの値を明記しています。

デフォルトのライトアクセントの役割

ソース
名前 / ルール値 / 設定用途
--ds-color-accent-background-default#fff1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-background-tinted#eef4fa 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-surface-tinted#ddeaf6 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-surface-hover#c7ddf0 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-border-subtle#99c0e3 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-border-default#2a7cc5 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-text-default#002c54 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-base-default#0062ba 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-base-hover#004f96 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-base-active#003d75 1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。
--ds-color-accent-base-contrast-default#fff1.23.0 のデフォルトのライトテーマで実際に使われる役割です。ランタイムのダークスキームでは、別の役割値が使われます。

デフォルトのライトニュートラルの役割

ソース
名前 / ルール値 / 設定用途
--ds-color-neutral-background-default#fff不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-background-tinted#f3f3f4 不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-surface-default#fff不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-surface-tinted#e8e8e9 不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-border-subtle#bbbcbd 不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-text-subtle#5b5d60 不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-text-default#292c30 不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-base-default#24272b 不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。
--ds-color-neutral-base-contrast-default#fff不要なステータスの意味を持たせずに、ニュートラルの役割を補助的な背景面やテキストに使います。

サイズモードと文字の基礎

ソース
名前 / ルール値 / 設定用途
--ds-size-mode-font-size--sm1実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-size-mode-font-size--md1.125実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-size-mode-font-size--lg1.3125実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-size-base18実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-font-familyInter実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-font-weight-regular400実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-font-weight-medium500実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-font-weight-semibold600実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-line-height-sm1.3実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-line-height-md1.5実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-line-height-lg1.7実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-border-radius-base0.25rem実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-border-radius-smmin(.5 * var(--ds-border-radius-base), var(--ds-border-radius-scale))実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-border-radius-mdmin(var(--ds-border-radius-base), 2 * var(--ds-border-radius-scale))実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
--ds-border-radius-lgmin(2 * var(--ds-border-radius-base), 5 * var(--ds-border-radius-scale))実際にエクスポートされるスカラー値または式です。すべてのスカラー値をピクセル値として解釈せず、data-size モードを使用してください。
03

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

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

DESIGN-digdir-designsystemet.md

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

ガイドをダウンロード

Designsystemet デザインシステムの動作、CSS、テーマパッケージ

3つの要素を正しい順序で読み込む

Designsystemetは、フレームワークに依存しない動作、コンポーネントのCSS、テーマの値を分けています。この例では designsystemet-web と designsystemet-css を 1.23.0 に固定し、CSSを読み込んでからデフォルトテーマを読み込み、動作を一度だけ登録します。動作パッケージなしでスタイルを適用したフィールドは、ここで示す連携済みの ds-field と同じ実装ではありません。

この OpenDesign ガイドから

現在のプレーンな HTMLの仕様を使う

この実例では、通常の input、textarea、select 要素を ds-field で囲み、ds-input クラスを使用しています。これによりネイティブのフォームコントロールを維持しながら、パッケージによってラベルと説明を連携できます。古い Reactのみのフィールド APIをコピーするものではありません。ソース全体には、正しいパッケージのインポートと、元のアプリケーションの確認ロジックが含まれています。

Designsystemetデザインシステムの配色とサイズモード

データ属性で外観を切り替える

ページのルート要素に data-color-scheme を設定し、ライトまたはダークを指定します。テーマは対応するセマンティックカラーを適用し、フォームの値はそのまま保持します。パラメータ表にはライトモードのデフォルト値を明記しています。同じ16進カラーコードがダークモードにも適用されるかのような誤解を招く表現はしていません。外観を切り替えるボタンには、次に実行される操作を示すラベルを付けています。

サイズモードをシステム全体に適用する

読みやすさのサイズを切り替えるコントロールは、data-size を sm、md、lg の間で変更します。タイトルだけを拡大するのではなく、テーマのサイズモードを切り替えます。公開されているモード係数は 1、1.125、1.3125 です。これらはトークンの計算式に使われるものであり、すべてのコントロールにそのピクセル値を設定するという一律の指示ではありません。この例では、デスクトップだけでなくスマートフォンの幅でも大サイズモードをテストしています。

DesignsystemetデザインシステムのInterとセマンティックタイポグラフィ

必要なウェイトを含める

プレビューには Inter 400、500、600 を含め、小文字の l の字形に関するドキュメント記載の cv05 フォント機能を有効にしています。ページでは標準の見出しクラスと段落クラスを使い、フォントウェイトと行の高さがテーマに従うようにしています。固定値の 14px 注釈は作成者が追加した補足であり、メインの操作スケールには含まれないことが明確です。

補助コンテンツを対応するコントロールのそばに配置する

タイトルのヒントはラベルの目的を、期待される内容のヒントは入力内容の種類を説明します。これらは対応するコントロールのそばに配置され、ds-field で関連付けられています。補足ガイダンスは別のカードにまとめ、画面幅が狭い場合はフォームの後に表示します。説明の表示にホバー操作は必要ありません。

Designsystemetデザインシステムの自動関連付けと文字数フィードバック

ds-field で1つのコントロールを関連付ける

各 ds-field には、入力形式のコントロールを1つと、そのラベル、および任意の data-field 説明を含めます。パッケージが ID を割り当て、ラベルと説明の関連付けを構成します。関係のないコントロールを1つの ds-field にまとめると、この自動処理の前提が曖昧になります。複数の項目をグループ化する場合は、ラッパーを汎用フォームコンテナとみなさず、fieldset を使用してください。

  • 各 ds-field には入力形式のコントロールを1つだけ配置します。
  • 関連する補助コンテンツには data-field の説明を使用します。
  • ID と aria-describedby の関連付けは標準のオブザーバーに任せます。

カウンターの計測対象を理解する

Designsystemetデザインシステムのアプリケーション検証とレビュー状態

作成した内容を個別に検証する

アプリケーションでは、タスクのタイトルと成果を必須とし、成果がサンプルの上限を超えた場合は入力を受け付けません。操作につながるメッセージを表示した後、該当するフィールドにフォーカスします。標準のカウンターは文字数を説明し、送信処理はアプリケーション独自のレビュー条件を適用します。maxlength によって貼り付けたテキストが通知なく切り捨てられることはありません。

表示を切り替えてもデータを保持する

レビューが成功すると、現在のタイトルと成果をテキストで表示します。どちらかのフィールドを編集すると結果をクリアします。一方、外観やサイズの切り替えでは概要の内容が変わらないため、レビュー結果を保持します。この違いは意図したもので、動作も検証済みです。プロジェクト管理サービスへのデータ送信は行いません。また、プレビューが外部にタスクを作成したと示すこともありません。

Designsystemetデザインシステムのネイティブフィールド完全実装

バージョンを固定したサンプルを再現する

Vite のバニラプロジェクトを作成し、バージョンを固定した Designsystemet の2つのパッケージと Inter をインストールしてから、完全なエントリーファイルと digdir.css を保存します。ルートのマウント要素は残してください。ソースには登録処理、テーマの適用順、カウンターのマークアップ、表示コントロール、レビュー検証のすべての遷移が含まれています。ローカルプレビューでも手描きの模倣ではなく、同じ標準のフィールドオブザーバーを使用します。

  1. 動作を一度インポートしてから、コンポーネント CSS とデフォルトテーマを読み込みます。
  2. Inter 400、500、600 を読み込み、完全なエントリー/CSSを保存します。
  3. 上限超過時のカウンターを確認し、成果の内容を修正します。
  4. レビューを実行し、サイズと外観を切り替えてから、テキストを編集して結果が消えることを確認します。

上限超過と修正後の動作をテストする

成果に通常の文字を150文字貼り付け、上限超過として10文字と報告されることを確認します。この状態ではレビューが拒否される必要があります。短い成果に置き換えてレビューを成功させ、その後、結果を保持したままダークモードと読みやすさのサイズを切り替えます。タイトルを編集し、古いレビュー結果が消えることを確認します。各ビューポート幅で、フォーカス表示と折り返しも確認してください。

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

main.js — ネイティブフィールドとテーマの完全な実装例

完全なエディター、実際のカウンターマークアップ、外観とサイズのコントロール、ローカルでのレビュー検証。

JavaScript
import '@digdir/designsystemet-web';
import '@digdir/designsystemet-css';
import '@digdir/designsystemet-css/theme';
import '@fontsource/inter/latin-400.css';
import '@fontsource/inter/latin-500.css';
import '@fontsource/inter/latin-600.css';
import './digdir.css';
document.documentElement.dataset.colorScheme='light';document.documentElement.dataset.size='md';document.getElementById('root').innerHTML=`<main><header><div><p class="eyebrow">DESIGNSYSTEMET / NATIVE FIELD STUDY</p><h1 class="ds-heading" data-size="lg">Write a useful task brief</h1></div><button id="theme" class="ds-button" data-variant="secondary" aria-pressed="false">Dark appearance</button></header><p class="ds-paragraph lead">Describe one outcome clearly. The native field connects its label, hint and character feedback while the theme controls size and appearance.</p><div class="layout"><form id="brief-form" novalidate><ds-field class="ds-field"><label>Task title</label><input id="title" class="ds-input" type="text" value="Review the navigation"/><p data-field="description">Use a short label that identifies the work.</p></ds-field><ds-field class="ds-field"><label>Desired outcome</label><textarea id="outcome" class="ds-input" rows="4">Make the main sections easier to find without changing the accepted content.</textarea><p data-field="description">Describe the result, not a list of implementation instructions.</p><p data-field="counter" data-limit="140" data-over="%d characters over the sample limit" data-under="%d characters remaining"></p></ds-field><p id="error" class="ds-validation-message" hidden role="alert"></p><button class="ds-button" type="submit">Review brief</button></form><aside class="ds-card" data-color="neutral"><h2 class="ds-heading" data-size="sm">Reading size</h2><p class="ds-paragraph">The theme changes the complete size mode rather than scaling only a heading.</p><ds-field class="ds-field"><label for="size">Component size</label><select class="ds-input" id="size"><option value="sm">Small</option><option value="md" selected>Medium</option><option value="lg">Large</option></select></ds-field><h3 class="ds-heading" data-size="xs">A clear brief contains</h3><ul><li>One concrete outcome.</li><li>Constraints that must remain true.</li><li>A way to check the result.</li></ul><p class="small">Default theme and web behavior 1.23.0. Original local application; no task is created elsewhere.</p></aside></div><section id="review" class="ds-card" data-color="success" hidden tabindex="-1"><h2 class="ds-heading" data-size="sm">Local brief review</h2><h3 id="review-title" class="ds-heading" data-size="xs"></h3><p id="review-body" class="ds-paragraph"></p><p class="small">Editing a field clears this review. Appearance and reading size preserve it.</p></section></main>`;const $=id=>document.getElementById(id);function edit(){$('review').hidden=true;$('error').hidden=true}['title','outcome'].forEach(id=>$(id).addEventListener('input',edit));$('theme').addEventListener('click',()=>{const dark=document.documentElement.dataset.colorScheme!=='dark';document.documentElement.dataset.colorScheme=dark?'dark':'light';$('theme').setAttribute('aria-pressed',String(dark));$('theme').textContent=dark?'Light appearance':'Dark appearance'});$('size').addEventListener('change',e=>document.documentElement.dataset.size=e.target.value);$('brief-form').addEventListener('submit',e=>{e.preventDefault();let message='',focus='outcome';if(!$('title').value.trim()){message='Enter a task title.';focus='title'}else if(!$('outcome').value.trim())message='Describe the desired outcome.';else if($('outcome').value.length>140)message='Shorten the outcome to 140 characters or fewer.';if(message){$('error').textContent=message;$('error').hidden=false;$(focus).focus();return}$('review-title').textContent=$('title').value.trim();$('review-body').textContent=$('outcome').value.trim();$('review').hidden=false;$('review').focus()});

コードリファレンス

  • Select では ds-field 内で現在の ds-input スタイルを使用します。カウンターのフィードバックは標準のオブザーバーが管理します。

digdir.css — オリジナルのレスポンシブレイアウト

ネイティブテーマを基にしたレイアウト。Inter の機能設定も含みます。

CSS
body{margin:0;font-family:Inter,sans-serif;font-feature-settings:"cv05" 1}main{max-width:1160px;margin:auto;padding:32px}header{display:flex;gap:24px;justify-content:space-between;align-items:start}.eyebrow{font-size:13px;letter-spacing:.04em;font-weight:600}.lead{max-width:65ch;margin-top:24px}.layout{display:grid;grid-template-columns:1.6fr 1fr;gap:40px;margin-top:32px}form{display:grid;gap:24px;align-content:start}form button{justify-self:start}aside{padding:24px;align-self:start}aside h3{margin-top:32px}aside select{margin-top:8px}aside li{margin:12px 0}.small{font-size:14px;line-height:1.6}#review{padding:24px;margin-top:32px}#review h3{margin-top:16px}[hidden]{display:none!important}@media(max-width:760px){main{padding:20px}.layout{grid-template-columns:1fr;gap:24px}header{flex-direction:column}}

コードリファレンス

  • テーマとサイズの切り替えでは値を保持し、コンテンツの編集時だけレビューを無効にします。
04

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

実装の出発点

ブラウザー上で、ネイティブなラベルの関連付け、カウンターの状態、検証後の修正、ライト/ダークモードとサイズの切り替えをテストしました。

シェル
npm create vite@latest ds-brief -- --template vanilla
cd ds-brief
npm install
npm install @digdir/[email protected] @digdir/[email protected] @fontsource/inter
# Replace src/main.js and add src/digdir.css. Keep <div id="root"></div>.
npm run dev

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

AI エージェント用プロンプト
正しい順序で Designsystemet 1.23.0 の動作/CSS/デフォルトテーマを使用し、概要エディターを構築してください。ds-field と1つのネイティブコントロールを組み合わせ、実際の data-field カウンター属性と Inter のウェイトを使用します。外観とサイズを切り替えてもレビュー結果を保持し、コンテンツの編集後は結果をクリアしてください。貼り付けた入力を切り捨てず、元の140文字ルールを適用します。
05

Designsystemetデザインシステムの情報源と対象範囲

OpenDesignで作成したローカルエディターです。Designsystemet CSS とウェブ動作 1.23.0 を使用しています。デフォルトテーマとフィールドオブザーバーは標準機能で、概要の内容、140文字の上限、レビューの手順は独自のものです。