メインコンテンツへスキップ
SEEHUB / MIRRORv3.0

Design System

5層の合成階層で構造化された、形式検証済みデザインシステム。
すべてのトークンは閉じた語彙として全量定義され、自動ゲートで違反を検出する。

102
NODES
定義済みノード
5
LAYERS
合成階層
10
VERIFIED
検証分野
31
UNIFIED
統一済み
DENSITY

Formal Verification

10 DOMAINS VERIFIED

Closed Vocabulary

Violation Detection

Theme Customizer

Quality Loop

Diagram Vocabulary

DTCG Tokens

Intentional Constraints

8 CONSTRAINTS

Do / Don't

Compliance Evidence

5 PROJECTS VERIFIED

Quick Access

Getting Started

1
原則を理解する
Foundation(L1)でブランド・アクセシビリティ・品質の制約を把握する。ここで定まった制約がすべての下層に適用される。
2
トークンを確認する
Token(L2)で色・フォント・余白のセマンティックな役割名を覚える。コードでは HEX 値でなく CSS 変数で参照する。
3
コンポーネントを使う
Component(L3)のサンプルとコードスニペットを参照し、shadcn/ui + DS トークンで実装する。
4
パターンに組み合わせる
Pattern(L4)で Component の配置ルールを参照し、Layout(L5)でページ全体の構造に適用する。
CHANGELOG
v2.02026-03-194ページ構成(S1), コードスニペット(S4), WAI-ARIAツリー(S5), ディープリンク(S10), Props表(S9), Getting Started(S18), Do/Don't(S13), Recent(S14), Lazy render(S15), 密度ページ全体適用(S16)
v1.32026-03-19Level 5到達: a11y AA Normal(#767676), DS検索+CopyToken, 密度モード3段階, Token関係図+Playground, キーボードショートカット
v1.22026-03-19ダークモード完全実装: useTheme hook+UIトグル+CSS変数1,970箇所, Motion T1/T2/T3, reduced-motion, L3分解(27→10件メガコンポ)
v1.12026-03-18DSリファクタリング: L1-L6全層, index.tsx -90%, ESLint 43→0, fontFamily統一61箇所, Diagram Design Tokens
v1.02026-03-17Architecture v1.0確定: 5層合成階層, 70ノード定義, 形式論理検証, サイドバー+スクロールスパイ
KEYBOARD SHORTCUTS
/検索にフォーカス
1-5Layer切替
↑↓サイドバーツリー移動

Hover Utilities

4 UTILITIES

Touch Targets

WCAG 2.5.5

Interaction Media Queries

3 QUERIES

Responsive Spacing

6 SIZES x 3 BREAKPOINTS

Breakpoints

4 BREAKPOINTS — SSoT
LAYER 1 OF 5
L1

Foundationファウンデーション

設計のすべての判断に先立って確定する、制約(Principle)と素材(Reference)を定める。

Principleプリンシプル

設計判断を制約する、破ることが許されないルール。「推奨」や「ベストプラクティス」は含まない。Principle は守らなければ設計が壊れるものだけを定める。

Brandブランド

視覚的な同一性を維持するための不変の制約。使用可能な色の範囲、書体の指定、形状のルール(radius 2値制限等)を含む。

Loading...

Accessibilityアクセシビリティ

すべての利用者が情報にアクセスできることを保証する最低基準。コントラスト比、タップターゲットサイズ、reduce-motion 対応、フォーカス可視化を含む。

Loading...

Touch Targetsタッチターゲット

インタラクティブ要素の最低タップ領域。WCAG 2.5.5 に準拠し、最低 44px、推奨 48px、ターゲット間隔 8px 以上を保証する。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

Interaction Mediaインタラクションメディア

デバイスの入力方式とユーザー設定に応じてインタラクションを自動切替するメディアクエリ。hover: hover / hover: none / prefers-contrast: more の3種。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

Qualityクオリティ

設計と実装の間の翻訳ロスを構造的に防止するルール。TIP、SIA、ハードコード禁止、単一真実源の原則を含む。

Loading...

Disabledディスエイブルド

操作不可状態の視覚表現。テキスト gray-400、背景 gray-100/200、cursor not-allowed。opacity ではなく固定色で制御する。

Loading...

Referenceリファレンス

Principle に従って許可された、意味を持たない生の値の一覧。Token から参照される元の値であり、ここに定義されていない値はシステム内で使用できない。

Colorカラー

使用が許可された色の値の全量。グレースケール(gray-50〜950)、白、黒を含む。これ以外の色値はシステム内に存在しない。

Loading...

Typographyタイポグラフィ

使用が許可された書体・サイズ・ウェイトの全量。フォントファミリー(base / accent / mono)、フォントサイズ(12〜96px の12段階)、フォントウェイト(400 / 500 / 700 / 800)を含む。

Loading...

Spacingスペーシング

使用が許可された余白の値の全量。0, 2, 4, 8, 12, 16, 24, 32, 48, 64, 96px の11段階を含む。これ以外の余白値はシステム内に存在しない。

Loading...

Shapeシェイプ

要素の輪郭を決定する値の全量。角丸(0px / 9999px の2値)、線幅(0px / 1px)、影(none / sm / md / lg)を含む。

Loading...

Motionモーション

時間的変化を制御する値の全量。持続時間(0 / 75 / 150 / 300 / 500ms)、イージング関数、reduce-motion フラグを含む。

Loading...

Breakpointブレークポイント

レスポンシブ切り替えが発生する画面幅。DS Foundation は sm(480) / md(640) / lg(1024) / xl(1440) の4段階。max-width 禁止、全画面幅 + padding + fluid grid で対応する。

Loading...

Iconアイコン

使用が許可されたアイコンの全量。Lucide React(SVGベース)から選択する。カスタムSVGは最終手段。

Loading...

Tech Boundary技術境界

Tailwind CSS / shadcn/ui / 独自定義の境界。何がフレームワーク提供で、何が SEEHUB 独自の「顔」かを明示する。

Loading...
LAYER 2 OF 5
L2

Tokenトークン

Foundation の値を基に、設計意図を伝える名前付きの値を定める。値の「存在」は Foundation が定め、値の「実装」は Component が行う。Token は両者の間で意味の橋渡しを担う。

Colorカラー

色の値に「何のための色か」という役割を与える。背景(surface)、テキスト(on-surface)、浮上面(surface-raised)、境界線(border)、補助(muted)を含む。

surfaceサーフェス

ページやコンポーネントの背景として使われる色。テキストや要素はこの上に載る。on-surface とペアで機能する。

Loading...

on-surfaceオンサーフェス

surface の上に載るテキスト・アイコンの色。surface との組み合わせで WCAG AA コントラスト比を保証する。

Loading...

surface-raisedサーフェスレイズド

surface より視覚的に手前にある面の色。Card, Dialog, Sheet の背景に使う。surface とは影または境界線で区別される。

Loading...

borderボーダー

要素の境界や区切り線の色。surface 上で視認でき、on-surface より控えめな濃度を持つ。

Loading...

mutedミューテッド

補助的なテキストや無効状態の色。on-surface より低いコントラストで、情報の優先度が低いことを示す。

Loading...

Typographyタイポグラフィ

書体・サイズ・ウェイト・行間・字間を1つの役割名にまとめた、テキストの見え方の定義。各ロールは5つの属性のセットである。

displayディスプレイ

ページ内で最も大きく、最も重い見出し。Hero セクションの一行タイトルに限定して使用する。

UNIFIED確定: weight 400/500/700/800(900禁止)。全PJ統一。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない

headlineヘッドライン

ページ内の主要な区切りを示すセクション見出し。display より小さく、title より大きい。HTML の h2 相当。

Loading...

titleタイトル

コンポーネント内の小見出し(Card のタイトル、List のグループ名等)。headline より小さく、body より大きい。

Loading...

bodyボディ

本文テキスト。読みやすさを最優先に設計された既定のテキストスタイル。ページ内で最も多く使われる。

Loading...

body-smボディスモール

body より小さい本文。補足説明やテーブルセルなど、情報密度を高めたい箇所に使う。

Loading...

labelラベル

UI 要素に付随するラベルやキャプション。body-sm より小さく、ウェイトと字間で body 系と視覚的に区別される。

Loading...

Spacingスペーシング

余白の値に「要素間の関係性」という意味を与える。4段階の関係性を定義し、「近さ = 関係の強さ」という原則を体現する。

inlineインライン

同一の Component 内部で使われる間隔。Component の境界の内側に限定される。

Loading...

blockブロック

異なる Component 間で、同一の Pattern 内に属する要素間の間隔。Pattern の内側、Component の外側。

Loading...

groupグループ

異なる Pattern 間の間隔。関連はあるが別のまとまりであることを視覚的に示す。

Loading...

sectionセクション

ページ内の大きな区切りを示す間隔。異なる話題・機能・コンテキストの境界に使う。

Loading...

Responsiveレスポンシブ

画面幅に応じた非線形余白圧縮。大きな値ほど圧縮率が高く(最大50%)、小さな値は維持。3段階のブレークポイント(<480/480-639/640+)で4pxグリッド上の値に変換。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

Component Tokenコンポーネントトークン

特定のコンポーネントに固有の設計値を名前付きで定義する。Color / Typography / Spacing のロールでは表現できないコンポーネント固有の判断を含む。

Hover Utilitiesホバーユーティリティ

4種類のホバーユーティリティクラス。hover-invert(ボタン・ナビ)、hover-elevate(カード)、hover-deepen(暗背景)、ds-card-hover(リスト項目)。メディアクエリで pointer / touch を自動切替。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照
LAYER 3 OF 5
L3

Componentコンポーネント

Token の値を使って画面上に表示される、単一の責務を持つ独立した UI 部品を定義する。複数の Component の組み合わせ方は Pattern の責務であり、Component は「それ以上分割すると役割を失う単位」を定義する。

Actionアクション

操作を受けて状態変化やイベントを発火させる部品。コンテンツを内部に持たず、移動先を構造的に提示しない。

ButtonボタンWCAG AA

クリック・タップでアクションを実行する。primary / secondary / ghost のバリアントを持つ。

UNIFIED確定: 5 variant × 3 size。radius 9999px(pill形状)。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Button } from "@/components/ui/button"

