diff --git a/frontend/src/components/ui/accordion.rs b/frontend/src/components/ui/accordion.rs new file mode 100644 index 0000000..e80014d --- /dev/null +++ b/frontend/src/components/ui/accordion.rs @@ -0,0 +1,39 @@ +use leptos::prelude::*; +use tw_merge::tw_merge; + +#[component] +pub fn Accordion(children: Children, #[prop(optional, into)] class: String) -> impl IntoView { + let class = tw_merge!("w-full", class); + view! {
{children()}
} +} + +#[component] +pub fn AccordionItem(children: Children, #[prop(optional, into)] class: String) -> impl IntoView { + let class = tw_merge!("border-b", class); + view! {
{children()}
} +} + +#[component] +pub fn AccordionHeader(children: Children, #[prop(optional, into)] class: String) -> impl IntoView { + let class = tw_merge!("flex", class); + view! {
{children()}
} +} + +#[component] +pub fn AccordionTrigger(children: Children, #[prop(optional, into)] class: String) -> impl IntoView { + let class = tw_merge!( + "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", + class + ); + view! { + + } +} + +#[component] +pub fn AccordionContent(children: Children, #[prop(optional, into)] class: String) -> impl IntoView { + let class = tw_merge!("overflow-hidden text-sm transition-all", class); + view! {
{children()}
} +} diff --git a/frontend/src/components/ui/mod.rs b/frontend/src/components/ui/mod.rs index a6a9460..7abfe82 100644 --- a/frontend/src/components/ui/mod.rs +++ b/frontend/src/components/ui/mod.rs @@ -1,3 +1,4 @@ +pub mod accordion; pub mod alert_dialog; pub mod button; pub mod card; @@ -11,10 +12,9 @@ pub mod input; pub mod multi_select; pub mod select; pub mod separator; +pub mod sheet; +pub mod sidenav; pub mod svg_icon; pub mod table; pub mod theme_toggle; -pub mod toast; -pub mod sidenav; -pub mod sheet; -pub mod accordion; +pub mod toast; \ No newline at end of file