@almadar/std 16.235.0 → 16.237.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 (283) hide show
  1. package/behaviors/behaviors-registry.json +5621 -1993
  2. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +32 -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-migration-job.lolo +2 -2
  12. package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +40 -18
  13. package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +25 -11
  14. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +0 -5
  15. package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +28 -11
  16. package/behaviors/lolo/infra/atoms/std-rate-limiter.lolo +84 -22
  17. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -6
  18. package/behaviors/lolo/ml/atoms/std-graph-builder.lolo +3 -1
  19. package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +0 -4
  20. package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +0 -4
  21. package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +12 -0
  22. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +55 -9
  23. package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +6 -2
  24. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +19 -14
  25. package/behaviors/lolo/ui/core/atoms/std-board.lolo +77 -27
  26. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +76 -33
  27. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +7 -3
  28. package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +25 -13
  29. package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +5 -0
  30. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +32 -5
  31. package/behaviors/lolo/ui/core/atoms/std-export.lolo +0 -10
  32. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +15 -4
  33. package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -6
  34. package/behaviors/lolo/ui/core/atoms/std-gantt-schedule.lolo +8 -1
  35. package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -0
  36. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +20 -4
  37. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +2 -2
  38. package/behaviors/lolo/ui/core/atoms/std-import.lolo +0 -5
  39. package/behaviors/lolo/ui/core/atoms/std-list.lolo +53 -32
  40. package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +2 -2
  41. package/behaviors/lolo/ui/core/atoms/std-multi-party-flow.lolo +24 -0
  42. package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +12 -13
  43. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +29 -13
  44. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +14 -1
  45. package/behaviors/lolo/ui/core/atoms/std-role-gate.lolo +39 -0
  46. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +84 -16
  47. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +22 -10
  48. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +5 -5
  49. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -0
  50. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +41 -73
  51. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +27 -12
  52. package/behaviors/lolo/ui/core/atoms/std-vote.lolo +0 -4
  53. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +3 -3
  54. package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +21 -0
  55. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +36 -0
  56. package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +5 -0
  57. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +5 -0
  58. package/behaviors/lolo/ui/core/molecules/ui-animated-counter.lolo +1 -1
  59. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +6 -1
  60. package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +11 -1
  61. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +13 -8
  62. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +11 -6
  63. package/behaviors/lolo/ui/core/molecules/ui-commit-row.lolo +2 -2
  64. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +8 -0
  65. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +60 -5
  66. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +47 -3
  67. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +3 -3
  68. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +31 -9
  69. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +8 -3
  70. package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +6 -1
  71. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +13 -0
  72. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +1 -1
  73. package/behaviors/lolo/ui/core/molecules/ui-feature-card.lolo +1 -1
  74. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +6 -1
  75. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +6 -1
  76. package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +6 -1
  77. package/behaviors/lolo/ui/core/molecules/ui-gantt.lolo +9 -1
  78. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +6 -1
  79. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +3 -2
  80. package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +1 -1
  81. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +7 -1
  82. package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +6 -1
  83. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +5 -0
  84. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +11 -1
  85. package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +1 -1
  86. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +44 -15
  87. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +57 -5
  88. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +8 -2
  89. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +87 -16
  90. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +37 -10
  91. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +46 -8
  92. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +36 -10
  93. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +57 -10
  94. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +57 -10
  95. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +22 -3
  96. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +6 -0
  97. package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +12 -0
  98. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +38 -5
  99. package/behaviors/lolo/ui/core/templates/ui-auth-layout.lolo +1 -1
  100. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +3 -45
  101. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +7 -2
  102. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +2 -37
  103. package/behaviors/lolo/ui/game/.hand-authored.json +2 -2
  104. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -1
  105. package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +2 -2
  106. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +9 -3
  107. package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -1
  108. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +2 -2
  109. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +0 -4
  110. package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +2 -66
  111. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +0 -4
  112. package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +0 -4
  113. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +6 -6
  114. package/behaviors/lolo-behavior-contracts.json +1 -1
  115. package/behaviors/registry/factory-signatures.json +1 -1
  116. package/behaviors/registry/infra/atoms/std-approval-gate.orb +194 -67
  117. package/behaviors/registry/infra/atoms/std-audit-capture.orb +0 -8
  118. package/behaviors/registry/infra/atoms/std-cache-aside.orb +0 -84
  119. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -44
  120. package/behaviors/registry/infra/atoms/std-data-erasure.orb +124 -55
  121. package/behaviors/registry/infra/atoms/std-data-import.orb +12 -11
  122. package/behaviors/registry/infra/atoms/std-game-clock.orb +31 -0
  123. package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +0 -57
  124. package/behaviors/registry/infra/atoms/std-lifecycle.orb +43 -0
  125. package/behaviors/registry/infra/atoms/std-migration-job.orb +26 -1
  126. package/behaviors/registry/infra/atoms/std-mod-queue.orb +379 -103
  127. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +135 -12
  128. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +0 -11
  129. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +137 -12
  130. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +287 -72
  131. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +5 -8
  132. package/behaviors/registry/ml/atoms/std-graph-builder.orb +11 -0
  133. package/behaviors/registry/ml/atoms/std-ml-classify.orb +0 -7
  134. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +0 -7
  135. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +82 -0
  136. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +417 -9
  137. package/behaviors/registry/ui/core/atoms/std-app-search.orb +53 -1
  138. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +209 -19
  139. package/behaviors/registry/ui/core/atoms/std-board.orb +242 -61
  140. package/behaviors/registry/ui/core/atoms/std-browse.orb +499 -49
  141. package/behaviors/registry/ui/core/atoms/std-calendar.orb +96 -2
  142. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +122 -15
  143. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +11 -0
  144. package/behaviors/registry/ui/core/atoms/std-event-log.orb +42 -6
  145. package/behaviors/registry/ui/core/atoms/std-export.orb +0 -16
  146. package/behaviors/registry/ui/core/atoms/std-file-store.orb +121 -3
  147. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -43
  148. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +25 -1
  149. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +5 -0
  150. package/behaviors/registry/ui/core/atoms/std-graphs.orb +173 -66
  151. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +4 -0
  152. package/behaviors/registry/ui/core/atoms/std-import.orb +0 -8
  153. package/behaviors/registry/ui/core/atoms/std-list.orb +237 -34
  154. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +10 -1
  155. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +24 -0
  156. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +37 -19
  157. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +275 -14
  158. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +93 -4
  159. package/behaviors/registry/ui/core/atoms/std-role-gate.orb +217 -0
  160. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +473 -19
  161. package/behaviors/registry/ui/core/atoms/std-selection.orb +179 -10
  162. package/behaviors/registry/ui/core/atoms/std-stats.orb +73 -1
  163. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +3 -0
  164. package/behaviors/registry/ui/core/atoms/std-thread.orb +190 -115
  165. package/behaviors/registry/ui/core/atoms/std-version-history.orb +138 -14
  166. package/behaviors/registry/ui/core/atoms/std-vote.orb +0 -9
  167. package/behaviors/registry/ui/core/atoms/std-wizard.orb +33 -3
  168. package/behaviors/registry/ui/core/atoms/ui-presence.orb +59 -0
  169. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +132 -0
  170. package/behaviors/registry/ui/core/atoms/ui-typography.orb +7 -0
  171. package/behaviors/registry/ui/core/molecules/ui-alert.orb +7 -0
  172. package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
  173. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +53 -1
  174. package/behaviors/registry/ui/core/molecules/ui-chart.orb +68 -1
  175. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +291 -8
  176. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +89 -6
  177. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +3 -2
  178. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +32 -0
  179. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +297 -5
  180. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +261 -3
  181. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -3
  182. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +93 -24
  183. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +121 -3
  184. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +53 -1
  185. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +40 -0
  186. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +0 -1
  187. package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +0 -1
  188. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +53 -1
  189. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +53 -1
  190. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +53 -1
  191. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +28 -1
  192. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +53 -1
  193. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +9 -2
  194. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
  195. package/behaviors/registry/ui/core/molecules/ui-menu.orb +74 -1
  196. package/behaviors/registry/ui/core/molecules/ui-meter.orb +53 -1
  197. package/behaviors/registry/ui/core/molecules/ui-modal.orb +8 -0
  198. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +60 -1
  199. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
  200. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +393 -23
  201. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +337 -5
  202. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +99 -2
  203. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +415 -33
  204. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +340 -29
  205. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +296 -20
  206. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +489 -9
  207. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +132 -13
  208. package/behaviors/registry/ui/core/organisms/ui-form.orb +132 -13
  209. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +141 -3
  210. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +58 -0
  211. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +82 -0
  212. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +159 -8
  213. package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +0 -1
  214. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -173
  215. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +53 -2
  216. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -116
  217. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
  218. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -2
  219. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +100 -3
  220. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +0 -1
  221. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +10 -0
  222. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +0 -7
  223. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -807
  224. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +0 -7
  225. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +0 -7
  226. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +6 -0
  227. package/canonical-operators.json +18 -1
  228. package/dist/behaviors/exports-reader.js +8942 -3946
  229. package/dist/behaviors/functions/index.d.ts +419 -132
  230. package/dist/behaviors/functions/index.js +8931 -3946
  231. package/dist/behaviors/index.d.ts +1 -1
  232. package/dist/behaviors/index.js +8943 -3947
  233. package/dist/behaviors/query.js +8942 -3946
  234. package/dist/behaviors-embeddings.hash.json +3 -3
  235. package/dist/behaviors-embeddings.json +49 -41
  236. package/dist/behaviors-registry.json +5621 -1993
  237. package/dist/index.d.ts +3 -3
  238. package/dist/index.js +8960 -3947
  239. package/dist/knob-embeddings.hash.json +3 -3
  240. package/dist/knob-embeddings.json +774 -374
  241. package/dist/modules/anim.d.ts +1 -1
  242. package/dist/modules/array.d.ts +1 -1
  243. package/dist/modules/array.js +15 -0
  244. package/dist/modules/async.d.ts +1 -1
  245. package/dist/modules/behavior.d.ts +1 -1
  246. package/dist/modules/browser.d.ts +1 -1
  247. package/dist/modules/composition.d.ts +1 -1
  248. package/dist/modules/contract.d.ts +1 -1
  249. package/dist/modules/core.d.ts +1 -1
  250. package/dist/modules/core.js +2 -0
  251. package/dist/modules/data.d.ts +1 -1
  252. package/dist/modules/ease.d.ts +1 -1
  253. package/dist/modules/format.d.ts +1 -1
  254. package/dist/modules/geo.d.ts +1 -1
  255. package/dist/modules/graph.d.ts +1 -1
  256. package/dist/modules/grid.d.ts +1 -1
  257. package/dist/modules/index.d.ts +1 -1
  258. package/dist/modules/index.js +17 -0
  259. package/dist/modules/integration.d.ts +1 -1
  260. package/dist/modules/json.d.ts +1 -1
  261. package/dist/modules/llm.d.ts +1 -1
  262. package/dist/modules/math.d.ts +1 -1
  263. package/dist/modules/memory.d.ts +1 -1
  264. package/dist/modules/nn.d.ts +1 -1
  265. package/dist/modules/noise.d.ts +1 -1
  266. package/dist/modules/object.d.ts +1 -1
  267. package/dist/modules/os.d.ts +1 -1
  268. package/dist/modules/path.d.ts +1 -1
  269. package/dist/modules/prob.d.ts +1 -1
  270. package/dist/modules/session.d.ts +1 -1
  271. package/dist/modules/str.d.ts +1 -1
  272. package/dist/modules/tensor.d.ts +1 -1
  273. package/dist/modules/time.d.ts +1 -1
  274. package/dist/modules/trace.d.ts +1 -1
  275. package/dist/modules/train.d.ts +1 -1
  276. package/dist/modules/validate.d.ts +1 -1
  277. package/dist/modules/vector.d.ts +1 -1
  278. package/dist/modules/workspace.d.ts +1 -1
  279. package/dist/registry/factory-signatures.json +1 -1
  280. package/dist/registry.d.ts +2 -2
  281. package/dist/registry.js +17 -0
  282. package/dist/{types-Ggla7OK7.d.ts → types-DLx38UFZ.d.ts} +23 -3
  283. package/package.json +3 -3
