Dynamic attributes (:attribute)

Simple eval

{
  target: "#/page/1"
}
<a class="primary" href:="target">Go to page 1</a>

Result:

<a class="primary" href="#/page/1">Go to page 1</a>

Boolean attributes

{
  isDisabled: true,
  isChecked: false
}
<input type="checkbox" checked:="isChecked" disabled:="isDisabled">

Result:

<input type="checkbox" disabled="">

Extending attributes

{
  isDisabled: false,
  btn: "primary"
}
<button class="btn btn-" class:="btn" disabled disabled:="isDisabled">
  Submit
</button>

Result:

<button class="btn btn-primary">
  Submit
</button>

Function calls

{
  action: (ev) => {
    const btn = ev.target.closest('button')
    btn.disabled = true
    btn.textContent = 'Submited!'
  }
}
<button class="btn btn-primary" onclick:="action">
  Submit
</button>

Result:

<button class="btn btn-primary">
  Submit
</button>

After clicking the button:

<button class="btn btn-primary" disabled="">
  Submited!
</button>