@almadar/std 16.151.0 → 16.153.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 (151) hide show
  1. package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +5 -1
  2. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +15 -4
  3. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +12 -0
  4. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +56 -0
  5. package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +39 -0
  6. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +11 -0
  7. package/behaviors/lolo/ui/game/atoms/ui-draw-group.lolo +54 -0
  8. package/behaviors/lolo/ui/game/atoms/ui-draw-shape.lolo +6 -1
  9. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +2 -2
  10. package/behaviors/lolo/ui/game/atoms/ui-svg-draw-group.lolo +58 -0
  11. package/behaviors/lolo/ui/game/atoms/ui-svg-draw-shape.lolo +103 -0
  12. package/behaviors/lolo/ui/game/atoms/ui-svg-draw-text.lolo +58 -0
  13. package/behaviors/lolo/ui/game/molecules/ui-canvas-2d.lolo +11 -1
  14. package/behaviors/lolo/ui/game/molecules/ui-canvas.lolo +10 -0
  15. package/behaviors/lolo/ui/game/molecules/ui-draw-shape-layer.lolo +3 -2
  16. package/behaviors/lolo/ui/game/molecules/ui-svg-draw-shape-layer.lolo +52 -0
  17. package/behaviors/lolo/ui/game/molecules/ui-svg-stage.lolo +98 -0
  18. package/behaviors/lolo/ui/game/organisms/ui-fishing-board.lolo +8 -8
  19. package/behaviors/lolo/ui/game/organisms/ui-physics-sandbox-board.lolo +5 -5
  20. package/behaviors/lolo/ui/game/organisms/ui-roguelike-board.lolo +5 -5
  21. package/behaviors/lolo/ui/game/organisms/ui-sokoban-board.lolo +5 -5
  22. package/behaviors/lolo/ui/game/organisms/ui-state-architect-board.lolo +4 -4
  23. package/behaviors/lolo/ui/game/organisms/ui-winter-ski-board.lolo +7 -7
  24. package/behaviors/registry/factory-signatures.json +6211 -2181
  25. package/behaviors/registry/infra/atoms/std-approval-gate.orb +16 -8
  26. package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
  27. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
  28. package/behaviors/registry/infra/atoms/std-data-erasure.orb +17 -9
  29. package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
  30. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
  31. package/behaviors/registry/ml/molecules/std-escalating-decision.orb +10 -5
  32. package/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +4 -2
  33. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
  34. package/behaviors/registry/ui/core/atoms/std-browse.orb +108 -28
  35. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
  36. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
  37. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
  38. package/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
  39. package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
  40. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +21 -0
  41. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +214 -0
  42. package/behaviors/registry/ui/core/molecules/ui-popover.orb +112 -1
  43. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +44 -0
  44. package/behaviors/registry/ui/game/atoms/std-arcade-flow.orb +1 -0
  45. package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -0
  46. package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -0
  47. package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -0
  48. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -0
  49. package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -0
  50. package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -0
  51. package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -0
  52. package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -0
  53. package/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -0
  54. package/behaviors/registry/ui/game/atoms/std-objective-flow.orb +1 -0
  55. package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -0
  56. package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -0
  57. package/behaviors/registry/ui/game/atoms/std-production.orb +1 -0
  58. package/behaviors/registry/ui/game/atoms/std-round-flow.orb +1 -0
  59. package/behaviors/registry/ui/game/atoms/std-score.orb +1 -0
  60. package/behaviors/registry/ui/game/atoms/std-survival-flow.orb +1 -0
  61. package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -0
  62. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +196 -0
  63. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +9 -1
  64. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +2 -2
  65. package/behaviors/registry/ui/game/atoms/ui-svg-draw-group.orb +186 -0
  66. package/behaviors/registry/ui/game/atoms/ui-svg-draw-shape.orb +259 -0
  67. package/behaviors/registry/ui/game/atoms/ui-svg-draw-text.orb +195 -0
  68. package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -3
  69. package/behaviors/registry/ui/game/molecules/ui-canvas-2d.orb +16 -1
  70. package/behaviors/registry/ui/game/molecules/ui-canvas.orb +14 -0
  71. package/behaviors/registry/ui/game/molecules/ui-draw-shape-layer.orb +9 -1
  72. package/behaviors/registry/ui/game/molecules/ui-svg-draw-shape-layer.orb +188 -0
  73. package/behaviors/registry/ui/game/molecules/ui-svg-stage.orb +362 -0
  74. package/behaviors/registry/ui/game/organisms/ui-fishing-board.orb +16 -16
  75. package/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +10 -10
  76. package/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +10 -10
  77. package/behaviors/registry/ui/game/organisms/ui-sokoban-board.orb +10 -10
  78. package/behaviors/registry/ui/game/organisms/ui-state-architect-board.orb +8 -8
  79. package/behaviors/registry/ui/game/organisms/ui-winter-ski-board.orb +14 -14
  80. package/dist/behaviors/behaviors-embeddings.json +371 -343
  81. package/dist/behaviors/behaviors-registry.json +4851 -2388
  82. package/dist/behaviors/exports-reader.js +3409 -3101
  83. package/dist/behaviors/functions/index.d.ts +609 -6
  84. package/dist/behaviors/functions/index.js +3389 -3102
  85. package/dist/behaviors/index.d.ts +1 -1
  86. package/dist/behaviors/index.js +3410 -3102
  87. package/dist/behaviors/knob-embeddings.json +1 -1
  88. package/dist/behaviors/query.js +3409 -3101
  89. package/dist/behaviors/registry/factory-signatures.json +6211 -2181
  90. package/dist/behaviors/registry/infra/atoms/std-approval-gate.orb +16 -8
  91. package/dist/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
  92. package/dist/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
  93. package/dist/behaviors/registry/infra/atoms/std-data-erasure.orb +17 -9
  94. package/dist/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
  95. package/dist/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
  96. package/dist/behaviors/registry/ml/molecules/std-escalating-decision.orb +10 -5
  97. package/dist/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +4 -2
  98. package/dist/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
  99. package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +108 -28
  100. package/dist/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
  101. package/dist/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
  102. package/dist/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
  103. package/dist/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
  104. package/dist/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
  105. package/dist/behaviors/registry/ui/core/molecules/ui-data-list.orb +21 -0
  106. package/dist/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +214 -0
  107. package/dist/behaviors/registry/ui/core/molecules/ui-popover.orb +112 -1
  108. package/dist/behaviors/registry/ui/core/molecules/ui-table-view.orb +44 -0
  109. package/dist/behaviors/registry/ui/game/atoms/std-arcade-flow.orb +1 -0
  110. package/dist/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -0
  111. package/dist/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -0
  112. package/dist/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -0
  113. package/dist/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -0
  114. package/dist/behaviors/registry/ui/game/atoms/std-gather.orb +1 -0
  115. package/dist/behaviors/registry/ui/game/atoms/std-gold.orb +1 -0
  116. package/dist/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -0
  117. package/dist/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -0
  118. package/dist/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -0
  119. package/dist/behaviors/registry/ui/game/atoms/std-objective-flow.orb +1 -0
  120. package/dist/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -0
  121. package/dist/behaviors/registry/ui/game/atoms/std-patience.orb +1 -0
  122. package/dist/behaviors/registry/ui/game/atoms/std-production.orb +1 -0
  123. package/dist/behaviors/registry/ui/game/atoms/std-round-flow.orb +1 -0
  124. package/dist/behaviors/registry/ui/game/atoms/std-score.orb +1 -0
  125. package/dist/behaviors/registry/ui/game/atoms/std-survival-flow.orb +1 -0
  126. package/dist/behaviors/registry/ui/game/atoms/std-xp.orb +1 -0
  127. package/dist/behaviors/registry/ui/game/atoms/ui-draw-group.orb +196 -0
  128. package/dist/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +9 -1
  129. package/dist/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +2 -2
  130. package/dist/behaviors/registry/ui/game/atoms/ui-svg-draw-group.orb +186 -0
  131. package/dist/behaviors/registry/ui/game/atoms/ui-svg-draw-shape.orb +259 -0
  132. package/dist/behaviors/registry/ui/game/atoms/ui-svg-draw-text.orb +195 -0
  133. package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -3
  134. package/dist/behaviors/registry/ui/game/molecules/ui-canvas-2d.orb +16 -1
  135. package/dist/behaviors/registry/ui/game/molecules/ui-canvas.orb +14 -0
  136. package/dist/behaviors/registry/ui/game/molecules/ui-draw-shape-layer.orb +9 -1
  137. package/dist/behaviors/registry/ui/game/molecules/ui-svg-draw-shape-layer.orb +188 -0
  138. package/dist/behaviors/registry/ui/game/molecules/ui-svg-stage.orb +362 -0
  139. package/dist/behaviors/registry/ui/game/organisms/ui-fishing-board.orb +16 -16
  140. package/dist/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +10 -10
  141. package/dist/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +10 -10
  142. package/dist/behaviors/registry/ui/game/organisms/ui-sokoban-board.orb +10 -10
  143. package/dist/behaviors/registry/ui/game/organisms/ui-state-architect-board.orb +8 -8
  144. package/dist/behaviors/registry/ui/game/organisms/ui-winter-ski-board.orb +14 -14
  145. package/dist/behaviors-embeddings.json +371 -343
  146. package/dist/behaviors-registry.json +4851 -2388
  147. package/dist/index.d.ts +1 -1
  148. package/dist/index.js +3410 -3102
  149. package/dist/knob-embeddings.json +1 -1
  150. package/dist/registry/factory-signatures.json +6211 -2181
  151. package/package.json +2 -2
