Compare commits
14
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78db9c8c93 | ||
|
|
ff133f88ff | ||
|
|
8e181ddf3c | ||
|
|
02df4ac61c | ||
|
|
a5f387929d | ||
|
|
e4117441b0 | ||
|
|
7671368faf | ||
|
|
6b07aafc67 | ||
|
|
f9dfd05676 | ||
|
|
cbcd8d65df | ||
|
|
861fc4a58b | ||
|
|
a58f4d2b32 | ||
|
|
a01ae73a1f | ||
|
|
78f9331b89 |
@@ -20,38 +20,39 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
||||
|
||||
## Themes
|
||||
|
||||
**84 open, 22 closed**, across 28 themes.
|
||||
**87 open, 22 closed**, across 29 themes.
|
||||
|
||||
| Theme | Open | Closed |
|
||||
| --- | --- | --- |
|
||||
| [Affordances](todo/affordances/) | 1 | 0 |
|
||||
| [Speaking into a session from the backend](todo/agent-delivery/) | 2 | 0 |
|
||||
| [Backburner](todo/backburner/) | 2 | 0 |
|
||||
| [Background jobs](todo/background-jobs/) | 2 | 0 |
|
||||
| [Chat interface](todo/chat/) | 1 | 0 |
|
||||
| [Code editor](todo/code-editor/) | 1 | 0 |
|
||||
| [Components — the shared UI layer](todo/components/) | 1 | 0 |
|
||||
| [File watchers](todo/file-watchers/) | 1 | 0 |
|
||||
| [Fleet — one command across every server](todo/fleet/) | 5 | 2 |
|
||||
| [Headscale](todo/headscale/) | 0 | 5 |
|
||||
| [Infra (alpha)](todo/infra/) | 6 | 0 |
|
||||
| [Known bugs](todo/known-bugs/) | 4 | 1 |
|
||||
| [Mobile apps](todo/mobile-apps/) | 3 | 0 |
|
||||
| [Multi-user](todo/multi-user/) | 17 | 3 |
|
||||
| [Notifications](todo/notifications/) | 1 | 0 |
|
||||
| [Plugin ecosystem — before it opens to third parties (2026-08-18)](todo/plugin-ecosystem/) | 3 | 0 |
|
||||
| [Plugin infrastructure](todo/plugin-infrastructure/) | 2 | 0 |
|
||||
| [Plugin repos — what writing their READMEs turned up](todo/plugin-repos/) | 10 | 9 |
|
||||
| [Plugin system — gaps the email extraction found (2026-08-18)](todo/plugin-system/) | 3 | 0 |
|
||||
| [Prompt library](todo/prompt-library/) | 1 | 0 |
|
||||
| [Shell — spotlight and the dock](todo/shell/) | 1 | 1 |
|
||||
| [Sub-agents — agents spawning agents](todo/sub-agents/) | 1 | 1 |
|
||||
| [Sudo terminal modal](todo/sudo-terminal-modal/) | 1 | 0 |
|
||||
| [Tooling — the list about the list](todo/tooling/) | 1 | 0 |
|
||||
| [Transmission](todo/transmission/) | 6 | 0 |
|
||||
| [URL state — routing, query strings and selection](todo/url-state/) | 4 | 0 |
|
||||
| [Waiting on the owner to run it](todo/waiting-on-owner/) | 2 | 0 |
|
||||
| [Workspaces & Panels](todo/workspaces-panels/) | 2 | 0 |
|
||||
| Theme | Open | Closed |
|
||||
| ------------------------------------------------------------------------------------------ | ---- | ------ |
|
||||
| [Affordances](todo/affordances/) | 1 | 0 |
|
||||
| [Speaking into a session from the backend](todo/agent-delivery/) | 2 | 0 |
|
||||
| [Backburner](todo/backburner/) | 2 | 0 |
|
||||
| [Background jobs](todo/background-jobs/) | 2 | 0 |
|
||||
| [Chat interface](todo/chat/) | 1 | 0 |
|
||||
| [Code editor](todo/code-editor/) | 1 | 0 |
|
||||
| [Components — the shared UI layer](todo/components/) | 1 | 0 |
|
||||
| [File watchers](todo/file-watchers/) | 1 | 0 |
|
||||
| [Fleet — one command across every server](todo/fleet/) | 5 | 2 |
|
||||
| [Headscale](todo/headscale/) | 0 | 5 |
|
||||
| [Infra (alpha)](todo/infra/) | 6 | 0 |
|
||||
| [Known bugs](todo/known-bugs/) | 4 | 1 |
|
||||
| [Mobile apps](todo/mobile-apps/) | 3 | 0 |
|
||||
| [Multi-user](todo/multi-user/) | 18 | 3 |
|
||||
| [Notifications](todo/notifications/) | 1 | 0 |
|
||||
| [Plugin ecosystem — before it opens to third parties (2026-08-18)](todo/plugin-ecosystem/) | 3 | 0 |
|
||||
| [Plugin infrastructure](todo/plugin-infrastructure/) | 2 | 0 |
|
||||
| [Plugin repos — what writing their READMEs turned up](todo/plugin-repos/) | 10 | 9 |
|
||||
| [Plugin system — gaps the email extraction found (2026-08-18)](todo/plugin-system/) | 3 | 0 |
|
||||
| [Prompt library](todo/prompt-library/) | 1 | 0 |
|
||||
| [Settings — portable, and readable by an agent](todo/settings/) | 2 | 0 |
|
||||
| [Shell — spotlight and the dock](todo/shell/) | 1 | 1 |
|
||||
| [Sub-agents — agents spawning agents](todo/sub-agents/) | 1 | 1 |
|
||||
| [Sudo terminal modal](todo/sudo-terminal-modal/) | 1 | 0 |
|
||||
| [Tooling — the list about the list](todo/tooling/) | 1 | 0 |
|
||||
| [Transmission](todo/transmission/) | 6 | 0 |
|
||||
| [URL state — routing, query strings and selection](todo/url-state/) | 4 | 0 |
|
||||
| [Waiting on the owner to run it](todo/waiting-on-owner/) | 2 | 0 |
|
||||
| [Workspaces & Panels](todo/workspaces-panels/) | 2 | 0 |
|
||||
|
||||
## Records — no items, kept for the reasoning
|
||||
|
||||
@@ -62,6 +63,9 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
||||
|
||||
## Newest ten
|
||||
|
||||
- `2026-08-22` **A plugin's permission should be on for every role by default, off only on request** — [multi-user/a-plugin-s-permission-should-be-on-for-every](todo/multi-user/a-plugin-s-permission-should-be-on-for-every.md)
|
||||
- `2026-08-22` **A user's settings should export and import as a plain file** — [settings/a-user-s-settings-should-export-and-import-as](todo/settings/a-user-s-settings-should-export-and-import-as.md)
|
||||
- `2026-08-22` **The same for system settings, owned by the Super Admin** — [settings/the-same-for-system-settings-owned-by-the](todo/settings/the-same-for-system-settings-owned-by-the.md)
|
||||
- `2026-08-21` **No way to see which affordances are reaching your agents, or to turn one off** — [affordances/no-way-to-see-which-affordances-are-reaching](todo/affordances/no-way-to-see-which-affordances-are-reaching.md)
|
||||
- `2026-08-21` **Generalise it: deliver a turn to a named session, from anywhere in the backend** — [agent-delivery/generalise-it-deliver-a-turn-to-a-named](todo/agent-delivery/generalise-it-deliver-a-turn-to-a-named.md)
|
||||
- `2026-08-21` **The cost of resuming grows with the transcript** — [agent-delivery/the-cost-of-resuming-grows-with-the-transcript](todo/agent-delivery/the-cost-of-resuming-grows-with-the-transcript.md)
|
||||
@@ -69,6 +73,3 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
||||
- `2026-08-21` **Show how long a turn took, beside its cost and tokens** — [chat/show-how-long-a-turn-took-beside-its-cost](todo/chat/show-how-long-a-turn-took-beside-its-cost.md)
|
||||
- `2026-08-21` **Map every custom component, centralise it, and let a theme override it** — [components/map-every-custom-component-and-centralise-it](todo/components/map-every-custom-component-and-centralise-it.md)
|
||||
- `2026-08-21` **Watch a directory, and attach actions to what lands in it** — [file-watchers/watch-a-directory-and-attach-actions-to-what](todo/file-watchers/watch-a-directory-and-attach-actions-to-what.md)
|
||||
- `2026-08-21` **Settings to choose which server each feature uses** — [fleet/settings-to-choose-which-server-each-feature](todo/fleet/settings-to-choose-which-server-each-feature.md)
|
||||
- `2026-08-21` **'A deploy verifies PM2, not that the app still works'** — [fleet/a-deploy-report-verifies-pm2-not-that-the-app](todo/fleet/a-deploy-report-verifies-pm2-not-that-the-app.md)
|
||||
- `2026-08-21` **'The deploy commander cannot finish its own host'** — [fleet/the-deploy-commander-cannot-finish-its-own-host](todo/fleet/the-deploy-commander-cannot-finish-its-own-host.md)
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
# 2026.08.21.04 — deploy report
|
||||
|
||||
**6 of 6 hosts in scope succeeded.** `officer-dev` was skipped entirely — it is the host this agent runs
|
||||
on. Seven platforms exist; six were deployable.
|
||||
|
||||
Target commit `98177c3b`, tag `deploy/2026.08.21.04`, `package.json` version `2026.08.21.04` — tag and
|
||||
version agree.
|
||||
|
||||
Every host ran the same four steps from `deploy/2026.08.21.04.md`: `git pull --ff-only`, `bun db:push`
|
||||
(the schema change), `bun run plugins:update`, `pm2 restart officer`. No host ran `bun install` — the plan
|
||||
said not to.
|
||||
|
||||
---
|
||||
|
||||
## Per host
|
||||
|
||||
### `alpha` — succeeded
|
||||
|
||||
- HEAD `3cab16ca` → `98177c3b`. Tree clean, no untracked files.
|
||||
- The pull moved only `deploy/2026.08.21.04.md` and `package.json`: the code was already there from the
|
||||
hand deploy the plan describes. Expected, and the remaining steps ran anyway.
|
||||
- `db:push` — changes applied. `anthropic_accounts` verified present by direct query.
|
||||
- `plugins:update` — 12/12 updated in 44s, exit 0. **Twelve sidecars restarted by that step**: atelier,
|
||||
bitcoin-wallet, email, gitea, invoices, jellyfin, music, offscale, photos, soulseek, transmission,
|
||||
vault. That is the script's own behaviour, not something the plan asked for.
|
||||
- `pm2 restart officer` — `restart_time` 63 → 64, `online`.
|
||||
|
||||
### `fofos` — succeeded
|
||||
|
||||
- HEAD `3343b21a` → `98177c3b`. No tracked changes.
|
||||
- **Untracked file present: `scripts/chk.ts`.** Left alone — a fast-forward cannot touch it, and it is
|
||||
not a reason to skip a host.
|
||||
- `db:push` — changes applied. `anthropic_accounts` verified by direct query.
|
||||
- `plugins:update` — 1/1 (gitea), exit 0. One sidecar restarted: `officer-gitea`.
|
||||
- `pm2 restart officer` — 17 → 18, `online`.
|
||||
- The capabilities ownership fault recorded in `docs/servers.md` did not recur: `capabilities: pulled`.
|
||||
|
||||
### `macbookpro` — succeeded
|
||||
|
||||
- HEAD `b10a49c0` → `98177c3b`. Tree clean.
|
||||
- Awake and reachable; no skip needed.
|
||||
- `bun` reached with `export PATH=$PATH:/opt/homebrew/bin` appended for the `bun` commands only, `pm2`
|
||||
run as a separate command, per the plan and `docs/servers.md`.
|
||||
- `db:push` — changes applied.
|
||||
- `plugins:update` — "no plugins installed — nothing to update", exit 0. No sidecar restarted.
|
||||
- `pm2 restart officer` — 4 → 5, `online`.
|
||||
- **The one thing not verified here:** `psql` is not on this machine's PATH under any prefix tried, so
|
||||
`anthropic_accounts` was confirmed only by `db:push` reporting "Changes applied", not by querying the
|
||||
table. Every other host was checked directly.
|
||||
- Cosmetic noise from the interactive shell: `.zshrc:123: command not found: starship`. Harmless, and
|
||||
unrelated to the deploy.
|
||||
|
||||
### `edge-pertento-bridge` — succeeded
|
||||
|
||||
- HEAD `3343b21a` → `98177c3b`. Tree clean.
|
||||
- `db:push` — changes applied. `anthropic_accounts` verified by direct query.
|
||||
- `plugins:update` — 2/2 (gitea, offscale), exit 0. Two sidecars restarted.
|
||||
- `pm2 restart officer` — 6 → 7, `online`.
|
||||
|
||||
### `production-pertento-bridge` — succeeded
|
||||
|
||||
- HEAD `3343b21a` → `98177c3b`. Tree clean.
|
||||
- `db:push` — changes applied. `anthropic_accounts` verified by direct query.
|
||||
- `plugins:update` — 1/1 (gitea), exit 0. One sidecar restarted.
|
||||
- `pm2 restart officer` — 8 → 9, `online`.
|
||||
|
||||
### `deadpool-rezio-bridge` — succeeded
|
||||
|
||||
- Logged in as `br`, checkout `/home/br/officerdev/platform`.
|
||||
- HEAD `3343b21a` → `98177c3b`. Tree clean.
|
||||
- `db:push` — changes applied. `anthropic_accounts` verified by direct query.
|
||||
- `plugins:update` — "no plugins installed — nothing to update", exit 0. No sidecar restarted.
|
||||
- `pm2 restart officer` — 2 → 3, `online`.
|
||||
|
||||
### `officer-dev` — SKIPPED, deliberately
|
||||
|
||||
Not pulled, no schema push, no plugin update, nothing restarted. This agent is a session inside
|
||||
`officer-claude-code` on this machine, and restarting `officer` here ends the rollout mid-report. The
|
||||
host is therefore one release behind the other six until the owner deploys it by hand — checkout
|
||||
`~/officer-dev/platform`, and its working tree is already at `98177c3b` plus this report.
|
||||
|
||||
---
|
||||
|
||||
## What was checked, and how
|
||||
|
||||
- Every checkout path came from PM2 (`officer`'s `pm_cwd`), not from the table — so `alpha`'s second,
|
||||
stale checkout was never a candidate.
|
||||
- `pm2 jlist` after each restart: `officer` `online` with `restart_time` moved, on all six.
|
||||
- A full sweep for anything not `online` on all six hosts afterwards: **none**. No process came back
|
||||
`errored`, including the sixteen sidecars that `plugins:update` bounced across four hosts.
|
||||
- `anthropic_accounts` queried directly with `to_regclass` on five hosts; on `macbookpro` only the
|
||||
`db:push` output stands behind it.
|
||||
|
||||
## What was not done
|
||||
|
||||
- `officer-dev` — the whole host, as above.
|
||||
- No host was skipped for a dirty tree; none had tracked changes.
|
||||
- No process other than `officer` was restarted by this agent. The sidecars that moved were restarted by
|
||||
`plugins:update` itself.
|
||||
- `bun install` was not run anywhere, per the plan.
|
||||
|
||||
Local record: `data/deploys/2026.08.21.04.done`, written before this report.
|
||||
@@ -0,0 +1,53 @@
|
||||
# 2026.08.22.01
|
||||
|
||||
349 community themes, Spotlight made usable, prompt history that stops eating drafts, and the email
|
||||
plugin's multi-account backend.
|
||||
|
||||
**No schema change and no dependency change.** Verified against `deploy/2026.08.21.04..HEAD`: nothing
|
||||
touches a `databases/*/schema.ts`, `package.json` dependencies or `bun.lock`. So **no `bun db:push` and no
|
||||
`bun install`** — a host that runs either has run something this release did not ask for. Note that the
|
||||
previous release DID need a push; that was `anthropic_accounts` and it is already applied everywhere.
|
||||
|
||||
## What is in it
|
||||
|
||||
- **The theme collection.** 147 ports from omarchythemes.com, then 44 more rescued by supporting
|
||||
`colors.toml` and `0x`-prefixed hex, then a fix to accent/secondary foreground derivation across 202 of
|
||||
them. This is the bulk of the diff: 229 files, ~22.5k lines, almost all data.
|
||||
- **Spotlight.** Opens on **alt-space** and nothing else, from anywhere including a focused text field.
|
||||
The eight-item cap is gone — core items filled it, so every plugin tile was unreachable on a populated
|
||||
server. Rows draw the dock's own tiles, and the settings list went from nine hand-written entries to
|
||||
twenty read off the screens that declare them.
|
||||
- **Prompt history.** Up/Down only recall from an empty composer, and any other keystroke ends a recall —
|
||||
so a half-written thought is never swapped for one from last week.
|
||||
- **The email plugin's multi-account backend**, which arrives via `plugins:update` rather than through this
|
||||
repository. `?account=<id>` names a mailbox, `?account=all` spans them. **Absent is unchanged**, so
|
||||
nothing that calls those routes today behaves differently — including the mobile app and the agent's
|
||||
`email_db` tool. Only hosts with the email plugin installed are affected at all.
|
||||
|
||||
## Every host
|
||||
|
||||
1. `git pull --ff-only` — larger than usual, ~22.5k lines of theme data
|
||||
2. `bun run plugins:update`
|
||||
3. `pm2 restart officer`
|
||||
|
||||
`officer` only. Step 2 restarts each plugin's own sidecar, which is that script's behaviour and worth
|
||||
recording in the report rather than omitting.
|
||||
|
||||
**`macbookpro`:** append `/opt/homebrew/bin` to PATH for the `bun` commands and run `pm2` separately. See
|
||||
`docs/servers.md` — replacing the PATH is what broke `pm2` on an earlier deploy.
|
||||
|
||||
## `officer-dev` — skip it, and do NOT report it as behind
|
||||
|
||||
The commander runs there and skips its own host, as always. But this time the host is **already on this
|
||||
code**: `officer` was restarted there many times during the night as the work landed, so it is running the
|
||||
tree this tag names rather than lagging. Report it as skipped and current, not skipped and stale.
|
||||
|
||||
## Then check
|
||||
|
||||
`pm2 jlist`: `officer` is `online` and `restart_time` moved. Nothing `errored`, including the sidecars step
|
||||
2 bounced.
|
||||
|
||||
A theme picker still lists themes and one loads — the diff is data, so a bad parse would show as a missing
|
||||
or unreadable theme rather than as a failed boot.
|
||||
|
||||
`scripts/deploy-claim.sh state 2026.08.22.01` says `done`.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "officer",
|
||||
"version": "2026.08.21.04",
|
||||
"version": "2026.08.22.01",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"workspaces": [
|
||||
|
||||
@@ -0,0 +1,340 @@
|
||||
#!/usr/bin/env bun
|
||||
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, 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
|
||||
// pipeline produces — see `generate-themes.ts` for that one. This is its sibling for themes that have no
|
||||
// `colors.toml`: a single-theme repo instead ships per-app configs, so `from-ansi.ts` reconstructs the
|
||||
// same `Palette` from `alacritty.toml` or `ghostty.conf`, and everything downstream (mapping, contrast
|
||||
// checking) is identical. What's NOT identical: these are unofficial, one author's repo can vanish or
|
||||
// change, and the reconstruction is a heuristic, not Omarchy's own curated palette — every generated file
|
||||
// says so in its header.
|
||||
//
|
||||
// bun scripts/port-community-themes.ts [--limit=N] [--slug=<one-slug>] [--redo]
|
||||
//
|
||||
// State lives in `scripts/themes/community-manifest.json` — one entry per theme successfully ported, so a
|
||||
// re-run only fetches what's missing (or everything, with --redo) and the registry/index blocks are
|
||||
// always rewritten fresh from the whole manifest, never hand-edited.
|
||||
|
||||
const CSS_THEME_DIR = join(import.meta.dir, '..', 'src', 'workspaces', 'theme', 'css', 'themes');
|
||||
const INDEX_CSS = join(CSS_THEME_DIR, '..', 'index.css');
|
||||
const REGISTRY = join(import.meta.dir, '..', 'src', 'workspaces', 'theme', 'src', 'themes.ts');
|
||||
const MANIFEST_PATH = join(import.meta.dir, 'themes', 'community-manifest.json');
|
||||
const SITE = 'https://omarchythemes.com';
|
||||
const CONCURRENCY = 8;
|
||||
|
||||
const REDO = process.argv.includes('--redo');
|
||||
const ONLY_SLUG = process.argv.find((a) => a.startsWith('--slug='))?.split('=')[1];
|
||||
const LIMIT = Number(process.argv.find((a) => a.startsWith('--limit='))?.split('=')[1] ?? Infinity);
|
||||
|
||||
type ManifestEntry = {
|
||||
id: string;
|
||||
name: string;
|
||||
repo: string;
|
||||
/** Omitted means GitHub, which is where all but a couple of these live. */
|
||||
host?: 'gitlab';
|
||||
kind: string;
|
||||
dark: boolean;
|
||||
};
|
||||
|
||||
type Repo = { host: 'github' | 'gitlab'; path: string };
|
||||
|
||||
const repoUrl = (r: Repo): string => `https://${r.host === 'gitlab' ? 'gitlab.com' : 'github.com'}/${r.path}`;
|
||||
|
||||
// Same pairs `generate-themes.ts` checks, kept in sync by hand since this is the only other place that
|
||||
// needs them and duplicating a 20-line array beats a shared module for one caller each.
|
||||
const PAIRS: [string, string, number][] = [
|
||||
['--foreground', '--background', TEXT],
|
||||
['--card-foreground', '--card', TEXT],
|
||||
['--popover-foreground', '--popover', TEXT],
|
||||
['--muted-foreground', '--muted', TEXT],
|
||||
['--accent-foreground', '--accent', TEXT],
|
||||
['--primary-foreground', '--primary', TEXT],
|
||||
['--secondary-foreground', '--secondary', TEXT],
|
||||
['--cta-foreground', '--cta', TEXT],
|
||||
['--success-foreground', '--success', TEXT],
|
||||
['--warning-foreground', '--warning', TEXT],
|
||||
['--destructive-foreground', '--destructive', TEXT],
|
||||
['--info-foreground', '--info', TEXT],
|
||||
['--busy-foreground', '--busy', TEXT],
|
||||
['--busy-ink', '--background', TEXT],
|
||||
['--input', '--background', 1.35],
|
||||
['--ring', '--background', UI],
|
||||
];
|
||||
|
||||
const title = (id: string): string =>
|
||||
id
|
||||
.split('-')
|
||||
.map((w) => (w.length <= 2 ? w.toUpperCase() : w[0]!.toUpperCase() + w.slice(1)))
|
||||
.join(' ');
|
||||
|
||||
function loadManifest(): ManifestEntry[] {
|
||||
if (!existsSync(MANIFEST_PATH)) return [];
|
||||
return JSON.parse(readFileSync(MANIFEST_PATH, 'utf8'));
|
||||
}
|
||||
|
||||
function saveManifest(entries: ManifestEntry[]): void {
|
||||
writeFileSync(MANIFEST_PATH, `${JSON.stringify(entries, null, 2)}\n`);
|
||||
}
|
||||
|
||||
function ghApiDefaultBranch(repo: string): string {
|
||||
try {
|
||||
const out = execSync(`gh api repos/${repo} --jq .default_branch`, {
|
||||
encoding: 'utf8',
|
||||
stdio: ['ignore', 'pipe', 'ignore'],
|
||||
});
|
||||
return out.trim() || 'main';
|
||||
} catch {
|
||||
return 'main';
|
||||
}
|
||||
}
|
||||
|
||||
async function gitlabDefaultBranch(path: string): Promise<string> {
|
||||
const json = await fetchText(`https://gitlab.com/api/v4/projects/${encodeURIComponent(path)}`);
|
||||
if (!json) return 'main';
|
||||
try {
|
||||
return (JSON.parse(json).default_branch as string) || 'main';
|
||||
} catch {
|
||||
return 'main';
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchText(url: string): Promise<string | undefined> {
|
||||
try {
|
||||
const res = await fetch(url);
|
||||
if (!res.ok) return undefined;
|
||||
return await res.text();
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
async function discoverRepo(slug: string): Promise<Repo | undefined> {
|
||||
const html = await fetchText(`${SITE}/themes/${slug}`);
|
||||
if (!html) return undefined;
|
||||
const gh = html.match(/https:\/\/github\.com\/([\w.-]+)\/([\w.-]+)/);
|
||||
if (gh) return { host: 'github', path: `${gh[1]}/${gh[2]}` };
|
||||
// A couple of authors host on GitLab instead. Its group paths can nest, hence the greedier match.
|
||||
const gl = html.match(/https:\/\/gitlab\.com\/([\w.-]+(?:\/[\w.-]+)+?)(?=["'\s<]|$)/);
|
||||
if (gl) return { host: 'gitlab', path: gl[1]!.replace(/\.git$/, '') };
|
||||
return undefined;
|
||||
}
|
||||
|
||||
async function sourceFor(
|
||||
repo: Repo,
|
||||
slug: string,
|
||||
): Promise<{ palette: Palette; kind: string; derived: boolean } | undefined> {
|
||||
const branch = repo.host === 'gitlab' ? await gitlabDefaultBranch(repo.path) : ghApiDefaultBranch(repo.path);
|
||||
const raw = (p: string) =>
|
||||
repo.host === 'gitlab'
|
||||
? `https://gitlab.com/${repo.path}/-/raw/${branch}/${p}`
|
||||
: `https://raw.githubusercontent.com/${repo.path}/${branch}/${p}`;
|
||||
|
||||
// Most repos hold one theme at the root. A few are packs that nest one directory per theme, so also
|
||||
// look under the directory named after THIS slug — an exact match is the only safe pick, since a pack
|
||||
// with variant names of its own (`abyss-dark`, `lagoon-light`, …) has no one theme that is "the" one.
|
||||
const prefixes = ['', `themes/${slug}/`, `omarchy/themes/${slug}/`, `${slug}/`];
|
||||
|
||||
for (const prefix of prefixes) {
|
||||
// `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(`${prefix}colors.toml`));
|
||||
if (tomlText) {
|
||||
const kv = parseTomlText(tomlText);
|
||||
try {
|
||||
return {
|
||||
palette: paletteFromRecord(kv, `${repo.path}/${prefix}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',
|
||||
'alacritty/alacritty.toml',
|
||||
'config/alacritty.toml',
|
||||
]) {
|
||||
const text = await fetchText(raw(`${prefix}${path}`));
|
||||
if (!text) continue;
|
||||
const ansi = parseAlacrittyToml(text);
|
||||
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(`${prefix}${path}`));
|
||||
if (!text) continue;
|
||||
const ansi = parseGhosttyConf(text);
|
||||
if (ansi) return { palette: deriveOmarchyPalette(ansi), kind: 'ghostty.conf', derived: true };
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
async function portOne(slug: string): Promise<{ entry: ManifestEntry; css: string } | { skip: string }> {
|
||||
const repo = await discoverRepo(slug);
|
||||
if (!repo) return { skip: 'no github/gitlab repo link found on its omarchythemes.com page' };
|
||||
|
||||
const source = await sourceFor(repo, slug);
|
||||
if (!source) return { skip: `no parseable colors.toml/alacritty.toml/ghostty.conf in ${repo.path}` };
|
||||
|
||||
const palette = source.palette;
|
||||
const tokens = mapPalette(palette);
|
||||
|
||||
// `--input` carries a real accessibility requirement (a field boundary you can't see) where `--border`
|
||||
// is decoration and isn't held to one — see the README. `map.ts` derives both from the same mix for
|
||||
// every theme, official ones included, and it normally clears 1.35:1 on its own; a few derived palettes
|
||||
// land just under it, so nudge only this one rather than loosening the check.
|
||||
tokens['--input'] = ensureContrast(tokens['--input']!, tokens['--background']!, 1.35);
|
||||
|
||||
const failures: string[] = [];
|
||||
for (const [fgKey, bgKey, min] of PAIRS) {
|
||||
const fg = tokens[fgKey]!;
|
||||
const bg = tokens[bgKey]!;
|
||||
if (!fg.startsWith('#') || !bg.startsWith('#')) continue;
|
||||
const ratio = contrast(fg, bg);
|
||||
if (ratio < min) failures.push(`${fgKey} on ${bgKey} is ${ratio.toFixed(2)}:1, needs ${min}:1`);
|
||||
}
|
||||
if (failures.length > 0) return { skip: `contrast failed after derivation: ${failures.join('; ')}` };
|
||||
|
||||
const name = title(slug);
|
||||
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.
|
||||
|
||||
${modeLine}
|
||||
|
||||
Source: ${repoUrl(repo)} (${source.kind}), read by scripts/port-community-themes.ts. Values
|
||||
${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.
|
||||
*/
|
||||
[data-theme='${slug}'] {
|
||||
${body}
|
||||
}
|
||||
`;
|
||||
|
||||
return {
|
||||
entry: {
|
||||
id: slug,
|
||||
name,
|
||||
repo: repo.path,
|
||||
...(repo.host === 'gitlab' ? { host: 'gitlab' as const } : {}),
|
||||
kind: source.kind,
|
||||
dark: palette.mode === 'dark',
|
||||
},
|
||||
css,
|
||||
};
|
||||
}
|
||||
|
||||
function rewriteIndexCss(entries: ManifestEntry[]): void {
|
||||
const index = readFileSync(INDEX_CSS, 'utf8');
|
||||
const marker = '/* Community themes';
|
||||
const startIdx = index.indexOf(marker);
|
||||
const head = startIdx >= 0 ? index.slice(0, startIdx) : index.replace(/\n@import '\.\/chrome\.css';\n$/, '\n');
|
||||
const imports = entries.map((e) => `@import './themes/${e.id}.css';`).join('\n');
|
||||
writeFileSync(
|
||||
INDEX_CSS,
|
||||
`${head}/* Community themes — ported from omarchythemes.com by scripts/port-community-themes.ts. Do not edit this block. */\n${imports}\n\n@import './chrome.css';\n`,
|
||||
);
|
||||
}
|
||||
|
||||
function rewriteRegistry(entries: ManifestEntry[]): void {
|
||||
const registry = readFileSync(REGISTRY, 'utf8');
|
||||
const START = ' /* COMMUNITY THEMES — start */';
|
||||
const END = ' /* COMMUNITY THEMES — end */';
|
||||
const rows = entries
|
||||
.map((e) => ` { id: '${e.id}', name: '${e.name}', family: '${e.name}', applyDarkClass: ${e.dark} },`)
|
||||
.join('\n');
|
||||
const block = `${START}\n${rows}\n${END}`;
|
||||
|
||||
if (registry.includes(START) && registry.includes(END)) {
|
||||
// Snap to the start of the marker's own line — `indexOf` on a string with leading spaces can match
|
||||
// partway into stray indentation left by an earlier write, which would otherwise accumulate.
|
||||
const startLineBegin = registry.lastIndexOf('\n', registry.indexOf(START)) + 1;
|
||||
const before = registry.slice(0, startLineBegin);
|
||||
const after = registry.slice(registry.indexOf(END) + END.length);
|
||||
writeFileSync(REGISTRY, `${before}${block}${after}`);
|
||||
} else {
|
||||
const anchor = '] as const;';
|
||||
const idx = registry.indexOf(anchor);
|
||||
writeFileSync(REGISTRY, `${registry.slice(0, idx)}${block}\n${registry.slice(idx)}`);
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const slugsFile = process.argv.find((a) => a.startsWith('--slugs='))?.split('=')[1];
|
||||
const allSlugs: string[] = slugsFile ? readFileSync(slugsFile, 'utf8').trim().split('\n').filter(Boolean) : [];
|
||||
|
||||
const manifest = loadManifest();
|
||||
const known = new Set(manifest.map((e) => e.id));
|
||||
// Never take a slug the OFFICIAL/hand-authored part of the registry already owns — that's everything
|
||||
// before this script's own block, which it is free to redo.
|
||||
const registryHead = readFileSync(REGISTRY, 'utf8').split('/* COMMUNITY THEMES — start */')[0]!;
|
||||
const registryIds = new Set(Array.from(registryHead.matchAll(/id: '([\w-]+)'/g)).map((m) => m[1]!));
|
||||
|
||||
let todo = ONLY_SLUG ? [ONLY_SLUG] : allSlugs.filter((s) => !registryIds.has(s) && (REDO || !known.has(s)));
|
||||
todo = todo.slice(0, LIMIT);
|
||||
|
||||
console.log(`community theme port: ${todo.length} to try, ${manifest.length} already in the manifest`);
|
||||
|
||||
const results: ManifestEntry[] = [...manifest.filter((e) => !todo.includes(e.id))];
|
||||
let done = 0;
|
||||
let ok = 0;
|
||||
let skipped = 0;
|
||||
|
||||
async function worker() {
|
||||
while (todo.length > 0) {
|
||||
const slug = todo.shift();
|
||||
if (!slug) break;
|
||||
try {
|
||||
const result = await portOne(slug);
|
||||
done++;
|
||||
if ('skip' in result) {
|
||||
skipped++;
|
||||
console.log(`[${done}] SKIP ${slug} — ${result.skip}`);
|
||||
} else {
|
||||
writeFileSync(join(CSS_THEME_DIR, `${slug}.css`), result.css);
|
||||
results.push(result.entry);
|
||||
ok++;
|
||||
console.log(`[${done}] OK ${slug} — from ${result.entry.repo} (${result.entry.kind})`);
|
||||
}
|
||||
} catch (err) {
|
||||
done++;
|
||||
skipped++;
|
||||
console.log(`[${done}] ERROR ${slug} — ${(err as Error).message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(Array.from({ length: CONCURRENCY }, worker));
|
||||
|
||||
results.sort((a, b) => a.id.localeCompare(b.id));
|
||||
saveManifest(results);
|
||||
rewriteIndexCss(results);
|
||||
rewriteRegistry(results);
|
||||
|
||||
console.log(`\ndone: ${ok} ported, ${skipped} skipped, ${results.length} total in manifest`);
|
||||
}
|
||||
|
||||
main();
|
||||
@@ -0,0 +1,205 @@
|
||||
// Reading a community theme's actual shipped format.
|
||||
//
|
||||
// Omarchy's own 22 themes carry a `colors.toml` in the semantic shape `palette.ts` expects — three
|
||||
// background depths, four foreground weights, an accent, a selection, a muted. A community theme on
|
||||
// omarchythemes.com ships none of that: it's per-app config files in the classic 16-ANSI-slot style,
|
||||
// because that's what predates Omarchy 4's own format and what most single-theme repos still use.
|
||||
//
|
||||
// This file reads the two shapes that cover almost every repo: `alacritty.toml` (structured, typed,
|
||||
// preferred) and `ghostty.conf`/`ghostty-theme` (flat `key = value` lines, fallback). Either becomes an
|
||||
// `AnsiSource` — the 16 ANSI slots plus primary background/foreground — which `from-ansi.ts` turns into
|
||||
// the same `Palette` shape the official pipeline consumes, so every downstream guarantee (contrast
|
||||
// checking, the 84-token mapping) applies unchanged.
|
||||
|
||||
export type AnsiSource = {
|
||||
background: string;
|
||||
foreground: string;
|
||||
black: string;
|
||||
red: string;
|
||||
green: string;
|
||||
yellow: string;
|
||||
blue: string;
|
||||
magenta: string;
|
||||
cyan: string;
|
||||
white: string;
|
||||
brightBlack: string;
|
||||
brightRed: string;
|
||||
brightGreen: string;
|
||||
brightYellow: string;
|
||||
brightBlue: string;
|
||||
brightMagenta: string;
|
||||
brightCyan: string;
|
||||
brightWhite: string;
|
||||
};
|
||||
|
||||
// `#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].replace(/^(#|0x)/, '').toLowerCase();
|
||||
if (h.length === 3)
|
||||
h = h
|
||||
.split('')
|
||||
.map((c) => c + c)
|
||||
.join('');
|
||||
if (h.length >= 6) h = h.slice(0, 6);
|
||||
return `#${h}`;
|
||||
}
|
||||
|
||||
/** A deliberately small TOML reader: flat `key = "value"` lines plus `[section]` headers. */
|
||||
export function parseAlacrittyToml(text: string): AnsiSource | undefined {
|
||||
let section = '';
|
||||
const rows: Record<string, Record<string, string>> = {};
|
||||
for (const rawLine of text.split('\n')) {
|
||||
const line = rawLine.trim();
|
||||
const sectionMatch = line.match(/^\[([\w.]+)]$/);
|
||||
if (sectionMatch) {
|
||||
section = sectionMatch[1]!;
|
||||
rows[section] ??= {};
|
||||
continue;
|
||||
}
|
||||
// Quoted specifically, not "anything but a comment" — a hex value starts with `#`, the same
|
||||
// character that opens a trailing comment, so the two can only be told apart by the quotes.
|
||||
const kv = line.match(/^([\w-]+)\s*=\s*(['"])(.*?)\2/);
|
||||
if (kv && section) {
|
||||
const hex = normalizeHex(kv[3]!);
|
||||
if (hex) rows[section]![kv[1]!] = hex;
|
||||
}
|
||||
}
|
||||
|
||||
const primary = rows['colors.primary'];
|
||||
const normal = rows['colors.normal'];
|
||||
const bright = rows['colors.bright'];
|
||||
if (!primary?.background || !primary?.foreground || !normal || !bright) return undefined;
|
||||
|
||||
const need = (r: Record<string, string>, k: string): string | undefined => r[k];
|
||||
const n = (k: string) => need(normal, k);
|
||||
const b = (k: string) => need(bright, k);
|
||||
if (
|
||||
!n('black') ||
|
||||
!n('red') ||
|
||||
!n('green') ||
|
||||
!n('yellow') ||
|
||||
!n('blue') ||
|
||||
!n('magenta') ||
|
||||
!n('cyan') ||
|
||||
!n('white')
|
||||
)
|
||||
return undefined;
|
||||
if (
|
||||
!b('black') ||
|
||||
!b('red') ||
|
||||
!b('green') ||
|
||||
!b('yellow') ||
|
||||
!b('blue') ||
|
||||
!b('magenta') ||
|
||||
!b('cyan') ||
|
||||
!b('white')
|
||||
)
|
||||
return undefined;
|
||||
|
||||
return {
|
||||
background: primary.background,
|
||||
foreground: primary.foreground,
|
||||
black: n('black')!,
|
||||
red: n('red')!,
|
||||
green: n('green')!,
|
||||
yellow: n('yellow')!,
|
||||
blue: n('blue')!,
|
||||
magenta: n('magenta')!,
|
||||
cyan: n('cyan')!,
|
||||
white: n('white')!,
|
||||
brightBlack: b('black')!,
|
||||
brightRed: b('red')!,
|
||||
brightGreen: b('green')!,
|
||||
brightYellow: b('yellow')!,
|
||||
brightBlue: b('blue')!,
|
||||
brightMagenta: b('magenta')!,
|
||||
brightCyan: b('cyan')!,
|
||||
brightWhite: b('white')!,
|
||||
};
|
||||
}
|
||||
|
||||
/** Ghostty's config: flat `key = value`, ANSI palette as sixteen `palette = N=#hex` lines. */
|
||||
export function parseGhosttyConf(text: string): AnsiSource | undefined {
|
||||
let background: string | undefined;
|
||||
let foreground: string | undefined;
|
||||
const palette: Record<number, string> = {};
|
||||
|
||||
for (const rawLine of text.split('\n')) {
|
||||
const line = rawLine.trim();
|
||||
if (line.startsWith('#')) continue;
|
||||
const bg = line.match(/^background\s*=\s*(#[0-9a-fA-F]{3,8})/);
|
||||
if (bg) background = normalizeHex(bg[1]!);
|
||||
const fg = line.match(/^foreground\s*=\s*(#[0-9a-fA-F]{3,8})/);
|
||||
if (fg) foreground = normalizeHex(fg[1]!);
|
||||
const pal = line.match(/^palette\s*=\s*(\d+)\s*=\s*(#[0-9a-fA-F]{3,8})/);
|
||||
if (pal) {
|
||||
const hex = normalizeHex(pal[2]!);
|
||||
if (hex) palette[Number(pal[1])] = hex;
|
||||
}
|
||||
}
|
||||
|
||||
if (!background || !foreground) return undefined;
|
||||
for (let i = 0; i <= 15; i++) if (!palette[i]) return undefined;
|
||||
|
||||
return {
|
||||
background,
|
||||
foreground,
|
||||
black: palette[0]!,
|
||||
red: palette[1]!,
|
||||
green: palette[2]!,
|
||||
yellow: palette[3]!,
|
||||
blue: palette[4]!,
|
||||
magenta: palette[5]!,
|
||||
cyan: palette[6]!,
|
||||
white: palette[7]!,
|
||||
brightBlack: palette[8]!,
|
||||
brightRed: palette[9]!,
|
||||
brightGreen: palette[10]!,
|
||||
brightYellow: palette[11]!,
|
||||
brightBlue: palette[12]!,
|
||||
brightMagenta: palette[13]!,
|
||||
brightCyan: palette[14]!,
|
||||
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<string, string>): 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]!,
|
||||
};
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,76 @@
|
||||
import type { Palette } from './palette';
|
||||
import type { AnsiSource } from './ansi-source';
|
||||
import { UI, contrast, ensureContrast, luminance, mix, parseHex } from './contrast';
|
||||
|
||||
// An `AnsiSource` (16 ANSI slots + primary bg/fg) has no notion of "three background depths" or "an
|
||||
// accent" — Omarchy 4's `colors.toml` is a richer, hand-curated shape that a sixteen-slot terminal scheme
|
||||
// was never designed to fill. This derives one anyway, by role rather than by guessing a fixed value:
|
||||
//
|
||||
// - accent is whichever blue-ish slot actually stands out from the background (every official palette
|
||||
// picks blue too — this just guards against a scheme that reused the background for it).
|
||||
// - the three depths are the background pushed a fixed distance toward black or white, in the direction
|
||||
// each mode's surfaces already move (dark themes rise lighter, light themes recede darker — see the
|
||||
// ratios comment below, calibrated against Nord and Rosé Pine's real colors.toml).
|
||||
// - the three foreground weights are the foreground pulled toward the background by a fixed fraction,
|
||||
// standing in for "faint", "muted" and "strong" text.
|
||||
//
|
||||
// None of this has to be exact. `mapPalette`'s `ensureContrast` re-checks every text/surface pair
|
||||
// afterward and nudges anything that fails — the approximation only has to be plausible, not correct.
|
||||
|
||||
function pickAccent(a: AnsiSource): string {
|
||||
const candidates = [a.blue, a.brightBlue, a.cyan, a.brightCyan];
|
||||
const best = candidates.reduce((hi, c) => (contrast(c, a.background) > contrast(hi, a.background) ? c : hi));
|
||||
// `--ring` is this colour laid directly on `--background` (see `map.ts`), and it's in the contract's
|
||||
// PAIRS check same as the official themes — so guarantee it the way `ensureContrast` guarantees text,
|
||||
// rather than only guarding against a background-coloured accent.
|
||||
return ensureContrast(best, a.background, UI);
|
||||
}
|
||||
|
||||
export function deriveOmarchyPalette(a: AnsiSource): Palette {
|
||||
const dark = luminance(parseHex(a.background)) < 0.5;
|
||||
const mode: Palette['mode'] = dark ? 'dark' : 'light';
|
||||
|
||||
const darkerBackground = dark ? mix(a.background, '#000000', 0.45) : mix(a.background, '#000000', 0.1);
|
||||
const darkBackground = dark ? mix(a.background, '#000000', 0.22) : mix(a.background, '#000000', 0.06);
|
||||
const lighterBackground = dark ? mix(a.background, '#ffffff', 0.07) : mix(a.background, '#000000', 0.035);
|
||||
|
||||
// Faintest → strongest, all pulled toward the background rather than toward a fixed grey, so a warm
|
||||
// palette's dim text stays warm instead of turning neutral.
|
||||
const darkForeground = mix(a.foreground, a.background, 0.55);
|
||||
const lightForeground = mix(a.foreground, a.background, 0.3);
|
||||
|
||||
const accent = pickAccent(a);
|
||||
const muted = contrast(a.brightBlack, a.background) >= 1.15 ? a.brightBlack : mix(a.foreground, a.background, 0.6);
|
||||
|
||||
return {
|
||||
mode,
|
||||
accent,
|
||||
// Unused by `mapPalette` today (grep confirms `p.selection` has no reader) — kept only because the
|
||||
// `Palette` type requires it.
|
||||
selection: mix(a.background, a.foreground, 0.2),
|
||||
muted,
|
||||
background: a.background,
|
||||
darkBackground,
|
||||
darkerBackground,
|
||||
lighterBackground,
|
||||
foreground: a.foreground,
|
||||
darkForeground,
|
||||
lightForeground,
|
||||
brightForeground: a.foreground,
|
||||
red: a.red,
|
||||
yellow: a.yellow,
|
||||
green: a.green,
|
||||
cyan: a.cyan,
|
||||
blue: a.blue,
|
||||
magenta: a.magenta,
|
||||
// Standard ANSI has no orange slot. Mixing red and yellow reads better as "busy" than falling back to
|
||||
// plain yellow the way `loadPalette` does for the 3 official themes that omit it.
|
||||
orange: mix(a.red, a.yellow, 0.5),
|
||||
brightRed: a.brightRed,
|
||||
brightYellow: a.brightYellow,
|
||||
brightGreen: a.brightGreen,
|
||||
brightCyan: a.brightCyan,
|
||||
brightBlue: a.brightBlue,
|
||||
brightMagenta: a.brightMagenta,
|
||||
};
|
||||
}
|
||||
@@ -49,6 +49,13 @@ export function mapPalette(p: Palette): Tokens {
|
||||
// miasma at 4.00 — close enough to look fine and still fail, which is the kind of near-miss that a
|
||||
// person eyeballing a screenshot would have shipped.
|
||||
const fgMuted = ensureContrast(p.lightForeground, s.high);
|
||||
// Same reasoning as `fgMuted`, for the same surface: `--accent` and `--secondary` are BOTH `s.high`,
|
||||
// so their text has to be checked against `s.high` too. It was deriving from `fgRaised` — the weight
|
||||
// for `s.raised` — which is the identical near-miss the comment above describes, just one token over.
|
||||
// A no-op for all 22 official palettes (each already clears 4.5:1 on `s.high` by 1.4x or more, and
|
||||
// `ensureContrast` returns its input untouched when it passes); what it fixes is the ported palettes
|
||||
// whose foreground sits between the two surfaces' thresholds.
|
||||
const fgHigh = ensureContrast(p.foreground, s.high);
|
||||
const fgFaint = ensureContrast(p.darkForeground, s.raised, UI);
|
||||
|
||||
/**
|
||||
@@ -88,13 +95,13 @@ export function mapPalette(p: Palette): Tokens {
|
||||
'--muted': s.high,
|
||||
'--muted-foreground': fgMuted,
|
||||
'--accent': s.high,
|
||||
'--accent-foreground': fgRaised,
|
||||
'--accent-foreground': fgHigh,
|
||||
|
||||
// ── Actions ──
|
||||
'--primary': accent,
|
||||
'--primary-foreground': on(accent),
|
||||
'--secondary': s.high,
|
||||
'--secondary-foreground': fgRaised,
|
||||
'--secondary-foreground': fgHigh,
|
||||
'--cta': accent,
|
||||
'--cta-foreground': on(accent),
|
||||
'--ctahover': mix(accent, s.dark ? '#ffffff' : '#000000', 0.12),
|
||||
|
||||
@@ -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<string, string> {
|
||||
/**
|
||||
* 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<string, string> {
|
||||
const out: Record<string, string> = {};
|
||||
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<string, string>, 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);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import { JobsIndicator } from './JobsIndicator';
|
||||
import { ThemeSwitcher } from './ThemeSwitcher';
|
||||
import { RescanButton } from '../Rescan/RescanButton';
|
||||
import { usePageTitle } from '@/state/usePageTitle';
|
||||
import { useAuth } from 'hooks/useAuth';
|
||||
import { useThemeAsset } from '@/components/ui/ThemeProvider';
|
||||
// import { BugReportButton } from '../BugReport/BugReportButton';
|
||||
|
||||
@@ -46,6 +47,7 @@ type HeaderProps = {
|
||||
export function Header({ dockItems, hidden }: HeaderProps) {
|
||||
const [open, setOpen] = useState(false);
|
||||
const isTouch = useIsTouch();
|
||||
const { user } = useAuth();
|
||||
// The mark comes from the theme — a white-labelled build replaces it without touching this file.
|
||||
const logo = useThemeAsset('--logo-src');
|
||||
|
||||
@@ -100,9 +102,15 @@ export function Header({ dockItems, hidden }: HeaderProps) {
|
||||
*/}
|
||||
{/* Bug Report — hidden */}
|
||||
{/* <BugReportButton /> */}
|
||||
<JobsIndicator />
|
||||
<RescanButton />
|
||||
<ThemeSwitcher />
|
||||
{/* Owner only, and tidiness rather than access control — /jobs stays reachable and the rescan
|
||||
endpoint is gated server-side, because a hidden button is not a permission. */}
|
||||
{user?.role === 'Super Admin' && (
|
||||
<>
|
||||
<JobsIndicator />
|
||||
<RescanButton />
|
||||
</>
|
||||
)}
|
||||
<UserMenu />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { createPortal } from 'react-dom';
|
||||
import { Palette, Check } from 'lucide-react';
|
||||
import { Check } from 'lucide-react';
|
||||
import * as Dropdown from '@/components/ui/dropdown-menu';
|
||||
import type { Theme } from '@/components/ui/ThemeProvider';
|
||||
import { useTheme, useThemeKeys } from '@/components/ui/ThemeProvider';
|
||||
@@ -45,11 +45,14 @@ export const ThemeSwitcher = () => {
|
||||
<DropdownMenuTrigger asChild>
|
||||
<button
|
||||
title={`Theme: ${theme.name} · ctrl+shift+←/→ to cycle · ctrl+shift+space for the list`}
|
||||
aria-label="Theme"
|
||||
className="flex h-8 w-8 items-center justify-center rounded-full transition-transform hover:scale-110 cursor-pointer"
|
||||
aria-label={`Theme: ${theme.name}`}
|
||||
// Named rather than a palette glyph: with 227 themes the one you are wearing is worth
|
||||
// reading at a glance, and an icon cannot say which that is. Same pill as JobsIndicator so
|
||||
// the cluster stays one shape.
|
||||
className="flex h-8 cursor-pointer items-center rounded-full bg-black/25 px-2.5 text-xs font-semibold transition-colors hover:bg-black/35"
|
||||
style={{ color: 'var(--header-fg)' }}
|
||||
>
|
||||
<Palette className="h-4 w-4" />
|
||||
{theme.name}
|
||||
</button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align="end" className="z-50 max-h-[70vh] w-56 overflow-y-auto">
|
||||
|
||||
@@ -11,19 +11,42 @@ import { useSpotlightItems, type SpotlightItem } from './useSpotlightItems';
|
||||
//
|
||||
// ── Keyboard first, and the trigger ──
|
||||
//
|
||||
// `shift-space`. The two obvious chords were both taken: `ctrl-space` focuses the address bar in Brave,
|
||||
// and `alt-space` is load-bearing for the owner elsewhere. `cmd-k` belongs to the browser on some
|
||||
// platforms and to text fields on others.
|
||||
// `alt-space`, and ONLY that. It went ctrl-space → shift-space → alt-space, and each move was the owner
|
||||
// telling us what the chord actually collides with on the machine he uses:
|
||||
//
|
||||
// **Shift-space is a real key combination inside a text field** — it types a space, and people hold shift
|
||||
// through one more often than they think while typing capitals. So the trigger is IGNORED when focus is
|
||||
// in an input, a textarea or anything contenteditable, and the space is typed as normal.
|
||||
// ctrl-space focuses the address bar in Brave
|
||||
// shift-space types a space — see below, this was the real problem
|
||||
// alt-space taken by the window menu, and the owner rebound it rather than give up the chord
|
||||
//
|
||||
// The cost of that is worth stating: focus usually IS in the chat composer, so opening Spotlight from
|
||||
// there means clicking out first. If that turns out to be the common case, a double-tap of shift is the
|
||||
// escape hatch — it conflicts with nothing anywhere.
|
||||
// **Shift-space was never a good choice**, and that is why it did not last a day. It is a real key
|
||||
// combination inside a text field: it types a space, and people hold shift through one more often than
|
||||
// they think while typing capitals. Guarding it meant IGNORING the trigger whenever focus was in an input
|
||||
// — which is where focus usually is, the chat composer — so opening Spotlight meant clicking out first.
|
||||
// A launcher you have to prepare for is not a launcher.
|
||||
//
|
||||
// Alt-space has no meaning inside a text field, so there is NO focus check at all. The guard shift-space
|
||||
// needed was kept for one commit as "belt-and-braces" and was simply the old bug wearing a new hat: focus
|
||||
// is usually in the chat composer, so a launcher that stands down there is a launcher that does not open
|
||||
// when you want it. `preventDefault` on the handler covers the only real risk the guard addressed.
|
||||
//
|
||||
// Nothing else opens it. There is deliberately no second chord — two triggers for one thing means two
|
||||
// things to collide with, and this one moved twice already.
|
||||
//
|
||||
// Escape closes, arrows move, enter goes. The mouse works, but nothing here is designed around it.
|
||||
//
|
||||
// ── Sizing ──
|
||||
//
|
||||
// Loosened 2026-08-22: the first pass reused the app's list metrics (7px tile, text-sm, py-2) and read as
|
||||
// cramped, because this is not a list inside a panel — it is a modal you look at for two seconds with
|
||||
// nothing else competing for the eye. So the search input leads at `text-base`, rows are `py-2.5` with a
|
||||
// 9px tile, and the label is `text-[15px]` with the hint and path kept deliberately subordinate.
|
||||
//
|
||||
// The panel widened with them (560 → 640). Rows now carry a label, a hint and a route on one line, and the
|
||||
// route is the first thing to be squeezed out — it is also the thing that disambiguates two rows with the
|
||||
// same name.
|
||||
//
|
||||
// The results box grew 52vh → 60vh for the arithmetic reason: taller rows in the same box show fewer
|
||||
// results, and the cap on how many are listed was removed for a reason.
|
||||
|
||||
/*
|
||||
No cap, deliberately, and it used to be 8.
|
||||
@@ -38,19 +61,6 @@ import { useSpotlightItems, type SpotlightItem } from './useSpotlightItems';
|
||||
cap becomes indistinguishable from a missing feature.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Is the user typing into something?
|
||||
*
|
||||
* `shift-space` types a space in any text field, so the trigger has to stand down there or it eats a
|
||||
* keystroke people make by accident all day. `isContentEditable` covers the editor and any rich input a
|
||||
* panel brings with it.
|
||||
*/
|
||||
function isTyping(target: EventTarget | null): boolean {
|
||||
const el = target as HTMLElement | null;
|
||||
if (!el || !el.tagName) return false;
|
||||
return el.tagName === 'INPUT' || el.tagName === 'TEXTAREA' || el.isContentEditable === true;
|
||||
}
|
||||
|
||||
/** Label with the matched characters picked out, so it is obvious WHY a result is here. */
|
||||
const Highlighted = ({ label, hits }: { label: string; hits: number[] }) => {
|
||||
if (!hits.length) return <>{label}</>;
|
||||
@@ -98,7 +108,7 @@ const Row = ({
|
||||
ev.preventDefault();
|
||||
onPick();
|
||||
}}
|
||||
className={`flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left transition-colors ${
|
||||
className={`flex w-full items-center gap-3.5 rounded-lg px-3.5 py-2.5 text-left transition-colors ${
|
||||
active ? 'bg-accent' : 'hover:bg-accent/50'
|
||||
}`}
|
||||
>
|
||||
@@ -116,7 +126,7 @@ const Row = ({
|
||||
it put a coloured pane behind Calendar, Contacts and every plugin logo.
|
||||
*/}
|
||||
<span
|
||||
className="flex h-7 w-7 shrink-0 items-center justify-center rounded-md"
|
||||
className="flex h-9 w-9 shrink-0 items-center justify-center rounded-md"
|
||||
style={{
|
||||
background: item.tile === 'bare' ? 'transparent' : (item.color ?? 'transparent'),
|
||||
// No colour at all is a settings row: keep the muted glyph rather than inventing a swatch.
|
||||
@@ -130,18 +140,20 @@ const Row = ({
|
||||
className={item.tile === 'bare' ? 'h-full w-full object-contain' : 'h-5 w-5 object-contain'}
|
||||
/>
|
||||
) : Icon ? (
|
||||
<Icon className={`h-4 w-4 ${item.color ? '' : 'text-muted-foreground'}`} />
|
||||
<Icon className={`h-[18px] w-[18px] ${item.color ? '' : 'text-muted-foreground'}`} />
|
||||
) : (
|
||||
<Search className="h-4 w-4 text-muted-foreground" />
|
||||
<Search className="h-[18px] w-[18px] text-muted-foreground" />
|
||||
)}
|
||||
</span>
|
||||
<span className="min-w-0 flex-1">
|
||||
<span className="block truncate text-sm text-foreground">
|
||||
<span className="block truncate text-[15px] leading-snug text-foreground">
|
||||
<Highlighted label={item.label} hits={hits} />
|
||||
</span>
|
||||
{item.hint ? <span className="block truncate text-xs text-muted-foreground">{item.hint}</span> : null}
|
||||
{item.hint ? (
|
||||
<span className="block truncate text-[13px] leading-snug text-muted-foreground">{item.hint}</span>
|
||||
) : null}
|
||||
</span>
|
||||
<span className="shrink-0 font-mono text-[10px] text-muted-foreground/60">{item.to}</span>
|
||||
<span className="shrink-0 font-mono text-[11px] text-muted-foreground/60">{item.to}</span>
|
||||
</button>
|
||||
);
|
||||
};
|
||||
@@ -156,6 +168,19 @@ export const Spotlight = () => {
|
||||
|
||||
const results = useMemo(() => rank(items, query), [items, query]);
|
||||
|
||||
/*
|
||||
The window handler reads these through refs.
|
||||
|
||||
It has to: the listener is registered once per open, and closing over `results` and `active` would pin
|
||||
it to their values at registration — so arrowing down would read a stale list and Enter would open
|
||||
whatever was first when the panel appeared. Adding them to the effect's deps instead would tear down and
|
||||
re-register the listener on every keystroke, which is the same bug wearing a costume.
|
||||
*/
|
||||
const resultsRef = useRef(results);
|
||||
resultsRef.current = results;
|
||||
const activeRef = useRef(active);
|
||||
activeRef.current = active;
|
||||
|
||||
const close = useCallback(() => {
|
||||
setOpen(false);
|
||||
setQuery('');
|
||||
@@ -175,16 +200,48 @@ export const Spotlight = () => {
|
||||
// anywhere — including inside a panel that has its own key handling.
|
||||
useEffect(() => {
|
||||
const onKey = (ev: KeyboardEvent) => {
|
||||
if (ev.shiftKey && ev.code === 'Space' && !isTyping(ev.target)) {
|
||||
// `altKey` and `code`, not `key`: alt-space produces a different `key` on several layouts (and
|
||||
// nothing at all on some), while the physical key is `Space` everywhere.
|
||||
//
|
||||
// No focus check. There was one, inherited from shift-space where it was mandatory, and keeping it
|
||||
// "as belt-and-braces" was wrong in the plainest way: focus is usually IN the chat composer, so the
|
||||
// guard meant the launcher did not open from the place it is most often wanted. `preventDefault`
|
||||
// below covers the only thing the guard was protecting against — a layout that would otherwise type
|
||||
// a character.
|
||||
if (ev.altKey && ev.code === 'Space') {
|
||||
ev.preventDefault();
|
||||
// Take focus off whatever had it, explicitly, before the overlay mounts. The effect below focuses
|
||||
// this panel's own input, and on paper that is enough — but "on paper" is what produced arrow keys
|
||||
// that sometimes did nothing: focus stayed in the composer, so ArrowDown went to the textarea and
|
||||
// the launcher never saw it. Blurring the outgoing element is one line and removes the race rather
|
||||
// than narrowing it.
|
||||
(document.activeElement as HTMLElement | null)?.blur?.();
|
||||
setOpen((wasOpen) => !wasOpen);
|
||||
return;
|
||||
}
|
||||
if (ev.key === 'Escape' && open) close();
|
||||
if (!open) return;
|
||||
if (ev.key === 'Escape') {
|
||||
close();
|
||||
return;
|
||||
}
|
||||
// Navigation is handled HERE rather than on the input, so it works no matter what has focus — a
|
||||
// panel that grabbed it back, a blur that lost the race, an element with its own key handling. The
|
||||
// input's own onKeyDown used to own this, which made every keystroke conditional on focus having
|
||||
// landed where we expected.
|
||||
if (ev.key === 'ArrowDown') {
|
||||
ev.preventDefault();
|
||||
setActive((i) => Math.min(i + 1, resultsRef.current.length - 1));
|
||||
} else if (ev.key === 'ArrowUp') {
|
||||
ev.preventDefault();
|
||||
setActive((i) => Math.max(i - 1, 0));
|
||||
} else if (ev.key === 'Enter') {
|
||||
ev.preventDefault();
|
||||
pick(resultsRef.current[activeRef.current]?.item);
|
||||
}
|
||||
};
|
||||
window.addEventListener('keydown', onKey);
|
||||
return () => window.removeEventListener('keydown', onKey);
|
||||
}, [open, close]);
|
||||
}, [open, close, pick]);
|
||||
|
||||
useEffect(() => {
|
||||
if (open) inputRef.current?.focus();
|
||||
@@ -201,34 +258,22 @@ export const Spotlight = () => {
|
||||
onMouseDown={close}
|
||||
>
|
||||
<div
|
||||
className="w-[min(92vw,560px)] overflow-hidden rounded-2xl border border-border bg-background/95 shadow-2xl"
|
||||
className="w-[min(92vw,640px)] overflow-hidden rounded-2xl border border-border bg-background/95 shadow-2xl"
|
||||
// The backdrop closes on mousedown; this stops a click INSIDE the panel counting as one.
|
||||
onMouseDown={(ev) => ev.stopPropagation()}
|
||||
>
|
||||
<div className="flex items-center gap-2 border-b border-border px-4">
|
||||
<Search className="h-4 w-4 shrink-0 text-muted-foreground" />
|
||||
<Search className="h-5 w-5 shrink-0 text-muted-foreground" />
|
||||
<input
|
||||
ref={inputRef}
|
||||
value={query}
|
||||
onChange={(ev) => setQuery(ev.target.value)}
|
||||
onKeyDown={(ev) => {
|
||||
if (ev.key === 'ArrowDown') {
|
||||
ev.preventDefault();
|
||||
setActive((i) => Math.min(i + 1, results.length - 1));
|
||||
} else if (ev.key === 'ArrowUp') {
|
||||
ev.preventDefault();
|
||||
setActive((i) => Math.max(i - 1, 0));
|
||||
} else if (ev.key === 'Enter') {
|
||||
ev.preventDefault();
|
||||
pick(results[active]?.item);
|
||||
}
|
||||
}}
|
||||
placeholder="Go to…"
|
||||
className="w-full bg-transparent py-3.5 text-sm text-foreground outline-none placeholder:text-muted-foreground"
|
||||
className="w-full bg-transparent py-4 text-base text-foreground outline-none placeholder:text-muted-foreground"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="max-h-[52vh] overflow-y-auto p-2">
|
||||
<div className="max-h-[60vh] overflow-y-auto p-2">
|
||||
{results.length === 0 ? (
|
||||
<p className="px-3 py-6 text-center text-sm text-muted-foreground">Nothing matches “{query}”.</p>
|
||||
) : (
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import { describe, expect, it } from 'bun:test';
|
||||
|
||||
/*
|
||||
The rule, as a pure function, because the interesting part is not the DOM.
|
||||
|
||||
History must never clobber text the person typed, and must still be walkable once a recalled prompt is
|
||||
sitting in the box. Those two pull in opposite directions and the second is what a naive "only when empty"
|
||||
check breaks.
|
||||
*/
|
||||
const mayRecall = (value: string, recalling: boolean): boolean => value.trim() === '' || recalling;
|
||||
|
||||
describe('when history may take the arrow key', () => {
|
||||
it('takes it on an empty composer', () => {
|
||||
expect(mayRecall('', false)).toBe(true);
|
||||
});
|
||||
|
||||
// The bug this rule exists for: the caret is on the first line of a one-line draft, so every position
|
||||
// test passes, and Up used to replace what you were writing.
|
||||
it('leaves a draft alone', () => {
|
||||
expect(mayRecall('half a thought', false)).toBe(false);
|
||||
});
|
||||
|
||||
// Without this, you could step back exactly once and then be refused, because the recalled prompt is
|
||||
// itself text in the box.
|
||||
it('keeps walking once it is in the history', () => {
|
||||
expect(mayRecall('a prompt from earlier', true)).toBe(true);
|
||||
});
|
||||
|
||||
it('treats whitespace as empty', () => {
|
||||
expect(mayRecall(' ', false)).toBe(true);
|
||||
expect(mayRecall('\n\t ', false)).toBe(true);
|
||||
});
|
||||
|
||||
it('protects a draft that merely starts with whitespace', () => {
|
||||
expect(mayRecall(' still typing', false)).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -51,6 +51,15 @@ type UseEmbeddableChatParams = {
|
||||
contextId?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Keys that are held rather than typed.
|
||||
*
|
||||
* A modifier press is not editing, and ending a recall on one would break the ordinary act of holding Shift
|
||||
* between two presses of Up. `Dead` is a pending accent on layouts that compose — also not a keystroke you
|
||||
* have finished making.
|
||||
*/
|
||||
const MODIFIER_KEYS = new Set(['Shift', 'Control', 'Alt', 'Meta', 'CapsLock', 'Dead']);
|
||||
|
||||
export function useEmbeddableChat(params: UseEmbeddableChatParams, onMessageComplete?: () => void) {
|
||||
const { initialMessage, defaultInput = '', promptPrefix, cwd, autoSend = false, chat: externalChat } = params;
|
||||
|
||||
@@ -389,15 +398,26 @@ export function useEmbeddableChat(params: UseEmbeddableChatParams, onMessageComp
|
||||
/**
|
||||
* Recall a previous prompt, the way a shell does.
|
||||
*
|
||||
* Up only reaches the history from the FIRST line and Down only from the last, so in a multi-line draft
|
||||
* the arrows still move the caret — there is a line above to go to, and taking the key would strand the
|
||||
* cursor. On the first line there is nowhere up to go, which is exactly when history is what you meant.
|
||||
* `step` returning null (empty history, or already at the oldest) leaves the key alone too.
|
||||
* **Only from an empty composer.** The caret-on-the-first-line test below is not enough on its own, and
|
||||
* that was the bug: with a one-line draft you were typing, the caret IS on the first line, so Up replaced
|
||||
* what you had written with something from last week. A draft is not recoverable from anywhere, and
|
||||
* history is — so the tie goes to the draft, always.
|
||||
*
|
||||
* `isRecalling` is what keeps the rule from making the feature useless. Once a recalled prompt is in the
|
||||
* box the box is not empty, so a plain emptiness test would allow one step back and then refuse; walking
|
||||
* further is still allowed because that text came from the history rather than from you.
|
||||
*
|
||||
* Whitespace counts as empty. A composer holding two spaces is not a draft anybody would miss, and an
|
||||
* invisible character silently blocking Up is worse than losing it.
|
||||
*
|
||||
* The line tests stay on top of that: in a recalled prompt spanning three lines, Up from the middle moves
|
||||
* the caret, because there is a line above to go to and taking the key would strand the cursor.
|
||||
*/
|
||||
const recallPrompt = (ev: KeyboardEvent<HTMLTextAreaElement>, direction: -1 | 1): void => {
|
||||
const field = ev.currentTarget;
|
||||
const { selectionStart, selectionEnd, value } = field;
|
||||
if (selectionStart !== selectionEnd) return; // a selection means the arrows are extending/collapsing it
|
||||
if (value.trim() !== '' && !history.isRecalling()) return;
|
||||
const onEdge =
|
||||
direction === -1 ? !value.slice(0, selectionStart).includes('\n') : !value.slice(selectionEnd).includes('\n');
|
||||
if (!onEdge) return;
|
||||
@@ -429,6 +449,18 @@ export function useEmbeddableChat(params: UseEmbeddableChatParams, onMessageComp
|
||||
}
|
||||
if (ev.key === 'ArrowUp') return recallPrompt(ev, -1);
|
||||
if (ev.key === 'ArrowDown') return recallPrompt(ev, 1);
|
||||
/*
|
||||
Anything else ends the recall, and Left/Right are the ones that matter.
|
||||
|
||||
A recalled prompt you have started moving around in is a prompt you have adopted — so the next Up must
|
||||
not walk further back over it, for the same reason Up does not overwrite a fresh draft. Arrowing left
|
||||
into the middle of it is the clearest signal of intent there is, and it types nothing, so a rule based
|
||||
on the text changing would miss it entirely.
|
||||
|
||||
Bare modifiers are excluded: holding Shift to capitalise the next letter is not editing, and treating
|
||||
it as such would end the recall between two presses of Up.
|
||||
*/
|
||||
if (!MODIFIER_KEYS.has(ev.key)) history.leave();
|
||||
if (ev.key === 'Enter' && !ev.shiftKey) {
|
||||
ev.preventDefault();
|
||||
// Enter on an EMPTY composer with something queued means "don't wait — say it now". The keystroke
|
||||
|
||||
@@ -103,3 +103,44 @@ describe('what gets remembered', () => {
|
||||
expect(current.step(-1, '')).toBe('three');
|
||||
});
|
||||
});
|
||||
|
||||
describe('leaving the history', () => {
|
||||
// The rule this exists for: a recalled prompt you have started editing — or merely arrowed into — is
|
||||
// yours now, and the next Up must not walk further back over it.
|
||||
test('a keystroke after a recall ends it, so Up no longer walks', () => {
|
||||
const { current } = mount();
|
||||
current.record('one');
|
||||
current.record('two');
|
||||
|
||||
expect(current.step(-1, '')).toBe('two');
|
||||
expect(current.isRecalling()).toBe(true);
|
||||
|
||||
current.leave();
|
||||
expect(current.isRecalling()).toBe(false);
|
||||
});
|
||||
|
||||
// The composer's guard is "empty, or recalling". Once we have left, a non-empty box is a draft — so the
|
||||
// two halves together are what stop Up from eating an edited prompt.
|
||||
test('after leaving, the recalled text is treated as a draft', () => {
|
||||
const { current } = mount();
|
||||
current.record('one');
|
||||
current.step(-1, '');
|
||||
current.leave();
|
||||
|
||||
const mayRecall = (value: string) => value.trim() === '' || current.isRecalling();
|
||||
expect(mayRecall('one, edited')).toBe(false);
|
||||
expect(mayRecall('')).toBe(true);
|
||||
});
|
||||
|
||||
// The stashed draft goes with it. Handing an older draft back after you have started editing something
|
||||
// else would paste the wrong text over the right one.
|
||||
test('the stashed draft does not come back later', () => {
|
||||
const { current } = mount();
|
||||
current.record('sent');
|
||||
expect(current.step(-1, 'a draft')).toBe('sent');
|
||||
current.leave();
|
||||
// Entering again stashes what is there NOW, and Down returns that rather than the abandoned draft.
|
||||
expect(current.step(-1, 'something else')).toBe('sent');
|
||||
expect(current.step(1, 'sent')).toBe('something else');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -25,6 +25,26 @@ export type PromptHistory = {
|
||||
* whatever it normally does.
|
||||
*/
|
||||
step: (direction: -1 | 1, current: string) => string | null;
|
||||
/**
|
||||
* Are we currently walking the history, rather than composing?
|
||||
*
|
||||
* The caller needs this to answer "may Up take this key" without also making the history unusable. The
|
||||
* rule is that history must never clobber text the PERSON typed — but once a recalled prompt is in the
|
||||
* box, the box is not empty any more, and a plain emptiness test would allow exactly one step back and
|
||||
* then refuse. This is the difference between "there is text" and "there is text of yours".
|
||||
*/
|
||||
isRecalling: () => boolean;
|
||||
/**
|
||||
* Stop being in the history — the recalled text is now the person's own draft.
|
||||
*
|
||||
* Called on any keystroke that is not Up or Down. The moment you edit a recalled prompt, or even just
|
||||
* move the caret through it with Left, you have adopted it: pressing Up after that would throw away
|
||||
* something you were working on, which is the same fault as recalling over a fresh draft.
|
||||
*
|
||||
* The stashed draft goes too. It belonged to the composing session this leaves, and handing it back after
|
||||
* you have started editing something else would paste an older draft over a newer one.
|
||||
*/
|
||||
leave: () => void;
|
||||
};
|
||||
|
||||
export function usePromptHistory(): PromptHistory {
|
||||
@@ -87,5 +107,12 @@ export function usePromptHistory(): PromptHistory {
|
||||
return list[at - 1] ?? null;
|
||||
}, []);
|
||||
|
||||
return { record, step };
|
||||
const isRecalling = useCallback(() => indexRef.current !== null, []);
|
||||
|
||||
const leave = useCallback(() => {
|
||||
indexRef.current = null;
|
||||
draftRef.current = '';
|
||||
}, []);
|
||||
|
||||
return { record, step, isRecalling, leave };
|
||||
}
|
||||
|
||||
+2
-8
@@ -33,10 +33,7 @@ export const Breadcrumb = ({ path, onNavigate, basePath = '/', hrefForPath }: Br
|
||||
return (
|
||||
<div className="shrink-0 border-b border-duck-dark/10 px-4 py-2">
|
||||
<nav className="flex items-center gap-1 text-sm flex-wrap">
|
||||
<Crumb
|
||||
to={basePath}
|
||||
className="flex items-center gap-1 text-duck-forest hover:text-duck-teal transition-colors cursor-pointer font-medium"
|
||||
>
|
||||
<Crumb to={basePath} className="flex items-center gap-1 text-duck-teal cursor-pointer font-medium">
|
||||
<Home className="h-4 w-4" />
|
||||
<span>{basePath === '/' ? 'home' : basePath.split('/').pop()}</span>
|
||||
</Crumb>
|
||||
@@ -52,10 +49,7 @@ export const Breadcrumb = ({ path, onNavigate, basePath = '/', hrefForPath }: Br
|
||||
{isLast ? (
|
||||
<span className="text-duck-dark font-semibold">{segment}</span>
|
||||
) : (
|
||||
<Crumb
|
||||
to={segmentPath}
|
||||
className="text-duck-forest hover:text-duck-teal transition-colors cursor-pointer font-medium"
|
||||
>
|
||||
<Crumb to={segmentPath} className="text-duck-teal cursor-pointer font-medium">
|
||||
{segment}
|
||||
</Crumb>
|
||||
)}
|
||||
|
||||
@@ -41,4 +41,208 @@
|
||||
@import './themes/vantablack.css';
|
||||
@import './themes/white.css';
|
||||
|
||||
/* Community themes — ported from omarchythemes.com by scripts/port-community-themes.ts. Do not edit this block. */
|
||||
@import './themes/aamis.css';
|
||||
@import './themes/ado.css';
|
||||
@import './themes/adrift.css';
|
||||
@import './themes/aetheria.css';
|
||||
@import './themes/akaito.css';
|
||||
@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';
|
||||
@import './themes/ayu-dark.css';
|
||||
@import './themes/ayu-light.css';
|
||||
@import './themes/ayu-mirage.css';
|
||||
@import './themes/azure.css';
|
||||
@import './themes/azure-glow.css';
|
||||
@import './themes/bad-hand.css';
|
||||
@import './themes/batman.css';
|
||||
@import './themes/batou.css';
|
||||
@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/blackwall.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';
|
||||
@import './themes/deckard.css';
|
||||
@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/gornergrat-station.css';
|
||||
@import './themes/gotham-city.css';
|
||||
@import './themes/greek-noir.css';
|
||||
@import './themes/green-city.css';
|
||||
@import './themes/green-garden.css';
|
||||
@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';
|
||||
@import './themes/latch.css';
|
||||
@import './themes/latch-dark.css';
|
||||
@import './themes/lilly.css';
|
||||
@import './themes/lowlight.css';
|
||||
@import './themes/lunar.css';
|
||||
@import './themes/manga.css';
|
||||
@import './themes/mapquest.css';
|
||||
@import './themes/mars.css';
|
||||
@import './themes/mecha-no-onna.css';
|
||||
@import './themes/memento-mori.css';
|
||||
@import './themes/midnight.css';
|
||||
@import './themes/miles-morales.css';
|
||||
@import './themes/milkmatcha-light.css';
|
||||
@import './themes/mocha.css';
|
||||
@import './themes/monochrome.css';
|
||||
@import './themes/monokai.css';
|
||||
@import './themes/monokai-dark.css';
|
||||
@import './themes/monolith.css';
|
||||
@import './themes/monolith-2.css';
|
||||
@import './themes/moodpeak.css';
|
||||
@import './themes/moon-orbit.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/night-owl.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/phosphor-os.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';
|
||||
@import './themes/rainy-night.css';
|
||||
@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/seashells.css';
|
||||
@import './themes/serenity.css';
|
||||
@import './themes/shadesofjade.css';
|
||||
@import './themes/snow.css';
|
||||
@import './themes/snow-black.css';
|
||||
@import './themes/solarized.css';
|
||||
@import './themes/solarized-light.css';
|
||||
@import './themes/solarized-osaka.css';
|
||||
@import './themes/space-bound.css';
|
||||
@import './themes/space-monkey.css';
|
||||
@import './themes/spark.css';
|
||||
@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';
|
||||
@import './themes/taikami.css';
|
||||
@import './themes/tarot.css';
|
||||
@import './themes/temerald.css';
|
||||
@import './themes/terramour.css';
|
||||
@import './themes/thegreek.css';
|
||||
@import './themes/turbonite.css';
|
||||
@import './themes/tycho.css';
|
||||
@import './themes/type-17.css';
|
||||
@import './themes/unicorn-dream.css';
|
||||
@import './themes/van-gogh.css';
|
||||
@import './themes/velocity.css';
|
||||
@import './themes/velvet-night.css';
|
||||
@import './themes/vesper.css';
|
||||
@import './themes/vhs80.css';
|
||||
@import './themes/vice-city.css';
|
||||
@import './themes/void.css';
|
||||
@import './themes/vurple.css';
|
||||
@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';
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Aamis — 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/vyrx-dev/omarchy-aamis-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='aamis'] {
|
||||
--background: #080808;
|
||||
--foreground: #eadccc;
|
||||
--card: #0f0f0f;
|
||||
--card-foreground: #eadccc;
|
||||
--popover: #0f0f0f;
|
||||
--popover-foreground: #eadccc;
|
||||
--muted: #202020;
|
||||
--muted-foreground: #a89f93;
|
||||
--accent: #202020;
|
||||
--accent-foreground: #eadccc;
|
||||
--primary: #eacea7;
|
||||
--primary-foreground: #080808;
|
||||
--secondary: #202020;
|
||||
--secondary-foreground: #eadccc;
|
||||
--cta: #eacea7;
|
||||
--cta-foreground: #080808;
|
||||
--ctahover: #edd4b2;
|
||||
--success: #cea37f;
|
||||
--success-foreground: #080808;
|
||||
--warning: #f4bb54;
|
||||
--warning-foreground: #080808;
|
||||
--destructive: #e25d6c;
|
||||
--destructive-foreground: #080808;
|
||||
--info: #e2be8a;
|
||||
--info-foreground: #080808;
|
||||
--busy: #eb8c60;
|
||||
--busy-foreground: #080808;
|
||||
--busy-ink: #eb8c60;
|
||||
--border: #3a3734;
|
||||
--input: #3a3734;
|
||||
--ring: #eacea7;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #eacea7;
|
||||
--chart-secondary: #ede4c8;
|
||||
--status-success: #cea37f;
|
||||
--status-warning: #f4bb54;
|
||||
--status-in-progress: #e2be8a;
|
||||
--page-bg: #080808;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(15 15 15 / 0.72);
|
||||
--panel-border: rgb(58 55 52 / 0.9);
|
||||
--panel-border-bare: rgb(58 55 52 / 0.55);
|
||||
--panel-raised-bg: rgb(15 15 15 / 0.95);
|
||||
--panel-raised-border: rgb(58 55 52 / 1);
|
||||
--panel-accent: #eacea7;
|
||||
--panel-header-bg: rgb(32 32 32 / 0.6);
|
||||
--panel-header-fg: #eadccc;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0f0f0f;
|
||||
--glass-bg: rgb(15 15 15 / 0.55);
|
||||
--glass-border: rgb(58 55 52 / 0.7);
|
||||
--dock-bg: rgb(15 15 15 / 0.7);
|
||||
--dock-border: rgb(58 55 52 / 0.8);
|
||||
--dock-tooltip-bg: #202020;
|
||||
--header-bg: rgb(15 15 15 / 0.8);
|
||||
--header-border: rgb(58 55 52 / 0.9);
|
||||
--header-fg: #eadccc;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(114 107 100 / 0.07);
|
||||
--card-grid-color: rgb(114 107 100 / 0.05);
|
||||
--panel-grid-color: rgb(114 107 100 / 0.06);
|
||||
--scrollbar-thumb: rgb(112 106 106 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(112 106 106 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(112 106 106 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(112 106 106 / 0.7);
|
||||
--brand: #eacea7;
|
||||
--brand-foreground: #080808;
|
||||
--brand-primary: #eacea7;
|
||||
--brand-accent: #e8ab3b;
|
||||
--brand-warm: #eb8c60;
|
||||
--brand-deep: #080808;
|
||||
--brand-muted: #706a6a;
|
||||
--ink: #eadccc;
|
||||
--surface-warm: #0f0f0f;
|
||||
--naturegreen: #cea37f;
|
||||
--naturegreen-foreground: #080808;
|
||||
--duck-dark: #eadccc;
|
||||
--duck-teal: #e8ab3b;
|
||||
--duck-yellow: #f4bb54;
|
||||
--duck-orange: #eb8c60;
|
||||
--duck-forest: #cea37f;
|
||||
--duck-beige: #252422;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Ado — 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/errantProgrammer/omarchy-ado-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='ado'] {
|
||||
--background: #070708;
|
||||
--foreground: #dfdee6;
|
||||
--card: #0d0d0f;
|
||||
--card-foreground: #dfdee6;
|
||||
--popover: #0d0d0f;
|
||||
--popover-foreground: #dfdee6;
|
||||
--muted: #1e1e20;
|
||||
--muted-foreground: #a09fa6;
|
||||
--accent: #1e1e20;
|
||||
--accent-foreground: #dfdee6;
|
||||
--primary: #a2e0ee;
|
||||
--primary-foreground: #070708;
|
||||
--secondary: #1e1e20;
|
||||
--secondary-foreground: #dfdee6;
|
||||
--cta: #a2e0ee;
|
||||
--cta-foreground: #070708;
|
||||
--ctahover: #ade4f0;
|
||||
--success: #014761;
|
||||
--success-foreground: #dfdee6;
|
||||
--warning: #8bb0c6;
|
||||
--warning-foreground: #070708;
|
||||
--destructive: #903034;
|
||||
--destructive-foreground: #dfdee6;
|
||||
--info: #4545f5;
|
||||
--info-foreground: #dfdee6;
|
||||
--busy: #8e707d;
|
||||
--busy-foreground: #070708;
|
||||
--busy-ink: #8e707d;
|
||||
--border: #363639;
|
||||
--input: #363639;
|
||||
--ring: #a2e0ee;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a2e0ee;
|
||||
--chart-secondary: #25516a;
|
||||
--status-success: #014761;
|
||||
--status-warning: #8bb0c6;
|
||||
--status-in-progress: #4545f5;
|
||||
--page-bg: #070708;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(13 13 15 / 0.72);
|
||||
--panel-border: rgb(54 54 57 / 0.9);
|
||||
--panel-border-bare: rgb(54 54 57 / 0.55);
|
||||
--panel-raised-bg: rgb(13 13 15 / 0.95);
|
||||
--panel-raised-border: rgb(54 54 57 / 1);
|
||||
--panel-accent: #a2e0ee;
|
||||
--panel-header-bg: rgb(30 30 32 / 0.6);
|
||||
--panel-header-fg: #dfdee6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0d0d0f;
|
||||
--glass-bg: rgb(13 13 15 / 0.55);
|
||||
--glass-border: rgb(54 54 57 / 0.7);
|
||||
--dock-bg: rgb(13 13 15 / 0.7);
|
||||
--dock-border: rgb(54 54 57 / 0.8);
|
||||
--dock-tooltip-bg: #1e1e20;
|
||||
--header-bg: rgb(13 13 15 / 0.8);
|
||||
--header-border: rgb(54 54 57 / 0.9);
|
||||
--header-fg: #dfdee6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(107 107 112 / 0.07);
|
||||
--card-grid-color: rgb(107 107 112 / 0.05);
|
||||
--panel-grid-color: rgb(107 107 112 / 0.06);
|
||||
--scrollbar-thumb: rgb(144 142 170 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(144 142 170 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(144 142 170 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(144 142 170 / 0.7);
|
||||
--brand: #a2e0ee;
|
||||
--brand-foreground: #070708;
|
||||
--brand-primary: #a2e0ee;
|
||||
--brand-accent: #45c1dd;
|
||||
--brand-warm: #8e707d;
|
||||
--brand-deep: #070708;
|
||||
--brand-muted: #908eaa;
|
||||
--ink: #dfdee6;
|
||||
--surface-warm: #0d0d0f;
|
||||
--naturegreen: #014761;
|
||||
--naturegreen-foreground: #dfdee6;
|
||||
--duck-dark: #dfdee6;
|
||||
--duck-teal: #45c1dd;
|
||||
--duck-yellow: #8bb0c6;
|
||||
--duck-orange: #8e707d;
|
||||
--duck-forest: #014761;
|
||||
--duck-beige: #222225;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Adrift — 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/jaredb1011/omarchy-adrift-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='adrift'] {
|
||||
--background: #0e1715;
|
||||
--foreground: #ddd6c2;
|
||||
--card: #1a2927;
|
||||
--card-foreground: #ddd6c2;
|
||||
--popover: #1a2927;
|
||||
--popover-foreground: #ddd6c2;
|
||||
--muted: #2a3836;
|
||||
--muted-foreground: #a3a294;
|
||||
--accent: #2a3836;
|
||||
--accent-foreground: #ddd6c2;
|
||||
--primary: #94d0d0;
|
||||
--primary-foreground: #0e1715;
|
||||
--secondary: #2a3836;
|
||||
--secondary-foreground: #ddd6c2;
|
||||
--cta: #94d0d0;
|
||||
--cta-foreground: #0e1715;
|
||||
--ctahover: #a1d6d6;
|
||||
--success: #66987b;
|
||||
--success-foreground: #0e1715;
|
||||
--warning: #bfa26b;
|
||||
--warning-foreground: #0e1715;
|
||||
--destructive: #cb645d;
|
||||
--destructive-foreground: #0e1715;
|
||||
--info: #a9bfbf;
|
||||
--info-foreground: #0e1715;
|
||||
--busy: #c58364;
|
||||
--busy-foreground: #0e1715;
|
||||
--busy-ink: #c58364;
|
||||
--border: #404b46;
|
||||
--input: #404b46;
|
||||
--ring: #94d0d0;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #94d0d0;
|
||||
--chart-secondary: #9a5840;
|
||||
--status-success: #66987b;
|
||||
--status-warning: #bfa26b;
|
||||
--status-in-progress: #a9bfbf;
|
||||
--page-bg: #0e1715;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(26 41 39 / 0.72);
|
||||
--panel-border: rgb(64 75 70 / 0.9);
|
||||
--panel-border-bare: rgb(64 75 70 / 0.55);
|
||||
--panel-raised-bg: rgb(26 41 39 / 0.95);
|
||||
--panel-raised-border: rgb(64 75 70 / 1);
|
||||
--panel-accent: #94d0d0;
|
||||
--panel-header-bg: rgb(42 56 54 / 0.6);
|
||||
--panel-header-fg: #ddd6c2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1a2927;
|
||||
--glass-bg: rgb(26 41 39 / 0.55);
|
||||
--glass-border: rgb(64 75 70 / 0.7);
|
||||
--dock-bg: rgb(26 41 39 / 0.7);
|
||||
--dock-border: rgb(64 75 70 / 0.8);
|
||||
--dock-tooltip-bg: #2a3836;
|
||||
--header-bg: rgb(26 41 39 / 0.8);
|
||||
--header-border: rgb(64 75 70 / 0.9);
|
||||
--header-fg: #ddd6c2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(114 119 109 / 0.07);
|
||||
--card-grid-color: rgb(114 119 109 / 0.05);
|
||||
--panel-grid-color: rgb(114 119 109 / 0.06);
|
||||
--scrollbar-thumb: rgb(181 181 181 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(181 181 181 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(181 181 181 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(181 181 181 / 0.7);
|
||||
--brand: #94d0d0;
|
||||
--brand-foreground: #0e1715;
|
||||
--brand-primary: #94d0d0;
|
||||
--brand-accent: #a9bfbf;
|
||||
--brand-warm: #c58364;
|
||||
--brand-deep: #0e1715;
|
||||
--brand-muted: #b5b5b5;
|
||||
--ink: #ddd6c2;
|
||||
--surface-warm: #1a2927;
|
||||
--naturegreen: #66987b;
|
||||
--naturegreen-foreground: #0e1715;
|
||||
--duck-dark: #ddd6c2;
|
||||
--duck-teal: #a9bfbf;
|
||||
--duck-yellow: #bfa26b;
|
||||
--duck-orange: #c58364;
|
||||
--duck-forest: #66987b;
|
||||
--duck-beige: #2e3a37;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Aetheria — 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/JJDizz1L/aetheria (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='aetheria'] {
|
||||
--background: #080510;
|
||||
--foreground: #14b9b5;
|
||||
--card: #0e091d;
|
||||
--card-foreground: #14b9b5;
|
||||
--popover: #0e091d;
|
||||
--popover-foreground: #14b9b5;
|
||||
--muted: #1f1a2d;
|
||||
--muted-foreground: #309396;
|
||||
--accent: #1f1a2d;
|
||||
--accent-foreground: #14b9b5;
|
||||
--primary: #ffbe74;
|
||||
--primary-foreground: #080510;
|
||||
--secondary: #1f1a2d;
|
||||
--secondary-foreground: #14b9b5;
|
||||
--cta: #ffbe74;
|
||||
--cta-foreground: #080510;
|
||||
--ctahover: #ffc685;
|
||||
--success: #e20342;
|
||||
--success-foreground: #f9f9f9;
|
||||
--warning: #7cd699;
|
||||
--warning-foreground: #080510;
|
||||
--destructive: #c8e967;
|
||||
--destructive-foreground: #080510;
|
||||
--info: #be3f50;
|
||||
--info-foreground: #f3f3f3;
|
||||
--busy: #a2e080;
|
||||
--busy-foreground: #080510;
|
||||
--busy-ink: #a2e080;
|
||||
--border: #0f2b3b;
|
||||
--input: #0f2b3b;
|
||||
--ring: #ffbe74;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #ffbe74;
|
||||
--chart-secondary: #9147a8;
|
||||
--status-success: #e20342;
|
||||
--status-warning: #7cd699;
|
||||
--status-in-progress: #be3f50;
|
||||
--page-bg: #080510;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(14 9 29 / 0.72);
|
||||
--panel-border: rgb(15 43 59 / 0.9);
|
||||
--panel-border-bare: rgb(15 43 59 / 0.55);
|
||||
--panel-raised-bg: rgb(14 9 29 / 0.95);
|
||||
--panel-raised-border: rgb(15 43 59 / 1);
|
||||
--panel-accent: #ffbe74;
|
||||
--panel-header-bg: rgb(31 26 45 / 0.6);
|
||||
--panel-header-fg: #14b9b5;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0e091d;
|
||||
--glass-bg: rgb(14 9 29 / 0.55);
|
||||
--glass-border: rgb(15 43 59 / 0.7);
|
||||
--dock-bg: rgb(14 9 29 / 0.7);
|
||||
--dock-border: rgb(15 43 59 / 0.8);
|
||||
--dock-tooltip-bg: #1f1a2d;
|
||||
--header-bg: rgb(14 9 29 / 0.8);
|
||||
--header-border: rgb(15 43 59 / 0.9);
|
||||
--header-fg: #14b9b5;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(41 105 113 / 0.07);
|
||||
--card-grid-color: rgb(41 105 113 / 0.05);
|
||||
--panel-grid-color: rgb(41 105 113 / 0.06);
|
||||
--scrollbar-thumb: rgb(197 50 83 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(197 50 83 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(197 50 83 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(197 50 83 / 0.7);
|
||||
--brand: #ffbe74;
|
||||
--brand-foreground: #080510;
|
||||
--brand-primary: #ffbe74;
|
||||
--brand-accent: #ff7f41;
|
||||
--brand-warm: #a2e080;
|
||||
--brand-deep: #080510;
|
||||
--brand-muted: #c53253;
|
||||
--ink: #14b9b5;
|
||||
--surface-warm: #0e091d;
|
||||
--naturegreen: #e20342;
|
||||
--naturegreen-foreground: #f9f9f9;
|
||||
--duck-dark: #14b9b5;
|
||||
--duck-teal: #ff7f41;
|
||||
--duck-yellow: #7cd699;
|
||||
--duck-orange: #a2e080;
|
||||
--duck-forest: #e20342;
|
||||
--duck-beige: #0f1b2c;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Akaito — 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/stannorbvb-cmd/akaito (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='akaito'] {
|
||||
--background: #f3e4cb;
|
||||
--foreground: #4d2e1a;
|
||||
--card: #eadcc4;
|
||||
--card-foreground: #4d2e1a;
|
||||
--popover: #eadcc4;
|
||||
--popover-foreground: #4d2e1a;
|
||||
--muted: #e4d6bf;
|
||||
--muted-foreground: #6f5845;
|
||||
--accent: #e4d6bf;
|
||||
--accent-foreground: #4d2e1a;
|
||||
--primary: #a32f1a;
|
||||
--primary-foreground: #dbcdb7;
|
||||
--secondary: #e4d6bf;
|
||||
--secondary-foreground: #4d2e1a;
|
||||
--cta: #a32f1a;
|
||||
--cta-foreground: #dbcdb7;
|
||||
--ctahover: #8f2917;
|
||||
--success: #a46d2d;
|
||||
--success-foreground: #0b0a09;
|
||||
--warning: #a8611f;
|
||||
--warning-foreground: #faf8f4;
|
||||
--destructive: #a4373c;
|
||||
--destructive-foreground: #e0d5c2;
|
||||
--info: #a32f1a;
|
||||
--info-foreground: #dbcdb7;
|
||||
--busy: #a64c2e;
|
||||
--busy-foreground: #ece5d9;
|
||||
--busy-ink: #a64c2e;
|
||||
--border: #d8c7b0;
|
||||
--input: #d3c2ac;
|
||||
--ring: #a32f1a;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a32f1a;
|
||||
--chart-secondary: #9c3521;
|
||||
--status-success: #a46d2d;
|
||||
--status-warning: #a8611f;
|
||||
--status-in-progress: #a32f1a;
|
||||
--page-bg: #f3e4cb;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(234 220 196 / 0.72);
|
||||
--panel-border: rgb(216 199 176 / 0.9);
|
||||
--panel-border-bare: rgb(216 199 176 / 0.55);
|
||||
--panel-raised-bg: rgb(234 220 196 / 0.95);
|
||||
--panel-raised-border: rgb(216 199 176 / 1);
|
||||
--panel-accent: #a32f1a;
|
||||
--panel-header-bg: rgb(228 214 191 / 0.6);
|
||||
--panel-header-fg: #4d2e1a;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #eadcc4;
|
||||
--glass-bg: rgb(234 220 196 / 0.55);
|
||||
--glass-border: rgb(216 199 176 / 0.7);
|
||||
--dock-bg: rgb(234 220 196 / 0.7);
|
||||
--dock-border: rgb(216 199 176 / 0.8);
|
||||
--dock-tooltip-bg: #e4d6bf;
|
||||
--header-bg: rgb(234 220 196 / 0.8);
|
||||
--header-border: rgb(216 199 176 / 0.9);
|
||||
--header-fg: #4d2e1a;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(139 120 101 / 0.07);
|
||||
--card-grid-color: rgb(139 120 101 / 0.05);
|
||||
--panel-grid-color: rgb(139 120 101 / 0.06);
|
||||
--scrollbar-thumb: rgb(159 130 83 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(159 130 83 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(159 130 83 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(159 130 83 / 0.7);
|
||||
--brand: #a32f1a;
|
||||
--brand-foreground: #dbcdb7;
|
||||
--brand-primary: #a32f1a;
|
||||
--brand-accent: #755833;
|
||||
--brand-warm: #a64c2e;
|
||||
--brand-deep: #e4d6bf;
|
||||
--brand-muted: #9f8253;
|
||||
--ink: #4d2e1a;
|
||||
--surface-warm: #eadcc4;
|
||||
--naturegreen: #a46d2d;
|
||||
--naturegreen-foreground: #0b0a09;
|
||||
--duck-dark: #4d2e1a;
|
||||
--duck-teal: #755833;
|
||||
--duck-yellow: #a8611f;
|
||||
--duck-orange: #a64c2e;
|
||||
--duck-forest: #a46d2d;
|
||||
--duck-beige: #dacbb3;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
All Hallows Eve — 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-all-hallows-eve-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='all-hallows-eve'] {
|
||||
--background: #000000;
|
||||
--foreground: #ffffff;
|
||||
--card: #000000;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #000000;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #121212;
|
||||
--muted-foreground: #b3b3b3;
|
||||
--accent: #121212;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #cccc33;
|
||||
--primary-foreground: #000000;
|
||||
--secondary: #121212;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #cccc33;
|
||||
--cta-foreground: #000000;
|
||||
--ctahover: #d2d24b;
|
||||
--success: #66cc33;
|
||||
--success-foreground: #000000;
|
||||
--warning: #cc7833;
|
||||
--warning-foreground: #000000;
|
||||
--destructive: #c83730;
|
||||
--destructive-foreground: #ffffff;
|
||||
--info: #3387cc;
|
||||
--info-foreground: #000000;
|
||||
--busy: #ca5832;
|
||||
--busy-foreground: #000000;
|
||||
--busy-ink: #ca5832;
|
||||
--border: #323232;
|
||||
--input: #323232;
|
||||
--ring: #cccc33;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #cccc33;
|
||||
--chart-secondary: #9933cc;
|
||||
--status-success: #66cc33;
|
||||
--status-warning: #cc7833;
|
||||
--status-in-progress: #3387cc;
|
||||
--page-bg: #000000;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(0 0 0 / 0.72);
|
||||
--panel-border: rgb(50 50 50 / 0.9);
|
||||
--panel-border-bare: rgb(50 50 50 / 0.55);
|
||||
--panel-raised-bg: rgb(0 0 0 / 0.95);
|
||||
--panel-raised-border: rgb(50 50 50 / 1);
|
||||
--panel-accent: #cccc33;
|
||||
--panel-header-bg: rgb(18 18 18 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #000000;
|
||||
--glass-bg: rgb(0 0 0 / 0.55);
|
||||
--glass-border: rgb(50 50 50 / 0.7);
|
||||
--dock-bg: rgb(0 0 0 / 0.7);
|
||||
--dock-border: rgb(50 50 50 / 0.8);
|
||||
--dock-tooltip-bg: #121212;
|
||||
--header-bg: rgb(0 0 0 / 0.8);
|
||||
--header-border: rgb(50 50 50 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(115 115 115 / 0.07);
|
||||
--card-grid-color: rgb(115 115 115 / 0.05);
|
||||
--panel-grid-color: rgb(115 115 115 / 0.06);
|
||||
--scrollbar-thumb: rgb(64 64 64 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(64 64 64 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(64 64 64 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(64 64 64 / 0.7);
|
||||
--brand: #cccc33;
|
||||
--brand-foreground: #000000;
|
||||
--brand-primary: #cccc33;
|
||||
--brand-accent: #cccc33;
|
||||
--brand-warm: #ca5832;
|
||||
--brand-deep: #000000;
|
||||
--brand-muted: #404040;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #000000;
|
||||
--naturegreen: #66cc33;
|
||||
--naturegreen-foreground: #000000;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #cccc33;
|
||||
--duck-yellow: #cc7833;
|
||||
--duck-orange: #ca5832;
|
||||
--duck-forest: #66cc33;
|
||||
--duck-beige: #1a1a1a;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Amberbyte — 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/tahfizhabib/omarchy-amberbyte-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='amberbyte'] {
|
||||
--background: #0f090a;
|
||||
--foreground: #f2e8e8;
|
||||
--card: #1b1112;
|
||||
--card-foreground: #f2e8e8;
|
||||
--popover: #1b1112;
|
||||
--popover-foreground: #f2e8e8;
|
||||
--muted: #2b2223;
|
||||
--muted-foreground: #b2a8a8;
|
||||
--accent: #2b2223;
|
||||
--accent-foreground: #f2e8e8;
|
||||
--primary: #f7b3b3;
|
||||
--primary-foreground: #0f090a;
|
||||
--secondary: #2b2223;
|
||||
--secondary-foreground: #f2e8e8;
|
||||
--cta: #f7b3b3;
|
||||
--cta-foreground: #0f090a;
|
||||
--ctahover: #f8bcbc;
|
||||
--success: #c05a5a;
|
||||
--success-foreground: #0f090a;
|
||||
--warning: #d66b6b;
|
||||
--warning-foreground: #0f090a;
|
||||
--destructive: #b44a4a;
|
||||
--destructive-foreground: #f5eded;
|
||||
--info: #d66b6b;
|
||||
--info-foreground: #0f090a;
|
||||
--busy: #c55b5b;
|
||||
--busy-foreground: #0f090a;
|
||||
--busy-ink: #c55b5b;
|
||||
--border: #453b3c;
|
||||
--input: #453b3c;
|
||||
--ring: #f7b3b3;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #f7b3b3;
|
||||
--chart-secondary: #d66b6b;
|
||||
--status-success: #c05a5a;
|
||||
--status-warning: #d66b6b;
|
||||
--status-in-progress: #d66b6b;
|
||||
--page-bg: #0f090a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(27 17 18 / 0.72);
|
||||
--panel-border: rgb(69 59 60 / 0.9);
|
||||
--panel-border-bare: rgb(69 59 60 / 0.55);
|
||||
--panel-raised-bg: rgb(27 17 18 / 0.95);
|
||||
--panel-raised-border: rgb(69 59 60 / 1);
|
||||
--panel-accent: #f7b3b3;
|
||||
--panel-header-bg: rgb(43 34 35 / 0.6);
|
||||
--panel-header-fg: #f2e8e8;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1b1112;
|
||||
--glass-bg: rgb(27 17 18 / 0.55);
|
||||
--glass-border: rgb(69 59 60 / 0.7);
|
||||
--dock-bg: rgb(27 17 18 / 0.7);
|
||||
--dock-border: rgb(69 59 60 / 0.8);
|
||||
--dock-tooltip-bg: #2b2223;
|
||||
--header-bg: rgb(27 17 18 / 0.8);
|
||||
--header-border: rgb(69 59 60 / 0.9);
|
||||
--header-fg: #f2e8e8;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(124 114 114 / 0.07);
|
||||
--card-grid-color: rgb(124 114 114 / 0.05);
|
||||
--panel-grid-color: rgb(124 114 114 / 0.06);
|
||||
--scrollbar-thumb: rgb(113 103 104 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(113 103 104 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(113 103 104 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(113 103 104 / 0.7);
|
||||
--brand: #f7b3b3;
|
||||
--brand-foreground: #0f090a;
|
||||
--brand-primary: #f7b3b3;
|
||||
--brand-accent: #f48a8a;
|
||||
--brand-warm: #c55b5b;
|
||||
--brand-deep: #0f090a;
|
||||
--brand-muted: #716768;
|
||||
--ink: #f2e8e8;
|
||||
--surface-warm: #1b1112;
|
||||
--naturegreen: #c05a5a;
|
||||
--naturegreen-foreground: #0f090a;
|
||||
--duck-dark: #f2e8e8;
|
||||
--duck-teal: #f48a8a;
|
||||
--duck-yellow: #d66b6b;
|
||||
--duck-orange: #c55b5b;
|
||||
--duck-forest: #c05a5a;
|
||||
--duck-beige: #312727;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Amekoji — 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/atif-1402/omarchy-amekoji-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='amekoji'] {
|
||||
--background: #131617;
|
||||
--foreground: #dcd6d6;
|
||||
--card: #232829;
|
||||
--card-foreground: #dcd6d6;
|
||||
--popover: #232829;
|
||||
--popover-foreground: #dcd6d6;
|
||||
--muted: #323738;
|
||||
--muted-foreground: #a5a2a2;
|
||||
--accent: #323738;
|
||||
--accent-foreground: #dcd6d6;
|
||||
--primary: #98b3b3;
|
||||
--primary-foreground: #131617;
|
||||
--secondary: #323738;
|
||||
--secondary-foreground: #dcd6d6;
|
||||
--cta: #98b3b3;
|
||||
--cta-foreground: #131617;
|
||||
--ctahover: #a4bcbc;
|
||||
--success: #98b3a3;
|
||||
--success-foreground: #131617;
|
||||
--warning: #93b3a6;
|
||||
--warning-foreground: #131617;
|
||||
--destructive: #b39a98;
|
||||
--destructive-foreground: #131617;
|
||||
--info: #85abbc;
|
||||
--info-foreground: #131617;
|
||||
--busy: #a3a79f;
|
||||
--busy-foreground: #131617;
|
||||
--busy-ink: #a3a79f;
|
||||
--border: #474a4b;
|
||||
--input: #474a4b;
|
||||
--ring: #98b3b3;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #98b3b3;
|
||||
--chart-secondary: #bea7b0;
|
||||
--status-success: #98b3a3;
|
||||
--status-warning: #93b3a6;
|
||||
--status-in-progress: #85abbc;
|
||||
--page-bg: #131617;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(35 40 41 / 0.72);
|
||||
--panel-border: rgb(71 74 75 / 0.9);
|
||||
--panel-border-bare: rgb(71 74 75 / 0.55);
|
||||
--panel-raised-bg: rgb(35 40 41 / 0.95);
|
||||
--panel-raised-border: rgb(71 74 75 / 1);
|
||||
--panel-accent: #98b3b3;
|
||||
--panel-header-bg: rgb(50 55 56 / 0.6);
|
||||
--panel-header-fg: #dcd6d6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #232829;
|
||||
--glass-bg: rgb(35 40 41 / 0.55);
|
||||
--glass-border: rgb(71 74 75 / 0.7);
|
||||
--dock-bg: rgb(35 40 41 / 0.7);
|
||||
--dock-border: rgb(71 74 75 / 0.8);
|
||||
--dock-tooltip-bg: #323738;
|
||||
--header-bg: rgb(35 40 41 / 0.8);
|
||||
--header-border: rgb(71 74 75 / 0.9);
|
||||
--header-fg: #dcd6d6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(118 118 119 / 0.07);
|
||||
--card-grid-color: rgb(118 118 119 / 0.05);
|
||||
--panel-grid-color: rgb(118 118 119 / 0.06);
|
||||
--scrollbar-thumb: rgb(120 133 135 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(120 133 135 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(120 133 135 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(120 133 135 / 0.7);
|
||||
--brand: #98b3b3;
|
||||
--brand-foreground: #131617;
|
||||
--brand-primary: #98b3b3;
|
||||
--brand-accent: #98b3b3;
|
||||
--brand-warm: #a3a79f;
|
||||
--brand-deep: #131617;
|
||||
--brand-muted: #788587;
|
||||
--ink: #dcd6d6;
|
||||
--surface-warm: #232829;
|
||||
--naturegreen: #98b3a3;
|
||||
--naturegreen-foreground: #131617;
|
||||
--duck-dark: #dcd6d6;
|
||||
--duck-teal: #98b3b3;
|
||||
--duck-yellow: #93b3a6;
|
||||
--duck-orange: #a3a79f;
|
||||
--duck-forest: #98b3a3;
|
||||
--duck-beige: #36393a;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Anonymous — 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/j4v3l/omarchy-anonymous-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='anonymous'] {
|
||||
--background: #000000;
|
||||
--foreground: #fefefe;
|
||||
--card: #000000;
|
||||
--card-foreground: #fefefe;
|
||||
--popover: #000000;
|
||||
--popover-foreground: #fefefe;
|
||||
--muted: #121212;
|
||||
--muted-foreground: #b2b2b2;
|
||||
--accent: #121212;
|
||||
--accent-foreground: #fefefe;
|
||||
--primary: #bdbdbd;
|
||||
--primary-foreground: #000000;
|
||||
--secondary: #121212;
|
||||
--secondary-foreground: #fefefe;
|
||||
--cta: #bdbdbd;
|
||||
--cta-foreground: #000000;
|
||||
--ctahover: #c5c5c5;
|
||||
--success: #bdbdbd;
|
||||
--success-foreground: #000000;
|
||||
--warning: #cfcfcf;
|
||||
--warning-foreground: #000000;
|
||||
--destructive: #fefefe;
|
||||
--destructive-foreground: #000000;
|
||||
--info: #bdbdbd;
|
||||
--info-foreground: #000000;
|
||||
--busy: #e7e7e7;
|
||||
--busy-foreground: #000000;
|
||||
--busy-ink: #e7e7e7;
|
||||
--border: #323232;
|
||||
--input: #323232;
|
||||
--ring: #bdbdbd;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #bdbdbd;
|
||||
--chart-secondary: #bdbdbd;
|
||||
--status-success: #bdbdbd;
|
||||
--status-warning: #cfcfcf;
|
||||
--status-in-progress: #bdbdbd;
|
||||
--page-bg: #000000;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(0 0 0 / 0.72);
|
||||
--panel-border: rgb(50 50 50 / 0.9);
|
||||
--panel-border-bare: rgb(50 50 50 / 0.55);
|
||||
--panel-raised-bg: rgb(0 0 0 / 0.95);
|
||||
--panel-raised-border: rgb(50 50 50 / 1);
|
||||
--panel-accent: #bdbdbd;
|
||||
--panel-header-bg: rgb(18 18 18 / 0.6);
|
||||
--panel-header-fg: #fefefe;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #000000;
|
||||
--glass-bg: rgb(0 0 0 / 0.55);
|
||||
--glass-border: rgb(50 50 50 / 0.7);
|
||||
--dock-bg: rgb(0 0 0 / 0.7);
|
||||
--dock-border: rgb(50 50 50 / 0.8);
|
||||
--dock-tooltip-bg: #121212;
|
||||
--header-bg: rgb(0 0 0 / 0.8);
|
||||
--header-border: rgb(50 50 50 / 0.9);
|
||||
--header-fg: #fefefe;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(114 114 114 / 0.07);
|
||||
--card-grid-color: rgb(114 114 114 / 0.05);
|
||||
--panel-grid-color: rgb(114 114 114 / 0.06);
|
||||
--scrollbar-thumb: rgb(26 26 26 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(26 26 26 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(26 26 26 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(26 26 26 / 0.7);
|
||||
--brand: #bdbdbd;
|
||||
--brand-foreground: #000000;
|
||||
--brand-primary: #bdbdbd;
|
||||
--brand-accent: #bdbdbd;
|
||||
--brand-warm: #e7e7e7;
|
||||
--brand-deep: #000000;
|
||||
--brand-muted: #1a1a1a;
|
||||
--ink: #fefefe;
|
||||
--surface-warm: #000000;
|
||||
--naturegreen: #bdbdbd;
|
||||
--naturegreen-foreground: #000000;
|
||||
--duck-dark: #fefefe;
|
||||
--duck-teal: #bdbdbd;
|
||||
--duck-yellow: #cfcfcf;
|
||||
--duck-orange: #e7e7e7;
|
||||
--duck-forest: #bdbdbd;
|
||||
--duck-beige: #191919;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Apocalypse — 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/atif-1402/omarchy-apocalypse-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='apocalypse'] {
|
||||
--background: #090707;
|
||||
--foreground: #ffffff;
|
||||
--card: #110d0c;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #110d0c;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #221e1d;
|
||||
--muted-foreground: #b8b6b6;
|
||||
--accent: #221e1d;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #e7e9e9;
|
||||
--primary-foreground: #090707;
|
||||
--secondary: #221e1d;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #e7e9e9;
|
||||
--cta-foreground: #090707;
|
||||
--ctahover: #eaecec;
|
||||
--success: #98a09b;
|
||||
--success-foreground: #090707;
|
||||
--warning: #d3c4b8;
|
||||
--warning-foreground: #090707;
|
||||
--destructive: #ab7c7c;
|
||||
--destructive-foreground: #090707;
|
||||
--info: #a8a8ae;
|
||||
--info-foreground: #090707;
|
||||
--busy: #bfa09a;
|
||||
--busy-foreground: #090707;
|
||||
--busy-ink: #bfa09a;
|
||||
--border: #403c3c;
|
||||
--input: #403c3c;
|
||||
--ring: #e7e9e9;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #e7e9e9;
|
||||
--chart-secondary: #b6afb5;
|
||||
--status-success: #98a09b;
|
||||
--status-warning: #d3c4b8;
|
||||
--status-in-progress: #a8a8ae;
|
||||
--page-bg: #090707;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(17 13 12 / 0.72);
|
||||
--panel-border: rgb(64 60 60 / 0.9);
|
||||
--panel-border-bare: rgb(64 60 60 / 0.55);
|
||||
--panel-raised-bg: rgb(17 13 12 / 0.95);
|
||||
--panel-raised-border: rgb(64 60 60 / 1);
|
||||
--panel-accent: #e7e9e9;
|
||||
--panel-header-bg: rgb(34 30 29 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #110d0c;
|
||||
--glass-bg: rgb(17 13 12 / 0.55);
|
||||
--glass-border: rgb(64 60 60 / 0.7);
|
||||
--dock-bg: rgb(17 13 12 / 0.7);
|
||||
--dock-border: rgb(64 60 60 / 0.8);
|
||||
--dock-tooltip-bg: #221e1d;
|
||||
--header-bg: rgb(17 13 12 / 0.8);
|
||||
--header-border: rgb(64 60 60 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(124 122 121 / 0.07);
|
||||
--card-grid-color: rgb(124 122 121 / 0.05);
|
||||
--panel-grid-color: rgb(124 122 121 / 0.06);
|
||||
--scrollbar-thumb: rgb(140 123 118 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(140 123 118 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(140 123 118 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(140 123 118 / 0.7);
|
||||
--brand: #e7e9e9;
|
||||
--brand-foreground: #090707;
|
||||
--brand-primary: #e7e9e9;
|
||||
--brand-accent: #b8bdbc;
|
||||
--brand-warm: #bfa09a;
|
||||
--brand-deep: #090707;
|
||||
--brand-muted: #8c7b76;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #110d0c;
|
||||
--naturegreen: #98a09b;
|
||||
--naturegreen-foreground: #090707;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #b8bdbc;
|
||||
--duck-yellow: #d3c4b8;
|
||||
--duck-orange: #bfa09a;
|
||||
--duck-forest: #98a09b;
|
||||
--duck-beige: #292524;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Arc Blueberry — 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/vale-c/omarchy-arc-blueberry (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='arc-blueberry'] {
|
||||
--background: #090b13;
|
||||
--foreground: #bcc1dc;
|
||||
--card: #111422;
|
||||
--card-foreground: #bcc1dc;
|
||||
--popover: #111422;
|
||||
--popover-foreground: #bcc1dc;
|
||||
--muted: #222431;
|
||||
--muted-foreground: #898da4;
|
||||
--accent: #222431;
|
||||
--accent-foreground: #bcc1dc;
|
||||
--primary: #0fffeb;
|
||||
--primary-foreground: #090b13;
|
||||
--secondary: #222431;
|
||||
--secondary-foreground: #bcc1dc;
|
||||
--cta: #0fffeb;
|
||||
--cta-foreground: #090b13;
|
||||
--ctahover: #2cffed;
|
||||
--success: #3cec85;
|
||||
--success-foreground: #090b13;
|
||||
--warning: #eacd61;
|
||||
--warning-foreground: #090b13;
|
||||
--destructive: #e35535;
|
||||
--destructive-foreground: #090b13;
|
||||
--info: #69c3ff;
|
||||
--info-foreground: #090b13;
|
||||
--busy: #e7914b;
|
||||
--busy-foreground: #090b13;
|
||||
--busy-ink: #e7914b;
|
||||
--border: #333646;
|
||||
--input: #333646;
|
||||
--ring: #0fffeb;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #0fffeb;
|
||||
--chart-secondary: #f38cec;
|
||||
--status-success: #3cec85;
|
||||
--status-warning: #eacd61;
|
||||
--status-in-progress: #69c3ff;
|
||||
--page-bg: #090b13;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(17 20 34 / 0.72);
|
||||
--panel-border: rgb(51 54 70 / 0.9);
|
||||
--panel-border-bare: rgb(51 54 70 / 0.55);
|
||||
--panel-raised-bg: rgb(17 20 34 / 0.95);
|
||||
--panel-raised-border: rgb(51 54 70 / 1);
|
||||
--panel-accent: #0fffeb;
|
||||
--panel-header-bg: rgb(34 36 49 / 0.6);
|
||||
--panel-header-fg: #bcc1dc;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #111422;
|
||||
--glass-bg: rgb(17 20 34 / 0.55);
|
||||
--glass-border: rgb(51 54 70 / 0.7);
|
||||
--dock-bg: rgb(17 20 34 / 0.7);
|
||||
--dock-border: rgb(51 54 70 / 0.8);
|
||||
--dock-tooltip-bg: #222431;
|
||||
--header-bg: rgb(17 20 34 / 0.8);
|
||||
--header-border: rgb(51 54 70 / 0.9);
|
||||
--header-fg: #bcc1dc;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(94 98 118 / 0.07);
|
||||
--card-grid-color: rgb(94 98 118 / 0.05);
|
||||
--panel-grid-color: rgb(94 98 118 / 0.06);
|
||||
--scrollbar-thumb: rgb(49 59 98 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(49 59 98 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(49 59 98 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(49 59 98 / 0.7);
|
||||
--brand: #0fffeb;
|
||||
--brand-foreground: #090b13;
|
||||
--brand-primary: #0fffeb;
|
||||
--brand-accent: #22ecdb;
|
||||
--brand-warm: #e7914b;
|
||||
--brand-deep: #090b13;
|
||||
--brand-muted: #313b62;
|
||||
--ink: #bcc1dc;
|
||||
--surface-warm: #111422;
|
||||
--naturegreen: #3cec85;
|
||||
--naturegreen-foreground: #090b13;
|
||||
--duck-dark: #bcc1dc;
|
||||
--duck-teal: #22ecdb;
|
||||
--duck-yellow: #eacd61;
|
||||
--duck-orange: #e7914b;
|
||||
--duck-forest: #3cec85;
|
||||
--duck-beige: #222535;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Archriot — 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/CyphrRiot/omarchy-archriot-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='archriot'] {
|
||||
--background: #0e0f15;
|
||||
--foreground: #ffffff;
|
||||
--card: #1a1b26;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #1a1b26;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #2a2b35;
|
||||
--muted-foreground: #babbbe;
|
||||
--accent: #2a2b35;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #73daca;
|
||||
--primary-foreground: #0e0f15;
|
||||
--secondary: #2a2b35;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #73daca;
|
||||
--cta-foreground: #0e0f15;
|
||||
--ctahover: #84ded0;
|
||||
--success: #9ece6a;
|
||||
--success-foreground: #0e0f15;
|
||||
--warning: #e0af68;
|
||||
--warning-foreground: #0e0f15;
|
||||
--destructive: #ff7a93;
|
||||
--destructive-foreground: #0e0f15;
|
||||
--info: #7da6ff;
|
||||
--info-foreground: #0e0f15;
|
||||
--busy: #f0957e;
|
||||
--busy-foreground: #0e0f15;
|
||||
--busy-ink: #f0957e;
|
||||
--border: #474851;
|
||||
--input: #474851;
|
||||
--ring: #73daca;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #73daca;
|
||||
--chart-secondary: #bb9af7;
|
||||
--status-success: #9ece6a;
|
||||
--status-warning: #e0af68;
|
||||
--status-in-progress: #7da6ff;
|
||||
--page-bg: #0e0f15;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(26 27 38 / 0.72);
|
||||
--panel-border: rgb(71 72 81 / 0.9);
|
||||
--panel-border-bare: rgb(71 72 81 / 0.55);
|
||||
--panel-raised-bg: rgb(26 27 38 / 0.95);
|
||||
--panel-raised-border: rgb(71 72 81 / 1);
|
||||
--panel-accent: #73daca;
|
||||
--panel-header-bg: rgb(42 43 53 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1a1b26;
|
||||
--glass-bg: rgb(26 27 38 / 0.55);
|
||||
--glass-border: rgb(71 72 81 / 0.7);
|
||||
--dock-bg: rgb(26 27 38 / 0.7);
|
||||
--dock-border: rgb(71 72 81 / 0.8);
|
||||
--dock-tooltip-bg: #2a2b35;
|
||||
--header-bg: rgb(26 27 38 / 0.8);
|
||||
--header-border: rgb(71 72 81 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(129 130 136 / 0.07);
|
||||
--card-grid-color: rgb(129 130 136 / 0.05);
|
||||
--panel-grid-color: rgb(129 130 136 / 0.06);
|
||||
--scrollbar-thumb: rgb(86 95 137 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(86 95 137 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(86 95 137 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(86 95 137 / 0.7);
|
||||
--brand: #73daca;
|
||||
--brand-foreground: #0e0f15;
|
||||
--brand-primary: #73daca;
|
||||
--brand-accent: #0db9d7;
|
||||
--brand-warm: #f0957e;
|
||||
--brand-deep: #0e0f15;
|
||||
--brand-muted: #565f89;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #1a1b26;
|
||||
--naturegreen: #9ece6a;
|
||||
--naturegreen-foreground: #0e0f15;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #0db9d7;
|
||||
--duck-yellow: #e0af68;
|
||||
--duck-orange: #f0957e;
|
||||
--duck-forest: #9ece6a;
|
||||
--duck-beige: #31323c;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Archwave — 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/davidguttman/archwave (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='archwave'] {
|
||||
--background: #0e0719;
|
||||
--foreground: #d4a5ff;
|
||||
--card: #1a0d2e;
|
||||
--card-foreground: #d4a5ff;
|
||||
--popover: #1a0d2e;
|
||||
--popover-foreground: #d4a5ff;
|
||||
--muted: #2a1e3d;
|
||||
--muted-foreground: #a17ec3;
|
||||
--accent: #2a1e3d;
|
||||
--accent-foreground: #d4a5ff;
|
||||
--primary: #8ffef4;
|
||||
--primary-foreground: #0e0719;
|
||||
--secondary: #2a1e3d;
|
||||
--secondary-foreground: #d4a5ff;
|
||||
--cta: #8ffef4;
|
||||
--cta-foreground: #0e0719;
|
||||
--ctahover: #9cfef5;
|
||||
--success: #5ffbf1;
|
||||
--success-foreground: #0e0719;
|
||||
--warning: #f9f871;
|
||||
--warning-foreground: #0e0719;
|
||||
--destructive: #ff6ec7;
|
||||
--destructive-foreground: #0e0719;
|
||||
--info: #8b9aff;
|
||||
--info-foreground: #0e0719;
|
||||
--busy: #fcb39c;
|
||||
--busy-foreground: #0e0719;
|
||||
--busy-ink: #fcb39c;
|
||||
--border: #3e2b57;
|
||||
--input: #3e2b57;
|
||||
--ring: #8ffef4;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #8ffef4;
|
||||
--chart-secondary: #f4a5ff;
|
||||
--status-success: #5ffbf1;
|
||||
--status-warning: #f9f871;
|
||||
--status-in-progress: #8b9aff;
|
||||
--page-bg: #0e0719;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(26 13 46 / 0.72);
|
||||
--panel-border: rgb(62 43 87 / 0.9);
|
||||
--panel-border-bare: rgb(62 43 87 / 0.55);
|
||||
--panel-raised-bg: rgb(26 13 46 / 0.95);
|
||||
--panel-raised-border: rgb(62 43 87 / 1);
|
||||
--panel-accent: #8ffef4;
|
||||
--panel-header-bg: rgb(42 30 61 / 0.6);
|
||||
--panel-header-fg: #d4a5ff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1a0d2e;
|
||||
--glass-bg: rgb(26 13 46 / 0.55);
|
||||
--glass-border: rgb(62 43 87 / 0.7);
|
||||
--dock-bg: rgb(26 13 46 / 0.7);
|
||||
--dock-border: rgb(62 43 87 / 0.8);
|
||||
--dock-tooltip-bg: #2a1e3d;
|
||||
--header-bg: rgb(26 13 46 / 0.8);
|
||||
--header-border: rgb(62 43 87 / 0.9);
|
||||
--header-fg: #d4a5ff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(117 90 146 / 0.07);
|
||||
--card-grid-color: rgb(117 90 146 / 0.05);
|
||||
--panel-grid-color: rgb(117 90 146 / 0.06);
|
||||
--scrollbar-thumb: rgb(84 58 110 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(84 58 110 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(84 58 110 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(84 58 110 / 0.7);
|
||||
--brand: #8ffef4;
|
||||
--brand-foreground: #0e0719;
|
||||
--brand-primary: #8ffef4;
|
||||
--brand-accent: #5ffbf1;
|
||||
--brand-warm: #fcb39c;
|
||||
--brand-deep: #0e0719;
|
||||
--brand-muted: #543a6e;
|
||||
--ink: #d4a5ff;
|
||||
--surface-warm: #1a0d2e;
|
||||
--naturegreen: #5ffbf1;
|
||||
--naturegreen-foreground: #0e0719;
|
||||
--duck-dark: #d4a5ff;
|
||||
--duck-teal: #5ffbf1;
|
||||
--duck-yellow: #f9f871;
|
||||
--duck-orange: #fcb39c;
|
||||
--duck-forest: #5ffbf1;
|
||||
--duck-beige: #2d1c43;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Artzen — 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/tahfizhabib/omarchy-artzen-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='artzen'] {
|
||||
--background: #0d0f11;
|
||||
--foreground: #fdf9f8;
|
||||
--card: #181c1f;
|
||||
--card-foreground: #fdf9f8;
|
||||
--popover: #181c1f;
|
||||
--popover-foreground: #fdf9f8;
|
||||
--muted: #282c2f;
|
||||
--muted-foreground: #b8b7b7;
|
||||
--accent: #282c2f;
|
||||
--accent-foreground: #fdf9f8;
|
||||
--primary: #ecbeb9;
|
||||
--primary-foreground: #0d0f11;
|
||||
--secondary: #282c2f;
|
||||
--secondary-foreground: #fdf9f8;
|
||||
--cta: #ecbeb9;
|
||||
--cta-foreground: #0d0f11;
|
||||
--ctahover: #eec6c1;
|
||||
--success: #9f6769;
|
||||
--success-foreground: #000000;
|
||||
--warning: #bb6d6c;
|
||||
--warning-foreground: #0d0f11;
|
||||
--destructive: #9b584d;
|
||||
--destructive-foreground: #fdf9f8;
|
||||
--info: #b97670;
|
||||
--info-foreground: #0d0f11;
|
||||
--busy: #ab635d;
|
||||
--busy-foreground: #060606;
|
||||
--busy-ink: #af6b65;
|
||||
--border: #45474a;
|
||||
--input: #45474a;
|
||||
--ring: #ecbeb9;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #ecbeb9;
|
||||
--chart-secondary: #9a8c8a;
|
||||
--status-success: #9f6769;
|
||||
--status-warning: #bb6d6c;
|
||||
--status-in-progress: #b97670;
|
||||
--page-bg: #0d0f11;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(24 28 31 / 0.72);
|
||||
--panel-border: rgb(69 71 74 / 0.9);
|
||||
--panel-border-bare: rgb(69 71 74 / 0.55);
|
||||
--panel-raised-bg: rgb(24 28 31 / 0.95);
|
||||
--panel-raised-border: rgb(69 71 74 / 1);
|
||||
--panel-accent: #ecbeb9;
|
||||
--panel-header-bg: rgb(40 44 47 / 0.6);
|
||||
--panel-header-fg: #fdf9f8;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #181c1f;
|
||||
--glass-bg: rgb(24 28 31 / 0.55);
|
||||
--glass-border: rgb(69 71 74 / 0.7);
|
||||
--dock-bg: rgb(24 28 31 / 0.7);
|
||||
--dock-border: rgb(69 71 74 / 0.8);
|
||||
--dock-tooltip-bg: #282c2f;
|
||||
--header-bg: rgb(24 28 31 / 0.8);
|
||||
--header-border: rgb(69 71 74 / 0.9);
|
||||
--header-fg: #fdf9f8;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(127 127 129 / 0.07);
|
||||
--card-grid-color: rgb(127 127 129 / 0.05);
|
||||
--panel-grid-color: rgb(127 127 129 / 0.06);
|
||||
--scrollbar-thumb: rgb(177 141 133 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(177 141 133 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(177 141 133 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(177 141 133 / 0.7);
|
||||
--brand: #ecbeb9;
|
||||
--brand-foreground: #0d0f11;
|
||||
--brand-primary: #ecbeb9;
|
||||
--brand-accent: #da7a6f;
|
||||
--brand-warm: #ab635d;
|
||||
--brand-deep: #0d0f11;
|
||||
--brand-muted: #b18d85;
|
||||
--ink: #fdf9f8;
|
||||
--surface-warm: #181c1f;
|
||||
--naturegreen: #9f6769;
|
||||
--naturegreen-foreground: #000000;
|
||||
--duck-dark: #fdf9f8;
|
||||
--duck-teal: #da7a6f;
|
||||
--duck-yellow: #bb6d6c;
|
||||
--duck-orange: #ab635d;
|
||||
--duck-forest: #9f6769;
|
||||
--duck-beige: #2f3235;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Atari — 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/atif-1402/omarchy-atari-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='atari'] {
|
||||
--background: #171317;
|
||||
--foreground: #dcd6d6;
|
||||
--card: #292329;
|
||||
--card-foreground: #dcd6d6;
|
||||
--popover: #292329;
|
||||
--popover-foreground: #dcd6d6;
|
||||
--muted: #383238;
|
||||
--muted-foreground: #a6a0a2;
|
||||
--accent: #383238;
|
||||
--accent-foreground: #dcd6d6;
|
||||
--primary: #dff1e8;
|
||||
--primary-foreground: #171317;
|
||||
--secondary: #383238;
|
||||
--secondary-foreground: #dcd6d6;
|
||||
--cta: #dff1e8;
|
||||
--cta-foreground: #171317;
|
||||
--ctahover: #e3f3eb;
|
||||
--success: #79be9a;
|
||||
--success-foreground: #171317;
|
||||
--warning: #c3b283;
|
||||
--warning-foreground: #171317;
|
||||
--destructive: #b9746f;
|
||||
--destructive-foreground: #171317;
|
||||
--info: #9db9b2;
|
||||
--info-foreground: #171317;
|
||||
--busy: #be9379;
|
||||
--busy-foreground: #171317;
|
||||
--busy-ink: #be9379;
|
||||
--border: #4c464b;
|
||||
--input: #4c464b;
|
||||
--ring: #dff1e8;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #dff1e8;
|
||||
--chart-secondary: #cd9b98;
|
||||
--status-success: #79be9a;
|
||||
--status-warning: #c3b283;
|
||||
--status-in-progress: #9db9b2;
|
||||
--page-bg: #171317;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(41 35 41 / 0.72);
|
||||
--panel-border: rgb(76 70 75 / 0.9);
|
||||
--panel-border-bare: rgb(76 70 75 / 0.55);
|
||||
--panel-raised-bg: rgb(41 35 41 / 0.95);
|
||||
--panel-raised-border: rgb(76 70 75 / 1);
|
||||
--panel-accent: #dff1e8;
|
||||
--panel-header-bg: rgb(56 50 56 / 0.6);
|
||||
--panel-header-fg: #dcd6d6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #292329;
|
||||
--glass-bg: rgb(41 35 41 / 0.55);
|
||||
--glass-border: rgb(76 70 75 / 0.7);
|
||||
--dock-bg: rgb(41 35 41 / 0.7);
|
||||
--dock-border: rgb(76 70 75 / 0.8);
|
||||
--dock-tooltip-bg: #383238;
|
||||
--header-bg: rgb(41 35 41 / 0.8);
|
||||
--header-border: rgb(76 70 75 / 0.9);
|
||||
--header-fg: #dcd6d6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(122 116 119 / 0.07);
|
||||
--card-grid-color: rgb(122 116 119 / 0.05);
|
||||
--panel-grid-color: rgb(122 116 119 / 0.06);
|
||||
--scrollbar-thumb: rgb(135 120 135 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(135 120 135 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(135 120 135 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(135 120 135 / 0.7);
|
||||
--brand: #dff1e8;
|
||||
--brand-foreground: #171317;
|
||||
--brand-primary: #dff1e8;
|
||||
--brand-accent: #a2d2b9;
|
||||
--brand-warm: #be9379;
|
||||
--brand-deep: #171317;
|
||||
--brand-muted: #877887;
|
||||
--ink: #dcd6d6;
|
||||
--surface-warm: #292329;
|
||||
--naturegreen: #79be9a;
|
||||
--naturegreen-foreground: #171317;
|
||||
--duck-dark: #dcd6d6;
|
||||
--duck-teal: #a2d2b9;
|
||||
--duck-yellow: #c3b283;
|
||||
--duck-orange: #be9379;
|
||||
--duck-forest: #79be9a;
|
||||
--duck-beige: #3b353a;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Atelier — 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/atif-1402/omarchy-atelier-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='atelier'] {
|
||||
--background: #13130f;
|
||||
--foreground: #dcd9d6;
|
||||
--card: #22221b;
|
||||
--card-foreground: #dcd9d6;
|
||||
--popover: #22221b;
|
||||
--popover-foreground: #dcd9d6;
|
||||
--muted: #31312b;
|
||||
--muted-foreground: #a4a29e;
|
||||
--accent: #31312b;
|
||||
--accent-foreground: #dcd9d6;
|
||||
--primary: #7bbf7a;
|
||||
--primary-foreground: #13130f;
|
||||
--secondary: #31312b;
|
||||
--secondary-foreground: #dcd9d6;
|
||||
--cta: #7bbf7a;
|
||||
--cta-foreground: #13130f;
|
||||
--ctahover: #8bc78a;
|
||||
--success: #7d9726;
|
||||
--success-foreground: #13130f;
|
||||
--warning: #a5980d;
|
||||
--warning-foreground: #13130f;
|
||||
--destructive: #ba6236;
|
||||
--destructive-foreground: #0d0d0b;
|
||||
--info: #36a166;
|
||||
--info-foreground: #13130f;
|
||||
--busy: #b07d22;
|
||||
--busy-foreground: #13130f;
|
||||
--busy-ink: #b07d22;
|
||||
--border: #464640;
|
||||
--input: #464640;
|
||||
--ring: #7bbf7a;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #7bbf7a;
|
||||
--chart-secondary: #9d6c7c;
|
||||
--status-success: #7d9726;
|
||||
--status-warning: #a5980d;
|
||||
--status-in-progress: #36a166;
|
||||
--page-bg: #13130f;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(34 34 27 / 0.72);
|
||||
--panel-border: rgb(70 70 64 / 0.9);
|
||||
--panel-border-bare: rgb(70 70 64 / 0.55);
|
||||
--panel-raised-bg: rgb(34 34 27 / 0.95);
|
||||
--panel-raised-border: rgb(70 70 64 / 1);
|
||||
--panel-accent: #7bbf7a;
|
||||
--panel-header-bg: rgb(49 49 43 / 0.6);
|
||||
--panel-header-fg: #dcd9d6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #22221b;
|
||||
--glass-bg: rgb(34 34 27 / 0.55);
|
||||
--glass-border: rgb(70 70 64 / 0.7);
|
||||
--dock-bg: rgb(34 34 27 / 0.7);
|
||||
--dock-border: rgb(70 70 64 / 0.8);
|
||||
--dock-tooltip-bg: #31312b;
|
||||
--header-bg: rgb(34 34 27 / 0.8);
|
||||
--header-border: rgb(70 70 64 / 0.9);
|
||||
--header-fg: #dcd9d6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(118 116 111 / 0.07);
|
||||
--card-grid-color: rgb(118 116 111 / 0.05);
|
||||
--panel-grid-color: rgb(118 116 111 / 0.06);
|
||||
--scrollbar-thumb: rgb(108 107 90 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(108 107 90 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(108 107 90 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(108 107 90 / 0.7);
|
||||
--brand: #7bbf7a;
|
||||
--brand-foreground: #13130f;
|
||||
--brand-primary: #7bbf7a;
|
||||
--brand-accent: #5b9d48;
|
||||
--brand-warm: #b07d22;
|
||||
--brand-deep: #13130f;
|
||||
--brand-muted: #6c6b5a;
|
||||
--ink: #dcd9d6;
|
||||
--surface-warm: #22221b;
|
||||
--naturegreen: #7d9726;
|
||||
--naturegreen-foreground: #13130f;
|
||||
--duck-dark: #dcd9d6;
|
||||
--duck-teal: #5b9d48;
|
||||
--duck-yellow: #a5980d;
|
||||
--duck-orange: #b07d22;
|
||||
--duck-forest: #7d9726;
|
||||
--duck-beige: #35342e;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Aura — 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-aura-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='aura'] {
|
||||
--background: #16171e;
|
||||
--foreground: #f8f8f2;
|
||||
--card: #282a36;
|
||||
--card-foreground: #f8f8f2;
|
||||
--popover: #282a36;
|
||||
--popover-foreground: #f8f8f2;
|
||||
--muted: #373944;
|
||||
--muted-foreground: #bababa;
|
||||
--accent: #373944;
|
||||
--accent-foreground: #f8f8f2;
|
||||
--primary: #bde0fe;
|
||||
--primary-foreground: #16171e;
|
||||
--secondary: #373944;
|
||||
--secondary-foreground: #f8f8f2;
|
||||
--cta: #bde0fe;
|
||||
--cta-foreground: #16171e;
|
||||
--ctahover: #c5e4fe;
|
||||
--success: #8be9fd;
|
||||
--success-foreground: #16171e;
|
||||
--warning: #cbc3e3;
|
||||
--warning-foreground: #16171e;
|
||||
--destructive: #ffafcc;
|
||||
--destructive-foreground: #16171e;
|
||||
--info: #8be9fd;
|
||||
--info-foreground: #16171e;
|
||||
--busy: #e5b9d8;
|
||||
--busy-foreground: #16171e;
|
||||
--busy-ink: #e5b9d8;
|
||||
--border: #51525b;
|
||||
--input: #51525b;
|
||||
--ring: #bde0fe;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #bde0fe;
|
||||
--chart-secondary: #ffc8dd;
|
||||
--status-success: #8be9fd;
|
||||
--status-warning: #cbc3e3;
|
||||
--status-in-progress: #8be9fd;
|
||||
--page-bg: #16171e;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(40 42 54 / 0.72);
|
||||
--panel-border: rgb(81 82 91 / 0.9);
|
||||
--panel-border-bare: rgb(81 82 91 / 0.55);
|
||||
--panel-raised-bg: rgb(40 42 54 / 0.95);
|
||||
--panel-raised-border: rgb(81 82 91 / 1);
|
||||
--panel-accent: #bde0fe;
|
||||
--panel-header-bg: rgb(55 57 68 / 0.6);
|
||||
--panel-header-fg: #f8f8f2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #282a36;
|
||||
--glass-bg: rgb(40 42 54 / 0.55);
|
||||
--glass-border: rgb(81 82 91 / 0.7);
|
||||
--dock-bg: rgb(40 42 54 / 0.7);
|
||||
--dock-border: rgb(81 82 91 / 0.8);
|
||||
--dock-tooltip-bg: #373944;
|
||||
--header-bg: rgb(40 42 54 / 0.8);
|
||||
--header-border: rgb(81 82 91 / 0.9);
|
||||
--header-fg: #f8f8f2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(134 135 139 / 0.07);
|
||||
--card-grid-color: rgb(134 135 139 / 0.05);
|
||||
--panel-grid-color: rgb(134 135 139 / 0.06);
|
||||
--scrollbar-thumb: rgb(68 71 90 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(68 71 90 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(68 71 90 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(68 71 90 / 0.7);
|
||||
--brand: #bde0fe;
|
||||
--brand-foreground: #16171e;
|
||||
--brand-primary: #bde0fe;
|
||||
--brand-accent: #8be9fd;
|
||||
--brand-warm: #e5b9d8;
|
||||
--brand-deep: #16171e;
|
||||
--brand-muted: #44475a;
|
||||
--ink: #f8f8f2;
|
||||
--surface-warm: #282a36;
|
||||
--naturegreen: #8be9fd;
|
||||
--naturegreen-foreground: #16171e;
|
||||
--duck-dark: #f8f8f2;
|
||||
--duck-teal: #8be9fd;
|
||||
--duck-yellow: #cbc3e3;
|
||||
--duck-orange: #e5b9d8;
|
||||
--duck-forest: #8be9fd;
|
||||
--duck-beige: #3d3f49;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Ayu 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/fdidron/omarchy-ayu-dark-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='ayu-dark'] {
|
||||
--background: #06080b;
|
||||
--foreground: #bfbdb6;
|
||||
--card: #0b0e14;
|
||||
--card-foreground: #bfbdb6;
|
||||
--popover: #0b0e14;
|
||||
--popover-foreground: #bfbdb6;
|
||||
--muted: #1c1f24;
|
||||
--muted-foreground: #898985;
|
||||
--accent: #1c1f24;
|
||||
--accent-foreground: #bfbdb6;
|
||||
--primary: #95e6cb;
|
||||
--primary-foreground: #06080b;
|
||||
--secondary: #1c1f24;
|
||||
--secondary-foreground: #bfbdb6;
|
||||
--cta: #95e6cb;
|
||||
--cta-foreground: #06080b;
|
||||
--ctahover: #a2e9d1;
|
||||
--success: #7fd962;
|
||||
--success-foreground: #06080b;
|
||||
--warning: #f9af4f;
|
||||
--warning-foreground: #06080b;
|
||||
--destructive: #ea6c73;
|
||||
--destructive-foreground: #06080b;
|
||||
--info: #53bdfa;
|
||||
--info-foreground: #06080b;
|
||||
--busy: #f28e61;
|
||||
--busy-foreground: #06080b;
|
||||
--busy-ink: #f28e61;
|
||||
--border: #2e3034;
|
||||
--input: #2e3034;
|
||||
--ring: #95e6cb;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #95e6cb;
|
||||
--chart-secondary: #cda1fa;
|
||||
--status-success: #7fd962;
|
||||
--status-warning: #f9af4f;
|
||||
--status-in-progress: #53bdfa;
|
||||
--page-bg: #06080b;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(11 14 20 / 0.72);
|
||||
--panel-border: rgb(46 48 52 / 0.9);
|
||||
--panel-border-bare: rgb(46 48 52 / 0.55);
|
||||
--panel-raised-bg: rgb(11 14 20 / 0.95);
|
||||
--panel-raised-border: rgb(46 48 52 / 1);
|
||||
--panel-accent: #95e6cb;
|
||||
--panel-header-bg: rgb(28 31 36 / 0.6);
|
||||
--panel-header-fg: #bfbdb6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0b0e14;
|
||||
--glass-bg: rgb(11 14 20 / 0.55);
|
||||
--glass-border: rgb(46 48 52 / 0.7);
|
||||
--dock-bg: rgb(11 14 20 / 0.7);
|
||||
--dock-border: rgb(46 48 52 / 0.8);
|
||||
--dock-tooltip-bg: #1c1f24;
|
||||
--header-bg: rgb(11 14 20 / 0.8);
|
||||
--header-border: rgb(46 48 52 / 0.9);
|
||||
--header-fg: #bfbdb6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(96 97 97 / 0.07);
|
||||
--card-grid-color: rgb(96 97 97 / 0.05);
|
||||
--panel-grid-color: rgb(96 97 97 / 0.06);
|
||||
--scrollbar-thumb: rgb(104 104 104 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(104 104 104 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(104 104 104 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(104 104 104 / 0.7);
|
||||
--brand: #95e6cb;
|
||||
--brand-foreground: #06080b;
|
||||
--brand-primary: #95e6cb;
|
||||
--brand-accent: #90e1c6;
|
||||
--brand-warm: #f28e61;
|
||||
--brand-deep: #06080b;
|
||||
--brand-muted: #686868;
|
||||
--ink: #bfbdb6;
|
||||
--surface-warm: #0b0e14;
|
||||
--naturegreen: #7fd962;
|
||||
--naturegreen-foreground: #06080b;
|
||||
--duck-dark: #bfbdb6;
|
||||
--duck-teal: #90e1c6;
|
||||
--duck-yellow: #f9af4f;
|
||||
--duck-orange: #f28e61;
|
||||
--duck-forest: #7fd962;
|
||||
--duck-beige: #1d2024;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Ayu Light — 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/fdidron/omarchy-ayu-light-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='ayu-light'] {
|
||||
--background: #f8f9fa;
|
||||
--foreground: #5c6166;
|
||||
--card: #eff0f1;
|
||||
--card-foreground: #5c6166;
|
||||
--popover: #eff0f1;
|
||||
--popover-foreground: #5c6166;
|
||||
--muted: #e9eaeb;
|
||||
--muted-foreground: #65686a;
|
||||
--accent: #e9eaeb;
|
||||
--accent-foreground: #5c6166;
|
||||
--primary: #3095db;
|
||||
--primary-foreground: #272727;
|
||||
--secondary: #e9eaeb;
|
||||
--secondary-foreground: #5c6166;
|
||||
--cta: #3095db;
|
||||
--cta-foreground: #272727;
|
||||
--ctahover: #2a83c1;
|
||||
--success: #6cbf43;
|
||||
--success-foreground: #3c3f42;
|
||||
--warning: #eca944;
|
||||
--warning-foreground: #43464a;
|
||||
--destructive: #ea6c6d;
|
||||
--destructive-foreground: #2d2d2d;
|
||||
--info: #3199e1;
|
||||
--info-foreground: #272727;
|
||||
--busy: #eb8b59;
|
||||
--busy-foreground: #373a3d;
|
||||
--busy-ink: #a5613e;
|
||||
--border: #dedfe1;
|
||||
--input: #d3d4d6;
|
||||
--ring: #3095db;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #3095db;
|
||||
--chart-secondary: #9e75c7;
|
||||
--status-success: #6cbf43;
|
||||
--status-warning: #eca944;
|
||||
--status-in-progress: #3199e1;
|
||||
--page-bg: #f8f9fa;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(239 240 241 / 0.72);
|
||||
--panel-border: rgb(222 223 225 / 0.9);
|
||||
--panel-border-bare: rgb(222 223 225 / 0.55);
|
||||
--panel-raised-bg: rgb(239 240 241 / 0.95);
|
||||
--panel-raised-border: rgb(222 223 225 / 1);
|
||||
--panel-accent: #3095db;
|
||||
--panel-header-bg: rgb(233 234 235 / 0.6);
|
||||
--panel-header-fg: #5c6166;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #eff0f1;
|
||||
--glass-bg: rgb(239 240 241 / 0.55);
|
||||
--glass-border: rgb(222 223 225 / 0.7);
|
||||
--dock-bg: rgb(239 240 241 / 0.7);
|
||||
--dock-border: rgb(222 223 225 / 0.8);
|
||||
--dock-tooltip-bg: #e9eaeb;
|
||||
--header-bg: rgb(239 240 241 / 0.8);
|
||||
--header-border: rgb(222 223 225 / 0.9);
|
||||
--header-fg: #5c6166;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(134 136 137 / 0.07);
|
||||
--card-grid-color: rgb(134 136 137 / 0.05);
|
||||
--panel-grid-color: rgb(134 136 137 / 0.06);
|
||||
--scrollbar-thumb: rgb(104 104 104 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(104 104 104 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(104 104 104 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(104 104 104 / 0.7);
|
||||
--brand: #3095db;
|
||||
--brand-foreground: #272727;
|
||||
--brand-primary: #3095db;
|
||||
--brand-accent: #46ba94;
|
||||
--brand-warm: #eb8b59;
|
||||
--brand-deep: #e9eaeb;
|
||||
--brand-muted: #686868;
|
||||
--ink: #5c6166;
|
||||
--surface-warm: #eff0f1;
|
||||
--naturegreen: #6cbf43;
|
||||
--naturegreen-foreground: #3c3f42;
|
||||
--duck-dark: #5c6166;
|
||||
--duck-teal: #46ba94;
|
||||
--duck-yellow: #eca944;
|
||||
--duck-orange: #eb8b59;
|
||||
--duck-forest: #6cbf43;
|
||||
--duck-beige: #e0e2e3;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Ayu Mirage — 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/fdidron/omarchy-ayu-mirage-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='ayu-mirage'] {
|
||||
--background: #11141a;
|
||||
--foreground: #cccac2;
|
||||
--card: #1f2430;
|
||||
--card-foreground: #cccac2;
|
||||
--popover: #1f2430;
|
||||
--popover-foreground: #cccac2;
|
||||
--muted: #2f333e;
|
||||
--muted-foreground: #9b9b99;
|
||||
--accent: #2f333e;
|
||||
--accent-foreground: #cccac2;
|
||||
--primary: #95e6cb;
|
||||
--primary-foreground: #11141a;
|
||||
--secondary: #2f333e;
|
||||
--secondary-foreground: #cccac2;
|
||||
--cta: #95e6cb;
|
||||
--cta-foreground: #11141a;
|
||||
--ctahover: #a2e9d1;
|
||||
--success: #87d96c;
|
||||
--success-foreground: #11141a;
|
||||
--warning: #facc6e;
|
||||
--warning-foreground: #11141a;
|
||||
--destructive: #ed8274;
|
||||
--destructive-foreground: #11141a;
|
||||
--info: #6dcbfa;
|
||||
--info-foreground: #11141a;
|
||||
--busy: #f4a771;
|
||||
--busy-foreground: #11141a;
|
||||
--busy-ink: #f4a771;
|
||||
--border: #41444d;
|
||||
--input: #41444d;
|
||||
--ring: #95e6cb;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #95e6cb;
|
||||
--chart-secondary: #dabafa;
|
||||
--status-success: #87d96c;
|
||||
--status-warning: #facc6e;
|
||||
--status-in-progress: #6dcbfa;
|
||||
--page-bg: #11141a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(31 36 48 / 0.72);
|
||||
--panel-border: rgb(65 68 77 / 0.9);
|
||||
--panel-border-bare: rgb(65 68 77 / 0.55);
|
||||
--panel-raised-bg: rgb(31 36 48 / 0.95);
|
||||
--panel-raised-border: rgb(65 68 77 / 1);
|
||||
--panel-accent: #95e6cb;
|
||||
--panel-header-bg: rgb(47 51 62 / 0.6);
|
||||
--panel-header-fg: #cccac2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1f2430;
|
||||
--glass-bg: rgb(31 36 48 / 0.55);
|
||||
--glass-border: rgb(65 68 77 / 0.7);
|
||||
--dock-bg: rgb(31 36 48 / 0.7);
|
||||
--dock-border: rgb(65 68 77 / 0.8);
|
||||
--dock-tooltip-bg: #2f333e;
|
||||
--header-bg: rgb(31 36 48 / 0.8);
|
||||
--header-border: rgb(65 68 77 / 0.9);
|
||||
--header-fg: #cccac2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(109 111 114 / 0.07);
|
||||
--card-grid-color: rgb(109 111 114 / 0.05);
|
||||
--panel-grid-color: rgb(109 111 114 / 0.06);
|
||||
--scrollbar-thumb: rgb(104 104 104 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(104 104 104 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(104 104 104 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(104 104 104 / 0.7);
|
||||
--brand: #95e6cb;
|
||||
--brand-foreground: #11141a;
|
||||
--brand-primary: #95e6cb;
|
||||
--brand-accent: #90e1c6;
|
||||
--brand-warm: #f4a771;
|
||||
--brand-deep: #11141a;
|
||||
--brand-muted: #686868;
|
||||
--ink: #cccac2;
|
||||
--surface-warm: #1f2430;
|
||||
--naturegreen: #87d96c;
|
||||
--naturegreen-foreground: #11141a;
|
||||
--duck-dark: #cccac2;
|
||||
--duck-teal: #90e1c6;
|
||||
--duck-yellow: #facc6e;
|
||||
--duck-orange: #f4a771;
|
||||
--duck-forest: #87d96c;
|
||||
--duck-beige: #30353f;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Azure Glow — 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/Hydradevx/omarchy-azure-glow-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='azure-glow'] {
|
||||
--background: #06080e;
|
||||
--foreground: #a8dfff;
|
||||
--card: #0a0f1a;
|
||||
--card-foreground: #a8dfff;
|
||||
--popover: #0a0f1a;
|
||||
--popover-foreground: #a8dfff;
|
||||
--muted: #1b202a;
|
||||
--muted-foreground: #79a1ba;
|
||||
--accent: #1b202a;
|
||||
--accent-foreground: #a8dfff;
|
||||
--primary: #99eeff;
|
||||
--primary-foreground: #06080e;
|
||||
--secondary: #1b202a;
|
||||
--secondary-foreground: #a8dfff;
|
||||
--cta: #99eeff;
|
||||
--cta-foreground: #06080e;
|
||||
--ctahover: #a5f0ff;
|
||||
--success: #00e0b8;
|
||||
--success-foreground: #06080e;
|
||||
--warning: #33ccff;
|
||||
--warning-foreground: #06080e;
|
||||
--destructive: #0099cc;
|
||||
--destructive-foreground: #06080e;
|
||||
--info: #00aaff;
|
||||
--info-foreground: #06080e;
|
||||
--busy: #1ab3e6;
|
||||
--busy-foreground: #06080e;
|
||||
--busy-ink: #1ab3e6;
|
||||
--border: #293847;
|
||||
--input: #293847;
|
||||
--ring: #99eeff;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #99eeff;
|
||||
--chart-secondary: #3399ff;
|
||||
--status-success: #00e0b8;
|
||||
--status-warning: #33ccff;
|
||||
--status-in-progress: #00aaff;
|
||||
--page-bg: #06080e;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(10 15 26 / 0.72);
|
||||
--panel-border: rgb(41 56 71 / 0.9);
|
||||
--panel-border-bare: rgb(41 56 71 / 0.55);
|
||||
--panel-raised-bg: rgb(10 15 26 / 0.95);
|
||||
--panel-raised-border: rgb(41 56 71 / 1);
|
||||
--panel-accent: #99eeff;
|
||||
--panel-header-bg: rgb(27 32 42 / 0.6);
|
||||
--panel-header-fg: #a8dfff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0a0f1a;
|
||||
--glass-bg: rgb(10 15 26 / 0.55);
|
||||
--glass-border: rgb(41 56 71 / 0.7);
|
||||
--dock-bg: rgb(10 15 26 / 0.7);
|
||||
--dock-border: rgb(41 56 71 / 0.8);
|
||||
--dock-tooltip-bg: #1b202a;
|
||||
--header-bg: rgb(10 15 26 / 0.8);
|
||||
--header-border: rgb(41 56 71 / 0.9);
|
||||
--header-fg: #a8dfff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(81 109 129 / 0.07);
|
||||
--card-grid-color: rgb(81 109 129 / 0.05);
|
||||
--panel-grid-color: rgb(81 109 129 / 0.06);
|
||||
--scrollbar-thumb: rgb(18 50 71 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(18 50 71 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(18 50 71 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(18 50 71 / 0.7);
|
||||
--brand: #99eeff;
|
||||
--brand-foreground: #06080e;
|
||||
--brand-primary: #99eeff;
|
||||
--brand-accent: #66e0ff;
|
||||
--brand-warm: #1ab3e6;
|
||||
--brand-deep: #06080e;
|
||||
--brand-muted: #123247;
|
||||
--ink: #a8dfff;
|
||||
--surface-warm: #0a0f1a;
|
||||
--naturegreen: #00e0b8;
|
||||
--naturegreen-foreground: #06080e;
|
||||
--duck-dark: #a8dfff;
|
||||
--duck-teal: #66e0ff;
|
||||
--duck-yellow: #33ccff;
|
||||
--duck-orange: #1ab3e6;
|
||||
--duck-forest: #00e0b8;
|
||||
--duck-beige: #1a2431;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Azure — 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/tahfizhabib/omarchy-azure-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='azure'] {
|
||||
--background: #0d141f;
|
||||
--foreground: #eff3f8;
|
||||
--card: #182538;
|
||||
--card-foreground: #eff3f8;
|
||||
--popover: #182538;
|
||||
--popover-foreground: #eff3f8;
|
||||
--muted: #283446;
|
||||
--muted-foreground: #afb5be;
|
||||
--accent: #283446;
|
||||
--accent-foreground: #eff3f8;
|
||||
--primary: #cad4e7;
|
||||
--primary-foreground: #0d141f;
|
||||
--secondary: #283446;
|
||||
--secondary-foreground: #eff3f8;
|
||||
--cta: #cad4e7;
|
||||
--cta-foreground: #0d141f;
|
||||
--ctahover: #d0d9ea;
|
||||
--success: #61a7d6;
|
||||
--success-foreground: #0d141f;
|
||||
--warning: #6cabda;
|
||||
--warning-foreground: #0d141f;
|
||||
--destructive: #969293;
|
||||
--destructive-foreground: #0d141f;
|
||||
--info: #8da1c8;
|
||||
--info-foreground: #0d141f;
|
||||
--busy: #819fb7;
|
||||
--busy-foreground: #0d141f;
|
||||
--busy-ink: #819fb7;
|
||||
--border: #424d5e;
|
||||
--input: #424d5e;
|
||||
--ring: #cad4e7;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #cad4e7;
|
||||
--chart-secondary: #a0adc5;
|
||||
--status-success: #61a7d6;
|
||||
--status-warning: #6cabda;
|
||||
--status-in-progress: #8da1c8;
|
||||
--page-bg: #0d141f;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(24 37 56 / 0.72);
|
||||
--panel-border: rgb(66 77 94 / 0.9);
|
||||
--panel-border-bare: rgb(66 77 94 / 0.55);
|
||||
--panel-raised-bg: rgb(24 37 56 / 0.95);
|
||||
--panel-raised-border: rgb(66 77 94 / 1);
|
||||
--panel-accent: #cad4e7;
|
||||
--panel-header-bg: rgb(40 52 70 / 0.6);
|
||||
--panel-header-fg: #eff3f8;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #182538;
|
||||
--glass-bg: rgb(24 37 56 / 0.55);
|
||||
--glass-border: rgb(66 77 94 / 0.7);
|
||||
--dock-bg: rgb(24 37 56 / 0.7);
|
||||
--dock-border: rgb(66 77 94 / 0.8);
|
||||
--dock-tooltip-bg: #283446;
|
||||
--header-bg: rgb(24 37 56 / 0.8);
|
||||
--header-border: rgb(66 77 94 / 0.9);
|
||||
--header-fg: #eff3f8;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(121 130 142 / 0.07);
|
||||
--card-grid-color: rgb(121 130 142 / 0.05);
|
||||
--panel-grid-color: rgb(121 130 142 / 0.06);
|
||||
--scrollbar-thumb: rgb(73 88 109 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(73 88 109 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(73 88 109 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(73 88 109 / 0.7);
|
||||
--brand: #cad4e7;
|
||||
--brand-foreground: #0d141f;
|
||||
--brand-primary: #cad4e7;
|
||||
--brand-accent: #5693c4;
|
||||
--brand-warm: #819fb7;
|
||||
--brand-deep: #0d141f;
|
||||
--brand-muted: #49586d;
|
||||
--ink: #eff3f8;
|
||||
--surface-warm: #182538;
|
||||
--naturegreen: #61a7d6;
|
||||
--naturegreen-foreground: #0d141f;
|
||||
--duck-dark: #eff3f8;
|
||||
--duck-teal: #5693c4;
|
||||
--duck-yellow: #6cabda;
|
||||
--duck-orange: #819fb7;
|
||||
--duck-forest: #61a7d6;
|
||||
--duck-beige: #2e3a4b;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Bad Hand — 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/bjornramberg/omarchy-bad-hand-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='bad-hand'] {
|
||||
--background: #110b09;
|
||||
--foreground: #bdb09d;
|
||||
--card: #1e1411;
|
||||
--card-foreground: #bdb09d;
|
||||
--popover: #1e1411;
|
||||
--popover-foreground: #bdb09d;
|
||||
--muted: #2e2422;
|
||||
--muted-foreground: #988e81;
|
||||
--accent: #2e2422;
|
||||
--accent-foreground: #bdb09d;
|
||||
--primary: #f5efe1;
|
||||
--primary-foreground: #110b09;
|
||||
--secondary: #2e2422;
|
||||
--secondary-foreground: #bdb09d;
|
||||
--cta: #f5efe1;
|
||||
--cta-foreground: #110b09;
|
||||
--ctahover: #f6f1e5;
|
||||
--success: #921416;
|
||||
--success-foreground: #c2b6a4;
|
||||
--warning: #856839;
|
||||
--warning-foreground: #f3f3f3;
|
||||
--destructive: #5a0a0a;
|
||||
--destructive-foreground: #bdb09d;
|
||||
--info: #4d3a2b;
|
||||
--info-foreground: #bdb09d;
|
||||
--busy: #703922;
|
||||
--busy-foreground: #c2b6a4;
|
||||
--busy-ink: #9b7464;
|
||||
--border: #3d332c;
|
||||
--input: #3d332c;
|
||||
--ring: #f5efe1;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #f5efe1;
|
||||
--chart-secondary: #c2b28c;
|
||||
--status-success: #921416;
|
||||
--status-warning: #856839;
|
||||
--status-in-progress: #4d3a2b;
|
||||
--page-bg: #110b09;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(30 20 17 / 0.72);
|
||||
--panel-border: rgb(61 51 44 / 0.9);
|
||||
--panel-border-bare: rgb(61 51 44 / 0.55);
|
||||
--panel-raised-bg: rgb(30 20 17 / 0.95);
|
||||
--panel-raised-border: rgb(61 51 44 / 1);
|
||||
--panel-accent: #f5efe1;
|
||||
--panel-header-bg: rgb(46 36 34 / 0.6);
|
||||
--panel-header-fg: #bdb09d;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1e1411;
|
||||
--glass-bg: rgb(30 20 17 / 0.55);
|
||||
--glass-border: rgb(61 51 44 / 0.7);
|
||||
--dock-bg: rgb(30 20 17 / 0.7);
|
||||
--dock-border: rgb(61 51 44 / 0.8);
|
||||
--dock-tooltip-bg: #2e2422;
|
||||
--header-bg: rgb(30 20 17 / 0.8);
|
||||
--header-border: rgb(61 51 44 / 0.9);
|
||||
--header-fg: #bdb09d;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(110 98 89 / 0.07);
|
||||
--card-grid-color: rgb(110 98 89 / 0.05);
|
||||
--panel-grid-color: rgb(110 98 89 / 0.06);
|
||||
--scrollbar-thumb: rgb(53 41 36 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(53 41 36 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(53 41 36 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(53 41 36 / 0.7);
|
||||
--brand: #f5efe1;
|
||||
--brand-foreground: #110b09;
|
||||
--brand-primary: #f5efe1;
|
||||
--brand-accent: #e4d8c1;
|
||||
--brand-warm: #703922;
|
||||
--brand-deep: #110b09;
|
||||
--brand-muted: #352924;
|
||||
--ink: #bdb09d;
|
||||
--surface-warm: #1e1411;
|
||||
--naturegreen: #921416;
|
||||
--naturegreen-foreground: #c2b6a4;
|
||||
--duck-dark: #bdb09d;
|
||||
--duck-teal: #e4d8c1;
|
||||
--duck-yellow: #856839;
|
||||
--duck-orange: #703922;
|
||||
--duck-forest: #921416;
|
||||
--duck-beige: #2e241f;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Batman — 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-batman-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='batman'] {
|
||||
--background: #0f1011;
|
||||
--foreground: #a7a8a3;
|
||||
--card: #1b1d1e;
|
||||
--card-foreground: #a7a8a3;
|
||||
--popover: #1b1d1e;
|
||||
--popover-foreground: #a7a8a3;
|
||||
--muted: #2b2d2e;
|
||||
--muted-foreground: #949592;
|
||||
--accent: #2b2d2e;
|
||||
--accent-foreground: #a7a8a3;
|
||||
--primary: #a2a2a5;
|
||||
--primary-foreground: #0f1011;
|
||||
--secondary: #2b2d2e;
|
||||
--secondary-foreground: #a7a8a3;
|
||||
--cta: #a2a2a5;
|
||||
--cta-foreground: #0f1011;
|
||||
--ctahover: #adadb0;
|
||||
--success: #c8be46;
|
||||
--success-foreground: #0f1011;
|
||||
--warning: #f3fd21;
|
||||
--warning-foreground: #0f1011;
|
||||
--destructive: #e6db43;
|
||||
--destructive-foreground: #0f1011;
|
||||
--info: #737074;
|
||||
--info-foreground: #f9f9f9;
|
||||
--busy: #edec32;
|
||||
--busy-foreground: #0f1011;
|
||||
--busy-ink: #edec32;
|
||||
--border: #363838;
|
||||
--input: #363838;
|
||||
--ring: #a2a2a5;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a2a2a5;
|
||||
--chart-secondary: #737271;
|
||||
--status-success: #c8be46;
|
||||
--status-warning: #f3fd21;
|
||||
--status-in-progress: #737074;
|
||||
--page-bg: #0f1011;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(27 29 30 / 0.72);
|
||||
--panel-border: rgb(54 56 56 / 0.9);
|
||||
--panel-border-bare: rgb(54 56 56 / 0.55);
|
||||
--panel-raised-bg: rgb(27 29 30 / 0.95);
|
||||
--panel-raised-border: rgb(54 56 56 / 1);
|
||||
--panel-accent: #a2a2a5;
|
||||
--panel-header-bg: rgb(43 45 46 / 0.6);
|
||||
--panel-header-fg: #a7a8a3;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1b1d1e;
|
||||
--glass-bg: rgb(27 29 30 / 0.55);
|
||||
--glass-border: rgb(54 56 56 / 0.7);
|
||||
--dock-bg: rgb(27 29 30 / 0.7);
|
||||
--dock-border: rgb(54 56 56 / 0.8);
|
||||
--dock-tooltip-bg: #2b2d2e;
|
||||
--header-bg: rgb(27 29 30 / 0.8);
|
||||
--header-border: rgb(54 56 56 / 0.9);
|
||||
--header-fg: #a7a8a3;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(102 104 102 / 0.07);
|
||||
--card-grid-color: rgb(102 104 102 / 0.05);
|
||||
--panel-grid-color: rgb(102 104 102 / 0.06);
|
||||
--scrollbar-thumb: rgb(109 111 110 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(109 111 110 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(109 111 110 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(109 111 110 / 0.7);
|
||||
--brand: #a2a2a5;
|
||||
--brand-foreground: #0f1011;
|
||||
--brand-primary: #a2a2a5;
|
||||
--brand-accent: #615f5e;
|
||||
--brand-warm: #edec32;
|
||||
--brand-deep: #0f1011;
|
||||
--brand-muted: #6d6f6e;
|
||||
--ink: #a7a8a3;
|
||||
--surface-warm: #1b1d1e;
|
||||
--naturegreen: #c8be46;
|
||||
--naturegreen-foreground: #0f1011;
|
||||
--duck-dark: #a7a8a3;
|
||||
--duck-teal: #615f5e;
|
||||
--duck-yellow: #f3fd21;
|
||||
--duck-orange: #edec32;
|
||||
--duck-forest: #c8be46;
|
||||
--duck-beige: #292b2b;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Batou — 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-batou-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='batou'] {
|
||||
--background: #0a0a0a;
|
||||
--foreground: #a4a4a4;
|
||||
--card: #121212;
|
||||
--card-foreground: #a4a4a4;
|
||||
--popover: #121212;
|
||||
--popover-foreground: #a4a4a4;
|
||||
--muted: #232323;
|
||||
--muted-foreground: #8c8c8c;
|
||||
--accent: #232323;
|
||||
--accent-foreground: #a4a4a4;
|
||||
--primary: #c2bbb0;
|
||||
--primary-foreground: #0a0a0a;
|
||||
--secondary: #232323;
|
||||
--secondary-foreground: #a4a4a4;
|
||||
--cta: #c2bbb0;
|
||||
--cta-foreground: #0a0a0a;
|
||||
--ctahover: #c9c3b9;
|
||||
--success: #a5a297;
|
||||
--success-foreground: #0a0a0a;
|
||||
--warning: #c6c4b0;
|
||||
--warning-foreground: #0a0a0a;
|
||||
--destructive: #e19e74;
|
||||
--destructive-foreground: #0a0a0a;
|
||||
--info: #605d5b;
|
||||
--info-foreground: #dadada;
|
||||
--busy: #d4b192;
|
||||
--busy-foreground: #0a0a0a;
|
||||
--busy-ink: #d4b192;
|
||||
--border: #2f2f2f;
|
||||
--input: #2f2f2f;
|
||||
--ring: #c2bbb0;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #c2bbb0;
|
||||
--chart-secondary: #8a8575;
|
||||
--status-success: #a5a297;
|
||||
--status-warning: #c6c4b0;
|
||||
--status-in-progress: #605d5b;
|
||||
--page-bg: #0a0a0a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(18 18 18 / 0.72);
|
||||
--panel-border: rgb(47 47 47 / 0.9);
|
||||
--panel-border-bare: rgb(47 47 47 / 0.55);
|
||||
--panel-raised-bg: rgb(18 18 18 / 0.95);
|
||||
--panel-raised-border: rgb(47 47 47 / 1);
|
||||
--panel-accent: #c2bbb0;
|
||||
--panel-header-bg: rgb(35 35 35 / 0.6);
|
||||
--panel-header-fg: #a4a4a4;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #121212;
|
||||
--glass-bg: rgb(18 18 18 / 0.55);
|
||||
--glass-border: rgb(47 47 47 / 0.7);
|
||||
--dock-bg: rgb(18 18 18 / 0.7);
|
||||
--dock-border: rgb(47 47 47 / 0.8);
|
||||
--dock-tooltip-bg: #232323;
|
||||
--header-bg: rgb(18 18 18 / 0.8);
|
||||
--header-border: rgb(47 47 47 / 0.9);
|
||||
--header-fg: #a4a4a4;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(97 97 97 / 0.07);
|
||||
--card-grid-color: rgb(97 97 97 / 0.05);
|
||||
--panel-grid-color: rgb(97 97 97 / 0.06);
|
||||
--scrollbar-thumb: rgb(56 55 53 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(56 55 53 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(56 55 53 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(56 55 53 / 0.7);
|
||||
--brand: #c2bbb0;
|
||||
--brand-foreground: #0a0a0a;
|
||||
--brand-primary: #c2bbb0;
|
||||
--brand-accent: #c2bbb0;
|
||||
--brand-warm: #d4b192;
|
||||
--brand-deep: #0a0a0a;
|
||||
--brand-muted: #383735;
|
||||
--ink: #a4a4a4;
|
||||
--surface-warm: #121212;
|
||||
--naturegreen: #a5a297;
|
||||
--naturegreen-foreground: #0a0a0a;
|
||||
--duck-dark: #a4a4a4;
|
||||
--duck-teal: #c2bbb0;
|
||||
--duck-yellow: #c6c4b0;
|
||||
--duck-orange: #d4b192;
|
||||
--duck-forest: #a5a297;
|
||||
--duck-beige: #212121;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Bauhaus — 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/somerocketeer/omarchy-bauhaus-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='bauhaus'] {
|
||||
--background: #090a0d;
|
||||
--foreground: #eaeff5;
|
||||
--card: #101318;
|
||||
--card-foreground: #eaeff5;
|
||||
--popover: #101318;
|
||||
--popover-foreground: #eaeff5;
|
||||
--muted: #212428;
|
||||
--muted-foreground: #a9adb3;
|
||||
--accent: #212428;
|
||||
--accent-foreground: #eaeff5;
|
||||
--primary: #809d9e;
|
||||
--primary-foreground: #090a0d;
|
||||
--secondary: #212428;
|
||||
--secondary-foreground: #eaeff5;
|
||||
--cta: #809d9e;
|
||||
--cta-foreground: #090a0d;
|
||||
--ctahover: #8fa9aa;
|
||||
--success: #789fa2;
|
||||
--success-foreground: #090a0d;
|
||||
--warning: #e7a46f;
|
||||
--warning-foreground: #090a0d;
|
||||
--destructive: #cb886d;
|
||||
--destructive-foreground: #090a0d;
|
||||
--info: #8999aa;
|
||||
--info-foreground: #090a0d;
|
||||
--busy: #d9966e;
|
||||
--busy-foreground: #090a0d;
|
||||
--busy-ink: #d9966e;
|
||||
--border: #3b3e43;
|
||||
--input: #3b3e43;
|
||||
--ring: #809d9e;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #809d9e;
|
||||
--chart-secondary: #8d758f;
|
||||
--status-success: #789fa2;
|
||||
--status-warning: #e7a46f;
|
||||
--status-in-progress: #8999aa;
|
||||
--page-bg: #090a0d;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(16 19 24 / 0.72);
|
||||
--panel-border: rgb(59 62 67 / 0.9);
|
||||
--panel-border-bare: rgb(59 62 67 / 0.55);
|
||||
--panel-raised-bg: rgb(16 19 24 / 0.95);
|
||||
--panel-raised-border: rgb(59 62 67 / 1);
|
||||
--panel-accent: #809d9e;
|
||||
--panel-header-bg: rgb(33 36 40 / 0.6);
|
||||
--panel-header-fg: #eaeff5;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #101318;
|
||||
--glass-bg: rgb(16 19 24 / 0.55);
|
||||
--glass-border: rgb(59 62 67 / 0.7);
|
||||
--dock-bg: rgb(16 19 24 / 0.7);
|
||||
--dock-border: rgb(59 62 67 / 0.8);
|
||||
--dock-tooltip-bg: #212428;
|
||||
--header-bg: rgb(16 19 24 / 0.8);
|
||||
--header-border: rgb(59 62 67 / 0.9);
|
||||
--header-fg: #eaeff5;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(114 118 123 / 0.07);
|
||||
--card-grid-color: rgb(114 118 123 / 0.05);
|
||||
--panel-grid-color: rgb(114 118 123 / 0.06);
|
||||
--scrollbar-thumb: rgb(58 63 76 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(58 63 76 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(58 63 76 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(58 63 76 / 0.7);
|
||||
--brand: #809d9e;
|
||||
--brand-foreground: #090a0d;
|
||||
--brand-primary: #809d9e;
|
||||
--brand-accent: #809d9e;
|
||||
--brand-warm: #d9966e;
|
||||
--brand-deep: #090a0d;
|
||||
--brand-muted: #3a3f4c;
|
||||
--ink: #eaeff5;
|
||||
--surface-warm: #101318;
|
||||
--naturegreen: #789fa2;
|
||||
--naturegreen-foreground: #090a0d;
|
||||
--duck-dark: #eaeff5;
|
||||
--duck-teal: #809d9e;
|
||||
--duck-yellow: #e7a46f;
|
||||
--duck-orange: #d9966e;
|
||||
--duck-forest: #789fa2;
|
||||
--duck-beige: #26292e;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Beachvan — 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/haripako/omarchy-BeachVan-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='beachvan'] {
|
||||
--background: #0f181d;
|
||||
--foreground: #dee3eb;
|
||||
--card: #1b2b34;
|
||||
--card-foreground: #dee3eb;
|
||||
--popover: #1b2b34;
|
||||
--popover-foreground: #dee3eb;
|
||||
--muted: #2b3a42;
|
||||
--muted-foreground: #a4acb4;
|
||||
--accent: #2b3a42;
|
||||
--accent-foreground: #dee3eb;
|
||||
--primary: #66b0af;
|
||||
--primary-foreground: #0f181d;
|
||||
--secondary: #2b3a42;
|
||||
--secondary-foreground: #dee3eb;
|
||||
--cta: #66b0af;
|
||||
--cta-foreground: #0f181d;
|
||||
--ctahover: #78b9b9;
|
||||
--success: #9fc69a;
|
||||
--success-foreground: #0f181d;
|
||||
--warning: #f8c76b;
|
||||
--warning-foreground: #0f181d;
|
||||
--destructive: #ea6770;
|
||||
--destructive-foreground: #0f181d;
|
||||
--info: #6d9dca;
|
||||
--info-foreground: #0f181d;
|
||||
--busy: #f1976e;
|
||||
--busy-foreground: #0f181d;
|
||||
--busy-ink: #f1976e;
|
||||
--border: #414f58;
|
||||
--input: #414f58;
|
||||
--ring: #66b0af;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #66b0af;
|
||||
--chart-secondary: #c49ac4;
|
||||
--status-success: #9fc69a;
|
||||
--status-warning: #f8c76b;
|
||||
--status-in-progress: #6d9dca;
|
||||
--page-bg: #0f181d;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(27 43 52 / 0.72);
|
||||
--panel-border: rgb(65 79 88 / 0.9);
|
||||
--panel-border-bare: rgb(65 79 88 / 0.55);
|
||||
--panel-raised-bg: rgb(27 43 52 / 0.95);
|
||||
--panel-raised-border: rgb(65 79 88 / 1);
|
||||
--panel-accent: #66b0af;
|
||||
--panel-header-bg: rgb(43 58 66 / 0.6);
|
||||
--panel-header-fg: #dee3eb;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1b2b34;
|
||||
--glass-bg: rgb(27 43 52 / 0.55);
|
||||
--glass-border: rgb(65 79 88 / 0.7);
|
||||
--dock-bg: rgb(27 43 52 / 0.7);
|
||||
--dock-border: rgb(65 79 88 / 0.8);
|
||||
--dock-tooltip-bg: #2b3a42;
|
||||
--header-bg: rgb(27 43 52 / 0.8);
|
||||
--header-border: rgb(65 79 88 / 0.9);
|
||||
--header-fg: #dee3eb;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(115 126 134 / 0.07);
|
||||
--card-grid-color: rgb(115 126 134 / 0.05);
|
||||
--panel-grid-color: rgb(115 126 134 / 0.06);
|
||||
--scrollbar-thumb: rgb(106 116 124 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(106 116 124 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(106 116 124 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(106 116 124 / 0.7);
|
||||
--brand: #66b0af;
|
||||
--brand-foreground: #0f181d;
|
||||
--brand-primary: #66b0af;
|
||||
--brand-accent: #66b0af;
|
||||
--brand-warm: #f1976e;
|
||||
--brand-deep: #0f181d;
|
||||
--brand-muted: #6a747c;
|
||||
--ink: #dee3eb;
|
||||
--surface-warm: #1b2b34;
|
||||
--naturegreen: #9fc69a;
|
||||
--naturegreen-foreground: #0f181d;
|
||||
--duck-dark: #dee3eb;
|
||||
--duck-teal: #66b0af;
|
||||
--duck-yellow: #f8c76b;
|
||||
--duck-orange: #f1976e;
|
||||
--duck-forest: #9fc69a;
|
||||
--duck-beige: #2f3d46;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Beta — 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/jjdizz1l/beta (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='beta'] {
|
||||
--background: #120212;
|
||||
--foreground: #ffeca0;
|
||||
--card: #210321;
|
||||
--card-foreground: #ffeca0;
|
||||
--popover: #210321;
|
||||
--popover-foreground: #ffeca0;
|
||||
--muted: #311531;
|
||||
--muted-foreground: #bca67a;
|
||||
--accent: #311531;
|
||||
--accent-foreground: #ffeca0;
|
||||
--primary: #dce9fe;
|
||||
--primary-foreground: #120212;
|
||||
--secondary: #311531;
|
||||
--secondary-foreground: #ffeca0;
|
||||
--cta: #dce9fe;
|
||||
--cta-foreground: #120212;
|
||||
--ctahover: #e0ecfe;
|
||||
--success: #7ad573;
|
||||
--success-foreground: #120212;
|
||||
--warning: #f2c256;
|
||||
--warning-foreground: #120212;
|
||||
--destructive: #e71852;
|
||||
--destructive-foreground: #0d010d;
|
||||
--info: #5090f8;
|
||||
--info-foreground: #120212;
|
||||
--busy: #ed6d54;
|
||||
--busy-foreground: #120212;
|
||||
--busy-ink: #ed6d54;
|
||||
--border: #4c313a;
|
||||
--input: #4c313a;
|
||||
--ring: #dce9fe;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #dce9fe;
|
||||
--chart-secondary: #9d58f0;
|
||||
--status-success: #7ad573;
|
||||
--status-warning: #f2c256;
|
||||
--status-in-progress: #5090f8;
|
||||
--page-bg: #120212;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(33 3 33 / 0.72);
|
||||
--panel-border: rgb(76 49 58 / 0.9);
|
||||
--panel-border-bare: rgb(76 49 58 / 0.55);
|
||||
--panel-raised-bg: rgb(33 3 33 / 0.95);
|
||||
--panel-raised-border: rgb(76 49 58 / 1);
|
||||
--panel-accent: #dce9fe;
|
||||
--panel-header-bg: rgb(49 21 49 / 0.6);
|
||||
--panel-header-fg: #ffeca0;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #210321;
|
||||
--glass-bg: rgb(33 3 33 / 0.55);
|
||||
--glass-border: rgb(76 49 58 / 0.7);
|
||||
--dock-bg: rgb(33 3 33 / 0.7);
|
||||
--dock-border: rgb(76 49 58 / 0.8);
|
||||
--dock-tooltip-bg: #311531;
|
||||
--header-bg: rgb(33 3 33 / 0.8);
|
||||
--header-border: rgb(76 49 58 / 0.9);
|
||||
--header-fg: #ffeca0;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(133 108 90 / 0.07);
|
||||
--card-grid-color: rgb(133 108 90 / 0.05);
|
||||
--panel-grid-color: rgb(133 108 90 / 0.06);
|
||||
--scrollbar-thumb: rgb(171 84 136 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(171 84 136 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(171 84 136 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(171 84 136 / 0.7);
|
||||
--brand: #dce9fe;
|
||||
--brand-foreground: #120212;
|
||||
--brand-primary: #dce9fe;
|
||||
--brand-accent: #53d0bc;
|
||||
--brand-warm: #ed6d54;
|
||||
--brand-deep: #120212;
|
||||
--brand-muted: #ab5488;
|
||||
--ink: #ffeca0;
|
||||
--surface-warm: #210321;
|
||||
--naturegreen: #7ad573;
|
||||
--naturegreen-foreground: #120212;
|
||||
--duck-dark: #ffeca0;
|
||||
--duck-teal: #53d0bc;
|
||||
--duck-yellow: #f2c256;
|
||||
--duck-orange: #ed6d54;
|
||||
--duck-forest: #7ad573;
|
||||
--duck-beige: #371a2e;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Black Arch — 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/ankur311sudo/black_arch (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-arch'] {
|
||||
--background: #000000;
|
||||
--foreground: #ffffff;
|
||||
--card: #000000;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #000000;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #121212;
|
||||
--muted-foreground: #b3b3b3;
|
||||
--accent: #121212;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #989898;
|
||||
--primary-foreground: #000000;
|
||||
--secondary: #121212;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #989898;
|
||||
--cta-foreground: #000000;
|
||||
--ctahover: #a4a4a4;
|
||||
--success: #8e8e8e;
|
||||
--success-foreground: #000000;
|
||||
--warning: #b9b9b9;
|
||||
--warning-foreground: #000000;
|
||||
--destructive: #646464;
|
||||
--destructive-foreground: #ffffff;
|
||||
--info: #989898;
|
||||
--info-foreground: #000000;
|
||||
--busy: #8f8f8f;
|
||||
--busy-foreground: #000000;
|
||||
--busy-ink: #8f8f8f;
|
||||
--border: #323232;
|
||||
--input: #323232;
|
||||
--ring: #989898;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #989898;
|
||||
--chart-secondary: #747474;
|
||||
--status-success: #8e8e8e;
|
||||
--status-warning: #b9b9b9;
|
||||
--status-in-progress: #989898;
|
||||
--page-bg: #000000;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(0 0 0 / 0.72);
|
||||
--panel-border: rgb(50 50 50 / 0.9);
|
||||
--panel-border-bare: rgb(50 50 50 / 0.55);
|
||||
--panel-raised-bg: rgb(0 0 0 / 0.95);
|
||||
--panel-raised-border: rgb(50 50 50 / 1);
|
||||
--panel-accent: #989898;
|
||||
--panel-header-bg: rgb(18 18 18 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #000000;
|
||||
--glass-bg: rgb(0 0 0 / 0.55);
|
||||
--glass-border: rgb(50 50 50 / 0.7);
|
||||
--dock-bg: rgb(0 0 0 / 0.7);
|
||||
--dock-border: rgb(50 50 50 / 0.8);
|
||||
--dock-tooltip-bg: #121212;
|
||||
--header-bg: rgb(0 0 0 / 0.8);
|
||||
--header-border: rgb(50 50 50 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(115 115 115 / 0.07);
|
||||
--card-grid-color: rgb(115 115 115 / 0.05);
|
||||
--panel-grid-color: rgb(115 115 115 / 0.06);
|
||||
--scrollbar-thumb: rgb(38 38 38 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(38 38 38 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(38 38 38 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(38 38 38 / 0.7);
|
||||
--brand: #989898;
|
||||
--brand-foreground: #000000;
|
||||
--brand-primary: #989898;
|
||||
--brand-accent: #585858;
|
||||
--brand-warm: #8f8f8f;
|
||||
--brand-deep: #000000;
|
||||
--brand-muted: #262626;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #000000;
|
||||
--naturegreen: #8e8e8e;
|
||||
--naturegreen-foreground: #000000;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #585858;
|
||||
--duck-yellow: #b9b9b9;
|
||||
--duck-orange: #8f8f8f;
|
||||
--duck-forest: #8e8e8e;
|
||||
--duck-beige: #1a1a1a;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Blackwall — 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/rlind3r/omarchy-blackwall-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='blackwall'] {
|
||||
--background: #0d0d0d;
|
||||
--foreground: #ff3535;
|
||||
--card: #171717;
|
||||
--card-foreground: #ff3535;
|
||||
--popover: #171717;
|
||||
--popover-foreground: #ff3535;
|
||||
--muted: #272727;
|
||||
--muted-foreground: #d27676;
|
||||
--accent: #272727;
|
||||
--accent-foreground: #ff4e4e;
|
||||
--primary: #ff3535;
|
||||
--primary-foreground: #0d0d0d;
|
||||
--secondary: #272727;
|
||||
--secondary-foreground: #ff4e4e;
|
||||
--cta: #ff3535;
|
||||
--cta-foreground: #0d0d0d;
|
||||
--ctahover: #ff4d4d;
|
||||
--success: #ff3535;
|
||||
--success-foreground: #0d0d0d;
|
||||
--warning: #451d1d;
|
||||
--warning-foreground: #ff5353;
|
||||
--destructive: #ff0000;
|
||||
--destructive-foreground: #0d0d0d;
|
||||
--info: #ff3535;
|
||||
--info-foreground: #0d0d0d;
|
||||
--busy: #a20f0f;
|
||||
--busy-foreground: #c3c3c3;
|
||||
--busy-ink: #c05d5d;
|
||||
--border: #441d1d;
|
||||
--input: #492323;
|
||||
--ring: #ff3535;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #ff3535;
|
||||
--chart-secondary: #ff3535;
|
||||
--status-success: #ff3535;
|
||||
--status-warning: #451d1d;
|
||||
--status-in-progress: #ff3535;
|
||||
--page-bg: #0d0d0d;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(23 23 23 / 0.72);
|
||||
--panel-border: rgb(68 29 29 / 0.9);
|
||||
--panel-border-bare: rgb(68 29 29 / 0.55);
|
||||
--panel-raised-bg: rgb(23 23 23 / 0.95);
|
||||
--panel-raised-border: rgb(68 29 29 / 1);
|
||||
--panel-accent: #ff3535;
|
||||
--panel-header-bg: rgb(39 39 39 / 0.6);
|
||||
--panel-header-fg: #ff3535;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #171717;
|
||||
--glass-bg: rgb(23 23 23 / 0.55);
|
||||
--glass-border: rgb(68 29 29 / 0.7);
|
||||
--dock-bg: rgb(23 23 23 / 0.7);
|
||||
--dock-border: rgb(68 29 29 / 0.8);
|
||||
--dock-tooltip-bg: #272727;
|
||||
--header-bg: rgb(23 23 23 / 0.8);
|
||||
--header-border: rgb(68 29 29 / 0.9);
|
||||
--header-fg: #ff3535;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(153 81 81 / 0.07);
|
||||
--card-grid-color: rgb(153 81 81 / 0.05);
|
||||
--panel-grid-color: rgb(153 81 81 / 0.06);
|
||||
--scrollbar-thumb: rgb(147 39 39 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(147 39 39 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(147 39 39 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(147 39 39 / 0.7);
|
||||
--brand: #ff3535;
|
||||
--brand-foreground: #0d0d0d;
|
||||
--brand-primary: #ff3535;
|
||||
--brand-accent: #742323;
|
||||
--brand-warm: #a20f0f;
|
||||
--brand-deep: #0d0d0d;
|
||||
--brand-muted: #932727;
|
||||
--ink: #ff3535;
|
||||
--surface-warm: #171717;
|
||||
--naturegreen: #ff3535;
|
||||
--naturegreen-foreground: #0d0d0d;
|
||||
--duck-dark: #ff3535;
|
||||
--duck-teal: #742323;
|
||||
--duck-yellow: #451d1d;
|
||||
--duck-orange: #a20f0f;
|
||||
--duck-forest: #ff3535;
|
||||
--duck-beige: #2e1a1a;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Blueridge — 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/hipsterusername/omarchy-blueridge-dark-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='blueridge'] {
|
||||
--background: #0f1216;
|
||||
--foreground: #e8e6e3;
|
||||
--card: #1c2128;
|
||||
--card-foreground: #e8e6e3;
|
||||
--popover: #1c2128;
|
||||
--popover-foreground: #e8e6e3;
|
||||
--muted: #2c3137;
|
||||
--muted-foreground: #ababab;
|
||||
--accent: #2c3137;
|
||||
--accent-foreground: #e8e6e3;
|
||||
--primary: #9bdede;
|
||||
--primary-foreground: #0f1216;
|
||||
--secondary: #2c3137;
|
||||
--secondary-foreground: #e8e6e3;
|
||||
--cta: #9bdede;
|
||||
--cta-foreground: #0f1216;
|
||||
--ctahover: #a7e2e2;
|
||||
--success: #7ea67c;
|
||||
--success-foreground: #0f1216;
|
||||
--warning: #d4af37;
|
||||
--warning-foreground: #0f1216;
|
||||
--destructive: #cd9575;
|
||||
--destructive-foreground: #0f1216;
|
||||
--info: #6b8cae;
|
||||
--info-foreground: #0f1216;
|
||||
--busy: #d1a256;
|
||||
--busy-foreground: #0f1216;
|
||||
--busy-ink: #d1a256;
|
||||
--border: #44484d;
|
||||
--input: #44484d;
|
||||
--ring: #9bdede;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #9bdede;
|
||||
--chart-secondary: #9b8aa0;
|
||||
--status-success: #7ea67c;
|
||||
--status-warning: #d4af37;
|
||||
--status-in-progress: #6b8cae;
|
||||
--page-bg: #0f1216;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(28 33 40 / 0.72);
|
||||
--panel-border: rgb(68 72 77 / 0.9);
|
||||
--panel-border-bare: rgb(68 72 77 / 0.55);
|
||||
--panel-raised-bg: rgb(28 33 40 / 0.95);
|
||||
--panel-raised-border: rgb(68 72 77 / 1);
|
||||
--panel-accent: #9bdede;
|
||||
--panel-header-bg: rgb(44 49 55 / 0.6);
|
||||
--panel-header-fg: #e8e6e3;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1c2128;
|
||||
--glass-bg: rgb(28 33 40 / 0.55);
|
||||
--glass-border: rgb(68 72 77 / 0.7);
|
||||
--dock-bg: rgb(28 33 40 / 0.7);
|
||||
--dock-border: rgb(68 72 77 / 0.8);
|
||||
--dock-tooltip-bg: #2c3137;
|
||||
--header-bg: rgb(28 33 40 / 0.8);
|
||||
--header-border: rgb(68 72 77 / 0.9);
|
||||
--header-fg: #e8e6e3;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(120 122 124 / 0.07);
|
||||
--card-grid-color: rgb(120 122 124 / 0.05);
|
||||
--panel-grid-color: rgb(120 122 124 / 0.06);
|
||||
--scrollbar-thumb: rgb(74 85 104 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(74 85 104 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(74 85 104 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(74 85 104 / 0.7);
|
||||
--brand: #9bdede;
|
||||
--brand-foreground: #0f1216;
|
||||
--brand-primary: #9bdede;
|
||||
--brand-accent: #7ec8c8;
|
||||
--brand-warm: #d1a256;
|
||||
--brand-deep: #0f1216;
|
||||
--brand-muted: #4a5568;
|
||||
--ink: #e8e6e3;
|
||||
--surface-warm: #1c2128;
|
||||
--naturegreen: #7ea67c;
|
||||
--naturegreen-foreground: #0f1216;
|
||||
--duck-dark: #e8e6e3;
|
||||
--duck-teal: #7ec8c8;
|
||||
--duck-yellow: #d4af37;
|
||||
--duck-orange: #d1a256;
|
||||
--duck-forest: #7ea67c;
|
||||
--duck-beige: #30353b;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Brutalism — 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/bjornramberg/omarchy-brutalism-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='brutalism'] {
|
||||
--background: #0a0a0a;
|
||||
--foreground: #ded3d3;
|
||||
--card: #121212;
|
||||
--card-foreground: #ded3d3;
|
||||
--popover: #121212;
|
||||
--popover-foreground: #ded3d3;
|
||||
--muted: #232323;
|
||||
--muted-foreground: #a19999;
|
||||
--accent: #232323;
|
||||
--accent-foreground: #ded3d3;
|
||||
--primary: #eb9696;
|
||||
--primary-foreground: #0a0a0a;
|
||||
--secondary: #232323;
|
||||
--secondary-foreground: #ded3d3;
|
||||
--cta: #eb9696;
|
||||
--cta-foreground: #0a0a0a;
|
||||
--ctahover: #eda3a3;
|
||||
--success: #630a0a;
|
||||
--success-foreground: #ded3d3;
|
||||
--warning: #cc7a7a;
|
||||
--warning-foreground: #0a0a0a;
|
||||
--destructive: #450404;
|
||||
--destructive-foreground: #ded3d3;
|
||||
--info: #ce5757;
|
||||
--info-foreground: #0a0a0a;
|
||||
--busy: #893f3f;
|
||||
--busy-foreground: #ded3d3;
|
||||
--busy-ink: #a46a6a;
|
||||
--border: #3a3838;
|
||||
--input: #3a3838;
|
||||
--ring: #eb9696;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #eb9696;
|
||||
--chart-secondary: #c87777;
|
||||
--status-success: #630a0a;
|
||||
--status-warning: #cc7a7a;
|
||||
--status-in-progress: #ce5757;
|
||||
--page-bg: #0a0a0a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(18 18 18 / 0.72);
|
||||
--panel-border: rgb(58 56 56 / 0.9);
|
||||
--panel-border-bare: rgb(58 56 56 / 0.55);
|
||||
--panel-raised-bg: rgb(18 18 18 / 0.95);
|
||||
--panel-raised-border: rgb(58 56 56 / 1);
|
||||
--panel-accent: #eb9696;
|
||||
--panel-header-bg: rgb(35 35 35 / 0.6);
|
||||
--panel-header-fg: #ded3d3;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #121212;
|
||||
--glass-bg: rgb(18 18 18 / 0.55);
|
||||
--glass-border: rgb(58 56 56 / 0.7);
|
||||
--dock-bg: rgb(18 18 18 / 0.7);
|
||||
--dock-border: rgb(58 56 56 / 0.8);
|
||||
--dock-tooltip-bg: #232323;
|
||||
--header-bg: rgb(18 18 18 / 0.8);
|
||||
--header-border: rgb(58 56 56 / 0.9);
|
||||
--header-fg: #ded3d3;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(110 105 105 / 0.07);
|
||||
--card-grid-color: rgb(110 105 105 / 0.05);
|
||||
--panel-grid-color: rgb(110 105 105 / 0.06);
|
||||
--scrollbar-thumb: rgb(184 148 148 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(184 148 148 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(184 148 148 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(184 148 148 / 0.7);
|
||||
--brand: #eb9696;
|
||||
--brand-foreground: #0a0a0a;
|
||||
--brand-primary: #eb9696;
|
||||
--brand-accent: #d48484;
|
||||
--brand-warm: #893f3f;
|
||||
--brand-deep: #0a0a0a;
|
||||
--brand-muted: #b89494;
|
||||
--ink: #ded3d3;
|
||||
--surface-warm: #121212;
|
||||
--naturegreen: #630a0a;
|
||||
--naturegreen-foreground: #ded3d3;
|
||||
--duck-dark: #ded3d3;
|
||||
--duck-teal: #d48484;
|
||||
--duck-yellow: #cc7a7a;
|
||||
--duck-orange: #893f3f;
|
||||
--duck-forest: #630a0a;
|
||||
--duck-beige: #262525;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Caroline Skyline — 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-caroline-skyline-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='caroline-skyline'] {
|
||||
--background: #0f0a0a;
|
||||
--foreground: #e3a68c;
|
||||
--card: #1c1213;
|
||||
--card-foreground: #e3a68c;
|
||||
--popover: #1c1213;
|
||||
--popover-foreground: #e3a68c;
|
||||
--muted: #2c2324;
|
||||
--muted-foreground: #ae8473;
|
||||
--accent: #2c2324;
|
||||
--accent-foreground: #e3a68c;
|
||||
--primary: #6b6566;
|
||||
--primary-foreground: #e7e7e7;
|
||||
--secondary: #2c2324;
|
||||
--secondary-foreground: #e3a68c;
|
||||
--cta: #6b6566;
|
||||
--cta-foreground: #e7e7e7;
|
||||
--ctahover: #7d7778;
|
||||
--success: #806c61;
|
||||
--success-foreground: #f9f9f9;
|
||||
--warning: #f28171;
|
||||
--warning-foreground: #0f0a0a;
|
||||
--destructive: #c24f57;
|
||||
--destructive-foreground: #ffffff;
|
||||
--info: #684c59;
|
||||
--info-foreground: #ebbeac;
|
||||
--busy: #da6864;
|
||||
--busy-foreground: #0f0a0a;
|
||||
--busy-ink: #da6864;
|
||||
--border: #432f2b;
|
||||
--input: #432f2b;
|
||||
--ring: #6b6566;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #6b6566;
|
||||
--chart-secondary: #a63650;
|
||||
--status-success: #806c61;
|
||||
--status-warning: #f28171;
|
||||
--status-in-progress: #684c59;
|
||||
--page-bg: #0f0a0a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(28 18 19 / 0.72);
|
||||
--panel-border: rgb(67 47 43 / 0.9);
|
||||
--panel-border-bare: rgb(67 47 43 / 0.55);
|
||||
--panel-raised-bg: rgb(28 18 19 / 0.95);
|
||||
--panel-raised-border: rgb(67 47 43 / 1);
|
||||
--panel-accent: #6b6566;
|
||||
--panel-header-bg: rgb(44 35 36 / 0.6);
|
||||
--panel-header-fg: #e3a68c;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1c1213;
|
||||
--glass-bg: rgb(28 18 19 / 0.55);
|
||||
--glass-border: rgb(67 47 43 / 0.7);
|
||||
--dock-bg: rgb(28 18 19 / 0.7);
|
||||
--dock-border: rgb(67 47 43 / 0.8);
|
||||
--dock-tooltip-bg: #2c2324;
|
||||
--header-bg: rgb(28 18 19 / 0.8);
|
||||
--header-border: rgb(67 47 43 / 0.9);
|
||||
--header-fg: #e3a68c;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(125 94 82 / 0.07);
|
||||
--card-grid-color: rgb(125 94 82 / 0.05);
|
||||
--panel-grid-color: rgb(125 94 82 / 0.06);
|
||||
--scrollbar-thumb: rgb(109 71 69 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(109 71 69 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(109 71 69 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(109 71 69 / 0.7);
|
||||
--brand: #6b6566;
|
||||
--brand-foreground: #e7e7e7;
|
||||
--brand-primary: #6b6566;
|
||||
--brand-accent: #6b6566;
|
||||
--brand-warm: #da6864;
|
||||
--brand-deep: #0f0a0a;
|
||||
--brand-muted: #6d4745;
|
||||
--ink: #e3a68c;
|
||||
--surface-warm: #1c1213;
|
||||
--naturegreen: #806c61;
|
||||
--naturegreen-foreground: #f9f9f9;
|
||||
--duck-dark: #e3a68c;
|
||||
--duck-teal: #6b6566;
|
||||
--duck-yellow: #f28171;
|
||||
--duck-orange: #da6864;
|
||||
--duck-forest: #806c61;
|
||||
--duck-beige: #30211f;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Catppuccin Mocha — 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/KidDogDad/omarchy-catppuccin-mocha-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='catppuccin-mocha'] {
|
||||
--background: #111119;
|
||||
--foreground: #cdd6f4;
|
||||
--card: #1e1e2e;
|
||||
--card-foreground: #cdd6f4;
|
||||
--popover: #1e1e2e;
|
||||
--popover-foreground: #cdd6f4;
|
||||
--muted: #2e2e3d;
|
||||
--muted-foreground: #999fb9;
|
||||
--accent: #2e2e3d;
|
||||
--accent-foreground: #cdd6f4;
|
||||
--primary: #94e2d5;
|
||||
--primary-foreground: #111119;
|
||||
--secondary: #2e2e3d;
|
||||
--secondary-foreground: #cdd6f4;
|
||||
--cta: #94e2d5;
|
||||
--cta-foreground: #111119;
|
||||
--ctahover: #a1e5da;
|
||||
--success: #a6e3a1;
|
||||
--success-foreground: #111119;
|
||||
--warning: #f9e2af;
|
||||
--warning-foreground: #111119;
|
||||
--destructive: #f38ba8;
|
||||
--destructive-foreground: #111119;
|
||||
--info: #89b4fa;
|
||||
--info-foreground: #111119;
|
||||
--busy: #f6b7ac;
|
||||
--busy-foreground: #111119;
|
||||
--busy-ink: #f6b7ac;
|
||||
--border: #404255;
|
||||
--input: #404255;
|
||||
--ring: #94e2d5;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #94e2d5;
|
||||
--chart-secondary: #f5c2e7;
|
||||
--status-success: #a6e3a1;
|
||||
--status-warning: #f9e2af;
|
||||
--status-in-progress: #89b4fa;
|
||||
--page-bg: #111119;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(30 30 46 / 0.72);
|
||||
--panel-border: rgb(64 66 85 / 0.9);
|
||||
--panel-border-bare: rgb(64 66 85 / 0.55);
|
||||
--panel-raised-bg: rgb(30 30 46 / 0.95);
|
||||
--panel-raised-border: rgb(64 66 85 / 1);
|
||||
--panel-accent: #94e2d5;
|
||||
--panel-header-bg: rgb(46 46 61 / 0.6);
|
||||
--panel-header-fg: #cdd6f4;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1e1e2e;
|
||||
--glass-bg: rgb(30 30 46 / 0.55);
|
||||
--glass-border: rgb(64 66 85 / 0.7);
|
||||
--dock-bg: rgb(30 30 46 / 0.7);
|
||||
--dock-border: rgb(64 66 85 / 0.8);
|
||||
--dock-tooltip-bg: #2e2e3d;
|
||||
--header-bg: rgb(30 30 46 / 0.8);
|
||||
--header-border: rgb(64 66 85 / 0.9);
|
||||
--header-fg: #cdd6f4;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(109 113 135 / 0.07);
|
||||
--card-grid-color: rgb(109 113 135 / 0.05);
|
||||
--panel-grid-color: rgb(109 113 135 / 0.06);
|
||||
--scrollbar-thumb: rgb(69 71 90 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(69 71 90 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(69 71 90 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(69 71 90 / 0.7);
|
||||
--brand: #94e2d5;
|
||||
--brand-foreground: #111119;
|
||||
--brand-primary: #94e2d5;
|
||||
--brand-accent: #94e2d5;
|
||||
--brand-warm: #f6b7ac;
|
||||
--brand-deep: #111119;
|
||||
--brand-muted: #45475a;
|
||||
--ink: #cdd6f4;
|
||||
--surface-warm: #1e1e2e;
|
||||
--naturegreen: #a6e3a1;
|
||||
--naturegreen-foreground: #111119;
|
||||
--duck-dark: #cdd6f4;
|
||||
--duck-teal: #94e2d5;
|
||||
--duck-yellow: #f9e2af;
|
||||
--duck-orange: #f6b7ac;
|
||||
--duck-forest: #a6e3a1;
|
||||
--duck-beige: #303042;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
City 783 — 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-city-783-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='city-783'] {
|
||||
--background: #0d0e11;
|
||||
--foreground: #b9bec6;
|
||||
--card: #181a1f;
|
||||
--card-foreground: #b9bec6;
|
||||
--popover: #181a1f;
|
||||
--popover-foreground: #b9bec6;
|
||||
--muted: #282a2f;
|
||||
--muted-foreground: #8f9399;
|
||||
--accent: #282a2f;
|
||||
--accent-foreground: #b9bec6;
|
||||
--primary: #dce0e6;
|
||||
--primary-foreground: #0d0e11;
|
||||
--secondary: #282a2f;
|
||||
--secondary-foreground: #b9bec6;
|
||||
--cta: #dce0e6;
|
||||
--cta-foreground: #0d0e11;
|
||||
--ctahover: #e0e4e9;
|
||||
--success: #dce0e6;
|
||||
--success-foreground: #0d0e11;
|
||||
--warning: #9e1a1a;
|
||||
--warning-foreground: #bec3ca;
|
||||
--destructive: #e53939;
|
||||
--destructive-foreground: #0d0e11;
|
||||
--info: #ad2222;
|
||||
--info-foreground: #ced2d7;
|
||||
--busy: #c22a2a;
|
||||
--busy-foreground: #e7e7e7;
|
||||
--busy-ink: #ce5555;
|
||||
--border: #383a40;
|
||||
--input: #383a40;
|
||||
--ring: #dce0e6;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #dce0e6;
|
||||
--chart-secondary: #c3c8d0;
|
||||
--status-success: #dce0e6;
|
||||
--status-warning: #9e1a1a;
|
||||
--status-in-progress: #ad2222;
|
||||
--page-bg: #0d0e11;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(24 26 31 / 0.72);
|
||||
--panel-border: rgb(56 58 64 / 0.9);
|
||||
--panel-border-bare: rgb(56 58 64 / 0.55);
|
||||
--panel-raised-bg: rgb(24 26 31 / 0.95);
|
||||
--panel-raised-border: rgb(56 58 64 / 1);
|
||||
--panel-accent: #dce0e6;
|
||||
--panel-header-bg: rgb(40 42 47 / 0.6);
|
||||
--panel-header-fg: #b9bec6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #181a1f;
|
||||
--glass-bg: rgb(24 26 31 / 0.55);
|
||||
--glass-border: rgb(56 58 64 / 0.7);
|
||||
--dock-bg: rgb(24 26 31 / 0.7);
|
||||
--dock-border: rgb(56 58 64 / 0.8);
|
||||
--dock-tooltip-bg: #282a2f;
|
||||
--header-bg: rgb(24 26 31 / 0.8);
|
||||
--header-border: rgb(56 58 64 / 0.9);
|
||||
--header-fg: #b9bec6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(100 104 110 / 0.07);
|
||||
--card-grid-color: rgb(100 104 110 / 0.05);
|
||||
--panel-grid-color: rgb(100 104 110 / 0.06);
|
||||
--scrollbar-thumb: rgb(75 81 91 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(75 81 91 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(75 81 91 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(75 81 91 / 0.7);
|
||||
--brand: #dce0e6;
|
||||
--brand-foreground: #0d0e11;
|
||||
--brand-primary: #dce0e6;
|
||||
--brand-accent: #8f949c;
|
||||
--brand-warm: #c22a2a;
|
||||
--brand-deep: #0d0e11;
|
||||
--brand-muted: #4b515b;
|
||||
--ink: #b9bec6;
|
||||
--surface-warm: #181a1f;
|
||||
--naturegreen: #dce0e6;
|
||||
--naturegreen-foreground: #0d0e11;
|
||||
--duck-dark: #b9bec6;
|
||||
--duck-teal: #8f949c;
|
||||
--duck-yellow: #9e1a1a;
|
||||
--duck-orange: #c22a2a;
|
||||
--duck-forest: #dce0e6;
|
||||
--duck-beige: #282a30;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Copper Night — 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/hembramnishant50-glitch/omarchy-coppernight-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='copper-night'] {
|
||||
--background: #09090f;
|
||||
--foreground: #cdd6f4;
|
||||
--card: #11111b;
|
||||
--card-foreground: #cdd6f4;
|
||||
--popover: #11111b;
|
||||
--popover-foreground: #cdd6f4;
|
||||
--muted: #22222b;
|
||||
--muted-foreground: #959bb3;
|
||||
--accent: #22222b;
|
||||
--accent-foreground: #cdd6f4;
|
||||
--primary: #94e2d5;
|
||||
--primary-foreground: #09090f;
|
||||
--secondary: #22222b;
|
||||
--secondary-foreground: #cdd6f4;
|
||||
--cta: #94e2d5;
|
||||
--cta-foreground: #09090f;
|
||||
--ctahover: #a1e5da;
|
||||
--success: #a6e3a1;
|
||||
--success-foreground: #09090f;
|
||||
--warning: #f9e2af;
|
||||
--warning-foreground: #09090f;
|
||||
--destructive: #f38ba8;
|
||||
--destructive-foreground: #09090f;
|
||||
--info: #89b4fa;
|
||||
--info-foreground: #09090f;
|
||||
--busy: #f6b7ac;
|
||||
--busy-foreground: #09090f;
|
||||
--busy-ink: #f6b7ac;
|
||||
--border: #363846;
|
||||
--input: #363846;
|
||||
--ring: #94e2d5;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #94e2d5;
|
||||
--chart-secondary: #cba6f7;
|
||||
--status-success: #a6e3a1;
|
||||
--status-warning: #f9e2af;
|
||||
--status-in-progress: #89b4fa;
|
||||
--page-bg: #09090f;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(17 17 27 / 0.72);
|
||||
--panel-border: rgb(54 56 70 / 0.9);
|
||||
--panel-border-bare: rgb(54 56 70 / 0.55);
|
||||
--panel-raised-bg: rgb(17 17 27 / 0.95);
|
||||
--panel-raised-border: rgb(54 56 70 / 1);
|
||||
--panel-accent: #94e2d5;
|
||||
--panel-header-bg: rgb(34 34 43 / 0.6);
|
||||
--panel-header-fg: #cdd6f4;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #11111b;
|
||||
--glass-bg: rgb(17 17 27 / 0.55);
|
||||
--glass-border: rgb(54 56 70 / 0.7);
|
||||
--dock-bg: rgb(17 17 27 / 0.7);
|
||||
--dock-border: rgb(54 56 70 / 0.8);
|
||||
--dock-tooltip-bg: #22222b;
|
||||
--header-bg: rgb(17 17 27 / 0.8);
|
||||
--header-border: rgb(54 56 70 / 0.9);
|
||||
--header-fg: #cdd6f4;
|
||||
--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(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: #09090f;
|
||||
--brand-primary: #94e2d5;
|
||||
--brand-accent: #94e2d5;
|
||||
--brand-warm: #f6b7ac;
|
||||
--brand-deep: #09090f;
|
||||
--brand-muted: #585b70;
|
||||
--ink: #cdd6f4;
|
||||
--surface-warm: #11111b;
|
||||
--naturegreen: #a6e3a1;
|
||||
--naturegreen-foreground: #09090f;
|
||||
--duck-dark: #cdd6f4;
|
||||
--duck-teal: #94e2d5;
|
||||
--duck-yellow: #f9e2af;
|
||||
--duck-orange: #f6b7ac;
|
||||
--duck-forest: #a6e3a1;
|
||||
--duck-beige: #242531;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Cpunk — 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/stannorbvb-cmd/cpunk (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='cpunk'] {
|
||||
--background: #020202;
|
||||
--foreground: #ffffff;
|
||||
--card: #040303;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #040303;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #161515;
|
||||
--muted-foreground: #b4b3b3;
|
||||
--accent: #161515;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #e8e9e9;
|
||||
--primary-foreground: #020202;
|
||||
--secondary: #161515;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #e8e9e9;
|
||||
--cta-foreground: #020202;
|
||||
--ctahover: #ebecec;
|
||||
--success: #d1d2d1;
|
||||
--success-foreground: #020202;
|
||||
--warning: #fef348;
|
||||
--warning-foreground: #020202;
|
||||
--destructive: #f82a2a;
|
||||
--destructive-foreground: #020202;
|
||||
--info: #aaacac;
|
||||
--info-foreground: #020202;
|
||||
--busy: #fb8f39;
|
||||
--busy-foreground: #020202;
|
||||
--busy-ink: #fb8f39;
|
||||
--border: #353434;
|
||||
--input: #353434;
|
||||
--ring: #e8e9e9;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #e8e9e9;
|
||||
--chart-secondary: #f76e78;
|
||||
--status-success: #d1d2d1;
|
||||
--status-warning: #fef348;
|
||||
--status-in-progress: #aaacac;
|
||||
--page-bg: #020202;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(4 3 3 / 0.72);
|
||||
--panel-border: rgb(53 52 52 / 0.9);
|
||||
--panel-border-bare: rgb(53 52 52 / 0.55);
|
||||
--panel-raised-bg: rgb(4 3 3 / 0.95);
|
||||
--panel-raised-border: rgb(53 52 52 / 1);
|
||||
--panel-accent: #e8e9e9;
|
||||
--panel-header-bg: rgb(22 21 21 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #040303;
|
||||
--glass-bg: rgb(4 3 3 / 0.55);
|
||||
--glass-border: rgb(53 52 52 / 0.7);
|
||||
--dock-bg: rgb(4 3 3 / 0.7);
|
||||
--dock-border: rgb(53 52 52 / 0.8);
|
||||
--dock-tooltip-bg: #161515;
|
||||
--header-bg: rgb(4 3 3 / 0.8);
|
||||
--header-border: rgb(53 52 52 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(117 116 116 / 0.07);
|
||||
--card-grid-color: rgb(117 116 116 / 0.05);
|
||||
--panel-grid-color: rgb(117 116 116 / 0.06);
|
||||
--scrollbar-thumb: rgb(127 110 110 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(127 110 110 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(127 110 110 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(127 110 110 / 0.7);
|
||||
--brand: #e8e9e9;
|
||||
--brand-foreground: #020202;
|
||||
--brand-primary: #e8e9e9;
|
||||
--brand-accent: #babbbb;
|
||||
--brand-warm: #fb8f39;
|
||||
--brand-deep: #020202;
|
||||
--brand-muted: #7f6e6e;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #040303;
|
||||
--naturegreen: #d1d2d1;
|
||||
--naturegreen-foreground: #020202;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #babbbb;
|
||||
--duck-yellow: #fef348;
|
||||
--duck-orange: #fb8f39;
|
||||
--duck-forest: #d1d2d1;
|
||||
--duck-beige: #1d1c1c;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Crimson — 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/tahfizhabib/omarchy-crimson-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='crimson'] {
|
||||
--background: #0e0c12;
|
||||
--foreground: #ffffff;
|
||||
--card: #1a1621;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #1a1621;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #2a2631;
|
||||
--muted-foreground: #bab9bc;
|
||||
--accent: #2a2631;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #e7e3ed;
|
||||
--primary-foreground: #0e0c12;
|
||||
--secondary: #2a2631;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #e7e3ed;
|
||||
--cta-foreground: #0e0c12;
|
||||
--ctahover: #eae6ef;
|
||||
--success: #e48a3e;
|
||||
--success-foreground: #0e0c12;
|
||||
--warning: #da884a;
|
||||
--warning-foreground: #0e0c12;
|
||||
--destructive: #b17777;
|
||||
--destructive-foreground: #0e0c12;
|
||||
--info: #9e96c0;
|
||||
--info-foreground: #0e0c12;
|
||||
--busy: #c68061;
|
||||
--busy-foreground: #0e0c12;
|
||||
--busy-ink: #c68061;
|
||||
--border: #47444c;
|
||||
--input: #47444c;
|
||||
--ring: #e7e3ed;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #e7e3ed;
|
||||
--chart-secondary: #bba7be;
|
||||
--status-success: #e48a3e;
|
||||
--status-warning: #da884a;
|
||||
--status-in-progress: #9e96c0;
|
||||
--page-bg: #0e0c12;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(26 22 33 / 0.72);
|
||||
--panel-border: rgb(71 68 76 / 0.9);
|
||||
--panel-border-bare: rgb(71 68 76 / 0.55);
|
||||
--panel-raised-bg: rgb(26 22 33 / 0.95);
|
||||
--panel-raised-border: rgb(71 68 76 / 1);
|
||||
--panel-accent: #e7e3ed;
|
||||
--panel-header-bg: rgb(42 38 49 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1a1621;
|
||||
--glass-bg: rgb(26 22 33 / 0.55);
|
||||
--glass-border: rgb(71 68 76 / 0.7);
|
||||
--dock-bg: rgb(26 22 33 / 0.7);
|
||||
--dock-border: rgb(71 68 76 / 0.8);
|
||||
--dock-tooltip-bg: #2a2631;
|
||||
--header-bg: rgb(26 22 33 / 0.8);
|
||||
--header-border: rgb(71 68 76 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(129 127 133 / 0.07);
|
||||
--card-grid-color: rgb(129 127 133 / 0.05);
|
||||
--panel-grid-color: rgb(129 127 133 / 0.06);
|
||||
--scrollbar-thumb: rgb(76 71 86 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(76 71 86 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(76 71 86 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(76 71 86 / 0.7);
|
||||
--brand: #e7e3ed;
|
||||
--brand-foreground: #0e0c12;
|
||||
--brand-primary: #e7e3ed;
|
||||
--brand-accent: #b7acc8;
|
||||
--brand-warm: #c68061;
|
||||
--brand-deep: #0e0c12;
|
||||
--brand-muted: #4c4756;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #1a1621;
|
||||
--naturegreen: #e48a3e;
|
||||
--naturegreen-foreground: #0e0c12;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #b7acc8;
|
||||
--duck-yellow: #da884a;
|
||||
--duck-orange: #c68061;
|
||||
--duck-forest: #e48a3e;
|
||||
--duck-beige: #312d37;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dark XP — 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/ITSZXY/dark-xp-omarchy (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='dark-xp'] {
|
||||
--background: #01060a;
|
||||
--foreground: #a7b0bb;
|
||||
--card: #010a13;
|
||||
--card-foreground: #a7b0bb;
|
||||
--popover: #010a13;
|
||||
--popover-foreground: #a7b0bb;
|
||||
--muted: #131b24;
|
||||
--muted-foreground: #7c848f;
|
||||
--accent: #131b24;
|
||||
--accent-foreground: #a7b0bb;
|
||||
--primary: #38619a;
|
||||
--primary-foreground: #dfe0e0;
|
||||
--secondary: #131b24;
|
||||
--secondary-foreground: #a7b0bb;
|
||||
--cta: #38619a;
|
||||
--cta-foreground: #dfe0e0;
|
||||
--ctahover: #5074a6;
|
||||
--success: #2d4764;
|
||||
--success-foreground: #abb4be;
|
||||
--warning: #575d67;
|
||||
--warning-foreground: #d9dada;
|
||||
--destructive: #01336a;
|
||||
--destructive-foreground: #a7b0bb;
|
||||
--info: #033c82;
|
||||
--info-foreground: #a7b0bb;
|
||||
--busy: #2c4869;
|
||||
--busy-foreground: #aeb6c0;
|
||||
--busy-ink: #667a92;
|
||||
--border: #212a34;
|
||||
--input: #212a34;
|
||||
--ring: #38619a;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #38619a;
|
||||
--chart-secondary: #034286;
|
||||
--status-success: #2d4764;
|
||||
--status-warning: #575d67;
|
||||
--status-in-progress: #033c82;
|
||||
--page-bg: #01060a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(1 10 19 / 0.72);
|
||||
--panel-border: rgb(33 42 52 / 0.9);
|
||||
--panel-border-bare: rgb(33 42 52 / 0.55);
|
||||
--panel-raised-bg: rgb(1 10 19 / 0.95);
|
||||
--panel-raised-border: rgb(33 42 52 / 1);
|
||||
--panel-accent: #38619a;
|
||||
--panel-header-bg: rgb(19 27 36 / 0.6);
|
||||
--panel-header-fg: #a7b0bb;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #010a13;
|
||||
--glass-bg: rgb(1 10 19 / 0.55);
|
||||
--glass-border: rgb(33 42 52 / 0.7);
|
||||
--dock-bg: rgb(1 10 19 / 0.7);
|
||||
--dock-border: rgb(33 42 52 / 0.8);
|
||||
--dock-tooltip-bg: #131b24;
|
||||
--header-bg: rgb(1 10 19 / 0.8);
|
||||
--header-border: rgb(33 42 52 / 0.9);
|
||||
--header-fg: #a7b0bb;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(85 94 103 / 0.07);
|
||||
--card-grid-color: rgb(85 94 103 / 0.05);
|
||||
--panel-grid-color: rgb(85 94 103 / 0.06);
|
||||
--scrollbar-thumb: rgb(116 123 130 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(116 123 130 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(116 123 130 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(116 123 130 / 0.7);
|
||||
--brand: #38619a;
|
||||
--brand-foreground: #dfe0e0;
|
||||
--brand-primary: #38619a;
|
||||
--brand-accent: #2e5995;
|
||||
--brand-warm: #2c4869;
|
||||
--brand-deep: #01060a;
|
||||
--brand-muted: #747b82;
|
||||
--ink: #a7b0bb;
|
||||
--surface-warm: #010a13;
|
||||
--naturegreen: #2d4764;
|
||||
--naturegreen-foreground: #abb4be;
|
||||
--duck-dark: #a7b0bb;
|
||||
--duck-teal: #2e5995;
|
||||
--duck-yellow: #575d67;
|
||||
--duck-orange: #2c4869;
|
||||
--duck-forest: #2d4764;
|
||||
--duck-beige: #121b24;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dayfox — 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-dayfox-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='dayfox'] {
|
||||
--background: #f6f2ee;
|
||||
--foreground: #3d2b5a;
|
||||
--card: #edeae6;
|
||||
--card-foreground: #3d2b5a;
|
||||
--popover: #edeae6;
|
||||
--popover-foreground: #3d2b5a;
|
||||
--muted: #e7e3e0;
|
||||
--muted-foreground: #6c5f7c;
|
||||
--accent: #e7e3e0;
|
||||
--accent-foreground: #3d2b5a;
|
||||
--primary: #2848a9;
|
||||
--primary-foreground: #dddad6;
|
||||
--secondary: #e7e3e0;
|
||||
--secondary-foreground: #3d2b5a;
|
||||
--cta: #2848a9;
|
||||
--cta-foreground: #dddad6;
|
||||
--ctahover: #233f95;
|
||||
--success: #396847;
|
||||
--success-foreground: #dddad6;
|
||||
--warning: #ac5402;
|
||||
--warning-foreground: #f0eeed;
|
||||
--destructive: #a5222f;
|
||||
--destructive-foreground: #dddad6;
|
||||
--info: #2848a9;
|
||||
--info-foreground: #dddad6;
|
||||
--busy: #a93b19;
|
||||
--busy-foreground: #dddad6;
|
||||
--busy-ink: #a93b19;
|
||||
--border: #d8d3d5;
|
||||
--input: #d3ced0;
|
||||
--ring: #2848a9;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #2848a9;
|
||||
--chart-secondary: #6e33ce;
|
||||
--status-success: #396847;
|
||||
--status-warning: #ac5402;
|
||||
--status-in-progress: #2848a9;
|
||||
--page-bg: #f6f2ee;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(237 234 230 / 0.72);
|
||||
--panel-border: rgb(216 211 213 / 0.9);
|
||||
--panel-border-bare: rgb(216 211 213 / 0.55);
|
||||
--panel-raised-bg: rgb(237 234 230 / 0.95);
|
||||
--panel-raised-border: rgb(216 211 213 / 1);
|
||||
--panel-accent: #2848a9;
|
||||
--panel-header-bg: rgb(231 227 224 / 0.6);
|
||||
--panel-header-fg: #3d2b5a;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #edeae6;
|
||||
--glass-bg: rgb(237 234 230 / 0.55);
|
||||
--glass-border: rgb(216 211 213 / 0.7);
|
||||
--dock-bg: rgb(237 234 230 / 0.7);
|
||||
--dock-border: rgb(216 211 213 / 0.8);
|
||||
--dock-tooltip-bg: #e7e3e0;
|
||||
--header-bg: rgb(237 234 230 / 0.8);
|
||||
--header-border: rgb(216 211 213 / 0.9);
|
||||
--header-fg: #3d2b5a;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(139 129 145 / 0.07);
|
||||
--card-grid-color: rgb(139 129 145 / 0.05);
|
||||
--panel-grid-color: rgb(139 129 145 / 0.06);
|
||||
--scrollbar-thumb: rgb(83 76 69 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(83 76 69 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(83 76 69 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(83 76 69 / 0.7);
|
||||
--brand: #2848a9;
|
||||
--brand-foreground: #dddad6;
|
||||
--brand-primary: #2848a9;
|
||||
--brand-accent: #287980;
|
||||
--brand-warm: #a93b19;
|
||||
--brand-deep: #e7e3e0;
|
||||
--brand-muted: #534c45;
|
||||
--ink: #3d2b5a;
|
||||
--surface-warm: #edeae6;
|
||||
--naturegreen: #396847;
|
||||
--naturegreen-foreground: #dddad6;
|
||||
--duck-dark: #3d2b5a;
|
||||
--duck-teal: #287980;
|
||||
--duck-yellow: #ac5402;
|
||||
--duck-orange: #a93b19;
|
||||
--duck-forest: #396847;
|
||||
--duck-beige: #dbd7d8;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dead Space — 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/atif-1402/omarchy-deadspace-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='dead-space'] {
|
||||
--background: #010101;
|
||||
--foreground: #ffffff;
|
||||
--card: #010101;
|
||||
--card-foreground: #ffffff;
|
||||
--popover: #010101;
|
||||
--popover-foreground: #ffffff;
|
||||
--muted: #131313;
|
||||
--muted-foreground: #b3b3b3;
|
||||
--accent: #131313;
|
||||
--accent-foreground: #ffffff;
|
||||
--primary: #f6f5f5;
|
||||
--primary-foreground: #010101;
|
||||
--secondary: #131313;
|
||||
--secondary-foreground: #ffffff;
|
||||
--cta: #f6f5f5;
|
||||
--cta-foreground: #010101;
|
||||
--ctahover: #f7f6f6;
|
||||
--success: #a49a9a;
|
||||
--success-foreground: #010101;
|
||||
--warning: #b2aaaa;
|
||||
--warning-foreground: #010101;
|
||||
--destructive: #958a8a;
|
||||
--destructive-foreground: #010101;
|
||||
--info: #c1baba;
|
||||
--info-foreground: #010101;
|
||||
--busy: #a49a9a;
|
||||
--busy-foreground: #010101;
|
||||
--busy-ink: #a49a9a;
|
||||
--border: #333333;
|
||||
--input: #333333;
|
||||
--ring: #f6f5f5;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #f6f5f5;
|
||||
--chart-secondary: #cfcaca;
|
||||
--status-success: #a49a9a;
|
||||
--status-warning: #b2aaaa;
|
||||
--status-in-progress: #c1baba;
|
||||
--page-bg: #010101;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(1 1 1 / 0.72);
|
||||
--panel-border: rgb(51 51 51 / 0.9);
|
||||
--panel-border-bare: rgb(51 51 51 / 0.55);
|
||||
--panel-raised-bg: rgb(1 1 1 / 0.95);
|
||||
--panel-raised-border: rgb(51 51 51 / 1);
|
||||
--panel-accent: #f6f5f5;
|
||||
--panel-header-bg: rgb(19 19 19 / 0.6);
|
||||
--panel-header-fg: #ffffff;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #010101;
|
||||
--glass-bg: rgb(1 1 1 / 0.55);
|
||||
--glass-border: rgb(51 51 51 / 0.7);
|
||||
--dock-bg: rgb(1 1 1 / 0.7);
|
||||
--dock-border: rgb(51 51 51 / 0.8);
|
||||
--dock-tooltip-bg: #131313;
|
||||
--header-bg: rgb(1 1 1 / 0.8);
|
||||
--header-border: rgb(51 51 51 / 0.9);
|
||||
--header-fg: #ffffff;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(115 115 115 / 0.07);
|
||||
--card-grid-color: rgb(115 115 115 / 0.05);
|
||||
--panel-grid-color: rgb(115 115 115 / 0.06);
|
||||
--scrollbar-thumb: rgb(221 219 219 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(221 219 219 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(221 219 219 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(221 219 219 / 0.7);
|
||||
--brand: #f6f5f5;
|
||||
--brand-foreground: #010101;
|
||||
--brand-primary: #f6f5f5;
|
||||
--brand-accent: #dedada;
|
||||
--brand-warm: #a49a9a;
|
||||
--brand-deep: #010101;
|
||||
--brand-muted: #dddbdb;
|
||||
--ink: #ffffff;
|
||||
--surface-warm: #010101;
|
||||
--naturegreen: #a49a9a;
|
||||
--naturegreen-foreground: #010101;
|
||||
--duck-dark: #ffffff;
|
||||
--duck-teal: #dedada;
|
||||
--duck-yellow: #b2aaaa;
|
||||
--duck-orange: #a49a9a;
|
||||
--duck-forest: #a49a9a;
|
||||
--duck-beige: #1a1a1a;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Deckard — 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-deckard-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='deckard'] {
|
||||
--background: #001128;
|
||||
--foreground: #eef1d7;
|
||||
--card: #001e49;
|
||||
--card-foreground: #eef1d7;
|
||||
--popover: #001e49;
|
||||
--popover-foreground: #eef1d7;
|
||||
--muted: #122e56;
|
||||
--muted-foreground: #a7b2ac;
|
||||
--accent: #122e56;
|
||||
--accent-foreground: #eef1d7;
|
||||
--primary: #d4fcfc;
|
||||
--primary-foreground: #001128;
|
||||
--secondary: #122e56;
|
||||
--secondary-foreground: #eef1d7;
|
||||
--cta: #d4fcfc;
|
||||
--cta-foreground: #001128;
|
||||
--ctahover: #d9fcfc;
|
||||
--success: #5a9f72;
|
||||
--success-foreground: #001128;
|
||||
--warning: #d2df6f;
|
||||
--warning-foreground: #001128;
|
||||
--destructive: #c24e13;
|
||||
--destructive-foreground: #f8f9ee;
|
||||
--info: #1fb1a5;
|
||||
--info-foreground: #001128;
|
||||
--busy: #ca9741;
|
||||
--busy-foreground: #001128;
|
||||
--busy-ink: #ca9741;
|
||||
--border: #2f4765;
|
||||
--input: #2f4765;
|
||||
--ring: #d4fcfc;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #d4fcfc;
|
||||
--chart-secondary: #4b64fd;
|
||||
--status-success: #5a9f72;
|
||||
--status-warning: #d2df6f;
|
||||
--status-in-progress: #1fb1a5;
|
||||
--page-bg: #001128;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(0 30 73 / 0.72);
|
||||
--panel-border: rgb(47 71 101 / 0.9);
|
||||
--panel-border-bare: rgb(47 71 101 / 0.55);
|
||||
--panel-raised-bg: rgb(0 30 73 / 0.95);
|
||||
--panel-raised-border: rgb(47 71 101 / 1);
|
||||
--panel-accent: #d4fcfc;
|
||||
--panel-header-bg: rgb(18 46 86 / 0.6);
|
||||
--panel-header-fg: #eef1d7;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #001e49;
|
||||
--glass-bg: rgb(0 30 73 / 0.55);
|
||||
--glass-border: rgb(47 71 101 / 0.7);
|
||||
--dock-bg: rgb(0 30 73 / 0.7);
|
||||
--dock-border: rgb(47 71 101 / 0.8);
|
||||
--dock-tooltip-bg: #122e56;
|
||||
--header-bg: rgb(0 30 73 / 0.8);
|
||||
--header-border: rgb(47 71 101 / 0.9);
|
||||
--header-fg: #eef1d7;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(107 125 137 / 0.07);
|
||||
--card-grid-color: rgb(107 125 137 / 0.05);
|
||||
--panel-grid-color: rgb(107 125 137 / 0.06);
|
||||
--scrollbar-thumb: rgb(63 116 192 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(63 116 192 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(63 116 192 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(63 116 192 / 0.7);
|
||||
--brand: #d4fcfc;
|
||||
--brand-foreground: #001128;
|
||||
--brand-primary: #d4fcfc;
|
||||
--brand-accent: #83f0f1;
|
||||
--brand-warm: #ca9741;
|
||||
--brand-deep: #001128;
|
||||
--brand-muted: #3f74c0;
|
||||
--ink: #eef1d7;
|
||||
--surface-warm: #001e49;
|
||||
--naturegreen: #5a9f72;
|
||||
--naturegreen-foreground: #001128;
|
||||
--duck-dark: #eef1d7;
|
||||
--duck-teal: #83f0f1;
|
||||
--duck-yellow: #d2df6f;
|
||||
--duck-orange: #ca9741;
|
||||
--duck-forest: #5a9f72;
|
||||
--duck-beige: #183357;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Delete — 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/delete-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='delete'] {
|
||||
--background: #090b11;
|
||||
--foreground: #f2f1fa;
|
||||
--card: #11141e;
|
||||
--card-foreground: #f2f1fa;
|
||||
--popover: #11141e;
|
||||
--popover-foreground: #f2f1fa;
|
||||
--muted: #22242e;
|
||||
--muted-foreground: #afafb8;
|
||||
--accent: #22242e;
|
||||
--accent-foreground: #f2f1fa;
|
||||
--primary: #e2e3ee;
|
||||
--primary-foreground: #090b11;
|
||||
--secondary: #22242e;
|
||||
--secondary-foreground: #f2f1fa;
|
||||
--cta: #e2e3ee;
|
||||
--cta-foreground: #090b11;
|
||||
--ctahover: #e5e6f0;
|
||||
--success: #7f86b8;
|
||||
--success-foreground: #090b11;
|
||||
--warning: #a19ece;
|
||||
--warning-foreground: #090b11;
|
||||
--destructive: #aba8d7;
|
||||
--destructive-foreground: #090b11;
|
||||
--info: #7575aa;
|
||||
--info-foreground: #090b11;
|
||||
--busy: #a6a3d3;
|
||||
--busy-foreground: #090b11;
|
||||
--busy-ink: #a6a3d3;
|
||||
--border: #3d3f49;
|
||||
--input: #3d3f49;
|
||||
--ring: #e2e3ee;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #e2e3ee;
|
||||
--chart-secondary: #9895c7;
|
||||
--status-success: #7f86b8;
|
||||
--status-warning: #a19ece;
|
||||
--status-in-progress: #7575aa;
|
||||
--page-bg: #090b11;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(17 20 30 / 0.72);
|
||||
--panel-border: rgb(61 63 73 / 0.9);
|
||||
--panel-border-bare: rgb(61 63 73 / 0.55);
|
||||
--panel-raised-bg: rgb(17 20 30 / 0.95);
|
||||
--panel-raised-border: rgb(61 63 73 / 1);
|
||||
--panel-accent: #e2e3ee;
|
||||
--panel-header-bg: rgb(34 36 46 / 0.6);
|
||||
--panel-header-fg: #f2f1fa;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #11141e;
|
||||
--glass-bg: rgb(17 20 30 / 0.55);
|
||||
--glass-border: rgb(61 63 73 / 0.7);
|
||||
--dock-bg: rgb(17 20 30 / 0.7);
|
||||
--dock-border: rgb(61 63 73 / 0.8);
|
||||
--dock-tooltip-bg: #22242e;
|
||||
--header-bg: rgb(17 20 30 / 0.8);
|
||||
--header-border: rgb(61 63 73 / 0.9);
|
||||
--header-fg: #f2f1fa;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(118 119 129 / 0.07);
|
||||
--card-grid-color: rgb(118 119 129 / 0.05);
|
||||
--panel-grid-color: rgb(118 119 129 / 0.06);
|
||||
--scrollbar-thumb: rgb(122 130 154 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(122 130 154 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(122 130 154 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(122 130 154 / 0.7);
|
||||
--brand: #e2e3ee;
|
||||
--brand-foreground: #090b11;
|
||||
--brand-primary: #e2e3ee;
|
||||
--brand-accent: #a9accb;
|
||||
--brand-warm: #a6a3d3;
|
||||
--brand-deep: #090b11;
|
||||
--brand-muted: #7a829a;
|
||||
--ink: #f2f1fa;
|
||||
--surface-warm: #11141e;
|
||||
--naturegreen: #7f86b8;
|
||||
--naturegreen-foreground: #090b11;
|
||||
--duck-dark: #f2f1fa;
|
||||
--duck-teal: #a9accb;
|
||||
--duck-yellow: #a19ece;
|
||||
--duck-orange: #a6a3d3;
|
||||
--duck-forest: #7f86b8;
|
||||
--duck-beige: #282a34;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Delorean — 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/jbnunn/omarchy-delorean-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='delorean'] {
|
||||
--background: #070112;
|
||||
--foreground: #f9f9f9;
|
||||
--card: #0d0221;
|
||||
--card-foreground: #f9f9f9;
|
||||
--popover: #0d0221;
|
||||
--popover-foreground: #f9f9f9;
|
||||
--muted: #1e1431;
|
||||
--muted-foreground: #b2afb8;
|
||||
--accent: #1e1431;
|
||||
--accent-foreground: #f9f9f9;
|
||||
--primary: #52fff7;
|
||||
--primary-foreground: #070112;
|
||||
--secondary: #1e1431;
|
||||
--secondary-foreground: #f9f9f9;
|
||||
--cta: #52fff7;
|
||||
--cta-foreground: #070112;
|
||||
--ctahover: #67fff8;
|
||||
--success: #05ffa1;
|
||||
--success-foreground: #070112;
|
||||
--warning: #fffb96;
|
||||
--warning-foreground: #070112;
|
||||
--destructive: #ff2a6d;
|
||||
--destructive-foreground: #070112;
|
||||
--info: #01cdfe;
|
||||
--info-foreground: #070112;
|
||||
--busy: #ff9382;
|
||||
--busy-foreground: #070112;
|
||||
--busy-ink: #ff9382;
|
||||
--border: #3b324b;
|
||||
--input: #3b324b;
|
||||
--ring: #52fff7;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #52fff7;
|
||||
--chart-secondary: #b967ff;
|
||||
--status-success: #05ffa1;
|
||||
--status-warning: #fffb96;
|
||||
--status-in-progress: #01cdfe;
|
||||
--page-bg: #070112;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(13 2 33 / 0.72);
|
||||
--panel-border: rgb(59 50 75 / 0.9);
|
||||
--panel-border-bare: rgb(59 50 75 / 0.55);
|
||||
--panel-raised-bg: rgb(13 2 33 / 0.95);
|
||||
--panel-raised-border: rgb(59 50 75 / 1);
|
||||
--panel-accent: #52fff7;
|
||||
--panel-header-bg: rgb(30 20 49 / 0.6);
|
||||
--panel-header-fg: #f9f9f9;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0d0221;
|
||||
--glass-bg: rgb(13 2 33 / 0.55);
|
||||
--glass-border: rgb(59 50 75 / 0.7);
|
||||
--dock-bg: rgb(13 2 33 / 0.7);
|
||||
--dock-border: rgb(59 50 75 / 0.8);
|
||||
--dock-tooltip-bg: #1e1431;
|
||||
--header-bg: rgb(13 2 33 / 0.8);
|
||||
--header-border: rgb(59 50 75 / 0.9);
|
||||
--header-fg: #f9f9f9;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(119 113 130 / 0.07);
|
||||
--card-grid-color: rgb(119 113 130 / 0.05);
|
||||
--panel-grid-color: rgb(119 113 130 / 0.06);
|
||||
--scrollbar-thumb: rgb(76 26 87 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(76 26 87 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(76 26 87 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(76 26 87 / 0.7);
|
||||
--brand: #52fff7;
|
||||
--brand-foreground: #070112;
|
||||
--brand-primary: #52fff7;
|
||||
--brand-accent: #05ffa1;
|
||||
--brand-warm: #ff9382;
|
||||
--brand-deep: #070112;
|
||||
--brand-muted: #4c1a57;
|
||||
--ink: #f9f9f9;
|
||||
--surface-warm: #0d0221;
|
||||
--naturegreen: #05ffa1;
|
||||
--naturegreen-foreground: #070112;
|
||||
--duck-dark: #f9f9f9;
|
||||
--duck-teal: #05ffa1;
|
||||
--duck-yellow: #fffb96;
|
||||
--duck-orange: #ff9382;
|
||||
--duck-forest: #05ffa1;
|
||||
--duck-beige: #251b37;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Demon — 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-demon-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='demon'] {
|
||||
--background: #080808;
|
||||
--foreground: #e0d4c2;
|
||||
--card: #0f0f0f;
|
||||
--card-foreground: #e0d4c2;
|
||||
--popover: #0f0f0f;
|
||||
--popover-foreground: #e0d4c2;
|
||||
--muted: #202020;
|
||||
--muted-foreground: #a1998c;
|
||||
--accent: #202020;
|
||||
--accent-foreground: #e0d4c2;
|
||||
--primary: #7a7d80;
|
||||
--primary-foreground: #080808;
|
||||
--secondary: #202020;
|
||||
--secondary-foreground: #e0d4c2;
|
||||
--cta: #7a7d80;
|
||||
--cta-foreground: #080808;
|
||||
--ctahover: #8a8d8f;
|
||||
--success: #586259;
|
||||
--success-foreground: #e3d8c8;
|
||||
--warning: #e24c00;
|
||||
--warning-foreground: #080808;
|
||||
--destructive: #bb1c1c;
|
||||
--destructive-foreground: #e3d8c8;
|
||||
--info: #5c624b;
|
||||
--info-foreground: #e3d8c8;
|
||||
--busy: #cf340e;
|
||||
--busy-foreground: #f3f3f3;
|
||||
--busy-ink: #d44826;
|
||||
--border: #383632;
|
||||
--input: #383632;
|
||||
--ring: #7a7d80;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #7a7d80;
|
||||
--chart-secondary: #655e56;
|
||||
--status-success: #586259;
|
||||
--status-warning: #e24c00;
|
||||
--status-in-progress: #5c624b;
|
||||
--page-bg: #080808;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(15 15 15 / 0.72);
|
||||
--panel-border: rgb(56 54 50 / 0.9);
|
||||
--panel-border-bare: rgb(56 54 50 / 0.55);
|
||||
--panel-raised-bg: rgb(15 15 15 / 0.95);
|
||||
--panel-raised-border: rgb(56 54 50 / 1);
|
||||
--panel-accent: #7a7d80;
|
||||
--panel-header-bg: rgb(32 32 32 / 0.6);
|
||||
--panel-header-fg: #e0d4c2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0f0f0f;
|
||||
--glass-bg: rgb(15 15 15 / 0.55);
|
||||
--glass-border: rgb(56 54 50 / 0.7);
|
||||
--dock-bg: rgb(15 15 15 / 0.7);
|
||||
--dock-border: rgb(56 54 50 / 0.8);
|
||||
--dock-tooltip-bg: #202020;
|
||||
--header-bg: rgb(15 15 15 / 0.8);
|
||||
--header-border: rgb(56 54 50 / 0.9);
|
||||
--header-fg: #e0d4c2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(109 104 96 / 0.07);
|
||||
--card-grid-color: rgb(109 104 96 / 0.05);
|
||||
--panel-grid-color: rgb(109 104 96 / 0.06);
|
||||
--scrollbar-thumb: rgb(107 104 103 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(107 104 103 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(107 104 103 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(107 104 103 / 0.7);
|
||||
--brand: #7a7d80;
|
||||
--brand-foreground: #080808;
|
||||
--brand-primary: #7a7d80;
|
||||
--brand-accent: #7a7d80;
|
||||
--brand-warm: #cf340e;
|
||||
--brand-deep: #080808;
|
||||
--brand-muted: #6b6867;
|
||||
--ink: #e0d4c2;
|
||||
--surface-warm: #0f0f0f;
|
||||
--naturegreen: #586259;
|
||||
--naturegreen-foreground: #e3d8c8;
|
||||
--duck-dark: #e0d4c2;
|
||||
--duck-teal: #7a7d80;
|
||||
--duck-yellow: #e24c00;
|
||||
--duck-orange: #cf340e;
|
||||
--duck-forest: #586259;
|
||||
--duck-beige: #242321;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dotrb — 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/dotsilva/omarchy-dotrb-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='dotrb'] {
|
||||
--background: #0a0a0a;
|
||||
--foreground: #f5f5f5;
|
||||
--card: #121212;
|
||||
--card-foreground: #f5f5f5;
|
||||
--popover: #121212;
|
||||
--popover-foreground: #f5f5f5;
|
||||
--muted: #232323;
|
||||
--muted-foreground: #b1b1b1;
|
||||
--accent: #232323;
|
||||
--accent-foreground: #f5f5f5;
|
||||
--primary: #b4b4b4;
|
||||
--primary-foreground: #0a0a0a;
|
||||
--secondary: #232323;
|
||||
--secondary-foreground: #f5f5f5;
|
||||
--cta: #b4b4b4;
|
||||
--cta-foreground: #0a0a0a;
|
||||
--ctahover: #bdbdbd;
|
||||
--success: #b14242;
|
||||
--success-foreground: #f5f5f5;
|
||||
--warning: #f0be66;
|
||||
--warning-foreground: #0a0a0a;
|
||||
--destructive: #d66e36;
|
||||
--destructive-foreground: #0a0a0a;
|
||||
--info: #4a8b8b;
|
||||
--info-foreground: #0a0a0a;
|
||||
--busy: #e3964e;
|
||||
--busy-foreground: #0a0a0a;
|
||||
--busy-ink: #e3964e;
|
||||
--border: #3f3f3f;
|
||||
--input: #3f3f3f;
|
||||
--ring: #b4b4b4;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #b4b4b4;
|
||||
--chart-secondary: #a7a7a7;
|
||||
--status-success: #b14242;
|
||||
--status-warning: #f0be66;
|
||||
--status-in-progress: #4a8b8b;
|
||||
--page-bg: #0a0a0a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(18 18 18 / 0.72);
|
||||
--panel-border: rgb(63 63 63 / 0.9);
|
||||
--panel-border-bare: rgb(63 63 63 / 0.55);
|
||||
--panel-raised-bg: rgb(18 18 18 / 0.95);
|
||||
--panel-raised-border: rgb(63 63 63 / 1);
|
||||
--panel-accent: #b4b4b4;
|
||||
--panel-header-bg: rgb(35 35 35 / 0.6);
|
||||
--panel-header-fg: #f5f5f5;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #121212;
|
||||
--glass-bg: rgb(18 18 18 / 0.55);
|
||||
--glass-border: rgb(63 63 63 / 0.7);
|
||||
--dock-bg: rgb(18 18 18 / 0.7);
|
||||
--dock-border: rgb(63 63 63 / 0.8);
|
||||
--dock-tooltip-bg: #232323;
|
||||
--header-bg: rgb(18 18 18 / 0.8);
|
||||
--header-border: rgb(63 63 63 / 0.9);
|
||||
--header-fg: #f5f5f5;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(120 120 120 / 0.07);
|
||||
--card-grid-color: rgb(120 120 120 / 0.05);
|
||||
--panel-grid-color: rgb(120 120 120 / 0.06);
|
||||
--scrollbar-thumb: rgb(148 148 148 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(148 148 148 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(148 148 148 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(148 148 148 / 0.7);
|
||||
--brand: #b4b4b4;
|
||||
--brand-foreground: #0a0a0a;
|
||||
--brand-primary: #b4b4b4;
|
||||
--brand-accent: #b4b4b4;
|
||||
--brand-warm: #e3964e;
|
||||
--brand-deep: #0a0a0a;
|
||||
--brand-muted: #949494;
|
||||
--ink: #f5f5f5;
|
||||
--surface-warm: #121212;
|
||||
--naturegreen: #b14242;
|
||||
--naturegreen-foreground: #f5f5f5;
|
||||
--duck-dark: #f5f5f5;
|
||||
--duck-teal: #b4b4b4;
|
||||
--duck-yellow: #f0be66;
|
||||
--duck-orange: #e3964e;
|
||||
--duck-forest: #b14242;
|
||||
--duck-beige: #292929;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Drac — 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/ShehabShaef/omarchy-drac-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='drac'] {
|
||||
--background: #090b16;
|
||||
--foreground: #f2f4f8;
|
||||
--card: #101428;
|
||||
--card-foreground: #f2f4f8;
|
||||
--popover: #101428;
|
||||
--popover-foreground: #f2f4f8;
|
||||
--muted: #212437;
|
||||
--muted-foreground: #aeb1ba;
|
||||
--accent: #212437;
|
||||
--accent-foreground: #f2f4f8;
|
||||
--primary: #a4ffff;
|
||||
--primary-foreground: #090b16;
|
||||
--secondary: #212437;
|
||||
--secondary-foreground: #f2f4f8;
|
||||
--cta: #a4ffff;
|
||||
--cta-foreground: #090b16;
|
||||
--ctahover: #afffff;
|
||||
--success: #1e90ff;
|
||||
--success-foreground: #090b16;
|
||||
--warning: #f1fa8c;
|
||||
--warning-foreground: #090b16;
|
||||
--destructive: #ff5555;
|
||||
--destructive-foreground: #090b16;
|
||||
--info: #50fa7b;
|
||||
--info-foreground: #090b16;
|
||||
--busy: #f8a871;
|
||||
--busy-foreground: #090b16;
|
||||
--busy-ink: #f8a871;
|
||||
--border: #3c4051;
|
||||
--input: #3c4051;
|
||||
--ring: #a4ffff;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a4ffff;
|
||||
--chart-secondary: #ff79c6;
|
||||
--status-success: #1e90ff;
|
||||
--status-warning: #f1fa8c;
|
||||
--status-in-progress: #50fa7b;
|
||||
--page-bg: #090b16;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(16 20 40 / 0.72);
|
||||
--panel-border: rgb(60 64 81 / 0.9);
|
||||
--panel-border-bare: rgb(60 64 81 / 0.55);
|
||||
--panel-raised-bg: rgb(16 20 40 / 0.95);
|
||||
--panel-raised-border: rgb(60 64 81 / 1);
|
||||
--panel-accent: #a4ffff;
|
||||
--panel-header-bg: rgb(33 36 55 / 0.6);
|
||||
--panel-header-fg: #f2f4f8;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #101428;
|
||||
--glass-bg: rgb(16 20 40 / 0.55);
|
||||
--glass-border: rgb(60 64 81 / 0.7);
|
||||
--dock-bg: rgb(16 20 40 / 0.7);
|
||||
--dock-border: rgb(60 64 81 / 0.8);
|
||||
--dock-tooltip-bg: #212437;
|
||||
--header-bg: rgb(16 20 40 / 0.8);
|
||||
--header-border: rgb(60 64 81 / 0.9);
|
||||
--header-fg: #f2f4f8;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(118 121 134 / 0.07);
|
||||
--card-grid-color: rgb(118 121 134 / 0.05);
|
||||
--panel-grid-color: rgb(118 121 134 / 0.06);
|
||||
--scrollbar-thumb: rgb(85 85 85 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(85 85 85 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(85 85 85 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(85 85 85 / 0.7);
|
||||
--brand: #a4ffff;
|
||||
--brand-foreground: #090b16;
|
||||
--brand-primary: #a4ffff;
|
||||
--brand-accent: #8be9fd;
|
||||
--brand-warm: #f8a871;
|
||||
--brand-deep: #090b16;
|
||||
--brand-muted: #555555;
|
||||
--ink: #f2f4f8;
|
||||
--surface-warm: #101428;
|
||||
--naturegreen: #1e90ff;
|
||||
--naturegreen-foreground: #090b16;
|
||||
--duck-dark: #f2f4f8;
|
||||
--duck-teal: #8be9fd;
|
||||
--duck-yellow: #f1fa8c;
|
||||
--duck-orange: #f8a871;
|
||||
--duck-forest: #1e90ff;
|
||||
--duck-beige: #272a3d;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dracula — 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/catlee/omarchy-dracula-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='dracula'] {
|
||||
--background: #16171e;
|
||||
--foreground: #f8f8f2;
|
||||
--card: #282a36;
|
||||
--card-foreground: #f8f8f2;
|
||||
--popover: #282a36;
|
||||
--popover-foreground: #f8f8f2;
|
||||
--muted: #373944;
|
||||
--muted-foreground: #bababa;
|
||||
--accent: #373944;
|
||||
--accent-foreground: #f8f8f2;
|
||||
--primary: #a4ffff;
|
||||
--primary-foreground: #16171e;
|
||||
--secondary: #373944;
|
||||
--secondary-foreground: #f8f8f2;
|
||||
--cta: #a4ffff;
|
||||
--cta-foreground: #16171e;
|
||||
--ctahover: #afffff;
|
||||
--success: #50fa7b;
|
||||
--success-foreground: #16171e;
|
||||
--warning: #f1fa8c;
|
||||
--warning-foreground: #16171e;
|
||||
--destructive: #ff5555;
|
||||
--destructive-foreground: #16171e;
|
||||
--info: #bd93f9;
|
||||
--info-foreground: #16171e;
|
||||
--busy: #f8a871;
|
||||
--busy-foreground: #16171e;
|
||||
--busy-ink: #f8a871;
|
||||
--border: #51525b;
|
||||
--input: #51525b;
|
||||
--ring: #a4ffff;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a4ffff;
|
||||
--chart-secondary: #ff79c6;
|
||||
--status-success: #50fa7b;
|
||||
--status-warning: #f1fa8c;
|
||||
--status-in-progress: #bd93f9;
|
||||
--page-bg: #16171e;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(40 42 54 / 0.72);
|
||||
--panel-border: rgb(81 82 91 / 0.9);
|
||||
--panel-border-bare: rgb(81 82 91 / 0.55);
|
||||
--panel-raised-bg: rgb(40 42 54 / 0.95);
|
||||
--panel-raised-border: rgb(81 82 91 / 1);
|
||||
--panel-accent: #a4ffff;
|
||||
--panel-header-bg: rgb(55 57 68 / 0.6);
|
||||
--panel-header-fg: #f8f8f2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #282a36;
|
||||
--glass-bg: rgb(40 42 54 / 0.55);
|
||||
--glass-border: rgb(81 82 91 / 0.7);
|
||||
--dock-bg: rgb(40 42 54 / 0.7);
|
||||
--dock-border: rgb(81 82 91 / 0.8);
|
||||
--dock-tooltip-bg: #373944;
|
||||
--header-bg: rgb(40 42 54 / 0.8);
|
||||
--header-border: rgb(81 82 91 / 0.9);
|
||||
--header-fg: #f8f8f2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(134 135 139 / 0.07);
|
||||
--card-grid-color: rgb(134 135 139 / 0.05);
|
||||
--panel-grid-color: rgb(134 135 139 / 0.06);
|
||||
--scrollbar-thumb: rgb(98 114 164 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(98 114 164 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(98 114 164 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(98 114 164 / 0.7);
|
||||
--brand: #a4ffff;
|
||||
--brand-foreground: #16171e;
|
||||
--brand-primary: #a4ffff;
|
||||
--brand-accent: #8be9fd;
|
||||
--brand-warm: #f8a871;
|
||||
--brand-deep: #16171e;
|
||||
--brand-muted: #6272a4;
|
||||
--ink: #f8f8f2;
|
||||
--surface-warm: #282a36;
|
||||
--naturegreen: #50fa7b;
|
||||
--naturegreen-foreground: #16171e;
|
||||
--duck-dark: #f8f8f2;
|
||||
--duck-teal: #8be9fd;
|
||||
--duck-yellow: #f1fa8c;
|
||||
--duck-orange: #f8a871;
|
||||
--duck-forest: #50fa7b;
|
||||
--duck-beige: #3d3f49;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dragon — 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/thatmechguy/omarchy-dragon-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='dragon'] {
|
||||
--background: #0d070c;
|
||||
--foreground: #ebe5d6;
|
||||
--card: #180d15;
|
||||
--card-foreground: #ebe5d6;
|
||||
--popover: #180d15;
|
||||
--popover-foreground: #ebe5d6;
|
||||
--muted: #281e25;
|
||||
--muted-foreground: #aca49c;
|
||||
--accent: #281e25;
|
||||
--accent-foreground: #ebe5d6;
|
||||
--primary: #95caca;
|
||||
--primary-foreground: #0d070c;
|
||||
--secondary: #281e25;
|
||||
--secondary-foreground: #ebe5d6;
|
||||
--cta: #95caca;
|
||||
--cta-foreground: #0d070c;
|
||||
--ctahover: #a2d0d0;
|
||||
--success: #78a682;
|
||||
--success-foreground: #0d070c;
|
||||
--warning: #f7e1c7;
|
||||
--warning-foreground: #0d070c;
|
||||
--destructive: #ff3d5a;
|
||||
--destructive-foreground: #0d070c;
|
||||
--info: #5298c4;
|
||||
--info-foreground: #0d070c;
|
||||
--busy: #fb8f91;
|
||||
--busy-foreground: #0d070c;
|
||||
--busy-ink: #fb8f91;
|
||||
--border: #41373b;
|
||||
--input: #41373b;
|
||||
--ring: #95caca;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #95caca;
|
||||
--chart-secondary: #c479a9;
|
||||
--status-success: #78a682;
|
||||
--status-warning: #f7e1c7;
|
||||
--status-in-progress: #5298c4;
|
||||
--page-bg: #0d070c;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(24 13 21 / 0.72);
|
||||
--panel-border: rgb(65 55 59 / 0.9);
|
||||
--panel-border-bare: rgb(65 55 59 / 0.55);
|
||||
--panel-raised-bg: rgb(24 13 21 / 0.95);
|
||||
--panel-raised-border: rgb(65 55 59 / 1);
|
||||
--panel-accent: #95caca;
|
||||
--panel-header-bg: rgb(40 30 37 / 0.6);
|
||||
--panel-header-fg: #ebe5d6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #180d15;
|
||||
--glass-bg: rgb(24 13 21 / 0.55);
|
||||
--glass-border: rgb(65 55 59 / 0.7);
|
||||
--dock-bg: rgb(24 13 21 / 0.7);
|
||||
--dock-border: rgb(65 55 59 / 0.8);
|
||||
--dock-tooltip-bg: #281e25;
|
||||
--header-bg: rgb(24 13 21 / 0.8);
|
||||
--header-border: rgb(65 55 59 / 0.9);
|
||||
--header-fg: #ebe5d6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(119 110 108 / 0.07);
|
||||
--card-grid-color: rgb(119 110 108 / 0.05);
|
||||
--panel-grid-color: rgb(119 110 108 / 0.06);
|
||||
--scrollbar-thumb: rgb(58 26 34 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(58 26 34 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(58 26 34 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(58 26 34 / 0.7);
|
||||
--brand: #95caca;
|
||||
--brand-foreground: #0d070c;
|
||||
--brand-primary: #95caca;
|
||||
--brand-accent: #7abaa9;
|
||||
--brand-warm: #fb8f91;
|
||||
--brand-deep: #0d070c;
|
||||
--brand-muted: #3a1a22;
|
||||
--ink: #ebe5d6;
|
||||
--surface-warm: #180d15;
|
||||
--naturegreen: #78a682;
|
||||
--naturegreen-foreground: #0d070c;
|
||||
--duck-dark: #ebe5d6;
|
||||
--duck-teal: #7abaa9;
|
||||
--duck-yellow: #f7e1c7;
|
||||
--duck-orange: #fb8f91;
|
||||
--duck-forest: #78a682;
|
||||
--duck-beige: #2d2328;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Dreamwave — 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/RiO7MAKK3R/omarchy-dreamwave-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='dreamwave'] {
|
||||
--background: #06040c;
|
||||
--foreground: #f5eafd;
|
||||
--card: #0a0716;
|
||||
--card-foreground: #f5eafd;
|
||||
--popover: #0a0716;
|
||||
--popover-foreground: #f5eafd;
|
||||
--muted: #1b1826;
|
||||
--muted-foreground: #afa6b8;
|
||||
--accent: #1b1826;
|
||||
--accent-foreground: #f5eafd;
|
||||
--primary: #e37bd1;
|
||||
--primary-foreground: #06040c;
|
||||
--secondary: #1b1826;
|
||||
--secondary-foreground: #f5eafd;
|
||||
--cta: #e37bd1;
|
||||
--cta-foreground: #06040c;
|
||||
--ctahover: #e68bd7;
|
||||
--success: #7f049e;
|
||||
--success-foreground: #f5eafd;
|
||||
--warning: #790aac;
|
||||
--warning-foreground: #f5eafd;
|
||||
--destructive: #a70b68;
|
||||
--destructive-foreground: #f5eafd;
|
||||
--info: #ca2cb0;
|
||||
--info-foreground: #ffffff;
|
||||
--busy: #900b8a;
|
||||
--busy-foreground: #f5eafd;
|
||||
--busy-ink: #b154ad;
|
||||
--border: #383443;
|
||||
--input: #383443;
|
||||
--ring: #e37bd1;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #e37bd1;
|
||||
--chart-secondary: #a604e9;
|
||||
--status-success: #7f049e;
|
||||
--status-warning: #790aac;
|
||||
--status-in-progress: #ca2cb0;
|
||||
--page-bg: #06040c;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(10 7 22 / 0.72);
|
||||
--panel-border: rgb(56 52 67 / 0.9);
|
||||
--panel-border-bare: rgb(56 52 67 / 0.55);
|
||||
--panel-raised-bg: rgb(10 7 22 / 0.95);
|
||||
--panel-raised-border: rgb(56 52 67 / 1);
|
||||
--panel-accent: #e37bd1;
|
||||
--panel-header-bg: rgb(27 24 38 / 0.6);
|
||||
--panel-header-fg: #f5eafd;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0a0716;
|
||||
--glass-bg: rgb(10 7 22 / 0.55);
|
||||
--glass-border: rgb(56 52 67 / 0.7);
|
||||
--dock-bg: rgb(10 7 22 / 0.7);
|
||||
--dock-border: rgb(56 52 67 / 0.8);
|
||||
--dock-tooltip-bg: #1b1826;
|
||||
--header-bg: rgb(10 7 22 / 0.8);
|
||||
--header-border: rgb(56 52 67 / 0.9);
|
||||
--header-fg: #f5eafd;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(116 109 126 / 0.07);
|
||||
--card-grid-color: rgb(116 109 126 / 0.05);
|
||||
--panel-grid-color: rgb(116 109 126 / 0.06);
|
||||
--scrollbar-thumb: rgb(140 83 183 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(140 83 183 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(140 83 183 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(140 83 183 / 0.7);
|
||||
--brand: #e37bd1;
|
||||
--brand-foreground: #06040c;
|
||||
--brand-primary: #e37bd1;
|
||||
--brand-accent: #c429b2;
|
||||
--brand-warm: #900b8a;
|
||||
--brand-deep: #06040c;
|
||||
--brand-muted: #8c53b7;
|
||||
--ink: #f5eafd;
|
||||
--surface-warm: #0a0716;
|
||||
--naturegreen: #7f049e;
|
||||
--naturegreen-foreground: #f5eafd;
|
||||
--duck-dark: #f5eafd;
|
||||
--duck-teal: #c429b2;
|
||||
--duck-yellow: #790aac;
|
||||
--duck-orange: #900b8a;
|
||||
--duck-forest: #7f049e;
|
||||
--duck-beige: #221e2d;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Ember N 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/Hydradevx/omarchy-ember-n-ash-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='ember-n-ash'] {
|
||||
--background: #0e0e0e;
|
||||
--foreground: #e5d6c6;
|
||||
--card: #1a1a1a;
|
||||
--card-foreground: #e5d6c6;
|
||||
--popover: #1a1a1a;
|
||||
--popover-foreground: #e5d6c6;
|
||||
--muted: #2a2a2a;
|
||||
--muted-foreground: #a89e92;
|
||||
--accent: #2a2a2a;
|
||||
--accent-foreground: #e5d6c6;
|
||||
--primary: #ba9486;
|
||||
--primary-foreground: #0e0e0e;
|
||||
--secondary: #2a2a2a;
|
||||
--secondary-foreground: #e5d6c6;
|
||||
--cta: #ba9486;
|
||||
--cta-foreground: #0e0e0e;
|
||||
--ctahover: #c2a195;
|
||||
--success: #9e8f70;
|
||||
--success-foreground: #0e0e0e;
|
||||
--warning: #d9a066;
|
||||
--warning-foreground: #0e0e0e;
|
||||
--destructive: #d45d4c;
|
||||
--destructive-foreground: #0e0e0e;
|
||||
--info: #6c5b4c;
|
||||
--info-foreground: #e5d6c6;
|
||||
--busy: #d77f59;
|
||||
--busy-foreground: #0e0e0e;
|
||||
--busy-ink: #d77f59;
|
||||
--border: #423f3c;
|
||||
--input: #423f3c;
|
||||
--ring: #ba9486;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #ba9486;
|
||||
--chart-secondary: #b57276;
|
||||
--status-success: #9e8f70;
|
||||
--status-warning: #d9a066;
|
||||
--status-in-progress: #6c5b4c;
|
||||
--page-bg: #0e0e0e;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(26 26 26 / 0.72);
|
||||
--panel-border: rgb(66 63 60 / 0.9);
|
||||
--panel-border-bare: rgb(66 63 60 / 0.55);
|
||||
--panel-raised-bg: rgb(26 26 26 / 0.95);
|
||||
--panel-raised-border: rgb(66 63 60 / 1);
|
||||
--panel-accent: #ba9486;
|
||||
--panel-header-bg: rgb(42 42 42 / 0.6);
|
||||
--panel-header-fg: #e5d6c6;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1a1a1a;
|
||||
--glass-bg: rgb(26 26 26 / 0.55);
|
||||
--glass-border: rgb(66 63 60 / 0.7);
|
||||
--dock-bg: rgb(26 26 26 / 0.7);
|
||||
--dock-border: rgb(66 63 60 / 0.8);
|
||||
--dock-tooltip-bg: #2a2a2a;
|
||||
--header-bg: rgb(26 26 26 / 0.8);
|
||||
--header-border: rgb(66 63 60 / 0.9);
|
||||
--header-fg: #e5d6c6;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(117 111 103 / 0.07);
|
||||
--card-grid-color: rgb(117 111 103 / 0.05);
|
||||
--panel-grid-color: rgb(117 111 103 / 0.06);
|
||||
--scrollbar-thumb: rgb(42 42 42 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(42 42 42 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(42 42 42 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(42 42 42 / 0.7);
|
||||
--brand: #ba9486;
|
||||
--brand-foreground: #0e0e0e;
|
||||
--brand-primary: #ba9486;
|
||||
--brand-accent: #a98274;
|
||||
--brand-warm: #d77f59;
|
||||
--brand-deep: #0e0e0e;
|
||||
--brand-muted: #2a2a2a;
|
||||
--ink: #e5d6c6;
|
||||
--surface-warm: #1a1a1a;
|
||||
--naturegreen: #9e8f70;
|
||||
--naturegreen-foreground: #0e0e0e;
|
||||
--duck-dark: #e5d6c6;
|
||||
--duck-teal: #a98274;
|
||||
--duck-yellow: #d9a066;
|
||||
--duck-orange: #d77f59;
|
||||
--duck-forest: #9e8f70;
|
||||
--duck-beige: #2e2d2b;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Eva Unit 01 — 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-01-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='eva-unit-01'] {
|
||||
--background: #120b1a;
|
||||
--foreground: #e1d6f8;
|
||||
--card: #201430;
|
||||
--card-foreground: #e1d6f8;
|
||||
--popover: #201430;
|
||||
--popover-foreground: #e1d6f8;
|
||||
--muted: #30243e;
|
||||
--muted-foreground: #a79cbc;
|
||||
--accent: #30243e;
|
||||
--accent-foreground: #e1d6f8;
|
||||
--primary: #a4d2ec;
|
||||
--primary-foreground: #120b1a;
|
||||
--secondary: #30243e;
|
||||
--secondary-foreground: #e1d6f8;
|
||||
--cta: #a4d2ec;
|
||||
--cta-foreground: #120b1a;
|
||||
--ctahover: #afd7ee;
|
||||
--success: #8edf5f;
|
||||
--success-foreground: #120b1a;
|
||||
--warning: #d99145;
|
||||
--warning-foreground: #120b1a;
|
||||
--destructive: #bf2d2d;
|
||||
--destructive-foreground: #e8dffa;
|
||||
--info: #ce67f0;
|
||||
--info-foreground: #120b1a;
|
||||
--busy: #cc5f39;
|
||||
--busy-foreground: #120b1a;
|
||||
--busy-ink: #cc5f39;
|
||||
--border: #463a57;
|
||||
--input: #463a57;
|
||||
--ring: #a4d2ec;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a4d2ec;
|
||||
--chart-secondary: #875faf;
|
||||
--status-success: #8edf5f;
|
||||
--status-warning: #d99145;
|
||||
--status-in-progress: #ce67f0;
|
||||
--page-bg: #120b1a;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(32 20 48 / 0.72);
|
||||
--panel-border: rgb(70 58 87 / 0.9);
|
||||
--panel-border-bare: rgb(70 58 87 / 0.55);
|
||||
--panel-raised-bg: rgb(32 20 48 / 0.95);
|
||||
--panel-raised-border: rgb(70 58 87 / 1);
|
||||
--panel-accent: #a4d2ec;
|
||||
--panel-header-bg: rgb(48 36 62 / 0.6);
|
||||
--panel-header-fg: #e1d6f8;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #201430;
|
||||
--glass-bg: rgb(32 20 48 / 0.55);
|
||||
--glass-border: rgb(70 58 87 / 0.7);
|
||||
--dock-bg: rgb(32 20 48 / 0.7);
|
||||
--dock-border: rgb(70 58 87 / 0.8);
|
||||
--dock-tooltip-bg: #30243e;
|
||||
--header-bg: rgb(32 20 48 / 0.8);
|
||||
--header-border: rgb(70 58 87 / 0.9);
|
||||
--header-fg: #e1d6f8;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(119 107 138 / 0.07);
|
||||
--card-grid-color: rgb(119 107 138 / 0.05);
|
||||
--panel-grid-color: rgb(119 107 138 / 0.06);
|
||||
--scrollbar-thumb: rgb(161 160 173 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(161 160 173 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(161 160 173 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(161 160 173 / 0.7);
|
||||
--brand: #a4d2ec;
|
||||
--brand-foreground: #120b1a;
|
||||
--brand-primary: #a4d2ec;
|
||||
--brand-accent: #9dafd1;
|
||||
--brand-warm: #cc5f39;
|
||||
--brand-deep: #120b1a;
|
||||
--brand-muted: #a1a0ad;
|
||||
--ink: #e1d6f8;
|
||||
--surface-warm: #201430;
|
||||
--naturegreen: #8edf5f;
|
||||
--naturegreen-foreground: #120b1a;
|
||||
--duck-dark: #e1d6f8;
|
||||
--duck-teal: #9dafd1;
|
||||
--duck-yellow: #d99145;
|
||||
--duck-orange: #cc5f39;
|
||||
--duck-forest: #8edf5f;
|
||||
--duck-beige: #332744;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Event Horizon — 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-event-horizon-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='event-horizon'] {
|
||||
--background: #0f1115;
|
||||
--foreground: #cbced0;
|
||||
--card: #1c1e26;
|
||||
--card-foreground: #cbced0;
|
||||
--popover: #1c1e26;
|
||||
--popover-foreground: #cbced0;
|
||||
--muted: #2c2e35;
|
||||
--muted-foreground: #97999d;
|
||||
--accent: #2c2e35;
|
||||
--accent-foreground: #cbced0;
|
||||
--primary: #6be4e6;
|
||||
--primary-foreground: #0f1115;
|
||||
--secondary: #2c2e35;
|
||||
--secondary-foreground: #cbced0;
|
||||
--cta: #6be4e6;
|
||||
--cta-foreground: #0f1115;
|
||||
--ctahover: #7de7e9;
|
||||
--success: #29d398;
|
||||
--success-foreground: #0f1115;
|
||||
--warning: #fac29a;
|
||||
--warning-foreground: #0f1115;
|
||||
--destructive: #e95678;
|
||||
--destructive-foreground: #0f1115;
|
||||
--info: #26bbd9;
|
||||
--info-foreground: #0f1115;
|
||||
--busy: #f28c89;
|
||||
--busy-foreground: #0f1115;
|
||||
--busy-ink: #f28c89;
|
||||
--border: #3e4047;
|
||||
--input: #3e4047;
|
||||
--ring: #6be4e6;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #6be4e6;
|
||||
--chart-secondary: #ee64ac;
|
||||
--status-success: #29d398;
|
||||
--status-warning: #fac29a;
|
||||
--status-in-progress: #26bbd9;
|
||||
--page-bg: #0f1115;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(28 30 38 / 0.72);
|
||||
--panel-border: rgb(62 64 71 / 0.9);
|
||||
--panel-border-bare: rgb(62 64 71 / 0.55);
|
||||
--panel-raised-bg: rgb(28 30 38 / 0.95);
|
||||
--panel-raised-border: rgb(62 64 71 / 1);
|
||||
--panel-accent: #6be4e6;
|
||||
--panel-header-bg: rgb(44 46 53 / 0.6);
|
||||
--panel-header-fg: #cbced0;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #1c1e26;
|
||||
--glass-bg: rgb(28 30 38 / 0.55);
|
||||
--glass-border: rgb(62 64 71 / 0.7);
|
||||
--dock-bg: rgb(28 30 38 / 0.7);
|
||||
--dock-border: rgb(62 64 71 / 0.8);
|
||||
--dock-tooltip-bg: #2c2e35;
|
||||
--header-bg: rgb(28 30 38 / 0.8);
|
||||
--header-border: rgb(62 64 71 / 0.9);
|
||||
--header-fg: #cbced0;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(107 109 114 / 0.07);
|
||||
--card-grid-color: rgb(107 109 114 / 0.05);
|
||||
--panel-grid-color: rgb(107 109 114 / 0.06);
|
||||
--scrollbar-thumb: rgb(111 111 112 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(111 111 112 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(111 111 112 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(111 111 112 / 0.7);
|
||||
--brand: #6be4e6;
|
||||
--brand-foreground: #0f1115;
|
||||
--brand-primary: #6be4e6;
|
||||
--brand-accent: #59e1e3;
|
||||
--brand-warm: #f28c89;
|
||||
--brand-deep: #0f1115;
|
||||
--brand-muted: #6f6f70;
|
||||
--ink: #cbced0;
|
||||
--surface-warm: #1c1e26;
|
||||
--naturegreen: #29d398;
|
||||
--naturegreen-foreground: #0f1115;
|
||||
--duck-dark: #cbced0;
|
||||
--duck-teal: #59e1e3;
|
||||
--duck-yellow: #fac29a;
|
||||
--duck-orange: #f28c89;
|
||||
--duck-forest: #29d398;
|
||||
--duck-beige: #2e3037;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Everblush — 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/Swarnim114/omarchy-everblush-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='everblush'] {
|
||||
--background: #0b0f11;
|
||||
--foreground: #dadada;
|
||||
--card: #141b1e;
|
||||
--card-foreground: #dadada;
|
||||
--popover: #141b1e;
|
||||
--popover-foreground: #dadada;
|
||||
--muted: #242b2e;
|
||||
--muted-foreground: #9fa1a2;
|
||||
--accent: #242b2e;
|
||||
--accent-foreground: #dadada;
|
||||
--primary: #6cbfbf;
|
||||
--primary-foreground: #0b0f11;
|
||||
--secondary: #242b2e;
|
||||
--secondary-foreground: #dadada;
|
||||
--cta: #6cbfbf;
|
||||
--cta-foreground: #0b0f11;
|
||||
--ctahover: #7ec7c7;
|
||||
--success: #8ccf7e;
|
||||
--success-foreground: #0b0f11;
|
||||
--warning: #e5c76b;
|
||||
--warning-foreground: #0b0f11;
|
||||
--destructive: #e57474;
|
||||
--destructive-foreground: #0b0f11;
|
||||
--info: #67b0e8;
|
||||
--info-foreground: #0b0f11;
|
||||
--busy: #e59e70;
|
||||
--busy-foreground: #0b0f11;
|
||||
--busy-ink: #e59e70;
|
||||
--border: #3b4143;
|
||||
--input: #3b4143;
|
||||
--ring: #6cbfbf;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #6cbfbf;
|
||||
--chart-secondary: #c47fd5;
|
||||
--status-success: #8ccf7e;
|
||||
--status-warning: #e5c76b;
|
||||
--status-in-progress: #67b0e8;
|
||||
--page-bg: #0b0f11;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(20 27 30 / 0.72);
|
||||
--panel-border: rgb(59 65 67 / 0.9);
|
||||
--panel-border-bare: rgb(59 65 67 / 0.55);
|
||||
--panel-raised-bg: rgb(20 27 30 / 0.95);
|
||||
--panel-raised-border: rgb(59 65 67 / 1);
|
||||
--panel-accent: #6cbfbf;
|
||||
--panel-header-bg: rgb(36 43 46 / 0.6);
|
||||
--panel-header-fg: #dadada;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #141b1e;
|
||||
--glass-bg: rgb(20 27 30 / 0.55);
|
||||
--glass-border: rgb(59 65 67 / 0.7);
|
||||
--dock-bg: rgb(20 27 30 / 0.7);
|
||||
--dock-border: rgb(59 65 67 / 0.8);
|
||||
--dock-tooltip-bg: #242b2e;
|
||||
--header-bg: rgb(20 27 30 / 0.8);
|
||||
--header-border: rgb(59 65 67 / 0.9);
|
||||
--header-fg: #dadada;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(109 113 115 / 0.07);
|
||||
--card-grid-color: rgb(109 113 115 / 0.05);
|
||||
--panel-grid-color: rgb(109 113 115 / 0.06);
|
||||
--scrollbar-thumb: rgb(35 42 45 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(35 42 45 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(35 42 45 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(35 42 45 / 0.7);
|
||||
--brand: #6cbfbf;
|
||||
--brand-foreground: #0b0f11;
|
||||
--brand-primary: #6cbfbf;
|
||||
--brand-accent: #6cbfbf;
|
||||
--brand-warm: #e59e70;
|
||||
--brand-deep: #0b0f11;
|
||||
--brand-muted: #232a2d;
|
||||
--ink: #dadada;
|
||||
--surface-warm: #141b1e;
|
||||
--naturegreen: #8ccf7e;
|
||||
--naturegreen-foreground: #0b0f11;
|
||||
--duck-dark: #dadada;
|
||||
--duck-teal: #6cbfbf;
|
||||
--duck-yellow: #e5c76b;
|
||||
--duck-orange: #e59e70;
|
||||
--duck-forest: #8ccf7e;
|
||||
--duck-beige: #282e31;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Farline — 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/atif-1402/omarchy-farline-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='farline'] {
|
||||
--background: #131417;
|
||||
--foreground: #d6dcd9;
|
||||
--card: #232529;
|
||||
--card-foreground: #d6dcd9;
|
||||
--popover: #232529;
|
||||
--popover-foreground: #d6dcd9;
|
||||
--muted: #323438;
|
||||
--muted-foreground: #a0a5a4;
|
||||
--accent: #323438;
|
||||
--accent-foreground: #d6dcd9;
|
||||
--primary: #90bcba;
|
||||
--primary-foreground: #131417;
|
||||
--secondary: #323438;
|
||||
--secondary-foreground: #d6dcd9;
|
||||
--cta: #90bcba;
|
||||
--cta-foreground: #131417;
|
||||
--ctahover: #9dc4c2;
|
||||
--success: #9bab8c;
|
||||
--success-foreground: #131417;
|
||||
--warning: #b1b195;
|
||||
--warning-foreground: #131417;
|
||||
--destructive: #a48484;
|
||||
--destructive-foreground: #131417;
|
||||
--info: #879ab0;
|
||||
--info-foreground: #131417;
|
||||
--busy: #ab9b8d;
|
||||
--busy-foreground: #131417;
|
||||
--busy-ink: #ab9b8d;
|
||||
--border: #46494b;
|
||||
--input: #46494b;
|
||||
--ring: #90bcba;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #90bcba;
|
||||
--chart-secondary: #bea7ad;
|
||||
--status-success: #9bab8c;
|
||||
--status-warning: #b1b195;
|
||||
--status-in-progress: #879ab0;
|
||||
--page-bg: #131417;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(35 37 41 / 0.72);
|
||||
--panel-border: rgb(70 73 75 / 0.9);
|
||||
--panel-border-bare: rgb(70 73 75 / 0.55);
|
||||
--panel-raised-bg: rgb(35 37 41 / 0.95);
|
||||
--panel-raised-border: rgb(70 73 75 / 1);
|
||||
--panel-accent: #90bcba;
|
||||
--panel-header-bg: rgb(50 52 56 / 0.6);
|
||||
--panel-header-fg: #d6dcd9;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #232529;
|
||||
--glass-bg: rgb(35 37 41 / 0.55);
|
||||
--glass-border: rgb(70 73 75 / 0.7);
|
||||
--dock-bg: rgb(35 37 41 / 0.7);
|
||||
--dock-border: rgb(70 73 75 / 0.8);
|
||||
--dock-tooltip-bg: #323438;
|
||||
--header-bg: rgb(35 37 41 / 0.8);
|
||||
--header-border: rgb(70 73 75 / 0.9);
|
||||
--header-fg: #d6dcd9;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(116 119 120 / 0.07);
|
||||
--card-grid-color: rgb(116 119 120 / 0.05);
|
||||
--panel-grid-color: rgb(116 119 120 / 0.06);
|
||||
--scrollbar-thumb: rgb(120 124 135 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(120 124 135 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(120 124 135 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(120 124 135 / 0.7);
|
||||
--brand: #90bcba;
|
||||
--brand-foreground: #131417;
|
||||
--brand-primary: #90bcba;
|
||||
--brand-accent: #7eadac;
|
||||
--brand-warm: #ab9b8d;
|
||||
--brand-deep: #131417;
|
||||
--brand-muted: #787c87;
|
||||
--ink: #d6dcd9;
|
||||
--surface-warm: #232529;
|
||||
--naturegreen: #9bab8c;
|
||||
--naturegreen-foreground: #131417;
|
||||
--duck-dark: #d6dcd9;
|
||||
--duck-teal: #7eadac;
|
||||
--duck-yellow: #b1b195;
|
||||
--duck-orange: #ab9b8d;
|
||||
--duck-forest: #9bab8c;
|
||||
--duck-beige: #35373b;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Felix — 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/TyRichards/omarchy-felix-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='felix'] {
|
||||
--background: #000000;
|
||||
--foreground: #e7e9ea;
|
||||
--card: #000000;
|
||||
--card-foreground: #e7e9ea;
|
||||
--popover: #000000;
|
||||
--popover-foreground: #e7e9ea;
|
||||
--muted: #121212;
|
||||
--muted-foreground: #a2a3a4;
|
||||
--accent: #121212;
|
||||
--accent-foreground: #e7e9ea;
|
||||
--primary: #9e9e9e;
|
||||
--primary-foreground: #000000;
|
||||
--secondary: #121212;
|
||||
--secondary-foreground: #e7e9ea;
|
||||
--cta: #9e9e9e;
|
||||
--cta-foreground: #000000;
|
||||
--ctahover: #aaaaaa;
|
||||
--success: #e7e9ea;
|
||||
--success-foreground: #000000;
|
||||
--warning: #9e9e9e;
|
||||
--warning-foreground: #000000;
|
||||
--destructive: #8a8a8a;
|
||||
--destructive-foreground: #000000;
|
||||
--info: #626262;
|
||||
--info-foreground: #e7e9ea;
|
||||
--busy: #949494;
|
||||
--busy-foreground: #000000;
|
||||
--busy-ink: #949494;
|
||||
--border: #2d2e2e;
|
||||
--input: #2d2e2e;
|
||||
--ring: #9e9e9e;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #9e9e9e;
|
||||
--chart-secondary: #8a8a8a;
|
||||
--status-success: #e7e9ea;
|
||||
--status-warning: #9e9e9e;
|
||||
--status-in-progress: #626262;
|
||||
--page-bg: #000000;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(0 0 0 / 0.72);
|
||||
--panel-border: rgb(45 46 46 / 0.9);
|
||||
--panel-border-bare: rgb(45 46 46 / 0.55);
|
||||
--panel-raised-bg: rgb(0 0 0 / 0.95);
|
||||
--panel-raised-border: rgb(45 46 46 / 1);
|
||||
--panel-accent: #9e9e9e;
|
||||
--panel-header-bg: rgb(18 18 18 / 0.6);
|
||||
--panel-header-fg: #e7e9ea;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #000000;
|
||||
--glass-bg: rgb(0 0 0 / 0.55);
|
||||
--glass-border: rgb(45 46 46 / 0.7);
|
||||
--dock-bg: rgb(0 0 0 / 0.7);
|
||||
--dock-border: rgb(45 46 46 / 0.8);
|
||||
--dock-tooltip-bg: #121212;
|
||||
--header-bg: rgb(0 0 0 / 0.8);
|
||||
--header-border: rgb(45 46 46 / 0.9);
|
||||
--header-fg: #e7e9ea;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(104 105 105 / 0.07);
|
||||
--card-grid-color: rgb(104 105 105 / 0.05);
|
||||
--panel-grid-color: rgb(104 105 105 / 0.06);
|
||||
--scrollbar-thumb: rgb(98 98 98 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(98 98 98 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(98 98 98 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(98 98 98 / 0.7);
|
||||
--brand: #9e9e9e;
|
||||
--brand-foreground: #000000;
|
||||
--brand-primary: #9e9e9e;
|
||||
--brand-accent: #767676;
|
||||
--brand-warm: #949494;
|
||||
--brand-deep: #000000;
|
||||
--brand-muted: #626262;
|
||||
--ink: #e7e9ea;
|
||||
--surface-warm: #000000;
|
||||
--naturegreen: #e7e9ea;
|
||||
--naturegreen-foreground: #000000;
|
||||
--duck-dark: #e7e9ea;
|
||||
--duck-teal: #767676;
|
||||
--duck-yellow: #9e9e9e;
|
||||
--duck-orange: #949494;
|
||||
--duck-forest: #e7e9ea;
|
||||
--duck-beige: #171717;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Flat Dracula — 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-flat-dracula-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='flat-dracula'] {
|
||||
--background: #16171e;
|
||||
--foreground: #f8f8f2;
|
||||
--card: #282a36;
|
||||
--card-foreground: #f8f8f2;
|
||||
--popover: #282a36;
|
||||
--popover-foreground: #f8f8f2;
|
||||
--muted: #373944;
|
||||
--muted-foreground: #bababa;
|
||||
--accent: #373944;
|
||||
--accent-foreground: #f8f8f2;
|
||||
--primary: #a4ffff;
|
||||
--primary-foreground: #16171e;
|
||||
--secondary: #373944;
|
||||
--secondary-foreground: #f8f8f2;
|
||||
--cta: #a4ffff;
|
||||
--cta-foreground: #16171e;
|
||||
--ctahover: #afffff;
|
||||
--success: #50fa7b;
|
||||
--success-foreground: #16171e;
|
||||
--warning: #f1fa8c;
|
||||
--warning-foreground: #16171e;
|
||||
--destructive: #ff5555;
|
||||
--destructive-foreground: #16171e;
|
||||
--info: #bd93f9;
|
||||
--info-foreground: #16171e;
|
||||
--busy: #f8a871;
|
||||
--busy-foreground: #16171e;
|
||||
--busy-ink: #f8a871;
|
||||
--border: #51525b;
|
||||
--input: #51525b;
|
||||
--ring: #a4ffff;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #a4ffff;
|
||||
--chart-secondary: #ff79c6;
|
||||
--status-success: #50fa7b;
|
||||
--status-warning: #f1fa8c;
|
||||
--status-in-progress: #bd93f9;
|
||||
--page-bg: #16171e;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(40 42 54 / 0.72);
|
||||
--panel-border: rgb(81 82 91 / 0.9);
|
||||
--panel-border-bare: rgb(81 82 91 / 0.55);
|
||||
--panel-raised-bg: rgb(40 42 54 / 0.95);
|
||||
--panel-raised-border: rgb(81 82 91 / 1);
|
||||
--panel-accent: #a4ffff;
|
||||
--panel-header-bg: rgb(55 57 68 / 0.6);
|
||||
--panel-header-fg: #f8f8f2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #282a36;
|
||||
--glass-bg: rgb(40 42 54 / 0.55);
|
||||
--glass-border: rgb(81 82 91 / 0.7);
|
||||
--dock-bg: rgb(40 42 54 / 0.7);
|
||||
--dock-border: rgb(81 82 91 / 0.8);
|
||||
--dock-tooltip-bg: #373944;
|
||||
--header-bg: rgb(40 42 54 / 0.8);
|
||||
--header-border: rgb(81 82 91 / 0.9);
|
||||
--header-fg: #f8f8f2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(134 135 139 / 0.07);
|
||||
--card-grid-color: rgb(134 135 139 / 0.05);
|
||||
--panel-grid-color: rgb(134 135 139 / 0.06);
|
||||
--scrollbar-thumb: rgb(98 114 164 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(98 114 164 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(98 114 164 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(98 114 164 / 0.7);
|
||||
--brand: #a4ffff;
|
||||
--brand-foreground: #16171e;
|
||||
--brand-primary: #a4ffff;
|
||||
--brand-accent: #8be9fd;
|
||||
--brand-warm: #f8a871;
|
||||
--brand-deep: #16171e;
|
||||
--brand-muted: #6272a4;
|
||||
--ink: #f8f8f2;
|
||||
--surface-warm: #282a36;
|
||||
--naturegreen: #50fa7b;
|
||||
--naturegreen-foreground: #16171e;
|
||||
--duck-dark: #f8f8f2;
|
||||
--duck-teal: #8be9fd;
|
||||
--duck-yellow: #f1fa8c;
|
||||
--duck-orange: #f8a871;
|
||||
--duck-forest: #50fa7b;
|
||||
--duck-beige: #3d3f49;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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';
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Florida Man — 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-florida-man-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='florida-man'] {
|
||||
--background: #1a1d27;
|
||||
--foreground: #b5bfe2;
|
||||
--card: #303446;
|
||||
--card-foreground: #b5bfe2;
|
||||
--popover: #303446;
|
||||
--popover-foreground: #b5bfe2;
|
||||
--muted: #3e4253;
|
||||
--muted-foreground: #aab0c6;
|
||||
--accent: #3e4253;
|
||||
--accent-foreground: #b5bfe2;
|
||||
--primary: #81c8be;
|
||||
--primary-foreground: #1a1d27;
|
||||
--secondary: #3e4253;
|
||||
--secondary-foreground: #b5bfe2;
|
||||
--cta: #81c8be;
|
||||
--cta-foreground: #1a1d27;
|
||||
--ctahover: #90cfc6;
|
||||
--success: #a6d189;
|
||||
--success-foreground: #1a1d27;
|
||||
--warning: #e5c890;
|
||||
--warning-foreground: #1a1d27;
|
||||
--destructive: #e78284;
|
||||
--destructive-foreground: #1a1d27;
|
||||
--info: #8caaee;
|
||||
--info-foreground: #1a1d27;
|
||||
--busy: #e6a58a;
|
||||
--busy-foreground: #1a1d27;
|
||||
--busy-ink: #e6a58a;
|
||||
--border: #4a4f65;
|
||||
--input: #4a4f65;
|
||||
--ring: #81c8be;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #81c8be;
|
||||
--chart-secondary: #ca9ee6;
|
||||
--status-success: #a6d189;
|
||||
--status-warning: #e5c890;
|
||||
--status-in-progress: #8caaee;
|
||||
--page-bg: #1a1d27;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(48 52 70 / 0.72);
|
||||
--panel-border: rgb(74 79 101 / 0.9);
|
||||
--panel-border-bare: rgb(74 79 101 / 0.55);
|
||||
--panel-raised-bg: rgb(48 52 70 / 0.95);
|
||||
--panel-raised-border: rgb(74 79 101 / 1);
|
||||
--panel-accent: #81c8be;
|
||||
--panel-header-bg: rgb(62 66 83 / 0.6);
|
||||
--panel-header-fg: #b5bfe2;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #303446;
|
||||
--glass-bg: rgb(48 52 70 / 0.55);
|
||||
--glass-border: rgb(74 79 101 / 0.7);
|
||||
--dock-bg: rgb(48 52 70 / 0.7);
|
||||
--dock-border: rgb(74 79 101 / 0.8);
|
||||
--dock-tooltip-bg: #3e4253;
|
||||
--header-bg: rgb(48 52 70 / 0.8);
|
||||
--header-border: rgb(74 79 101 / 0.9);
|
||||
--header-fg: #b5bfe2;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(119 126 149 / 0.07);
|
||||
--card-grid-color: rgb(119 126 149 / 0.05);
|
||||
--panel-grid-color: rgb(119 126 149 / 0.06);
|
||||
--scrollbar-thumb: rgb(81 87 109 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(81 87 109 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(81 87 109 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(81 87 109 / 0.7);
|
||||
--brand: #81c8be;
|
||||
--brand-foreground: #1a1d27;
|
||||
--brand-primary: #81c8be;
|
||||
--brand-accent: #81c8be;
|
||||
--brand-warm: #e6a58a;
|
||||
--brand-deep: #1a1d27;
|
||||
--brand-muted: #51576d;
|
||||
--ink: #b5bfe2;
|
||||
--surface-warm: #303446;
|
||||
--naturegreen: #a6d189;
|
||||
--naturegreen-foreground: #1a1d27;
|
||||
--duck-dark: #b5bfe2;
|
||||
--duck-teal: #81c8be;
|
||||
--duck-yellow: #e5c890;
|
||||
--duck-orange: #e6a58a;
|
||||
--duck-forest: #a6d189;
|
||||
--duck-beige: #3d4256;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Fluid 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/ripple0328/omarchy-fluid-glass-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='fluid-glass'] {
|
||||
--background: #08080b;
|
||||
--foreground: #f8fafc;
|
||||
--card: #0f0f14;
|
||||
--card-foreground: #f8fafc;
|
||||
--popover: #0f0f14;
|
||||
--popover-foreground: #f8fafc;
|
||||
--muted: #202024;
|
||||
--muted-foreground: #b2b4b6;
|
||||
--accent: #202024;
|
||||
--accent-foreground: #f8fafc;
|
||||
--primary: #22d3ee;
|
||||
--primary-foreground: #08080b;
|
||||
--secondary: #202024;
|
||||
--secondary-foreground: #f8fafc;
|
||||
--cta: #22d3ee;
|
||||
--cta-foreground: #08080b;
|
||||
--ctahover: #3dd8f0;
|
||||
--success: #10b981;
|
||||
--success-foreground: #08080b;
|
||||
--warning: #f59e0b;
|
||||
--warning-foreground: #08080b;
|
||||
--destructive: #ef4444;
|
||||
--destructive-foreground: #08080b;
|
||||
--info: #0ea5e9;
|
||||
--info-foreground: #08080b;
|
||||
--busy: #f27128;
|
||||
--busy-foreground: #08080b;
|
||||
--busy-ink: #f27128;
|
||||
--border: #3d3d41;
|
||||
--input: #3d3d41;
|
||||
--ring: #22d3ee;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #22d3ee;
|
||||
--chart-secondary: #8b5cf6;
|
||||
--status-success: #10b981;
|
||||
--status-warning: #f59e0b;
|
||||
--status-in-progress: #0ea5e9;
|
||||
--page-bg: #08080b;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(15 15 20 / 0.72);
|
||||
--panel-border: rgb(61 61 65 / 0.9);
|
||||
--panel-border-bare: rgb(61 61 65 / 0.55);
|
||||
--panel-raised-bg: rgb(15 15 20 / 0.95);
|
||||
--panel-raised-border: rgb(61 61 65 / 1);
|
||||
--panel-accent: #22d3ee;
|
||||
--panel-header-bg: rgb(32 32 36 / 0.6);
|
||||
--panel-header-fg: #f8fafc;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0f0f14;
|
||||
--glass-bg: rgb(15 15 20 / 0.55);
|
||||
--glass-border: rgb(61 61 65 / 0.7);
|
||||
--dock-bg: rgb(15 15 20 / 0.7);
|
||||
--dock-border: rgb(61 61 65 / 0.8);
|
||||
--dock-tooltip-bg: #202024;
|
||||
--header-bg: rgb(15 15 20 / 0.8);
|
||||
--header-border: rgb(61 61 65 / 0.9);
|
||||
--header-fg: #f8fafc;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(120 121 124 / 0.07);
|
||||
--card-grid-color: rgb(120 121 124 / 0.05);
|
||||
--panel-grid-color: rgb(120 121 124 / 0.06);
|
||||
--scrollbar-thumb: rgb(71 85 105 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(71 85 105 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(71 85 105 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(71 85 105 / 0.7);
|
||||
--brand: #22d3ee;
|
||||
--brand-foreground: #08080b;
|
||||
--brand-primary: #22d3ee;
|
||||
--brand-accent: #06b6d4;
|
||||
--brand-warm: #f27128;
|
||||
--brand-deep: #08080b;
|
||||
--brand-muted: #475569;
|
||||
--ink: #f8fafc;
|
||||
--surface-warm: #0f0f14;
|
||||
--naturegreen: #10b981;
|
||||
--naturegreen-foreground: #08080b;
|
||||
--duck-dark: #f8fafc;
|
||||
--duck-teal: #06b6d4;
|
||||
--duck-yellow: #f59e0b;
|
||||
--duck-orange: #f27128;
|
||||
--duck-forest: #10b981;
|
||||
--duck-beige: #26272b;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Forest Green — 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/abhijeet-swami/omarchy-forest-green-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='forest-green'] {
|
||||
--background: #080e0b;
|
||||
--foreground: #a8e6a1;
|
||||
--card: #0f1a14;
|
||||
--card-foreground: #a8e6a1;
|
||||
--popover: #0f1a14;
|
||||
--popover-foreground: #a8e6a1;
|
||||
--muted: #202a24;
|
||||
--muted-foreground: #7aa977;
|
||||
--accent: #202a24;
|
||||
--accent-foreground: #a8e6a1;
|
||||
--primary: #8be9fd;
|
||||
--primary-foreground: #080e0b;
|
||||
--secondary: #202a24;
|
||||
--secondary-foreground: #a8e6a1;
|
||||
--cta: #8be9fd;
|
||||
--cta-foreground: #080e0b;
|
||||
--ctahover: #99ecfd;
|
||||
--success: #6bbf7a;
|
||||
--success-foreground: #080e0b;
|
||||
--warning: #d7ba7d;
|
||||
--warning-foreground: #080e0b;
|
||||
--destructive: #e06c75;
|
||||
--destructive-foreground: #080e0b;
|
||||
--info: #5fa9a8;
|
||||
--info-foreground: #080e0b;
|
||||
--busy: #dc9379;
|
||||
--busy-foreground: #080e0b;
|
||||
--busy-ink: #dc9379;
|
||||
--border: #2d4230;
|
||||
--input: #2d4230;
|
||||
--ring: #8be9fd;
|
||||
--radius: 0.625rem;
|
||||
--chart-primary: #8be9fd;
|
||||
--chart-secondary: #c678dd;
|
||||
--status-success: #6bbf7a;
|
||||
--status-warning: #d7ba7d;
|
||||
--status-in-progress: #5fa9a8;
|
||||
--page-bg: #080e0b;
|
||||
--page-bg-src: '';
|
||||
--panel-bg: rgb(15 26 20 / 0.72);
|
||||
--panel-border: rgb(45 66 48 / 0.9);
|
||||
--panel-border-bare: rgb(45 66 48 / 0.55);
|
||||
--panel-raised-bg: rgb(15 26 20 / 0.95);
|
||||
--panel-raised-border: rgb(45 66 48 / 1);
|
||||
--panel-accent: #8be9fd;
|
||||
--panel-header-bg: rgb(32 42 36 / 0.6);
|
||||
--panel-header-fg: #a8e6a1;
|
||||
--panel-radius: 0.75rem;
|
||||
--panel-blur: 12px;
|
||||
--card-bg: #0f1a14;
|
||||
--glass-bg: rgb(15 26 20 / 0.55);
|
||||
--glass-border: rgb(45 66 48 / 0.7);
|
||||
--dock-bg: rgb(15 26 20 / 0.7);
|
||||
--dock-border: rgb(45 66 48 / 0.8);
|
||||
--dock-tooltip-bg: #202a24;
|
||||
--header-bg: rgb(15 26 20 / 0.8);
|
||||
--header-border: rgb(45 66 48 / 0.9);
|
||||
--header-fg: #a8e6a1;
|
||||
--header-blur: 12px;
|
||||
--pixel-grid-color: rgb(84 118 83 / 0.07);
|
||||
--card-grid-color: rgb(84 118 83 / 0.05);
|
||||
--panel-grid-color: rgb(84 118 83 / 0.06);
|
||||
--scrollbar-thumb: rgb(58 74 61 / 0.6);
|
||||
--scrollbar-thumb-hover: rgb(58 74 61 / 0.85);
|
||||
--scrollbar-thin-thumb: rgb(58 74 61 / 0.45);
|
||||
--scrollbar-thin-thumb-hover: rgb(58 74 61 / 0.7);
|
||||
--brand: #8be9fd;
|
||||
--brand-foreground: #080e0b;
|
||||
--brand-primary: #8be9fd;
|
||||
--brand-accent: #56b6c2;
|
||||
--brand-warm: #dc9379;
|
||||
--brand-deep: #080e0b;
|
||||
--brand-muted: #3a4a3d;
|
||||
--ink: #a8e6a1;
|
||||
--surface-warm: #0f1a14;
|
||||
--naturegreen: #6bbf7a;
|
||||
--naturegreen-foreground: #080e0b;
|
||||
--duck-dark: #a8e6a1;
|
||||
--duck-teal: #56b6c2;
|
||||
--duck-yellow: #d7ba7d;
|
||||
--duck-orange: #dc9379;
|
||||
--duck-forest: #6bbf7a;
|
||||
--duck-beige: #1e2e22;
|
||||
--logo-src: '/officer-logo.svg';
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user