1use crate::palette::{ColorIdx, Palette};
2use crate::theme::{Category, SalsaTheme};
3use crate::{RatWidgetColor, StyleName, WidgetStyle};
4use rat_widget::button::ButtonStyle;
5use rat_widget::calendar::CalendarStyle;
6use rat_widget::checkbox::CheckboxStyle;
7use rat_widget::choice::ChoiceStyle;
8use rat_widget::clipper::ClipperStyle;
9#[cfg(feature = "color_input")]
10use rat_widget::color_input::ColorInputStyle;
11use rat_widget::combobox::ComboboxStyle;
12use rat_widget::dialog_frame::DialogFrameStyle;
13use rat_widget::file_dialog::FileDialogStyle;
14use rat_widget::form::FormStyle;
15use rat_widget::line_number::LineNumberStyle;
16use rat_widget::list::ListStyle;
17use rat_widget::menu::MenuStyle;
18use rat_widget::msgdialog::MsgDialogStyle;
19use rat_widget::paragraph::ParagraphStyle;
20use rat_widget::radio::RadioStyle;
21use rat_widget::scrolled::ScrollStyle;
22use rat_widget::shadow::ShadowStyle;
23use rat_widget::slider::SliderStyle;
24use rat_widget::splitter::SplitStyle;
25use rat_widget::statusline::StatusLineStyle;
26use rat_widget::tabbed::TabbedStyle;
27use rat_widget::table::TableStyle;
28use rat_widget::text::TextStyle;
29use rat_widget::view::ViewStyle;
30use ratatui::style::{Color, Style};
31
32pub fn create_fallback(name: &str, p: Palette) -> SalsaTheme {
34 let mut th = SalsaTheme::new(name, Category::Other, p);
35
36 th.p.add_aliased(Color::LABEL_FG, ColorIdx::default());
37 th.p.add_aliased(Color::INPUT_BG, ColorIdx::default());
38 th.p.add_aliased(Color::FOCUS_BG, ColorIdx::default());
39 th.p.add_aliased(Color::SELECT_BG, ColorIdx::default());
40 th.p.add_aliased(Color::DISABLED_BG, ColorIdx::default());
41 th.p.add_aliased(Color::INVALID_BG, ColorIdx::default());
42 th.p.add_aliased(Color::HOVER_BG, ColorIdx::default());
43 th.p.add_aliased(Color::TITLE_FG, ColorIdx::default());
44 th.p.add_aliased(Color::TITLE_BG, ColorIdx::default());
45 th.p.add_aliased(Color::HEADER_FG, ColorIdx::default());
46 th.p.add_aliased(Color::HEADER_BG, ColorIdx::default());
47 th.p.add_aliased(Color::FOOTER_FG, ColorIdx::default());
48 th.p.add_aliased(Color::FOOTER_BG, ColorIdx::default());
49 th.p.add_aliased(Color::SHADOW_BG, ColorIdx::default());
50 th.p.add_aliased(Color::WEEK_HEADER_FG, ColorIdx::default());
51 th.p.add_aliased(Color::MONTH_HEADER_FG, ColorIdx::default());
52 th.p.add_aliased(Color::INPUT_FOCUS_BG, ColorIdx::default());
53 th.p.add_aliased(Color::INPUT_SELECT_BG, ColorIdx::default());
54 th.p.add_aliased(Color::BUTTON_BASE_BG, ColorIdx::default());
55 th.p.add_aliased(Color::MENU_BASE_BG, ColorIdx::default());
56 th.p.add_aliased(Color::KEY_BINDING_BG, ColorIdx::default());
57 th.p.add_aliased(Color::STATUS_BASE_BG, ColorIdx::default());
58 th.p.add_aliased(Color::CONTAINER_BASE_BG, ColorIdx::default());
59 th.p.add_aliased(Color::CONTAINER_BORDER_FG, ColorIdx::default());
60 th.p.add_aliased(Color::CONTAINER_ARROW_FG, ColorIdx::default());
61 th.p.add_aliased(Color::DOCUMENT_BASE_BG, ColorIdx::default());
62 th.p.add_aliased(Color::DOCUMENT_BORDER_FG, ColorIdx::default());
63 th.p.add_aliased(Color::DOCUMENT_ARROW_FG, ColorIdx::default());
64 th.p.add_aliased(Color::POPUP_BASE_BG, ColorIdx::default());
65 th.p.add_aliased(Color::POPUP_BORDER_FG, ColorIdx::default());
66 th.p.add_aliased(Color::POPUP_ARROW_FG, ColorIdx::default());
67 th.p.add_aliased(Color::DIALOG_BASE_BG, ColorIdx::default());
68 th.p.add_aliased(Color::DIALOG_BORDER_FG, ColorIdx::default());
69 th.p.add_aliased(Color::DIALOG_ARROW_FG, ColorIdx::default());
70
71 th.define_style(Style::LABEL_FG, Style::default());
72 th.define_style(Style::INPUT, Style::default());
73 th.define_style(Style::FOCUS, Style::default());
74 th.define_style(Style::SELECT, Style::default());
75 th.define_style(Style::DISABLED, Style::default());
76 th.define_style(Style::INVALID, Style::default());
77 th.define_style(Style::HOVER, Style::default());
78 th.define_style(Style::TITLE, Style::default());
79 th.define_style(Style::HEADER, Style::default());
80 th.define_style(Style::FOOTER, Style::default());
81 th.define_style(Style::SHADOWS, Style::default());
82 th.define_style(Style::WEEK_HEADER_FG, Style::default());
83 th.define_style(Style::MONTH_HEADER_FG, Style::default());
84 th.define_style(Style::INPUT_FOCUS, Style::default());
85 th.define_style(Style::INPUT_SELECT, Style::default());
86 th.define_style(Style::KEY_BINDING, Style::default());
87
88 th.define_style(Style::BUTTON_BASE, Style::default());
89 th.define_style(Style::MENU_BASE, Style::default());
90 th.define_style(Style::STATUS_BASE, Style::default());
91
92 th.define_style(Style::CONTAINER_BASE, Style::default());
93 th.define_style(Style::CONTAINER_BORDER_FG, Style::default());
94 th.define_style(Style::CONTAINER_ARROW_FG, Style::default());
95
96 th.define_style(Style::DOCUMENT_BASE, Style::default());
97 th.define_style(Style::DOCUMENT_BORDER_FG, Style::default());
98 th.define_style(Style::DOCUMENT_ARROW_FG, Style::default());
99
100 th.define_style(Style::POPUP_BASE, Style::default());
101 th.define_style(Style::POPUP_BORDER_FG, Style::default());
102 th.define_style(Style::POPUP_ARROW_FG, Style::default());
103
104 th.define_style(Style::DIALOG_BASE, Style::default());
105 th.define_style(Style::DIALOG_BORDER_FG, Style::default());
106 th.define_style(Style::DIALOG_ARROW_FG, Style::default());
107
108 th.define_fn0(WidgetStyle::BUTTON, ButtonStyle::default);
109 th.define_fn0(WidgetStyle::CALENDAR, CalendarStyle::default);
110 th.define_fn0(WidgetStyle::CHECKBOX, CheckboxStyle::default);
111 th.define_fn0(WidgetStyle::CHOICE, ChoiceStyle::default);
112 th.define_fn0(WidgetStyle::CLIPPER, ClipperStyle::default);
113 th.define_fn0(WidgetStyle::COMBOBOX, ComboboxStyle::default);
114 #[cfg(feature = "color_input")]
115 th.define_fn0(WidgetStyle::COLOR_INPUT, ColorInputStyle::default);
116 th.define_fn0(WidgetStyle::DIALOG_FRAME, DialogFrameStyle::default);
117 th.define_fn0(WidgetStyle::FILE_DIALOG, FileDialogStyle::default);
118 th.define_fn0(WidgetStyle::FORM, FormStyle::default);
119 th.define_fn0(WidgetStyle::LINE_NR, LineNumberStyle::default);
120 th.define_fn0(WidgetStyle::LIST, ListStyle::default);
121 th.define_fn0(WidgetStyle::MENU, MenuStyle::default);
122 th.define_fn0(WidgetStyle::MONTH, CalendarStyle::default);
123 th.define_fn0(WidgetStyle::MSG_DIALOG, MsgDialogStyle::default);
124 th.define_fn0(WidgetStyle::PARAGRAPH, ParagraphStyle::default);
125 th.define_fn0(WidgetStyle::RADIO, RadioStyle::default);
126 th.define_fn0(WidgetStyle::SCROLL, ScrollStyle::default);
127 th.define_fn0(WidgetStyle::SCROLL_DIALOG, ScrollStyle::default);
128 th.define_fn0(WidgetStyle::SCROLL_POPUP, ScrollStyle::default);
129 th.define_fn0(WidgetStyle::SHADOW, ShadowStyle::default);
130 th.define_fn0(WidgetStyle::SLIDER, SliderStyle::default);
131 th.define_fn0(WidgetStyle::SPLIT, SplitStyle::default);
132 th.define_fn0(WidgetStyle::STATUSLINE, StatusLineStyle::default);
133 th.define_fn0(WidgetStyle::TABBED, TabbedStyle::default);
134 th.define_fn0(WidgetStyle::TABLE, TableStyle::default);
135 th.define_fn0(WidgetStyle::TEXT, TextStyle::default);
136 th.define_fn0(WidgetStyle::TEXTAREA, TextStyle::default);
137 th.define_fn0(WidgetStyle::TEXTVIEW, TextStyle::default);
138 th.define_fn0(WidgetStyle::VIEW, ViewStyle::default);
139
140 th
141}