<Button variant="primary" size="md">送信</Button>
PROPS / API
PropTypeDefaultDescription
variant"primary" | "secondary" | "outline" | "ghost" | "link""primary"ボタンの視覚スタイル
size"lg" | "md" | "sm""md"高さ: lg=48px, md=40px, sm=32px
disabledbooleanfalse操作不可状態
onClick() => voidクリックハンドラ
children*ReactNodeボタンラベル
PLAYGROUNDbutton

IconButtonアイコンボタンWCAG AA

アイコンのみで構成されるボタン。ラベルを持たず、Tooltip で補足する。

Loading...
USAGE
import { Button } from "@/components/ui/button"

<Button variant="ghost" size="icon">検索</Button>
PROPS / API
PropTypeDefaultDescription
variant"ghost" | "outline""ghost"視覚スタイル
size"md" | "sm""md"アイコンサイズ
aria-label*stringスクリーンリーダー用ラベル(必須)
children*ReactNodeアイコン要素

Containerコンテナー

他のコンテンツを内部に持ち、視覚的な境界や表示制御で中身の存在場所を管理する部品。

CardカードWCAG AA

視覚的な境界で囲まれた、自己完結したコンテンツのまとまり。

UNIFIED確定: radius 0px。border + optional shadow。Header/Content/Footer 構成。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Card, CardHeader, CardContent, CardFooter } from "@/components/ui/card"

