リファレンスドキュメント
このドキュメントは、VertiTab カスタムテーマシステムの完全なリファレンスを提供し、高級ユーザーと開発者がテーマ機能を深く理解し活用するのに役立ちます。
テーマシステムアーキテクチャ
Material-UI 基盤
VertiTab のテーマシステムは Material-UI(MUI)をベースにしており、以下の利点があります:
- 一貫性のあるデザインシステム:Google のマテリアルデザイン仕様に準拠
- コンポーネント化アーキテクチャ:各 UI 要素が独立してカスタマイズ可能
- テーマの継承システム:グローバル設定からローカル上書きまで
- タイプセーフ:TypeScript サポートによる型安全性
テーマ構造階層
テーマオブジェクト
├── palette(カラーパレット)
│ ├── mode(ライト/ダークモード)
│ ├── primary(主色調)
│ ├── secondary(副色調)
│ ├── error(エラー色)
│ ├── warning(警告色)
│ ├── info(情報色)
│ ├── success(成功色)
│ └── background(背景色)
├── typography(タイポグラフィ)
│ ├── fontFamily(フォントファミリー)
│ ├── fontSize(基本フォントサイズ)
│ ├── h1-h6(見出しレベル)
│ ├── body1-body2(本文スタイル)
│ ├── button(ボタンテキスト)
│ └── caption(説明テキスト)
├── spacing(間隔システム)
├── breakpoints(ブレークポイント)
├── zIndex(重なり順序)
└── components(コンポーネント上書き)
├── MuiButton
├── MuiListItemButton
├── MuiIcon
└── ...
カラーシステム詳細
パレット設定
主色調(Primary)
- main:主要色調
- light:明るいバリアント
- dark:暗いバリアント
- contrastText:コントラストテキスト色
副色調(Secondary)
- 主色調と調和する補助色
- 同様に main、light、dark、contrastText を含む
セマンティック色(Semantic Colors)
- error:エラー状態(通常は赤系)
- warning:警告状態(通常はオレンジ/黄系)
- info:情報状態(通常は青系)
- success:成功状態(通常は緑系)
背景色システム
- default:デフォルト背景
- paper:紙質感背景(カードやダイアログなど)
テキスト色階層
- primary:主要テキスト(最も重要)
- secondary:副次テキスト(説明など)
- disabled:無効テキスト(グレーアウト)
カラー使用指南
主色調の選択
- ブランド色:企業やブランドの主要色
- 心理的効果:青(信頼)、緑(安定)、赤(活力)など
- アクセシビリティ:十分なコントラスト比を保証
色の調和
- 補色:色環上の対角色(高コントラスト)
- 類似色:隣接色(調和)
- 三色調:等間隔の 3 色(バランス)
ダークモード適応
- 背景色を暗く、テキスト色を明るく
- 色の彩度を適切に調整
- 目の疲労を軽減する配色
タイポグラフィシステム
フォント階層
見出しシステム(H1-H6)
- H1:最重要見出し(2.5rem ~)
- H2:主見出し(2rem ~)
- H3:副見出し(1.75rem ~)
- H4-H6:小見出し(1rem ~ 1.5rem)
本文システム
- Body1:主要本文(1rem、16px)
- Body2:副次本文(0.875rem、14px)
機能的テキスト
- Button:ボタンテキスト(通常は大文字)
- Caption:説明テキスト(小フォント)
フォント選択指南
可読性フォント
- Sans-serif:Roboto、Arial、Helvetica
- 適用:インターフェーステキスト、ボタン
装飾フォント
- Serif:Times、Georgia
- 適用:長文読書、正式文書
等幅フォント
- Monospace:Courier、Monaco
- 適用:コード表示、データ列
コンポーネントカスタマイズ
コンポーネント上書きシステム
各コンポーネントは以下の方式でカスタマイズ可能:
defaultProps
- コンポーネントのデフォルト属性設定
- 例:ボタンのデフォルトサイズ、バリアント
styleOverrides
- CSS-in-JS によるスタイル上書き
- ネストしたセレクタサポート
- 状態ベースのスタイル設定
重要なコンポーネント
ListItemButton
- role:サイドパネルタブのメイン表示コンポーネント
- 重要属性:padding、margin、borderRadius、backgroundColor
- 状態:default、hover、selected、disabled
Avatar
- role:ユーザー頭像とサイトアイコン表示
- 重要属性:width、height、fontSize、variant
Icon
- role:全インターフェースアイコン表示
- 重要属性:fontSize、color
Button
- role:各種操作ボタン
- 重要属性:size、variant、color
高級カスタマイズ技術
CSS-in-JS 文法
javascript
{
// 基本スタイル
backgroundColor: '#ffffff',
color: '#000000',
// 疑似クラス
'&:hover': {
backgroundColor: '#f5f5f5',
},
// 疑似要素
'&::before': {
content: '""',
position: 'absolute',
},
// 子要素選択
'& .MuiIcon-root': {
fontSize: '20px',
},
// 条件スタイル
'&.Mui-selected': {
backgroundColor: '#1976d2',
},
}
レスポンシブデザイン
javascript
{
// モバイル
[theme.breakpoints.down('sm')]: {
fontSize: '14px',
padding: '8px',
},
// タブレット
[theme.breakpoints.between('sm', 'md')]: {
fontSize: '16px',
padding: '12px',
},
// デスクトップ
[theme.breakpoints.up('md')]: {
fontSize: '18px',
padding: '16px',
},
}
アニメーション設定
javascript
{
transition: theme.transitions.create(['background-color', 'transform'], {
duration: theme.transitions.duration.standard,
easing: theme.transitions.easing.easeInOut,
}),
'&:hover': {
transform: 'scale(1.05)',
},
}
ベストプラクティス
デザイン原則
一貫性
- 同類要素は同じスタイルルールを使用
- カラーパレットとタイポグラフィシステムを維持
- 間隔と寸法の統一システム
階層
- 視覚的重要度による要素階層
- サイズ、色、間隔で階層を区別
- ユーザーの注意力を適切に誘導
アクセシビリティ
- WCAG 2.1 AA 標準に準拠
- 最低 4.5:1 のコントラスト比
- キーボードナビゲーションサポート
パフォーマンス最適化
テーマサイズ制御
- 不要なスタイル上書きを避ける
- 複雑な CSS 計算を減らす
- キャッシュフレンドリーな設定を使用
レンダリング最適化
- CSS-in-JS の動的生成を減らす
- 静的スタイルの事前定義
- 不要な再レンダリングを避ける
デバッグと開発ツール
ブラウザ開発者ツール
要素検査
- F12 で DevTools を開く
- 要素選択器で対象要素を選択
- Styles パネルで現在の CSS 規則を確認
- Computed パネルで最終計算値を確認
テーマデバッグ
- Console で
window.__MUI_THEME__
を入力 - 現在のテーマオブジェクトを確認
- 特定のコンポーネントスタイルを検査
一般的な問題と解決策
スタイルが適用されない
- CSS 特異性を確認
- 要素セレクタが正確か確認
- テーマ上書きの順序をチェック
カラーが期待通りでない
- カラーパレット設定を確認
- ライト/ダークモードの対応をチェック
- 透明度と重なり効果を検査
フォントが正しく表示されない
- フォントファミリーの可用性を確認
- フォントサイズの単位と値をチェック
- フォールバックフォントを設定
API リファレンス
テーマオブジェクト構造
typescript
interface VertiTabTheme {
name: string;
description?: string;
palette: {
mode: "light" | "dark";
primary: PaletteColor;
secondary: PaletteColor;
error: PaletteColor;
warning: PaletteColor;
info: PaletteColor;
success: PaletteColor;
background: {
default: string;
paper: string;
};
text: {
primary: string;
secondary: string;
disabled: string;
};
};
typography: Typography;
components: ComponentsOverrides;
}
よく使用される MUI コンポーネント
MuiCssBaseline
:グローバル CSS 基線MuiList
:リストコンテナMuiListItem
:リスト項目MuiListItemButton
:リストボタン項目MuiListItemIcon
:リスト項目アイコンMuiListItemText
:リスト項目テキストMuiAvatar
:頭像コンポーネントMuiIcon
:アイコンコンポーネントMuiIconButton
:アイコンボタンMuiButton
:一般ボタンMuiMenu
:コンテキストメニューMuiMenuItem
:メニュー項目MuiDialog
:ダイアログボックス
このリファレンスドキュメントは、VertiTab カスタムテーマシステムの完全な指南を提供します。より詳細な技術情報については、Material-UI 公式ドキュメントを参照してください。