@@ -116,6 +116,29 @@
116
116
  {
117
117
  "category": "interaction",
118
118
  "config": {
119
+ "accessDeniedDescription": {
120
+ "default": "Ask an administrator if you need it.",
121
+ "label": "Access-denied message",
122
+ "tier": "presentation",
123
+ "type": "string"
124
+ },
125
+ "accessDeniedTitle": {
126
+ "default": "You don't have access to this page",
127
+ "label": "Access-denied title",
128
+ "tier": "presentation",
129
+ "type": "string"
130
+ },
131
+ "allowedRoles": {
132
+ "default": [],
133
+ "description": "Roles (matched against viewerRole) allowed to see this page's content. Empty = everyone; anyone else sees the access-denied state instead. Nav items and top-bar actions carry their own `roles` the same way.",
134
+ "items": {
135
+ "type": "string"
136
+ },
137
+ "label": "Who may open this page?",
138
+ "synonyms": "access, permission, restrict, only for, roles allowed, who can see",
139
+ "tier": "policy",
140
+ "type": "[string]"
141
+ },
119
142
  "appName": {
120
143
  "default": "App",
121
144
  "description": "Name shown in the top-left of the chrome header.",
@@ -145,13 +168,6 @@
145
168
  "tier": "internal",
146
169
  "type": "string"
147
170
  },
148
- "detailSlot": {
149
- "default": "modal",
150
- "description": "Slot where detail/edit views render",
151
- "label": "Detail slot",
152
- "tier": "internal",
153
- "type": "slot"
154
- },
155
171
  "layoutMode": {
156
172
  "default": "sidebar",
157
173
  "description": "sidebar = left rail; topnav = top bar; bottomnav = mobile tab bar; minimal = no nav.",
@@ -208,6 +224,14 @@
208
224
  "name": "label",
209
225
  "required": true,
210
226
  "type": "string"
227
+ },
228
+ "roles": {
229
+ "items": {
230
+ "type": "string"
231
+ },
232
+ "name": "roles",
233
+ "required": false,
234
+ "type": "array"
211
235
  }
212
236
  },
213
237
  "type": "object"
@@ -300,6 +324,14 @@
300
324
  "required": false,
301
325
  "type": "string"
302
326
  },
