| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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" }
- }
- }
- }
- }
- }
|