From 861fc4a58b25d525733b9ff7c3acf433405de4a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sat, 22 Aug 2026 01:48:21 +0000 Subject: [PATCH] add colors.toml and 0x-hex support, rescuing 44 more community themes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Poked at the 62 "no parseable source" skips from the first pass and found two things the pipeline didn't handle: several community repos genuinely ship colors.toml too — some in Omarchy 4's own semantic schema (best case, no derivation needed at all, same quality as the official 22), others reusing the filename for an unrelated flat color0..color15 scheme — and a handful of alacritty.toml files use 0xrrggbb instead of #rrggbb. palette.ts's loadPalette is now a thin wrapper over two exported pieces (parseTomlText, paletteFromRecord) so the community pipeline can attempt the real schema first without duplicating the reader; falls through to the color16 or ANSI-derived paths otherwise. generate-themes.ts --check still reports 0 changes for the official set — the refactor is behavior-preserving there, the lowercase-hex normalization it picked up along the way touched 7 official theme files cosmetically (their source colors.toml has uppercase hex), regenerated for real rather than left inconsistent with their own source. 147 -> 191 community themes ported. Of the original 62 unparseable repos, most turned out to be simply gone (404 on GitHub — repos deleted or renamed since the site listed them); the rest needed one of the two format additions above. 20 themes remain stuck: 16 dead repos, 2 with no repo link at all, and the same handful of genuinely low-contrast source palettes (mostly Solarized variants) where fixing contrast would mean changing the author's actual colours rather than porting them. Co-Authored-By: Claude Sonnet 5 --- scripts/port-community-themes.ts | 50 ++- scripts/themes/ansi-source.ts | 42 ++- scripts/themes/community-manifest.json | 308 ++++++++++++++++++ scripts/themes/palette.ts | 25 +- src/workspaces/theme/css/index.css | 44 +++ src/workspaces/theme/css/themes/andromeda.css | 97 ++++++ src/workspaces/theme/css/themes/ash.css | 97 ++++++ src/workspaces/theme/css/themes/astrodark.css | 97 ++++++ .../theme/css/themes/biscuit-de-mar-dark.css | 97 ++++++ .../theme/css/themes/black-gold.css | 97 ++++++ .../theme/css/themes/black-money.css | 97 ++++++ src/workspaces/theme/css/themes/blackturq.css | 97 ++++++ .../theme/css/themes/cattpuccin-glass.css | 97 ++++++ src/workspaces/theme/css/themes/corporate.css | 97 ++++++ .../theme/css/themes/crimson-gold.css | 97 ++++++ .../theme/css/themes/cyberpunk-2.css | 97 ++++++ .../theme/css/themes/desert-gleam.css | 97 ++++++ .../theme/css/themes/desert-twilight.css | 97 ++++++ src/workspaces/theme/css/themes/elysian.css | 97 ++++++ src/workspaces/theme/css/themes/ethereal.css | 16 +- .../theme/css/themes/evergarden.css | 97 ++++++ .../theme/css/themes/fiery-ocean.css | 97 ++++++ src/workspaces/theme/css/themes/fireside.css | 97 ++++++ src/workspaces/theme/css/themes/firesky.css | 97 ++++++ .../theme/css/themes/flexoki-dark.css | 97 ++++++ .../theme/css/themes/flexoki-light.css | 82 ++--- src/workspaces/theme/css/themes/frost.css | 97 ++++++ src/workspaces/theme/css/themes/futurism.css | 97 ++++++ .../theme/css/themes/ghost-pastel.css | 97 ++++++ src/workspaces/theme/css/themes/hackerman.css | 22 +- .../theme/css/themes/harbor-dark.css | 97 ++++++ .../theme/css/themes/hollow-knight.css | 97 ++++++ src/workspaces/theme/css/themes/inkypinky.css | 97 ++++++ src/workspaces/theme/css/themes/kanagawa.css | 2 +- src/workspaces/theme/css/themes/kanso.css | 97 ++++++ src/workspaces/theme/css/themes/kimiko.css | 97 ++++++ src/workspaces/theme/css/themes/koyanagi.css | 97 ++++++ .../theme/css/themes/last-horizon.css | 30 +- .../theme/css/themes/matte-black.css | 12 +- .../theme/css/themes/monolith-2.css | 97 ++++++ src/workspaces/theme/css/themes/moodpeak.css | 97 ++++++ src/workspaces/theme/css/themes/nes.css | 97 ++++++ .../theme/css/themes/one-dark-pro.css | 97 ++++++ .../theme/css/themes/osaka-jade.css | 38 +-- src/workspaces/theme/css/themes/pina.css | 97 ++++++ src/workspaces/theme/css/themes/pmndrs.css | 97 ++++++ src/workspaces/theme/css/themes/reverie.css | 97 ++++++ .../theme/css/themes/rose-pine-dark.css | 97 ++++++ src/workspaces/theme/css/themes/saga.css | 97 ++++++ src/workspaces/theme/css/themes/sakura.css | 97 ++++++ src/workspaces/theme/css/themes/sapphire.css | 97 ++++++ src/workspaces/theme/css/themes/serenity.css | 97 ++++++ .../theme/css/themes/shadesofjade.css | 97 ++++++ src/workspaces/theme/css/themes/snow.css | 97 ++++++ src/workspaces/theme/css/themes/sunkissed.css | 97 ++++++ src/workspaces/theme/css/themes/x-1632.css | 97 ++++++ src/workspaces/theme/src/themes.ts | 44 +++ 57 files changed, 4859 insertions(+), 124 deletions(-) create mode 100644 src/workspaces/theme/css/themes/andromeda.css create mode 100644 src/workspaces/theme/css/themes/ash.css create mode 100644 src/workspaces/theme/css/themes/astrodark.css create mode 100644 src/workspaces/theme/css/themes/biscuit-de-mar-dark.css create mode 100644 src/workspaces/theme/css/themes/black-gold.css create mode 100644 src/workspaces/theme/css/themes/black-money.css create mode 100644 src/workspaces/theme/css/themes/blackturq.css create mode 100644 src/workspaces/theme/css/themes/cattpuccin-glass.css create mode 100644 src/workspaces/theme/css/themes/corporate.css create mode 100644 src/workspaces/theme/css/themes/crimson-gold.css create mode 100644 src/workspaces/theme/css/themes/cyberpunk-2.css create mode 100644 src/workspaces/theme/css/themes/desert-gleam.css create mode 100644 src/workspaces/theme/css/themes/desert-twilight.css create mode 100644 src/workspaces/theme/css/themes/elysian.css create mode 100644 src/workspaces/theme/css/themes/evergarden.css create mode 100644 src/workspaces/theme/css/themes/fiery-ocean.css create mode 100644 src/workspaces/theme/css/themes/fireside.css create mode 100644 src/workspaces/theme/css/themes/firesky.css create mode 100644 src/workspaces/theme/css/themes/flexoki-dark.css create mode 100644 src/workspaces/theme/css/themes/frost.css create mode 100644 src/workspaces/theme/css/themes/futurism.css create mode 100644 src/workspaces/theme/css/themes/ghost-pastel.css create mode 100644 src/workspaces/theme/css/themes/harbor-dark.css create mode 100644 src/workspaces/theme/css/themes/hollow-knight.css create mode 100644 src/workspaces/theme/css/themes/inkypinky.css create mode 100644 src/workspaces/theme/css/themes/kanso.css create mode 100644 src/workspaces/theme/css/themes/kimiko.css create mode 100644 src/workspaces/theme/css/themes/koyanagi.css create mode 100644 src/workspaces/theme/css/themes/monolith-2.css create mode 100644 src/workspaces/theme/css/themes/moodpeak.css create mode 100644 src/workspaces/theme/css/themes/nes.css create mode 100644 src/workspaces/theme/css/themes/one-dark-pro.css create mode 100644 src/workspaces/theme/css/themes/pina.css create mode 100644 src/workspaces/theme/css/themes/pmndrs.css create mode 100644 src/workspaces/theme/css/themes/reverie.css create mode 100644 src/workspaces/theme/css/themes/rose-pine-dark.css create mode 100644 src/workspaces/theme/css/themes/saga.css create mode 100644 src/workspaces/theme/css/themes/sakura.css create mode 100644 src/workspaces/theme/css/themes/sapphire.css create mode 100644 src/workspaces/theme/css/themes/serenity.css create mode 100644 src/workspaces/theme/css/themes/shadesofjade.css create mode 100644 src/workspaces/theme/css/themes/snow.css create mode 100644 src/workspaces/theme/css/themes/sunkissed.css create mode 100644 src/workspaces/theme/css/themes/x-1632.css diff --git a/scripts/port-community-themes.ts b/scripts/port-community-themes.ts index 1fb47919..d33a3489 100644 --- a/scripts/port-community-themes.ts +++ b/scripts/port-community-themes.ts @@ -3,8 +3,10 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs'; import { execSync } from 'node:child_process'; import { join } from 'node:path'; import { mapPalette } from './themes/map'; +import type { Palette } from './themes/palette'; +import { paletteFromRecord, parseTomlText } from './themes/palette'; import { deriveOmarchyPalette } from './themes/from-ansi'; -import { parseAlacrittyToml, parseGhosttyConf } from './themes/ansi-source'; +import { parseAlacrittyToml, parseColor16Toml, parseGhosttyConf } from './themes/ansi-source'; import { contrast, ensureContrast, TEXT, UI } from './themes/contrast'; // Port community Omarchy themes from omarchythemes.com into the same 84-token shape the official @@ -36,7 +38,7 @@ type ManifestEntry = { id: string; name: string; repo: string; - kind: 'alacritty.toml' | 'ghostty.conf'; + kind: string; dark: boolean; }; @@ -105,12 +107,29 @@ async function discoverRepo(slug: string): Promise { return m ? `${m[1]}/${m[2]}` : undefined; } -async function sourceFor( - repo: string, -): Promise<{ ansi: NonNullable>; kind: ManifestEntry['kind'] } | undefined> { +async function sourceFor(repo: string): Promise<{ palette: Palette; kind: string; derived: boolean } | undefined> { const branch = ghApiDefaultBranch(repo); const raw = (p: string) => `https://raw.githubusercontent.com/${repo}/${branch}/${p}`; + // `colors.toml` is ambiguous across community repos: it might genuinely be Omarchy 4's own semantic + // schema (in which case no derivation is needed at all — same quality as the official 22), or it might + // reuse the filename for an unrelated flat `color0..color15` ANSI scheme. Try the real schema first; + // only fall through to the ANSI reading if the required keys aren't there. + const tomlText = await fetchText(raw('colors.toml')); + if (tomlText) { + const kv = parseTomlText(tomlText); + try { + return { + palette: paletteFromRecord(kv, `${repo}/colors.toml`), + kind: 'colors.toml (Omarchy schema)', + derived: false, + }; + } catch { + const ansi = parseColor16Toml(kv); + if (ansi) return { palette: deriveOmarchyPalette(ansi), kind: 'colors.toml (16-colour ANSI)', derived: true }; + } + } + for (const path of [ 'alacritty.toml', '.config/alacritty.toml', @@ -120,13 +139,13 @@ async function sourceFor( const text = await fetchText(raw(path)); if (!text) continue; const ansi = parseAlacrittyToml(text); - if (ansi) return { ansi, kind: 'alacritty.toml' }; + if (ansi) return { palette: deriveOmarchyPalette(ansi), kind: 'alacritty.toml', derived: true }; } for (const path of ['ghostty.conf', 'ghostty-theme', '.config/ghostty/config']) { const text = await fetchText(raw(path)); if (!text) continue; const ansi = parseGhosttyConf(text); - if (ansi) return { ansi, kind: 'ghostty.conf' }; + if (ansi) return { palette: deriveOmarchyPalette(ansi), kind: 'ghostty.conf', derived: true }; } return undefined; } @@ -136,9 +155,9 @@ async function portOne(slug: string): Promise<{ entry: ManifestEntry; css: strin if (!repo) return { skip: 'no github repo link found on its omarchythemes.com page' }; const source = await sourceFor(repo); - if (!source) return { skip: `no parseable alacritty.toml/ghostty.conf in ${repo}` }; + if (!source) return { skip: `no parseable colors.toml/alacritty.toml/ghostty.conf in ${repo}` }; - const palette = deriveOmarchyPalette(source.ansi); + const palette = source.palette; const tokens = mapPalette(palette); // `--input` carries a real accessibility requirement (a field boundary you can't see) where `--border` @@ -161,16 +180,19 @@ async function portOne(slug: string): Promise<{ entry: ManifestEntry; css: strin const body = Object.entries(tokens) .map(([k, v]) => ` ${k}: ${v};`) .join('\n'); + const modeLine = source.kind.startsWith('colors.toml (Omarchy') + ? `${palette.mode === 'dark' ? 'Dark theme' : 'Light theme'} (${palette.mode}) — the source repo's own colors.toml says so directly.` + : `${palette.mode === 'dark' ? 'Dark theme' : 'Light theme'} (${palette.mode}), by luminance of its own background — the source repo carries no mode flag of its own to read.`; + const provenanceLine = source.derived + ? `went through deriveOmarchyPalette (scripts/themes/from-ansi.ts) because the source has no Omarchy 4\n colors.toml — some tokens here are reconstructed, not authored.` + : `came straight from the repo's own colors.toml — the same schema and reader the official 22 themes\n use, so nothing here is reconstructed.`; const css = `/* ${name} — ported from a community Omarchy theme, not from basecamp/omarchy's own set. - ${palette.mode === 'dark' ? 'Dark theme' : 'Light theme'} (${palette.mode}), by luminance of its own - background — the source repo carries no mode flag of its own to read. + ${modeLine} Source: https://github.com/${repo} (${source.kind}), read by scripts/port-community-themes.ts. Values - went through deriveOmarchyPalette (scripts/themes/from-ansi.ts) because a single-theme repo ships - per-app configs, not Omarchy 4's own colors.toml shape — some tokens here are reconstructed, not - authored. Every text/surface pair is contrast-checked the same way the official themes are. + ${provenanceLine} 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. */ diff --git a/scripts/themes/ansi-source.ts b/scripts/themes/ansi-source.ts index 4736e744..6c1f3123 100644 --- a/scripts/themes/ansi-source.ts +++ b/scripts/themes/ansi-source.ts @@ -32,12 +32,14 @@ export type AnsiSource = { brightWhite: string; }; -const HEX = /#[0-9a-fA-F]{3,8}/; +// `#rrggbb` is standard; `0xrrggbb` shows up in a handful of community alacritty.toml files (their +// authors apparently ported from a scheme that used C-style hex literals). +const HEX = /#[0-9a-fA-F]{3,8}|0x[0-9a-fA-F]{3,8}/; function normalizeHex(v: string): string | undefined { const m = v.match(HEX); if (!m) return undefined; - let h = m[0].slice(1).toLowerCase(); + let h = m[0].replace(/^(#|0x)/, '').toLowerCase(); if (h.length === 3) h = h .split('') @@ -165,3 +167,39 @@ export function parseGhosttyConf(text: string): AnsiSource | undefined { brightWhite: palette[15]!, }; } + +/** + * A third shape some community repos name `colors.toml` too, unrelated to Omarchy 4's own — flat + * `color0`..`color15` in standard ANSI order, plus `background`/`foreground`. Try this only after + * `paletteFromRecord` (the real Omarchy schema) has already failed on the same file: the two are + * distinguished only by which keys are present, and a file can't be both. + */ +export function parseColor16Toml(t: Record): AnsiSource | undefined { + const at = (i: number): string | undefined => (t[`color${i}`] ? normalizeHex(t[`color${i}`]!) : undefined); + const background = t.background ? normalizeHex(t.background) : undefined; + const foreground = t.foreground ? normalizeHex(t.foreground) : undefined; + if (!background || !foreground) return undefined; + const slots = Array.from({ length: 16 }, (_, i) => at(i)); + if (slots.some((s) => !s)) return undefined; + + return { + background, + foreground, + black: slots[0]!, + red: slots[1]!, + green: slots[2]!, + yellow: slots[3]!, + blue: slots[4]!, + magenta: slots[5]!, + cyan: slots[6]!, + white: slots[7]!, + brightBlack: slots[8]!, + brightRed: slots[9]!, + brightGreen: slots[10]!, + brightYellow: slots[11]!, + brightBlue: slots[12]!, + brightMagenta: slots[13]!, + brightCyan: slots[14]!, + brightWhite: slots[15]!, + }; +} diff --git a/scripts/themes/community-manifest.json b/scripts/themes/community-manifest.json index 20d682a8..91fccb17 100644 --- a/scripts/themes/community-manifest.json +++ b/scripts/themes/community-manifest.json @@ -55,6 +55,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "andromeda", + "name": "Andromeda", + "repo": "signaldirective/andromeda", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "anonymous", "name": "Anonymous", @@ -97,6 +104,20 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "ash", + "name": "Ash", + "repo": "bjarneo/omarchy-ash-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "astrodark", + "name": "Astrodark", + "repo": "JamsMendez/omarchy-astrodark-theme", + "kind": "colors.toml (Omarchy schema)", + "dark": true + }, { "id": "atari", "name": "Atari", @@ -195,6 +216,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "biscuit-de-mar-dark", + "name": "Biscuit DE Mar Dark", + "repo": "OldJobobo/omarchy-biscuit-de-mar-dark-theme", + "kind": "colors.toml (Omarchy schema)", + "dark": true + }, { "id": "black-arch", "name": "Black Arch", @@ -202,6 +230,27 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "black-gold", + "name": "Black Gold", + "repo": "HANCORE-linux/omarchy-blackgold-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "black-money", + "name": "Black Money", + "repo": "HANCORE-linux/omarchy-blackmoney-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "blackturq", + "name": "Blackturq", + "repo": "HANCORE-linux/omarchy-blackturq-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "blueridge", "name": "Blueridge", @@ -230,6 +279,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "cattpuccin-glass", + "name": "Cattpuccin Glass", + "repo": "Luquatic/omarchy-catppuccin-glass", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "city-783", "name": "City 783", @@ -244,6 +300,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "corporate", + "name": "Corporate", + "repo": "defer/omarchy-corporate-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": false + }, { "id": "cpunk", "name": "Cpunk", @@ -258,6 +321,20 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "crimson-gold", + "name": "Crimson Gold", + "repo": "knappkevin/omarchy-crimson-gold-theme", + "kind": "colors.toml (Omarchy schema)", + "dark": true + }, + { + "id": "cyberpunk-2", + "name": "Cyberpunk 2", + "repo": "SeanAnd/omarchy-cyberpunk-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "dark-xp", "name": "Dark XP", @@ -307,6 +384,20 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "desert-gleam", + "name": "Desert Gleam", + "repo": "avis3nna/desert-gleam", + "kind": "colors.toml (16-colour ANSI)", + "dark": false + }, + { + "id": "desert-twilight", + "name": "Desert Twilight", + "repo": "avis3nna/desert-twilight", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "dotrb", "name": "Dotrb", @@ -342,6 +433,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "elysian", + "name": "Elysian", + "repo": "bjarneo/omarchy-elysian-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "ember-n-ash", "name": "Ember N Ash", @@ -370,6 +468,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "evergarden", + "name": "Evergarden", + "repo": "celsobenedetti/omarchy-evergarden", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "farline", "name": "Farline", @@ -384,6 +489,27 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "fiery-ocean", + "name": "Fiery Ocean", + "repo": "bjarneo/omarchy-fiery-ocean-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "fireside", + "name": "Fireside", + "repo": "bjarneo/omarchy-fireside-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "firesky", + "name": "Firesky", + "repo": "bjarneo/omarchy-firesky-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "flat-dracula", "name": "Flat Dracula", @@ -391,6 +517,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "flexoki-dark", + "name": "Flexoki Dark", + "repo": "euandeas/omarchy-flexoki-dark-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "florida-man", "name": "Florida Man", @@ -412,6 +545,27 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "frost", + "name": "Frost", + "repo": "bjarneo/omarchy-frost-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "futurism", + "name": "Futurism", + "repo": "bjarneo/omarchy-futurism-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "ghost-pastel", + "name": "Ghost Pastel", + "repo": "row-huh/omarchy-ghost-pastel-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "glory-antic", "name": "Glory Antic", @@ -475,6 +629,13 @@ "kind": "alacritty.toml", "dark": false }, + { + "id": "harbor-dark", + "name": "Harbor Dark", + "repo": "HANCORE-linux/omarchy-harbordark-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "hex", "name": "Hex", @@ -496,6 +657,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "hollow-knight", + "name": "Hollow Knight", + "repo": "bjarneo/omarchy-hollow-knight-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "infernium", "name": "Infernium", @@ -510,6 +678,20 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "inkypinky", + "name": "Inkypinky", + "repo": "HANCORE-linux/omarchy-inkypinky-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "kanso", + "name": "Kanso", + "repo": "HANCORE-linux/omarchy-kanso-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "killer-klowns", "name": "Killer Klowns", @@ -517,6 +699,20 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "kimiko", + "name": "Kimiko", + "repo": "krymzonn/omarchy-kimiko-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "koyanagi", + "name": "Koyanagi", + "repo": "YutaKoyanagi10/omarchy-koyanagi-theme", + "kind": "colors.toml (Omarchy schema)", + "dark": true + }, { "id": "kurayami", "name": "Kurayami", @@ -650,6 +846,20 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "monolith-2", + "name": "Monolith 2", + "repo": "grvsnh/omarchy-monolith-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "moodpeak", + "name": "Moodpeak", + "repo": "HANCORE-linux/omarchy-moodpeak-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "nagai-poolside", "name": "Nagai Poolside", @@ -692,6 +902,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "nes", + "name": "Nes", + "repo": "bjarneo/omarchy-nes-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "nyc", "name": "Nyc", @@ -699,6 +916,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "one-dark-pro", + "name": "One Dark Pro", + "repo": "sc0ttman/omarchy-one-dark-pro", + "kind": "colors.toml (Omarchy schema)", + "dark": true + }, { "id": "oxford", "name": "Oxford", @@ -720,6 +944,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "pina", + "name": "Pina", + "repo": "bjarneo/omarchy-pina-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "pink-blood", "name": "Pink Blood", @@ -727,6 +958,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "pmndrs", + "name": "Pmndrs", + "repo": "leweyse/omarchy-pmndrs-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "pulsar", "name": "Pulsar", @@ -776,6 +1014,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "reverie", + "name": "Reverie", + "repo": "bjarneo/omarchy-reverie-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "robco", "name": "Robco", @@ -790,6 +1035,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "rose-pine-dark", + "name": "Rose Pine Dark", + "repo": "guilhermetk/omarchy-rose-pine-dark", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "roseofdune", "name": "Roseofdune", @@ -811,6 +1063,48 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "saga", + "name": "Saga", + "repo": "HANCORE-linux/omarchy-saga-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "sakura", + "name": "Sakura", + "repo": "bjarneo/omarchy-sakura-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "sapphire", + "name": "Sapphire", + "repo": "HANCORE-linux/omarchy-sapphire-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "serenity", + "name": "Serenity", + "repo": "bjarneo/omarchy-serenity-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "shadesofjade", + "name": "Shadesofjade", + "repo": "HANCORE-linux/omarchy-shadesofjade-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, + { + "id": "snow", + "name": "Snow", + "repo": "bjarneo/omarchy-snow-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": false + }, { "id": "snow-black", "name": "Snow Black", @@ -860,6 +1154,13 @@ "kind": "alacritty.toml", "dark": true }, + { + "id": "sunkissed", + "name": "Sunkissed", + "repo": "loeclos/omarchy-sunkissed-theme", + "kind": "alacritty.toml", + "dark": true + }, { "id": "sunset", "name": "Sunset", @@ -1021,6 +1322,13 @@ "kind": "alacritty.toml", "dark": false }, + { + "id": "x-1632", + "name": "X 1632", + "repo": "OldJobobo/omarchy-x-1632-theme", + "kind": "colors.toml (16-colour ANSI)", + "dark": true + }, { "id": "yuugure", "name": "Yuugure", diff --git a/scripts/themes/palette.ts b/scripts/themes/palette.ts index 260a9752..ebefc227 100644 --- a/scripts/themes/palette.ts +++ b/scripts/themes/palette.ts @@ -38,21 +38,28 @@ export type Palette = { brightMagenta: string; }; -/** A deliberately small TOML reader: this file is flat `key = "value"` and nothing else. */ -function readToml(path: string): Record { +/** + * A deliberately small TOML reader: this file is flat `key = "value"` and nothing else. + * + * Exported (not just used by `loadPalette` below) because a community theme can ship this exact shape + * too — see `port-community-themes.ts`, which reads it from a fetched string rather than a file path. + */ +export function parseTomlText(text: string): Record { const out: Record = {}; - for (const line of readFileSync(path, 'utf8').split('\n')) { + for (const line of text.split('\n')) { const m = line.match(/^\s*([a-z_0-9]+)\s*=\s*"([^"]*)"/i); - if (m) out[m[1]!] = m[2]!; + // basecamp/omarchy's own files are already lowercase hex; a community `colors.toml` isn't guaranteed + // to be, so normalize here rather than leaving the two sources visibly inconsistent. + if (m) out[m[1]!] = m[2]!.toLowerCase(); } return out; } -export function loadPalette(tomlPath: string): Palette { - const t = readToml(tomlPath); +/** The 24-key contract, given an already-parsed record rather than a path — see `parseTomlText`. */ +export function paletteFromRecord(t: Record, label: string): Palette { const need = (key: string): string => { const v = t[key]; - if (!v) throw new Error(`${tomlPath}: missing "${key}"`); + if (!v) throw new Error(`${label}: missing "${key}"`); return v; }; @@ -84,3 +91,7 @@ export function loadPalette(tomlPath: string): Palette { brightMagenta: need('bright_magenta'), }; } + +export function loadPalette(tomlPath: string): Palette { + return paletteFromRecord(parseTomlText(readFileSync(tomlPath, 'utf8')), tomlPath); +} diff --git a/src/workspaces/theme/css/index.css b/src/workspaces/theme/css/index.css index 9d553714..b0b2a0e0 100644 --- a/src/workspaces/theme/css/index.css +++ b/src/workspaces/theme/css/index.css @@ -50,12 +50,15 @@ @import './themes/all-hallows-eve.css'; @import './themes/amberbyte.css'; @import './themes/amekoji.css'; +@import './themes/andromeda.css'; @import './themes/anonymous.css'; @import './themes/apocalypse.css'; @import './themes/arc-blueberry.css'; @import './themes/archriot.css'; @import './themes/archwave.css'; @import './themes/artzen.css'; +@import './themes/ash.css'; +@import './themes/astrodark.css'; @import './themes/atari.css'; @import './themes/atelier.css'; @import './themes/aura.css'; @@ -70,15 +73,23 @@ @import './themes/bauhaus.css'; @import './themes/beachvan.css'; @import './themes/beta.css'; +@import './themes/biscuit-de-mar-dark.css'; @import './themes/black-arch.css'; +@import './themes/black-gold.css'; +@import './themes/black-money.css'; +@import './themes/blackturq.css'; @import './themes/blueridge.css'; @import './themes/brutalism.css'; @import './themes/caroline-skyline.css'; @import './themes/catppuccin-mocha.css'; +@import './themes/cattpuccin-glass.css'; @import './themes/city-783.css'; @import './themes/copper-night.css'; +@import './themes/corporate.css'; @import './themes/cpunk.css'; @import './themes/crimson.css'; +@import './themes/crimson-gold.css'; +@import './themes/cyberpunk-2.css'; @import './themes/dark-xp.css'; @import './themes/dayfox.css'; @import './themes/dead-space.css'; @@ -86,21 +97,32 @@ @import './themes/delete.css'; @import './themes/delorean.css'; @import './themes/demon.css'; +@import './themes/desert-gleam.css'; +@import './themes/desert-twilight.css'; @import './themes/dotrb.css'; @import './themes/drac.css'; @import './themes/dracula.css'; @import './themes/dragon.css'; @import './themes/dreamwave.css'; +@import './themes/elysian.css'; @import './themes/ember-n-ash.css'; @import './themes/eva-unit-01.css'; @import './themes/event-horizon.css'; @import './themes/everblush.css'; +@import './themes/evergarden.css'; @import './themes/farline.css'; @import './themes/felix.css'; +@import './themes/fiery-ocean.css'; +@import './themes/fireside.css'; +@import './themes/firesky.css'; @import './themes/flat-dracula.css'; +@import './themes/flexoki-dark.css'; @import './themes/florida-man.css'; @import './themes/fluid-glass.css'; @import './themes/forest-green.css'; +@import './themes/frost.css'; +@import './themes/futurism.css'; +@import './themes/ghost-pastel.css'; @import './themes/glory-antic.css'; @import './themes/gold-rush.css'; @import './themes/gotham-city.css'; @@ -110,12 +132,18 @@ @import './themes/gruber-tsoding.css'; @import './themes/grudark.css'; @import './themes/harbor.css'; +@import './themes/harbor-dark.css'; @import './themes/hex.css'; @import './themes/himalaya.css'; @import './themes/hinterlands.css'; +@import './themes/hollow-knight.css'; @import './themes/infernium.css'; @import './themes/infernium-dark.css'; +@import './themes/inkypinky.css'; +@import './themes/kanso.css'; @import './themes/killer-klowns.css'; +@import './themes/kimiko.css'; +@import './themes/koyanagi.css'; @import './themes/kurayami.css'; @import './themes/lain.css'; @import './themes/lairetam.css'; @@ -135,17 +163,23 @@ @import './themes/monokai.css'; @import './themes/monokai-dark.css'; @import './themes/monolith.css'; +@import './themes/monolith-2.css'; +@import './themes/moodpeak.css'; @import './themes/nagai-poolside.css'; @import './themes/nagai-twilight.css'; @import './themes/nebulite.css'; @import './themes/neo-sploosh.css'; @import './themes/neon-street.css'; @import './themes/neovoid.css'; +@import './themes/nes.css'; @import './themes/nyc.css'; +@import './themes/one-dark-pro.css'; @import './themes/oxford.css'; @import './themes/oxocarbon-dark.css'; @import './themes/pandora.css'; +@import './themes/pina.css'; @import './themes/pink-blood.css'; +@import './themes/pmndrs.css'; @import './themes/pulsar.css'; @import './themes/purple-moon.css'; @import './themes/purplewave.css'; @@ -153,11 +187,19 @@ @import './themes/rdddcs.css'; @import './themes/red-monarch.css'; @import './themes/retropc.css'; +@import './themes/reverie.css'; @import './themes/robco.css'; @import './themes/robco-mojave.css'; +@import './themes/rose-pine-dark.css'; @import './themes/roseofdune.css'; @import './themes/royal.css'; @import './themes/rustleaf.css'; +@import './themes/saga.css'; +@import './themes/sakura.css'; +@import './themes/sapphire.css'; +@import './themes/serenity.css'; +@import './themes/shadesofjade.css'; +@import './themes/snow.css'; @import './themes/snow-black.css'; @import './themes/space-bound.css'; @import './themes/space-monkey.css'; @@ -165,6 +207,7 @@ @import './themes/spectra.css'; @import './themes/stellar.css'; @import './themes/stillmoon.css'; +@import './themes/sunkissed.css'; @import './themes/sunset.css'; @import './themes/synthetica.css'; @import './themes/synthwave-84.css'; @@ -188,6 +231,7 @@ @import './themes/wasteland.css'; @import './themes/waveform-dark.css'; @import './themes/white-gold.css'; +@import './themes/x-1632.css'; @import './themes/yuugure.css'; @import './chrome.css'; diff --git a/src/workspaces/theme/css/themes/andromeda.css b/src/workspaces/theme/css/themes/andromeda.css new file mode 100644 index 00000000..b8230ce1 --- /dev/null +++ b/src/workspaces/theme/css/themes/andromeda.css @@ -0,0 +1,97 @@ +/* + Andromeda — 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/signaldirective/andromeda (colors.toml (16-colour ANSI)), 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='andromeda'] { + --background: #131519; + --foreground: #e5e5e5; + --card: #23262e; + --card-foreground: #e5e5e5; + --popover: #23262e; + --popover-foreground: #e5e5e5; + --muted: #32353d; + --muted-foreground: #abacae; + --accent: #32353d; + --accent-foreground: #e5e5e5; + --primary: #00e8c6; + --primary-foreground: #131519; + --secondary: #32353d; + --secondary-foreground: #e5e5e5; + --cta: #00e8c6; + --cta-foreground: #131519; + --ctahover: #1febcd; + --success: #00e8c6; + --success-foreground: #131519; + --warning: #ffe66d; + --warning-foreground: #131519; + --destructive: #f92672; + --destructive-foreground: #131519; + --info: #7cb7ff; + --info-foreground: #131519; + --busy: #fc8670; + --busy-foreground: #131519; + --busy-ink: #fc8670; + --border: #494c52; + --input: #494c52; + --ring: #00e8c6; + --radius: 0.625rem; + --chart-primary: #00e8c6; + --chart-secondary: #c74ded; + --status-success: #00e8c6; + --status-warning: #ffe66d; + --status-in-progress: #7cb7ff; + --page-bg: #131519; + --page-bg-src: ''; + --panel-bg: rgb(35 38 46 / 0.72); + --panel-border: rgb(73 76 82 / 0.9); + --panel-border-bare: rgb(73 76 82 / 0.55); + --panel-raised-bg: rgb(35 38 46 / 0.95); + --panel-raised-border: rgb(73 76 82 / 1); + --panel-accent: #00e8c6; + --panel-header-bg: rgb(50 53 61 / 0.6); + --panel-header-fg: #e5e5e5; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #23262e; + --glass-bg: rgb(35 38 46 / 0.55); + --glass-border: rgb(73 76 82 / 0.7); + --dock-bg: rgb(35 38 46 / 0.7); + --dock-border: rgb(73 76 82 / 0.8); + --dock-tooltip-bg: #32353d; + --header-bg: rgb(35 38 46 / 0.8); + --header-border: rgb(73 76 82 / 0.9); + --header-fg: #e5e5e5; + --header-blur: 12px; + --pixel-grid-color: rgb(122 124 128 / 0.07); + --card-grid-color: rgb(122 124 128 / 0.05); + --panel-grid-color: rgb(122 124 128 / 0.06); + --scrollbar-thumb: rgb(102 102 102 / 0.6); + --scrollbar-thumb-hover: rgb(102 102 102 / 0.85); + --scrollbar-thin-thumb: rgb(102 102 102 / 0.45); + --scrollbar-thin-thumb-hover: rgb(102 102 102 / 0.7); + --brand: #00e8c6; + --brand-foreground: #131519; + --brand-primary: #00e8c6; + --brand-accent: #96e072; + --brand-warm: #fc8670; + --brand-deep: #131519; + --brand-muted: #666666; + --ink: #e5e5e5; + --surface-warm: #23262e; + --naturegreen: #00e8c6; + --naturegreen-foreground: #131519; + --duck-dark: #e5e5e5; + --duck-teal: #96e072; + --duck-yellow: #ffe66d; + --duck-orange: #fc8670; + --duck-forest: #00e8c6; + --duck-beige: #363940; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/ash.css b/src/workspaces/theme/css/themes/ash.css new file mode 100644 index 00000000..9c956c04 --- /dev/null +++ b/src/workspaces/theme/css/themes/ash.css @@ -0,0 +1,97 @@ +/* + Ash — 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/bjarneo/omarchy-ash-theme (colors.toml (16-colour ANSI)), 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='ash'] { + --background: #0a0a0a; + --foreground: #e0e0e0; + --card: #121212; + --card-foreground: #e0e0e0; + --popover: #121212; + --popover-foreground: #e0e0e0; + --muted: #232323; + --muted-foreground: #a2a2a2; + --accent: #232323; + --accent-foreground: #e0e0e0; + --primary: #9e9e9e; + --primary-foreground: #0a0a0a; + --secondary: #232323; + --secondary-foreground: #e0e0e0; + --cta: #9e9e9e; + --cta-foreground: #0a0a0a; + --ctahover: #aaaaaa; + --success: #767676; + --success-foreground: #040404; + --warning: #9e9e9e; + --warning-foreground: #0a0a0a; + --destructive: #8a8a8a; + --destructive-foreground: #0a0a0a; + --info: #626262; + --info-foreground: #e0e0e0; + --busy: #949494; + --busy-foreground: #0a0a0a; + --busy-ink: #949494; + --border: #3a3a3a; + --input: #3a3a3a; + --ring: #9e9e9e; + --radius: 0.625rem; + --chart-primary: #9e9e9e; + --chart-secondary: #8a8a8a; + --status-success: #767676; + --status-warning: #9e9e9e; + --status-in-progress: #626262; + --page-bg: #0a0a0a; + --page-bg-src: ''; + --panel-bg: rgb(18 18 18 / 0.72); + --panel-border: rgb(58 58 58 / 0.9); + --panel-border-bare: rgb(58 58 58 / 0.55); + --panel-raised-bg: rgb(18 18 18 / 0.95); + --panel-raised-border: rgb(58 58 58 / 1); + --panel-accent: #9e9e9e; + --panel-header-bg: rgb(35 35 35 / 0.6); + --panel-header-fg: #e0e0e0; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #121212; + --glass-bg: rgb(18 18 18 / 0.55); + --glass-border: rgb(58 58 58 / 0.7); + --dock-bg: rgb(18 18 18 / 0.7); + --dock-border: rgb(58 58 58 / 0.8); + --dock-tooltip-bg: #232323; + --header-bg: rgb(18 18 18 / 0.8); + --header-border: rgb(58 58 58 / 0.9); + --header-fg: #e0e0e0; + --header-blur: 12px; + --pixel-grid-color: rgb(111 111 111 / 0.07); + --card-grid-color: rgb(111 111 111 / 0.05); + --panel-grid-color: rgb(111 111 111 / 0.06); + --scrollbar-thumb: rgb(138 138 138 / 0.6); + --scrollbar-thumb-hover: rgb(138 138 138 / 0.85); + --scrollbar-thin-thumb: rgb(138 138 138 / 0.45); + --scrollbar-thin-thumb-hover: rgb(138 138 138 / 0.7); + --brand: #9e9e9e; + --brand-foreground: #0a0a0a; + --brand-primary: #9e9e9e; + --brand-accent: #767676; + --brand-warm: #949494; + --brand-deep: #0a0a0a; + --brand-muted: #8a8a8a; + --ink: #e0e0e0; + --surface-warm: #121212; + --naturegreen: #767676; + --naturegreen-foreground: #040404; + --duck-dark: #e0e0e0; + --duck-teal: #767676; + --duck-yellow: #9e9e9e; + --duck-orange: #949494; + --duck-forest: #767676; + --duck-beige: #272727; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/astrodark.css b/src/workspaces/theme/css/themes/astrodark.css new file mode 100644 index 00000000..00d726e3 --- /dev/null +++ b/src/workspaces/theme/css/themes/astrodark.css @@ -0,0 +1,97 @@ +/* + Astrodark — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Dark theme (dark) — the source repo's own colors.toml says so directly. + + Source: https://github.com/JamsMendez/omarchy-astrodark-theme (colors.toml (Omarchy schema)), read by scripts/port-community-themes.ts. Values + came straight from the repo's own colors.toml — the same schema and reader the official 22 themes + use, so nothing here is reconstructed. 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='astrodark'] { + --background: #0b0c0f; + --foreground: #9b9fa9; + --card: #1a1d23; + --card-foreground: #9b9fa9; + --popover: #1a1d23; + --popover-foreground: #9b9fa9; + --muted: #26343f; + --muted-foreground: #b8bcc6; + --accent: #26343f; + --accent-foreground: #9b9fa9; + --primary: #5eb7ff; + --primary-foreground: #0b0c0f; + --secondary: #26343f; + --secondary-foreground: #9b9fa9; + --cta: #5eb7ff; + --cta-foreground: #0b0c0f; + --ctahover: #71c0ff; + --success: #87c05f; + --success-foreground: #0b0c0f; + --warning: #dfab25; + --warning-foreground: #0b0c0f; + --destructive: #ff838b; + --destructive-foreground: #0b0c0f; + --info: #5eb7ff; + --info-foreground: #0b0c0f; + --busy: #e8925a; + --busy-foreground: #0b0c0f; + --busy-ink: #e8925a; + --border: #464a51; + --input: #464a51; + --ring: #5eb7ff; + --radius: 0.625rem; + --chart-primary: #5eb7ff; + --chart-secondary: #dd97f1; + --status-success: #87c05f; + --status-warning: #dfab25; + --status-in-progress: #5eb7ff; + --page-bg: #0b0c0f; + --page-bg-src: ''; + --panel-bg: rgb(26 29 35 / 0.72); + --panel-border: rgb(70 74 81 / 0.9); + --panel-border-bare: rgb(70 74 81 / 0.55); + --panel-raised-bg: rgb(26 29 35 / 0.95); + --panel-raised-border: rgb(70 74 81 / 1); + --panel-accent: #5eb7ff; + --panel-header-bg: rgb(38 52 63 / 0.6); + --panel-header-fg: #9b9fa9; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1a1d23; + --glass-bg: rgb(26 29 35 / 0.55); + --glass-border: rgb(70 74 81 / 0.7); + --dock-bg: rgb(26 29 35 / 0.7); + --dock-border: rgb(70 74 81 / 0.8); + --dock-tooltip-bg: #26343f; + --header-bg: rgb(26 29 35 / 0.8); + --header-border: rgb(70 74 81 / 0.9); + --header-fg: #9b9fa9; + --header-blur: 12px; + --pixel-grid-color: rgb(107 111 121 / 0.07); + --card-grid-color: rgb(107 111 121 / 0.05); + --panel-grid-color: rgb(107 111 121 / 0.06); + --scrollbar-thumb: rgb(52 54 58 / 0.6); + --scrollbar-thumb-hover: rgb(52 54 58 / 0.85); + --scrollbar-thin-thumb: rgb(52 54 58 / 0.45); + --scrollbar-thin-thumb-hover: rgb(52 54 58 / 0.7); + --brand: #5eb7ff; + --brand-foreground: #0b0c0f; + --brand-primary: #5eb7ff; + --brand-accent: #4ac2b8; + --brand-warm: #e8925a; + --brand-deep: #0b0c0f; + --brand-muted: #34363a; + --ink: #9b9fa9; + --surface-warm: #1a1d23; + --naturegreen: #87c05f; + --naturegreen-foreground: #0b0c0f; + --duck-dark: #9b9fa9; + --duck-teal: #4ac2b8; + --duck-yellow: #dfab25; + --duck-orange: #e8925a; + --duck-forest: #87c05f; + --duck-beige: #272a30; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/biscuit-de-mar-dark.css b/src/workspaces/theme/css/themes/biscuit-de-mar-dark.css new file mode 100644 index 00000000..760fad7d --- /dev/null +++ b/src/workspaces/theme/css/themes/biscuit-de-mar-dark.css @@ -0,0 +1,97 @@ +/* + Biscuit DE Mar Dark — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Dark theme (dark) — the source repo's own colors.toml says so directly. + + Source: https://github.com/OldJobobo/omarchy-biscuit-de-mar-dark-theme (colors.toml (Omarchy schema)), read by scripts/port-community-themes.ts. Values + came straight from the repo's own colors.toml — the same schema and reader the official 22 themes + use, so nothing here is reconstructed. 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='biscuit-de-mar-dark'] { + --background: #1a1515; + --foreground: #dcc9bc; + --card: #1a1515; + --card-foreground: #dcc9bc; + --popover: #1a1515; + --popover-foreground: #dcc9bc; + --muted: #2d2424; + --muted-foreground: #ffe9c7; + --accent: #2d2424; + --accent-foreground: #dcc9bc; + --primary: #ae3f82; + --primary-foreground: #ffe9c7; + --secondary: #2d2424; + --secondary-foreground: #dcc9bc; + --cta: #ae3f82; + --cta-foreground: #ffe9c7; + --ctahover: #b85691; + --success: #768f80; + --success-foreground: #1a1515; + --warning: #959a6b; + --warning-foreground: #1a1515; + --destructive: #f07342; + --destructive-foreground: #1a1515; + --info: #614f76; + --info-foreground: #ffe9c7; + --busy: #e39c45; + --busy-foreground: #1a1515; + --busy-ink: #e39c45; + --border: #5a5047; + --input: #5a5047; + --ring: #ae3f82; + --radius: 0.625rem; + --chart-primary: #ae3f82; + --chart-secondary: #7b3d79; + --status-success: #768f80; + --status-warning: #959a6b; + --status-in-progress: #614f76; + --page-bg: #1a1515; + --page-bg-src: ''; + --panel-bg: rgb(26 21 21 / 0.72); + --panel-border: rgb(90 80 71 / 0.9); + --panel-border-bare: rgb(90 80 71 / 0.55); + --panel-raised-bg: rgb(26 21 21 / 0.95); + --panel-raised-border: rgb(90 80 71 / 1); + --panel-accent: #ae3f82; + --panel-header-bg: rgb(45 36 36 / 0.6); + --panel-header-fg: #dcc9bc; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1a1515; + --glass-bg: rgb(26 21 21 / 0.55); + --glass-border: rgb(90 80 71 / 0.7); + --dock-bg: rgb(26 21 21 / 0.7); + --dock-border: rgb(90 80 71 / 0.8); + --dock-tooltip-bg: #2d2424; + --header-bg: rgb(26 21 21 / 0.8); + --header-border: rgb(90 80 71 / 0.9); + --header-fg: #dcc9bc; + --header-blur: 12px; + --pixel-grid-color: rgb(156 129 129 / 0.07); + --card-grid-color: rgb(156 129 129 / 0.05); + --panel-grid-color: rgb(156 129 129 / 0.06); + --scrollbar-thumb: rgb(114 90 90 / 0.6); + --scrollbar-thumb-hover: rgb(114 90 90 / 0.85); + --scrollbar-thin-thumb: rgb(114 90 90 / 0.45); + --scrollbar-thin-thumb-hover: rgb(114 90 90 / 0.7); + --brand: #ae3f82; + --brand-foreground: #ffe9c7; + --brand-primary: #ae3f82; + --brand-accent: #756d94; + --brand-warm: #e39c45; + --brand-deep: #1a1515; + --brand-muted: #725a5a; + --ink: #dcc9bc; + --surface-warm: #1a1515; + --naturegreen: #768f80; + --naturegreen-foreground: #1a1515; + --duck-dark: #dcc9bc; + --duck-teal: #756d94; + --duck-yellow: #959a6b; + --duck-orange: #e39c45; + --duck-forest: #768f80; + --duck-beige: #2d2726; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/black-gold.css b/src/workspaces/theme/css/themes/black-gold.css new file mode 100644 index 00000000..adf58ecc --- /dev/null +++ b/src/workspaces/theme/css/themes/black-gold.css @@ -0,0 +1,97 @@ +/* + Black Gold — 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/HANCORE-linux/omarchy-blackgold-theme (colors.toml (16-colour ANSI)), 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='black-gold'] { + --background: #070707; + --foreground: #ebdbb2; + --card: #0d0d0d; + --card-foreground: #ebdbb2; + --popover: #0d0d0d; + --popover-foreground: #ebdbb2; + --muted: #1e1e1e; + --muted-foreground: #a89d81; + --accent: #1e1e1e; + --accent-foreground: #ebdbb2; + --primary: #7a6a2c; + --primary-foreground: #f4ebd5; + --secondary: #1e1e1e; + --secondary-foreground: #ebdbb2; + --cta: #7a6a2c; + --cta-foreground: #f4ebd5; + --ctahover: #8a7c45; + --success: #a3850e; + --success-foreground: #070707; + --warning: #4d574e; + --warning-foreground: #ebdbb2; + --destructive: #d35f5f; + --destructive-foreground: #070707; + --info: #6e6a58; + --info-foreground: #f4ead3; + --busy: #905b57; + --busy-foreground: #f2e8cd; + --busy-ink: #9b6b68; + --border: #38352d; + --input: #38352d; + --ring: #7a6a2c; + --radius: 0.625rem; + --chart-primary: #7a6a2c; + --chart-secondary: #bfa75d; + --status-success: #a3850e; + --status-warning: #4d574e; + --status-in-progress: #6e6a58; + --page-bg: #070707; + --page-bg-src: ''; + --panel-bg: rgb(13 13 13 / 0.72); + --panel-border: rgb(56 53 45 / 0.9); + --panel-border-bare: rgb(56 53 45 / 0.55); + --panel-raised-bg: rgb(13 13 13 / 0.95); + --panel-raised-border: rgb(56 53 45 / 1); + --panel-accent: #7a6a2c; + --panel-header-bg: rgb(30 30 30 / 0.6); + --panel-header-fg: #ebdbb2; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0d0d0d; + --glass-bg: rgb(13 13 13 / 0.55); + --glass-border: rgb(56 53 45 / 0.7); + --dock-bg: rgb(13 13 13 / 0.7); + --dock-border: rgb(56 53 45 / 0.8); + --dock-tooltip-bg: #1e1e1e; + --header-bg: rgb(13 13 13 / 0.8); + --header-border: rgb(56 53 45 / 0.9); + --header-fg: #ebdbb2; + --header-blur: 12px; + --pixel-grid-color: rgb(113 106 87 / 0.07); + --card-grid-color: rgb(113 106 87 / 0.05); + --panel-grid-color: rgb(113 106 87 / 0.06); + --scrollbar-thumb: rgb(48 53 49 / 0.6); + --scrollbar-thumb-hover: rgb(48 53 49 / 0.85); + --scrollbar-thin-thumb: rgb(48 53 49 / 0.45); + --scrollbar-thin-thumb-hover: rgb(48 53 49 / 0.7); + --brand: #7a6a2c; + --brand-foreground: #f4ebd5; + --brand-primary: #7a6a2c; + --brand-accent: #7a6a2c; + --brand-warm: #905b57; + --brand-deep: #070707; + --brand-muted: #303531; + --ink: #ebdbb2; + --surface-warm: #0d0d0d; + --naturegreen: #a3850e; + --naturegreen-foreground: #070707; + --duck-dark: #ebdbb2; + --duck-teal: #7a6a2c; + --duck-yellow: #4d574e; + --duck-orange: #905b57; + --duck-forest: #a3850e; + --duck-beige: #23221e; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/black-money.css b/src/workspaces/theme/css/themes/black-money.css new file mode 100644 index 00000000..b2fbe0fb --- /dev/null +++ b/src/workspaces/theme/css/themes/black-money.css @@ -0,0 +1,97 @@ +/* + Black Money — 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/HANCORE-linux/omarchy-blackmoney-theme (colors.toml (16-colour ANSI)), 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='black-money'] { + --background: #070707; + --foreground: #d8d4b4; + --card: #0c0c0c; + --card-foreground: #d8d4b4; + --popover: #0c0c0c; + --popover-foreground: #d8d4b4; + --muted: #1d1d1d; + --muted-foreground: #9b9882; + --accent: #1d1d1d; + --accent-foreground: #d8d4b4; + --primary: #d8d4b4; + --primary-foreground: #070707; + --secondary: #1d1d1d; + --secondary-foreground: #d8d4b4; + --cta: #d8d4b4; + --cta-foreground: #070707; + --ctahover: #ddd9bd; + --success: #2a593f; + --success-foreground: #d8d4b4; + --warning: #525b54; + --warning-foreground: #d8d4b4; + --destructive: #dd5670; + --destructive-foreground: #070707; + --info: #d8d4b4; + --info-foreground: #070707; + --busy: #985962; + --busy-foreground: #ececec; + --busy-ink: #a26a72; + --border: #34332d; + --input: #34332d; + --ring: #d8d4b4; + --radius: 0.625rem; + --chart-primary: #d8d4b4; + --chart-secondary: #689e80; + --status-success: #2a593f; + --status-warning: #525b54; + --status-in-progress: #d8d4b4; + --page-bg: #070707; + --page-bg-src: ''; + --panel-bg: rgb(12 12 12 / 0.72); + --panel-border: rgb(52 51 45 / 0.9); + --panel-border-bare: rgb(52 51 45 / 0.55); + --panel-raised-bg: rgb(12 12 12 / 0.95); + --panel-raised-border: rgb(52 51 45 / 1); + --panel-accent: #d8d4b4; + --panel-header-bg: rgb(29 29 29 / 0.6); + --panel-header-fg: #d8d4b4; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0c0c0c; + --glass-bg: rgb(12 12 12 / 0.55); + --glass-border: rgb(52 51 45 / 0.7); + --dock-bg: rgb(12 12 12 / 0.7); + --dock-border: rgb(52 51 45 / 0.8); + --dock-tooltip-bg: #1d1d1d; + --header-bg: rgb(12 12 12 / 0.8); + --header-border: rgb(52 51 45 / 0.9); + --header-fg: #d8d4b4; + --header-blur: 12px; + --pixel-grid-color: rgb(104 102 88 / 0.07); + --card-grid-color: rgb(104 102 88 / 0.05); + --panel-grid-color: rgb(104 102 88 / 0.06); + --scrollbar-thumb: rgb(78 89 74 / 0.6); + --scrollbar-thumb-hover: rgb(78 89 74 / 0.85); + --scrollbar-thin-thumb: rgb(78 89 74 / 0.45); + --scrollbar-thin-thumb-hover: rgb(78 89 74 / 0.7); + --brand: #d8d4b4; + --brand-foreground: #070707; + --brand-primary: #d8d4b4; + --brand-accent: #88c6a3; + --brand-warm: #985962; + --brand-deep: #070707; + --brand-muted: #4e594a; + --ink: #d8d4b4; + --surface-warm: #0c0c0c; + --naturegreen: #2a593f; + --naturegreen-foreground: #d8d4b4; + --duck-dark: #d8d4b4; + --duck-teal: #88c6a3; + --duck-yellow: #525b54; + --duck-orange: #985962; + --duck-forest: #2a593f; + --duck-beige: #20201d; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/blackturq.css b/src/workspaces/theme/css/themes/blackturq.css new file mode 100644 index 00000000..98f1dfd2 --- /dev/null +++ b/src/workspaces/theme/css/themes/blackturq.css @@ -0,0 +1,97 @@ +/* + Blackturq — 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/HANCORE-linux/omarchy-blackturq-theme (colors.toml (16-colour ANSI)), 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='blackturq'] { + --background: #060606; + --foreground: #c8dcdc; + --card: #0a0a0a; + --card-foreground: #c8dcdc; + --popover: #0a0a0a; + --popover-foreground: #c8dcdc; + --muted: #1b1b1b; + --muted-foreground: #8f9d9d; + --accent: #1b1b1b; + --accent-foreground: #c8dcdc; + --primary: #adf0e9; + --primary-foreground: #060606; + --secondary: #1b1b1b; + --secondary-foreground: #c8dcdc; + --cta: #adf0e9; + --cta-foreground: #060606; + --ctahover: #b7f2ec; + --success: #8fecd5; + --success-foreground: #060606; + --warning: #a9d1d7; + --warning-foreground: #060606; + --destructive: #d35f5f; + --destructive-foreground: #060606; + --info: #adf0e9; + --info-foreground: #060606; + --busy: #be989b; + --busy-foreground: #060606; + --busy-ink: #be989b; + --border: #2f3333; + --input: #2f3333; + --ring: #adf0e9; + --radius: 0.625rem; + --chart-primary: #adf0e9; + --chart-secondary: #485362; + --status-success: #8fecd5; + --status-warning: #a9d1d7; + --status-in-progress: #adf0e9; + --page-bg: #060606; + --page-bg-src: ''; + --panel-bg: rgb(10 10 10 / 0.72); + --panel-border: rgb(47 51 51 / 0.9); + --panel-border-bare: rgb(47 51 51 / 0.55); + --panel-raised-bg: rgb(10 10 10 / 0.95); + --panel-raised-border: rgb(47 51 51 / 1); + --panel-accent: #adf0e9; + --panel-header-bg: rgb(27 27 27 / 0.6); + --panel-header-fg: #c8dcdc; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0a0a0a; + --glass-bg: rgb(10 10 10 / 0.55); + --glass-border: rgb(47 51 51 / 0.7); + --dock-bg: rgb(10 10 10 / 0.7); + --dock-border: rgb(47 51 51 / 0.8); + --dock-tooltip-bg: #1b1b1b; + --header-bg: rgb(10 10 10 / 0.8); + --header-border: rgb(47 51 51 / 0.9); + --header-fg: #c8dcdc; + --header-blur: 12px; + --pixel-grid-color: rgb(95 104 104 / 0.07); + --card-grid-color: rgb(95 104 104 / 0.05); + --panel-grid-color: rgb(95 104 104 / 0.06); + --scrollbar-thumb: rgb(50 47 59 / 0.6); + --scrollbar-thumb-hover: rgb(50 47 59 / 0.85); + --scrollbar-thin-thumb: rgb(50 47 59 / 0.45); + --scrollbar-thin-thumb-hover: rgb(50 47 59 / 0.7); + --brand: #adf0e9; + --brand-foreground: #060606; + --brand-primary: #adf0e9; + --brand-accent: #5a676b; + --brand-warm: #be989b; + --brand-deep: #060606; + --brand-muted: #322f3b; + --ink: #c8dcdc; + --surface-warm: #0a0a0a; + --naturegreen: #8fecd5; + --naturegreen-foreground: #060606; + --duck-dark: #c8dcdc; + --duck-teal: #5a676b; + --duck-yellow: #a9d1d7; + --duck-orange: #be989b; + --duck-forest: #8fecd5; + --duck-beige: #1d1f1f; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/cattpuccin-glass.css b/src/workspaces/theme/css/themes/cattpuccin-glass.css new file mode 100644 index 00000000..e9dde026 --- /dev/null +++ b/src/workspaces/theme/css/themes/cattpuccin-glass.css @@ -0,0 +1,97 @@ +/* + Cattpuccin Glass — 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/Luquatic/omarchy-catppuccin-glass (colors.toml (16-colour ANSI)), 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='cattpuccin-glass'] { + --background: #0e0f11; + --foreground: #cdd6f4; + --card: #1a1b1e; + --card-foreground: #cdd6f4; + --popover: #1a1b1e; + --popover-foreground: #cdd6f4; + --muted: #2a2b2e; + --muted-foreground: #979eb4; + --accent: #2a2b2e; + --accent-foreground: #cdd6f4; + --primary: #94e2d5; + --primary-foreground: #0e0f11; + --secondary: #2a2b2e; + --secondary-foreground: #cdd6f4; + --cta: #94e2d5; + --cta-foreground: #0e0f11; + --ctahover: #a1e5da; + --success: #a6e3a1; + --success-foreground: #0e0f11; + --warning: #f9e2af; + --warning-foreground: #0e0f11; + --destructive: #f38ba8; + --destructive-foreground: #0e0f11; + --info: #89b4fa; + --info-foreground: #0e0f11; + --busy: #f6b7ac; + --busy-foreground: #0e0f11; + --busy-ink: #f6b7ac; + --border: #3d4048; + --input: #3d4048; + --ring: #94e2d5; + --radius: 0.625rem; + --chart-primary: #94e2d5; + --chart-secondary: #f5c2e7; + --status-success: #a6e3a1; + --status-warning: #f9e2af; + --status-in-progress: #89b4fa; + --page-bg: #0e0f11; + --page-bg-src: ''; + --panel-bg: rgb(26 27 30 / 0.72); + --panel-border: rgb(61 64 72 / 0.9); + --panel-border-bare: rgb(61 64 72 / 0.55); + --panel-raised-bg: rgb(26 27 30 / 0.95); + --panel-raised-border: rgb(61 64 72 / 1); + --panel-accent: #94e2d5; + --panel-header-bg: rgb(42 43 46 / 0.6); + --panel-header-fg: #cdd6f4; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1a1b1e; + --glass-bg: rgb(26 27 30 / 0.55); + --glass-border: rgb(61 64 72 / 0.7); + --dock-bg: rgb(26 27 30 / 0.7); + --dock-border: rgb(61 64 72 / 0.8); + --dock-tooltip-bg: #2a2b2e; + --header-bg: rgb(26 27 30 / 0.8); + --header-border: rgb(61 64 72 / 0.9); + --header-fg: #cdd6f4; + --header-blur: 12px; + --pixel-grid-color: rgb(107 111 126 / 0.07); + --card-grid-color: rgb(107 111 126 / 0.05); + --panel-grid-color: rgb(107 111 126 / 0.06); + --scrollbar-thumb: rgb(88 91 112 / 0.6); + --scrollbar-thumb-hover: rgb(88 91 112 / 0.85); + --scrollbar-thin-thumb: rgb(88 91 112 / 0.45); + --scrollbar-thin-thumb-hover: rgb(88 91 112 / 0.7); + --brand: #94e2d5; + --brand-foreground: #0e0f11; + --brand-primary: #94e2d5; + --brand-accent: #94e2d5; + --brand-warm: #f6b7ac; + --brand-deep: #0e0f11; + --brand-muted: #585b70; + --ink: #cdd6f4; + --surface-warm: #1a1b1e; + --naturegreen: #a6e3a1; + --naturegreen-foreground: #0e0f11; + --duck-dark: #cdd6f4; + --duck-teal: #94e2d5; + --duck-yellow: #f9e2af; + --duck-orange: #f6b7ac; + --duck-forest: #a6e3a1; + --duck-beige: #2c2e33; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/corporate.css b/src/workspaces/theme/css/themes/corporate.css new file mode 100644 index 00000000..96734992 --- /dev/null +++ b/src/workspaces/theme/css/themes/corporate.css @@ -0,0 +1,97 @@ +/* + Corporate — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Light theme (light), by luminance of its own background — the source repo carries no mode flag of its own to read. + + Source: https://github.com/defer/omarchy-corporate-theme (colors.toml (16-colour ANSI)), 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='corporate'] { + --background: #eeeeee; + --foreground: #444444; + --card: #e6e6e6; + --card-foreground: #444444; + --popover: #e6e6e6; + --popover-foreground: #444444; + --muted: #e0e0e0; + --muted-foreground: #626262; + --accent: #e0e0e0; + --accent-foreground: #444444; + --primary: #005f87; + --primary-foreground: #d6d6d6; + --secondary: #e0e0e0; + --secondary-foreground: #444444; + --cta: #005f87; + --cta-foreground: #d6d6d6; + --ctahover: #005477; + --success: #008700; + --success-foreground: #fafafa; + --warning: #5f8700; + --warning-foreground: #0b0b0b; + --destructive: #af0000; + --destructive-foreground: #d6d6d6; + --info: #0087af; + --info-foreground: #101010; + --busy: #874400; + --busy-foreground: #d6d6d6; + --busy-ink: #874400; + --border: #d3d3d3; + --input: #cecece; + --ring: #005f87; + --radius: 0.625rem; + --chart-primary: #005f87; + --chart-secondary: #878787; + --status-success: #008700; + --status-warning: #5f8700; + --status-in-progress: #0087af; + --page-bg: #eeeeee; + --page-bg-src: ''; + --panel-bg: rgb(230 230 230 / 0.72); + --panel-border: rgb(211 211 211 / 0.9); + --panel-border-bare: rgb(211 211 211 / 0.55); + --panel-raised-bg: rgb(230 230 230 / 0.95); + --panel-raised-border: rgb(211 211 211 / 1); + --panel-accent: #005f87; + --panel-header-bg: rgb(224 224 224 / 0.6); + --panel-header-fg: #444444; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #e6e6e6; + --glass-bg: rgb(230 230 230 / 0.55); + --glass-border: rgb(211 211 211 / 0.7); + --dock-bg: rgb(230 230 230 / 0.7); + --dock-border: rgb(211 211 211 / 0.8); + --dock-tooltip-bg: #e0e0e0; + --header-bg: rgb(230 230 230 / 0.8); + --header-border: rgb(211 211 211 / 0.9); + --header-fg: #444444; + --header-blur: 12px; + --pixel-grid-color: rgb(130 130 130 / 0.07); + --card-grid-color: rgb(130 130 130 / 0.05); + --panel-grid-color: rgb(130 130 130 / 0.06); + --scrollbar-thumb: rgb(188 188 188 / 0.6); + --scrollbar-thumb-hover: rgb(188 188 188 / 0.85); + --scrollbar-thin-thumb: rgb(188 188 188 / 0.45); + --scrollbar-thin-thumb-hover: rgb(188 188 188 / 0.7); + --brand: #005f87; + --brand-foreground: #d6d6d6; + --brand-primary: #005f87; + --brand-accent: #005f87; + --brand-warm: #874400; + --brand-deep: #e0e0e0; + --brand-muted: #bcbcbc; + --ink: #444444; + --surface-warm: #e6e6e6; + --naturegreen: #008700; + --naturegreen-foreground: #fafafa; + --duck-dark: #444444; + --duck-teal: #005f87; + --duck-yellow: #5f8700; + --duck-orange: #874400; + --duck-forest: #008700; + --duck-beige: #d6d6d6; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/crimson-gold.css b/src/workspaces/theme/css/themes/crimson-gold.css new file mode 100644 index 00000000..f27e327e --- /dev/null +++ b/src/workspaces/theme/css/themes/crimson-gold.css @@ -0,0 +1,97 @@ +/* + Crimson Gold — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Dark theme (dark) — the source repo's own colors.toml says so directly. + + Source: https://github.com/knappkevin/omarchy-crimson-gold-theme (colors.toml (Omarchy schema)), read by scripts/port-community-themes.ts. Values + came straight from the repo's own colors.toml — the same schema and reader the official 22 themes + use, so nothing here is reconstructed. 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='crimson-gold'] { + --background: #080505; + --foreground: #dbb42c; + --card: #1a0808; + --card-foreground: #dbb42c; + --popover: #1a0808; + --popover-foreground: #dbb42c; + --muted: #411010; + --muted-foreground: #bebebe; + --accent: #411010; + --accent-foreground: #dbb42c; + --primary: #9f831c; + --primary-foreground: #080505; + --secondary: #411010; + --secondary-foreground: #dbb42c; + --cta: #9f831c; + --cta-foreground: #080505; + --ctahover: #ab9237; + --success: #ffc107; + --success-foreground: #080505; + --warning: #b91c1c; + --warning-foreground: #eaeaea; + --destructive: #ee3333; + --destructive-foreground: #080505; + --info: #e68e0d; + --info-foreground: #080505; + --busy: #eac027; + --busy-foreground: #080505; + --busy-ink: #eac027; + --border: #483b3b; + --input: #483b3b; + --ring: #9f831c; + --radius: 0.625rem; + --chart-primary: #9f831c; + --chart-secondary: #d35f5f; + --status-success: #ffc107; + --status-warning: #b91c1c; + --status-in-progress: #e68e0d; + --page-bg: #080505; + --page-bg-src: ''; + --panel-bg: rgb(26 8 8 / 0.72); + --panel-border: rgb(72 59 59 / 0.9); + --panel-border-bare: rgb(72 59 59 / 0.55); + --panel-raised-bg: rgb(26 8 8 / 0.95); + --panel-raised-border: rgb(72 59 59 / 1); + --panel-accent: #9f831c; + --panel-header-bg: rgb(65 16 16 / 0.6); + --panel-header-fg: #dbb42c; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1a0808; + --glass-bg: rgb(26 8 8 / 0.55); + --glass-border: rgb(72 59 59 / 0.7); + --dock-bg: rgb(26 8 8 / 0.7); + --dock-border: rgb(72 59 59 / 0.8); + --dock-tooltip-bg: #411010; + --header-bg: rgb(26 8 8 / 0.8); + --header-border: rgb(72 59 59 / 0.9); + --header-fg: #dbb42c; + --header-blur: 12px; + --pixel-grid-color: rgb(96 96 96 / 0.07); + --card-grid-color: rgb(96 96 96 / 0.05); + --panel-grid-color: rgb(96 96 96 / 0.06); + --scrollbar-thumb: rgb(170 170 170 / 0.6); + --scrollbar-thumb-hover: rgb(170 170 170 / 0.85); + --scrollbar-thin-thumb: rgb(170 170 170 / 0.45); + --scrollbar-thin-thumb-hover: rgb(170 170 170 / 0.7); + --brand: #9f831c; + --brand-foreground: #080505; + --brand-primary: #9f831c; + --brand-accent: #ee0000; + --brand-warm: #eac027; + --brand-deep: #080505; + --brand-muted: #aaaaaa; + --ink: #dbb42c; + --surface-warm: #1a0808; + --naturegreen: #ffc107; + --naturegreen-foreground: #080505; + --duck-dark: #dbb42c; + --duck-teal: #ee0000; + --duck-yellow: #b91c1c; + --duck-orange: #eac027; + --duck-forest: #ffc107; + --duck-beige: #2d190c; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/cyberpunk-2.css b/src/workspaces/theme/css/themes/cyberpunk-2.css new file mode 100644 index 00000000..f0a41d80 --- /dev/null +++ b/src/workspaces/theme/css/themes/cyberpunk-2.css @@ -0,0 +1,97 @@ +/* + Cyberpunk 2 — 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/SeanAnd/omarchy-cyberpunk-theme (colors.toml (16-colour ANSI)), 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='cyberpunk-2'] { + --background: #120000; + --foreground: #ff4040; + --card: #200000; + --card-foreground: #ff4040; + --popover: #200000; + --popover-foreground: #ff4040; + --muted: #301212; + --muted-foreground: #cd6262; + --accent: #301212; + --accent-foreground: #ff4040; + --primary: #b5e4f4; + --primary-foreground: #120000; + --secondary: #301212; + --secondary-foreground: #ff4040; + --cta: #b5e4f4; + --cta-foreground: #120000; + --ctahover: #bee7f5; + --success: #27a75c; + --success-foreground: #120000; + --warning: #ff3c3c; + --warning-foreground: #120000; + --destructive: #ff1100; + --destructive-foreground: #120000; + --info: #26bdfd; + --info-foreground: #120000; + --busy: #ff271e; + --busy-foreground: #120000; + --busy-ink: #ff271e; + --border: #4c0d0d; + --input: #501313; + --ring: #b5e4f4; + --radius: 0.625rem; + --chart-primary: #b5e4f4; + --chart-secondary: #ffcf3d; + --status-success: #27a75c; + --status-warning: #ff3c3c; + --status-in-progress: #26bdfd; + --page-bg: #120000; + --page-bg-src: ''; + --panel-bg: rgb(32 0 0 / 0.72); + --panel-border: rgb(76 13 13 / 0.9); + --panel-border-bare: rgb(76 13 13 / 0.55); + --panel-raised-bg: rgb(32 0 0 / 0.95); + --panel-raised-border: rgb(76 13 13 / 1); + --panel-accent: #b5e4f4; + --panel-header-bg: rgb(48 18 18 / 0.6); + --panel-header-fg: #ff4040; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #200000; + --glass-bg: rgb(32 0 0 / 0.55); + --glass-border: rgb(76 13 13 / 0.7); + --dock-bg: rgb(32 0 0 / 0.7); + --dock-border: rgb(76 13 13 / 0.8); + --dock-tooltip-bg: #301212; + --header-bg: rgb(32 0 0 / 0.8); + --header-border: rgb(76 13 13 / 0.9); + --header-fg: #ff4040; + --header-blur: 12px; + --pixel-grid-color: rgb(154 69 69 / 0.07); + --card-grid-color: rgb(154 69 69 / 0.05); + --panel-grid-color: rgb(154 69 69 / 0.06); + --scrollbar-thumb: rgb(92 88 85 / 0.6); + --scrollbar-thumb-hover: rgb(92 88 85 / 0.85); + --scrollbar-thin-thumb: rgb(92 88 85 / 0.45); + --scrollbar-thin-thumb-hover: rgb(92 88 85 / 0.7); + --brand: #b5e4f4; + --brand-foreground: #120000; + --brand-primary: #b5e4f4; + --brand-accent: #b5e4f4; + --brand-warm: #ff271e; + --brand-deep: #120000; + --brand-muted: #5c5855; + --ink: #ff4040; + --surface-warm: #200000; + --naturegreen: #27a75c; + --naturegreen-foreground: #120000; + --duck-dark: #ff4040; + --duck-teal: #b5e4f4; + --duck-yellow: #ff3c3c; + --duck-orange: #ff271e; + --duck-forest: #27a75c; + --duck-beige: #360606; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/desert-gleam.css b/src/workspaces/theme/css/themes/desert-gleam.css new file mode 100644 index 00000000..02251beb --- /dev/null +++ b/src/workspaces/theme/css/themes/desert-gleam.css @@ -0,0 +1,97 @@ +/* + Desert Gleam — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Light theme (light), by luminance of its own background — the source repo carries no mode flag of its own to read. + + Source: https://github.com/avis3nna/desert-gleam (colors.toml (16-colour ANSI)), 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='desert-gleam'] { + --background: #faf7f3; + --foreground: #3a3644; + --card: #f1eeea; + --card-foreground: #3a3644; + --popover: #f1eeea; + --popover-foreground: #3a3644; + --muted: #ebe8e4; + --muted-foreground: #68656d; + --accent: #ebe8e4; + --accent-foreground: #3a3644; + --primary: #7a6d9e; + --primary-foreground: #fbfbfb; + --secondary: #ebe8e4; + --secondary-foreground: #3a3644; + --cta: #7a6d9e; + --cta-foreground: #fbfbfb; + --ctahover: #6b608b; + --success: #7a9977; + --success-foreground: #2c2933; + --warning: #c68d53; + --warning-foreground: #332f3c; + --destructive: #b36667; + --destructive-foreground: #111110; + --info: #7a6d9e; + --info-foreground: #fbfbfb; + --busy: #bd7a5d; + --busy-foreground: #24222b; + --busy-ink: #97624a; + --border: #dbd8d6; + --input: #d6d3d1; + --ring: #7a6d9e; + --radius: 0.625rem; + --chart-primary: #7a6d9e; + --chart-secondary: #d4886a; + --status-success: #7a9977; + --status-warning: #c68d53; + --status-in-progress: #7a6d9e; + --page-bg: #faf7f3; + --page-bg-src: ''; + --panel-bg: rgb(241 238 234 / 0.72); + --panel-border: rgb(219 216 214 / 0.9); + --panel-border-bare: rgb(219 216 214 / 0.55); + --panel-raised-bg: rgb(241 238 234 / 0.95); + --panel-raised-border: rgb(219 216 214 / 1); + --panel-accent: #7a6d9e; + --panel-header-bg: rgb(235 232 228 / 0.6); + --panel-header-fg: #3a3644; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #f1eeea; + --glass-bg: rgb(241 238 234 / 0.55); + --glass-border: rgb(219 216 214 / 0.7); + --dock-bg: rgb(241 238 234 / 0.7); + --dock-border: rgb(219 216 214 / 0.8); + --dock-tooltip-bg: #ebe8e4; + --header-bg: rgb(241 238 234 / 0.8); + --header-border: rgb(219 216 214 / 0.9); + --header-fg: #3a3644; + --header-blur: 12px; + --pixel-grid-color: rgb(139 136 139 / 0.07); + --card-grid-color: rgb(139 136 139 / 0.05); + --panel-grid-color: rgb(139 136 139 / 0.06); + --scrollbar-thumb: rgb(216 203 192 / 0.6); + --scrollbar-thumb-hover: rgb(216 203 192 / 0.85); + --scrollbar-thin-thumb: rgb(216 203 192 / 0.45); + --scrollbar-thin-thumb-hover: rgb(216 203 192 / 0.7); + --brand: #7a6d9e; + --brand-foreground: #fbfbfb; + --brand-primary: #7a6d9e; + --brand-accent: #5f8d7c; + --brand-warm: #bd7a5d; + --brand-deep: #ebe8e4; + --brand-muted: #d8cbc0; + --ink: #3a3644; + --surface-warm: #f1eeea; + --naturegreen: #7a9977; + --naturegreen-foreground: #2c2933; + --duck-dark: #3a3644; + --duck-teal: #5f8d7c; + --duck-yellow: #c68d53; + --duck-orange: #bd7a5d; + --duck-forest: #7a9977; + --duck-beige: #dfdcd9; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/desert-twilight.css b/src/workspaces/theme/css/themes/desert-twilight.css new file mode 100644 index 00000000..0416cac7 --- /dev/null +++ b/src/workspaces/theme/css/themes/desert-twilight.css @@ -0,0 +1,97 @@ +/* + Desert Twilight — 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/avis3nna/desert-twilight (colors.toml (16-colour ANSI)), 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='desert-twilight'] { + --background: #0e0e13; + --foreground: #f0f0f2; + --card: #1a1922; + --card-foreground: #f0f0f2; + --popover: #1a1922; + --popover-foreground: #f0f0f2; + --muted: #2a2931; + --muted-foreground: #b0b0b4; + --accent: #2a2931; + --accent-foreground: #f0f0f2; + --primary: #94d4c4; + --primary-foreground: #0e0e13; + --secondary: #2a2931; + --secondary-foreground: #f0f0f2; + --cta: #94d4c4; + --cta-foreground: #0e0e13; + --ctahover: #a1d9cb; + --success: #5fb3ac; + --success-foreground: #0e0e13; + --warning: #d4a255; + --warning-foreground: #0e0e13; + --destructive: #d16b6b; + --destructive-foreground: #0e0e13; + --info: #a89dd1; + --info-foreground: #0e0e13; + --busy: #d38760; + --busy-foreground: #0e0e13; + --busy-ink: #d38760; + --border: #44434b; + --input: #44434b; + --ring: #94d4c4; + --radius: 0.625rem; + --chart-primary: #94d4c4; + --chart-secondary: #e8845c; + --status-success: #5fb3ac; + --status-warning: #d4a255; + --status-in-progress: #a89dd1; + --page-bg: #0e0e13; + --page-bg-src: ''; + --panel-bg: rgb(26 25 34 / 0.72); + --panel-border: rgb(68 67 75 / 0.9); + --panel-border-bare: rgb(68 67 75 / 0.55); + --panel-raised-bg: rgb(26 25 34 / 0.95); + --panel-raised-border: rgb(68 67 75 / 1); + --panel-accent: #94d4c4; + --panel-header-bg: rgb(42 41 49 / 0.6); + --panel-header-fg: #f0f0f2; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1a1922; + --glass-bg: rgb(26 25 34 / 0.55); + --glass-border: rgb(68 67 75 / 0.7); + --dock-bg: rgb(26 25 34 / 0.7); + --dock-border: rgb(68 67 75 / 0.8); + --dock-tooltip-bg: #2a2931; + --header-bg: rgb(26 25 34 / 0.8); + --header-border: rgb(68 67 75 / 0.9); + --header-fg: #f0f0f2; + --header-blur: 12px; + --pixel-grid-color: rgb(122 122 128 / 0.07); + --card-grid-color: rgb(122 122 128 / 0.05); + --panel-grid-color: rgb(122 122 128 / 0.06); + --scrollbar-thumb: rgb(58 57 77 / 0.6); + --scrollbar-thumb-hover: rgb(58 57 77 / 0.85); + --scrollbar-thin-thumb: rgb(58 57 77 / 0.45); + --scrollbar-thin-thumb-hover: rgb(58 57 77 / 0.7); + --brand: #94d4c4; + --brand-foreground: #0e0e13; + --brand-primary: #94d4c4; + --brand-accent: #7dbba3; + --brand-warm: #d38760; + --brand-deep: #0e0e13; + --brand-muted: #3a394d; + --ink: #f0f0f2; + --surface-warm: #1a1922; + --naturegreen: #5fb3ac; + --naturegreen-foreground: #0e0e13; + --duck-dark: #f0f0f2; + --duck-teal: #7dbba3; + --duck-yellow: #d4a255; + --duck-orange: #d38760; + --duck-forest: #5fb3ac; + --duck-beige: #2f2f37; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/elysian.css b/src/workspaces/theme/css/themes/elysian.css new file mode 100644 index 00000000..fd70d7d3 --- /dev/null +++ b/src/workspaces/theme/css/themes/elysian.css @@ -0,0 +1,97 @@ +/* + Elysian — 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/bjarneo/omarchy-elysian-theme (colors.toml (16-colour ANSI)), 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='elysian'] { + --background: #010201; + --foreground: #fdfffd; + --card: #010401; + --card-foreground: #fdfffd; + --popover: #010401; + --popover-foreground: #fdfffd; + --muted: #131613; + --muted-foreground: #b1b4b1; + --accent: #131613; + --accent-foreground: #fdfffd; + --primary: #e3f5f6; + --primary-foreground: #010201; + --secondary: #131613; + --secondary-foreground: #fdfffd; + --cta: #e3f5f6; + --cta-foreground: #010201; + --ctahover: #e6f6f7; + --success: #70cf6c; + --success-foreground: #010201; + --warning: #dfec63; + --warning-foreground: #010201; + --destructive: #bf5a7c; + --destructive-foreground: #010201; + --info: #62e2a4; + --info-foreground: #010201; + --busy: #cfa370; + --busy-foreground: #010201; + --busy-ink: #cfa370; + --border: #323532; + --input: #323532; + --ring: #e3f5f6; + --radius: 0.625rem; + --chart-primary: #e3f5f6; + --chart-secondary: #e0eb7a; + --status-success: #70cf6c; + --status-warning: #dfec63; + --status-in-progress: #62e2a4; + --page-bg: #010201; + --page-bg-src: ''; + --panel-bg: rgb(1 4 1 / 0.72); + --panel-border: rgb(50 53 50 / 0.9); + --panel-border-bare: rgb(50 53 50 / 0.55); + --panel-raised-bg: rgb(1 4 1 / 0.95); + --panel-raised-border: rgb(50 53 50 / 1); + --panel-accent: #e3f5f6; + --panel-header-bg: rgb(19 22 19 / 0.6); + --panel-header-fg: #fdfffd; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #010401; + --glass-bg: rgb(1 4 1 / 0.55); + --glass-border: rgb(50 53 50 / 0.7); + --dock-bg: rgb(1 4 1 / 0.7); + --dock-border: rgb(50 53 50 / 0.8); + --dock-tooltip-bg: #131613; + --header-bg: rgb(1 4 1 / 0.8); + --header-border: rgb(50 53 50 / 0.9); + --header-fg: #fdfffd; + --header-blur: 12px; + --pixel-grid-color: rgb(114 117 114 / 0.07); + --card-grid-color: rgb(114 117 114 / 0.05); + --panel-grid-color: rgb(114 117 114 / 0.06); + --scrollbar-thumb: rgb(81 138 81 / 0.6); + --scrollbar-thumb-hover: rgb(81 138 81 / 0.85); + --scrollbar-thin-thumb: rgb(81 138 81 / 0.45); + --scrollbar-thin-thumb-hover: rgb(81 138 81 / 0.7); + --brand: #e3f5f6; + --brand-foreground: #010201; + --brand-primary: #e3f5f6; + --brand-accent: #9ed8dd; + --brand-warm: #cfa370; + --brand-deep: #010201; + --brand-muted: #518a51; + --ink: #fdfffd; + --surface-warm: #010401; + --naturegreen: #70cf6c; + --naturegreen-foreground: #010201; + --duck-dark: #fdfffd; + --duck-teal: #9ed8dd; + --duck-yellow: #dfec63; + --duck-orange: #cfa370; + --duck-forest: #70cf6c; + --duck-beige: #1a1d1a; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/ethereal.css b/src/workspaces/theme/css/themes/ethereal.css index 960b960c..9a38d9aa 100644 --- a/src/workspaces/theme/css/themes/ethereal.css +++ b/src/workspaces/theme/css/themes/ethereal.css @@ -9,9 +9,9 @@ [data-theme='ethereal'] { --background: #030610; --foreground: #ffcead; - --card: #060B1E; + --card: #060b1e; --card-foreground: #ffcead; - --popover: #060B1E; + --popover: #060b1e; --popover-foreground: #ffcead; --muted: #131a3a; --muted-foreground: #c9b8a6; @@ -26,9 +26,9 @@ --ctahover: #8d91de; --success: #92a593; --success-foreground: #030610; - --warning: #E9BB4F; + --warning: #e9bb4f; --warning-foreground: #030610; - --destructive: #ED5B5A; + --destructive: #ed5b5a; --destructive-foreground: #030610; --info: #7d82d9; --info-foreground: #030610; @@ -42,7 +42,7 @@ --chart-primary: #7d82d9; --chart-secondary: #c89dc1; --status-success: #92a593; - --status-warning: #E9BB4F; + --status-warning: #e9bb4f; --status-in-progress: #7d82d9; --page-bg: #030610; --page-bg-src: ''; @@ -56,7 +56,7 @@ --panel-header-fg: #ffcead; --panel-radius: 0.75rem; --panel-blur: 12px; - --card-bg: #060B1E; + --card-bg: #060b1e; --glass-bg: rgb(6 11 30 / 0.55); --glass-border: rgb(61 59 68 / 0.7); --dock-bg: rgb(6 11 30 / 0.7); @@ -81,12 +81,12 @@ --brand-deep: #030610; --brand-muted: #6d7db6; --ink: #ffcead; - --surface-warm: #060B1E; + --surface-warm: #060b1e; --naturegreen: #92a593; --naturegreen-foreground: #030610; --duck-dark: #ffcead; --duck-teal: #a3bfd1; - --duck-yellow: #E9BB4F; + --duck-yellow: #e9bb4f; --duck-orange: #eb8b54; --duck-forest: #92a593; --duck-beige: #1f1f2c; diff --git a/src/workspaces/theme/css/themes/evergarden.css b/src/workspaces/theme/css/themes/evergarden.css new file mode 100644 index 00000000..20a3a932 --- /dev/null +++ b/src/workspaces/theme/css/themes/evergarden.css @@ -0,0 +1,97 @@ +/* + Evergarden — 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/celsobenedetti/omarchy-evergarden (colors.toml (16-colour ANSI)), 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='evergarden'] { + --background: #131719; + --foreground: #adc9bc; + --card: #232a2e; + --card-foreground: #adc9bc; + --popover: #232a2e; + --popover-foreground: #adc9bc; + --muted: #32393d; + --muted-foreground: #93a69f; + --accent: #32393d; + --accent-foreground: #adc9bc; + --primary: #b3e6db; + --primary-foreground: #131719; + --secondary: #32393d; + --secondary-foreground: #adc9bc; + --cta: #b3e6db; + --cta-foreground: #131719; + --ctahover: #bce9df; + --success: #cbe3b3; + --success-foreground: #131719; + --warning: #f5d098; + --warning-foreground: #131719; + --destructive: #f57f82; + --destructive-foreground: #131719; + --info: #839e9a; + --info-foreground: #131719; + --busy: #f5a88d; + --busy-foreground: #131719; + --busy-ink: #f5a88d; + --border: #3e494a; + --input: #3e494a; + --ring: #b3e6db; + --radius: 0.625rem; + --chart-primary: #b3e6db; + --chart-secondary: #b3e6db; + --status-success: #cbe3b3; + --status-warning: #f5d098; + --status-in-progress: #839e9a; + --page-bg: #131719; + --page-bg-src: ''; + --panel-bg: rgb(35 42 46 / 0.72); + --panel-border: rgb(62 73 74 / 0.9); + --panel-border-bare: rgb(62 73 74 / 0.55); + --panel-raised-bg: rgb(35 42 46 / 0.95); + --panel-raised-border: rgb(62 73 74 / 1); + --panel-accent: #b3e6db; + --panel-header-bg: rgb(50 57 61 / 0.6); + --panel-header-fg: #adc9bc; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #232a2e; + --glass-bg: rgb(35 42 46 / 0.55); + --glass-border: rgb(62 73 74 / 0.7); + --dock-bg: rgb(35 42 46 / 0.7); + --dock-border: rgb(62 73 74 / 0.8); + --dock-tooltip-bg: #32393d; + --header-bg: rgb(35 42 46 / 0.8); + --header-border: rgb(62 73 74 / 0.9); + --header-fg: #adc9bc; + --header-blur: 12px; + --pixel-grid-color: rgb(101 118 114 / 0.07); + --card-grid-color: rgb(101 118 114 / 0.05); + --panel-grid-color: rgb(101 118 114 / 0.06); + --scrollbar-thumb: rgb(173 201 188 / 0.6); + --scrollbar-thumb-hover: rgb(173 201 188 / 0.85); + --scrollbar-thin-thumb: rgb(173 201 188 / 0.45); + --scrollbar-thin-thumb-hover: rgb(173 201 188 / 0.7); + --brand: #b3e6db; + --brand-foreground: #131719; + --brand-primary: #b3e6db; + --brand-accent: #b3e6db; + --brand-warm: #f5a88d; + --brand-deep: #131719; + --brand-muted: #adc9bc; + --ink: #adc9bc; + --surface-warm: #232a2e; + --naturegreen: #cbe3b3; + --naturegreen-foreground: #131719; + --duck-dark: #adc9bc; + --duck-teal: #b3e6db; + --duck-yellow: #f5d098; + --duck-orange: #f5a88d; + --duck-forest: #cbe3b3; + --duck-beige: #313a3c; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/fiery-ocean.css b/src/workspaces/theme/css/themes/fiery-ocean.css new file mode 100644 index 00000000..de7beda8 --- /dev/null +++ b/src/workspaces/theme/css/themes/fiery-ocean.css @@ -0,0 +1,97 @@ +/* + Fiery Ocean — 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/bjarneo/omarchy-fiery-ocean-theme (colors.toml (16-colour ANSI)), 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='fiery-ocean'] { + --background: #00121a; + --foreground: #fdf0d5; + --card: #002130; + --card-foreground: #fdf0d5; + --popover: #002130; + --popover-foreground: #fdf0d5; + --muted: #12313e; + --muted-foreground: #b1b2a4; + --accent: #12313e; + --accent-foreground: #fdf0d5; + --primary: #8be9fd; + --primary-foreground: #00121a; + --secondary: #12313e; + --secondary-foreground: #fdf0d5; + --cta: #8be9fd; + --cta-foreground: #00121a; + --ctahover: #99ecfd; + --success: #2a9d8f; + --success-foreground: #00121a; + --warning: #fca311; + --warning-foreground: #00121a; + --destructive: #e63946; + --destructive-foreground: #00121a; + --info: #669bbc; + --info-foreground: #00121a; + --busy: #f16e2c; + --busy-foreground: #00121a; + --busy-ink: #f16e2c; + --border: #324a50; + --input: #324a50; + --ring: #8be9fd; + --radius: 0.625rem; + --chart-primary: #8be9fd; + --chart-secondary: #e63946; + --status-success: #2a9d8f; + --status-warning: #fca311; + --status-in-progress: #669bbc; + --page-bg: #00121a; + --page-bg-src: ''; + --panel-bg: rgb(0 33 48 / 0.72); + --panel-border: rgb(50 74 80 / 0.9); + --panel-border-bare: rgb(50 74 80 / 0.55); + --panel-raised-bg: rgb(0 33 48 / 0.95); + --panel-raised-border: rgb(50 74 80 / 1); + --panel-accent: #8be9fd; + --panel-header-bg: rgb(18 49 62 / 0.6); + --panel-header-fg: #fdf0d5; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #002130; + --glass-bg: rgb(0 33 48 / 0.55); + --glass-border: rgb(50 74 80 / 0.7); + --dock-bg: rgb(0 33 48 / 0.7); + --dock-border: rgb(50 74 80 / 0.8); + --dock-tooltip-bg: #12313e; + --header-bg: rgb(0 33 48 / 0.8); + --header-border: rgb(50 74 80 / 0.9); + --header-fg: #fdf0d5; + --header-blur: 12px; + --pixel-grid-color: rgb(114 126 122 / 0.07); + --card-grid-color: rgb(114 126 122 / 0.05); + --panel-grid-color: rgb(114 126 122 / 0.06); + --scrollbar-thumb: rgb(80 104 116 / 0.6); + --scrollbar-thumb-hover: rgb(80 104 116 / 0.85); + --scrollbar-thin-thumb: rgb(80 104 116 / 0.45); + --scrollbar-thin-thumb-hover: rgb(80 104 116 / 0.7); + --brand: #8be9fd; + --brand-foreground: #00121a; + --brand-primary: #8be9fd; + --brand-accent: #90e0ef; + --brand-warm: #f16e2c; + --brand-deep: #00121a; + --brand-muted: #506874; + --ink: #fdf0d5; + --surface-warm: #002130; + --naturegreen: #2a9d8f; + --naturegreen-foreground: #00121a; + --duck-dark: #fdf0d5; + --duck-teal: #90e0ef; + --duck-yellow: #fca311; + --duck-orange: #f16e2c; + --duck-forest: #2a9d8f; + --duck-beige: #193641; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/fireside.css b/src/workspaces/theme/css/themes/fireside.css new file mode 100644 index 00000000..a5a7f321 --- /dev/null +++ b/src/workspaces/theme/css/themes/fireside.css @@ -0,0 +1,97 @@ +/* + Fireside — 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/bjarneo/omarchy-fireside-theme (colors.toml (16-colour ANSI)), 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='fireside'] { + --background: #060a12; + --foreground: #f0f2f5; + --card: #0a1220; + --card-foreground: #f0f2f5; + --popover: #0a1220; + --popover-foreground: #f0f2f5; + --muted: #1b2330; + --muted-foreground: #abafb5; + --accent: #1b2330; + --accent-foreground: #f0f2f5; + --primary: #e3ddda; + --primary-foreground: #060a12; + --secondary: #1b2330; + --secondary-foreground: #f0f2f5; + --cta: #e3ddda; + --cta-foreground: #060a12; + --ctahover: #e6e1de; + --success: #889889; + --success-foreground: #060a12; + --warning: #b8b5a2; + --warning-foreground: #060a12; + --destructive: #e06b58; + --destructive-foreground: #060a12; + --info: #b8b8b6; + --info-foreground: #060a12; + --busy: #cc907d; + --busy-foreground: #060a12; + --busy-ink: #cc907d; + --border: #373e4a; + --input: #373e4a; + --ring: #e3ddda; + --radius: 0.625rem; + --chart-primary: #e3ddda; + --chart-secondary: #e48b7a; + --status-success: #889889; + --status-warning: #b8b5a2; + --status-in-progress: #b8b8b6; + --page-bg: #060a12; + --page-bg-src: ''; + --panel-bg: rgb(10 18 32 / 0.72); + --panel-border: rgb(55 62 74 / 0.9); + --panel-border-bare: rgb(55 62 74 / 0.55); + --panel-raised-bg: rgb(10 18 32 / 0.95); + --panel-raised-border: rgb(55 62 74 / 1); + --panel-accent: #e3ddda; + --panel-header-bg: rgb(27 35 48 / 0.6); + --panel-header-fg: #f0f2f5; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0a1220; + --glass-bg: rgb(10 18 32 / 0.55); + --glass-border: rgb(55 62 74 / 0.7); + --dock-bg: rgb(10 18 32 / 0.7); + --dock-border: rgb(55 62 74 / 0.8); + --dock-tooltip-bg: #1b2330; + --header-bg: rgb(10 18 32 / 0.8); + --header-border: rgb(55 62 74 / 0.9); + --header-fg: #f0f2f5; + --header-blur: 12px; + --pixel-grid-color: rgb(113 119 128 / 0.07); + --card-grid-color: rgb(113 119 128 / 0.05); + --panel-grid-color: rgb(113 119 128 / 0.06); + --scrollbar-thumb: rgb(85 92 101 / 0.6); + --scrollbar-thumb-hover: rgb(85 92 101 / 0.85); + --scrollbar-thin-thumb: rgb(85 92 101 / 0.45); + --scrollbar-thin-thumb-hover: rgb(85 92 101 / 0.7); + --brand: #e3ddda; + --brand-foreground: #060a12; + --brand-primary: #e3ddda; + --brand-accent: #d0cac7; + --brand-warm: #cc907d; + --brand-deep: #060a12; + --brand-muted: #555c65; + --ink: #f0f2f5; + --surface-warm: #0a1220; + --naturegreen: #889889; + --naturegreen-foreground: #060a12; + --duck-dark: #f0f2f5; + --duck-teal: #d0cac7; + --duck-yellow: #b8b5a2; + --duck-orange: #cc907d; + --duck-forest: #889889; + --duck-beige: #212835; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/firesky.css b/src/workspaces/theme/css/themes/firesky.css new file mode 100644 index 00000000..7cce777f --- /dev/null +++ b/src/workspaces/theme/css/themes/firesky.css @@ -0,0 +1,97 @@ +/* + Firesky — 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/bjarneo/omarchy-firesky-theme (colors.toml (16-colour ANSI)), 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='firesky'] { + --background: #080808; + --foreground: #e0d8d0; + --card: #0f0f0f; + --card-foreground: #e0d8d0; + --popover: #0f0f0f; + --popover-foreground: #e0d8d0; + --muted: #202020; + --muted-foreground: #a19c96; + --accent: #202020; + --accent-foreground: #e0d8d0; + --primary: #70e0dd; + --primary-foreground: #080808; + --secondary: #202020; + --secondary-foreground: #e0d8d0; + --cta: #70e0dd; + --cta-foreground: #080808; + --ctahover: #81e4e1; + --success: #1a6b6e; + --success-foreground: #e2dad2; + --warning: #e68040; + --warning-foreground: #080808; + --destructive: #e6441a; + --destructive-foreground: #080808; + --info: #2a7a80; + --info-foreground: #f3f3f3; + --busy: #e6622d; + --busy-foreground: #080808; + --busy-ink: #e6622d; + --border: #383635; + --input: #383635; + --ring: #70e0dd; + --radius: 0.625rem; + --chart-primary: #70e0dd; + --chart-secondary: #c4753d; + --status-success: #1a6b6e; + --status-warning: #e68040; + --status-in-progress: #2a7a80; + --page-bg: #080808; + --page-bg-src: ''; + --panel-bg: rgb(15 15 15 / 0.72); + --panel-border: rgb(56 54 53 / 0.9); + --panel-border-bare: rgb(56 54 53 / 0.55); + --panel-raised-bg: rgb(15 15 15 / 0.95); + --panel-raised-border: rgb(56 54 53 / 1); + --panel-accent: #70e0dd; + --panel-header-bg: rgb(32 32 32 / 0.6); + --panel-header-fg: #e0d8d0; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0f0f0f; + --glass-bg: rgb(15 15 15 / 0.55); + --glass-border: rgb(56 54 53 / 0.7); + --dock-bg: rgb(15 15 15 / 0.7); + --dock-border: rgb(56 54 53 / 0.8); + --dock-tooltip-bg: #202020; + --header-bg: rgb(15 15 15 / 0.8); + --header-border: rgb(56 54 53 / 0.9); + --header-fg: #e0d8d0; + --header-blur: 12px; + --pixel-grid-color: rgb(109 105 102 / 0.07); + --card-grid-color: rgb(109 105 102 / 0.05); + --panel-grid-color: rgb(109 105 102 / 0.06); + --scrollbar-thumb: rgb(77 107 107 / 0.6); + --scrollbar-thumb-hover: rgb(77 107 107 / 0.85); + --scrollbar-thin-thumb: rgb(77 107 107 / 0.45); + --scrollbar-thin-thumb-hover: rgb(77 107 107 / 0.7); + --brand: #70e0dd; + --brand-foreground: #080808; + --brand-primary: #70e0dd; + --brand-accent: #40b8b4; + --brand-warm: #e6622d; + --brand-deep: #080808; + --brand-muted: #4d6b6b; + --ink: #e0d8d0; + --surface-warm: #0f0f0f; + --naturegreen: #1a6b6e; + --naturegreen-foreground: #e2dad2; + --duck-dark: #e0d8d0; + --duck-teal: #40b8b4; + --duck-yellow: #e68040; + --duck-orange: #e6622d; + --duck-forest: #1a6b6e; + --duck-beige: #242322; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/flexoki-dark.css b/src/workspaces/theme/css/themes/flexoki-dark.css new file mode 100644 index 00000000..a0ab3458 --- /dev/null +++ b/src/workspaces/theme/css/themes/flexoki-dark.css @@ -0,0 +1,97 @@ +/* + Flexoki Dark — 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/euandeas/omarchy-flexoki-dark-theme (colors.toml (16-colour ANSI)), 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='flexoki-dark'] { + --background: #090808; + --foreground: #cecdc3; + --card: #100f0f; + --card-foreground: #cecdc3; + --popover: #100f0f; + --popover-foreground: #cecdc3; + --muted: #212020; + --muted-foreground: #95948d; + --accent: #212020; + --accent-foreground: #cecdc3; + --primary: #3aa99f; + --primary-foreground: #090808; + --secondary: #212020; + --secondary-foreground: #cecdc3; + --cta: #3aa99f; + --cta-foreground: #090808; + --ctahover: #52b3ab; + --success: #66800b; + --success-foreground: #060505; + --warning: #ad8301; + --warning-foreground: #090808; + --destructive: #af3029; + --destructive-foreground: #dadad2; + --info: #205ea6; + --info-foreground: #d8d7cf; + --busy: #ae5a15; + --busy-foreground: #f9f9f9; + --busy-ink: #b46627; + --border: #353432; + --input: #353432; + --ring: #3aa99f; + --radius: 0.625rem; + --chart-primary: #3aa99f; + --chart-secondary: #a02f6f; + --status-success: #66800b; + --status-warning: #ad8301; + --status-in-progress: #205ea6; + --page-bg: #090808; + --page-bg-src: ''; + --panel-bg: rgb(16 15 15 / 0.72); + --panel-border: rgb(53 52 50 / 0.9); + --panel-border-bare: rgb(53 52 50 / 0.55); + --panel-raised-bg: rgb(16 15 15 / 0.95); + --panel-raised-border: rgb(53 52 50 / 1); + --panel-accent: #3aa99f; + --panel-header-bg: rgb(33 32 32 / 0.6); + --panel-header-fg: #cecdc3; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #100f0f; + --glass-bg: rgb(16 15 15 / 0.55); + --glass-border: rgb(53 52 50 / 0.7); + --dock-bg: rgb(16 15 15 / 0.7); + --dock-border: rgb(53 52 50 / 0.8); + --dock-tooltip-bg: #212020; + --header-bg: rgb(16 15 15 / 0.8); + --header-border: rgb(53 52 50 / 0.9); + --header-fg: #cecdc3; + --header-blur: 12px; + --pixel-grid-color: rgb(101 100 96 / 0.07); + --card-grid-color: rgb(101 100 96 / 0.05); + --panel-grid-color: rgb(101 100 96 / 0.06); + --scrollbar-thumb: rgb(111 110 105 / 0.6); + --scrollbar-thumb-hover: rgb(111 110 105 / 0.85); + --scrollbar-thin-thumb: rgb(111 110 105 / 0.45); + --scrollbar-thin-thumb-hover: rgb(111 110 105 / 0.7); + --brand: #3aa99f; + --brand-foreground: #090808; + --brand-primary: #3aa99f; + --brand-accent: #24837b; + --brand-warm: #ae5a15; + --brand-deep: #090808; + --brand-muted: #6f6e69; + --ink: #cecdc3; + --surface-warm: #100f0f; + --naturegreen: #66800b; + --naturegreen-foreground: #060505; + --duck-dark: #cecdc3; + --duck-teal: #24837b; + --duck-yellow: #ad8301; + --duck-orange: #ae5a15; + --duck-forest: #66800b; + --duck-beige: #232221; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/flexoki-light.css b/src/workspaces/theme/css/themes/flexoki-light.css index b54528b4..95715666 100644 --- a/src/workspaces/theme/css/themes/flexoki-light.css +++ b/src/workspaces/theme/css/themes/flexoki-light.css @@ -7,56 +7,56 @@ Source: basecamp/omarchy themes/flexoki-light/colors.toml (mode: light) */ [data-theme='flexoki-light'] { - --background: #FFFCF0; - --foreground: #100F0F; - --card: #E6E4D9; - --card-foreground: #100F0F; - --popover: #E6E4D9; - --popover-foreground: #100F0F; + --background: #fffcf0; + --foreground: #100f0f; + --card: #e6e4d9; + --card-foreground: #100f0f; + --popover: #e6e4d9; + --popover-foreground: #100f0f; --muted: #f2efe4; - --muted-foreground: #403E3C; + --muted-foreground: #403e3c; --accent: #f2efe4; - --accent-foreground: #100F0F; - --primary: #205EA6; + --accent-foreground: #100f0f; + --primary: #205ea6; --primary-foreground: #e5e2d8; --secondary: #f2efe4; - --secondary-foreground: #100F0F; - --cta: #205EA6; + --secondary-foreground: #100f0f; + --cta: #205ea6; --cta-foreground: #e5e2d8; --ctahover: #1c5392; - --success: #879A39; - --success-foreground: #100F0F; - --warning: #D0A215; - --warning-foreground: #100F0F; - --destructive: #D14D41; + --success: #879a39; + --success-foreground: #100f0f; + --warning: #d0a215; + --warning-foreground: #100f0f; + --destructive: #d14d41; --destructive-foreground: #0d0c0c; - --info: #205EA6; + --info: #205ea6; --info-foreground: #e5e2d8; --busy: #d0772b; - --busy-foreground: #100F0F; + --busy-foreground: #100f0f; --busy-ink: #ac6223; --border: #cbc9c0; --input: #cbc9c0; - --ring: #205EA6; + --ring: #205ea6; --radius: 0.625rem; - --chart-primary: #205EA6; - --chart-secondary: #CE5D97; - --status-success: #879A39; - --status-warning: #D0A215; - --status-in-progress: #205EA6; - --page-bg: #FFFCF0; + --chart-primary: #205ea6; + --chart-secondary: #ce5d97; + --status-success: #879a39; + --status-warning: #d0a215; + --status-in-progress: #205ea6; + --page-bg: #fffcf0; --page-bg-src: ''; --panel-bg: rgb(230 228 217 / 0.72); --panel-border: rgb(203 201 192 / 0.9); --panel-border-bare: rgb(203 201 192 / 0.55); --panel-raised-bg: rgb(230 228 217 / 0.95); --panel-raised-border: rgb(203 201 192 / 1); - --panel-accent: #205EA6; + --panel-accent: #205ea6; --panel-header-bg: rgb(242 239 228 / 0.6); - --panel-header-fg: #100F0F; + --panel-header-fg: #100f0f; --panel-radius: 0.75rem; --panel-blur: 12px; - --card-bg: #E6E4D9; + --card-bg: #e6e4d9; --glass-bg: rgb(230 228 217 / 0.55); --glass-border: rgb(203 201 192 / 0.7); --dock-bg: rgb(230 228 217 / 0.7); @@ -64,7 +64,7 @@ --dock-tooltip-bg: #f2efe4; --header-bg: rgb(230 228 217 / 0.8); --header-border: rgb(203 201 192 / 0.9); - --header-fg: #100F0F; + --header-fg: #100f0f; --header-blur: 12px; --pixel-grid-color: rgb(132 130 125 / 0.07); --card-grid-color: rgb(132 130 125 / 0.05); @@ -73,22 +73,22 @@ --scrollbar-thumb-hover: rgb(183 181 172 / 0.85); --scrollbar-thin-thumb: rgb(183 181 172 / 0.45); --scrollbar-thin-thumb-hover: rgb(183 181 172 / 0.7); - --brand: #205EA6; + --brand: #205ea6; --brand-foreground: #e5e2d8; - --brand-primary: #205EA6; - --brand-accent: #3AA99F; + --brand-primary: #205ea6; + --brand-accent: #3aa99f; --brand-warm: #d0772b; --brand-deep: #f2efe4; - --brand-muted: #B7B5AC; - --ink: #100F0F; - --surface-warm: #E6E4D9; - --naturegreen: #879A39; - --naturegreen-foreground: #100F0F; - --duck-dark: #100F0F; - --duck-teal: #3AA99F; - --duck-yellow: #D0A215; + --brand-muted: #b7b5ac; + --ink: #100f0f; + --surface-warm: #e6e4d9; + --naturegreen: #879a39; + --naturegreen-foreground: #100f0f; + --duck-dark: #100f0f; + --duck-teal: #3aa99f; + --duck-yellow: #d0a215; --duck-orange: #d0772b; - --duck-forest: #879A39; + --duck-forest: #879a39; --duck-beige: #d1cfc5; --logo-src: '/officer-logo.svg'; } diff --git a/src/workspaces/theme/css/themes/frost.css b/src/workspaces/theme/css/themes/frost.css new file mode 100644 index 00000000..3902f705 --- /dev/null +++ b/src/workspaces/theme/css/themes/frost.css @@ -0,0 +1,97 @@ +/* + Frost — 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/bjarneo/omarchy-frost-theme (colors.toml (16-colour ANSI)), 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='frost'] { + --background: #06080f; + --foreground: #d4d5d9; + --card: #0a0f1c; + --card-foreground: #d4d5d9; + --popover: #0a0f1c; + --popover-foreground: #d4d5d9; + --muted: #1b202c; + --muted-foreground: #979aa0; + --accent: #1b202c; + --accent-foreground: #d4d5d9; + --primary: #b8c7d0; + --primary-foreground: #06080f; + --secondary: #1b202c; + --secondary-foreground: #d4d5d9; + --cta: #b8c7d0; + --cta-foreground: #06080f; + --ctahover: #c1ced6; + --success: #95a8b8; + --success-foreground: #06080f; + --warning: #9fadb8; + --warning-foreground: #06080f; + --destructive: #869aac; + --destructive-foreground: #06080f; + --info: #9bb0c2; + --info-foreground: #06080f; + --busy: #93a4b2; + --busy-foreground: #06080f; + --busy-ink: #93a4b2; + --border: #313641; + --input: #313641; + --ring: #b8c7d0; + --radius: 0.625rem; + --chart-primary: #b8c7d0; + --chart-secondary: #a8b9c6; + --status-success: #95a8b8; + --status-warning: #9fadb8; + --status-in-progress: #9bb0c2; + --page-bg: #06080f; + --page-bg-src: ''; + --panel-bg: rgb(10 15 28 / 0.72); + --panel-border: rgb(49 54 65 / 0.9); + --panel-border-bare: rgb(49 54 65 / 0.55); + --panel-raised-bg: rgb(10 15 28 / 0.95); + --panel-raised-border: rgb(49 54 65 / 1); + --panel-accent: #b8c7d0; + --panel-header-bg: rgb(27 32 44 / 0.6); + --panel-header-fg: #d4d5d9; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0a0f1c; + --glass-bg: rgb(10 15 28 / 0.55); + --glass-border: rgb(49 54 65 / 0.7); + --dock-bg: rgb(10 15 28 / 0.7); + --dock-border: rgb(49 54 65 / 0.8); + --dock-tooltip-bg: #1b202c; + --header-bg: rgb(10 15 28 / 0.8); + --header-border: rgb(49 54 65 / 0.9); + --header-fg: #d4d5d9; + --header-blur: 12px; + --pixel-grid-color: rgb(101 104 113 / 0.07); + --card-grid-color: rgb(101 104 113 / 0.05); + --panel-grid-color: rgb(101 104 113 / 0.06); + --scrollbar-thumb: rgb(95 99 116 / 0.6); + --scrollbar-thumb-hover: rgb(95 99 116 / 0.85); + --scrollbar-thin-thumb: rgb(95 99 116 / 0.45); + --scrollbar-thin-thumb-hover: rgb(95 99 116 / 0.7); + --brand: #b8c7d0; + --brand-foreground: #06080f; + --brand-primary: #b8c7d0; + --brand-accent: #b8c7d0; + --brand-warm: #93a4b2; + --brand-deep: #06080f; + --brand-muted: #5f6374; + --ink: #d4d5d9; + --surface-warm: #0a0f1c; + --naturegreen: #95a8b8; + --naturegreen-foreground: #06080f; + --duck-dark: #d4d5d9; + --duck-teal: #b8c7d0; + --duck-yellow: #9fadb8; + --duck-orange: #93a4b2; + --duck-forest: #95a8b8; + --duck-beige: #1e232f; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/futurism.css b/src/workspaces/theme/css/themes/futurism.css new file mode 100644 index 00000000..e4127478 --- /dev/null +++ b/src/workspaces/theme/css/themes/futurism.css @@ -0,0 +1,97 @@ +/* + Futurism — 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/bjarneo/omarchy-futurism-theme (colors.toml (16-colour ANSI)), 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='futurism'] { + --background: #060b16; + --foreground: #f0f8ff; + --card: #0a1428; + --card-foreground: #f0f8ff; + --popover: #0a1428; + --popover-foreground: #f0f8ff; + --muted: #1b2437; + --muted-foreground: #abb4bf; + --accent: #1b2437; + --accent-foreground: #f0f8ff; + --primary: #f0f8ff; + --primary-foreground: #060b16; + --secondary: #1b2437; + --secondary-foreground: #f0f8ff; + --cta: #f0f8ff; + --cta-foreground: #060b16; + --ctahover: #f2f9ff; + --success: #00bfff; + --success-foreground: #060b16; + --warning: #5076b2; + --warning-foreground: #ffffff; + --destructive: #ff40a3; + --destructive-foreground: #060b16; + --info: #f0f8ff; + --info-foreground: #060b16; + --busy: #a85bab; + --busy-foreground: #050913; + --busy-ink: #aa5fad; + --border: #374152; + --input: #374152; + --ring: #f0f8ff; + --radius: 0.625rem; + --chart-primary: #f0f8ff; + --chart-secondary: #ff40a3; + --status-success: #00bfff; + --status-warning: #5076b2; + --status-in-progress: #f0f8ff; + --page-bg: #060b16; + --page-bg-src: ''; + --panel-bg: rgb(10 20 40 / 0.72); + --panel-border: rgb(55 65 82 / 0.9); + --panel-border-bare: rgb(55 65 82 / 0.55); + --panel-raised-bg: rgb(10 20 40 / 0.95); + --panel-raised-border: rgb(55 65 82 / 1); + --panel-accent: #f0f8ff; + --panel-header-bg: rgb(27 36 55 / 0.6); + --panel-header-fg: #f0f8ff; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0a1428; + --glass-bg: rgb(10 20 40 / 0.55); + --glass-border: rgb(55 65 82 / 0.7); + --dock-bg: rgb(10 20 40 / 0.7); + --dock-border: rgb(55 65 82 / 0.8); + --dock-tooltip-bg: #1b2437; + --header-bg: rgb(10 20 40 / 0.8); + --header-border: rgb(55 65 82 / 0.9); + --header-fg: #f0f8ff; + --header-blur: 12px; + --pixel-grid-color: rgb(113 123 137 / 0.07); + --card-grid-color: rgb(113 123 137 / 0.05); + --panel-grid-color: rgb(113 123 137 / 0.06); + --scrollbar-thumb: rgb(240 248 255 / 0.6); + --scrollbar-thumb-hover: rgb(240 248 255 / 0.85); + --scrollbar-thin-thumb: rgb(240 248 255 / 0.45); + --scrollbar-thin-thumb-hover: rgb(240 248 255 / 0.7); + --brand: #f0f8ff; + --brand-foreground: #060b16; + --brand-primary: #f0f8ff; + --brand-accent: #f0f8ff; + --brand-warm: #a85bab; + --brand-deep: #060b16; + --brand-muted: #f0f8ff; + --ink: #f0f8ff; + --surface-warm: #0a1428; + --naturegreen: #00bfff; + --naturegreen-foreground: #060b16; + --duck-dark: #f0f8ff; + --duck-teal: #f0f8ff; + --duck-yellow: #5076b2; + --duck-orange: #a85bab; + --duck-forest: #00bfff; + --duck-beige: #212b3e; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/ghost-pastel.css b/src/workspaces/theme/css/themes/ghost-pastel.css new file mode 100644 index 00000000..0750a903 --- /dev/null +++ b/src/workspaces/theme/css/themes/ghost-pastel.css @@ -0,0 +1,97 @@ +/* + Ghost Pastel — 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/row-huh/omarchy-ghost-pastel-theme (colors.toml (16-colour ANSI)), 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='ghost-pastel'] { + --background: #040303; + --foreground: #ffffff; + --card: #070506; + --card-foreground: #ffffff; + --popover: #070506; + --popover-foreground: #ffffff; + --muted: #181717; + --muted-foreground: #b5b4b4; + --accent: #181717; + --accent-foreground: #ffffff; + --primary: #e4e6fb; + --primary-foreground: #040303; + --secondary: #181717; + --secondary-foreground: #ffffff; + --cta: #e4e6fb; + --cta-foreground: #040303; + --ctahover: #e7e9fb; + --success: #648ed0; + --success-foreground: #040303; + --warning: #e095b5; + --warning-foreground: #040303; + --destructive: #b37580; + --destructive-foreground: #040303; + --info: #979fec; + --info-foreground: #040303; + --busy: #ca859b; + --busy-foreground: #040303; + --busy-ink: #ca859b; + --border: #383637; + --input: #383637; + --ring: #e4e6fb; + --radius: 0.625rem; + --chart-primary: #e4e6fb; + --chart-secondary: #cd9dcf; + --status-success: #648ed0; + --status-warning: #e095b5; + --status-in-progress: #979fec; + --page-bg: #040303; + --page-bg-src: ''; + --panel-bg: rgb(7 5 6 / 0.72); + --panel-border: rgb(56 54 55 / 0.9); + --panel-border-bare: rgb(56 54 55 / 0.55); + --panel-raised-bg: rgb(7 5 6 / 0.95); + --panel-raised-border: rgb(56 54 55 / 1); + --panel-accent: #e4e6fb; + --panel-header-bg: rgb(24 23 23 / 0.6); + --panel-header-fg: #ffffff; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #070506; + --glass-bg: rgb(7 5 6 / 0.55); + --glass-border: rgb(56 54 55 / 0.7); + --dock-bg: rgb(7 5 6 / 0.7); + --dock-border: rgb(56 54 55 / 0.8); + --dock-tooltip-bg: #181717; + --header-bg: rgb(7 5 6 / 0.8); + --header-border: rgb(56 54 55 / 0.9); + --header-fg: #ffffff; + --header-blur: 12px; + --pixel-grid-color: rgb(119 118 118 / 0.07); + --card-grid-color: rgb(119 118 118 / 0.05); + --panel-grid-color: rgb(119 118 118 / 0.06); + --scrollbar-thumb: rgb(131 111 121 / 0.6); + --scrollbar-thumb-hover: rgb(131 111 121 / 0.85); + --scrollbar-thin-thumb: rgb(131 111 121 / 0.45); + --scrollbar-thin-thumb-hover: rgb(131 111 121 / 0.7); + --brand: #e4e6fb; + --brand-foreground: #040303; + --brand-primary: #e4e6fb; + --brand-accent: #7c93dd; + --brand-warm: #ca859b; + --brand-deep: #040303; + --brand-muted: #836f79; + --ink: #ffffff; + --surface-warm: #070506; + --naturegreen: #648ed0; + --naturegreen-foreground: #040303; + --duck-dark: #ffffff; + --duck-teal: #7c93dd; + --duck-yellow: #e095b5; + --duck-orange: #ca859b; + --duck-forest: #648ed0; + --duck-beige: #201e1f; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/hackerman.css b/src/workspaces/theme/css/themes/hackerman.css index 6d88a83d..68c6caf2 100644 --- a/src/workspaces/theme/css/themes/hackerman.css +++ b/src/workspaces/theme/css/themes/hackerman.css @@ -9,19 +9,19 @@ [data-theme='hackerman'] { --background: #06060c; --foreground: #ddf7ff; - --card: #0B0C16; + --card: #0b0c16; --card-foreground: #ddf7ff; - --popover: #0B0C16; + --popover: #0b0c16; --popover-foreground: #ddf7ff; --muted: #151828; --muted-foreground: #b5c5db; --accent: #151828; --accent-foreground: #ddf7ff; - --primary: #82FB9C; + --primary: #82fb9c; --primary-foreground: #06060c; --secondary: #151828; --secondary-foreground: #ddf7ff; - --cta: #82FB9C; + --cta: #82fb9c; --cta-foreground: #06060c; --ctahover: #91fba8; --success: #4fe88f; @@ -37,9 +37,9 @@ --busy-ink: #50f7a3; --border: #3b404d; --input: #3b404d; - --ring: #82FB9C; + --ring: #82fb9c; --radius: 0.625rem; - --chart-primary: #82FB9C; + --chart-primary: #82fb9c; --chart-secondary: #86a7df; --status-success: #4fe88f; --status-warning: #50f7d4; @@ -51,12 +51,12 @@ --panel-border-bare: rgb(59 64 77 / 0.55); --panel-raised-bg: rgb(11 12 22 / 0.95); --panel-raised-border: rgb(59 64 77 / 1); - --panel-accent: #82FB9C; + --panel-accent: #82fb9c; --panel-header-bg: rgb(21 24 40 / 0.6); --panel-header-fg: #ddf7ff; --panel-radius: 0.75rem; --panel-blur: 12px; - --card-bg: #0B0C16; + --card-bg: #0b0c16; --glass-bg: rgb(11 12 22 / 0.55); --glass-border: rgb(59 64 77 / 0.7); --dock-bg: rgb(11 12 22 / 0.7); @@ -73,15 +73,15 @@ --scrollbar-thumb-hover: rgb(45 52 80 / 0.85); --scrollbar-thin-thumb: rgb(45 52 80 / 0.45); --scrollbar-thin-thumb-hover: rgb(45 52 80 / 0.7); - --brand: #82FB9C; + --brand: #82fb9c; --brand-foreground: #06060c; - --brand-primary: #82FB9C; + --brand-primary: #82fb9c; --brand-accent: #7cf8f7; --brand-warm: #50f7a3; --brand-deep: #06060c; --brand-muted: #2d3450; --ink: #ddf7ff; - --surface-warm: #0B0C16; + --surface-warm: #0b0c16; --naturegreen: #4fe88f; --naturegreen-foreground: #06060c; --duck-dark: #ddf7ff; diff --git a/src/workspaces/theme/css/themes/harbor-dark.css b/src/workspaces/theme/css/themes/harbor-dark.css new file mode 100644 index 00000000..ab4380be --- /dev/null +++ b/src/workspaces/theme/css/themes/harbor-dark.css @@ -0,0 +1,97 @@ +/* + Harbor Dark — 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/HANCORE-linux/omarchy-harbordark-theme (colors.toml (16-colour ANSI)), 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='harbor-dark'] { + --background: #0f0f0f; + --foreground: #efebdc; + --card: #1b1b1b; + --card-foreground: #efebdc; + --popover: #1b1b1b; + --popover-foreground: #efebdc; + --muted: #2b2b2b; + --muted-foreground: #afada2; + --accent: #2b2b2b; + --accent-foreground: #efebdc; + --primary: #e58980; + --primary-foreground: #0f0f0f; + --secondary: #2b2b2b; + --secondary-foreground: #efebdc; + --cta: #e58980; + --cta-foreground: #0f0f0f; + --ctahover: #e8978f; + --success: #e75a50; + --success-foreground: #0f0f0f; + --warning: #a99b7a; + --warning-foreground: #0f0f0f; + --destructive: #f44336; + --destructive-foreground: #0f0f0f; + --info: #e58980; + --info-foreground: #0f0f0f; + --busy: #cf6f58; + --busy-foreground: #0f0f0f; + --busy-ink: #cf6f58; + --border: #444441; + --input: #444441; + --ring: #e58980; + --radius: 0.625rem; + --chart-primary: #e58980; + --chart-secondary: #77838a; + --status-success: #e75a50; + --status-warning: #a99b7a; + --status-in-progress: #e58980; + --page-bg: #0f0f0f; + --page-bg-src: ''; + --panel-bg: rgb(27 27 27 / 0.72); + --panel-border: rgb(68 68 65 / 0.9); + --panel-border-bare: rgb(68 68 65 / 0.55); + --panel-raised-bg: rgb(27 27 27 / 0.95); + --panel-raised-border: rgb(68 68 65 / 1); + --panel-accent: #e58980; + --panel-header-bg: rgb(43 43 43 / 0.6); + --panel-header-fg: #efebdc; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1b1b1b; + --glass-bg: rgb(27 27 27 / 0.55); + --glass-border: rgb(68 68 65 / 0.7); + --dock-bg: rgb(27 27 27 / 0.7); + --dock-border: rgb(68 68 65 / 0.8); + --dock-tooltip-bg: #2b2b2b; + --header-bg: rgb(27 27 27 / 0.8); + --header-border: rgb(68 68 65 / 0.9); + --header-fg: #efebdc; + --header-blur: 12px; + --pixel-grid-color: rgb(122 121 114 / 0.07); + --card-grid-color: rgb(122 121 114 / 0.05); + --panel-grid-color: rgb(122 121 114 / 0.06); + --scrollbar-thumb: rgb(129 127 104 / 0.6); + --scrollbar-thumb-hover: rgb(129 127 104 / 0.85); + --scrollbar-thin-thumb: rgb(129 127 104 / 0.45); + --scrollbar-thin-thumb-hover: rgb(129 127 104 / 0.7); + --brand: #e58980; + --brand-foreground: #0f0f0f; + --brand-primary: #e58980; + --brand-accent: #6d6d6d; + --brand-warm: #cf6f58; + --brand-deep: #0f0f0f; + --brand-muted: #817f68; + --ink: #efebdc; + --surface-warm: #1b1b1b; + --naturegreen: #e75a50; + --naturegreen-foreground: #0f0f0f; + --duck-dark: #efebdc; + --duck-teal: #6d6d6d; + --duck-yellow: #a99b7a; + --duck-orange: #cf6f58; + --duck-forest: #e75a50; + --duck-beige: #30302e; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/hollow-knight.css b/src/workspaces/theme/css/themes/hollow-knight.css new file mode 100644 index 00000000..0f7d7ed7 --- /dev/null +++ b/src/workspaces/theme/css/themes/hollow-knight.css @@ -0,0 +1,97 @@ +/* + Hollow Knight — 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/bjarneo/omarchy-hollow-knight-theme (colors.toml (16-colour ANSI)), 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='hollow-knight'] { + --background: #00181e; + --foreground: #fbf1c7; + --card: #002b36; + --card-foreground: #fbf1c7; + --popover: #002b36; + --popover-foreground: #fbf1c7; + --muted: #123a44; + --muted-foreground: #b0b69c; + --accent: #123a44; + --accent-foreground: #fbf1c7; + --primary: #3bcba5; + --primary-foreground: #00181e; + --secondary: #123a44; + --secondary-foreground: #fbf1c7; + --cta: #3bcba5; + --cta-foreground: #00181e; + --ctahover: #53d1b0; + --success: #2a9d8f; + --success-foreground: #00181e; + --warning: #e9c46a; + --warning-foreground: #00181e; + --destructive: #e76f51; + --destructive-foreground: #00181e; + --info: #2a6f88; + --info-foreground: #fbf1c7; + --busy: #e89a5e; + --busy-foreground: #00181e; + --busy-ink: #e89a5e; + --border: #315253; + --input: #315253; + --ring: #3bcba5; + --radius: 0.625rem; + --chart-primary: #3bcba5; + --chart-secondary: #f4a261; + --status-success: #2a9d8f; + --status-warning: #e9c46a; + --status-in-progress: #2a6f88; + --page-bg: #00181e; + --page-bg-src: ''; + --panel-bg: rgb(0 43 54 / 0.72); + --panel-border: rgb(49 82 83 / 0.9); + --panel-border-bare: rgb(49 82 83 / 0.55); + --panel-raised-bg: rgb(0 43 54 / 0.95); + --panel-raised-border: rgb(49 82 83 / 1); + --panel-accent: #3bcba5; + --panel-header-bg: rgb(18 58 68 / 0.6); + --panel-header-fg: #fbf1c7; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #002b36; + --glass-bg: rgb(0 43 54 / 0.55); + --glass-border: rgb(49 82 83 / 0.7); + --dock-bg: rgb(0 43 54 / 0.7); + --dock-border: rgb(49 82 83 / 0.8); + --dock-tooltip-bg: #123a44; + --header-bg: rgb(0 43 54 / 0.8); + --header-border: rgb(49 82 83 / 0.9); + --header-fg: #fbf1c7; + --header-blur: 12px; + --pixel-grid-color: rgb(113 132 119 / 0.07); + --card-grid-color: rgb(113 132 119 / 0.05); + --panel-grid-color: rgb(113 132 119 / 0.06); + --scrollbar-thumb: rgb(88 110 117 / 0.6); + --scrollbar-thumb-hover: rgb(88 110 117 / 0.85); + --scrollbar-thin-thumb: rgb(88 110 117 / 0.45); + --scrollbar-thin-thumb-hover: rgb(88 110 117 / 0.7); + --brand: #3bcba5; + --brand-foreground: #00181e; + --brand-primary: #3bcba5; + --brand-accent: #2a9d8f; + --brand-warm: #e89a5e; + --brand-deep: #00181e; + --brand-muted: #586e75; + --ink: #fbf1c7; + --surface-warm: #002b36; + --naturegreen: #2a9d8f; + --naturegreen-foreground: #00181e; + --duck-dark: #fbf1c7; + --duck-teal: #2a9d8f; + --duck-yellow: #e9c46a; + --duck-orange: #e89a5e; + --duck-forest: #2a9d8f; + --duck-beige: #193f45; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/inkypinky.css b/src/workspaces/theme/css/themes/inkypinky.css new file mode 100644 index 00000000..736a59c9 --- /dev/null +++ b/src/workspaces/theme/css/themes/inkypinky.css @@ -0,0 +1,97 @@ +/* + Inkypinky — 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/HANCORE-linux/omarchy-inkypinky-theme (colors.toml (16-colour ANSI)), 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='inkypinky'] { + --background: #0a0a10; + --foreground: #c8c8c8; + --card: #13131d; + --card-foreground: #c8c8c8; + --popover: #13131d; + --popover-foreground: #c8c8c8; + --muted: #24242d; + --muted-foreground: #929295; + --accent: #24242d; + --accent-foreground: #c8c8c8; + --primary: #d2d7e3; + --primary-foreground: #0a0a10; + --secondary: #24242d; + --secondary-foreground: #c8c8c8; + --cta: #d2d7e3; + --cta-foreground: #0a0a10; + --ctahover: #d7dce6; + --success: #a6b2c7; + --success-foreground: #0a0a10; + --warning: #d18ba2; + --warning-foreground: #0a0a10; + --destructive: #ea90a8; + --destructive-foreground: #0a0a10; + --info: #7c7ca8; + --info-foreground: #0a0a10; + --busy: #de8ea5; + --busy-foreground: #0a0a10; + --busy-ink: #de8ea5; + --border: #37373f; + --input: #37373f; + --ring: #d2d7e3; + --radius: 0.625rem; + --chart-primary: #d2d7e3; + --chart-secondary: #9f859f; + --status-success: #a6b2c7; + --status-warning: #d18ba2; + --status-in-progress: #7c7ca8; + --page-bg: #0a0a10; + --page-bg-src: ''; + --panel-bg: rgb(19 19 29 / 0.72); + --panel-border: rgb(55 55 63 / 0.9); + --panel-border-bare: rgb(55 55 63 / 0.55); + --panel-raised-bg: rgb(19 19 29 / 0.95); + --panel-raised-border: rgb(55 55 63 / 1); + --panel-accent: #d2d7e3; + --panel-header-bg: rgb(36 36 45 / 0.6); + --panel-header-fg: #c8c8c8; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #13131d; + --glass-bg: rgb(19 19 29 / 0.55); + --glass-border: rgb(55 55 63 / 0.7); + --dock-bg: rgb(19 19 29 / 0.7); + --dock-border: rgb(55 55 63 / 0.8); + --dock-tooltip-bg: #24242d; + --header-bg: rgb(19 19 29 / 0.8); + --header-border: rgb(55 55 63 / 0.9); + --header-fg: #c8c8c8; + --header-blur: 12px; + --pixel-grid-color: rgb(100 100 106 / 0.07); + --card-grid-color: rgb(100 100 106 / 0.05); + --panel-grid-color: rgb(100 100 106 / 0.06); + --scrollbar-thumb: rgb(67 67 83 / 0.6); + --scrollbar-thumb-hover: rgb(67 67 83 / 0.85); + --scrollbar-thin-thumb: rgb(67 67 83 / 0.45); + --scrollbar-thin-thumb-hover: rgb(67 67 83 / 0.7); + --brand: #d2d7e3; + --brand-foreground: #0a0a10; + --brand-primary: #d2d7e3; + --brand-accent: #919ab7; + --brand-warm: #de8ea5; + --brand-deep: #0a0a10; + --brand-muted: #434353; + --ink: #c8c8c8; + --surface-warm: #13131d; + --naturegreen: #a6b2c7; + --naturegreen-foreground: #0a0a10; + --duck-dark: #c8c8c8; + --duck-teal: #919ab7; + --duck-yellow: #d18ba2; + --duck-orange: #de8ea5; + --duck-forest: #a6b2c7; + --duck-beige: #25252e; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/kanagawa.css b/src/workspaces/theme/css/themes/kanagawa.css index 52668d44..5c90efba 100644 --- a/src/workspaces/theme/css/themes/kanagawa.css +++ b/src/workspaces/theme/css/themes/kanagawa.css @@ -79,7 +79,7 @@ --brand-accent: #6a9589; --brand-warm: #c17158; --brand-deep: #111116; - --brand-muted: #54546D; + --brand-muted: #54546d; --ink: #dcd7ba; --surface-warm: #1f1f28; --naturegreen: #76946a; diff --git a/src/workspaces/theme/css/themes/kanso.css b/src/workspaces/theme/css/themes/kanso.css new file mode 100644 index 00000000..2945adf9 --- /dev/null +++ b/src/workspaces/theme/css/themes/kanso.css @@ -0,0 +1,97 @@ +/* + Kanso — 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/HANCORE-linux/omarchy-kanso-theme (colors.toml (16-colour ANSI)), 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='kanso'] { + --background: #05080a; + --foreground: #c5c9c7; + --card: #090e13; + --card-foreground: #c5c9c7; + --popover: #090e13; + --popover-foreground: #c5c9c7; + --muted: #1a1f24; + --muted-foreground: #8d9191; + --accent: #1a1f24; + --accent-foreground: #c5c9c7; + --primary: #7fb4ca; + --primary-foreground: #05080a; + --secondary: #1a1f24; + --secondary-foreground: #c5c9c7; + --cta: #7fb4ca; + --cta-foreground: #05080a; + --ctahover: #8ebdd0; + --success: #8a9a7b; + --success-foreground: #05080a; + --warning: #c4b28a; + --warning-foreground: #05080a; + --destructive: #c4746e; + --destructive-foreground: #05080a; + --info: #8ba4b0; + --info-foreground: #05080a; + --busy: #c4937c; + --busy-foreground: #05080a; + --busy-ink: #c4937c; + --border: #2e3336; + --input: #2e3336; + --ring: #7fb4ca; + --radius: 0.625rem; + --chart-primary: #7fb4ca; + --chart-secondary: #a292a3; + --status-success: #8a9a7b; + --status-warning: #c4b28a; + --status-in-progress: #8ba4b0; + --page-bg: #05080a; + --page-bg-src: ''; + --panel-bg: rgb(9 14 19 / 0.72); + --panel-border: rgb(46 51 54 / 0.9); + --panel-border-bare: rgb(46 51 54 / 0.55); + --panel-raised-bg: rgb(9 14 19 / 0.95); + --panel-raised-border: rgb(46 51 54 / 1); + --panel-accent: #7fb4ca; + --panel-header-bg: rgb(26 31 36 / 0.6); + --panel-header-fg: #c5c9c7; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #090e13; + --glass-bg: rgb(9 14 19 / 0.55); + --glass-border: rgb(46 51 54 / 0.7); + --dock-bg: rgb(9 14 19 / 0.7); + --dock-border: rgb(46 51 54 / 0.8); + --dock-tooltip-bg: #1a1f24; + --header-bg: rgb(9 14 19 / 0.8); + --header-border: rgb(46 51 54 / 0.9); + --header-fg: #c5c9c7; + --header-blur: 12px; + --pixel-grid-color: rgb(94 98 100 / 0.07); + --card-grid-color: rgb(94 98 100 / 0.05); + --panel-grid-color: rgb(94 98 100 / 0.06); + --scrollbar-thumb: rgb(57 59 68 / 0.6); + --scrollbar-thumb-hover: rgb(57 59 68 / 0.85); + --scrollbar-thin-thumb: rgb(57 59 68 / 0.45); + --scrollbar-thin-thumb-hover: rgb(57 59 68 / 0.7); + --brand: #7fb4ca; + --brand-foreground: #05080a; + --brand-primary: #7fb4ca; + --brand-accent: #8ea4a2; + --brand-warm: #c4937c; + --brand-deep: #05080a; + --brand-muted: #393b44; + --ink: #c5c9c7; + --surface-warm: #090e13; + --naturegreen: #8a9a7b; + --naturegreen-foreground: #05080a; + --duck-dark: #c5c9c7; + --duck-teal: #8ea4a2; + --duck-yellow: #c4b28a; + --duck-orange: #c4937c; + --duck-forest: #8a9a7b; + --duck-beige: #1c2125; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/kimiko.css b/src/workspaces/theme/css/themes/kimiko.css new file mode 100644 index 00000000..d94fcf5c --- /dev/null +++ b/src/workspaces/theme/css/themes/kimiko.css @@ -0,0 +1,97 @@ +/* + Kimiko — 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/krymzonn/omarchy-kimiko-theme (colors.toml (16-colour ANSI)), 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='kimiko'] { + --background: #101212; + --foreground: #f8d1aa; + --card: #1d2121; + --card-foreground: #f8d1aa; + --popover: #1d2121; + --popover-foreground: #f8d1aa; + --muted: #2d3131; + --muted-foreground: #b69c81; + --accent: #2d3131; + --accent-foreground: #f8d1aa; + --primary: #d1f8f8; + --primary-foreground: #101212; + --secondary: #2d3131; + --secondary-foreground: #f8d1aa; + --cta: #d1f8f8; + --cta-foreground: #101212; + --ctahover: #d7f9f9; + --success: #5df85d; + --success-foreground: #101212; + --warning: #bad094; + --warning-foreground: #101212; + --destructive: #f8015d; + --destructive-foreground: #101212; + --info: #5f87af; + --info-foreground: #101212; + --busy: #d96979; + --busy-foreground: #101212; + --busy-ink: #d96979; + --border: #48433c; + --input: #48433c; + --ring: #d1f8f8; + --radius: 0.625rem; + --chart-primary: #d1f8f8; + --chart-secondary: #aa83f8; + --status-success: #5df85d; + --status-warning: #bad094; + --status-in-progress: #5f87af; + --page-bg: #101212; + --page-bg-src: ''; + --panel-bg: rgb(29 33 33 / 0.72); + --panel-border: rgb(72 67 60 / 0.9); + --panel-border-bare: rgb(72 67 60 / 0.55); + --panel-raised-bg: rgb(29 33 33 / 0.95); + --panel-raised-border: rgb(72 67 60 / 1); + --panel-accent: #d1f8f8; + --panel-header-bg: rgb(45 49 49 / 0.6); + --panel-header-fg: #f8d1aa; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1d2121; + --glass-bg: rgb(29 33 33 / 0.55); + --glass-border: rgb(72 67 60 / 0.7); + --dock-bg: rgb(29 33 33 / 0.7); + --dock-border: rgb(72 67 60 / 0.8); + --dock-tooltip-bg: #2d3131; + --header-bg: rgb(29 33 33 / 0.8); + --header-border: rgb(72 67 60 / 0.9); + --header-fg: #f8d1aa; + --header-blur: 12px; + --pixel-grid-color: rgb(128 112 95 / 0.07); + --card-grid-color: rgb(128 112 95 / 0.05); + --panel-grid-color: rgb(128 112 95 / 0.06); + --scrollbar-thumb: rgb(78 78 82 / 0.6); + --scrollbar-thumb-hover: rgb(78 78 82 / 0.85); + --scrollbar-thin-thumb: rgb(78 78 82 / 0.45); + --scrollbar-thin-thumb-hover: rgb(78 78 82 / 0.7); + --brand: #d1f8f8; + --brand-foreground: #101212; + --brand-primary: #d1f8f8; + --brand-accent: #aad1d1; + --brand-warm: #d96979; + --brand-deep: #101212; + --brand-muted: #4e4e52; + --ink: #f8d1aa; + --surface-warm: #1d2121; + --naturegreen: #5df85d; + --naturegreen-foreground: #101212; + --duck-dark: #f8d1aa; + --duck-teal: #aad1d1; + --duck-yellow: #bad094; + --duck-orange: #d96979; + --duck-forest: #5df85d; + --duck-beige: #33332f; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/koyanagi.css b/src/workspaces/theme/css/themes/koyanagi.css new file mode 100644 index 00000000..a166fa5d --- /dev/null +++ b/src/workspaces/theme/css/themes/koyanagi.css @@ -0,0 +1,97 @@ +/* + Koyanagi — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Dark theme (dark) — the source repo's own colors.toml says so directly. + + Source: https://github.com/YutaKoyanagi10/omarchy-koyanagi-theme (colors.toml (Omarchy schema)), read by scripts/port-community-themes.ts. Values + came straight from the repo's own colors.toml — the same schema and reader the official 22 themes + use, so nothing here is reconstructed. 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='koyanagi'] { + --background: #111113; + --foreground: #f2f2f2; + --card: #1c1c1e; + --card-foreground: #f2f2f2; + --popover: #1c1c1e; + --popover-foreground: #f2f2f2; + --muted: #2c2c2e; + --muted-foreground: #cccccc; + --accent: #2c2c2e; + --accent-foreground: #f2f2f2; + --primary: #ffdd80; + --primary-foreground: #111113; + --secondary: #2c2c2e; + --secondary-foreground: #f2f2f2; + --cta: #ffdd80; + --cta-foreground: #111113; + --ctahover: #ffe18f; + --success: #f2f2f2; + --success-foreground: #111113; + --warning: #ffdd80; + --warning-foreground: #111113; + --destructive: #f2f2f2; + --destructive-foreground: #111113; + --info: #7a7a7a; + --info-foreground: #0d0d0f; + --busy: #ffe9b3; + --busy-foreground: #111113; + --busy-ink: #ffe9b3; + --border: #4d4d4f; + --input: #4d4d4f; + --ring: #ffdd80; + --radius: 0.625rem; + --chart-primary: #ffdd80; + --chart-secondary: #8a8a8a; + --status-success: #f2f2f2; + --status-warning: #ffdd80; + --status-in-progress: #7a7a7a; + --page-bg: #111113; + --page-bg-src: ''; + --panel-bg: rgb(28 28 30 / 0.72); + --panel-border: rgb(77 77 79 / 0.9); + --panel-border-bare: rgb(77 77 79 / 0.55); + --panel-raised-bg: rgb(28 28 30 / 0.95); + --panel-raised-border: rgb(77 77 79 / 1); + --panel-accent: #ffdd80; + --panel-header-bg: rgb(44 44 46 / 0.6); + --panel-header-fg: #f2f2f2; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1c1c1e; + --glass-bg: rgb(28 28 30 / 0.55); + --glass-border: rgb(77 77 79 / 0.7); + --dock-bg: rgb(28 28 30 / 0.7); + --dock-border: rgb(77 77 79 / 0.8); + --dock-tooltip-bg: #2c2c2e; + --header-bg: rgb(28 28 30 / 0.8); + --header-border: rgb(77 77 79 / 0.9); + --header-fg: #f2f2f2; + --header-blur: 12px; + --pixel-grid-color: rgb(106 106 106 / 0.07); + --card-grid-color: rgb(106 106 106 / 0.05); + --panel-grid-color: rgb(106 106 106 / 0.06); + --scrollbar-thumb: rgb(106 106 106 / 0.6); + --scrollbar-thumb-hover: rgb(106 106 106 / 0.85); + --scrollbar-thin-thumb: rgb(106 106 106 / 0.45); + --scrollbar-thin-thumb-hover: rgb(106 106 106 / 0.7); + --brand: #ffdd80; + --brand-foreground: #111113; + --brand-primary: #ffdd80; + --brand-accent: #f2f2f2; + --brand-warm: #ffe9b3; + --brand-deep: #111113; + --brand-muted: #6a6a6a; + --ink: #f2f2f2; + --surface-warm: #1c1c1e; + --naturegreen: #f2f2f2; + --naturegreen-foreground: #111113; + --duck-dark: #f2f2f2; + --duck-teal: #f2f2f2; + --duck-yellow: #ffdd80; + --duck-orange: #ffe9b3; + --duck-forest: #f2f2f2; + --duck-beige: #313133; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/last-horizon.css b/src/workspaces/theme/css/themes/last-horizon.css index bb12e3b9..0d165121 100644 --- a/src/workspaces/theme/css/themes/last-horizon.css +++ b/src/workspaces/theme/css/themes/last-horizon.css @@ -8,31 +8,31 @@ */ [data-theme='last-horizon'] { --background: #060606; - --foreground: #FAFCFB; + --foreground: #fafcfb; --card: #0c0b0c; - --card-foreground: #FAFCFB; + --card-foreground: #fafcfb; --popover: #0c0b0c; - --popover-foreground: #FAFCFB; + --popover-foreground: #fafcfb; --muted: #0c0b0c; --muted-foreground: #cfd3cd; --accent: #0c0b0c; - --accent-foreground: #FAFCFB; + --accent-foreground: #fafcfb; --primary: #b59790; --primary-foreground: #060606; --secondary: #0c0b0c; - --secondary-foreground: #FAFCFB; + --secondary-foreground: #fafcfb; --cta: #b59790; --cta-foreground: #060606; --ctahover: #bea39d; --success: #87a9b0; --success-foreground: #060606; - --warning: #6B5E73; + --warning: #6b5e73; --warning-foreground: #e3dedd; --destructive: #c38b7b; --destructive-foreground: #060606; --info: #b59790; --info-foreground: #060606; - --busy: #6B5E73; + --busy: #6b5e73; --busy-foreground: #e3dedd; --busy-ink: #817688; --border: #434342; @@ -42,7 +42,7 @@ --chart-primary: #b59790; --chart-secondary: #c4d8e2; --status-success: #87a9b0; - --status-warning: #6B5E73; + --status-warning: #6b5e73; --status-in-progress: #b59790; --page-bg: #060606; --page-bg-src: ''; @@ -53,7 +53,7 @@ --panel-raised-border: rgb(67 67 66 / 1); --panel-accent: #b59790; --panel-header-bg: rgb(12 11 12 / 0.6); - --panel-header-fg: #FAFCFB; + --panel-header-fg: #fafcfb; --panel-radius: 0.75rem; --panel-blur: 12px; --card-bg: #0c0b0c; @@ -64,7 +64,7 @@ --dock-tooltip-bg: #0c0b0c; --header-bg: rgb(12 11 12 / 0.8); --header-border: rgb(67 67 66 / 0.9); - --header-fg: #FAFCFB; + --header-fg: #fafcfb; --header-blur: 12px; --pixel-grid-color: rgb(101 91 94 / 0.07); --card-grid-color: rgb(101 91 94 / 0.05); @@ -77,17 +77,17 @@ --brand-foreground: #060606; --brand-primary: #b59790; --brand-accent: #a5a0b6; - --brand-warm: #6B5E73; + --brand-warm: #6b5e73; --brand-deep: #060606; --brand-muted: #584e51; - --ink: #FAFCFB; + --ink: #fafcfb; --surface-warm: #0c0b0c; --naturegreen: #87a9b0; --naturegreen-foreground: #060606; - --duck-dark: #FAFCFB; + --duck-dark: #fafcfb; --duck-teal: #a5a0b6; - --duck-yellow: #6B5E73; - --duck-orange: #6B5E73; + --duck-yellow: #6b5e73; + --duck-orange: #6b5e73; --duck-forest: #87a9b0; --duck-beige: #242324; --logo-src: '/officer-logo.svg'; diff --git a/src/workspaces/theme/css/themes/matte-black.css b/src/workspaces/theme/css/themes/matte-black.css index d0bf0b6e..bb8f21b9 100644 --- a/src/workspaces/theme/css/themes/matte-black.css +++ b/src/workspaces/theme/css/themes/matte-black.css @@ -24,11 +24,11 @@ --cta: #e68e0d; --cta-foreground: #090909; --ctahover: #e99c2a; - --success: #FFC107; + --success: #ffc107; --success-foreground: #090909; --warning: #b91c1c; --warning-foreground: #d8d8d8; - --destructive: #D35F5F; + --destructive: #d35f5f; --destructive-foreground: #090909; --info: #e68e0d; --info-foreground: #090909; @@ -40,8 +40,8 @@ --ring: #e68e0d; --radius: 0.625rem; --chart-primary: #e68e0d; - --chart-secondary: #D35F5F; - --status-success: #FFC107; + --chart-secondary: #d35f5f; + --status-success: #ffc107; --status-warning: #b91c1c; --status-in-progress: #e68e0d; --page-bg: #090909; @@ -82,13 +82,13 @@ --brand-muted: #333333; --ink: #bebebe; --surface-warm: #121212; - --naturegreen: #FFC107; + --naturegreen: #ffc107; --naturegreen-foreground: #090909; --duck-dark: #bebebe; --duck-teal: #bebebe; --duck-yellow: #b91c1c; --duck-orange: #c63d3d; - --duck-forest: #FFC107; + --duck-forest: #ffc107; --duck-beige: #232323; --logo-src: '/officer-logo.svg'; } diff --git a/src/workspaces/theme/css/themes/monolith-2.css b/src/workspaces/theme/css/themes/monolith-2.css new file mode 100644 index 00000000..5d7992bc --- /dev/null +++ b/src/workspaces/theme/css/themes/monolith-2.css @@ -0,0 +1,97 @@ +/* + Monolith 2 — 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/grvsnh/omarchy-monolith-theme (colors.toml (16-colour ANSI)), 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='monolith-2'] { + --background: #151718; + --foreground: #eaeaea; + --card: #262a2c; + --card-foreground: #eaeaea; + --popover: #262a2c; + --popover-foreground: #eaeaea; + --muted: #35393b; + --muted-foreground: #afb0b1; + --accent: #35393b; + --accent-foreground: #eaeaea; + --primary: #f5f5f5; + --primary-foreground: #151718; + --secondary: #35393b; + --secondary-foreground: #eaeaea; + --cta: #f5f5f5; + --cta-foreground: #151718; + --ctahover: #f6f6f6; + --success: #bebebe; + --success-foreground: #151718; + --warning: #e0e0e0; + --warning-foreground: #151718; + --destructive: #6b6c6d; + --destructive-foreground: #eeeeee; + --info: #cfcfcf; + --info-foreground: #151718; + --busy: #a6a6a7; + --busy-foreground: #151718; + --busy-ink: #a6a6a7; + --border: #4c5051; + --input: #4c5051; + --ring: #f5f5f5; + --radius: 0.625rem; + --chart-primary: #f5f5f5; + --chart-secondary: #d6d6d6; + --status-success: #bebebe; + --status-warning: #e0e0e0; + --status-in-progress: #cfcfcf; + --page-bg: #151718; + --page-bg-src: ''; + --panel-bg: rgb(38 42 44 / 0.72); + --panel-border: rgb(76 80 81 / 0.9); + --panel-border-bare: rgb(76 80 81 / 0.55); + --panel-raised-bg: rgb(38 42 44 / 0.95); + --panel-raised-border: rgb(76 80 81 / 1); + --panel-accent: #f5f5f5; + --panel-header-bg: rgb(53 57 59 / 0.6); + --panel-header-fg: #eaeaea; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #262a2c; + --glass-bg: rgb(38 42 44 / 0.55); + --glass-border: rgb(76 80 81 / 0.7); + --dock-bg: rgb(38 42 44 / 0.7); + --dock-border: rgb(76 80 81 / 0.8); + --dock-tooltip-bg: #35393b; + --header-bg: rgb(38 42 44 / 0.8); + --header-border: rgb(76 80 81 / 0.9); + --header-fg: #eaeaea; + --header-blur: 12px; + --pixel-grid-color: rgb(126 128 130 / 0.07); + --card-grid-color: rgb(126 128 130 / 0.05); + --panel-grid-color: rgb(126 128 130 / 0.06); + --scrollbar-thumb: rgb(116 119 120 / 0.6); + --scrollbar-thumb-hover: rgb(116 119 120 / 0.85); + --scrollbar-thin-thumb: rgb(116 119 120 / 0.45); + --scrollbar-thin-thumb-hover: rgb(116 119 120 / 0.7); + --brand: #f5f5f5; + --brand-foreground: #151718; + --brand-primary: #f5f5f5; + --brand-accent: #e0e0e0; + --brand-warm: #a6a6a7; + --brand-deep: #151718; + --brand-muted: #747778; + --ink: #eaeaea; + --surface-warm: #262a2c; + --naturegreen: #bebebe; + --naturegreen-foreground: #151718; + --duck-dark: #eaeaea; + --duck-teal: #e0e0e0; + --duck-yellow: #e0e0e0; + --duck-orange: #a6a6a7; + --duck-forest: #bebebe; + --duck-beige: #3a3d3f; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/moodpeak.css b/src/workspaces/theme/css/themes/moodpeak.css new file mode 100644 index 00000000..f3ba8969 --- /dev/null +++ b/src/workspaces/theme/css/themes/moodpeak.css @@ -0,0 +1,97 @@ +/* + Moodpeak — 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/HANCORE-linux/omarchy-moodpeak-theme (colors.toml (16-colour ANSI)), 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='moodpeak'] { + --background: #0d0f13; + --foreground: #e0e6ed; + --card: #181c22; + --card-foreground: #e0e6ed; + --popover: #181c22; + --popover-foreground: #e0e6ed; + --muted: #282c31; + --muted-foreground: #a4a9b0; + --accent: #282c31; + --accent-foreground: #e0e6ed; + --primary: #a5f5ff; + --primary-foreground: #0d0f13; + --secondary: #282c31; + --secondary-foreground: #e0e6ed; + --cta: #a5f5ff; + --cta-foreground: #0d0f13; + --ctahover: #b0f6ff; + --success: #4ecdc4; + --success-foreground: #0d0f13; + --warning: #82eeff; + --warning-foreground: #0d0f13; + --destructive: #ff7b92; + --destructive-foreground: #0d0f13; + --info: #6a85ff; + --info-foreground: #0d0f13; + --busy: #c1b5c9; + --busy-foreground: #0d0f13; + --busy-ink: #c1b5c9; + --border: #3f434a; + --input: #3f434a; + --ring: #a5f5ff; + --radius: 0.625rem; + --chart-primary: #a5f5ff; + --chart-secondary: #b388eb; + --status-success: #4ecdc4; + --status-warning: #82eeff; + --status-in-progress: #6a85ff; + --page-bg: #0d0f13; + --page-bg-src: ''; + --panel-bg: rgb(24 28 34 / 0.72); + --panel-border: rgb(63 67 74 / 0.9); + --panel-border-bare: rgb(63 67 74 / 0.55); + --panel-raised-bg: rgb(24 28 34 / 0.95); + --panel-raised-border: rgb(63 67 74 / 1); + --panel-accent: #a5f5ff; + --panel-header-bg: rgb(40 44 49 / 0.6); + --panel-header-fg: #e0e6ed; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #181c22; + --glass-bg: rgb(24 28 34 / 0.55); + --glass-border: rgb(63 67 74 / 0.7); + --dock-bg: rgb(24 28 34 / 0.7); + --dock-border: rgb(63 67 74 / 0.8); + --dock-tooltip-bg: #282c31; + --header-bg: rgb(24 28 34 / 0.8); + --header-border: rgb(63 67 74 / 0.9); + --header-fg: #e0e6ed; + --header-blur: 12px; + --pixel-grid-color: rgb(114 119 125 / 0.07); + --card-grid-color: rgb(114 119 125 / 0.05); + --panel-grid-color: rgb(114 119 125 / 0.06); + --scrollbar-thumb: rgb(61 68 85 / 0.6); + --scrollbar-thumb-hover: rgb(61 68 85 / 0.85); + --scrollbar-thin-thumb: rgb(61 68 85 / 0.45); + --scrollbar-thin-thumb-hover: rgb(61 68 85 / 0.7); + --brand: #a5f5ff; + --brand-foreground: #0d0f13; + --brand-primary: #a5f5ff; + --brand-accent: #c9aff0; + --brand-warm: #c1b5c9; + --brand-deep: #0d0f13; + --brand-muted: #3d4455; + --ink: #e0e6ed; + --surface-warm: #181c22; + --naturegreen: #4ecdc4; + --naturegreen-foreground: #0d0f13; + --duck-dark: #e0e6ed; + --duck-teal: #c9aff0; + --duck-yellow: #82eeff; + --duck-orange: #c1b5c9; + --duck-forest: #4ecdc4; + --duck-beige: #2c3036; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/nes.css b/src/workspaces/theme/css/themes/nes.css new file mode 100644 index 00000000..2b1f0f05 --- /dev/null +++ b/src/workspaces/theme/css/themes/nes.css @@ -0,0 +1,97 @@ +/* + Nes — 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/bjarneo/omarchy-nes-theme (colors.toml (16-colour ANSI)), 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='nes'] { + --background: #090909; + --foreground: #cecfc9; + --card: #101010; + --card-foreground: #cecfc9; + --popover: #101010; + --popover-foreground: #cecfc9; + --muted: #212121; + --muted-foreground: #959692; + --accent: #212121; + --accent-foreground: #cecfc9; + --primary: #cecfc9; + --primary-foreground: #090909; + --secondary: #212121; + --secondary-foreground: #cecfc9; + --cta: #cecfc9; + --cta-foreground: #090909; + --ctahover: #d4d5cf; + --success: #9a9d9a; + --success-foreground: #090909; + --warning: #9a9d9a; + --warning-foreground: #090909; + --destructive: #d93f37; + --destructive-foreground: #070707; + --info: #9a9d9a; + --info-foreground: #090909; + --busy: #ba6e69; + --busy-foreground: #090909; + --busy-ink: #ba6e69; + --border: #353634; + --input: #353634; + --ring: #cecfc9; + --radius: 0.625rem; + --chart-primary: #cecfc9; + --chart-secondary: #d93f37; + --status-success: #9a9d9a; + --status-warning: #9a9d9a; + --status-in-progress: #9a9d9a; + --page-bg: #090909; + --page-bg-src: ''; + --panel-bg: rgb(16 16 16 / 0.72); + --panel-border: rgb(53 54 52 / 0.9); + --panel-border-bare: rgb(53 54 52 / 0.55); + --panel-raised-bg: rgb(16 16 16 / 0.95); + --panel-raised-border: rgb(53 54 52 / 1); + --panel-accent: #cecfc9; + --panel-header-bg: rgb(33 33 33 / 0.6); + --panel-header-fg: #cecfc9; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #101010; + --glass-bg: rgb(16 16 16 / 0.55); + --glass-border: rgb(53 54 52 / 0.7); + --dock-bg: rgb(16 16 16 / 0.7); + --dock-border: rgb(53 54 52 / 0.8); + --dock-tooltip-bg: #212121; + --header-bg: rgb(16 16 16 / 0.8); + --header-border: rgb(53 54 52 / 0.9); + --header-fg: #cecfc9; + --header-blur: 12px; + --pixel-grid-color: rgb(101 102 99 / 0.07); + --card-grid-color: rgb(101 102 99 / 0.05); + --panel-grid-color: rgb(101 102 99 / 0.06); + --scrollbar-thumb: rgb(154 157 154 / 0.6); + --scrollbar-thumb-hover: rgb(154 157 154 / 0.85); + --scrollbar-thin-thumb: rgb(154 157 154 / 0.45); + --scrollbar-thin-thumb-hover: rgb(154 157 154 / 0.7); + --brand: #cecfc9; + --brand-foreground: #090909; + --brand-primary: #cecfc9; + --brand-accent: #9a9d9a; + --brand-warm: #ba6e69; + --brand-deep: #090909; + --brand-muted: #9a9d9a; + --ink: #cecfc9; + --surface-warm: #101010; + --naturegreen: #9a9d9a; + --naturegreen-foreground: #090909; + --duck-dark: #cecfc9; + --duck-teal: #9a9d9a; + --duck-yellow: #9a9d9a; + --duck-orange: #ba6e69; + --duck-forest: #9a9d9a; + --duck-beige: #232323; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/one-dark-pro.css b/src/workspaces/theme/css/themes/one-dark-pro.css new file mode 100644 index 00000000..28348699 --- /dev/null +++ b/src/workspaces/theme/css/themes/one-dark-pro.css @@ -0,0 +1,97 @@ +/* + One Dark Pro — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Dark theme (dark) — the source repo's own colors.toml says so directly. + + Source: https://github.com/sc0ttman/omarchy-one-dark-pro (colors.toml (Omarchy schema)), read by scripts/port-community-themes.ts. Values + came straight from the repo's own colors.toml — the same schema and reader the official 22 themes + use, so nothing here is reconstructed. 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='one-dark-pro'] { + --background: #181a1f; + --foreground: #abb2bf; + --card: #282c34; + --card-foreground: #abb2bf; + --popover: #282c34; + --popover-foreground: #abb2bf; + --muted: #3e4451; + --muted-foreground: #acb2bb; + --accent: #3e4451; + --accent-foreground: #abb2bf; + --primary: #61afef; + --primary-foreground: #181a1f; + --secondary: #3e4451; + --secondary-foreground: #abb2bf; + --cta: #61afef; + --cta-foreground: #181a1f; + --ctahover: #74b9f1; + --success: #98c379; + --success-foreground: #181a1f; + --warning: #e5c07b; + --warning-foreground: #181a1f; + --destructive: #e06c75; + --destructive-foreground: #181a1f; + --info: #61afef; + --info-foreground: #181a1f; + --busy: #d19a66; + --busy-foreground: #181a1f; + --busy-ink: #d19a66; + --border: #484d56; + --input: #484d56; + --ring: #61afef; + --radius: 0.625rem; + --chart-primary: #61afef; + --chart-secondary: #c678dd; + --status-success: #98c379; + --status-warning: #e5c07b; + --status-in-progress: #61afef; + --page-bg: #181a1f; + --page-bg-src: ''; + --panel-bg: rgb(40 44 52 / 0.72); + --panel-border: rgb(72 77 86 / 0.9); + --panel-border-bare: rgb(72 77 86 / 0.55); + --panel-raised-bg: rgb(40 44 52 / 0.95); + --panel-raised-border: rgb(72 77 86 / 1); + --panel-accent: #61afef; + --panel-header-bg: rgb(62 68 81 / 0.6); + --panel-header-fg: #abb2bf; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #282c34; + --glass-bg: rgb(40 44 52 / 0.55); + --glass-border: rgb(72 77 86 / 0.7); + --dock-bg: rgb(40 44 52 / 0.7); + --dock-border: rgb(72 77 86 / 0.8); + --dock-tooltip-bg: #3e4451; + --header-bg: rgb(40 44 52 / 0.8); + --header-border: rgb(72 77 86 / 0.9); + --header-fg: #abb2bf; + --header-blur: 12px; + --pixel-grid-color: rgb(112 119 130 / 0.07); + --card-grid-color: rgb(112 119 130 / 0.05); + --panel-grid-color: rgb(112 119 130 / 0.06); + --scrollbar-thumb: rgb(92 99 112 / 0.6); + --scrollbar-thumb-hover: rgb(92 99 112 / 0.85); + --scrollbar-thin-thumb: rgb(92 99 112 / 0.45); + --scrollbar-thin-thumb-hover: rgb(92 99 112 / 0.7); + --brand: #61afef; + --brand-foreground: #181a1f; + --brand-primary: #61afef; + --brand-accent: #56b6c2; + --brand-warm: #d19a66; + --brand-deep: #181a1f; + --brand-muted: #5c6370; + --ink: #abb2bf; + --surface-warm: #282c34; + --naturegreen: #98c379; + --naturegreen-foreground: #181a1f; + --duck-dark: #abb2bf; + --duck-teal: #56b6c2; + --duck-yellow: #e5c07b; + --duck-orange: #d19a66; + --duck-forest: #98c379; + --duck-beige: #353942; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/osaka-jade.css b/src/workspaces/theme/css/themes/osaka-jade.css index 7d81700d..1dd395ff 100644 --- a/src/workspaces/theme/css/themes/osaka-jade.css +++ b/src/workspaces/theme/css/themes/osaka-jade.css @@ -8,19 +8,19 @@ */ [data-theme='osaka-jade'] { --background: #090f0d; - --foreground: #C1C497; + --foreground: #c1c497; --card: #111c18; - --card-foreground: #C1C497; + --card-foreground: #c1c497; --popover: #111c18; - --popover-foreground: #C1C497; - --muted: #23372B; - --muted-foreground: #D6D5BC; - --accent: #23372B; - --accent-foreground: #C1C497; + --popover-foreground: #c1c497; + --muted: #23372b; + --muted-foreground: #d6d5bc; + --accent: #23372b; + --accent-foreground: #c1c497; --primary: #509475; --primary-foreground: #090f0d; - --secondary: #23372B; - --secondary-foreground: #C1C497; + --secondary: #23372b; + --secondary-foreground: #c1c497; --cta: #509475; --cta-foreground: #090f0d; --ctahover: #65a186; @@ -28,7 +28,7 @@ --success-foreground: #090f0d; --warning: #459451; --warning-foreground: #090f0d; - --destructive: #FF5345; + --destructive: #ff5345; --destructive-foreground: #090f0d; --info: #509475; --info-foreground: #090f0d; @@ -40,7 +40,7 @@ --ring: #509475; --radius: 0.625rem; --chart-primary: #509475; - --chart-secondary: #D2689C; + --chart-secondary: #d2689c; --status-success: #549e6a; --status-warning: #459451; --status-in-progress: #509475; @@ -53,7 +53,7 @@ --panel-raised-border: rgb(72 80 70 / 1); --panel-accent: #509475; --panel-header-bg: rgb(35 55 43 / 0.6); - --panel-header-fg: #C1C497; + --panel-header-fg: #c1c497; --panel-radius: 0.75rem; --panel-blur: 12px; --card-bg: #111c18; @@ -61,10 +61,10 @@ --glass-border: rgb(72 80 70 / 0.7); --dock-bg: rgb(17 28 24 / 0.7); --dock-border: rgb(72 80 70 / 0.8); - --dock-tooltip-bg: #23372B; + --dock-tooltip-bg: #23372b; --header-bg: rgb(17 28 24 / 0.8); --header-border: rgb(72 80 70 / 0.9); - --header-fg: #C1C497; + --header-fg: #c1c497; --header-blur: 12px; --pixel-grid-color: rgb(129 184 168 / 0.07); --card-grid-color: rgb(129 184 168 / 0.05); @@ -76,16 +76,16 @@ --brand: #509475; --brand-foreground: #090f0d; --brand-primary: #509475; - --brand-accent: #2DD5B7; + --brand-accent: #2dd5b7; --brand-warm: #a2734b; --brand-deep: #090f0d; - --brand-muted: #53685B; - --ink: #C1C497; + --brand-muted: #53685b; + --ink: #c1c497; --surface-warm: #111c18; --naturegreen: #549e6a; --naturegreen-foreground: #090f0d; - --duck-dark: #C1C497; - --duck-teal: #2DD5B7; + --duck-dark: #c1c497; + --duck-teal: #2dd5b7; --duck-yellow: #459451; --duck-orange: #a2734b; --duck-forest: #549e6a; diff --git a/src/workspaces/theme/css/themes/pina.css b/src/workspaces/theme/css/themes/pina.css new file mode 100644 index 00000000..14c5a255 --- /dev/null +++ b/src/workspaces/theme/css/themes/pina.css @@ -0,0 +1,97 @@ +/* + Pina — 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/bjarneo/omarchy-pina-theme (colors.toml (16-colour ANSI)), 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='pina'] { + --background: #0d0e0d; + --foreground: #d4d5d5; + --card: #171a18; + --card-foreground: #d4d5d5; + --popover: #171a18; + --popover-foreground: #d4d5d5; + --muted: #272a28; + --muted-foreground: #9b9d9c; + --accent: #272a28; + --accent-foreground: #d4d5d5; + --primary: #d8f5d8; + --primary-foreground: #0d0e0d; + --secondary: #272a28; + --secondary-foreground: #d4d5d5; + --cta: #d8f5d8; + --cta-foreground: #0d0e0d; + --ctahover: #ddf6dd; + --success: #b8c082; + --success-foreground: #0d0e0d; + --warning: #e0d480; + --warning-foreground: #0d0e0d; + --destructive: #7db085; + --destructive-foreground: #0d0e0d; + --info: #7dd2b8; + --info-foreground: #0d0e0d; + --busy: #afc283; + --busy-foreground: #0d0e0d; + --busy-ink: #afc283; + --border: #3c3f3d; + --input: #3c3f3d; + --ring: #d8f5d8; + --radius: 0.625rem; + --chart-primary: #d8f5d8; + --chart-secondary: #b5c9a4; + --status-success: #b8c082; + --status-warning: #e0d480; + --status-in-progress: #7dd2b8; + --page-bg: #0d0e0d; + --page-bg-src: ''; + --panel-bg: rgb(23 26 24 / 0.72); + --panel-border: rgb(60 63 61 / 0.9); + --panel-border-bare: rgb(60 63 61 / 0.55); + --panel-raised-bg: rgb(23 26 24 / 0.95); + --panel-raised-border: rgb(60 63 61 / 1); + --panel-accent: #d8f5d8; + --panel-header-bg: rgb(39 42 40 / 0.6); + --panel-header-fg: #d4d5d5; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #171a18; + --glass-bg: rgb(23 26 24 / 0.55); + --glass-border: rgb(60 63 61 / 0.7); + --dock-bg: rgb(23 26 24 / 0.7); + --dock-border: rgb(60 63 61 / 0.8); + --dock-tooltip-bg: #272a28; + --header-bg: rgb(23 26 24 / 0.8); + --header-border: rgb(60 63 61 / 0.9); + --header-fg: #d4d5d5; + --header-blur: 12px; + --pixel-grid-color: rgb(108 110 109 / 0.07); + --card-grid-color: rgb(108 110 109 / 0.05); + --panel-grid-color: rgb(108 110 109 / 0.06); + --scrollbar-thumb: rgb(107 128 113 / 0.6); + --scrollbar-thumb-hover: rgb(107 128 113 / 0.85); + --scrollbar-thin-thumb: rgb(107 128 113 / 0.45); + --scrollbar-thin-thumb-hover: rgb(107 128 113 / 0.7); + --brand: #d8f5d8; + --brand-foreground: #0d0e0d; + --brand-primary: #d8f5d8; + --brand-accent: #c5e8c5; + --brand-warm: #afc283; + --brand-deep: #0d0e0d; + --brand-muted: #6b8071; + --ink: #d4d5d5; + --surface-warm: #171a18; + --naturegreen: #b8c082; + --naturegreen-foreground: #0d0e0d; + --duck-dark: #d4d5d5; + --duck-teal: #c5e8c5; + --duck-yellow: #e0d480; + --duck-orange: #afc283; + --duck-forest: #b8c082; + --duck-beige: #2a2d2b; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/pmndrs.css b/src/workspaces/theme/css/themes/pmndrs.css new file mode 100644 index 00000000..23caa365 --- /dev/null +++ b/src/workspaces/theme/css/themes/pmndrs.css @@ -0,0 +1,97 @@ +/* + Pmndrs — 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/leweyse/omarchy-pmndrs-theme (colors.toml (16-colour ANSI)), 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='pmndrs'] { + --background: #0f1116; + --foreground: #a6accd; + --card: #1b1e28; + --card-foreground: #a6accd; + --popover: #1b1e28; + --popover-foreground: #a6accd; + --muted: #2b2e37; + --muted-foreground: #9094ab; + --accent: #2b2e37; + --accent-foreground: #a6accd; + --primary: #add7ff; + --primary-foreground: #0f1116; + --secondary: #2b2e37; + --secondary-foreground: #a6accd; + --cta: #add7ff; + --cta-foreground: #0f1116; + --ctahover: #b7dcff; + --success: #5de4c7; + --success-foreground: #0f1116; + --warning: #fffac2; + --warning-foreground: #0f1116; + --destructive: #d0679d; + --destructive-foreground: #0f1116; + --info: #89ddff; + --info-foreground: #0f1116; + --busy: #e8b1b0; + --busy-foreground: #0f1116; + --busy-ink: #e8b1b0; + --border: #363a48; + --input: #363a48; + --ring: #add7ff; + --radius: 0.625rem; + --chart-primary: #add7ff; + --chart-secondary: #d2a6ff; + --status-success: #5de4c7; + --status-warning: #fffac2; + --status-in-progress: #89ddff; + --page-bg: #0f1116; + --page-bg-src: ''; + --panel-bg: rgb(27 30 40 / 0.72); + --panel-border: rgb(54 58 72 / 0.9); + --panel-border-bare: rgb(54 58 72 / 0.55); + --panel-raised-bg: rgb(27 30 40 / 0.95); + --panel-raised-border: rgb(54 58 72 / 1); + --panel-accent: #add7ff; + --panel-header-bg: rgb(43 46 55 / 0.6); + --panel-header-fg: #a6accd; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #1b1e28; + --glass-bg: rgb(27 30 40 / 0.55); + --glass-border: rgb(54 58 72 / 0.7); + --dock-bg: rgb(27 30 40 / 0.7); + --dock-border: rgb(54 58 72 / 0.8); + --dock-tooltip-bg: #2b2e37; + --header-bg: rgb(27 30 40 / 0.8); + --header-border: rgb(54 58 72 / 0.9); + --header-fg: #a6accd; + --header-blur: 12px; + --pixel-grid-color: rgb(102 106 125 / 0.07); + --card-grid-color: rgb(102 106 125 / 0.05); + --panel-grid-color: rgb(102 106 125 / 0.06); + --scrollbar-thumb: rgb(108 111 147 / 0.6); + --scrollbar-thumb-hover: rgb(108 111 147 / 0.85); + --scrollbar-thin-thumb: rgb(108 111 147 / 0.45); + --scrollbar-thin-thumb-hover: rgb(108 111 147 / 0.7); + --brand: #add7ff; + --brand-foreground: #0f1116; + --brand-primary: #add7ff; + --brand-accent: #add7ff; + --brand-warm: #e8b1b0; + --brand-deep: #0f1116; + --brand-muted: #6c6f93; + --ink: #a6accd; + --surface-warm: #1b1e28; + --naturegreen: #5de4c7; + --naturegreen-foreground: #0f1116; + --duck-dark: #a6accd; + --duck-teal: #add7ff; + --duck-yellow: #fffac2; + --duck-orange: #e8b1b0; + --duck-forest: #5de4c7; + --duck-beige: #292c39; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/reverie.css b/src/workspaces/theme/css/themes/reverie.css new file mode 100644 index 00000000..d2ff256d --- /dev/null +++ b/src/workspaces/theme/css/themes/reverie.css @@ -0,0 +1,97 @@ +/* + Reverie — 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/bjarneo/omarchy-reverie-theme (colors.toml (16-colour ANSI)), 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='reverie'] { + --background: #090f1f; + --foreground: #d8e0f2; + --card: #101c38; + --card-foreground: #d8e0f2; + --popover: #101c38; + --popover-foreground: #d8e0f2; + --muted: #212c46; + --muted-foreground: #9ca5ba; + --accent: #212c46; + --accent-foreground: #d8e0f2; + --primary: #85d8da; + --primary-foreground: #090f1f; + --secondary: #212c46; + --secondary-foreground: #d8e0f2; + --cta: #85d8da; + --cta-foreground: #090f1f; + --ctahover: #94ddde; + --success: #6ca994; + --success-foreground: #090f1f; + --warning: #f4a261; + --warning-foreground: #090f1f; + --destructive: #e56b6f; + --destructive-foreground: #090f1f; + --info: #587ea8; + --info-foreground: #090f1f; + --busy: #ed8768; + --busy-foreground: #090f1f; + --busy-ink: #ed8768; + --border: #37425c; + --input: #37425c; + --ring: #85d8da; + --radius: 0.625rem; + --chart-primary: #85d8da; + --chart-secondary: #b479a3; + --status-success: #6ca994; + --status-warning: #f4a261; + --status-in-progress: #587ea8; + --page-bg: #090f1f; + --page-bg-src: ''; + --panel-bg: rgb(16 28 56 / 0.72); + --panel-border: rgb(55 66 92 / 0.9); + --panel-border-bare: rgb(55 66 92 / 0.55); + --panel-raised-bg: rgb(16 28 56 / 0.95); + --panel-raised-border: rgb(55 66 92 / 1); + --panel-accent: #85d8da; + --panel-header-bg: rgb(33 44 70 / 0.6); + --panel-header-fg: #d8e0f2; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #101c38; + --glass-bg: rgb(16 28 56 / 0.55); + --glass-border: rgb(55 66 92 / 0.7); + --dock-bg: rgb(16 28 56 / 0.7); + --dock-border: rgb(55 66 92 / 0.8); + --dock-tooltip-bg: #212c46; + --header-bg: rgb(16 28 56 / 0.8); + --header-border: rgb(55 66 92 / 0.9); + --header-fg: #d8e0f2; + --header-blur: 12px; + --pixel-grid-color: rgb(106 116 140 / 0.07); + --card-grid-color: rgb(106 116 140 / 0.05); + --panel-grid-color: rgb(106 116 140 / 0.06); + --scrollbar-thumb: rgb(75 90 128 / 0.6); + --scrollbar-thumb-hover: rgb(75 90 128 / 0.85); + --scrollbar-thin-thumb: rgb(75 90 128 / 0.45); + --scrollbar-thin-thumb-hover: rgb(75 90 128 / 0.7); + --brand: #85d8da; + --brand-foreground: #090f1f; + --brand-primary: #85d8da; + --brand-accent: #6dc2c5; + --brand-warm: #ed8768; + --brand-deep: #090f1f; + --brand-muted: #4b5a80; + --ink: #d8e0f2; + --surface-warm: #101c38; + --naturegreen: #6ca994; + --naturegreen-foreground: #090f1f; + --duck-dark: #d8e0f2; + --duck-teal: #6dc2c5; + --duck-yellow: #f4a261; + --duck-orange: #ed8768; + --duck-forest: #6ca994; + --duck-beige: #24304b; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/rose-pine-dark.css b/src/workspaces/theme/css/themes/rose-pine-dark.css new file mode 100644 index 00000000..367ee9ee --- /dev/null +++ b/src/workspaces/theme/css/themes/rose-pine-dark.css @@ -0,0 +1,97 @@ +/* + Rose Pine Dark — 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/guilhermetk/omarchy-rose-pine-dark (colors.toml (16-colour ANSI)), 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='rose-pine-dark'] { + --background: #0e0d14; + --foreground: #e0def4; + --card: #191724; + --card-foreground: #e0def4; + --popover: #191724; + --popover-foreground: #e0def4; + --muted: #292733; + --muted-foreground: #a4a2b6; + --accent: #292733; + --accent-foreground: #e0def4; + --primary: #ebbcba; + --primary-foreground: #0e0d14; + --secondary: #292733; + --secondary-foreground: #e0def4; + --cta: #ebbcba; + --cta-foreground: #0e0d14; + --ctahover: #edc4c2; + --success: #31748f; + --success-foreground: #eeedf9; + --warning: #f6c177; + --warning-foreground: #0e0d14; + --destructive: #eb6f92; + --destructive-foreground: #0e0d14; + --info: #9ccfd8; + --info-foreground: #0e0d14; + --busy: #f19885; + --busy-foreground: #0e0d14; + --busy-ink: #f19885; + --border: #403e4d; + --input: #403e4d; + --ring: #ebbcba; + --radius: 0.625rem; + --chart-primary: #ebbcba; + --chart-secondary: #c4a7e7; + --status-success: #31748f; + --status-warning: #f6c177; + --status-in-progress: #9ccfd8; + --page-bg: #0e0d14; + --page-bg-src: ''; + --panel-bg: rgb(25 23 36 / 0.72); + --panel-border: rgb(64 62 77 / 0.9); + --panel-border-bare: rgb(64 62 77 / 0.55); + --panel-raised-bg: rgb(25 23 36 / 0.95); + --panel-raised-border: rgb(64 62 77 / 1); + --panel-accent: #ebbcba; + --panel-header-bg: rgb(41 39 51 / 0.6); + --panel-header-fg: #e0def4; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #191724; + --glass-bg: rgb(25 23 36 / 0.55); + --glass-border: rgb(64 62 77 / 0.7); + --dock-bg: rgb(25 23 36 / 0.7); + --dock-border: rgb(64 62 77 / 0.8); + --dock-tooltip-bg: #292733; + --header-bg: rgb(25 23 36 / 0.8); + --header-border: rgb(64 62 77 / 0.9); + --header-fg: #e0def4; + --header-blur: 12px; + --pixel-grid-color: rgb(115 113 130 / 0.07); + --card-grid-color: rgb(115 113 130 / 0.05); + --panel-grid-color: rgb(115 113 130 / 0.06); + --scrollbar-thumb: rgb(110 106 134 / 0.6); + --scrollbar-thumb-hover: rgb(110 106 134 / 0.85); + --scrollbar-thin-thumb: rgb(110 106 134 / 0.45); + --scrollbar-thin-thumb-hover: rgb(110 106 134 / 0.7); + --brand: #ebbcba; + --brand-foreground: #0e0d14; + --brand-primary: #ebbcba; + --brand-accent: #ebbcba; + --brand-warm: #f19885; + --brand-deep: #0e0d14; + --brand-muted: #6e6a86; + --ink: #e0def4; + --surface-warm: #191724; + --naturegreen: #31748f; + --naturegreen-foreground: #eeedf9; + --duck-dark: #e0def4; + --duck-teal: #ebbcba; + --duck-yellow: #f6c177; + --duck-orange: #f19885; + --duck-forest: #31748f; + --duck-beige: #2d2b39; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/saga.css b/src/workspaces/theme/css/themes/saga.css new file mode 100644 index 00000000..4af8fc13 --- /dev/null +++ b/src/workspaces/theme/css/themes/saga.css @@ -0,0 +1,97 @@ +/* + Saga — 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/HANCORE-linux/omarchy-saga-theme (colors.toml (16-colour ANSI)), 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='saga'] { + --background: #030406; + --foreground: #fff6ff; + --card: #05080a; + --card-foreground: #fff6ff; + --popover: #05080a; + --popover-foreground: #fff6ff; + --muted: #17191b; + --muted-foreground: #b4afb6; + --accent: #17191b; + --accent-foreground: #fff6ff; + --primary: #b2fff3; + --primary-foreground: #030406; + --secondary: #17191b; + --secondary-foreground: #fff6ff; + --cta: #b2fff3; + --cta-foreground: #030406; + --ctahover: #bbfff4; + --success: #baf7b5; + --success-foreground: #030406; + --warning: #fff6c3; + --warning-foreground: #030406; + --destructive: #ff9fbc; + --destructive-foreground: #030406; + --info: #b2fff3; + --info-foreground: #030406; + --busy: #ffcbc0; + --busy-foreground: #030406; + --busy-ink: #ffcbc0; + --border: #36373a; + --input: #36373a; + --ring: #b2fff3; + --radius: 0.625rem; + --chart-primary: #b2fff3; + --chart-secondary: #dfbaff; + --status-success: #baf7b5; + --status-warning: #fff6c3; + --status-in-progress: #b2fff3; + --page-bg: #030406; + --page-bg-src: ''; + --panel-bg: rgb(5 8 10 / 0.72); + --panel-border: rgb(54 55 58 / 0.9); + --panel-border-bare: rgb(54 55 58 / 0.55); + --panel-raised-bg: rgb(5 8 10 / 0.95); + --panel-raised-border: rgb(54 55 58 / 1); + --panel-accent: #b2fff3; + --panel-header-bg: rgb(23 25 27 / 0.6); + --panel-header-fg: #fff6ff; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #05080a; + --glass-bg: rgb(5 8 10 / 0.55); + --glass-border: rgb(54 55 58 / 0.7); + --dock-bg: rgb(5 8 10 / 0.7); + --dock-border: rgb(54 55 58 / 0.8); + --dock-tooltip-bg: #17191b; + --header-bg: rgb(5 8 10 / 0.8); + --header-border: rgb(54 55 58 / 0.9); + --header-fg: #fff6ff; + --header-blur: 12px; + --pixel-grid-color: rgb(118 115 120 / 0.07); + --card-grid-color: rgb(118 115 120 / 0.05); + --panel-grid-color: rgb(118 115 120 / 0.06); + --scrollbar-thumb: rgb(75 76 77 / 0.6); + --scrollbar-thumb-hover: rgb(75 76 77 / 0.85); + --scrollbar-thin-thumb: rgb(75 76 77 / 0.45); + --scrollbar-thin-thumb-hover: rgb(75 76 77 / 0.7); + --brand: #b2fff3; + --brand-foreground: #030406; + --brand-primary: #b2fff3; + --brand-accent: #ffc79b; + --brand-warm: #ffcbc0; + --brand-deep: #030406; + --brand-muted: #4b4c4d; + --ink: #fff6ff; + --surface-warm: #05080a; + --naturegreen: #baf7b5; + --naturegreen-foreground: #030406; + --duck-dark: #fff6ff; + --duck-teal: #ffc79b; + --duck-yellow: #fff6c3; + --duck-orange: #ffcbc0; + --duck-forest: #baf7b5; + --duck-beige: #1e2023; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/sakura.css b/src/workspaces/theme/css/themes/sakura.css new file mode 100644 index 00000000..26b81bb2 --- /dev/null +++ b/src/workspaces/theme/css/themes/sakura.css @@ -0,0 +1,97 @@ +/* + Sakura — 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/bjarneo/omarchy-sakura-theme (colors.toml (16-colour ANSI)), 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='sakura'] { + --background: #070305; + --foreground: #f0eaed; + --card: #0d0509; + --card-foreground: #f0eaed; + --popover: #0d0509; + --popover-foreground: #f0eaed; + --muted: #1e171a; + --muted-foreground: #aca5a9; + --accent: #1e171a; + --accent-foreground: #f0eaed; + --primary: #fbd2ab; + --primary-foreground: #070305; + --secondary: #1e171a; + --secondary-foreground: #f0eaed; + --cta: #fbd2ab; + --cta-foreground: #070305; + --ctahover: #fbd7b5; + --success: #f29b9a; + --success-foreground: #070305; + --warning: #d4a882; + --warning-foreground: #070305; + --destructive: #e85f6f; + --destructive-foreground: #070305; + --info: #d9a56c; + --info-foreground: #070305; + --busy: #de8479; + --busy-foreground: #070305; + --busy-ink: #de8479; + --border: #3a3236; + --input: #3a3236; + --ring: #fbd2ab; + --radius: 0.625rem; + --chart-primary: #fbd2ab; + --chart-secondary: #d1b399; + --status-success: #f29b9a; + --status-warning: #d4a882; + --status-in-progress: #d9a56c; + --page-bg: #070305; + --page-bg-src: ''; + --panel-bg: rgb(13 5 9 / 0.72); + --panel-border: rgb(58 50 54 / 0.9); + --panel-border-bare: rgb(58 50 54 / 0.55); + --panel-raised-bg: rgb(13 5 9 / 0.95); + --panel-raised-border: rgb(58 50 54 / 1); + --panel-accent: #fbd2ab; + --panel-header-bg: rgb(30 23 26 / 0.6); + --panel-header-fg: #f0eaed; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #0d0509; + --glass-bg: rgb(13 5 9 / 0.55); + --glass-border: rgb(58 50 54 / 0.7); + --dock-bg: rgb(13 5 9 / 0.7); + --dock-border: rgb(58 50 54 / 0.8); + --dock-tooltip-bg: #1e171a; + --header-bg: rgb(13 5 9 / 0.8); + --header-border: rgb(58 50 54 / 0.9); + --header-fg: #f0eaed; + --header-blur: 12px; + --pixel-grid-color: rgb(115 108 112 / 0.07); + --card-grid-color: rgb(115 108 112 / 0.05); + --panel-grid-color: rgb(115 108 112 / 0.06); + --scrollbar-thumb: rgb(74 60 69 / 0.6); + --scrollbar-thumb-hover: rgb(74 60 69 / 0.85); + --scrollbar-thin-thumb: rgb(74 60 69 / 0.45); + --scrollbar-thin-thumb-hover: rgb(74 60 69 / 0.7); + --brand: #fbd2ab; + --brand-foreground: #070305; + --brand-primary: #fbd2ab; + --brand-accent: #e8c099; + --brand-warm: #de8479; + --brand-deep: #070305; + --brand-muted: #4a3c45; + --ink: #f0eaed; + --surface-warm: #0d0509; + --naturegreen: #f29b9a; + --naturegreen-foreground: #070305; + --duck-dark: #f0eaed; + --duck-teal: #e8c099; + --duck-yellow: #d4a882; + --duck-orange: #de8479; + --duck-forest: #f29b9a; + --duck-beige: #241c20; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/sapphire.css b/src/workspaces/theme/css/themes/sapphire.css new file mode 100644 index 00000000..2fef1522 --- /dev/null +++ b/src/workspaces/theme/css/themes/sapphire.css @@ -0,0 +1,97 @@ +/* + Sapphire — 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/HANCORE-linux/omarchy-sapphire-theme (colors.toml (16-colour ANSI)), 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='sapphire'] { + --background: #030711; + --foreground: #e0f7fa; + --card: #060d1f; + --card-foreground: #e0f7fa; + --popover: #060d1f; + --popover-foreground: #e0f7fa; + --muted: #171e2f; + --muted-foreground: #9fb1b8; + --accent: #171e2f; + --accent-foreground: #e0f7fa; + --primary: #fff6d2; + --primary-foreground: #030711; + --secondary: #171e2f; + --secondary-foreground: #e0f7fa; + --cta: #fff6d2; + --cta-foreground: #030711; + --ctahover: #fff7d7; + --success: #6488ea; + --success-foreground: #030711; + --warning: #d5edeb; + --warning-foreground: #030711; + --destructive: #e95c4b; + --destructive-foreground: #030711; + --info: #f7c3c6; + --info-foreground: #030711; + --busy: #dfa59b; + --busy-foreground: #030711; + --busy-ink: #dfa59b; + --border: #313b4a; + --input: #313b4a; + --ring: #fff6d2; + --radius: 0.625rem; + --chart-primary: #fff6d2; + --chart-secondary: #85cec4; + --status-success: #6488ea; + --status-warning: #d5edeb; + --status-in-progress: #f7c3c6; + --page-bg: #030711; + --page-bg-src: ''; + --panel-bg: rgb(6 13 31 / 0.72); + --panel-border: rgb(49 59 74 / 0.9); + --panel-border-bare: rgb(49 59 74 / 0.55); + --panel-raised-bg: rgb(6 13 31 / 0.95); + --panel-raised-border: rgb(49 59 74 / 1); + --panel-accent: #fff6d2; + --panel-header-bg: rgb(23 30 47 / 0.6); + --panel-header-fg: #e0f7fa; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #060d1f; + --glass-bg: rgb(6 13 31 / 0.55); + --glass-border: rgb(49 59 74 / 0.7); + --dock-bg: rgb(6 13 31 / 0.7); + --dock-border: rgb(49 59 74 / 0.8); + --dock-tooltip-bg: #171e2f; + --header-bg: rgb(6 13 31 / 0.8); + --header-border: rgb(49 59 74 / 0.9); + --header-fg: #e0f7fa; + --header-blur: 12px; + --pixel-grid-color: rgb(104 118 130 / 0.07); + --card-grid-color: rgb(104 118 130 / 0.05); + --panel-grid-color: rgb(104 118 130 / 0.06); + --scrollbar-thumb: rgb(81 104 142 / 0.6); + --scrollbar-thumb-hover: rgb(81 104 142 / 0.85); + --scrollbar-thin-thumb: rgb(81 104 142 / 0.45); + --scrollbar-thin-thumb-hover: rgb(81 104 142 / 0.7); + --brand: #fff6d2; + --brand-foreground: #030711; + --brand-primary: #fff6d2; + --brand-accent: #fff6d2; + --brand-warm: #dfa59b; + --brand-deep: #030711; + --brand-muted: #51688e; + --ink: #e0f7fa; + --surface-warm: #060d1f; + --naturegreen: #6488ea; + --naturegreen-foreground: #030711; + --duck-dark: #e0f7fa; + --duck-teal: #fff6d2; + --duck-yellow: #d5edeb; + --duck-orange: #dfa59b; + --duck-forest: #6488ea; + --duck-beige: #1c2435; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/serenity.css b/src/workspaces/theme/css/themes/serenity.css new file mode 100644 index 00000000..5806758f --- /dev/null +++ b/src/workspaces/theme/css/themes/serenity.css @@ -0,0 +1,97 @@ +/* + Serenity — 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/bjarneo/omarchy-serenity-theme (colors.toml (16-colour ANSI)), 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='serenity'] { + --background: #13191e; + --foreground: #f0ead6; + --card: #232e37; + --card-foreground: #f0ead6; + --popover: #232e37; + --popover-foreground: #f0ead6; + --muted: #323d45; + --muted-foreground: #b3b2a6; + --accent: #323d45; + --accent-foreground: #f0ead6; + --primary: #e0ffff; + --primary-foreground: #13191e; + --secondary: #323d45; + --secondary-foreground: #f0ead6; + --cta: #e0ffff; + --cta-foreground: #13191e; + --ctahover: #e4ffff; + --success: #7e8b56; + --success-foreground: #13191e; + --warning: #f0ead6; + --warning-foreground: #13191e; + --destructive: #e17f47; + --destructive-foreground: #13191e; + --info: #a69f96; + --info-foreground: #13191e; + --busy: #e9b58f; + --busy-foreground: #13191e; + --busy-ink: #e9b58f; + --border: #4b5356; + --input: #4b5356; + --ring: #e0ffff; + --radius: 0.625rem; + --chart-primary: #e0ffff; + --chart-secondary: #c080c0; + --status-success: #7e8b56; + --status-warning: #f0ead6; + --status-in-progress: #a69f96; + --page-bg: #13191e; + --page-bg-src: ''; + --panel-bg: rgb(35 46 55 / 0.72); + --panel-border: rgb(75 83 86 / 0.9); + --panel-border-bare: rgb(75 83 86 / 0.55); + --panel-raised-bg: rgb(35 46 55 / 0.95); + --panel-raised-border: rgb(75 83 86 / 1); + --panel-accent: #e0ffff; + --panel-header-bg: rgb(50 61 69 / 0.6); + --panel-header-fg: #f0ead6; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #232e37; + --glass-bg: rgb(35 46 55 / 0.55); + --glass-border: rgb(75 83 86 / 0.7); + --dock-bg: rgb(35 46 55 / 0.7); + --dock-border: rgb(75 83 86 / 0.8); + --dock-tooltip-bg: #323d45; + --header-bg: rgb(35 46 55 / 0.8); + --header-border: rgb(75 83 86 / 0.9); + --header-fg: #f0ead6; + --header-blur: 12px; + --pixel-grid-color: rgb(127 131 127 / 0.07); + --card-grid-color: rgb(127 131 127 / 0.05); + --panel-grid-color: rgb(127 131 127 / 0.06); + --scrollbar-thumb: rgb(166 159 150 / 0.6); + --scrollbar-thumb-hover: rgb(166 159 150 / 0.85); + --scrollbar-thin-thumb: rgb(166 159 150 / 0.45); + --scrollbar-thin-thumb-hover: rgb(166 159 150 / 0.7); + --brand: #e0ffff; + --brand-foreground: #13191e; + --brand-primary: #e0ffff; + --brand-accent: #80c0c0; + --brand-warm: #e9b58f; + --brand-deep: #13191e; + --brand-muted: #a69f96; + --ink: #f0ead6; + --surface-warm: #232e37; + --naturegreen: #7e8b56; + --naturegreen-foreground: #13191e; + --duck-dark: #f0ead6; + --duck-teal: #80c0c0; + --duck-yellow: #f0ead6; + --duck-orange: #e9b58f; + --duck-forest: #7e8b56; + --duck-beige: #384147; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/shadesofjade.css b/src/workspaces/theme/css/themes/shadesofjade.css new file mode 100644 index 00000000..5190849a --- /dev/null +++ b/src/workspaces/theme/css/themes/shadesofjade.css @@ -0,0 +1,97 @@ +/* + Shadesofjade — 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/HANCORE-linux/omarchy-shadesofjade-theme (colors.toml (16-colour ANSI)), 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='shadesofjade'] { + --background: #000906; + --foreground: #e6f6f0; + --card: #00110b; + --card-foreground: #e6f6f0; + --popover: #00110b; + --popover-foreground: #e6f6f0; + --muted: #12221c; + --muted-foreground: #a1b1ab; + --accent: #12221c; + --accent-foreground: #e6f6f0; + --primary: #80d4b5; + --primary-foreground: #000906; + --secondary: #12221c; + --secondary-foreground: #e6f6f0; + --cta: #80d4b5; + --cta-foreground: #000906; + --ctahover: #8fd9be; + --success: #00a86b; + --success-foreground: #000906; + --warning: #d1ffb0; + --warning-foreground: #000906; + --destructive: #ff3370; + --destructive-foreground: #000906; + --info: #ff6600; + --info-foreground: #000906; + --busy: #e89990; + --busy-foreground: #000906; + --busy-ink: #e89990; + --border: #2d3e38; + --input: #2d3e38; + --ring: #80d4b5; + --radius: 0.625rem; + --chart-primary: #80d4b5; + --chart-secondary: #8fc85c; + --status-success: #00a86b; + --status-warning: #d1ffb0; + --status-in-progress: #ff6600; + --page-bg: #000906; + --page-bg-src: ''; + --panel-bg: rgb(0 17 11 / 0.72); + --panel-border: rgb(45 62 56 / 0.9); + --panel-border-bare: rgb(45 62 56 / 0.55); + --panel-raised-bg: rgb(0 17 11 / 0.95); + --panel-raised-border: rgb(45 62 56 / 1); + --panel-accent: #80d4b5; + --panel-header-bg: rgb(18 34 28 / 0.6); + --panel-header-fg: #e6f6f0; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #00110b; + --glass-bg: rgb(0 17 11 / 0.55); + --glass-border: rgb(45 62 56 / 0.7); + --dock-bg: rgb(0 17 11 / 0.7); + --dock-border: rgb(45 62 56 / 0.8); + --dock-tooltip-bg: #12221c; + --header-bg: rgb(0 17 11 / 0.8); + --header-border: rgb(45 62 56 / 0.9); + --header-fg: #e6f6f0; + --header-blur: 12px; + --pixel-grid-color: rgb(103 120 114 / 0.07); + --card-grid-color: rgb(103 120 114 / 0.05); + --panel-grid-color: rgb(103 120 114 / 0.06); + --scrollbar-thumb: rgb(62 102 80 / 0.6); + --scrollbar-thumb-hover: rgb(62 102 80 / 0.85); + --scrollbar-thin-thumb: rgb(62 102 80 / 0.45); + --scrollbar-thin-thumb-hover: rgb(62 102 80 / 0.7); + --brand: #80d4b5; + --brand-foreground: #000906; + --brand-primary: #80d4b5; + --brand-accent: #80d4b5; + --brand-warm: #e89990; + --brand-deep: #000906; + --brand-muted: #3e6650; + --ink: #e6f6f0; + --surface-warm: #00110b; + --naturegreen: #00a86b; + --naturegreen-foreground: #000906; + --duck-dark: #e6f6f0; + --duck-teal: #80d4b5; + --duck-yellow: #d1ffb0; + --duck-orange: #e89990; + --duck-forest: #00a86b; + --duck-beige: #172822; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/snow.css b/src/workspaces/theme/css/themes/snow.css new file mode 100644 index 00000000..00dc1e02 --- /dev/null +++ b/src/workspaces/theme/css/themes/snow.css @@ -0,0 +1,97 @@ +/* + Snow — ported from a community Omarchy theme, not from basecamp/omarchy's own set. + + Light theme (light), by luminance of its own background — the source repo carries no mode flag of its own to read. + + Source: https://github.com/bjarneo/omarchy-snow-theme (colors.toml (16-colour ANSI)), 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='snow'] { + --background: #ffffff; + --foreground: #0a0a0a; + --card: #f6f6f6; + --card-foreground: #0a0a0a; + --popover: #f6f6f6; + --popover-foreground: #0a0a0a; + --muted: #f0f0f0; + --muted-foreground: #545454; + --accent: #f0f0f0; + --accent-foreground: #0a0a0a; + --primary: #0a0a0a; + --primary-foreground: #e6e6e6; + --secondary: #f0f0f0; + --secondary-foreground: #0a0a0a; + --cta: #0a0a0a; + --cta-foreground: #e6e6e6; + --ctahover: #090909; + --success: #0a0a0a; + --success-foreground: #e6e6e6; + --warning: #0a0a0a; + --warning-foreground: #e6e6e6; + --destructive: #0a0a0a; + --destructive-foreground: #e6e6e6; + --info: #0a0a0a; + --info-foreground: #e6e6e6; + --busy: #0a0a0a; + --busy-foreground: #e6e6e6; + --busy-ink: #0a0a0a; + --border: #dadada; + --input: #dadada; + --ring: #0a0a0a; + --radius: 0.625rem; + --chart-primary: #0a0a0a; + --chart-secondary: #0a0a0a; + --status-success: #0a0a0a; + --status-warning: #0a0a0a; + --status-in-progress: #0a0a0a; + --page-bg: #ffffff; + --page-bg-src: ''; + --panel-bg: rgb(246 246 246 / 0.72); + --panel-border: rgb(218 218 218 / 0.9); + --panel-border-bare: rgb(218 218 218 / 0.55); + --panel-raised-bg: rgb(246 246 246 / 0.95); + --panel-raised-border: rgb(218 218 218 / 1); + --panel-accent: #0a0a0a; + --panel-header-bg: rgb(240 240 240 / 0.6); + --panel-header-fg: #0a0a0a; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #f6f6f6; + --glass-bg: rgb(246 246 246 / 0.55); + --glass-border: rgb(218 218 218 / 0.7); + --dock-bg: rgb(246 246 246 / 0.7); + --dock-border: rgb(218 218 218 / 0.8); + --dock-tooltip-bg: #f0f0f0; + --header-bg: rgb(246 246 246 / 0.8); + --header-border: rgb(218 218 218 / 0.9); + --header-fg: #0a0a0a; + --header-blur: 12px; + --pixel-grid-color: rgb(141 141 141 / 0.07); + --card-grid-color: rgb(141 141 141 / 0.05); + --panel-grid-color: rgb(141 141 141 / 0.06); + --scrollbar-thumb: rgb(208 208 208 / 0.6); + --scrollbar-thumb-hover: rgb(208 208 208 / 0.85); + --scrollbar-thin-thumb: rgb(208 208 208 / 0.45); + --scrollbar-thin-thumb-hover: rgb(208 208 208 / 0.7); + --brand: #0a0a0a; + --brand-foreground: #e6e6e6; + --brand-primary: #0a0a0a; + --brand-accent: #0a0a0a; + --brand-warm: #0a0a0a; + --brand-deep: #f0f0f0; + --brand-muted: #d0d0d0; + --ink: #0a0a0a; + --surface-warm: #f6f6f6; + --naturegreen: #0a0a0a; + --naturegreen-foreground: #e6e6e6; + --duck-dark: #0a0a0a; + --duck-teal: #0a0a0a; + --duck-yellow: #0a0a0a; + --duck-orange: #0a0a0a; + --duck-forest: #0a0a0a; + --duck-beige: #dedede; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/sunkissed.css b/src/workspaces/theme/css/themes/sunkissed.css new file mode 100644 index 00000000..671f1e77 --- /dev/null +++ b/src/workspaces/theme/css/themes/sunkissed.css @@ -0,0 +1,97 @@ +/* + Sunkissed — 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/loeclos/omarchy-sunkissed-theme (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='sunkissed'] { + --background: #19120a; + --foreground: #f0d9b5; + --card: #2d2013; + --card-foreground: #f0d9b5; + --popover: #2d2013; + --popover-foreground: #f0d9b5; + --muted: #3c3024; + --muted-foreground: #b6a284; + --accent: #3c3024; + --accent-foreground: #f0d9b5; + --primary: #6ea76b; + --primary-foreground: #19120a; + --secondary: #3c3024; + --secondary-foreground: #f0d9b5; + --cta: #6ea76b; + --cta-foreground: #19120a; + --ctahover: #7fb27d; + --success: #a0a81f; + --success-foreground: #19120a; + --warning: #e8a327; + --warning-foreground: #19120a; + --destructive: #e02e1f; + --destructive-foreground: #ffffff; + --info: #4a8e8f; + --info-foreground: #19120a; + --busy: #e46923; + --busy-foreground: #19120a; + --busy-ink: #e46923; + --border: #534433; + --input: #534433; + --ring: #6ea76b; + --radius: 0.625rem; + --chart-primary: #6ea76b; + --chart-secondary: #c26e96; + --status-success: #a0a81f; + --status-warning: #e8a327; + --status-in-progress: #4a8e8f; + --page-bg: #19120a; + --page-bg-src: ''; + --panel-bg: rgb(45 32 19 / 0.72); + --panel-border: rgb(83 68 51 / 0.9); + --panel-border-bare: rgb(83 68 51 / 0.55); + --panel-raised-bg: rgb(45 32 19 / 0.95); + --panel-raised-border: rgb(83 68 51 / 1); + --panel-accent: #6ea76b; + --panel-header-bg: rgb(60 48 36 / 0.6); + --panel-header-fg: #f0d9b5; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #2d2013; + --glass-bg: rgb(45 32 19 / 0.55); + --glass-border: rgb(83 68 51 / 0.7); + --dock-bg: rgb(45 32 19 / 0.7); + --dock-border: rgb(83 68 51 / 0.8); + --dock-tooltip-bg: #3c3024; + --header-bg: rgb(45 32 19 / 0.8); + --header-border: rgb(83 68 51 / 0.9); + --header-fg: #f0d9b5; + --header-blur: 12px; + --pixel-grid-color: rgb(133 115 92 / 0.07); + --card-grid-color: rgb(133 115 92 / 0.05); + --panel-grid-color: rgb(133 115 92 / 0.06); + --scrollbar-thumb: rgb(67 52 43 / 0.6); + --scrollbar-thumb-hover: rgb(67 52 43 / 0.85); + --scrollbar-thin-thumb: rgb(67 52 43 / 0.45); + --scrollbar-thin-thumb-hover: rgb(67 52 43 / 0.7); + --brand: #6ea76b; + --brand-foreground: #19120a; + --brand-primary: #6ea76b; + --brand-accent: #6ea76b; + --brand-warm: #e46923; + --brand-deep: #19120a; + --brand-muted: #43342b; + --ink: #f0d9b5; + --surface-warm: #2d2013; + --naturegreen: #a0a81f; + --naturegreen-foreground: #19120a; + --duck-dark: #f0d9b5; + --duck-teal: #6ea76b; + --duck-yellow: #e8a327; + --duck-orange: #e46923; + --duck-forest: #a0a81f; + --duck-beige: #413323; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/css/themes/x-1632.css b/src/workspaces/theme/css/themes/x-1632.css new file mode 100644 index 00000000..16e0abb3 --- /dev/null +++ b/src/workspaces/theme/css/themes/x-1632.css @@ -0,0 +1,97 @@ +/* + X 1632 — 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/OldJobobo/omarchy-x-1632-theme (colors.toml (16-colour ANSI)), 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='x-1632'] { + --background: #1a1b1f; + --foreground: #c7c6c1; + --card: #2f3138; + --card-foreground: #c7c6c1; + --popover: #2f3138; + --popover-foreground: #c7c6c1; + --muted: #3e3f46; + --muted-foreground: #ababaa; + --accent: #3e3f46; + --accent-foreground: #c7c6c1; + --primary: #92a9cd; + --primary-foreground: #1a1b1f; + --secondary: #3e3f46; + --secondary-foreground: #c7c6c1; + --cta: #92a9cd; + --cta-foreground: #1a1b1f; + --ctahover: #9fb3d3; + --success: #8b8e76; + --success-foreground: #1a1b1f; + --warning: #d6c8ba; + --warning-foreground: #1a1b1f; + --destructive: #a07d7d; + --destructive-foreground: #1a1b1f; + --info: #7f8da1; + --info-foreground: #1a1b1f; + --busy: #bba39c; + --busy-foreground: #1a1b1f; + --busy-ink: #bba39c; + --border: #4d4e53; + --input: #4d4e53; + --ring: #92a9cd; + --radius: 0.625rem; + --chart-primary: #92a9cd; + --chart-secondary: #8383c3; + --status-success: #8b8e76; + --status-warning: #d6c8ba; + --status-in-progress: #7f8da1; + --page-bg: #1a1b1f; + --page-bg-src: ''; + --panel-bg: rgb(47 49 56 / 0.72); + --panel-border: rgb(77 78 83 / 0.9); + --panel-border-bare: rgb(77 78 83 / 0.55); + --panel-raised-bg: rgb(47 49 56 / 0.95); + --panel-raised-border: rgb(77 78 83 / 1); + --panel-accent: #92a9cd; + --panel-header-bg: rgb(62 63 70 / 0.6); + --panel-header-fg: #c7c6c1; + --panel-radius: 0.75rem; + --panel-blur: 12px; + --card-bg: #2f3138; + --glass-bg: rgb(47 49 56 / 0.55); + --glass-border: rgb(77 78 83 / 0.7); + --dock-bg: rgb(47 49 56 / 0.7); + --dock-border: rgb(77 78 83 / 0.8); + --dock-tooltip-bg: #3e3f46; + --header-bg: rgb(47 49 56 / 0.8); + --header-border: rgb(77 78 83 / 0.9); + --header-fg: #c7c6c1; + --header-blur: 12px; + --pixel-grid-color: rgb(122 123 125 / 0.07); + --card-grid-color: rgb(122 123 125 / 0.05); + --panel-grid-color: rgb(122 123 125 / 0.06); + --scrollbar-thumb: rgb(140 139 134 / 0.6); + --scrollbar-thumb-hover: rgb(140 139 134 / 0.85); + --scrollbar-thin-thumb: rgb(140 139 134 / 0.45); + --scrollbar-thin-thumb-hover: rgb(140 139 134 / 0.7); + --brand: #92a9cd; + --brand-foreground: #1a1b1f; + --brand-primary: #92a9cd; + --brand-accent: #7f99c1; + --brand-warm: #bba39c; + --brand-deep: #1a1b1f; + --brand-muted: #8c8b86; + --ink: #c7c6c1; + --surface-warm: #2f3138; + --naturegreen: #8b8e76; + --naturegreen-foreground: #1a1b1f; + --duck-dark: #c7c6c1; + --duck-teal: #7f99c1; + --duck-yellow: #d6c8ba; + --duck-orange: #bba39c; + --duck-forest: #8b8e76; + --duck-beige: #3e4046; + --logo-src: '/officer-logo.svg'; +} diff --git a/src/workspaces/theme/src/themes.ts b/src/workspaces/theme/src/themes.ts index 72e65867..0b59984f 100644 --- a/src/workspaces/theme/src/themes.ts +++ b/src/workspaces/theme/src/themes.ts @@ -82,12 +82,15 @@ export const THEMES: readonly Theme[] = [ { id: 'all-hallows-eve', name: 'All Hallows Eve', family: 'All Hallows Eve', applyDarkClass: true }, { id: 'amberbyte', name: 'Amberbyte', family: 'Amberbyte', applyDarkClass: true }, { id: 'amekoji', name: 'Amekoji', family: 'Amekoji', applyDarkClass: true }, + { id: 'andromeda', name: 'Andromeda', family: 'Andromeda', applyDarkClass: true }, { id: 'anonymous', name: 'Anonymous', family: 'Anonymous', applyDarkClass: true }, { id: 'apocalypse', name: 'Apocalypse', family: 'Apocalypse', applyDarkClass: true }, { id: 'arc-blueberry', name: 'Arc Blueberry', family: 'Arc Blueberry', applyDarkClass: true }, { id: 'archriot', name: 'Archriot', family: 'Archriot', applyDarkClass: true }, { id: 'archwave', name: 'Archwave', family: 'Archwave', applyDarkClass: true }, { id: 'artzen', name: 'Artzen', family: 'Artzen', applyDarkClass: true }, + { id: 'ash', name: 'Ash', family: 'Ash', applyDarkClass: true }, + { id: 'astrodark', name: 'Astrodark', family: 'Astrodark', applyDarkClass: true }, { id: 'atari', name: 'Atari', family: 'Atari', applyDarkClass: true }, { id: 'atelier', name: 'Atelier', family: 'Atelier', applyDarkClass: true }, { id: 'aura', name: 'Aura', family: 'Aura', applyDarkClass: true }, @@ -102,15 +105,23 @@ export const THEMES: readonly Theme[] = [ { id: 'bauhaus', name: 'Bauhaus', family: 'Bauhaus', applyDarkClass: true }, { id: 'beachvan', name: 'Beachvan', family: 'Beachvan', applyDarkClass: true }, { id: 'beta', name: 'Beta', family: 'Beta', applyDarkClass: true }, + { id: 'biscuit-de-mar-dark', name: 'Biscuit DE Mar Dark', family: 'Biscuit DE Mar Dark', applyDarkClass: true }, { id: 'black-arch', name: 'Black Arch', family: 'Black Arch', applyDarkClass: true }, + { id: 'black-gold', name: 'Black Gold', family: 'Black Gold', applyDarkClass: true }, + { id: 'black-money', name: 'Black Money', family: 'Black Money', applyDarkClass: true }, + { id: 'blackturq', name: 'Blackturq', family: 'Blackturq', applyDarkClass: true }, { id: 'blueridge', name: 'Blueridge', family: 'Blueridge', applyDarkClass: true }, { id: 'brutalism', name: 'Brutalism', family: 'Brutalism', applyDarkClass: true }, { id: 'caroline-skyline', name: 'Caroline Skyline', family: 'Caroline Skyline', applyDarkClass: true }, { id: 'catppuccin-mocha', name: 'Catppuccin Mocha', family: 'Catppuccin Mocha', applyDarkClass: true }, + { id: 'cattpuccin-glass', name: 'Cattpuccin Glass', family: 'Cattpuccin Glass', applyDarkClass: true }, { id: 'city-783', name: 'City 783', family: 'City 783', applyDarkClass: true }, { id: 'copper-night', name: 'Copper Night', family: 'Copper Night', applyDarkClass: true }, + { id: 'corporate', name: 'Corporate', family: 'Corporate', applyDarkClass: false }, { id: 'cpunk', name: 'Cpunk', family: 'Cpunk', applyDarkClass: true }, { id: 'crimson', name: 'Crimson', family: 'Crimson', applyDarkClass: true }, + { id: 'crimson-gold', name: 'Crimson Gold', family: 'Crimson Gold', applyDarkClass: true }, + { id: 'cyberpunk-2', name: 'Cyberpunk 2', family: 'Cyberpunk 2', applyDarkClass: true }, { id: 'dark-xp', name: 'Dark XP', family: 'Dark XP', applyDarkClass: true }, { id: 'dayfox', name: 'Dayfox', family: 'Dayfox', applyDarkClass: false }, { id: 'dead-space', name: 'Dead Space', family: 'Dead Space', applyDarkClass: true }, @@ -118,21 +129,32 @@ export const THEMES: readonly Theme[] = [ { id: 'delete', name: 'Delete', family: 'Delete', applyDarkClass: true }, { id: 'delorean', name: 'Delorean', family: 'Delorean', applyDarkClass: true }, { id: 'demon', name: 'Demon', family: 'Demon', applyDarkClass: true }, + { id: 'desert-gleam', name: 'Desert Gleam', family: 'Desert Gleam', applyDarkClass: false }, + { id: 'desert-twilight', name: 'Desert Twilight', family: 'Desert Twilight', applyDarkClass: true }, { id: 'dotrb', name: 'Dotrb', family: 'Dotrb', applyDarkClass: true }, { id: 'drac', name: 'Drac', family: 'Drac', applyDarkClass: true }, { id: 'dracula', name: 'Dracula', family: 'Dracula', applyDarkClass: true }, { id: 'dragon', name: 'Dragon', family: 'Dragon', applyDarkClass: true }, { id: 'dreamwave', name: 'Dreamwave', family: 'Dreamwave', applyDarkClass: true }, + { id: 'elysian', name: 'Elysian', family: 'Elysian', applyDarkClass: true }, { id: 'ember-n-ash', name: 'Ember N Ash', family: 'Ember N Ash', applyDarkClass: true }, { id: 'eva-unit-01', name: 'Eva Unit 01', family: 'Eva Unit 01', applyDarkClass: true }, { id: 'event-horizon', name: 'Event Horizon', family: 'Event Horizon', applyDarkClass: true }, { id: 'everblush', name: 'Everblush', family: 'Everblush', applyDarkClass: true }, + { id: 'evergarden', name: 'Evergarden', family: 'Evergarden', applyDarkClass: true }, { id: 'farline', name: 'Farline', family: 'Farline', applyDarkClass: true }, { id: 'felix', name: 'Felix', family: 'Felix', applyDarkClass: true }, + { id: 'fiery-ocean', name: 'Fiery Ocean', family: 'Fiery Ocean', applyDarkClass: true }, + { id: 'fireside', name: 'Fireside', family: 'Fireside', applyDarkClass: true }, + { id: 'firesky', name: 'Firesky', family: 'Firesky', applyDarkClass: true }, { id: 'flat-dracula', name: 'Flat Dracula', family: 'Flat Dracula', applyDarkClass: true }, + { id: 'flexoki-dark', name: 'Flexoki Dark', family: 'Flexoki Dark', applyDarkClass: true }, { id: 'florida-man', name: 'Florida Man', family: 'Florida Man', applyDarkClass: true }, { id: 'fluid-glass', name: 'Fluid Glass', family: 'Fluid Glass', applyDarkClass: true }, { id: 'forest-green', name: 'Forest Green', family: 'Forest Green', applyDarkClass: true }, + { id: 'frost', name: 'Frost', family: 'Frost', applyDarkClass: true }, + { id: 'futurism', name: 'Futurism', family: 'Futurism', applyDarkClass: true }, + { id: 'ghost-pastel', name: 'Ghost Pastel', family: 'Ghost Pastel', applyDarkClass: true }, { id: 'glory-antic', name: 'Glory Antic', family: 'Glory Antic', applyDarkClass: true }, { id: 'gold-rush', name: 'Gold Rush', family: 'Gold Rush', applyDarkClass: true }, { id: 'gotham-city', name: 'Gotham City', family: 'Gotham City', applyDarkClass: true }, @@ -142,12 +164,18 @@ export const THEMES: readonly Theme[] = [ { id: 'gruber-tsoding', name: 'Gruber Tsoding', family: 'Gruber Tsoding', applyDarkClass: true }, { id: 'grudark', name: 'Grudark', family: 'Grudark', applyDarkClass: true }, { id: 'harbor', name: 'Harbor', family: 'Harbor', applyDarkClass: false }, + { id: 'harbor-dark', name: 'Harbor Dark', family: 'Harbor Dark', applyDarkClass: true }, { id: 'hex', name: 'Hex', family: 'Hex', applyDarkClass: true }, { id: 'himalaya', name: 'Himalaya', family: 'Himalaya', applyDarkClass: true }, { id: 'hinterlands', name: 'Hinterlands', family: 'Hinterlands', applyDarkClass: true }, + { id: 'hollow-knight', name: 'Hollow Knight', family: 'Hollow Knight', applyDarkClass: true }, { id: 'infernium', name: 'Infernium', family: 'Infernium', applyDarkClass: false }, { id: 'infernium-dark', name: 'Infernium Dark', family: 'Infernium Dark', applyDarkClass: true }, + { id: 'inkypinky', name: 'Inkypinky', family: 'Inkypinky', applyDarkClass: true }, + { id: 'kanso', name: 'Kanso', family: 'Kanso', applyDarkClass: true }, { id: 'killer-klowns', name: 'Killer Klowns', family: 'Killer Klowns', applyDarkClass: true }, + { id: 'kimiko', name: 'Kimiko', family: 'Kimiko', applyDarkClass: true }, + { id: 'koyanagi', name: 'Koyanagi', family: 'Koyanagi', applyDarkClass: true }, { id: 'kurayami', name: 'Kurayami', family: 'Kurayami', applyDarkClass: true }, { id: 'lain', name: 'Lain', family: 'Lain', applyDarkClass: true }, { id: 'lairetam', name: 'Lairetam', family: 'Lairetam', applyDarkClass: true }, @@ -167,17 +195,23 @@ export const THEMES: readonly Theme[] = [ { id: 'monokai', name: 'Monokai', family: 'Monokai', applyDarkClass: true }, { id: 'monokai-dark', name: 'Monokai Dark', family: 'Monokai Dark', applyDarkClass: true }, { id: 'monolith', name: 'Monolith', family: 'Monolith', applyDarkClass: true }, + { id: 'monolith-2', name: 'Monolith 2', family: 'Monolith 2', applyDarkClass: true }, + { id: 'moodpeak', name: 'Moodpeak', family: 'Moodpeak', applyDarkClass: true }, { id: 'nagai-poolside', name: 'Nagai Poolside', family: 'Nagai Poolside', applyDarkClass: true }, { id: 'nagai-twilight', name: 'Nagai Twilight', family: 'Nagai Twilight', applyDarkClass: true }, { id: 'nebulite', name: 'Nebulite', family: 'Nebulite', applyDarkClass: true }, { id: 'neo-sploosh', name: 'Neo Sploosh', family: 'Neo Sploosh', applyDarkClass: true }, { id: 'neon-street', name: 'Neon Street', family: 'Neon Street', applyDarkClass: true }, { id: 'neovoid', name: 'Neovoid', family: 'Neovoid', applyDarkClass: true }, + { id: 'nes', name: 'Nes', family: 'Nes', applyDarkClass: true }, { id: 'nyc', name: 'Nyc', family: 'Nyc', applyDarkClass: true }, + { id: 'one-dark-pro', name: 'One Dark Pro', family: 'One Dark Pro', applyDarkClass: true }, { id: 'oxford', name: 'Oxford', family: 'Oxford', applyDarkClass: true }, { id: 'oxocarbon-dark', name: 'Oxocarbon Dark', family: 'Oxocarbon Dark', applyDarkClass: true }, { id: 'pandora', name: 'Pandora', family: 'Pandora', applyDarkClass: true }, + { id: 'pina', name: 'Pina', family: 'Pina', applyDarkClass: true }, { id: 'pink-blood', name: 'Pink Blood', family: 'Pink Blood', applyDarkClass: true }, + { id: 'pmndrs', name: 'Pmndrs', family: 'Pmndrs', applyDarkClass: true }, { id: 'pulsar', name: 'Pulsar', family: 'Pulsar', applyDarkClass: true }, { id: 'purple-moon', name: 'Purple Moon', family: 'Purple Moon', applyDarkClass: true }, { id: 'purplewave', name: 'Purplewave', family: 'Purplewave', applyDarkClass: true }, @@ -185,11 +219,19 @@ export const THEMES: readonly Theme[] = [ { id: 'rdddcs', name: 'Rdddcs', family: 'Rdddcs', applyDarkClass: true }, { id: 'red-monarch', name: 'Red Monarch', family: 'Red Monarch', applyDarkClass: true }, { id: 'retropc', name: 'Retropc', family: 'Retropc', applyDarkClass: true }, + { id: 'reverie', name: 'Reverie', family: 'Reverie', applyDarkClass: true }, { id: 'robco', name: 'Robco', family: 'Robco', applyDarkClass: true }, { id: 'robco-mojave', name: 'Robco Mojave', family: 'Robco Mojave', applyDarkClass: true }, + { id: 'rose-pine-dark', name: 'Rose Pine Dark', family: 'Rose Pine Dark', applyDarkClass: true }, { id: 'roseofdune', name: 'Roseofdune', family: 'Roseofdune', applyDarkClass: false }, { id: 'royal', name: 'Royal', family: 'Royal', applyDarkClass: true }, { id: 'rustleaf', name: 'Rustleaf', family: 'Rustleaf', applyDarkClass: true }, + { id: 'saga', name: 'Saga', family: 'Saga', applyDarkClass: true }, + { id: 'sakura', name: 'Sakura', family: 'Sakura', applyDarkClass: true }, + { id: 'sapphire', name: 'Sapphire', family: 'Sapphire', applyDarkClass: true }, + { id: 'serenity', name: 'Serenity', family: 'Serenity', applyDarkClass: true }, + { id: 'shadesofjade', name: 'Shadesofjade', family: 'Shadesofjade', applyDarkClass: true }, + { id: 'snow', name: 'Snow', family: 'Snow', applyDarkClass: false }, { id: 'snow-black', name: 'Snow Black', family: 'Snow Black', applyDarkClass: true }, { id: 'space-bound', name: 'Space Bound', family: 'Space Bound', applyDarkClass: true }, { id: 'space-monkey', name: 'Space Monkey', family: 'Space Monkey', applyDarkClass: true }, @@ -197,6 +239,7 @@ export const THEMES: readonly Theme[] = [ { id: 'spectra', name: 'Spectra', family: 'Spectra', applyDarkClass: true }, { id: 'stellar', name: 'Stellar', family: 'Stellar', applyDarkClass: true }, { id: 'stillmoon', name: 'Stillmoon', family: 'Stillmoon', applyDarkClass: true }, + { id: 'sunkissed', name: 'Sunkissed', family: 'Sunkissed', applyDarkClass: true }, { id: 'sunset', name: 'Sunset', family: 'Sunset', applyDarkClass: true }, { id: 'synthetica', name: 'Synthetica', family: 'Synthetica', applyDarkClass: true }, { id: 'synthwave-84', name: 'Synthwave 84', family: 'Synthwave 84', applyDarkClass: true }, @@ -220,6 +263,7 @@ export const THEMES: readonly Theme[] = [ { id: 'wasteland', name: 'Wasteland', family: 'Wasteland', applyDarkClass: true }, { id: 'waveform-dark', name: 'Waveform Dark', family: 'Waveform Dark', applyDarkClass: true }, { id: 'white-gold', name: 'White Gold', family: 'White Gold', applyDarkClass: false }, + { id: 'x-1632', name: 'X 1632', family: 'X 1632', applyDarkClass: true }, { id: 'yuugure', name: 'Yuugure', family: 'Yuugure', applyDarkClass: true }, /* COMMUNITY THEMES — end */ ] as const;