327
+ "roles": {
328
+ "items": {
329
+ "type": "string"
330
+ },
331
+ "name": "roles",
332
+ "required": false,
333
+ "type": "array"
334
+ },
303
335
  "variant": {
304
336
  "name": "variant",
305
337
  "required": false,
@@ -334,6 +366,13 @@
334
366
  "synonyms": "signed in user, current user, account, profile, persona, who am i",
335
367
  "tier": "presentation",
336
368
  "type": "string"
369
+ },
370
+ "viewerRole": {
371
+ "default": "",
372
+ "description": "The signed-in viewer's role that allowedRoles and each nav item's / top-bar action's `roles` are 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 items with no `roles` show and a page with allowedRoles is denied.",
373
+ "label": "Viewer's role",
374
+ "tier": "policy",
375
+ "type": "string"
337
376
  }
338
377
  },
339
378
  "effectRow": [
@@ -548,12 +587,139 @@
548
587
  ],
549
588
  "currentPath": "@config.currentPath",
550
589
  "layoutMode": "@config.layoutMode",
551
- "navItems": "@config.navItems",
590
+ "navItems": [
591
+ "array/map",
592
+ [
593
+ "array/filter",
594
+ "@config.navItems",
595
+ [
596
+ "fn",
597
+ "item",
598
+ [
599
+ "or",
600
+ [
601
+ "=",
602
+ [
603
+ "array/len",
604
+ [
605
+ "object/get",
606
+ "@item",
607
+ "roles",
608
+ []
609
+ ]
610
+ ],
611
+ 0.0
612
+ ],
613
+ [
614
+ "array/includes",
615
+ [
616
+ "object/get",
617
+ "@item",
618
+ "roles",
619
+ []
620
+ ],
621
+ "@config.viewerRole"
622
+ ]
623
+ ]
624
+ ]
625
+ ],
626
+ [
627
+ "fn",
628
+ "item",
629
+ [
630
+ "if",
631
+ [
632
+ "object/has",
633
+ "@item",
634
+ "children"
635
+ ],
636
+ [
637
+ "object/merge",
638
+ "@item",
639
+ {
640
+ "children": [
641
+ "array/filter",
642
+ [
643
+ "object/get",
644
+ "@item",
645
+ "children",
646
+ []
647
+ ],
648
+ [
649
+ "fn",
650
+ "child",
651
+ [
652
+ "or",
653
+ [
654
+ "=",
655
+ [
656
+ "array/len",
657
+ [
658
+ "object/get",
659
+ "@child",
660
+ "roles",
661
+ []
662
+ ]
663
+ ],
664
+ 0.0
665
+ ],
666
+ [
667
+ "array/includes",
668
+ [
669
+ "object/get",
670
+ "@child",
671
+ "roles",
672
+ []
673
+ ],
674
+ "@config.viewerRole"
675
+ ]
676
+ ]
677
+ ]
678
+ ]
679
+ }
680
+ ],
681
+ "@item"
682
+ ]
683
+ ]
684
+ ],
552
685
  "notificationClickEvent": "@config.notificationClickEvent",
