diff --git a/Cargo.lock b/Cargo.lock index aa3ba82..1f7e0f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3498,6 +3498,7 @@ dependencies = [ "shadcn-ui-leptos-badge", "shadcn-ui-leptos-button", "shadcn-ui-leptos-card", + "shadcn-ui-leptos-textarea", ] [[package]] @@ -3522,6 +3523,17 @@ dependencies = [ "tailwind_fuse", ] +[[package]] +name = "shadcn-ui-leptos-textarea" +version = "0.0.1" +dependencies = [ + "leptos 0.7.2", + "leptos-node-ref", + "leptos-style", + "shadcn-ui-leptos-utils", + "tailwind_fuse", +] + [[package]] name = "shadcn-ui-leptos-utils" version = "0.0.1" diff --git a/book-examples/leptos/Cargo.toml b/book-examples/leptos/Cargo.toml index d93efac..59c5ab0 100644 --- a/book-examples/leptos/Cargo.toml +++ b/book-examples/leptos/Cargo.toml @@ -21,6 +21,7 @@ shadcn-ui-leptos-alert = { path = "../../packages/leptos/alert" , optional = tru shadcn-ui-leptos-badge = { path = "../../packages/leptos/badge", 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-textarea = { path = "../../packages/leptos/textarea", optional = true } [features] default = [ @@ -28,6 +29,7 @@ default = [ "badge", "button", "card", + "textarea", ] alert = [ "dep:lucide-leptos", @@ -45,3 +47,7 @@ card = [ "dep:shadcn-ui-leptos-button", "dep:shadcn-ui-leptos-card", ] +textarea = [ + "dep:shadcn-ui-leptos-button", + "dep:shadcn-ui-leptos-textarea", +] \ No newline at end of file diff --git a/book-examples/leptos/src/default.rs b/book-examples/leptos/src/default.rs index a3148f2..5609981 100644 --- a/book-examples/leptos/src/default.rs +++ b/book-examples/leptos/src/default.rs @@ -8,6 +8,8 @@ mod badge; mod button; #[cfg(feature = "card")] mod card; +#[cfg(feature = "textarea")] +mod textarea; use leptos::prelude::*; use leptos_router::{ @@ -34,6 +36,10 @@ pub fn Default() -> impl MatchNestedRoutes + Clone { { component_view(self::card::CardRoutes, ()) }, + #[cfg(feature = "textarea")] + { + component_view(self::textarea::TextareaRoutes, ()) + }, ); view! { diff --git a/book-examples/leptos/src/default/components/ui.rs b/book-examples/leptos/src/default/components/ui.rs index a95ce66..d2ba243 100644 --- a/book-examples/leptos/src/default/components/ui.rs +++ b/book-examples/leptos/src/default/components/ui.rs @@ -8,3 +8,5 @@ pub use shadcn_ui_leptos_badge::default as badge; pub use shadcn_ui_leptos_button::default as button; #[cfg(feature = "card")] pub use shadcn_ui_leptos_card::default as card; +#[cfg(feature = "textarea")] +pub use shadcn_ui_leptos_textarea::default as textarea; diff --git a/book-examples/leptos/src/default/textarea.rs b/book-examples/leptos/src/default/textarea.rs new file mode 100644 index 0000000..7c43f89 --- /dev/null +++ b/book-examples/leptos/src/default/textarea.rs @@ -0,0 +1,28 @@ +#[allow(clippy::module_inception)] +mod textarea; +mod textarea_disabled; +mod textarea_form; +mod textarea_with_button; +mod textarea_with_label; +mod textarea_with_text; + +use leptos::prelude::*; +use leptos_router::{ + components::{Outlet, ParentRoute, Route}, + path, MatchNestedRoutes, +}; + +#[component(transparent)] +pub fn TextareaRoutes() -> impl MatchNestedRoutes + Clone { + view! { + + + + + + + + + } + .into_inner() +} diff --git a/book-examples/leptos/src/default/textarea/textarea.rs b/book-examples/leptos/src/default/textarea/textarea.rs new file mode 100644 index 0000000..21a7227 --- /dev/null +++ b/book-examples/leptos/src/default/textarea/textarea.rs @@ -0,0 +1,10 @@ +use leptos::prelude::*; + +use crate::default::components::ui::textarea::Textarea; + +#[component] +pub fn TextareaDemo() -> impl IntoView { + view! { + + } +} diff --git a/book-examples/leptos/src/default/textarea/textarea_with_button.rs b/book-examples/leptos/src/default/textarea/textarea_with_button.rs new file mode 100644 index 0000000..d97dd6b --- /dev/null +++ b/book-examples/leptos/src/default/textarea/textarea_with_button.rs @@ -0,0 +1,18 @@ +use leptos::prelude::*; + +use crate::default::components::ui::{button::Button, textarea::Textarea}; + +#[component] +pub fn TextareaWithButtonDemo() -> impl IntoView { + let text = RwSignal::new("".to_string()); + view! { +
+ + } +} diff --git a/book-examples/leptos/src/new_york/textarea/textarea_with_button.rs b/book-examples/leptos/src/new_york/textarea/textarea_with_button.rs new file mode 100644 index 0000000..190d20d --- /dev/null +++ b/book-examples/leptos/src/new_york/textarea/textarea_with_button.rs @@ -0,0 +1,18 @@ +use leptos::prelude::*; + +use crate::new_york::components::ui::{button::Button, textarea::Textarea}; + +#[component] +pub fn TextareaWithButtonDemo() -> impl IntoView { + let text = RwSignal::new("".to_string()); + view! { +
+