@almadar/std 16.234.0 → 16.236.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 (245) hide show
  1. package/behaviors/behaviors-registry.json +4402 -1898
  2. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +25 -41
  3. package/behaviors/lolo/infra/atoms/std-audit-capture.lolo +0 -5
  4. package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +0 -24
  5. package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +1 -17
  6. package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +17 -24
  7. package/behaviors/lolo/infra/atoms/std-data-import.lolo +8 -11
  8. package/behaviors/lolo/infra/atoms/std-game-clock.lolo +2 -0
  9. package/behaviors/lolo/infra/atoms/std-knowledge-loop.lolo +0 -5
  10. package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +3 -1
  11. package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +40 -18
  12. package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +20 -11
  13. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +0 -5
  14. package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +23 -11
  15. package/behaviors/lolo/infra/atoms/std-rate-limiter.lolo +84 -22
  16. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -6
  17. package/behaviors/lolo/ml/atoms/std-graph-builder.lolo +3 -1
  18. package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +0 -4
  19. package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +0 -4
  20. package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +12 -0
  21. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +55 -9
  22. package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +6 -2
  23. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +19 -14
  24. package/behaviors/lolo/ui/core/atoms/std-board.lolo +77 -27
  25. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +44 -28
  26. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +7 -3
  27. package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +25 -13
  28. package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +5 -0
  29. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +0 -5
  30. package/behaviors/lolo/ui/core/atoms/std-export.lolo +0 -10
  31. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +7 -3
  32. package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -6
  33. package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -0
  34. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +20 -4
  35. package/behaviors/lolo/ui/core/atoms/std-import.lolo +0 -5
  36. package/behaviors/lolo/ui/core/atoms/std-list.lolo +46 -32
  37. package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +2 -2
  38. package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +12 -13
  39. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +16 -12
  40. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +10 -1
  41. package/behaviors/lolo/ui/core/atoms/std-role-gate.lolo +39 -0
  42. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +78 -16
  43. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +15 -10
  44. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +5 -5
  45. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -0
  46. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +41 -73
  47. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +20 -11
  48. package/behaviors/lolo/ui/core/atoms/std-vote.lolo +0 -4
  49. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +3 -3
  50. package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +21 -0
  51. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +6 -1
  52. package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +11 -1
  53. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +13 -8
  54. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +7 -2
  55. package/behaviors/lolo/ui/core/molecules/ui-commit-row.lolo +2 -2
  56. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +8 -0
  57. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +41 -3
  58. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +41 -3
  59. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +30 -9
  60. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +8 -3
  61. package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +6 -1
  62. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +13 -0
  63. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +6 -1
  64. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +6 -1
  65. package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +6 -1
  66. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +6 -1
  67. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +6 -1
  68. package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +6 -1
  69. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +5 -0
  70. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +11 -1
  71. package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +1 -1
  72. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +44 -15
  73. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +41 -3
  74. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +8 -2
  75. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +66 -12
  76. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +9 -3
  77. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +9 -3
  78. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +18 -9
  79. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +55 -10
  80. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +55 -10
  81. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +8 -3
  82. package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +12 -0
  83. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +8 -3
  84. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +2 -44
  85. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +6 -1
  86. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +2 -37
  87. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +8 -2
  88. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +2 -2
  89. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +0 -4
  90. package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +2 -66
  91. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +0 -4
  92. package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +0 -4
  93. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +6 -6
  94. package/behaviors/lolo-behavior-contracts.json +1 -1
  95. package/behaviors/registry/factory-signatures.json +1 -1
  96. package/behaviors/registry/infra/atoms/std-approval-gate.orb +124 -67
  97. package/behaviors/registry/infra/atoms/std-audit-capture.orb +0 -8
  98. package/behaviors/registry/infra/atoms/std-cache-aside.orb +0 -84
  99. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -44
  100. package/behaviors/registry/infra/atoms/std-data-erasure.orb +124 -55
  101. package/behaviors/registry/infra/atoms/std-data-import.orb +12 -11
  102. package/behaviors/registry/infra/atoms/std-game-clock.orb +31 -0
  103. package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +0 -57
  104. package/behaviors/registry/infra/atoms/std-lifecycle.orb +43 -0
  105. package/behaviors/registry/infra/atoms/std-mod-queue.orb +379 -103
  106. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +126 -12
  107. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +0 -11
  108. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +128 -12
  109. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +287 -72
  110. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +5 -8
  111. package/behaviors/registry/ml/atoms/std-graph-builder.orb +11 -0
  112. package/behaviors/registry/ml/atoms/std-ml-classify.orb +0 -7
  113. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +0 -7
  114. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +82 -0
  115. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +417 -9
  116. package/behaviors/registry/ui/core/atoms/std-app-search.orb +53 -1
  117. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +209 -19
  118. package/behaviors/registry/ui/core/atoms/std-board.orb +242 -61
  119. package/behaviors/registry/ui/core/atoms/std-browse.orb +295 -41
  120. package/behaviors/registry/ui/core/atoms/std-calendar.orb +96 -2
  121. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +122 -15
  122. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +11 -0
  123. package/behaviors/registry/ui/core/atoms/std-event-log.orb +0 -8
  124. package/behaviors/registry/ui/core/atoms/std-export.orb +0 -16
  125. package/behaviors/registry/ui/core/atoms/std-file-store.orb +109 -2
  126. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -43
  127. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +5 -0
  128. package/behaviors/registry/ui/core/atoms/std-graphs.orb +173 -66
  129. package/behaviors/registry/ui/core/atoms/std-import.orb +0 -8
  130. package/behaviors/registry/ui/core/atoms/std-list.orb +226 -34
  131. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +10 -1
  132. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +37 -19
  133. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +204 -11
  134. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +89 -4
  135. package/behaviors/registry/ui/core/atoms/std-role-gate.orb +217 -0
  136. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +419 -19
  137. package/behaviors/registry/ui/core/atoms/std-selection.orb +140 -10
  138. package/behaviors/registry/ui/core/atoms/std-stats.orb +73 -1
  139. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +3 -0
  140. package/behaviors/registry/ui/core/atoms/std-thread.orb +190 -115
  141. package/behaviors/registry/ui/core/atoms/std-version-history.orb +127 -13
  142. package/behaviors/registry/ui/core/atoms/std-vote.orb +0 -9
  143. package/behaviors/registry/ui/core/atoms/std-wizard.orb +33 -3
  144. package/behaviors/registry/ui/core/atoms/ui-presence.orb +59 -0
  145. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +53 -1
  146. package/behaviors/registry/ui/core/molecules/ui-chart.orb +68 -1
  147. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +291 -8
  148. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +87 -2
  149. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +3 -2
  150. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +32 -0
  151. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +189 -3
  152. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +189 -3
  153. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +81 -24
  154. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +121 -3
  155. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +53 -1
  156. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +40 -0
  157. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +53 -1
  158. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +53 -1
  159. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +53 -1
  160. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +53 -1
  161. package/behaviors/registry/ui/core/molecules/ui-menu.orb +57 -1
  162. package/behaviors/registry/ui/core/molecules/ui-meter.orb +53 -1
  163. package/behaviors/registry/ui/core/molecules/ui-modal.orb +8 -0
  164. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +60 -1
  165. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
  166. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +393 -23
  167. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +189 -3
  168. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +99 -2
  169. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +282 -20
  170. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +130 -3
  171. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +130 -3
  172. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +367 -9
  173. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +104 -13
  174. package/behaviors/registry/ui/core/organisms/ui-form.orb +104 -13
  175. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +121 -3
  176. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +82 -0
  177. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +121 -3
  178. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -172
  179. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +53 -1
  180. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -116
  181. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +99 -2
  182. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +10 -0
  183. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +0 -7
  184. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -807
  185. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +0 -7
  186. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +0 -7
  187. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +6 -0
  188. package/canonical-operators.json +18 -1
  189. package/dist/behaviors/exports-reader.js +7662 -3762
  190. package/dist/behaviors/functions/index.d.ts +309 -104
  191. package/dist/behaviors/functions/index.js +7651 -3762
  192. package/dist/behaviors/index.d.ts +1 -1
  193. package/dist/behaviors/index.js +7663 -3763
  194. package/dist/behaviors/query.js +7662 -3762
  195. package/dist/behaviors-embeddings.hash.json +3 -3
  196. package/dist/behaviors-embeddings.json +35 -27
  197. package/dist/behaviors-registry.json +4402 -1898
  198. package/dist/index.d.ts +3 -3
  199. package/dist/index.js +7697 -3763
  200. package/dist/knob-embeddings.hash.json +3 -3
  201. package/dist/knob-embeddings.json +612 -352
  202. package/dist/modules/anim.d.ts +1 -1
  203. package/dist/modules/array.d.ts +1 -1
  204. package/dist/modules/array.js +15 -0
  205. package/dist/modules/async.d.ts +1 -1
  206. package/dist/modules/async.js +9 -0
  207. package/dist/modules/behavior.d.ts +1 -1
  208. package/dist/modules/browser.d.ts +1 -1
  209. package/dist/modules/composition.d.ts +1 -1
  210. package/dist/modules/contract.d.ts +1 -1
  211. package/dist/modules/core.d.ts +1 -1
  212. package/dist/modules/core.js +10 -0
  213. package/dist/modules/data.d.ts +1 -1
  214. package/dist/modules/ease.d.ts +1 -1
  215. package/dist/modules/format.d.ts +1 -1
  216. package/dist/modules/geo.d.ts +1 -1
  217. package/dist/modules/graph.d.ts +1 -1
  218. package/dist/modules/grid.d.ts +1 -1
  219. package/dist/modules/index.d.ts +1 -1
  220. package/dist/modules/index.js +34 -0
  221. package/dist/modules/integration.d.ts +1 -1
  222. package/dist/modules/json.d.ts +1 -1
  223. package/dist/modules/llm.d.ts +1 -1
  224. package/dist/modules/math.d.ts +1 -1
  225. package/dist/modules/memory.d.ts +1 -1
  226. package/dist/modules/nn.d.ts +1 -1
  227. package/dist/modules/noise.d.ts +1 -1
  228. package/dist/modules/object.d.ts +1 -1
  229. package/dist/modules/os.d.ts +1 -1
  230. package/dist/modules/path.d.ts +1 -1
  231. package/dist/modules/prob.d.ts +1 -1
  232. package/dist/modules/session.d.ts +1 -1
  233. package/dist/modules/str.d.ts +1 -1
  234. package/dist/modules/tensor.d.ts +1 -1
  235. package/dist/modules/time.d.ts +1 -1
  236. package/dist/modules/trace.d.ts +1 -1
  237. package/dist/modules/train.d.ts +1 -1
  238. package/dist/modules/validate.d.ts +1 -1
  239. package/dist/modules/vector.d.ts +1 -1
  240. package/dist/modules/workspace.d.ts +1 -1
  241. package/dist/registry/factory-signatures.json +1 -1
  242. package/dist/registry.d.ts +5 -2
  243. package/dist/registry.js +55 -1
  244. package/dist/{types-DwAW4Nni.d.ts → types-DLx38UFZ.d.ts} +31 -4
  245. package/package.json +2 -2