553
686
  "notifications": "@config.notifications",
554
687
  "searchEvent": "@config.searchEvent",
555
688
  "sidebarContent": "@config.sidebarTrait",
556
- "topBarActions": "@config.topBarActions",
689
+ "topBarActions": [
690
+ "array/filter",
691
+ "@config.topBarActions",
692
+ [
693
+ "fn",
694
+ "action",
695
+ [
696
+ "or",
697
+ [
698
+ "=",
699
+ [
700
+ "array/len",
701
+ [
702
+ "object/get",
703
+ "@action",
704
+ "roles",
705
+ []
706
+ ]
707
+ ],
708
+ 0.0
709
+ ],
710
+ [
711
+ "array/includes",
712
+ [
713
+ "object/get",
714
+ "@action",
715
+ "roles",
716
+ []
717
+ ],
718
+ "@config.viewerRole"
719
+ ]
720
+ ]
721
+ ]
722
+ ],
557
723
  "type": "@config.layoutPattern",
558
724
  "user": [
559
725
  "if",
@@ -577,6 +743,236 @@
577
743
  "event": "INIT",
578
744
  "eventId": "evt_01KXG04FMZTB492XA0Y6A8FXFN",
579
745
  "from": "composing",
746
+ "guard": [
747
+ "or",
748
+ [
749
+ "=",
750
+ [
751
+ "array/len",
752
+ "@config.allowedRoles"
753
+ ],
754
+ 0.0
755
+ ],
756
+ [
757
+ "array/includes",
758
+ "@config.allowedRoles",
759
+ "@config.viewerRole"
760
+ ]
761
+ ],
762
+ "to": "composing"
763
+ },
764
+ {
765
+ "effects": [
766
+ [
767
+ "fetch",
768
+ "AppLayoutData",
769
+ {
770
+ "emit": {
771
+ "failure": "AppLayoutStateLoadFailed",
772
+ "success": "AppLayoutStateLoaded"
773
+ }
774
+ }
775
+ ],
776
+ [
777
+ "render-ui",
778
+ "main",
779
+ {
780
+ "children": [
781
+ {
782
+ "appName": "@config.appName",
783
+ "children": [
784
+ {
785
+ "children": [
786
+ {
787
+ "description": "@config.accessDeniedDescription",
788
+ "icon": "lock",
789
+ "title": "@config.accessDeniedTitle",
790
+ "type": "empty-state"
791
+ }
792
+ ],
793
+ "className": "@config.contentClassName",
794
+ "direction": "vertical",
795
+ "gap": "lg",
796
+ "type": "stack"
797
+ }
798
+ ],
799
+ "currentPath": "@config.currentPath",
800
+ "layoutMode": "@config.layoutMode",
801
+ "navItems": [
802
+ "array/map",
803
+ [
804
+ "array/filter",
805
+ "@config.navItems",
806
+ [
807
+ "fn",
808
+ "item",
809
+ [
810
+ "or",
811
+ [
812
+ "=",
813
+ [
814
+ "array/len",
815
+ [
816
+ "object/get",
817
+ "@item",
818
+ "roles",
819
+ []
820
+ ]
821
+ ],
822
+ 0.0
823
+ ],
824
+ [
825
+ "array/includes",
826
+ [
827
+ "object/get",
828
+ "@item",
829
+ "roles",
830
+ []
831
+ ],
832
+ "@config.viewerRole"
833
+ ]
834
+ ]
835
+ ]
836
+ ],
837
+ [
838
+ "fn",
839
+ "item",
840
+ [
841
+ "if",
842
+ [
843
+ "object/has",
844
+ "@item",
845
+ "children"
846
+ ],
847
+ [
848
+ "object/merge",
849
+ "@item",
850
+ {
851
+ "children": [
852
+ "array/filter",
853
+ [
854
+ "object/get",
855
+ "@item",
856
+ "children",
857
+ []
858
+ ],
859
+ [
860
+ "fn",
861
+ "child",
862
+ [
863
+ "or",
864
+ [
865
+ "=",
866
+ [
867
+ "array/len",
868
+ [
869
+ "object/get",
870
+ "@child",
871
+ "roles",
872
+ []
873
+ ]
874
+ ],
875
+ 0.0
876
+ ],
877
+ [
878
+ "array/includes",
879
+ [
880
+ "object/get",
881
+ "@child",
882
+ "roles",
883
+ []
884
+ ],
885
+ "@config.viewerRole"
886
+ ]
887
+ ]
888
+ ]
889
+ ]
890
+ }
891
+ ],
892
+ "@item"
893
+ ]
894
+ ]
895
+ ],
896
+ "notificationClickEvent": "@config.notificationClickEvent",
897
+ "notifications": "@config.notifications",
898
+ "searchEvent": "@config.searchEvent",
899
+ "sidebarContent": "@config.sidebarTrait",
900
+ "topBarActions": [
901
+ "array/filter",
902
+ "@config.topBarActions",
903
+ [
904
+ "fn",
905
+ "action",
906
+ [
907
+ "or",
908
+ [
909
+ "=",
910
+ [
911
+ "array/len",
912
+ [
913
+ "object/get",
914
+ "@action",
915
+ "roles",
916
+ []
917
+ ]
918
+ ],
919
+ 0.0
920
+ ],
921
+ [
922
+ "array/includes",
923
+ [
924
+ "object/get",
925
+ "@action",
926
+ "roles",
927
+ []
928
+ ],
929
+ "@config.viewerRole"
930
+ ]
931
+ ]
932
+ ]
933
+ ],
934
+ "type": "@config.layoutPattern",
935
+ "user": [
936
+ "if",
937
+ "@config.viewerName",
938
+ {
939
+ "avatar": "@config.viewerAvatar",
940
+ "email": "@config.viewerEmail",
941
+ "name": "@config.viewerName"
942
+ },
943
+ null
944
+ ]
945
+ }
946
+ ],
947
+ "className": "min-h-screen w-full",
948
+ "data-theme": "@config.theme",
949
+ "fullHeight": true,
950
+ "type": "box"
951
+ }
952
+ ]
953
+ ],
954
+ "event": "INIT",
955
+ "eventId": "evt_01KXG04FMZTB492XA0Y6A8FXFN",
956
+ "from": "composing",
957
+ "guard": [
958
+ "not",
959
+ [
960
+ "or",
961
+ [
962
+ "=",
963
+ [
964
+ "array/len",
965
+ "@config.allowedRoles"
966
+ ],
967
+ 0.0
968
+ ],
969
+ [
970
+ "array/includes",
971
+ "@config.allowedRoles",
972
+ "@config.viewerRole"
973
+ ]
974
+ ]
975
+ ],
580
976
  "to": "composing"
581
977
  },
