Skip to content

ダークテーマ デザインインスピレーション

2024年、ダークモードはもはや「オプション」ではない。Android、iOS、Windows、macOS -- 主要OS全てがダークモードをネイティブサポートし、調査によればユーザーの81.9%がダークモードを常用している(Android Authority, 2023)。OLEDディスプレイでは最大60%のバッテリー節約効果があり、眼精疲労の軽減は臨床的にも確認されている。

しかし、「色を反転すればダークモードになる」という誤解が根強い。実際には、ダークモードのデザインはライトモード以上に繊細な輝度設計を必要とする。背景の黒にも深度があり、テキストの白にも階層がある。この微妙な差異を意図的に設計できるかどうかが、「暗いだけのUI」と「プレミアムなダークUI」を分ける境界線だ。

このページは、Linear と Supabase のデザイン言語から抽出した実戦的なダークテーマシステムを、豊富なビジュアル例とともに解説するデザインインスピレーション記事である。SaaS ダッシュボード、開発者ツール、管理画面、データ分析ツール -- あらゆるプロダクトのダークモード設計に応用できる。

このページの使い方

スクロールするだけでデザインのアイデアが得られるように設計しています。各セクションにインラインHTMLのビジュアル例を配置しているため、コードを読まなくても視覚的にパターンを把握できます。Stitch向けプロンプトも最終セクションに収録しています。


デザイン哲学 -- 暗闇が母体

暗闇が母体。コンテンツが光として浮かぶ。

従来のダークモードは「白いUIを暗くしたもの」だった。背景を黒に、テキストを白に反転し、影を濃くする。この手法は確かに「暗く」はなるが、根本的な問題を孕んでいる -- 光の中で設計された情報構造を、闇の中に無理やり押し込めているのだ。

このプリセットは逆のアプローチを取る。最初から暗闇を前提に設計する。暗闇は「背景」ではなく「母体」であり、コンテンツは「その上に置かれるもの」ではなく「暗闇から浮かび上がる光」である。

この哲学的な転換が、具体的なデザイン判断に直結する:

  • 影を使わない: 暗い背景の上に影を落としても視認できない。代わりに、輝度の微差とボーダーで深度を表現する
  • 純白を避ける: #ffffff は暗闇の中で目を射る。#f7f8f8 まで輝度を落とすことで、長時間の使用に耐える
  • アクセントを節制する: 暗い背景ではどんな色も強く見える。アクセントカラーは「ここを見ろ」という明確な意図があるときだけ使う

Linear のアプローチ -- プレミアムコードエディタの精密さ

