@almadar/std 16.193.0 → 16.195.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 (351) hide show
  1. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +12 -10
  2. package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +1 -1
  3. package/behaviors/lolo/infra/atoms/std-cross-reference.lolo +5 -5
  4. package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +3 -7
  5. package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +3 -7
  6. package/behaviors/lolo/infra/atoms/std-notification-center.lolo +8 -6
  7. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +5 -9
  8. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +3 -3
  9. package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +1 -1
  10. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +1 -1
  11. package/behaviors/lolo/ui/core/atoms/std-board.lolo +30 -4
  12. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +2 -2
  13. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +2 -2
  14. package/behaviors/lolo/ui/core/atoms/std-date-range.lolo +1 -1
  15. package/behaviors/lolo/ui/core/atoms/std-detail-layout.lolo +3 -3
  16. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +3 -3
  17. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
  18. package/behaviors/lolo/ui/core/atoms/std-filter.lolo +1 -1
  19. package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -1
  20. package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -1
  21. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +1 -1
  22. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +3 -7
  23. package/behaviors/lolo/ui/core/atoms/std-modal.lolo +1 -1
  24. package/behaviors/lolo/ui/core/atoms/std-pagination.lolo +1 -1
  25. package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +5 -5
  26. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +13 -2
  27. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +3 -3
  28. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +3 -7
  29. package/behaviors/lolo/ui/core/atoms/std-scatter.lolo +1 -1
  30. package/behaviors/lolo/ui/core/atoms/std-search.lolo +1 -1
  31. package/behaviors/lolo/ui/core/atoms/std-signature-capture.lolo +3 -7
  32. package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +11 -12
  33. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +5 -7
  34. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +91 -28
  35. package/behaviors/lolo/ui/core/atoms/std-tree.lolo +2 -2
  36. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +5 -9
  37. package/behaviors/lolo/ui/core/atoms/std-vote.lolo +3 -7
  38. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +3 -3
  39. package/behaviors/lolo/ui/core/atoms/ui-avatar.lolo +2 -2
  40. package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +1 -1
  41. package/behaviors/lolo/ui/core/atoms/ui-box.lolo +2 -2
  42. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +1 -1
  43. package/behaviors/lolo/ui/core/atoms/ui-card.lolo +1 -1
  44. package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +1 -1
  45. package/behaviors/lolo/ui/core/atoms/ui-day-cell.lolo +1 -1
  46. package/behaviors/lolo/ui/core/atoms/ui-filter-pill.lolo +4 -4
  47. package/behaviors/lolo/ui/core/atoms/ui-flip-container.lolo +1 -1
  48. package/behaviors/lolo/ui/core/atoms/ui-hstack.lolo +1 -1
  49. package/behaviors/lolo/ui/core/atoms/ui-infinite-scroll-sentinel.lolo +1 -1
  50. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +3 -3
  51. package/behaviors/lolo/ui/core/atoms/ui-overlay.lolo +1 -1
  52. package/behaviors/lolo/ui/core/atoms/ui-radio.lolo +1 -1
  53. package/behaviors/lolo/ui/core/atoms/ui-range-slider.lolo +2 -2
  54. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +3 -3
  55. package/behaviors/lolo/ui/core/atoms/ui-stack.lolo +1 -1
  56. package/behaviors/lolo/ui/core/atoms/ui-switch.lolo +1 -1
  57. package/behaviors/lolo/ui/core/atoms/ui-text-highlight.lolo +5 -5
  58. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +2 -2
  59. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +1 -1
  60. package/behaviors/lolo/ui/core/atoms/ui-typewriter-text.lolo +1 -1
  61. package/behaviors/lolo/ui/core/atoms/ui-vstack.lolo +1 -1
  62. package/behaviors/lolo/ui/core/molecules/ui-accordion.lolo +2 -2
  63. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +3 -3
  64. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +2 -2
  65. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +2 -2
  66. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +6 -6
  67. package/behaviors/lolo/ui/core/molecules/ui-carousel.lolo +1 -1
  68. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +1 -1
  69. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +2 -2
  70. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +3 -3
  71. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +7 -7
  72. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +2 -2
  73. package/behaviors/lolo/ui/core/molecules/ui-date-range-selector.lolo +1 -1
  74. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +2 -2
  75. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +5 -5
  76. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +2 -2
  77. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +1 -1
  78. package/behaviors/lolo/ui/core/molecules/ui-empty-state.lolo +2 -2
  79. package/behaviors/lolo/ui/core/molecules/ui-error-state.lolo +2 -2
  80. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +3 -3
  81. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +4 -4
  82. package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +1 -1
  83. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +2 -2
  84. package/behaviors/lolo/ui/core/molecules/ui-form-section-header.lolo +1 -1
  85. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +5 -5
  86. package/behaviors/lolo/ui/core/molecules/ui-graph-view.lolo +2 -2
  87. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +4 -4
  88. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +2 -2
  89. package/behaviors/lolo/ui/core/molecules/ui-import-source-picker.lolo +1 -1
  90. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +3 -3
  91. package/behaviors/lolo/ui/core/molecules/ui-lightbox.lolo +2 -2
  92. package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +2 -2
  93. package/behaviors/lolo/ui/core/molecules/ui-map-view.lolo +4 -4
  94. package/behaviors/lolo/ui/core/molecules/ui-matrix-question.lolo +2 -2
  95. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +3 -3
  96. package/behaviors/lolo/ui/core/molecules/ui-notification.lolo +4 -4
  97. package/behaviors/lolo/ui/core/molecules/ui-number-stepper.lolo +2 -2
  98. package/behaviors/lolo/ui/core/molecules/ui-option-constraint-group.lolo +2 -2
  99. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +1 -1
  100. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +2 -2
  101. package/behaviors/lolo/ui/core/molecules/ui-pagination.lolo +4 -4
  102. package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +1 -1
  103. package/behaviors/lolo/ui/core/molecules/ui-positioned-canvas.lolo +4 -4
  104. package/behaviors/lolo/ui/core/molecules/ui-progress-dots.lolo +1 -1
  105. package/behaviors/lolo/ui/core/molecules/ui-pull-to-refresh.lolo +1 -1
  106. package/behaviors/lolo/ui/core/molecules/ui-qr-scanner.lolo +2 -2
  107. package/behaviors/lolo/ui/core/molecules/ui-relation-select.lolo +1 -1
  108. package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +3 -3
  109. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +8 -8
  110. package/behaviors/lolo/ui/core/molecules/ui-rich-text-editor.lolo +2 -2
  111. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +2 -2
  112. package/behaviors/lolo/ui/core/molecules/ui-side-panel.lolo +2 -2
  113. package/behaviors/lolo/ui/core/molecules/ui-sidebar.lolo +3 -3
  114. package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +3 -3
  115. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +1 -1
  116. package/behaviors/lolo/ui/core/molecules/ui-star-rating.lolo +2 -2
  117. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +2 -2
  118. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +4 -4
  119. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +2 -2
  120. package/behaviors/lolo/ui/core/molecules/ui-tag-input.lolo +3 -3
  121. package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +1 -1
  122. package/behaviors/lolo/ui/core/molecules/ui-version-diff.lolo +6 -6
  123. package/behaviors/lolo/ui/core/molecules/ui-violation-alert.lolo +2 -2
  124. package/behaviors/lolo/ui/core/molecules/ui-vote-stack.lolo +2 -2
  125. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +5 -5
  126. package/behaviors/lolo/ui/core/molecules/ui-wizard-navigation.lolo +6 -6
  127. package/behaviors/lolo/ui/core/molecules/ui-wizard-progress.lolo +2 -2
  128. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +1 -1
  129. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +1 -1
  130. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +3 -3
  131. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +3 -3
  132. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +1 -1
  133. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +1 -1
  134. package/behaviors/lolo/ui/core/organisms/ui-tabbed-container.lolo +1 -1
  135. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +1 -1
  136. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +6 -6
  137. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +6 -6
  138. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +4 -4
  139. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +5 -5
  140. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +2 -2
  141. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +4 -4
  142. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +4 -4
  143. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -1
  144. package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +4 -4
  145. package/behaviors/lolo/ui/game/atoms/ui-state-graph.lolo +1 -1
  146. package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +7 -7
  147. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +1 -1
  148. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +2 -2
  149. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +1 -1
  150. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +1 -1
  151. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +1 -1
  152. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +2 -2
  153. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +1 -1
  154. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +1 -1
  155. package/behaviors/registry/infra/atoms/std-approval-gate.orb +154 -70
  156. package/behaviors/registry/infra/atoms/std-cache-aside.orb +64 -63
  157. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +20 -92
  158. package/behaviors/registry/infra/atoms/std-cross-reference.orb +9 -8
  159. package/behaviors/registry/infra/atoms/std-data-erasure.orb +119 -60
  160. package/behaviors/registry/infra/atoms/std-mod-queue.orb +209 -64
  161. package/behaviors/registry/infra/atoms/std-notification-center.orb +25 -37
  162. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +14 -28
  163. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +10 -17
  164. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +1 -2
  165. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +5 -10
  166. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +2 -4
  167. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +5 -3
  168. package/behaviors/registry/ui/core/atoms/std-app-search.orb +1 -1
  169. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +51 -2
  170. package/behaviors/registry/ui/core/atoms/std-board.orb +74 -3
  171. package/behaviors/registry/ui/core/atoms/std-browse.orb +3 -2
  172. package/behaviors/registry/ui/core/atoms/std-calendar.orb +2 -2
  173. package/behaviors/registry/ui/core/atoms/std-confirmation.orb +27 -1
  174. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +1 -2
  175. package/behaviors/registry/ui/core/atoms/std-date-range.orb +2 -1
  176. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +3 -3
  177. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +104 -6
  178. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +3 -6
  179. package/behaviors/registry/ui/core/atoms/std-event-log.orb +3 -2
  180. package/behaviors/registry/ui/core/atoms/std-export.orb +2 -4
  181. package/behaviors/registry/ui/core/atoms/std-file-store.orb +92 -4
  182. package/behaviors/registry/ui/core/atoms/std-filter.orb +2 -1
  183. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +4 -84
  184. package/behaviors/registry/ui/core/atoms/std-gallery.orb +29 -1
  185. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +2 -1
  186. package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
  187. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +81 -48
  188. package/behaviors/registry/ui/core/atoms/std-import.orb +2 -4
  189. package/behaviors/registry/ui/core/atoms/std-list.orb +58 -2
  190. package/behaviors/registry/ui/core/atoms/std-modal.orb +59 -3
  191. package/behaviors/registry/ui/core/atoms/std-pagination.orb +2 -1
  192. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +158 -8
  193. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +283 -7
  194. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +3 -2
  195. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +72 -43
  196. package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
  197. package/behaviors/registry/ui/core/atoms/std-search.orb +2 -1
  198. package/behaviors/registry/ui/core/atoms/std-signature-capture.orb +63 -39
  199. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +139 -97
  200. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +57 -40
  201. package/behaviors/registry/ui/core/atoms/std-thread.orb +296 -109
  202. package/behaviors/registry/ui/core/atoms/std-tree.orb +20 -2
  203. package/behaviors/registry/ui/core/atoms/std-version-history.orb +147 -58
  204. package/behaviors/registry/ui/core/atoms/std-vote.orb +4 -29
  205. package/behaviors/registry/ui/core/atoms/std-wizard.orb +3 -2
  206. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +2 -2
  207. package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
  208. package/behaviors/registry/ui/core/atoms/ui-box.orb +2 -2
  209. package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
  210. package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
  211. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
  212. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
  213. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +5 -4
  214. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
  215. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
  216. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
  217. package/behaviors/registry/ui/core/atoms/ui-input.orb +3 -3
  218. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
  219. package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
  220. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +2 -2
  221. package/behaviors/registry/ui/core/atoms/ui-select.orb +3 -3
  222. package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
  223. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
  224. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +5 -5
  225. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +2 -2
  226. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
  227. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
  228. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
  229. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +2 -2
  230. package/behaviors/registry/ui/core/molecules/ui-alert.orb +3 -3
  231. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +2 -2
  232. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +2 -2
  233. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +6 -6
  234. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
  235. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
  236. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +2 -2
  237. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +3 -3
  238. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +7 -7
  239. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +2 -2
  240. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
  241. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +2 -2
  242. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +5 -5
  243. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +3 -2
  244. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
  245. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +2 -2
  246. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +2 -2
  247. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +3 -3
  248. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +4 -4
  249. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  250. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +2 -2
  251. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
  252. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +5 -5
  253. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +2 -2
  254. package/behaviors/registry/ui/core/molecules/ui-header.orb +4 -4
  255. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +2 -2
  256. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
  257. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +3 -3
  258. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +2 -2
  259. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +2 -2
  260. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +4 -4
  261. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +2 -2
  262. package/behaviors/registry/ui/core/molecules/ui-modal.orb +4 -3
  263. package/behaviors/registry/ui/core/molecules/ui-notification.orb +4 -4
  264. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +2 -2
  265. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +2 -2
  266. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
  267. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +2 -2
  268. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +5 -4
  269. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
  270. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +4 -4
  271. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
  272. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
  273. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +2 -2
  274. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
  275. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +3 -3
  276. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +8 -8
  277. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +3 -2
  278. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +2 -2
  279. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +3 -2
  280. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +3 -3
  281. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +3 -3
  282. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  283. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +2 -2
  284. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +2 -2
  285. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +4 -4
  286. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +2 -2
  287. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +3 -3
  288. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
  289. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +6 -6
  290. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +2 -2
  291. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +2 -2
  292. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +5 -5
  293. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +6 -6
  294. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +2 -2
  295. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
  296. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +1 -1
  297. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +3 -3
  298. package/behaviors/registry/ui/core/organisms/ui-form.orb +3 -3
  299. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
  300. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
  301. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
  302. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
  303. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +6 -6
  304. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +6 -6
  305. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +4 -4
  306. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +5 -5
  307. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +2 -2
  308. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +4 -4
  309. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +4 -4
  310. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
  311. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +4 -4
  312. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
  313. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +8 -7
  314. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +4 -8
  315. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +3 -6
  316. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +5 -10
  317. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +4 -8
  318. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +4 -8
  319. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +4 -8
  320. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +7 -13
  321. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +4 -8
  322. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +3 -6
  323. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +2 -2
  324. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
  325. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
  326. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
  327. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +2 -2
  328. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
  329. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
  330. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +1 -2
  331. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +1 -2
  332. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +1 -2
  333. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +1 -2
  334. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +1 -2
  335. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +1 -2
  336. package/canonical-operators.json +37 -23
  337. package/dist/behaviors/exports-reader.js +2326 -885
  338. package/dist/behaviors/functions/index.d.ts +109 -45
  339. package/dist/behaviors/functions/index.js +2326 -885
  340. package/dist/behaviors/index.d.ts +1 -1
  341. package/dist/behaviors/index.js +2326 -885
  342. package/dist/behaviors/query.js +2326 -885
  343. package/dist/behaviors-embeddings.hash.json +3 -3
  344. package/dist/behaviors-embeddings.json +7 -7
  345. package/dist/behaviors-registry.json +11 -9
  346. package/dist/index.d.ts +1 -1
  347. package/dist/index.js +2326 -885
  348. package/dist/knob-embeddings.hash.json +3 -3
  349. package/dist/knob-embeddings.json +1 -1
  350. package/dist/registry/factory-signatures.json +1 -1
  351. package/package.json +2 -2