<Card>
  <CardHeader>タイトル</CardHeader>
  <CardContent>内容</CardContent>
</Card>
PROPS / API
PropTypeDefaultDescription
variant"default" | "outline" | "elevated""default"カードスタイル
children*ReactNodeカード内容

DialogダイアログWCAG AA

モーダルなオーバーレイ。ユーザーの注意を排他的に要求する。

UNIFIED確定: radius 0。Radix Dialog ベース(a11y保証)。overlay + 中央配置。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Dialog, DialogTrigger, DialogContent } from "@/components/ui/dialog"

<Dialog>
  <DialogTrigger>開く</DialogTrigger>
  <DialogContent>モーダル内容</DialogContent>
</Dialog>
PROPS / API
PropTypeDefaultDescription
openboolean制御モード: 開閉状態
onOpenChange(open: boolean) => void開閉時コールバック
children*ReactNodeTrigger + Content

SheetシートWCAG AA

画面端からスライドするパネル。Dialog より軽量な割り込み。

UNIFIED確定: Radix Dialog ベースのスライドパネル。radius 0。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Sheet, SheetTrigger, SheetContent } from "@/components/ui/sheet"

<Sheet>
  <SheetTrigger>開く</SheetTrigger>
  <SheetContent>パネル内容</SheetContent>
