дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 19:25:54 +02:00
Per the maintainer's decision for #24, no third-party themes are bundled; instead a theme plugin template and docs let the community port themes (IntelliJ also ships few themes, the rest are plugins). - templates/theme-plugin: manifest-only plugin with an original example (Harbor Night) covering every UI token and an editor scheme (.icls equivalent). - docs/plugins/themes.md: format, IntelliJ / VS Code porting tables, generated token reference (pnpm gen:theme-docs); drift test fails when tokens.css and the template/reference disagree. - pnpm theme:import-intellij: dependency-free converter for IntelliJ .theme.json (+ .icls). - Plugin host: themes may name an editor-scheme merged over the theme; comments allowed in theme files. - Fixes: a plugin theme's kind now switches the light/dark base; plugin themes go in their own stylesheet so the Appearance accent and editor scheme still layer on top. Verified: ide-plugin tests, vitest (44), in-app on macOS: installed the template from disk, applied Harbor Night (dark base + teal accent over Islands Light), back to default restored the light theme. Claude-Session: https://claude.ai/code/session_01VUYsdXA2nkF5v6zsC93dpn
141 рядки
4.5 KiB
JSON
141 рядки
4.5 KiB
JSON
// Harbor Night: UI theme. Keys are the CSS variables of src/styles/tokens.css,
|
|
// grouped like its Islands Light block. Delete a line to keep the built-in value
|
|
// of the base named by "kind". Comments are allowed (// and /* */).
|
|
// Full reference: docs/plugins/themes.md.
|
|
{
|
|
"id": "harbor-night",
|
|
"name": "Harbor Night",
|
|
"kind": "dark",
|
|
"tokens": {
|
|
// Surfaces
|
|
"--bg-app": "#14171c",
|
|
"--bg-elev": "#1b2027",
|
|
"--bg-popup": "#1f252e",
|
|
"--bg-hover": "#262c33",
|
|
"--bg-selected": "#22484b",
|
|
"--bg-selected-strong": "#285a5d",
|
|
"--bg-current-line": "#191e25",
|
|
"--bg-debug-line": "#245a5c",
|
|
"--bg-backdrop": "#1f252e",
|
|
"--bg-input": "#14171c",
|
|
|
|
// Lines
|
|
"--border": "#1f252e",
|
|
"--border-popup": "#2a333f",
|
|
"--border-strong": "#36414f",
|
|
"--border-window": "#36414f",
|
|
"--control-off": "#515f72",
|
|
|
|
// Text
|
|
"--fg-strong": "#d9dfe6",
|
|
"--fg-emphasis": "#c9d1dc",
|
|
"--fg": "#c9d1dc",
|
|
"--fg-secondary": "#919fb1",
|
|
"--fg-muted": "#7c8ca0",
|
|
"--fg-subtle": "#637287",
|
|
"--fg-faint": "#515f72",
|
|
"--fg-gutter": "#3f4d60",
|
|
"--fg-icon": "#c6ced9",
|
|
|
|
// Accent
|
|
"--accent": "#2b9e93",
|
|
"--link": "#5cc8bd",
|
|
"--link-hover": "#8adcd3",
|
|
|
|
// Status
|
|
"--danger": "#f57e84",
|
|
"--warning": "#d59637",
|
|
"--success": "#6db083",
|
|
"--db-connected": "#2fe02f",
|
|
"--db-connected-ring": "#1d6b1d",
|
|
"--info": "#4fb0d0",
|
|
|
|
// Vcs
|
|
"--vcs-modified": "#82ede6",
|
|
"--vcs-added": "#73bd79",
|
|
"--vcs-deleted": "#5f6f85",
|
|
"--vcs-untracked": "#e88f89",
|
|
"--vcs-ignored": "#d69a6b",
|
|
"--vcs-conflict": "#de6a66",
|
|
"--gutter-modified": "#469e98",
|
|
"--gutter-added": "#549159",
|
|
"--gutter-deleted": "#75869d",
|
|
|
|
// Shadows and window controls
|
|
"--shadow-popup": "0 6px 20px rgba(0, 0, 0, 0.45)",
|
|
"--shadow-dialog": "0 0 0 0.5px rgba(0, 0, 0, 0.6), 0 10px 24px rgba(0, 0, 0, 0.35), 0 24px 72px rgba(0, 0, 0, 0.45)",
|
|
"--traffic-close": "#ff5f57",
|
|
"--traffic-close-border": "#e0443e",
|
|
"--traffic-close-pressed": "#bf4942",
|
|
"--traffic-glyph": "#4d0000",
|
|
"--traffic-off": "#404955",
|
|
"--traffic-off-border": "#363e49",
|
|
|
|
// Additive
|
|
"--bg-tooltip": "#2a333f",
|
|
"--fg-tooltip": "#c9d1dc",
|
|
"--border-tooltip": "#2a333f",
|
|
"--bg-control": "#1f252e",
|
|
"--bg-control-hover": "#2a333f",
|
|
"--bg-active": "#36414f",
|
|
"--bg-scrim": "rgba(0, 0, 0, 0.45)",
|
|
"--fg-on-accent": "#ffffff",
|
|
"--shadow-tooltip": "0 4px 12px rgba(0, 0, 0, 0.4)",
|
|
"--shadow-balloon": "0 8px 24px rgba(0, 0, 0, 0.45)",
|
|
|
|
// Islands contract
|
|
"--bg-frame": "#1f252e",
|
|
"--bg-island": "#14171c",
|
|
"--bg-stripe-hover": "#ffffff17",
|
|
"--bg-stripe-selected": "#ffffff29",
|
|
"--fg-stripe-selected-active": "#ffffff",
|
|
"--fg-stripe-label": "#919fb1",
|
|
"--bg-tab-selected": "#1e3d40",
|
|
"--border-tab-selected": "#2b9e93",
|
|
"--bg-tab-selected-inactive": "#1f252e",
|
|
"--border-tab-selected-inactive": "#36414f",
|
|
"--bg-tab-hover": "#ffffff17",
|
|
"--border-editor-tabs": "#1f252e",
|
|
"--bg-tree-selected": "#22484b",
|
|
"--bg-tree-selected-inactive": "#2a333f",
|
|
"--bg-tree-hover": "#ffffff10",
|
|
"--bg-toolbar-hover": "#ffffff17",
|
|
"--bg-toolbar-pressed": "#ffffff29",
|
|
"--bg-toolbar-selected": "#285a5d",
|
|
"--bg-toolbar-selected-hover": "#2f6b6e",
|
|
"--bg-button-primary-hover": "#40a8a1",
|
|
"--fg-button-primary": "#ffffff",
|
|
"--bg-button": "transparent",
|
|
"--border-button": "#36414f",
|
|
"--bg-field": "#14171c",
|
|
"--bg-checkbox": "#14171c",
|
|
"--border-checkbox": "#515f72",
|
|
"--bg-toggle-on": "#338555",
|
|
"--fg-toggle-on": "#ffffff",
|
|
"--bg-toggle-off": "#14171c",
|
|
"--fg-toggle-off": "#637287",
|
|
"--border-toggle": "#515f72",
|
|
"--bg-toggle-knob": "#515f72",
|
|
"--focus-ring-soft": "#467c78",
|
|
"--scrollbar-thumb": "#ffffff33",
|
|
"--scrollbar-thumb-hover": "#ffffff59",
|
|
"--bg-search-match": "#ba9752",
|
|
"--bg-search-match-current": "#f2c55c",
|
|
"--fg-search-match": "#14171c",
|
|
"--bg-dialog": "#14171c",
|
|
"--bg-popup-inline": "#1f252e",
|
|
"--bg-popup-advertiser": "#1f252e",
|
|
"--bg-feedback-info": "#2a514f",
|
|
"--border-feedback-info": "#397e79",
|
|
"--bg-feedback-error": "#56272b",
|
|
"--border-feedback-error": "#80383e",
|
|
"--bg-feedback-warning": "#44321d",
|
|
"--border-feedback-warning": "#694820",
|
|
"--bg-feedback-success": "#203b2a",
|
|
"--border-feedback-success": "#29583c",
|
|
"--bg-counter": "#637287",
|
|
"--fg-counter": "#000000",
|
|
"--bg-progress-track": "#36414f"
|
|
}
|
|
}
|