Initial Release: OpenQode Public Alpha v1.3
This commit is contained in:
90
bin/tui-theme.mjs
Normal file
90
bin/tui-theme.mjs
Normal file
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* TUI Theme Module - Centralized styling for OpenQode TUI
|
||||
* Provides consistent colors, spacing, and border styles
|
||||
* With capability detection for cross-platform compatibility
|
||||
*/
|
||||
|
||||
// Capability detection
|
||||
const hasUnicode = process.platform !== 'win32' ||
|
||||
process.env.WT_SESSION || // Windows Terminal
|
||||
process.env.TERM_PROGRAM === 'vscode'; // VS Code integrated terminal
|
||||
|
||||
// Theme configuration
|
||||
export const theme = {
|
||||
// Spacing scale (terminal rows/chars)
|
||||
spacing: {
|
||||
xs: 0,
|
||||
sm: 1,
|
||||
md: 2,
|
||||
lg: 3
|
||||
},
|
||||
|
||||
// Semantic colors
|
||||
colors: {
|
||||
fg: 'white',
|
||||
muted: 'gray',
|
||||
border: 'gray',
|
||||
info: 'cyan',
|
||||
success: 'green',
|
||||
warning: 'yellow',
|
||||
error: 'red',
|
||||
accent: 'magenta',
|
||||
user: 'cyan',
|
||||
assistant: 'white',
|
||||
system: 'yellow'
|
||||
},
|
||||
|
||||
// Border styles with fallback
|
||||
borders: {
|
||||
default: hasUnicode ? 'round' : 'single',
|
||||
single: 'single',
|
||||
round: hasUnicode ? 'round' : 'single',
|
||||
double: hasUnicode ? 'double' : 'single'
|
||||
},
|
||||
|
||||
// Card-specific styles
|
||||
cards: {
|
||||
system: {
|
||||
borderStyle: hasUnicode ? 'round' : 'single',
|
||||
borderColor: 'yellow',
|
||||
paddingX: 1,
|
||||
paddingY: 0,
|
||||
marginBottom: 1
|
||||
},
|
||||
user: {
|
||||
marginTop: 1,
|
||||
marginBottom: 1,
|
||||
promptIcon: hasUnicode ? '❯' : '>',
|
||||
promptColor: 'cyan'
|
||||
},
|
||||
assistant: {
|
||||
borderStyle: 'single',
|
||||
borderColor: 'gray',
|
||||
paddingX: 1,
|
||||
paddingY: 0,
|
||||
marginBottom: 1,
|
||||
divider: hasUnicode ? '── Assistant ──' : '-- Assistant --'
|
||||
},
|
||||
error: {
|
||||
borderStyle: hasUnicode ? 'round' : 'single',
|
||||
borderColor: 'red',
|
||||
paddingX: 1,
|
||||
paddingY: 0,
|
||||
marginBottom: 1,
|
||||
icon: hasUnicode ? '⚠' : '!'
|
||||
}
|
||||
},
|
||||
|
||||
// Icons with fallback
|
||||
icons: {
|
||||
info: hasUnicode ? 'ℹ' : 'i',
|
||||
warning: hasUnicode ? '⚠' : '!',
|
||||
error: hasUnicode ? '✗' : 'X',
|
||||
success: hasUnicode ? '✓' : 'OK',
|
||||
bullet: hasUnicode ? '•' : '-',
|
||||
arrow: hasUnicode ? '→' : '->',
|
||||
prompt: hasUnicode ? '❯' : '>'
|
||||
}
|
||||
};
|
||||
|
||||
export default theme;
|
||||
Reference in New Issue
Block a user