@almadar/std 16.178.0 → 16.180.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.
Files changed (80) hide show
  1. package/behaviors/lolo/ui/core/atoms/std-detail-layout.lolo +82 -0
  2. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +20 -2
  3. package/behaviors/lolo/ui/core/molecules/ui-fx-overlay.lolo +63 -0
  4. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +1 -1
  5. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +6 -0
  6. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +2 -2
  7. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +2 -2
  8. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +2 -2
  9. package/behaviors/lolo/ui/game/atoms/std-fx-particles.lolo +23 -4
  10. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +251 -0
  11. package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +109 -0
  12. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +32 -2
  13. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +32 -2
  14. package/behaviors/lolo/ui/game/organisms/std-dungeon-board-2d.lolo +32 -2
  15. package/behaviors/lolo/ui/game/organisms/std-market-board-3d.lolo +32 -2
  16. package/behaviors/lolo/ui/game/organisms/std-objective-board-3d.lolo +32 -2
  17. package/behaviors/lolo/ui/game/organisms/std-platformer-board-2d.lolo +391 -0
  18. package/behaviors/lolo/ui/game/organisms/std-survival-board-3d.lolo +32 -2
  19. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +34 -6
  20. package/behaviors/lolo/ui/game/organisms/std-tactics-board-3d.lolo +34 -4
  21. package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +8 -0
  22. package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +8 -0
  23. package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +8 -0
  24. package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +9 -0
  25. package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +8 -0
  26. package/behaviors/lolo/ui/learning/atoms/std-learn-fx-cues.lolo +147 -0
  27. package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +8 -0
  28. package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +8 -0
  29. package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +8 -0
  30. package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +9 -0
  31. package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +8 -0
  32. package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +9 -0
  33. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +265 -0
  34. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +55 -17
  35. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +281 -0
  36. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
  37. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +8 -0
  38. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +6 -0
  39. package/behaviors/registry/ui/core/organisms/ui-form.orb +6 -0
  40. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +2 -2
  41. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +265 -4
  42. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +2136 -0
  43. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +523 -0
  44. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +159 -70
  45. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +148 -58
  46. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +169 -58
  47. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +160 -70
  48. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +151 -60
  49. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +2981 -0
  50. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +150 -60
  51. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +163 -316
  52. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +156 -184
  53. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +62 -0
  54. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +73 -0
  55. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +66 -0
  56. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +71 -0
  57. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +72 -0
  58. package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1546 -0
  59. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +58 -0
  60. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +72 -0
  61. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +72 -0
  62. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +71 -0
  63. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +72 -0
  64. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +176 -0
  65. package/canonical-operators.json +14 -2
  66. package/dist/behaviors/exports-reader.js +8655 -5239
  67. package/dist/behaviors/functions/index.d.ts +686 -16
  68. package/dist/behaviors/functions/index.js +8637 -5240
  69. package/dist/behaviors/index.d.ts +1 -1
  70. package/dist/behaviors/index.js +8656 -5240
  71. package/dist/behaviors/query.js +8655 -5239
  72. package/dist/behaviors-embeddings.hash.json +3 -3
  73. package/dist/behaviors-embeddings.json +381 -353
  74. package/dist/behaviors-registry.json +2415 -443
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.js +8656 -5240
  77. package/dist/knob-embeddings.hash.json +3 -3
  78. package/dist/knob-embeddings.json +1 -1
  79. package/dist/registry/factory-signatures.json +1 -1
  80. package/package.json +2 -2
@@ -19,6 +19,15 @@
19
19
  "parent": "trt_01KXG04MX6C96QT73HKMXSSXW9",
20
20
  "renames": []
21
21
  },
22
+ "evt_01M0HZ7JXZT1B3WE2JVP75FDGK": {
23
+ "bakedName": "@config.itemEvent",
24
+ "curName": "@config.itemEvent",
25
+ "id": "evt_01M0HZ7JXZT1B3WE2JVP75FDGK",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01KXG04MX6C96QT73HKMXSSXW9",
29
+ "renames": []
30
+ },
22
31
  "orb_01KXG04MX6C39A82D7NECQJ0X8": {
23
32
  "bakedName": "BreadcrumbOrbital",
24
33
  "curName": "BreadcrumbOrbital",
@@ -86,24 +95,23 @@
86
95
  "tier": "presentation",
87
96
  "type": "string"
88
97
  },
