presentation/renderers/metric.renderer.ts

presentation/renderers/metric.renderer.ts is a file in Bane's Lab Site. 28 lines of code and 4 definitions.

import type { Metric, MetricBlock } from "#types/block.types";
import { appendChildren, createElement } from "#core/factories/element.factory";

const renderMetric = function renderMetric(metric: Metric): Element {
    return createElement("div", {
        children: [
            createElement("span", { className: "record-field-label", text: metric.label }),
            createElement("span", { className: "record-field-value metric-value", text: metric.value }),
        ],
        className: "record-field metric-card",
    });
};

export const renderMetricGrid = function renderMetricGrid(block: MetricBlock): Element {
    const grid = createElement("div", { className: "record-fields metric-grid" });
    appendChildren(grid, block.metrics.map(renderMetric));
    return grid;
};

export const renderMetrics = function renderMetrics(block: MetricBlock): Element {
    return createElement("figure", {
        children: [
            createElement("figcaption", {
                children: [createElement("span", { className: "diagram-caption", text: block.caption })],
                className: "diagram-header",
            }),
            renderMetricGrid(block),
        ],
        className: "diagram-figure metric-figure",
    });
};