lini 0.11.2

Pretty diagrams from plain text, with fine-grained control. Compiles to clean, themeable SVG.
Documentation
// Link markers (arrow, dot, diamond, crow on |line|) and template-internal links
// — a |define| whose body links its own children, so every instance routes itself.
{
  layout: column; gap: 40; padding: 24; font-weight: normal;

  |room::group| {
    layout: column; gap: 10; padding: 12; fill: --teal-wash; stroke: --teal-ink;
  } [
    |box#inlet| "in" {
      fill: --teal-soft; stroke: --teal-ink; color: --teal-ink;
    }
    |box#outlet| "out" {
      fill: --teal-soft; stroke: --teal-ink; color: --teal-ink;
    }
    inlet -> outlet "flows"
  ]
}

|block| "Markers & internal links" { font-size: 18; font-weight: bold; }

|group#ends| { layout: column; gap: 14; } [
  |caption| "markers"
  |line| {
    points: -80 0, 80 0; marker-end: arrow; stroke: --sky-deep; stroke-width: 2;
  }
  |line| {
    points: -80 0, 80 0; marker-start: dot; marker-end: dot; stroke: --green-deep; stroke-width: 2;
  }
  |line| {
    points: -80 0, 80 0; marker-end: diamond; stroke: --purple-deep; stroke-width: 2;
  }
  |line| {
    points: -80 0, 80 0; marker-end: crow; stroke: --orange-deep; stroke-width: 2;
  }
]

// each |room| materialises its own inlet -> outlet link from the define body
|row#rooms| { gap: 64; padding: 26 0 0 0; } [
  |caption| "internal links"
  |room#garden| "Garden"
  |room#kitchen| "Kitchen"
]

rooms.garden.outlet -> rooms.kitchen.inlet "carries"