| 88 | type ProcessEnv = Readonly<Record<string, string | undefined>>; |
| 89 | |
| 90 | function createNoColorTheme(theme: ThemeDefinition | undefined): ThemeDefinition { |
| 91 | const base = theme ?? darkTheme; |
| 92 | const mono = base.colors.fg.primary; |
| 93 | return Object.freeze({ |
| 94 | ...base, |
| 95 | colors: Object.freeze({ |
| 96 | ...base.colors, |
| 97 | accent: Object.freeze({ |
| 98 | primary: mono, |
| 99 | secondary: mono, |
| 100 | tertiary: mono, |
| 101 | }), |
| 102 | success: mono, |
| 103 | warning: mono, |
| 104 | error: mono, |
| 105 | info: mono, |
| 106 | focus: Object.freeze({ |
| 107 | ring: mono, |
| 108 | bg: base.colors.bg.base, |
| 109 | }), |
| 110 | selected: Object.freeze({ |
| 111 | bg: base.colors.bg.base, |
| 112 | fg: mono, |
| 113 | }), |
| 114 | disabled: Object.freeze({ |
| 115 | fg: mono, |
| 116 | bg: base.colors.bg.base, |
| 117 | }), |
| 118 | diagnostic: Object.freeze({ |
| 119 | error: mono, |
| 120 | warning: mono, |
| 121 | info: mono, |
| 122 | hint: mono, |
| 123 | }), |
| 124 | border: Object.freeze({ |
| 125 | subtle: mono, |
| 126 | default: mono, |
| 127 | strong: mono, |
| 128 | }), |
| 129 | }), |
| 130 | widget: Object.freeze({ |
| 131 | syntax: Object.freeze({ |
| 132 | keyword: mono, |
| 133 | type: mono, |
| 134 | string: mono, |
| 135 | number: mono, |
| 136 | comment: mono, |
| 137 | operator: mono, |
| 138 | punctuation: mono, |
| 139 | function: mono, |
| 140 | variable: mono, |
| 141 | cursorFg: base.colors.bg.base, |
| 142 | cursorBg: mono, |
| 143 | }), |
| 144 | diff: Object.freeze({ |
| 145 | addBg: base.colors.bg.base, |
| 146 | deleteBg: base.colors.bg.base, |
| 147 | addFg: mono, |