rat_theme4/themes/
fallback.rs

1use crate::palette::{ColorIdx, Palette};
2use crate::theme::SalsaTheme;
3use crate::{RatWidgetColor, StyleName, WidgetStyle};
4#[cfg(feature = "rat-widget")]
5use rat_widget;
6#[cfg(feature = "color-input")]
7use rat_widget_extra::color_input::ColorInputStyle;
8use ratatui_core::style::{Color, Style};
9
10/// A theme to test the fallback-styles of each widget.
11pub fn create_fallback(p: Palette) -> SalsaTheme {
12    let mut th = SalsaTheme::new(p);
13    th.name = "Fallback".to_string();
14    th.theme = "Fallback".to_string();
15
16    th.p.add_aliased(Color::LABEL_FG, ColorIdx::default());
17    th.p.add_aliased(Color::INPUT_BG, ColorIdx::default());
18    th.p.add_aliased(Color::FOCUS_BG, ColorIdx::default());
19    th.p.add_aliased(Color::SELECT_BG, ColorIdx::default());
20    th.p.add_aliased(Color::DISABLED_BG, ColorIdx::default());
21    th.p.add_aliased(Color::INVALID_BG, ColorIdx::default());
22    th.p.add_aliased(Color::HOVER_BG, ColorIdx::default());
23    th.p.add_aliased(Color::TITLE_FG, ColorIdx::default());
24    th.p.add_aliased(Color::TITLE_BG, ColorIdx::default());
25    th.p.add_aliased(Color::HEADER_FG, ColorIdx::default());
26    th.p.add_aliased(Color::HEADER_BG, ColorIdx::default());
27    th.p.add_aliased(Color::FOOTER_FG, ColorIdx::default());
28    th.p.add_aliased(Color::FOOTER_BG, ColorIdx::default());
29    th.p.add_aliased(Color::SHADOW_BG, ColorIdx::default());
30    th.p.add_aliased(Color::WEEK_HEADER_FG, ColorIdx::default());
31    th.p.add_aliased(Color::MONTH_HEADER_FG, ColorIdx::default());
32    th.p.add_aliased(Color::INPUT_FOCUS_BG, ColorIdx::default());
33    th.p.add_aliased(Color::INPUT_SELECT_BG, ColorIdx::default());
34    th.p.add_aliased(Color::BUTTON_BASE_BG, ColorIdx::default());
35    th.p.add_aliased(Color::MENU_BASE_BG, ColorIdx::default());
36    th.p.add_aliased(Color::KEY_BINDING_BG, ColorIdx::default());
37    th.p.add_aliased(Color::STATUS_BASE_BG, ColorIdx::default());
38    th.p.add_aliased(Color::CONTAINER_BASE_BG, ColorIdx::default());
39    th.p.add_aliased(Color::CONTAINER_BORDER_FG, ColorIdx::default());
40    th.p.add_aliased(Color::CONTAINER_ARROW_FG, ColorIdx::default());
41    th.p.add_aliased(Color::DOCUMENT_BASE_BG, ColorIdx::default());
42    th.p.add_aliased(Color::DOCUMENT_BORDER_FG, ColorIdx::default());
43    th.p.add_aliased(Color::DOCUMENT_ARROW_FG, ColorIdx::default());
44    th.p.add_aliased(Color::POPUP_BASE_BG, ColorIdx::default());
45    th.p.add_aliased(Color::POPUP_BORDER_FG, ColorIdx::default());
46    th.p.add_aliased(Color::POPUP_ARROW_FG, ColorIdx::default());
47    th.p.add_aliased(Color::DIALOG_BASE_BG, ColorIdx::default());
48    th.p.add_aliased(Color::DIALOG_BORDER_FG, ColorIdx::default());
49    th.p.add_aliased(Color::DIALOG_ARROW_FG, ColorIdx::default());
50
51    th.define_style(Style::LABEL_FG, Style::default());
52    th.define_style(Style::INPUT, Style::default());
53    th.define_style(Style::FOCUS, Style::default());
54    th.define_style(Style::SELECT, Style::default());
55    th.define_style(Style::DISABLED, Style::default());
56    th.define_style(Style::INVALID, Style::default());
57    th.define_style(Style::HOVER, Style::default());
58    th.define_style(Style::TITLE, Style::default());
59    th.define_style(Style::HEADER, Style::default());
60    th.define_style(Style::FOOTER, Style::default());
61    th.define_style(Style::SHADOWS, Style::default());
62    th.define_style(Style::WEEK_HEADER_FG, Style::default());
63    th.define_style(Style::MONTH_HEADER_FG, Style::default());
64    th.define_style(Style::INPUT_FOCUS, Style::default());
65    th.define_style(Style::INPUT_SELECT, Style::default());
66    th.define_style(Style::KEY_BINDING, Style::default());
67
68    th.define_style(Style::BUTTON_BASE, Style::default());
69    th.define_style(Style::MENU_BASE, Style::default());
70    th.define_style(Style::STATUS_BASE, Style::default());
71
72    th.define_style(Style::CONTAINER_BASE, Style::default());
73    th.define_style(Style::CONTAINER_BORDER_FG, Style::default());
74    th.define_style(Style::CONTAINER_ARROW_FG, Style::default());
75
76    th.define_style(Style::DOCUMENT_BASE, Style::default());
77    th.define_style(Style::DOCUMENT_BORDER_FG, Style::default());
78    th.define_style(Style::DOCUMENT_ARROW_FG, Style::default());
79
80    th.define_style(Style::POPUP_BASE, Style::default());
81    th.define_style(Style::POPUP_BORDER_FG, Style::default());
82    th.define_style(Style::POPUP_ARROW_FG, Style::default());
83
84    th.define_style(Style::DIALOG_BASE, Style::default());
85    th.define_style(Style::DIALOG_BORDER_FG, Style::default());
86    th.define_style(Style::DIALOG_ARROW_FG, Style::default());
87
88    #[cfg(feature = "rat-widget")]
89    th.define_fn0(
90        WidgetStyle::BUTTON,
91        rat_widget::button::ButtonStyle::default,
92    );
93    #[cfg(feature = "rat-widget")]
94    th.define_fn0(
95        WidgetStyle::CALENDAR,
96        rat_widget::calendar::CalendarStyle::default,
97    );
98    #[cfg(feature = "rat-widget")]
99    th.define_fn0(
100        WidgetStyle::CHECKBOX,
101        rat_widget::checkbox::CheckboxStyle::default,
102    );
103    #[cfg(feature = "rat-widget")]
104    th.define_fn0(
105        WidgetStyle::CHOICE,
106        rat_widget::choice::ChoiceStyle::default,
107    );
108    #[cfg(feature = "rat-widget")]
109    th.define_fn0(
110        WidgetStyle::CLIPPER,
111        rat_widget::clipper::ClipperStyle::default,
112    );
113    #[cfg(feature = "rat-widget")]
114    th.define_fn0(
115        WidgetStyle::COMBOBOX,
116        rat_widget::combobox::ComboboxStyle::default,
117    );
118    #[cfg(feature = "color-input")]
119    th.define_fn0(WidgetStyle::COLOR_INPUT, ColorInputStyle::default);
120    #[cfg(feature = "rat-widget")]
121    th.define_fn0(
122        WidgetStyle::DIALOG_FRAME,
123        rat_widget::dialog_frame::DialogFrameStyle::default,
124    );
125    #[cfg(feature = "rat-widget")]
126    th.define_fn0(
127        WidgetStyle::FILE_DIALOG,
128        rat_widget::file_dialog::FileDialogStyle::default,
129    );
130    #[cfg(feature = "rat-widget")]
131    th.define_fn0(WidgetStyle::FORM, rat_widget::form::FormStyle::default);
132    #[cfg(feature = "rat-widget")]
133    th.define_fn0(
134        WidgetStyle::LINE_NR,
135        rat_widget::line_number::LineNumberStyle::default,
136    );
137    #[cfg(feature = "rat-widget")]
138    th.define_fn0(WidgetStyle::LIST, rat_widget::list::ListStyle::default);
139    #[cfg(feature = "rat-widget")]
140    th.define_fn0(WidgetStyle::MENU, rat_widget::menu::MenuStyle::default);
141    #[cfg(feature = "rat-widget")]
142    th.define_fn0(
143        WidgetStyle::MONTH,
144        rat_widget::calendar::CalendarStyle::default,
145    );
146    #[cfg(feature = "rat-widget")]
147    th.define_fn0(
148        WidgetStyle::MSG_DIALOG,
149        rat_widget::msgdialog::MsgDialogStyle::default,
150    );
151    #[cfg(feature = "rat-widget")]
152    th.define_fn0(
153        WidgetStyle::PARAGRAPH,
154        rat_widget::paragraph::ParagraphStyle::default,
155    );
156    #[cfg(feature = "rat-widget")]
157    th.define_fn0(WidgetStyle::RADIO, rat_widget::radio::RadioStyle::default);
158    #[cfg(feature = "rat-widget")]
159    th.define_fn0(
160        WidgetStyle::SCROLL,
161        rat_widget::scrolled::ScrollStyle::default,
162    );
163    #[cfg(feature = "rat-widget")]
164    th.define_fn0(
165        WidgetStyle::SCROLL_DIALOG,
166        rat_widget::scrolled::ScrollStyle::default,
167    );
168    #[cfg(feature = "rat-widget")]
169    th.define_fn0(
170        WidgetStyle::SCROLL_POPUP,
171        rat_widget::scrolled::ScrollStyle::default,
172    );
173    #[cfg(feature = "rat-widget")]
174    th.define_fn0(
175        WidgetStyle::SHADOW,
176        rat_widget::shadow::ShadowStyle::default,
177    );
178    #[cfg(feature = "rat-widget")]
179    th.define_fn0(
180        WidgetStyle::SLIDER,
181        rat_widget::slider::SliderStyle::default,
182    );
183    #[cfg(feature = "rat-widget")]
184    th.define_fn0(
185        WidgetStyle::SPLIT,
186        rat_widget::splitter::SplitStyle::default,
187    );
188    #[cfg(feature = "rat-widget")]
189    th.define_fn0(
190        WidgetStyle::STATUSLINE,
191        rat_widget::statusline::StatusLineStyle::default,
192    );
193    #[cfg(feature = "rat-widget")]
194    th.define_fn0(
195        WidgetStyle::TABBED,
196        rat_widget::tabbed::TabbedStyle::default,
197    );
198    #[cfg(feature = "rat-widget")]
199    th.define_fn0(WidgetStyle::TABLE, rat_widget::table::TableStyle::default);
200    #[cfg(feature = "rat-widget")]
201    th.define_fn0(WidgetStyle::TEXT, rat_widget::text::TextStyle::default);
202    #[cfg(feature = "rat-widget")]
203    th.define_fn0(WidgetStyle::TEXTAREA, rat_widget::text::TextStyle::default);
204    #[cfg(feature = "rat-widget")]
205    th.define_fn0(WidgetStyle::TEXTVIEW, rat_widget::text::TextStyle::default);
206    #[cfg(feature = "rat-widget")]
207    th.define_fn0(
208        WidgetStyle::TOOLBAR,
209        rat_widget::toolbar::ToolbarStyle::default,
210    );
211    #[cfg(feature = "rat-widget")]
212    th.define_fn0(WidgetStyle::VIEW, rat_widget::view::ViewStyle::default);
213
214    th
215}