@@ -489,6 +489,23 @@
489
489
  "tier": "presentation",
490
490
  "type": "string"
491
491
  },
492
+ "sortBy": {
493
+ "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.",
494
+ "label": "Sort By",
495
+ "tier": "presentation",
496
+ "type": "string"
497
+ },
498
+ "sortDirection": {
499
+ "default": "asc",
500
+ "description": "Direction for `sortBy`. Defaults to ascending.",
501
+ "label": "Sort Direction",
502
+ "tier": "presentation",
503
+ "type": "string",
504
+ "values": [
505
+ "asc",
506
+ "desc"
507
+ ]
508
+ },
492
509
  "sortable": {
493
510
  "description": "Enable in-container reorder; items can be dragged to new positions among siblings",
494
511
  "label": "Sortable",
@@ -873,6 +890,8 @@
873
890
  "reorderable": "@config.reorderable",
874
891
  "senderField": "@config.senderField",
875
892
  "senderLabelField": "@config.senderLabelField",
893
+ "sortBy": "@config.sortBy",
894
+ "sortDirection": "@config.sortDirection",
876
895
  "sortable": "@config.sortable",
877
896
  "swipeLeftActions": "@config.swipeLeftActions",
878
897
  "swipeLeftEvent": "@config.swipeLeftEvent",
@@ -923,6 +942,8 @@
923
942
  "reorderable": "@config.reorderable",
924
943
  "senderField": "@config.senderField",
925
944
  "senderLabelField": "@config.senderLabelField",
945
+ "sortBy": "@config.sortBy",
946
+ "sortDirection": "@config.sortDirection",
926
947
  "sortable": "@config.sortable",
927
948
  "swipeLeftActions": "@config.swipeLeftActions",
928
949
  "swipeLeftEvent": "@config.swipeLeftEvent",
@@ -0,0 +1,214 @@
1
+ {
2
+ "description": "EmojiPicker — UI factory (1:1 with the @almadar/ui emoji-picker pattern).",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01KYQH4C3Q9BVPB3K23JCEX9A4": {
6
+ "bakedName": "EmojiPickerItem",
7
+ "curName": "EmojiPickerItem",
8
+ "id": "ent_01KYQH4C3Q9BVPB3K23JCEX9A4",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01KYQH4C3Q8PNKE9JWBWBV1MJY": {
14
+ "bakedName": "INIT",
15
+ "curName": "INIT",
16
+ "id": "evt_01KYQH4C3Q8PNKE9JWBWBV1MJY",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01KYQH4C3QDP4SZTQXM1REWR2C",
20
+ "renames": []
21
+ },
22
+ "evt_01KYQH4C422XMP60F6KRA0A70N": {
23
+ "bakedName": "@config.pickEvent",
24
+ "curName": "@config.pickEvent",
25
+ "id": "evt_01KYQH4C422XMP60F6KRA0A70N",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01KYQH4C3QDP4SZTQXM1REWR2C",
29
+ "renames": []
30
+ },
31
+ "orb_01KYQH4C3QSJA8JK76ZYH10CMT": {
32
+ "bakedName": "EmojiPickerOrbital",
33
+ "curName": "EmojiPickerOrbital",
34
+ "id": "orb_01KYQH4C3QSJA8JK76ZYH10CMT",
35
+ "kind": "orbital",
36
+ "owner": "workspace",
37
+ "renames": []
38
+ },
39
+ "pag_01KYQH4C43QP034T5Y20CFKP8C": {
40
+ "bakedName": "EmojiPickerPage",
41
+ "curName": "EmojiPickerPage",
42
+ "id": "pag_01KYQH4C43QP034T5Y20CFKP8C",
43
+ "kind": "page",
44
+ "owner": "workspace",
45
+ "renames": []
46
+ },
47
+ "trt_01KYQH4C3QDP4SZTQXM1REWR2C": {
48
+ "bakedName": "EmojiPickerRender",
49
+ "curName": "EmojiPickerRender",
50
+ "id": "trt_01KYQH4C3QDP4SZTQXM1REWR2C",
51
+ "kind": "trait",
52
+ "owner": "workspace",
53
+ "renames": []
54
+ }
55
+ },
56
+ "schemaVersion": 1
57
+ },
58
+ "name": "ui-emoji-picker",
59
+ "orbitals": [
60
+ {
61
+ "entity": {
62
+ "fields": [
63
+ {
64
+ "name": "id",
65
+ "required": true,
66
+ "type": "string"
67
+ }
68
+ ],
69
+ "id": "ent_01KYQH4C3Q9BVPB3K23JCEX9A4",
70
+ "name": "EmojiPickerItem",
71
+ "persistence": "runtime"
72
+ },
73
+ "id": "orb_01KYQH4C3QSJA8JK76ZYH10CMT",
74
+ "name": "EmojiPickerOrbital",
75
+ "pages": [
76
+ {
77
+ "id": "pag_01KYQH4C43QP034T5Y20CFKP8C",
78
+ "name": "EmojiPickerPage",
79
+ "path": "/emoji-picker",
80
+ "traits": [
81
+ {
82
+ "ref": "EmojiPickerRender",
83
+ "refId": "trt_01KYQH4C3QDP4SZTQXM1REWR2C"
84
+ }
85
+ ]
86
+ }
87
+ ],
88
+ "traits": [
89
+ {
90
+ "category": "interaction",
91
+ "config": {
92
+ "className": {
93
+ "description": "Additional CSS classes applied to the trigger button",
94
+ "label": "Class Name",
95
+ "tier": "presentation",
96
+ "type": "string"
97
+ },
98
+ "pickEvent": {
99
+ "default": "PICK",
100
+ "description": "Declarative event name — picking an emoji emits UI:{pickEvent} with { emoji } via eventBus",
101
+ "label": "Pick Event",
102
+ "tier": "presentation",
103
+ "type": "string"
104
+ },
105
+ "position": {
106
+ "default": "top",
107
+ "description": "Which side of the trigger the panel opens on",
108
+ "label": "Position",
109
+ "tier": "presentation",
110
+ "type": "string",
111
+ "values": [
112
+ "top",
113
+ "bottom"
114
+ ]
115
+ },
116
+ "triggerIcon": {
117
+ "description": "Icon shown on the trigger button",
118
+ "label": "Trigger Icon",
119
+ "tier": "presentation",
120
+ "type": "icon"
121
+ },
122
+ "triggerLabel": {
123
+ "default": "Add emoji",
124
+ "description": "Accessible label for the trigger button",
125
+ "label": "Trigger Label",
126
+ "tier": "presentation",
127
+ "type": "string"
128
+ }
129
+ },
130
+ "emits": [
131
+ {
132
+ "description": "Declarative event name — picking an emoji emits UI:{pickEvent} with { emoji } via eventBus",
133
+ "event": "@config.pickEvent",
134
+ "eventId": "evt_01KYQH4C422XMP60F6KRA0A70N",
135
+ "payloadSchema": [
136
+ {
137
+ "name": "id",
138
+ "type": "string"
139
+ }
140
+ ],
141
+ "scope": "external",
142
+ "tier": "essential"
143
+ }
144
+ ],
145
+ "entityContract": {
146
+ "provides": [],
147
+ "requires": []
148
+ },
149
+ "entityRebindable": true,
150
+ "entityRefIds": {
151
+ "EmojiPickerItem": "ent_01KYQH4C3Q9BVPB3K23JCEX9A4"
152
+ },
153
+ "id": "trt_01KYQH4C3QDP4SZTQXM1REWR2C",
154
+ "linkedEntity": "EmojiPickerItem",
155
+ "linkedEntityId": "ent_01KYQH4C3Q9BVPB3K23JCEX9A4",
156
+ "name": "EmojiPickerRender",
157
+ "scope": "instance",
158
+ "stateMachine": {
159
+ "events": [
160
+ {
161
+ "id": "evt_01KYQH4C3Q8PNKE9JWBWBV1MJY",
162
+ "key": "INIT",
163
+ "name": "Initialize"
164
+ },
165
+ {
166
+ "description": "Declarative event name — picking an emoji emits UI:{pickEvent} with { emoji } via eventBus",
167
+ "id": "evt_01KYQH4C422XMP60F6KRA0A70N",
168
+ "key": "@config.pickEvent",
169
+ "name": "@config.pick event",
170
+ "payloadSchema": [
171
+ {
172
+ "name": "id",
173
+ "type": "string"
174
+ }
175
+ ],
176
+ "tier": "essential"
177
+ }
178
+ ],
179
+ "states": [
180
+ {
181
+ "isInitial": true,
182
+ "name": "idle"
183
+ }
184
+ ],
185
+ "transitions": [
186
+ {
187
+ "effects": [
188
+ [
189
+ "render-ui",
190
+ "main",
191
+ {
192
+ "className": "@config.className",
193
+ "pickEvent": "@config.pickEvent",
194
+ "position": "@config.position",
195
+ "triggerIcon": "@config.triggerIcon",
196
+ "triggerLabel": "@config.triggerLabel",
197
+ "type": "emoji-picker"
198
+ }
199
+ ]
200
+ ],
201
+ "event": "INIT",
202
+ "eventId": "evt_01KYQH4C3Q8PNKE9JWBWBV1MJY",
203
+ "from": "idle",
204
+ "to": "idle"
205
+ }
206
+ ]
207
+ }
208
+ }
209
+ ]
210
+ }
211
+ ],
212
+ "schemaVersion": 1,
213
+ "version": "1.0.0"
214
+ }
@@ -19,6 +19,24 @@
19
19
  "parent": "trt_01KXG04QHPHB07PFRVRXWCZZZ3",
