sgds-theming について
sgds-themingは、SGDSのCSSトークンを上書きして製品テーマをカスタマイズするスキルガイドです。SGDSを使う開発者向けに、ブランドカラー、昼夜モード、タイポグラフィ、角丸、スペーシング密度を説明します。
主な機能
- 01製品ブランドカラーのトークン上書き
- 02GovTechプリセットパレットの設定
- 03昼夜テーマの有効化
- 04フォントと書体ロールのカスタマイズ
- 05セマンティックな角丸トークンの設定
- 06コンパクトまたは広めの密度選択
活用シーン
- 01製品へのカスタムブランドカラー適用
- 02GovTech製品でのパレット割り当て
- 03必要に応じた夜間モードの有効化
- 04フォント、角丸、スペーシングの調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ govtechsg/ sgds-web-component --skill sgds-themingインストール後、Claude Code で/sgds-themingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/border-radius.mdbrand-colour.mddensity.mdtypography.md詳細
SGDS テーマ設定スキル
SGDS CSS トークンのオーバーライドを使って、製品テーマ(ブランドカラー、昼/夜モード、フォント、角丸、スペーシングの密度)をカスタマイズする方法です。
前提条件
カスタム CSS より前に themes/day.css をインポートしてください。インポート順の詳細については、sgds-getting-started を参照してください。
選択ガイド
| 変更したい内容 | トークン/方法 | リファレンス |
|---|---|---|
| 製品ブランドカラー(カスタム) | --sgds-product-primary-{100–900} をオーバーライド | brand-colour.md |
| 製品ブランドカラー(GovTech) | themes/gt/<colour>.css のいずれか1つをインポートし、--sgds-product-primary-* にマッピング | brand-colour.md |
| ダーク/夜間モードを有効化 | themes/night.css をインポートし、.sgds-night-theme を <html> に追加 | 以下を参照 |
| フォント書体(すべての役割) | --sgds-font-family-brand をオーバーライド | typography.md |
| フォント書体(役割ごと) | 個別の --sgds-font-family-{display,heading,subtitle,body,label,code} をオーバーライド | typography.md |
| 角丸 | セマンティックな --sgds-{purpose}-border-radius トークンをオーバーライド | border-radius.md |
| スペーシングの密度(コンパクト/ゆったり) | themes/density/compact.css または spacious.css をインポート | density.md |
製品ブランドカラーの変更
デフォルトの製品カラーは紫(--sgds-product-primary-*)です。ブランドカラーを使って100~900のスケール全体をオーバーライドすると、すべての主要なUI要素のテーマを一度に変更できます。
カスタム CSS ファイルを作成し、:root のプリミティブトークンをオーバーライドします。
/* yourCustomCss.css */
:root {
--sgds-product-primary-100: #F5B6DA;
--sgds-product-primary-200: #F186C0;
--sgds-product-primary-300: #EE4FA6;
--sgds-product-primary-400: #EE0290;
--sgds-product-primary-500: #EF0078;
--sgds-product-primary-600: #DD0074;
--sgds-product-primary-700: #C6006E;
--sgds-product-primary-800: #B0006A;
--sgds-product-primary-900: #880061;
}
オーバーライドを適用するには、SGDS テーマファイルの後にカスタム CSS をインポートします。
import "@govtechsg/sgds-web-component/themes/day.css";
import "./yourCustomCss.css";
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "./yourCustomCss.css";
セマンティックトークン(--sgds-primary-*)はプリミティブスケールを参照するため、プリミティブ値を変更すると、主要なカラーを使用するすべてのコンポーネントに自動的に反映されます。
GovTech ブランドカラー
GovTech 製品では、カスタムの16進数値を定義するのではなく、themes/gt/ にある事前承認済みのカラーパレットを使用してください。各製品で選択できるカラーは必ず1色だけです。複数の GT パレットを混在させることはできません。
利用可能なカラー
| ファイル | カラー |
|---|---|
themes/gt/blue.css | 青 |
themes/gt/cyan.css | シアン |
themes/gt/magenta.css | マゼンタ |
themes/gt/pink.css | ピンク |
themes/gt/purple.css | 紫 |
themes/gt/red.css | 赤 |
適用方法
各 GT ファイルは、:root で --gt-color-100 から --gt-color-900 を定義します。カスタム CSS ファイルで、これらを SGDS の製品プライマリスケールにマッピングします。
/* yourCustomCss.css */
:root {
--sgds-product-primary-100: var(--gt-color-100);
--sgds-product-primary-200: var(--gt-color-200);
--sgds-product-primary-300: var(--gt-color-300);
--sgds-product-primary-400: var(--gt-color-400);
--sgds-product-primary-500: var(--gt-color-500);
--sgds-product-primary-600: var(--gt-color-600);
--sgds-product-primary-700: var(--gt-color-700);
--sgds-product-primary-800: var(--gt-color-800);
--sgds-product-primary-900: var(--gt-color-900);
}
インポート順 — マッピングの実行時に --gt-color-* 変数が定義されているよう、GT ファイルをカスタム CSS より前に読み込む必要があります。
import "@govtechsg/sgds-web-component/themes/day.css";
import "@govtechsg/sgds-web-component/themes/gt/blue.css"; // pick one colour only
import "./yourCustomCss.css";
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "@govtechsg/sgds-web-component/themes/gt/blue.css"; /* pick one colour only */
@import "./yourCustomCss.css";
同様に、--sgds-product-primary-* を変更すると、主要なカラーを使用するすべてのコンポーネントに自動的に反映されます。
昼間モード(デフォルト)
昼間モードがデフォルトです。themes/day.css をインポートするだけでよく、追加の設定は必要ありません。
@import "@govtechsg/sgds-web-component/themes/day.css";
夜間モード(任意)
夜間モードはオプトイン方式です。<html> 要素にクラス sgds-night-theme を追加すると有効になり、themes/night.css で定義されている :root.sgds-night-theme セレクターが適用されます。
セットアップ
両方のテーマファイルをインポートします。
import "@govtechsg/sgds-web-component/themes/day.css";
import "@govtechsg/sgds-web-component/themes/night.css";
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "@govtechsg/sgds-web-component/themes/night.css";
夜間モードを有効にする
<html> 要素にクラスを追加すると、すべてのトークンがダークモード用の値に切り替わります。
<html class="sgds-night-theme">
JavaScript を使って実行時に切り替えます。
document.documentElement.classList.toggle("sgds-night-theme");
仕組み
themes/night.css は、themes/day.css と同じセマンティックトークンを :root.sgds-night-theme のスコープで再定義します。すべての SGDS コンポーネントは同じセマンティックトークンを参照するため、クラスを切り替えるだけで、コンポーネントのマークアップを変更せずにUI全体を切り替えられます。
フォントの変更
SGDS ではデフォルトで --sgds-font-family-brand を通じて Inter を使用します。このトークンを上書きすると、別の書体を使用できます。
:root {
--sgds-font-family-brand: "Your Font", system-ui, sans-serif;
}
フォントアセットの読み込みは、ご自身で行ってください。<link> タグまたは @font-face を使用できます。SGDS がカスタムフォントを自動的に読み込むことはありません。デフォルトのフォントを使用する場合は、最適化された Inter Google Fonts の URL について sgds-getting-started を参照してください。
角丸の変更
完全なリファレンス(セマンティックトークンの表、上書き例、使用可能なプリミティブ値)については、border-radius.md を参照してください。
余白の密度の変更
完全なリファレンス(密度モード、トークンの表、影響を受けるコンポーネント、インポート順序)については、density.md を参照してください。
AI エージェント向け
- ユーザーには、カスタム CSS を必ず
themes/day.cssの後にインポートするよう伝えてください。そうしないと、上書きが適用されません。 - ブランドカラーの上書きでは、セマンティックトークンではなくプリミティブトークン(
--sgds-product-primary-{100–900})を対象にします。プリミティブを変更するのが正しい方法です。個々のセマンティックトークンを直接上書きしないでください。 - ナイトモードには、
themes/night.cssのインポートと<html>のsgds-night-themeクラスの両方が必要です。どちらか一方だけでは不十分です。 - ナイトモードは任意です。ユーザーがダークモードのサポートを明示的に必要としている場合にのみ、
themes/night.cssを追加してください。 - デイモードはデフォルトで常に有効です。追加する
sgds-day-themeクラスはありません。 --sgds-font-family-brandを上書きする場合は、フォントファイルもユーザー自身で読み込む必要があることを伝えてください。- カスタムの上書きは
:rootを対象とするため、両方のテーマセレクターがそこから継承し、デイモードとナイトモードの両方に同時に適用されます。 - ブランドカラーのテーマ設定については、brand-colour.md を読んでください。
- タイポグラフィ/フォントのテーマ設定については、typography.md を読んでください。
- 角丸のテーマ設定については、border-radius.md を読んでください。プリミティブ値を
var(--sgds-border-radius-{size})で参照しながら、セマンティックトークン(--sgds-{purpose}-border-radius)を上書きしてください。 - 密度のテーマ設定については、density.md を読んでください。色のテーマの後に、密度ファイル(
compact.cssまたはspacious.css)を1 つインポートしてください。密度が変えるのはパディングとギャップのみです。フォントサイズ、色、角丸は変わりません。