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
10pub 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}