20
20
  "renames": []
21
21
  },
22
+ "evt_01KYQH4C8T000A3RVFDAXSCAXR": {
23
+ "bakedName": "OPEN_CHANGE",
24
+ "curName": "OPEN_CHANGE",
25
+ "id": "evt_01KYQH4C8T000A3RVFDAXSCAXR",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01KXG04QHPHB07PFRVRXWCZZZ3",
29
+ "renames": []
30
+ },
31
+ "evt_01KYQH4C8TH1DGZ4141EYBQ2JG": {
32
+ "bakedName": "@config.onOpenChange",
33
+ "curName": "@config.onOpenChange",
34
+ "id": "evt_01KYQH4C8TH1DGZ4141EYBQ2JG",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01KXG04QHPHB07PFRVRXWCZZZ3",
38
+ "renames": []
39
+ },
22
40
  "orb_01KXG04QHN73J68Z4BJMKERHWN": {
23
41
  "bakedName": "PopoverOrbital",
24
42
  "curName": "PopoverOrbital",
@@ -55,6 +73,10 @@
55
73
  "name": "id",
56
74
  "required": true,
57
75
  "type": "string"
76
+ },
77
+ {
78
+ "name": "open",
79
+ "type": "boolean"
58
80
  }
59
81
  ],
60
82
  "id": "ent_01KXG04QHPFXYX2GXK0M1509YJ",
