@carlesandres/house 0.4.14 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/README.md +10 -8
  3. package/dist/bin.js +92 -0
  4. package/dist/index.js +10005 -0
  5. package/package.json +15 -3
  6. package/src/Browser.tsx +0 -1210
  7. package/src/CommandPalette.tsx +0 -214
  8. package/src/Footer.tsx +0 -258
  9. package/src/Header.tsx +0 -160
  10. package/src/PromptRow.tsx +0 -51
  11. package/src/Spinner.tsx +0 -39
  12. package/src/StatusIndicator.tsx +0 -55
  13. package/src/StatusPopover.tsx +0 -166
  14. package/src/brand.ts +0 -7
  15. package/src/cli/argv.ts +0 -179
  16. package/src/commands/buildCommands.ts +0 -98
  17. package/src/commands/paletteOnlyCommands.ts +0 -27
  18. package/src/commands/score.ts +0 -78
  19. package/src/commands/types.ts +0 -26
  20. package/src/config/load.ts +0 -381
  21. package/src/config/save.ts +0 -95
  22. package/src/discovery/filter.ts +0 -148
  23. package/src/discovery/rootLabel.ts +0 -18
  24. package/src/discovery/show.ts +0 -48
  25. package/src/discovery/walk.ts +0 -209
  26. package/src/index.tsx +0 -469
  27. package/src/io/clipboard.ts +0 -53
  28. package/src/io/editor.ts +0 -162
  29. package/src/io/readFile.ts +0 -14
  30. package/src/keymap/browser.ts +0 -335
  31. package/src/keymap/displayKey.ts +0 -17
  32. package/src/keymap/keymap.ts +0 -95
  33. package/src/layout/resolve.ts +0 -52
  34. package/src/layout/sidebarEmptyState.ts +0 -7
  35. package/src/layout/sidebarRow.ts +0 -69
  36. package/src/markdown/frontmatter.ts +0 -62
  37. package/src/serve/css.ts +0 -120
  38. package/src/serve/openBrowser.ts +0 -19
  39. package/src/serve/render.ts +0 -56
  40. package/src/serve/server.ts +0 -166
  41. package/src/theme/atom.ts +0 -23
  42. package/src/theme/colors.ts +0 -86
  43. package/src/theme/loader.ts +0 -110
  44. package/src/theme/registry.ts +0 -12
  45. package/src/theme/resolve.ts +0 -168
  46. package/src/theme/themes/aura.json +0 -58
  47. package/src/theme/themes/ayu.json +0 -69
  48. package/src/theme/themes/carbonfox.json +0 -201
  49. package/src/theme/themes/catppuccin-frappe.json +0 -186
  50. package/src/theme/themes/catppuccin-macchiato.json +0 -186
  51. package/src/theme/themes/catppuccin.json +0 -212
  52. package/src/theme/themes/cobalt2.json +0 -181
  53. package/src/theme/themes/cursor.json +0 -202
  54. package/src/theme/themes/dracula.json +0 -172
  55. package/src/theme/themes/everforest.json +0 -194
  56. package/src/theme/themes/flexoki.json +0 -190
  57. package/src/theme/themes/github.json +0 -186
  58. package/src/theme/themes/gruvbox.json +0 -195
  59. package/src/theme/themes/kanagawa.json +0 -180
  60. package/src/theme/themes/lucent-orng.json +0 -186
  61. package/src/theme/themes/material.json +0 -188
  62. package/src/theme/themes/matrix.json +0 -180
  63. package/src/theme/themes/mercury.json +0 -198
  64. package/src/theme/themes/monokai.json +0 -174
  65. package/src/theme/themes/nightowl.json +0 -174
  66. package/src/theme/themes/nord.json +0 -176
  67. package/src/theme/themes/one-dark.json +0 -184
  68. package/src/theme/themes/opencode.json +0 -198
  69. package/src/theme/themes/orng.json +0 -202
  70. package/src/theme/themes/osaka-jade.json +0 -193
  71. package/src/theme/themes/palenight.json +0 -175
  72. package/src/theme/themes/rosepine.json +0 -187
  73. package/src/theme/themes/solarized.json +0 -180
  74. package/src/theme/themes/synthwave84.json +0 -179
  75. package/src/theme/themes/tokyonight.json +0 -196
  76. package/src/theme/themes/vercel.json +0 -198
  77. package/src/theme/themes/vesper.json +0 -171
  78. package/src/theme/themes/zenburn.json +0 -176
  79. package/src/theme/types.ts +0 -115
  80. package/src/tips.ts +0 -88
  81. package/src/ui/middleTruncate.ts +0 -27
  82. package/src/update/cache.ts +0 -77
  83. package/src/update/check.ts +0 -165
  84. package/src/update/compare.ts +0 -41
  85. package/src/update/notice.ts +0 -29
  86. package/src/update/runtime.ts +0 -48
  87. package/src/update/useUpdateNotice.ts +0 -24
