Files
2026-09-16 11:03:07 +02:00

30 lines
890 B
Kotlin

package dev.keluna.example
import dev.keluna.core.Element
import dev.keluna.core.UiTree
import dev.keluna.ui.*
/** Application state and behavior live entirely in Kotlin. See adjacent Counter.css. */
class Counter {
val tree = UiTree()
val increment: Element
init {
var count = 0
var button: Element? = null
tree.root.column(scope = "counter") {
heading("Hello, Keluna")
label("Kotlin/Native state. Your system WebView. Local CSS.")
val status = label("Count: 0").apply {
cssClass("counter-value")
attribute("aria-live", "polite")
}
button = button("Increment") {
count++
status.text = "Count: $count"
status.cssClass("active", count > 0)
}
}
increment = checkNotNull(button)
}
}