1#![allow(unused_imports)]
2use crate::RatWidgetColor;
3use crate::palette::{Colors, Palette};
4use crate::theme::SalsaTheme;
5use crate::{StyleName, WidgetStyle};
6#[cfg(feature = "rat-widget")]
7use rat_widget;
8#[cfg(feature = "color-input")]
9use rat_widget_extra::color_input::ColorInputStyle;
10use ratatui::layout::Alignment;
11use ratatui::style::{Color, Style, Stylize};
12use ratatui::symbols;
13use ratatui::symbols::border;
14use ratatui::widgets::{Block, Borders};
15use std::time::Duration;
16
17pub fn create_shell(p: Palette) -> SalsaTheme {
22 let mut th = SalsaTheme::new(p);
23
24 th.define_style(Style::LABEL_FG, th.p.fg_style_alias(Color::LABEL_FG));
25 th.define_style(Style::INPUT, th.p.style_alias(Color::INPUT_BG));
26 th.define_style(Style::FOCUS, th.p.high_style_alias(Color::FOCUS_BG));
27 th.define_style(Style::SELECT, th.p.style_alias(Color::SELECT_BG));
28 th.define_style(Style::DISABLED, th.p.style_alias(Color::DISABLED_BG));
29 th.define_style(Style::INVALID, th.p.style_alias(Color::INVALID_BG));
30 th.define_style(Style::HOVER, th.p.style_alias(Color::HOVER_BG));
31 th.define_style(
32 Style::TITLE,
33 th.p.fg_bg_style_alias(Color::TITLE_FG, Color::TITLE_BG),
34 );
35 th.define_style(
36 Style::HEADER,
37 th.p.fg_bg_style_alias(Color::HEADER_FG, Color::HEADER_BG),
38 );
39 th.define_style(
40 Style::FOOTER,
41 th.p.fg_bg_style_alias(Color::FOOTER_FG, Color::HEADER_BG),
42 );
43 th.define_style(
44 Style::WEEK_HEADER_FG,
45 th.p.fg_style_alias(Color::WEEK_HEADER_FG),
46 );
47 th.define_style(
48 Style::MONTH_HEADER_FG,
49 th.p.fg_style_alias(Color::MONTH_HEADER_FG),
50 );
51 th.define_style(Style::SHADOWS, th.p.style_alias(Color::SHADOW_BG));
52 th.define_style(
53 Style::INPUT_FOCUS,
54 th.p.high_style_alias(Color::INPUT_FOCUS_BG),
55 );
56 th.define_style(Style::INPUT_SELECT, th.p.style_alias(Color::SELECT_BG));
57 th.define_style(Style::KEY_BINDING, th.p.style_alias(Color::KEY_BINDING_BG));
58
59 th.define_style(Style::BUTTON_BASE, th.p.style_alias(Color::BUTTON_BASE_BG));
60 th.define_style(Style::MENU_BASE, th.p.style_alias(Color::MENU_BASE_BG));
61 th.define_style(Style::STATUS_BASE, th.p.style_alias(Color::STATUS_BASE_BG));
62
63 th.define_style(
64 Style::CONTAINER_BASE,
65 th.p.style_alias(Color::CONTAINER_BASE_BG),
66 );
67 th.define_style(
68 Style::CONTAINER_BORDER_FG,
69 th.p.fg_style_alias(Color::CONTAINER_BORDER_FG),
70 );
71 th.define_style(
72 Style::CONTAINER_ARROW_FG,
73 th.p.fg_style_alias(Color::CONTAINER_ARROW_FG),
74 );
75
76 th.define_style(
77 Style::DOCUMENT_BASE,
78 th.p.style_alias(Color::DOCUMENT_BASE_BG),
79 );
80 th.define_style(
81 Style::DOCUMENT_BORDER_FG,
82 th.p.fg_style_alias(Color::DOCUMENT_BORDER_FG),
83 );
84 th.define_style(
85 Style::DOCUMENT_ARROW_FG,
86 th.p.fg_style_alias(Color::DOCUMENT_ARROW_FG),
87 );
88
89 th.define_style(Style::POPUP_BASE, th.p.style_alias(Color::POPUP_BASE_BG));
90 th.define_style(
91 Style::POPUP_BORDER_FG,
92 th.p.fg_style_alias(Color::POPUP_BORDER_FG),
93 );
94 th.define_style(
95 Style::POPUP_ARROW_FG,
96 th.p.fg_style_alias(Color::POPUP_ARROW_FG),
97 );
98
99 th.define_style(Style::DIALOG_BASE, th.p.style_alias(Color::DIALOG_BASE_BG));
100 th.define_style(
101 Style::DIALOG_BORDER_FG,
102 th.p.fg_style_alias(Color::DIALOG_BORDER_FG),
103 );
104 th.define_style(
105 Style::DIALOG_ARROW_FG,
106 th.p.fg_style_alias(Color::DIALOG_ARROW_FG),
107 );
108
109 #[cfg(feature = "rat-widget")]
110 th.define_fn(WidgetStyle::BUTTON, button);
111 #[cfg(feature = "rat-widget")]
112 th.define_fn(WidgetStyle::CALENDAR, month);
113 #[cfg(feature = "rat-widget")]
114 th.define_fn(WidgetStyle::CHECKBOX, checkbox);
115 #[cfg(feature = "rat-widget")]
116 th.define_fn(WidgetStyle::CHOICE, choice);
117 #[cfg(feature = "rat-widget")]
118 th.define_fn(WidgetStyle::CLIPPER, clipper);
119 #[cfg(feature = "rat-widget")]
120 th.define_fn(WidgetStyle::COMBOBOX, combobox);
121 #[cfg(feature = "rat-widget")]
122 #[cfg(feature = "color-input")]
123 th.define_fn(WidgetStyle::COLOR_INPUT, color_input);
124 #[cfg(feature = "rat-widget")]
125 th.define_fn(WidgetStyle::DIALOG_FRAME, dialog_frame);
126 #[cfg(feature = "rat-widget")]
127 th.define_fn(WidgetStyle::FILE_DIALOG, file_dialog);
128 #[cfg(feature = "rat-widget")]
129 th.define_fn(WidgetStyle::FORM, form);
130 #[cfg(feature = "rat-widget")]
131 th.define_fn(WidgetStyle::LINE_NR, line_nr);
132 #[cfg(feature = "rat-widget")]
133 th.define_fn(WidgetStyle::LIST, list);
134 #[cfg(feature = "rat-widget")]
135 th.define_fn(WidgetStyle::MENU, menu);
136 #[cfg(feature = "rat-widget")]
137 th.define_fn(WidgetStyle::MONTH, month);
138 #[cfg(feature = "rat-widget")]
139 th.define_fn(WidgetStyle::MSG_DIALOG, msg_dialog);
140 #[cfg(feature = "rat-widget")]
141 th.define_fn(WidgetStyle::PARAGRAPH, paragraph);
142 #[cfg(feature = "rat-widget")]
143 th.define_fn(WidgetStyle::RADIO, radio);
144 #[cfg(feature = "rat-widget")]
145 th.define_fn(WidgetStyle::SCROLL, scroll);
146 #[cfg(feature = "rat-widget")]
147 th.define_fn(WidgetStyle::SCROLL_DIALOG, dialog_scroll);
148 #[cfg(feature = "rat-widget")]
149 th.define_fn(WidgetStyle::SCROLL_POPUP, popup_scroll);
150 #[cfg(feature = "rat-widget")]
151 th.define_fn(WidgetStyle::SHADOW, shadow);
152 #[cfg(feature = "rat-widget")]
153 th.define_fn(WidgetStyle::SLIDER, slider);
154 #[cfg(feature = "rat-widget")]
155 th.define_fn(WidgetStyle::SPLIT, split);
156 #[cfg(feature = "rat-widget")]
157 th.define_fn(WidgetStyle::STATUSLINE, statusline);
158 #[cfg(feature = "rat-widget")]
159 th.define_fn(WidgetStyle::TABBED, tabbed);
160 #[cfg(feature = "rat-widget")]
161 th.define_fn(WidgetStyle::TABLE, table);
162 #[cfg(feature = "rat-widget")]
163 th.define_fn(WidgetStyle::TEXT, text);
164 #[cfg(feature = "rat-widget")]
165 th.define_fn(WidgetStyle::TEXTAREA, textarea);
166 #[cfg(feature = "rat-widget")]
167 th.define_fn(WidgetStyle::TEXTVIEW, textview);
168 #[cfg(feature = "rat-widget")]
169 th.define_fn(WidgetStyle::VIEW, view);
170
171 th
172}
173
174#[cfg(feature = "rat-widget")]
175fn button(th: &SalsaTheme) -> rat_widget::button::ButtonStyle {
176 rat_widget::button::ButtonStyle {
177 style: th.style(Style::BUTTON_BASE),
178 focus: Some(th.style(Style::FOCUS)),
179 armed: Some(th.style(Style::SELECT)),
180 hover: Some(th.p.style_alias(Color::HOVER_BG)),
181 armed_delay: Some(Duration::from_millis(50)),
182 ..Default::default()
183 }
184}
185
186#[cfg(feature = "rat-widget")]
187fn checkbox(th: &SalsaTheme) -> rat_widget::checkbox::CheckboxStyle {
188 rat_widget::checkbox::CheckboxStyle {
189 style: th.style(Style::INPUT),
190 focus: Some(th.style(Style::INPUT_FOCUS)),
191 ..Default::default()
192 }
193}
194
195#[cfg(feature = "rat-widget")]
196fn combobox(th: &SalsaTheme) -> rat_widget::combobox::ComboboxStyle {
197 rat_widget::combobox::ComboboxStyle {
198 choice: th.style(WidgetStyle::CHOICE),
199 text: th.style(WidgetStyle::TEXT),
200 ..Default::default()
201 }
202}
203
204#[cfg(feature = "rat-widget")]
205fn choice(th: &SalsaTheme) -> rat_widget::choice::ChoiceStyle {
206 rat_widget::choice::ChoiceStyle {
207 style: th.style(Style::INPUT),
208 select: Some(th.style(Style::INPUT_SELECT)),
209 focus: Some(th.style(Style::INPUT_FOCUS)),
210 popup_style: Some(th.style(Style::POPUP_BASE)),
211 popup_border: Some(th.style(Style::POPUP_BORDER_FG)),
212 popup_scroll: Some(th.style(WidgetStyle::SCROLL_POPUP)),
213 popup_block: Some(
214 Block::bordered()
215 .borders(Borders::LEFT | Borders::BOTTOM | Borders::RIGHT)
216 .border_set(border::Set {
217 top_left: "X",
218 top_right: "X",
219 bottom_left: "▀",
220 bottom_right: "▀",
221 vertical_left: "▌",
222 vertical_right: "▐",
223 horizontal_top: "X",
224 horizontal_bottom: "▀",
225 })
226 .border_style(th.style::<Style>(Style::POPUP_BORDER_FG)),
227 ),
228 ..Default::default()
229 }
230}
231
232#[cfg(feature = "rat-widget")]
233fn clipper(th: &SalsaTheme) -> rat_widget::clipper::ClipperStyle {
234 rat_widget::clipper::ClipperStyle {
235 style: th.style(Style::CONTAINER_BASE),
236 label_style: Some(th.style(Style::LABEL_FG)),
237 scroll: Some(th.style(WidgetStyle::SCROLL)),
238 ..Default::default()
239 }
240}
241
242#[cfg(feature = "rat-widget")]
243fn dialog_frame(th: &SalsaTheme) -> rat_widget::dialog_frame::DialogFrameStyle {
244 rat_widget::dialog_frame::DialogFrameStyle {
245 style: th.style(Style::DIALOG_BASE),
246 border_style: Some(th.style::<Style>(Style::DIALOG_BORDER_FG)),
247 button_style: Some(th.style(WidgetStyle::BUTTON)),
248 ..rat_widget::dialog_frame::DialogFrameStyle::default()
249 }
250}
251
252#[cfg(feature = "rat-widget")]
253fn file_dialog(th: &SalsaTheme) -> rat_widget::file_dialog::FileDialogStyle {
254 rat_widget::file_dialog::FileDialogStyle {
255 style: th.style(Style::DIALOG_BASE),
256 list: Some(th.style(WidgetStyle::LIST)),
257 roots: Some(rat_widget::list::ListStyle {
258 style: th.style(Style::DIALOG_BASE),
259 ..th.style(WidgetStyle::LIST)
260 }),
261 text: Some(th.style(WidgetStyle::TEXT)),
262 button: Some(th.style(WidgetStyle::BUTTON)),
263 block: Some(Block::bordered()),
264 ..Default::default()
265 }
266}
267
268#[cfg(feature = "rat-widget")]
269fn form(th: &SalsaTheme) -> rat_widget::form::FormStyle {
270 rat_widget::form::FormStyle {
271 style: th.style(Style::CONTAINER_BASE),
272 label_style: Some(th.style(Style::LABEL_FG)),
273 navigation: Some(th.style(Style::CONTAINER_ARROW_FG)),
274 navigation_hover: Some(th.style(Style::HOVER)),
275 block: Some(
276 Block::bordered()
277 .borders(Borders::TOP | Borders::BOTTOM)
278 .border_set(border::EMPTY)
279 .border_style(th.style::<Style>(Style::CONTAINER_BORDER_FG)),
280 ),
281 border_style: Some(th.style::<Style>(Style::CONTAINER_BORDER_FG)),
282 ..Default::default()
283 }
284}
285
286#[cfg(feature = "rat-widget")]
287fn line_nr(th: &SalsaTheme) -> rat_widget::line_number::LineNumberStyle {
288 rat_widget::line_number::LineNumberStyle {
289 style: th.style(Style::CONTAINER_BASE),
290 cursor: Some(th.style(Style::INPUT_SELECT)),
291 ..rat_widget::line_number::LineNumberStyle::default()
292 }
293}
294
295#[cfg(feature = "rat-widget")]
296fn list(th: &SalsaTheme) -> rat_widget::list::ListStyle {
297 rat_widget::list::ListStyle {
298 style: th.style(Style::CONTAINER_BASE),
299 select: Some(th.style(Style::SELECT)),
300 focus: Some(th.style(Style::FOCUS)),
301 scroll: Some(th.style(WidgetStyle::SCROLL)),
302 ..Default::default()
303 }
304}
305
306#[cfg(feature = "rat-widget")]
307fn menu(th: &SalsaTheme) -> rat_widget::menu::MenuStyle {
308 rat_widget::menu::MenuStyle {
309 style: th.style(Style::MENU_BASE),
310 title: Some(th.style(Style::TITLE)),
311 focus: Some(th.style(Style::FOCUS)),
312 right: Some(th.style(Style::KEY_BINDING)),
313 disabled: Some(th.style(Style::DISABLED)),
314 highlight: Some(Style::default().underlined()),
315 popup_block: Some(Block::bordered()),
316 popup: Default::default(),
317 popup_border: Some(th.style(Style::MENU_BASE)),
318 popup_style: Some(th.style(Style::MENU_BASE)),
319 popup_focus: Some(th.style(Style::FOCUS)),
320 popup_right: Some(th.style(Style::KEY_BINDING)),
321 popup_disabled: Some(th.style(Style::DISABLED)),
322 popup_highlight: Some(Style::default().underlined()),
323 ..Default::default()
324 }
325}
326
327#[cfg(feature = "rat-widget")]
328fn month(th: &SalsaTheme) -> rat_widget::calendar::CalendarStyle {
329 rat_widget::calendar::CalendarStyle {
330 style: th.style(Style::CONTAINER_BASE),
331 title: Some(th.style(Style::MONTH_HEADER_FG)),
332 weeknum: Some(th.style(Style::WEEK_HEADER_FG)),
333 weekday: Some(th.style(Style::WEEK_HEADER_FG)),
334 day: None,
335 select: Some(th.style(Style::SELECT)),
336 focus: Some(th.style(Style::FOCUS)),
337 ..rat_widget::calendar::CalendarStyle::default()
338 }
339}
340
341#[cfg(feature = "rat-widget")]
342fn msg_dialog(th: &SalsaTheme) -> rat_widget::msgdialog::MsgDialogStyle {
343 rat_widget::msgdialog::MsgDialogStyle {
344 style: th.style(Style::DIALOG_BASE),
345 button: Some(th.style(WidgetStyle::BUTTON)),
346 markdown_header_1: Some(th.style_style(Style::TITLE)),
347 markdown_header_n: Some(th.style_style(Style::HEADER)),
348 ..Default::default()
349 }
350}
351
352#[cfg(feature = "rat-widget")]
353fn paragraph(th: &SalsaTheme) -> rat_widget::paragraph::ParagraphStyle {
354 rat_widget::paragraph::ParagraphStyle {
355 style: th.style(Style::CONTAINER_BASE),
356 focus: Some(th.style(Style::FOCUS)),
357 scroll: Some(th.style(WidgetStyle::SCROLL)),
358 ..Default::default()
359 }
360}
361
362#[cfg(feature = "rat-widget")]
363fn radio(th: &SalsaTheme) -> rat_widget::radio::RadioStyle {
364 rat_widget::radio::RadioStyle {
365 layout: Some(rat_widget::radio::RadioLayout::Stacked),
366 style: th.style(Style::INPUT),
367 focus: Some(th.style(Style::INPUT_FOCUS)),
368 ..Default::default()
369 }
370}
371
372#[cfg(feature = "rat-widget")]
373fn scroll(th: &SalsaTheme) -> rat_widget::scrolled::ScrollStyle {
375 rat_widget::scrolled::ScrollStyle {
376 thumb_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
377 track_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
378 min_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
379 begin_style: Some(th.style(Style::CONTAINER_ARROW_FG)),
380 end_style: Some(th.style(Style::CONTAINER_ARROW_FG)),
381 horizontal: Some(rat_widget::scrolled::ScrollSymbols {
382 track: "▒",
383 thumb: symbols::block::FULL,
384 begin: "←",
385 end: "→",
386 min: "░",
387 }),
388 vertical: Some(rat_widget::scrolled::ScrollSymbols {
389 track: "▒",
390 thumb: symbols::block::FULL,
391 begin: "↑",
392 end: "↓",
393 min: "░",
394 }),
395 ..Default::default()
396 }
397}
398
399#[cfg(feature = "rat-widget")]
400fn popup_scroll(th: &SalsaTheme) -> rat_widget::scrolled::ScrollStyle {
401 rat_widget::scrolled::ScrollStyle {
402 thumb_style: Some(th.style(Style::POPUP_BORDER_FG)),
403 track_style: Some(th.style(Style::POPUP_BORDER_FG)),
404 min_style: Some(th.style(Style::POPUP_BORDER_FG)),
405 begin_style: Some(th.style(Style::POPUP_ARROW_FG)),
406 end_style: Some(th.style(Style::POPUP_ARROW_FG)),
407 horizontal: Some(rat_widget::scrolled::ScrollSymbols {
408 track: "▒",
409 thumb: symbols::block::FULL,
410 begin: "←",
411 end: "→",
412 min: "░",
413 }),
414 vertical: Some(rat_widget::scrolled::ScrollSymbols {
415 track: "▒",
416 thumb: symbols::block::FULL,
417 begin: "↑",
418 end: "↓",
419 min: "░",
420 }),
421 ..Default::default()
422 }
423}
424
425#[cfg(feature = "rat-widget")]
426fn dialog_scroll(th: &SalsaTheme) -> rat_widget::scrolled::ScrollStyle {
427 rat_widget::scrolled::ScrollStyle {
428 thumb_style: Some(th.style(Style::DIALOG_BORDER_FG)),
429 track_style: Some(th.style(Style::DIALOG_BORDER_FG)),
430 min_style: Some(th.style(Style::DIALOG_BORDER_FG)),
431 begin_style: Some(th.style(Style::POPUP_ARROW_FG)),
432 end_style: Some(th.style(Style::POPUP_ARROW_FG)),
433 horizontal: Some(rat_widget::scrolled::ScrollSymbols {
434 track: "▒",
435 thumb: symbols::block::FULL,
436 begin: "←",
437 end: "→",
438 min: "░",
439 }),
440 vertical: Some(rat_widget::scrolled::ScrollSymbols {
441 track: "▒",
442 thumb: symbols::block::FULL,
443 begin: "↑",
444 end: "↓",
445 min: "░",
446 }),
447 ..Default::default()
448 }
449}
450
451#[cfg(feature = "rat-widget")]
452fn shadow(th: &SalsaTheme) -> rat_widget::shadow::ShadowStyle {
453 rat_widget::shadow::ShadowStyle {
454 style: th.style(Style::SHADOWS),
455 dir: rat_widget::shadow::ShadowDirection::BottomRight,
456 ..rat_widget::shadow::ShadowStyle::default()
457 }
458}
459
460#[cfg(feature = "rat-widget")]
461fn slider(th: &SalsaTheme) -> rat_widget::slider::SliderStyle {
462 rat_widget::slider::SliderStyle {
463 style: th.style(Style::INPUT),
464 bounds: Some(th.style(Style::INPUT)),
465 knob: Some(th.style(Style::INPUT_SELECT)),
466 focus: Some(th.style(Style::INPUT_FOCUS)),
467 text_align: Some(Alignment::Center),
468 ..Default::default()
469 }
470}
471
472#[cfg(feature = "rat-widget")]
473fn split(th: &SalsaTheme) -> rat_widget::splitter::SplitStyle {
474 rat_widget::splitter::SplitStyle {
475 style: th.style(Style::CONTAINER_BORDER_FG),
476 arrow_style: Some(th.style(Style::CONTAINER_ARROW_FG)),
477 drag_style: Some(th.style(Style::HOVER)),
478 ..Default::default()
479 }
480}
481
482#[cfg(feature = "rat-widget")]
483fn statusline(th: &SalsaTheme) -> rat_widget::statusline::StatusLineStyle {
484 rat_widget::statusline::StatusLineStyle {
485 styles: vec![
486 th.style(Style::STATUS_BASE),
487 th.p.style(Colors::Blue, 3),
488 th.p.style(Colors::Blue, 2),
489 th.p.style(Colors::Blue, 1),
490 ],
491 ..Default::default()
492 }
493}
494
495#[cfg(feature = "rat-widget")]
496fn tabbed(th: &SalsaTheme) -> rat_widget::tabbed::TabbedStyle {
497 rat_widget::tabbed::TabbedStyle {
498 style: th.style(Style::CONTAINER_BASE),
499 border_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
500 tab: Some(th.style(Style::CONTAINER_BASE)),
501 hover: Some(th.style(Style::HOVER)),
502 select: Some(th.style(Style::SELECT)),
503 focus: Some(th.style(Style::FOCUS)),
504 ..Default::default()
505 }
506}
507
508#[cfg(feature = "rat-widget")]
509fn table(th: &SalsaTheme) -> rat_widget::table::TableStyle {
510 rat_widget::table::TableStyle {
511 style: th.style(Style::CONTAINER_BASE),
512 select_row: Some(th.style(Style::SELECT)),
513 show_row_focus: true,
514 focus_style: Some(th.style(Style::FOCUS)),
515 border_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
516 scroll: Some(th.style(WidgetStyle::SCROLL)),
517 header: Some(th.style(Style::HEADER)),
518 footer: Some(th.style(Style::FOOTER)),
519 ..Default::default()
520 }
521}
522
523#[cfg(feature = "color-input")]
524fn color_input(th: &SalsaTheme) -> ColorInputStyle {
525 ColorInputStyle {
526 text: rat_widget::text::TextStyle {
527 style: th.style(Style::INPUT),
528 focus: Some(th.style(Style::INPUT_FOCUS)),
529 select: Some(th.style(Style::INPUT_SELECT)),
530 invalid: Some(th.style(Style::INVALID)),
531 ..rat_widget::text::TextStyle::default()
532 },
533 ..Default::default()
534 }
535}
536
537#[cfg(feature = "rat-widget")]
538fn text(th: &SalsaTheme) -> rat_widget::text::TextStyle {
539 rat_widget::text::TextStyle {
540 style: th.style(Style::INPUT),
541 focus: Some(th.style(Style::INPUT_FOCUS)),
542 select: Some(th.style(Style::INPUT_SELECT)),
543 invalid: Some(th.style(Style::INVALID)),
544 ..rat_widget::text::TextStyle::default()
545 }
546}
547
548#[cfg(feature = "rat-widget")]
549fn textarea(th: &SalsaTheme) -> rat_widget::text::TextStyle {
550 rat_widget::text::TextStyle {
551 style: th.style(Style::INPUT),
552 focus: Some(th.style(Style::INPUT)),
553 select: Some(th.style(Style::INPUT_SELECT)),
554 scroll: Some(th.style(WidgetStyle::SCROLL)),
555 border_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
556 ..rat_widget::text::TextStyle::default()
557 }
558}
559
560#[cfg(feature = "rat-widget")]
561fn textview(th: &SalsaTheme) -> rat_widget::text::TextStyle {
562 rat_widget::text::TextStyle {
563 style: th.style(Style::CONTAINER_BASE),
564 focus: Some(th.style(Style::CONTAINER_BASE)),
565 select: Some(th.style(Style::INPUT_SELECT)),
566 scroll: Some(th.style(WidgetStyle::SCROLL)),
567 border_style: Some(th.style(Style::CONTAINER_BORDER_FG)),
568 ..rat_widget::text::TextStyle::default()
569 }
570}
571
572#[cfg(feature = "rat-widget")]
573fn view(th: &SalsaTheme) -> rat_widget::view::ViewStyle {
574 rat_widget::view::ViewStyle {
575 scroll: Some(th.style(WidgetStyle::SCROLL)),
576 ..Default::default()
577 }
578}