openvibers/openvibe.network Commits

Themes: bring all 34 built-in palettes up to WCAG AA for body text and accents

OP OpenVibers committed 16 Sept 2026 · 099984a164 · 1 file, +43 −43

An audit of the 34 built-in palettes against their own backgrounds found two failures that reach
every OpenVibe site, since this package is what openvibe.network serves to all of them.

--text-muted failed AA (4.5:1) against --bg-card on 33 of 34 themes, ranging from 3.67:1 down to
2.03:1 on Abyss. It is not a decorative token — it carries timestamps, view counts, follower
counts and "streamed 2h ago" lines across every page, so a third of the text on a card was below
the threshold.

--accent failed against --bg-primary on ten light themes, as low as 2.61:1 on Peach. The same
value is used as a button fill with white text, so white-on-accent was failing too (2.80:1 on
Peach); both improve together.

Each value was moved along its own palette's axis — muted toward that theme's --text-primary,
accent toward its --accent-dark — rather than toward grey or black, so Gruvbox still reads as
Gruvbox and Nord as Nord. Worst contrast across all 34 themes: 2.03:1 → 4.32:1, with 33 of 34 at
4.50:1 or better.

Midnight's --accent is deliberately left at 4.32:1: it is a dark theme, so raising it as text
lowers white-on-accent as a button fill (4.47 → 4.28). That trades one marginal miss for another,
which is not worth changing a brand colour for.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01CMxJm1dB8rdsaMSgNjVa82

Changes