582
978
  {
@@ -645,6 +1041,10 @@
645
1041
  {
646
1042
  "name": "icon",
647
1043
  "type": "string"
1044
+ },
1045
+ {
1046
+ "name": "roles",
1047
+ "type": "[string]"
648
1048
  }
649
1049
  ],
650
1050
  "NavItem": [
@@ -691,9 +1091,17 @@
691
1091
  "name": "children",
692
1092
  "properties": [],
693
1093
  "type": "[NavItem]"
1094
+ },
1095
+ {
1096
+ "name": "roles",
1097
+ "type": "[string]"
694
1098
  }
695
1099
  ],
696
1100
  "type": "[object]"
1101
+ },
1102
+ {
1103
+ "name": "roles",
1104
+ "type": "[string]"
697
1105
  }
698
1106
  ],
699
1107
  "NotificationSpec": [
@@ -267,6 +267,14 @@
267
267
  "required": false,
268
268
  "type": "string"
269
269
  },
270
+ "roles": {
271
+ "items": {
272
+ "type": "string"
273
+ },
274
+ "name": "roles",
275
+ "required": false,
276
+ "type": "array"
277
+ },
270
278
  "variant": {
271
279
  "name": "variant",
272
280
  "required": false,
@@ -387,6 +395,13 @@
387
395
  "label": "Search field",
388
396
  "tier": "presentation",
389
397
  "type": "string"
398
+ },
399
+ "viewerRole": {
400
+ "default": "",
401
+ "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.",
402
+ "label": "Viewer's role",
403
+ "tier": "policy",
404
+ "type": "string"
390
405
  }
