Frutjam 的颜色系统使用语义 CSS 标记,旨在满足开箱即用的 WCAG AA 对比度。无需 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} 标记,用于可访问的前景文本。
保证 WCAG AA 对比度。每对
on-{color} 均在 OKLCH 中手动调整,以通过 WCAG AA 对比度要求。与自动计算前景色的库不同,Frutjam 为您提供明确的、经过验证的颜色对 - 因此您的组件可以通过设计而不是偶然访问。
| 颜色 | 代币 | 目的 |
|---|---|---|
| base | --color-base | 页面背景 |
| neutral | --color-neutral | 表面、侧边栏、覆盖层 |
| primary | --color-primary | 主要品牌颜色 |
| secondary | --color-secondary | 次品牌色 |
| accent | --color-accent | 强调/突出显示颜色 |
| info | --color-info | 信息性消息 |
| success | --color-success | 成功状态 |
| warning | --color-warning | 警告状态 |
| error | --color-error | 错误和破坏性状态 |
颜色实用程序类
所有 Frutjam 颜色均可与任何 Tailwind CSS 颜色实用程序配合使用。将 {color} 替换为上表中的任何颜色名称。
| 班级 | 描述 |
|---|---|
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} | 分隔线边框颜色 |
Primary background
Secondary background
Primary border and text
html
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 颜色一样。
10% primary background
20% primary background
60% opacity text
html
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 变量
这些是您在创建自定义主题时定义的根标记。所有其他颜色标记都是根据这些自动计算的。
| CSS 变量 | 描述 |
|---|---|
--scheme-color | 配色方案:浅色 或 深色 |
--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 会根据您的根主题变量自动计算这些标记 - 您无需手动设置它们。它们可用于自定义 CSS。
规模 (50–950)
每种颜色都会生成完整的 11 级色调/色调等级。将 {color} 替换为任何颜色名称。
| CSS 变量 | 描述 |
|---|---|
--color-{color}-50 | 最浅的色调(4% 颜色混合) |
--color-{color}-100 | 色调非常浅 |
--color-{color}-200 | 浅色调 |
--color-{color}-300 | 中浅色调 |
--color-{color}-400 | 轻微色调 |
--color-{color}-500 | 基色(与 --color-{color} 相同) |
--color-{color}-600 | 轻微阴影 |
--color-{color}-700 | 中等阴影 |
--color-{color}-800 | 深色阴影 |
--color-{color}-900 | 非常暗的阴影 |
--color-{color}-950 | 最暗的阴影 |
软&积极的
交互式元素的状态感知变体,自动适应浅色和深色主题。
| CSS 变量 | 描述 |
|---|---|
--color-{color}-soft | 柔和的变体的微妙有色背景 |
--color-on-{color}-soft | 用于柔和背景的文本颜色 |
--color-{color}-active | 悬停和活动状态的深色/浅色阴影 |
--color-body | 计算出的正文文本颜色(从 on-base 稍微柔化) |
自定义主题示例
覆盖根令牌以创建自定义主题。 Frutjam 自动计算所有尺度和状态。
css
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); } |