@@ -98,6 +120,19 @@
98
120
  "tier": "presentation",
99
121
  "type": "node"
100
122
  },
123
+ "onOpenChange": {
124
+ "default": "OPEN_CHANGE",
125
+ "description": "Fired when the popover wants to change visibility (trigger click, outside click)",
126
+ "label": "On Open Change",
127
+ "tier": "presentation",
128
+ "type": "string"
129
+ },
130
+ "open": {
131
+ "description": "Controlled open state. When set, the host owns visibility and the popover reports intent through onOpenChange instead of toggling itself.",
132
+ "label": "Open",
133
+ "tier": "presentation",
134
+ "type": "boolean"
135
+ },
101
136
  "position": {
102
137
  "default": "bottom",
103
138
  "description": "Popover position",
@@ -130,8 +165,25 @@
130
165
  ]
131
166
  }
132
167
  },
168
+ "emits": [
169
+ {
170
+ "description": "Fired when the popover wants to change visibility (trigger click, outside click)",
171
+ "event": "@config.onOpenChange",
172
+ "eventId": "evt_01KYQH4C8TH1DGZ4141EYBQ2JG",
173
+ "payloadSchema": [
174
+ {
175
+ "name": "open",
176
+ "type": "boolean"
177
+ }
178
+ ],
179
+ "scope": "external",
180
+ "tier": "essential"
181
+ }
182
+ ],
133
183
  "entityContract": {
134
- "provides": [],
184
+ "provides": [
185
+ "open"
186
+ ],
135
187
  "requires": []
136
188
  },