@@ -1,110 +0,0 @@
1
- // THIS FILE IS AUTO-GENERATED by dev/build-themes.ts — do not edit by hand.
2
- // Run `bun run build:themes` to regenerate after adding or updating themes.
3
- import auraJson from "./themes/aura.json" with { type: "json" }
4
- import ayuJson from "./themes/ayu.json" with { type: "json" }
5
- import carbonfoxJson from "./themes/carbonfox.json" with { type: "json" }
6
- import catppuccinJson from "./themes/catppuccin.json" with { type: "json" }
7
- import catppuccinFrappeJson from "./themes/catppuccin-frappe.json" with { type: "json" }
8
- import catppuccinMacchiatoJson from "./themes/catppuccin-macchiato.json" with { type: "json" }
9
- import cobalt2Json from "./themes/cobalt2.json" with { type: "json" }
10
- import cursorJson from "./themes/cursor.json" with { type: "json" }
11
- import draculaJson from "./themes/dracula.json" with { type: "json" }
12
- import everforestJson from "./themes/everforest.json" with { type: "json" }
13
- import flexokiJson from "./themes/flexoki.json" with { type: "json" }
14
- import githubJson from "./themes/github.json" with { type: "json" }
15
- import gruvboxJson from "./themes/gruvbox.json" with { type: "json" }
16
- import kanagawaJson from "./themes/kanagawa.json" with { type: "json" }
17
- import lucentOrngJson from "./themes/lucent-orng.json" with { type: "json" }
18
- import materialJson from "./themes/material.json" with { type: "json" }
19
- import matrixJson from "./themes/matrix.json" with { type: "json" }
20
- import mercuryJson from "./themes/mercury.json" with { type: "json" }
21
- import monokaiJson from "./themes/monokai.json" with { type: "json" }
22
- import nightowlJson from "./themes/nightowl.json" with { type: "json" }
23
- import nordJson from "./themes/nord.json" with { type: "json" }
24
- import oneDarkJson from "./themes/one-dark.json" with { type: "json" }
25
- import opencodeJson from "./themes/opencode.json" with { type: "json" }
26
- import orngJson from "./themes/orng.json" with { type: "json" }
27
- import osakaJadeJson from "./themes/osaka-jade.json" with { type: "json" }
28
- import palenightJson from "./themes/palenight.json" with { type: "json" }
29
- import rosepineJson from "./themes/rosepine.json" with { type: "json" }
30
- import solarizedJson from "./themes/solarized.json" with { type: "json" }
31
- import synthwave84Json from "./themes/synthwave84.json" with { type: "json" }
32
- import tokyonightJson from "./themes/tokyonight.json" with { type: "json" }
33
- import vercelJson from "./themes/vercel.json" with { type: "json" }
34
- import vesperJson from "./themes/vesper.json" with { type: "json" }
35
- import zenburnJson from "./themes/zenburn.json" with { type: "json" }
36
- import { isThemeJson } from "./resolve.ts"
37
- import type { ThemeDefinition, ThemeJson } from "./types.ts"
38
-
39
- interface BundledEntry {
40
- readonly id: string
41
- readonly json: unknown
42
- }
43
-
44
- const bundled: readonly BundledEntry[] = [
45
- { id: "aura", json: auraJson },
46
- { id: "ayu", json: ayuJson },
47
- { id: "carbonfox", json: carbonfoxJson },
48
- { id: "catppuccin", json: catppuccinJson },
49
- { id: "catppuccin-frappe", json: catppuccinFrappeJson },
50
- { id: "catppuccin-macchiato", json: catppuccinMacchiatoJson },
51
- { id: "cobalt2", json: cobalt2Json },
52
- { id: "cursor", json: cursorJson },
53
- { id: "dracula", json: draculaJson },
54
- { id: "everforest", json: everforestJson },
55
- { id: "flexoki", json: flexokiJson },
56
- { id: "github", json: githubJson },
57
- { id: "gruvbox", json: gruvboxJson },
58
- { id: "kanagawa", json: kanagawaJson },
59
- { id: "lucent-orng", json: lucentOrngJson },
60
- { id: "material", json: materialJson },
61
- { id: "matrix", json: matrixJson },
62
- { id: "mercury", json: mercuryJson },
63
- { id: "monokai", json: monokaiJson },
64
- { id: "nightowl", json: nightowlJson },
65
- { id: "nord", json: nordJson },
66
- { id: "one-dark", json: oneDarkJson },
67
- { id: "opencode", json: opencodeJson },
68
- { id: "orng", json: orngJson },
69
- { id: "osaka-jade", json: osakaJadeJson },
70
- { id: "palenight", json: palenightJson },
71
- { id: "rosepine", json: rosepineJson },
72
- { id: "solarized", json: solarizedJson },
73
- { id: "synthwave84", json: synthwave84Json },
74
- { id: "tokyonight", json: tokyonightJson },
75
- { id: "vercel", json: vercelJson },
76
- { id: "vesper", json: vesperJson },
77
- { id: "zenburn", json: zenburnJson },
78
- ]
79
-
80
- const toDefinition = (id: string, raw: unknown): ThemeDefinition | null => {
81
- if (!isThemeJson(raw)) return null
82
- const json = raw as ThemeJson
83
- return { id, name: json.name ?? id, source: json }
84
- }
85
-
86
- /** Load all bundled themes, indexed by id. Invalid entries are dropped. */
87
- export const loadBundledThemes = (): Map<string, ThemeDefinition> => {
88
- const map = new Map<string, ThemeDefinition>()
89
- for (const { id, json } of bundled) {
90
- const def = toDefinition(id, json)
91
- if (def) map.set(id, def)
92
- }
93
- return map
94
- }
95
-
96
- /**
97
- * Stub for user-supplied themes. A future release will load these from the
98
- * XDG config dir and from project-local `.house/themes/`. Until then,
99
- * returns an empty map.
100
- */
101
- export const loadUserThemes = async (): Promise<Map<string, ThemeDefinition>> => {
102
- return new Map()
103
- }
104
-
105
- /** Bundled + user themes merged. User themes override built-ins by id. */
106
- export const loadAllThemes = async (): Promise<Map<string, ThemeDefinition>> => {
107
- const all = loadBundledThemes()
108
- for (const [id, def] of await loadUserThemes()) all.set(id, def)
109
- return all
110
- }
@@ -1,12 +0,0 @@
1
- import { loadBundledThemes } from "./loader.ts"
2
- import type { ThemeDefinition } from "./types.ts"
3
-
4
- const map: Map<string, ThemeDefinition> = loadBundledThemes()
5
-
6
- /** All known themes. Order is the bundled-themes order in `loader.ts`. */
7
- export const themeDefinitions: readonly ThemeDefinition[] = [...map.values()]
8
-
9
- export const getThemeDefinition = (id: string): ThemeDefinition | undefined => map.get(id)
10
-
11
- export const isThemeId = (value: unknown): value is string =>
12
- typeof value === "string" && map.has(value)
@@ -1,168 +0,0 @@
1
- import type {
2
- ColorValue,
3
- HexColor,
4
- ResolvedTheme,
5
- ThemeJson,
6
- ThemeTokens,
7
- TokenName,
8
- Tone,
9
- } from "./types.ts"
10
-
11
- /**
12
- * Hard-coded safe defaults for every UI / markdown / syntax token. Used when
13
- * a theme JSON omits a token entirely (validation is permissive — opencode
14
- * does the same). Fallback values are reasonable greys so the app stays
15
- * legible even with a near-empty theme.
16
- */
17
- const HARD_FALLBACK_RAW: Readonly<Record<TokenName, HexColor>> = {
18
- primary: "#7AA2F7",
19
- secondary: "#9ECE6A",
20
- accent: "#BB9AF7",
21
- error: "#F7768E",
22
- warning: "#E0AF68",
23
- success: "#9ECE6A",
24
- info: "#7DCFFF",
25
- text: "#D8DEE9",
26
- textMuted: "#7B8794",
27
- selectedListItemText: "#FFFFFF",
28
- background: "#1A1B26",
29
- backgroundPanel: "#24283B",
30
- backgroundElement: "#414868",
31
- border: "#3B4261",
32
- borderActive: "#7AA2F7",
33
- borderSubtle: "#292E42",
34
- markdownText: "#D8DEE9",
35
- markdownHeading: "#7AA2F7",
36
- markdownLink: "#7DCFFF",
37
- markdownLinkText: "#7AA2F7",
38
- markdownCode: "#9ECE6A",
39
- markdownBlockQuote: "#7B8794",
40
- markdownEmph: "#E0AF68",
41
- markdownStrong: "#FFFFFF",
42
- markdownHorizontalRule: "#7B8794",
43
- markdownListItem: "#7AA2F7",
44
- markdownListEnumeration: "#BB9AF7",
45
- markdownImage: "#7DCFFF",
46
- markdownImageText: "#BB9AF7",
47
- markdownCodeBlock: "#D8DEE9",
48
- syntaxComment: "#7B8794",
49
- syntaxKeyword: "#7AA2F7",
50
- syntaxFunction: "#7DCFFF",
51
- syntaxVariable: "#D8DEE9",
52
- syntaxString: "#9ECE6A",
53
- syntaxNumber: "#BB9AF7",
54
- syntaxType: "#E0AF68",
55
- syntaxOperator: "#7AA2F7",
56
- syntaxPunctuation: "#D8DEE9",
57
- }
58
-
59
- const HEX_RE_INIT = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/
60
- const lowerHex = (hex: HexColor): HexColor => {
61
- const v = hex.replace("#", "")
62
- const expanded =
63
- v.length === 3 || v.length === 4
64
- ? v
65
- .split("")
66
- .map((c) => c + c)
67
- .join("")
68
- : v
69
- const rgb = expanded.length === 8 ? expanded.slice(0, 6) : expanded
70
- return `#${rgb.toLowerCase()}` as HexColor
71
- }
72
- // Sanity: ensure HARD_FALLBACK_RAW matches the hex regex (catch a typo at load).
73
- for (const v of Object.values(HARD_FALLBACK_RAW)) {
74
- if (!HEX_RE_INIT.test(v)) throw new Error(`bad fallback hex: ${v}`)
75
- }
76
- const HARD_FALLBACK: Readonly<Record<TokenName, HexColor>> = Object.fromEntries(
77
- Object.entries(HARD_FALLBACK_RAW).map(([k, v]) => [k, lowerHex(v)]),
78
- ) as Readonly<Record<TokenName, HexColor>>
79
-
80
- /**
81
- * Tokens that fall back to another token (rather than `HARD_FALLBACK`) when
82
- * the theme omits them. Mirrors opencode's resolve behavior.
83
- */
84
- const TOKEN_FALLBACK: Partial<Record<TokenName, TokenName>> = {
85
- selectedListItemText: "text",
86
- markdownText: "text",
87
- markdownCodeBlock: "text",
88
- borderSubtle: "border",
89
- }
90
-
91
- const HEX_RE = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/
92
-
93
- const isHex = (value: string): value is HexColor => HEX_RE.test(value)
94
-
95
- /** Normalize a hex value to `#rrggbb` (lowercase, 6-digit). */
96
- const normalizeHex = (value: HexColor): HexColor => {
97
- const v = value.replace("#", "")
98
- const expanded =
99
- v.length === 3 || v.length === 4
100
- ? v
101
- .split("")
102
- .map((c) => c + c)
103
- .join("")
104
- : v
105
- const rgb = expanded.length === 8 ? expanded.slice(0, 6) : expanded
106
- return `#${rgb.toLowerCase()}` as HexColor
107
- }
108
-
109
- /**
110
- * Resolve a single side of a {dark,light} variant — i.e. a string that's
111
- * either a hex literal or a name in the theme's `defs` map. Returns `null`
112
- * if the input doesn't resolve (caller falls back).
113
- */
114
- const resolveSide = (value: string, defs: Record<string, string>): HexColor | null => {
115
- if (isHex(value)) return normalizeHex(value)
116
- const looked = defs[value]
117
- if (looked && isHex(looked)) return normalizeHex(looked)
118
- return null
119
- }
120
-
121
- /** Resolve a single ColorValue (variant, hex, or defs ref) for a tone. */
122
- export const resolveColorValue = (
123
- value: ColorValue | undefined,
124
- tone: Tone,
125
- defs: Record<string, string> = {},
126
- ): HexColor | null => {
127
- if (value === undefined) return null
128
- if (typeof value === "string") return resolveSide(value, defs)
129
- const side = value[tone]
130
- return resolveSide(side, defs)
131
- }
132
-
133
- /**
134
- * Resolve a theme JSON to a flat record of `{ token → #rrggbb }` for the
135
- * given tone. Missing tokens fall back via `TOKEN_FALLBACK` (chained) and
136
- * ultimately `HARD_FALLBACK`.
137
- */
138
- export const resolveTheme = (theme: ThemeJson, tone: Tone): ResolvedTheme => {
139
- const defs = theme.defs ?? {}
140
- const out: Partial<Record<TokenName, HexColor>> = {}
141
-
142
- const tokenNames = Object.keys(HARD_FALLBACK) as readonly TokenName[]
143
- const seen = new Set<TokenName>()
144
- const resolveOne = (name: TokenName): HexColor => {
145
- if (seen.has(name)) return HARD_FALLBACK[name]
146
- seen.add(name)
147
- const direct = resolveColorValue(theme.theme[name], tone, defs)
148
- if (direct) return direct
149
- const fallback = TOKEN_FALLBACK[name]
150
- if (fallback) return resolveOne(fallback)
151
- return HARD_FALLBACK[name]
152
- }
153
-
154
- for (const name of tokenNames) {
155
- seen.clear()
156
- out[name] = resolveOne(name)
157
- }
158
- return out as ResolvedTheme
159
- }
160
-
161
- /** Permissive runtime validation: any object with a `theme` object passes. */
162
- export const isThemeJson = (value: unknown): value is ThemeJson => {
163
- if (typeof value !== "object" || value === null) return false
164
- const v = value as Record<string, unknown>
165
- return typeof v["theme"] === "object" && v["theme"] !== null
166
- }
167
-
168
- export type { ThemeTokens }
@@ -1,58 +0,0 @@
1
- {
2
- "defs": {
3
- "darkBg": "#0f0f0f",
4
- "darkBgPanel": "#15141b",
5
- "darkBorder": "#2d2d2d",
6
- "darkFgMuted": "#6d6d6d",
7
- "darkFg": "#edecee",
8
- "purple": "#a277ff",
9
- "pink": "#f694ff",
10
- "blue": "#82e2ff",
11
- "red": "#ff6767",
12
- "orange": "#ffca85",
13
- "cyan": "#61ffca",
14
- "green": "#9dff65"
15
- },
16
- "theme": {
17
- "primary": "purple",
18
- "secondary": "pink",
19
- "accent": "purple",
20
- "error": "red",
21
- "warning": "orange",
22
- "success": "cyan",
23
- "info": "purple",
24
- "text": "darkFg",
25
- "textMuted": "darkFgMuted",
26
- "background": "darkBg",
27
- "backgroundPanel": "darkBgPanel",
28
- "backgroundElement": "darkBorder",
29
- "border": "darkBorder",
30
- "borderActive": "darkFgMuted",
31
- "borderSubtle": "darkBorder",
32
- "markdownText": "darkFg",
33
- "markdownHeading": "purple",
34
- "markdownLink": "pink",
35
- "markdownLinkText": "purple",
36
- "markdownCode": "cyan",
37
- "markdownBlockQuote": "darkFgMuted",
38
- "markdownEmph": "orange",
39
- "markdownStrong": "purple",
40
- "markdownHorizontalRule": "darkFgMuted",
41
- "markdownListItem": "purple",
42
- "markdownListEnumeration": "purple",
43
- "markdownImage": "pink",
44
- "markdownImageText": "purple",
45
- "markdownCodeBlock": "darkFg",
46
- "syntaxComment": "darkFgMuted",
47
- "syntaxKeyword": "pink",
48
- "syntaxFunction": "purple",
49
- "syntaxVariable": "purple",
50
- "syntaxString": "cyan",
51
- "syntaxNumber": "green",
52
- "syntaxType": "purple",
53
- "syntaxOperator": "pink",
54
- "syntaxPunctuation": "darkFg"
55
- },
56
- "name": "Aura",
57
- "$schema": "../../../schema/house-theme.schema.json"
58
- }
@@ -1,69 +0,0 @@
1
- {
2
- "defs": {
3
- "darkBg": "#0B0E14",
4
- "darkBgAlt": "#0D1017",
5
- "darkLine": "#11151C",
6
- "darkPanel": "#0F131A",
7
- "darkFg": "#BFBDB6",
8
- "darkFgMuted": "#565B66",
9
- "darkGutter": "#6C7380",
10
- "darkTag": "#39BAE6",
11
- "darkFunc": "#FFB454",
12
- "darkEntity": "#59C2FF",
13
- "darkString": "#AAD94C",
14
- "darkRegexp": "#95E6CB",
15
- "darkMarkup": "#F07178",
16
- "darkKeyword": "#FF8F40",
17
- "darkSpecial": "#E6B673",
18
- "darkComment": "#ACB6BF",
19
- "darkConstant": "#D2A6FF",
20
- "darkOperator": "#F29668",
21
- "darkAdded": "#7FD962",
22
- "darkRemoved": "#F26D78",
23
- "darkAccent": "#E6B450",
24
- "darkError": "#D95757",
25
- "darkIndentActive": "#6C7380"
26
- },
27
- "theme": {
28
- "primary": "darkEntity",
29
- "secondary": "darkConstant",
30
- "accent": "darkAccent",
31
- "error": "darkError",
32
- "warning": "darkSpecial",
33
- "success": "darkAdded",
34
- "info": "darkTag",
35
- "text": "darkFg",
36
- "textMuted": "darkFgMuted",
37
- "background": "darkBg",
38
- "backgroundPanel": "darkPanel",
39
- "backgroundElement": "darkBgAlt",
40
- "border": "darkGutter",
41
- "borderActive": "darkIndentActive",
42
- "borderSubtle": "darkLine",
43
- "markdownText": "darkFg",
44
- "markdownHeading": "darkConstant",
45
- "markdownLink": "darkEntity",
46
- "markdownLinkText": "darkTag",
47
- "markdownCode": "darkString",
48
- "markdownBlockQuote": "darkSpecial",
49
- "markdownEmph": "darkSpecial",
50
- "markdownStrong": "darkFunc",
51
- "markdownHorizontalRule": "darkFgMuted",
52
- "markdownListItem": "darkEntity",
53
- "markdownListEnumeration": "darkTag",
54
- "markdownImage": "darkEntity",
55
- "markdownImageText": "darkTag",
56
- "markdownCodeBlock": "darkFg",
57
- "syntaxComment": "darkComment",
58
- "syntaxKeyword": "darkKeyword",
59
- "syntaxFunction": "darkFunc",
60
- "syntaxVariable": "darkEntity",
61
- "syntaxString": "darkString",
62
- "syntaxNumber": "darkConstant",
63
- "syntaxType": "darkSpecial",
64
- "syntaxOperator": "darkOperator",
65
- "syntaxPunctuation": "darkFg"
66
- },
67
- "name": "Ayu",
68
- "$schema": "../../../schema/house-theme.schema.json"
69
- }
@@ -1,201 +0,0 @@
1
- {
2
- "defs": {
3
- "bg0": "#0d0d0d",
4
- "bg1": "#161616",
5
- "bg1a": "#1a1a1a",
6
- "bg2": "#1e1e1e",
7
- "bg3": "#262626",
8
- "bg4": "#303030",
9
- "fg0": "#ffffff",
10
- "fg1": "#f2f4f8",
11
- "fg2": "#a9afbc",
12
- "fg3": "#7d848f",
13
- "lbg0": "#ffffff",
14
- "lbg1": "#f4f4f4",
15
- "lbg2": "#e8e8e8",
16
- "lbg3": "#dcdcdc",
17
- "lfg0": "#000000",
18
- "lfg1": "#161616",
19
- "lfg2": "#525252",
20
- "lfg3": "#6f6f6f",
21
- "red": "#ee5396",
22
- "green": "#25be6a",
23
- "yellow": "#08bdba",
24
- "blue": "#78a9ff",
25
- "magenta": "#be95ff",
26
- "cyan": "#33b1ff",
27
- "white": "#dfdfe0",
28
- "orange": "#3ddbd9",
29
- "pink": "#ff7eb6",
30
- "blueBright": "#8cb6ff",
31
- "cyanBright": "#52c7ff",
32
- "greenBright": "#46c880",
33
- "redLight": "#9f1853",
34
- "greenLight": "#198038",
35
- "yellowLight": "#007d79",
36
- "blueLight": "#0043ce",
37
- "magentaLight": "#6929c4",
38
- "cyanLight": "#0072c3",
39
- "warning": "#f1c21b",
40
- "diffGreen": "#50fa7b",
41
- "diffRed": "#ff6b6b",
42
- "diffGreenBg": "#0f2418",
43
- "diffRedBg": "#2a1216"
44
- },
45
- "theme": {
46
- "primary": {
47
- "dark": "cyan",
48
- "light": "blueLight"
49
- },
50
- "secondary": {
51
- "dark": "blue",
52
- "light": "blueLight"
53
- },
54
- "accent": {
55
- "dark": "pink",
56
- "light": "redLight"
57
- },
58
- "error": {
59
- "dark": "red",
60
- "light": "redLight"
61
- },
62
- "warning": {
63
- "dark": "warning",
64
- "light": "yellowLight"
65
- },
66
- "success": {
67
- "dark": "green",
68
- "light": "greenLight"
69
- },
70
- "info": {
71
- "dark": "blue",
72
- "light": "blueLight"
73
- },
74
- "text": {
75
- "dark": "fg1",
76
- "light": "lfg1"
77
- },
78
- "textMuted": {
79
- "dark": "fg3",
80
- "light": "lfg3"
81
- },
82
- "background": {
83
- "dark": "bg1",
84
- "light": "lbg0"
85
- },
86
- "backgroundPanel": {
87
- "dark": "bg1a",
88
- "light": "lbg1"
89
- },
90
- "backgroundElement": {
91
- "dark": "bg2",
92
- "light": "lbg2"
93
- },
94
- "border": {
95
- "dark": "bg4",
96
- "light": "lbg3"
97
- },
98
- "borderActive": {
99
- "dark": "cyan",
100
- "light": "blueLight"
101
- },
102
- "borderSubtle": {
103
- "dark": "bg3",
104
- "light": "lbg2"
105
- },
106
- "markdownText": {
107
- "dark": "fg1",
108
- "light": "lfg1"
109
- },
110
- "markdownHeading": {
111
- "dark": "blueBright",
112
- "light": "blueLight"
113
- },
114
- "markdownLink": {
115
- "dark": "blue",
116
- "light": "blueLight"
117
- },
118
- "markdownLinkText": {
119
- "dark": "cyan",
120
- "light": "cyanLight"
121
- },
122
- "markdownCode": {
123
- "dark": "green",
124
- "light": "greenLight"
125
- },
126
- "markdownBlockQuote": {
127
- "dark": "fg3",
128
- "light": "lfg3"
129
- },
130
- "markdownEmph": {
131
- "dark": "magenta",
132
- "light": "magentaLight"
133
- },
134
- "markdownStrong": {
135
- "dark": "fg0",
136
- "light": "lfg0"
137
- },
138
- "markdownHorizontalRule": {
139
- "dark": "bg4",
140
- "light": "lbg3"
141
- },
142
- "markdownListItem": {
143
- "dark": "cyan",
144
- "light": "cyanLight"
145
- },
146
- "markdownListEnumeration": {
147
- "dark": "cyan",
148
- "light": "cyanLight"
149
- },
150
- "markdownImage": {
151
- "dark": "blue",
152
- "light": "blueLight"
153
- },
154
- "markdownImageText": {
155
- "dark": "cyan",
156
- "light": "cyanLight"
157
- },
158
- "markdownCodeBlock": {
159
- "dark": "fg2",
160
- "light": "lfg2"
161
- },
162
- "syntaxComment": {
163
- "dark": "fg3",
164
- "light": "lfg3"
165
- },
166
- "syntaxKeyword": {
167
- "dark": "magenta",
168
- "light": "magentaLight"
169
- },
170
- "syntaxFunction": {
171
- "dark": "blueBright",
172
- "light": "blueLight"
173
- },
174
- "syntaxVariable": {
175
- "dark": "white",
176
- "light": "lfg1"
177
- },
178
- "syntaxString": {
179
- "dark": "green",
180
- "light": "greenLight"
181
- },
182
- "syntaxNumber": {
183
- "dark": "orange",
184
- "light": "yellowLight"
185
- },
186
- "syntaxType": {
187
- "dark": "yellow",
188
- "light": "yellowLight"
189
- },
190
- "syntaxOperator": {
191
- "dark": "fg2",
192
- "light": "lfg2"
193
- },
194
- "syntaxPunctuation": {
195
- "dark": "fg2",
196
- "light": "lfg1"
197
- }
198
- },
199
- "name": "Carbonfox",
200
- "$schema": "../../../schema/house-theme.schema.json"
201
- }