use topcoat::{
Result,
view::{Attributes, Child, StaticClass, View, class, component, view},
};
const TEXTAREA: StaticClass = class!(
"field-sizing-content min-h-16 w-full rounded-lg border border-border",
"bg-transparent px-3 py-2 text-sm transition-colors outline-none",
"placeholder:text-muted-foreground",
"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
"aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive",
"focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",
);
#[component]
pub async fn textarea(
#[default] mut attrs: Attributes,
#[default] child: Child<'_>,
) -> Result<impl View> {
Ok(view! {
<textarea class=(class!(TEXTAREA, attrs.remove("class"))) (attrs)>
(child)
</textarea>
})
}