ddiff --git a/packages/openvibe-shared/builtin-themes.js b/packages/openvibe-shared/builtin-themes.js
iindex 073ddaeb..9c15534d 100644
---- a/packages/openvibe-shared/builtin-themes.js
++++ b/packages/openvibe-shared/builtin-themes.js
@@@ -16,7 +16,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#12121a',
'--text-primary': '#e8e6e3',
'--text-secondary': '#9a9a9a',
-- '--text-muted': '#666',
++ '--text-muted': '#838282',
'--accent': '#8b5cf6',
'--accent-light': '#a78bfa',
'--accent-dark': '#6d28d9',
@@@ -46,7 +46,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#0d1220',
'--text-primary': '#e2e8f0',
'--text-secondary': '#94a3b8',
-- '--text-muted': '#64748b',
++ '--text-muted': '#78879b',
'--accent': '#6366f1',
'--accent-light': '#818cf8',
'--accent-dark': '#4f46e5',
@@@ -69,7 +69,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#0d160d',
'--text-primary': '#d4e8d4',
'--text-secondary': '#8aaa8a',
-- '--text-muted': '#5a7a5a',
++ '--text-muted': '#708e70',
'--accent': '#4ade80',
'--accent-light': '#86efac',
'--accent-dark': '#22c55e',
@@@ -92,7 +92,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#0d0b14',
'--text-primary': '#f0e6ff',
'--text-secondary': '#b4a0d0',
-- '--text-muted': '#6a5a80',
++ '--text-muted': '#87799c',
'--accent': '#ff006e',
'--accent-light': '#ff4d94',
'--accent-dark': '#c9005a',
@@@ -115,7 +115,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#21222c',
'--text-primary': '#f8f8f2',
'--text-secondary': '#bfbfb2',
-- '--text-muted': '#6272a4',
++ '--text-muted': '#8995b8',
'--accent': '#bd93f9',
'--accent-light': '#d4b8ff',
'--accent-dark': '#9b6ddb',
@@@ -143,7 +143,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#22231e',
'--text-primary': '#f8f8f2',
'--text-secondary': '#cfcfc2',
-- '--text-muted': '#75715e',
++ '--text-muted': '#979484',
'--accent': '#a6e22e',
'--accent-light': '#c4ff50',
'--accent-dark': '#7dac1c',
@@@ -169,7 +169,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#0c1418',
'--text-primary': '#d0e8ef',
'--text-secondary': '#7aa8ba',
-- '--text-muted': '#4a7080',
++ '--text-muted': '#658896',
'--accent': '#00bcd4',
'--accent-light': '#4dd0e1',
'--accent-dark': '#0097a7',
@@@ -192,7 +192,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#140c0c',
'--text-primary': '#ffe8e0',
'--text-secondary': '#c49080',
-- '--text-muted': '#7a5a50',
++ '--text-muted': '#977970',
'--accent': '#ff6b35',
'--accent-light': '#ff8f5e',
'--accent-dark': '#d04a1a',
@@@ -215,7 +215,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#0e1422',
'--text-primary': '#e0eaf5',
'--text-secondary': '#8aa0c0',
-- '--text-muted': '#5a708a',
++ '--text-muted': '#72869d',
'--accent': '#38bdf8',
'--accent-light': '#7dd3fc',
'--accent-dark': '#0284c7',
@@@ -238,7 +238,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#140a0a',
'--text-primary': '#f0dada',
'--text-secondary': '#b0808a',
-- '--text-muted': '#6a4a50',
++ '--text-muted': '#95787c',
'--accent': '#ef4444',
'--accent-light': '#f87171',
'--accent-dark': '#b91c1c',
@@@ -261,7 +261,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#100c16',
'--text-primary': '#f0e0ff',
'--text-secondary': '#c090e0',
-- '--text-muted': '#7050a0',
++ '--text-muted': '#8f73b7',
'--accent': '#e040fb',
'--accent-light': '#ea80fc',
'--accent-dark': '#aa00d4',
@@@ -286,7 +286,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#12141c',
'--text-primary': '#e4e6ea',
'--text-secondary': '#a0a4b0',
-- '--text-muted': '#606470',
++ '--text-muted': '#828690',
'--accent': '#a78bfa',
'--accent-light': '#c4b5fd',
'--accent-dark': '#7c3aed',
@@@ -309,7 +309,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#030803',
'--text-primary': '#00ff41',
'--text-secondary': '#00b030',
-- '--text-muted': '#005a18',
++ '--text-muted': '#008f25',
'--accent': '#00ff41',
'--accent-light': '#66ff8a',
'--accent-dark': '#00aa2a',
@@@ -332,7 +332,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#2a303c',
'--text-primary': '#eceff4',
'--text-secondary': '#d8dee9',
-- '--text-muted': '#7b88a1',
++ '--text-muted': '#9ba5b8',
'--accent': '#88c0d0',
'--accent-light': '#8fbcbb',
'--accent-dark': '#5e81ac',
@@@ -359,7 +359,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#242424',
'--text-primary': '#ebdbb2',
'--text-secondary': '#d5c4a1',
-- '--text-muted': '#928374',
++ '--text-muted': '#a69682',
'--accent': '#fabd2f',
'--accent-light': '#fce566',
'--accent-dark': '#d79921',
@@@ -386,7 +386,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#050505',
'--text-primary': '#cccccc',
'--text-secondary': '#888888',
-- '--text-muted': '#444444',
++ '--text-muted': '#7a7a7a',
'--accent': '#ffffff',
'--accent-light': '#ffffff',
'--accent-dark': '#aaaaaa',
@@@ -409,7 +409,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#13100b',
'--text-primary': '#e8ddd0',
'--text-secondary': '#b49a80',
-- '--text-muted': '#7a6a54',
++ '--text-muted': '#8e7f6a',
'--accent': '#cd7f32',
'--accent-light': '#daa060',
'--accent-dark': '#a06020',
@@@ -432,7 +432,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#100c16',
'--text-primary': '#f0e0f0',
'--text-secondary': '#c0a0c0',
-- '--text-muted': '#7a5a7a',
++ '--text-muted': '#927592',
'--accent': '#f472b6',
'--accent-light': '#f9a8d4',
'--accent-dark': '#db2777',
@@@ -455,7 +455,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#060400',
'--text-primary': '#ffb000',
'--text-secondary': '#cc8d00',
-- '--text-muted': '#664700',
++ '--text-muted': '#a37100',
'--accent': '#ffb000',
'--accent-light': '#ffd050',
'--accent-dark': '#cc8d00',
@@@ -478,8 +478,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f5f5f7',
'--text-primary': '#1a1a2e',
'--text-secondary': '#4a4a6a',
-- '--text-muted': '#9a9ab0',
-- '--accent': '#8b5cf6',
++ '--text-muted': '#747489',
++ '--accent': '#8756f3',
'--accent-light': '#a78bfa',
'--accent-dark': '#6d28d9',
'--border': '#e0e0e6',
@@@ -503,7 +503,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f5f2ed',
'--text-primary': '#2c2416',
'--text-secondary': '#5a4e3e',
-- '--text-muted': '#9a8e7e',
++ '--text-muted': '#7b7061',
'--accent': '#8b6914',
'--accent-light': '#b08a30',
'--accent-dark': '#6a5010',
@@@ -528,8 +528,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#edf2fa',
'--text-primary': '#1a2040',
'--text-secondary': '#4a5070',
-- '--text-muted': '#8a90aa',
-- '--accent': '#3b82f6',
++ '--text-muted': '#6b718c',
++ '--accent': '#2867ed',
'--accent-light': '#60a5fa',
'--accent-dark': '#2563eb',
'--border': '#d0d8ea',
@@@ -553,8 +553,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#edf5ea',
'--text-primary': '#1a2e16',
'--text-secondary': '#3a5a32',
-- '--text-muted': '#7a9a6e',
-- '--accent': '#16a34a',
++ '--text-muted': '#5d7a54',
++ '--accent': '#15823e',
'--accent-light': '#22c55e',
'--accent-dark': '#15803d',
'--border': '#c8dcc0',
@@@ -578,8 +578,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#fdf0ea',
'--text-primary': '#2e1a14',
'--text-secondary': '#6a4438',
-- '--text-muted': '#aa8070',
-- '--accent': '#f97316',
++ '--text-muted': '#8f6a5c',
++ '--accent': '#c04808',
'--accent-light': '#fb923c',
'--accent-dark': '#ea580c',
'--border': '#f0d0c0',
@@@ -603,8 +603,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f4f0fa',
'--text-primary': '#1e1430',
'--text-secondary': '#4a3a60',
-- '--text-muted': '#9080aa',
-- '--accent': '#8b5cf6',
++ '--text-muted': '#796a92',
++ '--accent': '#844cf2',
'--accent-light': '#a78bfa',
'--accent-dark': '#7c3aed',
'--border': '#ddd0ee',
@@@ -628,8 +628,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f5ecc4',
'--text-primary': '#3c3836',
'--text-secondary': '#504945',
-- '--text-muted': '#928374',
-- '--accent': '#d65d0e',
++ '--text-muted': '#766b60',
++ '--accent': '#be4707',
'--accent-light': '#fe8019',
'--accent-dark': '#af3a03',
'--border': '#d5c4a1',
@@@ -657,8 +657,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f8fafc',
'--text-primary': '#0f172a',
'--text-secondary': '#334155',
-- '--text-muted': '#94a3b8',
-- '--accent': '#0ea5e9',
++ '--text-muted': '#69768b',
++ '--accent': '#027cbb',
'--accent-light': '#38bdf8',
'--accent-dark': '#0284c7',
'--border': '#e2e8f0',
@@@ -682,8 +682,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f5f0e8',
'--text-primary': '#2e2418',
'--text-secondary': '#5a4e3e',
-- '--text-muted': '#9a8e7e',
-- '--accent': '#b8860b',
++ '--text-muted': '#7a6e5f',
++ '--accent': '#8c6707',
'--accent-light': '#daa520',
'--accent-dark': '#8b6508',
'--border': '#ddd0be',
@@@ -707,8 +707,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#fdeef2',
'--text-primary': '#2e1420',
'--text-secondary': '#6a3850',
-- '--text-muted': '#aa7090',
-- '--accent': '#e11d48',
++ '--text-muted': '#96617e',
++ '--accent': '#de1c47',
'--accent-light': '#f43f5e',
'--accent-dark': '#be123c',
'--border': '#f0c8d4',
@@@ -732,7 +732,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#01303d',
'--text-primary': '#fdf6e3',
'--text-secondary': '#93a1a1',
-- '--text-muted': '#586e75',
++ '--text-muted': '#909c9a',
'--accent': '#b58900',
'--accent-light': '#d4a017',
'--accent-dark': '#8a6a00',
@@@ -759,8 +759,8 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#f5eedb',
'--text-primary': '#002b36',
'--text-secondary': '#586e75',
-- '--text-muted': '#93a1a1',
-- '--accent': '#b58900',
++ '--text-muted': '#5b7478',
++ '--accent': '#8d6c00',
'--accent-light': '#d4a017',
'--accent-dark': '#8a6a00',
'--border': '#d6ceb5',
@@@ -788,7 +788,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#1a1a2c',
'--text-primary': '#cdd6f4',
'--text-secondary': '#bac2de',
-- '--text-muted': '#6c7086',
++ '--text-muted': '#81869e',
'--accent': '#cba6f7',
'--accent-light': '#dcc0ff',
'--accent-dark': '#b07de0',
@@@ -816,7 +816,7 @@ const RAW_BUILTIN_THEMES = [
'--bg-input': '#e8ebf0',
'--text-primary': '#4c4f69',
'--text-secondary': '#5c5f77',
-- '--text-muted': '#9ca0b0',
++ '--text-muted': '#696c83',
'--accent': '#8839ef',
'--accent-light': '#a05cff',
'--accent-dark': '#7028d4',