Skip to main content

leptos_daisyui_rs/components/file_input/
style.rs

1/// # File Input Style Variants
2///
3/// Style enum for daisyUI file input style classes that control the visual appearance
4/// of file input components.
5#[derive(Clone, Debug, Default)]
6pub enum FileInputStyle {
7    /// Default file input style (no style class applied)
8    #[default]
9    Default,
10
11    /// Ghost style with transparent background
12    Ghost,
13}
14
15impl FileInputStyle {
16    /// CSS class string
17    pub fn as_str(&self) -> &'static str {
18        match self {
19            FileInputStyle::Default => "",
20            FileInputStyle::Ghost => "file-input-ghost",
21        }
22    }
23}
24
25/// # File Input Color Variants
26///
27/// Style enum for daisyUI file input color classes that control the semantic color scheme
28/// of file input components. Colors follow daisyUI's semantic system for context and meaning.
29#[derive(Clone, Debug, Default)]
30pub enum FileInputColor {
31    /// Default file input color (no color class applied)
32    #[default]
33    Default,
34
35    /// Neutral color for subdued file inputs
36    Neutral,
37
38    /// Primary brand color for main action file inputs
39    Primary,
40
41    /// Secondary brand color for secondary file inputs
42    Secondary,
43
44    /// Accent brand color for highlighted file inputs
45    Accent,
46
47    /// Info color for informational file inputs
48    Info,
49
50    /// Success color for positive action file inputs
51    Success,
52
53    /// Warning color for cautionary file inputs
54    Warning,
55
56    /// Error color for error state file inputs
57    Error,
58}
59
60impl FileInputColor {
61    /// CSS class string
62    pub fn as_str(&self) -> &'static str {
63        match self {
64            FileInputColor::Default => "",
65            FileInputColor::Neutral => "file-input-neutral",
66            FileInputColor::Primary => "file-input-primary",
67            FileInputColor::Secondary => "file-input-secondary",
68            FileInputColor::Accent => "file-input-accent",
69            FileInputColor::Info => "file-input-info",
70            FileInputColor::Success => "file-input-success",
71            FileInputColor::Warning => "file-input-warning",
72            FileInputColor::Error => "file-input-error",
73        }
74    }
75}
76
77/// # File Input Size Variants
78///
79/// Style enum for daisyUI file input size classes that control the physical dimensions
80/// of file input components. Sizes scale proportionally for various contexts.
81#[derive(Clone, Debug, Default)]
82pub enum FileInputSize {
83    /// Extra small size for compact layouts
84    Xs,
85
86    /// Small size for minimal space usage
87    Sm,
88
89    /// Medium size for standard usage
90    #[default]
91    Md,
92
93    /// Large size for emphasis and visibility
94    Lg,
95
96    /// Extra large size for prominent display
97    Xl,
98}
99
100impl FileInputSize {
101    /// CSS class string
102    pub fn as_str(&self) -> &'static str {
103        match self {
104            FileInputSize::Xs => "file-input-xs",
105            FileInputSize::Sm => "file-input-sm",
106            FileInputSize::Md => "file-input-md",
107            FileInputSize::Lg => "file-input-lg",
108            FileInputSize::Xl => "file-input-xl",
109        }
110    }
111}