</Sheet>
PROPS / API
PropTypeDefaultDescription
side"left" | "right" | "top" | "bottom""right"スライド方向
openboolean制御モード: 開閉状態
onOpenChange(open: boolean) => void開閉時コールバック
children*ReactNodeパネル内容

AccordionアコーディオンWCAG AA

展開/折りたたみでコンテンツの表示を制御する。排他的でない独立開閉。

UNIFIED確定: 開閉式パネル。border-bottom 区切り。radius 0。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Accordion, AccordionGroup } from "@/components/sia/Accordion"

<AccordionGroup>
  <Accordion label="セクション1">内容1</Accordion>
  <Accordion label="セクション2">内容2</Accordion>
</AccordionGroup>
PROPS / API
PropTypeDefaultDescription
label*string開閉トリガーのテキスト
defaultOpenbooleanfalse初期開閉状態
children*ReactNode折りたたみ内容

Drawerドロワー

画面下部からスライドするモバイル向けパネル。Sheet のモバイル特化版。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

Displayディスプレイ

情報の視覚的な提示を主目的とする部品。操作は補助的に付随しうる。

BadgeバッジWCAG AA

ステータスやカウントを小さなラベルで表示する。

UNIFIED確定: radius 0px。variant: Default/Outline/Subtle。レベル表現は濃度段階(L1-L5)で。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Badge } from "@/components/ui/badge"

<Badge variant="default">ラベル</Badge>
PROPS / API
PropTypeDefaultDescription
variant"default" | "outline" | "subtle""default"バッジスタイル
children*ReactNodeラベルテキスト
PLAYGROUNDbadge
Badge

TableテーブルWCAG AA

構造化データを行と列で表示する。ソート等の操作を補助的に持つ。

UNIFIED確定: 統一仕様。行ストライプ + ヘッダー固定対応。radius 0。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Table } from "@/components/sia/Table"

<Table
  headers={["名前", "値"]}
  rows={[
    ["色", "gray-900"],
    ["間隔", "16px"]
  ]}
/>
PROPS / API
PropTypeDefaultDescription
headers*string[]列見出し
rows*string[][]行データ
stripedbooleantrue行ストライプ

ListリストWCAG AA

関連する項目を縦に並べて表示する。

UNIFIED確定: 順序付き/順序なしリスト。マーカー + インデント。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { List } from "@/components/sia/List"

<List items={["項目1", "項目2", "項目3"]} ordered={false} />
PROPS / API
PropTypeDefaultDescription
children*ReactNodeリスト項目
dividerbooleantrue項目間の区切り線

AvatarアバターWCAG AA

ユーザーやエンティティを画像またはイニシャルで表す。

Loading...
USAGE
import { Avatar } from "@/components/ui/avatar"

<Avatar src="/avatar.png" alt="ユーザー名" size="md" />
PROPS / API
PropTypeDefaultDescription
srcstring画像URL
alt*string代替テキスト
size"lg" | "md" | "sm""md"サイズ
fallbackstring画像なし時のイニシャル
PLAYGROUNDavatar
YN

TooltipツールチップWCAG AA

ホバーまたはフォーカスで補足情報を一時的に表示する。

