@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
@@ -0,0 +1,259 @@
1
+ {
2
+ "description": "SvgDrawShape — UI factory (1:1 with the @almadar/ui svg-draw-shape pattern).",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01KYMKTF3TQSHVDC76J06N5NCE": {
6
+ "bakedName": "SvgDrawShapeItem",
7
+ "curName": "SvgDrawShapeItem",
8
+ "id": "ent_01KYMKTF3TQSHVDC76J06N5NCE",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01KYMKTF3TKA2772N1N9CNSCPJ": {
14
+ "bakedName": "INIT",
15
+ "curName": "INIT",
16
+ "id": "evt_01KYMKTF3TKA2772N1N9CNSCPJ",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01KYMKTF3TT3YY4G7HJP7K7RJW",
20
+ "renames": []
21
+ },
22
+ "orb_01KYMKTF3TZSC5FY0F8SRMZ6D5": {
23
+ "bakedName": "SvgDrawShapeOrbital",
24
+ "curName": "SvgDrawShapeOrbital",
25
+ "id": "orb_01KYMKTF3TZSC5FY0F8SRMZ6D5",
26
+ "kind": "orbital",
27
+ "owner": "workspace",
28
+ "renames": []
29
+ },
30
+ "pag_01KYMKTF3V6TMQ09CYBXNRZSX9": {
31
+ "bakedName": "SvgDrawShapePage",
32
+ "curName": "SvgDrawShapePage",
33
+ "id": "pag_01KYMKTF3V6TMQ09CYBXNRZSX9",
34
+ "kind": "page",
35
+ "owner": "workspace",
36
+ "renames": []
37
+ },
38
+ "trt_01KYMKTF3TT3YY4G7HJP7K7RJW": {
39
+ "bakedName": "SvgDrawShapeRender",
40
+ "curName": "SvgDrawShapeRender",
41
+ "id": "trt_01KYMKTF3TT3YY4G7HJP7K7RJW",
42
+ "kind": "trait",
43
+ "owner": "workspace",
44
+ "renames": []
45
+ }
46
+ },
47
+ "schemaVersion": 1
48
+ },
49
+ "name": "ui-svg-draw-shape",
50
+ "orbitals": [
51
+ {
52
+ "entity": {
53
+ "fields": [
54
+ {
55
+ "name": "id",
56
+ "required": true,
57
+ "type": "string"
58
+ }
59
+ ],
60
+ "id": "ent_01KYMKTF3TQSHVDC76J06N5NCE",
61
+ "name": "SvgDrawShapeItem",
62
+ "persistence": "runtime"
63
+ },
64
+ "id": "orb_01KYMKTF3TZSC5FY0F8SRMZ6D5",
65
+ "name": "SvgDrawShapeOrbital",
66
+ "pages": [
67
+ {
68
+ "id": "pag_01KYMKTF3V6TMQ09CYBXNRZSX9",
69
+ "name": "SvgDrawShapePage",
70
+ "path": "/svg-draw-shape",
71
+ "traits": [
72
+ {
73
+ "ref": "SvgDrawShapeRender",
74
+ "refId": "trt_01KYMKTF3TT3YY4G7HJP7K7RJW"
75
+ }
76
+ ]
77
+ }
78
+ ],
79
+ "traits": [
80
+ {
81
+ "category": "interaction",
82
+ "config": {
83
+ "className": {
84
+ "description": "Additional CSS classes",
85
+ "label": "Class Name",
86
+ "tier": "presentation",
87
+ "type": "string"
88
+ },
89
+ "d": {
90
+ "description": "Path data, viewBox units relative to the translated origin.",
91
+ "label": "D",
92
+ "tier": "presentation",
93
+ "type": "string"
94
+ },
95
+ "fill": {
96
+ "description": "fill prop",
97
+ "label": "Fill",
98
+ "tier": "presentation",
99
+ "type": "string"
100
+ },
101
+ "height": {
102
+ "description": "Rect height in cell units.",
103
+ "label": "Height",
104
+ "tier": "presentation",
105
+ "type": "number"
106
+ },
107
+ "opacity": {
108
+ "description": "0..1 opacity.",
109
+ "label": "Opacity",
110
+ "tier": "presentation",
111
+ "type": "number"
112
+ },
113
+ "points": {
114
+ "description": "Polygon/polyline points, viewBox units relative to the translated origin.",
115
+ "label": "Points",
116
+ "tier": "presentation",
117
+ "type": "string"
118
+ },
119
+ "radius": {
120
+ "description": "Circle radius / ellipse horizontal radius in cell units.",
121
+ "label": "Radius",
122
+ "tier": "presentation",
123
+ "type": "number"
124
+ },
125
+ "radiusY": {
126
+ "description": "Ellipse vertical radius in cell units; omitted → `radius` (a circle).",
127
+ "label": "Radius Y",
128
+ "tier": "presentation",
129
+ "type": "number"
130
+ },
131
+ "shape": {
132
+ "default": "rect",
133
+ "description": "shape prop",
134
+ "label": "Shape",
135
+ "tier": "presentation",
136
+ "type": "string",
137
+ "values": [
138
+ "rect",
139
+ "circle",
140
+ "ellipse",
141
+ "polygon",
142
+ "polyline",
143
+ "path",
144
+ "line"
145
+ ]
146
+ },
147
+ "stroke": {
148
+ "description": "stroke prop",
149
+ "label": "Stroke",
150
+ "tier": "presentation",
151
+ "type": "string"
152
+ },
153
+ "strokeWidth": {
154
+ "description": "strokeWidth prop",
155
+ "label": "Stroke Width",
156
+ "tier": "presentation",
157
+ "type": "number"
158
+ },
159
+ "width": {
160
+ "description": "Rect width in cell units.",
161
+ "label": "Width",
162
+ "tier": "presentation",
163
+ "type": "number"
164
+ },
165
+ "x": {
166
+ "default": 1.0,
167
+ "description": "Grid-cell x of the element's translated origin.",
168
+ "label": "X",
169
+ "tier": "presentation",
170
+ "type": "number"
171
+ },
172
+ "x2": {
173
+ "description": "Line end x in cell units.",
174
+ "label": "X2",
175
+ "tier": "presentation",
176
+ "type": "number"
177
+ },
178
+ "y": {
179
+ "default": 1.0,
180
+ "description": "Grid-cell y of the element's translated origin.",
181
+ "label": "Y",
182
+ "tier": "presentation",
183
+ "type": "number"
184
+ },
185
+ "y2": {
186
+ "description": "Line end y in cell units.",
187
+ "label": "Y2",
188
+ "tier": "presentation",
189
+ "type": "number"
190
+ }
191
+ },
192
+ "entityContract": {
193
+ "provides": [],
194
+ "requires": []
195
+ },
196
+ "entityRebindable": true,
197
+ "entityRefIds": {
198
+ "SvgDrawShapeItem": "ent_01KYMKTF3TQSHVDC76J06N5NCE"
199
+ },
200
+ "id": "trt_01KYMKTF3TT3YY4G7HJP7K7RJW",
201
+ "linkedEntity": "SvgDrawShapeItem",
202
+ "linkedEntityId": "ent_01KYMKTF3TQSHVDC76J06N5NCE",
203
+ "name": "SvgDrawShapeRender",
204
+ "scope": "instance",
205
+ "stateMachine": {
206
+ "events": [
207
+ {
208
+ "id": "evt_01KYMKTF3TKA2772N1N9CNSCPJ",
209
+ "key": "INIT",
210
+ "name": "Initialize"
211
+ }
212
+ ],
213
+ "states": [
214
+ {
215
+ "isInitial": true,
216
+ "name": "idle"
217
+ }
218
+ ],
219
+ "transitions": [
220
+ {
221
+ "effects": [
222
+ [
223
+ "render-ui",
224
+ "main",
225
+ {
226
+ "className": "@config.className",
227
+ "d": "@config.d",
228
+ "fill": "@config.fill",
229
+ "height": "@config.height",
230
+ "opacity": "@config.opacity",
231
+ "points": "@config.points",
232
+ "radius": "@config.radius",
233
+ "radiusY": "@config.radiusY",
234
+ "shape": "@config.shape",
235
+ "stroke": "@config.stroke",
236
+ "strokeWidth": "@config.strokeWidth",
237
+ "type": "svg-draw-shape",
238
+ "width": "@config.width",
239
+ "x": "@config.x",
240
+ "x2": "@config.x2",
241
+ "y": "@config.y",
242
+ "y2": "@config.y2"
243
+ }
244
+ ]
245
+ ],
246
+ "event": "INIT",
247
+ "eventId": "evt_01KYMKTF3TKA2772N1N9CNSCPJ",
248
+ "from": "idle",
249
+ "to": "idle"
250
+ }
251
+ ]
252
+ }
253
+ }
254
+ ]
255
+ }
256
+ ],
257
+ "schemaVersion": 1,
258
+ "version": "1.0.0"
259
+ }
@@ -0,0 +1,195 @@
1
+ {
2
+ "description": "SvgDrawText — UI factory (1:1 with the @almadar/ui svg-draw-text pattern).",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01KYMKTF4QQ6FPCBBY32HS73AF": {
6
+ "bakedName": "SvgDrawTextItem",
7
+ "curName": "SvgDrawTextItem",
8
+ "id": "ent_01KYMKTF4QQ6FPCBBY32HS73AF",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01KYMKTF4QYE2WQ95CQPP36TMB": {
14
+ "bakedName": "INIT",
15
+ "curName": "INIT",
16
+ "id": "evt_01KYMKTF4QYE2WQ95CQPP36TMB",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01KYMKTF4QTG7QV2Y7N9J2TWY2",
20
+ "renames": []
21
+ },
22
+ "orb_01KYMKTF4QZP93EF8DZMBDZJCR": {
23
+ "bakedName": "SvgDrawTextOrbital",
24
+ "curName": "SvgDrawTextOrbital",
25
+ "id": "orb_01KYMKTF4QZP93EF8DZMBDZJCR",
26
+ "kind": "orbital",
27
+ "owner": "workspace",
28
+ "renames": []
29
+ },
30
+ "pag_01KYMKTF4SJXHA654TD526HAJ7": {
31
+ "bakedName": "SvgDrawTextPage",
32
+ "curName": "SvgDrawTextPage",
33
+ "id": "pag_01KYMKTF4SJXHA654TD526HAJ7",
34
+ "kind": "page",
35
+ "owner": "workspace",
36
+ "renames": []
37
+ },
38
+ "trt_01KYMKTF4QTG7QV2Y7N9J2TWY2": {
39
+ "bakedName": "SvgDrawTextRender",
40
+ "curName": "SvgDrawTextRender",
41
+ "id": "trt_01KYMKTF4QTG7QV2Y7N9J2TWY2",
42
+ "kind": "trait",
43
+ "owner": "workspace",
44
+ "renames": []
45
+ }
46
+ },
47
+ "schemaVersion": 1
48
+ },
49
+ "name": "ui-svg-draw-text",
50
+ "orbitals": [
51
+ {
52
+ "entity": {
53
+ "fields": [
54
+ {
55
+ "name": "id",
56
+ "required": true,
57
+ "type": "string"
58
+ }
59
+ ],
60
+ "id": "ent_01KYMKTF4QQ6FPCBBY32HS73AF",
61
+ "name": "SvgDrawTextItem",
62
+ "persistence": "runtime"
63
+ },
64
+ "id": "orb_01KYMKTF4QZP93EF8DZMBDZJCR",
65
+ "name": "SvgDrawTextOrbital",
66
+ "pages": [
67
+ {
68
+ "id": "pag_01KYMKTF4SJXHA654TD526HAJ7",
69
+ "name": "SvgDrawTextPage",
70
+ "path": "/svg-draw-text",
71
+ "traits": [
72
+ {
73
+ "ref": "SvgDrawTextRender",
74
+ "refId": "trt_01KYMKTF4QTG7QV2Y7N9J2TWY2"
75
+ }
76
+ ]
77
+ }
78
+ ],
79
+ "traits": [
80
+ {
81
+ "category": "interaction",
82
+ "config": {
83
+ "anchor": {
84
+ "default": "middle",
85
+ "description": "Text anchor (default 'middle').",
86
+ "label": "Anchor",
87
+ "tier": "presentation",
88
+ "type": "string",
89
+ "values": [
90
+ "start",
91
+ "middle",
92
+ "end"
93
+ ]
94
+ },
95
+ "className": {
96
+ "description": "Additional CSS classes",
97
+ "label": "Class Name",
98
+ "tier": "presentation",
99
+ "type": "string"
100
+ },
101
+ "fill": {
102
+ "default": "var(--color-foreground)",
103
+ "description": "fill prop",
104
+ "label": "Fill",
105
+ "tier": "presentation",
106
+ "type": "string"
107
+ },
108
+ "size": {
109
+ "default": 12.0,
110
+ "description": "Font size in viewBox units (default 12).",
111
+ "label": "Size",
112
+ "tier": "presentation",
113
+ "type": "number"
114
+ },
115
+ "text": {
116
+ "default": "",
117
+ "description": "The text content.",
118
+ "label": "Text",
119
+ "tier": "presentation",
120
+ "type": "string"
121
+ },
122
+ "x": {
123
+ "default": 1.0,
124
+ "description": "Grid-cell x of the text anchor.",
125
+ "label": "X",
126
+ "tier": "presentation",
127
+ "type": "number"
128
+ },
129
+ "y": {
130
+ "default": 1.0,
131
+ "description": "Grid-cell y of the text anchor.",
132
+ "label": "Y",
133
+ "tier": "presentation",
134
+ "type": "number"
135
+ }
136
+ },
137
+ "entityContract": {
138
+ "provides": [],
139
+ "requires": []
140
+ },
141
+ "entityRebindable": true,
142
+ "entityRefIds": {
143
+ "SvgDrawTextItem": "ent_01KYMKTF4QQ6FPCBBY32HS73AF"
144
+ },
145
+ "id": "trt_01KYMKTF4QTG7QV2Y7N9J2TWY2",
146
+ "linkedEntity": "SvgDrawTextItem",
147
+ "linkedEntityId": "ent_01KYMKTF4QQ6FPCBBY32HS73AF",
148
+ "name": "SvgDrawTextRender",
149
+ "scope": "instance",
150
+ "stateMachine": {
151
+ "events": [
152
+ {
153
+ "id": "evt_01KYMKTF4QYE2WQ95CQPP36TMB",
154
+ "key": "INIT",
155
+ "name": "Initialize"
156
+ }
157
+ ],
158
+ "states": [
159
+ {
160
+ "isInitial": true,
161
+ "name": "idle"
162
+ }
163
+ ],
164
+ "transitions": [
165
+ {
166
+ "effects": [
167
+ [
168
+ "render-ui",
169
+ "main",
170
+ {
171
+ "anchor": "@config.anchor",
172
+ "className": "@config.className",
173
+ "fill": "@config.fill",
174
+ "size": "@config.size",
175
+ "text": "@config.text",
176
+ "type": "svg-draw-text",
177
+ "x": "@config.x",
178
+ "y": "@config.y"
179
+ }
180
+ ]
181
+ ],
182
+ "event": "INIT",
183
+ "eventId": "evt_01KYMKTF4QYE2WQ95CQPP36TMB",
184
+ "from": "idle",
185
+ "to": "idle"
186
+ }
187
+ ]
188
+ }
189
+ }
190
+ ]
191
+ }
192
+ ],
193
+ "schemaVersion": 1,
194
+ "version": "1.0.0"
195
+ }
@@ -1042,7 +1042,8 @@
1042
1042
  "linkedEntity": "GameState",
