A UI + logic pair
Teaser only — the component inventory and syntax guides live on the future UI site.
App :
id = "root"
Text :
id = "hello"
text = greeting
def var greeting (str) = "Hello, Luca"
print(greeting)
Principles, locked
The rules Luca UI will not break.
State-driven
Output derives from state
Components change through state and events — never through refs or setter calls. visible and disabled are ordinary properties.
Accessible core
Labels win, inference helps
Explicit labels take precedence, text infers where sensible, and every component carries an id fit for testing and inspection.
Cross-platform
No platform in the core
The vocabulary stays platform-free; targets adapt rendering. Text backend today, native and web as future options.
Honest errors
Invalid props are Luca errors
Bad properties and arguments fail with source-located Error at line:column — frozen wording, never silent.
Backend support
Where Luca UI renders today — and what stays explicitly future.
| Target | Status |
|---|---|
| Headless text backend | Implemented — all examples verified |
| Native | Architectural option — not implemented |
| Custom GPU / Web | Architectural option — not implemented |