ludic/docs/language/structure/kw-component.md
Orkuncakilkaya e2528c1b10 docs/language: a page for every keyword and attribute the vocabulary has
Keywords: module uses friend export internal numbers unsafe mut port bind action
reducer registry of as from def open alias component prop view (structure),
shows lasts then loads (scenes), system (ecs), dispatch (control), true false
null (operators). Attributes: @Ref @OneOf @Range @Unit @Asset @Color, @Node /
@Clip / @Material, @Tint @Derived, @Text / @Multiline, @Key, @AppendOnly /
@ByKey, @PerMap / @Chunked, @frame @max, @owns / @creates / @releases,
@deterministic @alloc_ok. Each is in tools/docgen/inventory.json; every fence
that is not marked skip parses (ludicc --fmt). annot-clearcolor's token loses its
quotes, which no reader strips.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:59:47 +03:00

876 B


id: kw-component name: component category: structure kind: keyword tokens: component sig: component Name[(states)] { prop p: T = v, state s: T = v, function ..., on e(...) { } } tip: A UI component: its props, state, functions and events, beside Name.xml and Name.lss. order: 70

A component is a piece of interface: the code file declares its props (handed in by its parent), its own state, the functions its template calls and the events it handles with on; Name.xml beside it is its template and Name.lss its styles. The states named in its header are supplied by the runtime and never seen by the template.

# doc-check: skip — a component needs its template beside it
component Counter {
  prop step: int = 1
  state count: int = 0
  on add() { count = count + step }
}