@@ -231,6 +231,64 @@
231
231
  {
232
232
  "category": "interaction",
233
233
  "config": {
234
+ "itemActions": {
235
+ "default": [
236
+ {
237
+ "event": "OPEN_REVISION",
238
+ "icon": "arrow-right",
239
+ "label": "Open",
240
+ "variant": "ghost"
241
+ },
242
+ {
243
+ "event": "ROLLBACK",
244
+ "icon": "rotate-ccw",
245
+ "label": "Rollback",
246
+ "variant": "danger"
247
+ }
248
+ ],
249
+ "description": "Actions offered on each row; give an item `roles` to show it only to those viewer roles.",
250
+ "items": {
251
+ "properties": {
252
+ "event": {
253
+ "name": "event",
254
+ "required": false,
255
+ "type": "event"
256
+ },
257
+ "icon": {
258
+ "name": "icon",
259
+ "required": false,
260
+ "type": "string"
261
+ },
262
+ "label": {
263
+ "name": "label",
264
+ "required": true,
265
+ "type": "string"
266
+ },
267
+ "roles": {
268
+ "items": {
269
+ "type": "string"
270
+ },
271
+ "name": "roles",
272
+ "required": false,
273
+ "type": "array"
274
+ },
275
+ "variant": {
276
+ "name": "variant",
277
+ "required": false,
278
+ "type": "string"
279
+ },
280
+ "when": {
281
+ "name": "when",
282
+ "required": false,
283
+ "type": "object"
284
+ }
285
+ },
286
+ "type": "object"
287
+ },
288
+ "label": "Row actions",
289
+ "tier": "presentation",
290
+ "type": "[ItemAction]"
291
+ },
234
292
  "scopeField": {
235
293
  "default": "",
236
294
  "description": "Revision entity field holding the parent document's id. When set, a page-mounted {id} route param scopes INIT's fetch, and a SHOW_HISTORY { key } event rescopes the feed, to rows whose scopeField equals the id/key; rollback and retry refetches stay scoped too. Empty (default) or no id = unfiltered global feed, unchanged from prior behavior.",
@@ -272,6 +330,13 @@
272
330
  "label": "Section title",
273
331
  "tier": "presentation",
274
332
  "type": "string"
333
+ },
334
+ "viewerRole": {
335
+ "default": "",
336
+ "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.",
337
+ "label": "Viewer's role",
338
+ "tier": "policy",
339
+ "type": "string"
275
340
  }
276
341
  },
277
342
  "effectRow": [
@@ -1187,18 +1252,38 @@
1187
1252
  ],
1188
1253
  "gap": "sm",
1189
1254
  "itemActions": [
1190
- {
1191
- "event": "OPEN_REVISION",
1192
- "icon": "arrow-right",
1193
- "label": "Open",
1194
- "variant": "ghost"
1195
- },
1196
- {
1197
- "event": "ROLLBACK",
1198
- "icon": "rotate-ccw",
1199
- "label": "Rollback",
1200
- "variant": "danger"
1201
- }
1255
+ "array/filter",
1256
+ "@config.itemActions",
1257
+ [
1258
+ "fn",
1259
+ "action",
1260
+ [
1261
+ "or",
1262
+ [
1263
+ "=",
1264
+ [
1265
+ "array/len",
1266
+ [
1267
+ "object/get",
1268
+ "@action",
1269
+ "roles",
1270
+ []
1271
+ ]
1272
+ ],
1273
+ 0.0
1274
+ ],
1275
+ [
1276
+ "array/includes",
1277
+ [
1278
+ "object/get",
1279
+ "@action",
1280
+ "roles",
1281
+ []
1282
+ ],
1283
+ "@config.viewerRole"
1284
+ ]
1285
+ ]
1286
+ ]
1202
1287
  ],
1203
1288
  "look": "@config.tableLook",
1204
1289
  "type": "data-grid"
@@ -2340,7 +2425,36 @@
2340
2425
  ]
