@almadar/std 16.227.0 → 16.228.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 (407) hide show
  1. package/behaviors/behaviors-registry.json +2015 -302
  2. package/behaviors/lolo/agent/organisms/std-agent-rabit.lolo +1 -0
  3. package/behaviors/lolo/infra/atoms/std-audit-capture.lolo +21 -5
  4. package/behaviors/lolo/infra/atoms/std-calendar-sync.lolo +1 -1
  5. package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +1 -1
  6. package/behaviors/lolo/infra/atoms/std-global-search.lolo +7 -5
  7. package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +1 -1
  8. package/behaviors/lolo/infra/atoms/std-notification-center.lolo +1 -1
  9. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +11 -1
  10. package/behaviors/lolo/infra/atoms/std-reminder-scheduler.lolo +1 -1
  11. package/behaviors/lolo/infra/atoms/std-review-cycle.lolo +135 -0
  12. package/behaviors/lolo/ui/avl/atoms/ui-behavior-view.lolo +1 -0
  13. package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +1 -0
  14. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +1 -2
  15. package/behaviors/lolo/ui/core/atoms/std-slide-deck.lolo +113 -0
  16. package/behaviors/lolo/ui/core/atoms/ui-aside.lolo +1 -0
  17. package/behaviors/lolo/ui/core/atoms/ui-atlas-image.lolo +1 -0
  18. package/behaviors/lolo/ui/core/atoms/ui-atlas-panel.lolo +1 -0
  19. package/behaviors/lolo/ui/core/atoms/ui-avatar.lolo +1 -0
  20. package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +1 -0
  21. package/behaviors/lolo/ui/core/atoms/ui-box.lolo +1 -0
  22. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +1 -0
  23. package/behaviors/lolo/ui/core/atoms/ui-card.lolo +1 -0
  24. package/behaviors/lolo/ui/core/atoms/ui-center.lolo +1 -0
  25. package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +1 -0
  26. package/behaviors/lolo/ui/core/atoms/ui-conditional-wrapper.lolo +1 -0
  27. package/behaviors/lolo/ui/core/atoms/ui-confetti-effect.lolo +1 -0
  28. package/behaviors/lolo/ui/core/atoms/ui-day-cell.lolo +1 -0
  29. package/behaviors/lolo/ui/core/atoms/ui-dialog.lolo +1 -0
  30. package/behaviors/lolo/ui/core/atoms/ui-divider.lolo +1 -0
  31. package/behaviors/lolo/ui/core/atoms/ui-filter-pill.lolo +1 -0
  32. package/behaviors/lolo/ui/core/atoms/ui-flip-container.lolo +1 -0
  33. package/behaviors/lolo/ui/core/atoms/ui-game-icon.lolo +1 -0
  34. package/behaviors/lolo/ui/core/atoms/ui-hstack.lolo +1 -0
  35. package/behaviors/lolo/ui/core/atoms/ui-icon.lolo +1 -0
  36. package/behaviors/lolo/ui/core/atoms/ui-infinite-scroll-sentinel.lolo +1 -0
  37. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +1 -0
  38. package/behaviors/lolo/ui/core/atoms/ui-label.lolo +1 -0
  39. package/behaviors/lolo/ui/core/atoms/ui-law-reference-tooltip.lolo +1 -0
  40. package/behaviors/lolo/ui/core/atoms/ui-overlay.lolo +1 -0
  41. package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +1 -0
  42. package/behaviors/lolo/ui/core/atoms/ui-progress-bar.lolo +1 -0
  43. package/behaviors/lolo/ui/core/atoms/ui-radio.lolo +1 -0
  44. package/behaviors/lolo/ui/core/atoms/ui-range-slider.lolo +1 -0
  45. package/behaviors/lolo/ui/core/atoms/ui-section-header.lolo +1 -0
  46. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +1 -0
  47. package/behaviors/lolo/ui/core/atoms/ui-spacer.lolo +1 -0
  48. package/behaviors/lolo/ui/core/atoms/ui-sparkline.lolo +1 -0
  49. package/behaviors/lolo/ui/core/atoms/ui-spinner.lolo +1 -0
  50. package/behaviors/lolo/ui/core/atoms/ui-stack.lolo +1 -0
  51. package/behaviors/lolo/ui/core/atoms/ui-status-dot.lolo +1 -0
  52. package/behaviors/lolo/ui/core/atoms/ui-svg-branch.lolo +1 -0
  53. package/behaviors/lolo/ui/core/atoms/ui-svg-connection.lolo +1 -0
  54. package/behaviors/lolo/ui/core/atoms/ui-svg-flow.lolo +1 -0
  55. package/behaviors/lolo/ui/core/atoms/ui-svg-grid.lolo +1 -0
  56. package/behaviors/lolo/ui/core/atoms/ui-svg-lobe.lolo +1 -0
  57. package/behaviors/lolo/ui/core/atoms/ui-svg-mesh.lolo +1 -0
  58. package/behaviors/lolo/ui/core/atoms/ui-svg-morph.lolo +1 -0
  59. package/behaviors/lolo/ui/core/atoms/ui-svg-node.lolo +1 -0
  60. package/behaviors/lolo/ui/core/atoms/ui-svg-pulse.lolo +1 -0
  61. package/behaviors/lolo/ui/core/atoms/ui-svg-ring.lolo +1 -0
  62. package/behaviors/lolo/ui/core/atoms/ui-svg-shield.lolo +1 -0
  63. package/behaviors/lolo/ui/core/atoms/ui-svg-stack.lolo +1 -0
  64. package/behaviors/lolo/ui/core/atoms/ui-switch.lolo +1 -0
  65. package/behaviors/lolo/ui/core/atoms/ui-text-highlight.lolo +1 -0
  66. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +1 -0
  67. package/behaviors/lolo/ui/core/atoms/ui-theme-toggle.lolo +1 -0
  68. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +1 -0
  69. package/behaviors/lolo/ui/core/atoms/ui-trait-frame.lolo +1 -0
  70. package/behaviors/lolo/ui/core/atoms/ui-trend-indicator.lolo +1 -0
  71. package/behaviors/lolo/ui/core/atoms/ui-typewriter-text.lolo +1 -0
  72. package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +1 -0
  73. package/behaviors/lolo/ui/core/atoms/ui-vstack.lolo +1 -0
  74. package/behaviors/lolo/ui/core/molecules/ui-accordion.lolo +1 -0
  75. package/behaviors/lolo/ui/core/molecules/ui-activation-block.lolo +1 -0
  76. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +1 -0
  77. package/behaviors/lolo/ui/core/molecules/ui-bloom-quiz-block.lolo +1 -0
  78. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +1 -0
  79. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +1 -0
  80. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +1 -0
  81. package/behaviors/lolo/ui/core/molecules/ui-carousel.lolo +1 -0
  82. package/behaviors/lolo/ui/core/molecules/ui-chart-legend.lolo +1 -0
  83. package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +1 -0
  84. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +1 -0
  85. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +1 -0
  86. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +1 -0
  87. package/behaviors/lolo/ui/core/molecules/ui-connection-block.lolo +1 -0
  88. package/behaviors/lolo/ui/core/molecules/ui-container.lolo +1 -0
  89. package/behaviors/lolo/ui/core/molecules/ui-content-renderer.lolo +1 -0
  90. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +1 -0
  91. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +1 -0
  92. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +1 -0
  93. package/behaviors/lolo/ui/core/molecules/ui-date-range-selector.lolo +1 -0
  94. package/behaviors/lolo/ui/core/molecules/ui-doc-breadcrumb.lolo +1 -0
  95. package/behaviors/lolo/ui/core/molecules/ui-doc-pagination.lolo +1 -0
  96. package/behaviors/lolo/ui/core/molecules/ui-doc-search.lolo +1 -0
  97. package/behaviors/lolo/ui/core/molecules/ui-doc-sidebar.lolo +1 -0
  98. package/behaviors/lolo/ui/core/molecules/ui-doc-toc.lolo +1 -0
  99. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +1 -0
  100. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +1 -0
  101. package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +1 -0
  102. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +1 -0
  103. package/behaviors/lolo/ui/core/molecules/ui-edge-decoration.lolo +1 -0
  104. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +1 -0
  105. package/behaviors/lolo/ui/core/molecules/ui-empty-state.lolo +1 -0
  106. package/behaviors/lolo/ui/core/molecules/ui-error-boundary.lolo +1 -0
  107. package/behaviors/lolo/ui/core/molecules/ui-error-state.lolo +1 -0
  108. package/behaviors/lolo/ui/core/molecules/ui-feature-grid.lolo +1 -0
  109. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +1 -0
  110. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +1 -0
  111. package/behaviors/lolo/ui/core/molecules/ui-flex.lolo +1 -0
  112. package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +1 -0
  113. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +1 -0
  114. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +1 -0
  115. package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +1 -0
  116. package/behaviors/lolo/ui/core/molecules/ui-form-field.lolo +1 -0
  117. package/behaviors/lolo/ui/core/molecules/ui-form-layout.lolo +1 -0
  118. package/behaviors/lolo/ui/core/molecules/ui-form-section-header.lolo +1 -0
  119. package/behaviors/lolo/ui/core/molecules/ui-fx-overlay.lolo +1 -0
  120. package/behaviors/lolo/ui/core/molecules/ui-gantt.lolo +1 -0
  121. package/behaviors/lolo/ui/core/molecules/ui-gradient-divider.lolo +1 -0
  122. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +1 -0
  123. package/behaviors/lolo/ui/core/molecules/ui-graph-view.lolo +1 -0
  124. package/behaviors/lolo/ui/core/molecules/ui-grid.lolo +1 -0
  125. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +1 -0
  126. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +1 -0
  127. package/behaviors/lolo/ui/core/molecules/ui-import-progress.lolo +1 -0
  128. package/behaviors/lolo/ui/core/molecules/ui-import-source-picker.lolo +1 -0
  129. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +1 -0
  130. package/behaviors/lolo/ui/core/molecules/ui-jazari-state-machine.lolo +1 -0
  131. package/behaviors/lolo/ui/core/molecules/ui-lightbox.lolo +1 -0
  132. package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +1 -0
  133. package/behaviors/lolo/ui/core/molecules/ui-line-chart.lolo +1 -0
  134. package/behaviors/lolo/ui/core/molecules/ui-loading-state.lolo +1 -0
  135. package/behaviors/lolo/ui/core/molecules/ui-map-view.lolo +1 -0
  136. package/behaviors/lolo/ui/core/molecules/ui-markdown-content.lolo +1 -0
  137. package/behaviors/lolo/ui/core/molecules/ui-matrix-question.lolo +1 -0
  138. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +1 -0
  139. package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +1 -0
  140. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +1 -0
  141. package/behaviors/lolo/ui/core/molecules/ui-navigation.lolo +1 -0
  142. package/behaviors/lolo/ui/core/molecules/ui-notification.lolo +1 -0
  143. package/behaviors/lolo/ui/core/molecules/ui-number-stepper.lolo +1 -0
  144. package/behaviors/lolo/ui/core/molecules/ui-option-constraint-group.lolo +1 -0
  145. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +1 -0
  146. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +1 -0
  147. package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +1 -0
  148. package/behaviors/lolo/ui/core/molecules/ui-pagination.lolo +1 -0
  149. package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +1 -0
  150. package/behaviors/lolo/ui/core/molecules/ui-positioned-canvas.lolo +1 -0
  151. package/behaviors/lolo/ui/core/molecules/ui-progress-dots.lolo +1 -0
  152. package/behaviors/lolo/ui/core/molecules/ui-pull-to-refresh.lolo +1 -0
  153. package/behaviors/lolo/ui/core/molecules/ui-qr-scanner.lolo +1 -0
  154. package/behaviors/lolo/ui/core/molecules/ui-quiz-block.lolo +1 -0
  155. package/behaviors/lolo/ui/core/molecules/ui-reflection-block.lolo +1 -0
  156. package/behaviors/lolo/ui/core/molecules/ui-relation-select.lolo +1 -0
  157. package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +1 -0
  158. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +1 -0
  159. package/behaviors/lolo/ui/core/molecules/ui-rich-text-editor.lolo +1 -0
  160. package/behaviors/lolo/ui/core/molecules/ui-scaled-diagram.lolo +1 -0
  161. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +1 -0
  162. package/behaviors/lolo/ui/core/molecules/ui-section.lolo +1 -0
  163. package/behaviors/lolo/ui/core/molecules/ui-side-panel.lolo +1 -0
  164. package/behaviors/lolo/ui/core/molecules/ui-sidebar.lolo +1 -0
  165. package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +1 -0
  166. package/behaviors/lolo/ui/core/molecules/ui-simple-grid.lolo +1 -0
  167. package/behaviors/lolo/ui/core/molecules/ui-skeleton.lolo +1 -0
  168. package/behaviors/lolo/ui/core/molecules/ui-social-proof.lolo +1 -0
  169. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +1 -0
  170. package/behaviors/lolo/ui/core/molecules/ui-split.lolo +1 -0
  171. package/behaviors/lolo/ui/core/molecules/ui-star-rating.lolo +1 -0
  172. package/behaviors/lolo/ui/core/molecules/ui-stat-display.lolo +1 -0
  173. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +1 -0
  174. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +1 -0
  175. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +1 -0
  176. package/behaviors/lolo/ui/core/molecules/ui-tag-input.lolo +1 -0
  177. package/behaviors/lolo/ui/core/molecules/ui-tooltip.lolo +1 -0
  178. package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +1 -0
  179. package/behaviors/lolo/ui/core/molecules/ui-version-diff.lolo +1 -0
  180. package/behaviors/lolo/ui/core/molecules/ui-violation-alert.lolo +1 -0
  181. package/behaviors/lolo/ui/core/molecules/ui-vote-stack.lolo +1 -0
  182. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +1 -0
  183. package/behaviors/lolo/ui/core/molecules/ui-wizard-navigation.lolo +1 -0
  184. package/behaviors/lolo/ui/core/molecules/ui-wizard-progress.lolo +1 -0
  185. package/behaviors/lolo/ui/core/organisms/ui-chat-bar.lolo +1 -0
  186. package/behaviors/lolo/ui/core/organisms/ui-code-runner-panel.lolo +1 -0
  187. package/behaviors/lolo/ui/core/organisms/ui-dashboard-grid.lolo +1 -0
  188. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +1 -0
  189. package/behaviors/lolo/ui/core/organisms/ui-dock-layout.lolo +1 -0
  190. package/behaviors/lolo/ui/core/organisms/ui-drawer-slot.lolo +1 -0
  191. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +1 -0
  192. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +1 -0
  193. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +1 -0
  194. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +1 -0
  195. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +1 -0
  196. package/behaviors/lolo/ui/core/organisms/ui-master-detail-layout.lolo +1 -0
  197. package/behaviors/lolo/ui/core/organisms/ui-master-detail.lolo +1 -0
  198. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +1 -0
  199. package/behaviors/lolo/ui/core/organisms/ui-modal-slot.lolo +1 -0
  200. package/behaviors/lolo/ui/core/organisms/ui-runtime-debugger.lolo +1 -0
  201. package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +1 -0
  202. package/behaviors/lolo/ui/core/organisms/ui-split-pane.lolo +1 -0
  203. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +1 -0
  204. package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +1 -0
  205. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +1 -0
  206. package/behaviors/lolo/ui/core/organisms/ui-tabbed-container.lolo +1 -0
  207. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +1 -0
  208. package/behaviors/lolo/ui/core/organisms/ui-toast-slot.lolo +1 -0
  209. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +1 -0
  210. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +1 -0
  211. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +1 -0
  212. package/behaviors/lolo/ui/game/atoms/std-choice-gate.lolo +3 -2
  213. package/behaviors/lolo/ui/game/atoms/ui-action-palette.lolo +1 -0
  214. package/behaviors/lolo/ui/game/atoms/ui-action-tile.lolo +1 -0
  215. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +1 -0
  216. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +1 -0
  217. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -0
  218. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +1 -0
  219. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +1 -0
  220. package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +1 -0
  221. package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +1 -0
  222. package/behaviors/lolo/ui/game/atoms/ui-draw-group.lolo +1 -0
  223. package/behaviors/lolo/ui/game/atoms/ui-draw-mesh.lolo +1 -0
  224. package/behaviors/lolo/ui/game/atoms/ui-draw-shape-layer.lolo +1 -0
  225. package/behaviors/lolo/ui/game/atoms/ui-draw-shape.lolo +1 -0
  226. package/behaviors/lolo/ui/game/atoms/ui-draw-skinned-mesh.lolo +1 -0
  227. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite-layer.lolo +1 -0
  228. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +1 -0
  229. package/behaviors/lolo/ui/game/atoms/ui-draw-text-layer.lolo +1 -0
  230. package/behaviors/lolo/ui/game/atoms/ui-draw-text.lolo +1 -0
  231. package/behaviors/lolo/ui/game/atoms/ui-game-audio-cue.lolo +1 -0
  232. package/behaviors/lolo/ui/game/atoms/ui-game-audio-toggle.lolo +1 -0
  233. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +1 -0
  234. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -0
  235. package/behaviors/lolo/ui/game/atoms/ui-health-bar.lolo +1 -0
  236. package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -0
  237. package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +1 -0
  238. package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +1 -0
  239. package/behaviors/lolo/ui/game/atoms/ui-state-graph.lolo +1 -0
  240. package/behaviors/lolo/ui/game/atoms/ui-state-json-view.lolo +1 -0
  241. package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +1 -0
  242. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +30 -0
  243. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +7 -0
  244. package/behaviors/lolo/ui/game/organisms/std-dungeon-board-2d.lolo +39 -0
  245. package/behaviors/lolo/ui/game/organisms/std-market-board-3d.lolo +29 -0
  246. package/behaviors/lolo/ui/game/organisms/std-objective-board-3d.lolo +30 -0
  247. package/behaviors/lolo/ui/game/organisms/std-platformer-board-2d.lolo +39 -0
  248. package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +27 -0
  249. package/behaviors/lolo/ui/game/organisms/std-survival-board-3d.lolo +40 -3
  250. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +27 -0
  251. package/behaviors/lolo/ui/game/organisms/std-tactics-board-3d.lolo +22 -0
  252. package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +21 -0
  253. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +1 -0
  254. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +1 -0
  255. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +1 -0
  256. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +1 -0
  257. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +1 -0
  258. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +1 -0
  259. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +1 -0
  260. package/behaviors/lolo/ui/marketing/atoms/std-marketing-cta.lolo +4 -4
  261. package/behaviors/lolo/ui/marketing/atoms/std-marketing-hero.lolo +4 -4
  262. package/behaviors/lolo/ui/marketing/atoms/ui-animated-counter.lolo +1 -0
  263. package/behaviors/lolo/ui/marketing/atoms/ui-animated-graphic.lolo +1 -0
  264. package/behaviors/lolo/ui/marketing/atoms/ui-animated-reveal.lolo +1 -0
  265. package/behaviors/lolo/ui/marketing/atoms/ui-article-section.lolo +1 -0
  266. package/behaviors/lolo/ui/marketing/atoms/ui-case-study-card.lolo +1 -0
  267. package/behaviors/lolo/ui/marketing/atoms/ui-community-links.lolo +1 -0
  268. package/behaviors/lolo/ui/marketing/atoms/ui-content-section.lolo +1 -0
  269. package/behaviors/lolo/ui/marketing/atoms/ui-cta-banner.lolo +1 -0
  270. package/behaviors/lolo/ui/marketing/atoms/ui-feature-card.lolo +1 -0
  271. package/behaviors/lolo/ui/marketing/atoms/ui-geometric-pattern.lolo +1 -0
  272. package/behaviors/lolo/ui/marketing/atoms/ui-hero-section.lolo +1 -0
  273. package/behaviors/lolo/ui/marketing/atoms/ui-install-box.lolo +1 -0
  274. package/behaviors/lolo/ui/marketing/atoms/ui-marketing-footer.lolo +1 -0
  275. package/behaviors/lolo/ui/marketing/atoms/ui-marketing-stat-card.lolo +1 -0
  276. package/behaviors/lolo/ui/marketing/atoms/ui-pattern-tile.lolo +1 -0
  277. package/behaviors/lolo/ui/marketing/atoms/ui-pricing-card.lolo +1 -0
  278. package/behaviors/lolo/ui/marketing/atoms/ui-pricing-grid.lolo +1 -0
  279. package/behaviors/lolo/ui/marketing/atoms/ui-pull-quote.lolo +1 -0
  280. package/behaviors/lolo/ui/marketing/atoms/ui-service-catalog.lolo +1 -0
  281. package/behaviors/lolo/ui/marketing/atoms/ui-showcase-card.lolo +1 -0
  282. package/behaviors/lolo/ui/marketing/atoms/ui-split-section.lolo +1 -0
  283. package/behaviors/lolo/ui/marketing/atoms/ui-stats-grid.lolo +1 -0
  284. package/behaviors/lolo/ui/marketing/atoms/ui-step-flow.lolo +1 -0
  285. package/behaviors/lolo/ui/marketing/atoms/ui-tag-cloud.lolo +1 -0
  286. package/behaviors/lolo/ui/marketing/atoms/ui-team-card.lolo +1 -0
  287. package/behaviors/lolo/ui/marketing/organisms/ui-book-chapter-view.lolo +1 -0
  288. package/behaviors/lolo/ui/marketing/organisms/ui-book-cover-page.lolo +1 -0
  289. package/behaviors/lolo/ui/marketing/organisms/ui-book-nav-bar.lolo +1 -0
  290. package/behaviors/lolo/ui/marketing/organisms/ui-book-table-of-contents.lolo +1 -0
  291. package/behaviors/lolo/ui/marketing/organisms/ui-book-viewer.lolo +1 -0
  292. package/behaviors/lolo/ui/marketing/organisms/ui-case-study-organism.lolo +1 -0
  293. package/behaviors/lolo/ui/marketing/organisms/ui-feature-grid-organism.lolo +1 -0
  294. package/behaviors/lolo/ui/marketing/organisms/ui-hero-organism.lolo +1 -0
  295. package/behaviors/lolo/ui/marketing/organisms/ui-pricing-organism.lolo +1 -0
  296. package/behaviors/lolo/ui/marketing/organisms/ui-showcase-organism.lolo +1 -0
  297. package/behaviors/lolo/ui/marketing/organisms/ui-stats-organism.lolo +1 -0
  298. package/behaviors/lolo/ui/marketing/organisms/ui-step-flow-organism.lolo +1 -0
  299. package/behaviors/lolo/ui/marketing/organisms/ui-team-organism.lolo +1 -0
  300. package/behaviors/lolo/ui/marketing/templates/ui-about-page-template.lolo +1 -0
  301. package/behaviors/lolo/ui/marketing/templates/ui-auth-layout.lolo +1 -0
  302. package/behaviors/lolo/ui/marketing/templates/ui-feature-detail-page-template.lolo +1 -0
  303. package/behaviors/lolo/ui/marketing/templates/ui-landing-page-template.lolo +1 -0
  304. package/behaviors/lolo/ui/marketing/templates/ui-pricing-page-template.lolo +1 -0
  305. package/behaviors/lolo-behavior-contracts.json +1 -1
  306. package/behaviors/registry/agent/organisms/std-agent-rabit.orb +13 -0
  307. package/behaviors/registry/factory-signatures.json +1 -1
  308. package/behaviors/registry/infra/atoms/std-audit-capture.orb +99 -7
  309. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +2 -1
  310. package/behaviors/registry/infra/atoms/std-data-erasure.orb +2 -1
  311. package/behaviors/registry/infra/atoms/std-global-search.orb +68 -3
  312. package/behaviors/registry/infra/atoms/std-lifecycle.orb +2 -1
  313. package/behaviors/registry/infra/atoms/std-notification-center.orb +2 -1
  314. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +127 -26
  315. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +2 -1
  316. package/behaviors/registry/infra/atoms/std-review-cycle.orb +1009 -0
  317. package/behaviors/registry/ui/core/atoms/std-graphs.orb +14 -19
  318. package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +546 -0
  319. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +14 -0
  320. package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +17 -2
  321. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +80 -0
  322. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +10 -0
  323. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +106 -0
  324. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +72 -0
  325. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +80 -0
  326. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +116 -0
  327. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +40 -0
  328. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +131 -8
  329. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +56 -0
  330. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +46 -0
  331. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +38 -0
  332. package/behaviors/registry/ui/marketing/atoms/std-marketing-cta.orb +50 -4
  333. package/behaviors/registry/ui/marketing/atoms/std-marketing-hero.orb +50 -4
  334. package/canonical-operators.json +253 -41
  335. package/dist/behaviors/exports-reader.js +3950 -1899
  336. package/dist/behaviors/functions/index.d.ts +356 -5
  337. package/dist/behaviors/functions/index.js +3942 -1900
  338. package/dist/behaviors/index.d.ts +1 -1
  339. package/dist/behaviors/index.js +3951 -1900
  340. package/dist/behaviors/query.d.ts +6 -0
  341. package/dist/behaviors/query.js +3950 -1899
  342. package/dist/behaviors-embeddings.hash.json +3 -3
  343. package/dist/behaviors-embeddings.json +23 -11
  344. package/dist/behaviors-registry.json +2015 -302
  345. package/dist/index.d.ts +4 -4
  346. package/dist/index.js +4125 -1900
  347. package/dist/knob-embeddings.hash.json +3 -3
  348. package/dist/knob-embeddings.json +19060 -1
  349. package/dist/modules/anim.d.ts +1 -1
  350. package/dist/modules/array.d.ts +1 -1
  351. package/dist/modules/async.d.ts +1 -1
  352. package/dist/modules/async.js +9 -0
  353. package/dist/modules/behavior.d.ts +1 -1
  354. package/dist/modules/behavior.js +6 -0
  355. package/dist/modules/browser.d.ts +1 -1
  356. package/dist/modules/browser.js +5 -0
  357. package/dist/modules/composition.d.ts +1 -1
  358. package/dist/modules/contract.d.ts +1 -1
  359. package/dist/modules/core.d.ts +1 -1
  360. package/dist/modules/core.js +87 -0
  361. package/dist/modules/data.d.ts +1 -1
  362. package/dist/modules/ease.d.ts +1 -1
  363. package/dist/modules/format.d.ts +1 -1
  364. package/dist/modules/geo.d.ts +1 -1
  365. package/dist/modules/graph.d.ts +1 -1
  366. package/dist/modules/grid.d.ts +1 -1
  367. package/dist/modules/index.d.ts +1 -1
  368. package/dist/modules/index.js +168 -0
  369. package/dist/modules/integration.d.ts +1 -1
  370. package/dist/modules/integration.js +3 -0
  371. package/dist/modules/json.d.ts +1 -1
  372. package/dist/modules/llm.d.ts +1 -1
  373. package/dist/modules/llm.js +5 -0
  374. package/dist/modules/math.d.ts +1 -1
  375. package/dist/modules/math.js +22 -0
  376. package/dist/modules/memory.d.ts +1 -1
  377. package/dist/modules/memory.js +1 -0
  378. package/dist/modules/nn.d.ts +1 -1
  379. package/dist/modules/nn.js +1 -0
  380. package/dist/modules/noise.d.ts +1 -1
  381. package/dist/modules/object.d.ts +1 -1
  382. package/dist/modules/os.d.ts +1 -1
  383. package/dist/modules/os.js +8 -0
  384. package/dist/modules/path.d.ts +1 -1
  385. package/dist/modules/prob.d.ts +1 -1
  386. package/dist/modules/prob.js +2 -0
  387. package/dist/modules/session.d.ts +1 -1
  388. package/dist/modules/session.js +4 -0
  389. package/dist/modules/str.d.ts +1 -1
  390. package/dist/modules/tensor.d.ts +1 -1
  391. package/dist/modules/time.d.ts +1 -1
  392. package/dist/modules/trace.d.ts +1 -1
  393. package/dist/modules/trace.js +2 -0
  394. package/dist/modules/train.d.ts +1 -1
  395. package/dist/modules/train.js +8 -0
  396. package/dist/modules/validate.d.ts +1 -1
  397. package/dist/modules/vector.d.ts +1 -1
  398. package/dist/modules/workspace.d.ts +1 -1
  399. package/dist/modules/workspace.js +5 -0
  400. package/dist/registry/factory-signatures.json +1 -1
  401. package/dist/registry.d.ts +6 -2
  402. package/dist/registry.js +175 -1
  403. package/dist/{types-DpbKBJu8.d.ts → types-DwAW4Nni.d.ts} +5 -1
  404. package/i18n/ar.json +2 -0
  405. package/i18n/en.json +2 -0
  406. package/i18n/sl.json +2 -0
  407. package/package.json +3 -2
