auditmysite 1.3.0

Resource-efficient WCAG 2.1 Accessibility Checker in Rust
Documentation
//! Batch report components for PDF output.

use renderreport::components::advanced::Grid;
use renderreport::components::MetricCard;
use renderreport::Component;

use super::helpers::score_quality_color;

pub(super) fn build_batch_overview_grid(
    total_urls: u32,
    average_score: u32,
    total_violations: u32,
    critical_and_high: u32,
    broken_internal_links: Option<u32>,
    en: bool,
) -> Grid {
    let mut metrics = vec![
        (
            if en {
                "Accessibility average"
            } else {
                "Barrierefreiheit Ø"
            },
            format!("{average_score} / 100"),
            Some(score_quality_color(average_score)),
        ),
        (
            if en {
                "Sites audited"
            } else {
                "Geprüfte Websites"
            },
            total_urls.to_string(),
            Some("#0f766e"),
        ),
        (
            if en {
                "WCAG occurrences"
            } else {
                "WCAG-Vorkommen"
            },
            total_violations.to_string(),
            Some("#b45309"),
        ),
        (
            if en {
                "Critical + High"
            } else {
                "Kritisch + Hoch"
            },
            critical_and_high.to_string(),
            Some("#dc2626"),
        ),
    ];

    if let Some(count) = broken_internal_links {
        metrics.push((
            "Broken Links",
            count.to_string(),
            Some(if count > 0 { "#dc2626" } else { "#0f766e" }),
        ));
    }

    let mut grid = Grid::new(2);
    for (title, value, accent) in metrics {
        let mut card = MetricCard::new(title, value);
        if let Some(color) = accent {
            card = card.with_accent_color(color);
        }
        grid = grid.add_item(serde_json::json!({
            "type": "metric-card",
            "data": card.to_data()
        }));
    }

    grid
}