UNIFIED確定: ホバーで情報表示。radius 0。遅延表示 + フェードイン。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip"

<Tooltip>
  <TooltipTrigger>ホバー</TooltipTrigger>
  <TooltipContent>補足情報</TooltipContent>
</Tooltip>
PROPS / API
PropTypeDefaultDescription
delayDurationnumber300表示遅延(ms)
children*ReactNodeTrigger + Content

EmptyStateエンプティステートWCAG AA

データが存在しない状態を視覚的に伝え、次のアクションを案内する。

UNIFIED確定: エラー/空状態のフィードバック表示。アイコン + メッセージ + アクション。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { ErrorDisplay } from "@/components/mirror/ErrorDisplay"

<ErrorDisplay message="データがありません" />
PROPS / API
PropTypeDefaultDescription
title*string空状態のタイトル
descriptionstring詳細テキスト
actionReactNodeCTAボタン等

DividerディバイダーWCAG AAA

コンテンツ間の視覚的な区切り線。水平と垂直がある。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

TagタグWCAG AA

カテゴリやフィルター条件を表すラベル。削除可能なバリアントを持つ。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

PopoverポップオーバーWCAG AA

クリックで表示される浮遊パネル。Tooltip より多くの内容を持つ。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

Feedbackフィードバック

システムの状態変化を一時的にユーザーに通知する部品。表示の開始と終了が時間的に制御される。

ToastトーストWCAG AA

一時的な通知メッセージ。自動で消える。

UNIFIED確定: 一時的な通知バナー。自動消去 + 手動閉じ。画面端に表示。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { toast } from "@/components/ui/toast"

toast({ title: "保存しました", duration: 3000 })
PROPS / API
PropTypeDefaultDescription
title*string通知タイトル
descriptionstring詳細テキスト
durationnumber3000自動消去時間(ms)

ProgressプログレスWCAG AA

処理の進行状況をバーまたはスピナーで表示する。

UNIFIED確定: radius 9999px。バー型(連続値)+ ステップ型(離散値)。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Progress } from "@/components/ui/progress"

<Progress value={60} max={100} />
PROPS / API
PropTypeDefaultDescription
value*number現在値
maxnumber100最大値

SkeletonスケルトンWCAG AA

コンテンツ読み込み中にレイアウトの骨格を表示する。

UNIFIED確定: 読み込み中のプレースホルダー表示。パルスアニメーション。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { LoadingSpinner } from "@/components/mirror/LoadingSpinner"

<LoadingSpinner />
PROPS / API
PropTypeDefaultDescription
widthstring | number"100%"
heightstring | number20高さ
variant"text" | "rectangular" | "circular""text"形状バリアント
PLAYGROUNDskeleton

AlertアラートWCAG AA

重要な情報を目立つ形式でインラインに表示する。Toast と異なりページ内に留まる。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

Inputインプット

ユーザーからの値の入力を受け取る部品。フォーム送信に使用されるデータの入力手段を提供する。

TextFieldテキストフィールドWCAG AA

テキストの入力・編集を受け付ける。単行と複数行がある。

UNIFIED確定: radius 0px。height: lg(48px)/md(40px)/sm(32px)。border + focus強調。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Input } from "@/components/ui/input"

<Input
  type="text"
  placeholder="名前を入力"
  size="md"
/>
PROPS / API
PropTypeDefaultDescription
type"text" | "email" | "password" | "number""text"入力タイプ
size"lg" | "md" | "sm""md"高さ: lg=48px, md=40px, sm=32px
placeholderstringプレースホルダーテキスト
errorstringエラーメッセージ(表示時にborder変化)
disabledbooleanfalse操作不可状態
PLAYGROUNDtext-field

SelectセレクトWCAG AA

定義済みの選択肢から1つまたは複数を選ぶ。

UNIFIED確定: 統一仕様。ドロップダウン選択。radius 0。border + focus強調。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Select, SelectTrigger, SelectContent, SelectItem } from "@/components/ui/select"

<Select>
  <SelectTrigger>選択</SelectTrigger>
  <SelectContent>
    <SelectItem value="a">オプションA</SelectItem>
  </SelectContent>
