use maud::{html, Markup}; pub fn info_card(title: &str, items: Vec<(&str, String)>) -> Markup { html! { div class="card" { h2 style="font-size: 0.875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.5; padding-bottom: 1rem; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 0;" { (title) } div style="margin-top: 1.5rem;" { @for (label, value) in items { div class="info-item" { span class="info-label" { (label) ":" } span class="info-value" { (value) } } } } } } } pub fn form_card(title: &str, form_content: Markup) -> Markup { html! { div class="card" { h2 style="font-size: 0.875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.5; padding-bottom: 1rem; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 0;" { (title) } div style="margin-top: 1.5rem;" { (form_content) } } } } pub fn success_message(message: &str) -> Markup { html! { div class="success" { (message) } } } pub fn error_message(message: &str) -> Markup { html! { div class="error" { (message) } } } pub fn invoice_display_card( invoice_text: &str, amount: &str, details: Vec<(&str, String)>, back_url: &str, ) -> Markup { html! { div class="card" { div style="display: flex; justify-content: space-between; align-items: center; padding-bottom: 1rem; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 1.5rem;" { h3 style="font-size: 0.875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.5; margin: 0;" { "Invoice Details" } } // Amount highlight section at the top div class="invoice-amount-section" { div class="invoice-amount-label" { "Amount" } div class="invoice-amount-value" { (amount) } } // Invoice display section - under the amount div class="invoice-display-section" { div class="invoice-label" { "Invoice" } div class="invoice-display-container" { textarea readonly class="invoice-textarea" { (invoice_text) } } } // Invoice details section - after the invoice with increased spacing div class="invoice-details-section" style="margin-top: 2.5rem;" { h4 style="font-size: 0.875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.5; margin: 0 0 1rem 0;" { "Details" } @for (label, value) in details { div class="info-item" { span class="info-label" { (label) ":" } span class="info-value" { (value) } } } } // Back button at bottom left - no border lines div style="margin-top: 2rem;" { a href=(back_url) style="text-decoration: none;" { button class="button-outline" style="padding: 0.5rem 1rem; font-size: 0.875rem;" { "Back" } } } } } }