@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
@@ -3,25 +3,37 @@ app ui-data-list "1.0.0"
3
3
  ;; @pattern "data-list"
4
4
  orbital DataListOrbital {
5
5
  type DataListLoaded = Event { data : [DataListItem] } "DataList rows finished loading; payload.data holds the collection"
6
+ type DataListEmptyAction = {
7
+ label : string!
8
+ event : event
9
+ }
6
10
  type DataListFieldsItem = {
7
11
  name : string!
8
12
  label : string
9
13
  icon : icon
10
14
  variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
11
15
  format : "date" | "currency" | "number" | "boolean" | "percent"
16
+ colorMap : Map string DataListFieldsItemColorMapValue
17
+ labels : Map string string
12
18
  }
19
+ type DataListFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
13
20
  type DataListColumnsItem = {
14
21
  name : string!
15
22
  label : string
16
23
  icon : icon
17
24
  variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
18
25
  format : "date" | "currency" | "number" | "boolean" | "percent"
26
+ colorMap : Map string DataListColumnsItemColorMapValue
27
+ labels : Map string string
19
28
  }
29
+ type DataListColumnsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
20
30
  type DataListItemActionsItem = {
21
31
  label : string!
22
32
  event : event!
23
33
  icon : icon
24
34
  variant : "primary" | "secondary" | "ghost" | "danger"
35
+ when : SExpr
36
+ roles : [string]
25
37
  }
26
38
  type DataListError = {
27
39
  message : string!
@@ -65,10 +77,14 @@ orbital DataListOrbital {
65
77
  positionEvent: @config.positionEvent
66
78
  dndItemIdField: @config.dndItemIdField
67
79
  dndRoot: @config.dndRoot
80
+ emptyIcon: @config.emptyIcon
81
+ emptyTitle: @config.emptyTitle
82
+ emptyDescription: @config.emptyDescription
83
+ emptyAction: @config.emptyAction
68
84
  entity: @entity
69
85
  fields: @config.fields
70
86
  columns: @config.columns
71
- itemActions: @config.itemActions
87
+ itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
72
88
  maxInlineActions: @config.maxInlineActions
73
89
  itemClickEvent: @config.itemClickEvent
74
90
  gap: @config.gap
@@ -107,10 +123,14 @@ orbital DataListOrbital {
107
123
  positionEvent: @config.positionEvent
108
124
  dndItemIdField: @config.dndItemIdField
109
125
  dndRoot: @config.dndRoot
126
+ emptyIcon: @config.emptyIcon
127
+ emptyTitle: @config.emptyTitle
128
+ emptyDescription: @config.emptyDescription
129
+ emptyAction: @config.emptyAction
110
130
  entity: @entity
111
131
  fields: @config.fields
112
132
  columns: @config.columns
113
- itemActions: @config.itemActions
133
+ itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
114
134
  maxInlineActions: @config.maxInlineActions
115
135
  itemClickEvent: @config.itemClickEvent
116
136
  gap: @config.gap
@@ -149,10 +169,14 @@ orbital DataListOrbital {
149
169
  positionEvent: @config.positionEvent
150
170
  dndItemIdField: @config.dndItemIdField
151
171
  dndRoot: @config.dndRoot
172
+ emptyIcon: @config.emptyIcon
173
+ emptyTitle: @config.emptyTitle
174
+ emptyDescription: @config.emptyDescription
175
+ emptyAction: @config.emptyAction
152
176
  entity: @payload.data
153
177
  fields: @config.fields
154
178
  columns: @config.columns
155
- itemActions: @config.itemActions
179
+ itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
156
180
  maxInlineActions: @config.maxInlineActions
157
181
  itemClickEvent: @config.itemClickEvent
158
182
  gap: @config.gap
@@ -250,6 +274,22 @@ orbital DataListOrbital {
250
274
  @label "Dnd Root"
251
275
  @description "Mark this container as the DnD root for its subtree — descendant zones share one DndContext (cross-container drag). Use on an outer container whose own items are not draggable."
252
276
  @tier "presentation"
277
+ emptyIcon : icon
278
+ @label "Empty Icon"
279
+ @description "Domain icon for the empty state."
280
+ @tier "presentation"
281
+ emptyTitle : string
282
+ @label "Empty Title"
283
+ @description "Specific title ('No orders yet')."
284
+ @tier "presentation"
285
+ emptyDescription : string
286
+ @label "Empty Description"
287
+ @description "What will appear here once rows exist."
288
+ @tier "presentation"
289
+ emptyAction : DataListEmptyAction
290
+ @label "Empty Action"
291
+ @description "Create-the-first-item action."
292
+ @tier "presentation"
253
293
  fields : [DataListFieldsItem] = []
254
294
  @label "Fields"
255
295
  @description "Field definitions for rendering each row. The pattern contract in `@almadar/core/patterns` documents `columns` as the wire-format alias the compiler emits — both names resolve to the same shape here. Pass either."
@@ -366,6 +406,10 @@ orbital DataListOrbital {
366
406
  @label "Relations Data"
367
407
  @description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes."
368
408
  @tier "presentation"
409
+ viewerRole : string = ""
410
+ @label "Viewer's role"
411
+ @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."
412
+ @tier "policy"
369
413
  selfFetch : boolean = true
370
414
  @label "Fetch its own rows on mount?"
371
415
  @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
@@ -93,13 +93,13 @@ orbital DateRangePickerOrbital {
93
93
  @tier "presentation"
94
94
  presets : [DateRangePickerPresetsItem] = []
95
95
  @label "Presets"
96
- @description "Preset shortcuts. Defaults to the standard finance set (Last 7d / Last 30d / This Month / This Quarter / YTD). Pass an empty array to hide presets entirely."
96
+ @description "Preset shortcuts. Defaults to the translated standard finance set (Last 7d / Last 30d / This Month / This Quarter / YTD). Pass an empty array to hide presets entirely."
97
97
  @tier "presentation"
98
- fromLabel : string = From
98
+ fromLabel : string
99
99
  @label "From Label"
100
100
  @description "From-input label."
101
101
  @tier "presentation"
102
- toLabel : string = To
102
+ toLabel : string
103
103
  @label "To Label"
104
104
  @description "To-input label."
105
105
  @tier "presentation"
@@ -3,7 +3,7 @@ app ui-document-details "1.0.0"
3
3
  ;; @capabilities "document settings, page details, post settings sidebar, metadata panel, document properties, publish settings"
4
4
  ;; @pattern "document-details"
5
5
  orbital DocumentDetailsOrbital {
6
- type DocumentDetailsLoaded = Event { data : [DocumentDetailsItem] } "DocumentDetails rows finished loading; payload.data holds the collection"
6
+ type DocumentDetailsLoaded = Event { data : DocumentDetailsItem } "DocumentDetails row finished loading; payload.data holds the single row"
7
7
  type DocumentDetailsFieldsItem = {
8
8
  name : string
9
9
  key : string
@@ -12,6 +12,7 @@ orbital DocumentDetailsOrbital {
12
12
  icon : icon
13
13
  kind : "text" | "boolean" | "select" | "readonly" | "image"
14
14
  options : [string]
15
+ labels : Map string string
15
16
  format : "date" | "currency" | "number" | "boolean" | "percent"
16
17
  type : string
17
18
  }
@@ -28,11 +29,11 @@ orbital DocumentDetailsOrbital {
28
29
  }
29
30
 
30
31
  trait DocumentDetailsRender -> @rebindable DocumentDetailsItem [interaction, instance] {
31
- initial: idle
32
+ initial: resolving
32
33
 
33
- state idle {
34
- INIT -> idle when @config.selfFetch
35
- (fetch DocumentDetailsItem { emit: { success: DocumentDetailsLoaded } })
34
+ state resolving {
35
+ INIT -> idle when (and @config.selfFetch (!= (str/default ?id "") ""))
36
+ (fetch DocumentDetailsItem { id: ?id, emit: { success: DocumentDetailsLoaded } })
36
37
  (render-ui main {
37
38
  entity: @entity
38
39
  fields: @config.fields
@@ -42,7 +43,20 @@ orbital DocumentDetailsOrbital {
42
43
  className: @config.className
43
44
  type: document-details
44
45
  })
45
- INIT -> idle when (not @config.selfFetch)
46
+ INIT -> idle when (not (and @config.selfFetch (!= (str/default ?id "") "")))
47
+ (render-ui main {
48
+ entity: @entity
49
+ fields: @config.fields
50
+ metaCommitEvent: @config.metaCommitEvent
51
+ relationEvent: @config.relationEvent
52
+ title: @config.title
53
+ className: @config.className
54
+ type: document-details
55
+ })
56
+ }
57
+
58
+ state idle {
59
+ INIT -> idle
46
60
  (render-ui main {
47
61
  entity: @entity
48
62
  fields: @config.fields
@@ -79,11 +93,19 @@ orbital DocumentDetailsOrbital {
79
93
  @description "Makes relation chips clickable: emitted with { field, id, name } when a hydrated relation value (or one row of a many-relation) is clicked — the host routes it to the linked record's own surface."
80
94
  @tier "essential"
81
95
  DocumentDetailsLoaded
82
- @description "DocumentDetails rows finished loading; payload.data holds the collection."
96
+ @description "DocumentDetails row finished loading; payload.data holds the single row."
83
97
  @synonyms "loaded, fetched, retrieved"
84
98
  @tier "essential"
85
99
  }
86
100
 
101
+ listens {
102
+ INIT {
103
+ id : string
104
+ }
105
+ @description "Mount payload; a host that routes to this panel by id (a :id page param) passes it here."
106
+ @tier "internal"
107
+ }
108
+
87
109
  config {
88
110
  fields : [DocumentDetailsFieldsItem] = []
89
111
  @label "Fields"
@@ -106,8 +128,8 @@ orbital DocumentDetailsOrbital {
106
128
  @description "className prop"
107
129
  @tier "presentation"
108
130
  selfFetch : boolean = true
109
- @label "Fetch its own rows on mount?"
110
- @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
131
+ @label "Fetch its own row on mount?"
132
+ @description "true (default) = a mount that carries an id loads that one row (never the collection); a create-mode mount skips the load. false = a composing atom owns the load."
111
133
  @tier "internal"
112
134
  }
113
135
  }
@@ -8,6 +8,7 @@ orbital DocumentPanelOrbital {
8
8
  event : event
9
9
  icon : icon
10
10
  variant : "primary" | "secondary" | "ghost" | "danger"
11
+ roles : [string]
11
12
  }
12
13
 
13
14
  entity DocumentPanelItem [runtime] {
@@ -29,7 +30,7 @@ orbital DocumentPanelOrbital {
29
30
  coverImage: @config.coverImage
30
31
  icon: @config.icon
31
32
  value: @entity.value
32
- actions: @config.actions
33
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
33
34
  maxInlineActions: @config.maxInlineActions
34
35
  editing: @config.editing
35
36
  titleCommitEvent: @config.titleCommitEvent
@@ -51,7 +52,7 @@ orbital DocumentPanelOrbital {
51
52
  coverImage: @config.coverImage
52
53
  icon: @config.icon
53
54
  value: @entity.value
54
- actions: @config.actions
55
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
55
56
  maxInlineActions: @config.maxInlineActions
56
57
  editing: @config.editing
57
58
  titleCommitEvent: @config.titleCommitEvent
@@ -73,7 +74,7 @@ orbital DocumentPanelOrbital {
73
74
  coverImage: @config.coverImage
74
75
  icon: @config.icon
75
76
  value: @entity.value
76
- actions: @config.actions
77
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
77
78
  maxInlineActions: @config.maxInlineActions
78
79
  editing: @config.editing
79
80
  titleCommitEvent: @config.titleCommitEvent
@@ -192,6 +193,10 @@ orbital DocumentPanelOrbital {
192
193
  @label "Class Name"
193
194
  @description "className prop"
194
195
  @tier "presentation"
196
+ viewerRole : string = ""
197
+ @label "Viewer's role"
198
+ @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."
199
+ @tier "policy"
195
200
  }
196
201
  }
197
202
 
@@ -7,6 +7,7 @@ orbital DocumentViewerOrbital {
7
7
  event : event
8
8
  navigatesTo : string
9
9
  variant : "primary" | "secondary" | "ghost"
10
+ roles : [string]
10
11
  }
11
12
  type DocumentViewerDocumentsItem = {
12
13
  label : string!
@@ -41,7 +42,7 @@ orbital DocumentViewerOrbital {
41
42
  showToolbar: @config.showToolbar
42
43
  showDownload: @config.showDownload
43
44
  showPrint: @config.showPrint
44
- actions: @config.actions
45
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
45
46
  documents: @config.documents
46
47
  isLoading: @config.isLoading
47
48
  error: @config.error
@@ -111,6 +112,10 @@ orbital DocumentViewerOrbital {
111
112
  @label "Class Name"
112
113
  @description "Additional CSS classes"
113
114
  @tier "presentation"
115
+ viewerRole : string = ""
116
+ @label "Viewer's role"
117
+ @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."
118
+ @tier "policy"
114
119
  }
115
120
  }
116
121
 
@@ -19,6 +19,8 @@ orbital DrawerOrbital {
19
19
  OPEN -> open
20
20
  (render-ui drawer {
21
21
  isOpen: @config.isOpen
22
+ onExited: @config.onExited
23
+ contained: @config.contained
22
24
  onClose: @config.onClose
23
25
  title: @config.title
24
26
  children: @config.children
@@ -45,6 +47,9 @@ orbital DrawerOrbital {
45
47
  }
46
48
 
47
49
  emits {
50
+ @config.onExited -> external { }
51
+ @description "Fires after the exit animation completes (the drawer is about to unmount)."
52
+ @tier "essential"
48
53
  @config.onClose -> external { }
49
54
  @description "Callback when drawer should close (injected by slot wrapper)"
50
55
  @tier "essential"
@@ -60,6 +65,14 @@ orbital DrawerOrbital {
60
65
  @label "Is Open"
61
66
  @description "Whether the drawer is open (defaults to true when rendered by slot wrapper)"
62
67
  @tier "presentation"
68
+ onExited : event = "EXITED"
69
+ @label "On Exited"
70
+ @description "Fires after the exit animation completes (the drawer is about to unmount)."
71
+ @tier "presentation"
72
+ contained : boolean = false
73
+ @label "Contained"
74
+ @description "Render inside the nearest positioned ancestor (a preview frame) instead of over the window."
75
+ @tier "presentation"
63
76
  onClose : event = "CLOSE"
64
77
  @label "On Close"
65
78
  @description "Callback when drawer should close (injected by slot wrapper)"
@@ -42,7 +42,7 @@ orbital EmojiPickerOrbital {
42
42
  @label "Trigger Icon"
43
43
  @description "Icon shown on the trigger button"
44
44
  @tier "presentation"
45
- triggerLabel : string = "Add emoji"
45
+ triggerLabel : string
46
46
  @label "Trigger Label"
47
47
  @description "Accessible label for the trigger button"
48
48
  @tier "presentation"
@@ -42,7 +42,7 @@ orbital FeatureCardOrbital {
42
42
  @label "Href"
43
43
  @description "Optional link URL"
44
44
  @tier "presentation"
45
- linkLabel : string = "Learn more"
45
+ linkLabel : string
46
46
  @label "Link Label"
47
47
  @description "Label for the link button"
48
48
  @tier "presentation"
@@ -8,6 +8,7 @@ orbital FloatingActionButtonOrbital {
8
8
  icon : icon!
9
9
  event : event
10
10
  variant : "primary" | "secondary" | "success" | "danger" | "warning"
11
+ roles : [string]
11
12
  }
12
13
 
13
14
  entity FloatingActionButtonItem [runtime] {
@@ -22,7 +23,7 @@ orbital FloatingActionButtonOrbital {
22
23
  (render-ui main {
23
24
  action: @config.action
24
25
  actionPayload: @config.actionPayload
25
- actions: @config.actions
26
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
26
27
  icon: @config.icon
27
28
  onClick: @config.onClick
28
29
  variant: @config.variant
@@ -79,6 +80,10 @@ orbital FloatingActionButtonOrbital {
79
80
  @label "Class Name"
80
81
  @description "Additional CSS classes"
81
82
  @tier "presentation"
83
+ viewerRole : string = ""
84
+ @label "Viewer's role"
85
+ @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."
86
+ @tier "policy"
82
87
  }
83
88
  }
84
89
 
@@ -12,6 +12,7 @@ orbital FloatingToolbarOrbital {
12
12
  active : boolean
13
13
  disabled : boolean
14
14
  testId : string
15
+ roles : [string]
15
16
  }
16
17
 
17
18
  entity FloatingToolbarItem [runtime] {
@@ -24,7 +25,7 @@ orbital FloatingToolbarOrbital {
24
25
  state idle {
25
26
  INIT -> idle
26
27
  (render-ui main {
27
- items: @config.items
28
+ items: (array/filter @config.items (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
28
29
  position: @config.position
29
30
  children: @config.children
30
31
  className: @config.className
@@ -49,6 +50,10 @@ orbital FloatingToolbarOrbital {
49
50
  @label "Class Name"
50
51
  @description "Additional CSS classes on the positioned root"
51
52
  @tier "presentation"
53
+ viewerRole : string = ""
54
+ @label "Viewer's role"
55
+ @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."
56
+ @tier "policy"
52
57
  }
53
58
  }
54
59
 
@@ -15,6 +15,7 @@ orbital FormActionsOrbital {
15
15
  event : event
16
16
  navigatesTo : string
17
17
  variant : string
18
+ roles : [string]
18
19
  }
19
20
  type FormActionsFiltersItem = {
20
21
  field : string!
@@ -40,7 +41,7 @@ orbital FormActionsOrbital {
40
41
  (render-ui main {
41
42
  children: @config.children
42
43
  primary: @config.primary
43
- secondary: @config.secondary
44
+ secondary: (array/filter @config.secondary (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
44
45
  variant: @config.variant
45
46
  orientation: @config.orientation
46
47
  className: @config.className
@@ -84,6 +85,10 @@ orbital FormActionsOrbital {
84
85
  @label "Look"
85
86
  @description "Layer 2 visual treatment for the action-cluster (form-actions) pattern."
86
87
  @tier "presentation"
88
+ viewerRole : string = ""
89
+ @label "Viewer's role"
90
+ @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."
91
+ @tier "policy"
87
92
  }
88
93
  }
89
94
 
@@ -8,6 +8,7 @@ orbital GanttOrbital {
8
8
  from : string!
9
9
  to : string!
10
10
  }
11
+ type GanttStatusColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
11
12
  type GanttError = {
12
13
  message : string!
13
14
  name : string
@@ -33,6 +34,7 @@ orbital GanttOrbital {
33
34
  endField: @config.endField
34
35
  durationField: @config.durationField
35
36
  statusField: @config.statusField
37
+ statusColorMap: @config.statusColorMap
36
38
  groupField: @config.groupField
37
39
  rangeStart: @config.rangeStart
38
40
  rangeEnd: @config.rangeEnd
@@ -53,6 +55,7 @@ orbital GanttOrbital {
53
55
  endField: @config.endField
54
56
  durationField: @config.durationField
55
57
  statusField: @config.statusField
58
+ statusColorMap: @config.statusColorMap
56
59
  groupField: @config.groupField
57
60
  rangeStart: @config.rangeStart
58
61
  rangeEnd: @config.rangeEnd
@@ -73,6 +76,7 @@ orbital GanttOrbital {
73
76
  endField: @config.endField
74
77
  durationField: @config.durationField
75
78
  statusField: @config.statusField
79
+ statusColorMap: @config.statusColorMap
76
80
  groupField: @config.groupField
77
81
  rangeStart: @config.rangeStart
78
82
  rangeEnd: @config.rangeEnd
@@ -121,7 +125,11 @@ orbital GanttOrbital {
121
125
  @tier "presentation"
122
126
  statusField : string = status
123
127
  @label "Status Field"
124
- @description "Row field holding the bar status (drives bar colour). Defaults to `status`."
128
+ @description "Row field holding the bar status. Defaults to `status`."
129
+ @tier "presentation"
130
+ statusColorMap : Map string GanttStatusColorMapValue = { item: default }
131
+ @label "Status Color Map"
132
+ @description "Bar colour per exact status value; unmapped statuses are primary bars."
125
133
  @tier "presentation"
126
134
  groupField : string
127
135
  @label "Group Field"
@@ -41,6 +41,7 @@ orbital GraphCanvasOrbital {
41
41
  event : event
42
42
  navigatesTo : string
43
43
  variant : "primary" | "secondary" | "ghost"
44
+ roles : [string]
44
45
  }
45
46
  type GraphCanvasError = {
46
47
  message : string!
@@ -128,7 +129,7 @@ orbital GraphCanvasOrbital {
128
129
  showLabels: @config.showLabels
129
130
  interactive: @config.interactive
130
131
  draggable: @config.draggable
131
- actions: @config.actions
132
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
132
133
  onNodeClick: @config.onNodeClick
133
134
  onMarkClick: @config.onMarkClick
134
135
  onNodeDoubleClick: @config.onNodeDoubleClick
@@ -268,6 +269,10 @@ orbital GraphCanvasOrbital {
268
269
  @label "Class Name"
269
270
  @description "Additional CSS classes"
270
271
  @tier "presentation"
272
+ viewerRole : string = ""
273
+ @label "Viewer's role"
274
+ @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."
275
+ @tier "policy"
271
276
  }
272
277
  }
273
278
 
@@ -5,6 +5,7 @@ orbital ImportPreviewTreeOrbital {
5
5
  type ImportPreviewTreeUnitsItem = {
6
6
  ref : string!
7
7
  targetEntity : string!
8
+ title : string
8
9
  fields : Map string ControlValue!
9
10
  parentRef : string
10
11
  }
@@ -77,11 +78,11 @@ orbital ImportPreviewTreeOrbital {
77
78
  @label "On Cancel"
78
79
  @description "Called when the user cancels the staged import"
79
80
  @tier "presentation"
80
- confirmLabel : string = "Confirm import"
81
+ confirmLabel : string
81
82
  @label "Confirm Label"
82
83
  @description "Confirm button label"
83
84
  @tier "presentation"
84
- cancelLabel : string = Cancel
85
+ cancelLabel : string
85
86
  @label "Cancel Label"
86
87
  @description "Cancel button label"
87
88
  @tier "presentation"
@@ -45,7 +45,7 @@ orbital LikertScaleOrbital {
45
45
  @tier "presentation"
46
46
  options : [LikertScaleOptionsItem] = []
47
47
  @label "Options"
48
- @description "Scale points (defaults to a 5-point agree/disagree set)"
48
+ @description "Scale points (defaults to a translated 5-point agree/disagree set)"
49
49
  @tier "presentation"
50
50
  value : scalar
51
51
  @label "Value"
@@ -3,6 +3,7 @@ app ui-menu "1.0.0"
3
3
  ;; @pattern "menu"
4
4
  orbital MenuOrbital {
5
5
  type MenuItemsItem = {
6
+ type : "item" | "divider"
6
7
  id : string
7
8
  label : string!
8
9
  icon : icon
@@ -14,6 +15,7 @@ orbital MenuOrbital {
14
15
  url : string
15
16
  variant : "default" | "danger"
16
17
  subMenu : [MenuItemsItem]
18
+ roles : [string]
17
19
  }
18
20
 
19
21
  entity MenuItem [runtime] {
@@ -27,7 +29,7 @@ orbital MenuOrbital {
27
29
  INIT -> idle
28
30
  (render-ui main {
29
31
  trigger: @config.trigger
30
- items: @config.items
32
+ items: (array/filter @config.items (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
31
33
  position: @config.position
32
34
  className: @config.className
33
35
  header: @config.header
@@ -61,6 +63,10 @@ orbital MenuOrbital {
61
63
  @label "Footer"
62
64
  @description "Optional slot rendered below the items."
63
65
  @tier "presentation"
66
+ viewerRole : string = ""
67
+ @label "Viewer's role"
68
+ @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."
69
+ @tier "policy"
64
70
  }
65
71
  }
66
72
 
@@ -12,6 +12,7 @@ orbital MeterOrbital {
12
12
  event : event
13
13
  navigatesTo : string
14
14
  variant : "primary" | "secondary" | "ghost"
15
+ roles : [string]
15
16
  }
16
17
  type MeterError = {
17
18
  message : string!
@@ -40,7 +41,7 @@ orbital MeterOrbital {
40
41
  segments: @config.segments
41
42
  showValue: @config.showValue
42
43
  size: @config.size
43
- actions: @config.actions
44
+ actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
44
45
  isLoading: @config.isLoading
45
46
  error: @config.error
46
47
  className: @config.className
@@ -105,6 +106,10 @@ orbital MeterOrbital {
105
106
  @label "Class Name"
106
107
  @description "Additional CSS classes"
107
108
  @tier "presentation"
109
+ viewerRole : string = ""
110
+ @label "Viewer's role"
111
+ @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."
112
+ @tier "policy"
108
113
  }
109
114
  }
110
115
 
@@ -32,6 +32,7 @@ orbital ModalOrbital {
32
32
  closeEvent: @config.closeEvent
33
33
  swipeDownToClose: @config.swipeDownToClose
34
34
  look: @config.look
35
+ contained: @config.contained
35
36
  type: modal
36
37
  })
37
38
  }
@@ -117,6 +118,10 @@ orbital ModalOrbital {
117
118
  @label "Look"
118
119
  @description "Layer 2 visual treatment — orthogonal to the semantic variant."
119
120
  @tier "presentation"
121
+ contained : boolean = false
122
+ @label "Contained"
123
+ @description "Render inside the nearest positioned ancestor (a preview frame) instead of portaling over the whole window; page scroll is left alone."
124
+ @tier "presentation"
120
125
  }
121
126
  }
122
127