</Select>
PROPS / API
PropTypeDefaultDescription
valuestring選択値(制御モード)
onValueChange(value: string) => void選択変更コールバック
placeholderstring未選択時テキスト
disabledbooleanfalse操作不可状態

CheckboxチェックボックスWCAG AA

複数の選択肢から任意の数を選ぶ。独立した boolean 値。

UNIFIED確定: 統一仕様。矩形チェックマーク。radius 0。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Checkbox } from "@/components/ui/checkbox"

<Checkbox id="agree" label="同意する" />
PROPS / API
PropTypeDefaultDescription
checkedbooleanチェック状態
onCheckedChange(checked: boolean) => void変更コールバック
labelstringラベルテキスト
disabledbooleanfalse操作不可状態
PLAYGROUNDcheckbox

RadioラジオWCAG AA

複数の選択肢から排他的に1つを選ぶ。

UNIFIED確定: 統一仕様。円形選択。排他的単一選択。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { RadioGroup, RadioItem } from "@/components/ui/radio"

<RadioGroup>
  <RadioItem value="a" label="オプションA" />
  <RadioItem value="b" label="オプションB" />
</RadioGroup>
PROPS / API
PropTypeDefaultDescription
value*string選択値
onValueChange(value: string) => void選択変更コールバック
children*ReactNodeRadioGroup.Item 要素

SwitchスイッチWCAG AA

ON/OFF の二値を即時に切り替える。Toggle と同義。

UNIFIED確定: radius 9999px。pill track + 円形つまみ。ON/OFFトグル。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { Switch } from "@/components/ui/switch"

<Switch id="notify" label="通知を有効にする" />
PROPS / API
PropTypeDefaultDescription
checkedbooleanON/OFF状態
onCheckedChange(checked: boolean) => void変更コールバック
labelstringラベルテキスト
disabledbooleanfalse操作不可状態
PLAYGROUNDswitch
Switch label

SliderスライダーWCAG AA

範囲内の連続値をドラッグで選択する。

Loading...
USAGE
import { Slider } from "@/components/ui/slider"

<Slider min={0} max={100} step={1} defaultValue={[50]} />
PROPS / API
PropTypeDefaultDescription
valuenumber[]現在値
onValueChange(value: number[]) => void値変更コールバック
minnumber0最小値
maxnumber100最大値
stepnumber1ステップ幅
disabledbooleanfalse操作不可状態

Structureストラクチャー

コンテンツの配置方向と間隔を制御する構造部品。視覚的な境界を持たない。

Wrapperラッパー

コンテンツに max-width と padding を与える構造的な囲み。視覚的な境界を持たない。

UNIFIED確定: 統一仕様。padding のみでレスポンシブ制御(max-width 禁止)。
Loading...
DO
統一された仕様に従い、DS トークンを使用する
DON'T
独自の variant や非許可値(radius中間値、禁止weight等)を追加しない
USAGE
import { PageLayout } from "@/components/mirror/PageLayout"

<PageLayout>ページコンテンツ</PageLayout>
PROPS / API
PropTypeDefaultDescription
children*ReactNodeラップ対象
padding"sm" | "md" | "lg""md"内部余白サイズ

Stackスタック

子要素を縦方向に積む。gap で間隔を制御する。

Loading...
USAGE
// CSS flex-direction: column

<div className="flex flex-col gap-4">
  <div>Item 1</div>
  <div>Item 2</div>
</div>
PROPS / API
PropTypeDefaultDescription
children*ReactNode積む対象
gapnumber16子要素間の間隔(px)
align"start" | "center" | "end" | "stretch""stretch"水平揃え

Clusterクラスター

子要素を横方向に並べる。折り返しを許容する。

Loading...
USAGE
// CSS flex-wrap: wrap

<div className="flex flex-wrap gap-2">
  <Badge>Tag 1</Badge>
  <Badge>Tag 2</Badge>
</div>
PROPS / API
PropTypeDefaultDescription
children*ReactNode並べる対象
gapnumber8子要素間の間隔(px)
justify"start" | "center" | "end" | "between""start"水平配置
wrapbooleantrue折り返し許可