98
+ "fromNavStack": {
99
+ "default": false,
100
+ "description": "Render the current orbital's navigation stack (NavStackProvider) as the trail: one crumb per visited/declared level, last entry current. The stack is client-session state both execution paths maintain; outside a provider this renders nothing.",
101
+ "label": "From Nav Stack",
102
+ "tier": "presentation",
103
+ "type": "boolean"
104
+ },
105
+ "itemEvent": {
106
+ "default": "ITEM",
107
+ "description": "Event emitted when a non-current crumb is clicked, with payload `{ label, href, index }` — the trait handles it with `(navigate ?href)`. Without it, stack crumbs navigate directly.",
108
+ "label": "Item Event",
109
+ "tier": "presentation",
110
+ "type": "string"
111
+ },
89
112
  "items": {
90
- "default": [
91
- {
92
- "href": "Href",
93
- "icon": "circle",
94
- "isCurrent": false,
95
- "label": "Label",
96
- "path": "Path"
97
- },
98
- {
99
- "href": "Href 2",
100
- "icon": "circle",
101
- "isCurrent": true,
102
- "label": "Label 2",
103
- "path": "Path 2"
104
- }
105
- ],
106
- "description": "Breadcrumb items",
113
+ "default": [],
114
+ "description": "Breadcrumb items. Omit together with `fromNavStack` to render the orbital-scoped navigation stack instead of an authored trail.",
107
115
  "items": {
108
116
  "properties": {
109
117
  "event": {
@@ -156,6 +164,21 @@
156
164
  "type": "icon"
157
165
  }
158
166
  },
167
+ "emits": [
168
+ {
169
+ "description": "Event emitted when a non-current crumb is clicked, with payload `{ label, href, index }` — the trait handles it with `(navigate ?href)`. Without it, stack crumbs navigate directly.",
170
+ "event": "@config.itemEvent",
171
+ "eventId": "evt_01M0HZ7JXZT1B3WE2JVP75FDGK",
172
+ "payloadSchema": [
173
+ {
174
+ "name": "id",
175
+ "type": "string"
176
+ }
177
+ ],
178
+ "scope": "external",
179
+ "tier": "essential"
180
+ }
181
+ ],
159
182
  "entityContract": {
160
183
  "provides": [],
161
184
  "requires": []
@@ -175,6 +198,19 @@
175
198
  "id": "evt_01KXG04MX61JX4AMH0MQK0YQ6W",
176
199
  "key": "INIT",
177
200
  "name": "Initialize"
201
+ },
202
+ {
203
+ "description": "Event emitted when a non-current crumb is clicked, with payload `{ label, href, index }` — the trait handles it with `(navigate ?href)`. Without it, stack crumbs navigate directly.",
204
+ "id": "evt_01M0HZ7JXZT1B3WE2JVP75FDGK",
205
+ "key": "@config.itemEvent",
206
+ "name": "@config.item event",
207
+ "payloadSchema": [
208
+ {
209
+ "name": "id",
210
+ "type": "string"
211
+ }
212
+ ],
213
+ "tier": "essential"
178
214
  }
179
215
  ],
180
216
  "states": [
@@ -191,6 +227,8 @@
191
227
  "main",
192
228
  {
193
229
  "className": "@config.className",
230
+ "fromNavStack": "@config.fromNavStack",
231
+ "itemEvent": "@config.itemEvent",
194
232
  "items": "@config.items",
195
233
  "maxItems": "@config.maxItems",
196
234
  "separator": "@config.separator",
@@ -0,0 +1,281 @@
1
+ {
2
+ "description": "FxOverlay — UI factory (1:1 with the @almadar/ui fx-overlay pattern).",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01M0GQAE9VWWQQW98YDF0NXYAC": {
6
+ "bakedName": "FxOverlayItem",
7
+ "curName": "FxOverlayItem",
8
+ "id": "ent_01M0GQAE9VWWQQW98YDF0NXYAC",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01M0GQAE9VZDFQJSHRD0XV1TVB": {
14
+ "bakedName": "INIT",
15
+ "curName": "INIT",
16
+ "id": "evt_01M0GQAE9VZDFQJSHRD0XV1TVB",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01M0GQAE9VM32ZSENBMTYEAPST",
20
+ "renames": []
21
+ },
22
+ "orb_01M0GQAE9VFZPV4T0AXTFZJQKB": {
23
+ "bakedName": "FxOverlayOrbital",
24
+ "curName": "FxOverlayOrbital",
25
+ "id": "orb_01M0GQAE9VFZPV4T0AXTFZJQKB",
26
+ "kind": "orbital",
27
+ "owner": "workspace",
28
+ "renames": []
29
+ },
30
+ "pag_01M0GQAE9YGPXWS4092BVS3JQG": {
31
+ "bakedName": "FxOverlayPage",
32
+ "curName": "FxOverlayPage",
33
+ "id": "pag_01M0GQAE9YGPXWS4092BVS3JQG",
34
+ "kind": "page",
35
+ "owner": "workspace",
36
+ "renames": []
37
+ },
38
+ "trt_01M0GQAE9VM32ZSENBMTYEAPST": {
39
+ "bakedName": "FxOverlayRender",
40
+ "curName": "FxOverlayRender",
41
+ "id": "trt_01M0GQAE9VM32ZSENBMTYEAPST",
42
+ "kind": "trait",
43
+ "owner": "workspace",
44
+ "renames": []
45
+ }
46
+ },
47
+ "schemaVersion": 1
48
+ },
49
+ "name": "ui-fx-overlay",
50
+ "orbitals": [
51
+ {
52
+ "entity": {
53
+ "fields": [
54
+ {
55
+ "name": "id",
56
+ "required": true,
57
+ "type": "string"
58
+ }
59
+ ],
60
+ "id": "ent_01M0GQAE9VWWQQW98YDF0NXYAC",
61
+ "name": "FxOverlayItem",
62
+ "persistence": "runtime"
63
+ },
64
+ "id": "orb_01M0GQAE9VFZPV4T0AXTFZJQKB",
65
+ "name": "FxOverlayOrbital",
66
+ "pages": [
67
+ {
68
+ "id": "pag_01M0GQAE9YGPXWS4092BVS3JQG",
69
+ "name": "FxOverlayPage",
70
+ "path": "/fx-overlay",
71
+ "traits": [
72
+ {
73
+ "ref": "FxOverlayRender",
74
+ "refId": "trt_01M0GQAE9VM32ZSENBMTYEAPST"
75
+ }
76
+ ]
77
+ }
78
+ ],
79
+ "traits": [
80
+ {
81
+ "category": "interaction",
82
+ "config": {
83
+ "children": {
84
+ "description": "Wrapped content — the `shake` target and the overlay's bounds.",
85
+ "label": "Children",
86
+ "tier": "presentation",
87
+ "type": "node"
88
+ },
89
+ "className": {
90
+ "description": "Additional class names on the outermost element.",
91
+ "label": "Class Name",
92
+ "tier": "presentation",
93
+ "type": "string"
94
+ },
95
+ "items": {
96
+ "default": [
97
+ {
98
+ "id": "e1",
99
+ "message": "Unit spawned",
100
+ "type": "spawn",
101
+ "x": 2.0,
102
+ "y": 2.0
103
+ },
104
+ {
105
+ "id": "e2",
106
+ "message": "Attack landed",
107
+ "type": "effect",
108
+ "x": 3.0,
109
+ "y": 1.0
110
+ }
111
+ ],
112
+ "description": "Live screen-space fx entries (the mechanic's fx list filtered to `space == 'screen'`); mount starts each item's animation, ttl decay unmounts it.",
113
+ "items": {
114
+ "properties": {
115
+ "bornAt": {
116
+ "name": "bornAt",
117
+ "required": false,
118
+ "type": "number"
119
+ },
120
+ "color": {
121
+ "name": "color",
122
+ "required": false,
123
+ "type": "string"
124
+ },
125
+ "effect": {
126
+ "name": "effect",
127
+ "required": false,
128
+ "type": "string",
129
+ "values": [
130
+ "confetti",
131
+ "flash",
132
+ "shake",
133
+ "sparkle",
134
+ "float-text",
135
+ "streak-glow"
136
+ ]
137
+ },
138
+ "id": {
139
+ "name": "id",
140
+ "required": true,
141
+ "type": "string"
142
+ },
143
+ "maxTtl": {
144
+ "name": "maxTtl",
145
+ "required": false,
146
+ "type": "number"
147
+ },
148
+ "message": {
149
+ "name": "message",
150
+ "required": false,
151
+ "type": "string"
152
+ },
153
+ "particleCount": {
154
+ "name": "particleCount",
155
+ "required": false,
156
+ "type": "number"
157
+ },
158
+ "size": {
159
+ "name": "size",
160
+ "required": false,
161
+ "type": "number"
162
+ },
163
+ "space": {
164
+ "name": "space",
165
+ "required": false,
166
+ "type": "string",
167
+ "values": [
168
+ "world",
169
+ "screen"
170
+ ]
171
+ },
172
+ "ttl": {
173
+ "name": "ttl",
174
+ "required": true,
175
+ "type": "number"
176
+ },
177
+ "type": {
178
+ "name": "type",
179
+ "required": true,
180
+ "type": "string"
181
+ },
182
+ "vx": {
183
+ "name": "vx",
184
+ "required": false,
185
+ "type": "number"
186
+ },
187
+ "vy": {
188
+ "name": "vy",
189
+ "required": false,
190
+ "type": "number"
191
+ },
192
+ "vz": {
193
+ "name": "vz",
194
+ "required": false,
195
+ "type": "number"
196
+ },
197
+ "x": {
198
+ "name": "x",
199
+ "required": false,
200
+ "type": "number"
201
+ },
202
+ "y": {
203
+ "name": "y",
204
+ "required": false,
205
+ "type": "number"
206
+ },
207
+ "z": {
208
+ "name": "z",
209
+ "required": false,
210
+ "type": "number"
211
+ }
212
+ },
213
+ "type": "object"
214
+ },
215
+ "label": "Items",
216
+ "tier": "presentation",
217
+ "type": "[FxOverlayItemsItem]"
218
+ },
219
+ "tickMs": {
220
+ "description": "The fx mechanic's decay tick period in ms; per-item animation duration = maxTtl × tickMs. Default 500.",
221
+ "label": "Tick Ms",
222
+ "tier": "presentation",
223
+ "type": "number"
224
+ }
225
+ },
226
+ "entityContract": {
227
+ "provides": [],
228
+ "requires": []
229
+ },
230
+ "entityRebindable": true,
231
+ "entityRefIds": {
232
+ "FxOverlayItem": "ent_01M0GQAE9VWWQQW98YDF0NXYAC"
233
+ },
234
+ "id": "trt_01M0GQAE9VM32ZSENBMTYEAPST",
235
+ "linkedEntity": "FxOverlayItem",
236
+ "linkedEntityId": "ent_01M0GQAE9VWWQQW98YDF0NXYAC",
237
+ "name": "FxOverlayRender",
238
+ "scope": "instance",
239
+ "stateMachine": {
240
+ "events": [
241
+ {
242
+ "id": "evt_01M0GQAE9VZDFQJSHRD0XV1TVB",
243
+ "key": "INIT",
244
+ "name": "Initialize"
245
+ }
246
+ ],
247
+ "states": [
248
+ {
249
+ "isInitial": true,
250
+ "name": "idle"
251
+ }
252
+ ],
253
+ "transitions": [
254
+ {
255
+ "effects": [
256
+ [
257
+ "render-ui",
258
+ "main",
259
+ {
260
+ "children": "@config.children",
261
+ "className": "@config.className",
262
+ "items": "@config.items",
263
+ "tickMs": "@config.tickMs",
264
+ "type": "fx-overlay"
265
+ }
266
+ ]
267
+ ],
268
+ "event": "INIT",
269
+ "eventId": "evt_01M0GQAE9VZDFQJSHRD0XV1TVB",
270
+ "from": "idle",
271
+ "to": "idle"
272
+ }
273
+ ]
274
+ }
275
+ }
276
+ ]
277
+ }
278
+ ],
279
+ "schemaVersion": 1,
280
+ "version": "1.0.0"
281
+ }
@@ -247,7 +247,7 @@
247
247
  "type": "boolean"
