renderreport 0.2.0

Data-driven report generation with Typst as embedded render engine — no CLI dependency
Documentation
// TrendTile Component
// Compact card: label, large delta with direction arrow, optional reference

#let trend-tile(data) = {
  let dir = data.direction
  let pos-up = data.positive_is_up

  // Determine arrow and color based on direction and positive_is_up semantics
  let (arrow, tile-color) = if dir == "up" {
    let c = if pos-up { color-ok } else { color-bad }
    ("↑", c)
  } else if dir == "down" {
    let c = if pos-up { color-bad } else { color-ok }
    ("↓", c)
  } else {
    ("→", color-text-muted)
  }

  theme-card[
    #label-text(data.label)
    #v(spacing-2)
    #text(size: font-size-2xl, weight: "bold", fill: tile-color)[#arrow #data.delta]
    #if data.reference != none [
      #v(spacing-1)
      #small-text(data.reference)
    ]
  ]
}