Color System
Frutjam's color system uses semantic CSS tokens designed to meet WCAG AA contrast ratios out of the box. No JavaScript, dark mode aware, compatible with Tailwind CSS v4. Works with Django, HTMX, Laravel, and any CSS-only stack.
Frutjam sử dụng các thuộc tính tùy chỉnh CSS làm mã thông báo thiết kế cho tất cả các màu. Mỗi màu được xác định theo chủ đề và tự động hoạt động với các lớp tiện ích CSS của Tailwind — không cần cấu hình bổ sung. Chỉ CSS, không cần JavaScript. Độ tương phản WCAG AA được đảm bảo trên mọi cặp màu, hoạt động với Django, HTMX, Laravel, React và bất kỳ dự án Tailwind CSS v4 nào.
Tên màu
Frutjam xác định các vai trò màu ngữ nghĩa sau đây. Mỗi màu có một mã thông báo on-{color} phù hợp để văn bản nền trước có thể truy cập được.
on-{color} đều được điều chỉnh bằng tay trong OKLCH để đáp ứng các yêu cầu về độ tương phản WCAG AA. Không giống như các thư viện tự động tính toán màu nền trước, Frutjam cung cấp cho bạn các cặp rõ ràng, đã được xác minh — để các thành phần của bạn có thể truy cập được theo thiết kế chứ không phải ngẫu nhiên.
| Màu sắc | Mã thông báo | Mục đích |
|---|---|---|
| base | --color-base | Nền trang |
| neutral | --color-neutral | Bề mặt, thanh bên, lớp phủ |
| primary | --color-primary | Màu thương hiệu chính |
| secondary | --color-secondary | Màu thương hiệu phụ |
| accent | --color-accent | Màu nhấn/nổi bật |
| info | --color-info | tin nhắn thông tin |
| success | --color-success | Trạng thái thành công |
| warning | --color-warning | Trạng thái cảnh báo |
| error | --color-error | Lỗi và trạng thái phá hủy |
Các lớp tiện ích màu sắc
Tất cả các màu Frutjam đều hoạt động với mọi tiện ích màu CSS Tailwind. Thay thế {color} bằng bất kỳ tên màu nào từ bảng trên.
| Lớp học | Sự miêu tả |
|---|---|
bg-{color} | Màu nền |
text-{color} | Màu văn bản |
border-{color} | Màu viền |
ring-{color} | Màu nhẫn |
outline-{color} | Màu phác thảo |
shadow-{color} | Màu bóng |
fill-{color} | Màu tô SVG |
stroke-{color} | Màu nét SVG |
decoration-{color} | Màu sắc trang trí văn bản |
caret-{color} | Màu dấu mũ đầu vào |
placeholder-{color} | Màu văn bản giữ chỗ |
divide-{color} | Màu đường viền ngăn cách |
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> |
Công cụ sửa đổi độ mờ
Kiểm soát độ mờ của màu bằng công cụ sửa đổi /{value}, giống như bất kỳ màu Tailwind nào.
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> |
Biến CSS chủ đề
Đây là các mã thông báo gốc mà bạn xác định khi tạo chủ đề tùy chỉnh. Tất cả các mã thông báo màu khác được tính toán tự động từ những mã này.
| Biến CSS | Sự miêu tả |
|---|---|
--scheme-color | Bảng màu: sáng hoặc tối |
--border-radius | Bán kính đường viền cơ sở cho các thành phần |
--color-base | Màu nền trang |
--color-on-base | Màu văn bản mặc định trên nền cơ sở |
--color-neutral | Màu bề mặt trung tính |
--color-on-neutral | Màu văn bản trên bề mặt trung tính |
--color-primary | Màu thương hiệu chính |
--color-on-primary | Màu văn bản trên nền chính |
--color-secondary | Màu thương hiệu phụ |
--color-on-secondary | Màu văn bản trên nền phụ |
--color-accent | Màu nhấn |
--color-on-accent | Màu văn bản trên nền có điểm nhấn |
--color-info | Màu thông tin |
--color-on-info | Màu văn bản trên nền thông tin |
--color-success | Màu thành công |
--color-on-success | Màu văn bản trên nền thành công |
--color-warning | Màu cảnh báo |
--color-on-warning | Màu văn bản trên nền cảnh báo |
--color-error | Lỗi màu |
--color-on-error | Text color on error backgrounds |
Computed Color Tokens
Frutjam automatically computes these tokens from your root theme variables — you don't set them manually. They are available for use in custom CSS.
Scale (50–950)
Every color generates a full 11-step tint/shade scale. Replace {color} with any color name.
| Biến CSS | Sự miêu tả |
|---|---|
--color-{color}-50 | Lightest tint (4% color mix) |
--color-{color}-100 | Very light tint |
--color-{color}-200 | Light tint |
--color-{color}-300 | Medium-light tint |
--color-{color}-400 | Slight tint |
--color-{color}-500 | Base color (same as --color-{color}) |
--color-{color}-600 | Slight shade |
--color-{color}-700 | Medium shade |
--color-{color}-800 | Dark shade |
--color-{color}-900 | Very dark shade |
--color-{color}-950 | Darkest shade |
Soft & Active
State-aware variants for interactive elements, automatically adapting to light and dark themes.
| Biến CSS | Sự miêu tả |
|---|---|
--color-{color}-soft | Subtle tinted background for soft variants |
--color-on-{color}-soft | Text color for use on soft backgrounds |
--color-{color}-active | Darkened/lightened shade for hover and active states |
--color-body | Computed body text color (slightly softened from on-base) |
Custom Theme Example
Override root tokens to create a custom theme. Frutjam computes all scales and states automatically.
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); } |