/// Form component for adding a new item. /// Handles user input for item name, description, and optional tags. /// Calls `on_submit` when the form is submitted. use leptos::*; use leptos_dom::ev::SubmitEvent; #[component] pub fn ItemForm(on_submit: Box)>) -> impl IntoView { let (name, set_name) = create_signal(String::new()); let (description, set_description) = create_signal(String::new()); let (tags, set_tags) = create_signal(Vec::<(String, String)>::new()); // Handle form submission. let handle_submit = move |ev: SubmitEvent| { ev.prevent_default(); on_submit(name.get(), description.get(), tags.get().clone()); // Reset values after submission set_name.update(|n| *n = String::new()); set_description.update(|d| *d = String::new()); set_tags.update(|t| t.clear()); }; view! {