@@ -101,6 +101,7 @@ orbital CoordinatorOrbital {
101
101
  }
102
102
 
103
103
  listens {
104
+ CoordinatorMonitor.ALL_DONE -> ALL_DONE
104
105
  START { prompt: string!, totalOrbitals: number! }
105
106
  ALL_DONE
106
107
  RESET
@@ -1,9 +1,9 @@
1
- app std-audit-capture "1.2.0"
2
- "std-audit-capture — event-interceptor audit log / audit trail. Use when a user voices that a record's changes must be tracked, logged, or auditable (audit trail, track changes, change history, who edited what, mutation log, record changes, log every edit, edit history, modification log, who did what when, accountability log). Listens for the generic `EntityMutated` sentinel (rename via traitOverrides.events to the real mutation event, e.g. ContactSaved) and persists an AuditEntry row capturing actor, action, entity type/id, before/after snapshots, and timestamp. `captureEventTypes` filters on @payload.data.kind (empty = capture all). Compose with `std-lifecycle` to apply retention. Composable via `extraTraits` to interpose audit logging behind any mutating trait."
1
+ app std-audit-capture "1.3.0"
2
+ "std-audit-capture — event-interceptor audit log / audit trail. Use when a user voices that a record's changes must be tracked, logged, or auditable (audit trail, track changes, change history, who edited what, mutation log, record changes, log every edit, edit history, modification log, who did what when, accountability log). Listens for the generic `EntityMutated` sentinel (rename via traitOverrides.events to the real mutation event, e.g. ContactSaved) and persists an AuditEntry row capturing actor, action, entity type/id, before/after snapshots, and timestamp. `captureEventTypes` filters on @payload.data.kind, or on the delivered event's own name when the payload carries no kind (empty = capture all). Every entry also records where the change came from — the delivering event, the behavior and module that emitted it, and the scheduled job when a tick caused it — with no change to the upstream emitter. Compose with `std-lifecycle` to apply retention. Composable via `extraTraits` to interpose audit logging behind any mutating trait."
3
3
  orbital AuditCaptureOrbital {
4
4
  type EntityMutated = Event { data : @entity @config.captureEntity } "Rename via traitOverrides.events to the upstream mutation event (e.g. ContactSaved, ContactDeleted)."
5
5
 
6
- type AuditRecorded = Event { actor : string, action : string, entityType : string, entityId : string, recordedAt : number } "Re-emitted after the audit row persists; rename to wire downstream listeners (e.g. AuditDashboardAppended)."
6
+ type AuditRecorded = Event { actor : string, action : string, entityType : string, entityId : string, recordedAt : number, sourceEvent : string, sourceTrait : string, sourceOrbital : string, sourceTick : string } "Re-emitted after the audit row persists; rename to wire downstream listeners (e.g. AuditDashboardAppended)."
7
7
 
8
8
  entity AuditEntry [persistent: audit_entries] {
9
9
  id : string!
@@ -14,6 +14,10 @@ orbital AuditCaptureOrbital {
14
14
  before : Map string scalar @description "The state of the entity prior to the modification." @synonyms "previous, original, old value" = {}
15
15
  after : Map string scalar @description "The state of the entity after a modification." @synonyms "new, updated, post, subsequent" = {}
16
16
  recordedAt : number @description "Timestamp indicating when the audit event was recorded." @synonyms "timestamp, date, time" = 0
17
+ sourceEvent : string @description "The event that delivered the change to the audit trail, e.g. ContactSaved." @synonyms "triggering event, cause, origin event" = ""
18
+ sourceTrait : string @description "The behavior that emitted the change." @synonyms "emitter, origin, raised by" = ""
19
+ sourceOrbital : string @description "The module the change came from." @synonyms "origin module, source module" = ""
20
+ sourceTick : string @description "The scheduled job that caused the change; blank when a person or an event did." @synonyms "scheduled job, background job, timer" = ""
17
21
  }
18
22
 
19
23
  trait AuditCaptureListener -> @rebindable AuditEntry [lifecycle, instance, audit, compliance] {
@@ -21,7 +25,7 @@ orbital AuditCaptureOrbital {
21
25
 
22
26
  state idle {
23
27
  EntityMutated -> idle when @config.enabled
24
- (when (or ["=", (array/len @config.captureEventTypes), 0] (array/includes @config.captureEventTypes (object/get ?data kind ""))) (do (set @entity.actor @user.id) (set @entity.action (object/get ?data kind EntityMutated)) (set @entity.entityType @config.captureEntity) (set @entity.entityId (object/get ?data id "")) (set @entity.before (if @config.captureBeforeAfter (object/omit (object/get ?data before {}) @config.excludeFields) {})) (set @entity.after (if @config.captureBeforeAfter (object/omit (object/get ?data after {}) @config.excludeFields) {})) (set @entity.recordedAt 0) (persist create AuditEntry {
28
+ (when (or ["=", (array/len @config.captureEventTypes), 0] (array/includes @config.captureEventTypes (object/get ?data kind @event.event))) (do (set @entity.actor @user.id) (set @entity.action (object/get ?data kind @event.event)) (set @entity.entityType @config.captureEntity) (set @entity.entityId (object/get ?data id "")) (set @entity.before (if @config.captureBeforeAfter (object/omit (object/get ?data before {}) @config.excludeFields) {})) (set @entity.after (if @config.captureBeforeAfter (object/omit (object/get ?data after {}) @config.excludeFields) {})) (set @entity.recordedAt 0) (persist create AuditEntry {
25
29
  action: @entity.action
26
30
  actor: @user.id
27
31
  after: @entity.after
@@ -29,12 +33,20 @@ orbital AuditCaptureOrbital {
29
33
  entityId: @entity.entityId
30
34
  entityType: @config.captureEntity
31
35
  recordedAt: 0
36
+ sourceEvent: @event.event
37
+ sourceTrait: (str/default @event.source.trait "")
38
+ sourceOrbital: (str/default @event.source.orbital "")
39
+ sourceTick: (str/default @event.source.tick "")
32
40
  }) (emit AuditRecorded {
33
41
  action: @entity.action
34
42
  actor: @user.id
35
43
  entityId: @entity.entityId
36
44
  entityType: @config.captureEntity
37
45
  recordedAt: 0
46
+ sourceEvent: @event.event
47
+ sourceTrait: (str/default @event.source.trait "")
48
+ sourceOrbital: (str/default @event.source.orbital "")
49
+ sourceTick: (str/default @event.source.tick "")
38
50
  })))
39
51
  }
40
52
 
@@ -45,6 +57,10 @@ orbital AuditCaptureOrbital {
45
57
  entityType : string
46
58
  entityId : string
47
59
  recordedAt : number
60
+ sourceEvent : string
61
+ sourceTrait : string
62
+ sourceOrbital : string
63
+ sourceTick : string
48
64
  }
49
65
  }
50
66
 
@@ -66,7 +82,7 @@ orbital AuditCaptureOrbital {
66
82
  @tier "internal"
67
83
  captureEventTypes : [string] = []
68
84
  @label "Event-kind filter"
69
- @description "When set, only @payload.data.kind values in this list are audited. Empty list = capture every event. Requires the upstream event to include a `kind` field on its payload."
85
+ @description "When set, only these kinds are audited: the payload's `kind` field, or the delivering event's name when there is no kind. Empty list = capture every event."
70
86
  @tier "internal"
71
87
  excludeFields : [string] = []
72
88
  @label "Skip fields"
@@ -227,7 +227,7 @@ orbital CalendarSyncOrbital {
227
227
  }
228
228
 
229
229
  ticks {
230
- syncCycle every "*/15 * * * *"
230
+ syncCycle every "*/15 * * * *" [background]
231
231
  (fetch @config.targetEntity {
232
232
  emit: { failure: CAL_SYNC_FAILED, success: PUSH_ROWS_LOADED }
233
233
  filter: ["=", (object/get @entity externalEventId), ""]
@@ -378,7 +378,7 @@ orbital DataErasureOrbital {
378
378
  }
379
379
 
380
380
  ticks {
381
- executionScan every "0 * * * *"
381
+ executionScan every "0 * * * *" [background]
382
382
  (fetch ErasureRequest {
383
383
  emit: { failure: ExecScanFailed, success: ExecScanLoaded }
384
384
  filter: (and ["=", (object/get @entity status), grace] ["<", (object/get @entity executesAt), @now])
@@ -1,6 +1,6 @@
1
1
  app std-global-search "1.0.0"
2
- "std-global-search — cross-module federated search. Use when a user voices that one search box should query several modules at once (global search, search everything, unified search, cross-module search, federated search, search across records, omnisearch, one search box, aggregated results, grouped results). One SEARCH event fans out to every module key listed in the `modules` config (comma-separated, deterministic — no registry magic): the trait walks the parsed key list with an internal FAN_OUT_STEP sentinel and emits one scoped MODULE_SEARCH_REQUESTED { moduleKey, queryText, typeFilter, scopeJson } -> external per key, so modules respond in parallel rather than in sequence. Modules answer with SEARCH_RESULTS { moduleKey, resultsJson }; each answer appends a SearchResultGroup to the entity, so the merged view stays grouped by module. Client/person/date/type filters ride `scopeJson` — the atom never interprets them. Every query persists as a SearchQuery row (recent/saved searches) when `saveHistory` is on. The input is the mapped `search-input` type rendered inline with event renamed to SEARCH (the std-geosearch idiom); its native {searchTerm}/{value} payloads are bridged via str/default, so programmatic SEARCH { queryText, typeFilter, scopeJson } emitters and the UI box drive the same arm."
3
- type SearchResultGroup = { moduleKey : string, resultsJson : string, receivedAt : number }
2
+ "std-global-search — cross-module federated search. Use when a user voices that one search box should query several modules at once (global search, search everything, unified search, cross-module search, federated search, search across records, omnisearch, one search box, aggregated results, grouped results). One SEARCH event fans out to every module key listed in the `modules` config (comma-separated, deterministic — no registry magic): the trait walks the parsed key list with an internal FAN_OUT_STEP sentinel and emits one scoped MODULE_SEARCH_REQUESTED { moduleKey, queryText, typeFilter, scopeJson } -> external per key, so modules respond in parallel rather than in sequence. Modules answer with SEARCH_RESULTS { moduleKey, resultsJson }; each answer appends a SearchResultGroup to the entity, so the merged view stays grouped by module. A module that answers twice is counted once, a keyless answer is filed under the answering module's name, and every group records which behavior answered it. Client/person/date/type filters ride `scopeJson` — the atom never interprets them. Every query persists as a SearchQuery row (recent/saved searches) when `saveHistory` is on. The input is the mapped `search-input` type rendered inline with event renamed to SEARCH (the std-geosearch idiom); its native {searchTerm}/{value} payloads are bridged via str/default, so programmatic SEARCH { queryText, typeFilter, scopeJson } emitters and the UI box drive the same arm."
3
+ type SearchResultGroup = { moduleKey : string, resultsJson : string, receivedAt : number, answeredBy : string }
4
4
  orbital GlobalSearchOrbital {
5
5
  uses Typography from "std/behaviors/ui-typography"
6
6
  uses Spinner from "std/behaviors/ui-spinner"
@@ -133,14 +133,15 @@ orbital GlobalSearchOrbital {
133
133
  (set @entity.fanOutDone true))
134
134
  (when [">", (array/len @entity.pendingModules), 0]
135
135
  (emit FAN_OUT_STEP { remaining: (array/len @entity.pendingModules) }))
136
- SEARCH_RESULTS -> searching
136
+ SEARCH_RESULTS -> searching when (not (array/some @entity.results (fn g (= @g.moduleKey (str/default ?moduleKey (str/default @event.source.orbital ""))))))
137
137
  (set @entity.respondedCount ["+", @entity.respondedCount, 1])
138
138
  (set @entity.results (array/append @entity.results {
139
- moduleKey: ?moduleKey
139
+ moduleKey: (str/default ?moduleKey (str/default @event.source.orbital ""))
140
140
  receivedAt: @now
141
141
  resultsJson: ?resultsJson
142
+ answeredBy: (str/default @event.source.trait "")
142
143
  }))
143
- (set @entity.resultsSummary (str/concat @entity.resultsSummary (str/concat ?moduleKey (str/concat ": " (str/concat ?resultsJson "\n")))))
144
+ (set @entity.resultsSummary (str/concat @entity.resultsSummary (str/concat (str/default ?moduleKey (str/default @event.source.orbital "")) (str/concat ": " (str/concat ?resultsJson "\n")))))
144
145
  (render-ui main {
145
146
  children: [{
146
147
  event: SEARCH
@@ -250,6 +251,7 @@ orbital GlobalSearchOrbital {
250
251
  FAN_OUT_STEP {
251
252
  remaining : number
252
253
  }
254
+ *.SEARCH_RESULTS -> SEARCH_RESULTS
253
255
  }
254
256
 
255
257
  config {
@@ -86,7 +86,7 @@ orbital LifecycleOrbital {
86
86
  }
87
87
 
88
88
  ticks {
89
- scanCycle every "0 * * * *"
89
+ scanCycle every "0 * * * *" [background]
90
90
  (fetch @config.targetEntity {
91
91
  emit: { failure: ScanFailed, success: ScanRecordsLoaded }
92
92
  filter: (and ["=", (object/get @entity status), @config.fromStatus] ["<", (object/get @entity @config.dateField), ["-", @now, ["*", @config.ageDays, 86400000]]])
@@ -279,7 +279,7 @@ orbital NotificationCenterOrbital {
279
279
  }
280
280
 
281
281
  ticks {
282
- digestCycle every "0 * * * *"
282
+ digestCycle every "0 * * * *" [background]
283
283
  (fetch NotificationRecord {
284
284
  emit: { failure: DIGEST_FAILED, success: DIGEST_ROWS_LOADED }
285
285
  filter: (and ["=", (object/get @entity dispatched), false] (or ["=", (object/get @entity error), "digest-deferred"] ["=", (object/get @entity error), "quiet-hours"]) ["<", (object/get @entity recordedAt), ["-", @now, ["*", @config.minAgeHours, 3600000]]])
@@ -49,7 +49,7 @@ orbital NotifyOnEventOrbital {
49
49
  initial: idle
50
50
 
51
51
  state idle {
52
- EventOccurred -> idle when (if ["=", @config.guardOp, "eq"] (or ["=", @config.triggerStatus, ""] ["=", ?status, @config.triggerStatus]) (if ["=", @config.guardOp, "gt"] [">", (object/get ?data @config.guardField), @config.guardValue] (if ["=", @config.guardOp, "lt"] ["<", (object/get ?data @config.guardField), @config.guardValue] (if ["=", @config.guardOp, "gte"] [">=", (object/get ?data @config.guardField), @config.guardValue] ["<=", (object/get ?data @config.guardField), @config.guardValue]))))
52
+ EventOccurred -> idle when (and (or ["=", @config.coalesce, "none"] (if ["=", @config.coalesce, "perDispatch"] (not (array/includes (array/map @prevEvents (fn e (object/get @e "event"))) @event.event)) (not (array/some @prevEvents (fn e (and ["=", (object/get @e "event"), @event.event] ["=", (object/get (object/get @e "payload" {}) @config.coalesceKey), (object/get @event.payload @config.coalesceKey)])))))) (if ["=", @config.guardOp, "eq"] (or ["=", @config.triggerStatus, ""] ["=", ?status, @config.triggerStatus]) (if ["=", @config.guardOp, "gt"] [">", (object/get ?data @config.guardField), @config.guardValue] (if ["=", @config.guardOp, "lt"] ["<", (object/get ?data @config.guardField), @config.guardValue] (if ["=", @config.guardOp, "gte"] [">=", (object/get ?data @config.guardField), @config.guardValue] ["<=", (object/get ?data @config.guardField), @config.guardValue])))))
53
53
  (set @entity.recipient (if ["=", (array/len @config.recipients), 0] (if (not ["=", @config.fallbackRecipient, ""]) @config.fallbackRecipient @user.id) (array/first @config.recipients)))
54
54
  (set @entity.channel @config.notifyChannel)
55
55
  (set @entity.message @config.template)
@@ -352,6 +352,16 @@ orbital NotifyOnEventOrbital {
352
352
  }
353
353
 
354
354
  config {
355
+ coalesce : "none" | "perDispatch" | "perKey" = none
356
+ @label "Collapse repeat notifications from one action?"
357
+ @description "When one action raises the subscribed event several times (a bulk import, a batch save), send one notification for the whole action (`perDispatch`) or one per distinct value of `coalesceKey` (`perKey`) instead of one per event. `none` (default) notifies on every event. Scoped to a single action: the next action notifies again."
358
+ @synonyms "dedupe, deduplicate, collapse, batch notifications, one notification, bulk, coalesce, summarize, avoid spam, notification storm"
359
+ @tier "policy"
360
+ coalesceKey : string = "id"
361
+ @label "Which field makes two events distinct?"
362
+ @description "With `coalesce: perKey`, the upstream event's payload field compared to tell repeats apart (e.g. `id` = one notification per record). Ignored otherwise."
363
+ @synonyms "dedupe key, distinct by, per record, unique field"
364
+ @tier "policy"
355
365
  triggerStatus : string = ""
356
366
  @label "Trigger status"
357
367
  @description "When `guardOp` is `eq` and this is set, dispatch only when the upstream event's `status` field equals this value (e.g. fire only when a record becomes 'approved'). Empty = fire on every subscribed event. Ignored when `guardOp` is a numeric comparison."
@@ -96,7 +96,7 @@ orbital ReminderSchedulerOrbital {
96
96
  }
97
97
 
98
98
  ticks {
99
- scanCycle every "*/15 * * * *"
99
+ scanCycle every "*/15 * * * *" [background]
100
100
  (fetch @config.targetEntity {
101
101
  emit: { failure: ScanFailed, success: ScanRecordsLoaded }
102
102
  filter: (and ["=", (object/get @entity remindedAt), 0] (or (and ["=", @config.direction, "future"] [">", (time/parse (object/get @entity @config.dateField)), @now] ["<", ["-", (time/parse (object/get @entity @config.dateField)), @now], ["*", @config.offsetHours, 3600000]]) (and ["=", @config.direction, "past"] [">", ["-", @now, (time/parse (object/get @entity @config.dateField))], ["*", @config.offsetHours, 3600000]])))
@@ -0,0 +1,135 @@
1
+ app std-review-cycle "0.1.0"
2
+ "std-review-cycle — revise-and-resubmit review workflow (document review, pull-request review, design review, editorial review, submission review, send back for changes, request changes, resubmit, review rounds, four-eyes approval). A record moves draft → in review → changes requested → in review → … → approved. One SUBMIT event serves both the first submission and every resubmission; the atom counts review rounds and marks resubmissions on the emitted ReviewRequested. Every move writes a ReviewEvent history row stamped with the states it left and entered. `requireSeparateApproval` enforces four-eyes review: an approval raised in the same action that submitted the record (an auto-responding rule or bot) is rejected. Headless — the host renders the badge and buttons and routes its actions to SUBMIT / REQUEST_CHANGES / APPROVE."
3
+ orbital ReviewCycleOrbital {
4
+ type ReviewSubmitted = Event { id : string, note : string } "Rename via traitOverrides.events to the host's submit action. Serves both the first submission and every resubmission."
5
+
6
+ type ReviewChangesRequested = Event { id : string, note : string } "Rename to the host's request-changes action. Sends the record back to its author."
7
+
8
+ type ReviewApproved = Event { id : string, note : string } "Rename to the host's approve action."
9
+
10
+ type ReviewRequested = Event { itemId : string, round : number, resubmission : boolean } "Emitted when a record enters review; `resubmission` is true when it came back from changes requested."
11
+
12
+ type ReviewLogged = Event ReviewEvent "Internal: a history row landed."
13
+
14
+ type ReviewLogFailed = Event { error : string, code : string } "Internal: writing a history row failed."
15
+
16
+ type ReviewDecided = Event { itemId : string, decision : string, round : number } "Emitted when a reviewer decides; `decision` is the state the record moved to (changes_requested or approved)."
17
+
18
+ entity ReviewItem [persistent: review_items] {
19
+ id : string!
20
+ round : number @description "Review round the record is on; 1 for the first review, incremented on each resubmission." @synonyms "iteration, revision round, review count" = 0
21
+ lastNote : string @description "Note left with the most recent move." @synonyms "comment, reason, feedback" = ""
22
+ lastLogId : string @description "Id of the most recent ReviewEvent history row." @synonyms "history id, log entry" = ""
23
+ }
24
+
25
+ entity ReviewEvent [persistent: review_events] {
26
+ id : string!
27
+ itemId : string @description "The record this history entry belongs to." @synonyms "record id, document id, item" = ""
28
+ fromState : string @description "The review state the record left." @synonyms "previous state, was" = ""
29
+ toState : string @description "The review state the record entered." @synonyms "new state, became" = ""
30
+ round : number @description "Review round at the time of the move." @synonyms "iteration" = 0
31
+ actor : string @description "Who made the move." @synonyms "user, reviewer, author" = ""
32
+ note : string @description "Note left with the move." @synonyms "comment, feedback, reason" = ""
33
+ at : number @description "When the move happened." @synonyms "timestamp, date, time" = 0
34
+ }
35
+
36
+ trait ReviewCycle -> @rebindable ReviewItem [lifecycle, instance] {
37
+ initial: draft
38
+
39
+ state draft {
40
+ INIT -> draft
41
+ ReviewSubmitted -> in_review when @config.enabled
42
+ (set @entity.round 1)
43
+ (set @entity.lastNote (str/default ?note ""))
44
+ (emit ReviewRequested { itemId: (str/default ?id ""), round: 1, resubmission: false })
45
+ (persist create ReviewEvent { itemId: (str/default ?id ""), fromState: @fromState, toState: @toState, round: 1, actor: (str/default @user.id ""), note: (str/default ?note ""), at: @now } { emit: { success: ReviewLogged, failure: ReviewLogFailed } })
46
+ }
47
+
48
+ state in_review {
49
+ INIT -> in_review
50
+ ReviewLogged -> in_review
51
+ (set @entity.lastLogId (str/default ?id ""))
52
+ ReviewLogFailed -> in_review
53
+ (notify error (str/concat "Couldn't record the review history — " ?error))
54
+ ReviewChangesRequested -> changes_requested
55
+ (set @entity.lastNote (str/default ?note ""))
56
+ (emit ReviewDecided { itemId: (str/default ?id ""), decision: @toState, round: @entity.round })
57
+ (persist create ReviewEvent { itemId: (str/default ?id ""), fromState: @fromState, toState: @toState, round: @entity.round, actor: (str/default @user.id ""), note: (str/default ?note ""), at: @now } { emit: { success: ReviewLogged, failure: ReviewLogFailed } })
58
+ ReviewApproved -> approved when (or (not @config.requireSeparateApproval) (not (array/some @prevStates (fn s (or (= @s "draft") (= @s "changes_requested"))))))
59
+ (set @entity.lastNote (str/default ?note ""))
60
+ (emit ReviewDecided { itemId: (str/default ?id ""), decision: @toState, round: @entity.round })
61
+ (persist create ReviewEvent { itemId: (str/default ?id ""), fromState: @fromState, toState: @toState, round: @entity.round, actor: (str/default @user.id ""), note: (str/default ?note ""), at: @now } { emit: { success: ReviewLogged, failure: ReviewLogFailed } })
62
+ }
63
+
64
+ state changes_requested {
65
+ INIT -> changes_requested
66
+ ReviewLogged -> changes_requested
67
+ (set @entity.lastLogId (str/default ?id ""))
68
+ ReviewLogFailed -> changes_requested
69
+ (notify error (str/concat "Couldn't record the review history — " ?error))
70
+ ReviewSubmitted -> in_review
71
+ (set @entity.round (+ @entity.round 1))
72
+ (set @entity.lastNote (str/default ?note ""))
73
+ (emit ReviewRequested { itemId: (str/default ?id ""), round: @entity.round, resubmission: true })
74
+ (persist create ReviewEvent { itemId: (str/default ?id ""), fromState: @fromState, toState: @toState, round: @entity.round, actor: (str/default @user.id ""), note: (str/default ?note ""), at: @now } { emit: { success: ReviewLogged, failure: ReviewLogFailed } })
75
+ }
76
+
77
+ state approved {
78
+ INIT -> approved
79
+ ReviewLogged -> approved
80
+ (set @entity.lastLogId (str/default ?id ""))
81
+ ReviewLogFailed -> approved
82
+ (notify error (str/concat "Couldn't record the review history — " ?error))
83
+ }
84
+
85
+ emits {
86
+ ReviewLogged
87
+ ReviewLogFailed
88
+ ReviewRequested -> external {
89
+ itemId : string
90
+ round : number
91
+ resubmission : boolean
92
+ }
93
+ ReviewDecided -> external {
94
+ itemId : string
95
+ decision : string
96
+ round : number
97
+ }
98
+ }
99
+
100
+ listens {
101
+ ReviewLogged
102
+ ReviewLogFailed {
103
+ error : string
104
+ code : string
105
+ }
106
+ ReviewSubmitted {
107
+ id : string
108
+ note : string
109
+ }
110
+ ReviewChangesRequested {
111
+ id : string
112
+ note : string
113
+ }
114
+ ReviewApproved {
115
+ id : string
116
+ note : string
117
+ }
118
+ }
119
+
120
+ config {
121
+ enabled : boolean = true
122
+ @label "Run the review workflow?"
123
+ @description "Accept submissions into review. Off = submissions are ignored."
124
+ @synonyms "enable, turn on, review, require review, review workflow"
125
+ @tier "policy"
126
+ requireSeparateApproval : boolean = true
127
+ @label "Require approval to be a separate action?"
128
+ @description "Four-eyes review: reject an approval raised by the same action that submitted the record, such as an automatic rule or bot that approves instantly. Approvals made as their own action are unaffected."
129
+ @synonyms "four eyes, two person rule, no self approval, separate reviewer, independent approval, no auto approve"
130
+ @tier "policy"
131
+ }
132
+ }
133
+
134
+ page "/review-cycle" as ReviewCyclePage -> ReviewCycle
135
+ }
@@ -1,5 +1,6 @@
1
1
  app ui-behavior-view "1.0.0"
2
2
  "BehaviorView — UI factory (1:1 with the @almadar/ui behavior-view pattern)."
3
+ ;; @pattern "behavior-view"
3
4
  orbital BehaviorViewOrbital {
4
5
  type BehaviorViewData = {
5
6
  orbitalName : string!
@@ -1,6 +1,7 @@
1
1
  app ui-module-card "1.0.0"
2
2
  "ModuleCard — a card summarizing one course module or lesson with progress and entry point. — UI factory (1:1 with the @almadar/ui module-card pattern)."
3
3
  ;; @capabilities "course module card, lesson card, curriculum unit card, learning-path step card"
4
+ ;; @pattern "module-card"
4
5
  orbital ModuleCardOrbital {
5
6
  type ModuleCardData = {
6
7
  orbitalName : string!
@@ -8,7 +8,7 @@ orbital GraphItemOrbital {
8
8
 
9
9
  entity GraphItem [runtime] {
10
10
  id : string!
11
- chartData : [ChartPoint] @intrinsic @description "The data points used to render the chart." @synonyms "data, values, points" = []
11
+ chartData : [ChartPoint] @intrinsic @description "The data points used to render the chart." @synonyms "data, values, points" = [{ label: Active, value: 6 }, { label: Pending, value: 3 }, { label: Inactive, value: 1 }]
12
12
  }
13
13
 
14
14
  trait GraphItemGraph -> @rebindable GraphItem [interaction, instance] {
@@ -16,7 +16,6 @@ orbital GraphItemOrbital {
16
16
 
17
17
  state idle {
18
18
  INIT -> idle
19
- (set @entity.chartData [{ label: Active, value: 6 }, { label: Pending, value: 3 }, { label: Inactive, value: 1 }])
20
19
  (render-ui main {
21
20
  chartType: @config.chartType
22
21
  data: @entity.chartData
@@ -0,0 +1,113 @@
1
+ app std-slide-deck "1.0.0"
2
+ "std-slide-deck — generic presentation atom. An ordered list of slide nodes (`config.slides`, any render tree or @trait) shown one at a time, with a previous/next arrow on either side, a dot strip and a k / n counter underneath, and keyboard stepping through the host's KEY router (`config.nextKeys` / `config.prevKeys`, captured per `config.keymap`). The cursor clamps at either end unless `loop` is on. Each visit mounts the slide fresh, so its own entry animations replay. Carries no content or visual style: a realization supplies the slides and restyles via `bodyContent`. The default body picks the slide inside a mapped-children lambda, which expands static slides only; a deck whose slides hold stateful traits (forms, live lists) overrides `bodyContent` with one `presence` per slide gated on `@entity.slideIndex`. Every move emits SLIDE_CHANGED for speaker notes, timers or analytics."
3
+ ;; @capabilities "slide deck, presentation, pitch deck, keynote-style slideshow, previous and next slide arrows, arrow-key slide navigation, jump to slide from dots, slide counter"
4
+ ;; @synonyms "slideshow, deck, presentation, slides, pitch"
5
+ orbital SlideDeckOrbital {
6
+ entity SlideDeck [runtime] {
7
+ id : string!
8
+ slideIndex : number @description "Zero-based index of the slide currently shown." @synonyms "current slide, cursor, position" = 0
9
+ }
10
+
11
+ trait SlideDeckPresenter -> @rebindable SlideDeck [interaction, instance] {
12
+ initial: presenting
13
+
14
+ state presenting {
15
+ INIT -> presenting
16
+ (set @entity.slideIndex @config.startIndex)
17
+ (render-ui main @config.bodyContent)
18
+ GO_TO -> presenting
19
+ (set @entity.slideIndex ?index)
20
+ (emit SLIDE_CHANGED { index: @entity.slideIndex })
21
+ (render-ui main @config.bodyContent)
22
+ }
23
+
24
+ emits {
25
+ SLIDE_CHANGED -> external {
26
+ index : number!
27
+ }
28
+ @description "The deck moved to a new slide (zero-based index)."
29
+ @synonyms "slide shown, advanced, went back"
30
+ @tier "domain"
31
+ }
32
+
33
+ listens {
34
+ GO_TO {
35
+ index : number!
36
+ }
37
+ @description "Show a zero-based slide index. The arrows and dots send the already-bounded target; a remote or table of contents can send any index."
38
+ @synonyms "jump, seek, next slide, previous slide, select slide"
39
+ @tier "domain"
40
+ }
41
+
42
+ config {
43
+ slides : [trait] = []
44
+ @label "Slides"
45
+ @description "Ordered slide nodes; each entry is a render tree or a @trait reference and is shown one at a time."
46
+ @tier "domain"
47
+ startIndex : number = 0
48
+ @label "Start slide"
49
+ @description "Zero-based slide shown on first render; clamped to the deck."
50
+ @tier "presentation"
51
+ loop : boolean = false
52
+ @label "Loop"
53
+ @description "Wrap from the last slide to the first (and back) instead of stopping at either end."
54
+ @tier "presentation"
55
+ showArrows : boolean = true
56
+ @label "Show arrows"
57
+ @description "Previous/next buttons on the left and right of the slide."
58
+ @tier "presentation"
59
+ showProgress : boolean = true
60
+ @label "Show progress"
61
+ @description "Dot strip and k / n counter under the slide; dots jump to their slide."
62
+ @tier "presentation"
63
+ stageMinHeight : string = "70vh"
64
+ @label "Stage height"
65
+ @description "Minimum height of the slide stage (any CSS length, e.g. 70vh or 640px); the slide is centred vertically inside it so short and tall slides share one frame."
66
+ @tier "presentation"
67
+ prevIcon : icon = chevron-left
68
+ @label "Previous icon"
69
+ @tier "presentation"
70
+ nextIcon : icon = chevron-right
71
+ @label "Next icon"
72
+ @tier "presentation"
73
+ bodyContent : render-ui = {
74
+ type: stack
75
+ direction: vertical
76
+ gap: md
77
+ className: "w-full"
78
+ children: [{
79
+ type: stack
80
+ direction: horizontal
81
+ gap: md
82
+ align: center
83
+ children: [
84
+ (array/map [(array/len @config.slides)] (fn n (if @config.showArrows { type: button, variant: ghost, size: lg, icon: @config.prevIcon, action: GO_TO, actionPayload: { index: (if @config.loop (math/wrap (- @entity.slideIndex 1) 0 @n) (math/max 0 (- @entity.slideIndex 1))) }, disabled: (and (== @config.loop false) (<= @entity.slideIndex 0)) } null))),
85
+ { type: center, className: "flex-1 min-w-0", minHeight: @config.stageMinHeight, children: (array/map [@entity.slideIndex] (fn i { type: box, className: "w-full", children: [(array/nth @config.slides @i)] })) },
86
+ (array/map [(array/len @config.slides)] (fn n (if @config.showArrows { type: button, variant: ghost, size: lg, icon: @config.nextIcon, action: GO_TO, actionPayload: { index: (if @config.loop (math/wrap (+ @entity.slideIndex 1) 0 @n) (math/min (- @n 1) (+ @entity.slideIndex 1))) }, disabled: (and (== @config.loop false) (>= @entity.slideIndex (- @n 1))) } null)))
87
+ ]
88
+ }, (if @config.showProgress {
89
+ type: stack
90
+ direction: horizontal
91
+ gap: md
92
+ align: center
93
+ justify: center
94
+ children: (array/map [(array/len @config.slides)] (fn n {
95
+ type: stack
96
+ direction: horizontal
97
+ gap: md
98
+ align: center
99
+ children: [
100
+ { type: progress-dots, count: @n, currentIndex: @entity.slideIndex, onDotClick: GO_TO, size: sm },
101
+ { type: typography, variant: caption, color: muted, content: (str/concat "" (+ @entity.slideIndex 1) " / " @n) }
102
+ ]
103
+ }))
104
+ } null)]
105
+ }
106
+ @label "Body content tree"
107
+ @description "Render-ui tree for the deck. Default: slide centred between previous/next arrows, dot strip and counter below. A realization overrides this to restyle (full-bleed, bottom bar, no chrome) while keeping the same cursor, keys and emits."
108
+ @tier "internal"
109
+ }
110
+ }
111
+
112
+ page "/slide-deck" as SlideDeckPage -> SlideDeckPresenter
113
+ }
@@ -1,6 +1,7 @@
1
1
  app ui-aside "1.0.0"
2
2
  "Aside — a secondary side panel that hosts navigation links or supplementary content alongside a main content area. — UI factory (1:1 with the @almadar/ui aside pattern)."
3
3
  ;; @capabilities "settings navigation sidebar, preferences menu panel, account settings nav, secondary panel, side navigation rail"
4
+ ;; @pattern "aside"
4
5
  orbital AsideOrbital {
5
6
  entity AsideItem [runtime] {
6
7
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-atlas-image "1.0.0"
2
2
  "AtlasImage — UI factory (1:1 with the @almadar/ui atlas-image pattern)."
3
+ ;; @pattern "atlas-image"
3
4
  orbital AtlasImageOrbital {
4
5
  type AtlasImageAsset = {
5
6
  url : string
@@ -1,5 +1,6 @@
1
1
  app ui-atlas-panel "1.0.0"
2
2
  "AtlasPanel — UI factory (1:1 with the @almadar/ui atlas-panel pattern)."
3
+ ;; @pattern "atlas-panel"
3
4
  orbital AtlasPanelOrbital {
4
5
  type AtlasPanelAsset = {
5
6
  url : string
@@ -1,5 +1,6 @@
1
1
  app ui-avatar "1.0.0"
2
2
  "Avatar — UI factory (1:1 with the @almadar/ui avatar pattern)."
3
+ ;; @pattern "avatar"
3
4
  orbital AvatarOrbital {
4
5
  entity AvatarItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-badge "1.0.0"
2
2
  "Badge — UI factory (1:1 with the @almadar/ui badge pattern)."
3
+ ;; @pattern "badge"
3
4
  orbital BadgeOrbital {
4
5
  type BadgeIconAsset = {
5
6
  url : asset!
@@ -1,5 +1,6 @@
1
1
  app ui-box "1.0.0"
2
2
  "Box — UI factory (1:1 with the @almadar/ui box pattern)."
3
+ ;; @pattern "box"
3
4
  orbital BoxOrbital {
4
5
  entity BoxItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-button "1.0.0"
2
2
  "Button — UI factory (1:1 with the @almadar/ui button pattern)."
3
+ ;; @pattern "button"
3
4
  orbital ButtonOrbital {
4
5
  type ButtonIconAsset = {
5
6
  url : asset!
@@ -1,5 +1,6 @@
1
1
  app ui-card "1.0.0"
2
2
  "Card — UI factory (1:1 with the @almadar/ui card pattern)."
3
+ ;; @pattern "card"
3
4
  orbital CardOrbital {
4
5
  entity CardItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-center "1.0.0"
2
2
  "Center — UI factory (1:1 with the @almadar/ui center pattern)."
3
+ ;; @pattern "center"
3
4
  orbital CenterOrbital {
4
5
  entity CenterItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-checkbox "1.0.0"
2
2
  "Checkbox — UI factory (1:1 with the @almadar/ui checkbox pattern)."
3
+ ;; @pattern "checkbox"
3
4
  orbital CheckboxOrbital {
4
5
  entity CheckboxItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-conditional-wrapper "1.0.0"
2
2
  "ConditionalWrapper — UI factory (1:1 with the @almadar/ui conditional-wrapper pattern)."
3
+ ;; @pattern "conditional-wrapper"
3
4
  orbital ConditionalWrapperOrbital {
4
5
  type ConditionalWrapperContext = {
5
6
  formValues : Map string ControlValue!
@@ -1,5 +1,6 @@
1
1
  app ui-confetti-effect "1.0.0"
2
2
  "ConfettiEffect — UI factory (1:1 with the @almadar/ui confetti-effect pattern)."
3
+ ;; @pattern "confetti-effect"
3
4
  orbital ConfettiEffectOrbital {
4
5
  entity ConfettiEffectItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-day-cell "1.0.0"
2
2
  "DayCell — UI factory (1:1 with the @almadar/ui day-cell pattern)."
3
+ ;; @pattern "day-cell"
3
4
  orbital DayCellOrbital {
4
5
  entity DayCellItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-dialog "1.0.0"
2
2
  "Dialog — UI factory (1:1 with the @almadar/ui dialog pattern)."
3
+ ;; @pattern "dialog"
3
4
  orbital DialogOrbital {
4
5
  entity DialogItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-divider "1.0.0"
2
2
  "Divider — UI factory (1:1 with the @almadar/ui divider pattern)."
3
+ ;; @pattern "divider"
3
4
  orbital DividerOrbital {
4
5
  entity DividerItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-filter-pill "1.0.0"
2
2
  "FilterPill — UI factory (1:1 with the @almadar/ui filter-pill pattern)."
3
+ ;; @pattern "filter-pill"
3
4
  orbital FilterPillOrbital {
4
5
  entity FilterPillItem [runtime] {
5
6
  id : string!
@@ -1,5 +1,6 @@
1
1
  app ui-flip-container "1.0.0"
2
2
  "FlipContainer — UI factory (1:1 with the @almadar/ui flip-container pattern)."
3
+ ;; @pattern "flip-container"
3
4
  orbital FlipContainerOrbital {
4
5
  entity FlipContainerItem [runtime] {
5
6
  id : string!