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
use floem::views::container;
use floem::{peniko::Color, reactive::RwSignal, style::CursorStyle, view::View};

use crate::accents::{BorderColorVariant, PrimaryFillColorVariant};
use crate::theme::Theme;
use floem::views::text_input as base_text_input;
use floem::views::Decorators;

impl Theme {
    pub fn text_input(self, rw_signal: RwSignal<String>) -> impl View {
        container(base_text_input(rw_signal).style(move |s| {
            let accent_color = self.accent_color.get();

            s.background(accent_color.primary_fill_color(PrimaryFillColorVariant::DefaultGrayscale))
                .border(1.0)
                .border_color(accent_color.border_color(BorderColorVariant::DefaultGrayscale))
                .border_radius(5.0)
                .cursor(CursorStyle::Text)
                .cursor_color(Color::WHITE.with_alpha_factor(0.5))
                .disabled(|s| {
                    let accent_color = self.accent_color.get();
                    s.background(accent_color.primary_fill_color(PrimaryFillColorVariant::Disabled))
                        .color(self.accent_color.get().disabled_text_color())
                        .cursor(CursorStyle::Default)
                })
                .hover(move |s| {
                    s.border_color(accent_color.border_color(BorderColorVariant::HoveredGrayscale))
                })
                .focus(move |s| {
                    s.border_color(accent_color.border_color(BorderColorVariant::FocusedColored))
                })
                .padding_horiz(15)
                .padding_vert(10)
                .font_size(16.0)
        }))
    }
}