1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
//! Application theme module for comprehensive TUI theming.
//!
//! This module provides [`AppTheme`] which is the main theme struct that
//! contains all colors needed for a complete TUI application, including
//! UI colors, text colors, background colors, border colors, and specialized
//! color sets for diffs, markdown, and syntax highlighting.
//!
//! # Color Categories
//!
//! The theme is organized into logical categories:
//!
//! - **UI Colors**: `primary`, `secondary`, `accent`, `error`, `warning`, `success`, `info`
//! - **Text Colors**: `text`, `text_muted`, `selected_text`
//! - **Background Colors**: `background`, `background_panel`, `background_element`, `background_menu`
//! - **Border Colors**: `border`, `border_active`, `border_subtle`
//! - **Specialized**: [`DiffColors`], [`MarkdownColors`], [`SyntaxColors`]
//!
//! # Loading Themes
//!
//! Themes can be loaded from JSON files in the opencode format using the
//! [`loader`](crate::services::theme::loader) module.
//!
//! # Example
//!
//! ```rust
//! use ratatui_toolkit::services::theme::{AppTheme, ThemeVariant};
//!
//! // Use default theme
//! let theme = AppTheme::default();
//!
//! // Access UI colors
//! let primary = theme.primary;
//! let error = theme.error;
//!
//! // Access specialized colors
//! let diff_added = theme.diff.added;
//! let heading_color = theme.markdown.heading;
//! ```
use Color;
use crateDiffColors;
use crateMarkdownColors;
use crateSyntaxColors;
/// Comprehensive application theme with all widget colors.
///
/// This struct provides a complete color scheme for TUI applications,
/// covering all common UI elements and specialized widget colors.
///
/// # Theme Structure
///
/// The theme is organized into:
///
/// 1. **UI Colors** - Semantic colors for interactive elements
/// 2. **Text Colors** - Colors for text content
/// 3. **Background Colors** - Surface and container backgrounds
/// 4. **Border Colors** - Border and divider colors
/// 5. **Diff Colors** - Colors for diff rendering
/// 6. **Markdown Colors** - Colors for markdown content
/// 7. **Syntax Colors** - Colors for code syntax highlighting
///
/// # Loading from JSON
///
/// Use [`AppTheme::from_json`] or the loader module to load themes
/// from opencode-format JSON files.