Gridグリッド

子要素を行と列の格子状に配置する。レスポンシブなカラム数を制御する。

Loading...
USAGE
// CSS Grid

<div style={{
  display: "grid",
  gridTemplateColumns: "repeat(auto-fit, minmax(280px, 1fr))",
  gap: 24
}}>
  <Card />
  <Card />
</div>
PROPS / API
PropTypeDefaultDescription
children*ReactNode配置対象
columns"1" | "2" | "3" | "4" | "auto""auto"カラム数
gapnumber16セル間の間隔(px)

Sectionセクション

ページ内の意味的な区画。section spacing を上下に持つ。

Loading...
PROPS / API
PropTypeDefaultDescription
children*ReactNodeセクション内容
spacing"sm" | "md" | "lg""md"上下余白サイズ

ScrollAreaスクロールエリアWCAG AA

カスタムスクロールバーを持つスクロール可能な領域。ネイティブスクロールのアクセシビリティを維持する。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照

AspectRatioアスペクトレシオWCAG AAA

子要素のアスペクト比を固定する構造部品。画像・動画の表示に使用する。

サンプル準備中 — 実装は各プロジェクトの既存コンポーネントを参照
LAYER 4 OF 5
L4

Patternパターン

複数の Component を特定の順序・間隔・関係性で組み合わせた、再利用可能な構成の型を定義する。定義されていない新しい組み合わせは L1-L2 の制約内で許容される。

Formフォーム

Input 系 Component をラベル・ヘルパーテキスト・エラー表示と組み合わせ、データ入力の一連の流れを構成する。

Loading...

Heroヒーロー

ページ冒頭で最大のタイポグラフィと CTA を組み合わせ、ページの主題を伝える構成。display トークンを使用する唯一の Pattern。

UNIFIED確定: Typography は display ロール(clamp 36-84px/800)。CTA は Button primary。バリアントは Background/Photo/Carousel/Keywords。
Loading...

CardGridカードグリッド

同種の Card を Grid 上に均等配置し、一覧性を提供する構成。

UNIFIED確定: カード群の配置パターン。Carousel/Grid/Matrix の3バリアント。
Loading...

DataTableデータテーブル

Table Component にヘッダー・行・ページネーションを組み合わせ、構造化データの閲覧手段を構成する。

UNIFIED確定: 統一仕様。テーブル + ページネーション。ソート/フィルタ対応。
Loading...

SideNavサイドナビ

NavGroup と NavItem を縦に積み、階層的なナビゲーションを構成する。

UNIFIED確定: 統一仕様。垂直ナビゲーション + ツリー展開。固定幅。
Loading...

ContentSectionコンテントセクション

見出し・本文・(任意の)CTA を縦に積み、ページ内の1つの話題を構成する。最も頻繁に繰り返される Pattern。

Loading...

Diagramダイアグラム

関係構造を可視化する図表パターン。10型の閉じた語彙(contain / overlap / position / hierarchy / flow / fork / degree / timeline / spatial / cycle)から関係型に対応する図型を選ぶ。

Loading...
LAYER 5 OF 5
L5

Layoutレイアウト

Pattern と Component をページ全体に配置する空間構造を定義する。各領域に「何を置くか」は Pattern とアプリケーションの責務であり、Layout は「どこに空間があるか」だけを定義する。

Defaultデフォルト

Header・Main・Footer を縦に積む最も基本的な1カラム構造。他の Layout が適用されないすべてのページに適用される。

Loading...

WithSidebarウィズサイドバー

Main 領域の左にサイドバーを持つ2カラム構造。サイドバーは固定幅、Main は残り幅を占める。

Loading...

Articleアーティクル

長文コンテンツに最適化した構造。Main の幅を制限し、任意で目次を側面に配置する。

Loading...

Dashboardダッシュボード

情報密度の高いデータ表示に最適化した構造。Main 内部に Grid による複数パネル配置を前提とする。

Loading...

Page Templates

3 TEMPLATES