1043
1043
  "linkedEntityId": "ent_01KXG04VRWJXZNZBK4QSXVFZK6",
1044
1044
  "name": "TacticsAuthority",
1045
- "ref": "Tactics.traits.GridTactics"
1045
+ "ref": "Tactics.traits.GridTactics",
1046
+ "refId": "trt_01KXG04THREP6VTN7SEQ5QND02"
1046
1047
  },
1047
1048
  {
1048
1049
  "config": {
@@ -1055,7 +1056,8 @@
1055
1056
  "linkedEntity": "GameState",
1056
1057
  "linkedEntityId": "ent_01KXG04VRWJXZNZBK4QSXVFZK6",
1057
1058
  "name": "RoundLogic",
1058
- "ref": "Round.traits.RoundFlow"
1059
+ "ref": "Round.traits.RoundFlow",
1060
+ "refId": "trt_01KXG04TNCJQBQBHH17BMMRPXT"
1059
1061
  },
1060
1062
  {
1061
1063
  "config": {
@@ -1076,7 +1078,8 @@
1076
1078
  "linkedEntity": "GameState",
1077
1079
  "linkedEntityId": "ent_01KXG04VRWJXZNZBK4QSXVFZK6",
1078
1080
  "name": "GoldAuthority",
1079
- "ref": "Gold.traits.GoldMine"
1081
+ "ref": "Gold.traits.GoldMine",
1082
+ "refId": "trt_01KXG04TH34ES2DPDMM3BSZE0W"
1080
1083
  },
1081
1084
  {
1082
1085
  "category": "interaction",
@@ -207,6 +207,13 @@
207
207
  "tier": "presentation",
208
208
  "type": "Canvas2dError"
209
209
  },
210
+ "fit": {
211
+ "default": false,
212
+ "description": "Auto-fit the board's grid extent to the viewport (default false — boards render at their authored `scale` and overflow → pan). Opt in for whole-board-overview boards. User wheel/pinch zoom always wins after the initial fit.",
213
+ "label": "Fit",
214
+ "tier": "presentation",
215
+ "type": "boolean"
216
+ },
210
217
  "followTarget": {
211
218
  "description": "Follow-camera target in scene space (the neutral core `Camera.target`). When `camera:'follow'` the host lerps to keep this point centered.",
212
219
  "label": "Follow Target",
@@ -277,7 +284,7 @@
277
284
  },
278
285
  "scale": {
279
286
  "default": 0.4,
280
- "description": "Render scale (0.4 = 40% zoom). Ignored by `free`/`side` (world-pixel-direct).",
287
+ "description": "Render scale, legacy-squared semantics: on-screen cell ≈ `256 × scale²` px (the authored contract every board tuned its value for). Converted internally to the single camera zoom against the board's native tile width, so the cell pitch follows the asset while the on-screen size stays as authored. Ignored when `fit` is on; passed through raw for `free`/`side` (world-pixel-direct).",
281
288
  "label": "Scale",
282
289
  "tier": "presentation",
283
290
  "type": "number"
@@ -310,6 +317,12 @@
310
317
  "tier": "presentation",
311
318
  "type": "string"
312
319
  },
320
+ "tileWidth": {
321
+ "description": "Native tile/cell width in source px for this board's asset (e.g. 16 for Kenney tiny-dungeon, ~128 for iso blocks). The grid cell pitch follows the asset, so tile textures map 1:1 (crisp, no stretch). Defaults to the detected atlas tile width, else 256.",
322
+ "label": "Tile Width",
323
+ "tier": "presentation",
324
+ "type": "number"
325
+ },
313
326
  "unitClickEvent": {
314
327
  "default": "UNIT_CLICK",
315
328
  "description": "Unit-click event. The neutral drawable host cannot resolve a click to a per-entity id (descriptors carry only a `ScenePos`, no id), so this prop is accepted but not yet emitted — the id-hit-test is a tracked fork (docs/Almadar_Std_Game_V2_PLAN.md).",
@@ -491,6 +504,7 @@
491
504
  "className": "@config.className",
492
505
  "drawables": "@config.drawables",
493
506
  "error": "@config.error",
507
+ "fit": "@config.fit",
494
508
  "followTarget": "@config.followTarget",
495
509
  "isLoading": "@config.isLoading",
496
510
  "keyMap": "@config.keyMap",
@@ -501,6 +515,7 @@
501
515
  "tileClickEvent": "@config.tileClickEvent",
502
516
  "tileHoverEvent": "@config.tileHoverEvent",
503
517
  "tileLeaveEvent": "@config.tileLeaveEvent",
518
+ "tileWidth": "@config.tileWidth",
504
519
  "type": "canvas-2d",
505
520
  "unitClickEvent": "@config.unitClickEvent"
506
521
  }
@@ -167,6 +167,12 @@
167
167
  "tier": "presentation",
168
168
  "type": "string"
169
169
  },
170
+ "fit": {
171
+ "description": "Auto-fit the board's grid extent to the viewport (2D grid layouts; default false — boards render at their authored `camera.zoom` scale).",
172
+ "label": "Fit",
173
+ "tier": "presentation",
174
+ "type": "boolean"
175
+ },
170
176
  "fogOfWar": {
171
177
  "default": [],
172
178
  "description": "fogOfWar prop",
@@ -292,6 +298,12 @@
292
298
  "tier": "presentation",
293
299
  "type": "string"
294
300
  },
301
+ "tileWidth": {
302
+ "description": "Native tile/cell width in source px of the board's asset (2D grid layouts; defaults to the detected atlas tile width, else 256).",
303
+ "label": "Tile Width",
304
+ "tier": "presentation",
305
+ "type": "number"
306
+ },
295
307
  "unitClickEvent": {
296
308
  "default": "UNIT_CLICK",
297
309
  "description": "unitClickEvent prop",
@@ -520,6 +532,7 @@
520
532
  "className": "@config.className",
521
533
  "drawables": "@config.drawables",
522
534
  "featureClickEvent": "@config.featureClickEvent",
535
+ "fit": "@config.fit",
523
536
  "fogOfWar": "@config.fogOfWar",
524
537
  "isLoading": "@config.isLoading",
525
538
  "keyMap": "@config.keyMap",
@@ -535,6 +548,7 @@
535
548
  "tileClickEvent": "@config.tileClickEvent",
536
549
  "tileHoverEvent": "@config.tileHoverEvent",
537
550
  "tileLeaveEvent": "@config.tileLeaveEvent",
551
+ "tileWidth": "@config.tileWidth",
538
552
  "type": "canvas",
539
553
  "unitClickEvent": "@config.unitClickEvent",
540
554
  "unitScale": "@config.unitScale",
@@ -83,6 +83,7 @@
83
83
  "items": {
84
84
  "default": [
85
85
  {
86
+ "d": "D",
86
87
  "fill": "Fill",
87
88
  "height": 1.0,
88
89
  "offsetX": 1.0,
@@ -103,6 +104,7 @@
103
104
  "width": 1.0
104
105
  },
105
106
  {
107
+ "d": "D 2",
106
108
  "fill": "Fill 2",
107
109
  "height": 2.0,
108
110
  "offsetX": 2.0,
@@ -131,6 +133,11 @@
131
133
  "required": false,
132
134
  "type": "string"
133
135
  },
136
+ "d": {
137
+ "name": "d",
138
+ "required": false,
139
+ "type": "string"
140
+ },
134
141
  "fill": {
135
142
  "name": "fill",
136
143
  "required": false,
@@ -204,7 +211,8 @@
204
211
  "cell",
205
212
  "rect",
206
213
  "ellipse",
207
- "poly"
214
+ "poly",
215
+ "path"
208
216
  ]
209
217
  },
210
218
  "stroke": {