package theme // ThemeJSON is the file-backed theme DTO used for JSON unmarshalling. // // This mirrors the format documented in internal/theme/themes/README.md. // It is intentionally string-based so values can be validated and compiled // into EditorTheme styles in a separate step. type ThemeJSON struct { Name string `json:"name"` Line ColorStyleJSON `json:"line"` Background ColorStyleJSON `json:"background"` VisualHighlight ColorStyleJSON `json:"visual_highlight"` Cursors CursorJSON `json:"cursors"` Gutter GutterJSON `json:"gutter"` StatusBar StatusBarJSON `json:"status_bar"` CommandLine CommandLineJSON `json:"command_line"` Syntax SyntaxJSON `json:"syntax"` } // ColorStyleJSON represents a simple fg/bg style entry. // // For v1 themes, only color values are supported. type ColorStyleJSON struct { FG string `json:"fg,omitempty"` BG string `json:"bg,omitempty"` } type CursorJSON struct { Normal ColorStyleJSON `json:"normal"` Insert ColorStyleJSON `json:"insert"` Command ColorStyleJSON `json:"command"` Replace ColorStyleJSON `json:"replace"` } type GutterJSON struct { Default ColorStyleJSON `json:"default"` CurrentLine ColorStyleJSON `json:"current_line"` } type StatusBarJSON struct { Default ColorStyleJSON `json:"default"` } type CommandLineJSON struct { Error ColorStyleJSON `json:"error"` OutputBorder ColorStyleJSON `json:"output_border"` ContinueMessage ColorStyleJSON `json:"continue_message"` } type SyntaxJSON struct { Group map[string]string `json:"group"` Exact map[string]string `json:"exact"` }