Component
card
dx components add cardA simple card component
Login to your account
Enter your email below to login to your account
Installation
Use the CLI command for the common path, or copy the component files manually.
Manual installation files
Copy the component source and CSS into your app. Import the shared theme CSS once near your app root.
use dioxus::prelude::*;
#[component]
pub fn Card(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card",
"data-slot": "card",
..attributes,
{children}
}
}
}
#[component]
pub fn CardHeader(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card-header",
"data-slot": "card-header",
..attributes,
{children}
}
}
}
#[component]
pub fn CardTitle(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card-title",
"data-slot": "card-title",
..attributes,
{children}
}
}
}
#[component]
pub fn CardDescription(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card-description",
"data-slot": "card-description",
..attributes,
{children}
}
}
}
#[component]
pub fn CardAction(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card-action",
"data-slot": "card-action",
..attributes,
{children}
}
}
}
#[component]
pub fn CardContent(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card-content",
"data-slot": "card-content",
..attributes,
{children}
}
}
}
#[component]
pub fn CardFooter(
#[props(extends=GlobalAttributes)] attributes: Vec<Attribute>,
children: Element,
) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/card/style.css") }
div {
class: "dx-card-footer",
"data-slot": "card-footer",
..attributes,
{children}
}
}
}Usage notes
The card component is a flexible container for grouping related content and actions. It provides a structured layout with optional header, content, and footer sections.
Component Structure
// The Card component must wrap all card elements.
Card {
// CardHeader contains the title, description, and optional action.
CardHeader {
// CardTitle displays the main heading.
CardTitle { "Card Title" }
// CardDescription provides supporting text.
CardDescription { "Card description goes here." }
// CardAction positions action elements (e.g., buttons) in the header.
CardAction {
Button { "Action" }
}
}
// CardContent holds the main body content.
CardContent {
p { "Main content of the card." }
}
// CardFooter contains footer actions or information.
CardFooter {
Button { "Submit" }
}
}Layout Notes
- When
CardActionis present insideCardHeader, the header automatically switches to a two-column grid layout.