diff --git a/Cargo.lock b/Cargo.lock index aa3ba82..64d9229 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2747,7 +2747,6 @@ dependencies = [ [[package]] name = "radix-leptos-icons" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "leptos 0.6.15", ] @@ -2755,7 +2754,6 @@ dependencies = [ [[package]] name = "radix-yew-aspect-ratio" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "yew", "yew-struct-component", @@ -2765,7 +2763,6 @@ dependencies = [ [[package]] name = "radix-yew-avatar" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "log", "web-sys", @@ -2777,8 +2774,6 @@ dependencies = [ [[package]] name = "radix-yew-icons" version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbfdd5e2c00a0db14eb1c071c94bb2e063286b21f6480cbd18d4ffe6430e4447" dependencies = [ "yew", ] @@ -2786,7 +2781,6 @@ dependencies = [ [[package]] name = "radix-yew-label" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "web-sys", "yew", @@ -2797,7 +2791,6 @@ dependencies = [ [[package]] name = "radix-yew-primitive" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "yew", ] @@ -2805,7 +2798,6 @@ dependencies = [ [[package]] name = "radix-yew-separator" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "yew", "yew-struct-component", @@ -2815,7 +2807,6 @@ dependencies = [ [[package]] name = "radix-yew-switch" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "radix-yew-primitive", "radix-yew-use-controllable-state", @@ -2830,7 +2821,6 @@ dependencies = [ [[package]] name = "radix-yew-use-controllable-state" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "yew", ] @@ -2838,7 +2828,6 @@ dependencies = [ [[package]] name = "radix-yew-use-previous" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "yew", ] @@ -2846,7 +2835,6 @@ dependencies = [ [[package]] name = "radix-yew-use-size" version = "0.0.2" -source = "git+https://github.com/RustForWeb/radix.git#aa5167ea0c8ae4498e2dc4ef1467fa87c428aa75" dependencies = [ "web-sys", "yew", @@ -3496,8 +3484,23 @@ dependencies = [ "radix-leptos-icons", "shadcn-ui-leptos-alert", "shadcn-ui-leptos-badge", + "shadcn-ui-leptos-breadcrumb", "shadcn-ui-leptos-button", "shadcn-ui-leptos-card", + "shadcn-ui-leptos-pagination", +] + +[[package]] +name = "shadcn-ui-leptos-breadcrumb" +version = "0.0.1" +dependencies = [ + "leptos 0.7.2", + "leptos-node-ref", + "leptos-struct-component", + "leptos-style", + "lucide-leptos", + "radix-leptos-icons", + "tailwind_fuse", ] [[package]] @@ -3522,6 +3525,21 @@ dependencies = [ "tailwind_fuse", ] +[[package]] +name = "shadcn-ui-leptos-pagination" +version = "0.0.1" +dependencies = [ + "leptos 0.7.2", + "leptos-node-ref", + "leptos-struct-component", + "leptos-style", + "lucide-leptos", + "radix-leptos-icons", + "shadcn-ui-leptos-button", + "shadcn-ui-leptos-utils", + "tailwind_fuse", +] + [[package]] name = "shadcn-ui-leptos-utils" version = "0.0.1" @@ -4618,9 +4636,10 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xxhash-rust" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08fd76779ae1883bbf1e46c2c46a75a0c4e37c445e68a24b01479d438f26ae6" +checksum = "d7d48f1b18be023c95e7b75f481cac649d74be7c507ff4a407c55cfb957f7934" + [[package]] name = "yansi" diff --git a/book-examples/leptos/Cargo.toml b/book-examples/leptos/Cargo.toml index d93efac..cc69332 100644 --- a/book-examples/leptos/Cargo.toml +++ b/book-examples/leptos/Cargo.toml @@ -19,15 +19,19 @@ log.workspace = true radix-leptos-icons = { workspace = true, optional = true } shadcn-ui-leptos-alert = { path = "../../packages/leptos/alert" , optional = true } shadcn-ui-leptos-badge = { path = "../../packages/leptos/badge", optional = true } +shadcn-ui-leptos-breadcrumb = { path = "../../packages/leptos/breadcrumb", optional = true } shadcn-ui-leptos-button = { path = "../../packages/leptos/button", optional = true } shadcn-ui-leptos-card = { path = "../../packages/leptos/card", optional = true } +shadcn-ui-leptos-pagination = { path = "../../packages/leptos/pagination", optional = true} [features] default = [ "alert", "badge", + "breadcrumb", "button", "card", + "pagination", ] alert = [ "dep:lucide-leptos", @@ -35,6 +39,11 @@ alert = [ "dep:shadcn-ui-leptos-alert", ] badge = ["dep:shadcn-ui-leptos-badge"] +breadcrumb = [ + "dep:lucide-leptos", + "dep:radix-leptos-icons", + "dep:shadcn-ui-leptos-breadcrumb", +] button = [ "dep:lucide-leptos", "dep:radix-leptos-icons", @@ -45,3 +54,4 @@ card = [ "dep:shadcn-ui-leptos-button", "dep:shadcn-ui-leptos-card", ] +pagination = ["dep:shadcn-ui-leptos-pagination"] diff --git a/book-examples/leptos/src/default.rs b/book-examples/leptos/src/default.rs index a3148f2..52a1599 100644 --- a/book-examples/leptos/src/default.rs +++ b/book-examples/leptos/src/default.rs @@ -2,13 +2,22 @@ mod components; #[cfg(feature = "alert")] mod alert; + #[cfg(feature = "badge")] mod badge; + +#[cfg(feature = "breadcrumb")] +mod breadcrumb; + #[cfg(feature = "button")] mod button; + #[cfg(feature = "card")] mod card; +#[cfg(feature = "pagination")] +mod pagination; + use leptos::prelude::*; use leptos_router::{ components::{Outlet, ParentRoute}, @@ -22,6 +31,10 @@ pub fn Default() -> impl MatchNestedRoutes + Clone { { component_view(self::alert::AlertRoutes, ()) }, + #[cfg(feature = "breadcrumb")] + { + component_view(self::breadcrumb::BreadcrumbRoutes, ()) + }, #[cfg(feature = "badge")] { component_view(self::badge::BadgeRoutes, ()) @@ -34,6 +47,10 @@ pub fn Default() -> impl MatchNestedRoutes + Clone { { component_view(self::card::CardRoutes, ()) }, + #[cfg(feature = "pagination")] + { + component_view(self::pagination::PaginationRoutes, ()) + }, ); view! { diff --git a/book-examples/leptos/src/default/breadcrumb.rs b/book-examples/leptos/src/default/breadcrumb.rs new file mode 100644 index 0000000..05b0200 --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb.rs @@ -0,0 +1,28 @@ +#[allow(clippy::module_inception)] +mod breadcrumb; +mod breadcrumb_dropdown; +mod breadcrumb_ellipsis; +mod breadcrumb_link; +mod breadcrumb_responsive; +mod breadcrumb_separator; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn BreadcrumbRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + + + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/default/breadcrumb/breadcrumb.rs b/book-examples/leptos/src/default/breadcrumb/breadcrumb.rs new file mode 100644 index 0000000..d9136da --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb/breadcrumb.rs @@ -0,0 +1,44 @@ +use leptos::prelude::*; + +use crate::default::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, + BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbDemo() -> impl IntoView { + view! { + + + + "Home" + + + + // TODO + // + // + // + // {"Toggle menu"} + // + // + // {"Documentation"} + // {"Themes"} + // {"GitHub"} + // + // + + "Toggle menu" + + + + "Components" + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/default/breadcrumb/breadcrumb_dropdown.rs b/book-examples/leptos/src/default/breadcrumb/breadcrumb_dropdown.rs new file mode 100644 index 0000000..0a98532 --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb/breadcrumb_dropdown.rs @@ -0,0 +1,44 @@ +use leptos::prelude::*; +use lucide_leptos::{ChevronDown, Slash}; + +use crate::default::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbDropdownDemo() -> impl IntoView { + view! { + + + + "Home" + + + + + + // TODO + // + // + // {"Components"} + // + // + // + // {"Documentation"} + // {"Themes"} + // {"GitHub"} + // + // + "Components" + + + + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/default/breadcrumb/breadcrumb_ellipsis.rs b/book-examples/leptos/src/default/breadcrumb/breadcrumb_ellipsis.rs new file mode 100644 index 0000000..ec6f301 --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb/breadcrumb_ellipsis.rs @@ -0,0 +1,45 @@ +use leptos::prelude::*; + +use crate::default::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbLinkChildProps, + BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbEllipsisDemo() -> impl IntoView { + view! { + + + + "Home" + } + .into_any() + })} + /> + + + + + + + + "Components" + } + .into_any() + })} + /> + + + + {"Breadcrumb"} + + + + } +} diff --git a/book-examples/leptos/src/default/breadcrumb/breadcrumb_link.rs b/book-examples/leptos/src/default/breadcrumb/breadcrumb_link.rs new file mode 100644 index 0000000..8714b68 --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb/breadcrumb_link.rs @@ -0,0 +1,41 @@ +use leptos::prelude::*; + +use crate::default::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbLinkChildProps, BreadcrumbList, + BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbLinkDemo() -> impl IntoView { + view! { + + + + "Home" + } + .into_any() + })} + /> + + + + "Components" + } + .into_any() + })} + /> + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/default/breadcrumb/breadcrumb_responsive.rs b/book-examples/leptos/src/default/breadcrumb/breadcrumb_responsive.rs new file mode 100644 index 0000000..9e079ca --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb/breadcrumb_responsive.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +// use crate::default::components::ui::breadcrumb::{ +// Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, +// BreadcrumbSeparator, +// }; + +#[component] +pub fn BreadcrumbResponsiveDemo() -> impl IntoView { + view! { +

"Breadcrumb Responsive needs to be implemented"

+ } +} diff --git a/book-examples/leptos/src/default/breadcrumb/breadcrumb_separator.rs b/book-examples/leptos/src/default/breadcrumb/breadcrumb_separator.rs new file mode 100644 index 0000000..f5cc1d6 --- /dev/null +++ b/book-examples/leptos/src/default/breadcrumb/breadcrumb_separator.rs @@ -0,0 +1,31 @@ +use leptos::prelude::*; +use lucide_leptos::Slash; + +use crate::default::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbSeparatorDemo() -> impl IntoView { + view! { + + + + "Home" + + + + + + "Components" + + + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/default/components/ui.rs b/book-examples/leptos/src/default/components/ui.rs index a95ce66..ea967bc 100644 --- a/book-examples/leptos/src/default/components/ui.rs +++ b/book-examples/leptos/src/default/components/ui.rs @@ -2,9 +2,18 @@ #[cfg(feature = "alert")] pub use shadcn_ui_leptos_alert::default as alert; + #[cfg(feature = "badge")] pub use shadcn_ui_leptos_badge::default as badge; + +#[cfg(feature = "breadcrumb")] +pub use shadcn_ui_leptos_breadcrumb::default as breadcrumb; + #[cfg(any(feature = "button", feature = "card"))] pub use shadcn_ui_leptos_button::default as button; + #[cfg(feature = "card")] pub use shadcn_ui_leptos_card::default as card; + +#[cfg(feature = "pagination")] +pub use shadcn_ui_leptos_pagination::default as pagination; diff --git a/book-examples/leptos/src/default/pagination.rs b/book-examples/leptos/src/default/pagination.rs new file mode 100644 index 0000000..6706d0f --- /dev/null +++ b/book-examples/leptos/src/default/pagination.rs @@ -0,0 +1,18 @@ +#[allow(clippy::module_inception)] +mod pagination; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn PaginationRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/default/pagination/pagination.rs b/book-examples/leptos/src/default/pagination/pagination.rs new file mode 100644 index 0000000..de2b170 --- /dev/null +++ b/book-examples/leptos/src/default/pagination/pagination.rs @@ -0,0 +1,39 @@ +use leptos::prelude::*; + +use crate::default::components::ui::pagination::{ + Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, + PaginationNext, PaginationPrevious, +}; + +#[component] +pub fn PaginationDemo() -> impl IntoView { + view! { + + + + + + + "1" + + + + "2" + + + + "3" + + + + + + + + + + } +} diff --git a/book-examples/leptos/src/new_york.rs b/book-examples/leptos/src/new_york.rs index 90e0fac..d396d6a 100644 --- a/book-examples/leptos/src/new_york.rs +++ b/book-examples/leptos/src/new_york.rs @@ -2,13 +2,22 @@ mod components; #[cfg(feature = "alert")] mod alert; + #[cfg(feature = "badge")] mod badge; + +#[cfg(feature = "breadcrumb")] +mod breadcrumb; + #[cfg(feature = "button")] mod button; + #[cfg(feature = "card")] mod card; +#[cfg(feature = "pagination")] +mod pagination; + use leptos::prelude::*; use leptos_router::{ components::{Outlet, ParentRoute}, @@ -26,6 +35,10 @@ pub fn NewYork() -> impl MatchNestedRoutes + Clone { { component_view(self::badge::BadgeRoutes, ()) }, + #[cfg(feature = "breadcrumb")] + { + component_view(self::breadcrumb::BreadcrumbRoutes, ()) + }, #[cfg(feature = "button")] { component_view(self::button::ButtonRoutes, ()) @@ -34,6 +47,10 @@ pub fn NewYork() -> impl MatchNestedRoutes + Clone { { component_view(self::card::CardRoutes, ()) }, + #[cfg(feature = "pagination")] + { + component_view(self::pagination::PaginationRoutes, ()) + }, ); view! { diff --git a/book-examples/leptos/src/new_york/breadcrumb.rs b/book-examples/leptos/src/new_york/breadcrumb.rs new file mode 100644 index 0000000..de037a2 --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb.rs @@ -0,0 +1,28 @@ +#[allow(clippy::module_inception)] +mod breadcrumb; +mod breadcrumb_dropdown; +mod breadcrumb_ellipsis; +mod breadcrumb_link; +mod breadcrumb_responsive; +mod breadcrumb_separator; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn BreadcrumbRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + + + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/new_york/breadcrumb/breadcrumb.rs b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb.rs new file mode 100644 index 0000000..365edd1 --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb.rs @@ -0,0 +1,44 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, + BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbDemo() -> impl IntoView { + view! { + + + + "Home" + + + + // TODO + // + // + // + // {"Toggle menu"} + // + // + // {"Documentation"} + // {"Themes"} + // {"GitHub"} + // + // + + "Toggle menu" + + + + "Components" + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_dropdown.rs b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_dropdown.rs new file mode 100644 index 0000000..5547c3a --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_dropdown.rs @@ -0,0 +1,44 @@ +use leptos::prelude::*; +use lucide_leptos::{ChevronDown, Slash}; + +use crate::new_york::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbDropdownDemo() -> impl IntoView { + view! { + + + + "Home" + + + + + + // TODO + // + // + // {"Components"} + // + // + // + // {"Documentation"} + // {"Themes"} + // {"GitHub"} + // + // + "Components" + + + + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_ellipsis.rs b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_ellipsis.rs new file mode 100644 index 0000000..ecd97d1 --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_ellipsis.rs @@ -0,0 +1,45 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbLinkChildProps, + BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbEllipsisDemo() -> impl IntoView { + view! { + + + + "Home" + } + .into_any() + })} + /> + + + + + + + + "Components" + } + .into_any() + })} + /> + + + + {"Breadcrumb"} + + + + } +} diff --git a/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_link.rs b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_link.rs new file mode 100644 index 0000000..73311ff --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_link.rs @@ -0,0 +1,41 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbLinkChildProps, BreadcrumbList, + BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbLinkDemo() -> impl IntoView { + view! { + + + + "Home" + } + .into_any() + })} + /> + + + + "Components" + } + .into_any() + })} + /> + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_responsive.rs b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_responsive.rs new file mode 100644 index 0000000..9e079ca --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_responsive.rs @@ -0,0 +1,13 @@ +use leptos::prelude::*; + +// use crate::default::components::ui::breadcrumb::{ +// Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, +// BreadcrumbSeparator, +// }; + +#[component] +pub fn BreadcrumbResponsiveDemo() -> impl IntoView { + view! { +

"Breadcrumb Responsive needs to be implemented"

+ } +} diff --git a/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_separator.rs b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_separator.rs new file mode 100644 index 0000000..e263e58 --- /dev/null +++ b/book-examples/leptos/src/new_york/breadcrumb/breadcrumb_separator.rs @@ -0,0 +1,31 @@ +use leptos::prelude::*; +use lucide_leptos::Slash; + +use crate::new_york::components::ui::breadcrumb::{ + Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, +}; + +#[component] +pub fn BreadcrumbSeparatorDemo() -> impl IntoView { + view! { + + + + "Home" + + + + + + "Components" + + + + + + "Breadcrumb" + + + + } +} diff --git a/book-examples/leptos/src/new_york/components/ui.rs b/book-examples/leptos/src/new_york/components/ui.rs index 92b7a22..0a501db 100644 --- a/book-examples/leptos/src/new_york/components/ui.rs +++ b/book-examples/leptos/src/new_york/components/ui.rs @@ -2,9 +2,18 @@ #[cfg(feature = "alert")] pub use shadcn_ui_leptos_alert::new_york as alert; + #[cfg(feature = "badge")] pub use shadcn_ui_leptos_badge::new_york as badge; + +#[cfg(feature = "breadcrumb")] +pub use shadcn_ui_leptos_breadcrumb::new_york as breadcrumb; + #[cfg(any(feature = "button", feature = "card"))] pub use shadcn_ui_leptos_button::new_york as button; + #[cfg(feature = "card")] pub use shadcn_ui_leptos_card::new_york as card; + +#[cfg(feature = "pagination")] +pub use shadcn_ui_leptos_pagination::new_york as pagination; diff --git a/book-examples/leptos/src/new_york/pagination.rs b/book-examples/leptos/src/new_york/pagination.rs new file mode 100644 index 0000000..6706d0f --- /dev/null +++ b/book-examples/leptos/src/new_york/pagination.rs @@ -0,0 +1,18 @@ +#[allow(clippy::module_inception)] +mod pagination; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn PaginationRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/new_york/pagination/pagination.rs b/book-examples/leptos/src/new_york/pagination/pagination.rs new file mode 100644 index 0000000..08d1630 --- /dev/null +++ b/book-examples/leptos/src/new_york/pagination/pagination.rs @@ -0,0 +1,39 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::pagination::{ + Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, + PaginationNext, PaginationPrevious, +}; + +#[component] +pub fn PaginationDemo() -> impl IntoView { + view! { + + + + + + + "1" + + + + "2" + + + + "3" + + + + + + + + + + } +} diff --git a/packages/leptos/README.md b/packages/leptos/README.md new file mode 100644 index 0000000..e418402 --- /dev/null +++ b/packages/leptos/README.md @@ -0,0 +1,21 @@ +

+ + Rust shadcn/ui Logo + +

+ +

shadcn-ui-leptos-breaddcrumb

+ +Displays the path to the current resource using a hierarchy of links. + +[Rust shadcn/ui](https://github.com/RustForWeb/shadcn-ui) is a Rust port of [shadcn/ui](https://ui.shadcn.com/). + +## Documentation + +See [the Rust shadcn/ui book](https://shadcn-ui.rustforweb.org/) for documentation. + +## Rust For Web + +The Rust shadcn/ui project is part of the [Rust For Web](https://github.com/RustForWeb). + +[Rust For Web](https://github.com/RustForWeb) creates and ports web UI libraries for Rust. All projects are free and open source. diff --git a/packages/leptos/breadcrumb/Cargo.toml b/packages/leptos/breadcrumb/Cargo.toml new file mode 100644 index 0000000..5c62f65 --- /dev/null +++ b/packages/leptos/breadcrumb/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "shadcn-ui-leptos-breadcrumb" +description = "Leptos port of shadcn/ui Breadcrumb." +homepage = "https://shadcn-ui.rustforweb.org/components/breadcrumb.html" +publish = false + +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +lucide-leptos.workspace = true +radix-leptos-icons = { workspace = true } +tailwind_fuse.workspace = true +leptos.workspace = true +leptos-node-ref.workspace = true +leptos-struct-component.workspace = true +leptos-style.workspace = true diff --git a/packages/leptos/breadcrumb/src/default.rs b/packages/leptos/breadcrumb/src/default.rs new file mode 100644 index 0000000..a690b18 --- /dev/null +++ b/packages/leptos/breadcrumb/src/default.rs @@ -0,0 +1,203 @@ +use leptos::{ev::MouseEvent, prelude::*}; +use leptos_node_ref::AnyNodeRef; +use leptos_struct_component::{struct_component, StructComponent}; +use leptos_style::Style; +use lucide_leptos::{ChevronRight, Ellipsis}; +use tailwind_fuse::*; + +#[component] +pub fn Breadcrumb( + // Global attributes + #[prop(into, optional)] class: MaybeProp, + #[prop(into, optional)] id: MaybeProp, + #[prop(into, optional)] style: Signal