@almadar/std 16.192.0 → 16.194.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/lolo/infra/atoms/std-approval-gate.lolo +9 -3
  2. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +8 -2
  3. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +1 -1
  4. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +1 -1
  5. package/behaviors/lolo/ui/core/atoms/std-date-range.lolo +1 -1
  6. package/behaviors/lolo/ui/core/atoms/std-detail-layout.lolo +3 -3
  7. package/behaviors/lolo/ui/core/atoms/std-filter.lolo +1 -1
  8. package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -1
  9. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +1 -1
  10. package/behaviors/lolo/ui/core/atoms/std-modal.lolo +1 -1
  11. package/behaviors/lolo/ui/core/atoms/std-pagination.lolo +1 -1
  12. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +13 -2
  13. package/behaviors/lolo/ui/core/atoms/std-scatter.lolo +1 -1
  14. package/behaviors/lolo/ui/core/atoms/std-search.lolo +1 -1
  15. package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +319 -0
  16. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +27 -17
  17. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +91 -28
  18. package/behaviors/lolo/ui/core/atoms/std-tree.lolo +106 -14
  19. package/behaviors/lolo/ui/core/atoms/ui-avatar.lolo +2 -2
  20. package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +1 -1
  21. package/behaviors/lolo/ui/core/atoms/ui-box.lolo +2 -2
  22. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +1 -1
  23. package/behaviors/lolo/ui/core/atoms/ui-card.lolo +1 -1
  24. package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +1 -1
  25. package/behaviors/lolo/ui/core/atoms/ui-day-cell.lolo +1 -1
  26. package/behaviors/lolo/ui/core/atoms/ui-filter-pill.lolo +4 -4
  27. package/behaviors/lolo/ui/core/atoms/ui-flip-container.lolo +1 -1
  28. package/behaviors/lolo/ui/core/atoms/ui-hstack.lolo +1 -1
  29. package/behaviors/lolo/ui/core/atoms/ui-infinite-scroll-sentinel.lolo +1 -1
  30. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +3 -3
  31. package/behaviors/lolo/ui/core/atoms/ui-overlay.lolo +1 -1
  32. package/behaviors/lolo/ui/core/atoms/ui-radio.lolo +1 -1
  33. package/behaviors/lolo/ui/core/atoms/ui-range-slider.lolo +2 -2
  34. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +3 -3
  35. package/behaviors/lolo/ui/core/atoms/ui-stack.lolo +1 -1
  36. package/behaviors/lolo/ui/core/atoms/ui-switch.lolo +1 -1
  37. package/behaviors/lolo/ui/core/atoms/ui-text-highlight.lolo +5 -5
  38. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +2 -2
  39. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +1 -1
  40. package/behaviors/lolo/ui/core/atoms/ui-typewriter-text.lolo +1 -1
  41. package/behaviors/lolo/ui/core/atoms/ui-vstack.lolo +1 -1
  42. package/behaviors/lolo/ui/core/molecules/ui-accordion.lolo +2 -2
  43. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +3 -3
  44. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +2 -2
  45. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +2 -2
  46. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +6 -6
  47. package/behaviors/lolo/ui/core/molecules/ui-carousel.lolo +1 -1
  48. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +1 -1
  49. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +2 -2
  50. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +3 -3
  51. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +7 -7
  52. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +2 -2
  53. package/behaviors/lolo/ui/core/molecules/ui-date-range-selector.lolo +1 -1
  54. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +2 -2
  55. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +5 -5
  56. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +2 -2
  57. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +1 -1
  58. package/behaviors/lolo/ui/core/molecules/ui-empty-state.lolo +2 -2
  59. package/behaviors/lolo/ui/core/molecules/ui-error-state.lolo +2 -2
  60. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +27 -2
  61. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +4 -4
  62. package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +1 -1
  63. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +2 -2
  64. package/behaviors/lolo/ui/core/molecules/ui-form-section-header.lolo +1 -1
  65. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +5 -5
  66. package/behaviors/lolo/ui/core/molecules/ui-graph-view.lolo +2 -2
  67. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +4 -4
  68. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +2 -2
  69. package/behaviors/lolo/ui/core/molecules/ui-import-source-picker.lolo +1 -1
  70. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +3 -3
  71. package/behaviors/lolo/ui/core/molecules/ui-lightbox.lolo +2 -2
  72. package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +2 -2
  73. package/behaviors/lolo/ui/core/molecules/ui-map-view.lolo +4 -4
  74. package/behaviors/lolo/ui/core/molecules/ui-matrix-question.lolo +2 -2
  75. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +3 -3
  76. package/behaviors/lolo/ui/core/molecules/ui-notification.lolo +4 -4
  77. package/behaviors/lolo/ui/core/molecules/ui-number-stepper.lolo +2 -2
  78. package/behaviors/lolo/ui/core/molecules/ui-option-constraint-group.lolo +2 -2
  79. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +1 -1
  80. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +2 -2
  81. package/behaviors/lolo/ui/core/molecules/ui-pagination.lolo +4 -4
  82. package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +1 -1
  83. package/behaviors/lolo/ui/core/molecules/ui-positioned-canvas.lolo +4 -4
  84. package/behaviors/lolo/ui/core/molecules/ui-progress-dots.lolo +1 -1
  85. package/behaviors/lolo/ui/core/molecules/ui-pull-to-refresh.lolo +1 -1
  86. package/behaviors/lolo/ui/core/molecules/ui-qr-scanner.lolo +2 -2
  87. package/behaviors/lolo/ui/core/molecules/ui-relation-select.lolo +1 -1
  88. package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +3 -3
  89. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +8 -8
  90. package/behaviors/lolo/ui/core/molecules/ui-rich-text-editor.lolo +2 -2
  91. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +2 -2
  92. package/behaviors/lolo/ui/core/molecules/ui-side-panel.lolo +2 -2
  93. package/behaviors/lolo/ui/core/molecules/ui-sidebar.lolo +3 -3
  94. package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +3 -3
  95. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +1 -1
  96. package/behaviors/lolo/ui/core/molecules/ui-star-rating.lolo +2 -2
  97. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +2 -2
  98. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +4 -4
  99. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +2 -2
  100. package/behaviors/lolo/ui/core/molecules/ui-tag-input.lolo +3 -3
  101. package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +1 -1
  102. package/behaviors/lolo/ui/core/molecules/ui-version-diff.lolo +6 -6
  103. package/behaviors/lolo/ui/core/molecules/ui-violation-alert.lolo +2 -2
  104. package/behaviors/lolo/ui/core/molecules/ui-vote-stack.lolo +2 -2
  105. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +5 -5
  106. package/behaviors/lolo/ui/core/molecules/ui-wizard-navigation.lolo +6 -6
  107. package/behaviors/lolo/ui/core/molecules/ui-wizard-progress.lolo +2 -2
  108. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +1 -1
  109. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +1 -1
  110. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +3 -3
  111. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +3 -3
  112. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +1 -1
  113. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +1 -1
  114. package/behaviors/lolo/ui/core/organisms/ui-tabbed-container.lolo +1 -1
  115. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +1 -1
  116. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +6 -6
  117. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +11 -6
  118. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +4 -4
  119. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +5 -5
  120. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +2 -2
  121. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +4 -4
  122. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +4 -4
  123. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -1
  124. package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +4 -4
  125. package/behaviors/lolo/ui/game/atoms/ui-state-graph.lolo +1 -1
  126. package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +7 -7
  127. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +1 -1
  128. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +2 -2
  129. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +1 -1
  130. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +1 -1
  131. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +1 -1
  132. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +2 -2
  133. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +1 -1
  134. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +1 -1
  135. package/behaviors/registry/infra/atoms/std-approval-gate.orb +37 -9
  136. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +12 -2
  137. package/behaviors/registry/ui/core/atoms/std-browse.orb +2 -1
  138. package/behaviors/registry/ui/core/atoms/std-calendar.orb +1 -1
  139. package/behaviors/registry/ui/core/atoms/std-date-range.orb +2 -1
  140. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +3 -3
  141. package/behaviors/registry/ui/core/atoms/std-filter.orb +2 -1
  142. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +2 -1
  143. package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
  144. package/behaviors/registry/ui/core/atoms/std-modal.orb +5 -1
  145. package/behaviors/registry/ui/core/atoms/std-pagination.orb +2 -1
  146. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +38 -2
  147. package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
  148. package/behaviors/registry/ui/core/atoms/std-search.orb +2 -1
  149. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +1381 -0
  150. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +34 -18
  151. package/behaviors/registry/ui/core/atoms/std-thread.orb +296 -109
  152. package/behaviors/registry/ui/core/atoms/std-tree.orb +447 -68
  153. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +2 -2
  154. package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
  155. package/behaviors/registry/ui/core/atoms/ui-box.orb +2 -2
  156. package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
  157. package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
  158. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
  159. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
  160. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +5 -4
  161. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
  162. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
  163. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
  164. package/behaviors/registry/ui/core/atoms/ui-input.orb +3 -3
  165. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
  166. package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
  167. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +2 -2
  168. package/behaviors/registry/ui/core/atoms/ui-select.orb +3 -3
  169. package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
  170. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
  171. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +5 -5
  172. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +2 -2
  173. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
  174. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
  175. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
  176. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +2 -2
  177. package/behaviors/registry/ui/core/molecules/ui-alert.orb +3 -3
  178. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +2 -2
  179. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +2 -2
  180. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +6 -6
  181. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
  182. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
  183. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +2 -2
  184. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +3 -3
  185. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +7 -7
  186. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +2 -2
  187. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
  188. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +2 -2
  189. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +5 -5
  190. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +3 -2
  191. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
  192. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +2 -2
  193. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +2 -2
  194. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +42 -1
  195. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +4 -4
  196. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  197. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +2 -2
  198. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
  199. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +5 -5
  200. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +2 -2
  201. package/behaviors/registry/ui/core/molecules/ui-header.orb +4 -4
  202. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +2 -2
  203. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
  204. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +3 -3
  205. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +2 -2
  206. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +2 -2
  207. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +4 -4
  208. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +2 -2
  209. package/behaviors/registry/ui/core/molecules/ui-modal.orb +4 -3
  210. package/behaviors/registry/ui/core/molecules/ui-notification.orb +4 -4
  211. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +2 -2
  212. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +2 -2
  213. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
  214. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +2 -2
  215. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +5 -4
  216. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
  217. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +4 -4
  218. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
  219. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
  220. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +2 -2
  221. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
  222. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +3 -3
  223. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +8 -8
  224. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +3 -2
  225. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +2 -2
  226. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +3 -2
  227. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +3 -3
  228. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +3 -3
  229. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  230. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +2 -2
  231. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +2 -2
  232. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +4 -4
  233. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +2 -2
  234. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +3 -3
  235. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
  236. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +6 -6
  237. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +2 -2
  238. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +2 -2
  239. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +5 -5
  240. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +6 -6
  241. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +2 -2
  242. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
  243. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +1 -1
  244. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +3 -3
  245. package/behaviors/registry/ui/core/organisms/ui-form.orb +3 -3
  246. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
  247. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
  248. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
  249. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
  250. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +6 -6
  251. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +13 -6
  252. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +4 -4
  253. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +5 -5
  254. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +2 -2
  255. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +4 -4
  256. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +4 -4
  257. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
  258. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +4 -4
  259. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
  260. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +8 -7
  261. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +7 -13
  262. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +2 -2
  263. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
  264. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
  265. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
  266. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +2 -2
  267. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
  268. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
  269. package/dist/behaviors/exports-reader.js +2587 -1923
  270. package/dist/behaviors/functions/index.d.ts +183 -16
  271. package/dist/behaviors/functions/index.js +2585 -1924
  272. package/dist/behaviors/index.d.ts +1 -1
  273. package/dist/behaviors/index.js +2588 -1924
  274. package/dist/behaviors/query.js +2587 -1923
  275. package/dist/behaviors-embeddings.hash.json +3 -3
  276. package/dist/behaviors-embeddings.json +15 -7
  277. package/dist/behaviors-registry.json +597 -14
  278. package/dist/index.d.ts +1 -1
  279. package/dist/index.js +2588 -1924
  280. package/dist/knob-embeddings.hash.json +3 -3
  281. package/dist/knob-embeddings.json +1 -1
  282. package/dist/registry/factory-signatures.json +1 -1
  283. package/package.json +2 -2