248
248
  },
249
249
  "status": {
250
- "description": "Status badge",
250
+ "description": "Status badge — a bare string (an entity's status field bound directly, e.g. `status: @entity.status`) renders as a default-variant badge",
251
251
  "label": "Status",
252
252
  "properties": {
253
253
  "label": {
@@ -315,6 +315,12 @@
315
315
  "tier": "presentation",
316
316
  "type": "boolean"
317
317
  },
318
+ "maxInlineActions": {
319
+ "description": "Max inline action buttons before the rest collapse into a '⋯' overflow menu (mirrors DataGrid's maxInlineActions). Omit = all inline.",
320
+ "label": "Max Inline Actions",
321
+ "tier": "presentation",
322
+ "type": "number"
323
+ },
318
324
  "mode": {
319
325
  "description": "Display mode (passed by compiler)",
320
326
  "label": "Mode",
@@ -609,6 +615,7 @@
609
615
  "footer": "@config.footer",
610
616
  "initialData": "@entity",
611
617
  "isLoading": "@config.isLoading",
618
+ "maxInlineActions": "@config.maxInlineActions",
612
619
  "mode": "@config.mode",
613
620
  "page": "@config.pageProp",
614
621
  "pageSize": "@config.pageSize",
@@ -654,6 +661,7 @@
654
661
  "footer": "@config.footer",
655
662
  "initialData": "@payload.data",
656
663
  "isLoading": "@config.isLoading",
664
+ "maxInlineActions": "@config.maxInlineActions",
657
665
  "mode": "@config.mode",
658
666
  "page": "@config.pageProp",
659
667
  "pageSize": "@config.pageSize",
@@ -190,11 +190,17 @@
190
190
  "label": "Evaluation Context",
191
191
  "properties": {
192
192
  "entity": {
193
+ "items": {
194
+ "type": "object"
195
+ },
193
196
  "name": "entity",
194
197
  "required": false,
195
198
  "type": "object"
196
199
  },
197
200
  "formValues": {
201
+ "items": {
202
+ "type": "object"
203
+ },
198
204
  "name": "formValues",
199
205
  "required": true,
200
206
  "type": "object"
@@ -190,11 +190,17 @@
190
190
  "label": "Evaluation Context",
191
191
  "properties": {
192
192
  "entity": {
193
+ "items": {
194
+ "type": "object"
195
+ },
193
196
  "name": "entity",
194
197
  "required": false,
195
198
  "type": "object"
196
199
  },
197
200
  "formValues": {
201
+ "items": {
202
+ "type": "object"
203
+ },
198
204
  "name": "formValues",
199
205
  "required": true,
200
206
  "type": "object"
@@ -335,7 +335,7 @@
335
335
  "type": "[DashboardLayoutTopBarActionsItem]"
336
336
  },
337
337
  "user": {
338
- "description": "Current user info (optional - auto-populated from auth context if not provided)",
338
+ "description": "Current user info (optional - auto-populated from auth context if not provided). Accepts `null` as well as `undefined`: the `.lolo` substrate's signed-out spelling is `(if @config.viewerName {…} null)`, and the compiled path passes that `null` through verbatim.",
339
339
  "label": "User",
340
340
  "properties": {
341
341
  "avatar": {
@@ -345,7 +345,7 @@
345
345
  },
346
346
  "email": {
347
347
  "name": "email",
348
- "required": true,
348
+ "required": false,
349
349
  "type": "string"
350
350
  },
351
351
  "name": {