@@ -70,6 +70,12 @@ orbital RecordItemOrbital {
70
70
  include: @config.include
71
71
  })
72
72
  (render-ui main { rows: 4, type: skeleton })
73
+ ;; Event-opened overlay (openOn: event): stays blank until OPEN_VIEW,
74
+ ;; but renders the blank EXPLICITLY — an embedded @trait.X reference to
75
+ ;; a trait with no indexed content is flagged by the compiled client's
76
+ ;; render probe (trait_bindings_resolved).
77
+ INIT -> idle when ["=", @config.openOn, "event"]
78
+ (render-ui main null)
73
79
  ;; self-loops on the external emits so the validator sees in-atom
74
80
  ;; listeners — the real consumers are the composing organism's
75
81
  ;; persistor (CONTENT_SAVED, TITLE_COMMITTED) and its refetch /
@@ -535,6 +541,11 @@ orbital RecordItemOrbital {
535
541
  @label "Edit button label"
536
542
  @description "Label of the quiet button above the document body that starts an editing session (the body itself is also clickable)."
537
543
  @tier "presentation"
544
+ allowEdit : boolean = true
545
+ @label "Allow editing the document?"
546
+ @description "When false the document look is a pure read surface: no header Edit button, no click-to-edit body, no click-to-rename title. Hosts pass a role condition here so read-only viewers get the page without its authoring affordances; the entity's own access predicates stay the enforcement floor."
547
+ @synonyms "read only document, viewer mode, can edit, editing allowed"
548
+ @tier "policy"
538
549
  doneLabel : string = "Done"
539
550
  @label "Done button label"
540
551
  @description "Label of the button that ends the document editing session; work is already autosaved when it is pressed."
@@ -613,14 +624,14 @@ orbital RecordItemOrbital {
613
624
  actions: @config.actions
614
625
  coverImage: @entity.coverUrl
615
626
  icon: @entity.iconName
616
- editEvent: EDIT_CONTENT
627
+ editEvent: (if @config.allowEdit EDIT_CONTENT null)
617
628
  editLabel: @config.editLabel
618
629
  id: @entity.id
619
630
  maxInlineActions: @config.maxInlineActions
620
631
  placeholder: @config.placeholder
621
632
  subtitle: @entity.description
622
633
  title: @entity.name
623
- titleCommitEvent: TITLE_COMMITTED
634
+ titleCommitEvent: (if @config.allowEdit TITLE_COMMITTED null)
624
635
  type: document-panel
625
636
  value: @entity.content
626
637
  className: "w-full"
@@ -8,7 +8,7 @@ orbital RecurrenceOrbital {
8
8
 
9
9
  type RecurrenceLoadFailed = Event { error : string, code : string } "Fired when fetch fails"
10
10
 
11
- type RecurrenceSaved = Event { row : @entity } "Fired when a recurrence rule has been persisted"
11
+ type RecurrenceSaved = Event @entity "Fired when a recurrence rule has been persisted"
12
12
 
13
13
  type RecurrenceSaveFailed = Event { error : string, code : string } "Fired when persist fails"
14
14
 
@@ -441,7 +441,7 @@ orbital RecurrenceOrbital {
441
441
  @description "Indicates failure to load recurrence rule data."
442
442
  @synonyms "load error, failed load, data error"
443
443
  @tier "internal"
444
- RecurrenceSaved { row : @entity }
444
+ RecurrenceSaved
445
445
  @description "Indicates the recurrence rule has been successfully saved."
446
446
  @synonyms "saved, updated, persisted"
447
447
  @tier "domain"
@@ -513,7 +513,7 @@ orbital RecurrenceOrbital {
513
513
  @description "Indicates failure to load recurrence rule data."
514
514
  @synonyms "load error, failed load, data error"
515
515
  @tier "internal"
516
- RecurrenceSaved { row : @entity }
516
+ RecurrenceSaved
517
517
  @description "Indicates the recurrence rule has been successfully saved."
518
518
  @synonyms "saved, updated, persisted"
519
519
  @tier "domain"
@@ -5,7 +5,7 @@ orbital SavedSearchOrbital {
5
5
 
6
6
  type SavedSearchLoadFailed = Event { error : string, code : string } "Fired when the saved-search collection fails to load"
7
7
 
8
- type SavedSearchUpdated = Event { row : SavedSearch } "Fired after a saved-search row's update persists (toggle alert / rename / change frequency)"
8
+ type SavedSearchUpdated = Event SavedSearch "Fired after a saved-search row's update persists (toggle alert / rename / change frequency)"
9
9
 
10
10
  type SavedSearchDeleted = Event { id : string! } "Fired after a saved-search row is deleted"
11
11
 
@@ -280,9 +280,7 @@ orbital SavedSearchOrbital {
280
280
  @description "Indicates a failure to load saved search data."
281
281
  @synonyms "error, failure, load error"
282
282
  @tier "internal"
283
- SavedSearchUpdated {
284
- row : SavedSearch
285
- }
283
+ SavedSearchUpdated
286
284
  @description "Indicates a saved search has been modified and persisted."
287
285
  @synonyms "modified, changed, updated, persisted"
288
286
  @tier "presentation"
@@ -347,9 +345,7 @@ orbital SavedSearchOrbital {
347
345
  @description "Indicates failure to load saved search data."
348
346
  @synonyms "error, failure, load error"
349
347
  @tier "internal"
350
- SavedSearchUpdated {
351
- row : SavedSearch
352
- }
348
+ SavedSearchUpdated
353
349
  @description "A saved search's details have been modified."
354
350
  @synonyms "modified, changed, updated"
355
351
  @tier "presentation"
@@ -118,7 +118,7 @@ orbital ScatterItemOrbital {
118
118
  @label "Chart height"
119
119
  @description "Pixel height of the rendered scatter plot"
120
120
  @tier "presentation"
121
- drillEvent : string = ""
121
+ drillEvent : event = ""
122
122
  @label "Drill event"
123
123
  @description "Event emitted when the user clicks a data point"
124
124
  @tier "internal"
@@ -48,7 +48,7 @@ orbital SearchResultOrbital {
48
48
  @label "Placeholder text"
49
49
  @description "Hint text shown inside the empty search input"
50
50
  @tier "presentation"
51
- event : string = SEARCH
51
+ event : event = SEARCH
52
52
  @label "Search event"
53
53
  @description "Event emitted when the user submits a query"
54
54
  @tier "internal"
@@ -5,7 +5,7 @@ orbital SignatureCaptureOrbital {
5
5
 
6
6
  type SignatureLoadFailed = Event { error : string, code : string } "Fired when the prior-signature load fails"
7
7
 
8
- type SignatureSubmitted = Event { row : Signature } "Fired after a signature persists successfully"
8
+ type SignatureSubmitted = Event Signature "Fired after a signature persists successfully"
9
9
 
10
10
  type SignatureSubmitFailed = Event { error : string, code : string } "Fired when persisting a signature fails"
11
11
 
@@ -278,9 +278,7 @@ orbital SignatureCaptureOrbital {
278
278
  @description "Indicates the signature data could not be loaded."
279
279
  @synonyms "load error, failed load, data error"
280
280
  @tier "internal"
281
- SignatureSubmitted {
282
- row : Signature
283
- }
281
+ SignatureSubmitted
284
282
  @description "Indicates a signature has been successfully captured and submitted."
285
283
  @synonyms "signed, finalized, completed"
286
284
  @tier "domain"
@@ -323,9 +321,7 @@ orbital SignatureCaptureOrbital {
323
321
  @description "Indicates the signature data could not be loaded."
324
322
  @synonyms "error, failure, problem, unsuccessful"
325
323
  @tier "internal"
326
- SignatureSubmitted {
327
- row : Signature
328
- }
324
+ SignatureSubmitted
329
325
  @description "Indicates a signature has been successfully submitted."
330
326
  @synonyms "saved, finalized, confirmed"
331
327
  @tier "domain"
@@ -8,7 +8,7 @@ orbital TagStripOrbital {
8
8
 
9
9
  type TagStripRemoveOptions = Event { data : [StripTag] } "The shared tag store loaded to resolve the remaining names on remove"
10
10
 
11
- type TagStripTagCreated = Event { id : string, row : StripTag } "A typed tag name had no existing row; one was created in the shared taxonomy"
11
+ type TagStripTagCreated = Event StripTag "A typed tag name had no existing row; one was created in the shared taxonomy"
12
12
 
13
13
  type TagStripLoadFailed = Event { error : string, code : string } "The tag store fetch or create failed"
14
14
 
@@ -52,12 +52,12 @@ orbital TagStripOrbital {
52
52
  })
53
53
  TagStripOptions -> ready
54
54
  (render-ui main {
55
- children: [(if ["!=", @config.title, ""] {
55
+ children: [(if (or @config.readOnly ["=", @config.title, ""]) null {
56
56
  color: muted
57
57
  content: @config.title
58
58
  type: typography
59
59
  variant: caption
60
- } null), {
60
+ }), (if @config.readOnly null {
61
61
  addEvent: ADD_TAG
62
62
  helperText: @config.helperText
63
63
  placeholder: @config.placeholder
@@ -65,7 +65,7 @@ orbital TagStripOrbital {
65
65
  type: tag-input
66
66
  value: (array/map (array/filter ?data (fn t (array/includes @entity.docTagIds (object/get @t id)))) (fn t (object/get @t name)))
67
67
  variant: secondary
68
- }, (if ["=", (array/len (array/filter ?data (fn t (if (array/includes @entity.docTagIds (object/get @t id)) false true)))), 0] null {
68
+ }), (if (or @config.readOnly ["=", (array/len (array/filter ?data (fn t (if (array/includes @entity.docTagIds (object/get @t id)) false true)))), 0]) null {
69
69
  children: (array/map (array/filter ?data (fn t (if (array/includes @entity.docTagIds (object/get @t id)) false true))) (fn t {
70
70
  action: ADD_TAG
71
71
  actionPayload: { tag: @t.name }
@@ -230,10 +230,7 @@ orbital TagStripOrbital {
230
230
  }
231
231
  @description "The shared tag store loaded to resolve the remaining names on remove."
232
232
  @tier "internal"
233
- TagStripTagCreated {
234
- id : string
235
- row : StripTag
236
- }
233
+ TagStripTagCreated
237
234
  @description "A typed name had no existing tag; a fresh row was created in the shared taxonomy."
238
235
  @tier "internal"
239
236
  TagStripLoadFailed {
@@ -280,10 +277,7 @@ orbital TagStripOrbital {
280
277
  }
281
278
  @description "Remove-resolve fetch resolved."
282
279
  @tier "internal"
283
- TagStripTagCreated {
284
- id : string
285
- row : StripTag
286
- }
280
+ TagStripTagCreated
287
281
  @description "The taxonomy row for a typed name persisted; attach its id."
288
282
  @tier "internal"
289
283
  TagStripLoadFailed {
@@ -299,6 +293,11 @@ orbital TagStripOrbital {
299
293
  @label "Strip caption"
300
294
  @description "Small caption above the chips; empty hides it"
301
295
  @tier "presentation"
296
+ readOnly : boolean = false
297
+ @label "Read-only?"
298
+ @description "When true the strip renders nothing — no add input, no remove, no suggestion chips. Hosts pass a role condition here so read-only viewers rely on the record's read-only rails (which keep showing the tags) instead of an editing surface."
299
+ @synonyms "read only tags, viewer mode, no tag editing, hide tag input"
300
+ @tier "policy"
302
301
  placeholder : string = "Add a tag…"
303
302
  @label "Input placeholder"
304
303
  @description "Placeholder in the type-to-add input"
@@ -7,6 +7,8 @@ orbital TagTaxonomyOrbital {
7
7
 
8
8
  type TagSelected = Event { tagId : string! } "Fired when a tag is selected to drill into its children"
9
9
 
10
+ type TagCreated = Event Tag "Fired after a new tag row persists — the payload IS the created row (flat: ?id, ?name, ?parentId)"
11
+
10
12
  type TagCommit = { name : string!, parentId : string }
11
13
 
12
14
  entity Tag [persistent: tags] {
@@ -357,7 +359,7 @@ orbital TagTaxonomyOrbital {
357
359
  type: stack
358
360
  })
359
361
  (fetch Tag {
360
- filter: ["=", (object/get @entity parentId), (str/default (object/get ?row parentId) "")]
362
+ filter: ["=", (object/get @entity parentId), (str/default ?parentId "")]
361
363
  emit: { failure: TagLoadFailed, success: TagLoaded }
362
364
  })
363
365
  TagCreateFailed -> creating
@@ -555,9 +557,7 @@ orbital TagTaxonomyOrbital {
555
557
  @description "Internal hop that refetches the open level after the new-category form closes (a fetch filter cannot read trait state, so the level travels by payload)."
556
558
  @synonyms "reload level, refresh"
557
559
  @tier "internal"
558
- TagCreated {
559
- row : Tag
560
- }
560
+ TagCreated
561
561
  @description "A new tag row persisted; the open level refetches to show it."
562
562
  @synonyms "created, added"
563
563
  @tier "internal"
@@ -616,9 +616,7 @@ orbital TagTaxonomyOrbital {
616
616
  @description "Refetch the open level."
617
617
  @synonyms "reload level, refresh"
618
618
  @tier "internal"
619
- TagCreated {
620
- row : Tag
621
- }
619
+ TagCreated
622
620
  @description "A new tag row persisted."
623
621
  @synonyms "created, added"
624
622
  @tier "internal"
@@ -1,5 +1,5 @@
1
1
  app std-thread "1.3.0"
2
- "std-thread — forum-style nested replies with collapse + flat-mode toggle. Owns ThreadPost (persistent). flat:true covers 1:1 linear inquiry threads; flat:false renders forum-style nested. INIT fetches, scoped by @config.threadRootId when set (blank = every root, the default). REPLY persists a child post under @payload.parentId, stamped with the real @user identity. A consumer that mounts this as page comments forwards its own document-opened signal to SET_THREAD_ROOT { rootId }, which stamps the frame and refetches filtered by the payload; the after-create and after-select refetch arms keep filtering by @config.threadRootId, so a mutation re-widens the panel until the consumer re-fires SET_THREAD_ROOT. Layer 3 variants override `bodyContent` to deliver chat-bubble, email-threaded, or linear-comments UX while inheriting the same trait, state machine, emits, and listens."
2
+ "std-thread — forum-style nested replies with collapse + flat-mode toggle. Owns ThreadPost (persistent). flat:true covers 1:1 linear inquiry threads; flat:false renders forum-style nested. INIT fetches, scoped by @config.threadRootId when set (blank = every root, the default). REPLY persists a child post under @payload.parentId, stamped with the real @user identity. A consumer that mounts this as page comments forwards its own document-opened signal to SET_THREAD_ROOT { rootId }, which stamps the frame and refetches filtered by the payload; the after-create and after-select refetch arms keep filtering by @config.threadRootId, so a mutation re-widens the panel until the consumer re-fires SET_THREAD_ROOT. Layer 3 variants override `bodyContent` to deliver chat-bubble, email-threaded, or linear-comments UX while inheriting the same trait, state machine, emits, and listens. A non-empty sectionTitle switches the default bodyContent into titled-comments mode: header + post list + a standalone composer button (without it an empty thread has no REPLY emitter at all — the affordance only existed per-row)."
3
3
  orbital ThreadPostOrbital {
4
4
  ;; Forward relation: array of child ThreadPost IDs whose parentId === this.id.
5
5
  ;; Lowers to `type: "relation", cardinality: "many"` (orbital-lolo lower.rs).
@@ -15,7 +15,15 @@ orbital ThreadPostOrbital {
15
15
 
16
16
  type ThreadPostLoadFailed = Event { error : string, code : string } "Fired when the thread-post collection fails to load"
17
17
 
18
- type ThreadPostCreated = Event { row : ThreadPost } "Fired after a new thread-post persists successfully"
18
+ ;; Bare entity alias, not { row: ThreadPost } — `persist create`'s success
19
+ ;; emit is the created row itself (flat), matching @almadar/runtime's
20
+ ;; EffectExecutor.ts (`successPayload = persisted ?? data`, emitted
21
+ ;; directly) AND orbital-core's executor.rs (`executed_with_value(effect,
22
+ ;; value)`), verified live 2026-08-30: a wrapped declaration validates and
23
+ ;; compiles clean but silently returns undefined for every `?row.<field>`
24
+ ;; access — no validator connects a persist-emit's declared shape to what
25
+ ;; the effect that fires it actually produces.
26
+ type ThreadPostCreated = Event ThreadPost "Fired after a new thread-post persists successfully"
19
27
 
20
28
  type ThreadPostCreateFailed = Event { error : string, code : string } "Fired when a new thread-post fails to persist"
21
29
 
@@ -97,7 +105,7 @@ orbital ThreadPostOrbital {
97
105
  type: typography
98
106
  variant: h4
99
107
  }, {
100
- action: EDIT_REPLY
108
+ onChange: EDIT_REPLY
101
109
  placeholder: "Your reply…"
102
110
  type: textarea
103
111
  }, {
@@ -121,19 +129,50 @@ orbital ThreadPostOrbital {
121
129
  gap: md
122
130
  type: stack
123
131
  })
132
+ ;; Scoped to the row just created, not @config.threadRootId — a runtime-
133
+ ;; scoped consumer (SET_THREAD_ROOT-driven, e.g. std-wiki's WikiComments)
134
+ ;; never sets config.threadRootId, so that filter was permanently blank/
135
+ ;; unfiltered here and every document's posts bled together on refetch.
136
+ ;; ?threadRootId is the FLAT field on ThreadPostCreated's payload (the
137
+ ;; row's own scope, per the create effect's fallback chain) — NOT
138
+ ;; ?row.threadRootId; ThreadPostCreated's payload is the created row
139
+ ;; itself (see the type alias above), no `row` wrapper exists.
124
140
  ThreadPostCreated -> browsing
141
+ (set @entity.content "")
142
+ (set @entity.parentId "")
125
143
  (fetch ThreadPost {
126
144
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
127
- filter: (or ["=", @config.threadRootId, ""] ["=", (object/get @entity threadRootId), @config.threadRootId])
145
+ filter: (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId])
128
146
  include: (replies)
129
147
  })
148
+ ;; SELECT's payload IS { id, row } (caller-constructed, unlike the
149
+ ;; persist-auto-emitted ThreadPostCreated) — ?row.threadRootId is
150
+ ;; correct here.
130
151
  SELECT -> loading
131
152
  (set @entity.focusedRow ?row)
132
153
  (fetch ThreadPost {
133
154
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
134
- filter: (or ["=", @config.threadRootId, ""] ["=", (object/get @entity threadRootId), @config.threadRootId])
155
+ filter: (or ["=", ?row.threadRootId, ""] ["=", (object/get @entity threadRootId), ?row.threadRootId])
135
156
  include: (replies)
136
157
  })
158
+ ;; Inline composers (bodyContent overrides with their own textarea +
159
+ ;; submit button) fire the composer triad while the trait sits in
160
+ ;; browsing — without these arms every such click is swallowed.
161
+ EDIT_REPLY -> browsing
162
+ (set @entity.content ?value)
163
+ SUBMIT_REPLY -> browsing when (not ["=", (str/default @entity.content ""), ""])
164
+ (persist create ThreadPost {
165
+ authorId: @user.id
166
+ authorName: @user.name
167
+ content: @entity.content
168
+ parentId: (str/default @entity.parentId "")
169
+ threadRootId: (str/default @entity.threadRootId (str/default @config.threadRootId root))
170
+ } {
171
+ emit: { failure: ThreadPostCreateFailed, success: ThreadPostCreated }
172
+ })
173
+ CANCEL_REPLY -> browsing
174
+ (set @entity.content "")
175
+ (set @entity.parentId "")
137
176
  ;; replying.SUBMIT_REPLY -> browsing lands here before the persist
138
177
  ;; resolves; a failure must be caught here too, not just replying's twin arm.
139
178
  ThreadPostCreateFailed -> browsing
@@ -163,19 +202,27 @@ orbital ThreadPostOrbital {
163
202
  state replying {
164
203
  EDIT_REPLY -> replying
165
204
  (set @entity.content ?value)
166
- SUBMIT_REPLY -> browsing
167
- (persist create ThreadPost (object/merge ?data { authorId: @user.id, authorName: @user.name }) {
205
+ SUBMIT_REPLY -> browsing when (not ["=", (str/default @entity.content ""), ""])
206
+ (persist create ThreadPost {
207
+ authorId: @user.id
208
+ authorName: @user.name
209
+ content: @entity.content
210
+ parentId: (str/default @entity.parentId "")
211
+ threadRootId: (str/default @entity.threadRootId (str/default @config.threadRootId root))
212
+ } {
168
213
  emit: { failure: ThreadPostCreateFailed, success: ThreadPostCreated }
169
214
  })
170
215
  CANCEL_REPLY -> browsing
171
216
  (set @entity.content "")
172
217
  (set @entity.parentId "")
218
+ ;; Scoped to the row just created (?threadRootId, flat) — see the twin
219
+ ;; arm in `browsing` for why.
173
220
  ThreadPostCreated -> browsing
174
221
  (set @entity.content "")
175
222
  (set @entity.parentId "")
176
223
  (fetch ThreadPost {
177
224
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
178
- filter: (or ["=", @config.threadRootId, ""] ["=", (object/get @entity threadRootId), @config.threadRootId])
225
+ filter: (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId])
179
226
  include: (replies)
180
227
  })
181
228
  ThreadPostCreateFailed -> replying
@@ -234,10 +281,8 @@ orbital ThreadPostOrbital {
234
281
  @description "Indicates a reply has been modified."
235
282
  @synonyms "update, change, modify"
236
283
  @tier "presentation"
237
- SUBMIT_REPLY {
238
- data : @entity!
239
- }
240
- @description "Signals a new reply has been successfully submitted."
284
+ SUBMIT_REPLY
285
+ @description "Signals the composed draft should be persisted as a new post — the draft is read from the entity frame (@entity.content), so bare buttons can emit it."
241
286
  @synonyms "post, send, add, publish"
242
287
  @tier "domain"
243
288
  CANCEL_REPLY
@@ -257,10 +302,8 @@ orbital ThreadPostOrbital {
257
302
  @description "Indicates a failure to load a thread post."
258
303
  @synonyms "load error, fetch failed, retrieval failed"
259
304
  @tier "internal"
260
- ThreadPostCreated {
261
- row : ThreadPost
262
- }
263
- @description "A new post has been added to the thread."
305
+ ThreadPostCreated
306
+ @description "A new post has been added to the thread — payload is the created ThreadPost row itself (flat: ?id, ?threadRootId, ?authorId, ?content, …), not wrapped under a row field."
264
307
  @synonyms "new post, added, created"
265
308
  @tier "domain"
266
309
  ThreadPostCreateFailed {
@@ -294,10 +337,8 @@ orbital ThreadPostOrbital {
294
337
  @description "A reply is being modified."
295
338
  @synonyms "update, change, revise"
296
339
  @tier "presentation"
297
- SUBMIT_REPLY {
298
- data : @entity!
299
- }
300
- @description "A new reply has been submitted and is awaiting processing."
340
+ SUBMIT_REPLY
341
+ @description "A new reply has been submitted and is awaiting processing — the draft is read from the entity frame (@entity.content), no payload required."
301
342
  @synonyms "post, send, add, submit"
302
343
  @tier "domain"
303
344
  CANCEL_REPLY
@@ -317,10 +358,8 @@ orbital ThreadPostOrbital {
317
358
  @description "Indicates a failure to load a thread post."
318
359
  @synonyms "error, failure, load failed"
319
360
  @tier "internal"
320
- ThreadPostCreated {
321
- row : ThreadPost
322
- }
323
- @description "A new post has been added to the thread."
361
+ ThreadPostCreated
362
+ @description "A new post has been added to the thread — payload is the created ThreadPost row itself (flat: ?id, ?threadRootId, ?authorId, ?content, …), not wrapped under a row field."
324
363
  @synonyms "new post, added, created"
325
364
  @tier "domain"
326
365
  ThreadPostCreateFailed {
@@ -356,9 +395,15 @@ orbital ThreadPostOrbital {
356
395
  @label "recipientName"
357
396
  @description "Header/recipient label for chat-style threads."
358
397
  @tier "presentation"
359
- sectionTitle : string = Discussion
398
+ sectionTitle : string = ""
360
399
  @label "sectionTitle"
361
- @description "Section header for linear-comment threads."
400
+ @description "Section header rendered by the default bodyContent when non-empty, along with a standalone composer button — the only REPLY affordance an empty thread has. Blank (the default) keeps the bare post list for embedded threads that bring their own chrome (chat rails, custom comment sections)."
401
+ @synonyms "header, comments title, discussion title"
402
+ @tier "presentation"
403
+ composerLabel : string = "Add comment"
404
+ @label "composerLabel"
405
+ @description "Label of the standalone composer button rendered under the post list when sectionTitle is non-empty."
406
+ @synonyms "reply label, comment button, add comment"
362
407
  @tier "presentation"
363
408
  emailAuthorBinding : string = @item.authorName
364
409
  @label "emailAuthorBinding"
@@ -413,7 +458,15 @@ orbital ThreadPostOrbital {
413
458
  @description "Reply binding for the reply body."
414
459
  @tier "presentation"
415
460
  bodyContent : render-ui = {
416
- children: [{
461
+ children: [(if ["!=", @config.sectionTitle, ""] {
462
+ content: @config.sectionTitle
463
+ type: typography
464
+ variant: h4
465
+ } {
466
+ children: []
467
+ gap: none
468
+ type: stack
469
+ }), {
417
470
  entity: ?data
418
471
  fields: [{
419
472
  label: Author
@@ -437,7 +490,17 @@ orbital ThreadPostOrbital {
437
490
  look: @config.tableLook
438
491
  type: data-list
439
492
  variant: card
440
- }]
493
+ }, (if ["!=", @config.sectionTitle, ""] {
494
+ action: REPLY
495
+ icon: message-square
496
+ label: @config.composerLabel
497
+ type: button
498
+ variant: secondary
499
+ } {
500
+ children: []
501
+ gap: none
502
+ type: stack
503
+ })]
441
504
  direction: vertical
442
505
  gap: md
443
506
  type: stack
@@ -113,7 +113,7 @@ orbital TreeNodeOrbital {
113
113
  type: file-tree
114
114
  }]
115
115
  direction: vertical
116
- gap: md
116
+ gap: (if ["=", @config.look, "rail"] none md)
117
117
  type: stack
118
118
  })
119
119
  TreeNodeLoadFailed -> error
@@ -265,7 +265,7 @@ orbital TreeNodeOrbital {
265
265
  type: file-tree
266
266
  }]
267
267
  direction: vertical
268
- gap: md
268
+ gap: (if ["=", @config.look, "rail"] none md)
269
269
  type: stack
270
270
  })
271
271
  TreeNodeLoadFailed -> error
@@ -5,7 +5,7 @@ orbital RevisionOrbital {
5
5
 
6
6
  type RevisionLoadFailed = Event { error : string, code : string } "Fired when the revision collection fails to load"
7
7
 
8
- type RevisionRolledBack = Event { row : Revision } "Fired after a rollback persists successfully on the source document"
8
+ type RevisionRolledBack = Event Revision "Fired after a rollback persists successfully on the source document"
9
9
 
10
10
  type RevisionRollbackFailed = Event { error : string, code : string } "Fired when a rollback fails to persist"
11
11
 
@@ -98,9 +98,9 @@ orbital RevisionOrbital {
98
98
  type: stack
99
99
  })
100
100
  RevisionRolledBack -> loading
101
- (set @entity.scopeKey (object/get ?row @config.scopeField ""))
101
+ (set @entity.scopeKey (object/get @payload @config.scopeField ""))
102
102
  (fetch Revision {
103
- filter: (or ["=", @config.scopeField, ""] ["=", (object/get ?row @config.scopeField ""), ""] ["=", (object/get @entity @config.scopeField), (object/get ?row @config.scopeField "")])
103
+ filter: (or ["=", @config.scopeField, ""] ["=", (object/get @payload @config.scopeField ""), ""] ["=", (object/get @entity @config.scopeField), (object/get @payload @config.scopeField "")])
104
104
  emit: { failure: RevisionLoadFailed, success: RevisionLoaded }
105
105
  })
106
106
  RevisionRollbackFailed -> error
@@ -532,9 +532,7 @@ orbital RevisionOrbital {
532
532
  @description "Indicates a failure to load revision data."
533
533
  @synonyms "error, fail, problem, unsuccessful"
534
534
  @tier "internal"
535
- RevisionRolledBack {
536
- row : Revision
537
- }
535
+ RevisionRolledBack
538
536
  @description "Indicates a revision has been successfully restored to a previous state."
539
537
  @synonyms "restored, reverted, undone"
540
538
  @tier "presentation"
@@ -593,9 +591,7 @@ orbital RevisionOrbital {
593
591
  @description "Indicates a failure to retrieve revision data."
594
592
  @synonyms "error, failure, problem, fetch failed"
595
593
  @tier "internal"
596
- RevisionRolledBack {
597
- row : Revision
598
- }
594
+ RevisionRolledBack
599
595
  @description "Indicates a revision has been successfully reverted."
600
596
  @synonyms "reverted, undone, restored"
601
597
  @tier "internal"
@@ -5,7 +5,7 @@ orbital VoteOrbital {
5
5
 
6
6
  type VoteLoadFailed = Event { error : string, code : string } "Fired when the vote collection fails to load"
7
7
 
8
- type VoteCasted = Event { row : Vote } "Fired after a vote persists successfully"
8
+ type VoteCasted = Event @entity "Fired after a vote persists successfully"
9
9
 
10
10
  type VoteCastFailed = Event { error : string, code : string } "Fired when persisting a vote fails"
11
11
 
@@ -180,9 +180,7 @@ orbital VoteOrbital {
180
180
  @description "Indicates that loading a vote failed."
181
181
  @synonyms "load error, failed load, fetch failure"
182
182
  @tier "internal"
183
- VoteCasted -> external {
184
- row : Vote
185
- }
183
+ VoteCasted -> external
186
184
  @description "Indicates a vote has been successfully recorded."
187
185
  @synonyms "voted, vote-submitted, vote-changed"
188
186
  @tier "domain"
@@ -223,9 +221,7 @@ orbital VoteOrbital {
223
221
  @description "Indicates a failure to load vote data."
224
222
  @synonyms "error, failed, problem, issue"
225
223
  @tier "internal"
226
- VoteCasted {
227
- row : Vote
228
- }
224
+ VoteCasted
229
225
  @description "A vote has been successfully recorded."
230
226
  @synonyms "voted, tallied, updated"
231
227
  @tier "domain"
@@ -9,7 +9,7 @@ orbital WizardOrbital {
9
9
 
10
10
  type WizardLoadFailed = Event { error : string, code : string } "Fired when fetch fails"
11
11
 
12
- type WizardSaved = Event { row : @entity } "Fired when a wizard step has been persisted"
12
+ type WizardSaved = Event @entity "Fired when a wizard step has been persisted"
13
13
 
14
14
  type WizardSaveFailed = Event { error : string, code : string } "Fired when persist fails"
15
15
 
@@ -511,7 +511,7 @@ orbital WizardOrbital {
511
511
  @description "Indicates the wizard failed to load initial data."
512
512
  @synonyms "load error, initialization failure"
513
513
  @tier "internal"
514
- WizardSaved { row : @entity }
514
+ WizardSaved
515
515
  @description "Indicates successful data submission within the wizard."
516
516
  @synonyms "saved, submitted, confirmed"
517
517
  @tier "domain"
@@ -558,7 +558,7 @@ orbital WizardOrbital {
558
558
  @description "Indicates the wizard failed to load its initial data."
559
559
  @synonyms "load error, initialization failure, failed load"
560
560
  @tier "internal"
561
- WizardSaved { row : @entity }
561
+ WizardSaved
562
562
  @description "Data submission from the current step has completed."
563
563
  @synonyms "submit, save, confirm, send"
564
564
  @tier "domain"
@@ -77,11 +77,11 @@ orbital AvatarOrbital {
77
77
  @label "Class Name"
78
78
  @description "Additional CSS classes"
79
79
  @tier "presentation"
80
- onClick : string = "CLICK"
80
+ onClick : event = "CLICK"
81
81
  @label "On Click"
82
82
  @description "Click handler"
83
83
  @tier "presentation"
84
- action : string = "ACTION"
84
+ action : event = "ACTION"
85
85
  @label "Action"
86
86
  @description "Declarative event name — emits UI:{action} via eventBus on click"
87
87
  @tier "presentation"
@@ -68,7 +68,7 @@ orbital BadgeOrbital {
68
68
  @label "Icon Asset"
69
69
  @description "Asset image rendered as the badge icon; takes precedence over icon when provided."
70
70
  @tier "presentation"
71
- onRemove : string = ""
71
+ onRemove : event = ""
72
72
  @label "On Remove"
73
73
  @description "When set, renders a small X button on the right of the badge that invokes this handler — turns the badge into a removable chip. Used by the TagInput molecule and other 'list of removable values' surfaces."
74
74
  @tier "presentation"
@@ -115,7 +115,7 @@ orbital BoxOrbital {
115
115
  @label "Position"
116
116
  @description "Position"
117
117
  @tier "presentation"
118
- action : string = "ACTION"
118
+ action : event = "ACTION"
119
119
  @label "Action"
120
120
  @description "Declarative event name — emits UI:{action} via eventBus on click"
121
121
  @tier "presentation"
@@ -123,7 +123,7 @@ orbital BoxOrbital {
123
123
  @label "Action Payload"
124
124
  @description "Payload to include with the action event"
125
125
  @tier "presentation"
126
- hoverEvent : string = "HOVER"
126
+ hoverEvent : event = "HOVER"
127
127
  @label "Hover Event"
128
128
  @description "Declarative hover event — emits UI:{hoverEvent} with { hovered: true/false } on mouseEnter/mouseLeave"
129
129
  @tier "presentation"