@@ -103,19 +103,19 @@ orbital Canvas2dOrbital {
103
103
  @label "Background Image"
104
104
  @description "Background image (tiled behind iso/hex/flat/free; cover-scaled for atlas slices). A bare URL string is accepted as shorthand for a standalone backdrop."
105
105
  @tier "presentation"
106
- tileClickEvent : string = "TILE_CLICK"
106
+ tileClickEvent : event = "TILE_CLICK"
107
107
  @label "Tile Click Event"
108
108
  @description "--- Declarative events back to LOLO ---"
109
109
  @tier "presentation"
110
- unitClickEvent : string = "UNIT_CLICK"
110
+ unitClickEvent : event = "UNIT_CLICK"
111
111
  @label "Unit Click Event"
112
112
  @description "Unit-click event. The neutral drawable host cannot resolve a click to a per-entity id (descriptors carry only a `ScenePos`, no id), so this prop is accepted but not yet emitted — the id-hit-test is a tracked fork (docs/Almadar_Std_Game_V2_PLAN.md)."
113
113
  @tier "presentation"
114
- tileHoverEvent : string = "TILE_HOVER"
114
+ tileHoverEvent : event = "TILE_HOVER"
115
115
  @label "Tile Hover Event"
116
116
  @description "Emits UI:{tileHoverEvent} with the unprojected scene { x, y } on hover."
117
117
  @tier "presentation"
118
- tileLeaveEvent : string = "TILE_LEAVE"
118
+ tileLeaveEvent : event = "TILE_LEAVE"
119
119
  @label "Tile Leave Event"
120
120
  @description "Emits UI:{tileLeaveEvent} with {} on pointer leave."
121
121
  @tier "presentation"
@@ -165,23 +165,23 @@ orbital CanvasOrbital {
165
165
  @label "Post"
166
166
  @description "3D post-processing stack — bloom (emissive glow / neon) and vignette. Omitted → no post pass."
167
167
  @tier "presentation"
168
- tileClickEvent : string = "TILE_CLICK"
168
+ tileClickEvent : event = "TILE_CLICK"
169
169
  @label "Tile Click Event"
170
170
  @description "--- Shared interaction (LOLO-owned). The painter emitted at runtime depends on"
171
171
  @tier "presentation"
172
- unitClickEvent : string = "UNIT_CLICK"
172
+ unitClickEvent : event = "UNIT_CLICK"
173
173
  @label "Unit Click Event"
174
174
  @description "unitClickEvent prop"
175
175
  @tier "presentation"
176
- tileHoverEvent : string = "TILE_HOVER"
176
+ tileHoverEvent : event = "TILE_HOVER"
177
177
  @label "Tile Hover Event"
178
178
  @description "tileHoverEvent prop"
179
179
  @tier "presentation"
180
- tileLeaveEvent : string = "TILE_LEAVE"
180
+ tileLeaveEvent : event = "TILE_LEAVE"
181
181
  @label "Tile Leave Event"
182
182
  @description "tileLeaveEvent prop"
183
183
  @tier "presentation"
184
- featureClickEvent : string = "FEATURE_CLICK"
184
+ featureClickEvent : event = "FEATURE_CLICK"
185
185
  @label "Feature Click Event"
186
186
  @description "Feature-click event (3D only)."
187
187
  @tier "presentation"
@@ -78,11 +78,11 @@ orbital ChoiceButtonOrbital {
78
78
  @label "Selected"
79
79
  @description "Whether the choice is currently selected"
80
80
  @tier "presentation"
81
- onClick : string = "CLICK"
81
+ onClick : event = "CLICK"
82
82
  @label "On Click"
83
83
  @description "Click handler"
84
84
  @tier "presentation"
85
- action : string = "ACTION"
85
+ action : event = "ACTION"
86
86
  @label "Action"
87
87
  @description "Declarative event name — emits UI:{action} via eventBus on click"
88
88
  @tier "presentation"
@@ -81,19 +81,19 @@ orbital ControlButtonOrbital {
81
81
  @label "Variant"
82
82
  @description "Visual variant"
83
83
  @tier "presentation"
84
- onPress : string = "PRESS"
84
+ onPress : event = "PRESS"
85
85
  @label "On Press"
86
86
  @description "Called when button is pressed"
87
87
  @tier "presentation"
88
- onRelease : string = "RELEASE"
88
+ onRelease : event = "RELEASE"
89
89
  @label "On Release"
90
90
  @description "Called when button is released"
91
91
  @tier "presentation"
92
- pressEvent : string = "PRESS"
92
+ pressEvent : event = "PRESS"
93
93
  @label "Press Event"
94
94
  @description "Declarative event name emitted on press via useEventBus"
95
95
  @tier "presentation"
96
- releaseEvent : string = "RELEASE"
96
+ releaseEvent : event = "RELEASE"
97
97
  @label "Release Event"
98
98
  @description "Declarative event name emitted on release via useEventBus"
99
99
  @tier "presentation"
@@ -98,19 +98,19 @@ orbital ControlGridOrbital {
98
98
  @label "Include Diagonals"
99
99
  @description "Whether to include diagonal buttons (kind='dpad')"
100
100
  @tier "presentation"
101
- onAction : string = "ACTION"
101
+ onAction : event = "ACTION"
102
102
  @label "On Action"
103
103
  @description "Called when a button/direction is pressed or released"
104
104
  @tier "presentation"
105
- actionEvent : string = "ACTION"
105
+ actionEvent : event = "ACTION"
106
106
  @label "Action Event"
107
107
  @description "Event-bus event emitted with `{ id, pressed }` on press/release"
108
108
  @tier "presentation"
109
- onDirection : string = "DIRECTION"
109
+ onDirection : event = "DIRECTION"
110
110
  @label "On Direction"
111
111
  @description "Called when a direction is pressed or released (kind='dpad' convenience overload)"
112
112
  @tier "presentation"
113
- directionEvent : string = "DIRECTION"
113
+ directionEvent : event = "DIRECTION"
114
114
  @label "Direction Event"
115
115
  @description "Event-bus event emitted with `{ direction, pressed }` (kind='dpad')"
116
116
  @tier "presentation"
@@ -93,7 +93,7 @@ orbital GameMenuOrbital {
93
93
  @label "Menu Items"
94
94
  @description "Alias for options (schema compatibility)"
95
95
  @tier "presentation"
96
- onSelect : string = "SELECT"
96
+ onSelect : event = "SELECT"
97
97
  @label "On Select"
98
98
  @description "Called when an option is selected (legacy callback, prefer event bus)"
99
99
  @tier "presentation"
@@ -104,19 +104,19 @@ orbital SequenceBarOrbital {
104
104
  @label "Max Slots"
105
105
  @description "Max number of slots"
106
106
  @tier "presentation"
107
- onSlotDrop : string = "SLOT_DROP"
107
+ onSlotDrop : event = "SLOT_DROP"
108
108
  @label "On Slot Drop"
109
109
  @description "Called when an item is dropped into slot at index (callback path)"
110
110
  @tier "presentation"
111
- onSlotRemove : string = "SLOT_REMOVE"
111
+ onSlotRemove : event = "SLOT_REMOVE"
112
112
  @label "On Slot Remove"
113
113
  @description "Called when a slot is cleared (callback path)"
114
114
  @tier "presentation"
115
- slotDropEvent : string = "SLOT_DROP"
115
+ slotDropEvent : event = "SLOT_DROP"
116
116
  @label "Slot Drop Event"
117
117
  @description "Emits UI:{slotDropEvent} with { slotNumber, itemId } when an item is dropped (declarative path)"
118
118
  @tier "presentation"
119
- slotRemoveEvent : string = "SLOT_REMOVE"
119
+ slotRemoveEvent : event = "SLOT_REMOVE"
120
120
  @label "Slot Remove Event"
121
121
  @description "Emits UI:{slotRemoveEvent} with { slotNumber } when a slot is cleared (declarative path)"
122
122
  @tier "presentation"
@@ -73,7 +73,7 @@ orbital StateGraphOrbital {
73
73
  @label "Height"
74
74
  @description "Graph canvas height."
75
75
  @tier "presentation"
76
- nodeClickEvent : string = "NODE_CLICK"
76
+ nodeClickEvent : event = "NODE_CLICK"
77
77
  @label "Node Click Event"
78
78
  @description "Emits UI:{nodeClickEvent} with { stateId } when a node is clicked."
79
79
  @tier "presentation"
@@ -267,7 +267,7 @@ orbital TraitSlotOrbital {
267
267
  @label "Error"
268
268
  @description "Error state"
269
269
  @tier "presentation"
270
- onItemDrop : string = "ITEM_DROP"
270
+ onItemDrop : event = "ITEM_DROP"
271
271
  @label "On Item Drop"
272
272
  @description "-- Drag and drop --"
273
273
  @tier "presentation"
@@ -275,7 +275,7 @@ orbital TraitSlotOrbital {
275
275
  @label "Draggable"
276
276
  @description "Whether this slot's equipped item is draggable"
277
277
  @tier "presentation"
278
- onDragStart : string = "DRAG_START"
278
+ onDragStart : event = "DRAG_START"
279
279
  @label "On Drag Start"
280
280
  @description "Called when drag starts from this slot"
281
281
  @tier "presentation"
@@ -283,23 +283,23 @@ orbital TraitSlotOrbital {
283
283
  @label "Feedback"
284
284
  @description "Per-slot correctness feedback after a failed attempt"
285
285
  @tier "presentation"
286
- onClick : string = "CLICK"
286
+ onClick : event = "CLICK"
287
287
  @label "On Click"
288
288
  @description "-- Callbacks --"
289
289
  @tier "presentation"
290
- onRemove : string = ""
290
+ onRemove : event = ""
291
291
  @label "On Remove"
292
292
  @description "Remove handler"
293
293
  @tier "presentation"
294
- clickEvent : string = "CLICK"
294
+ clickEvent : event = "CLICK"
295
295
  @label "Click Event"
296
296
  @description "-- Declarative events --"
297
297
  @tier "presentation"
298
- removeEvent : string = ""
298
+ removeEvent : event = ""
299
299
  @label "Remove Event"
300
300
  @description "Emits UI:{removeEvent} with { slotNumber }"
301
301
  @tier "presentation"
302
- dropEvent : string = "DROP"
302
+ dropEvent : event = "DROP"
303
303
  @label "Drop Event"
304
304
  @description "Emits UI:{dropEvent} with { slotNumber, itemId } when an item is dropped into this slot"
305
305
  @tier "presentation"
@@ -417,7 +417,7 @@ orbital TacticsBoard2DOrbital {
417
417
  @label "Extra Addon Buttons"
418
418
  @description "Board-specific action buttons appended after End Turn/Cancel (e.g. Produce). The action names events listened by composed mechanic atoms."
419
419
  @tier "presentation"
420
- extraAddonEvent : string = ""
420
+ extraAddonEvent : event = ""
421
421
  @label "Extra Addon Event"
422
422
  @description "Event name used by an `extraAddons` button's `action` literal (e.g. \"PRODUCE\"). Set this to the same value so the trait's own event set declares it."
423
423
  @tier "domain"
@@ -169,11 +169,11 @@ orbital AlgoGraphCanvasOrbital {
169
169
  @label "Animate"
170
170
  @description "animate prop"
171
171
  @tier "presentation"
172
- onShapeClick : string = "SHAPE_CLICK"
172
+ onShapeClick : event = "SHAPE_CLICK"
173
173
  @label "On Shape Click"
174
174
  @description "onShapeClick prop"
175
175
  @tier "presentation"
176
- onNodeClick : string = "NODE_CLICK"
176
+ onNodeClick : event = "NODE_CLICK"
177
177
  @label "On Node Click"
178
178
  @description "Fires when a node circle is clicked, alongside `onShapeClick`."
179
179
  @tier "presentation"
@@ -281,7 +281,7 @@ orbital AlgorithmCanvasOrbital {
281
281
  @label "Animate"
282
282
  @description "animate prop"
283
283
  @tier "presentation"
284
- onShapeClick : string = "SHAPE_CLICK"
284
+ onShapeClick : event = "SHAPE_CLICK"
285
285
  @label "On Shape Click"
286
286
  @description "onShapeClick prop"
287
287
  @tier "presentation"
@@ -351,7 +351,7 @@ orbital BiologyCanvasOrbital {
351
351
  @label "Animate"
352
352
  @description "2D only: continuous redraw loop. 3D motion is entity-state driven."
353
353
  @tier "presentation"
354
- onShapeClick : string = "SHAPE_CLICK"
354
+ onShapeClick : event = "SHAPE_CLICK"
355
355
  @label "On Shape Click"
356
356
  @description "onShapeClick prop"
357
357
  @tier "presentation"
@@ -345,7 +345,7 @@ orbital ChemistryCanvasOrbital {
345
345
  @label "Animate"
346
346
  @description "2D only: continuous redraw loop. 3D motion is entity-state driven."
347
347
  @tier "presentation"
348
- onShapeClick : string = "SHAPE_CLICK"
348
+ onShapeClick : event = "SHAPE_CLICK"
349
349
  @label "On Shape Click"
350
350
  @description "onShapeClick prop"
351
351
  @tier "presentation"
@@ -187,11 +187,11 @@ orbital LearningCanvasOrbital {
187
187
  @label "Animate"
188
188
  @description "Enable continuous redraw loop."
189
189
  @tier "presentation"
190
- onShapeClick : string = "SHAPE_CLICK"
190
+ onShapeClick : event = "SHAPE_CLICK"
191
191
  @label "On Shape Click"
192
192
  @description "Clicked shape payload: { id?, type?, index }."
193
193
  @tier "presentation"
194
- onShapeHover : string = "SHAPE_HOVER"
194
+ onShapeHover : event = "SHAPE_HOVER"
195
195
  @label "On Shape Hover"
196
196
  @description "Hovered shape payload: { id?, type?, index }."
197
197
  @tier "presentation"
@@ -377,7 +377,7 @@ orbital MathCanvasOrbital {
377
377
  @label "Animate"
378
378
  @description "animate prop"
379
379
  @tier "presentation"
380
- onShapeClick : string = "SHAPE_CLICK"
380
+ onShapeClick : event = "SHAPE_CLICK"
381
381
  @label "On Shape Click"
382
382
  @description "onShapeClick prop"
383
383
  @tier "presentation"
@@ -426,7 +426,7 @@ orbital PhysicsCanvasOrbital {
426
426
  @label "Animate"
427
427
  @description "2D only: continuous redraw loop. 3D motion is entity-state driven."
428
428
  @tier "presentation"
429
- onShapeClick : string = "SHAPE_CLICK"
429
+ onShapeClick : event = "SHAPE_CLICK"
430
430
  @label "On Shape Click"
431
431
  @description "onShapeClick prop"
432
432
  @tier "presentation"
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "std-approval-gate — generic approval gate / approver workflow. Use when a user voices that an action must be reviewed, approved, signed off, or authorized by a privileged role before it proceeds (admin approval, supervisor sign-off, manager approval, gatekeeper review, editor approval, senior editor approval, reviewer approval, publishing approval, draft approval, content review, submit drafts then editors review and approve or reject, needs approval before going live, requires sign-off before publish). Persists ApprovalRequest rows + surfaces the PENDING ones in a review queue showing what is being approved and who asked, with Approve / Deny actions — Deny captures a written reason. approverRoles is ENFORCED by the review transitions themselves: an APPROVE/DENY from a viewer whose role is not listed does not fire. On approval emits ApprovalGranted; on denial emits ApprovalDenied (with the reason). Hosts that replay the gated action MUST route a failed replay back via APPROVAL_REPLAY_FAILED so the request reopens instead of being silently consumed. Compose onto any orbital whose action you want to gate: the target orbital emits an external event, an ApprovalRequest row is created (stamp subjectLabel/subjectId/requestedBy so reviewers see what they are judging), and downstream effects wait on ApprovalGranted. Differs from std-mod-queue, which is content-moderation-specific.",
2
+ "description": "std-approval-gate — generic approval gate / approver workflow. Use when a user voices that an action must be reviewed, approved, signed off, or authorized by a privileged role before it proceeds (admin approval, supervisor sign-off, manager approval, gatekeeper review, editor approval, senior editor approval, reviewer approval, publishing approval, draft approval, content review, submit drafts then editors review and approve or reject, needs approval before going live, requires sign-off before publish). Persists ApprovalRequest rows + surfaces the PENDING ones in a review queue showing what is being approved and who asked, with Approve / Deny actions — Deny captures a written reason. approverRoles is ENFORCED by the review transitions themselves: an APPROVE/DENY from a viewer whose role is not listed does not fire. blockSelfApproval additionally stops a reviewer approving their own request (four-eyes) — DENY stays allowed as self-withdrawal. On approval emits ApprovalGranted; on denial emits ApprovalDenied (with the reason). Hosts that replay the gated action MUST route a failed replay back via APPROVAL_REPLAY_FAILED so the request reopens instead of being silently consumed. Compose onto any orbital whose action you want to gate: the target orbital emits an external event, an ApprovalRequest row is created (stamp subjectLabel/subjectId/requestedBy so reviewers see what they are judging), and downstream effects wait on ApprovalGranted. Differs from std-mod-queue, which is content-moderation-specific.",
3
3
  "ledger": {
4
4
  "entries": {
5
5
  "ent_01KXG04EYQFWN6TM97JNWHHSF4": {
@@ -560,6 +560,14 @@
560
560
  "tier": "policy",
561
561
  "type": "boolean"
562
562
  },
563
+ "blockSelfApproval": {
564
+ "default": false,
565
+ "description": "When on, a reviewer cannot APPROVE a request they submitted themselves (requestedBy = the viewer's id) — enforced by the APPROVE transition guard, from the button or from the bus. Requires hosts to stamp requestedBy at request creation. DENY stays allowed on your own request (denying your own request withdraws it). Off by default.",
566
+ "label": "Block approving your own requests?",
567
+ "synonyms": "self approval, self-approval, four eyes, four-eyes, separation of duties, cannot approve own, no self sign-off, dual control",
568
+ "tier": "policy",
569
+ "type": "boolean"
570
+ },
563
571
  "enabled": {
564
572
  "default": false,
565
573
  "description": "Require sign-off before a record is finalized. Off by default.",
@@ -1569,19 +1577,39 @@
1569
1577
  "eventId": "evt_01KXG04EZ0H0D5WC8FJKBRGBQE",
1570
1578
  "from": "reviewing",
1571
1579
  "guard": [
1572
- "or",
1580
+ "and",
1573
1581
  [
1574
- "=",
1582
+ "or",
1575
1583
  [
1576
- "array/len",
1577
- "@config.approverRoles"
1584
+ "=",
1585
+ [
1586
+ "array/len",
1587
+ "@config.approverRoles"
1588
+ ],
1589
+ 0.0
1578
1590
  ],
1579
- 0.0
1591
+ [
1592
+ "array/includes",
1593
+ "@config.approverRoles",
1594
+ "@user.role"
1595
+ ]
1580
1596
  ],
1581
1597
  [
1582
- "array/includes",
1583
- "@config.approverRoles",
1584
- "@user.role"
1598
+ "or",
1599
+ [
1600
+ "=",
1601
+ "@config.blockSelfApproval",
1602
+ false
1603
+ ],
1604
+ [
1605
+ "!=",
1606
+ [
1607
+ "object/get",
1608
+ "@payload.row",
1609
+ "requestedBy"
1610
+ ],
1611
+ "@user.id"
1612
+ ]
1585
1613
  ]
1586
1614
  ],
1587
1615
  "to": "reviewing"
@@ -218,8 +218,9 @@
218
218
  "default": "NOTIFY_CLICK",
219
219
  "description": "Event emitted when the user picks a notification",
220
220
  "label": "Notification click event",
221
+ "refId": "evt_01KXG04FN16PS4TRDAY1CVAHG1",
221
222
  "tier": "internal",
222
- "type": "string"
223
+ "type": "event"
223
224
  },
224
225
  "notifications": {
225
226
  "default": [],
@@ -253,8 +254,16 @@
253
254
  "default": "SEARCH",
254
255
  "description": "Event emitted when the user runs a global search",
255
256
  "label": "Search event",
257
+ "refId": "evt_01KXG04FN1SP2J2Q0TZB484HM6",
256
258
  "tier": "internal",
257
- "type": "string"
259
+ "type": "event"
260
+ },
261
+ "sidebarTrait": {
262
+ "description": "Optional trait rendered in the sidebar between the nav links and the footer — the Notion/Confluence-style always-visible page tree; scrolls independently. Unset renders plain nav only.",
263
+ "label": "Sidebar trait",
264
+ "synonyms": "sidebar tree, nav tree, page tree in sidebar, hierarchy rail",
265
+ "tier": "presentation",
266
+ "type": "trait"
258
267
  },
259
268
  "theme": {
260
269
  "default": "@currentTheme",
@@ -510,6 +519,7 @@
510
519
  "notificationClickEvent": "@config.notificationClickEvent",
511
520
  "notifications": "@config.notifications",
512
521
  "searchEvent": "@config.searchEvent",
522
+ "sidebarContent": "@config.sidebarTrait",
513
523
  "topBarActions": "@config.topBarActions",
514
524
  "type": "@config.layoutPattern",
515
525
  "user": [
@@ -1194,9 +1194,10 @@
1194
1194
  "default": "VIEW",
1195
1195
  "description": "Row-click channel. Retarget when two browse lists coexist in one orbital and their VIEW payloads differ, so each gets its own typed channel.",
1196
1196
  "label": "Which event does clicking a row fire?",
1197
+ "refId": "evt_01KXG04FVGX3Q7N39AZ68VGPTJ",
1197
1198
  "synonyms": "row click event, item click, open event, select event",
1198
1199
  "tier": "presentation",
1199
- "type": "string"
1200
+ "type": "event"
1200
1201
  },
1201
1202
  "masterDetailBodyContent": {
1202
1203
  "default": {
@@ -722,7 +722,7 @@
722
722
  "label": "On Event Click",
723
723
  "synonyms": "open event, event click, select event, chip click",
724
724
  "tier": "presentation",
725
- "type": "string"
725
+ "type": "event"
726
726
  },
727
727
  "searchPlaceholder": {
728
728
  "default": "Search…",
@@ -121,8 +121,9 @@
121
121
  "default": "DATE_RANGE_CHANGED",
122
122
  "description": "Event name emitted when the user picks a new range",
123
123
  "label": "Change event",
124
+ "refId": "evt_01KXG04G14NPESRKE404V2T9QT",
124
125
  "tier": "internal",
125
- "type": "string"
126
+ "type": "event"
126
127
  },
127
128
  "fromLabel": {
128
129
  "default": "From",
@@ -196,7 +196,7 @@
196
196
  {
197
197
  "children": [
198
198
  {
199
- "align": "center",
199
+ "align": "start",
200
200
  "children": [
201
201
  {
202
202
  "action": "BACK",
@@ -213,8 +213,8 @@
213
213
  }
214
214
  ],
215
215
  "className": "w-full border-b border-border pb-3",
216
- "direction": "horizontal",
217
- "gap": "sm",
216
+ "direction": "vertical",
217
+ "gap": "xs",
218
218
  "type": "stack"
219
219
  },
220
220
  "@config.contentTrait"
@@ -114,8 +114,9 @@
114
114
  "default": "FILTER",
115
115
  "description": "Event emitted when the user changes a filter selection",
116
116
  "label": "Filter event",
117
+ "refId": "evt_01KXG04GDZYPE3DNB2YRK2EKFN",
117
118
  "tier": "internal",
118
- "type": "string"
119
+ "type": "event"
119
120
  },
120
121
  "filterBarLook": {
121
122
  "default": "toolbar",
@@ -149,8 +149,9 @@
149
149
  "default": "GEO_SEARCH",
150
150
  "description": "Event emitted when the user runs a geo search",
151
151
  "label": "Search event",
152
+ "refId": "evt_01KXG04GKVQ74QS3XVGYZWB2ZX",
152
153
  "tier": "internal",
153
- "type": "string"
154
+ "type": "event"
154
155
  },
155
156
  "placeholder": {
156
157
  "default": "Search nearby…",
@@ -157,7 +157,7 @@
157
157
  "label": "Drill event",
158
158
  "synonyms": "click-through navigation event. user phrases: 'on click navigate to X' / 'drill into X' / 'when clicked open X' -> X event name",
159
159
  "tier": "internal",
160
- "type": "string"
160
+ "type": "event"
161
161
  },
162
162
  "height": {
163
163
  "default": 280.0,
@@ -245,7 +245,11 @@
245
245
  "label": "Is this for creating or editing?",
246
246
  "synonyms": "form mode, create or edit, new or update, add or modify",
247
247
  "tier": "internal",
248
- "type": "string"
248
+ "type": "string",
249
+ "values": [
250
+ "create",
251
+ "edit"
252
+ ]
249
253
  },
250
254
  "title": {
251
255
  "default": "Details",
@@ -125,8 +125,9 @@
125
125
  "default": "PAGE",
126
126
  "description": "Event emitted when the user picks a new page",
127
127
  "label": "Page-change event",
128
+ "refId": "evt_01KXG04H3AMAJWFXYDPN6NZ6NY",
128
129
  "tier": "internal",
129
- "type": "string"
130
+ "type": "event"
130
131
  },
131
132
  "pageSize": {
132
133
  "default": 10.0,
@@ -403,6 +403,14 @@
403
403
  "tier": "presentation",
404
404
  "type": "[RecordAction]"
405
405
  },
406
+ "allowEdit": {
407
+ "default": true,
408
+ "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.",
409
+ "label": "Allow editing the document?",
410
+ "synonyms": "read only document, viewer mode, can edit, editing allowed",
411
+ "tier": "policy",
412
+ "type": "boolean"
413
+ },
406
414
  "autosaveHint": {
407
415
  "default": "Saves as you type",
408
416
  "description": "Muted caption next to the Done button telling the author their work persists on its own.",
@@ -470,7 +478,12 @@
470
478
  "actions": "@config.actions",
471
479
  "className": "w-full",
472
480
  "coverImage": "@entity.coverUrl",
473
- "editEvent": "EDIT_CONTENT",
481
+ "editEvent": [
482
+ "if",
483
+ "@config.allowEdit",
484
+ "EDIT_CONTENT",
485
+ null
486
+ ],
474
487
  "editLabel": "@config.editLabel",
475
488
  "icon": "@entity.iconName",
476
489
  "id": "@entity.id",
@@ -478,7 +491,12 @@
478
491
  "placeholder": "@config.placeholder",
479
492
  "subtitle": "@entity.description",
480
493
  "title": "@entity.name",
481
- "titleCommitEvent": "TITLE_COMMITTED",
494
+ "titleCommitEvent": [
495
+ "if",
496
+ "@config.allowEdit",
497
+ "TITLE_COMMITTED",
498
+ null
499
+ ],
482
500
  "type": "document-panel",
483
501
  "value": "@entity.content"
484
502
  },
@@ -1561,6 +1579,24 @@
1561
1579
  ],
1562
1580
  "to": "loading"
1563
1581
  },
1582
+ {
1583
+ "effects": [
1584
+ [
1585
+ "render-ui",
1586
+ "main",
1587
+ null
1588
+ ]
1589
+ ],
1590
+ "event": "INIT",
1591
+ "eventId": "evt_01M11G7GKTQS53CSYF3WN812EB",
1592
+ "from": "idle",
1593
+ "guard": [
1594
+ "=",
1595
+ "@config.openOn",
1596
+ "event"
1597
+ ],
1598
+ "to": "idle"
1599
+ },
1564
1600
  {
1565
1601
  "event": "CONTENT_SAVED",
1566
1602
  "eventId": "evt_01M13GHEP2N1Y6TA5BJJC0CZME",
@@ -138,7 +138,7 @@
138
138
  "description": "Event emitted when the user clicks a data point",
139
139
  "label": "Drill event",
140
140
  "tier": "internal",
141
- "type": "string"
141
+ "type": "event"
142
142
  },
143
143
  "height": {
144
144
  "default": 280.0,
@@ -99,8 +99,9 @@
99
99
  "default": "SEARCH",
100
100
  "description": "Event emitted when the user submits a query",
101
101
  "label": "Search event",
102
+ "refId": "evt_01KXG04HHN99VBK1J5MY76J4QJ",
102
103
  "tier": "internal",
103
- "type": "string"
104
+ "type": "event"
104
105
  },
105
106
  "placeholder": {
106
107
  "default": "Search…",