@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
@@ -1,7 +1,7 @@
1
1
  app std-file-store "2.0.0"
2
2
  "std-file-store — the generic file/page tree primitive. A file-tree + config-driven data table over a hierarchical collection; opens a row in `viewing_single` with config-driven detail actions. Rebindable: pass `fields`/`itemActions`/`detailActions`/`tree` to retarget it at any hierarchical entity (files, wiki pages, note trees). Folds in the former std-page-tree via `reorderable` + a page field/action set."
3
3
  type FieldSpec = { name : string!, label : string, variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress", icon : string, format : "date" | "currency" | "number" | "boolean" | "percent", key : string, header : string }
4
- type ItemAction = { label : string!, event : event!, variant : "primary" | "secondary" | "ghost" | "danger", icon : string }
4
+ type ItemAction = { label : string!, event : event!, variant : "primary" | "secondary" | "ghost" | "danger", icon : string, roles : [string], when : SExpr }
5
5
  type TreeNode = { name : string!, path : string!, type : "file" | "dir"!, children : [TreeNode] }
6
6
  orbital StoredFileOrbital {
7
7
  type StoredFileLoaded = Event { data : [StoredFile] } "Fired when the collection finishes loading"
@@ -63,7 +63,8 @@ orbital StoredFileOrbital {
63
63
  entity: ?data
64
64
  fields: @config.fields
65
65
  gap: sm
66
- itemActions: @config.itemActions
66
+ itemClickEvent: @config.itemClickEvent
67
+ itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
67
68
  look: @config.tableLook
68
69
  reorderEvent: REORDER
69
70
  reorderable: @config.reorderable
@@ -154,7 +155,7 @@ orbital StoredFileOrbital {
154
155
  gap: sm
155
156
  type: stack
156
157
  }, { type: divider }, {
157
- entity: @config.detailActions
158
+ entity: (array/filter @config.detailActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
158
159
  fields: []
159
160
  gap: sm
160
161
  renderItem: (fn a {
@@ -385,7 +386,7 @@ orbital StoredFileOrbital {
385
386
  fields : [FieldSpec] = [{
386
387
  label: Name
387
388
  name: name
388
- variant: caption
389
+ variant: h4
389
390
  }, {
390
391
  label: Folder
391
392
  name: folder
@@ -399,6 +400,7 @@ orbital StoredFileOrbital {
399
400
  name: sizeBytes
400
401
  variant: caption
401
402
  }, {
403
+ format: date
402
404
  label: Uploaded
403
405
  name: uploadedAt
404
406
  variant: caption
@@ -406,6 +408,11 @@ orbital StoredFileOrbital {
406
408
  @label "Columns to show"
407
409
  @description "Each column maps to one field on the linked entity"
408
410
  @tier "presentation"
411
+ itemClickEvent : event = OPEN_FILE
412
+ @label "Which event does clicking a row fire?"
413
+ @description "Row-click channel; empty = rows are not clickable."
414
+ @synonyms "row click event, item click, open event"
415
+ @tier "presentation"
409
416
  itemActions : [ItemAction] = [{
410
417
  event: OPEN_FILE
411
418
  icon: arrow-right
@@ -431,6 +438,10 @@ orbital StoredFileOrbital {
431
438
  @label "Detail actions"
432
439
  @description "Buttons shown on the opened row's detail"
433
440
  @tier "presentation"
441
+ viewerRole : string = ""
442
+ @label "Viewer's role"
443
+ @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."
444
+ @tier "policy"
434
445
  tree : [TreeNode] = [{
435
446
  children: [{
436
447
  name: "Active.pdf"
@@ -1,7 +1,6 @@
1
1
  app std-form-advanced "1.2.0"
2
- "std-form-advanced — full-typed form-section primitive. Hosts the `editing` state with a configurable `fields` array (each entry mirrors @almadar/ui's `form-section` field schema: `{ name, label, type?, values?, relation?, required? }`). Field-level constraints live in `config.fieldValidation` as `[{ field, format?: 'email'|'url'|'phone', regex?, minLength?, maxLength?, message? }]` — form-section surfaces inline errors when a submit violates a declared constraint. Agents drive shape by overriding `config.fields` + `config.fieldValidation` per-call-site."
2
+ "std-form-advanced — full-typed form-section primitive. Hosts the `editing` state with a configurable `fields` array (each entry mirrors @almadar/ui's `form-section` field schema: `{ name, label, type?, values?, relation?, required? }`). Agents drive shape by overriding `config.fields` per-call-site."
3
3
  type FieldSpec = { name : string!, label : string, variant : string, icon : string, format : string, key : string, header : string }
4
- type ValidationSpec = { field : string!, rule : string, message : string }
5
4
  orbital FormEntryOrbital {
6
5
  type FormEntryLoaded = Event { data : [FormEntry] } "Fired when FormEntry finishes loading"
7
6
 
@@ -251,10 +250,6 @@ orbital FormEntryOrbital {
251
250
  @label "Form fields"
252
251
  @description "Inputs to render; each entry follows the form-section field schema"
253
252
  @tier "presentation"
254
- fieldValidation : [ValidationSpec] = []
255
- @label "Field validation"
256
- @description "Per-field rules (format, regex, length) shown inline on submit"
257
- @tier "domain"
258
253
  submitLabel : string
259
254
  @label "Submit button"
260
255
  @description "Label on the submit button; unset keeps the translated Save"
@@ -2,6 +2,7 @@ app std-gantt-schedule "1.0.0"
2
2
  "std-gantt-schedule — GENERIC view-only Gantt/timeline atom: fetches a task collection on INIT and renders it as bars on a day-scale axis via the gantt pattern, with group headers, dependency arrows, and a today marker. Fully rebindable: a host overrides the linked entity and points the field-mapping configs (labelField/startField/endField/durationField/statusField/groupField) at its own columns; clicking a bar emits the config-named onBarClick event with the row id. No drag-edit, no zoom — schedule viewing only."
3
3
  type GanttLinkSpec = { from : string!, to : string! }
4
4
  orbital GanttScheduleOrbital {
5
+ type BarColor = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
5
6
  type TaskLoaded = Event { data : [Task] } "Fired when Task finishes loading; payload.data holds the tasks"
6
7
 
7
8
  type TaskLoadFailed = Event { error : string, code : string } "Fired when Task fails to load"
@@ -61,6 +62,7 @@ orbital GanttScheduleOrbital {
61
62
  showToday: @config.showToday
62
63
  startField: @config.startField
63
64
  statusField: @config.statusField
65
+ statusColorMap: @config.statusColorMap
64
66
  tasks: ?data
65
67
  titleField: @config.labelField
66
68
  type: gantt
@@ -167,9 +169,14 @@ orbital GanttScheduleOrbital {
167
169
  @tier "presentation"
168
170
  statusField : string = "status"
169
171
  @label "Status field"
170
- @description "Row column holding the status value that drives bar colour."
172
+ @description "Row column holding each bar's status value."
171
173
  @synonyms "status column, state field, stage field"
172
174
  @tier "presentation"
175
+ statusColorMap : Map string BarColor = {}
176
+ @label "Bar colour per status"
177
+ @description "Bar colour for each exact status value, e.g. {blocked: danger, complete: success}. Unmapped statuses are primary bars."
178
+ @synonyms "status colours, bar colours, colour map"
179
+ @tier "presentation"
173
180
  groupField : string = ""
174
181
  @label "Group field"
175
182
  @description "Row column rows are grouped under header rows by (e.g. team, project). Empty (default) = flat list, no group headers."
@@ -22,6 +22,7 @@ orbital GeoSearchResultOrbital {
22
22
 
23
23
  state idle {
24
24
  INIT -> idle
25
+ (set @entity.radiusKm @config.defaultRadiusKm)
25
26
  (render-ui main {
26
27
  children: [{
27
28
  event: @config.event
@@ -1,5 +1,5 @@
1
1
  app std-graphs "2.0.0"
2
- "std-graphs — embeddable chart atom. ITEMS_LOADED groups @payload.data by @config.categoryField (or @config.timeField when timeAxis=true) and aggregates per bucket. Multi-series rendering via @config.series (preformatted ChartSeries shape). Histograms via chartType=histogram pass pre-binned @payload.data through unchanged. Stacked / 100% stacked bars via @config.stack. Post-process sort + limit. Clicking a data point emits UI:@config.drillEvent with { label, value, seriesLabel? }. Drop into a dashboard alongside std-stats / std-browse."
2
+ "std-graphs — embeddable chart atom. ITEMS_LOADED keeps the rows whose @config.filterField equals @config.filterValue (blank = all), groups them by @config.categoryField, or (timeAxis=true) by the @config.period bucket of @config.timeField — rows without a time value have no place on a time axis and are left out — and aggregates per bucket. Multi-series rendering via @config.series (preformatted ChartSeries shape). Histograms via chartType=histogram pass pre-binned @payload.data through unchanged. Stacked / 100% stacked bars via @config.stack. Post-process sort + limit. Clicking a data point emits UI:@config.drillEvent with { label, value, seriesLabel? }. Drop into a dashboard alongside std-stats / std-browse."
3
3
  type ObjectSpec = { id : string, label : string, value : string }
4
4
  orbital GraphItemOrbital {
5
5
  type ChartPoint = { label : string!, value : number! }
@@ -27,17 +27,22 @@ orbital GraphItemOrbital {
27
27
  stack: @config.stack
28
28
  subtitle: @config.subtitle
29
29
  timeAxis: @config.timeAxis
30
+ period: @config.period
30
31
  title: @config.title
31
32
  type: @config.viewPattern
32
33
  })
33
34
  ITEMS_LOADED -> idle
34
- (set @entity.chartData (if ["=", @config.chartType, histogram] (array/map ?data (fn p {
35
+ (let (
36
+ (rows (if ["=", @config.filterField, ""] ?data (array/filter ?data (fn row (= (object/get @row @config.filterField) @config.filterValue)))))
37
+ )
38
+ (set @entity.chartData (if ["=", @config.chartType, histogram] (array/map @rows (fn p {
35
39
  label: (object/get @p label)
36
40
  value: (object/get @p value)
37
- })) (array/map (object/entries (array/groupBy ?data (if @config.timeAxis @config.timeField @config.categoryField))) (fn entry {
41
+ })) (array/map (object/entries (if @config.timeAxis (array/groupBy (array/map (array/filter @rows (fn row (object/get @row @config.timeField))) (fn row (object/set @row "periodStart" (time/startOf (time/parse (object/get @row @config.timeField)) @config.period)))) "periodStart") (array/groupBy @rows @config.categoryField))) (fn entry {
38
42
  label: (object/get @entry "0")
39
43
  value: (if ["=", @config.aggregation, sum] (array/sum (object/get @entry "1") @config.valueField) (if ["=", @config.aggregation, avg] (array/avg (object/get @entry "1") @config.valueField) (if ["=", @config.aggregation, min] (array/min (object/get @entry "1") @config.valueField) (if ["=", @config.aggregation, max] (array/max (object/get @entry "1") @config.valueField) (array/len (object/get @entry "1"))))))
40
- }))))
44
+ })))))
45
+ (set @entity.chartData (if @config.timeAxis (array/sort @entity.chartData label asc) @entity.chartData))
41
46
  (set @entity.chartData (if ["!=", @config.sortField, none] (array/sort @entity.chartData @config.sortField @config.sortDir) @entity.chartData))
42
47
  (set @entity.chartData (if [">", @config.limit, 0] (array/take @entity.chartData @config.limit) @entity.chartData))
43
48
  (render-ui main {
@@ -51,6 +56,7 @@ orbital GraphItemOrbital {
51
56
  stack: @config.stack
52
57
  subtitle: @config.subtitle
53
58
  timeAxis: @config.timeAxis
59
+ period: @config.period
54
60
  title: @config.title
55
61
  type: @config.viewPattern
56
62
  })
@@ -92,6 +98,16 @@ orbital GraphItemOrbital {
92
98
  @description "Group by month, quarter, week, day, or year — the calendar bucket the chart groups data into. Set ALONGSIDE timeAxis=true whenever the user says 'group by <time-unit>' or 'by <time-unit>' or 'rebucket to <time-unit>' or 'instead of <other-time-unit>'."
93
99
  @synonyms "regroup / rebucket / change bucket / group differently. user phrases: 'group by month' / 'by month' / 'monthly' / 'monthly buckets' / 'switch to monthly' / 'instead of quarter' -> month; 'group by quarter' / 'by quarter' / 'quarterly' -> quarter; 'group by week' / 'by week' / 'weekly' / 'weekly buckets' -> week; 'group by day' / 'by day' / 'daily' / 'daily buckets' -> day; 'group by year' / 'by year' / 'yearly' / 'annually' -> year. Whenever the user voices 'group by <time-unit>' BOTH period AND timeAxis=true should be set."
94
100
  @tier "presentation"
101
+ filterField : string = ""
102
+ @label "Only count rows where field"
103
+ @description "Row field a row must match to be charted (blank = every row), compared with filterValue — e.g. status + paid charts paid invoices only"
104
+ @synonyms "only include, where, filter by, restrict to. user phrases: 'only paid invoices' -> filterField=status + filterValue=paid; 'just the open deals' -> filterField=status + filterValue=open"
105
+ @tier "presentation"
106
+ filterValue : string = ""
107
+ @label "Equals"
108
+ @description "The value filterField must equal for a row to be charted"
109
+ @synonyms "the kept value. user phrases: 'only paid' -> paid; 'just active ones' -> active"
110
+ @tier "presentation"
95
111
  valueField : string = ""
96
112
  @label "Value field"
97
113
  @description "Numeric field aggregated per bucket (blank = row count)"
@@ -68,7 +68,7 @@ orbital UploadedImageOrbital {
68
68
  maxFiles: @config.maxImages
69
69
  maxSize: @config.maxBytesPerImage
70
70
  type: upload-drop-zone
71
- }, { entity: ?data, type: media-gallery }]
71
+ }, { captionField: name, entity: ?data, srcField: url, type: media-gallery }]
72
72
  direction: vertical
73
73
  gap: md
74
74
  type: stack
@@ -199,7 +199,7 @@ orbital UploadedImageOrbital {
199
199
  maxFiles: @config.maxImages
200
200
  maxSize: @config.maxBytesPerImage
201
201
  type: upload-drop-zone
202
- }, { entity: ?data, type: media-gallery }]
202
+ }, { captionField: name, entity: ?data, srcField: url, type: media-gallery }]
203
203
  direction: vertical
204
204
  gap: md
205
205
  type: stack
@@ -107,11 +107,6 @@ orbital ImportOrbital {
107
107
  @description "Text shown on the toolbar button that opens the import source popover"
108
108
  @synonyms "the text on the import trigger button. user phrases: 'rename import button to X' / 'set the button label to X' -> X (e.g. 'Import Data', 'Add Sources')"
109
109
  @tier "presentation"
110
- event : string = IMPORT_SOURCE_PICKED
111
- @label "Source-picked event"
112
- @description "Event emitted when the user picks a source. Each entry in sources[] carries its own literal event field (no per-item templating in .lolo) — overriding this alone does not retarget the click; also set sources[].event to match."
113
- @synonyms "bus event name. internal wiring; users rarely target directly"
114
- @tier "internal"
115
110
  sources : [SourceOption] = [{
116
111
  event: IMPORT_SOURCE_PICKED
117
112
  id: paste
@@ -1,6 +1,7 @@
1
1
  app std-list "1.0.0"
2
2
  "std-list as a Function"
3
3
  type FilterSpec = { field : string!, label : string, options : [string] }
4
+ type ItemAction = { label : string!, event : event, variant : string, roles : [string], when : SExpr }
4
5
  ;;
5
6
  ;; Daisy-chain composition showcase: no `on EVENT { ... }` trait-ref overrides.
6
7
  ;; Modal + Confirmation trait refs are configured via `config: { ... }` at the
@@ -11,6 +12,10 @@ type FilterSpec = { field : string!, label : string, options : [string] }
11
12
  ;; old version had — form-section's mode set only supports "create" | "edit",
12
13
  ;; and a dedicated detail-view pattern is tracked separately (std-detail).
13
14
  orbital ListItemOrbital {
15
+ uses RoleGate from "std/behaviors/std-role-gate"
16
+
17
+ uses Button from "std/behaviors/ui-button"
18
+
14
19
  uses Confirmation from "std/behaviors/std-confirmation"
15
20
 
16
21
  uses Modal from "std/behaviors/std-modal"
@@ -61,13 +66,7 @@ orbital ListItemOrbital {
61
66
  direction: horizontal
62
67
  gap: md
63
68
  type: stack
64
- }, {
65
- action: CREATE
66
- icon: plus
67
- label: Create
68
- type: button
69
- variant: primary
70
- }]
69
+ }, <trait.ListItemCreateGate />]
71
70
  direction: horizontal
72
71
  gap: md
73
72
  justify: between
@@ -118,15 +117,8 @@ orbital ListItemOrbital {
118
117
  name: status
119
118
  variant: badge
120
119
  }]
121
- itemActions: [{
122
- event: EDIT
123
- label: Edit
124
- variant: ghost
125
- }, {
126
- event: DELETE
127
- label: Delete
128
- variant: danger
129
- }]
120
+ itemClickEvent: @config.itemClickEvent
121
+ itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
130
122
  pageSize: @config.displayPageSize
131
123
  type: data-grid
132
124
  }]
@@ -208,13 +200,7 @@ orbital ListItemOrbital {
208
200
  direction: horizontal
209
201
  gap: md
210
202
  type: stack
211
- }, {
212
- action: CREATE
213
- icon: plus
214
- label: Create
215
- type: button
216
- variant: primary
217
- }]
203
+ }, <trait.ListItemCreateGate />]
218
204
  direction: horizontal
219
205
  gap: md
220
206
  justify: between
@@ -265,15 +251,8 @@ orbital ListItemOrbital {
265
251
  name: status
266
252
  variant: badge
267
253
  }]
268
- itemActions: [{
269
- event: EDIT
270
- label: Edit
271
- variant: ghost
272
- }, {
273
- event: DELETE
274
- label: Delete
275
- variant: danger
276
- }]
254
+ itemClickEvent: @config.itemClickEvent
255
+ itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
277
256
  pageSize: @config.displayPageSize
278
257
  type: data-grid
279
258
  }]
@@ -392,6 +371,48 @@ orbital ListItemOrbital {
392
371
  @description "Rows visible per page before the data-grid's own pagination control appears — 20 matches the CRUD-list density sweet spot (Miller's law, 10-25 rows)."
393
372
  @synonyms "visible rows, items per page, display limit, show per page"
394
373
  @tier "presentation"
374
+ itemClickEvent : event = EDIT
375
+ @label "Which event does clicking a row fire?"
376
+ @description "Row-click channel; empty = rows are not clickable."
377
+ @synonyms "row click event, item click, open event"
378
+ @tier "presentation"
379
+ itemActions : [ItemAction] = [{
380
+ event: EDIT
381
+ label: Edit
382
+ variant: ghost
383
+ }, {
384
+ event: DELETE
385
+ label: Delete
386
+ variant: danger
387
+ }]
388
+ @label "Row actions"
389
+ @description "Actions offered on each row; give an item `roles` to show it only to those viewer roles."
390
+ @tier "presentation"
391
+ viewerRole : string = ""
392
+ @label "Viewer's role"
393
+ @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."
394
+ @tier "policy"
395
+ createRoles : [string] = []
396
+ @label "Roles that can create"
397
+ @description "Roles (matched against viewerRole) that see the Create button. Empty = everyone."
398
+ @tier "policy"
399
+ }
400
+ }
401
+
402
+ trait ListItemCreateButton = Button.traits.ButtonRender {
403
+ config {
404
+ action: CREATE
405
+ icon: plus
406
+ label: Create
407
+ variant: primary
408
+ }
409
+ }
410
+
411
+ trait ListItemCreateGate = RoleGate.traits.RoleGate {
412
+ config {
413
+ roles: @config.createRoles
414
+ viewerRole: @config.viewerRole
415
+ content: <trait.ListItemCreateButton />
395
416
  }
396
417
  }
397
418
 
@@ -293,7 +293,7 @@ orbital ModalEditorOrbital {
293
293
  (set @entity.cmdline "")
294
294
  (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
295
295
 
296
- KEY -> COMMAND when (and ["!=", ?key, "Enter"] ["!=", ?key, "Escape"] ["!=", ?key, "Backspace"])
296
+ KEY -> COMMAND when (and (array/includes (object/get @config.keymap "COMMAND") ?key) ["!=", ?key, "Enter"] ["!=", ?key, "Escape"] ["!=", ?key, "Backspace"])
297
297
  (set @entity.cmdline (str/concat @entity.cmdline ?key))
298
298
 
299
299
  EDITOR_FOCUS -> COMMAND
@@ -312,7 +312,7 @@ orbital ModalEditorOrbital {
312
312
  meta : boolean
313
313
  repeat : boolean
314
314
  }
315
- @description "One physical keydown, delivered by the host's keyboard router. The host decides preventDefault from config.keymap; this trait only reads key + editorId."
315
+ @description "One physical keydown, delivered by the host's keyboard router. The host decides preventDefault from config.keymap; the command line accepts only keys config.keymap captures in COMMAND."
316
316
  EDITOR_FOCUS {
317
317
  editorId : string
318
318
  }
@@ -259,6 +259,10 @@ orbital MultiPartyFlowOrbital {
259
259
  }, {
260
260
  entity: @entity.audit
261
261
  fields: (title description timestamp status)
262
+ titleField: "title"
263
+ descriptionField: "description"
264
+ dateField: "timestamp"
265
+ statusField: "status"
262
266
  look: @config.timelineLook
263
267
  type: timeline
264
268
  }, { type: divider }, {
@@ -508,6 +512,10 @@ orbital MultiPartyFlowOrbital {
508
512
  }, {
509
513
  entity: @entity.audit
510
514
  fields: (title description timestamp status)
515
+ titleField: "title"
516
+ descriptionField: "description"
517
+ dateField: "timestamp"
518
+ statusField: "status"
511
519
  look: @config.timelineLook
512
520
  type: timeline
513
521
  }, { type: divider }, {
@@ -671,6 +679,10 @@ orbital MultiPartyFlowOrbital {
671
679
  }, {
672
680
  entity: @entity.audit
673
681
  fields: (title description timestamp status)
682
+ titleField: "title"
683
+ descriptionField: "description"
684
+ dateField: "timestamp"
685
+ statusField: "status"
674
686
  look: @config.timelineLook
675
687
  type: timeline
676
688
  }]
@@ -827,6 +839,10 @@ orbital MultiPartyFlowOrbital {
827
839
  }, {
828
840
  entity: @entity.audit
829
841
  fields: (title description timestamp status)
842
+ titleField: "title"
843
+ descriptionField: "description"
844
+ dateField: "timestamp"
845
+ statusField: "status"
830
846
  look: @config.timelineLook
831
847
  type: timeline
832
848
  }, {
@@ -905,6 +921,10 @@ orbital MultiPartyFlowOrbital {
905
921
  }, {
906
922
  entity: @entity.audit
907
923
  fields: (title description timestamp status)
924
+ titleField: "title"
925
+ descriptionField: "description"
926
+ dateField: "timestamp"
927
+ statusField: "status"
908
928
  look: @config.timelineLook
909
929
  type: timeline
910
930
  }, {
@@ -989,6 +1009,10 @@ orbital MultiPartyFlowOrbital {
989
1009
  }, {
990
1010
  entity: @entity.audit
991
1011
  fields: (title description timestamp status)
1012
+ titleField: "title"
1013
+ descriptionField: "description"
1014
+ dateField: "timestamp"
1015
+ statusField: "status"
992
1016
  look: @config.timelineLook
993
1017
  type: timeline
994
1018
  }, {
@@ -312,6 +312,7 @@ orbital RatingReviewOrbital {
312
312
  mode: edit
313
313
  submitEvent: SUBMIT_REVIEW
314
314
  submitLabel: @config.submitLabel
315
+ cancelLabel: @config.cancelLabel
315
316
  type: form-section
316
317
  }]
317
318
  direction: vertical
@@ -1114,6 +1115,7 @@ orbital RatingReviewOrbital {
1114
1115
  mode: edit
1115
1116
  submitEvent: SUBMIT_REVIEW
1116
1117
  submitLabel: @config.submitLabel
1118
+ cancelLabel: @config.cancelLabel
1117
1119
  type: form-section
1118
1120
  }]
1119
1121
  direction: vertical
@@ -1426,10 +1428,11 @@ orbital RatingReviewOrbital {
1426
1428
  }, {
1427
1429
  cancelEvent: CANCEL_REVIEW
1428
1430
  entity: @entity
1429
- fields: (draftComment)
1431
+ fields: (if @config.allowComment ["draftComment"] [])
1430
1432
  mode: edit
1431
1433
  submitEvent: SUBMIT_REVIEW
1432
1434
  submitLabel: @config.submitLabel
1435
+ cancelLabel: @config.cancelLabel
1433
1436
  type: form-section
1434
1437
  }]
1435
1438
  direction: vertical
@@ -1455,10 +1458,11 @@ orbital RatingReviewOrbital {
1455
1458
  }, {
1456
1459
  cancelEvent: CANCEL_REVIEW
1457
1460
  entity: @entity
1458
- fields: (draftComment)
1461
+ fields: (if @config.allowComment ["draftComment"] [])
1459
1462
  mode: edit
1460
1463
  submitEvent: SUBMIT_REVIEW
1461
1464
  submitLabel: @config.submitLabel
1465
+ cancelLabel: @config.cancelLabel
1462
1466
  type: form-section
1463
1467
  }]
1464
1468
  direction: vertical
@@ -1504,10 +1508,11 @@ orbital RatingReviewOrbital {
1504
1508
  }, {
1505
1509
  cancelEvent: CANCEL_REVIEW
1506
1510
  entity: @entity
1507
- fields: (draftComment)
1511
+ fields: (if @config.allowComment ["draftComment"] [])
1508
1512
  mode: edit
1509
1513
  submitEvent: SUBMIT_REVIEW
1510
1514
  submitLabel: @config.submitLabel
1515
+ cancelLabel: @config.cancelLabel
1511
1516
  type: form-section
1512
1517
  }]
1513
1518
  direction: vertical
@@ -1569,10 +1574,11 @@ orbital RatingReviewOrbital {
1569
1574
  }, {
1570
1575
  cancelEvent: CANCEL_REVIEW
1571
1576
  entity: @entity
1572
- fields: (draftComment)
1577
+ fields: (if @config.allowComment ["draftComment"] [])
1573
1578
  mode: edit
1574
1579
  submitEvent: SUBMIT_REVIEW
1575
1580
  submitLabel: @config.submitLabel
1581
+ cancelLabel: @config.cancelLabel
1576
1582
  type: form-section
1577
1583
  }]
1578
1584
  direction: vertical
@@ -1600,10 +1606,11 @@ orbital RatingReviewOrbital {
1600
1606
  }, {
1601
1607
  cancelEvent: CANCEL_REVIEW
1602
1608
  entity: @entity
1603
- fields: (draftComment)
1609
+ fields: (if @config.allowComment ["draftComment"] [])
1604
1610
  mode: edit
1605
1611
  submitEvent: SUBMIT_REVIEW
1606
1612
  submitLabel: @config.submitLabel
1613
+ cancelLabel: @config.cancelLabel
1607
1614
  type: form-section
1608
1615
  }]
1609
1616
  direction: vertical
@@ -1696,10 +1703,6 @@ orbital RatingReviewOrbital {
1696
1703
  @label "Cancel button"
1697
1704
  @description "Label on the cancel button"
1698
1705
  @tier "presentation"
1699
- submitEvent : string = SUBMIT_REVIEW
1700
- @label "Submit event"
1701
- @description "Event emitted when the user submits the form"
1702
- @tier "internal"
1703
1706
  maxStars : number = 5
1704
1707
  @label "Max stars"
1705
1708
  @description "Top of the rating scale (typically 5)"
@@ -1708,10 +1711,6 @@ orbital RatingReviewOrbital {
1708
1711
  @label "Allow comment"
1709
1712
  @description "Show a free-text comment field below the stars"
1710
1713
  @tier "presentation"
1711
- allowPhotos : boolean = false
1712
- @label "Allow photos"
1713
- @description "Let the user attach photos to the review"
1714
- @tier "presentation"
1715
1714
  cardLook : "elevated" | "flat-bordered" | "borderless-divider" | "ticket" | "invoice" | "chip" | "tile-image-first" = elevated
1716
1715
  @label "Card look"
1717
1716
  @description "Visual style of the wrapper card. Layer 2 cardLook knob — render-ui references @config.cardLook on the compose card."