Files
platform/src/workspaces/theme/css/themes/grudark.css
T
pastilhasandClaude Opus 5 cbcd8d65df fix accent/secondary foreground derivation; 202 community themes
The nine remaining contrast failures all had the same cause, and it was a real bug in
map.ts rather than a limit of the source palettes: --accent and --secondary are both
s.high, but their foregrounds were taken from fgRaised, which is checked against
s.raised. That is precisely the near-miss the file already documents and fixes for
--muted-foreground, one token over. Deriving them against s.high instead rescues all
nine (every Solarized variant among them) and is provably a no-op for the official 22 —
each already clears 4.5:1 on s.high by 1.3x or more, and ensureContrast returns its
input untouched when it passes. Measured all 22 before the change; generate-themes.ts
--check reports 0 changes after it.

Also: GitLab-hosted repos are now discoverable (one theme lives there, and the raw-URL
and default-branch shapes differ from GitHub's), and sourceFor probes a directory named
after the theme's own slug, for the packs that nest one directory per theme. An exact
slug match is the only prefix tried on purpose — a pack whose variants have names of
their own has no single theme that is "the" one, so guessing would be wrong.

Every community theme is regenerated in this commit, not just the new ones. aura turned
up generated under an older pickAccent rule than its neighbours, because it was ported
before that rule changed — the same drift generate-themes.ts was written to prevent, and
the reason both halves are written from one source. All 202 now come from one mapping
version. Verified afterwards: 227 stylesheets, 227 imports, 227 registry entries, no
orphans in either direction.

Still out: 14 repos that 404 (deleted or renamed since the site indexed them),
grimdark-solarized (no source link at all), cobalt2 (its page links an awesome-list
README with no theme in it), and oasis (a six-variant pack with no variant named oasis —
porting it means inventing six slugs the site does not list, which is a naming decision).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 02:42:43 +00:00

98 lines
3.1 KiB
CSS

/*
Grudark — ported from a community Omarchy theme, not from basecamp/omarchy's own set.
Dark theme (dark), by luminance of its own background — the source repo carries no mode flag of its own to read.
Source: https://github.com/zillamtt/omarchy-grudark (alacritty.toml), read by scripts/port-community-themes.ts. Values
went through deriveOmarchyPalette (scripts/themes/from-ansi.ts) because the source has no Omarchy 4
colors.toml — some tokens here are reconstructed, not authored. Every text/surface pair is contrast-checked the same way the official themes are.
DO NOT EDIT BY HAND. Re-run the script to refresh from the source repo.
*/
[data-theme='grudark'] {
--background: #101211;
--foreground: #fdfdfb;
--card: #1d201e;
--card-foreground: #fdfdfb;
--popover: #1d201e;
--popover-foreground: #fdfdfb;
--muted: #2d302e;
--muted-foreground: #babbb9;
--accent: #2d302e;
--accent-foreground: #fdfdfb;
--primary: #ddf4f4;
--primary-foreground: #101211;
--secondary: #2d302e;
--secondary-foreground: #fdfdfb;
--cta: #ddf4f4;
--cta-foreground: #101211;
--ctahover: #e1f5f5;
--success: #89ae92;
--success-foreground: #101211;
--warning: #dacf6d;
--warning-foreground: #101211;
--destructive: #a48484;
--destructive-foreground: #101211;
--info: #88c2ce;
--info-foreground: #101211;
--busy: #bfaa79;
--busy-foreground: #101211;
--busy-ink: #bfaa79;
--border: #494b49;
--input: #494b49;
--ring: #ddf4f4;
--radius: 0.625rem;
--chart-primary: #ddf4f4;
--chart-secondary: #b3b0b5;
--status-success: #89ae92;
--status-warning: #dacf6d;
--status-in-progress: #88c2ce;
--page-bg: #101211;
--page-bg-src: '';
--panel-bg: rgb(29 32 30 / 0.72);
--panel-border: rgb(73 75 73 / 0.9);
--panel-border-bare: rgb(73 75 73 / 0.55);
--panel-raised-bg: rgb(29 32 30 / 0.95);
--panel-raised-border: rgb(73 75 73 / 1);
--panel-accent: #ddf4f4;
--panel-header-bg: rgb(45 48 46 / 0.6);
--panel-header-fg: #fdfdfb;
--panel-radius: 0.75rem;
--panel-blur: 12px;
--card-bg: #1d201e;
--glass-bg: rgb(29 32 30 / 0.55);
--glass-border: rgb(73 75 73 / 0.7);
--dock-bg: rgb(29 32 30 / 0.7);
--dock-border: rgb(73 75 73 / 0.8);
--dock-tooltip-bg: #2d302e;
--header-bg: rgb(29 32 30 / 0.8);
--header-border: rgb(73 75 73 / 0.9);
--header-fg: #fdfdfb;
--header-blur: 12px;
--pixel-grid-color: rgb(130 131 129 / 0.07);
--card-grid-color: rgb(130 131 129 / 0.05);
--panel-grid-color: rgb(130 131 129 / 0.06);
--scrollbar-thumb: rgb(79 84 81 / 0.6);
--scrollbar-thumb-hover: rgb(79 84 81 / 0.85);
--scrollbar-thin-thumb: rgb(79 84 81 / 0.45);
--scrollbar-thin-thumb-hover: rgb(79 84 81 / 0.7);
--brand: #ddf4f4;
--brand-foreground: #101211;
--brand-primary: #ddf4f4;
--brand-accent: #9adadb;
--brand-warm: #bfaa79;
--brand-deep: #101211;
--brand-muted: #4f5451;
--ink: #fdfdfb;
--surface-warm: #1d201e;
--naturegreen: #89ae92;
--naturegreen-foreground: #101211;
--duck-dark: #fdfdfb;
--duck-teal: #9adadb;
--duck-yellow: #dacf6d;
--duck-orange: #bfaa79;
--duck-forest: #89ae92;
--duck-beige: #333634;
--logo-src: '/officer-logo.svg';
}