@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
@@ -220,6 +220,10 @@
220
220
  "variant": {
221
221
  "default": "compact",
222
222
  "type": "unknown"
223
+ },
224
+ "viewerRole": {
225
+ "default": "@config.viewerRole",
226
+ "type": "unknown"
223
227
  }
224
228
  },
225
229
  "id": "trt_01KYG176Z400JFKWZ2XPKJ4798",
@@ -241,13 +245,6 @@
241
245
  {
242
246
  "category": "interaction",
243
247
  "config": {
244
- "assigneeBinding": {
245
- "default": "@item.assignee",
246
- "description": "Binding path for the assignee/owner slot.",
247
- "label": "Assignee field binding",
248
- "tier": "internal",
249
- "type": "string"
250
- },
251
248
  "badgeBinding": {
252
249
  "default": "@item.status",
253
250
  "description": "Binding path for the status/badge slot.",
@@ -313,11 +310,47 @@
313
310
  ],
314
311
  {
315
312
  "cols": "@config.cols",
313
+ "emptyDescription": "@config.emptyDescription",
314
+ "emptyIcon": "@config.emptyIcon",
315
+ "emptyTitle": "@config.emptyTitle",
316
316
  "entity": "@payload.data",
317
317
  "fields": "@config.fields",
318
318
  "gap": "@config.gap",
319
319
  "imageField": "@config.imageField",
320
- "itemActions": "@config.itemActions",
320
+ "itemActions": [
321
+ "array/filter",
322
+ "@config.itemActions",
323
+ [
324
+ "fn",
325
+ "item",
326
+ [
327
+ "or",
328
+ [
329
+ "=",
330
+ [
331
+ "array/len",
332
+ [
333
+ "object/get",
334
+ "@item",
335
+ "roles",
336
+ []
337
+ ]
338
+ ],
339
+ 0.0
340
+ ],
341
+ [
342
+ "array/includes",
343
+ [
344
+ "object/get",
345
+ "@item",
346
+ "roles",
347
+ []
348
+ ],
349
+ "@config.viewerRole"
350
+ ]
351
+ ]
352
+ ]
353
+ ],
321
354
  "maxInlineActions": "@config.maxInlineActions",
322
355
  "pageSize": "@config.displayPageSize",
323
356
  "type": "data-grid"
@@ -527,9 +560,44 @@
527
560
  "children": [
528
561
  {
529
562
  "columns": "@config.columns",
530
- "emptyMessage": "No records",
563
+ "emptyDescription": "@config.emptyDescription",
564
+ "emptyIcon": "@config.emptyIcon",
565
+ "emptyTitle": "@config.emptyTitle",
531
566
  "entity": "@payload.data",
532
- "itemActions": "@config.itemActions",
567
+ "itemActions": [
568
+ "array/filter",
569
+ "@config.itemActions",
570
+ [
571
+ "fn",
572
+ "item",
573
+ [
574
+ "or",
575
+ [
576
+ "=",
577
+ [
578
+ "array/len",
579
+ [
580
+ "object/get",
581
+ "@item",
582
+ "roles",
583
+ []
584
+ ]
585
+ ],
586
+ 0.0
587
+ ],
588
+ [
589
+ "array/includes",
590
+ [
591
+ "object/get",
592
+ "@item",
593
+ "roles",
594
+ []
595
+ ],
596
+ "@config.viewerRole"
597
+ ]
598
+ ]
599
+ ]
600
+ ],
533
601
  "itemClickEvent": "@config.itemClickEvent",
534
602
  "look": "dense",
535
603
  "maxInlineActions": "@config.maxInlineActions",
@@ -586,10 +654,23 @@
586
654
  "required": true,
587
655
  "type": "string"
588
656
  },
657
+ "roles": {
658
+ "items": {
659
+ "type": "string"
660
+ },
661
+ "name": "roles",
662
+ "required": false,
663
+ "type": "array"
664
+ },
589
665
  "variant": {
590
666
  "name": "variant",
591
667
  "required": false,
592
668
  "type": "string"
669
+ },
670
+ "when": {
671
+ "name": "when",
672
+ "required": false,
673
+ "type": "object"
593
674
  }
594
675
  },
595
676
  "type": "object"
@@ -623,6 +704,30 @@
623
704
  "tier": "presentation",
624
705
  "type": "number"
625
706
  },
707
+ "emptyDescription": {
708
+ "default": "",
709
+ "description": "What will appear here once rows exist.",
710
+ "label": "Empty-state description",
711
+ "synonyms": "empty text, no data message, empty hint",
712
+ "tier": "presentation",
713
+ "type": "string"
714
+ },
715
+ "emptyIcon": {
716
+ "default": "inbox",
717
+ "description": "Domain icon shown when there are no rows.",
718
+ "label": "Empty-state icon",
719
+ "synonyms": "empty icon, no data icon",
720
+ "tier": "presentation",
721
+ "type": "icon"
722
+ },
723
+ "emptyTitle": {
724
+ "default": "",
725
+ "description": "Specific title shown when there are no rows (\"No orders yet\"). Left blank, a generic line shows.",
726
+ "label": "Empty-state title",
727
+ "synonyms": "empty title, no data title, empty heading",
728
+ "tier": "presentation",
729
+ "type": "string"
730
+ },
626
731
  "feedBodyContent": {
627
732
  "default": {
628
733
  "children": [
@@ -683,10 +788,46 @@
683
788
  }
684
789
  ],
685
790
  {
791
+ "emptyDescription": "@config.emptyDescription",
792
+ "emptyIcon": "@config.emptyIcon",
793
+ "emptyTitle": "@config.emptyTitle",
686
794
  "entity": "@payload.data",
687
795
  "fields": [],
688
796
  "gap": "md",
689
- "itemActions": "@config.itemActions",
797
+ "itemActions": [
798
+ "array/filter",
799
+ "@config.itemActions",
800
+ [
801
+ "fn",
802
+ "item",
803
+ [
804
+ "or",
805
+ [
806
+ "=",
807
+ [
808
+ "array/len",
809
+ [
810
+ "object/get",
811
+ "@item",
812
+ "roles",
813
+ []
814
+ ]
815
+ ],
816
+ 0.0
817
+ ],
818
+ [
819
+ "array/includes",
820
+ [
821
+ "object/get",
822
+ "@item",
823
+ "roles",
824
+ []
825
+ ],
826
+ "@config.viewerRole"
827
+ ]
828
+ ]
829
+ ]
830
+ ],
690
831
  "renderItem": [
691
832
  "fn",
692
833
  "item",
@@ -974,11 +1115,47 @@
974
1115
  ],
975
1116
  {
976
1117
  "className": "w-full",
1118
+ "emptyDescription": "@config.emptyDescription",
1119
+ "emptyIcon": "@config.emptyIcon",
1120
+ "emptyTitle": "@config.emptyTitle",
977
1121
  "entity": "@payload.data",
978
1122
  "fields": "@config.fields",
979
1123
  "gap": "lg",
980
1124
  "imageField": "@config.imageField",
981
- "itemActions": "@config.itemActions",
1125
+ "itemActions": [
1126
+ "array/filter",
1127
+ "@config.itemActions",
1128
+ [
1129
+ "fn",
1130
+ "item",
1131
+ [
1132
+ "or",
1133
+ [
1134
+ "=",
1135
+ [
1136
+ "array/len",
1137
+ [
1138
+ "object/get",
1139
+ "@item",
1140
+ "roles",
1141
+ []
1142
+ ]
1143
+ ],
1144
+ 0.0
1145
+ ],
1146
+ [
1147
+ "array/includes",
1148
+ [
1149
+ "object/get",
1150
+ "@item",
1151
+ "roles",
1152
+ []
1153
+ ],
1154
+ "@config.viewerRole"
1155
+ ]
1156
+ ]
1157
+ ]
1158
+ ],
982
1159
  "maxInlineActions": "@config.maxInlineActions",
983
1160
  "minCardWidth": 260.0,
984
1161
  "type": "data-grid"
@@ -1010,13 +1187,6 @@
1010
1187
  "tier": "presentation",
1011
1188
  "type": "string"
1012
1189
  },
1013
- "imageLabelBinding": {
1014
- "default": "@item.thumbnailLabel",
1015
- "description": "Binding path for the image-area label slot.",
1016
- "label": "Image label binding",
1017
- "tier": "internal",
1018
- "type": "string"
1019
- },
1020
1190
  "include": {
1021
1191
  "default": [],
1022
1192
  "description": "Entity relation field names to hydrate on fetch (e.g. a `tag : Category` field named `tag`), so grid columns can use dot-paths like tag.name. Empty = no hydration, the default.",
@@ -1069,6 +1239,14 @@
1069
1239
  "required": false,
1070
1240
  "type": "string"
1071
1241
  },
1242
+ "roles": {
1243
+ "items": {
1244
+ "type": "string"
1245
+ },
1246
+ "name": "roles",
1247
+ "required": false,
1248
+ "type": "array"
1249
+ },
1072
1250
  "variant": {
1073
1251
  "name": "variant",
1074
1252
  "required": false,
@@ -1079,6 +1257,11 @@
1079
1257
  "ghost",
1080
1258
  "danger"
1081
1259
  ]
1260
+ },
1261
+ "when": {
1262
+ "name": "when",
1263
+ "required": false,
1264
+ "type": "object"
1082
1265
  }
1083
1266
  },
1084
1267
  "type": "object"
@@ -1250,7 +1433,40 @@
1250
1433
  ],
1251
1434
  {
1252
1435
  "detail": {
1253
- "actions": "@config.detailActions",
1436
+ "actions": [
1437
+ "array/filter",
1438
+ "@config.detailActions",
1439
+ [
1440
+ "fn",
1441
+ "action",
1442
+ [
1443
+ "or",
1444
+ [
1445
+ "=",
1446
+ [
1447
+ "array/len",
1448
+ [
1449
+ "object/get",
1450
+ "@action",
1451
+ "roles",
1452
+ []
1453
+ ]
1454
+ ],
1455
+ 0.0
1456
+ ],
1457
+ [
1458
+ "array/includes",
1459
+ [
1460
+ "object/get",
1461
+ "@action",
1462
+ "roles",
1463
+ []
1464
+ ],
1465
+ "@config.viewerRole"
1466
+ ]
1467
+ ]
1468
+ ]
1469
+ ],
1254
1470
  "fieldNames": "@config.detailFields",
1255
1471
  "initialData": "@payload.row",
1256
1472
  "showActions": true,
@@ -1316,20 +1532,6 @@
1316
1532
  "tier": "presentation",
1317
1533
  "type": "number"
1318
1534
  },
1319
- "priceBinding": {
1320
- "default": "@item.price",
1321
- "description": "Binding path for the price/amount overlay slot.",
1322
- "label": "Price field binding",
1323
- "tier": "internal",
1324
- "type": "string"
1325
- },
1326
- "priorityBinding": {
1327
- "default": "@item.priority",
1328
- "description": "Binding path for the priority slot.",
1329
- "label": "Priority field binding",
1330
- "tier": "internal",
1331
- "type": "string"
1332
- },
1333
1535
  "scopeField": {
1334
1536
  "default": "",
1335
1537
  "description": "Name the field on this entity that holds the viewer's id (e.g. memberId, patientId, assignee). When set, the list loads ONLY rows whose that field equals @user.id — the 'my bookings' / 'my appointments' shape. Left blank the list loads every row, which is the default. Declared, never inferred: guessing the column from its name would silently scope the wrong one.",
@@ -1430,9 +1632,45 @@
1430
1632
  {
1431
1633
  "children": [
1432
1634
  {
1635
+ "emptyDescription": "@config.emptyDescription",
1636
+ "emptyIcon": "@config.emptyIcon",
1637
+ "emptyTitle": "@config.emptyTitle",
1433
1638
  "entity": "@payload.data",
1434
1639
  "fields": "@config.fields",
1435
- "itemActions": "@config.itemActions",
1640
+ "itemActions": [
1641
+ "array/filter",
1642
+ "@config.itemActions",
1643
+ [
1644
+ "fn",
1645
+ "item",
1646
+ [
1647
+ "or",
1648
+ [
1649
+ "=",
1650
+ [
1651
+ "array/len",
1652
+ [
1653
+ "object/get",
1654
+ "@item",
1655
+ "roles",
1656
+ []
1657
+ ]
1658
+ ],
1659
+ 0.0
1660
+ ],
1661
+ [
1662
+ "array/includes",
1663
+ [
1664
+ "object/get",
1665
+ "@item",
1666
+ "roles",
1667
+ []
1668
+ ],
1669
+ "@config.viewerRole"
1670
+ ]
1671
+ ]
1672
+ ]
1673
+ ],
1436
1674
  "maxInlineActions": "@config.maxInlineActions",
1437
1675
  "type": "data-list",
1438
1676
  "variant": "compact"
@@ -1454,12 +1692,12 @@
1454
1692
  "tier": "internal",
1455
1693
  "type": "render-ui"
1456
1694
  },
1457
- "viewPattern": {
1458
- "default": "data-grid",
1459
- "description": "UI pattern used to render the collection. Used by the default bodyContent tree; Layer 3 variants override bodyContent directly instead and may ignore this knob.",
1460
- "label": "Render pattern",
1461
- "tier": "internal",
1462
- "type": "pattern"
1695
+ "viewerRole": {
1696
+ "default": "",
1697
+ "description": "The signed-in viewer's role that each row action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show.",
1698
+ "label": "Viewer's role",
1699
+ "tier": "policy",
1700
+ "type": "string"
1463
1701
  }
1464
1702
  },
1465
1703
  "effectRow": [
@@ -2578,6 +2816,14 @@
2578
2816
  {
2579
2817
  "name": "variant",
2580
2818
  "type": "string"
2819
+ },
2820
+ {
2821
+ "name": "roles",
2822
+ "type": "[string]"
2823
+ },
2824
+ {
2825
+ "name": "when",
2826
+ "type": "SExpr"
2581
2827
  }
2582
2828
  ],
2583
2829
  "ColumnSpec": [
@@ -2686,6 +2932,14 @@
2686
2932
  {
2687
2933
  "name": "icon",
2688
2934
  "type": "string"
2935
+ },
2936
+ {
2937
+ "name": "roles",
2938
+ "type": "[string]"
2939
+ },
2940
+ {
2941
+ "name": "when",
2942
+ "type": "SExpr"
2689
2943
  }
2690
2944
  ]
2691
2945
  },
@@ -261,6 +261,14 @@
261
261
  "required": false,
262
262
  "type": "string"
263
263
  },
264
+ "roles": {
265
+ "items": {
266
+ "type": "string"
267
+ },
268
+ "name": "roles",
269
+ "required": false,
270
+ "type": "array"
271
+ },
264
272
  "variant": {
265
273
  "name": "variant",
266
274
  "required": false,
@@ -271,6 +279,11 @@
271
279
  "ghost",
272
280
  "danger"
273
281
  ]
282
+ },
283
+ "when": {
284
+ "name": "when",
285
+ "required": false,
286
+ "type": "object"
274
287
  }
275
288
  },
276
289
  "type": "object"
@@ -376,7 +389,40 @@
376
389
  "fields": [],
377
390
  "gap": "md",
378
391
  "groupBy": "@config.agendaGroupBy",
379
- "itemActions": "@config.agendaItemActions",
392
+ "itemActions": [
393
+ "array/filter",
394
+ "@config.agendaItemActions",
395
+ [
396
+ "fn",
397
+ "action",
398
+ [
399
+ "or",
400
+ [
401
+ "=",
402
+ [
403
+ "array/len",
404
+ [
405
+ "object/get",
406
+ "@action",
407
+ "roles",
408
+ []
409
+ ]
410
+ ],
411
+ 0.0
412
+ ],
413
+ [
414
+ "array/includes",
415
+ [
416
+ "object/get",
417
+ "@action",
418
+ "roles",
419
+ []
420
+ ],
421
+ "@config.viewerRole"
422
+ ]
423
+ ]
424
+ ]
425
+ ],
380
426
  "renderItem": [
381
427
  "fn",
382
428
  "item",
@@ -597,7 +643,40 @@
597
643
  {
598
644
  "entity": "@payload.data",
599
645
  "fields": "@config.fields",
600
- "itemActions": "@config.agendaItemActions",
646
+ "itemActions": [
647
+ "array/filter",
648
+ "@config.agendaItemActions",
649
+ [
650
+ "fn",
651
+ "action",
652
+ [
653
+ "or",
654
+ [
655
+ "=",
656
+ [
657
+ "array/len",
658
+ [
659
+ "object/get",
660
+ "@action",
661
+ "roles",
662
+ []
663
+ ]
664
+ ],
665
+ 0.0
666
+ ],
667
+ [
668
+ "array/includes",
669
+ [
670
+ "object/get",
671
+ "@action",
672
+ "roles",
673
+ []
674
+ ],
675
+ "@config.viewerRole"
676
+ ]
677
+ ]
678
+ ]
679
+ ],
601
680
  "look": "@config.tableLook",
602
681
  "type": "data-list"
603
682
  }
@@ -839,6 +918,13 @@
839
918
  "tier": "presentation",
840
919
  "type": "string"
841
920
  },
921
+ "viewerRole": {
922
+ "default": "",
923
+ "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.",
924
+ "label": "Viewer's role",
925
+ "tier": "policy",
926
+ "type": "string"
927
+ },
842
928
  "weekTimelineBodyContent": {
843
929
  "default": {
844
930
  "children": [
@@ -1837,6 +1923,14 @@
1837
1923
  {
1838
1924
  "name": "icon",
1839
1925
  "type": "string"
1926
+ },
1927
+ {
1928
+ "name": "roles",
1929
+ "type": "[string]"
1930
+ },
1931
+ {
1932
+ "name": "when",
1933
+ "type": "SExpr"
1840
1934
  }
1841
1935
  ]
1842
1936
  }