Frutjam のカラー システムは、すぐに WCAG AA コントラスト比を満たすように設計されたセマンティック CSS トークンを使用します。 JavaScript なし、ダークモード対応、Tailwind CSS v4 と互換性あり。 Django、HTMX、Laravel、および CSS のみのスタックで動作します。
Frutjam は、すべての色のデザイン トークンとして CSS カスタム プロパティを使用します。すべての色はテーマごとに定義され、Tailwind CSS ユーティリティ クラスと自動的に連携するため、追加の構成は必要ありません。 CSS のみ。JavaScript は必要ありません。 WCAG AA コントラストはすべての色のペアで保証されており、Django、HTMX、Laravel、React、およびあらゆる Tailwind CSS v4 プロジェクトで動作します。
色の名前
Frutjam は、次のセマンティックな色の役割を定義します。それぞれの色には相性があります on-{color} アクセス可能な前景テキストのトークン。
on-{color} このペアは、WCAG AA コントラスト要件を満たすために OKLCH で手動で調整されます。前景色を自動的に計算するライブラリとは異なり、Frutjam では明示的で検証済みのペアが提供されるため、コンポーネントは偶然ではなく設計によってアクセス可能になります。| 色 | トークン | 目的 |
|---|---|---|
| ベース | --color-base | ページの背景 |
| 中性 | --color-neutral | サーフェス、サイドバー、オーバーレイ |
| 主要な | --color-primary | ブランドのメインカラー |
| 二次的 | --color-secondary | 二次ブランドカラー |
| アクセント | --color-accent | アクセント/ハイライトカラー |
| 情報 | --color-info | 情報メッセージ |
| 成功 | --color-success | 成功状態 |
| 警告 | --color-warning | 警告状態 |
| エラー | --color-error | エラー状態と破壊状態 |
カラー スケール (50 ~ 950)
各色は 11 段階のスケールを生成し、ルート テーマ変数から次のように計算されます。 color-mix() ビルド時ではなくOKLCHで。ブランドカラーを設定すると、それに基づいて 11 のステップがすべて実行されるため、手動で設定する必要はありません。
各ステップは、CSS 変数と Tailwind ユーティリティを同時に使用します。 var(--color-primary-700) 独自の CSS 内、または bg-primary-700 マークアップで。見本にカーソルを置くと、両方の名前が表示されます。
primaryprimary 50primary 100primary 200primary 300primary 400primary 500primary 600primary 700primary 800primary 900primary 950secondarysecondary 50secondary 100secondary 200secondary 300secondary 400secondary 500secondary 600secondary 700secondary 800secondary 900secondary 950accentaccent 50accent 100accent 200accent 300accent 400accent 500accent 600accent 700accent 800accent 900accent 950infoinfo 50info 100info 200info 300info 400info 500info 600info 700info 800info 900info 950successsuccess 50success 100success 200success 300success 400success 500success 600success 700success 800success 900success 950warningwarning 50warning 100warning 200warning 300warning 400warning 500warning 600warning 700warning 800warning 900warning 950errorerror 50error 100error 200error 300error 400error 500error 600error 700error 800error 900error 950neutralneutral 50neutral 100neutral 200neutral 300neutral 400neutral 500neutral 600neutral 700neutral 800neutral 900neutral 950basebase 50base 100base 200base 300base 400base 500base 600base 700base 800base 900base 950ステップはハードコーディングされているのではなくテーマから計算されるため、このグリッドは Frutjam の色の図ではありません。それはあなたの色です。テーマを切り替えると、上のすべてのスウォッチがそれに合わせて移動します。テーマの横に 16 進数の値が印刷されないのもそのためです。
1 2 3 | <div class="bg-primary-100 text-primary-900 p-4 rounded">Light tint, dark text</div> <div class="bg-success-700 text-success-50 p-4 rounded">Dark shade, light text</div> <div class="border-2 border-error-400 text-error-600 p-4 rounded">Border and text</div> |
on- 色なので、それに対するコントラストを保証するものはありません。テキストが色上にある場合は、ライブラリがテストするペアを使用します。 bg-primary と text-on-primary.| CSS変数 | 説明 |
|---|---|
--color-{color}-50 | 明るい色合いの 80%、カラーの 20% |
--color-{color}-100 | 65% ライト、35% カラー |
--color-{color}-200 | 50% ライト、50% カラー |
--color-{color}-300 | 35% ライト、65% カラー |
--color-{color}-400 | 18% ライト、82% カラー |
--color-{color}-500 | 色自体は同じです --color-{color} |
--color-{color}-600 | 18% の暗い色合い、82% のカラー |
--color-{color}-700 | 34% ダーク、66% カラー |
--color-{color}-800 | 50% ダーク、50% カラー |
--color-{color}-900 | 65% ダーク、35% カラー |
--color-{color}-950 | 80% ダーク、20% カラー |
カラーユーティリティクラス
Frutjam のすべてのカラーは、Tailwind CSS カラー ユーティリティで機能します。交換する {color} 上の表の任意の色の名前を使用し、必要に応じて 50 ~ 950 スケールのステップを続けます。 bg-primary, bg-primary-100, text-error-900, border-success-300.
| クラス | 説明 |
|---|---|
bg-{color} | 背景色 |
text-{color} | 文字の色 |
border-{color} | 枠線の色 |
ring-{color} | リングカラー |
outline-{color} | 輪郭の色 |
shadow-{color} | 影の色 |
fill-{color} | SVGの塗りつぶし色 |
stroke-{color} | SVG ストロークの色 |
decoration-{color} | 文字装飾色 |
caret-{color} | 入力キャレットの色 |
placeholder-{color} | プレースホルダーのテキストの色 |
divide-{color} | 区切り線の境界線の色 |
{utility}-{color}-{step} | スケール ステップでの上記のいずれか。たとえば、 bg-accent-200 |
1 2 3 | <div class="bg-primary text-on-primary p-4 rounded">Primary background</div> <div class="bg-secondary text-on-secondary p-4 rounded">Secondary background</div> <div class="border border-primary text-primary p-4 rounded">Primary border and text</div> |
不透明度修飾子
色の不透明度を制御します。 /{value} 他の Tailwind カラーと同様に、修飾子です。
1 2 3 | <div class="bg-primary/10 text-primary p-4 rounded">10% primary background</div> <div class="bg-primary/20 text-primary p-4 rounded">20% primary background</div> <div class="text-on-base/60 p-4">60% opacity text</div> |
ソフト&アクティブ
インタラクティブ要素の状態を認識するバリアント。明るいテーマと暗いテーマに自動的に適応します。
| CSS変数 | 説明 |
|---|---|
--color-{color}-soft | ソフトなバリエーションの微妙な色合いの背景 |
--color-on-{color}-soft | 柔らかい背景で使用するためのテキストの色 |
--color-{color}-active | ホバー状態およびアクティブ状態の暗く/明るくされたシェード |
--color-body | 計算された本文のテキストの色 (元の色からわずかに柔らかくなります) on-base) |
テーマの CSS 変数
これらは、カスタム テーマの作成時に定義するルート トークンです。他のすべてのカラー トークンはこれらから自動的に計算されます。
| CSS変数 | 説明 |
|---|---|
--scheme-color | 配色: light または dark |
--border-radius | コンポーネントの基本境界半径 |
--color-base | ページの背景色 |
--color-on-base | ベースの背景のデフォルトのテキストの色 |
--color-neutral | ニュートラルな表面色 |
--color-on-neutral | ニュートラルな表面上のテキストの色 |
--color-primary | ブランドのメインカラー |
--color-on-primary | プライマリ背景のテキストの色 |
--color-secondary | 二次ブランドカラー |
--color-on-secondary | 二次背景のテキストの色 |
--color-accent | アクセントカラー |
--color-on-accent | アクセント背景の文字色 |
--color-info | 情報の色 |
--color-on-info | 情報背景のテキストの色 |
--color-success | 成功の色 |
--color-on-success | 成功の背景のテキストの色 |
--color-warning | 警告色 |
--color-on-warning | 警告背景の文字の色 |
--color-error | エラーの色 |
--color-on-error | エラー背景のテキストの色 |
カスタムテーマの例
ルート トークンをオーバーライドしてカスタム テーマを作成します。 Frutjam はすべてのスケールと状態を自動的に計算します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | @import "tailwindcss"; @plugin "frutjam"; [data-theme="mytheme"] { --scheme-color: light; --border-radius: 0.5rem; --color-base: oklch(98% 0 0); --color-on-base: oklch(15% 0 0); --color-neutral: oklch(20% 0 0); --color-on-neutral: oklch(98% 0 0); --color-primary: oklch(55% 0.25 260); --color-on-primary: oklch(98% 0 0); --color-secondary: oklch(60% 0.20 320); --color-on-secondary: oklch(98% 0 0); --color-accent: oklch(65% 0.22 180); --color-on-accent: oklch(15% 0 0); --color-info: oklch(68% 0.17 237); --color-on-info: oklch(15% 0 0); --color-success: oklch(75% 0.20 150); --color-on-success: oklch(15% 0 0); --color-warning: oklch(82% 0.19 90); --color-on-warning: oklch(15% 0 0); --color-error: oklch(58% 0.24 27); --color-on-error: oklch(98% 0 0); } |