391
406
  },
392
407
  "effectRow": [
@@ -770,7 +785,40 @@
770
785
  {
771
786
  "entity": "@payload.data",
772
787
  "fields": "@config.resultFields",
773
- "itemActions": "@config.resultActions",
788
+ "itemActions": [
789
+ "array/filter",
790
+ "@config.resultActions",
791
+ [
792
+ "fn",
793
+ "action",
794
+ [
795
+ "or",
796
+ [
797
+ "=",
798
+ [
799
+ "array/len",
800
+ [
801
+ "object/get",
802
+ "@action",
803
+ "roles",
804
+ []
805
+ ]
806
+ ],
807
+ 0.0
808
+ ],
809
+ [
810
+ "array/includes",
811
+ [
812
+ "object/get",
813
+ "@action",
814
+ "roles",
815
+ []
816
+ ],
817
+ "@config.viewerRole"
818
+ ]
819
+ ]
820
+ ]
821
+ ],
774
822
  "type": "data-grid"
775
823
  }
776
824
  ],
@@ -974,6 +1022,10 @@
974
1022
  {
975
1023
  "name": "hidden",
976
1024
  "type": "boolean"
1025
+ },
1026
+ {
1027
+ "name": "roles",
1028
+ "type": "[string]"
977
1029
  }
978
1030
  ],
979
1031
  "AppSearchFieldSpec": [