Linear は SaaS ダッシュボードのダークモードにおける到達点のひとつだ。その特徴を分解すると:

  1. 輝度ステップが極めて小さい -- 背景色の差は3-5%のブライトネス差しかない。これが「精密機器」のような印象を生む
  2. 半透明ボーダー -- rgba(255,255,255, 0.05-0.12) の範囲で、ソリッドカラーのボーダーは一切使わない
  3. アクセントは1色のみ -- インディゴブルー (#5e6ad2) がCTAとアクティブ状態だけに現れる。それ以外はグレースケールの世界
  4. フォントウェイトの節制 -- Bold (700) を使わず、510 (Medium) が最も重いウェイト。これが「叫ばないUI」を作る

Supabase のアプローチ -- 影なしの深度表現

Supabase もまたダークモードネイティブのプロダクトだが、Linear とは少し異なる味わいがある:

  1. エメラルドグリーンのアクセント -- ダーク背景にグリーンが映える。技術的な信頼感と親しみやすさの両立
  2. ボーダー階層による深度 -- 影を使わず、ボーダーの透明度を3段階に分けることで奥行きを表現
  3. コードブロックの統合 -- 開発者ツールとして、コードの表示がファーストクラスシチズン。背景色を最も暗い階層にすることで「沈んだ」印象を与える

共通項 -- SaaS・開発者ツール・ダッシュボードのダークモード原則

Linear、Supabase、そして GitHub、Vercel、Raycast -- 優れたダークモードUIに共通するのは次の原則だ:

  • 影を使わずに深度を表現する (輝度ステップ + 半透明ボーダー)
  • アクセントカラーは1-2色に制限する
  • テキストは4段階の輝度階層を持つ
  • ホバー/アクティブ状態は rgba(255,255,255) の透明度変化で表現する

以下が、これらの原則を統合した SaaS ダッシュボードのプレビューである:

Dashboard
ProjectsSettingsuser@email.com
<!-- Sidebar -->
<div style="width: 200px; background: #141516; padding: 16px 12px; border-right: 1px solid rgba(255,255,255,0.05);">
  <div style="padding: 8px 12px; background: rgba(255,255,255,0.05); border-radius: 6px; color: #5e6ad2; font-size: 14px; margin-bottom: 4px;">Overview</div>
  <div style="padding: 8px 12px; color: #8a8f98; font-size: 14px; margin-bottom: 4px;">Tasks</div>
  <div style="padding: 8px 12px; color: #8a8f98; font-size: 14px; margin-bottom: 4px;">Analytics</div>
  <div style="padding: 8px 12px; color: #8a8f98; font-size: 14px; margin-bottom: 4px;">Members</div>
  <div style="padding: 8px 12px; color: #8a8f98; font-size: 14px;">Settings</div>
</div>

<!-- Main Content -->
<div style="flex: 1; padding: 24px; background: #0f1011;">

  <!-- Page Title -->
  <div style="color: #f7f8f8; font-size: 24px; font-weight: 510; margin-bottom: 20px; letter-spacing: -0.528px;">Overview</div>

  <!-- Stat Cards -->
  <div style="display: flex; gap: 16px; margin-bottom: 24px; flex-wrap: wrap;">
    <div style="flex: 1; min-width: 140px; background: #191a1b; border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; padding: 16px;">
      <div style="color: #8a8f98; font-size: 13px; margin-bottom: 8px;">Active Projects</div>
      <div style="color: #5e6ad2; font-size: 32px; font-weight: 510;">12</div>
    </div>
    <div style="flex: 1; min-width: 140px; background: #191a1b; border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; padding: 16px;">
      <div style="color: #8a8f98; font-size: 13px; margin-bottom: 8px;">Open Tasks</div>
      <div style="color: #f7f8f8; font-size: 32px; font-weight: 510;">47</div>
    </div>
    <div style="flex: 1; min-width: 140px; background: #191a1b; border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; padding: 16px;">
      <div style="color: #8a8f98; font-size: 13px; margin-bottom: 8px;">Team Members</div>
      <div style="color: #f7f8f8; font-size: 32px; font-weight: 510;">8</div>
    </div>
  </div>

  <!-- Data Table -->
  <div style="border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; overflow: hidden;">
    <div style="display: flex; background: #141516; padding: 10px 16px; border-bottom: 1px solid rgba(255,255,255,0.05);">
      <div style="flex: 2; color: #8a8f98; font-size: 13px;">Project</div>
      <div style="flex: 1; color: #8a8f98; font-size: 13px;">Status</div>
      <div style="flex: 1; color: #8a8f98; font-size: 13px; text-align: right;">Updated</div>
    </div>
    <div style="display: flex; padding: 10px 16px; border-bottom: 1px solid rgba(255,255,255,0.05);">
      <div style="flex: 2; color: #f7f8f8; font-size: 14px;">Frontend Redesign</div>
      <div style="flex: 1;"><span style="color: #10B981; font-size: 12px; background: rgba(16,185,129,0.15); padding: 2px 8px; border-radius: 4px;">Active</span></div>
      <div style="flex: 1; color: #8a8f98; font-size: 14px; text-align: right;">2 hours ago</div>
    </div>
    <div style="display: flex; padding: 10px 16px; border-bottom: 1px solid rgba(255,255,255,0.05); background: rgba(255,255,255,0.03);">
      <div style="flex: 2; color: #f7f8f8; font-size: 14px;">API Integration</div>
      <div style="flex: 1;"><span style="color: #F59E0B; font-size: 12px; background: rgba(245,158,11,0.15); padding: 2px 8px; border-radius: 4px;">In Review</span></div>
      <div style="flex: 1; color: #8a8f98; font-size: 14px; text-align: right;">5 hours ago</div>
    </div>
    <div style="display: flex; padding: 10px 16px; border-bottom: 1px solid rgba(255,255,255,0.05);">
      <div style="flex: 2; color: #f7f8f8; font-size: 14px;">Database Migration</div>
      <div style="flex: 1;"><span style="color: #10B981; font-size: 12px; background: rgba(16,185,129,0.15); padding: 2px 8px; border-radius: 4px;">Active</span></div>
      <div style="flex: 1; color: #8a8f98; font-size: 14px; text-align: right;">1 day ago</div>
    </div>
    <div style="display: flex; padding: 10px 16px;">
      <div style="flex: 2; color: #f7f8f8; font-size: 14px;">Auth Service</div>
      <div style="flex: 1;"><span style="color: #F59E0B; font-size: 12px; background: rgba(245,158,11,0.15); padding: 2px 8px; border-radius: 4px;">In Review</span></div>
      <div style="flex: 1; color: #8a8f98; font-size: 14px; text-align: right;">3 days ago</div>
    </div>
  </div>

  <!-- Button Row -->
  <div style="display: flex; gap: 12px; margin-top: 20px; flex-wrap: wrap;">
    <div style="background: #5e6ad2; color: #ffffff; padding: 8px 16px; border-radius: 6px; font-size: 14px;">Primary Action</div>
    <div style="background: rgba(255,255,255,0.05); color: #d0d6e0; padding: 8px 16px; border-radius: 6px; font-size: 14px; border: 1px solid rgba(255,255,255,0.08);">Secondary</div>
    <div style="color: #d0d6e0; padding: 8px 16px; border-radius: 6px; font-size: 14px;">Ghost</div>
  </div>

</div>

カラー3層理論 -- 背景・テキスト・アクセント

優れたダークテーマは3つの独立したカラー層で構成される。各層が独自の役割を持ち、互いに干渉しない。これを「カラー3層理論」と呼ぶ。

第1層: 背景サーフェス(キャンバス)

背景色は #08090a から #191a1b まで、わずか3-5%のブライトネス差で4段階の深度を構成する。この微差が「精密機器」のような印象を生む。

Background Surface Hierarchy

bg-deepest
#08090a
bg-base
#0f1011
bg-panel
#141516
bg-surface
#191a1b

なぜ4段階なのか?

  • bg-deepest (#08090a): 入力欄の内部やページ全体の最深部。「窪み」を表現する
  • bg-base (#0f1011): メインコンテンツ領域の標準背景。最も多くの面積を占める
  • bg-panel (#141516): サイドバー、ヘッダー、ナビゲーション。bg-base より「手前」にある印象を作る
  • bg-surface (#191a1b): カード、ドロップダウン、ポップオーバー。最も手前に浮上する要素
背景階層の使い分け図
+-----------------------------------------------+  bg-deepest (#08090a)
|  +-------------------------------------------+  |  
|  |  bg-base (#0f1011)                        |  |  メインコンテンツ
|  |  +-------------+  +---------------------+ |  |
|  |  | bg-panel    |  | bg-surface (card)   | |  |
|  |  | #141516     |  | #191a1b             | |  |
|  |  | sidebar     |  |  +--------+         | |  |
|  |  |             |  |  |deepest |  input   | |  |
|  |  |             |  |  |#08090a |         | |  |
|  |  |             |  |  +--------+         | |  |
|  |  +-------------+  +---------------------+ |  |
|  +-------------------------------------------+  |
+-----------------------------------------------+

正しい方法 vs 誤った方法:

ダーク背景で領域を分離する際、初心者はソリッドなボーダーや明確な色差を使いがちだ。しかし正しいアプローチは、輝度の微差で自然な深度を生むことだ。

誤り: 強いボーダーと均一な背景

カード A
カード B

背景が同一で、太いボーダーだけが分離手段。平面的で安っぽい印象。

推奨: 輝度ステップ + 微細ボーダー

カード A
カード B

背景色の差 + 半透明ボーダーで奥行きが生まれる。高級感がある。

Token役割
bg-deepest#08090a最深部。入力欄内部・ページ基盤
bg-base#0f1011メインコンテンツ領域
bg-panel#141516サイドバー・ヘッダー・ナビ
bg-surface#191a1bカード・ドロップダウン・浮上面
bg-hoverrgba(255,255,255,0.03)ホバー状態
bg-activergba(255,255,255,0.05)アクティブ・選択状態

第2層: テキスト階層(情報の優先度)

テキストの輝度は「情報の匂い」を作る。ユーザーは文字を読む前に、輝度の差からどこが重要かを無意識に判断する。これを「情報の匂い (information scent)」と呼ぶ。

Dashboard Overviewtext-primary #f7f8f8
12 active projects across 3 teams with 47 open taskstext-secondary #d0d6e0
Last updated 5 minutes agotext-muted #8a8f98
Archived items are hiddentext-disabled #62666d

4段階テキスト階層の設計意図:

Tokenコントラスト比用途
text-primary#f7f8f815.8:1見出し、重要な数値、ユーザーが最初に見るべき情報
text-secondary#d0d6e011.3:1本文テキスト、説明文、サブタイトル
text-muted#8a8f985.9:1タイムスタンプ、補助情報、プレースホルダー
text-disabled#62666d3.5:1無効化要素、最低優先度の注記

なぜ #ffffff を使わないのか

純白 (#ffffff) はダーク背景上でコントラスト比 19.6:1 になり、WCAGの最低基準 4.5:1 の4倍以上となる。これは過剰であり、長時間の使用で眼精疲労を引き起こす。#f7f8f8 はわずか2%輝度を下げただけだが、この差が「刺さない白」と「目に優しい白」を分ける。プロダクトの使用時間が長いほど、この差は大きくなる。

第3層: アクセントとセマンティック(注意の誘導)

"One accent to rule them all" -- アクセントカラーは1色で十分だ。

ダーク背景ではどんな彩度のある色も強く主張する。だからこそ、アクセントの使用は極めて節制する必要がある。CTAボタンとアクティブ状態 -- この2箇所だけにアクセントを許可する。

Accent Usage Examples

Create Project
CTA ボタン
Overview
アクティブなナビ項目
New Feature
アクセントバッジ
View details
テキストリンク

セマンティックカラーのルール: セマンティックカラー(成功・エラー・警告・情報)はバッジやインジケーターでのみ使用し、背景は15%不透明度にする。テキストカラーとして直接使うことで、ダーク背景でも視認性を確保する。

ActiveFailedPendingInfoFeatureDefault
Token用途
accent-primary#5e6ad2CTA・アクティブ状態・リンク
accent-hover#7b85e0アクセントのホバー
accent-active#4e5abfアクセントの押下状態
accent-mutedrgba(94,106,210,0.15)バッジ背景
success#10B981成功・完了
error#EF4444エラー・削除
warning#F59E0B警告・保留
info#3B82F6情報・ヒント

ボーダーの哲学 -- 半透明白の威力

ダークモードのボーダーは、UIの印象を大きく左右する要素でありながら、見過ごされがちだ。

核心的なルール: ソリッドカラー (#333333 等) のボーダーは使用しない。常に rgba(255,255,255, 0.05-0.12) の半透明白を使う。

なぜか? 半透明ボーダーは背景色に自動適応する。bg-base の上でも bg-surface の上でも、同じ rgba(255,255,255, 0.08) が自然に馴染む。ソリッドカラーだと背景ごとに調整が必要になる。

Avoid: Solid Border

Card Title

border: #333333 -- 硬質で背景と馴染まない

Recommended: Semi-transparent

Card Title

border: rgba(255,255,255,0.08) -- 有機的で適応的

3段階のボーダー透明度:

Token用途
border-subtlergba(255,255,255,0.05)テーブル行の区切り、セクション間の微妙な分離
border-standardrgba(255,255,255,0.08)カード外枠、入力欄、ドロップダウン
border-emphasisrgba(255,255,255,0.12)アクティブなカード、ホバー時の強調、選択中要素
border-focus#5e6ad2フォーカスリング。アクセントカラーを直接使用

Border Opacity Comparison

0.05
subtle
0.08
standard
0.12
emphasis
accent
focus

タイポグラフィ

フォントとウェイトの選定

種類フォント用途
PrimaryInter Variable全UIテキスト
MonospaceJetBrains Monoコードブロック・数値
Fallback-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serifシステムフォント

ウェイトは3種類に制限する:

  • 400 -- 本文テキスト
  • 510 -- 見出し、強調ラベル
  • 590 -- 特に強い強調が必要な場面のみ(ほぼ使わない)

Bold (700) は使用禁止

ダークモードでは高輝度テキスト自体が十分な視覚的重みを持つ。700ウェイトを使うと「叫んでいる」印象になる。510で十分だ。

サイズ階層

RoleSizeWeightLetter Spacing
Display Hero48px510-1.056px
Heading 132px510-0.704px
Heading 224px510-0.528px
Heading 320px510-0.320px
Heading 416px510-0.176px
Body15px400normal
Body Small14px400normal
Caption13px400normal

24px以上のテキストにはネガティブレタースペーシングを適用する。大きなテキストは文字間が広く見えるため、詰めることで凝縮感を出す。


コンポーネントパターンギャラリー

ボタン(6バリエーション)

Button Variants

Primary
Secondary
Ghost
+
Destructive
Pill Button

Hover States (simulated with lighter background)

Primary Hover
Secondary Hover
Ghost Hover
+
Destructive Hover
Pill Hover
ボタンのCSS仕様
css
/* Primary */
background: #5e6ad2; color: #ffffff; padding: 8px 16px;
border-radius: 6px; box-shadow: none; transition: background 150ms ease;

/* Secondary */
background: rgba(255,255,255,0.05); color: #d0d6e0;
border: 1px solid rgba(255,255,255,0.08); border-radius: 6px;

/* Ghost */
background: transparent; color: #d0d6e0;
hover: background rgba(255,255,255,0.03);

/* Icon */
width: 32px; height: 32px; background: transparent;
hover: background rgba(255,255,255,0.05);

/* Destructive */
background: #EF4444; color: #ffffff;
hover: background #DC2626;

/* Pill */
border-radius: 9999px; /* 他は Primary と同じ */

カード(4パターン)

Card Pattern 1: Simple

Project Settings
Configure your project name, description, and visibility settings.
Configure

Card Pattern 2: Stat Card

Total Revenue
$48,290
+12.5% from last month
Active Users
2,847
-3.2% from last month
Conversion
4.6%
No change

Card Pattern 3: List Card

Recent Activity
Deployed to production2m ago
Merged PR #1421h ago
Added new endpoint3h ago

Card Pattern 4: Media Card

Image Placeholder
Featured Article
A deep dive into modern dark mode design patterns and best practices.
5 min read

テーブル(2パターン)

標準データテーブル

Search...
Status: All
Priority: All
Name
Status
Priority
Updated
Authentication flow
Done
Urgent
2h ago
Dashboard redesign
In Progress
High
5h ago
API rate limiting
Review
Medium
1d ago
Database indexing
Done
Low
3d ago
Documentation update
Backlog
Low
1w ago

コンパクトテーブル(価格データ向け)

Item
Price
Change
Force of Will
$89.50
+5.2%
Mana Crypt
$210.00
-12.1%
Scalding Tarn
$24.30
+0.1%
Ragavan
$55.80
+8.7%

入力フォーム(4タイプ)

Text Input States

Default
Enter project name...
Focused
My Project
Error
Invalid name
This name is already taken

Search Input

🔍 Search projects, tasks, or members...

Select / Dropdown

All Projectsv

Toggle / Switch

Enabled
Disabled

バッジ(6+タイプ)

Standard Badges

DefaultSuccessErrorWarningInfoAccent

Pill Badges (rounded)

ActivePendingExpiredDraft

Dot Indicator Badges

OnlineAwayOffline

ナビゲーション

Horizontal Navigation

Dashboard
Projects
Tasks
Settings

Sidebar Navigation

General
Overview
Analytics
Reports
Team
Members
Settings

Breadcrumb

Home/Projects/Frontend Redesign

レイアウトパターン -- 実践的な構成例

パターン1: SaaS ダッシュボード

冒頭のプレビューが典型的な SaaS ダッシュボードレイアウトだ。構成要素を分解すると:

  • ヘッダー: bg-panel + 下ボーダー。高さ48px。ナビゲーションリンクとユーザー情報
  • サイドバー: bg-panel + 右ボーダー。幅200-240px。セクション分けされたナビ
  • メインコンテンツ: bg-base。統計カード群 + データテーブル

パターン2: データテーブルビュー

上記の「標準データテーブル」セクションが該当する。ポイントは:

  • フィルターバーがテーブルと一体化(同じ border-radius の中に格納)
  • テーブルヘッダーは bg-panel で「手前」に浮かせる
  • 行間の区切りは border-subtle (0.05)
  • ホバー行は bg-hover (rgba 0.03) で微かに明るくする

パターン3: 詳細/エディタビュー(分割ペイン)

Projects
Frontend Redesign
API Integration
Database Migration
Auth Service
Frontend Redesign
Created 3 days ago by Alice
ActiveUrgent
Redesign the main dashboard interface with improved data visualization, new card layouts, and updated navigation structure.
// Latest commit
feat: add new stat card component
2 hours ago

パターン4: 設定画面

Settings
Manage your project preferences
General
Project Name
My Awesome Project
Description
A brief description of your project...
Notifications
Email notifications
Receive updates via email
Push notifications
Get notified in the browser
Danger Zone
Delete this project
This action cannot be undone
Delete

プロジェクト種別 適用ガイド

このダークテーマは汎用的だが、プロジェクトの性質によって最適な適用方法が異なる。

SaaS ダッシュボード向け

データ表示が中心のSaaSでは、このテーマがそのまま適合する。

適用のポイント:

  • アクセントカラーをブランドカラーに差し替える(後述のカスタマイズレシピ参照)
  • 統計カードは bg-surface + 数値を大きく表示
  • グラフエリアの背景は bg-base を使い、グラフの色をアクセント系で統一
SaaS Dashboard Mini Mockup
MRR
$24.5k
Users
1,284
Churn
2.1%
Chart Area (bg-panel)
適合度プロジェクト例
最適SaaS ダッシュボード、プロジェクト管理ツール
適合CRM、分析ツール、課金管理

開発者ツール向け

IDE、CLI GUI、API管理ツールなど、開発者が長時間使うツール。

適用のポイント:

  • Monospace フォント (JetBrains Mono) の使用頻度を上げる
  • コードブロックの背景は bg-deepest (最暗)
  • ターミナル風の表示エリアを組み込む
Developer Tool Mini Mockup
$ curl -X GET https://api.example.com/v1/users
Response 200 OK (142ms)
{
"users": [
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" }
]
}
適合度プロジェクト例
最適IDE、API管理、CLI GUI
適合ドキュメントサイト、SDK管理

管理画面向け

テーブルとフォームが中心の管理画面。

適用のポイント:

  • テーブルの情報密度を高める(コンパクトテーブルパターン使用)
  • ステータスバッジを多用する
  • バルクアクション(一括操作)のUIを追加
Admin Panel Mini Mockup
Users (2,847)
Export
Add User
Name
Role
Status
Alice Johnson
Admin
Active
Bob Smith
Editor
Invited
適合度プロジェクト例
最適管理画面、CMS、ユーザー管理
適合在庫管理、注文管理

データ分析/BI向け

チャートやグラフが中心の分析ツール。

適用のポイント:

  • チャートエリアの背景は bg-panel (やや明るい) にして視認性を確保
  • 数値表示には font-variant-numeric: tabular-nums を必ず指定
  • KPI カードの数値はアクセントカラーで強調
Data Analytics Mini Mockup
92.4%
Uptime
142ms
Avg Latency
1.2M
Requests/day
Time Series Chart
Pie Chart
適合度プロジェクト例
最適モニタリングダッシュボード、BI ツール
適合ログビューア、パフォーマンス分析

非推奨のプロジェクト

ゲーム・エンタメ系やコーポレートサイトには、このテーマは向かない。ゲーム系は GAMING_APP プリセットを、コーポレートはライトモード系テンプレートの使用を推奨する。


カスタマイズレシピ

レシピ1: ブランドカラーへの差し替え

アクセントカラーを #5e6ad2 からプロジェクトのブランドカラーに変更する手順。

Step 1: メインカラーを決める(例: Supabase風グリーン #10B981

Step 2: ホバー/アクティブ/ミュートを導出する

accent-primary: #10B981        (ブランドメイン)
accent-hover:   #34D399        (10-15%明るく)
accent-active:  #059669        (10-15%暗く)
accent-muted:   rgba(16,185,129,0.15)  (15%不透明度)

Step 3: ビフォー/アフター確認

Before (Indigo)

Create
Active Tab

After (Emerald)

Create
Active Tab

変更してはいけないもの

背景階層 (bg-deepest ~ bg-surface) とテキスト階層 (text-primary ~ text-disabled) はプリセットの核心だ。これらを変更するとダークテーマ全体のバランスが崩れる。アクセントカラーだけを差し替えること。

レシピ2: セカンドアクセントの追加

メインアクセント以外にもう1色必要な場合(例: 成功アクションに専用色を割り当てたい場合)。

ルール: セカンドアクセントはセマンティックカラーの中から選ぶ。新しい色を発明しない。

primary-accent:   #5e6ad2  (メインCTA)
secondary-accent: #10B981  (成功系アクション: 保存、承認、公開)

両方のアクセントが隣り合わないようにレイアウトする。1つの画面で2つのアクセント色が隣接すると、どちらが優先かわからなくなる。

レシピ3: ウォームグレーへのシフト

デフォルトのブルーグレーから、ウォームグレー(暖かみのあるグレー)へシフトする方法。

/* デフォルト (blue-grey) */
bg-base:       #0f1011
text-muted:    #8a8f98

/* ウォーム化 */
bg-base:       #11100f    (赤みを微量追加)
text-muted:    #98928a    (暖色寄りに)

いつウォームグレーを使うか

金融系、ホスピタリティ、ヘルスケアなど、「冷たさ」を避けたいドメインで有効。テック系やエンジニアリングツールでは、デフォルトのブルーグレーの方が適合する。

レシピ4: 情報密度の引き上げ

データが多い管理画面で、1画面に表示できる情報量を増やす方法。

変更点:

  • Body フォントサイズ: 15px -> 13px
  • カードパディング: 16px -> 12px
  • テーブル行パディング: 10px -> 6px
  • ギャップ: 16px -> 8px
css
/* コンパクトモード */
.compact { font-size: 13px; }
.compact .card { padding: 12px; }
.compact .table-row { padding: 6px 12px; }
.compact .gap { gap: 8px; }

Do's and Don'ts

Do: 輝度ステップで深度を表現する

bg-surface が bg-base から自然に浮き上がる
影を使わずに「手前」の印象を作れる

Don't: 影に頼る

影がダーク背景に溶けて見えない
深度が伝わらず、ぼやけた印象になる

Do: テキスト階層で情報の優先度を示す

4段階の輝度差を使い分けることで、ユーザーの視線を自然に誘導できる。

Don't: 全てのテキストを同じ輝度にする

テキストが全て同じ色だと、どこから読めばいいかわからない。情報の「匂い」がなくなる。

Do: アクセントを節制する

アクセントカラーは画面上の1-2箇所だけに使う。「ここを見ろ」という明確な意図を持たせる。

Don't: アクセントを乱用する

DashboardProjects (12)TasksNewView all

全てがアクセント色だと、何も目立たない。

Do: 半透明ボーダーを使う

rgba(255,255,255, 0.08) はどんな背景にも自然に馴染む。

Don't: ソリッドカラーのボーダーを使う

#333333#444444 は背景によって浮いたり沈んだりする。


Stitch プロンプト集

以下は、Stitch に対してこのダークテーマを適用したUIを生成させるためのプロンプト例だ。

ダッシュボードホームページ

markdown
## Design System
- Background: #0f1011 (main), #141516 (sidebar/header), #191a1b (cards)
- Text: #f7f8f8 (headings), #d0d6e0 (body), #8a8f98 (muted)
- Accent: #5e6ad2 (CTA only)
- Borders: rgba(255,255,255,0.08) — no solid color borders
- No box-shadows except modals
- Font weight: 510 max (no bold)

## Layout
SaaS dashboard with:
- Top header bar (48px height, bg-panel)
- Left sidebar (240px width, bg-panel)
- Main content area with 3 stat cards in a row
- Data table below with 5 rows, status badges
- Primary + Secondary button row at bottom

データテーブルページ

markdown
## Design System
(同上)

## Layout
Full-width data table page:
- Filter bar at top (search input + 2 dropdown filters)
- Table with columns: Name, Status (colored badge), Priority, Assignee, Updated
- 8+ rows with alternating hover state (rgba 0.03)
- Pagination bar at bottom (Previous / 1 2 3 / Next)
- Bulk action bar appears when rows selected

設定フォーム

markdown
## Design System
(同上)

## Layout
Settings page with max-width 600px:
- Page title + description
- Section "General": project name input, description textarea
- Section "Notifications": 3 toggle rows with label + description
- Section "Danger Zone": red border card with delete button
- Save button (primary) at bottom

詳細ビュー + サイドバー

markdown
## Design System
(同上)

## Layout
Split pane detail view:
- Left panel (260px): scrollable list of items with active indicator (2px accent left border)
- Right panel: detail view with title, metadata, badges, description, and code block
- Divider between panels: rgba(255,255,255,0.05)

ログイン/サインアップ

markdown
## Design System
(同上)

## Layout
Centered auth card on bg-deepest (#08090a) background:
- Card (bg-surface, max-width 400px, centered)
- Logo area at top
- Email input + Password input
- Primary "Sign In" button (full width)
- "Forgot password?" link in text-muted
- Divider with "or" text
- "Sign up" link at bottom

エンプティステート

markdown
## Design System
(同上)

## Layout
Empty state centered in content area:
- Large icon placeholder (48x48, text-disabled color)
- Heading: "No projects yet" (text-primary, 20px)
- Description: "Create your first project to get started" (text-muted, 14px)
- Primary CTA button below
- Optional: secondary text link "Learn more"

関連ページ