2341
2426
  }
2342
2427
  }
2343
- ]
2428
+ ],
2429
+ "types": {
2430
+ "ItemAction": [
2431
+ {
2432
+ "name": "label",
2433
+ "required": true,
2434
+ "type": "string"
2435
+ },
2436
+ {
2437
+ "name": "event",
2438
+ "type": "event"
2439
+ },
2440
+ {
2441
+ "name": "variant",
2442
+ "type": "string"
2443
+ },
2444
+ {
2445
+ "name": "icon",
2446
+ "type": "string"
2447
+ },
2448
+ {
2449
+ "name": "roles",
2450
+ "type": "[string]"
2451
+ },
2452
+ {
2453
+ "name": "when",
2454
+ "type": "SExpr"
2455
+ }
2456
+ ]
2457
+ }
2344
2458
  }
2345
2459
  ],
2346
2460
  "schemaVersion": 1,
@@ -164,15 +164,6 @@
164
164
  "traits": [
165
165
  {
166
166
  "category": "interaction",
167
- "config": {
168
- "allowDown": {
169
- "default": true,
170
- "description": "Show the downvote arrow alongside the upvote",
171
- "label": "Allow downvotes",
172
- "tier": "domain",
173
- "type": "boolean"
174
- }
175
- },
176
167
  "effectRow": [
177
168
  {
178
169
  "kind": "fetch",
@@ -1042,7 +1042,17 @@
1042
1042
  {
1043
1043
  "cancelEvent": "CANCEL",
1044
1044
  "entity": "@entity",
1045
- "fields": "@entity.currentFields",
1045
+ "fields": [
1046
+ "array/map",
1047
+ "@entity.currentFields",
1048
+ [
1049
+ "fn",
1050
+ "f",
1051
+ {
1052
+ "name": "@f"
1053
+ }
1054
+ ]
1055
+ ],
1046
1056
  "mode": "edit",
1047
1057
  "showCancel": false,
1048
1058
  "showSubmit": false,
@@ -1364,7 +1374,17 @@
1364
1374
  {
1365
1375
  "cancelEvent": "CANCEL",
1366
1376
  "entity": "@entity",
1367
- "fields": "@entity.currentFields",
1377
+ "fields": [
1378
+ "array/map",
1379
+ "@entity.currentFields",
1380
+ [
1381
+ "fn",
1382
+ "f",
1383
+ {
1384
+ "name": "@f"
1385
+ }
1386
+ ]
1387
+ ],
1368
1388
  "mode": "edit",
1369
1389
  "showCancel": false,
1370
1390
  "showSubmit": false,
@@ -1689,7 +1709,17 @@
1689
1709
  {
1690
1710
  "cancelEvent": "CANCEL",
1691
1711
  "entity": "@entity",
1692
- "fields": "@entity.currentFields",
1712
+ "fields": [
1713
+ "array/map",
1714
+ "@entity.currentFields",
1715
+ [
1716
+ "fn",
1717
+ "f",
1718
+ {
1719
+ "name": "@f"
1720
+ }
1721
+ ]
1722
+ ],
1693
1723
  "mode": "edit",
1694
1724
  "showCancel": false,
1695
1725
  "showSubmit": false,
@@ -19,6 +19,15 @@
19
19
  "parent": "trt_01KY21K7YKMGGJFV3VJ5B1MQVT",
20
20
  "renames": []
21
21
  },
22
+ "evt_01M3R69VAQXRZ8MACTP58J0XBB": {
23
+ "bakedName": "@config.onExited",
24
+ "curName": "@config.onExited",
25
+ "id": "evt_01M3R69VAQXRZ8MACTP58J0XBB",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01KY21K7YKMGGJFV3VJ5B1MQVT",
29
+ "renames": []
30
+ },
22
31
  "orb_01KY21K7YKV729A5YDR7FFP78C": {
23
32
  "bakedName": "PresenceOrbital",
24
33
  "curName": "PresenceOrbital",
@@ -80,6 +89,29 @@
80
89
  {
81
90
  "category": "interaction",
82
91
  "config": {
92
+ "animate": {
93
+ "description": "Per-instance opt-out. Global opt-out is `--motion-enable` / reduced-motion. @default true",
94
+ "label": "Animate",
95
+ "tier": "presentation",
96
+ "type": "boolean"
97
+ },
98
+ "animation": {
99
+ "default": "modal",
100
+ "description": "Which motion preset to use (maps to `animate-<name>-in/out`).",
101
+ "label": "Animation",
102
+ "tier": "presentation",
103
+ "type": "string",
104
+ "values": [
105
+ "modal",
106
+ "overlay",
107
+ "slide-up",
108
+ "drawer",
109
+ "popover",
110
+ "toast",
111
+ "fade",
112
+ "page"
113
+ ]
114
+ },
83
115
  "children": {
84
116
  "description": "children prop",
85
117
  "label": "Children",
@@ -92,6 +124,13 @@
92
124
  "tier": "presentation",
93
125
  "type": "string"
94
126
  },
127
+ "onExited": {
128
+ "default": "EXITED",
129
+ "description": "Fired after the exit animation completes (before unmount).",
130
+ "label": "On Exited",
131
+ "tier": "presentation",
132
+ "type": "event"
133
+ },
95
134
  "show": {
96
135
  "default": false,
97
136
  "description": "When false, the exit animation runs, then children unmount.",
@@ -106,6 +145,16 @@
106
145
  "resource": "main"
107
146
  }
108
147
  ],
148
+ "emits": [
149
+ {
150
+ "definerKnob": "onExited",
151
+ "description": "Fired after the exit animation completes (before unmount).",
152
+ "event": "@config.onExited",
153
+ "eventId": "evt_01M3R69VAQXRZ8MACTP58J0XBB",
154
+ "scope": "external",
155
+ "tier": "essential"
156
+ }
157
+ ],
109
158
  "entityContract": {
110
159
  "provides": [],
111
160
  "requires": []
@@ -125,6 +174,13 @@
125
174
  "id": "evt_01KY21K7YKPH1N67R9W990TSE8",
126
175
  "key": "INIT",
127
176
  "name": "Initialize"
177
+ },
178
+ {
179
+ "description": "Fired after the exit animation completes (before unmount).",
180
+ "id": "evt_01M3R69VAQXRZ8MACTP58J0XBB",
181
+ "key": "@config.onExited",
182
+ "name": "@config.on exited",
183
+ "tier": "essential"
128
184
  }
129
185
  ],
130
186
  "states": [
@@ -140,8 +196,11 @@
140
196
  "render-ui",
141
197
  "main",
142
198
  {
199
+ "animate": "@config.animate",
200
+ "animation": "@config.animation",
143
201
  "children": "@config.children",
144
202
  "className": "@config.className",
203
+ "onExited": "@config.onExited",
145
204
  "show": "@config.show",
146
205
  "type": "presence"
147
206
  }
@@ -151,6 +151,14 @@
151
151
  "name": "path",
152
152
  "required": false,
153
153
  "type": "string"
154
+ },
155
+ "roles": {
156
+ "items": {
157
+ "type": "string"
158
+ },
159
+ "name": "roles",
160
+ "required": false,
161
+ "type": "array"
154
162
  }
155
163
  },
156
164
  "type": "object"
@@ -170,6 +178,13 @@
170
178
  "label": "Separator",
171
179
  "tier": "presentation",
172
180
  "type": "icon"
181
+ },
182
+ "viewerRole": {
183
+ "default": "",
184
+ "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.",
185
+ "label": "Viewer's role",
186
+ "tier": "policy",
187
+ "type": "string"
173
188
  }
174
189
  },
175
190
  "effectRow": [
@@ -264,7 +279,40 @@
264
279
  "className": "@config.className",
265
280
  "fromNavStack": "@config.fromNavStack",
266
281
  "itemEvent": "@config.itemEvent",
267
- "items": "@config.items",
282
+ "items": [
283
+ "array/filter",
284
+ "@config.items",
285
+ [
286
+ "fn",
287
+ "action",
288
+ [
289
+ "or",
290
+ [
291
+ "=",
292
+ [
293
+ "array/len",
294
+ [
295
+ "object/get",
296
+ "@action",
297
+ "roles",
298
+ []
299
+ ]
300
+ ],
301
+ 0.0
302
+ ],
303
+ [
304
+ "array/includes",
305
+ [
306
+ "object/get",
307
+ "@action",
308
+ "roles",
309
+ []
310
+ ],
311
+ "@config.viewerRole"
312
+ ]
313
+ ]
314
+ ]
315
+ ],
268
316
  "maxItems": "@config.maxItems",
269
317
  "separator": "@config.separator",
270
318
  "type": "breadcrumb"
@@ -306,6 +354,10 @@
306
354
  {
307
355
  "name": "event",
308
356
  "type": "event"
357
+ },
358
+ {
359
+ "name": "roles",
360
+ "type": "[string]"
309
361
  }
310
362
  ]
311
363
  }
@@ -100,6 +100,14 @@
100
100
  "required": false,
101
101
  "type": "string"
102
102
  },
103
+ "roles": {
104
+ "items": {
105
+ "type": "string"
106
+ },
107
+ "name": "roles",
108
+ "required": false,
109
+ "type": "array"
110
+ },
103
111
  "variant": {
104
112
  "name": "variant",
105
113
  "required": false,
@@ -233,6 +241,20 @@
233
241
  "histogram"
234
242
  ]
235
243
  },
244
+ "period": {
245
+ "default": "day",
246
+ "description": "Bucket granularity of a time axis — labels read 'Oct 2', 'Week of Sep 28', 'Oct 2026', 'Q4 2026' or '2026'",
247
+ "label": "Period",
248
+ "tier": "presentation",
249
+ "type": "string",
250
+ "values": [
251
+ "day",
252
+ "week",
253
+ "month",
254
+ "quarter",
255
+ "year"
256
+ ]
257
+ },
236
258
  "scatterData": {
237
259
  "default": [],
238
260
  "description": "Raw {x,y} points for scatter",
@@ -366,6 +388,13 @@
366
388
  "label": "Title",
367
389
  "tier": "presentation",
368
390
  "type": "string"
391
+ },
392
+ "viewerRole": {
393
+ "default": "",
394
+ "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.",
395
+ "label": "Viewer's role",
396
+ "tier": "policy",
397
+ "type": "string"
369
398
  }
370
399
  },