137
189
  "entityRebindable": true,
@@ -149,6 +201,30 @@
149
201
  "id": "evt_01KXG04QHPR5WWNS2YTHXGN3V7",
150
202
  "key": "INIT",
151
203
  "name": "Initialize"
204
+ },
205
+ {
206
+ "id": "evt_01KYQH4C8T000A3RVFDAXSCAXR",
207
+ "key": "OPEN_CHANGE",
208
+ "name": "Open Change",
209
+ "payloadSchema": [
210
+ {
211
+ "name": "open",
212
+ "type": "boolean"
213
+ }
214
+ ]
215
+ },
216
+ {
217
+ "description": "Fired when the popover wants to change visibility (trigger click, outside click)",
218
+ "id": "evt_01KYQH4C8TH1DGZ4141EYBQ2JG",
219
+ "key": "@config.onOpenChange",
220
+ "name": "@config.on open change",
221
+ "payloadSchema": [
222
+ {
223
+ "name": "open",
224
+ "type": "boolean"
225
+ }
226
+ ],
227
+ "tier": "essential"
152
228
  }
153
229
  ],
154
230
  "states": [
@@ -160,6 +236,11 @@
160
236
  "transitions": [
161
237
  {
162
238
  "effects": [
239
+ [
240
+ "set",
241
+ "@entity.open",
242
+ "@config.open"
243
+ ],
163
244
  [
164
245
  "render-ui",
165
246
  "main",
@@ -167,6 +248,8 @@
167
248
  "children": "@config.children",
168
249
  "className": "@config.className",
169
250
  "content": "@config.content",
251
+ "onOpenChange": "@config.onOpenChange",
252
+ "open": "@entity.open",
170
253
  "position": "@config.position",
171
254
  "showArrow": "@config.showArrow",
172
255
  "trigger": "@config.trigger",
@@ -178,6 +261,34 @@
178
261
  "eventId": "evt_01KXG04QHPR5WWNS2YTHXGN3V7",
179
262
  "from": "idle",
180
263
  "to": "idle"
264
+ },
265
+ {
266
+ "effects": [
267
+ [
268
+ "set",
269
+ "@entity.open",
270
+ "@payload.open"
271
+ ],
272
+ [
273
+ "render-ui",
274
+ "main",
275
+ {
276
+ "children": "@config.children",
277
+ "className": "@config.className",
278
+ "content": "@config.content",
279
+ "onOpenChange": "@config.onOpenChange",
280
+ "open": "@entity.open",
281
+ "position": "@config.position",
282
+ "showArrow": "@config.showArrow",
283
+ "trigger": "@config.trigger",
284
+ "type": "popover"
285
+ }
286
+ ]
287
+ ],
288
+ "event": "OPEN_CHANGE",
289
+ "eventId": "evt_01KYQH4C8T000A3RVFDAXSCAXR",
290
+ "from": "idle",
291
+ "to": "idle"
181
292
  }
182
293
  ]
183
294
  }
@@ -55,6 +55,15 @@
55
55
  "parent": "trt_01KXG04RSAMGZ70BX7E6M2EKPH",
56
56
  "renames": []
57
57
  },
58
+ "evt_01KYQ93WDMPFGCAXSHZQ4RAVKK": {
59
+ "bakedName": "@config.itemClickEvent",
60
+ "curName": "@config.itemClickEvent",
61
+ "id": "evt_01KYQ93WDMPFGCAXSHZQ4RAVKK",
62
+ "kind": "event",
63
+ "owner": "workspace",
64
+ "parent": "trt_01KXG04RSAMGZ70BX7E6M2EKPH",
65
+ "renames": []
66
+ },
58
67
  "orb_01KXG04RSAMH7355J2NZQRJWY9": {
59
68
  "bakedName": "TableViewOrbital",
60
69
  "curName": "TableViewOrbital",
@@ -407,6 +416,13 @@
407
416
  "tier": "presentation",
408
417
  "type": "[TableViewItemActionsItem]"
409
418
  },
419
+ "itemClickEvent": {
420
+ "default": "ITEM_CLICK",
421
+ "description": "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract.",
422
+ "label": "Item Click Event",
423
+ "tier": "presentation",
424
+ "type": "string"
425
+ },
410
426
  "look": {
411
427
  "default": "dense",
412
428
  "description": "Layer 2 visual treatment — mirrors the data-list / entity-table look enum so authors share one knob name across row renderers.",
@@ -502,6 +518,19 @@
502
518
  }
503
519
  },
