leptos_components/
level.rs

1use components_core::{BASE_CLASS, concat};
2use leptos::prelude::*;
3use leptos::{IntoView, component, view};
4
5#[derive(Default, Debug, PartialEq)]
6pub enum Variant {
7    #[default]
8    N1,
9    N2,
10    N3,
11    OP,
12}
13
14impl ToString for Variant {
15    fn to_string(&self) -> String {
16        match self {
17            Variant::N1 => "N1".into(),
18            Variant::N2 => "N2".into(),
19            Variant::N3 => "N3".into(),
20            Variant::OP => "Op".into(),
21        }
22    }
23}
24
25#[component]
26pub fn Level(
27    #[prop(into, optional)] variant: Variant,
28    #[prop(into, optional)] class: String,
29) -> impl IntoView {
30    let variant = variant.to_string();
31    let class = crate::tw!(
32        concat!(BASE_CLASS, "-level"),
33        format!("{BASE_CLASS}-level--{}", variant.to_lowercase()),
34        class
35    );
36
37    view! {
38        <div class=class>
39            {variant}
40        </div>
41    }
42}