371
400
  "effectRow": [
@@ -408,7 +437,40 @@
408
437
  "render-ui",
409
438
  "main",
410
439
  {
411
- "actions": "@config.actions",
440
+ "actions": [
441
+ "array/filter",
442
+ "@config.actions",
443
+ [
444
+ "fn",
445
+ "action",
446
+ [
447
+ "or",
448
+ [
449
+ "=",
450
+ [
451
+ "array/len",
452
+ [
453
+ "object/get",
454
+ "@action",
455
+ "roles",
456
+ []
457
+ ]
458
+ ],
459
+ 0.0
460
+ ],
461
+ [
462
+ "array/includes",
463
+ [
464
+ "object/get",
465
+ "@action",
466
+ "roles",
467
+ []
468
+ ],
469
+ "@config.viewerRole"
470
+ ]
471
+ ]
472
+ ]
473
+ ],
412
474
  "chartType": "@config.chartType",
413
475
  "className": "@config.className",
414
476
  "data": "@config.data",
@@ -417,6 +479,7 @@
417
479
  "height": "@config.height",
418
480
  "isLoading": "@config.isLoading",
419
481
  "look": "@config.look",
482
+ "period": "@config.period",
420
483
  "scatterData": "@config.scatterData",
421
484
  "series": "@config.series",
422
485
  "showLegend": "@config.showLegend",
@@ -456,6 +519,10 @@
456
519
  {
457
520
  "name": "variant",
458
521
  "type": "string"
522
+ },
523
+ {
524
+ "name": "roles",
525
+ "type": "[string]"
459
526
  }
460
527
  ],
461
528
  "ChartDataItem": [