@almadar/std 16.241.0 → 16.242.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/behaviors/behaviors-registry.json +4650 -535
- package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +38 -1
- package/behaviors/lolo/agent/atoms/std-agent-session.lolo +1074 -47
- package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +8 -7
- package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +56 -37
- package/behaviors/lolo/infra/atoms/std-page-open.lolo +59 -0
- package/behaviors/lolo/infra/atoms/std-page-search.lolo +134 -0
- package/behaviors/lolo/infra/atoms/std-page-treat.lolo +59 -0
- package/behaviors/lolo/infra/atoms/std-page-watch.lolo +86 -0
- package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +25 -1
- package/behaviors/lolo/ui/core/atoms/std-card-grid.lolo +9 -0
- package/behaviors/lolo/ui/core/atoms/std-doc-page.lolo +153 -0
- package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +124 -92
- package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +114 -55
- package/behaviors/lolo/ui/learning/atoms/std-learn-compare.lolo +40 -14
- package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +363 -123
- package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +93 -48
- package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +60 -28
- package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +193 -96
- package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +75 -32
- package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +142 -86
- package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +266 -98
- package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +103 -65
- package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +223 -109
- package/behaviors/lolo/ui/learning/atoms/std-learn-measure.lolo +232 -64
- package/behaviors/lolo/ui/learning/atoms/std-learn-param-explorer.lolo +69 -29
- package/behaviors/lolo/ui/learning/atoms/std-learn-perturb.lolo +363 -123
- package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +73 -41
- package/behaviors/lolo/ui/learning/atoms/std-learn-sample-accumulator.lolo +96 -38
- package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +65 -45
- package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +243 -117
- package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +76 -28
- package/behaviors/lolo/ui/learning/atoms/std-learn-sim-3d.lolo +228 -109
- package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +95 -44
- package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +199 -125
- package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +92 -48
- package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +239 -78
- package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +147 -38
- package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +123 -58
- package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +22 -0
- package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +26 -0
- package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +26 -0
- package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +27 -1
- package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +27 -1
- package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +29 -9
- package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +26 -0
- package/behaviors/lolo-behavior-contracts.json +1 -1
- package/behaviors/registry/agent/atoms/std-agent-memory.orb +372 -2
- package/behaviors/registry/agent/atoms/std-agent-session.orb +4752 -348
- package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +54 -42
- package/behaviors/registry/agent/organisms/std-agent-assistant.orb +356 -122
- package/behaviors/registry/factory-signatures.json +1 -1
- package/behaviors/registry/infra/atoms/std-page-open.orb +435 -0
- package/behaviors/registry/infra/atoms/std-page-search.orb +867 -0
- package/behaviors/registry/infra/atoms/std-page-treat.orb +494 -0
- package/behaviors/registry/infra/atoms/std-page-watch.orb +554 -0
- package/behaviors/registry/ui/core/atoms/std-book-reader.orb +119 -0
- package/behaviors/registry/ui/core/atoms/std-card-grid.orb +61 -0
- package/behaviors/registry/ui/core/atoms/std-doc-page.orb +594 -0
- package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +903 -369
- package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1002 -232
- package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +253 -74
- package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +3624 -921
- package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +685 -144
- package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +404 -52
- package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1787 -210
- package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +699 -71
- package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1102 -578
- package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +2760 -872
- package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +689 -152
- package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1431 -633
- package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +2485 -512
- package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +501 -197
- package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +3642 -928
- package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +705 -125
- package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +624 -114
- package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +405 -153
- package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1911 -611
- package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +436 -128
- package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +2482 -485
- package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +896 -192
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +2001 -759
- package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +734 -228
- package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +2501 -764
- package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1591 -173
- package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +883 -122
- package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +176 -0
- package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +211 -0
- package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +211 -0
- package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +212 -1
- package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +212 -1
- package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +203 -9
- package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +211 -0
- package/behaviors/signatures.lolo +325 -655
- package/dist/behaviors/exports-reader.js +16092 -9747
- package/dist/behaviors/functions/index.d.ts +1052 -136
- package/dist/behaviors/functions/index.js +16063 -9745
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +16093 -9748
- package/dist/behaviors/query.js +16092 -9747
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +45 -25
- package/dist/behaviors-registry.json +4650 -535
- package/dist/index.d.ts +1 -1
- package/dist/index.js +16093 -9748
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +607 -263
- package/dist/registry/factory-signatures.json +1 -1
- package/package.json +3 -3
|
@@ -11335,7 +11335,7 @@ pattern meter {
|
|
|
11335
11335
|
;; an `Alias.orbitals.X` reference overrides config + identifiers, never
|
|
11336
11336
|
;; the imported orbital's own topology.
|
|
11337
11337
|
|
|
11338
|
-
;; === atoms (
|
|
11338
|
+
;; === atoms (280 behaviors, 280 apps, 281 orbitals, 281 entities, 302 traits, 284 pages) ===
|
|
11339
11339
|
|
|
11340
11340
|
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-completion.orb)
|
|
11341
11341
|
app std-agent-completion {
|
|
@@ -11391,7 +11391,7 @@ app std-agent-planner {
|
|
|
11391
11391
|
app std-agent-session {
|
|
11392
11392
|
alias : AgentSession
|
|
11393
11393
|
version : "3.0.0"
|
|
11394
|
-
orbitals : (AgentSessionOrbital)
|
|
11394
|
+
orbitals : (AgentSessionOrbital AgentChatsOrbital)
|
|
11395
11395
|
override-surface : (config)
|
|
11396
11396
|
;; via uses Alias from "std/behaviors/std-agent-session" { config { ... } }
|
|
11397
11397
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb)"
|
|
@@ -12337,16 +12337,6 @@ app std-lifecycle {
|
|
|
12337
12337
|
source : "@almadar/std (behaviors/registry/infra/atoms/std-lifecycle.orb)"
|
|
12338
12338
|
}
|
|
12339
12339
|
|
|
12340
|
-
;; From @almadar/std (behaviors/registry/ui/core/atoms/std-list.orb)
|
|
12341
|
-
app std-list {
|
|
12342
|
-
alias : List
|
|
12343
|
-
version : "1.0.0"
|
|
12344
|
-
orbitals : (ListItemOrbital)
|
|
12345
|
-
override-surface : (config)
|
|
12346
|
-
;; via uses Alias from "std/behaviors/std-list" { config { ... } }
|
|
12347
|
-
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-list.orb)"
|
|
12348
|
-
}
|
|
12349
|
-
|
|
12350
12340
|
;; From @almadar/std (behaviors/registry/ui/game/atoms/std-lives.orb)
|
|
12351
12341
|
app std-lives {
|
|
12352
12342
|
alias : Lives
|
|
@@ -14197,6 +14187,16 @@ orbital std-agent-planner.orbitals.AgentPlannerOrbital {
|
|
|
14197
14187
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-planner.orb orbitals[0])"
|
|
14198
14188
|
}
|
|
14199
14189
|
|
|
14190
|
+
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1])
|
|
14191
|
+
orbital std-agent-session.orbitals.AgentChatsOrbital {
|
|
14192
|
+
alias : AgentSession
|
|
14193
|
+
entity : AgentChat
|
|
14194
|
+
traits : (AgentChatKeeper AgentChatList)
|
|
14195
|
+
pages : ("/agent-session/chats")
|
|
14196
|
+
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
14197
|
+
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1])"
|
|
14198
|
+
}
|
|
14199
|
+
|
|
14200
14200
|
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0])
|
|
14201
14201
|
orbital std-agent-session.orbitals.AgentSessionOrbital {
|
|
14202
14202
|
alias : AgentSession
|
|
@@ -15147,16 +15147,6 @@ orbital std-lifecycle.orbitals.LifecycleOrbital {
|
|
|
15147
15147
|
source : "@almadar/std (behaviors/registry/infra/atoms/std-lifecycle.orb orbitals[0])"
|
|
15148
15148
|
}
|
|
15149
15149
|
|
|
15150
|
-
;; From @almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0])
|
|
15151
|
-
orbital std-list.orbitals.ListItemOrbital {
|
|
15152
|
-
alias : List
|
|
15153
|
-
entity : ListItem
|
|
15154
|
-
traits : (ListItemBrowse ListItemPersistor ListItemCreateButton = Button.traits.ButtonRender ListItemCreateGate = RoleGate.traits.RoleGate ListItemCreate = Modal.traits.ModalRecordModal ListItemEdit = Modal.traits.ModalRecordModal ListItemDelete = Confirmation.traits.ConfirmActionConfirmation)
|
|
15155
|
-
pages : ("/listitems")
|
|
15156
|
-
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
15157
|
-
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0])"
|
|
15158
|
-
}
|
|
15159
|
-
|
|
15160
15150
|
;; From @almadar/std (behaviors/registry/ui/game/atoms/std-lives.orb orbitals[0])
|
|
15161
15151
|
orbital std-lives.orbitals.LivesOrbital {
|
|
15162
15152
|
alias : Lives
|
|
@@ -17008,13 +16998,24 @@ entity std-agent-planner.entity {
|
|
|
17008
16998
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-planner.orb orbitals[0].entity)"
|
|
17009
16999
|
}
|
|
17010
17000
|
|
|
17001
|
+
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].entity)
|
|
17002
|
+
entity std-agent-session.entity {
|
|
17003
|
+
alias : AgentSession
|
|
17004
|
+
name : AgentChat
|
|
17005
|
+
persistence : persistent
|
|
17006
|
+
collection : agentChats
|
|
17007
|
+
fields : (id! ownerId! title startedAt lastActiveAt pendingMessage pendingReply)
|
|
17008
|
+
override-surface : (extends name fields persistence collection)
|
|
17009
|
+
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].entity)"
|
|
17010
|
+
}
|
|
17011
|
+
|
|
17011
17012
|
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0].entity)
|
|
17012
17013
|
entity std-agent-session.entity {
|
|
17013
17014
|
alias : AgentSession
|
|
17014
17015
|
name : AgentMessage
|
|
17015
17016
|
persistence : persistent
|
|
17016
17017
|
collection : agentMessages
|
|
17017
|
-
fields : (id! ownerId! role content! createdAt)
|
|
17018
|
+
fields : (id! ownerId! role content! createdAt chatId)
|
|
17018
17019
|
override-surface : (extends name fields persistence collection)
|
|
17019
17020
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0].entity)"
|
|
17020
17021
|
}
|
|
@@ -17709,7 +17710,7 @@ entity std-learn-coupled-sim.entity {
|
|
|
17709
17710
|
alias : LearnCoupledSim
|
|
17710
17711
|
name : CoupledSimScene
|
|
17711
17712
|
persistence : runtime
|
|
17712
|
-
fields : (id! active title t p q coefA coefB running pSamples qSamples curves)
|
|
17713
|
+
fields : (id! active title t p q coefA coefB running speed pSamples qSamples curves)
|
|
17713
17714
|
override-surface : (extends name fields persistence collection)
|
|
17714
17715
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb orbitals[0].entity)"
|
|
17715
17716
|
}
|
|
@@ -17779,7 +17780,7 @@ entity std-learn-grid-sim.entity {
|
|
|
17779
17780
|
alias : LearnGridSim
|
|
17780
17781
|
name : GridSimScene
|
|
17781
17782
|
persistence : runtime
|
|
17782
|
-
fields : (id! active title cells generation aliveCount running cellShapes)
|
|
17783
|
+
fields : (id! active title cells generation aliveCount running speed elapsedMs cellShapes)
|
|
17783
17784
|
override-surface : (extends name fields persistence collection)
|
|
17784
17785
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb orbitals[0].entity)"
|
|
17785
17786
|
}
|
|
@@ -17809,7 +17810,7 @@ entity std-learn-measure.entity {
|
|
|
17809
17810
|
alias : LearnMeasure
|
|
17810
17811
|
name : MeasureScene
|
|
17811
17812
|
persistence : runtime
|
|
17812
|
-
fields : (id! active title t value running traceSamples traceCurves points sampleCount meanValue)
|
|
17813
|
+
fields : (id! active title t value running speed traceSamples traceCurves points sampleCount meanValue)
|
|
17813
17814
|
override-surface : (extends name fields persistence collection)
|
|
17814
17815
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-measure.orb orbitals[0].entity)"
|
|
17815
17816
|
}
|
|
@@ -17829,7 +17830,7 @@ entity std-learn-perturb.entity {
|
|
|
17829
17830
|
alias : LearnPerturb
|
|
17830
17831
|
name : PerturbScene
|
|
17831
17832
|
persistence : runtime
|
|
17832
|
-
fields : (id! active title t value setpoint rate running traceSamples curves)
|
|
17833
|
+
fields : (id! active title t value setpoint rate running speed traceSamples curves)
|
|
17833
17834
|
override-surface : (extends name fields persistence collection)
|
|
17834
17835
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-perturb.orb orbitals[0].entity)"
|
|
17835
17836
|
}
|
|
@@ -17909,7 +17910,7 @@ entity std-learn-speed-drill.entity {
|
|
|
17909
17910
|
alias : LearnSpeedDrill
|
|
17910
17911
|
name : SpeedDrillScene
|
|
17911
17912
|
persistence : runtime
|
|
17912
|
-
fields : (id! active title itemIndex totalItems remaining running verdict score streak bestStreak done promptText options correctIndex feedback view)
|
|
17913
|
+
fields : (id! active title itemIndex totalItems remaining running verdict score streak bestStreak done promptText options correctIndex feedback pickedIndex view)
|
|
17913
17914
|
override-surface : (extends name fields persistence collection)
|
|
17914
17915
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb orbitals[0].entity)"
|
|
17915
17916
|
}
|
|
@@ -17939,7 +17940,7 @@ entity std-learn-trace-player.entity {
|
|
|
17939
17940
|
alias : LearnTracePlayer
|
|
17940
17941
|
name : TracePlayerScene
|
|
17941
17942
|
persistence : runtime
|
|
17942
|
-
fields : (id! active title frameIndex running bars frameLabel frameCaption statusNote)
|
|
17943
|
+
fields : (id! active title frameIndex running speed elapsedMs bars frameLabel frameCaption statusNote)
|
|
17943
17944
|
override-surface : (extends name fields persistence collection)
|
|
17944
17945
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb orbitals[0].entity)"
|
|
17945
17946
|
}
|
|
@@ -17949,7 +17950,7 @@ entity std-learn-transport.entity {
|
|
|
17949
17950
|
alias : LearnTransport
|
|
17950
17951
|
name : LearnTransportScene
|
|
17951
17952
|
persistence : runtime
|
|
17952
|
-
fields : (id! active title running steps elapsedMs done)
|
|
17953
|
+
fields : (id! active title running steps elapsedMs done speed)
|
|
17953
17954
|
override-surface : (extends name fields persistence collection)
|
|
17954
17955
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-transport.orb orbitals[0].entity)"
|
|
17955
17956
|
}
|
|
@@ -17975,17 +17976,6 @@ entity std-lifecycle.entity {
|
|
|
17975
17976
|
source : "@almadar/std (behaviors/registry/infra/atoms/std-lifecycle.orb orbitals[0].entity)"
|
|
17976
17977
|
}
|
|
17977
17978
|
|
|
17978
|
-
;; From @almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].entity)
|
|
17979
|
-
entity std-list.entity {
|
|
17980
|
-
alias : List
|
|
17981
|
-
name : ListItem
|
|
17982
|
-
persistence : persistent
|
|
17983
|
-
collection : listitems
|
|
17984
|
-
fields : (id! name! description status createdAt pendingId)
|
|
17985
|
-
override-surface : (extends name fields persistence collection)
|
|
17986
|
-
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].entity)"
|
|
17987
|
-
}
|
|
17988
|
-
|
|
17989
17979
|
;; From @almadar/std (behaviors/registry/ui/game/atoms/std-lives.orb orbitals[0].entity)
|
|
17990
17980
|
entity std-lives.entity {
|
|
17991
17981
|
alias : Lives
|
|
@@ -19890,9 +19880,9 @@ trait std-agent-memory.traits.AgentMemoryRecall {
|
|
|
19890
19880
|
linkedEntity : AgentMemory
|
|
19891
19881
|
category : lifecycle
|
|
19892
19882
|
states : (ready* recalling remembering)
|
|
19893
|
-
events : (INIT MEMORY_STORED RECALL REMEMBER MemoryEmbedded MemoriesForRecall MemoryEmbedFailed AgentMemoriesLoadFailed RECALLED)
|
|
19894
|
-
transitions : ((ready -> ready on INIT) (ready -> ready on MEMORY_STORED) (ready -> recalling on RECALL) (ready -> remembering on REMEMBER) (recalling -> recalling on MemoryEmbedded) (recalling -> ready on MemoriesForRecall) (recalling -> ready on MemoryEmbedFailed) (recalling -> ready on AgentMemoriesLoadFailed) (remembering -> ready on MemoryEmbedded) (remembering -> ready on MemoryEmbedFailed))
|
|
19895
|
-
emits : (RECALLED MEMORY_STORED AgentMemoriesLoadFailed MemoriesForRecall MemoryEmbedded MemoryEmbedFailed)
|
|
19883
|
+
events : (INIT MEMORY_STORED LIST MemoriesForList MemoryListFailed RECALL REMEMBER MemoryEmbedded MemoriesForRecall MemoryEmbedFailed AgentMemoriesLoadFailed RECALLED ASSISTANT_MEMORIES_LOADED)
|
|
19884
|
+
transitions : ((ready -> ready on INIT) (ready -> ready on MEMORY_STORED) (ready -> ready on LIST) (ready -> ready on MemoriesForList) (ready -> ready on MemoryListFailed) (ready -> recalling on RECALL) (ready -> remembering on REMEMBER) (recalling -> recalling on MemoryEmbedded) (recalling -> ready on MemoriesForRecall) (recalling -> ready on MemoryEmbedFailed) (recalling -> ready on AgentMemoriesLoadFailed) (remembering -> ready on MemoryEmbedded) (remembering -> ready on MemoryEmbedFailed))
|
|
19885
|
+
emits : (RECALLED ASSISTANT_MEMORIES_LOADED MemoriesForList MemoryListFailed MEMORY_STORED AgentMemoriesLoadFailed MemoriesForRecall MemoryEmbedded MemoryEmbedFailed)
|
|
19896
19886
|
config {
|
|
19897
19887
|
recallLimit : number = 3 @label "Memories recalled per request" @description "How many of the closest memories go to the model with each request." @tier "policy"
|
|
19898
19888
|
}
|
|
@@ -19925,19 +19915,56 @@ trait std-agent-planner.traits.PlannerListener {
|
|
|
19925
19915
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-planner.orb orbitals[0].traits[1])"
|
|
19926
19916
|
}
|
|
19927
19917
|
|
|
19918
|
+
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].traits[0])
|
|
19919
|
+
trait std-agent-session.traits.AgentChatKeeper {
|
|
19920
|
+
alias : AgentSession
|
|
19921
|
+
linkedEntity : AgentChat
|
|
19922
|
+
category : lifecycle
|
|
19923
|
+
states : (ready*)
|
|
19924
|
+
events : (INIT LOAD_HISTORY ChatsForHistory SEND ChatsForSend ChatReadyForSend REPLIED ChatsForReply NEW_CHAT NewChatStarted SELECT_CHAT ChatsForSelect ChatSelected LIST_CHATS ChatsForList AgentChatsLoadFailed ASSISTANT_CHAT_OPENED ASSISTANT_SEND_IN_CHAT ASSISTANT_REPLY_IN_CHAT ASSISTANT_CHATS_CHANGED ASSISTANT_THREAD_FAILED ASSISTANT_CHATS_LOADED)
|
|
19925
|
+
transitions : ((ready -> ready on INIT) (ready -> ready on LOAD_HISTORY) (ready -> ready on ChatsForHistory) (ready -> ready on SEND) (ready -> ready on ChatsForSend) (ready -> ready on ChatsForSend) (ready -> ready on ChatReadyForSend) (ready -> ready on REPLIED) (ready -> ready on ChatsForReply) (ready -> ready on NEW_CHAT) (ready -> ready on NewChatStarted) (ready -> ready on SELECT_CHAT) (ready -> ready on ChatsForSelect) (ready -> ready on ChatSelected) (ready -> ready on LIST_CHATS) (ready -> ready on ChatsForList) (ready -> ready on AgentChatsLoadFailed))
|
|
19926
|
+
emits : (ASSISTANT_CHAT_OPENED ASSISTANT_SEND_IN_CHAT ASSISTANT_REPLY_IN_CHAT ASSISTANT_CHATS_CHANGED ASSISTANT_THREAD_FAILED ASSISTANT_CHATS_LOADED ChatsForList ChatsForHistory ChatsForSend ChatsForReply ChatsForSelect ChatReadyForSend NewChatStarted ChatSelected AgentChatsLoadFailed)
|
|
19927
|
+
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
19928
|
+
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].traits[0])"
|
|
19929
|
+
}
|
|
19930
|
+
|
|
19931
|
+
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].traits[1])
|
|
19932
|
+
trait std-agent-session.traits.AgentChatList {
|
|
19933
|
+
alias : AgentSession
|
|
19934
|
+
linkedEntity : AgentChat
|
|
19935
|
+
category : interaction
|
|
19936
|
+
states : (loading* browsing)
|
|
19937
|
+
events : (INIT AgentChatsLoaded AgentChatsLoadFailed CHATS_CHANGED OPEN_CHAT NEW_CHAT_CLICKED ASSISTANT_CHAT_SELECTED ASSISTANT_NEW_CHAT)
|
|
19938
|
+
transitions : ((loading -> loading on INIT) (loading -> browsing on AgentChatsLoaded) (loading -> browsing on AgentChatsLoadFailed) (browsing -> loading on INIT) (browsing -> browsing on CHATS_CHANGED) (browsing -> browsing on AgentChatsLoaded) (browsing -> browsing on AgentChatsLoadFailed) (browsing -> browsing on OPEN_CHAT) (browsing -> browsing on NEW_CHAT_CLICKED))
|
|
19939
|
+
emits : (ASSISTANT_CHAT_SELECTED ASSISTANT_NEW_CHAT AgentChatsLoaded AgentChatsLoadFailed)
|
|
19940
|
+
config {
|
|
19941
|
+
newChatLabel : string = "New conversation" @label "New conversation button" @tier "presentation"
|
|
19942
|
+
untitledLabel : string = "New conversation" @label "Name of a conversation with no messages yet" @tier "presentation"
|
|
19943
|
+
}
|
|
19944
|
+
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
19945
|
+
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].traits[1])"
|
|
19946
|
+
}
|
|
19947
|
+
|
|
19928
19948
|
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0].traits[1])
|
|
19929
19949
|
trait std-agent-session.traits.AgentConversation {
|
|
19930
19950
|
alias : AgentSession
|
|
19931
19951
|
linkedEntity : AgentConversationView
|
|
19932
19952
|
category : interaction
|
|
19933
19953
|
states : (idle*)
|
|
19934
|
-
events : (INIT THREAD_LOADED ASK STEP REPLIED REPLY_FAILED
|
|
19935
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on THREAD_LOADED) (idle -> idle on ASK) (idle -> idle on STEP) (idle -> idle on REPLIED) (idle -> idle on REPLY_FAILED))
|
|
19936
|
-
emits : (
|
|
19954
|
+
events : (INIT THREAD_LOADED ASK STEP REPLIED NEW_CHAT_CLICKED OPEN_CHATS_CLICKED CHATS_LISTED CHAT_PICKED OPEN_MEMORY_CLICKED MEMORIES_LISTED BACK_TO_CHAT REPLY_FAILED ASSISTANT_HISTORY_REQUESTED ASSISTANT_NEW_CHAT ASSISTANT_SEND ASSISTANT_CHATS_REQUESTED ASSISTANT_CHAT_SELECTED ASSISTANT_MEMORIES_REQUESTED)
|
|
19955
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on THREAD_LOADED) (idle -> idle on ASK) (idle -> idle on STEP) (idle -> idle on REPLIED) (idle -> idle on NEW_CHAT_CLICKED) (idle -> idle on OPEN_CHATS_CLICKED) (idle -> idle on CHATS_LISTED) (idle -> idle on CHAT_PICKED) (idle -> idle on OPEN_MEMORY_CLICKED) (idle -> idle on MEMORIES_LISTED) (idle -> idle on BACK_TO_CHAT) (idle -> idle on REPLY_FAILED))
|
|
19956
|
+
emits : (ASSISTANT_HISTORY_REQUESTED ASSISTANT_NEW_CHAT NEW_CHAT_CLICKED ASSISTANT_SEND ASSISTANT_CHATS_REQUESTED ASSISTANT_CHAT_SELECTED ASSISTANT_MEMORIES_REQUESTED OPEN_CHATS_CLICKED OPEN_MEMORY_CLICKED CHAT_PICKED ASK)
|
|
19937
19957
|
config {
|
|
19958
|
+
backLabel : string = "Back" @label "Back to the conversation" @tier "presentation"
|
|
19959
|
+
chatsEmptyTitle : string = "No conversations yet" @label "Empty conversation list" @tier "presentation"
|
|
19960
|
+
chatsLabel : string = "Conversations" @label "Past conversations button" @description "Shows the person's past conversations in place of the chat; picking one reopens it." @tier "presentation"
|
|
19938
19961
|
emptyTitle : string = "Ask me to do something in this app" @label "Empty conversation title" @tier "presentation"
|
|
19939
|
-
links : [AgentLink] = [] @label "Links above the conversation" @description "Related pages (e.g. the run history)." @tier "presentation"
|
|
19962
|
+
links : [AgentLink] = [{"href":"/agent-session/chats","label":"All conversations"}] @label "Links above the conversation" @description "Related pages (e.g. the run history)." @tier "presentation"
|
|
19963
|
+
memoryEmptyTitle : string = "Nothing remembered yet" @label "Empty memory list" @tier "presentation"
|
|
19964
|
+
memoryLabel : string = "What I remember" @label "Memory button" @description "Shows what the assistant remembers for this person in place of the chat." @tier "presentation"
|
|
19965
|
+
newChatLabel : string = "New conversation" @label "New conversation button" @description "Starts a fresh conversation; earlier ones stay in the conversation list." @tier "presentation"
|
|
19940
19966
|
placeholder : string = "Ask the assistant…" @label "Message placeholder" @tier "presentation"
|
|
19967
|
+
untitledLabel : string = "New conversation" @label "Title of a conversation with no messages yet" @tier "presentation"
|
|
19941
19968
|
}
|
|
19942
19969
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
19943
19970
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0].traits[1])"
|
|
@@ -19949,9 +19976,9 @@ trait std-agent-session.traits.AgentThread {
|
|
|
19949
19976
|
linkedEntity : AgentMessage
|
|
19950
19977
|
category : lifecycle
|
|
19951
19978
|
states : (ready*)
|
|
19952
|
-
events : (INIT
|
|
19953
|
-
transitions : ((ready -> ready on INIT) (ready -> ready on
|
|
19954
|
-
emits : (
|
|
19979
|
+
events : (INIT OPEN_CHAT SEND_IN_CHAT AgentMessageSaved AgentConversationLoaded REPLY_IN_CHAT AgentMessagesLoadFailed AgentMessageSaveFailed ASSISTANT_THREAD_FAILED CONVERSE AgentMessagesLoaded)
|
|
19980
|
+
transitions : ((ready -> ready on INIT) (ready -> ready on OPEN_CHAT) (ready -> ready on OPEN_CHAT) (ready -> ready on SEND_IN_CHAT) (ready -> ready on AgentMessageSaved) (ready -> ready on AgentConversationLoaded) (ready -> ready on REPLY_IN_CHAT) (ready -> ready on AgentMessagesLoadFailed) (ready -> ready on AgentMessageSaveFailed))
|
|
19981
|
+
emits : (ASSISTANT_THREAD_FAILED CONVERSE AgentMessagesLoaded AgentMessagesLoadFailed AgentConversationLoaded AgentMessageSaved AgentMessageSaveFailed)
|
|
19955
19982
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
19956
19983
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0].traits[0])"
|
|
19957
19984
|
}
|
|
@@ -19987,9 +20014,9 @@ trait std-agent-tool-loop.traits.AgentToolLoop {
|
|
|
19987
20014
|
linkedEntity : AgentTurn
|
|
19988
20015
|
category : interaction
|
|
19989
20016
|
states : (idle* thinking)
|
|
19990
|
-
events : (INIT CONVERSE ANSWERED ASK_FAILED
|
|
20017
|
+
events : (INIT CONVERSE ANSWERED ASK_FAILED ASSISTANT_STEP ASSISTANT_REPLIED ASSISTANT_REPLY_FAILED)
|
|
19991
20018
|
transitions : ((idle -> idle on INIT) (idle -> thinking on CONVERSE) (thinking -> idle on ANSWERED) (thinking -> idle on ASK_FAILED))
|
|
19992
|
-
emits : (
|
|
20019
|
+
emits : (ASSISTANT_STEP ASSISTANT_REPLIED ASSISTANT_REPLY_FAILED ANSWERED ASK_FAILED)
|
|
19993
20020
|
config {
|
|
19994
20021
|
instructions : string = "You operate this app for the signed-in user. Use the tools to act and to look things up; when a tool reports that something was refused or denied, say so plainly." @label "How should the assistant behave?" @description "Standing instructions sent with every conversation." @synonyms "system prompt, persona, guidance" @tier "domain"
|
|
19995
20022
|
maxSteps : number = 8 @label "Model round-trips per request" @description "How many model calls one request may take before it fails." @tier "policy"
|
|
@@ -20238,6 +20265,7 @@ trait std-billable-hour.traits.BillableHourTimesheet {
|
|
|
20238
20265
|
columns : [ColumnSpec] = [{"align":"left","field":"workerName","header":"Worker","key":"workerName","width":"minmax(8rem, 1fr)"},{"align":"left","field":"matterId","header":"Matter","key":"matterId","width":"8rem"},{"align":"left","field":"workDate","format":"date","header":"Date","key":"workDate","width":"8rem"},{"align":"right","field":"hours","format":"number","header":"Hours","key":"hours","width":"6rem"},{"align":"right","field":"rate","format":"currency","header":"Rate","key":"rate","width":"7rem"},{"align":"center","field":"invoiceStatus","format":"badge","header":"Status","key":"invoiceStatus","width":"8rem"}] @label "Table columns" @description "ColumnSpec list for the dense hours ledger table." @tier "presentation"
|
|
20239
20266
|
invoiceRoles : [string] = [] @label "Roles that can invoice" @description "Roles (matched against viewerRole) that see the Invoice button. Empty = everyone." @tier "policy"
|
|
20240
20267
|
itemActions : [ItemAction] = [{"event":"OPEN_HOURS","icon":"arrow-right","label":"Open","variant":"ghost"},{"event":"WRITE_OFF_HOURS","label":"Write Off","variant":"danger"}] @label "Row actions" @description "Per-row actions rendered by the hours table." @tier "presentation"
|
|
20268
|
+
showHeader : boolean = true @label "Show the list's own title row?" @description "Off when the page already carries a page header naming the same thing, so the page shows one title." @tier "presentation"
|
|
20241
20269
|
statLook : string = "elevated" @label "Stat display look" @description "Layer 2 visual treatment for stat / KPI cards." @tier "presentation" @values (elevated flat progress-backed gauge sparkline)
|
|
20242
20270
|
tableLook : string = "dense" @label "Table look" @description "Layer 2 visual treatment for the data table rendered by this atom." @tier "presentation" @values (dense spacious striped borderless bordered)
|
|
20243
20271
|
title : string = "Time Entries" @label "Section title" @description "Heading shown above the time-entries list" @tier "presentation"
|
|
@@ -20258,8 +20286,9 @@ trait std-board.traits.BoardItemBoard {
|
|
|
20258
20286
|
transitions : ((loading -> loading on INIT) (loading -> viewing_board on BoardItemsLoaded) (loading -> error on BoardItemsLoadFailed) (loading -> loading on BoardItemsSaved) (loading -> loading on BoardItemDeleted) (loading -> error on BoardItemsSaveFailed) (viewing_board -> loading on INIT) (viewing_board -> viewing_card on OPEN_CARD) (viewing_board -> adding on ADD_CARD) (viewing_board -> viewing_board on MOVE_CARD) (viewing_board -> viewing_board on REORDER_CARD) (viewing_board -> viewing_board on REORDER_POSITION) (viewing_board -> viewing_board on BoardItemsSaved) (viewing_board -> viewing_board on REFETCH_QUERY) (viewing_board -> viewing_board on REFETCH_FILTER) (viewing_board -> viewing_board on REFETCH_PAGE) (viewing_board -> viewing_board on BoardItemsLoaded) (viewing_board -> viewing_board on BoardItemsSaveFailed) (viewing_board -> viewing_board on BoardItemsLoadFailed) (viewing_card -> loading on CLOSE_CARD) (viewing_card -> loading on MOVE_CARD) (viewing_card -> loading on DELETE_CARD) (adding -> loading on SAVE_CARD) (adding -> viewing_board on CANCEL_ADD) (error -> loading on INIT))
|
|
20259
20287
|
emits : (OPEN_CARD CLOSE_CARD ADD_CARD CANCEL_ADD SAVE_CARD MOVE_CARD REORDER_CARD DELETE_CARD EDIT_CARD BoardItemsLoaded BoardItemsLoadFailed BoardItemsSaved BoardItemDeleted BoardItemsSaveFailed)
|
|
20260
20288
|
config {
|
|
20289
|
+
addPlacement : string = "floating" @label "Add button placement" @description "Where the add-item button sits: 'floating' (default) pins a floating action button to the screen corner; 'inline' renders an ordinary Add button above the columns, for a board embedded in a card or panel." @synonyms "add button position, floating add, inline add, add item button placement. user phrases: 'put the add button inside the board' / 'no floating button' -> inline" @tier "presentation" @values (floating inline)
|
|
20261
20290
|
boardLook : string = "columns" @label "Board look" @description "Layer 3 body layout: default N-column data-grid ('columns'), or a Trello-style wide-column kanban with sticky column headers ('kanban-classic')." @tier "presentation" @values (columns kanban-classic)
|
|
20262
|
-
bodyContent : render-ui = {"children":[["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"lg","type":"icon"},{"content":"@config.title","type":"typography","variant":"h3"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"cols":"@config.gridCols","dndRoot":true,"entity":"@entity.boards","fields":[],"gap":"md","renderItem":["fn","col",{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"content":"@col.label","type":"typography","variant":"h4"},{"label":"@col.count","type":"badge","variant":"@col.variant"}],"direction":"horizontal","gap":"xs","type":"stack"},{"accepts":"*","dragGroup":"@col.key","dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"h4"},{"color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"icon":"arrow-right","label":"Open","type":"button","variant":"ghost"}],"direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"look":"@config.cardLook","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":true,"type":"data-list"}],"direction":"vertical","gap":"sm","type":"stack"}],"look":"@config.cardLook","type":"card"}],"type":"data-grid"},{"action":"ADD_CARD","icon":"plus","label":"Add item","type":"floating-action-button","variant":"primary"}],"direction":"vertical","gap":"md","type":"stack"} @label "Body content tree" @description "Render-ui SExpr rendered after the board loads for boardLook='columns' — the canonical column data-grid with nested per-column data-lists. boardLook='kanban-classic' renders kanbanClassicBodyContent instead; both share this trait's state machine, emits, and listens." @tier "internal"
|
|
20291
|
+
bodyContent : render-ui = {"children":[["if",["=","@config.addPlacement","inline"],{"children":[{"action":"ADD_CARD","icon":"plus","label":"Add item","size":"sm","type":"button","variant":"secondary"}],"direction":"horizontal","gap":"sm","justify":"end","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"lg","type":"icon"},{"content":"@config.title","type":"typography","variant":"h3"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"cols":"@config.gridCols","dndRoot":true,"entity":"@entity.boards","fields":[],"gap":"md","renderItem":["fn","col",{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"content":"@col.label","type":"typography","variant":"h4"},{"label":"@col.count","type":"badge","variant":"@col.variant"}],"direction":"horizontal","gap":"xs","type":"stack"},{"accepts":"*","dragGroup":"@col.key","dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"h4"},{"color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"icon":"arrow-right","label":"Open","type":"button","variant":"ghost"}],"direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"look":"@config.cardLook","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":true,"type":"data-list"}],"direction":"vertical","gap":"sm","type":"stack"}],"look":"@config.cardLook","type":"card"}],"type":"data-grid"},["if",["=","@config.addPlacement","floating"],{"action":"ADD_CARD","icon":"plus","label":"Add item","type":"floating-action-button","variant":"primary"},{"children":[],"gap":"none","type":"stack"}]],"direction":"vertical","gap":"md","type":"stack"} @label "Body content tree" @description "Render-ui SExpr rendered after the board loads for boardLook='columns' — the canonical column data-grid with nested per-column data-lists. boardLook='kanban-classic' renders kanbanClassicBodyContent instead; both share this trait's state machine, emits, and listens." @tier "internal"
|
|
20263
20292
|
bodySearch : boolean = false @label "Show the board's own search box?" @description "Renders an inline search box above the columns. Defaults false: unlike std-browse, std-board has never had a search box, so defaulting this true would silently add one to every existing consumer. The wired path — composing std-search beside the board and routing its FILTER/SEARCH event to REFETCH_QUERY — works regardless of this knob; set true only for a standalone board with no page-level search affordance." @synonyms "inline search, board search, built-in search, show search, duplicate search" @tier "presentation"
|
|
20264
20293
|
cardActions : [ItemAction] = [{"event":"DELETE_CARD","icon":"trash-2","label":"Delete","variant":"danger"}] @label "Card panel action list" @description "Buttons on the open-card panel's actions row, built by the default cardActionsContent. Give an item `roles` to show it only to those viewer roles." @tier "presentation"
|
|
20265
20294
|
cardActionsContent : render-ui = {"align":"center","children":["array/map",["array/filter","@config.cardActions",["fn","action",["or",["=",["array/len",["object/get","@action","roles",[]]],0],["array/includes",["object/get","@action","roles",[]],"@config.viewerRole"]]]],["fn","a",{"action":"@a.event","actionPayload":{"id":"@entity.currentId"},"icon":"@a.icon","label":"@a.label","type":"button","variant":"@a.variant"}]],"direction":"horizontal","gap":"sm","type":"stack"} @label "Card panel actions" @description "Actions row of the open-card panel. Default is the Delete button only. Override to add consumer-wired actions — e.g. an Edit button with action: EDIT_CARD and actionPayload: { id: @entity.currentId, row: @entity.currentRow }, listened to by the organism's edit modal. Never leave a button here without a listener." @tier "presentation"
|
|
@@ -20276,7 +20305,7 @@ trait std-board.traits.BoardItemBoard {
|
|
|
20276
20305
|
gridCols : number = 3 @label "Grid columns" @description "Outer grid column count before the board wraps" @tier "presentation"
|
|
20277
20306
|
groupByField : string = "stage" @label "Group-by field" @description "Entity field whose value matches a column key — items are filtered into columns by it. Default 'stage'; set to 'status' (or any field) for entities that track state under a different name." @tier "presentation"
|
|
20278
20307
|
include : [string] = [] @label "Which relation fields to hydrate?" @description "Entity relation field names to hydrate on fetch (e.g. an `assignee : TeamMember` field named `assignee`), so card bindings can use dot-paths like @item.assignee.name. Empty = no hydration, the default." @synonyms "relation hydration, populate relations, joined fields, hydrate relations" @tier "domain"
|
|
20279
|
-
kanbanClassicBodyContent : render-ui = {"children":[["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"xl","type":"icon"},{"content":"@config.title","type":"typography","variant":"h2"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full pb-2","dndRoot":true,"entity":"@entity.boards","fields":[],"gap":"lg","minCardWidth":300,"renderItem":["fn","col",{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"className":"flex-1","content":"@col.label","type":"typography","variant":"h4"},{"label":"@col.count","size":"sm","type":"badge","variant":"primary"}],"className":"p-card-md border-b border-[var(--color-border)] sticky top-0 bg-[var(--color-surface)]","direction":"horizontal","gap":"sm","type":"stack"},{"accepts":"*","className":"p-card-md min-h-[120px]","dragGroup":"@col.key","dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"body","weight":"medium"},{"className":"line-clamp-2","color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"label":"@config.cardStageBinding","size":"sm","type":"badge","variant":"@col.variant"},{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"className":"ml-auto","icon":"arrow-right","label":"Open","size":"sm","type":"button","variant":"ghost"}],"className":"pt-1","direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"className":"cursor-grab hover:shadow-lg transition-shadow","look":"@config.cardLook","padding":"sm","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":true,"type":"data-list"}],"direction":"vertical","gap":"none","type":"stack"}],"className":"w-[300px] bg-[var(--color-surface-subtle)] rounded-lg overflow-hidden","look":"elevated","padding":"none","type":"card"}],"scrollX":true,"type":"data-grid"},{"action":"ADD_CARD","icon":"plus","label":"Add card","type":"floating-action-button","variant":"primary"}],"className":"h-full","direction":"vertical","gap":"md","type":"stack"} @label "Kanban classic body content tree" @description "Render-ui SExpr for boardLook='kanban-classic' — Trello-style wide elevated columns with sticky headers, dense cards with a status badge; per-item cards honor config.cardLook (the column wrapper stays elevated — it is column chrome, not a card)." @tier "internal"
|
|
20308
|
+
kanbanClassicBodyContent : render-ui = {"children":[["if",["=","@config.addPlacement","inline"],{"children":[{"action":"ADD_CARD","icon":"plus","label":"Add card","size":"sm","type":"button","variant":"secondary"}],"direction":"horizontal","gap":"sm","justify":"end","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"xl","type":"icon"},{"content":"@config.title","type":"typography","variant":"h2"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full pb-2","dndRoot":true,"entity":"@entity.boards","fields":[],"gap":"lg","minCardWidth":300,"renderItem":["fn","col",{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"className":"flex-1","content":"@col.label","type":"typography","variant":"h4"},{"label":"@col.count","size":"sm","type":"badge","variant":"primary"}],"className":"p-card-md border-b border-[var(--color-border)] sticky top-0 bg-[var(--color-surface)]","direction":"horizontal","gap":"sm","type":"stack"},{"accepts":"*","className":"p-card-md min-h-[120px]","dragGroup":"@col.key","dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"body","weight":"medium"},{"className":"line-clamp-2","color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"label":"@config.cardStageBinding","size":"sm","type":"badge","variant":"@col.variant"},{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"className":"ml-auto","icon":"arrow-right","label":"Open","size":"sm","type":"button","variant":"ghost"}],"className":"pt-1","direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"className":"cursor-grab hover:shadow-lg transition-shadow","look":"@config.cardLook","padding":"sm","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":true,"type":"data-list"}],"direction":"vertical","gap":"none","type":"stack"}],"className":"w-[300px] bg-[var(--color-surface-subtle)] rounded-lg overflow-hidden","look":"elevated","padding":"none","type":"card"}],"scrollX":true,"type":"data-grid"},["if",["=","@config.addPlacement","floating"],{"action":"ADD_CARD","icon":"plus","label":"Add card","type":"floating-action-button","variant":"primary"},{"children":[],"gap":"none","type":"stack"}]],"className":"h-full","direction":"vertical","gap":"md","type":"stack"} @label "Kanban classic body content tree" @description "Render-ui SExpr for boardLook='kanban-classic' — Trello-style wide elevated columns with sticky headers, dense cards with a status badge; per-item cards honor config.cardLook (the column wrapper stays elevated — it is column chrome, not a card)." @tier "internal"
|
|
20280
20309
|
pageSize : number = 10 @label "Fetch page size" @description "Records fetched per REFETCH_PAGE request. std-board renders no pagination control itself — this only feeds the fetch limit/offset when a consumer wires a composed std-pagination to REFETCH_PAGE." @synonyms "fetch limit, records per page, batch size, page limit" @tier "presentation"
|
|
20281
20310
|
searchField : string = "title" @label "Which column does the search box match against?" @description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `title` column must set this to a real field (e.g. name, summary) or the search box can never match a card." @synonyms "search column, search on field, match field, search key" @tier "policy"
|
|
20282
20311
|
searchPlaceholder : string = "Search…" @label "Search box placeholder text" @description "Hint text inside the board's embedded search box (e.g. 'Search cards…'). Only shown when bodySearch is true." @synonyms "search hint, placeholder, search box text, search label" @tier "presentation"
|
|
@@ -20326,16 +20355,12 @@ trait std-browse.traits.BrowseItemBrowse {
|
|
|
20326
20355
|
transitions : ((loading -> loading on INIT) (loading -> browsing on BrowseItemLoaded) (loading -> error on BrowseItemLoadFailed) (browsing -> loading on INIT) (browsing -> browsing on REFETCH_QUERY) (browsing -> browsing on REFETCH_FILTER) (browsing -> browsing on REFETCH_PAGE) (browsing -> browsing on VIEW) (browsing -> browsing on CLOSE) (browsing -> browsing on BrowseItemLoaded) (browsing -> browsing on BrowseItemLoadFailed) (error -> loading on INIT))
|
|
20327
20356
|
emits : (BrowseItemLoaded BrowseItemLoadFailed VIEW EDIT DELETE)
|
|
20328
20357
|
config {
|
|
20329
|
-
|
|
20330
|
-
badgeBinding : string = "@item.status" @label "Badge field binding" @description "Binding path for the status/badge slot." @tier "internal"
|
|
20331
|
-
bodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"cols":"@config.cols","emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","gap":"@config.gap","imageField":"@config.imageField","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","maxInlineActions":"@config.maxInlineActions","pageSize":"@config.displayPageSize","type":"data-grid"}],"direction":"vertical","gap":"md","type":"stack"} @label "Body content tree" @description "Render-ui SExpr rendered after rows load when browseLook = table (the default). Toolbar (search when bodySearch, filter bar when filters is non-empty) above the canonical data-grid call. Until 2026-08-27 this was the only one of the six looks with no search affordance at all. See denseBodyContent/feedBodyContent/galleryBodyContent for the other browseLook bodies; any may be overridden directly while inheriting the same trait, state machine, emits, and listens. Inlined directly (not via a composed sibling trait) 2026-09-08 — a separately-listening DataGrid1 sibling fired unconditionally on every BrowseItemLoaded regardless of browseLook, racing the correct body for slot main (a listens guard can't gate this: both the Rust interpreter and the TS codegen path restrict a listens guard's context to @payload only, so a browseLook config check there always evaluates undefined)."
|
|
20358
|
+
bodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"cols":"@config.cols","emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","gap":"@config.gap","imageField":"@config.imageField","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","maxInlineActions":"@config.maxInlineActions","pageSize":"@config.displayPageSize","surface":"@config.surface","type":"data-grid"}],"direction":"vertical","gap":"md","type":"stack"} @label "Body content tree" @description "Render-ui SExpr rendered after rows load when browseLook = table (the default). Toolbar (search when bodySearch, filter bar when filters is non-empty) above the canonical data-grid call. Until 2026-08-27 this was the only one of the six looks with no search affordance at all. See denseBodyContent/feedBodyContent/galleryBodyContent for the other browseLook bodies; any may be overridden directly while inheriting the same trait, state machine, emits, and listens. Inlined directly (not via a composed sibling trait) 2026-09-08 — a separately-listening DataGrid1 sibling fired unconditionally on every BrowseItemLoaded regardless of browseLook, racing the correct body for slot main (a listens guard can't gate this: both the Rust interpreter and the TS codegen path restrict a listens guard's context to @payload only, so a browseLook config check there always evaluates undefined)."
|
|
20332
20359
|
bodySearch : boolean = true @label "Show the list's own search box?" @description "The dense/feed/gallery looks embed their own search box above the rows. Set false when the page already provides a search affordance (a toolbar Search molecule), so the surface shows one search box instead of two." @synonyms "inline search, list search, built-in search, show search, duplicate search" @tier "presentation"
|
|
20333
20360
|
browseLook : string = "table" @label "Browse look" @description "Layer 2 visual treatment for the whole browse surface. table = the default data-grid (bodyContent); dense = spreadsheet-style table with toolbar search (denseBodyContent); feed = chronological card stream (feedBodyContent); gallery = image-first responsive card grid (galleryBodyContent); master-detail = record-work split view — dense list left, clicked record's detail right (masterDetailBodyContent); triage = inbox-register compact rows for queue work (triageBodyContent). Selecting a non-table look swaps which body tree renders after rows load; any body may still be overridden directly at the call site for a one-off layout." @tier "presentation" @values (table dense feed gallery master-detail triage)
|
|
20334
|
-
categoryBinding : string = "@item.category" @label "Category field binding" @description "Binding path for the category/tag slot." @tier "internal"
|
|
20335
20361
|
cols : number = 1 @label "How many columns in the grid?" @description "Number of columns in the responsive card/grid layout." @synonyms "columns, grid width, card columns, num columns" @tier "presentation"
|
|
20336
20362
|
columns : [ColumnSpec] = [{"align":"left","field":"name","header":"Name","key":"name","weight":"medium"},{"align":"left","field":"description","header":"Detail","key":"description"},{"align":"center","field":"status","format":"badge","header":"Status","key":"status"}] @label "Table columns" @description "Column definitions for table-style variants (dense). Each maps an entity field to a column with optional width / align / weight / format." @tier "presentation"
|
|
20337
|
-
denseBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"children":[{"columns":"@config.columns","emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","look":"dense","maxInlineActions":"@config.maxInlineActions","pageSize":"@config.displayPageSize","selectable":"@config.selectable","type":"table-view"}],"className":"overflow-x-auto","direction":"vertical","gap":"none","type":"stack"}],"className":"
|
|
20338
|
-
descriptionBinding : string = "@item.description" @label "Description field binding" @description "Binding path for the card body/subtitle slot." @tier "internal"
|
|
20363
|
+
denseBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"children":[{"columns":"@config.columns","emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","look":"dense","maxInlineActions":"@config.maxInlineActions","pageSize":"@config.displayPageSize","selectable":"@config.selectable","surface":"none","type":"table-view"}],"className":"overflow-x-auto","direction":"vertical","gap":"none","type":"stack"}],"className":["if",["=","@config.surface","auto"],"surface-content overflow-hidden",""],"direction":"vertical","gap":"none","type":"stack"} @label "Dense look body" @description "Render-ui SExpr rendered after rows load when browseLook = dense. Spreadsheet-style sticky-header data-table with a search bar; composes columns/itemActions/maxInlineActions/displayPageSize/searchPlaceholder. Folded from std-browse-dense (Phase 5.B). Inlined directly (not via a composed sibling trait) 2026-09-08 — see the table-default body's note for why." @tier "internal"
|
|
20339
20364
|
detailActions : [BrowseDetailAction] = [{"event":"CLOSE","label":"Close"}] @label "Master-detail record pane actions" @description "Action buttons on the master-detail record pane (detail-panel `actions` descriptors: label/event/icon/variant). Consumers add their own record actions (Edit/Delete/…) alongside or instead of Close." @synonyms "record actions, detail actions, pane actions" @tier "presentation"
|
|
20340
20365
|
detailCloseEvent : event = "CLOSE" @label "Which pane action closes the record?" @description "The detailActions entry whose event matches renders as the pane's close (×) button." @synonyms "close event, dismiss event, pane close" @tier "presentation"
|
|
20341
20366
|
detailFields : [FieldSpec] = [{"label":"Name","name":"name","variant":"h4"},{"label":"Description","name":"description","variant":"body"},{"label":"Status","name":"status","variant":"badge"},{"format":"date","label":"Created","name":"createdAt"}] @label "Which fields appear in the master-detail record pane?" @description "Fields shown in the detail panel when browseLook = master-detail; the field declared variant h3/h4 is the pane title. Consumers overriding columns/fields should override this list to match their entity." @synonyms "detail columns, record fields, detail pane fields" @tier "presentation"
|
|
@@ -20343,17 +20368,12 @@ trait std-browse.traits.BrowseItemBrowse {
|
|
|
20343
20368
|
emptyDescription : string = "" @label "Empty-state description" @description "What will appear here once rows exist." @synonyms "empty text, no data message, empty hint" @tier "presentation"
|
|
20344
20369
|
emptyIcon : icon = "inbox" @label "Empty-state icon" @description "Domain icon shown when there are no rows." @synonyms "empty icon, no data icon" @tier "presentation"
|
|
20345
20370
|
emptyTitle : string = "" @label "Empty-state title" @description "Specific title shown when there are no rows (\"No orders yet\"). Left blank, a generic line shows." @synonyms "empty title, no data title, empty heading" @tier "presentation"
|
|
20346
|
-
feedBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"align":"center","children":[{"className":"w-full","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"w-full","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"w-full","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":
|
|
20347
|
-
|
|
20348
|
-
feedIcon : icon = "file-text" @label "Which icon leads each feed item?" @description "Icon shown in the leading tile when feedLeading = icon." @synonyms "item icon, row icon, leading icon" @tier "presentation"
|
|
20349
|
-
feedLeading : string = "avatar" @label "What leads each feed item?" @description "browseLook = feed only. avatar = initials of avatarBinding (people-authored posts, messages); icon = feedIcon in a tinted tile (articles, docs, tickets); none = text starts flush (editorial)." @synonyms "leading avatar, item icon, thumbnail, no avatar" @tier "presentation" @values (avatar icon none)
|
|
20350
|
-
feedShowBadge : boolean = true @label "Show the status badge?" @description "browseLook = feed only. Shows badgeBinding at the end of each item's meta line. Turn off on public surfaces where the status (e.g. published) is internal noise." @synonyms "status pill, hide status, show state" @tier "presentation"
|
|
20351
|
-
feedSurface : string = "cards" @label "How are feed items separated?" @description "browseLook = feed only. cards = each item its own raised card with space between (community posts, listings); divided = one surface with hairline rows (inboxes, answer lists, notes); plain = no chrome, rule lines on the page background (editorial article lists, changelogs)." @synonyms "feed style, item chrome, card per item, divided list, editorial list, rows or cards" @tier "presentation" @values (cards divided plain)
|
|
20352
|
-
feedTitleVariant : string = "body" @label "How prominent is each feed title?" @description "browseLook = feed only. body for conversational streams, h4/h3 for headline-led lists such as articles." @synonyms "title size, headline size, title weight" @tier "presentation" @values (body h4 h3)
|
|
20371
|
+
feedBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"align":"center","children":[{"className":"w-full","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"w-full","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"w-full","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","gap":"none","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","look":["if",["=","@config.feedSurface","cards"],"card-rows","borderless"],"maxInlineActions":"@config.maxInlineActions","pageSize":"@config.displayPageSize","surface":["if",["=","@config.feedSurface","plain"],"none","@config.surface"],"type":"data-list","variant":["if",["=","@config.feedSurface","divided"],"card","default"]}],"className":"w-full","direction":"vertical","gap":"lg","type":"stack"} @label "Feed look body" @description "Render-ui SExpr rendered after rows load when browseLook = feed. Chronological item stream on the same `fields` contract every look reads (roles: overline, h3/h4, caption, small/body, badge, avatar), separated per feedSurface. Folded from std-browse-feed (Phase 5.B)." @tier "internal"
|
|
20372
|
+
feedSurface : string = "cards" @label "How are feed items separated?" @description "browseLook = feed only. cards = each item its own raised card with space between (community posts, listings); divided = one surface with hairline rows (inboxes, answer lists, notes); plain = no chrome, items on the page background (editorial article lists, changelogs). What each item shows comes from `fields`: overline = eyebrow above the title, h3/h4 = title (its `icon` becomes a leading tile), caption = prose, small/body = meta line, badge = pill, avatar = leading initials." @synonyms "feed style, item chrome, card per item, divided list, editorial list, rows or cards" @tier "presentation" @values (cards divided plain)
|
|
20353
20373
|
fields : [FieldSpec] = [{"label":"Name","name":"name","variant":"h4"},{"label":"Description","name":"description","variant":"caption"},{"label":"Status","name":"status","variant":"badge"}] @label "Which fields should appear as columns?" @description "Each entry maps one entity field to a display column with an optional label and variant." @synonyms "visible columns, displayed fields, card fields, column list" @tier "presentation"
|
|
20354
20374
|
filterBarLook : string = "toolbar" @label "Filter bar look" @description "Visual treatment for the embedded filter bar, mirroring std-filter's own enum. Only applies when `filters` is non-empty." @synonyms "filter bar style, facet style, chips, pills" @tier "presentation" @values (toolbar chips pills popover-trigger inline-column-header)
|
|
20355
20375
|
filters : [FilterSpec] = [] @label "Which filters should appear above the list?" @description "Dropdown filter facets by field, rendered as an embedded filter bar above the rows; each selection fires REFETCH_FILTER on this trait. Empty (the default) = no filter bar, which is the right setting whenever the page already composes std-filter beside this list and routes `XFilter.FILTER -> REFETCH_FILTER` — that is the wired owner and remains the primary path. Use this knob only for a standalone list with no page-level filter affordance, so the surface shows one filter bar instead of two." @synonyms "filter bar, faceted filters, field filters, column filters, dropdowns" @tier "presentation"
|
|
20356
|
-
galleryBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"align":"center","children":[{"className":"w-full","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"sticky top-0 z-10 py-3 bg-[var(--color-surface)]/95 backdrop-blur","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"w-full","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full","emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","gap":"lg","imageField":"@config.imageField","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","maxInlineActions":"@config.maxInlineActions","minCardWidth":260,"type":"data-grid"}],"className":"w-full","direction":"vertical","gap":"lg","type":"stack"} @label "Gallery look body" @description "Render-ui SExpr rendered after rows load when browseLook = gallery. Image-first responsive card grid (auto-fit minCardWidth) on the data-grid fields path: imageField renders the card photo when set (falsy-safe when empty), fields drive title/badges/meta. One tree, no renderItem lambda — lambdas do not survive inside (if) arms (2026-07-27)." @tier "internal"
|
|
20376
|
+
galleryBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"align":"center","children":[{"className":"w-full","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"sticky top-0 z-10 py-3 bg-[var(--color-surface)]/95 backdrop-blur","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"w-full","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full","emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","gap":"lg","imageField":"@config.imageField","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","maxInlineActions":"@config.maxInlineActions","minCardWidth":260,"surface":"@config.surface","type":"data-grid"}],"className":"w-full","direction":"vertical","gap":"lg","type":"stack"} @label "Gallery look body" @description "Render-ui SExpr rendered after rows load when browseLook = gallery. Image-first responsive card grid (auto-fit minCardWidth) on the data-grid fields path: imageField renders the card photo when set (falsy-safe when empty), fields drive title/badges/meta. One tree, no renderItem lambda — lambdas do not survive inside (if) arms (2026-07-27)." @tier "internal"
|
|
20357
20377
|
gap : string = "md" @label "Spacing between rows" @description "Gap between grid cells: sm, md, or lg." @synonyms "row gap, cell spacing, grid gap, padding between items" @tier "presentation"
|
|
20358
20378
|
imageField : string = "" @label "Which field holds the row image?" @description "Entity field containing the thumbnail URL for each row." @synonyms "image field, thumbnail field, photo field, picture column" @tier "presentation"
|
|
20359
20379
|
include : [string] = [] @label "Which relation fields to hydrate?" @description "Entity relation field names to hydrate on fetch (e.g. a `tag : Category` field named `tag`), so grid columns can use dot-paths like tag.name. Empty = no hydration, the default." @synonyms "relation hydration, populate relations, joined fields, hydrate relations" @tier "internal"
|
|
@@ -20361,18 +20381,16 @@ trait std-browse.traits.BrowseItemBrowse {
|
|
|
20361
20381
|
initialFilterValue : string = "" @label "What value does the first load filter for?" @description "The value initialFilterField must equal on the first load. Blank is meaningful: it matches only records whose field is itself blank, which for a detail pane is normally none — that is how a thread stays empty until its parent is selected." @synonyms "initial filter value, first load value, default selection" @tier "policy"
|
|
20362
20382
|
itemActions : [ItemAction] = [] @label "What actions can users take on each row?" @description "Buttons rendered on each row (e.g. Edit, Delete, View)." @synonyms "row buttons, row actions, item actions, per-row buttons, table actions" @tier "presentation"
|
|
20363
20383
|
itemClickEvent : event = "VIEW" @label "Which event does clicking a row fire?" @description "Row-click channel. Retarget when two browse lists coexist in one orbital and their VIEW payloads differ, so each gets its own typed channel." @synonyms "row click event, item click, open event, select event" @tier "presentation"
|
|
20364
|
-
masterDetailBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"detail":{"children":[],"gap":"none","type":"stack"},"emptyDetail":{"description":"Select a record from the list to see its details.","icon":"mouse-pointer-click","title":"Nothing selected","type":"empty-state"},"hasSelection":false,"master":{"children":["@trait.MasterListView"],"className":"overflow-y-auto","direction":"vertical","gap":"none","type":"stack"},"type":"master-detail-layout"}],"className":"
|
|
20365
|
-
masterDetailRecordBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"detail":{"actions":["array/filter","@config.detailActions",["fn","action",["or",["=",["array/len",["object/get","@action","roles",[]]],0],["array/includes",["object/get","@action","roles",[]],"@config.viewerRole"]]]],"closeEvent":"@config.detailCloseEvent","fields":"@config.detailFields","initialData":"@payload.row","showActions":true,"type":"detail-panel"},"hasSelection":true,"master":{"children":["@trait.MasterListView"],"className":"overflow-y-auto","direction":"vertical","gap":"none","type":"stack"},"type":"master-detail-layout"}],"className":"
|
|
20384
|
+
masterDetailBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"detail":{"children":[],"gap":"none","type":"stack"},"emptyDetail":{"description":"Select a record from the list to see its details.","icon":"mouse-pointer-click","title":"Nothing selected","type":"empty-state"},"hasSelection":false,"master":{"children":["@trait.MasterListView"],"className":"overflow-y-auto","direction":"vertical","gap":"none","type":"stack"},"type":"master-detail-layout"}],"className":["if",["=","@config.surface","auto"],"surface-content overflow-hidden",""],"direction":"vertical","gap":"none","type":"stack"} @label "Master-detail look body (no selection)" @description "Render-ui SExpr rendered after rows load when browseLook = master-detail: record-work split view — toolbar, dense list left, empty-state pane right until a row is opened. Opening a row renders masterDetailRecordBodyContent. The toolbar honours bodySearch and filters like every other look; it used to render its search box unconditionally, which put a second search box on any page that already composed std-search (observed in std-crm ContactOrbital)." @tier "internal"
|
|
20385
|
+
masterDetailRecordBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"detail":{"actions":["array/filter","@config.detailActions",["fn","action",["or",["=",["array/len",["object/get","@action","roles",[]]],0],["array/includes",["object/get","@action","roles",[]],"@config.viewerRole"]]]],"closeEvent":"@config.detailCloseEvent","fields":"@config.detailFields","initialData":"@payload.row","showActions":true,"surface":"none","type":"detail-panel"},"hasSelection":true,"master":{"children":["@trait.MasterListView"],"className":"overflow-y-auto","direction":"vertical","gap":"none","type":"stack"},"type":"master-detail-layout"}],"className":["if",["=","@config.surface","auto"],"surface-content overflow-hidden",""],"direction":"vertical","gap":"none","type":"stack"} @label "Master-detail look body (record open)" @description "Render-ui SExpr rendered by the VIEW transition when browseLook = master-detail: the same split view with the clicked record's detail panel on the right, fed by the VIEW payload row and detailFields." @tier "internal"
|
|
20366
20386
|
maxInlineActions : number = 3 @label "How many row actions to show before collapsing?" @description "Actions beyond this count collapse into a '⋯' overflow menu. Set 2–3 for dense tables." @synonyms "inline actions limit, overflow threshold, max buttons per row" @tier "presentation"
|
|
20367
|
-
metaBinding : string = "@item.createdAt" @label "Meta field binding" @description "Binding path for the secondary meta slot (timestamp / category). Hosts binding a count or other non-date value should label it in the binding itself (e.g. (str/concat \"Vehicles: \" @item.vehicleCount)) and set metaFormat: none." @tier "internal"
|
|
20368
|
-
metaFormat : string = "date" @label "Meta value format" @description "Typography format for the feed meta slot — date by default so the createdAt binding renders human-readable instead of raw ISO; set none for non-date bindings." @tier "presentation" @values (none date time datetime number)
|
|
20369
20387
|
pageSize : number = 10 @label "How many rows to fetch per page?" @description "Records fetched from the server per page request." @synonyms "fetch limit, records per page, batch size, page limit" @tier "presentation"
|
|
20370
20388
|
scopeField : string = "" @label "Only show records owned by the signed-in user?" @description "Name the field on this entity that holds the viewer's id (e.g. memberId, patientId, assignee). When set, the list loads ONLY rows whose that field equals @user.id — the 'my bookings' / 'my appointments' shape. Left blank the list loads every row, which is the default. Declared, never inferred: guessing the column from its name would silently scope the wrong one." @synonyms "owner field, my records, only mine, only my own, scope to user, per-user list, mine only, owned by me" @tier "policy"
|
|
20371
20389
|
searchField : string = "name" @label "Which column does the search box match against?" @description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, content) or the search box can never match a row." @synonyms "search column, search on field, match field, search key" @tier "policy"
|
|
20372
20390
|
searchPlaceholder : string = "Search…" @label "Search box placeholder text" @description "Hint text inside the list search box (e.g. 'Search orders…')." @synonyms "search hint, placeholder, search box text, search label" @tier "presentation"
|
|
20373
20391
|
selectable : boolean = false @label "Show row selection checkboxes?" @description "Adds a checkbox column with select-all to the dense table. Enable only when the surface offers bulk actions — checkboxes with nothing to act on are a dead affordance." @synonyms "row checkboxes, multi-select, bulk select, selection column" @tier "presentation"
|
|
20374
|
-
|
|
20375
|
-
triageBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"children":[{"emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","maxInlineActions":"@config.maxInlineActions","type":"data-list","variant":"compact"}],"className":"overflow-x-auto","direction":"vertical","gap":"none","type":"stack"}],"className":"
|
|
20392
|
+
surface : string = "auto" @label "Paint a surface behind the list?" @description "auto (default) draws the theme's content surface behind every look — on a patterned page background the list reads as one block; the theme decides how that surface looks. none places the list directly on the page (e.g. a list already inside a card or panel you composed)." @synonyms "card background, panel, container, list background, no background, transparent, bare" @tier "presentation" @values (auto none)
|
|
20393
|
+
triageBodyContent : render-ui = {"children":[["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BrowseItem","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md py-card-sm border-b border-[var(--color-border)]","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"children":[{"emptyDescription":"@config.emptyDescription","emptyIcon":"@config.emptyIcon","emptyTitle":"@config.emptyTitle","entity":"@payload.data","fields":"@config.fields","itemActions":["array/filter","@config.itemActions",["fn","item",["or",["=",["array/len",["object/get","@item","roles",[]]],0],["array/includes",["object/get","@item","roles",[]],"@config.viewerRole"]]]],"itemClickEvent":"@config.itemClickEvent","maxInlineActions":"@config.maxInlineActions","pageSize":"@config.displayPageSize","surface":"none","type":"data-list","variant":"compact"}],"className":"overflow-x-auto","direction":"vertical","gap":"none","type":"stack"}],"className":["if",["=","@config.surface","auto"],"surface-content overflow-hidden",""],"direction":"vertical","gap":"none","type":"stack"} @label "Triage look body" @description "Render-ui SExpr rendered after rows load when browseLook = triage. Inbox-register queue: one surface with a toolbar search and compact list rows (title + badges + inline meta) built for keyboard-pace queue work; row actions collapse per maxInlineActions. Composes fields/itemActions/searchPlaceholder/bodySearch." @tier "internal"
|
|
20376
20394
|
viewerRole : string = "" @label "Viewer's role" @description "The signed-in viewer's role that each row action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show." @tier "policy"
|
|
20377
20395
|
}
|
|
20378
20396
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -21425,28 +21443,29 @@ trait std-learn-arrangement.traits.LearnArrangementSim {
|
|
|
21425
21443
|
category : interaction
|
|
21426
21444
|
states : (idle*)
|
|
21427
21445
|
events : (INIT MODE_SELECTED PLACE UNDO CHECK RETRY ARRANGEMENT_CHECKED ARRANGEMENT_RESET LEARN_ROUND_COMPLETE)
|
|
21428
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on PLACE) (idle -> idle on UNDO) (idle -> idle on CHECK) (idle -> idle on RETRY))
|
|
21446
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on PLACE) (idle -> idle on UNDO) (idle -> idle on CHECK) (idle -> idle on RETRY))
|
|
21429
21447
|
emits : (ARRANGEMENT_CHECKED ARRANGEMENT_RESET LEARN_ROUND_COMPLETE)
|
|
21430
21448
|
config {
|
|
21431
21449
|
animate : boolean = false @label "Animate" @description "Enable continuous redraw loop." @tier "presentation"
|
|
21432
21450
|
checkLabel : string = "Check" @label "Check Button Label" @tier "presentation"
|
|
21433
|
-
correctColor : string = "
|
|
21434
|
-
emptySlotColor : string = "
|
|
21451
|
+
correctColor : string = "success" @label "Correct Slot Color" @description "Fill color for a filled slot whose item matches its correct position, once graded." @tier "presentation"
|
|
21452
|
+
emptySlotColor : string = "fill" @label "Empty Slot Color" @description "Fill color for a slot with no item placed yet." @tier "presentation"
|
|
21435
21453
|
height : number = 220 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
21436
|
-
incorrectColor : string = "
|
|
21454
|
+
incorrectColor : string = "error" @label "Incorrect Slot Color" @description "Fill color for a filled slot whose item does not match its correct position, once graded." @tier "presentation"
|
|
21437
21455
|
interactive : boolean = false @label "Interactive" @description "Enable pointer interaction on the canvas." @tier "presentation"
|
|
21438
21456
|
items : [LearnArrangementItem] = [{"correctPosition":0,"hint":"What has to happen before anything can be poured?","id":"1","label":"Boil water in a kettle"},{"correctPosition":1,"hint":"The bag goes in before the water does.","id":"2","label":"Place a tea bag in the cup"},{"correctPosition":2,"hint":"Now the water and the bag meet.","id":"3","label":"Pour the hot water over the tea bag"},{"correctPosition":3,"hint":"Flavor needs time to develop.","id":"4","label":"Let it steep for a few minutes"},{"correctPosition":4,"hint":"This happens once the tea is strong enough.","id":"5","label":"Remove the tea bag and add milk or sugar to taste"}] @label "Items" @description "Roster of items to order; each carries its label, its zero-based correct position in the finished sequence, and an optional hint shown beneath its button while unplaced." @synonyms "item, step, stage, sequence, order, ranking, procedure" @tier "domain"
|
|
21439
21457
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21440
|
-
pendingColor : string = "
|
|
21458
|
+
pendingColor : string = "series-2" @label "Pending Slot Color" @description "Fill color for a filled slot before grading." @tier "presentation"
|
|
21441
21459
|
retryLabel : string = "Retry" @label "Retry Button Label" @tier "presentation"
|
|
21442
|
-
slotBorderColor : string = "
|
|
21443
|
-
slotFontSize :
|
|
21460
|
+
slotBorderColor : string = "ink" @label "Slot Border Color" @tier "presentation"
|
|
21461
|
+
slotFontSize : string = "sm" @label "Slot Text Size" @description "Slot label size role: xs, sm, base or lg." @tier "presentation"
|
|
21444
21462
|
slotHeight : number = 60 @label "Slot Height (px)" @tier "presentation"
|
|
21445
21463
|
slotLeft : number = 40 @label "First Slot X (px)" @tier "presentation"
|
|
21446
21464
|
slotSpacing : number = 120 @label "Slot Spacing (px)" @tier "presentation"
|
|
21447
|
-
slotTextColor : string = "
|
|
21465
|
+
slotTextColor : string = "label" @label "Slot Text Color" @tier "presentation"
|
|
21448
21466
|
slotWidth : number = 100 @label "Slot Width (px)" @tier "presentation"
|
|
21449
21467
|
slotY : number = 70 @label "Slot Row Y (px)" @tier "presentation"
|
|
21468
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what is being ordered (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21450
21469
|
title : string = "Build the Order" @label "Title" @description "Title shown above the instrument." @tier "presentation"
|
|
21451
21470
|
undoLabel : string = "Undo" @label "Undo Button Label" @tier "presentation"
|
|
21452
21471
|
width : number = 640 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
@@ -21462,18 +21481,18 @@ trait std-learn-classify.traits.LearnClassifySim {
|
|
|
21462
21481
|
category : interaction
|
|
21463
21482
|
states : (idle*)
|
|
21464
21483
|
events : (INIT MODE_SELECTED PICK ADVANCE RETRY TOGGLE_RUN CLASSIFY_UPDATED LEARN_ROUND_COMPLETE)
|
|
21465
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on PICK) (idle -> idle on ADVANCE) (idle -> idle on RETRY) (idle -> idle on TOGGLE_RUN))
|
|
21484
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on PICK) (idle -> idle on ADVANCE) (idle -> idle on RETRY) (idle -> idle on TOGGLE_RUN))
|
|
21466
21485
|
emits : (CLASSIFY_UPDATED LEARN_ROUND_COMPLETE)
|
|
21467
21486
|
config {
|
|
21468
21487
|
advanceLabel : string = "Next" @label "Advance Button Label" @description "Label text for the button that advances to the next item." @tier "presentation"
|
|
21469
21488
|
advanceMs : number = 900 @label "Auto-Advance Interval (ms)" @description "Milliseconds between automatic advances while running — the 32ms base tick accumulates elapsed time and fires ADVANCE each time this interval elapses." @tier "domain"
|
|
21470
21489
|
animate : boolean = false @label "Animate" @description "Enable continuous redraw loop." @tier "presentation"
|
|
21471
21490
|
autoRun : boolean = false @label "Auto Run" @description "When true the advance clock starts on load and the drill flips to the next item every advanceMs milliseconds; toggle live with the Auto/Pause button." @tier "domain"
|
|
21472
|
-
backgroundColor : string = "
|
|
21473
|
-
categories : [LearnClassifyOption] = [{"color":"
|
|
21474
|
-
correctColor : string = "
|
|
21491
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground (tone name, token or colour); empty uses the theme's drawing ground." @tier "presentation"
|
|
21492
|
+
categories : [LearnClassifyOption] = [{"color":"series-1","label":"Category A","value":"a"},{"color":"series-2","label":"Category B","value":"b"}] @label "Categories" @description "Ordered bottom-to-top roster of category buckets (value/label/color) used to render the stacked backdrop and the pick buttons; order determines the backdrop's stacking, widest at the bottom to narrowest at the top." @synonyms "category, bucket, class, tier, level, classification, roster" @tier "domain"
|
|
21493
|
+
correctColor : string = "success" @label "Correct Highlight Color" @description "Fill color for the correct category once the learner has picked." @tier "presentation"
|
|
21475
21494
|
height : number = 420 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
21476
|
-
incorrectColor : string = "
|
|
21495
|
+
incorrectColor : string = "error" @label "Incorrect Highlight Color" @description "Fill color for the learner's picked category when it does not match the correct category." @tier "presentation"
|
|
21477
21496
|
interactive : boolean = false @label "Interactive" @description "Enable pointer interaction on the canvas." @tier "presentation"
|
|
21478
21497
|
items : [LearnClassifyItem] = [{"category":"a","explanation":"This example was written to satisfy category A's defining trait.","hint":"Consider what makes this belong to category A.","text":"Example item one."},{"category":"b","explanation":"This example was written to satisfy category B's defining trait.","hint":"Consider what makes this belong to category B.","text":"Example item two."}] @label "Items" @description "Roster of items the learner classifies; each carries its prompt text, the value of its correct category, and optional hint/explanation text shown before/after the pick." @synonyms "item, prompt, scenario, situation, case, example, question" @tier "domain"
|
|
21479
21498
|
loopRound : boolean = false @label "Loop Round" @description "When true the item cursor wraps past the last item forever (a looping drill) instead of ending the round at the summary screen." @tier "domain"
|
|
@@ -21485,6 +21504,8 @@ trait std-learn-classify.traits.LearnClassifySim {
|
|
|
21485
21504
|
retryLabel : string = "Retry Round" @label "Retry Button Label" @description "Label text for the button that restarts the round from the end-of-round summary." @tier "presentation"
|
|
21486
21505
|
scoreCap : number = 0 @label "Score Cap" @description "Upper bound on the rubric score; 0 means uncapped." @tier "domain"
|
|
21487
21506
|
showHint : boolean = true @label "Show Hint" @description "Show each item's hint line beneath the prompt before the learner picks; hide for a harder drill." @tier "domain"
|
|
21507
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what is being classified (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21508
|
+
taper : number = 0 @label "Taper" @description "How far the category rungs narrow toward the top: 0 = equal-width rungs (no implied order), 1 = a full pyramid for hierarchies (needs, levels). Long category names need 0." @tier "presentation"
|
|
21488
21509
|
title : string = "Classify" @label "Title" @description "Title shown above the instrument." @tier "presentation"
|
|
21489
21510
|
width : number = 640 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
21490
21511
|
}
|
|
@@ -21499,7 +21520,7 @@ trait std-learn-compare.traits.CompareSim {
|
|
|
21499
21520
|
category : interaction
|
|
21500
21521
|
states : (idle*)
|
|
21501
21522
|
events : (INIT MODE_SELECTED SET_PARAM COMPARISON_CHANGED)
|
|
21502
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_PARAM))
|
|
21523
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_PARAM))
|
|
21503
21524
|
emits : (COMPARISON_CHANGED)
|
|
21504
21525
|
config {
|
|
21505
21526
|
compareText : string = "Tune each side's parameters and watch how the two curves diverge." @label "Compare Text" @description "One-sentence statement of what is being contrasted." @tier "domain"
|
|
@@ -21508,7 +21529,7 @@ trait std-learn-compare.traits.CompareSim {
|
|
|
21508
21529
|
height : number = 400 @label "Height" @tier "presentation"
|
|
21509
21530
|
leftADefault : number = 1 @label "Left A Default" @tier "domain"
|
|
21510
21531
|
leftBDefault : number = 2 @label "Left B Default" @tier "domain"
|
|
21511
|
-
leftColor : string = "
|
|
21532
|
+
leftColor : string = "series-1" @label "Left Color" @tier "presentation"
|
|
21512
21533
|
leftLabel : string = "Left" @label "Left Label" @description "Display name of the first compared instance." @tier "domain"
|
|
21513
21534
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21514
21535
|
paramALabel : string = "A" @label "Parameter A Label" @tier "presentation"
|
|
@@ -21521,10 +21542,11 @@ trait std-learn-compare.traits.CompareSim {
|
|
|
21521
21542
|
paramBStep : number = 0.1 @label "Parameter B Step" @tier "presentation"
|
|
21522
21543
|
rightADefault : number = 2 @label "Right A Default" @tier "domain"
|
|
21523
21544
|
rightBDefault : number = 1.5 @label "Right B Default" @tier "domain"
|
|
21524
|
-
rightColor : string = "
|
|
21545
|
+
rightColor : string = "series-2" @label "Right Color" @tier "presentation"
|
|
21525
21546
|
rightLabel : string = "Right" @label "Right Label" @description "Display name of the second compared instance." @tier "domain"
|
|
21526
21547
|
showAxes : boolean = true @label "Show Axes" @tier "presentation"
|
|
21527
21548
|
showGrid : boolean = true @label "Show Grid" @tier "presentation"
|
|
21549
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21528
21550
|
title : string = "Compare Two Settings" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
21529
21551
|
width : number = 600 @label "Width" @tier "presentation"
|
|
21530
21552
|
xMax : number = 10 @label "X Max" @tier "presentation"
|
|
@@ -21540,8 +21562,8 @@ trait std-learn-coupled-sim.traits.CoupledSimSim {
|
|
|
21540
21562
|
linkedEntity : CoupledSimScene
|
|
21541
21563
|
category : interaction
|
|
21542
21564
|
states : (idle*)
|
|
21543
|
-
events : (INIT MODE_SELECTED RUN PAUSE RESET SET_A SET_B SHOCK RUN_TOGGLED SIM_RESET COEFS_CHANGED SHOCK_APPLIED)
|
|
21544
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SET_A) (idle -> idle on SET_B) (idle -> idle on SHOCK))
|
|
21565
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN SPEED_SET RUN PAUSE RESET SET_A SET_B SHOCK RUN_TOGGLED SIM_RESET COEFS_CHANGED SHOCK_APPLIED)
|
|
21566
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on SPEED_SET) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SET_A) (idle -> idle on SET_B) (idle -> idle on SHOCK))
|
|
21545
21567
|
emits : (RUN_TOGGLED SIM_RESET COEFS_CHANGED SHOCK_APPLIED)
|
|
21546
21568
|
config {
|
|
21547
21569
|
autoRun : boolean = true @label "Auto Run" @description "Whether the simulation starts running immediately on load." @tier "domain"
|
|
@@ -21562,18 +21584,19 @@ trait std-learn-coupled-sim.traits.CoupledSimSim {
|
|
|
21562
21584
|
height : number = 360 @label "Height" @tier "presentation"
|
|
21563
21585
|
kind : string = "predator-prey" @label "Interaction Family" @description "Which coupled dynamics govern the two quantities: predator-prey (oscillating cycles), epidemic (S and I with transmission and recovery), or kinetics (A decaying into B)." @synonyms "predator prey, Lotka-Volterra, SIR, epidemic, reaction kinetics, coupled ODE" @tier "domain"
|
|
21564
21586
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21565
|
-
pColor : string = "
|
|
21587
|
+
pColor : string = "series-1" @label "P Color" @tier "presentation"
|
|
21566
21588
|
pLabel : string = "Prey" @label "P Label" @description "Display name of the first quantity." @tier "domain"
|
|
21567
21589
|
pStart : number = 120 @label "P Start" @tier "domain"
|
|
21568
|
-
qColor : string = "
|
|
21590
|
+
qColor : string = "series-2" @label "Q Color" @tier "presentation"
|
|
21569
21591
|
qLabel : string = "Predators" @label "Q Label" @description "Display name of the second quantity." @tier "domain"
|
|
21570
21592
|
qStart : number = 40 @label "Q Start" @tier "domain"
|
|
21571
21593
|
shockDownLabel : string = "− Prey cull" @label "Shock Down Label" @tier "presentation"
|
|
21572
21594
|
shockSize : number = 40 @label "Shock Size" @description "How much of the first quantity a shock button injects or removes." @tier "domain"
|
|
21573
21595
|
shockUpLabel : string = "+ Prey burst" @label "Shock Up Label" @tier "presentation"
|
|
21596
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21574
21597
|
taskText : string = "Run the system, retune the rates, and shock it — watch how the two quantities push and pull each other." @label "Task Text" @description "One-sentence statement of what to explore." @tier "domain"
|
|
21575
21598
|
timeScale : number = 1 @label "Time Scale" @description "Multiplier on the integration step; raise it to fast-forward the dynamics." @tier "domain"
|
|
21576
|
-
title : string = "Coupled System" @label "Title" @description "
|
|
21599
|
+
title : string = "Coupled System" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
21577
21600
|
valueMax : number = 300 @label "Value Max" @description "Upper bound of the chart's y axis." @tier "presentation"
|
|
21578
21601
|
width : number = 600 @label "Width" @tier "presentation"
|
|
21579
21602
|
}
|
|
@@ -21588,7 +21611,7 @@ trait std-learn-derivation.traits.LearnDerivationSim {
|
|
|
21588
21611
|
category : interaction
|
|
21589
21612
|
states : (idle*)
|
|
21590
21613
|
events : (INIT MODE_SELECTED APPLY_STEP TOGGLE_RUN RESET DERIVATION_UPDATED LEARN_ROUND_COMPLETE)
|
|
21591
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on APPLY_STEP) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
21614
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on APPLY_STEP) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
21592
21615
|
emits : (DERIVATION_UPDATED LEARN_ROUND_COMPLETE)
|
|
21593
21616
|
config {
|
|
21594
21617
|
autoApplyIntervalMs : number = 800 @label "Auto-Apply Interval (ms)" @description "Milliseconds of running clock per automatic candidate application — the 32ms base tick accumulates elapsed time and applies the first applicable candidate each time this interval elapses." @tier "domain"
|
|
@@ -21605,6 +21628,7 @@ trait std-learn-derivation.traits.LearnDerivationSim {
|
|
|
21605
21628
|
noStepAvailableMessage : string = "No further steps are available yet." @label "No Step Available Message" @description "Feedback shown when the auto-apply tick finds no applicable candidate." @tier "presentation"
|
|
21606
21629
|
premises : [LearnDerivationLine] = [{"badgeLabel":"GIVEN","badgeVariant":"neutral","id":"given-a","kind":"fact","label":"A","negated":false,"subject":"A"},{"badgeLabel":"RULE","badgeVariant":"info","id":"given-a-implies-b","kind":"link","label":"A → B","leftNegated":false,"leftSubject":"A","rightNegated":false,"rightSubject":"B"}] @label "Premises" @description "The starting lines of the derivation: plain facts (subject/negated) and two-sided links (leftSubject/leftNegated/rightSubject/rightNegated) the learner combines with candidate steps. Each line carries its own badgeLabel/badgeVariant." @synonyms "premise, given, starting line, hypothesis, starting statement" @tier "domain"
|
|
21607
21630
|
resetLabel : string = "Reset" @label "Reset Button Label" @description "Label text for the button that restores the starting premises." @tier "presentation"
|
|
21631
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what is being derived (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21608
21632
|
title : string = "Derivation Lab" @label "Title" @description "Title shown above the derivation panel." @tier "presentation"
|
|
21609
21633
|
width : number = 600 @label "Width" @description "Maximum width of the panel, in pixels." @tier "presentation"
|
|
21610
21634
|
}
|
|
@@ -21619,17 +21643,18 @@ trait std-learn-diagram.traits.LearnDiagramSim {
|
|
|
21619
21643
|
category : interaction
|
|
21620
21644
|
states : (idle*)
|
|
21621
21645
|
events : (INIT MODE_SELECTED SELECT_PART CLEAR_PART PART_SELECTED SELECTION_CLEARED)
|
|
21622
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on SELECT_PART) (idle -> idle on CLEAR_PART))
|
|
21646
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on SELECT_PART) (idle -> idle on CLEAR_PART))
|
|
21623
21647
|
emits : (PART_SELECTED SELECTION_CLEARED)
|
|
21624
21648
|
config {
|
|
21625
|
-
backgroundColor : string = "
|
|
21649
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground. Empty uses the theme drawing ground." @tier "presentation"
|
|
21626
21650
|
clearLabel : string = "Clear" @label "Clear Button Label" @description "Label text for the button that clears the current selection." @tier "presentation"
|
|
21627
21651
|
height : number = 400 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
21628
|
-
highlightColor : string = "
|
|
21629
|
-
links : [LearnDiagramLink] = [{"color":"
|
|
21652
|
+
highlightColor : string = "highlight" @label "Highlight Color" @description "Ring color drawn around the selected part." @tier "presentation"
|
|
21653
|
+
links : [LearnDiagramLink] = [{"color":"guide","from":"input","label":"","to":"processor"},{"color":"guide","from":"processor","label":"","to":"storage"},{"color":"guide","from":"processor","label":"","to":"output"},{"color":"guide","from":"controller","label":"","to":"processor"}] @label "Links" @description "Connector lines drawn between parts, by id." @synonyms "link, edge, connector, arrow" @tier "domain"
|
|
21630
21654
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21631
21655
|
overviewText : string = "Select a part below to learn what it does." @label "Overview Text" @description "Caption card text shown when no part is selected." @tier "presentation"
|
|
21632
|
-
parts : [LearnDiagramPart] = [{"color":"
|
|
21656
|
+
parts : [LearnDiagramPart] = [{"color":"series-1","description":"Receives raw data or requests from the outside world and hands them to the processor.","id":"input","label":"Input","radius":34,"x":120,"y":200},{"color":"series-2","description":"The central component that transforms incoming data according to the system's rules.","id":"processor","label":"Processor","radius":46,"x":300,"y":200},{"color":"series-3","description":"Persists data so it can be retrieved later, even after the system restarts.","id":"storage","label":"Storage","radius":34,"x":300,"y":320},{"color":"series-4","description":"Delivers the processor's results back out to users or other systems.","id":"output","label":"Output","radius":34,"x":480,"y":200},{"color":"series-5","description":"Coordinates timing and configuration for the processor without touching the data itself.","id":"controller","label":"Controller","radius":26,"x":300,"y":80}] @label "Parts" @description "Roster of labeled parts (id, label, description, x, y, radius, color) the diagram renders as circles; the learner selects one to see its description." @synonyms "part, node, component, label, annotation" @tier "domain"
|
|
21657
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21633
21658
|
title : string = "System Diagram" @label "Title" @description "Title shown above the diagram." @tier "presentation"
|
|
21634
21659
|
width : number = 600 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
21635
21660
|
}
|
|
@@ -21644,12 +21669,12 @@ trait std-learn-doser.traits.LearnDoserSim {
|
|
|
21644
21669
|
category : interaction
|
|
21645
21670
|
states : (idle*)
|
|
21646
21671
|
events : (INIT MODE_SELECTED ADD_SMALL ADD_LARGE TOGGLE_DRIP RESET DOSE_ADDED DOSE_RESET DOSER_UPDATED LEARN_ROUND_COMPLETE)
|
|
21647
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on ADD_SMALL) (idle -> idle on ADD_LARGE) (idle -> idle on TOGGLE_DRIP) (idle -> idle on RESET))
|
|
21672
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on ADD_SMALL) (idle -> idle on ADD_LARGE) (idle -> idle on TOGGLE_DRIP) (idle -> idle on RESET))
|
|
21648
21673
|
emits : (DOSE_ADDED DOSE_RESET DOSER_UPDATED LEARN_ROUND_COMPLETE)
|
|
21649
21674
|
config {
|
|
21650
21675
|
autoDrip : boolean = false @label "Auto Drip" @description "When true, INIT/MODE_SELECTED/Reset start the drip clock adding a small increment each interval; toggle live with the Auto-dose/Pause button." @tier "domain"
|
|
21651
|
-
backgroundColor : string = "
|
|
21652
|
-
bands : [DoserBand] = [{"color":"
|
|
21676
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground. Empty uses the theme drawing ground." @tier "presentation"
|
|
21677
|
+
bands : [DoserBand] = [{"color":"muted","label":"Low","terminal":false,"upperBound":50},{"color":"success","label":"High","terminal":true,"upperBound":999999999}] @label "Bands" @description "Ordered ascending roster of dose bands/zones — each carries the dose upper bound it covers, a label, a color, and whether crossing into it is terminal (irreversible; sets done true until Reset). The accumulated dose is classified into the first band whose upperBound it does not exceed, falling through to the last band beyond all bounds." @synonyms "zone, band, threshold, region, stage, phase, tier" @tier "domain"
|
|
21653
21678
|
capacity : number = 100 @label "Capacity" @description "Maximum total dose the source can deliver; the source vessel drains to empty and additions clamp once accumulated dose reaches this cap." @tier "domain"
|
|
21654
21679
|
dripIntervalMs : number = 500 @label "Drip Interval (ms)" @description "Milliseconds of running clock per auto-drip increment — the 32ms base tick accumulates elapsed time and adds a small step each time this interval elapses." @tier "domain"
|
|
21655
21680
|
height : number = 400 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
@@ -21657,11 +21682,13 @@ trait std-learn-doser.traits.LearnDoserSim {
|
|
|
21657
21682
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21658
21683
|
quantityLabel : string = "Dose" @label "Quantity Label" @description "Label used for the accumulated-quantity readout and in the narration line." @synonyms "quantity, amount, dose, volume, level" @tier "domain"
|
|
21659
21684
|
reservoirLabel : string = "Reservoir" @label "Reservoir Label" @description "Label for the vessel that fills as dose accumulates." @synonyms "reservoir, beaker, tank, container, receiving vessel" @tier "presentation"
|
|
21685
|
+
series : [string] = [] @label "Palette" @description "Overrides the theme's categorical palette on the canvas (series-1…N) — a subject's real-world color convention, such as indicator colors. Empty uses the theme's palette." @tier "presentation"
|
|
21660
21686
|
showCanvas : boolean = true @label "Show Canvas" @description "When true (the default, standalone use) the instrument renders its own reservoir/source canvas and narration below the control strip. Set false when a domain sibling trait composes this atom via @rebindable and owns the accurate scene render itself — then only the control strip (add/drip/reset buttons) embeds via @trait.<name>, avoiding a duplicate canvas." @tier "presentation"
|
|
21661
|
-
sourceColor : string = "
|
|
21687
|
+
sourceColor : string = "series-1" @label "Source Color" @description "Tone name for the source vessel fill (for example series-1)." @tier "presentation"
|
|
21662
21688
|
sourceLabel : string = "Source" @label "Source Label" @description "Label for the vessel that drains as dose is delivered from it." @synonyms "source, burette, supply, dispenser" @tier "presentation"
|
|
21663
21689
|
stepLarge : number = 5 @label "Large Step" @description "Quantity added per press of the coarse add button." @tier "domain"
|
|
21664
21690
|
stepSmall : number = 1 @label "Small Step" @description "Quantity added per press of the fine add button, and per auto-drip tick — for precise control near a band boundary." @tier "domain"
|
|
21691
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21665
21692
|
title : string = "Doser" @label "Title" @description "Title shown above the instrument." @tier "presentation"
|
|
21666
21693
|
unit : string = "" @label "Unit" @description "Unit suffix appended to the step-size button labels (e.g. \"mL\", \"mg\", \"units\"); empty means no unit shown." @tier "domain"
|
|
21667
21694
|
width : number = 600 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
@@ -21678,7 +21705,7 @@ trait std-learn-estimate.traits.EstimateSim {
|
|
|
21678
21705
|
category : interaction
|
|
21679
21706
|
states : (idle*)
|
|
21680
21707
|
events : (INIT MODE_SELECTED SET_ESTIMATE LOCK_IN NEXT RETRY ESTIMATE_JUDGED PROMPT_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
21681
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_ESTIMATE) (idle -> idle on LOCK_IN) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
21708
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_ESTIMATE) (idle -> idle on LOCK_IN) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
21682
21709
|
emits : (ESTIMATE_JUDGED PROMPT_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
21683
21710
|
config {
|
|
21684
21711
|
closePct : number = 0.25 @label "Close Band" @description "Relative error at or below this fraction (but above the exact band) counts as close (partial points)." @tier "domain"
|
|
@@ -21694,6 +21721,7 @@ trait std-learn-estimate.traits.EstimateSim {
|
|
|
21694
21721
|
sliderMax : number = 500 @label "Slider Max" @description "Upper bound of the estimate slider." @tier "domain"
|
|
21695
21722
|
sliderMin : number = 0 @label "Slider Min" @description "Lower bound of the estimate slider." @tier "domain"
|
|
21696
21723
|
sliderStep : number = 0.1 @label "Slider Step" @tier "presentation"
|
|
21724
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21697
21725
|
title : string = "Estimate It" @label "Title" @description "Title shown above the drill." @tier "presentation"
|
|
21698
21726
|
}
|
|
21699
21727
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -21731,7 +21759,7 @@ trait std-learn-goal-seek.traits.GoalSeekSim {
|
|
|
21731
21759
|
category : interaction
|
|
21732
21760
|
states : (idle*)
|
|
21733
21761
|
events : (INIT MODE_SELECTED SET_PARAM_A SET_PARAM_B CHECK RESET PARAMS_CHANGED GOAL_CHECKED GOAL_RESET LEARN_ROUND_COMPLETE)
|
|
21734
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_PARAM_A) (idle -> idle on SET_PARAM_B) (idle -> idle on CHECK) (idle -> idle on RESET))
|
|
21762
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_PARAM_A) (idle -> idle on SET_PARAM_B) (idle -> idle on CHECK) (idle -> idle on RESET))
|
|
21735
21763
|
emits : (PARAMS_CHANGED GOAL_CHECKED GOAL_RESET LEARN_ROUND_COMPLETE)
|
|
21736
21764
|
config {
|
|
21737
21765
|
checkLabel : string = "Check" @label "Check Label" @tier "presentation"
|
|
@@ -21739,7 +21767,7 @@ trait std-learn-goal-seek.traits.GoalSeekSim {
|
|
|
21739
21767
|
goalText : string = "Tune the two sliders until your curve matches the target curve, then press Check." @label "Goal Text" @description "One-sentence statement of the inverse problem the learner must solve." @tier "domain"
|
|
21740
21768
|
gridStep : number = 1 @label "Grid Step" @tier "presentation"
|
|
21741
21769
|
height : number = 400 @label "Height" @tier "presentation"
|
|
21742
|
-
learnerColor : string = "
|
|
21770
|
+
learnerColor : string = "series-2" @label "Learner Color" @tier "presentation"
|
|
21743
21771
|
learnerLabel : string = "Yours" @label "Learner Label" @tier "presentation"
|
|
21744
21772
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21745
21773
|
paramADefault : number = 1 @label "Parameter A Default" @description "Starting value of the learner's first parameter." @tier "domain"
|
|
@@ -21755,9 +21783,10 @@ trait std-learn-goal-seek.traits.GoalSeekSim {
|
|
|
21755
21783
|
showAxes : boolean = true @label "Show Axes" @tier "presentation"
|
|
21756
21784
|
showGrid : boolean = true @label "Show Grid" @tier "presentation"
|
|
21757
21785
|
showLiveDistance : boolean = true @label "Show Live Distance" @description "When true the RMS distance updates live as the learner tunes (warmer/colder); when false only attempts are shown, for a harder variant." @tier "domain"
|
|
21786
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21758
21787
|
targetA : number = 2.5 @label "Target A" @description "Hidden first parameter of the target curve the learner must recover." @tier "domain"
|
|
21759
21788
|
targetB : number = 1.5 @label "Target B" @description "Hidden second parameter of the target curve the learner must recover." @tier "domain"
|
|
21760
|
-
targetColor : string = "
|
|
21789
|
+
targetColor : string = "guide" @label "Target Color" @tier "presentation"
|
|
21761
21790
|
targetLabel : string = "Target" @label "Target Label" @tier "presentation"
|
|
21762
21791
|
title : string = "Goal Seek" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
21763
21792
|
tolerance : number = 0.35 @label "Tolerance" @description "Maximum RMS distance between learner and target curves that still counts as a match." @tier "domain"
|
|
@@ -21775,28 +21804,29 @@ trait std-learn-grid-sim.traits.GridSimSim {
|
|
|
21775
21804
|
linkedEntity : GridSimScene
|
|
21776
21805
|
category : interaction
|
|
21777
21806
|
states : (idle*)
|
|
21778
|
-
events : (INIT MODE_SELECTED RUN PAUSE STEP TAP_CELL RESET RUN_TOGGLED GRID_STEPPED CELL_TOGGLED GRID_RESET)
|
|
21779
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on STEP) (idle -> idle on TAP_CELL) (idle -> idle on RESET))
|
|
21807
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN SPEED_SET RUN PAUSE STEP TAP_CELL RESET RUN_TOGGLED GRID_STEPPED CELL_TOGGLED GRID_RESET)
|
|
21808
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on SPEED_SET) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on STEP) (idle -> idle on TAP_CELL) (idle -> idle on RESET))
|
|
21780
21809
|
emits : (RUN_TOGGLED GRID_STEPPED CELL_TOGGLED GRID_RESET)
|
|
21781
21810
|
config {
|
|
21782
21811
|
autoRun : boolean = false @label "Auto Run" @description "Whether the evolution starts running immediately on load." @tier "domain"
|
|
21783
|
-
backgroundColor : string = "
|
|
21812
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground override; empty uses the theme's drawing ground." @tier "presentation"
|
|
21784
21813
|
cellSize : number = 26 @label "Cell Size" @tier "presentation"
|
|
21785
21814
|
cols : number = 16 @label "Columns" @tier "domain"
|
|
21786
21815
|
decay : number = 0.995 @label "Decay" @description "Diffusion rule only: fraction of a cell's value retained each generation." @tier "domain"
|
|
21787
21816
|
diffuseRate : number = 0.5 @label "Diffuse Rate" @description "Diffusion rule only: how strongly a cell moves toward its neighbourhood average each generation." @tier "domain"
|
|
21788
21817
|
height : number = 332 @label "Height" @tier "presentation"
|
|
21789
|
-
lowColor : string = "
|
|
21818
|
+
lowColor : string = "muted" @label "Low Color" @tier "presentation"
|
|
21790
21819
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21791
|
-
midColor : string = "
|
|
21792
|
-
offColor : string = "
|
|
21793
|
-
onColor : string = "
|
|
21820
|
+
midColor : string = "series-3" @label "Mid Color" @tier "presentation"
|
|
21821
|
+
offColor : string = "fill" @label "Off Color" @tier "presentation"
|
|
21822
|
+
onColor : string = "series-2" @label "On Color" @tier "presentation"
|
|
21794
21823
|
rows : number = 12 @label "Rows" @tier "domain"
|
|
21795
21824
|
rule : string = "life" @label "Rule" @description "The local update rule: life (Conway birth-3 survive-2-3), spread (an active 4-neighbour activates a cell), or diffusion (cells relax toward the neighbourhood average with decay)." @synonyms "game of life, contagion, wavefront, heat diffusion, cellular automaton rule" @tier "domain"
|
|
21796
21825
|
seeds : [number] = [1,18,32,33,34,88,89,90] @label "Seeds" @description "Flat cell indexes (row·cols + col) active at the start — the default plants a glider and a blinker. Realizations declare their own starting pattern here." @tier "domain"
|
|
21797
21826
|
stepLabel : string = "Step" @label "Step Label" @tier "presentation"
|
|
21827
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21798
21828
|
taskText : string = "Tap cells to seed the world, then Run — or Step one generation at a time to see the rule at work." @label "Task Text" @description "One-sentence statement of what to explore." @tier "domain"
|
|
21799
|
-
title : string = "Grid World" @label "Title" @description "
|
|
21829
|
+
title : string = "Grid World" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
21800
21830
|
width : number = 436 @label "Width" @tier "presentation"
|
|
21801
21831
|
}
|
|
21802
21832
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -21810,17 +21840,18 @@ trait std-learn-hotspot.traits.HotspotSim {
|
|
|
21810
21840
|
category : interaction
|
|
21811
21841
|
states : (idle*)
|
|
21812
21842
|
events : (INIT MODE_SELECTED TAP_SHAPE NEXT RETRY TAP_JUDGED PROMPT_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
21813
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on TAP_SHAPE) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
21843
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TAP_SHAPE) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
21814
21844
|
emits : (TAP_JUDGED PROMPT_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
21815
21845
|
config {
|
|
21816
|
-
backgroundColor : string = "
|
|
21846
|
+
backgroundColor : string = "" @label "Background Color" @tier "presentation"
|
|
21817
21847
|
height : number = 380 @label "Height" @tier "presentation"
|
|
21818
|
-
hitColor : string = "
|
|
21848
|
+
hitColor : string = "success" @label "Hit Ring Color" @description "Color of the highlight ring drawn around the target once found." @tier "presentation"
|
|
21819
21849
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21820
21850
|
nextLabel : string = "Next" @label "Next Label" @tier "presentation"
|
|
21821
21851
|
prompts : [HotspotPrompt] = [{"explanation":"The nucleus holds the DNA.","prompt":"Tap the part that stores the cell's genetic material.","targetId":"nucleus"},{"explanation":"Mitochondria run cellular respiration.","prompt":"Tap the part that produces the cell's energy.","targetId":"mitochondrion"},{"explanation":"Ribosomes translate mRNA into protein.","prompt":"Tap the part that builds proteins.","targetId":"ribosome"}] @label "Prompts" @description "The question roster; each prompt names a target hotspot id and an explanation revealed on a hit." @tier "domain"
|
|
21822
21852
|
retryLabel : string = "Try Again" @label "Retry Label" @tier "presentation"
|
|
21823
|
-
shapes : [HotspotShape] = [{"color":"
|
|
21853
|
+
shapes : [HotspotShape] = [{"color":"series-1","id":"nucleus","label":"Nucleus","radius":34,"x":300,"y":170},{"color":"series-2","id":"membrane","label":"Membrane","radius":26,"x":130,"y":120},{"color":"series-3","id":"mitochondrion","label":"Mitochondrion","radius":24,"x":460,"y":120},{"color":"series-4","id":"ribosome","label":"Ribosome","radius":18,"x":200,"y":280},{"color":"series-5","id":"vacuole","label":"Vacuole","radius":28,"x":420,"y":280}] @label "Hotspots" @description "The labeled parts of the scene; each carries an id, display label, canvas position, radius, and color. Realizations declare their own subject's parts here." @tier "domain"
|
|
21854
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what is being identified (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21824
21855
|
title : string = "Tap the Part" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
21825
21856
|
width : number = 600 @label "Width" @tier "presentation"
|
|
21826
21857
|
}
|
|
@@ -21834,12 +21865,12 @@ trait std-learn-live-sim.traits.LiveSimSim {
|
|
|
21834
21865
|
linkedEntity : LiveSimScene
|
|
21835
21866
|
category : interaction
|
|
21836
21867
|
states : (idle*)
|
|
21837
|
-
events : (INIT MODE_SELECTED RUN PAUSE RESET SET_GRAVITY SET_DAMPING RUN_TOGGLED SIM_RESET)
|
|
21838
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SET_GRAVITY) (idle -> idle on SET_DAMPING))
|
|
21868
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN RUN PAUSE RESET SET_GRAVITY SET_DAMPING RUN_TOGGLED SIM_RESET)
|
|
21869
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SET_GRAVITY) (idle -> idle on SET_DAMPING))
|
|
21839
21870
|
emits : (RUN_TOGGLED SIM_RESET)
|
|
21840
21871
|
config {
|
|
21841
|
-
backgroundColor : string = "
|
|
21842
|
-
bodies : [LiveSimBody] = [{"color":"
|
|
21872
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground override; empty uses the theme's drawing ground." @tier "presentation"
|
|
21873
|
+
bodies : [LiveSimBody] = [{"color":"series-1","id":"ball-a","radius":14,"vx":4,"vy":0,"x":100,"y":60},{"color":"series-2","id":"ball-b","radius":18,"vx":-3,"vy":2,"x":260,"y":90},{"color":"series-3","id":"ball-c","radius":11,"vx":2,"vy":-1,"x":420,"y":40}] @label "Bodies" @description "Initial bodies; each carries position (x,y), radius, color, and velocity (vx,vy). Restored on Reset." @tier "presentation"
|
|
21843
21874
|
damping : number = 0.995 @label "Damping" @description "Initial fraction of velocity retained each tick (air resistance); adjustable live via the Damping slider." @tier "domain"
|
|
21844
21875
|
gravity : number = 0.4 @label "Gravity" @description "Initial downward acceleration added to each body's vy every tick; adjustable live via the Gravity slider." @tier "domain"
|
|
21845
21876
|
height : number = 400 @label "Height" @description "Simulation height in pixels; bounds the bounce." @tier "presentation"
|
|
@@ -21847,7 +21878,8 @@ trait std-learn-live-sim.traits.LiveSimSim {
|
|
|
21847
21878
|
restitution : number = 0.78 @label "Restitution" @description "Fraction of speed kept when a body bounces off a wall." @tier "domain"
|
|
21848
21879
|
running : boolean = false @label "Running" @description "Whether the simulation starts already running on INIT." @tier "domain"
|
|
21849
21880
|
showVelocity : boolean = true @label "Show Velocity" @description "Draw each body's velocity vector as an arrow." @tier "presentation"
|
|
21850
|
-
|
|
21881
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21882
|
+
title : string = "Live Sim" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
21851
21883
|
velocityScale : number = 8 @label "Velocity Scale" @description "Length multiplier for the velocity arrows." @tier "presentation"
|
|
21852
21884
|
width : number = 600 @label "Width" @description "Simulation width in pixels; bounds the bounce." @tier "presentation"
|
|
21853
21885
|
}
|
|
@@ -21861,8 +21893,8 @@ trait std-learn-measure.traits.MeasureSim {
|
|
|
21861
21893
|
linkedEntity : MeasureScene
|
|
21862
21894
|
category : interaction
|
|
21863
21895
|
states : (idle*)
|
|
21864
|
-
events : (INIT MODE_SELECTED RUN PAUSE PROBE RESET RUN_TOGGLED PROBE_RECORDED MEASURE_RESET)
|
|
21865
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on PROBE) (idle -> idle on RESET))
|
|
21896
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN SPEED_SET RUN PAUSE PROBE RESET RUN_TOGGLED PROBE_RECORDED MEASURE_RESET)
|
|
21897
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on SPEED_SET) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on PROBE) (idle -> idle on RESET))
|
|
21866
21898
|
emits : (RUN_TOGGLED PROBE_RECORDED MEASURE_RESET)
|
|
21867
21899
|
config {
|
|
21868
21900
|
amplitude : number = 5 @label "Amplitude" @description "The A parameter: the signal's scale." @tier "domain"
|
|
@@ -21870,13 +21902,14 @@ trait std-learn-measure.traits.MeasureSim {
|
|
|
21870
21902
|
gridStep : number = 1 @label "Grid Step" @tier "presentation"
|
|
21871
21903
|
height : number = 360 @label "Height" @tier "presentation"
|
|
21872
21904
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21873
|
-
probeColor : string = "
|
|
21905
|
+
probeColor : string = "highlight" @label "Probe Color" @tier "presentation"
|
|
21874
21906
|
probeLabel : string = "Probe" @label "Probe Label" @tier "presentation"
|
|
21875
21907
|
rate : number = 1.2 @label "Rate" @description "The B parameter: angular rate for sine, growth rate for growth, half-life in seconds for decay." @tier "domain"
|
|
21876
|
-
signalColor : string = "
|
|
21908
|
+
signalColor : string = "ink" @label "Signal Color" @tier "presentation"
|
|
21877
21909
|
signalKind : string = "sine" @label "Signal Kind" @description "How the measured quantity evolves: sine (A·sin(B·t)), growth (A·(1+B)ᵗ), or decay (half-life A·(1/2)^(t/B))." @synonyms "signal family, oscillation, exponential growth, half-life decay" @tier "domain"
|
|
21910
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21878
21911
|
taskText : string = "Run the signal, then press Probe to record measurements. Watch the running mean settle." @label "Task Text" @description "One-sentence statement of the measuring task." @tier "domain"
|
|
21879
|
-
title : string = "Measurement Lab" @label "Title" @description "
|
|
21912
|
+
title : string = "Measurement Lab" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
21880
21913
|
valueLabel : string = "value" @label "Value Label" @description "Display name of the measured quantity." @tier "presentation"
|
|
21881
21914
|
valueMax : number = 6 @label "Value Max" @description "Upper bound of the chart's y axis." @tier "presentation"
|
|
21882
21915
|
valueMin : number = -6 @label "Value Min" @description "Lower bound of the chart's y axis." @tier "presentation"
|
|
@@ -21893,11 +21926,11 @@ trait std-learn-param-explorer.traits.ParamExplorerSim {
|
|
|
21893
21926
|
category : interaction
|
|
21894
21927
|
states : (idle*)
|
|
21895
21928
|
events : (INIT MODE_SELECTED SET_PARAM_A SET_PARAM_B PARAMS_CHANGED)
|
|
21896
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_PARAM_A) (idle -> idle on SET_PARAM_B))
|
|
21929
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on SET_PARAM_A) (idle -> idle on SET_PARAM_B))
|
|
21897
21930
|
emits : (PARAMS_CHANGED)
|
|
21898
21931
|
config {
|
|
21899
21932
|
animate : boolean = false @label "Animate" @tier "presentation"
|
|
21900
|
-
color : string = "
|
|
21933
|
+
color : string = "series-2" @label "Curve Color" @tier "presentation"
|
|
21901
21934
|
curveKind : string = "power" @label "Curve Kind" @description "Curve family the two parameters drive: power (y = A·xᴮ), linear (y = A + B·x), or sine (y = A·sin(B·x))." @synonyms "curve family, power law, linear function, sine wave, function type" @tier "domain"
|
|
21902
21935
|
gridStep : number = 1 @label "Grid Step" @tier "presentation"
|
|
21903
21936
|
height : number = 400 @label "Height" @tier "presentation"
|
|
@@ -21915,6 +21948,7 @@ trait std-learn-param-explorer.traits.ParamExplorerSim {
|
|
|
21915
21948
|
paramBStep : number = 0.1 @label "Parameter B Step" @description "Slider increment for the second parameter." @tier "presentation"
|
|
21916
21949
|
showAxes : boolean = true @label "Show Axes" @tier "presentation"
|
|
21917
21950
|
showGrid : boolean = true @label "Show Grid" @tier "presentation"
|
|
21951
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21918
21952
|
title : string = "Parameter Explorer" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
21919
21953
|
width : number = 600 @label "Width" @tier "presentation"
|
|
21920
21954
|
xMax : number = 10 @label "X Max" @description "Right edge of the sampled x range." @tier "presentation"
|
|
@@ -21930,8 +21964,8 @@ trait std-learn-perturb.traits.PerturbSim {
|
|
|
21930
21964
|
linkedEntity : PerturbScene
|
|
21931
21965
|
category : interaction
|
|
21932
21966
|
states : (idle*)
|
|
21933
|
-
events : (INIT MODE_SELECTED RUN PAUSE RESET SET_POINT SET_RATE SHOCK RUN_TOGGLED SIM_RESET SETPOINT_CHANGED RATE_CHANGED SHOCK_APPLIED)
|
|
21934
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SET_POINT) (idle -> idle on SET_RATE) (idle -> idle on SHOCK))
|
|
21967
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN SPEED_SET RUN PAUSE RESET SET_POINT SET_RATE SHOCK RUN_TOGGLED SIM_RESET SETPOINT_CHANGED RATE_CHANGED SHOCK_APPLIED)
|
|
21968
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on SPEED_SET) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SET_POINT) (idle -> idle on SET_RATE) (idle -> idle on SHOCK))
|
|
21935
21969
|
emits : (RUN_TOGGLED SIM_RESET SETPOINT_CHANGED RATE_CHANGED SHOCK_APPLIED)
|
|
21936
21970
|
config {
|
|
21937
21971
|
autoRun : boolean = true @label "Auto Run" @description "Whether the simulation starts running immediately on load." @tier "domain"
|
|
@@ -21944,7 +21978,7 @@ trait std-learn-perturb.traits.PerturbSim {
|
|
|
21944
21978
|
rateMax : number = 3 @label "Rate Max" @tier "domain"
|
|
21945
21979
|
rateMin : number = 0.05 @label "Rate Min" @tier "domain"
|
|
21946
21980
|
rateStep : number = 0.05 @label "Rate Step" @tier "presentation"
|
|
21947
|
-
setpointColor : string = "
|
|
21981
|
+
setpointColor : string = "guide" @label "Setpoint Color" @tier "presentation"
|
|
21948
21982
|
setpointDefault : number = 37 @label "Setpoint Default" @tier "domain"
|
|
21949
21983
|
setpointLabel : string = "Setpoint" @label "Setpoint Label" @description "Display name of the equilibrium target." @tier "domain"
|
|
21950
21984
|
setpointMax : number = 44 @label "Setpoint Max" @tier "domain"
|
|
@@ -21953,9 +21987,10 @@ trait std-learn-perturb.traits.PerturbSim {
|
|
|
21953
21987
|
shockDownLabel : string = "− Shock down" @label "Shock Down Label" @tier "presentation"
|
|
21954
21988
|
shockSize : number = 4 @label "Shock Size" @description "How far a shock button knocks the quantity from its current value." @tier "domain"
|
|
21955
21989
|
shockUpLabel : string = "+ Shock up" @label "Shock Up Label" @tier "presentation"
|
|
21990
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21956
21991
|
taskText : string = "Run the system, shock it off its setpoint, and watch it recover — then move the setpoint mid-run." @label "Task Text" @description "One-sentence statement of what to explore." @tier "domain"
|
|
21957
|
-
title : string = "Equilibrium & Shock" @label "Title" @description "
|
|
21958
|
-
valueColor : string = "
|
|
21992
|
+
title : string = "Equilibrium & Shock" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
21993
|
+
valueColor : string = "highlight" @label "Value Color" @tier "presentation"
|
|
21959
21994
|
valueLabel : string = "Temperature" @label "Value Label" @description "Display name of the regulated quantity." @tier "domain"
|
|
21960
21995
|
valueMax : number = 46 @label "Value Max" @description "Upper bound of the chart's y axis." @tier "presentation"
|
|
21961
21996
|
valueMin : number = 28 @label "Value Min" @description "Lower bound of the chart's y axis." @tier "presentation"
|
|
@@ -21973,7 +22008,7 @@ trait std-learn-predict.traits.PredictSim {
|
|
|
21973
22008
|
category : interaction
|
|
21974
22009
|
states : (idle*)
|
|
21975
22010
|
events : (INIT MODE_SELECTED PREDICT NEXT RETRY PREDICTION_COMMITTED SCENARIO_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
21976
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on PREDICT) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
22011
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on PREDICT) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
21977
22012
|
emits : (PREDICTION_COMMITTED SCENARIO_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
21978
22013
|
config {
|
|
21979
22014
|
gridStep : number = 25 @label "Grid Step" @tier "presentation"
|
|
@@ -21981,9 +22016,10 @@ trait std-learn-predict.traits.PredictSim {
|
|
|
21981
22016
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
21982
22017
|
nextLabel : string = "Next" @label "Next Label" @tier "presentation"
|
|
21983
22018
|
retryLabel : string = "Try Again" @label "Retry Label" @tier "presentation"
|
|
21984
|
-
revealColor : string = "
|
|
22019
|
+
revealColor : string = "series-1" @label "Reveal Color" @tier "presentation"
|
|
21985
22020
|
revealLabel : string = "Outcome" @label "Reveal Label" @tier "presentation"
|
|
21986
22021
|
scenarios : [PredictScenario] = [{"correctIndex":1,"explanation":"With no limiting factor yet, growth compounds each season.","frames":[{"caption":"Season 1: 40 rabbits","value":40},{"caption":"Season 2: 52 rabbits","value":52},{"caption":"Season 3: 68 rabbits","value":68},{"caption":"Season 4: 88 rabbits","value":88},{"caption":"Season 5: 114 rabbits","value":114},{"caption":"Season 6: 148 rabbits — still accelerating","value":148}],"options":["It levels off","It keeps accelerating","It collapses"],"question":"What happens to the population over the next six seasons?","setup":"A small island hosts 40 rabbits with unlimited grass and no predators."},{"correctIndex":1,"explanation":"Predation and food limits impose a carrying capacity.","frames":[{"caption":"Season 1: 148 rabbits","value":148},{"caption":"Season 2: 160 rabbits","value":160},{"caption":"Season 3: 166 rabbits","value":166},{"caption":"Season 4: 169 rabbits","value":169},{"caption":"Season 5: 170 rabbits — the curve flattens","value":170}],"options":["It keeps accelerating","It levels off near a ceiling","It grows linearly"],"question":"What happens to the rabbit population now?","setup":"The same island now has foxes, and grass is running short."}] @label "Scenarios" @description "The scenario roster; each carries a setup, the question, the offered predictions with the correct index, an explanation, and the reveal frames (caption + value) that play out after the learner commits. Realizations declare their own subject's scenarios here." @tier "domain"
|
|
22022
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what is being predicted (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
21987
22023
|
title : string = "Predict, Then Watch" @label "Title" @description "Title shown above the instrument." @tier "presentation"
|
|
21988
22024
|
valueMax : number = 200 @label "Value Max" @description "Upper bound of the reveal chart's y axis." @tier "presentation"
|
|
21989
22025
|
valueMin : number = 0 @label "Value Min" @description "Lower bound of the reveal chart's y axis." @tier "presentation"
|
|
@@ -22000,17 +22036,18 @@ trait std-learn-sample-accumulator.traits.SampleAccumulatorSim {
|
|
|
22000
22036
|
category : interaction
|
|
22001
22037
|
states : (idle*)
|
|
22002
22038
|
events : (INIT MODE_SELECTED DRAW SET_BATCH_SIZE RESET SAMPLES_DRAWN ACCUMULATOR_RESET)
|
|
22003
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on DRAW) (idle -> idle on SET_BATCH_SIZE) (idle -> idle on RESET))
|
|
22039
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on DRAW) (idle -> idle on SET_BATCH_SIZE) (idle -> idle on RESET))
|
|
22004
22040
|
emits : (SAMPLES_DRAWN ACCUMULATOR_RESET)
|
|
22005
22041
|
config {
|
|
22006
22042
|
batchSize : number = 25 @label "Batch Size" @description "Number of samples the Draw button adds per click." @synonyms "batch size, draws per click, sample batch" @tier "domain"
|
|
22007
22043
|
bias : number = 0.5 @label "Bias" @description "Probability the coin source draws 1, used only when sourceKind is coin." @synonyms "probability, bernoulli parameter, coin bias, p" @tier "domain"
|
|
22008
22044
|
binCount : number = 10 @label "Bin Count" @description "Number of histogram buckets across the 0..1 value range." @tier "presentation"
|
|
22009
|
-
color : string = "
|
|
22045
|
+
color : string = "series-1" @label "Bar Color" @tier "presentation"
|
|
22010
22046
|
height : number = 400 @label "Height" @tier "presentation"
|
|
22011
22047
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22012
22048
|
sourceKind : string = "uniform" @label "Source Kind" @description "Distribution each draw samples from: uniform (0..1) or coin (Bernoulli 0/1 weighted by bias)." @synonyms "uniform distribution, coin flip, bernoulli trial, random sampling, source distribution" @tier "domain"
|
|
22013
|
-
|
|
22049
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22050
|
+
title : string = "Sample Accumulator" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
22014
22051
|
width : number = 600 @label "Width" @tier "presentation"
|
|
22015
22052
|
}
|
|
22016
22053
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -22024,16 +22061,16 @@ trait std-learn-sandbox.traits.LearnSandboxSim {
|
|
|
22024
22061
|
category : interaction
|
|
22025
22062
|
states : (idle*)
|
|
22026
22063
|
events : (INIT MODE_SELECTED TOGGLE RESET SYSTEM_CHANGED SANDBOX_RESET)
|
|
22027
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE) (idle -> idle on RESET))
|
|
22064
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE) (idle -> idle on RESET))
|
|
22028
22065
|
emits : (SYSTEM_CHANGED SANDBOX_RESET)
|
|
22029
22066
|
config {
|
|
22030
22067
|
animate : boolean = false @label "Animate" @description "Enable continuous redraw loop." @tier "presentation"
|
|
22031
|
-
backgroundColor : string = "
|
|
22032
|
-
disabledColor : string = "
|
|
22033
|
-
disabledEdgeColor : string = "
|
|
22068
|
+
backgroundColor : string = "" @label "Background Color" @tier "presentation"
|
|
22069
|
+
disabledColor : string = "muted" @label "Disabled Node Color" @tier "presentation"
|
|
22070
|
+
disabledEdgeColor : string = "guide" @label "Disabled Edge Color" @tier "presentation"
|
|
22034
22071
|
elements : [LearnSandboxElement] = [{"enabled":true,"id":"a","label":"Module A","weight":15,"x":100,"y":80},{"enabled":true,"id":"b","label":"Module B","weight":20,"x":300,"y":60},{"enabled":false,"id":"c","label":"Module C","weight":10,"x":500,"y":80},{"enabled":true,"id":"d","label":"Module D","weight":25,"x":200,"y":220},{"enabled":true,"id":"e","label":"Module E","weight":18,"x":420,"y":220}] @label "Elements" @description "Roster of toggleable elements; each carries its label, its weight toward the derived total, its default enabled state, and its canvas position." @synonyms "element, node, component, module, factor, contributor" @tier "domain"
|
|
22035
|
-
enabledColor : string = "
|
|
22036
|
-
enabledEdgeColor : string = "
|
|
22072
|
+
enabledColor : string = "series-2" @label "Enabled Node Color" @tier "presentation"
|
|
22073
|
+
enabledEdgeColor : string = "ink" @label "Enabled Edge Color" @tier "presentation"
|
|
22037
22074
|
height : number = 320 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
22038
22075
|
interactive : boolean = false @label "Interactive" @description "Enable pointer interaction on the canvas." @tier "presentation"
|
|
22039
22076
|
links : [LearnSandboxLink] = [{"from":"a","to":"b"},{"from":"b","to":"c"},{"from":"a","to":"d"},{"from":"d","to":"e"}] @label "Links" @description "Declared relationships drawn between elements; a link dims when either endpoint is disabled." @synonyms "link, edge, connection, dependency, relationship" @tier "domain"
|
|
@@ -22041,6 +22078,7 @@ trait std-learn-sandbox.traits.LearnSandboxSim {
|
|
|
22041
22078
|
nodeRadius : number = 34 @label "Node Radius" @tier "presentation"
|
|
22042
22079
|
outcomeLabel : string = "System Status" @label "Outcome Label" @description "Label prefix used in the readout describing the derived total and hold status." @tier "presentation"
|
|
22043
22080
|
resetLabel : string = "Reset" @label "Reset Button Label" @tier "presentation"
|
|
22081
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the system models (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22044
22082
|
threshold : number = 60 @label "Threshold" @description "The summed weight of enabled elements must reach this value for the system to hold." @synonyms "threshold, tipping point, sufficient total" @tier "domain"
|
|
22045
22083
|
title : string = "System Sandbox" @label "Title" @description "Title shown above the instrument." @tier "presentation"
|
|
22046
22084
|
width : number = 640 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
@@ -22056,7 +22094,7 @@ trait std-learn-scatter-fit.traits.LearnScatterFitSim {
|
|
|
22056
22094
|
category : interaction
|
|
22057
22095
|
states : (idle*)
|
|
22058
22096
|
events : (INIT MODE_SELECTED ADD_POINT DRAG_POINT GUESS_LINE REVEAL_FIT TOGGLE_RUN RESET LEARN_SCATTER_FIT_UPDATED LEARN_ROUND_COMPLETE)
|
|
22059
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on ADD_POINT) (idle -> idle on DRAG_POINT) (idle -> idle on GUESS_LINE) (idle -> idle on REVEAL_FIT) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
22097
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on ADD_POINT) (idle -> idle on DRAG_POINT) (idle -> idle on GUESS_LINE) (idle -> idle on REVEAL_FIT) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
22060
22098
|
emits : (LEARN_SCATTER_FIT_UPDATED LEARN_ROUND_COMPLETE)
|
|
22061
22099
|
config {
|
|
22062
22100
|
addPointLabel : string = "Add Point" @label "Add Point Button Label" @tier "presentation"
|
|
@@ -22066,10 +22104,10 @@ trait std-learn-scatter-fit.traits.LearnScatterFitSim {
|
|
|
22066
22104
|
axisXMin : number = 0 @label "X Axis Min" @description "Lower bound of the canvas x axis, in data coordinates." @tier "domain"
|
|
22067
22105
|
axisYMax : number = 100 @label "Y Axis Max" @description "Upper bound of the canvas y axis; also the ceiling curve samples clamp to and the high end of the guess-intercept slider default range." @tier "domain"
|
|
22068
22106
|
axisYMin : number = 0 @label "Y Axis Min" @description "Lower bound of the canvas y axis; also the floor curve samples clamp to and the low end of the guess-intercept slider default range." @tier "domain"
|
|
22069
|
-
fitColor : string = "
|
|
22107
|
+
fitColor : string = "series-2" @label "Fit Curve Color" @tier "presentation"
|
|
22070
22108
|
fitLabel : string = "fit" @label "Fit Curve Label" @description "Legend label for the computed least-squares fit line." @tier "presentation"
|
|
22071
22109
|
gridStep : number = 20 @label "Grid Step" @description "Spacing between canvas gridlines, in data coordinates." @tier "presentation"
|
|
22072
|
-
guessColor : string = "
|
|
22110
|
+
guessColor : string = "series-3" @label "Guess Curve Color" @tier "presentation"
|
|
22073
22111
|
guessInterceptCaption : string = "Guess intercept: " @label "Guess Intercept Caption" @description "Text prefixed to the current guess-intercept value above its slider." @tier "presentation"
|
|
22074
22112
|
guessInterceptMax : number = 100 @label "Guess Intercept Max" @description "Upper bound of the guess-intercept slider; typically set to axisYMax." @tier "domain"
|
|
22075
22113
|
guessInterceptMin : number = 0 @label "Guess Intercept Min" @description "Lower bound of the guess-intercept slider; typically set to axisYMin." @tier "domain"
|
|
@@ -22081,7 +22119,7 @@ trait std-learn-scatter-fit.traits.LearnScatterFitSim {
|
|
|
22081
22119
|
guessSlopeMin : number = -3 @label "Guess Slope Min" @description "Lower bound of the guess-slope slider." @tier "domain"
|
|
22082
22120
|
guessSlopeStep : number = 0.05 @label "Guess Slope Step" @tier "domain"
|
|
22083
22121
|
height : number = 400 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
22084
|
-
initialPoints : [LearnScatterFitPoint] = [{"color":"
|
|
22122
|
+
initialPoints : [LearnScatterFitPoint] = [{"color":"ink","id":"p0","label":"","radius":5,"x":15,"y":25},{"color":"ink","id":"p1","label":"","radius":5,"x":32,"y":40},{"color":"ink","id":"p2","label":"","radius":5,"x":48,"y":44},{"color":"ink","id":"p3","label":"","radius":5,"x":63,"y":62},{"color":"ink","id":"p4","label":"","radius":5,"x":80,"y":70}] @label "Initial Points" @description "Scatter points the canvas starts with, in axis data coordinates; Reset reseeds from this roster." @synonyms "seed points, dataset, scatter data, sample" @tier "domain"
|
|
22085
22123
|
interactive : boolean = true @label "Interactive" @description "Enable pointer interaction on the canvas — required for dragging points." @tier "presentation"
|
|
22086
22124
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22087
22125
|
maxPoints : number = 20 @label "Max Points" @description "Cap on accumulated scatter points; Add Point and the auto-run tick stop once reached, until Reset." @tier "domain"
|
|
@@ -22093,12 +22131,12 @@ trait std-learn-scatter-fit.traits.LearnScatterFitSim {
|
|
|
22093
22131
|
narrationMaxReachedSuffix : string = " — max points reached" @label "Max Reached Narration Suffix" @description "Suffix appended to the added-point narration once maxPoints is hit." @tier "domain"
|
|
22094
22132
|
narrationMovedTemplate : string = "point moved" @label "Moved Narration Template" @description "Narration phrase after a point is dragged, assembled as \"<template> — r = .., R² = ..\"." @tier "domain"
|
|
22095
22133
|
narrationPausedTemplate : string = "Paused — add manually with Add Point." @label "Paused Narration" @description "Narration shown after Pause is pressed." @tier "domain"
|
|
22096
|
-
newPointColor : string = "
|
|
22134
|
+
newPointColor : string = "ink" @label "New Point Color" @description "Fill color assigned to points created by Add Point or the auto-add tick." @tier "presentation"
|
|
22097
22135
|
newPointRadius : number = 5 @label "New Point Radius" @tier "presentation"
|
|
22098
22136
|
pauseLabel : string = "Pause" @label "Pause Button Label" @tier "presentation"
|
|
22099
22137
|
pointMarginPct : number = 0.05 @label "Point Margin Percent" @description "Fraction of each axis span kept clear at both ends when Add Point/the tick place a new random point, so new points never land flush against the axis edge." @tier "domain"
|
|
22100
22138
|
resetLabel : string = "Reset" @label "Reset Button Label" @tier "presentation"
|
|
22101
|
-
residualColor : string = "
|
|
22139
|
+
residualColor : string = "guide" @label "Residual Color" @tier "presentation"
|
|
22102
22140
|
residualDash : string = "dashed" @label "Residual Dash Style" @tier "presentation" @values (dashed dotted)
|
|
22103
22141
|
revealLabel : string = "Reveal Fit" @label "Reveal Fit Button Label" @tier "presentation"
|
|
22104
22142
|
runLabel : string = "Run" @label "Run Button Label" @tier "presentation"
|
|
@@ -22107,6 +22145,7 @@ trait std-learn-scatter-fit.traits.LearnScatterFitSim {
|
|
|
22107
22145
|
showR : boolean = true @label "Show r and R²" @description "Show the correlation coefficient r and coefficient of determination R² under the canvas." @synonyms "correlation coefficient, r squared, goodness of fit" @tier "domain"
|
|
22108
22146
|
showResiduals : boolean = true @label "Show Residuals" @description "Draw a dashed segment from each point to the fit line — the errors least squares minimizes." @synonyms "residuals, errors, deviations" @tier "domain"
|
|
22109
22147
|
showTickLabels : boolean = true @label "Show Tick Labels" @tier "presentation"
|
|
22148
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22110
22149
|
title : string = "Scatter Fit" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
22111
22150
|
width : number = 600 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
22112
22151
|
}
|
|
@@ -22121,7 +22160,7 @@ trait std-learn-scenario.traits.ScenarioSim {
|
|
|
22121
22160
|
category : interaction
|
|
22122
22161
|
states : (idle*)
|
|
22123
22162
|
events : (INIT MODE_SELECTED CHOOSE RESTART CHOICE_MADE SCENARIO_RESTARTED)
|
|
22124
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on CHOOSE) (idle -> idle on RESTART))
|
|
22163
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on CHOOSE) (idle -> idle on RESTART))
|
|
22125
22164
|
emits : (CHOICE_MADE SCENARIO_RESTARTED)
|
|
22126
22165
|
config {
|
|
22127
22166
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
@@ -22132,6 +22171,7 @@ trait std-learn-scenario.traits.ScenarioSim {
|
|
|
22132
22171
|
nodes : [ScenarioNode] = [{"choices":[{"deltaA":-60,"deltaB":10,"label":"Build a levee now","next":"levee","note":"Fast protection, most of the budget gone."},{"deltaA":-25,"deltaB":-5,"label":"Restore the upstream wetlands","next":"wetlands","note":"Cheaper and greener, but slower to work."}],"id":"start","situation":"Your town's river floods every spring. The council asks you to lead the response."},{"choices":[{"deltaA":-30,"deltaB":-10,"label":"Raise the levee again","next":"end-lock-in","note":"Costs keep compounding."},{"deltaA":-20,"deltaB":15,"label":"Add wetlands as a second line","next":"end-hybrid","note":"Late, but it eases the pressure."}],"id":"levee","situation":"The levee holds the first spring, but silt builds up and the river rises higher each year."},{"choices":[{"deltaA":-15,"deltaB":25,"label":"Expand the wetland corridor","next":"end-green","note":"The town rallies behind the project."},{"deltaA":10,"deltaB":5,"label":"Bank the savings","next":"end-thrifty","note":"Prudent, though the corridor stays small."}],"id":"wetlands","situation":"Two springs pass; the wetlands now absorb most floods, and wildlife is returning."},{"choices":[],"id":"end-lock-in","situation":"You are locked into an arms race with the river: protected, but at ever-growing cost."},{"choices":[],"id":"end-hybrid","situation":"The hybrid defense works: the levee buys time and the wetlands cut the peak floods."},{"choices":[],"id":"end-green","situation":"The restored river corridor protects the town and becomes its most loved public space."},{"choices":[],"id":"end-thrifty","situation":"The town stays safe in normal years, with savings in reserve for a bigger flood."}] @label "Nodes" @description "The decision graph; each node carries a situation and its choices, each choice naming the next node, metric deltas, and a consequence note. A node with no choices ends the run. Realizations declare their own subject's decision tree here." @tier "domain"
|
|
22133
22172
|
restartLabel : string = "Play Again" @label "Restart Label" @tier "presentation"
|
|
22134
22173
|
startId : string = "start" @label "Start Node" @description "Id of the node the scenario opens on." @tier "domain"
|
|
22174
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the scenario explores (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22135
22175
|
title : string = "Decision Scenario" @label "Title" @description "Title shown above the scenario." @tier "presentation"
|
|
22136
22176
|
}
|
|
22137
22177
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -22144,14 +22184,15 @@ trait std-learn-sim-3d.traits.Learn3DSimTransport {
|
|
|
22144
22184
|
linkedEntity : Learn3DSimScene
|
|
22145
22185
|
category : interaction
|
|
22146
22186
|
states : (idle*)
|
|
22147
|
-
events : (INIT MODE_SELECTED RUN PAUSE RESET SPEED_HALF SPEED_NORMAL SPEED_DOUBLE SPEED_QUAD SIM_3D_TICK SIM_3D_UPDATED)
|
|
22148
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SPEED_HALF) (idle -> idle on SPEED_NORMAL) (idle -> idle on SPEED_DOUBLE) (idle -> idle on SPEED_QUAD))
|
|
22187
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN SPEED_SET RUN PAUSE RESET SPEED_HALF SPEED_NORMAL SPEED_DOUBLE SPEED_QUAD SIM_3D_TICK SIM_3D_UPDATED)
|
|
22188
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on SPEED_SET) (idle -> idle on RUN) (idle -> idle on PAUSE) (idle -> idle on RESET) (idle -> idle on SPEED_HALF) (idle -> idle on SPEED_NORMAL) (idle -> idle on SPEED_DOUBLE) (idle -> idle on SPEED_QUAD))
|
|
22149
22189
|
emits : (SIM_3D_TICK SIM_3D_UPDATED)
|
|
22150
22190
|
config {
|
|
22151
22191
|
dt : number = 0.02 @label "Timestep" @description "Simulated seconds per tick before the speed multiplier; the effective step emitted on SIM_3D_TICK is dt x speedMultiplier." @tier "domain"
|
|
22152
22192
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22153
22193
|
running : boolean = true @label "Running" @description "When true the clock starts ticking on INIT; the Reset arm restores this value." @tier "domain"
|
|
22154
|
-
|
|
22194
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22195
|
+
title : string = "3D Simulation" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
22155
22196
|
}
|
|
22156
22197
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
22157
22198
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb orbitals[0].traits[0])"
|
|
@@ -22183,7 +22224,7 @@ trait std-learn-speed-drill.traits.SpeedDrillSim {
|
|
|
22183
22224
|
category : interaction
|
|
22184
22225
|
states : (idle*)
|
|
22185
22226
|
events : (INIT MODE_SELECTED ANSWER NEXT RETRY ANSWER_JUDGED PROMPT_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
22186
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on ANSWER) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
22227
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on ANSWER) (idle -> idle on NEXT) (idle -> idle on RETRY))
|
|
22187
22228
|
emits : (ANSWER_JUDGED PROMPT_ADVANCED ROUND_RESTARTED LEARN_ROUND_COMPLETE)
|
|
22188
22229
|
config {
|
|
22189
22230
|
basePoints : number = 10 @label "Base Points" @description "Points for a correct answer regardless of speed." @tier "domain"
|
|
@@ -22192,6 +22233,7 @@ trait std-learn-speed-drill.traits.SpeedDrillSim {
|
|
|
22192
22233
|
nextLabel : string = "Next" @label "Next Label" @tier "presentation"
|
|
22193
22234
|
retryLabel : string = "Try Again" @label "Retry Label" @tier "presentation"
|
|
22194
22235
|
speedBonus : number = 10 @label "Speed Bonus" @description "Maximum extra points awarded in proportion to the time left on the clock." @tier "domain"
|
|
22236
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what is being drilled (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22195
22237
|
timeLimit : number = 6 @label "Time Limit" @description "Seconds the learner has to answer each item before it counts as a miss." @tier "domain"
|
|
22196
22238
|
title : string = "Speed Drill" @label "Title" @description "Title shown above the drill." @tier "presentation"
|
|
22197
22239
|
}
|
|
@@ -22206,7 +22248,7 @@ trait std-learn-stepper.traits.LearnStepperSim {
|
|
|
22206
22248
|
category : interaction
|
|
22207
22249
|
states : (idle*)
|
|
22208
22250
|
events : (INIT MODE_SELECTED NEXT PREV FILTER_CATEGORY RESET_STEPPER STEPPER_ADVANCED)
|
|
22209
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on NEXT) (idle -> idle on PREV) (idle -> idle on FILTER_CATEGORY) (idle -> idle on RESET_STEPPER))
|
|
22251
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on NEXT) (idle -> idle on PREV) (idle -> idle on FILTER_CATEGORY) (idle -> idle on RESET_STEPPER))
|
|
22210
22252
|
emits : (STEPPER_ADVANCED)
|
|
22211
22253
|
config {
|
|
22212
22254
|
allLabel : string = "All" @label "All Filter Label" @tier "presentation"
|
|
@@ -22216,8 +22258,8 @@ trait std-learn-stepper.traits.LearnStepperSim {
|
|
|
22216
22258
|
axisMarginLeft : number = 60 @label "Axis Left Margin" @tier "presentation"
|
|
22217
22259
|
axisMarginRight : number = 60 @label "Axis Right Margin" @tier "presentation"
|
|
22218
22260
|
axisY : number = 220 @label "Axis Y" @description "Canvas y-position of the horizontal axis." @tier "presentation"
|
|
22219
|
-
backgroundColor : string = "
|
|
22220
|
-
categories : [LearnStepperCategory] = [{"category":"a","color":"
|
|
22261
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground override; empty uses the theme's drawing ground." @tier "presentation"
|
|
22262
|
+
categories : [LearnStepperCategory] = [{"category":"a","color":"series-1","label":"Category A"},{"category":"b","color":"series-2","label":"Category B"}] @label "Categories" @description "Marker color and button label per stage category, used for the axis dots, the legend, the FILTER_CATEGORY buttons, and the running per-category tally." @synonyms "category color, category legend, stage category, filter lens" @tier "domain"
|
|
22221
22263
|
categorySummaries : [LearnStepperCategorySummary] = [{"category":"a","summary":"Viewed through Category A alone, only the stages tagged A are highlighted."},{"category":"b","summary":"Viewed through Category B alone, only the stages tagged B are highlighted."}] @label "Category Summaries" @description "Narrative summary shown when the learner filters the sequence to a single category — how the sequence reads through that lens alone." @synonyms "historiographical lens, primary source lens, single-cause narrative, category narrative, visible thread" @tier "domain"
|
|
22222
22264
|
height : number = 420 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
22223
22265
|
interactive : boolean = false @label "Interactive" @description "Enable pointer interaction on the canvas." @tier "presentation"
|
|
@@ -22228,8 +22270,9 @@ trait std-learn-stepper.traits.LearnStepperSim {
|
|
|
22228
22270
|
minPosition : number = 0 @label "Min Position" @description "Earliest position on the axis (before the first stage)." @tier "domain"
|
|
22229
22271
|
stages : [LearnStepperStage] = [{"category":"a","description":"First stage in the sequence.","id":"stage-1","label":"Stage One","position":1},{"category":"b","description":"Second stage in the sequence.","id":"stage-2","label":"Stage Two","position":2},{"category":"a","description":"Third stage in the sequence.","id":"stage-3","label":"Stage Three","position":3}] @label "Stages" @description "Ordered roster of stages (position, label, category, description) stepped through by NEXT/PREV and filtered by FILTER_CATEGORY. Sorted ascending by position." @synonyms "stage roster, sequence, timeline, cycle, phase, event roster, ordered stages" @tier "domain"
|
|
22230
22272
|
startPrompt : string = "Press Next to begin." @label "Start Prompt" @description "Narration shown before the learner has advanced past the first stage." @tier "presentation"
|
|
22231
|
-
|
|
22232
|
-
|
|
22273
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22274
|
+
title : string = "Stepper" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
22275
|
+
unreachedColor : string = "muted" @label "Unreached Marker Color" @description "Color of stage markers the learner has not yet stepped to." @tier "presentation"
|
|
22233
22276
|
width : number = 640 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
22234
22277
|
}
|
|
22235
22278
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -22243,12 +22286,12 @@ trait std-learn-tour-3d.traits.Learn3DTourSim {
|
|
|
22243
22286
|
category : interaction
|
|
22244
22287
|
states : (idle*)
|
|
22245
22288
|
events : (INIT MODE_SELECTED TOUR SELECT_STATION RESET SYNC_STATIONS TOUR_3D_UPDATED LEARN_ROUND_COMPLETE)
|
|
22246
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on TOUR) (idle -> idle on SELECT_STATION) (idle -> idle on RESET) (idle -> idle on SYNC_STATIONS))
|
|
22289
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOUR) (idle -> idle on SELECT_STATION) (idle -> idle on RESET) (idle -> idle on SYNC_STATIONS))
|
|
22247
22290
|
emits : (TOUR_3D_UPDATED LEARN_ROUND_COMPLETE)
|
|
22248
22291
|
config {
|
|
22249
22292
|
azimuth : number = 0.6 @label "Azimuth" @description "Camera orbit azimuth in radians; the learner can orbit freely on top of this." @tier "presentation"
|
|
22250
22293
|
backdrop : [Learn3DStation] = [] @label "Backdrop Nodes" @description "Non-station scene geometry rendered under the tour stations (painted first, stations on top) — painted but never tour stops and never highlight-selected; SYNC_STATIONS swaps it together with the roster, so a composed preset coordinator can re-skin the whole scene per preset." @synonyms "backdrop, scenery, geometry, context nodes, 3d" @tier "domain"
|
|
22251
|
-
backgroundColor : string = "
|
|
22294
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground. Empty uses the theme drawing ground." @tier "presentation"
|
|
22252
22295
|
edges : [Learn3DEdge] = [] @label "Edges" @description "Optional connector lines drawn between stations, by id." @synonyms "edge, link, connector, tether" @tier "domain"
|
|
22253
22296
|
fov : number = 50 @label "Field of View" @description "Perspective camera field of view in degrees." @tier "presentation"
|
|
22254
22297
|
height : number = 400 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
@@ -22256,9 +22299,10 @@ trait std-learn-tour-3d.traits.Learn3DTourSim {
|
|
|
22256
22299
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22257
22300
|
post : Post3D = {} @label "Post Processing" @description "3D post-processing stack (bloom/vignette) as data; empty object disables it." @tier "presentation"
|
|
22258
22301
|
resetLabel : string = "Reset" @label "Reset Button Label" @description "Label text for the button that returns the tour to the first station." @tier "presentation"
|
|
22259
|
-
stations : [Learn3DStation] = [{"caption":"The first stop on the tour — the camera retargets here and the narration reads its caption.","color":"
|
|
22302
|
+
stations : [Learn3DStation] = [{"caption":"The first stop on the tour — the camera retargets here and the narration reads its caption.","color":"series-1","id":"alpha","name":"Station Alpha","opacity":1,"radius":1,"shape":"sphere","x":0,"y":0,"z":0},{"caption":"The second stop — press Tour again or click a shape to advance the selection.","color":"series-2","id":"beta","name":"Station Beta","opacity":1,"radius":0.8,"shape":"sphere","x":3,"y":1,"z":-1},{"caption":"The final stop — once every station has been visited the tour marks itself complete.","color":"series-3","id":"gamma","name":"Station Gamma","opacity":1,"radius":0.8,"shape":"sphere","x":-3,"y":-1,"z":1}] @label "Stations" @description "The station roster in didactic tour order — each with scene position, mesh shape, and a caption. Tour and clicks enlarge the selected station, retarget the camera onto its x/y/z, and narrate its caption." @synonyms "station, stop, waypoint, tour, landmark, 3d" @tier "domain"
|
|
22303
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22260
22304
|
title : string = "3D Guided Tour" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
22261
|
-
tourLabel : string = "
|
|
22305
|
+
tourLabel : string = "Next station" @label "Tour Button Label" @description "Label text for the button that advances the tour to the next station." @tier "presentation"
|
|
22262
22306
|
width : number = 600 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
22263
22307
|
zoom : number = 1 @label "Zoom" @description "Camera zoom factor for the 3D scene." @tier "presentation"
|
|
22264
22308
|
}
|
|
@@ -22272,19 +22316,20 @@ trait std-learn-trace-player.traits.TracePlayerSim {
|
|
|
22272
22316
|
linkedEntity : TracePlayerScene
|
|
22273
22317
|
category : interaction
|
|
22274
22318
|
states : (idle*)
|
|
22275
|
-
events : (INIT MODE_SELECTED PLAY PAUSE RESTART FRAME_ADVANCED TRACE_DONE)
|
|
22276
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on PLAY) (idle -> idle on PAUSE) (idle -> idle on RESTART))
|
|
22319
|
+
events : (INIT MODE_SELECTED TOGGLE_RUN SPEED_SET PLAY PAUSE RESTART FRAME_ADVANCED TRACE_DONE)
|
|
22320
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on TOGGLE_RUN) (idle -> idle on SPEED_SET) (idle -> idle on PLAY) (idle -> idle on PAUSE) (idle -> idle on RESTART))
|
|
22277
22321
|
emits : (FRAME_ADVANCED TRACE_DONE)
|
|
22278
22322
|
config {
|
|
22279
|
-
backgroundColor : string = "
|
|
22280
|
-
baseColor : string = "
|
|
22323
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground override; empty uses the theme's drawing ground." @tier "presentation"
|
|
22324
|
+
baseColor : string = "series-1" @label "Base Bar Color" @description "Color of bars not highlighted in the current frame." @tier "presentation"
|
|
22281
22325
|
frames : [TraceFrame] = [{"caption":"Unsorted array.","highlights":[],"label":"Start","values":[5,3,8,1,9,2]},{"caption":"Compare the first two elements; 5 > 3 so swap them.","highlights":[0,1],"label":"Compare 5, 3","values":[3,5,8,1,9,2]},{"caption":"Compare the next pair; already in order.","highlights":[1,2],"label":"Compare 5, 8","values":[3,5,8,1,9,2]},{"caption":"8 > 1 so swap them.","highlights":[2,3],"label":"Compare 8, 1","values":[3,5,1,8,9,2]},{"caption":"Already in order.","highlights":[3,4],"label":"Compare 8, 9","values":[3,5,1,8,9,2]},{"caption":"9 > 2 so swap them; one pass complete.","highlights":[4,5],"label":"Compare 9, 2","values":[3,5,1,8,2,9]}] @label "Frames" @description "Ordered roster of frames (label, caption, values, highlights) stepped through by Play/Pause/Restart. Each frame's values render as bars; highlighted indices pick out which bars changed." @synonyms "trace, animation frames, snapshot roster, playback sequence, keyframes" @tier "domain"
|
|
22282
22326
|
height : number = 400 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
22283
|
-
highlightColor : string = "
|
|
22327
|
+
highlightColor : string = "highlight" @label "Highlight Bar Color" @description "Color of bars whose index appears in the current frame's highlights." @tier "presentation"
|
|
22284
22328
|
loop : boolean = false @label "Loop" @description "When true, autoplay wraps from the last frame back to the first instead of stopping and emitting TRACE_DONE." @tier "domain"
|
|
22285
22329
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22330
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22286
22331
|
tickMs : number = 500 @label "Tick Milliseconds" @description "Milliseconds per frame shown in the readout; the autoplay cadence." @tier "presentation"
|
|
22287
|
-
title : string = "Trace Player" @label "Title" @description "
|
|
22332
|
+
title : string = "Trace Player" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
22288
22333
|
width : number = 600 @label "Width" @description "Canvas width in pixels." @tier "presentation"
|
|
22289
22334
|
}
|
|
22290
22335
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -22297,14 +22342,16 @@ trait std-learn-transport.traits.LearnTransportSim {
|
|
|
22297
22342
|
linkedEntity : LearnTransportScene
|
|
22298
22343
|
category : interaction
|
|
22299
22344
|
states : (idle*)
|
|
22300
|
-
events : (INIT MODE_SELECTED STEP TOGGLE_RUN RESET LEARN_STEP LEARN_RESET LEARN_UPDATED)
|
|
22301
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on STEP) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
22345
|
+
events : (INIT MODE_SELECTED STEP TOGGLE_RUN RESET SPEED_SET LEARN_STEP LEARN_RESET LEARN_UPDATED)
|
|
22346
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on STEP) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET) (idle -> idle on SPEED_SET))
|
|
22302
22347
|
emits : (LEARN_STEP LEARN_RESET LEARN_UPDATED)
|
|
22303
22348
|
config {
|
|
22304
22349
|
autoRun : boolean = false @label "Auto Run" @description "When true the clock starts stepping on INIT; the Reset arm restores this value." @tier "domain"
|
|
22305
22350
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22306
22351
|
stepIntervalMs : number = 500 @label "Step Interval (ms)" @description "Milliseconds of running clock per domain step — the 32ms base tick accumulates elapsed time and fires LEARN_STEP each time this interval elapses. 300-900 suits narrated steppers; 32 fires every frame for continuous sims." @tier "domain"
|
|
22307
|
-
|
|
22352
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22353
|
+
title : string = "Learning Instrument" @label "Title" @description "The instrument's name, the header's one hero." @tier "presentation"
|
|
22354
|
+
totalSteps : int = 0 @label "Total Steps" @description "When the walk has a known length, the step counter reads 'Step N of M'. 0 means open-ended." @tier "presentation"
|
|
22308
22355
|
}
|
|
22309
22356
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
22310
22357
|
source : "@almadar/std (behaviors/registry/ui/learning/atoms/std-learn-transport.orb orbitals[0].traits[0])"
|
|
@@ -22317,15 +22364,16 @@ trait std-learn-tree.traits.LearnTreeSim {
|
|
|
22317
22364
|
category : interaction
|
|
22318
22365
|
states : (idle*)
|
|
22319
22366
|
events : (INIT MODE_SELECTED INSERT_VALUE DELETE_VALUE RUN_TRAVERSAL TOGGLE_RUN RESET TREE_UPDATED)
|
|
22320
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on INSERT_VALUE) (idle -> idle on DELETE_VALUE) (idle -> idle on RUN_TRAVERSAL) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
22367
|
+
transitions : ((idle -> idle on INIT) (idle -> idle on MODE_SELECTED) (idle -> idle on MODE_SELECTED) (idle -> idle on INSERT_VALUE) (idle -> idle on DELETE_VALUE) (idle -> idle on RUN_TRAVERSAL) (idle -> idle on TOGGLE_RUN) (idle -> idle on RESET))
|
|
22321
22368
|
emits : (TREE_UPDATED)
|
|
22322
22369
|
config {
|
|
22323
22370
|
autoRun : boolean = false @label "Auto Run" @description "When true, the tick auto-steps the traversal sweep started by Traverse; toggle live with the Run/Pause button. Has no effect on Insert/Delete, which stay manual." @synonyms "auto run, auto step, auto play" @tier "domain"
|
|
22324
|
-
backgroundColor : string = "
|
|
22371
|
+
backgroundColor : string = "" @label "Background Color" @description "Canvas ground. Empty uses the theme drawing ground." @tier "presentation"
|
|
22325
22372
|
balanced : boolean = false @label "Balance Readout" @description "When true, each insert's narration reports the tree's current height against its node count so the learner can judge balance; no auto-rotation is performed." @synonyms "balance, height, balance readout" @tier "domain"
|
|
22326
22373
|
height : number = 400 @label "Height" @description "Canvas height in pixels." @tier "presentation"
|
|
22327
22374
|
matchMode : string = "" @label "Match Mode" @description "When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT." @tier "presentation"
|
|
22328
22375
|
showComparisons : boolean = true @label "Show Comparisons" @description "Include each left/right comparison in the narration while a value descends; turn off for a terse attach-only narration." @synonyms "comparisons, narration detail" @tier "presentation"
|
|
22376
|
+
summary : string = "" @label "Concept" @description "One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line." @tier "presentation"
|
|
22329
22377
|
title : string = "Ordered Tree" @label "Title" @description "Title shown above the canvas." @tier "presentation"
|
|
22330
22378
|
traversalKind : string = "inorder" @label "Traversal Kind" @description "Which sweep Traverse replays — inorder (sorted order, left to right), preorder (root before children), or levelorder (breadth first, top to bottom)." @synonyms "traversal, in-order, pre-order, level-order, sweep" @tier "domain"
|
|
22331
22379
|
values : [number] = [50,30,70,20,40,60,80] @label "Values" @description "The values Insert feeds into the tree, one per descent, in order." @synonyms "keys, values to insert, dataset, sequence" @tier "domain"
|
|
@@ -22357,45 +22405,6 @@ trait std-lifecycle.traits.LifecycleScheduler {
|
|
|
22357
22405
|
source : "@almadar/std (behaviors/registry/infra/atoms/std-lifecycle.orb orbitals[0].traits[0])"
|
|
22358
22406
|
}
|
|
22359
22407
|
|
|
22360
|
-
;; From @almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].traits[0])
|
|
22361
|
-
trait std-list.traits.ListItemBrowse {
|
|
22362
|
-
alias : List
|
|
22363
|
-
linkedEntity : ListItem
|
|
22364
|
-
category : interaction
|
|
22365
|
-
states : (loading* browsing error)
|
|
22366
|
-
events : (INIT ListItemLoaded ListItemLoadFailed REFETCH_QUERY REFETCH_FILTER REFETCH_PAGE RETRY CREATE EDIT DELETE)
|
|
22367
|
-
transitions : ((loading -> loading on INIT) (loading -> browsing on ListItemLoaded) (loading -> error on ListItemLoadFailed) (browsing -> loading on INIT) (browsing -> browsing on REFETCH_QUERY) (browsing -> browsing on REFETCH_FILTER) (browsing -> browsing on REFETCH_PAGE) (browsing -> browsing on ListItemLoadFailed) (browsing -> browsing on ListItemLoaded) (error -> loading on INIT) (error -> loading on RETRY))
|
|
22368
|
-
emits : (CREATE EDIT DELETE ListItemLoaded ListItemLoadFailed)
|
|
22369
|
-
config {
|
|
22370
|
-
bodySearch : boolean = false @label "Show the list's own search box?" @description "Embeds a search box above the grid. Set true only when the page has no other search affordance (e.g. no page-level std-search), so the surface shows one search box instead of two. False is the default — this atom has never had a search box (0 consumers today)." @synonyms "inline search, list search, built-in search, show search" @tier "presentation"
|
|
22371
|
-
createRoles : [string] = [] @label "Roles that can create" @description "Roles (matched against viewerRole) that see the Create button. Empty = everyone." @tier "policy"
|
|
22372
|
-
displayPageSize : number = 20 @label "How many rows to show at once?" @description "Rows visible per page before the data-grid's own pagination control appears — 20 matches the CRUD-list density sweet spot (Miller's law, 10-25 rows)." @synonyms "visible rows, items per page, display limit, show per page" @tier "presentation"
|
|
22373
|
-
filterBarLook : string = "toolbar" @label "Filter bar look" @description "Visual treatment for the embedded filter bar, mirroring std-filter's own enum. Only applies when `filters` is non-empty." @synonyms "filter bar style, facet style, chips, pills" @tier "presentation" @values (toolbar chips pills popover-trigger inline-column-header)
|
|
22374
|
-
filters : [FilterSpec] = [] @label "Which filters should appear above the grid?" @description "Dropdown filter facets by field, rendered as an embedded filter bar above the rows; each selection fires REFETCH_FILTER on this trait. Empty (the default) = no filter bar, the right setting whenever the page already composes std-filter beside this list and routes XFilter.FILTER -> REFETCH_FILTER — that is the wired owner and remains the primary path. Use this knob only for a standalone list with no page-level filter affordance." @synonyms "filter bar, faceted filters, field filters, dropdowns" @tier "presentation"
|
|
22375
|
-
itemActions : [ItemAction] = [{"event":"EDIT","label":"Edit","variant":"ghost"},{"event":"DELETE","label":"Delete","variant":"danger"}] @label "Row actions" @description "Actions offered on each row; give an item `roles` to show it only to those viewer roles." @tier "presentation"
|
|
22376
|
-
itemClickEvent : event = "EDIT" @label "Which event does clicking a row fire?" @description "Row-click channel; empty = rows are not clickable." @synonyms "row click event, item click, open event" @tier "presentation"
|
|
22377
|
-
pageSize : number = 20 @label "How many rows per page when paging?" @description "Records fetched from the server per REFETCH_PAGE request. The initial load and search/filter refetches remain unpaginated (load everything that matches) unless a consumer wires REFETCH_PAGE, so the default list surface is unchanged." @synonyms "fetch limit, records per page, page limit" @tier "presentation"
|
|
22378
|
-
searchField : string = "name" @label "Which column does the search box match against?" @description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, label) or the search box can never match a row." @synonyms "search column, search on field, match field, search key" @tier "policy"
|
|
22379
|
-
searchPlaceholder : string = "Search…" @label "Search box placeholder text" @description "Hint text inside the list search box." @synonyms "search hint, placeholder, search box text" @tier "presentation"
|
|
22380
|
-
viewerRole : string = "" @label "Viewer's role" @description "The signed-in viewer's role that each action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show." @tier "policy"
|
|
22381
|
-
}
|
|
22382
|
-
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
22383
|
-
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].traits[0])"
|
|
22384
|
-
}
|
|
22385
|
-
|
|
22386
|
-
;; From @almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].traits[1])
|
|
22387
|
-
trait std-list.traits.ListItemPersistor {
|
|
22388
|
-
alias : List
|
|
22389
|
-
linkedEntity : ListItem
|
|
22390
|
-
category : lifecycle
|
|
22391
|
-
states : (idle*)
|
|
22392
|
-
events : (INIT DO_CREATE DO_UPDATE DO_DELETE ITEM_CREATED ITEM_UPDATED ITEM_DELETED)
|
|
22393
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on DO_CREATE) (idle -> idle on DO_UPDATE) (idle -> idle on DO_DELETE))
|
|
22394
|
-
emits : (ITEM_CREATED ITEM_UPDATED ITEM_DELETED)
|
|
22395
|
-
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
22396
|
-
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].traits[1])"
|
|
22397
|
-
}
|
|
22398
|
-
|
|
22399
22408
|
;; From @almadar/std (behaviors/registry/ui/game/atoms/std-lives.orb orbitals[0].traits[0])
|
|
22400
22409
|
trait std-lives.traits.Lives {
|
|
22401
22410
|
alias : Lives
|
|
@@ -23662,10 +23671,12 @@ trait std-site-header.traits.SiteHeaderRender {
|
|
|
23662
23671
|
brandName : string = "Almadar" @label "Brand name" @synonyms "site name, company, logo text" @tier "presentation"
|
|
23663
23672
|
currentLanguage : string = "en" @label "Current language" @description "The code of the language this page is in" @synonyms "locale, active language, page language" @tier "presentation"
|
|
23664
23673
|
currentPath : string = "/" @label "Current page path" @description "Marks the matching link as active" @tier "presentation"
|
|
23665
|
-
headerContent : render-ui = {"children":[{"actions":["@trait.SiteHeaderLanguages",{"action":"NAV_LINK","actionPayload":{"href":"@config.actionHref","label":"@config.actionLabel"},"className":["if",["==","@config.actionLabel",""],"hidden",""],"href":"@config.actionHref","label":"@config.actionLabel","size":"sm","type":"button","variant":"primary"}],"brandName":"@config.brandName","className":"hidden lg:flex","logoSrc":"@config.logoSrc","navigationItems":["array/map","@config.links",["fn","entry",{"active":["==",["object/get","@entry","href",""],"@config.currentPath"],"children":["array/map",["object/get","@entry","children",[]],["fn","child",{"active":["==",["object/get","@child","href",""],"@config.currentPath"],"href":["object/get","@child","href",""],"label":["object/get","@child","label",""]}]],"href":["object/get","@entry","href",""],"label":["object/get","@entry","label",""]}]],"showMenuToggle":false,"sticky":false,"type":"header","variant":"desktop"},{"actions":["@trait.SiteHeaderLanguages"],"brandName":"@config.brandName","className":"lg:hidden","isMenuOpen":"@entity.menuOpen","logoSrc":"@config.logoSrc","onMenuToggle":"MENU_TOGGLE","showMenuToggle":true,"sticky":false,"type":"header","variant":"mobile"},{"align":"stretch","children":[{"align":"stretch","children":["array/map","@config.links",["fn",["entry"],{"align":"stretch","children":[{"action":"NAV_LINK","actionPayload":{"href":["object/get","@entry","href",""],"label":["object/get","@entry","label",""]},"className":"justify-start","href":["object/get","@entry","href",""],"label":["object/get","@entry","label",""],"type":"button","variant":["if",["==",["object/get","@entry","href",""],"@config.currentPath"],"secondary","ghost"]},{"align":"stretch","children":["array/map",["object/get","@entry","children",[]],["fn",["child"],{"action":"NAV_LINK","actionPayload":{"href":["object/get","@child","href",""],"label":["object/get","@child","label",""]},"className":"justify-start","href":["object/get","@child","href",""],"label":["object/get","@child","label",""],"type":"button","variant":["if",["==",["object/get","@child","href",""],"@config.currentPath"],"secondary","ghost"]}]],"className":"ps-6","direction":"vertical","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}]],"direction":"vertical","gap":"xs","type":"stack"},{"action":"NAV_LINK","actionPayload":{"href":"@config.actionHref","label":"@config.actionLabel"},"className":["if",["==","@config.actionLabel",""],"hidden","mt-2 w-full"],"href":"@config.actionHref","label":"@config.actionLabel","size":"md","type":"button","variant":"primary"}],"className":["if","@entity.menuOpen","lg:hidden border-b border-border bg-card px-4 py-3","hidden"],"direction":"vertical","gap":"xs","type":"stack"}],"className":"sticky top-0 z-50","direction":"vertical","gap":"none","type":"stack"} @label "Header body" @tier "internal"
|
|
23674
|
+
headerContent : render-ui = {"children":[{"actions":["@trait.SiteHeaderLanguages",{"className":["if","@config.showThemeToggle","","hidden"],"size":"sm","type":"theme-toggle"},{"action":"NAV_LINK","actionPayload":{"href":"@config.actionHref","label":"@config.actionLabel"},"className":["if",["==","@config.actionLabel",""],"hidden",""],"href":"@config.actionHref","label":"@config.actionLabel","size":"sm","type":"button","variant":"primary"}],"brandHref":"@config.homeHref","brandName":"@config.brandName","className":"hidden lg:flex","logoSrc":"@config.logoSrc","navigationItems":["array/map","@config.links",["fn","entry",{"active":["==",["object/get","@entry","href",""],"@config.currentPath"],"children":["array/map",["object/get","@entry","children",[]],["fn","child",{"active":["==",["object/get","@child","href",""],"@config.currentPath"],"href":["object/get","@child","href",""],"label":["object/get","@child","label",""]}]],"href":["object/get","@entry","href",""],"label":["object/get","@entry","label",""]}]],"showMenuToggle":false,"sticky":false,"type":"header","variant":"desktop"},{"actions":["@trait.SiteHeaderLanguages",{"className":["if","@config.showThemeToggle","","hidden"],"size":"sm","type":"theme-toggle"}],"brandHref":"@config.homeHref","brandName":"@config.brandName","className":"lg:hidden","isMenuOpen":"@entity.menuOpen","logoSrc":"@config.logoSrc","onMenuToggle":"MENU_TOGGLE","showMenuToggle":true,"sticky":false,"type":"header","variant":"mobile"},{"align":"stretch","children":[{"align":"stretch","children":["array/map","@config.links",["fn",["entry"],{"align":"stretch","children":[{"action":"NAV_LINK","actionPayload":{"href":["object/get","@entry","href",""],"label":["object/get","@entry","label",""]},"className":"justify-start","href":["object/get","@entry","href",""],"label":["object/get","@entry","label",""],"type":"button","variant":["if",["==",["object/get","@entry","href",""],"@config.currentPath"],"secondary","ghost"]},{"align":"stretch","children":["array/map",["object/get","@entry","children",[]],["fn",["child"],{"action":"NAV_LINK","actionPayload":{"href":["object/get","@child","href",""],"label":["object/get","@child","label",""]},"className":"justify-start","href":["object/get","@child","href",""],"label":["object/get","@child","label",""],"type":"button","variant":["if",["==",["object/get","@child","href",""],"@config.currentPath"],"secondary","ghost"]}]],"className":"ps-6","direction":"vertical","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}]],"direction":"vertical","gap":"xs","type":"stack"},{"action":"NAV_LINK","actionPayload":{"href":"@config.actionHref","label":"@config.actionLabel"},"className":["if",["==","@config.actionLabel",""],"hidden","mt-2 w-full"],"href":"@config.actionHref","label":"@config.actionLabel","size":"md","type":"button","variant":"primary"}],"className":["if","@entity.menuOpen","lg:hidden border-b border-border bg-card px-4 py-3","hidden"],"direction":"vertical","gap":"xs","type":"stack"}],"className":"sticky top-0 z-50","direction":"vertical","gap":"none","type":"stack"} @label "Header body" @tier "internal"
|
|
23675
|
+
homeHref : string = "" @label "Home link" @description "Where the brand (logo + name) links to, usually the site's home page; empty leaves the brand unlinked" @synonyms "logo link, home page, brand link" @tier "presentation"
|
|
23666
23676
|
languages : [SiteLanguage] = [] @label "Languages" @description "Every language this page exists in, each named in its own language, with the href of THIS page in that language (default language at the root, others under /<code>/). Empty hides the language picker." @synonyms "locales, translations, language switcher, i18n" @tier "presentation"
|
|
23667
23677
|
links : [SiteNavLink] = [{"href":"/features","label":"Features"},{"href":"/pricing","label":"Pricing"},{"href":"/about","label":"About"}] @label "Navigation links" @synonyms "menu, nav items, top navigation" @tier "presentation"
|
|
23668
23678
|
logoSrc : string = "" @label "Logo image" @description "Logo URL; empty shows the name only" @tier "presentation"
|
|
23679
|
+
showThemeToggle : boolean = false @label "Light/dark toggle" @description "Show a button that switches the site between its light and dark mode" @synonyms "dark mode, theme switch, color mode" @tier "presentation"
|
|
23669
23680
|
}
|
|
23670
23681
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
23671
23682
|
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-site-header.orb orbitals[0].traits[0])"
|
|
@@ -23725,7 +23736,7 @@ trait std-stats.traits.StatsItemStats {
|
|
|
23725
23736
|
heroMetricBodyContent : render-ui = {"children":[["if",["!=","@config.title",""],{"content":"@config.title","type":"typography","variant":"h3"},{"children":[],"gap":"none","type":"stack"}],{"entity":"@entity.cards","fields":[],"gap":"none","renderItem":["fn","card",{"children":[{"children":[{"align":"center","children":[{"align":"center","children":[{"color":"muted","name":"@card.icon","size":"md","type":"icon"},{"className":"uppercase tracking-widest","color":"muted","content":"@card.label","type":"typography","variant":"overline","weight":"bold"}],"direction":"horizontal","gap":"sm","justify":"center","type":"stack"},{"align":"baseline","children":[{"color":"muted","content":"@card.prefix","type":"typography","variant":"h2","weight":"normal"},{"className":"text-7xl md:text-8xl font-bold tracking-tighter tabular-nums text-[var(--color-foreground)]","format":"@card.format","type":"animated-counter","value":"@card.value"},{"color":"muted","content":"@card.suffix","type":"typography","variant":"h2","weight":"normal"}],"className":"py-section","direction":"horizontal","gap":"xs","justify":"center","type":"stack"},{"showValue":true,"size":"md","type":"trend-indicator","value":"@card.trend"}],"className":"relative z-10 w-full max-w-2xl mx-auto text-center","direction":"vertical","gap":"md","type":"stack"},{"className":"absolute inset-x-0 bottom-0 w-full opacity-10 pointer-events-none","color":"auto","data":"@card.sparklineData","fill":true,"height":96,"strokeWidth":1,"type":"sparkline"}],"look":"elevated","padding":"lg","type":"card"}],"className":"relative w-full rounded-xl shadow-lg overflow-hidden","direction":"vertical","gap":"none","type":"stack"}],"type":"data-list"}],"data-theme":"@config.theme","type":"box"} @label "Hero metric body content tree" @description "Render-ui SExpr for statsLook='hero-metric' — one elevated card, one oversize number, background sparkline." @tier "internal"
|
|
23726
23737
|
kpiTilesBodyContent : render-ui = {"children":[["if",["!=","@config.title",""],{"content":"@config.title","type":"typography","variant":"h3"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full","entity":"@entity.cards","fields":[],"gap":"lg","minCardWidth":220,"renderItem":["fn","card",{"children":[{"align":"center","children":[{"className":"uppercase tracking-wide","color":"muted","content":"@card.label","type":"typography","variant":"caption","weight":"medium"},{"color":"muted","name":"@card.icon","size":"sm","type":"icon"}],"direction":"horizontal","gap":"xs","justify":"between","type":"stack"},{"align":"baseline","children":[{"color":"muted","content":"@card.prefix","type":"typography","variant":"caption"},{"className":"text-4xl font-bold tracking-tight","format":"@card.format","type":"animated-counter","value":"@card.value"},{"color":"muted","content":"@card.suffix","type":"typography","variant":"caption"}],"direction":"horizontal","gap":"xs","type":"stack"},{"align":"center","children":[{"showValue":true,"size":"sm","type":"trend-indicator","value":"@card.trend"},{"className":"flex-1","color":"auto","data":"@card.sparklineData","fill":true,"height":24,"type":"sparkline"}],"direction":"horizontal","gap":"sm","type":"stack"}],"className":"rounded-lg border border-[var(--color-border)] bg-[var(--color-surface)] p-card-lg shadow-elevation-sm hover:shadow-elevation-md transition-shadow","direction":"vertical","gap":"sm","type":"stack"}],"type":"data-grid"}],"data-theme":"@config.theme","type":"box"} @label "KPI tiles body content tree" @description "Render-ui SExpr for statsLook='kpi-tiles' — Stripe-dashboard style tile grid: huge typography number, label, trend indicator, sparkline hint." @tier "internal"
|
|
23727
23738
|
metrics : [MetricSpec] = [{"aggregation":"count","format":"number","icon":"list","label":"Total Items","sparklineData":[2,4,3,6,5,8,7],"variant":"primary"},{"aggregation":"count","format":"number","icon":"check-circle","label":"Active","sparklineData":[1,3,2,4,6,5,7],"variant":"success"},{"aggregation":"avg","field":"value","format":"number","icon":"trending-up","label":"Avg Value","sparklineData":[5,4,6,3,5,7,6],"variant":"info"}] @label "Metrics" @description "One stat card per entry; declares aggregation, format, and styling" @synonyms "list of KPI cards / stat tiles / metric cards. each entry has label / value / format / icon / variant / aggregation. user phrases: 'replace metrics with X, Y, Z' -> rewrite array; 'add Revenue tile' -> append entry; 'change KPIs to X' -> rewrite array" @tier "presentation"
|
|
23728
|
-
sparklineRowBodyContent : render-ui = {"children":[["if",["!=","@config.title",""],{"content":"@config.title","type":"typography","variant":"h3"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full","entity":"@entity.cards","fields":[],"gap":"md","minCardWidth":260,"renderItem":["fn","card",{"children":[{"align":"center","children":[{"color":"muted","name":"@card.icon","size":"xs","type":"icon"},{"className":"uppercase tracking-wide truncate","color":"muted","content":"@card.label","type":"typography","variant":"overline","weight":"semibold"}],"direction":"horizontal","gap":"xs","type":"stack"},{"className":"w-full","color":"auto","data":"@card.sparklineData","fill":true,"height":64,"strokeWidth":2,"type":"sparkline"},{"align":"baseline","children":[{"align":"baseline","children":[{"color":"muted","content":"@card.prefix","type":"typography","variant":"caption"},{"className":"text-2xl font-semibold tabular-nums","format":"@card.format","type":"animated-counter","value":"@card.value"},{"color":"muted","content":"@card.suffix","type":"typography","variant":"caption"}],"direction":"horizontal","gap":"xs","type":"stack"},{"showValue":true,"size":"sm","type":"trend-indicator","value":"@card.trend"}],"direction":"horizontal","gap":"sm","justify":"between","type":"stack"}],"className":"
|
|
23739
|
+
sparklineRowBodyContent : render-ui = {"children":[["if",["!=","@config.title",""],{"content":"@config.title","type":"typography","variant":"h3"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full","entity":"@entity.cards","fields":[],"gap":"md","minCardWidth":260,"renderItem":["fn","card",{"children":[{"align":"center","children":[{"color":"muted","name":"@card.icon","size":"xs","type":"icon"},{"className":"uppercase tracking-wide truncate","color":"muted","content":"@card.label","type":"typography","variant":"overline","weight":"semibold"}],"direction":"horizontal","gap":"xs","type":"stack"},{"className":"w-full","color":"auto","data":"@card.sparklineData","fill":true,"height":64,"strokeWidth":2,"type":"sparkline"},{"align":"baseline","children":[{"align":"baseline","children":[{"color":"muted","content":"@card.prefix","type":"typography","variant":"caption"},{"className":"text-2xl font-semibold tabular-nums","format":"@card.format","type":"animated-counter","value":"@card.value"},{"color":"muted","content":"@card.suffix","type":"typography","variant":"caption"}],"direction":"horizontal","gap":"xs","type":"stack"},{"showValue":true,"size":"sm","type":"trend-indicator","value":"@card.trend"}],"direction":"horizontal","gap":"sm","justify":"between","type":"stack"}],"className":"surface-content p-card-md hover:shadow-elevation-dialog transition-shadow min-h-[180px]","direction":"vertical","gap":"sm","type":"stack"}],"type":"data-grid"}],"data-theme":"@config.theme","type":"box"} @label "Sparkline row body content tree" @description "Render-ui SExpr for statsLook='sparkline-row' — chart-first tiles where the mini trend line is the visual centerpiece, label above, value+delta footer." @tier "internal"
|
|
23729
23740
|
statLook : string = "elevated" @label "Stat display look" @description "Layer 2 visual treatment for stat / KPI cards." @tier "presentation" @values (elevated flat progress-backed gauge sparkline)
|
|
23730
23741
|
statsLook : string = "cards" @label "Stats look" @description "Layer 3 body layout: default per-metric stat-card grid ('cards'), Stripe-dashboard KPI tile row ('kpi-tiles'), single oversize hero number ('hero-metric'), or chart-first sparkline tile grid ('sparkline-row')." @tier "presentation" @values (cards kpi-tiles hero-metric sparkline-row)
|
|
23731
23742
|
theme : string = "" @label "Theme" @description "Data-theme skin applied to the stat body root — for chrome-less pages composed without an AppShell." @tier "presentation"
|
|
@@ -24248,6 +24259,8 @@ trait ui-algo-graph-canvas.traits.AlgoGraphCanvasRender {
|
|
|
24248
24259
|
height : number = 400 @label "Height" @description "height prop" @tier "presentation"
|
|
24249
24260
|
interactive : boolean = false @label "Interactive" @description "interactive prop" @tier "presentation"
|
|
24250
24261
|
isLoading : boolean @label "Is Loading" @description "isLoading prop" @tier "presentation"
|
|
24262
|
+
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` (optionally `Mod+`/`Shift+`/`Alt+` prefixed) to a SEMANTIC event emitted as `UI:{event}` — e.g. `{ Space: TOGGLE_RUN, ArrowRight: STEP, KeyR: RESET }`; keystrokes inside inputs never route." @tier "presentation"
|
|
24263
|
+
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` to a semantic event emitted as `UI:{event}`." @tier "presentation"
|
|
24251
24264
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
24252
24265
|
layout : string = "manual" @label "Layout" @description "Deterministic layout to compute node positions; `manual` passes through `x`/`y`." @tier "presentation" @values (manual tree layered circle)
|
|
24253
24266
|
nodes : [AlgoGraphCanvasNodesItem] = [] @label "Nodes" @description "nodes prop" @tier "presentation"
|
|
@@ -24255,6 +24268,7 @@ trait ui-algo-graph-canvas.traits.AlgoGraphCanvasRender {
|
|
|
24255
24268
|
onShapeClick : event = "SHAPE_CLICK" @label "On Shape Click" @description "onShapeClick prop" @tier "presentation"
|
|
24256
24269
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
24257
24270
|
root : string @label "Root" @description "`tree` layout only: preferred root id. Falls back to the first indegree-0 node." @tier "presentation"
|
|
24271
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette (`series-1…N`) for this canvas — real-world conventions like CPK atom colors or resistor bands. Unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
24258
24272
|
shapes : [AlgoGraphCanvasShapesItem] = [] @label "Shapes" @description "Extra declarative shapes in canvas pixel coordinates." @tier "presentation"
|
|
24259
24273
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
24260
24274
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
@@ -24301,12 +24315,15 @@ trait ui-algorithm-canvas.traits.AlgorithmCanvasRender {
|
|
|
24301
24315
|
height : number = 400 @label "Height" @description "height prop" @tier "presentation"
|
|
24302
24316
|
interactive : boolean = false @label "Interactive" @description "interactive prop" @tier "presentation"
|
|
24303
24317
|
isLoading : boolean @label "Is Loading" @description "isLoading prop" @tier "presentation"
|
|
24318
|
+
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` (optionally `Mod+`/`Shift+`/`Alt+` prefixed) to a SEMANTIC event emitted as `UI:{event}` — e.g. `{ Space: TOGGLE_RUN, ArrowRight: STEP, KeyR: RESET }`; keystrokes inside inputs never route." @tier "presentation"
|
|
24319
|
+
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` to a semantic event emitted as `UI:{event}`." @tier "presentation"
|
|
24304
24320
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
24305
24321
|
onShapeClick : event = "SHAPE_CLICK" @label "On Shape Click" @description "onShapeClick prop" @tier "presentation"
|
|
24306
24322
|
pointers : [AlgorithmCanvasPointersItem] = [] @label "Pointers" @description "Index cursors (i/j/lo/hi/mid); drawn as markers beneath the referenced bar/slot column." @tier "presentation"
|
|
24307
24323
|
ranges : [AlgorithmCanvasRangesItem] = [] @label "Ranges" @description "Highlighted index ranges over the bars panel (translucent fill bands or labeled brackets)." @tier "presentation"
|
|
24308
24324
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
24309
24325
|
rowLabels : [AlgorithmCanvasRowLabelsItem] = [] @label "Row Labels" @description "Row-header labels drawn to the left of the cells grid." @tier "presentation"
|
|
24326
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette (`series-1…N`) for this canvas — real-world conventions like CPK atom colors or resistor bands. Unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
24310
24327
|
shapes : [AlgorithmCanvasShapesItem] = [] @label "Shapes" @description "Extra declarative shapes in canvas pixel coordinates." @tier "presentation"
|
|
24311
24328
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
24312
24329
|
slotOrientation : string = "horizontal" @label "Slot Orientation" @description "Slot stack direction; horizontal lays slots left-to-right, vertical stacks bottom-up." @tier "presentation" @values (horizontal vertical)
|
|
@@ -24554,7 +24571,7 @@ trait ui-avl-glyph.traits.AvlGlyphRender {
|
|
|
24554
24571
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
24555
24572
|
className : string @label "Class Name" @description "className prop" @tier "presentation"
|
|
24556
24573
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
24557
|
-
effectType : string @label "Effect Type" @description "Effect symbol variant. @default 'set'" @tier "presentation"
|
|
24574
|
+
effectType : string = "set" @label "Effect Type" @description "Effect symbol variant. @default 'set'" @tier "presentation"
|
|
24558
24575
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
24559
24576
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
24560
24577
|
kind : string = "@state" @label "Kind" @description "Which notation symbol to draw." @tier "presentation" @values (application orbital entity trait page state transition event guard effect field fieldType binding bindingRef persistence operator sexpr literal)
|
|
@@ -24721,6 +24738,8 @@ trait ui-biology-canvas.traits.BiologyCanvasRender {
|
|
|
24721
24738
|
helix3d : BiologyCanvasHelix3d @label "Helix3d" @description "A 3D DNA double-helix ladder. 3D only." @tier "presentation"
|
|
24722
24739
|
interactive : boolean @label "Interactive" @description "2D: pointer interaction (click/hover). 3D: orbit camera controls." @tier "presentation"
|
|
24723
24740
|
isLoading : boolean @label "Is Loading" @description "isLoading prop" @tier "presentation"
|
|
24741
|
+
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` (optionally `Mod+`/`Shift+`/`Alt+` prefixed) to a SEMANTIC event emitted as `UI:{event}` — e.g. `{ Space: TOGGLE_RUN, ArrowRight: STEP, KeyR: RESET }`; keystrokes inside inputs never route." @tier "presentation"
|
|
24742
|
+
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` to a semantic event emitted as `UI:{event}`." @tier "presentation"
|
|
24724
24743
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
24725
24744
|
lighting : BiologyCanvasLighting @label "Lighting" @description "3D only: scene light rig as data." @tier "presentation"
|
|
24726
24745
|
mode : string = "2d" @label "Mode" @description "Painter: 2D raster (default) or 3D mesh scene via the lazy three.js host." @tier "presentation" @values (2d 3d)
|
|
@@ -24729,6 +24748,7 @@ trait ui-biology-canvas.traits.BiologyCanvasRender {
|
|
|
24729
24748
|
post : BiologyCanvasPost @label "Post" @description "3D only: post-processing stack (bloom/vignette)." @tier "presentation"
|
|
24730
24749
|
readouts : [BiologyCanvasReadoutsItem] = [] @label "Readouts" @description "Top-right status chip row, forwarded to LearningCanvas verbatim." @tier "presentation"
|
|
24731
24750
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
24751
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette (`series-1…N`) for this canvas — real-world conventions like CPK atom colors or resistor bands. Unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
24732
24752
|
shadows : boolean @label "Shadows" @description "3D only: enable shadows. Omitted → the host default." @tier "presentation"
|
|
24733
24753
|
shapes : [BiologyCanvasShapesItem] = [] @label "Shapes" @description "Extra declarative shapes in canvas pixel coordinates (2D mode only — ignored in 3D)." @tier "presentation"
|
|
24734
24754
|
showGrid : boolean @label "Show Grid" @description "3D only: show the ground grid (default off)." @tier "presentation"
|
|
@@ -25125,11 +25145,13 @@ trait ui-chemistry-canvas.traits.ChemistryCanvasRender {
|
|
|
25125
25145
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
25126
25146
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
25127
25147
|
equation : string @label "Equation" @description "Reaction equation text centered at the top of the canvas. 2D only." @synonyms "reaction equation, formula" @tier "presentation"
|
|
25128
|
-
equationColor : string @label "Equation Color" @description "Equation text color (default
|
|
25148
|
+
equationColor : string @label "Equation Color" @description "Equation text color: a tone name, token or literal (default the `ink` tone)." @tier "presentation"
|
|
25129
25149
|
error : ChemistryCanvasError @label "Error" @description "error prop" @tier "presentation"
|
|
25130
25150
|
height : number = 400 @label "Height" @description "height prop" @tier "presentation"
|
|
25131
25151
|
interactive : boolean @label "Interactive" @description "2D: pointer interaction (click/hover). 3D: orbit camera controls." @tier "presentation"
|
|
25132
25152
|
isLoading : boolean @label "Is Loading" @description "isLoading prop" @tier "presentation"
|
|
25153
|
+
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` (optionally `Mod+`/`Shift+`/`Alt+` prefixed) to a SEMANTIC event emitted as `UI:{event}` — e.g. `{ Space: TOGGLE_RUN, ArrowRight: STEP, KeyR: RESET }`; keystrokes inside inputs never route." @tier "presentation"
|
|
25154
|
+
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` to a semantic event emitted as `UI:{event}`." @tier "presentation"
|
|
25133
25155
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
25134
25156
|
lattice3d : ChemistryCanvasLattice3d @label "Lattice3d" @description "A 3D crystal lattice block (simple cubic, BCC, FCC, rock salt, diamond, ...). 3D only." @tier "presentation"
|
|
25135
25157
|
lighting : ChemistryCanvasLighting @label "Lighting" @description "3D only: scene light rig as data." @tier "presentation"
|
|
@@ -25138,6 +25160,7 @@ trait ui-chemistry-canvas.traits.ChemistryCanvasRender {
|
|
|
25138
25160
|
post : ChemistryCanvasPost @label "Post" @description "3D only: post-processing stack (bloom/vignette)." @tier "presentation"
|
|
25139
25161
|
readouts : [ChemistryCanvasReadoutsItem] = [] @label "Readouts" @description "Top-right status chip row, forwarded to LearningCanvas verbatim." @tier "presentation"
|
|
25140
25162
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
25163
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette (`series-1…N`) for this canvas — real-world conventions like CPK atom colors or resistor bands. Unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
25141
25164
|
shadows : boolean @label "Shadows" @description "3D only: enable shadows. Omitted → the host default." @tier "presentation"
|
|
25142
25165
|
shapes : [ChemistryCanvasShapesItem] = [] @label "Shapes" @description "Extra declarative shapes in canvas pixel coordinates (2D mode only — ignored in 3D)." @tier "presentation"
|
|
25143
25166
|
showGrid : boolean @label "Show Grid" @description "3D only: show the ground grid (default off)." @tier "presentation"
|
|
@@ -26305,7 +26328,7 @@ trait ui-learning-canvas.traits.LearningCanvasRender {
|
|
|
26305
26328
|
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
26306
26329
|
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
26307
26330
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
26308
|
-
backgroundColor : string @label "Background Color" @description "
|
|
26331
|
+
backgroundColor : string @label "Background Color" @description "Canvas ground: a tone name, `var()` token or literal (default the theme's `--surface-diagram`)." @tier "presentation"
|
|
26309
26332
|
className : string @label "Class Name" @description "Additional CSS classes." @tier "presentation"
|
|
26310
26333
|
description : string @label "Description" @description "Text alternative for the canvas, rendered as visually hidden text and linked by aria-describedby." @tier "presentation"
|
|
26311
26334
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
@@ -26317,12 +26340,15 @@ trait ui-learning-canvas.traits.LearningCanvasRender {
|
|
|
26317
26340
|
height : number = 400 @label "Height" @description "Canvas height in CSS pixels." @tier "presentation"
|
|
26318
26341
|
interactive : boolean = false @label "Interactive" @description "Enable pointer interaction (click/hover)." @tier "presentation"
|
|
26319
26342
|
isLoading : boolean @label "Is Loading" @description "Loading state." @tier "presentation"
|
|
26343
|
+
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` — optionally prefixed `Mod+` (⌘/Ctrl), `Shift+`, `Alt+` — to a SEMANTIC event emitted as `UI:{event}` (e.g. `{ Space: TOGGLE_RUN, ArrowRight: STEP, KeyR: RESET }`); keystrokes inside inputs never route." @tier "presentation"
|
|
26344
|
+
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` to a semantic event emitted as `UI:{event}`." @tier "presentation"
|
|
26320
26345
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
26321
26346
|
onShapeClick : event = "SHAPE_CLICK" @label "On Shape Click" @description "Clicked shape payload: { id?, type?, index }." @tier "presentation"
|
|
26322
26347
|
onShapeHover : event = "SHAPE_HOVER" @label "On Shape Hover" @description "Hovered shape payload: { id?, type?, index }." @tier "presentation"
|
|
26323
26348
|
projector : LearningCanvasProjector @label "Projector" @description "World-to-pixel projector for `drawables`. When absent, `drawables` are ignored." @tier "presentation"
|
|
26324
26349
|
readouts : [LearningCanvasReadoutsItem] = [] @label "Readouts" @description "Top-right status chip row (live measurements, scores, counters)." @synonyms "chips, stats, measurements" @tier "presentation"
|
|
26325
26350
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
26351
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette for this canvas: `series-1…N` resolve to these colors instead. For real-world conventions (CPK atom colors, resistor bands); unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
26326
26352
|
shapes : [LearningCanvasShapesItem] = [] @label "Shapes" @description "Declarative shapes to draw." @tier "presentation"
|
|
26327
26353
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
26328
26354
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
@@ -26355,8 +26381,9 @@ trait ui-math-canvas.traits.MathCanvasRender {
|
|
|
26355
26381
|
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
26356
26382
|
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
26357
26383
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
26358
|
-
|
|
26359
|
-
|
|
26384
|
+
aspect : string = "fit" @label "Aspect" @description "How the x and y ranges map to the canvas. `fit` stretches each range to fill the plot (function plots); `equal` uses one scale for both axes so circles stay round (geometry). Default `fit`." @tier "presentation" @values (fit equal)
|
|
26385
|
+
axisColor : string = "axis" @label "Axis Color" @description "Axis line color: a tone name, token or literal (default the `axis` tone)." @tier "presentation"
|
|
26386
|
+
backgroundColor : string @label "Background Color" @description "Canvas ground: a tone name, `var()` token or literal. Default the theme's `--surface-diagram`." @tier "presentation"
|
|
26360
26387
|
bars : [MathCanvasBarsItem] = [] @label "Bars" @description "Riemann/histogram bar strips." @tier "presentation"
|
|
26361
26388
|
className : string @label "Class Name" @description "className prop" @tier "presentation"
|
|
26362
26389
|
curves : [MathCanvasCurvesItem] = [] @label "Curves" @description "curves prop" @tier "presentation"
|
|
@@ -26366,7 +26393,7 @@ trait ui-math-canvas.traits.MathCanvasRender {
|
|
|
26366
26393
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
26367
26394
|
error : MathCanvasError @label "Error" @description "error prop" @tier "presentation"
|
|
26368
26395
|
fontFamily : string @label "Font Family" @description "Canvas text font family. Accepts a known game-font key (e.g. 'future-narrow') or a CSS font-family string." @tier "presentation"
|
|
26369
|
-
gridColor : string = "
|
|
26396
|
+
gridColor : string = "grid" @label "Grid Color" @description "Grid line color: a tone name, token or literal (default the `grid` tone)." @tier "presentation"
|
|
26370
26397
|
gridStep : number = 1 @label "Grid Step" @description "gridStep prop" @tier "presentation"
|
|
26371
26398
|
guides : [MathCanvasGuidesItem] = [] @label "Guides" @description "Fixed reference lines (vline/hline)." @tier "presentation"
|
|
26372
26399
|
height : number = 400 @label "Height" @description "height prop" @tier "presentation"
|
|
@@ -26375,13 +26402,14 @@ trait ui-math-canvas.traits.MathCanvasRender {
|
|
|
26375
26402
|
isLoading : boolean @label "Is Loading" @description "isLoading prop" @tier "presentation"
|
|
26376
26403
|
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` — optionally prefixed `Mod+` (⌘/Ctrl), `Shift+`, `Alt+` in that order — to the board's SEMANTIC event (device-agnostic input), emitted as `UI:{event}` — same contract as the game canvas keyMap; keystrokes inside inputs/textareas never route." @tier "presentation"
|
|
26377
26404
|
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` — optionally prefixed `Mod+` (⌘/Ctrl), `Shift+`, `Alt+` in that order — to the board's SEMANTIC event, emitted as `UI:{event}`; keystrokes inside inputs/textareas never route." @tier "presentation"
|
|
26378
|
-
labelFontSize : number
|
|
26405
|
+
labelFontSize : number @label "Label Font Size" @description "Font size in px for all other canvas annotations (default the theme's diagram label size)." @tier "presentation"
|
|
26379
26406
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
26380
26407
|
onShapeClick : event = "SHAPE_CLICK" @label "On Shape Click" @description "onShapeClick prop" @tier "presentation"
|
|
26381
26408
|
points : [MathCanvasPointsItem] = [] @label "Points" @description "points prop" @tier "presentation"
|
|
26382
26409
|
readouts : [MathCanvasReadoutsItem] = [] @label "Readouts" @description "Top-right status chips, forwarded verbatim to LearningCanvas." @tier "presentation"
|
|
26383
26410
|
regions : [MathCanvasRegionsItem] = [] @label "Regions" @description "Filled areas under curves or between curve pairs." @tier "presentation"
|
|
26384
26411
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
26412
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette (`series-1…N`) for this canvas — real-world conventions like CPK atom colors or resistor bands. Unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
26385
26413
|
shapes : [MathCanvasShapesItem] = [] @label "Shapes" @description "Extra declarative shapes in canvas pixel coordinates." @tier "presentation"
|
|
26386
26414
|
showAxes : boolean = true @label "Show Axes" @description "showAxes prop" @tier "presentation"
|
|
26387
26415
|
showCurveLabels : boolean = false @label "Show Curve Labels" @description "Draw each curve's `label` at its last in-range sample (default false)." @tier "presentation"
|
|
@@ -26389,7 +26417,7 @@ trait ui-math-canvas.traits.MathCanvasRender {
|
|
|
26389
26417
|
showTickLabels : boolean = false @label "Show Tick Labels" @description "Draw numeric labels on grid lines (default false)." @tier "presentation"
|
|
26390
26418
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
26391
26419
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
26392
|
-
tickLabelFontSize : number
|
|
26420
|
+
tickLabelFontSize : number @label "Tick Label Font Size" @description "Font size in px for axis tick labels (default the theme's `xs` step)." @tier "presentation"
|
|
26393
26421
|
title : string @label "Title" @description "title prop" @tier "presentation"
|
|
26394
26422
|
traces : [MathCanvasTracesItem] = [] @label "Traces" @description "Inset sparkline panels, forwarded verbatim to LearningCanvas." @tier "presentation"
|
|
26395
26423
|
vectors : [MathCanvasVectorsItem] = [] @label "Vectors" @description "vectors prop" @tier "presentation"
|
|
@@ -26540,6 +26568,8 @@ trait ui-physics-canvas.traits.PhysicsCanvasRender {
|
|
|
26540
26568
|
height : number = 400 @label "Height" @description "height prop" @tier "presentation"
|
|
26541
26569
|
interactive : boolean @label "Interactive" @description "2D: pointer interaction (click/hover). 3D: orbit camera controls." @tier "presentation"
|
|
26542
26570
|
isLoading : boolean @label "Is Loading" @description "isLoading prop" @tier "presentation"
|
|
26571
|
+
keyMap : Map<string,string> = {"item":"INIT"} @label "Key Map" @description "Maps a keydown `e.code` (optionally `Mod+`/`Shift+`/`Alt+` prefixed) to a SEMANTIC event emitted as `UI:{event}` — e.g. `{ Space: TOGGLE_RUN, ArrowRight: STEP, KeyR: RESET }`; keystrokes inside inputs never route." @tier "presentation"
|
|
26572
|
+
keyUpMap : Map<string,string> = {"item":"INIT"} @label "Key Up Map" @description "Maps a keyup `e.code` to a semantic event emitted as `UI:{event}`." @tier "presentation"
|
|
26543
26573
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
26544
26574
|
lighting : PhysicsCanvasLighting @label "Lighting" @description "3D only: scene light rig as data." @tier "presentation"
|
|
26545
26575
|
meters : [PhysicsCanvasMetersItem] = [] @label "Meters" @description "Bottom-left labeled bar gauges. 2D only." @tier "presentation"
|
|
@@ -26549,6 +26579,7 @@ trait ui-physics-canvas.traits.PhysicsCanvasRender {
|
|
|
26549
26579
|
readouts : [PhysicsCanvasReadoutsItem] = [] @label "Readouts" @description "Top-right status chip row, forwarded to LearningCanvas verbatim." @tier "presentation"
|
|
26550
26580
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
26551
26581
|
sceneObjects : [PhysicsCanvasSceneObjectsItem] = [] @label "Scene Objects" @description "Ground/wall/ramp/box/pivot scene fixtures. 2D only." @tier "presentation"
|
|
26582
|
+
series : [string] = [] @label "Series" @description "Overrides the theme's categorical palette (`series-1…N`) for this canvas — real-world conventions like CPK atom colors or resistor bands. Unset, the theme's `--color-series-*` apply." @tier "presentation"
|
|
26552
26583
|
shadows : boolean @label "Shadows" @description "3D only: enable shadows. Omitted → the host default." @tier "presentation"
|
|
26553
26584
|
shapes : [PhysicsCanvasShapesItem] = [] @label "Shapes" @description "Extra declarative shapes in canvas pixel coordinates (2D mode only — ignored in 3D)." @tier "presentation"
|
|
26554
26585
|
showForces : boolean = false @label "Show Forces" @description "showForces prop" @tier "presentation"
|
|
@@ -26580,7 +26611,7 @@ trait ui-presence.traits.PresenceRender {
|
|
|
26580
26611
|
transitions : ((idle -> idle on INIT))
|
|
26581
26612
|
emits : (@config.onExited)
|
|
26582
26613
|
config {
|
|
26583
|
-
animate : boolean @label "Animate" @description "Per-instance opt-out. Global opt-out is `--motion-enable` / reduced-motion. @default true" @tier "presentation"
|
|
26614
|
+
animate : boolean = true @label "Animate" @description "Per-instance opt-out. Global opt-out is `--motion-enable` / reduced-motion. @default true" @tier "presentation"
|
|
26584
26615
|
animation : string = "modal" @label "Animation" @description "Which motion preset to use (maps to `animate-<name>-in/out`)." @tier "presentation" @values (modal overlay slide-up drawer popover toast fade page)
|
|
26585
26616
|
ariaBusy : boolean @label "Aria-busy" @description "This region is updating; assistive technology waits before announcing it." @synonyms "aria-busy" @tier "presentation"
|
|
26586
26617
|
ariaCurrent : string @label "Aria-current" @description "Marks the current item in a set: the current page, step, location, date or time." @synonyms "aria-current" @tier "presentation" @values (page step location date time true false)
|
|
@@ -26628,7 +26659,7 @@ trait ui-progress-bar.traits.ProgressBarRender {
|
|
|
26628
26659
|
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
26629
26660
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
26630
26661
|
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
26631
|
-
color : string @label "Color" @description "Color variant (alias for variant)" @tier "presentation" @values (default primary success warning error danger)
|
|
26662
|
+
color : string @label "Color" @description "Color variant (alias for variant; `variant` applies when omitted)" @tier "presentation" @values (default primary success warning error danger)
|
|
26632
26663
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
26633
26664
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
26634
26665
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
@@ -28209,6 +28240,15 @@ page std-agent-planner.pages.AgentPlannerPage {
|
|
|
28209
28240
|
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-planner.orb orbitals[0].pages[0])"
|
|
28210
28241
|
}
|
|
28211
28242
|
|
|
28243
|
+
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].pages[0])
|
|
28244
|
+
page std-agent-session.pages.AgentChatsPage {
|
|
28245
|
+
alias : AgentSession
|
|
28246
|
+
defaultPath : /agent-session/chats
|
|
28247
|
+
traits : (AgentChatList AgentChatKeeper)
|
|
28248
|
+
override-surface : (path linkedEntity traits)
|
|
28249
|
+
source : "@almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[1].pages[0])"
|
|
28250
|
+
}
|
|
28251
|
+
|
|
28212
28252
|
;; From @almadar/std (behaviors/registry/agent/atoms/std-agent-session.orb orbitals[0].pages[0])
|
|
28213
28253
|
page std-agent-session.pages.AgentSessionPage {
|
|
28214
28254
|
alias : AgentSession
|
|
@@ -29065,15 +29105,6 @@ page std-lifecycle.pages.LifecycleSchedulerPage {
|
|
|
29065
29105
|
source : "@almadar/std (behaviors/registry/infra/atoms/std-lifecycle.orb orbitals[0].pages[0])"
|
|
29066
29106
|
}
|
|
29067
29107
|
|
|
29068
|
-
;; From @almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].pages[0])
|
|
29069
|
-
page std-list.pages.ListItemPage {
|
|
29070
|
-
alias : List
|
|
29071
|
-
defaultPath : /listitems
|
|
29072
|
-
traits : (ListItemBrowse ListItemCreate ListItemEdit ListItemDelete ListItemPersistor)
|
|
29073
|
-
override-surface : (path linkedEntity traits)
|
|
29074
|
-
source : "@almadar/std (behaviors/registry/ui/core/atoms/std-list.orb orbitals[0].pages[0])"
|
|
29075
|
-
}
|
|
29076
|
-
|
|
29077
29108
|
;; From @almadar/std (behaviors/registry/ui/game/atoms/std-lives.orb orbitals[0].pages[0])
|
|
29078
29109
|
page std-lives.pages.LivesPage {
|
|
29079
29110
|
alias : Lives
|
|
@@ -34433,6 +34464,7 @@ trait ui-accordion.traits.AccordionRender {
|
|
|
34433
34464
|
openItems : [string] = [] @label "Open Items" @description "Controlled open items (IDs)" @tier "presentation"
|
|
34434
34465
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
34435
34466
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
34467
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
34436
34468
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
34437
34469
|
toggleEvent : event = "TOGGLE" @label "Toggle Event" @description "Declarative toggle event — emits UI:{toggleEvent} with { itemId, isOpen }" @tier "presentation"
|
|
34438
34470
|
}
|
|
@@ -34481,16 +34513,18 @@ trait ui-agent-activity-feed.traits.AgentActivityFeedRender {
|
|
|
34481
34513
|
linkedEntity : AgentActivityFeedItem
|
|
34482
34514
|
category : interaction
|
|
34483
34515
|
states : (idle*)
|
|
34484
|
-
events : (INIT)
|
|
34516
|
+
events : (INIT @config.onJump)
|
|
34485
34517
|
transitions : ((idle -> idle on INIT))
|
|
34518
|
+
emits : (@config.onJump)
|
|
34486
34519
|
config {
|
|
34520
|
+
activities : [AgentActivityFeedActivitiesItem] = [] @label "Activities" @description "activities prop" @tier "presentation"
|
|
34487
34521
|
className : string @label "Class Name" @description "className prop" @tier "presentation"
|
|
34488
34522
|
emptyDescription : string @label "Empty Description" @description "emptyDescription prop" @tier "presentation"
|
|
34489
34523
|
emptyTitle : string @label "Empty Title" @description "emptyTitle prop" @tier "presentation"
|
|
34490
34524
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
34491
34525
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
34492
34526
|
followLatest : boolean = true @label "Follow Latest" @description "Scroll the latest row into view as rows arrive. Off for a list of feeds (a run history). @default true" @tier "presentation"
|
|
34493
|
-
onJump :
|
|
34527
|
+
onJump : event = "JUMP" @label "On Jump" @description "onJump prop" @tier "presentation"
|
|
34494
34528
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
34495
34529
|
working : boolean = false @label "Working" @description "The agent is running: show the thinking row after the last activity." @tier "presentation"
|
|
34496
34530
|
}
|
|
@@ -34508,6 +34542,7 @@ trait ui-agent-activity-row.traits.AgentActivityRowRender {
|
|
|
34508
34542
|
transitions : ((idle -> idle on INIT))
|
|
34509
34543
|
emits : (@config.onJump)
|
|
34510
34544
|
config {
|
|
34545
|
+
activity : AgentActivityRowActivity = {} @label "Activity" @description "activity prop" @tier "presentation"
|
|
34511
34546
|
facts : AgentActivityRowFacts = {"readyCount":1,"settled":false} @label "Facts" @description "What the row knows from its list (`activityRowFacts`)." @tier "presentation"
|
|
34512
34547
|
onJump : event = "JUMP" @label "On Jump" @description "'Jump to' affordance — rendered only when supplied and the activity names an orbital." @tier "presentation"
|
|
34513
34548
|
}
|
|
@@ -34524,6 +34559,7 @@ trait ui-agent-chat-feed.traits.AgentChatFeedRender {
|
|
|
34524
34559
|
events : (INIT)
|
|
34525
34560
|
transitions : ((idle -> idle on INIT))
|
|
34526
34561
|
config {
|
|
34562
|
+
activities : [AgentChatFeedActivitiesItem] = [] @label "Activities" @description "Activities already selected by the host's manifest audience." @tier "presentation"
|
|
34527
34563
|
className : string @label "Class Name" @description "className prop" @tier "presentation"
|
|
34528
34564
|
emptyTitle : string = "" @label "Empty Title" @description "emptyTitle prop" @tier "presentation"
|
|
34529
34565
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
@@ -34688,6 +34724,7 @@ trait ui-branching-logic-builder.traits.BranchingLogicBuilderRender {
|
|
|
34688
34724
|
rules : [BranchingLogicBuilderRulesItem] = [{"id":"Id","operator":"equals","sourceQuestionId":"Source Question Id","targetQuestionId":"Target Question Id","value":"Value"},{"id":"Id 2","operator":"not-equals","sourceQuestionId":"Source Question Id 2","targetQuestionId":"Target Question Id 2","value":"Value 2"}] @label "Rules" @description "Rules. Accepts either a typed array (direct consumers) or the runtime payload shape from a render-ui binding (`@payload.data`). Narrowed to `[]` internally when the value isn't an array." @tier "presentation"
|
|
34689
34725
|
rulesChangeEvent : event = "RULES_CHANGE" @label "Rules Change Event" @description "Event name dispatched via event bus when rules change. Payload: `{ rules }`." @tier "presentation"
|
|
34690
34726
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
34727
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
34691
34728
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
34692
34729
|
}
|
|
34693
34730
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
@@ -34770,6 +34807,7 @@ trait ui-calendar-grid.traits.CalendarGridRender {
|
|
|
34770
34807
|
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
34771
34808
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
34772
34809
|
startField : string = "startTime" @label "Start Field" @description "Row field holding the start timestamp (ISO or epoch). Defaults to `startTime`." @tier "presentation"
|
|
34810
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
34773
34811
|
swipeLeftEvent : event = "SWIPE_LEFT" @label "Swipe Left Event" @description "Event emitted on swipe left (next week): UI:{swipeLeftEvent}" @tier "presentation"
|
|
34774
34812
|
swipeRightEvent : event = "SWIPE_RIGHT" @label "Swipe Right Event" @description "Event emitted on swipe right (prev week): UI:{swipeRightEvent}" @tier "presentation"
|
|
34775
34813
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
@@ -34898,6 +34936,7 @@ trait ui-chart.traits.ChartRender {
|
|
|
34898
34936
|
skeleton : string = "card" @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
34899
34937
|
stack : string = "none" @label "Stack" @description "Stack mode for bar / area" @tier "presentation" @values (none stack normalize)
|
|
34900
34938
|
subtitle : string @label "Subtitle" @description "Chart subtitle / description" @tier "presentation"
|
|
34939
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
34901
34940
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
34902
34941
|
timeAxis : boolean = false @label "Time Axis" @description "Format X-axis labels as time (ISO date in → 'Mar 2026'-style label out)" @tier "presentation"
|
|
34903
34942
|
title : string @label "Title" @description "Chart title" @tier "presentation"
|
|
@@ -35244,7 +35283,6 @@ trait ui-content-renderer.traits.ContentRendererRender {
|
|
|
35244
35283
|
pageSize : number @label "Page Size" @description "Number of items per page" @tier "presentation"
|
|
35245
35284
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
35246
35285
|
searchValue : string @label "Search Value" @description "Current search query value" @tier "presentation"
|
|
35247
|
-
segments : [ContentRendererSegmentsItem] = [] @label "Segments" @description "Pre-parsed segments (overrides content)" @tier "presentation"
|
|
35248
35286
|
selectedIds : [string] = [] @label "Selected Ids" @description "Currently selected item IDs" @tier "presentation"
|
|
35249
35287
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
35250
35288
|
sortBy : string @label "Sort By" @description "── Display hints (set by trait via render-ui, never written by organism) ──" @tier "presentation"
|
|
@@ -35316,6 +35354,7 @@ trait ui-data-grid.traits.DataGridRender {
|
|
|
35316
35354
|
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
35317
35355
|
skeleton : string = "grid" @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
35318
35356
|
sortable : boolean @label "Sortable" @description "Enable in-container reorder; items can be dragged to new positions among siblings" @tier "presentation"
|
|
35357
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
35319
35358
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
35320
35359
|
viewerRole : string = "" @label "Viewer's role" @description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show." @tier "policy"
|
|
35321
35360
|
}
|
|
@@ -35386,6 +35425,7 @@ trait ui-data-list.traits.DataListRender {
|
|
|
35386
35425
|
sortable : boolean @label "Sortable" @description "Enable in-container reorder; items can be dragged to new positions among siblings" @tier "presentation"
|
|
35387
35426
|
sortBy : string @label "Sort By" @description "Field name to order rows by. Values are compared by their own type — numbers numerically, date-like strings chronologically, everything else alphabetically — never by what the field is called. Empty cells sort last. Unset leaves the incoming order untouched. Orders only the rows already fetched: a collection larger than its `limit` still needs ordering at the data layer." @tier "presentation"
|
|
35388
35427
|
sortDirection : string @label "Sort Direction" @description "Direction for `sortBy`. Defaults to ascending." @tier "presentation" @values (asc desc)
|
|
35428
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
35389
35429
|
swipeLeftActions : [DataListSwipeLeftActionsItem] = [] @label "Swipe Left Actions" @description "Actions revealed on left swipe" @tier "presentation"
|
|
35390
35430
|
swipeLeftEvent : event = "SWIPE_LEFT" @label "Swipe Left Event" @description "Event emitted on left swipe: UI:{swipeLeftEvent} with { row }" @tier "presentation"
|
|
35391
35431
|
swipeRightActions : [DataListSwipeRightActionsItem] = [] @label "Swipe Right Actions" @description "Actions revealed on right swipe" @tier "presentation"
|
|
@@ -35767,6 +35807,7 @@ trait ui-document-viewer.traits.DocumentViewerRender {
|
|
|
35767
35807
|
showToolbar : boolean = true @label "Show Toolbar" @description "Show toolbar" @tier "presentation"
|
|
35768
35808
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
35769
35809
|
src : asset = "https://almadar-kflow-assets.web.app/shared/ui-roguelike-board/default/units/player.png" @label "Src" @description "Document URL (for PDF/external documents)" @tier "presentation"
|
|
35810
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
35770
35811
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
35771
35812
|
title : string @label "Title" @description "Document title" @tier "presentation"
|
|
35772
35813
|
totalPages : number @label "Total Pages" @description "Total pages" @tier "presentation"
|
|
@@ -35877,7 +35918,7 @@ trait ui-emoji-picker.traits.EmojiPickerRender {
|
|
|
35877
35918
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
35878
35919
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
35879
35920
|
triggerIcon : icon @label "Trigger Icon" @description "Icon shown on the trigger button" @tier "presentation"
|
|
35880
|
-
triggerLabel : string @label "Trigger Label" @description "Accessible label for the trigger button" @tier "presentation"
|
|
35921
|
+
triggerLabel : string @label "Trigger Label" @description "Accessible label for the trigger button (the translated 'Add emoji' when omitted)" @tier "presentation"
|
|
35881
35922
|
}
|
|
35882
35923
|
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
35883
35924
|
source : "@almadar/std (behaviors/registry/ui/core/molecules/ui-emoji-picker.orb orbitals[0].traits[0])"
|
|
@@ -36545,6 +36586,7 @@ trait ui-gantt.traits.GanttRender {
|
|
|
36545
36586
|
startField : string = "start" @label "Start Field" @description "Row field holding the start timestamp (ISO or epoch). Defaults to `start`." @tier "presentation"
|
|
36546
36587
|
statusColorMap : Map<string,GanttStatusColorMapValue> = {"item":"default"} @label "Status Color Map" @description "Bar colour per exact status value; unmapped statuses are primary bars." @tier "presentation"
|
|
36547
36588
|
statusField : string = "status" @label "Status Field" @description "Row field holding the bar status. Defaults to `status`." @tier "presentation"
|
|
36589
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
36548
36590
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
36549
36591
|
titleField : string = "title" @label "Title Field" @description "Row field holding the bar label. Defaults to `title`." @tier "presentation"
|
|
36550
36592
|
}
|
|
@@ -36702,6 +36744,7 @@ trait ui-graph-view.traits.GraphViewRender {
|
|
|
36702
36744
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
36703
36745
|
showLabels : boolean = true @label "Show Labels" @description "Show node labels (default true)" @tier "presentation"
|
|
36704
36746
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
36747
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
36705
36748
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
36706
36749
|
width : number @label "Width" @description "Width in pixels" @tier "presentation"
|
|
36707
36750
|
zoomToFit : boolean = true @label "Zoom To Fit" @description "Auto zoom-to-fit after layout settles (default true)" @tier "presentation"
|
|
@@ -36773,6 +36816,7 @@ trait ui-header.traits.HeaderRender {
|
|
|
36773
36816
|
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
36774
36817
|
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
36775
36818
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
36819
|
+
brandHref : string @label "Brand Href" @description "Where the brand (logo + name) links to, usually the home page; empty leaves it unlinked" @tier "presentation"
|
|
36776
36820
|
brandName : string = "KFlow" @label "Brand Name" @description "Brand/App name" @tier "presentation"
|
|
36777
36821
|
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
36778
36822
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
@@ -36883,6 +36927,7 @@ trait ui-import-preview-tree.traits.ImportPreviewTreeRender {
|
|
|
36883
36927
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
36884
36928
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
36885
36929
|
skipped : [ImportPreviewTreeSkippedItem] = [] @label "Skipped" @description "Elements skipped during extraction, with reasons" @tier "presentation"
|
|
36930
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind each group tile unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
36886
36931
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
36887
36932
|
units : [ImportPreviewTreeUnitsItem] = [] @label "Units" @description "Staged units to preview" @tier "presentation"
|
|
36888
36933
|
}
|
|
@@ -37243,6 +37288,7 @@ trait ui-map-view.traits.MapViewRender {
|
|
|
37243
37288
|
showAttribution : boolean = true @label "Show Attribution" @description "Show attribution (default true)" @tier "presentation"
|
|
37244
37289
|
showClickedPin : boolean = false @label "Show Clicked Pin" @description "Whether to show a pin at the clicked location" @tier "presentation"
|
|
37245
37290
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
37291
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
37246
37292
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
37247
37293
|
zoom : number = 13 @label "Zoom" @description "Zoom level (1-18, default 13)" @tier "presentation"
|
|
37248
37294
|
}
|
|
@@ -37601,6 +37647,7 @@ trait ui-option-constraint-group.traits.OptionConstraintGroupRender {
|
|
|
37601
37647
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
37602
37648
|
changeEvent : event = "CHANGE" @label "Change Event" @description "changeEvent prop" @tier "presentation"
|
|
37603
37649
|
className : string @label "Class Name" @description "className prop" @tier "presentation"
|
|
37650
|
+
constraint : OptionConstraintGroupConstraint @label "Constraint" @description "Selection constraint. Optional — defaults to single-select (the generic factory can't author a discriminated-union value; an author overrides it)." @tier "presentation"
|
|
37604
37651
|
description : string @label "Description" @description "description prop" @tier "presentation"
|
|
37605
37652
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
37606
37653
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
@@ -37697,7 +37744,7 @@ trait ui-page-header.traits.PageHeaderRender {
|
|
|
37697
37744
|
onTabChange : event = "TAB_CHANGE" @label "On Tab Change" @description "onTabChange prop" @tier "presentation"
|
|
37698
37745
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
37699
37746
|
showBack : boolean = false @label "Show Back" @description "Show back button" @tier "presentation"
|
|
37700
|
-
skeleton : string @label "Skeleton" @description "
|
|
37747
|
+
skeleton : string = "header" @label "Skeleton" @description "The shape an empty slot shows while this header's server render is in flight (`none` opts out). @default 'header'" @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
37701
37748
|
status : PageHeaderStatus @label "Status" @description "Status badge — a bare string (an entity's status field bound directly, e.g. `status: @entity.status`) renders as a default-variant badge" @tier "presentation"
|
|
37702
37749
|
subtitle : scalar @label "Subtitle" @description "Optional subtitle/description" @tier "presentation"
|
|
37703
37750
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
@@ -38295,7 +38342,7 @@ trait ui-search-input.traits.SearchInputRender {
|
|
|
38295
38342
|
isLoading : boolean = false @label "Is Loading" @description "Show loading state" @tier "presentation"
|
|
38296
38343
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
38297
38344
|
onSearch : event = "SEARCH" @label "On Search" @description "Callback when search value changes" @tier "presentation"
|
|
38298
|
-
placeholder : string @label "Placeholder" @description "Placeholder text" @tier "presentation"
|
|
38345
|
+
placeholder : string @label "Placeholder" @description "Placeholder text (the translated 'Search' when omitted)" @tier "presentation"
|
|
38299
38346
|
query : string @label "Query" @description "Query singleton binding for state management. When provided, syncs search state with the query singleton. Example: '@TaskQuery'" @tier "presentation"
|
|
38300
38347
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
38301
38348
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
@@ -38755,6 +38802,7 @@ trait ui-stat-display.traits.StatDisplayRender {
|
|
|
38755
38802
|
skeleton : string @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
38756
38803
|
sparklineData : [number] = [] @label "Sparkline Data" @description "Optional inline sparkline data appended to the trend row. Length < 2 renders nothing." @tier "presentation"
|
|
38757
38804
|
suffix : string @label "Suffix" @description "Suffix appended to the formatted value (e.g. ' /mo', ' ms')." @tier "presentation"
|
|
38805
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
38758
38806
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
38759
38807
|
target : number @label "Target" @description "Optional progress target. >0 renders a progress bar at value/target." @tier "presentation"
|
|
38760
38808
|
trend : number @label "Trend" @description "Signed delta vs previous period. >0 renders ↑ green, <0 renders ↓ red, 0 hides. Polarity reversal via `trendPolarity`." @tier "presentation"
|
|
@@ -38864,6 +38912,7 @@ trait ui-table-view.traits.TableViewRender {
|
|
|
38864
38912
|
sortColumn : string @label "Sort Column" @description "Current sort column (display hint for the active header arrow)." @tier "presentation"
|
|
38865
38913
|
sortDirection : string @label "Sort Direction" @description "Current sort direction (display hint)." @tier "presentation" @values (asc desc)
|
|
38866
38914
|
sortEvent : event = "SORT" @label "Sort Event" @description "Event emitted on sortable-header click: UI:{sortEvent} with { column, direction }." @tier "presentation"
|
|
38915
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
38867
38916
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
38868
38917
|
viewerRole : string = "" @label "Viewer's role" @description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show." @tier "policy"
|
|
38869
38918
|
}
|
|
@@ -40427,12 +40476,12 @@ page ui-wizard-progress.pages.WizardProgressPage {
|
|
|
40427
40476
|
source : "@almadar/std (behaviors/registry/ui/core/molecules/ui-wizard-progress.orb orbitals[0].pages[0])"
|
|
40428
40477
|
}
|
|
40429
40478
|
|
|
40430
|
-
;; === organisms (
|
|
40479
|
+
;; === organisms (36 behaviors, 36 apps, 37 orbitals, 37 entities, 37 traits, 37 pages) ===
|
|
40431
40480
|
|
|
40432
40481
|
;; From @almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb)
|
|
40433
40482
|
app std-agent-assistant {
|
|
40434
40483
|
alias : AgentAssistant
|
|
40435
|
-
version : "
|
|
40484
|
+
version : "2.0.0"
|
|
40436
40485
|
orbitals : (AgentAssistantOrbital AgentRecordsOrbital)
|
|
40437
40486
|
override-surface : (config)
|
|
40438
40487
|
;; via uses Alias from "std/behaviors/std-agent-assistant" { config { ... } }
|
|
@@ -40649,36 +40698,6 @@ app ui-drawer-slot {
|
|
|
40649
40698
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-drawer-slot.orb)"
|
|
40650
40699
|
}
|
|
40651
40700
|
|
|
40652
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb)
|
|
40653
|
-
app ui-entity-cards {
|
|
40654
|
-
alias : UiEntityCards
|
|
40655
|
-
version : "1.0.0"
|
|
40656
|
-
orbitals : (EntityCardsOrbital)
|
|
40657
|
-
override-surface : (config)
|
|
40658
|
-
;; via uses Alias from "std/behaviors/ui-entity-cards" { config { ... } }
|
|
40659
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb)"
|
|
40660
|
-
}
|
|
40661
|
-
|
|
40662
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb)
|
|
40663
|
-
app ui-entity-list {
|
|
40664
|
-
alias : UiEntityList
|
|
40665
|
-
version : "1.0.0"
|
|
40666
|
-
orbitals : (EntityListOrbital)
|
|
40667
|
-
override-surface : (config)
|
|
40668
|
-
;; via uses Alias from "std/behaviors/ui-entity-list" { config { ... } }
|
|
40669
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb)"
|
|
40670
|
-
}
|
|
40671
|
-
|
|
40672
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb)
|
|
40673
|
-
app ui-entity-table {
|
|
40674
|
-
alias : UiEntityTable
|
|
40675
|
-
version : "1.0.0"
|
|
40676
|
-
orbitals : (EntityTableOrbital)
|
|
40677
|
-
override-surface : (config)
|
|
40678
|
-
;; via uses Alias from "std/behaviors/ui-entity-table" { config { ... } }
|
|
40679
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb)"
|
|
40680
|
-
}
|
|
40681
|
-
|
|
40682
40701
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-form.orb)
|
|
40683
40702
|
app ui-form {
|
|
40684
40703
|
alias : UiForm
|
|
@@ -40699,16 +40718,6 @@ app ui-form-section {
|
|
|
40699
40718
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-form-section.orb)"
|
|
40700
40719
|
}
|
|
40701
40720
|
|
|
40702
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb)
|
|
40703
|
-
app ui-master-detail {
|
|
40704
|
-
alias : UiMasterDetail
|
|
40705
|
-
version : "1.0.0"
|
|
40706
|
-
orbitals : (MasterDetailOrbital)
|
|
40707
|
-
override-surface : (config)
|
|
40708
|
-
;; via uses Alias from "std/behaviors/ui-master-detail" { config { ... } }
|
|
40709
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb)"
|
|
40710
|
-
}
|
|
40711
|
-
|
|
40712
40721
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb)
|
|
40713
40722
|
app ui-master-detail-layout {
|
|
40714
40723
|
alias : UiMasterDetailLayout
|
|
@@ -40833,15 +40842,18 @@ app ui-toast-slot {
|
|
|
40833
40842
|
orbital std-agent-assistant.orbitals.AgentAssistantOrbital {
|
|
40834
40843
|
alias : AgentAssistant
|
|
40835
40844
|
entity : AgentAssistant
|
|
40836
|
-
traits : (AssistantThread = Session.traits.AgentThread AssistantContext = Context.traits.AgentContextCompactor AssistantMemory = Memory.traits.AgentMemoryRecall AssistantLoop = Loop.traits.AgentToolLoop AssistantTrace = Trace.traits.AgentTraceRecorder)
|
|
40845
|
+
traits : (AssistantThread = Session.traits.AgentThread AssistantChatKeeper = Session.traits.AgentChatKeeper AssistantConversation = Session.traits.AgentConversation AssistantLayout = Shell.traits.AppLayout AssistantContext = Context.traits.AgentContextCompactor AssistantMemory = Memory.traits.AgentMemoryRecall AssistantLoop = Loop.traits.AgentToolLoop AssistantTrace = Trace.traits.AgentTraceRecorder)
|
|
40837
40846
|
pages : ("/assistant")
|
|
40838
40847
|
config {
|
|
40848
|
+
appName : string = "Assistant" @label "App name in the assistant page's header" @description "Pass the app's own name so the assistant page matches the rest of the app." @tier "presentation"
|
|
40839
40849
|
instructions : string = "You operate this app for the signed-in user. Use the tools to act and to look things up; when a tool reports that something was refused or denied, say so plainly." @label "How should the assistant behave?" @description "Standing instructions sent with every request." @synonyms "system prompt, persona, guidance" @tier "domain"
|
|
40840
40850
|
keepMessages : number = 12 @label "Turns kept verbatim" @tier "policy"
|
|
40841
|
-
links : [AgentLink] = [{"href":"/assistant/runs","label":"Run history"}
|
|
40851
|
+
links : [AgentLink] = [{"href":"/assistant/runs","label":"Run history"}] @label "Links above the conversation" @description "Related pages, e.g. the assistant's run history." @tier "presentation"
|
|
40842
40852
|
maxSteps : number = 8 @label "Model round-trips per request" @tier "policy"
|
|
40853
|
+
navItems : [NavItem] = [] @label "Sidebar navigation on the assistant page" @description "Pass the app's own navItems so the assistant page keeps the app's sidebar." @tier "presentation"
|
|
40843
40854
|
recallLimit : number = 3 @label "Memories recalled per request" @tier "policy"
|
|
40844
|
-
tools : [AgentTool] = [] @label "What may the assistant do?" @description "
|
|
40855
|
+
tools : [AgentTool] = [{"scope":"declared"}] @label "What may the assistant do?" @description "As the signed-in user: `{ scope: declared }` (the default) gives it every external input the program declares and a read over every persisted entity, so each building block's declared inputs become its abilities; or list them — `{ event: Orbital.Trait.EVENT }` for one input, `{ read: Entity }` for one entity." @synonyms "allowlist, abilities, actions, permissions" @tier "domain"
|
|
40856
|
+
viewerRole : string = "" @label "Viewer role on the assistant page" @description "The role the assistant page's sidebar items and their `roles` are checked against. Bind `@user.role` in an app whose identity carries a role; left empty, only items with no `roles` show." @tier "policy"
|
|
40845
40857
|
}
|
|
40846
40858
|
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
40847
40859
|
source : "@almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb orbitals[0])"
|
|
@@ -40851,8 +40863,8 @@ orbital std-agent-assistant.orbitals.AgentAssistantOrbital {
|
|
|
40851
40863
|
orbital std-agent-assistant.orbitals.AgentRecordsOrbital {
|
|
40852
40864
|
alias : AgentAssistant
|
|
40853
40865
|
entity : AgentRun
|
|
40854
|
-
traits : (AgentRunHistory = Trace.traits.AgentRunBrowse
|
|
40855
|
-
pages : ("/assistant/runs"
|
|
40866
|
+
traits : (AgentRunHistory = Trace.traits.AgentRunBrowse)
|
|
40867
|
+
pages : ("/assistant/runs")
|
|
40856
40868
|
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
40857
40869
|
source : "@almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb orbitals[1])"
|
|
40858
40870
|
}
|
|
@@ -41067,36 +41079,6 @@ orbital ui-drawer-slot.orbitals.DrawerSlotOrbital {
|
|
|
41067
41079
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-drawer-slot.orb orbitals[0])"
|
|
41068
41080
|
}
|
|
41069
41081
|
|
|
41070
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0])
|
|
41071
|
-
orbital ui-entity-cards.orbitals.EntityCardsOrbital {
|
|
41072
|
-
alias : UiEntityCards
|
|
41073
|
-
entity : EntityCardsItem
|
|
41074
|
-
traits : (EntityCardsRender)
|
|
41075
|
-
pages : ("/entity-cards")
|
|
41076
|
-
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
41077
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0])"
|
|
41078
|
-
}
|
|
41079
|
-
|
|
41080
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0])
|
|
41081
|
-
orbital ui-entity-list.orbitals.EntityListOrbital {
|
|
41082
|
-
alias : UiEntityList
|
|
41083
|
-
entity : EntityListItem
|
|
41084
|
-
traits : (EntityListRender)
|
|
41085
|
-
pages : ("/entity-list")
|
|
41086
|
-
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
41087
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0])"
|
|
41088
|
-
}
|
|
41089
|
-
|
|
41090
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0])
|
|
41091
|
-
orbital ui-entity-table.orbitals.EntityTableOrbital {
|
|
41092
|
-
alias : UiEntityTable
|
|
41093
|
-
entity : EntityTableItem
|
|
41094
|
-
traits : (EntityTableRender)
|
|
41095
|
-
pages : ("/entity-table")
|
|
41096
|
-
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
41097
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0])"
|
|
41098
|
-
}
|
|
41099
|
-
|
|
41100
41082
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-form.orb orbitals[0])
|
|
41101
41083
|
orbital ui-form.orbitals.FormOrbital {
|
|
41102
41084
|
alias : UiForm
|
|
@@ -41117,16 +41099,6 @@ orbital ui-form-section.orbitals.FormSectionOrbital {
|
|
|
41117
41099
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-form-section.orb orbitals[0])"
|
|
41118
41100
|
}
|
|
41119
41101
|
|
|
41120
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0])
|
|
41121
|
-
orbital ui-master-detail.orbitals.MasterDetailOrbital {
|
|
41122
|
-
alias : UiMasterDetail
|
|
41123
|
-
entity : MasterDetailItem
|
|
41124
|
-
traits : (MasterDetailRender)
|
|
41125
|
-
pages : ("/master-detail")
|
|
41126
|
-
override-surface : (entity fields extend pages omit only config events roles entities mounts)
|
|
41127
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0])"
|
|
41128
|
-
}
|
|
41129
|
-
|
|
41130
41102
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb orbitals[0])
|
|
41131
41103
|
orbital ui-master-detail-layout.orbitals.MasterDetailLayoutOrbital {
|
|
41132
41104
|
alias : UiMasterDetailLayout
|
|
@@ -41478,36 +41450,6 @@ entity ui-drawer-slot.entity {
|
|
|
41478
41450
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-drawer-slot.orb orbitals[0].entity)"
|
|
41479
41451
|
}
|
|
41480
41452
|
|
|
41481
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0].entity)
|
|
41482
|
-
entity ui-entity-cards.entity {
|
|
41483
|
-
alias : UiEntityCards
|
|
41484
|
-
name : EntityCardsItem
|
|
41485
|
-
persistence : runtime
|
|
41486
|
-
fields : (id!)
|
|
41487
|
-
override-surface : (extends name fields persistence collection)
|
|
41488
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0].entity)"
|
|
41489
|
-
}
|
|
41490
|
-
|
|
41491
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0].entity)
|
|
41492
|
-
entity ui-entity-list.entity {
|
|
41493
|
-
alias : UiEntityList
|
|
41494
|
-
name : EntityListItem
|
|
41495
|
-
persistence : runtime
|
|
41496
|
-
fields : (id!)
|
|
41497
|
-
override-surface : (extends name fields persistence collection)
|
|
41498
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0].entity)"
|
|
41499
|
-
}
|
|
41500
|
-
|
|
41501
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0].entity)
|
|
41502
|
-
entity ui-entity-table.entity {
|
|
41503
|
-
alias : UiEntityTable
|
|
41504
|
-
name : EntityTableItem
|
|
41505
|
-
persistence : runtime
|
|
41506
|
-
fields : (id!)
|
|
41507
|
-
override-surface : (extends name fields persistence collection)
|
|
41508
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0].entity)"
|
|
41509
|
-
}
|
|
41510
|
-
|
|
41511
41453
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-form.orb orbitals[0].entity)
|
|
41512
41454
|
entity ui-form.entity {
|
|
41513
41455
|
alias : UiForm
|
|
@@ -41528,16 +41470,6 @@ entity ui-form-section.entity {
|
|
|
41528
41470
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-form-section.orb orbitals[0].entity)"
|
|
41529
41471
|
}
|
|
41530
41472
|
|
|
41531
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0].entity)
|
|
41532
|
-
entity ui-master-detail.entity {
|
|
41533
|
-
alias : UiMasterDetail
|
|
41534
|
-
name : MasterDetailItem
|
|
41535
|
-
persistence : runtime
|
|
41536
|
-
fields : (id!)
|
|
41537
|
-
override-surface : (extends name fields persistence collection)
|
|
41538
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0].entity)"
|
|
41539
|
-
}
|
|
41540
|
-
|
|
41541
41473
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb orbitals[0].entity)
|
|
41542
41474
|
entity ui-master-detail-layout.entity {
|
|
41543
41475
|
alias : UiMasterDetailLayout
|
|
@@ -42163,6 +42095,7 @@ trait ui-dashboard-grid.traits.DashboardGridRender {
|
|
|
42163
42095
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42164
42096
|
sortBy : string @label "Sort By" @description "Current sort field" @tier "presentation"
|
|
42165
42097
|
sortDirection : string @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42098
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out. Each cell is a tile." @tier "presentation" @values (auto none)
|
|
42166
42099
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42167
42100
|
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
42168
42101
|
}
|
|
@@ -42206,7 +42139,7 @@ trait ui-detail-panel.traits.DetailPanelRender {
|
|
|
42206
42139
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
42207
42140
|
error : DetailPanelError @label "Error" @description "Error state (UiError)" @tier "presentation"
|
|
42208
42141
|
fieldNames : [string] = [] @label "Field Names" @description "Alias for fields - backwards compatibility" @tier "presentation"
|
|
42209
|
-
fields : [DetailPanelFieldsItem] = [{"format":"date","icon":"circle","label":"Label","name":"Name","relation":{"cardinality":"one","entity":"Entity"},"type":"Type","values":["Item","Item 2"],"variant":"h3"},{"format":"
|
|
42142
|
+
fields : [DetailPanelFieldsItem] = [{"format":"date","icon":"circle","label":"Label","name":"Name","relation":{"cardinality":"one","entity":"Entity"},"type":"Type","values":["Item","Item 2"],"variant":"h3"},{"format":"time","icon":"circle","label":"Label 2","name":"Name 2","relation":{"cardinality":"many","entity":"Entity 2"},"type":"Type 2","values":["Item","Item 2"],"variant":"h4"}] @label "Fields" @description "Fields to display: field names, or declared fields ({ name, label, variant, format, colorMap, labels })" @tier "presentation"
|
|
42210
42143
|
footer : node @label "Footer" @description "footer prop" @tier "presentation"
|
|
42211
42144
|
isLoading : boolean = false @label "Is Loading" @description "Loading state indicator" @tier "presentation"
|
|
42212
42145
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
@@ -42237,6 +42170,7 @@ trait ui-detail-panel.traits.DetailPanelRender {
|
|
|
42237
42170
|
stages : [DetailPanelStagesItem] = [] @label "Stages" @description "The lifecycle in order, `{ value, label }` per stage (workflow)." @tier "presentation"
|
|
42238
42171
|
status : DetailPanelStatus @label "Status" @description "status prop" @tier "presentation"
|
|
42239
42172
|
subtitle : string @label "Subtitle" @description "subtitle prop" @tier "presentation"
|
|
42173
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out. Inline mode only; the slide-over is itself a surface." @tier "presentation" @values (auto none)
|
|
42240
42174
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42241
42175
|
tabs : [DetailPanelTabsItem] = [] @label "Tabs" @description "Tabs after the overview tab, each listing declared field names (workspace)." @tier "presentation"
|
|
42242
42176
|
threadContent : node @label "Thread Content" @description "The thread composed in instead of `thread` — e.g. the replies' own trait with its composer (conversation)." @tier "presentation"
|
|
@@ -42272,7 +42206,7 @@ trait ui-dock-layout.traits.DockLayoutRender {
|
|
|
42272
42206
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
42273
42207
|
bottomPanel : node @label "Bottom Panel" @description "Collapsible, resizable-height bottom panel." @tier "presentation"
|
|
42274
42208
|
bottomPanelClassName : string @label "Bottom Panel Class Name" @description "bottomPanelClassName prop" @tier "presentation"
|
|
42275
|
-
bottomPanelCollapsed : boolean @label "Bottom Panel Collapsed" @description "Whether `bottomPanel` is collapsed
|
|
42209
|
+
bottomPanelCollapsed : boolean @label "Bottom Panel Collapsed" @description "Whether `bottomPanel` is collapsed (controlled; the layout keeps its own state when omitted)." @tier "presentation"
|
|
42276
42210
|
bottomPanelHeight : number = 30 @label "Bottom Panel Height" @description "Bottom panel size as a SplitPane ratio (0-100, percentage given to the panel). @default 30" @tier "presentation"
|
|
42277
42211
|
bottomPanelIcon : icon @label "Bottom Panel Icon" @description "bottomPanelIcon prop" @tier "presentation"
|
|
42278
42212
|
bottomPanelLabel : string @label "Bottom Panel Label" @description "Compact: the top-bar button that opens `bottomPanel`." @tier "presentation"
|
|
@@ -42296,13 +42230,13 @@ trait ui-dock-layout.traits.DockLayoutRender {
|
|
|
42296
42230
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
42297
42231
|
secondarySidebar : node @label "Secondary Sidebar" @description "Collapsible right sidebar." @tier "presentation"
|
|
42298
42232
|
secondarySidebarClassName : string @label "Secondary Sidebar Class Name" @description "secondarySidebarClassName prop" @tier "presentation"
|
|
42299
|
-
secondarySidebarCollapsed : boolean @label "Secondary Sidebar Collapsed" @description "Whether `secondarySidebar` is collapsed
|
|
42233
|
+
secondarySidebarCollapsed : boolean @label "Secondary Sidebar Collapsed" @description "Whether `secondarySidebar` is collapsed (controlled; the layout keeps its own state when omitted)." @tier "presentation"
|
|
42300
42234
|
secondarySidebarIcon : icon @label "Secondary Sidebar Icon" @description "secondarySidebarIcon prop" @tier "presentation"
|
|
42301
42235
|
secondarySidebarLabel : string @label "Secondary Sidebar Label" @description "Compact: the top-bar button that opens `secondarySidebar` (e.g. 'Inspector', 'Chat')." @tier "presentation"
|
|
42302
42236
|
secondarySidebarWidth : number = 280 @label "Secondary Sidebar Width" @description "Width of `secondarySidebar` in pixels (fixed — not resizable). @default 280" @tier "presentation"
|
|
42303
42237
|
sidebar : node @label "Sidebar" @description "Collapsible, resizable left sidebar." @tier "presentation"
|
|
42304
42238
|
sidebarClassName : string @label "Sidebar Class Name" @description "sidebarClassName prop" @tier "presentation"
|
|
42305
|
-
sidebarCollapsed : boolean @label "Sidebar Collapsed" @description "Whether `sidebar` is collapsed
|
|
42239
|
+
sidebarCollapsed : boolean @label "Sidebar Collapsed" @description "Whether `sidebar` is collapsed (controlled; the layout keeps its own state when omitted)." @tier "presentation"
|
|
42306
42240
|
sidebarMinSize : number = 160 @label "Sidebar Min Size" @description "Minimum sidebar size in pixels, forwarded to SplitPane's `minSize`. @default 160" @tier "presentation"
|
|
42307
42241
|
sidebarWidth : number = 20 @label "Sidebar Width" @description "Sidebar size as a SplitPane ratio (0-100, percentage of the sidebar/main split). @default 20" @tier "presentation"
|
|
42308
42242
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
@@ -42340,184 +42274,6 @@ trait ui-drawer-slot.traits.DrawerSlotRender {
|
|
|
42340
42274
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-drawer-slot.orb orbitals[0].traits[0])"
|
|
42341
42275
|
}
|
|
42342
42276
|
|
|
42343
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0].traits[0])
|
|
42344
|
-
trait ui-entity-cards.traits.EntityCardsRender {
|
|
42345
|
-
alias : UiEntityCards
|
|
42346
|
-
linkedEntity : EntityCardsItem
|
|
42347
|
-
category : interaction
|
|
42348
|
-
states : (idle*)
|
|
42349
|
-
events : (INIT EntityCardsLoaded @config.itemClickEvent VIEW)
|
|
42350
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on INIT) (idle -> idle on EntityCardsLoaded))
|
|
42351
|
-
emits : (@config.itemClickEvent VIEW EntityCardsLoaded)
|
|
42352
|
-
config {
|
|
42353
|
-
activeFilters : Map<string,string> = {} @label "Active Filters" @description "Active filters" @tier "presentation"
|
|
42354
|
-
alignItems : string = "stretch" @label "Align Items" @description "Align cards vertically in their cells" @tier "presentation" @values (start center end stretch)
|
|
42355
|
-
ariaBusy : boolean @label "Aria-busy" @description "This region is updating; assistive technology waits before announcing it." @synonyms "aria-busy" @tier "presentation"
|
|
42356
|
-
ariaCurrent : string @label "Aria-current" @description "Marks the current item in a set: the current page, step, location, date or time." @synonyms "aria-current" @tier "presentation" @values (page step location date time true false)
|
|
42357
|
-
ariaDescribedby : string @label "Aria-describedby" @description "Id of the element whose text describes this one (help text, error)." @synonyms "aria-describedby" @tier "presentation"
|
|
42358
|
-
ariaExpanded : boolean @label "Aria-expanded" @description "Whether the element it controls is expanded." @synonyms "aria-expanded" @tier "presentation"
|
|
42359
|
-
ariaHidden : boolean @label "Aria-hidden" @description "Hide from assistive technology (decorative content only)." @synonyms "aria-hidden" @tier "presentation"
|
|
42360
|
-
ariaLabel : string @label "Aria-label" @description "Accessible name read by screen readers when the visible text is missing or not descriptive (e.g. an icon-only control)." @synonyms "aria-label" @tier "presentation"
|
|
42361
|
-
ariaLabelledby : string @label "Aria-labelledby" @description "Id of the element whose text names this one." @synonyms "aria-labelledby" @tier "presentation"
|
|
42362
|
-
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
42363
|
-
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
42364
|
-
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
42365
|
-
children : node @label "Children" @description "Children elements (cards) - optional when using entity prop" @tier "presentation"
|
|
42366
|
-
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
42367
|
-
columns : [EntityCardsColumnsItem] = [] @label "Columns" @description "Alias for fields - backwards compatibility" @tier "presentation"
|
|
42368
|
-
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
42369
|
-
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
42370
|
-
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
42371
|
-
error : EntityCardsError @label "Error" @description "Error state (UiError)" @tier "presentation"
|
|
42372
|
-
fieldNames : [string] = [] @label "Field Names" @description "Alias for fields - backwards compatibility" @tier "presentation"
|
|
42373
|
-
fields : [EntityCardsFieldsItem] = [{"format":"date","icon":"circle","label":"Label","name":"Name","variant":"h3"},{"format":"datetime","icon":"circle","label":"Label 2","name":"Name 2","variant":"h4"}] @label "Fields" @description "Fields to display - required for schema-driven rendering" @tier "presentation"
|
|
42374
|
-
gap : string = "md" @label "Gap" @description "Gap between cards" @tier "presentation" @values (none sm md lg xl)
|
|
42375
|
-
imageField : string @label "Image Field" @description "Entity field name containing an image URL to display as card thumbnail" @tier "presentation"
|
|
42376
|
-
isLoading : boolean = false @label "Is Loading" @description "Loading state indicator" @tier "presentation"
|
|
42377
|
-
itemActions : [EntityCardsItemActionsItem] = [{"event":"VIEW","label":"View","variant":"ghost"}] @label "Item Actions" @description "Actions for each card item (schema-driven)" @tier "presentation"
|
|
42378
|
-
itemClickEvent : event = "ITEM_CLICK" @label "Item Click Event" @description "When set, clicking a card emits UI:{itemClickEvent} with { id, row }. Omit = cards are not clickable." @tier "presentation"
|
|
42379
|
-
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
42380
|
-
maxCols : number @label "Max Cols" @description "Maximum number of columns" @tier "presentation"
|
|
42381
|
-
minCardWidth : number = 280 @label "Min Card Width" @description "Minimum width of each card (default: 280px)" @tier "presentation"
|
|
42382
|
-
pageProp : number @label "Page" @description "Current page number" @synonyms "page" @tier "presentation"
|
|
42383
|
-
pageSize : number @label "Page Size" @description "Number of items per page" @tier "presentation"
|
|
42384
|
-
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
42385
|
-
searchValue : string @label "Search Value" @description "Current search query value" @tier "presentation"
|
|
42386
|
-
selectedIds : [string] = [] @label "Selected Ids" @description "Currently selected item IDs" @tier "presentation"
|
|
42387
|
-
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
42388
|
-
showAvatar : boolean @label "Show Avatar" @description "Show avatar/image field on cards" @tier "presentation"
|
|
42389
|
-
showTotal : boolean = true @label "Show Total" @description "Show total count in pagination" @tier "presentation"
|
|
42390
|
-
skeleton : string = "grid" @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42391
|
-
sortBy : string @label "Sort By" @description "Current sort field" @tier "presentation"
|
|
42392
|
-
sortDirection : string @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42393
|
-
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42394
|
-
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
42395
|
-
variant : string @label "Variant" @description "Visual variant for the card grid" @tier "presentation"
|
|
42396
|
-
viewerRole : string = "" @label "Viewer's role" @description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show." @tier "policy"
|
|
42397
|
-
}
|
|
42398
|
-
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
42399
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0].traits[0])"
|
|
42400
|
-
}
|
|
42401
|
-
|
|
42402
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0].traits[0])
|
|
42403
|
-
trait ui-entity-list.traits.EntityListRender {
|
|
42404
|
-
alias : UiEntityList
|
|
42405
|
-
linkedEntity : EntityListItem
|
|
42406
|
-
category : interaction
|
|
42407
|
-
states : (idle*)
|
|
42408
|
-
events : (INIT EntityListLoaded ITEM_ACTIONS @config.itemClickEvent VIEW)
|
|
42409
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on INIT) (idle -> idle on EntityListLoaded))
|
|
42410
|
-
emits : (ITEM_ACTIONS @config.itemClickEvent VIEW EntityListLoaded)
|
|
42411
|
-
config {
|
|
42412
|
-
activeFilters : Map<string,string> = {} @label "Active Filters" @description "Active filters" @tier "presentation"
|
|
42413
|
-
ariaBusy : boolean @label "Aria-busy" @description "This region is updating; assistive technology waits before announcing it." @synonyms "aria-busy" @tier "presentation"
|
|
42414
|
-
ariaCurrent : string @label "Aria-current" @description "Marks the current item in a set: the current page, step, location, date or time." @synonyms "aria-current" @tier "presentation" @values (page step location date time true false)
|
|
42415
|
-
ariaDescribedby : string @label "Aria-describedby" @description "Id of the element whose text describes this one (help text, error)." @synonyms "aria-describedby" @tier "presentation"
|
|
42416
|
-
ariaExpanded : boolean @label "Aria-expanded" @description "Whether the element it controls is expanded." @synonyms "aria-expanded" @tier "presentation"
|
|
42417
|
-
ariaHidden : boolean @label "Aria-hidden" @description "Hide from assistive technology (decorative content only)." @synonyms "aria-hidden" @tier "presentation"
|
|
42418
|
-
ariaLabel : string @label "Aria-label" @description "Accessible name read by screen readers when the visible text is missing or not descriptive (e.g. an icon-only control)." @synonyms "aria-label" @tier "presentation"
|
|
42419
|
-
ariaLabelledby : string @label "Aria-labelledby" @description "Id of the element whose text names this one." @synonyms "aria-labelledby" @tier "presentation"
|
|
42420
|
-
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
42421
|
-
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
42422
|
-
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
42423
|
-
children : node @label "Children" @description "children prop" @tier "presentation"
|
|
42424
|
-
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
42425
|
-
completedField : string @label "Completed Field" @description "Row field that marks an item completed (`true` strikes its title through)" @tier "presentation"
|
|
42426
|
-
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
42427
|
-
disabledField : string @label "Disabled Field" @description "Row field that marks an item disabled (`true` dims the row and disables its click)" @tier "presentation"
|
|
42428
|
-
emptyMessage : string @label "Empty Message" @description "emptyMessage prop" @tier "presentation"
|
|
42429
|
-
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
42430
|
-
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
42431
|
-
entityType : string @label "Entity Type" @description "Entity type name for display" @tier "presentation"
|
|
42432
|
-
error : EntityListError @label "Error" @description "Error state (UiError)" @tier "presentation"
|
|
42433
|
-
fieldNames : [string] = [] @label "Field Names" @description "Alias for fields - backwards compatibility" @tier "presentation"
|
|
42434
|
-
fields : [EntityListFieldsItem] = [{"format":"date","icon":"circle","label":"Label","name":"Name","variant":"h3"},{"format":"datetime","icon":"circle","label":"Label 2","name":"Name 2","variant":"h4"}] @label "Fields" @description "Fields to display: field names, or declared fields ({ name, label, variant, format, colorMap, labels })" @tier "presentation"
|
|
42435
|
-
isLoading : boolean = false @label "Is Loading" @description "Loading state indicator" @tier "presentation"
|
|
42436
|
-
itemActions : [EntityListItemActionsItem] = [{"event":"VIEW","label":"View","variant":"ghost"}] @label "Item Actions" @description "Item actions - schema-driven or function-based" @tier "presentation"
|
|
42437
|
-
itemClickEvent : event = "ITEM_CLICK" @label "Item Click Event" @description "When set, clicking a row emits UI:{itemClickEvent} with { id, row }. Omit = rows are not clickable." @tier "presentation"
|
|
42438
|
-
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
42439
|
-
pageProp : number @label "Page" @description "Current page number" @synonyms "page" @tier "presentation"
|
|
42440
|
-
pageSize : number @label "Page Size" @description "Number of items per page" @tier "presentation"
|
|
42441
|
-
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
42442
|
-
searchValue : string @label "Search Value" @description "Current search query value" @tier "presentation"
|
|
42443
|
-
selectable : boolean = false @label "Selectable" @description "selectable prop" @tier "presentation"
|
|
42444
|
-
selectedIds : [string] = [] @label "Selected Ids" @description "Currently selected item IDs" @tier "presentation"
|
|
42445
|
-
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
42446
|
-
showDividers : boolean @label "Show Dividers" @description "showDividers prop" @tier "presentation"
|
|
42447
|
-
skeleton : string = "list" @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42448
|
-
sortBy : string @label "Sort By" @description "Current sort field" @tier "presentation"
|
|
42449
|
-
sortDirection : string @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42450
|
-
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42451
|
-
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
42452
|
-
variant : string @label "Variant" @description "variant prop" @tier "presentation" @values (default card)
|
|
42453
|
-
viewerRole : string = "" @label "Viewer's role" @description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show." @tier "policy"
|
|
42454
|
-
}
|
|
42455
|
-
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
42456
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0].traits[0])"
|
|
42457
|
-
}
|
|
42458
|
-
|
|
42459
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0].traits[0])
|
|
42460
|
-
trait ui-entity-table.traits.EntityTableRender {
|
|
42461
|
-
alias : UiEntityTable
|
|
42462
|
-
linkedEntity : EntityTableItem
|
|
42463
|
-
category : interaction
|
|
42464
|
-
states : (idle*)
|
|
42465
|
-
events : (INIT EntityTableLoaded @config.itemClickEvent VIEW)
|
|
42466
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on INIT) (idle -> idle on EntityTableLoaded))
|
|
42467
|
-
emits : (@config.itemClickEvent VIEW EntityTableLoaded)
|
|
42468
|
-
config {
|
|
42469
|
-
activeFilters : Map<string,string> = {} @label "Active Filters" @description "Active filters" @tier "presentation"
|
|
42470
|
-
ariaBusy : boolean @label "Aria-busy" @description "This region is updating; assistive technology waits before announcing it." @synonyms "aria-busy" @tier "presentation"
|
|
42471
|
-
ariaCurrent : string @label "Aria-current" @description "Marks the current item in a set: the current page, step, location, date or time." @synonyms "aria-current" @tier "presentation" @values (page step location date time true false)
|
|
42472
|
-
ariaDescribedby : string @label "Aria-describedby" @description "Id of the element whose text describes this one (help text, error)." @synonyms "aria-describedby" @tier "presentation"
|
|
42473
|
-
ariaExpanded : boolean @label "Aria-expanded" @description "Whether the element it controls is expanded." @synonyms "aria-expanded" @tier "presentation"
|
|
42474
|
-
ariaHidden : boolean @label "Aria-hidden" @description "Hide from assistive technology (decorative content only)." @synonyms "aria-hidden" @tier "presentation"
|
|
42475
|
-
ariaLabel : string @label "Aria-label" @description "Accessible name read by screen readers when the visible text is missing or not descriptive (e.g. an icon-only control)." @synonyms "aria-label" @tier "presentation"
|
|
42476
|
-
ariaLabelledby : string @label "Aria-labelledby" @description "Id of the element whose text names this one." @synonyms "aria-labelledby" @tier "presentation"
|
|
42477
|
-
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
42478
|
-
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
42479
|
-
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
42480
|
-
bulkActions : [EntityTableBulkActionsItem] = [] @label "Bulk Actions" @description "Bulk actions" @tier "presentation"
|
|
42481
|
-
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
42482
|
-
columns : [EntityTableColumnsItem] = [] @label "Columns" @description "Columns can be Column objects or simple string field names" @tier "presentation"
|
|
42483
|
-
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
42484
|
-
emptyAction : EntityTableEmptyAction @label "Empty Action" @description "emptyAction prop" @tier "presentation"
|
|
42485
|
-
emptyDescription : string @label "Empty Description" @description "emptyDescription prop" @tier "presentation"
|
|
42486
|
-
emptyIcon : icon @label "Empty Icon" @description "emptyIcon prop" @tier "presentation"
|
|
42487
|
-
emptyTitle : string @label "Empty Title" @description "emptyTitle prop" @tier "presentation"
|
|
42488
|
-
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
42489
|
-
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
42490
|
-
error : EntityTableError @label "Error" @description "Error state (UiError)" @tier "presentation"
|
|
42491
|
-
fields : [EntityTableFieldsItem] = [{"align":"left","format":"date","header":"Header","key":"Key","label":"Label","name":"Name","sortable":false,"width":"Width"},{"align":"center","format":"datetime","header":"Header 2","key":"Key 2","label":"Label 2","name":"Name 2","sortable":true,"width":"Width 2"}] @label "Fields" @description "Fields to display - accepts string[] or Column[] for unified interface. Alias for columns" @tier "presentation"
|
|
42492
|
-
headerActions : node @label "Header Actions" @description "Header actions" @tier "presentation"
|
|
42493
|
-
isLoading : boolean = false @label "Is Loading" @description "Loading state indicator" @tier "presentation"
|
|
42494
|
-
itemActions : [EntityTableItemActionsItem] = [{"event":"VIEW","label":"View","variant":"ghost"}] @label "Item Actions" @description "Item actions from generated code - maps to rowActions" @tier "presentation"
|
|
42495
|
-
itemClickEvent : event = "ITEM_CLICK" @label "Item Click Event" @description "When set, rows are activatable and emit UI:{itemClickEvent} with { id, row }" @tier "presentation"
|
|
42496
|
-
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
42497
|
-
look : string = "dense" @label "Look" @description "Layer 2 visual treatment — orthogonal to the semantic variant." @tier "presentation" @values (dense spacious striped borderless card-rows)
|
|
42498
|
-
pageProp : number @label "Page" @description "Current page number" @synonyms "page" @tier "presentation"
|
|
42499
|
-
pageSize : number @label "Page Size" @description "Number of items per page" @tier "presentation"
|
|
42500
|
-
relationsData : Map<string,[EntityTableRelationsDataValueItem]> = {} @label "Relations Data" @description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a column whose field is relation-typed. Same contract DetailPanel takes." @tier "presentation"
|
|
42501
|
-
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
42502
|
-
rowActions : [EntityTableRowActionsItem] = [] @label "Row Actions" @description "Row actions" @tier "presentation"
|
|
42503
|
-
searchable : boolean = false @label "Searchable" @description "Search" @tier "presentation"
|
|
42504
|
-
searchPlaceholder : string @label "Search Placeholder" @description "searchPlaceholder prop" @tier "presentation"
|
|
42505
|
-
searchValue : string @label "Search Value" @description "Current search query value" @tier "presentation"
|
|
42506
|
-
selectable : boolean = false @label "Selectable" @description "Selection" @tier "presentation"
|
|
42507
|
-
selectedIds : [string] = [] @label "Selected Ids" @description "Currently selected item IDs" @tier "presentation"
|
|
42508
|
-
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
42509
|
-
showTotal : boolean = true @label "Show Total" @description "Show total count in pagination" @tier "presentation"
|
|
42510
|
-
skeleton : string = "table" @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42511
|
-
sortBy : string @label "Sort By" @description "Current sort field" @tier "presentation"
|
|
42512
|
-
sortDirection : string = "asc" @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42513
|
-
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42514
|
-
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
42515
|
-
viewerRole : string = "" @label "Viewer's role" @description "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show." @tier "policy"
|
|
42516
|
-
}
|
|
42517
|
-
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
42518
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0].traits[0])"
|
|
42519
|
-
}
|
|
42520
|
-
|
|
42521
42277
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-form.orb orbitals[0].traits[0])
|
|
42522
42278
|
trait ui-form.traits.FormRender {
|
|
42523
42279
|
alias : UiForm
|
|
@@ -42568,9 +42324,10 @@ trait ui-form.traits.FormRender {
|
|
|
42568
42324
|
selfFetch : boolean = true @label "Fetch its own row on mount?" @description "true (default) = a mount that carries an id loads that one row (never the collection); a create-mode mount skips the load. false = a composing atom owns the load." @tier "internal"
|
|
42569
42325
|
showCancel : boolean @label "Show Cancel" @description "Show cancel button (defaults to true for schema forms)" @tier "presentation"
|
|
42570
42326
|
showSubmit : boolean = true @label "Show Submit" @description "Show submit button (defaults to true for schema forms). Set false when a parent atom owns the submit action externally (e.g. wizard footers)." @tier "presentation"
|
|
42571
|
-
skeleton : string @label "Skeleton" @description "
|
|
42327
|
+
skeleton : string = "form" @label "Skeleton" @description "The shape an empty slot shows while this form's server render is in flight (`none` opts out). @default 'form'" @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42572
42328
|
submitEvent : event = "SUBMIT" @label "Submit Event" @description "Event dispatch props (for trait state machine integration)" @tier "presentation"
|
|
42573
42329
|
submitLabel : string @label "Submit Label" @description "Submit button label" @tier "presentation"
|
|
42330
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface (with card padding) behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
42574
42331
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42575
42332
|
title : string @label "Title" @description "Form title (used by ModalSlot to extract title)" @tier "presentation"
|
|
42576
42333
|
violationTriggers : [FormViolationTriggersItem] = [] @label "Violation Triggers" @description "Violation conditions that emit VIOLATION_DETECTED when met (boolean true means enabled but config loaded separately)" @tier "presentation"
|
|
@@ -42629,9 +42386,10 @@ trait ui-form-section.traits.FormSectionRender {
|
|
|
42629
42386
|
selfFetch : boolean = true @label "Fetch its own row on mount?" @description "true (default) = a mount that carries an id loads that one row (never the collection); a create-mode mount skips the load. false = a composing atom owns the load." @tier "internal"
|
|
42630
42387
|
showCancel : boolean @label "Show Cancel" @description "Show cancel button (defaults to true for schema forms)" @tier "presentation"
|
|
42631
42388
|
showSubmit : boolean = true @label "Show Submit" @description "Show submit button (defaults to true for schema forms). Set false when a parent atom owns the submit action externally (e.g. wizard footers)." @tier "presentation"
|
|
42632
|
-
skeleton : string @label "Skeleton" @description "
|
|
42389
|
+
skeleton : string = "form" @label "Skeleton" @description "The shape an empty slot shows while this form's server render is in flight (`none` opts out). @default 'form'" @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42633
42390
|
submitEvent : event = "SUBMIT" @label "Submit Event" @description "Event dispatch props (for trait state machine integration)" @tier "presentation"
|
|
42634
42391
|
submitLabel : string @label "Submit Label" @description "Submit button label" @tier "presentation"
|
|
42392
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface (with card padding) behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
42635
42393
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42636
42394
|
title : string @label "Title" @description "Form title (used by ModalSlot to extract title)" @tier "presentation"
|
|
42637
42395
|
violationTriggers : [FormSectionViolationTriggersItem] = [] @label "Violation Triggers" @description "Violation conditions that emit VIOLATION_DETECTED when met (boolean true means enabled but config loaded separately)" @tier "presentation"
|
|
@@ -42640,53 +42398,6 @@ trait ui-form-section.traits.FormSectionRender {
|
|
|
42640
42398
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-form-section.orb orbitals[0].traits[0])"
|
|
42641
42399
|
}
|
|
42642
42400
|
|
|
42643
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0].traits[0])
|
|
42644
|
-
trait ui-master-detail.traits.MasterDetailRender {
|
|
42645
|
-
alias : UiMasterDetail
|
|
42646
|
-
linkedEntity : MasterDetailItem
|
|
42647
|
-
category : interaction
|
|
42648
|
-
states : (idle*)
|
|
42649
|
-
events : (INIT MasterDetailLoaded)
|
|
42650
|
-
transitions : ((idle -> idle on INIT) (idle -> idle on INIT) (idle -> idle on MasterDetailLoaded))
|
|
42651
|
-
emits : (MasterDetailLoaded)
|
|
42652
|
-
config {
|
|
42653
|
-
activeFilters : Map<string,string> = {} @label "Active Filters" @description "Active filters" @tier "presentation"
|
|
42654
|
-
ariaBusy : boolean @label "Aria-busy" @description "This region is updating; assistive technology waits before announcing it." @synonyms "aria-busy" @tier "presentation"
|
|
42655
|
-
ariaCurrent : string @label "Aria-current" @description "Marks the current item in a set: the current page, step, location, date or time." @synonyms "aria-current" @tier "presentation" @values (page step location date time true false)
|
|
42656
|
-
ariaDescribedby : string @label "Aria-describedby" @description "Id of the element whose text describes this one (help text, error)." @synonyms "aria-describedby" @tier "presentation"
|
|
42657
|
-
ariaExpanded : boolean @label "Aria-expanded" @description "Whether the element it controls is expanded." @synonyms "aria-expanded" @tier "presentation"
|
|
42658
|
-
ariaHidden : boolean @label "Aria-hidden" @description "Hide from assistive technology (decorative content only)." @synonyms "aria-hidden" @tier "presentation"
|
|
42659
|
-
ariaLabel : string @label "Aria-label" @description "Accessible name read by screen readers when the visible text is missing or not descriptive (e.g. an icon-only control)." @synonyms "aria-label" @tier "presentation"
|
|
42660
|
-
ariaLabelledby : string @label "Aria-labelledby" @description "Id of the element whose text names this one." @synonyms "aria-labelledby" @tier "presentation"
|
|
42661
|
-
ariaLive : string @label "Aria-live" @description "Announce changes to this region: polite waits for a pause, assertive interrupts." @synonyms "aria-live" @tier "presentation" @values (off polite assertive)
|
|
42662
|
-
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
42663
|
-
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
42664
|
-
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
42665
|
-
detailFields : [string] = [] @label "Detail Fields" @description "Fields for detail view (passed through but typically handled by separate render_ui)" @tier "presentation"
|
|
42666
|
-
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
42667
|
-
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
42668
|
-
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
42669
|
-
error : MasterDetailError @label "Error" @description "Error state (UiError)" @tier "presentation"
|
|
42670
|
-
isLoading : boolean @label "Is Loading" @description "Loading state indicator" @tier "presentation"
|
|
42671
|
-
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
42672
|
-
loading : boolean @label "Loading" @description "Loading state (alias for isLoading)" @tier "presentation"
|
|
42673
|
-
masterFields : [string] = ["Item","Item 2"] @label "Master Fields" @description "Fields to show in the master list (maps to DataTable columns)" @tier "presentation"
|
|
42674
|
-
pageProp : number @label "Page" @description "Current page number" @synonyms "page" @tier "presentation"
|
|
42675
|
-
pageSize : number @label "Page Size" @description "Number of items per page" @tier "presentation"
|
|
42676
|
-
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
42677
|
-
searchValue : string @label "Search Value" @description "Current search query value" @tier "presentation"
|
|
42678
|
-
selectedIds : [string] = [] @label "Selected Ids" @description "Currently selected item IDs" @tier "presentation"
|
|
42679
|
-
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
42680
|
-
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42681
|
-
sortBy : string @label "Sort By" @description "Current sort field" @tier "presentation"
|
|
42682
|
-
sortDirection : string @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42683
|
-
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42684
|
-
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
42685
|
-
}
|
|
42686
|
-
override-surface : (linkedEntity name events effects listens emitsScope config)
|
|
42687
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0].traits[0])"
|
|
42688
|
-
}
|
|
42689
|
-
|
|
42690
42401
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb orbitals[0].traits[0])
|
|
42691
42402
|
trait ui-master-detail-layout.traits.MasterDetailLayoutRender {
|
|
42692
42403
|
alias : UiMasterDetailLayout
|
|
@@ -42773,6 +42484,7 @@ trait ui-media-gallery.traits.MediaGalleryRender {
|
|
|
42773
42484
|
sortBy : string @label "Sort By" @description "Current sort field" @tier "presentation"
|
|
42774
42485
|
sortDirection : string @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42775
42486
|
srcField : string = "src" @label "Src Field" @description "Record field holding each image's URL (entity mode). Default `src`." @tier "presentation"
|
|
42487
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
42776
42488
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42777
42489
|
title : string @label "Title" @description "Gallery title" @tier "presentation"
|
|
42778
42490
|
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
@@ -42868,7 +42580,7 @@ trait ui-segment-renderer.traits.SegmentRendererRender {
|
|
|
42868
42580
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
42869
42581
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
42870
42582
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
42871
|
-
segments : [SegmentRendererSegmentsItem] = [{"
|
|
42583
|
+
segments : [SegmentRendererSegmentsItem] = [{"answer":"Answer","question":"Question","type":"quiz"},{"answer":"Answer 2","question":"Question 2","type":"quiz"}] @label "Segments" @description "Parsed lesson segments (see `parseLessonSegments`)" @tier "presentation"
|
|
42872
42584
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
42873
42585
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42874
42586
|
userProgress : SegmentRendererUserProgress @label "User Progress" @description "User progress for restoring activation/reflection state" @tier "presentation"
|
|
@@ -42968,6 +42680,7 @@ trait ui-stat-card.traits.StatCardRender {
|
|
|
42968
42680
|
sortDirection : string @label "Sort Direction" @description "Current sort direction" @tier "presentation" @values (asc desc)
|
|
42969
42681
|
sparklineData : [number] = [] @label "Sparkline Data" @description "Sparkline data points for an inline trend chart" @tier "presentation"
|
|
42970
42682
|
subtitle : string @label "Subtitle" @description "Subtitle or description" @tier "presentation"
|
|
42683
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
42971
42684
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
42972
42685
|
title : string @label "Title" @description "Title (alias for label)" @tier "presentation"
|
|
42973
42686
|
totalCount : number @label "Total Count" @description "Total number of items" @tier "presentation"
|
|
@@ -43003,19 +42716,19 @@ trait ui-state-machine-view.traits.StateMachineViewRender {
|
|
|
43003
42716
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
43004
42717
|
className : string @label "Class Name" @description "className prop" @tier "presentation"
|
|
43005
42718
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
43006
|
-
direction : string @label "Direction" @description "Flow direction. @default 'ltr'" @tier "presentation" @values (ltr rtl)
|
|
42719
|
+
direction : string = "ltr" @label "Direction" @description "Flow direction. @default 'ltr'" @tier "presentation" @values (ltr rtl)
|
|
43007
42720
|
enter : string @label "Enter" @description "How this element animates in when it mounts (theme-styled); overrides the theme's default slot entry. `none` opts out." @tier "presentation" @values (none fade rise scale slide)
|
|
43008
42721
|
enterDelay : number @label "Enter Delay" @description "Stagger step for the entry: waits this many `--motion-enter-stagger` steps before animating." @tier "presentation"
|
|
43009
42722
|
entityFields : [string] = [] @label "Entity Fields" @description "Entity field names listed in the header." @tier "presentation"
|
|
43010
42723
|
error : StateMachineViewError @label "Error" @description "Error state" @tier "presentation"
|
|
43011
42724
|
isLoading : boolean = false @label "Is Loading" @description "Loading state indicator" @tier "presentation"
|
|
43012
42725
|
lang : string @label "Lang" @description "Language of this element's content (BCP 47, e.g. ar, sl, en)." @tier "presentation"
|
|
43013
|
-
nodeShape : string @label "Node Shape" @description "Node silhouette. @default 'pill'" @tier "presentation" @values (pill gear)
|
|
42726
|
+
nodeShape : string = "pill" @label "Node Shape" @description "Node silhouette. @default 'pill'" @tier "presentation" @values (pill gear)
|
|
43014
42727
|
onTransitionClick : event = "TRANSITION_CLICK" @label "On Transition Click" @description "Direct transition-click callback, for React hosts (e.g. a canvas node)." @tier "presentation"
|
|
43015
42728
|
pendingSourceState : string @label "Pending Source State" @description "Source of a transition being drawn — the next state click picks its target." @tier "presentation"
|
|
43016
42729
|
role : string @label "Role" @description "WAI-ARIA role when the element's native semantics don't describe it." @tier "presentation" @values (alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog document emphasis feed figure form generic grid gridcell group heading img insertion link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem)
|
|
43017
42730
|
selectedState : string @label "Selected State" @description "State picked in an editor (first click)." @tier "presentation"
|
|
43018
|
-
showHeader : boolean @label "Show Header" @description "Show the trait header (name, entity, listens/emits). @default true" @tier "presentation"
|
|
42731
|
+
showHeader : boolean = true @label "Show Header" @description "Show the trait header (name, entity, listens/emits). @default true" @tier "presentation"
|
|
43019
42732
|
skeleton : string @label "Skeleton" @description "Skeleton shown while this element's server render is in flight: a shape (`table`, `list`, …), `{ variant, rows?, columns?, fields? }`, or `none`." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
43020
42733
|
stateClickEvent : event = "STATE_CLICK" @label "State Click Event" @description "Emits UI:{stateClickEvent} with { stateId } when a state is clicked." @tier "presentation"
|
|
43021
42734
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
@@ -43049,6 +42762,7 @@ trait ui-subagent-trace-panel.traits.SubagentTracePanelRender {
|
|
|
43049
42762
|
ariaPressed : string @label "Aria-pressed" @description "Toggle-button state." @synonyms "aria-pressed" @tier "presentation" @values (true false mixed)
|
|
43050
42763
|
ariaSelected : boolean @label "Aria-selected" @description "Whether this item is selected (tabs, options, grid cells)." @synonyms "aria-selected" @tier "presentation"
|
|
43051
42764
|
className : string @label "Class Name" @description "Additional CSS classes" @tier "presentation"
|
|
42765
|
+
coordinatorActivities : [SubagentTracePanelCoordinatorActivitiesItem] = [] @label "Coordinator Activities" @description "Full coordinator activities (tool calls, results, messages, errors)." @tier "presentation"
|
|
43052
42766
|
coordinatorMessages : [SubagentTracePanelCoordinatorMessagesItem] = [] @label "Coordinator Messages" @description "Canonical Coordinator conversation — same shape live and on reload. When present, takes precedence over `coordinatorActivities` for the Coordinator section." @tier "presentation"
|
|
43053
42767
|
dir : string @label "Dir" @description "Text direction of this element's content." @tier "presentation" @values (ltr rtl auto)
|
|
43054
42768
|
disclosureLevel : number = 1 @label "Disclosure Level" @description "Drives density: 1-2 → compact, 3-4 → full activity embed (when mode='overlay')." @tier "presentation"
|
|
@@ -43152,6 +42866,7 @@ trait ui-timeline.traits.TimelineRender {
|
|
|
43152
42866
|
selfFetch : boolean = true @label "Fetch its own rows on mount?" @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's." @tier "internal"
|
|
43153
42867
|
skeleton : string = "list" @label "Skeleton" @description "Skeleton drawn while loading, and the shape an empty slot shows while this element's server render is in flight (`none` opts out)." @tier "presentation" @values (header table list grid detail stats form card text none)
|
|
43154
42868
|
statusField : string @label "Status Field" @description "Entity field holding each item's status (complete | active | pending | error)." @tier "presentation"
|
|
42869
|
+
surface : string = "auto" @label "Surface" @description "Content surface: `auto` paints the theme's surface behind this block unless it already sits on one (a card, dialog or another block); `none` opts out." @tier "presentation" @values (auto none)
|
|
43155
42870
|
tabIndex : number @label "Tab Index" @description "0 puts the element in the Tab order; -1 makes it focusable only programmatically." @tier "presentation"
|
|
43156
42871
|
title : string @label "Title" @description "Timeline title" @tier "presentation"
|
|
43157
42872
|
titleField : string @label "Title Field" @description "Entity field holding each item's title." @tier "presentation"
|
|
@@ -43200,20 +42915,11 @@ trait ui-toast-slot.traits.ToastSlotRender {
|
|
|
43200
42915
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-toast-slot.orb orbitals[0].traits[0])"
|
|
43201
42916
|
}
|
|
43202
42917
|
|
|
43203
|
-
;; From @almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb orbitals[1].pages[1])
|
|
43204
|
-
page std-agent-assistant.pages.AssistantMemoryPage {
|
|
43205
|
-
alias : AgentAssistant
|
|
43206
|
-
defaultPath : /assistant/memory
|
|
43207
|
-
traits : (AgentMemoryList)
|
|
43208
|
-
override-surface : (path linkedEntity traits)
|
|
43209
|
-
source : "@almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb orbitals[1].pages[1])"
|
|
43210
|
-
}
|
|
43211
|
-
|
|
43212
42918
|
;; From @almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb orbitals[0].pages[0])
|
|
43213
42919
|
page std-agent-assistant.pages.AssistantPage {
|
|
43214
42920
|
alias : AgentAssistant
|
|
43215
42921
|
defaultPath : /assistant
|
|
43216
|
-
traits : (AssistantThread AssistantContext AssistantMemory AssistantLoop AssistantTrace)
|
|
42922
|
+
traits : (AssistantLayout AssistantThread AssistantChatKeeper AssistantContext AssistantMemory AssistantLoop AssistantTrace)
|
|
43217
42923
|
override-surface : (path linkedEntity traits)
|
|
43218
42924
|
source : "@almadar/std (behaviors/registry/agent/organisms/std-agent-assistant.orb orbitals[0].pages[0])"
|
|
43219
42925
|
}
|
|
@@ -43416,33 +43122,6 @@ page ui-drawer-slot.pages.DrawerSlotPage {
|
|
|
43416
43122
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-drawer-slot.orb orbitals[0].pages[0])"
|
|
43417
43123
|
}
|
|
43418
43124
|
|
|
43419
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0].pages[0])
|
|
43420
|
-
page ui-entity-cards.pages.EntityCardsPage {
|
|
43421
|
-
alias : UiEntityCards
|
|
43422
|
-
defaultPath : /entity-cards
|
|
43423
|
-
traits : (EntityCardsRender)
|
|
43424
|
-
override-surface : (path linkedEntity traits)
|
|
43425
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-cards.orb orbitals[0].pages[0])"
|
|
43426
|
-
}
|
|
43427
|
-
|
|
43428
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0].pages[0])
|
|
43429
|
-
page ui-entity-list.pages.EntityListPage {
|
|
43430
|
-
alias : UiEntityList
|
|
43431
|
-
defaultPath : /entity-list
|
|
43432
|
-
traits : (EntityListRender)
|
|
43433
|
-
override-surface : (path linkedEntity traits)
|
|
43434
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-list.orb orbitals[0].pages[0])"
|
|
43435
|
-
}
|
|
43436
|
-
|
|
43437
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0].pages[0])
|
|
43438
|
-
page ui-entity-table.pages.EntityTablePage {
|
|
43439
|
-
alias : UiEntityTable
|
|
43440
|
-
defaultPath : /entity-table
|
|
43441
|
-
traits : (EntityTableRender)
|
|
43442
|
-
override-surface : (path linkedEntity traits)
|
|
43443
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-entity-table.orb orbitals[0].pages[0])"
|
|
43444
|
-
}
|
|
43445
|
-
|
|
43446
43125
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-form.orb orbitals[0].pages[0])
|
|
43447
43126
|
page ui-form.pages.FormPage {
|
|
43448
43127
|
alias : UiForm
|
|
@@ -43461,15 +43140,6 @@ page ui-form-section.pages.FormSectionPage {
|
|
|
43461
43140
|
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-form-section.orb orbitals[0].pages[0])"
|
|
43462
43141
|
}
|
|
43463
43142
|
|
|
43464
|
-
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0].pages[0])
|
|
43465
|
-
page ui-master-detail.pages.MasterDetailPage {
|
|
43466
|
-
alias : UiMasterDetail
|
|
43467
|
-
defaultPath : /master-detail
|
|
43468
|
-
traits : (MasterDetailRender)
|
|
43469
|
-
override-surface : (path linkedEntity traits)
|
|
43470
|
-
source : "@almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail.orb orbitals[0].pages[0])"
|
|
43471
|
-
}
|
|
43472
|
-
|
|
43473
43143
|
;; From @almadar/std (behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb orbitals[0].pages[0])
|
|
43474
43144
|
page ui-master-detail-layout.pages.MasterDetailLayoutPage {
|
|
43475
43145
|
alias : UiMasterDetailLayout
|