504
520
  "emits": [
521
+ {
522
+ "description": "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract.",
523
+ "event": "@config.itemClickEvent",
524
+ "eventId": "evt_01KYQ93WDMPFGCAXSHZQ4RAVKK",
525
+ "payloadSchema": [
526
+ {
527
+ "name": "id",
528
+ "type": "string"
529
+ }
530
+ ],
531
+ "scope": "external",
532
+ "tier": "essential"
533
+ },
505
534
  {
506
535
  "description": "Event emitted on selection change: UI:{selectEvent} with { ids, rows }.",
507
536
  "event": "@config.selectEvent",
@@ -590,6 +619,19 @@
590
619
  "synonyms": "loaded, fetched, retrieved",
591
620
  "tier": "essential"
592
621
  },
622
+ {
623
+ "description": "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract.",
624
+ "id": "evt_01KYQ93WDMPFGCAXSHZQ4RAVKK",
625
+ "key": "@config.itemClickEvent",
626
+ "name": "@config.item click event",
627
+ "payloadSchema": [
628
+ {
629
+ "name": "id",
630
+ "type": "string"
631
+ }
632
+ ],
633
+ "tier": "essential"
634
+ },
593
635
  {
594
636
  "description": "Event emitted on selection change: UI:{selectEvent} with { ids, rows }.",
595
637
  "id": "evt_01KXG04RSDTCZQPH74KHHQR5MZ",
@@ -666,6 +708,7 @@
666
708
  "groupBy": "@config.groupBy",
667
709
  "isLoading": "@config.isLoading",
668
710
  "itemActions": "@config.itemActions",
711
+ "itemClickEvent": "@config.itemClickEvent",
669
712
  "look": "@config.look",
670
713
  "maxInlineActions": "@config.maxInlineActions",
671
714
  "pageSize": "@config.pageSize",
@@ -707,6 +750,7 @@
707
750
  "groupBy": "@config.groupBy",
708
751
  "isLoading": "@config.isLoading",
709
752
  "itemActions": "@config.itemActions",
753
+ "itemClickEvent": "@config.itemClickEvent",
710
754
  "look": "@config.look",
711
755
  "maxInlineActions": "@config.maxInlineActions",
712
756
  "pageSize": "@config.pageSize",
@@ -158,6 +158,7 @@
158
158
  "linkedEntity": "ArcadeFlowData",
159
159
  "linkedEntityId": "ent_01KXG04TDX07HTCNYVNDHC53RK",
160
160
  "name": "ArcadeFlow",
161
+ "scope": "instance",
161
162
  "stateMachine": {
162
163
  "events": [
163
164
  {
@@ -280,6 +280,7 @@
280
280
  "linkedEntity": "ArcadePlayData",
281
281
  "linkedEntityId": "ent_01KXG04TEBH2S8F34K30KH30N1",
282
282
  "name": "ArcadePlay",
283
+ "scope": "instance",
283
284
  "stateMachine": {
284
285
  "events": [
285
286
  {
@@ -334,6 +334,7 @@
334
334
  "linkedEntity": "ChaseState",
335
335
  "linkedEntityId": "ent_01KXG04TEWGVEGGK1NQKS6APGC",
336
336
  "name": "ChaseAi",
337
+ "scope": "instance",
337
338
  "stateMachine": {
338
339
  "events": [
339
340
  {
@@ -433,6 +433,7 @@
433
433
  "linkedEntity": "DungeonCombatData",
434
434
  "linkedEntityId": "ent_01KXG04TFHJXHJH03SBR5C2V8Q",
435
435
  "name": "DungeonCombat",
436
+ "scope": "instance",
436
437
  "stateMachine": {
437
438
  "events": [
438
439
  {
@@ -211,6 +211,7 @@
211
211
  "linkedEntity": "FxState",
212
212
  "linkedEntityId": "ent_01KXG04TFZP9QXE9KF516SP9KC",
213
213
  "name": "FxParticles",
214
+ "scope": "instance",
214
215
  "stateMachine": {
215
216
  "events": [
216
217
  {
@@ -436,6 +436,7 @@
436
436
  "linkedEntity": "GatherData",
437
437
  "linkedEntityId": "ent_01KXG04TGGZJHPYRRS81F9PP09",
438
438
  "name": "Gather",
439
+ "scope": "instance",
439
440
  "stateMachine": {
440
441
  "events": [
441
442
  {
@@ -165,6 +165,7 @@
165
165
  "linkedEntity": "GoldData",
166
166
  "linkedEntityId": "ent_01KXG04TH3Y6NVBGH0NAHJSXNN",
167
167
  "name": "GoldMine",
168
+ "scope": "instance",
168
169
  "stateMachine": {
169
170
  "events": [
170
171
  {
@@ -416,6 +416,7 @@
416
416
  "linkedEntity": "TacticsState",
417
417
  "linkedEntityId": "ent_01KXG04THRXWP7JG6D7NKVW1RQ",
418
418
  "name": "GridTactics",
419
+ "scope": "instance",
419
420
  "stateMachine": {
420
421
  "events": [
421
422
  {
@@ -394,6 +394,7 @@
394
394
  "linkedEntity": "HeroNavData",
395
395
  "linkedEntityId": "ent_01KXG04TJB0VKAFAXTSAQ751BT",
396
396
  "name": "HeroNav",
397
+ "scope": "instance",
397
398
  "stateMachine": {
398
399
  "events": [
399
400
  {
@@ -165,6 +165,7 @@
165
165
  "linkedEntity": "MarketFlowData",
166
166
  "linkedEntityId": "ent_01KXG04TJW5RCS4DQVWH384F5W",
167
167
  "name": "MarketFlow",
168
+ "scope": "instance",
168
169
  "stateMachine": {
169
170
  "events": [
170
171
  {
@@ -151,6 +151,7 @@
151
151
  "linkedEntity": "FlowState",
152
152
  "linkedEntityId": "ent_01KXG04TKBJ5BFB1E634XZRG5Z",
153
153
  "name": "ObjectiveFlow",
154
+ "scope": "instance",
154
155
  "stateMachine": {
155
156
  "events": [
156
157
  {
@@ -441,6 +441,7 @@
441
441
  "linkedEntity": "ObjectiveState",
442
442
  "linkedEntityId": "ent_01KXG04TKT589Q8E6DEHJMMF61",
443
443
  "name": "ObjectiveReach",
444
+ "scope": "instance",
444
445
  "stateMachine": {
445
446
  "events": [
446
447
  {
@@ -451,6 +451,7 @@
451
451
  "linkedEntity": "PatienceData",
452
452
  "linkedEntityId": "ent_01KXG04TMDA7KDAZVATM3XK8K0",
453
453
  "name": "Patience",
454
+ "scope": "instance",
454
455
  "stateMachine": {
455
456
  "events": [
456
457
  {
@@ -243,6 +243,7 @@
243
243
  "linkedEntity": "ProductionState",
244
244
  "linkedEntityId": "ent_01KXG04TMX5VXK8YE9TAHMXSMW",
245
245
  "name": "Producer",
246
+ "scope": "instance",
246
247
  "stateMachine": {
247
248
  "events": [
248
249
  {
@@ -141,6 +141,7 @@
141
141
  "linkedEntity": "RoundState",
142
142
  "linkedEntityId": "ent_01KXG04TNC4MHVDJM20C3DJKX1",
143
143
  "name": "RoundFlow",
144
+ "scope": "instance",
144
145
  "stateMachine": {
145
146
  "events": [
146
147
  {
@@ -144,6 +144,7 @@
144
144
  "linkedEntity": "ScoreState",
145
145
  "linkedEntityId": "ent_01KXG04TNSC9WJATDGG5AES67C",
146
146
  "name": "ScoreKeeper",
147
+ "scope": "instance",
147
148
  "stateMachine": {
148
149
  "events": [
149
150
  {
@@ -160,6 +160,7 @@
160
160
  "linkedEntity": "SurvivalFlowData",
161
161
  "linkedEntityId": "ent_01KXG04TP606Z9Y15XFV49JRM1",
162
162
  "name": "SurvivalFlow",
163
+ "scope": "instance",
163
164
  "stateMachine": {
164
165
  "events": [
165
166
  {