実装の順序
ドメイン固有部品を先に作らず、下位レイヤーから組み立てます。
- Tokens
- globals.scss のSemantic Tokenを単一の基準にする
- Primitives
- src/components/ui の汎用UIを組み合わせる
- Patterns
- 業務ロジックを持たないComposition例を参照する
- Pages
- 各機能のデータと振る舞いだけを足す
デザインシステム
Design Tokenから実装済みComponent、Compositionまでを一つの場所で確認できます。 ここに表示している部品は、そのままアプリケーションの画面で利用できます。
01
新規画面を同じUI Languageで実装するための入口です。
ドメイン固有部品を先に作らず、下位レイヤーから組み立てます。
共通APIは variant / size / disabled / className を基準にします。
表示と操作の不具合は、アプリで利用する実装にも反映されます。
import { Button, FormField, Input } from "@/components/ui";02
色、文字、余白、形、動きのSemantic Tokenです。
無彩色を基礎に、アクセントと状態色を意味で参照します。
semantic tokens--color-canvas#F4F6F9--color-surface#F4F6F9--color-surface-subtle#E5E8EC--color-ink#171717--color-text-muted#646C77--color-border#E5E8EC--color-accenttheme--color-info#4B89DA--color-success#8AC054--color-warning#F5BA45--color-danger#FB6D51--color-disabled-foreground#A9B1BC選択すると、このガイド内の操作・選択状態・ブランドマークへ反映されます。
サイズ、太さ、行間で階層を作ります。
Display / 54 / 780サービスを選択
Heading / 23 / 760システム健康診断
Subheading / 18 / 750プロジェクト概要
Body / 15 / 400最新状況をご確認いただけます。
Label / 13 / 700会社名
Caption / 12 / 500次回更新 8月18日
Code / 12 / 400--color-accent
影は重なりを持つOverlayにのみ使用します。
Controls
Cards
Shell
4px刻みを基礎に、8pxの倍数を主に使います。
4–64px--space-14px--space-28px--space-312px--space-416px--space-520px--space-624px--space-832px--space-1040px--space-1248px--space-1664px03
操作の重要度をvariantで表し、ラベルには具体的な動詞を使います。
Primaryは1画面の主要操作に絞ります。
Button<Button variant="primary" size="md">この内容で進める</Button>04
ラベル、Control、補足またはエラーを一つのFormFieldとして扱います。
Inputのtypeで検索、Password、数値を扱います。
Input / Textarea正式名称で入力してください。
状態は色だけでなく説明文と属性で伝えます。
Select / FormField有効なメールアドレスを入力してください。
確認できました。
Checkbox、Radio、SwitchはNative inputを保持します。
keyboard ready連続した範囲から数値を一つ選択します。
Slider / FormField05
情報の関係を保ったまま、一覧・定義・開閉の形式で表示します。
横幅が不足する場合はContainer内だけを横スクロールします。
semantic table| 案件 | 担当 | 状態 | 更新日 |
|---|---|---|---|
| ブランドサイト | 田中 | 進行中 | 8月15日 |
| 採用サイト | 佐藤 | 確認待ち | 8月14日 |
| 商品LP | 鈴木 | 下書き | 8月12日 |
人物、補足、状態、操作を1行にまとめます。
用語と値の対応を示します。
補足情報を必要なときだけ開きます。
07
色、アイコン、見出し、説明を組み合わせて結果と必要な行動を伝えます。
Dangerのみrole=alert、その他はstatusとして通知します。
5 variantsプロジェクトの概要が更新されました。
次回更新は8月18日を予定しています。
変更内容が反映されました。
公開前に担当者を指定してください。
入力内容を確認してもう一度お試しください。
Badgeは短い分類、Statusは進行状態に使います。
周辺の作業を妨げずに短い情報を伝えます。
08
重なりが必要な短い操作に限定し、閉じ方とフォーカス復帰を保証します。
DialogはNative dialogでEscape、背景抑制、フォーカス管理を行います。
client components09
待ち時間とデータがない状態を、次に取れる行動とともに示します。
Spinnerは短い処理、Skeletonは構造が分かる読込に使います。
空である理由と主要な次の行動を表示します。
最初のプロジェクトを作成すると、ここに一覧が表示されます。
10
Primitiveに業務ロジックを持たせず、画面側でCompositionします。
Header、Content、Footerを必要な分だけ組み合わせます。
composable API関連する情報を一つにまとめます。
境界線と余白を基本にし、常設の影は使いません。
Hover時に境界と背景が変化します。
状態を背景色とBadgeの両方で示します。
色だけに依存せず、状態名も表示します。
入力の目的とActionを近くに置きます。
Avatar、主文、副文、Badgeを一行に構成します。
Componentは親幅に追従し、固定幅を前提にしません。
Desktop / Tablet / Mobile4列ボード、固定レール、十分な余白
2列ボード、幅を圧縮したレイアウト
1列ボード、下部ナビゲーション