sgds-layouts について
sgds-layouts は、SGDS のコンポーネントとユーティリティを使ったページレイアウトを提供するスキルです。AI エージェントが、全幅またはサイドバー付きの構成で公共向けページやダッシュボードを組み立てる際に役立ちます。
主な機能
- 01全幅レイアウトのバリエーション
- 02サイドバー付きレイアウトのバリエーション
- 03単一・分割・サイド領域の配置
- 04レスポンシブな SGDS コンテナ構成
- 05Storybook レイアウト適用の手順
活用シーン
- 01公共向けサービスページの構成
- 02固定ナビゲーション付きダッシュボードの構築
- 03メイン領域と左右のサイド領域の配置
- 04Storybook のレイアウトをアプリの内容に適用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ govtechsg/ sgds-web-component --skill sgds-layoutsインストール後、Claude Code で/sgds-layoutsを入力して読み込まれたか確認します。
同梱ファイルreference/full-width.mdreference/with-sidebar.md
詳細
SGDS レイアウト
Application Shell 内でコンテンツ領域をどのように配置するかを定義する、本番環境で使用できるページレイアウトパターンです。各レイアウトは SGDS のコンポーネントとユーティリティを組み合わせて、構造の基盤を提供します。コンテンツブロックを配置するだけで、ページが完成します。
レイアウトとは?
レイアウトは、ページ上のコンテンツ領域の空間的な配置を定義します。
- コンテンツ列の数(単一、分割、サイド領域+メイン領域)
- ナビゲーションの配置場所(上部のみ、またはサイドバー)
- ページのスクロール方法(ドキュメントのフロー、またはビューポート内に収める)
レイアウトは、Application Shell(必須のページ構成要素)とBlocks/Templates(実際のコンテンツ)の間に位置します。シェルがレイアウトを包み、ブロックがレイアウトのコンテンツ領域を埋めます。
前提条件
レイアウトを実装する前に、以下を確認してください。
- sgds-getting-started:アプリケーションの初期セットアップ(Inter フォント、基盤 CSS のインポート、コンポーネントの登録)
- sgds-utilities:SGDS ユーティリティクラスの理解(グリッド、間隔、フレックスなど)
- sgds-components:SGDS Web コンポーネントの知識(masthead、mainnav、footer、sidebar)
import "@govtechsg/sgds-web-component/themes/day.css";
import "@govtechsg/sgds-web-component/css/sgds.css";
import "@govtechsg/sgds-web-component/css/utility.css";
インストールの詳細については、sgds-getting-started と sgds-components をご覧ください。
クイック判断ガイド
| 作成するもの | レイアウトのカテゴリ | 使用するレイアウト |
|---|---|---|
| シンプルな一般公開ページ、コンテンツ領域は単一 | Full Width | Default |
| 左側にサイドバー/サイドパネルがあるページ(4/8 分割) | Full Width | Aside Left |
| 右側にサイドバー/サイドパネルがあるページ(8/4 分割) | Full Width | Aside Right |
| 左右両側にサイドパネルがあるページ(3/6/3 分割) | Full Width | Aside Both |
| 2 つの同じ幅のコンテンツパネルを横並びにするページ | Full Width | Split |
| パンくずナビゲーションバーがあるページ | Full Width | Breadcrumb |
| ダッシュボード/内部ツール、コンテンツ領域は単一 | With Sidebar | Default |
| 左側にサイドパネルがあるダッシュボード | With Sidebar | Aside Left |
| 右側にサイドパネルがあるダッシュボード | With Sidebar | Aside Right |
| パンくずナビゲーション付きの折りたたみ可能なオーバーレイサイドバー | With Sidebar | Overlay |
| 2 つの同じ幅のコンテンツパネルがあるダッシュボード | With Sidebar | Split |
2 つのレイアウトカテゴリ
Full Width — 一般公開ページ
汎用アプリケーション、一般公開向けデジタルサービス、永続的なサイドナビゲーションがないページに適しています。
主な特徴:
- 中央揃えのレスポンシブなコンテンツに
.sgds-containerを使用します - 標準の
<sgds-masthead>、<sgds-mainnav>、<sgds-footer>を使用します - コンテンツはドキュメントのフローに沿って配置されます(ビューポート内に収めません)
- グリッドベースのサイドパネルには、
sgds-col-*クラスを指定した.sgds-gridを使用します
→ Full Width の全 6 種類のレイアウトについては、reference/full-width.md をご覧ください。
With Sidebar — ダッシュボードと内部ツール
メインコンテンツと並べて永続的なサイドナビゲーションを必要とする内部ツール、ダッシュボード、管理ポータル、トランザクションアプリに適しています。
主な特徴:
- サイドバーの幅を考慮して、幅の狭いコンテンツ領域に
.sgds-container-sidebarを使用します <sgds-masthead>と<sgds-mainnav>にfluid属性を指定します- 永続的なナビゲーションには
<sgds-sidebar>コンポーネントを使用します - サイドバーを考慮したフッターには
<sgds-footer tone="neutral" layout="sidebar">を使用します - ビューポートの高さに合わせて収めます:
sgds:h-screen sgds:flex sgds:flex-col sgds:overflow-hidden - メインコンテンツ領域は独立してスクロールします:
sgds:overflow-y-auto
→ With Sidebar の全 5 種類のレイアウトについては、reference/with-sidebar.md をご覧ください。
生の GitHub リンクから HTML を抽出する方法
すべてのレイアウトには、stories/layouts/ ディレクトリに動作するストーリー実装があります。次の手順で使用できます。
ステップ 1:生ファイルを取得する
curl https://raw.githubusercontent.com/GovTechSG/sgds-web-component/master/stories/layouts/{Category}/{File}.stories.js
ステップ 2:テンプレートリテラルから HTML を抽出する
ストーリーファイルでは、html テンプレートリテラルを返す Template 関数をエクスポートしています。
const Template = () => html`
<sgds-masthead></sgds-masthead>
...
<sgds-footer></sgds-footer>
`;
ステップ 3:HTML を整える
- `html`` のラッパーと末尾のバッククォートを削除します
- Lit 固有の構文(
${variable}の補間)を削除し、インライン HTML に置き換えます <style>ブロックを削除します(これらは Storybook のプレースホルダー用です)- すべての SGDS コンポーネントとユーティリティクラスをそのまま保持します
- インデントを 2 スペースに統一して整形します
AI エージェント向け
ワークフロー
sgds-utilitiesスキルを読み込みます(ユーティリティクラスのリファレンス用)sgds-componentsスキルを読み込みます(コンポーネント API 用)- このスキルを読み込みます
- ユーザーのニーズに応じた適切なリファレンスファイルを読みます
- 完全な実装が必要な場合は、生の GitHub ストーリーファイルを取得します
- レイアウトをユーザーのコンテンツに合わせて調整します
ガイドライン
- すべてのレイアウトには、必須のアプリケーションシェル(
<sgds-masthead>、<sgds-mainnav>、<sgds-footer>)が含まれています - フル幅パターンとサイドバー付きパターンを混在させず、ユースケースに応じてどちらかを選びます
- サイドバー付きレイアウトでは、ルートラッパーにビューポート内に収めるためのクラスを必ず含めます
- サイドパネルとコンテンツ領域には、sgds-blocks のブロック、または sgds-templates のテンプレートを配置します