diff --git a/demo/gh-pages b/demo/gh-pages new file mode 160000 index 0000000..faaa4df --- /dev/null +++ b/demo/gh-pages @@ -0,0 +1 @@ +Subproject commit faaa4dfa5547b4c3e117999f4ed4cf2332006f2b diff --git a/demo/src/pages/breadcrumb/mod.rs b/demo/src/pages/breadcrumb/mod.rs index 1b6cdb5..0a737a8 100644 --- a/demo/src/pages/breadcrumb/mod.rs +++ b/demo/src/pages/breadcrumb/mod.rs @@ -10,18 +10,9 @@ pub fn BreadcrumbPage() -> impl IntoView {

"Breadcrumb"

- - "Rust" - - - "Leptos" - - - "UI" - - - "Thaw" - + "Leptos" + "UI" + "Thaw" impl IntoView { r#" - "Rust" + "Leptos" + + "UI" + + + "Thaw" + + + "#, + "rust" + ) + > + + "" + + +

"Separator"

+ + + "Leptos" + "UI" + "Thaw" + + "Leptos" diff --git a/src/breadcrumb/breadcrumb.css b/src/breadcrumb/breadcrumb.css index 65a26dd..0cff1ff 100644 --- a/src/breadcrumb/breadcrumb.css +++ b/src/breadcrumb/breadcrumb.css @@ -11,8 +11,31 @@ .thaw-breadcrumb-item__separator { margin: 0 8px; + color: var(--thaw-font-color); } -.thaw-breadcrumb-item__separator:last-child { +.thaw-breadcrumb + .thaw-breadcrumb-item:last-child + .thaw-breadcrumb-item__separator { display: none; } + +.thaw-breadcrumb-item__link { + padding: 4px; + border-radius: 3px; + transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1), + color 0.3s cubic-bezier(0.4, 0, 0.2, 1); + color: var(--thaw-font-color); + cursor: pointer; +} + +.thaw-breadcrumb + .thaw-breadcrumb-item:not(:last-child) + .thaw-breadcrumb-item__link:hover { + color: var(--thaw-font-color-hover); + background-color: var(--thaw-background-color-hover); +} + +.thaw-breadcrumb .thaw-breadcrumb-item:last-child .thaw-breadcrumb-item__link { + color: var(--thaw-font-color-hover); +} diff --git a/src/breadcrumb/breadcrumb_item.rs b/src/breadcrumb/breadcrumb_item.rs index d269dbb..9926710 100644 --- a/src/breadcrumb/breadcrumb_item.rs +++ b/src/breadcrumb/breadcrumb_item.rs @@ -6,9 +6,7 @@ pub fn BreadcrumbItem(children: Children) -> impl IntoView { let breadcrumb_separator = use_breadcrumb_separator(); view! {
  • - - {children()} - + {children()} {move || breadcrumb_separator.0.get()} diff --git a/src/breadcrumb/mod.rs b/src/breadcrumb/mod.rs index 56aeced..a1fcbc0 100644 --- a/src/breadcrumb/mod.rs +++ b/src/breadcrumb/mod.rs @@ -1,9 +1,10 @@ mod breadcrumb_item; +mod theme; +use crate::{mount_style, use_theme, Theme}; pub use breadcrumb_item::BreadcrumbItem; use leptos::*; - -use crate::mount_style; +pub use theme::BreadcrumbTheme; #[component] pub fn Breadcrumb( @@ -11,12 +12,29 @@ pub fn Breadcrumb( children: Children, ) -> impl IntoView { mount_style("breadcrumb", include_str!("./breadcrumb.css")); + let theme = use_theme(Theme::light); + let css_vars = create_memo(move |_| { + let mut css_vars = String::new(); + theme.with(|theme| { + css_vars.push_str(&format!( + "--thaw-font-color: {};", + theme.breadcrumb.item_font_color + )); + css_vars.push_str(&format!( + "--thaw-font-color-hover: {};", + theme.breadcrumb.item_font_color_hover + )); + css_vars.push_str(&format!( + "--thaw-background-color-hover: {};", + theme.breadcrumb.item_background_color_hover + )); + }); + css_vars + }); provide_context(BreadcrumbSeparatorInjection(separator)); view! { -