デザインシステムの管理方法
SDK を使って、デザインシステムの作成・更新・画面への適用をプログラムで行います。
デザインシステムは、プロジェクトの視覚的なルール(色、タイポグラフィ、余白)を定義します。画面に適用すると、すべての画面が同じ視覚言語に従います。SDK を使えば、Stitch の UI に触れることなくデザインシステムの作成、更新、適用ができます。
デザインシステムを作成する
import { stitch } from "@google/stitch-sdk";
const project = stitch.project("your-project-id");
const ds = await project.createDesignSystem({ displayName: "My Theme" });
console.log(`Created: ${ds.id}`);
displayName は Stitch の UI に表示される名前です。わかりやすい名前を付けましょう。「Brand Dark Mode」のほうが「DS 1」より良い名前です。
既存のデザインシステムを一覧表示する
const systems = await project.listDesignSystems();
for (const ds of systems) {
console.log(`${ds.id}: ${ds.data?.displayName}`);
}
ID でデザインシステムを参照する
アセット ID をすでに知っている場合は、ネットワーク呼び出しを省略できます:
const ds = project.designSystem("existing-asset-id");
これは、サーバーから何も取得せずにハンドルを作成します。前の手順や Stitch UI で ID を把握している場合に使用します。
DESIGN.md から作成する
視覚的アイデンティティを定義した DESIGN.md をすでにお持ちですか?アップロードして、2 回の呼び出しでデザインシステムに変換できます:
import { readFileSync } from "node:fs";
const markdown = readFileSync("DESIGN.md", "utf-8");
const instance = await project.uploadDesignMd(Buffer.from(markdown, "utf-8").toString("base64"));
const ds = await project.createDesignSystemFromDesignMd(
{ id: instance.id, sourceScreen: instance.sourceScreen },
"DESKTOP",
);
結果の適用方法や callTool の直接的な使い方を含む完全な手順については、DESIGN.md からデザインシステムを作成する方法を参照してください。
デザインシステムを更新する
const updated = await ds.update({ displayName: "Updated Theme" });
画面に適用する
デザインシステムを適用すると、新しい視覚トークンで画面が再レンダリングされます。必要なのは SelectedScreenInstance オブジェクトで、これはプロジェクトの画面インスタンスから取得します:
const projectData = await stitch.callTool("get_project", {
name: `projects/${project.id}`,
});
// Extract screen instances
const instances = projectData.screenInstances.map((si: any) => ({
id: si.id,
sourceScreen: si.sourceScreen,
}));
// Apply the design system to all screens
const screens = await ds.apply(instances);
console.log(`Applied to ${screens.length} screens`);
インスタンスオブジェクトには
idとsourceScreenだけを含めてください。位置やサイズなどの余分なフィールドがあると、「invalid argument」エラーになります。
完全なワークフロー:作成と適用
以下はエンドツーエンドのパターンです。プロジェクトを作成し、画面を生成し、デザインシステムを作成して適用します:
import { stitch } from "@google/stitch-sdk";
const project = await stitch.createProject("Themed App");
// Generate a few screens
const home = await project.generate("A landing page for a productivity app");
const settings = await project.generate("A settings page with dark theme toggle");
// Create and apply a design system
const ds = await project.createDesignSystem({ displayName: "Productivity Theme" });
// Get screen instances for applying
const projectData = await stitch.callTool("get_project", {
name: `projects/${project.id}`,
});
const instances = projectData.screenInstances.map((si: any) => ({
id: si.id,
sourceScreen: si.sourceScreen,
}));
await ds.apply(instances);
console.log("Design system applied to all screens");
原文: https://stitch.withgoogle.com/docs/sdk/design-systems/
本ページは Google Stitch 公式ドキュメントの翻訳です。原文の著作権は Google LLC に帰属します。本サイトは独立した非公式の翻訳です。