@almadar/std 16.253.0 → 16.255.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 (456) hide show
  1. package/behaviors/lolo/agent/atoms/std-agent-pool.lolo +355 -0
  2. package/behaviors/lolo/agent/evals/eval-agent-builder.lolo +159 -0
  3. package/behaviors/lolo/agent/organisms/std-agent-builder.lolo +321 -26
  4. package/behaviors/lolo-behavior-contracts.json +1 -1
  5. package/behaviors/registry/agent/atoms/std-agent-context.orb +1 -1
  6. package/behaviors/registry/agent/atoms/std-agent-memory.orb +1 -1
  7. package/behaviors/registry/agent/atoms/std-agent-planner.orb +1 -1
  8. package/behaviors/registry/agent/atoms/std-agent-pool.orb +1 -0
  9. package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1 -1
  10. package/behaviors/registry/agent/atoms/std-agent-session.orb +1 -1
  11. package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +1 -1
  12. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +1 -1
  13. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +1 -1
  14. package/behaviors/registry/agent/atoms/std-agent-trace.orb +1 -1
  15. package/behaviors/registry/agent/evals/eval-agent-builder.orb +1 -0
  16. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1 -1
  17. package/behaviors/registry/agent/organisms/std-agent-builder.orb +1 -1
  18. package/behaviors/registry/infra/atoms/std-analytics.orb +1 -1
  19. package/behaviors/registry/infra/atoms/std-approval-gate.orb +1 -1
  20. package/behaviors/registry/infra/atoms/std-audit-capture.orb +1 -1
  21. package/behaviors/registry/infra/atoms/std-cache-aside.orb +1 -1
  22. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1 -1
  23. package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +1 -1
  24. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -1
  25. package/behaviors/registry/infra/atoms/std-cross-reference.orb +1 -1
  26. package/behaviors/registry/infra/atoms/std-data-erasure.orb +1 -1
  27. package/behaviors/registry/infra/atoms/std-data-import.orb +1 -1
  28. package/behaviors/registry/infra/atoms/std-global-search.orb +1 -1
  29. package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +1 -1
  30. package/behaviors/registry/infra/atoms/std-lifecycle.orb +1 -1
  31. package/behaviors/registry/infra/atoms/std-migration-job.orb +1 -1
  32. package/behaviors/registry/infra/atoms/std-mod-queue.orb +1 -1
  33. package/behaviors/registry/infra/atoms/std-notification-center.orb +1 -1
  34. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +1 -1
  35. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1 -1
  36. package/behaviors/registry/infra/atoms/std-page-search.orb +1 -1
  37. package/behaviors/registry/infra/atoms/std-page-watch.orb +1 -1
  38. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +1 -1
  39. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +1 -1
  40. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +1 -1
  41. package/behaviors/registry/infra/atoms/std-review-cycle.orb +1 -1
  42. package/behaviors/registry/infra/atoms/std-row-access-control.orb +1 -1
  43. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +1 -1
  44. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +1 -1
  45. package/behaviors/registry/ml/atoms/std-data-collector.orb +1 -1
  46. package/behaviors/registry/ml/atoms/std-graph-builder.orb +1 -1
  47. package/behaviors/registry/ml/atoms/std-ml-classify.orb +1 -1
  48. package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +1 -1
  49. package/behaviors/registry/ml/atoms/std-ml-infer.orb +1 -1
  50. package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +1 -1
  51. package/behaviors/registry/ml/atoms/std-ml-lookup.orb +1 -1
  52. package/behaviors/registry/ml/atoms/std-ml-posterior.orb +1 -1
  53. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +1 -1
  54. package/behaviors/registry/ml/atoms/std-tokenizer.orb +1 -1
  55. package/behaviors/registry/ml/atoms/std-weight-validator.orb +1 -1
  56. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +1 -1
  57. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +1 -1
  58. package/behaviors/registry/ui/avl/atoms/std-avl-cosmic-zoom.orb +1 -1
  59. package/behaviors/registry/ui/avl/atoms/ui-avl-glyph.orb +1 -1
  60. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +1 -1
  61. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-detail.orb +1 -1
  62. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +1 -1
  63. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +1 -1
  64. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +1 -1
  65. package/behaviors/registry/ui/avl/organisms/ui-flow-canvas.orb +1 -1
  66. package/behaviors/registry/ui/avl/organisms/ui-layers-panel.orb +1 -1
  67. package/behaviors/registry/ui/avl/organisms/ui-orb-inspector.orb +1 -1
  68. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +1 -1
  69. package/behaviors/registry/ui/core/atoms/std-app-search.orb +1 -1
  70. package/behaviors/registry/ui/core/atoms/std-behavior-catalog.orb +1 -1
  71. package/behaviors/registry/ui/core/atoms/std-behavior-tour.orb +1 -1
  72. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +1 -1
  73. package/behaviors/registry/ui/core/atoms/std-board.orb +1 -1
  74. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +1 -1
  75. package/behaviors/registry/ui/core/atoms/std-browse.orb +1 -1
  76. package/behaviors/registry/ui/core/atoms/std-calendar.orb +1 -1
  77. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +1 -1
  78. package/behaviors/registry/ui/core/atoms/std-confirmation.orb +1 -1
  79. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +1 -1
  80. package/behaviors/registry/ui/core/atoms/std-date-range.orb +1 -1
  81. package/behaviors/registry/ui/core/atoms/std-doc-page.orb +1 -1
  82. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +1 -1
  83. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +1 -1
  84. package/behaviors/registry/ui/core/atoms/std-event-log.orb +1 -1
  85. package/behaviors/registry/ui/core/atoms/std-export.orb +1 -1
  86. package/behaviors/registry/ui/core/atoms/std-file-store.orb +1 -1
  87. package/behaviors/registry/ui/core/atoms/std-filter.orb +1 -1
  88. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -1
  89. package/behaviors/registry/ui/core/atoms/std-gallery.orb +1 -1
  90. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +1 -1
  91. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +1 -1
  92. package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
  93. package/behaviors/registry/ui/core/atoms/std-hero.orb +1 -1
  94. package/behaviors/registry/ui/core/atoms/std-home.orb +1 -1
  95. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +1 -1
  96. package/behaviors/registry/ui/core/atoms/std-import.orb +1 -1
  97. package/behaviors/registry/ui/core/atoms/std-language-picker.orb +1 -1
  98. package/behaviors/registry/ui/core/atoms/std-media-section.orb +1 -1
  99. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +1 -1
  100. package/behaviors/registry/ui/core/atoms/std-modal.orb +1 -1
  101. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +1 -1
  102. package/behaviors/registry/ui/core/atoms/std-notification-panel.orb +1 -1
  103. package/behaviors/registry/ui/core/atoms/std-panel-launcher.orb +1 -1
  104. package/behaviors/registry/ui/core/atoms/std-pricing.orb +1 -1
  105. package/behaviors/registry/ui/core/atoms/std-proof.orb +1 -1
  106. package/behaviors/registry/ui/core/atoms/std-prose.orb +1 -1
  107. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +1 -1
  108. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +1 -1
  109. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +1 -1
  110. package/behaviors/registry/ui/core/atoms/std-related.orb +1 -1
  111. package/behaviors/registry/ui/core/atoms/std-role-gate.orb +1 -1
  112. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +1 -1
  113. package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
  114. package/behaviors/registry/ui/core/atoms/std-scoped-list.orb +1 -1
  115. package/behaviors/registry/ui/core/atoms/std-search.orb +1 -1
  116. package/behaviors/registry/ui/core/atoms/std-selection.orb +1 -1
  117. package/behaviors/registry/ui/core/atoms/std-site-footer.orb +1 -1
  118. package/behaviors/registry/ui/core/atoms/std-site-header.orb +1 -1
  119. package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +1 -1
  120. package/behaviors/registry/ui/core/atoms/std-stat-band.orb +1 -1
  121. package/behaviors/registry/ui/core/atoms/std-stats.orb +1 -1
  122. package/behaviors/registry/ui/core/atoms/std-step-flow.orb +1 -1
  123. package/behaviors/registry/ui/core/atoms/std-steps.orb +1 -1
  124. package/behaviors/registry/ui/core/atoms/std-tabs.orb +1 -1
  125. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +1 -1
  126. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +1 -1
  127. package/behaviors/registry/ui/core/atoms/std-thread.orb +1 -1
  128. package/behaviors/registry/ui/core/atoms/std-tree.orb +1 -1
  129. package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -1
  130. package/behaviors/registry/ui/core/atoms/std-wizard.orb +1 -1
  131. package/behaviors/registry/ui/core/atoms/std-workspace-layout.orb +1 -1
  132. package/behaviors/registry/ui/core/atoms/ui-animated-graphic.orb +1 -1
  133. package/behaviors/registry/ui/core/atoms/ui-animated-reveal.orb +1 -1
  134. package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
  135. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +1 -1
  136. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +1 -1
  137. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +1 -1
  138. package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
  139. package/behaviors/registry/ui/core/atoms/ui-box.orb +1 -1
  140. package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
  141. package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
  142. package/behaviors/registry/ui/core/atoms/ui-center.orb +1 -1
  143. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
  144. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +1 -1
  145. package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +1 -1
  146. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
  147. package/behaviors/registry/ui/core/atoms/ui-dialog.orb +1 -1
  148. package/behaviors/registry/ui/core/atoms/ui-divider.orb +1 -1
  149. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +1 -1
  150. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
  151. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +1 -1
  152. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
  153. package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -1
  154. package/behaviors/registry/ui/core/atoms/ui-image.orb +1 -1
  155. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
  156. package/behaviors/registry/ui/core/atoms/ui-input.orb +1 -1
  157. package/behaviors/registry/ui/core/atoms/ui-label.orb +1 -1
  158. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +1 -1
  159. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
  160. package/behaviors/registry/ui/core/atoms/ui-pattern-tile.orb +1 -1
  161. package/behaviors/registry/ui/core/atoms/ui-presence.orb +1 -1
  162. package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +1 -1
  163. package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
  164. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +1 -1
  165. package/behaviors/registry/ui/core/atoms/ui-section-header.orb +1 -1
  166. package/behaviors/registry/ui/core/atoms/ui-select.orb +1 -1
  167. package/behaviors/registry/ui/core/atoms/ui-spacer.orb +1 -1
  168. package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +1 -1
  169. package/behaviors/registry/ui/core/atoms/ui-spinner.orb +1 -1
  170. package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
  171. package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +1 -1
  172. package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +1 -1
  173. package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +1 -1
  174. package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +1 -1
  175. package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +1 -1
  176. package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +1 -1
  177. package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +1 -1
  178. package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +1 -1
  179. package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +1 -1
  180. package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +1 -1
  181. package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +1 -1
  182. package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +1 -1
  183. package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +1 -1
  184. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
  185. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +1 -1
  186. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +1 -1
  187. package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +1 -1
  188. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
  189. package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +1 -1
  190. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
  191. package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
  192. package/behaviors/registry/ui/core/atoms/ui-video-embed.orb +1 -1
  193. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
  194. package/behaviors/registry/ui/core/molecules/std-stat-rows.orb +1 -1
  195. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +1 -1
  196. package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +1 -1
  197. package/behaviors/registry/ui/core/molecules/ui-activity-rail.orb +1 -1
  198. package/behaviors/registry/ui/core/molecules/ui-agent-activity-feed.orb +1 -1
  199. package/behaviors/registry/ui/core/molecules/ui-agent-activity-row.orb +1 -1
  200. package/behaviors/registry/ui/core/molecules/ui-agent-chat-feed.orb +1 -1
  201. package/behaviors/registry/ui/core/molecules/ui-alert.orb +1 -1
  202. package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
  203. package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +1 -1
  204. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +1 -1
  205. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +1 -1
  206. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +1 -1
  207. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
  208. package/behaviors/registry/ui/core/molecules/ui-change-list.orb +1 -1
  209. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +1 -1
  210. package/behaviors/registry/ui/core/molecules/ui-chart.orb +1 -1
  211. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
  212. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -1
  213. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +1 -1
  214. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +1 -1
  215. package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +1 -1
  216. package/behaviors/registry/ui/core/molecules/ui-container.orb +1 -1
  217. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +1 -1
  218. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +1 -1
  219. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +1 -1
  220. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -1
  221. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
  222. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +1 -1
  223. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +1 -1
  224. package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +1 -1
  225. package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +1 -1
  226. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +1 -1
  227. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +1 -1
  228. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +1 -1
  229. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +1 -1
  230. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -1
  231. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -1
  232. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
  233. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +1 -1
  234. package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +1 -1
  235. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +1 -1
  236. package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +1 -1
  237. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +1 -1
  238. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +1 -1
  239. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
  240. package/behaviors/registry/ui/core/molecules/ui-flex.orb +1 -1
  241. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  242. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +1 -1
  243. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -1
  244. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +1 -1
  245. package/behaviors/registry/ui/core/molecules/ui-form-field.orb +1 -1
  246. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +1 -1
  247. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
  248. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +1 -1
  249. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +1 -1
  250. package/behaviors/registry/ui/core/molecules/ui-geometric-pattern.orb +1 -1
  251. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -1
  252. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +1 -1
  253. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +1 -1
  254. package/behaviors/registry/ui/core/molecules/ui-grid.orb +1 -1
  255. package/behaviors/registry/ui/core/molecules/ui-header.orb +1 -1
  256. package/behaviors/registry/ui/core/molecules/ui-icon-button.orb +1 -1
  257. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -1
  258. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +1 -1
  259. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
  260. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +1 -1
  261. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +1 -1
  262. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +1 -1
  263. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
  264. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +1 -1
  265. package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +1 -1
  266. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +1 -1
  267. package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +1 -1
  268. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +1 -1
  269. package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -1
  270. package/behaviors/registry/ui/core/molecules/ui-meter.orb +1 -1
  271. package/behaviors/registry/ui/core/molecules/ui-modal.orb +1 -1
  272. package/behaviors/registry/ui/core/molecules/ui-navigation.orb +1 -1
  273. package/behaviors/registry/ui/core/molecules/ui-notification.orb +1 -1
  274. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +1 -1
  275. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +1 -1
  276. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
  277. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
  278. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
  279. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +1 -1
  280. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
  281. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +1 -1
  282. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
  283. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
  284. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +1 -1
  285. package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
  286. package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +1 -1
  287. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
  288. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
  289. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +1 -1
  290. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -1
  291. package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +1 -1
  292. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +1 -1
  293. package/behaviors/registry/ui/core/molecules/ui-section.orb +1 -1
  294. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +1 -1
  295. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +1 -1
  296. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
  297. package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +1 -1
  298. package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +1 -1
  299. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +1 -1
  300. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  301. package/behaviors/registry/ui/core/molecules/ui-split.orb +1 -1
  302. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +1 -1
  303. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +1 -1
  304. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +1 -1
  305. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +1 -1
  306. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +1 -1
  307. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +1 -1
  308. package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +1 -1
  309. package/behaviors/registry/ui/core/molecules/ui-top-nav-item.orb +1 -1
  310. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
  311. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +1 -1
  312. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +1 -1
  313. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +1 -1
  314. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +1 -1
  315. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +1 -1
  316. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +1 -1
  317. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +1 -1
  318. package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +1 -1
  319. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +1 -1
  320. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
  321. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +1 -1
  322. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +1 -1
  323. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1 -1
  324. package/behaviors/registry/ui/core/organisms/ui-form.orb +1 -1
  325. package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +1 -1
  326. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
  327. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +1 -1
  328. package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +1 -1
  329. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +1 -1
  330. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +1 -1
  331. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +1 -1
  332. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +1 -1
  333. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
  334. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
  335. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
  336. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +1 -1
  337. package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +1 -1
  338. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -1
  339. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +1 -1
  340. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -1
  341. package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -1
  342. package/behaviors/registry/ui/game/atoms/std-area-fill.orb +1 -1
  343. package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +1 -1
  344. package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +1 -1
  345. package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -1
  346. package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +1 -1
  347. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +1 -1
  348. package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +1 -1
  349. package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -1
  350. package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +1 -1
  351. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -1
  352. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
  353. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
  354. package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -1
  355. package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -1
  356. package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -1
  357. package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -1
  358. package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
  359. package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +1 -1
  360. package/behaviors/registry/ui/game/atoms/std-motion-body.orb +1 -1
  361. package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -1
  362. package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +1 -1
  363. package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -1
  364. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +1 -1
  365. package/behaviors/registry/ui/game/atoms/std-pickup.orb +1 -1
  366. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1 -1
  367. package/behaviors/registry/ui/game/atoms/std-production.orb +1 -1
  368. package/behaviors/registry/ui/game/atoms/std-score.orb +1 -1
  369. package/behaviors/registry/ui/game/atoms/std-tutorial-autodemo.orb +1 -1
  370. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1 -1
  371. package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1 -1
  372. package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -1
  373. package/behaviors/registry/ui/game/atoms/std-zone-card.orb +1 -1
  374. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +1 -1
  375. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +1 -1
  376. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +1 -1
  377. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +1 -1
  378. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
  379. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +1 -1
  380. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +1 -1
  381. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -1
  382. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +1 -1
  383. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +1 -1
  384. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +1 -1
  385. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +1 -1
  386. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +1 -1
  387. package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +1 -1
  388. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +1 -1
  389. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +1 -1
  390. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +1 -1
  391. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +1 -1
  392. package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +1 -1
  393. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +1 -1
  394. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +1 -1
  395. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
  396. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +1 -1
  397. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +1 -1
  398. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +1 -1
  399. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +1 -1
  400. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
  401. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +1 -1
  402. package/behaviors/registry/ui/game/atoms/ui-timer-display.orb +1 -1
  403. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +1 -1
  404. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +1 -1
  405. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +1 -1
  406. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +1 -1
  407. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +1 -1
  408. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +1 -1
  409. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +1 -1
  410. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -1
  411. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +1 -1
  412. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +1 -1
  413. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +1 -1
  414. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +1 -1
  415. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +1 -1
  416. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +1 -1
  417. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1 -1
  418. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +1 -1
  419. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1 -1
  420. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +1 -1
  421. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +1 -1
  422. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1 -1
  423. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +1 -1
  424. package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1 -1
  425. package/behaviors/registry/ui/learning/atoms/std-learn-generate.orb +1 -1
  426. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1 -1
  427. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +1 -1
  428. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +1 -1
  429. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1 -1
  430. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +1 -1
  431. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +1 -1
  432. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +1 -1
  433. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +1 -1
  434. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +1 -1
  435. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +1 -1
  436. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1 -1
  437. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +1 -1
  438. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +1 -1
  439. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
  440. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +1 -1
  441. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1 -1
  442. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +1 -1
  443. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +1 -1
  444. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1 -1
  445. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +1 -1
  446. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +1 -1
  447. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
  448. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
  449. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
  450. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +1 -1
  451. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
  452. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
  453. package/dist/behaviors-embeddings.hash.json +2 -2
  454. package/dist/behaviors-embeddings.json +1 -1
  455. package/dist/knob-embeddings.hash.json +2 -2
  456. package/package.json +2 -2
@@ -1 +1 @@
1
- {"name":"std-board","version":"1.3.0","description":"std-board — generic N-column board primitive. `config.columns` is an array of column definitions ({ key, label, icon, variant }); the trait `array/map`s them on `BoardItemsLoaded` into `@entity.boards` where each board carries its filtered items + a count. The render is a `data-grid` over `@entity.boards` (one card per column) whose `renderItem` lambda nests a `data-list` over `@col.items` (the cards in that stage). N is config-driven — pass any number of columns; the outer `data-grid`'s `cols` is bound to `@config.gridCols` so the grid wraps if you exceed it. Topology = loading / viewing_board / viewing_card / adding / error — distinct from the cookie-cutter `loading/browsing/viewing_single/error` CRUD shape. App-level atoms (e.g. std-pipeline) compose std-board via `uses` and add a sibling persistor + extended source entity. `config.boardLook` switches the board body between the default N-column grid ('columns') and a Trello-style wide-column kanban ('kanban-classic'). `viewing_board` listens for REFETCH_QUERY/REFETCH_FILTER/REFETCH_PAGE (the std-search/std-filter/std-pagination wiring targets, no render on refetch — @entity.boards is bound reactively) and can optionally render its own search box (config.bodySearch, default false) and filter bar (config.filters, default []); no pagination control is rendered — a board's columns are not a paged list.","orbitals":[{"name":"BoardOrbital","id":"orb_G5D8GHSG7KR3SHFC7M6VH3M69S","entity":{"name":"BoardView","id":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","collection":"board_items","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"title","type":"string","required":true,"description":"The descriptive name of the board.","synonyms":"name, heading, label"},{"name":"description","type":"string","default":"","description":"A textual explanation or summary of the board.","synonyms":"summary, details, notes, explanation"},{"name":"stage","type":"string","default":"todo","values":["todo","doing","done"],"description":"The current status or lifecycle phase of the board.","synonyms":"status, lifecycle, progress, state"},{"name":"notes","type":"string","default":"","description":"Free-form text providing additional information.","synonyms":"comments, remarks, details, annotations"},{"name":"position","type":"number","default":0,"description":"The sequential order of this item within a collection.","synonyms":"order, sequence, index, rank"},{"name":"boards","type":"array","default":[],"items":{"type":"object","properties":{"items":{"name":"items","type":"array","required":false,"items":{"type":"object","properties":{"id":{"name":"id","type":"string","required":true},"notes":{"name":"notes","type":"string","required":false},"position":{"name":"position","type":"number","required":false},"title":{"name":"title","type":"string","required":false},"stage":{"name":"stage","type":"string","required":false},"description":{"name":"description","type":"string","required":false}}}},"label":{"name":"label","type":"string","required":true},"count":{"name":"count","type":"number","required":false},"key":{"name":"key","type":"string","required":true},"icon":{"name":"icon","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false,"values":["default","primary","success","warning","error","info"]}}},"intrinsic":true},{"name":"currentId","type":"string","default":"","intrinsic":true},{"name":"currentTitle","type":"string","default":"","intrinsic":true},{"name":"currentDescription","type":"string","default":"","intrinsic":true},{"name":"currentStage","type":"string","default":"","intrinsic":true},{"name":"currentNotes","type":"string","default":"","intrinsic":true},{"name":"currentRow","type":"relation","relation":{"entity":"BoardView","entityId":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","cardinality":"one"},"intrinsic":true},{"name":"errorMessage","type":"string","default":"","intrinsic":true}]},"traits":[{"name":"BoardItemBoard","id":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR","entityRebindable":true,"entityContract":{"requires":[],"provides":["boards","currentDescription","currentId","currentNotes","currentRow","currentStage","currentTitle","errorMessage"]},"effectRow":[{"kind":"fetch","resource":"BoardView"},{"kind":"persist","resource":"BoardView"},{"kind":"render-ui","resource":"main"},{"kind":"render-ui","resource":"toast"},{"kind":"set","resource":"@entity.boards"},{"kind":"set","resource":"@entity.currentDescription"},{"kind":"set","resource":"@entity.currentId"},{"kind":"set","resource":"@entity.currentNotes"},{"kind":"set","resource":"@entity.currentRow"},{"kind":"set","resource":"@entity.currentStage"},{"kind":"set","resource":"@entity.currentTitle"},{"kind":"set","resource":"@entity.errorMessage"}],"category":"interaction","linkedEntity":"BoardView","linkedEntityId":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","entityRefIds":{"BoardView":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M"},"emits":[{"event":"OPEN_CARD","eventId":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","description":"Indicates a card within the board has been selected.","synonyms":"select, choose, activate, display","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity","required":true}]},{"event":"CLOSE_CARD","eventId":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","description":"Signals a card is being dismissed or closed.","synonyms":"dismiss, hide, close, remove","tier":"domain"},{"event":"ADD_CARD","eventId":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","description":"Signals a new card is being added to the board.","synonyms":"create, new, append","tier":"domain"},{"event":"CANCEL_ADD","eventId":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","description":"Aborts an in-progress addition operation.","synonyms":"discard, undo, reset","tier":"presentation"},{"event":"SAVE_CARD","eventId":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","description":"Signals that a card's data has been successfully saved.","synonyms":"persist, update, store","tier":"domain","payloadSchema":[{"name":"data","type":"@entity","required":true}]},{"event":"MOVE_CARD","eventId":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","description":"Signals a card has been repositioned within a column.","synonyms":"reorder, drag, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"sourceGroup","type":"string"},{"name":"targetGroup","type":"string","required":true},{"name":"newIndex","type":"number"}]},{"event":"REORDER_CARD","eventId":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM","description":"Signals a change in the order of cards within a column.","synonyms":"rearrange, sort, shuffle, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"oldIndex","type":"number"},{"name":"newIndex","type":"number"}]},{"event":"DELETE_CARD","eventId":"evt_15A65RA00T00D4SBPDPQZWFJFJ","description":"Signals removal of a card from the board.","synonyms":"remove, delete, discard","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true}]},{"event":"EDIT_CARD","eventId":"evt_AVCP1826YK3F9Z47YF5GFRKZDT","description":"Signals a request to edit the currently open card. The board renders no edit form itself — consumers override cardActionsContent with an Edit button and wire this emit to their edit modal/form trait.","synonyms":"edit, modify, update, change","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity"}]},{"event":"BoardItemsLoaded","eventId":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","description":"Signals that board items have been successfully loaded.","synonyms":"loaded, fetched, retrieved, populated","tier":"internal","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}],"entity":"ObjectSpec"}]},{"event":"BoardItemsLoadFailed","eventId":"evt_AE30K3DCJ8P942XEEXMQFH973N","description":"Indicates a failure to load board items.","synonyms":"error, failed, problem, loading failure","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]},{"event":"BoardItemsSaved","eventId":"evt_63T9T6N7CEKP7DW65A48JWP4FG","description":"Signals that board items have been successfully saved.","synonyms":"saved, persisted, updated","tier":"domain","scope":"internal","payloadSchema":[{"name":"value","type":"@entity"}]},{"event":"BoardItemDeleted","eventId":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","description":"Signals a board item has been deleted; carries the deleted row's id, not the row.","synonyms":"deleted, removed, discarded","tier":"domain","payloadSchema":[{"name":"id","type":"string"},{"name":"deleted","type":"boolean"}]},{"event":"BoardItemsSaveFailed","eventId":"evt_61XQGWSTF7X7KTHFQAV872PCQG","description":"Indicates a failure to save board items.","synonyms":"error, failed, save error","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]}],"stateMachine":{"states":[{"name":"loading","isInitial":true},{"name":"viewing_board"},{"name":"viewing_card"},{"name":"adding"},{"name":"error"}],"events":[{"key":"INIT","id":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","name":"Initialize"},{"key":"BoardItemsLoaded","id":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","name":"Board items loaded","description":"Signals that board items have been successfully loaded.","synonyms":"loaded, fetched, retrieved, populated","tier":"internal","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}],"listened":true},{"key":"BoardItemsLoadFailed","id":"evt_AE30K3DCJ8P942XEEXMQFH973N","name":"Board items load failed","description":"Indicates a failure to load board items.","synonyms":"error, failed, problem, loading failure","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"BoardItemsSaved","id":"evt_63T9T6N7CEKP7DW65A48JWP4FG","name":"Board items saved","description":"Signals that board items have been successfully saved.","synonyms":"saved, persisted, updated","tier":"domain","payloadSchema":[{"name":"value","type":"@entity"}],"listened":true},{"key":"BoardItemDeleted","id":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","name":"Board item deleted","description":"Signals a board item has been deleted; carries the deleted row's id, not the row.","synonyms":"deleted, removed, discarded","tier":"domain","payloadSchema":[{"name":"id","type":"string"},{"name":"deleted","type":"boolean"}],"listened":true},{"key":"BoardItemsSaveFailed","id":"evt_61XQGWSTF7X7KTHFQAV872PCQG","name":"Board items save failed","description":"Indicates a failure to save board items.","synonyms":"error, failed, save error","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"OPEN_CARD","id":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","name":"Open Card","description":"Indicates a card within the board has been selected.","synonyms":"select, choose, activate, display","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity","required":true},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"stage","type":"string"},{"name":"notes","type":"string"}],"listened":true},{"key":"ADD_CARD","id":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","name":"Add Card","description":"Signals a new card is being added to the board.","synonyms":"create, new, append","tier":"domain","listened":true},{"key":"MOVE_CARD","id":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","name":"Move Card","description":"Signals a card has been repositioned within a column.","synonyms":"reorder, drag, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"sourceGroup","type":"string"},{"name":"targetGroup","type":"string","required":true},{"name":"newIndex","type":"number"}],"listened":true},{"key":"REORDER_CARD","id":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM","name":"Reorder Card","description":"Signals a change in the order of cards within a column.","synonyms":"rearrange, sort, shuffle, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"oldIndex","type":"number"},{"name":"newIndex","type":"number"}],"listened":true},{"key":"REORDER_POSITION","id":"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3","name":"Reorder Position","description":"Indicates a change in the order of items within a column.","synonyms":"sort, rearrange, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"position","type":"number","required":true}],"listened":true},{"key":"REFETCH_QUERY","id":"evt_TDC9Z57X86YM3ENE36ET5S2EEN","name":"Refetch Query","description":"Triggers a board refresh based on the current search query.","synonyms":"refresh, reload, update, re-query","tier":"domain","payloadSchema":[{"name":"searchTerm","type":"string","required":true}],"listened":true},{"key":"REFETCH_FILTER","id":"evt_1DH1AADD5VPJXQQ81DHWPZ2X37","name":"Refetch Filter","description":"Triggers a board refresh based on current filter criteria.","synonyms":"refresh, filter, update, reload","tier":"domain","payloadSchema":[{"name":"entity","type":"string","required":true},{"name":"field","type":"string","required":true},{"name":"value","type":"string","required":true},{"name":"query","type":"string"}],"listened":true},{"key":"REFETCH_PAGE","id":"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW","name":"Refetch Page","description":"Triggers a board refresh for a given page. std-board itself renders no pagination control; this exists so a composed std-pagination can drive one.","synonyms":"reload, refresh, update, paginate","tier":"domain","payloadSchema":[{"name":"page","type":"number","required":true}],"listened":true},{"key":"CLOSE_CARD","id":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","name":"Close Card","description":"Signals a card is being dismissed or closed.","synonyms":"dismiss, hide, close, remove","tier":"domain","listened":true},{"key":"DELETE_CARD","id":"evt_15A65RA00T00D4SBPDPQZWFJFJ","name":"Delete Card","description":"Signals removal of a card from the board.","synonyms":"remove, delete, discard","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true}],"listened":true},{"key":"SAVE_CARD","id":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","name":"Save Card","description":"Signals that a card's data has been successfully saved.","synonyms":"persist, update, store","tier":"domain","payloadSchema":[{"name":"data","type":"@entity","required":true}],"listened":true},{"key":"CANCEL_ADD","id":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","name":"Cancel Add","description":"Aborts an in-progress addition operation.","synonyms":"discard, undo, reset","tier":"presentation","listened":true},{"key":"EDIT_CARD","id":"evt_AVCP1826YK3F9Z47YF5GFRKZDT","name":"Edit Card","description":"Signals a request to edit the currently open card. The board renders no edit form itself — consumers override cardActionsContent with an Edit button and wire this emit to their edit modal/form trait.","synonyms":"edit, modify, update, change","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity"}]}],"transitions":[{"from":"loading","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"loading","to":"viewing_board","event":"BoardItemsLoaded","eventId":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","effects":[["set","@entity.boards",["array/map","@config.columns",["fn","col",{"count":["array/len",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]]],"icon":["object/get","@col","icon","circle"],"items":["array/sort",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]],"position"],"key":["object/get","@col","key"],"label":["object/get","@col","label"],"variant":["object/get","@col","variant","default"]}]]],["if",["=","@config.boardLook","kanban-classic"],["render-ui","main","@config.kanbanClassicBodyContent"],["render-ui","main","@config.bodyContent"]]]},{"from":"loading","to":"error","event":"BoardItemsLoadFailed","eventId":"evt_AE30K3DCJ8P942XEEXMQFH973N","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","main",{"message":"@entity.errorMessage","title":"Failed to load board","type":"error-state"}]]},{"from":"loading","to":"loading","event":"BoardItemsSaved","eventId":"evt_63T9T6N7CEKP7DW65A48JWP4FG","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"loading","to":"loading","event":"BoardItemDeleted","eventId":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}]]},{"from":"loading","to":"error","event":"BoardItemsSaveFailed","eventId":"evt_61XQGWSTF7X7KTHFQAV872PCQG","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","main",{"message":"@entity.errorMessage","title":"Save failed","type":"error-state"}]]},{"from":"viewing_board","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"viewing_board","to":"viewing_card","event":"OPEN_CARD","eventId":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","effects":[["set","@entity.currentId","@payload.id"],["set","@entity.currentTitle","@payload.title"],["set","@entity.currentDescription","@payload.description"],["set","@entity.currentStage","@payload.stage"],["set","@entity.currentNotes","@payload.notes"],["set","@entity.currentRow","@payload.row"],["render-ui","main",{"children":[{"align":"center","children":[{"action":"CLOSE_CARD","icon":"arrow-left","label":"Back","type":"button","variant":"ghost"},{"name":"credit-card","size":"lg","type":"icon"},{"content":"@entity.currentTitle","type":"typography","variant":"h3"},{"label":"@entity.currentStage","type":"badge","variant":"primary"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"},{"children":[{"children":[{"color":"muted","content":"Description","type":"typography","variant":"caption"},{"content":"@entity.currentDescription","type":"typography","variant":"body"},{"type":"divider"},{"color":"muted","content":"Notes","type":"typography","variant":"caption"},{"content":"@entity.currentNotes","type":"typography","variant":"body"}],"direction":"vertical","gap":"sm","type":"stack"}],"look":"@config.cardLook","type":"card"},{"type":"divider"},{"color":"muted","content":"Move to stage:","type":"typography","variant":"caption"},{"entity":"@entity.boards","fields":[],"gap":"sm","renderItem":["fn",["col","colIndex"],{"action":"MOVE_CARD","actionPayload":{"id":"@entity.currentId","targetGroup":"@col.key"},"icon":"@col.icon","label":["if",["==",["array/len","@config.columnLabels"],0],"@col.label",["array/nth","@config.columnLabels","@colIndex"]],"type":"button","variant":"secondary"}],"type":"data-list","variant":"default"},"@config.cardActionsContent"],"direction":"vertical","gap":"md","type":"stack"}]]},{"from":"viewing_board","to":"adding","event":"ADD_CARD","eventId":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","effects":[["set","@entity.currentId",""],["set","@entity.currentTitle",""],["set","@entity.currentDescription",""],["set","@entity.currentStage",""],["set","@entity.currentNotes",""],["render-ui","main",{"children":[{"align":"center","children":[{"action":"CANCEL_ADD","icon":"x","label":"Cancel","type":"button","variant":"ghost"},{"name":"plus","size":"lg","type":"icon"},{"content":"New board item","type":"typography","variant":"h3"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"},{"cancelEvent":"CANCEL_ADD","entity":"@entity","fields":"@config.formFields","mode":"create","submitEvent":"SAVE_CARD","type":"form-section"}],"direction":"vertical","gap":"md","type":"stack"}]]},{"from":"viewing_board","to":"viewing_board","event":"MOVE_CARD","eventId":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","effects":[["persist","update","BoardView",{"id":"@payload.id","stage":"@payload.targetGroup"},{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}]]},{"from":"viewing_board","to":"viewing_board","event":"REORDER_CARD","eventId":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM"},{"from":"viewing_board","to":"viewing_board","event":"REORDER_POSITION","eventId":"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3","effects":[["persist","update","BoardView",{"id":"@payload.id","position":"@payload.position"},{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsSaved","eventId":"evt_63T9T6N7CEKP7DW65A48JWP4FG","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}]]},{"from":"viewing_board","to":"viewing_board","event":"REFETCH_QUERY","eventId":"evt_TDC9Z57X86YM3ENE36ET5S2EEN","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include","filter":["or",["=","@payload.searchTerm",""],["str/includes",["object/get","@entity","@config.searchField"],"@payload.searchTerm"]]}]]},{"from":"viewing_board","to":"viewing_board","event":"REFETCH_FILTER","eventId":"evt_1DH1AADD5VPJXQQ81DHWPZ2X37","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include","filter":["or",["=","@payload.value",""],["=",["object/get","@entity","@payload.field"],"@payload.value"]]}]]},{"from":"viewing_board","to":"viewing_board","event":"REFETCH_PAGE","eventId":"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include","limit":"@config.pageSize","offset":["*",["-","@payload.page",1],"@config.pageSize"]}]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsLoaded","eventId":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","effects":[["set","@entity.boards",["array/map","@config.columns",["fn","col",{"count":["array/len",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]]],"icon":["object/get","@col","icon","circle"],"items":["array/sort",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]],"position"],"key":["object/get","@col","key"],"label":["object/get","@col","label"],"variant":["object/get","@col","variant","default"]}]]]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsSaveFailed","eventId":"evt_61XQGWSTF7X7KTHFQAV872PCQG","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't save the board — ","@payload.error"],"dismissible":true}]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsLoadFailed","eventId":"evt_AE30K3DCJ8P942XEEXMQFH973N","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't refresh the board — ","@payload.error"],"dismissible":true}]]},{"from":"viewing_card","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"viewing_card","to":"loading","event":"CLOSE_CARD","eventId":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"viewing_card","to":"loading","event":"MOVE_CARD","eventId":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","effects":[["persist","update","BoardView",{"id":"@payload.id","stage":"@payload.targetGroup"},{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}],["render-ui","main",{"title":"Moving item…","type":"loading-state"}]]},{"from":"viewing_card","to":"loading","event":"DELETE_CARD","eventId":"evt_15A65RA00T00D4SBPDPQZWFJFJ","effects":[["persist","delete","BoardView","@payload.id",{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemDeleted"}}]]},{"from":"adding","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"adding","to":"loading","event":"SAVE_CARD","eventId":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","effects":[["persist","create","BoardView","@payload.data",{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}]]},{"from":"adding","to":"viewing_board","event":"CANCEL_ADD","eventId":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","effects":[["render-ui","main",{"title":"Cancelling…","type":"loading-state"}]]},{"from":"error","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["render-ui","main",{"type":"skeleton","variant":"card"}]]}]},"config":{"kanbanClassicBodyContent":{"type":"render-ui","default":{"children":[["if",["=","@config.addPlacement","inline"],{"children":[{"action":"ADD_CARD","icon":"plus","label":"Add card","size":"sm","type":"button","variant":"secondary"}],"direction":"horizontal","gap":"sm","justify":"end","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"xl","type":"icon"},{"content":"@config.title","type":"typography","variant":"h2"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full pb-2","dndRoot":"@config.draggable","entity":"@entity.boards","fields":[],"gap":"lg","minCardWidth":300,"renderItem":["fn",["col","colIndex"],{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"className":"flex-1","content":["if",["==",["array/len","@config.columnLabels"],0],"@col.label",["array/nth","@config.columnLabels","@colIndex"]],"type":"typography","variant":"h4"},{"label":"@col.count","size":"sm","type":"badge","variant":"primary"}],"className":"p-card-md border-b border-[var(--color-border)] sticky top-0 bg-[var(--color-surface)]","direction":"horizontal","gap":"sm","type":"stack"},{"accepts":["if","@config.draggable","*",""],"className":"p-card-md min-h-[120px]","dragGroup":["if","@config.draggable","@col.key",""],"dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"body","weight":"medium"},{"className":"line-clamp-2","color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"label":"@config.cardStageBinding","size":"sm","type":"badge","variant":"@col.variant"},{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"className":"ml-auto","icon":"arrow-right","label":"Open","size":"sm","type":"button","variant":"ghost"}],"className":"pt-1","direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"className":"cursor-grab hover:shadow-lg transition-shadow","look":"@config.cardLook","padding":"sm","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":"@config.draggable","itemEnter":"@config.cardEnter","type":"data-list"}],"direction":"vertical","gap":"none","type":"stack"}],"className":"w-[300px] bg-[var(--color-surface-subtle)] rounded-lg overflow-hidden","look":"elevated","padding":"none","type":"card"}],"scrollX":true,"type":"data-grid"},["if",["=","@config.addPlacement","floating"],{"action":"ADD_CARD","icon":"plus","label":"Add card","type":"floating-action-button","variant":"primary"},{"children":[],"gap":"none","type":"stack"}]],"className":"h-full","direction":"vertical","gap":"md","type":"stack"},"label":"Kanban classic body content tree","description":"Render-ui SExpr for boardLook='kanban-classic' — Trello-style wide elevated columns with sticky headers, dense cards with a status badge; per-item cards honor config.cardLook (the column wrapper stays elevated — it is column chrome, not a card).","tier":"internal"},"cardIdBinding":{"type":"string","default":"@item.id","label":"Card id binding","description":"Per-card binding for the id used in action payloads.","tier":"presentation"},"searchPlaceholder":{"type":"string","default":"Search…","label":"Search box placeholder text","description":"Hint text inside the board's embedded search box (e.g. 'Search cards…'). Only shown when bodySearch is true.","synonyms":"search hint, placeholder, search box text, search label","tier":"presentation"},"filterBarLook":{"type":"string","default":"toolbar","label":"Filter bar look","description":"Visual treatment for the embedded filter bar, mirroring std-filter's own enum. Only applies when `filters` is non-empty.","synonyms":"filter bar style, facet style, chips, pills","tier":"presentation","values":["toolbar","chips","pills","popover-trigger","inline-column-header"]},"formFields":{"type":"[string]","default":["title","description","stage","notes"],"label":"New-card fields","description":"Fields shown in the add-card form","tier":"presentation","items":{"type":"string"}},"cardDescriptionBinding":{"type":"string","default":"@item.description","label":"Card description binding","description":"Per-card binding for the description slot.","tier":"presentation"},"title":{"type":"string","default":"Board","label":"Board title","description":"Heading shown above the column board","tier":"presentation"},"gridCols":{"type":"number","default":3,"label":"Grid columns","description":"Outer grid column count before the board wraps","tier":"presentation"},"filters":{"type":"[FilterSpec]","default":[],"label":"Which filters should appear above the board?","description":"Dropdown filter facets by field, rendered as an embedded filter bar above the columns; each selection fires REFETCH_FILTER on this trait. Empty (the default) = no filter bar, which is the right setting whenever the page already composes std-filter beside this board and routes its FILTER event to REFETCH_FILTER — that is the wired owner and remains the primary path. Use this knob only for a standalone board with no page-level filter affordance.","synonyms":"filter bar, faceted filters, field filters, column filters, dropdowns","tier":"presentation","items":{"type":"object","properties":{"field":{"name":"field","type":"string","required":true},"label":{"name":"label","type":"string","required":false},"options":{"name":"options","type":"array","required":false,"items":{"type":"string"}}}}},"columns":{"type":"[ColumnSpec]","default":[{"icon":"circle","key":"todo","label":"To Do","variant":"default"},{"icon":"circle-dot","key":"doing","label":"In Progress","variant":"primary"},{"icon":"check-circle","key":"done","label":"Done","variant":"success"}],"label":"Columns","description":"Board columns; each row's stage maps to a column key","tier":"domain","items":{"type":"object","properties":{"variant":{"name":"variant","type":"string","required":false},"icon":{"name":"icon","type":"string","required":false},"label":{"name":"label","type":"string","required":true},"key":{"name":"key","type":"string","required":true}}}},"cardStageBinding":{"type":"string","default":"@item.stage","label":"Card stage binding","description":"Per-card binding for the stage/status slot.","tier":"presentation"},"columnLabels":{"type":"[string]","default":[],"label":"Column labels","description":"Optional labels in the same order as the columns, used only where the board is drawn, so they may be translated; empty shows each column's own label","tier":"presentation","items":{"type":"string"}},"draggable":{"type":"boolean","default":true,"label":"Drag cards","description":"Let people drag cards between columns and reorder them; off shows the board read-only to the pointer (moves still work through events)","tier":"presentation"},"viewerRole":{"type":"string","default":"","label":"Viewer's role","description":"The signed-in viewer's role that each card action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show.","tier":"policy"},"boardLook":{"type":"string","default":"columns","label":"Board look","description":"Layer 3 body layout: default N-column data-grid ('columns'), or a Trello-style wide-column kanban with sticky column headers ('kanban-classic').","tier":"presentation","values":["columns","kanban-classic"]},"cardNotesBinding":{"type":"string","default":"@item.notes","label":"Card notes binding","description":"Per-card binding for the notes slot shown in the card detail view. Set to an empty string for hosts with no notes-equivalent field — declared as 'no notes capture', never inferred.","tier":"presentation"},"cardActions":{"type":"[ItemAction]","default":[{"event":"DELETE_CARD","icon":"trash-2","label":"Delete","variant":"danger"}],"label":"Card panel action list","description":"Buttons on the open-card panel's actions row, built by the default cardActionsContent. Give an item `roles` to show it only to those viewer roles.","tier":"presentation","items":{"type":"object","properties":{"icon":{"name":"icon","type":"string","required":false},"roles":{"name":"roles","type":"array","required":false,"items":{"type":"string"}},"variant":{"name":"variant","type":"string","required":false,"values":["primary","secondary","ghost","danger"]},"event":{"name":"event","type":"event","required":false},"label":{"name":"label","type":"string","required":true}}}},"cardEnter":{"type":"string","default":"none","label":"Card entrance","description":"Animation a card plays when it appears in a column, so a moved card visibly arrives","tier":"presentation","values":["none","fade","rise","scale","slide"]},"cardLook":{"type":"string","default":"elevated","label":"Card look","description":"Layer 2 visual treatment for cards rendered by this board.","tier":"presentation","values":["elevated","flat-bordered","borderless-divider","ticket","invoice","chip","tile-image-first"]},"bodyContent":{"type":"render-ui","default":{"children":[["if",["=","@config.addPlacement","inline"],{"children":[{"action":"ADD_CARD","icon":"plus","label":"Add item","size":"sm","type":"button","variant":"secondary"}],"direction":"horizontal","gap":"sm","justify":"end","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"lg","type":"icon"},{"content":"@config.title","type":"typography","variant":"h3"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"cols":"@config.gridCols","dndRoot":"@config.draggable","entity":"@entity.boards","fields":[],"gap":"md","renderItem":["fn",["col","colIndex"],{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"content":["if",["==",["array/len","@config.columnLabels"],0],"@col.label",["array/nth","@config.columnLabels","@colIndex"]],"type":"typography","variant":"h4"},{"label":"@col.count","type":"badge","variant":"@col.variant"}],"direction":"horizontal","gap":"xs","type":"stack"},{"accepts":["if","@config.draggable","*",""],"dragGroup":["if","@config.draggable","@col.key",""],"dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"h4"},{"color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"icon":"arrow-right","label":"Open","type":"button","variant":"ghost"}],"direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"look":"@config.cardLook","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":"@config.draggable","itemEnter":"@config.cardEnter","type":"data-list"}],"direction":"vertical","gap":"sm","type":"stack"}],"look":"@config.cardLook","type":"card"}],"type":"data-grid"},["if",["=","@config.addPlacement","floating"],{"action":"ADD_CARD","icon":"plus","label":"Add item","type":"floating-action-button","variant":"primary"},{"children":[],"gap":"none","type":"stack"}]],"direction":"vertical","gap":"md","type":"stack"},"label":"Body content tree","description":"Render-ui SExpr rendered after the board loads for boardLook='columns' — the canonical column data-grid with nested per-column data-lists. boardLook='kanban-classic' renders kanbanClassicBodyContent instead; both share this trait's state machine, emits, and listens.","tier":"internal"},"groupByField":{"type":"string","default":"stage","label":"Group-by field","description":"Entity field whose value matches a column key — items are filtered into columns by it. Default 'stage'; set to 'status' (or any field) for entities that track state under a different name.","tier":"presentation"},"include":{"type":"[string]","default":[],"label":"Which relation fields to hydrate?","description":"Entity relation field names to hydrate on fetch (e.g. an `assignee : TeamMember` field named `assignee`), so card bindings can use dot-paths like @item.assignee.name. Empty = no hydration, the default.","synonyms":"relation hydration, populate relations, joined fields, hydrate relations","tier":"domain","items":{"type":"string"}},"addPlacement":{"type":"string","default":"floating","label":"Add button placement","description":"Where the add-item button sits: 'floating' (default) pins a floating action button to the screen corner; 'inline' renders an ordinary Add button above the columns, for a board embedded in a card or panel.; none hides the add button (a read-only board)","synonyms":"add button position, floating add, inline add, add item button placement. user phrases: 'put the add button inside the board' / 'no floating button' -> inline","tier":"presentation","values":["floating","inline","none"]},"cardTitleBinding":{"type":"string","default":"@item.title","label":"Card title binding","description":"Per-card binding for the title slot.","tier":"presentation"},"bodySearch":{"type":"boolean","default":false,"label":"Show the board's own search box?","description":"Renders an inline search box above the columns. Defaults false: unlike std-browse, std-board has never had a search box, so defaulting this true would silently add one to every existing consumer. The wired path — composing std-search beside the board and routing its FILTER/SEARCH event to REFETCH_QUERY — works regardless of this knob; set true only for a standalone board with no page-level search affordance.","synonyms":"inline search, board search, built-in search, show search, duplicate search","tier":"presentation"},"searchField":{"type":"string","default":"title","label":"Which column does the search box match against?","description":"Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `title` column must set this to a real field (e.g. name, summary) or the search box can never match a card.","synonyms":"search column, search on field, match field, search key","tier":"policy"},"pageSize":{"type":"number","default":10,"label":"Fetch page size","description":"Records fetched per REFETCH_PAGE request. std-board renders no pagination control itself — this only feeds the fetch limit/offset when a consumer wires a composed std-pagination to REFETCH_PAGE.","synonyms":"fetch limit, records per page, batch size, page limit","tier":"presentation"},"cardActionsContent":{"type":"render-ui","default":{"align":"center","children":["array/map",["array/filter","@config.cardActions",["fn","action",["or",["=",["array/len",["object/get","@action","roles",[]]],0],["array/includes",["object/get","@action","roles",[]],"@config.viewerRole"]]]],["fn","a",{"action":"@a.event","actionPayload":{"id":"@entity.currentId"},"icon":"@a.icon","label":"@a.label","type":"button","variant":"@a.variant"}]],"direction":"horizontal","gap":"sm","type":"stack"},"label":"Card panel actions","description":"Actions row of the open-card panel. Default is the Delete button only. Override to add consumer-wired actions — e.g. an Edit button with action: EDIT_CARD and actionPayload: { id: @entity.currentId, row: @entity.currentRow }, listened to by the organism's edit modal. Never leave a button here without a listener.","tier":"presentation"},"showHeader":{"type":"boolean","default":true,"label":"Show the board's own title row?","description":"Off when the page already carries a page header naming the same thing, so the page shows one title.","tier":"presentation"}},"scope":"instance"}],"pages":[{"name":"BoardPage","id":"pag_TTD5BC4SK3CSHWE65BW6AEP4KS","path":"/board","traits":[{"ref":"BoardItemBoard","refId":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"}]}],"types":{"BoardColumn":[{"name":"key","type":"string","required":true},{"name":"label","type":"string","required":true},{"name":"icon","type":"string"},{"name":"variant","type":"string","values":["default","primary","success","warning","error","info"]},{"name":"count","type":"number"},{"name":"items","type":"[object]","properties":[{"name":"id","type":"string","required":true},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"stage","type":"string"},{"name":"notes","type":"string"},{"name":"position","type":"number"}]}],"BoardItem":[{"name":"id","type":"string","required":true},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"stage","type":"string"},{"name":"notes","type":"string"},{"name":"position","type":"number"}],"ColumnSpec":[{"name":"key","type":"string","required":true},{"name":"label","type":"string","required":true},{"name":"icon","type":"string"},{"name":"variant","type":"string"}],"FilterSpec":[{"name":"field","type":"string","required":true},{"name":"label","type":"string"},{"name":"options","type":"[string]"}],"ItemAction":[{"name":"label","type":"string","required":true},{"name":"event","type":"event"},{"name":"variant","type":"string","values":["primary","secondary","ghost","danger"]},{"name":"icon","type":"string"},{"name":"roles","type":"[string]"}],"ObjectSpec":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M":{"id":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","kind":"entity","bakedName":"BoardView","curName":"BoardView","renames":[],"owner":"workspace"},"evt_0063ZZKV1WXGY7AS72NVA8CKTS":{"id":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","kind":"event","bakedName":"CLOSE_CARD","curName":"CLOSE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_15A65RA00T00D4SBPDPQZWFJFJ":{"id":"evt_15A65RA00T00D4SBPDPQZWFJFJ","kind":"event","bakedName":"DELETE_CARD","curName":"DELETE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_1DH1AADD5VPJXQQ81DHWPZ2X37":{"id":"evt_1DH1AADD5VPJXQQ81DHWPZ2X37","kind":"event","bakedName":"REFETCH_FILTER","curName":"REFETCH_FILTER","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_61XQGWSTF7X7KTHFQAV872PCQG":{"id":"evt_61XQGWSTF7X7KTHFQAV872PCQG","kind":"event","bakedName":"BoardItemsSaveFailed","curName":"BoardItemsSaveFailed","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_63T9T6N7CEKP7DW65A48JWP4FG":{"id":"evt_63T9T6N7CEKP7DW65A48JWP4FG","kind":"event","bakedName":"BoardItemsSaved","curName":"BoardItemsSaved","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG":{"id":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","kind":"event","bakedName":"MOVE_CARD","curName":"MOVE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_74SX86MXB2ENHEQVA51M8R9ZQJ":{"id":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","kind":"event","bakedName":"OPEN_CARD","curName":"OPEN_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_75DH9HW6PY3BF5YBTCX5WAJBZV":{"id":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3":{"id":"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3","kind":"event","bakedName":"REORDER_POSITION","curName":"REORDER_POSITION","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_AE30K3DCJ8P942XEEXMQFH973N":{"id":"evt_AE30K3DCJ8P942XEEXMQFH973N","kind":"event","bakedName":"BoardItemsLoadFailed","curName":"BoardItemsLoadFailed","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_AVCP1826YK3F9Z47YF5GFRKZDT":{"id":"evt_AVCP1826YK3F9Z47YF5GFRKZDT","kind":"event","bakedName":"EDIT_CARD","curName":"EDIT_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_B69SMFWX4NEJAPXE3MHR8RXD2H":{"id":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","kind":"event","bakedName":"CANCEL_ADD","curName":"CANCEL_ADD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1":{"id":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","kind":"event","bakedName":"ADD_CARD","curName":"ADD_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_JK4F8TY0FA07N7YY79CFPRRPSC":{"id":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","kind":"event","bakedName":"BoardItemsLoaded","curName":"BoardItemsLoaded","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_S7N6473BQ9NVMJYS1HHR0YCA7G":{"id":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","kind":"event","bakedName":"BoardItemDeleted","curName":"BoardItemDeleted","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_T0YQ7B1WY1YF0M123FDEXAEPCD":{"id":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","kind":"event","bakedName":"SAVE_CARD","curName":"SAVE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_TDC9Z57X86YM3ENE36ET5S2EEN":{"id":"evt_TDC9Z57X86YM3ENE36ET5S2EEN","kind":"event","bakedName":"REFETCH_QUERY","curName":"REFETCH_QUERY","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM":{"id":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM","kind":"event","bakedName":"REORDER_CARD","curName":"REORDER_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW":{"id":"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW","kind":"event","bakedName":"REFETCH_PAGE","curName":"REFETCH_PAGE","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"orb_G5D8GHSG7KR3SHFC7M6VH3M69S":{"id":"orb_G5D8GHSG7KR3SHFC7M6VH3M69S","kind":"orbital","bakedName":"BoardOrbital","curName":"BoardOrbital","renames":[],"owner":"workspace"},"pag_TTD5BC4SK3CSHWE65BW6AEP4KS":{"id":"pag_TTD5BC4SK3CSHWE65BW6AEP4KS","kind":"page","bakedName":"BoardPage","curName":"BoardPage","renames":[],"owner":"workspace"},"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR":{"id":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR","kind":"trait","bakedName":"BoardItemBoard","curName":"BoardItemBoard","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-board","version":"1.3.0","description":"std-board — generic N-column board primitive. `config.columns` is an array of column definitions ({ key, label, icon, variant }); the trait `array/map`s them on `BoardItemsLoaded` into `@entity.boards` where each board carries its filtered items + a count. The render is a `data-grid` over `@entity.boards` (one card per column) whose `renderItem` lambda nests a `data-list` over `@col.items` (the cards in that stage). N is config-driven — pass any number of columns; the outer `data-grid`'s `cols` is bound to `@config.gridCols` so the grid wraps if you exceed it. Topology = loading / viewing_board / viewing_card / adding / error — distinct from the cookie-cutter `loading/browsing/viewing_single/error` CRUD shape. App-level atoms (e.g. std-pipeline) compose std-board via `uses` and add a sibling persistor + extended source entity. `config.boardLook` switches the board body between the default N-column grid ('columns') and a Trello-style wide-column kanban ('kanban-classic'). `viewing_board` listens for REFETCH_QUERY/REFETCH_FILTER/REFETCH_PAGE (the std-search/std-filter/std-pagination wiring targets, no render on refetch — @entity.boards is bound reactively) and can optionally render its own search box (config.bodySearch, default false) and filter bar (config.filters, default []); no pagination control is rendered — a board's columns are not a paged list.","orbitals":[{"name":"BoardOrbital","id":"orb_G5D8GHSG7KR3SHFC7M6VH3M69S","entity":{"name":"BoardView","id":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","collection":"board_items","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"title","type":"string","required":true,"description":"The descriptive name of the board.","synonyms":"name, heading, label"},{"name":"description","type":"string","default":"","description":"A textual explanation or summary of the board.","synonyms":"summary, details, notes, explanation"},{"name":"stage","type":"string","default":"todo","values":["todo","doing","done"],"description":"The current status or lifecycle phase of the board.","synonyms":"status, lifecycle, progress, state"},{"name":"notes","type":"string","default":"","description":"Free-form text providing additional information.","synonyms":"comments, remarks, details, annotations"},{"name":"position","type":"number","default":0,"description":"The sequential order of this item within a collection.","synonyms":"order, sequence, index, rank"},{"name":"boards","type":"array","default":[],"items":{"type":"object","properties":{"key":{"name":"key","type":"string","required":true},"count":{"name":"count","type":"number","required":false},"variant":{"name":"variant","type":"string","required":false,"values":["default","primary","success","warning","error","info"]},"icon":{"name":"icon","type":"string","required":false},"items":{"name":"items","type":"array","required":false,"items":{"type":"object","properties":{"position":{"name":"position","type":"number","required":false},"description":{"name":"description","type":"string","required":false},"title":{"name":"title","type":"string","required":false},"stage":{"name":"stage","type":"string","required":false},"id":{"name":"id","type":"string","required":true},"notes":{"name":"notes","type":"string","required":false}}}},"label":{"name":"label","type":"string","required":true}}},"intrinsic":true},{"name":"currentId","type":"string","default":"","intrinsic":true},{"name":"currentTitle","type":"string","default":"","intrinsic":true},{"name":"currentDescription","type":"string","default":"","intrinsic":true},{"name":"currentStage","type":"string","default":"","intrinsic":true},{"name":"currentNotes","type":"string","default":"","intrinsic":true},{"name":"currentRow","type":"relation","relation":{"entity":"BoardView","entityId":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","cardinality":"one"},"intrinsic":true},{"name":"errorMessage","type":"string","default":"","intrinsic":true}]},"traits":[{"name":"BoardItemBoard","id":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR","entityRebindable":true,"entityContract":{"requires":[],"provides":["boards","currentDescription","currentId","currentNotes","currentRow","currentStage","currentTitle","errorMessage"]},"effectRow":[{"kind":"fetch","resource":"BoardView"},{"kind":"persist","resource":"BoardView"},{"kind":"render-ui","resource":"main"},{"kind":"render-ui","resource":"toast"},{"kind":"set","resource":"@entity.boards"},{"kind":"set","resource":"@entity.currentDescription"},{"kind":"set","resource":"@entity.currentId"},{"kind":"set","resource":"@entity.currentNotes"},{"kind":"set","resource":"@entity.currentRow"},{"kind":"set","resource":"@entity.currentStage"},{"kind":"set","resource":"@entity.currentTitle"},{"kind":"set","resource":"@entity.errorMessage"}],"category":"interaction","linkedEntity":"BoardView","linkedEntityId":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","entityRefIds":{"BoardView":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M"},"emits":[{"event":"OPEN_CARD","eventId":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","description":"Indicates a card within the board has been selected.","synonyms":"select, choose, activate, display","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity","required":true}]},{"event":"CLOSE_CARD","eventId":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","description":"Signals a card is being dismissed or closed.","synonyms":"dismiss, hide, close, remove","tier":"domain"},{"event":"ADD_CARD","eventId":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","description":"Signals a new card is being added to the board.","synonyms":"create, new, append","tier":"domain"},{"event":"CANCEL_ADD","eventId":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","description":"Aborts an in-progress addition operation.","synonyms":"discard, undo, reset","tier":"presentation"},{"event":"SAVE_CARD","eventId":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","description":"Signals that a card's data has been successfully saved.","synonyms":"persist, update, store","tier":"domain","payloadSchema":[{"name":"data","type":"@entity","required":true}]},{"event":"MOVE_CARD","eventId":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","description":"Signals a card has been repositioned within a column.","synonyms":"reorder, drag, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"sourceGroup","type":"string"},{"name":"targetGroup","type":"string","required":true},{"name":"newIndex","type":"number"}]},{"event":"REORDER_CARD","eventId":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM","description":"Signals a change in the order of cards within a column.","synonyms":"rearrange, sort, shuffle, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"oldIndex","type":"number"},{"name":"newIndex","type":"number"}]},{"event":"DELETE_CARD","eventId":"evt_15A65RA00T00D4SBPDPQZWFJFJ","description":"Signals removal of a card from the board.","synonyms":"remove, delete, discard","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true}]},{"event":"EDIT_CARD","eventId":"evt_AVCP1826YK3F9Z47YF5GFRKZDT","description":"Signals a request to edit the currently open card. The board renders no edit form itself — consumers override cardActionsContent with an Edit button and wire this emit to their edit modal/form trait.","synonyms":"edit, modify, update, change","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity"}]},{"event":"BoardItemsLoaded","eventId":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","description":"Signals that board items have been successfully loaded.","synonyms":"loaded, fetched, retrieved, populated","tier":"internal","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}],"entity":"ObjectSpec"}]},{"event":"BoardItemsLoadFailed","eventId":"evt_AE30K3DCJ8P942XEEXMQFH973N","description":"Indicates a failure to load board items.","synonyms":"error, failed, problem, loading failure","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]},{"event":"BoardItemsSaved","eventId":"evt_63T9T6N7CEKP7DW65A48JWP4FG","description":"Signals that board items have been successfully saved.","synonyms":"saved, persisted, updated","tier":"domain","scope":"internal","payloadSchema":[{"name":"value","type":"@entity"}]},{"event":"BoardItemDeleted","eventId":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","description":"Signals a board item has been deleted; carries the deleted row's id, not the row.","synonyms":"deleted, removed, discarded","tier":"domain","payloadSchema":[{"name":"id","type":"string"},{"name":"deleted","type":"boolean"}]},{"event":"BoardItemsSaveFailed","eventId":"evt_61XQGWSTF7X7KTHFQAV872PCQG","description":"Indicates a failure to save board items.","synonyms":"error, failed, save error","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]}],"stateMachine":{"states":[{"name":"loading","isInitial":true},{"name":"viewing_board"},{"name":"viewing_card"},{"name":"adding"},{"name":"error"}],"events":[{"key":"INIT","id":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","name":"Initialize"},{"key":"BoardItemsLoaded","id":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","name":"Board items loaded","description":"Signals that board items have been successfully loaded.","synonyms":"loaded, fetched, retrieved, populated","tier":"internal","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}],"listened":true},{"key":"BoardItemsLoadFailed","id":"evt_AE30K3DCJ8P942XEEXMQFH973N","name":"Board items load failed","description":"Indicates a failure to load board items.","synonyms":"error, failed, problem, loading failure","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"BoardItemsSaved","id":"evt_63T9T6N7CEKP7DW65A48JWP4FG","name":"Board items saved","description":"Signals that board items have been successfully saved.","synonyms":"saved, persisted, updated","tier":"domain","payloadSchema":[{"name":"value","type":"@entity"}],"listened":true},{"key":"BoardItemDeleted","id":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","name":"Board item deleted","description":"Signals a board item has been deleted; carries the deleted row's id, not the row.","synonyms":"deleted, removed, discarded","tier":"domain","payloadSchema":[{"name":"id","type":"string"},{"name":"deleted","type":"boolean"}],"listened":true},{"key":"BoardItemsSaveFailed","id":"evt_61XQGWSTF7X7KTHFQAV872PCQG","name":"Board items save failed","description":"Indicates a failure to save board items.","synonyms":"error, failed, save error","tier":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"OPEN_CARD","id":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","name":"Open Card","description":"Indicates a card within the board has been selected.","synonyms":"select, choose, activate, display","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity","required":true},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"stage","type":"string"},{"name":"notes","type":"string"}],"listened":true},{"key":"ADD_CARD","id":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","name":"Add Card","description":"Signals a new card is being added to the board.","synonyms":"create, new, append","tier":"domain","listened":true},{"key":"MOVE_CARD","id":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","name":"Move Card","description":"Signals a card has been repositioned within a column.","synonyms":"reorder, drag, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"sourceGroup","type":"string"},{"name":"targetGroup","type":"string","required":true},{"name":"newIndex","type":"number"}],"listened":true},{"key":"REORDER_CARD","id":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM","name":"Reorder Card","description":"Signals a change in the order of cards within a column.","synonyms":"rearrange, sort, shuffle, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"oldIndex","type":"number"},{"name":"newIndex","type":"number"}],"listened":true},{"key":"REORDER_POSITION","id":"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3","name":"Reorder Position","description":"Indicates a change in the order of items within a column.","synonyms":"sort, rearrange, reposition","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"position","type":"number","required":true}],"listened":true},{"key":"REFETCH_QUERY","id":"evt_TDC9Z57X86YM3ENE36ET5S2EEN","name":"Refetch Query","description":"Triggers a board refresh based on the current search query.","synonyms":"refresh, reload, update, re-query","tier":"domain","payloadSchema":[{"name":"searchTerm","type":"string","required":true}],"listened":true},{"key":"REFETCH_FILTER","id":"evt_1DH1AADD5VPJXQQ81DHWPZ2X37","name":"Refetch Filter","description":"Triggers a board refresh based on current filter criteria.","synonyms":"refresh, filter, update, reload","tier":"domain","payloadSchema":[{"name":"entity","type":"string","required":true},{"name":"field","type":"string","required":true},{"name":"value","type":"string","required":true},{"name":"query","type":"string"}],"listened":true},{"key":"REFETCH_PAGE","id":"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW","name":"Refetch Page","description":"Triggers a board refresh for a given page. std-board itself renders no pagination control; this exists so a composed std-pagination can drive one.","synonyms":"reload, refresh, update, paginate","tier":"domain","payloadSchema":[{"name":"page","type":"number","required":true}],"listened":true},{"key":"CLOSE_CARD","id":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","name":"Close Card","description":"Signals a card is being dismissed or closed.","synonyms":"dismiss, hide, close, remove","tier":"domain","listened":true},{"key":"DELETE_CARD","id":"evt_15A65RA00T00D4SBPDPQZWFJFJ","name":"Delete Card","description":"Signals removal of a card from the board.","synonyms":"remove, delete, discard","tier":"presentation","payloadSchema":[{"name":"id","type":"string","required":true}],"listened":true},{"key":"SAVE_CARD","id":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","name":"Save Card","description":"Signals that a card's data has been successfully saved.","synonyms":"persist, update, store","tier":"domain","payloadSchema":[{"name":"data","type":"@entity","required":true}],"listened":true},{"key":"CANCEL_ADD","id":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","name":"Cancel Add","description":"Aborts an in-progress addition operation.","synonyms":"discard, undo, reset","tier":"presentation","listened":true},{"key":"EDIT_CARD","id":"evt_AVCP1826YK3F9Z47YF5GFRKZDT","name":"Edit Card","description":"Signals a request to edit the currently open card. The board renders no edit form itself — consumers override cardActionsContent with an Edit button and wire this emit to their edit modal/form trait.","synonyms":"edit, modify, update, change","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"row","type":"@entity"}]}],"transitions":[{"from":"loading","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"loading","to":"viewing_board","event":"BoardItemsLoaded","eventId":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","effects":[["set","@entity.boards",["array/map","@config.columns",["fn","col",{"count":["array/len",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]]],"icon":["object/get","@col","icon","circle"],"items":["array/sort",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]],"position"],"key":["object/get","@col","key"],"label":["object/get","@col","label"],"variant":["object/get","@col","variant","default"]}]]],["if",["=","@config.boardLook","kanban-classic"],["render-ui","main","@config.kanbanClassicBodyContent"],["render-ui","main","@config.bodyContent"]]]},{"from":"loading","to":"error","event":"BoardItemsLoadFailed","eventId":"evt_AE30K3DCJ8P942XEEXMQFH973N","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","main",{"message":"@entity.errorMessage","title":"Failed to load board","type":"error-state"}]]},{"from":"loading","to":"loading","event":"BoardItemsSaved","eventId":"evt_63T9T6N7CEKP7DW65A48JWP4FG","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"loading","to":"loading","event":"BoardItemDeleted","eventId":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}]]},{"from":"loading","to":"error","event":"BoardItemsSaveFailed","eventId":"evt_61XQGWSTF7X7KTHFQAV872PCQG","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","main",{"message":"@entity.errorMessage","title":"Save failed","type":"error-state"}]]},{"from":"viewing_board","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"viewing_board","to":"viewing_card","event":"OPEN_CARD","eventId":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","effects":[["set","@entity.currentId","@payload.id"],["set","@entity.currentTitle","@payload.title"],["set","@entity.currentDescription","@payload.description"],["set","@entity.currentStage","@payload.stage"],["set","@entity.currentNotes","@payload.notes"],["set","@entity.currentRow","@payload.row"],["render-ui","main",{"children":[{"align":"center","children":[{"action":"CLOSE_CARD","icon":"arrow-left","label":"Back","type":"button","variant":"ghost"},{"name":"credit-card","size":"lg","type":"icon"},{"content":"@entity.currentTitle","type":"typography","variant":"h3"},{"label":"@entity.currentStage","type":"badge","variant":"primary"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"},{"children":[{"children":[{"color":"muted","content":"Description","type":"typography","variant":"caption"},{"content":"@entity.currentDescription","type":"typography","variant":"body"},{"type":"divider"},{"color":"muted","content":"Notes","type":"typography","variant":"caption"},{"content":"@entity.currentNotes","type":"typography","variant":"body"}],"direction":"vertical","gap":"sm","type":"stack"}],"look":"@config.cardLook","type":"card"},{"type":"divider"},{"color":"muted","content":"Move to stage:","type":"typography","variant":"caption"},{"entity":"@entity.boards","fields":[],"gap":"sm","renderItem":["fn",["col","colIndex"],{"action":"MOVE_CARD","actionPayload":{"id":"@entity.currentId","targetGroup":"@col.key"},"icon":"@col.icon","label":["if",["==",["array/len","@config.columnLabels"],0],"@col.label",["array/nth","@config.columnLabels","@colIndex"]],"type":"button","variant":"secondary"}],"type":"data-list","variant":"default"},"@config.cardActionsContent"],"direction":"vertical","gap":"md","type":"stack"}]]},{"from":"viewing_board","to":"adding","event":"ADD_CARD","eventId":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","effects":[["set","@entity.currentId",""],["set","@entity.currentTitle",""],["set","@entity.currentDescription",""],["set","@entity.currentStage",""],["set","@entity.currentNotes",""],["render-ui","main",{"children":[{"align":"center","children":[{"action":"CANCEL_ADD","icon":"x","label":"Cancel","type":"button","variant":"ghost"},{"name":"plus","size":"lg","type":"icon"},{"content":"New board item","type":"typography","variant":"h3"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"},{"cancelEvent":"CANCEL_ADD","entity":"@entity","fields":"@config.formFields","mode":"create","submitEvent":"SAVE_CARD","type":"form-section"}],"direction":"vertical","gap":"md","type":"stack"}]]},{"from":"viewing_board","to":"viewing_board","event":"MOVE_CARD","eventId":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","effects":[["persist","update","BoardView",{"id":"@payload.id","stage":"@payload.targetGroup"},{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}]]},{"from":"viewing_board","to":"viewing_board","event":"REORDER_CARD","eventId":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM"},{"from":"viewing_board","to":"viewing_board","event":"REORDER_POSITION","eventId":"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3","effects":[["persist","update","BoardView",{"id":"@payload.id","position":"@payload.position"},{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsSaved","eventId":"evt_63T9T6N7CEKP7DW65A48JWP4FG","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}]]},{"from":"viewing_board","to":"viewing_board","event":"REFETCH_QUERY","eventId":"evt_TDC9Z57X86YM3ENE36ET5S2EEN","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include","filter":["or",["=","@payload.searchTerm",""],["str/includes",["object/get","@entity","@config.searchField"],"@payload.searchTerm"]]}]]},{"from":"viewing_board","to":"viewing_board","event":"REFETCH_FILTER","eventId":"evt_1DH1AADD5VPJXQQ81DHWPZ2X37","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include","filter":["or",["=","@payload.value",""],["=",["object/get","@entity","@payload.field"],"@payload.value"]]}]]},{"from":"viewing_board","to":"viewing_board","event":"REFETCH_PAGE","eventId":"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include","limit":"@config.pageSize","offset":["*",["-","@payload.page",1],"@config.pageSize"]}]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsLoaded","eventId":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","effects":[["set","@entity.boards",["array/map","@config.columns",["fn","col",{"count":["array/len",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]]],"icon":["object/get","@col","icon","circle"],"items":["array/sort",["array/filter","@payload.data",["fn","item",["=",["object/get","@item","@config.groupByField"],["object/get","@col","key"]]]],"position"],"key":["object/get","@col","key"],"label":["object/get","@col","label"],"variant":["object/get","@col","variant","default"]}]]]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsSaveFailed","eventId":"evt_61XQGWSTF7X7KTHFQAV872PCQG","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't save the board — ","@payload.error"],"dismissible":true}]]},{"from":"viewing_board","to":"viewing_board","event":"BoardItemsLoadFailed","eventId":"evt_AE30K3DCJ8P942XEEXMQFH973N","effects":[["set","@entity.errorMessage","@payload.error"],["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't refresh the board — ","@payload.error"],"dismissible":true}]]},{"from":"viewing_card","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"viewing_card","to":"loading","event":"CLOSE_CARD","eventId":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"viewing_card","to":"loading","event":"MOVE_CARD","eventId":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","effects":[["persist","update","BoardView",{"id":"@payload.id","stage":"@payload.targetGroup"},{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}],["render-ui","main",{"title":"Moving item…","type":"loading-state"}]]},{"from":"viewing_card","to":"loading","event":"DELETE_CARD","eventId":"evt_15A65RA00T00D4SBPDPQZWFJFJ","effects":[["persist","delete","BoardView","@payload.id",{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemDeleted"}}]]},{"from":"adding","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["fetch","BoardView",{"emit":{"failure":"BoardItemsLoadFailed","success":"BoardItemsLoaded"},"include":"@config.include"}],["render-ui","main",{"type":"skeleton","variant":"card"}]]},{"from":"adding","to":"loading","event":"SAVE_CARD","eventId":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","effects":[["persist","create","BoardView","@payload.data",{"emit":{"failure":"BoardItemsSaveFailed","success":"BoardItemsSaved"}}]]},{"from":"adding","to":"viewing_board","event":"CANCEL_ADD","eventId":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","effects":[["render-ui","main",{"title":"Cancelling…","type":"loading-state"}]]},{"from":"error","to":"loading","event":"INIT","eventId":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","effects":[["render-ui","main",{"type":"skeleton","variant":"card"}]]}]},"config":{"searchField":{"type":"string","default":"title","label":"Which column does the search box match against?","description":"Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `title` column must set this to a real field (e.g. name, summary) or the search box can never match a card.","synonyms":"search column, search on field, match field, search key","tier":"policy"},"gridCols":{"type":"number","default":3,"label":"Grid columns","description":"Outer grid column count before the board wraps","tier":"presentation"},"cardTitleBinding":{"type":"string","default":"@item.title","label":"Card title binding","description":"Per-card binding for the title slot.","tier":"presentation"},"cardNotesBinding":{"type":"string","default":"@item.notes","label":"Card notes binding","description":"Per-card binding for the notes slot shown in the card detail view. Set to an empty string for hosts with no notes-equivalent field — declared as 'no notes capture', never inferred.","tier":"presentation"},"addPlacement":{"type":"string","default":"floating","label":"Add button placement","description":"Where the add-item button sits: 'floating' (default) pins a floating action button to the screen corner; 'inline' renders an ordinary Add button above the columns, for a board embedded in a card or panel.; none hides the add button (a read-only board)","synonyms":"add button position, floating add, inline add, add item button placement. user phrases: 'put the add button inside the board' / 'no floating button' -> inline","tier":"presentation","values":["floating","inline","none"]},"kanbanClassicBodyContent":{"type":"render-ui","default":{"children":[["if",["=","@config.addPlacement","inline"],{"children":[{"action":"ADD_CARD","icon":"plus","label":"Add card","size":"sm","type":"button","variant":"secondary"}],"direction":"horizontal","gap":"sm","justify":"end","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"xl","type":"icon"},{"content":"@config.title","type":"typography","variant":"h2"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"className":"px-card-md","direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"className":"w-full pb-2","dndRoot":"@config.draggable","entity":"@entity.boards","fields":[],"gap":"lg","minCardWidth":300,"renderItem":["fn",["col","colIndex"],{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"className":"flex-1","content":["if",["==",["array/len","@config.columnLabels"],0],"@col.label",["array/nth","@config.columnLabels","@colIndex"]],"type":"typography","variant":"h4"},{"label":"@col.count","size":"sm","type":"badge","variant":"primary"}],"className":"p-card-md border-b border-[var(--color-border)] sticky top-0 bg-[var(--color-surface)]","direction":"horizontal","gap":"sm","type":"stack"},{"accepts":["if","@config.draggable","*",""],"className":"p-card-md min-h-[120px]","dragGroup":["if","@config.draggable","@col.key",""],"dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"body","weight":"medium"},{"className":"line-clamp-2","color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"label":"@config.cardStageBinding","size":"sm","type":"badge","variant":"@col.variant"},{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"className":"ml-auto","icon":"arrow-right","label":"Open","size":"sm","type":"button","variant":"ghost"}],"className":"pt-1","direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"className":"cursor-grab hover:shadow-lg transition-shadow","look":"@config.cardLook","padding":"sm","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":"@config.draggable","itemEnter":"@config.cardEnter","type":"data-list"}],"direction":"vertical","gap":"none","type":"stack"}],"className":"w-[300px] bg-[var(--color-surface-subtle)] rounded-lg overflow-hidden","look":"elevated","padding":"none","type":"card"}],"scrollX":true,"type":"data-grid"},["if",["=","@config.addPlacement","floating"],{"action":"ADD_CARD","icon":"plus","label":"Add card","type":"floating-action-button","variant":"primary"},{"children":[],"gap":"none","type":"stack"}]],"className":"h-full","direction":"vertical","gap":"md","type":"stack"},"label":"Kanban classic body content tree","description":"Render-ui SExpr for boardLook='kanban-classic' — Trello-style wide elevated columns with sticky headers, dense cards with a status badge; per-item cards honor config.cardLook (the column wrapper stays elevated — it is column chrome, not a card).","tier":"internal"},"cardActionsContent":{"type":"render-ui","default":{"align":"center","children":["array/map",["array/filter","@config.cardActions",["fn","action",["or",["=",["array/len",["object/get","@action","roles",[]]],0],["array/includes",["object/get","@action","roles",[]],"@config.viewerRole"]]]],["fn","a",{"action":"@a.event","actionPayload":{"id":"@entity.currentId"},"icon":"@a.icon","label":"@a.label","type":"button","variant":"@a.variant"}]],"direction":"horizontal","gap":"sm","type":"stack"},"label":"Card panel actions","description":"Actions row of the open-card panel. Default is the Delete button only. Override to add consumer-wired actions — e.g. an Edit button with action: EDIT_CARD and actionPayload: { id: @entity.currentId, row: @entity.currentRow }, listened to by the organism's edit modal. Never leave a button here without a listener.","tier":"presentation"},"showHeader":{"type":"boolean","default":true,"label":"Show the board's own title row?","description":"Off when the page already carries a page header naming the same thing, so the page shows one title.","tier":"presentation"},"filterBarLook":{"type":"string","default":"toolbar","label":"Filter bar look","description":"Visual treatment for the embedded filter bar, mirroring std-filter's own enum. Only applies when `filters` is non-empty.","synonyms":"filter bar style, facet style, chips, pills","tier":"presentation","values":["toolbar","chips","pills","popover-trigger","inline-column-header"]},"columnLabels":{"type":"[string]","default":[],"label":"Column labels","description":"Optional labels in the same order as the columns, used only where the board is drawn, so they may be translated; empty shows each column's own label","tier":"presentation","items":{"type":"string"}},"viewerRole":{"type":"string","default":"","label":"Viewer's role","description":"The signed-in viewer's role that each card action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show.","tier":"policy"},"title":{"type":"string","default":"Board","label":"Board title","description":"Heading shown above the column board","tier":"presentation"},"bodySearch":{"type":"boolean","default":false,"label":"Show the board's own search box?","description":"Renders an inline search box above the columns. Defaults false: unlike std-browse, std-board has never had a search box, so defaulting this true would silently add one to every existing consumer. The wired path — composing std-search beside the board and routing its FILTER/SEARCH event to REFETCH_QUERY — works regardless of this knob; set true only for a standalone board with no page-level search affordance.","synonyms":"inline search, board search, built-in search, show search, duplicate search","tier":"presentation"},"cardStageBinding":{"type":"string","default":"@item.stage","label":"Card stage binding","description":"Per-card binding for the stage/status slot.","tier":"presentation"},"cardLook":{"type":"string","default":"elevated","label":"Card look","description":"Layer 2 visual treatment for cards rendered by this board.","tier":"presentation","values":["elevated","flat-bordered","borderless-divider","ticket","invoice","chip","tile-image-first"]},"cardIdBinding":{"type":"string","default":"@item.id","label":"Card id binding","description":"Per-card binding for the id used in action payloads.","tier":"presentation"},"cardDescriptionBinding":{"type":"string","default":"@item.description","label":"Card description binding","description":"Per-card binding for the description slot.","tier":"presentation"},"include":{"type":"[string]","default":[],"label":"Which relation fields to hydrate?","description":"Entity relation field names to hydrate on fetch (e.g. an `assignee : TeamMember` field named `assignee`), so card bindings can use dot-paths like @item.assignee.name. Empty = no hydration, the default.","synonyms":"relation hydration, populate relations, joined fields, hydrate relations","tier":"domain","items":{"type":"string"}},"pageSize":{"type":"number","default":10,"label":"Fetch page size","description":"Records fetched per REFETCH_PAGE request. std-board renders no pagination control itself — this only feeds the fetch limit/offset when a consumer wires a composed std-pagination to REFETCH_PAGE.","synonyms":"fetch limit, records per page, batch size, page limit","tier":"presentation"},"boardLook":{"type":"string","default":"columns","label":"Board look","description":"Layer 3 body layout: default N-column data-grid ('columns'), or a Trello-style wide-column kanban with sticky column headers ('kanban-classic').","tier":"presentation","values":["columns","kanban-classic"]},"draggable":{"type":"boolean","default":true,"label":"Drag cards","description":"Let people drag cards between columns and reorder them; off shows the board read-only to the pointer (moves still work through events)","tier":"presentation"},"formFields":{"type":"[string]","default":["title","description","stage","notes"],"label":"New-card fields","description":"Fields shown in the add-card form","tier":"presentation","items":{"type":"string"}},"groupByField":{"type":"string","default":"stage","label":"Group-by field","description":"Entity field whose value matches a column key — items are filtered into columns by it. Default 'stage'; set to 'status' (or any field) for entities that track state under a different name.","tier":"presentation"},"cardActions":{"type":"[ItemAction]","default":[{"event":"DELETE_CARD","icon":"trash-2","label":"Delete","variant":"danger"}],"label":"Card panel action list","description":"Buttons on the open-card panel's actions row, built by the default cardActionsContent. Give an item `roles` to show it only to those viewer roles.","tier":"presentation","items":{"type":"object","properties":{"roles":{"name":"roles","type":"array","required":false,"items":{"type":"string"}},"event":{"name":"event","type":"event","required":false},"icon":{"name":"icon","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false,"values":["primary","secondary","ghost","danger"]},"label":{"name":"label","type":"string","required":true}}}},"cardEnter":{"type":"string","default":"none","label":"Card entrance","description":"Animation a card plays when it appears in a column, so a moved card visibly arrives","tier":"presentation","values":["none","fade","rise","scale","slide"]},"bodyContent":{"type":"render-ui","default":{"children":[["if",["=","@config.addPlacement","inline"],{"children":[{"action":"ADD_CARD","icon":"plus","label":"Add item","size":"sm","type":"button","variant":"secondary"}],"direction":"horizontal","gap":"sm","justify":"end","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.showHeader",{"children":[{"align":"center","children":[{"name":"kanban-square","size":"lg","type":"icon"},{"content":"@config.title","type":"typography","variant":"h3"}],"direction":"horizontal","gap":"sm","type":"stack"},{"type":"divider"}],"direction":"vertical","gap":"md","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if","@config.bodySearch",{"children":[{"className":"w-full max-w-md","clearable":true,"event":"REFETCH_QUERY","placeholder":"@config.searchPlaceholder","type":"search-input"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],["if",[">",["array/len","@config.filters"],0],{"children":[{"entity":"BoardView","event":"REFETCH_FILTER","filters":"@config.filters","look":"@config.filterBarLook","type":"filter-group"}],"direction":"horizontal","gap":"sm","type":"stack"},{"children":[],"gap":"none","type":"stack"}],{"cols":"@config.gridCols","dndRoot":"@config.draggable","entity":"@entity.boards","fields":[],"gap":"md","renderItem":["fn",["col","colIndex"],{"children":[{"children":[{"align":"center","children":[{"name":"@col.icon","type":"icon"},{"content":["if",["==",["array/len","@config.columnLabels"],0],"@col.label",["array/nth","@config.columnLabels","@colIndex"]],"type":"typography","variant":"h4"},{"label":"@col.count","type":"badge","variant":"@col.variant"}],"direction":"horizontal","gap":"xs","type":"stack"},{"accepts":["if","@config.draggable","*",""],"dragGroup":["if","@config.draggable","@col.key",""],"dropEvent":"MOVE_CARD","entity":"@col.items","fields":[],"gap":"sm","positionEvent":"REORDER_POSITION","renderItem":["fn","item",{"children":[{"children":[{"content":"@config.cardTitleBinding","type":"typography","variant":"h4"},{"color":"muted","content":"@config.cardDescriptionBinding","type":"typography","variant":"caption"},{"align":"center","children":[{"action":"OPEN_CARD","actionPayload":{"description":"@config.cardDescriptionBinding","id":"@config.cardIdBinding","notes":"@config.cardNotesBinding","row":"@item","stage":"@config.cardStageBinding","title":"@config.cardTitleBinding"},"icon":"arrow-right","label":"Open","type":"button","variant":"ghost"}],"direction":"horizontal","gap":"xs","type":"stack"}],"direction":"vertical","gap":"xs","type":"stack"}],"look":"@config.cardLook","type":"card"}],"reorderEvent":"REORDER_CARD","sortable":"@config.draggable","itemEnter":"@config.cardEnter","type":"data-list"}],"direction":"vertical","gap":"sm","type":"stack"}],"look":"@config.cardLook","type":"card"}],"type":"data-grid"},["if",["=","@config.addPlacement","floating"],{"action":"ADD_CARD","icon":"plus","label":"Add item","type":"floating-action-button","variant":"primary"},{"children":[],"gap":"none","type":"stack"}]],"direction":"vertical","gap":"md","type":"stack"},"label":"Body content tree","description":"Render-ui SExpr rendered after the board loads for boardLook='columns' — the canonical column data-grid with nested per-column data-lists. boardLook='kanban-classic' renders kanbanClassicBodyContent instead; both share this trait's state machine, emits, and listens.","tier":"internal"},"columns":{"type":"[ColumnSpec]","default":[{"icon":"circle","key":"todo","label":"To Do","variant":"default"},{"icon":"circle-dot","key":"doing","label":"In Progress","variant":"primary"},{"icon":"check-circle","key":"done","label":"Done","variant":"success"}],"label":"Columns","description":"Board columns; each row's stage maps to a column key","tier":"domain","items":{"type":"object","properties":{"key":{"name":"key","type":"string","required":true},"label":{"name":"label","type":"string","required":true},"icon":{"name":"icon","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false}}}},"searchPlaceholder":{"type":"string","default":"Search…","label":"Search box placeholder text","description":"Hint text inside the board's embedded search box (e.g. 'Search cards…'). Only shown when bodySearch is true.","synonyms":"search hint, placeholder, search box text, search label","tier":"presentation"},"filters":{"type":"[FilterSpec]","default":[],"label":"Which filters should appear above the board?","description":"Dropdown filter facets by field, rendered as an embedded filter bar above the columns; each selection fires REFETCH_FILTER on this trait. Empty (the default) = no filter bar, which is the right setting whenever the page already composes std-filter beside this board and routes its FILTER event to REFETCH_FILTER — that is the wired owner and remains the primary path. Use this knob only for a standalone board with no page-level filter affordance.","synonyms":"filter bar, faceted filters, field filters, column filters, dropdowns","tier":"presentation","items":{"type":"object","properties":{"options":{"name":"options","type":"array","required":false,"items":{"type":"string"}},"label":{"name":"label","type":"string","required":false},"field":{"name":"field","type":"string","required":true}}}}},"scope":"instance"}],"pages":[{"name":"BoardPage","id":"pag_TTD5BC4SK3CSHWE65BW6AEP4KS","path":"/board","traits":[{"ref":"BoardItemBoard","refId":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"}]}],"types":{"BoardColumn":[{"name":"key","type":"string","required":true},{"name":"label","type":"string","required":true},{"name":"icon","type":"string"},{"name":"variant","type":"string","values":["default","primary","success","warning","error","info"]},{"name":"count","type":"number"},{"name":"items","type":"[object]","properties":[{"name":"id","type":"string","required":true},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"stage","type":"string"},{"name":"notes","type":"string"},{"name":"position","type":"number"}]}],"BoardItem":[{"name":"id","type":"string","required":true},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"stage","type":"string"},{"name":"notes","type":"string"},{"name":"position","type":"number"}],"ColumnSpec":[{"name":"key","type":"string","required":true},{"name":"label","type":"string","required":true},{"name":"icon","type":"string"},{"name":"variant","type":"string"}],"FilterSpec":[{"name":"field","type":"string","required":true},{"name":"label","type":"string"},{"name":"options","type":"[string]"}],"ItemAction":[{"name":"label","type":"string","required":true},{"name":"event","type":"event"},{"name":"variant","type":"string","values":["primary","secondary","ghost","danger"]},{"name":"icon","type":"string"},{"name":"roles","type":"[string]"}],"ObjectSpec":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M":{"id":"ent_VTZJ8M5MF0T7GDPPYYGKAKCV3M","kind":"entity","bakedName":"BoardView","curName":"BoardView","renames":[],"owner":"workspace"},"evt_0063ZZKV1WXGY7AS72NVA8CKTS":{"id":"evt_0063ZZKV1WXGY7AS72NVA8CKTS","kind":"event","bakedName":"CLOSE_CARD","curName":"CLOSE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_15A65RA00T00D4SBPDPQZWFJFJ":{"id":"evt_15A65RA00T00D4SBPDPQZWFJFJ","kind":"event","bakedName":"DELETE_CARD","curName":"DELETE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_1DH1AADD5VPJXQQ81DHWPZ2X37":{"id":"evt_1DH1AADD5VPJXQQ81DHWPZ2X37","kind":"event","bakedName":"REFETCH_FILTER","curName":"REFETCH_FILTER","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_61XQGWSTF7X7KTHFQAV872PCQG":{"id":"evt_61XQGWSTF7X7KTHFQAV872PCQG","kind":"event","bakedName":"BoardItemsSaveFailed","curName":"BoardItemsSaveFailed","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_63T9T6N7CEKP7DW65A48JWP4FG":{"id":"evt_63T9T6N7CEKP7DW65A48JWP4FG","kind":"event","bakedName":"BoardItemsSaved","curName":"BoardItemsSaved","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG":{"id":"evt_6HQA6ARAZQ5FVKSGAV2J2MJWDG","kind":"event","bakedName":"MOVE_CARD","curName":"MOVE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_74SX86MXB2ENHEQVA51M8R9ZQJ":{"id":"evt_74SX86MXB2ENHEQVA51M8R9ZQJ","kind":"event","bakedName":"OPEN_CARD","curName":"OPEN_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_75DH9HW6PY3BF5YBTCX5WAJBZV":{"id":"evt_75DH9HW6PY3BF5YBTCX5WAJBZV","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3":{"id":"evt_7XSRZE7AW3NE1ZS3S1T2BZHRQ3","kind":"event","bakedName":"REORDER_POSITION","curName":"REORDER_POSITION","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_AE30K3DCJ8P942XEEXMQFH973N":{"id":"evt_AE30K3DCJ8P942XEEXMQFH973N","kind":"event","bakedName":"BoardItemsLoadFailed","curName":"BoardItemsLoadFailed","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_AVCP1826YK3F9Z47YF5GFRKZDT":{"id":"evt_AVCP1826YK3F9Z47YF5GFRKZDT","kind":"event","bakedName":"EDIT_CARD","curName":"EDIT_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_B69SMFWX4NEJAPXE3MHR8RXD2H":{"id":"evt_B69SMFWX4NEJAPXE3MHR8RXD2H","kind":"event","bakedName":"CANCEL_ADD","curName":"CANCEL_ADD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1":{"id":"evt_FHDNHEWB2S5HCQYZQ2RTZ8T0V1","kind":"event","bakedName":"ADD_CARD","curName":"ADD_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_JK4F8TY0FA07N7YY79CFPRRPSC":{"id":"evt_JK4F8TY0FA07N7YY79CFPRRPSC","kind":"event","bakedName":"BoardItemsLoaded","curName":"BoardItemsLoaded","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_S7N6473BQ9NVMJYS1HHR0YCA7G":{"id":"evt_S7N6473BQ9NVMJYS1HHR0YCA7G","kind":"event","bakedName":"BoardItemDeleted","curName":"BoardItemDeleted","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_T0YQ7B1WY1YF0M123FDEXAEPCD":{"id":"evt_T0YQ7B1WY1YF0M123FDEXAEPCD","kind":"event","bakedName":"SAVE_CARD","curName":"SAVE_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_TDC9Z57X86YM3ENE36ET5S2EEN":{"id":"evt_TDC9Z57X86YM3ENE36ET5S2EEN","kind":"event","bakedName":"REFETCH_QUERY","curName":"REFETCH_QUERY","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM":{"id":"evt_TTDC2D4WFRE7WESTMFHDQZ4EQM","kind":"event","bakedName":"REORDER_CARD","curName":"REORDER_CARD","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW":{"id":"evt_YXV3GS7MNETAQ7XX8JDDVEDYJW","kind":"event","bakedName":"REFETCH_PAGE","curName":"REFETCH_PAGE","renames":[],"owner":"workspace","parent":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR"},"orb_G5D8GHSG7KR3SHFC7M6VH3M69S":{"id":"orb_G5D8GHSG7KR3SHFC7M6VH3M69S","kind":"orbital","bakedName":"BoardOrbital","curName":"BoardOrbital","renames":[],"owner":"workspace"},"pag_TTD5BC4SK3CSHWE65BW6AEP4KS":{"id":"pag_TTD5BC4SK3CSHWE65BW6AEP4KS","kind":"page","bakedName":"BoardPage","curName":"BoardPage","renames":[],"owner":"workspace"},"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR":{"id":"trt_AMGZFSKXJGYS8AKQJY7B2G3HHR","kind":"trait","bakedName":"BoardItemBoard","curName":"BoardItemBoard","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-book-reader","version":"1.0.0","description":"std-book-reader — reads a multi-chapter book one chapter at a time. Opens on a cover (cover image, title, subtitle, author, a start button and the table of contents); reading shows a contents rail with the current chapter marked, the chapter title and progress, the chapter text (markdown) and previous/next buttons. Supports right-to-left books. Emits CHAPTER_OPENED on every chapter change. Pick for handbooks, manifestos, course readers and long-form guides.","orbitals":[{"name":"BookReaderOrbital","id":"orb_B03Y27YXQTEVXAF49T3740P1S8","entity":{"name":"BookReaderView","id":"ent_0TS16649YT4ZDA3GRG30E55NWA","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"chapterIndex","type":"number","default":0},{"name":"chapterTitle","type":"string","default":""},{"name":"chapterContent","type":"string","default":""},{"name":"progressLabel","type":"string","default":""},{"name":"isFirst","type":"boolean","default":true},{"name":"isLast","type":"boolean","default":false}]},"traits":[{"name":"BookReaderRead","id":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE","entityRebindable":true,"entityContract":{"requires":[],"provides":["chapterContent","chapterIndex","chapterTitle","isFirst","isLast","progressLabel"]},"effectRow":[{"kind":"emit","resource":"CHAPTER_OPENED"},{"kind":"render-ui","resource":"main"},{"kind":"set","resource":"@entity.chapterContent"},{"kind":"set","resource":"@entity.chapterIndex"},{"kind":"set","resource":"@entity.chapterTitle"},{"kind":"set","resource":"@entity.isFirst"},{"kind":"set","resource":"@entity.isLast"},{"kind":"set","resource":"@entity.progressLabel"}],"category":"interaction","linkedEntity":"BookReaderView","linkedEntityId":"ent_0TS16649YT4ZDA3GRG30E55NWA","entityRefIds":{"BookReaderView":"ent_0TS16649YT4ZDA3GRG30E55NWA"},"emits":[{"event":"CHAPTER_OPENED","eventId":"evt_BTYJ3WMXKYESZ19TXTW0J03DRC","description":"The reader moved to a chapter; carries its index and title.","synonyms":"page turned, chapter changed, reading progress","tier":"domain","scope":"external","payloadSchema":[{"name":"index","type":"number"},{"name":"title","type":"string"}]}],"stateMachine":{"states":[{"name":"cover","isInitial":true},{"name":"reading"}],"events":[{"key":"INIT","id":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","name":"Initialize"},{"key":"START_READING","id":"evt_VBWK4V8HW88Y463XYYF30P1X9D","name":"Start Reading"},{"key":"OPEN_CHAPTER","id":"evt_J2504VA11S0GWT23B6MHPJ129Q","name":"Open Chapter","description":"Jump to a chapter from the table of contents.","tier":"internal","payloadSchema":[{"name":"index","type":"number","required":true}],"listened":true},{"key":"NEXT_CHAPTER","id":"evt_KT5H4P53TVHXDQ9BHD71TD7NM6","name":"Next Chapter"},{"key":"PREV_CHAPTER","id":"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5","name":"Prev Chapter"},{"key":"BACK_TO_COVER","id":"evt_NNMYNV58DZM6ZV70KPFVTMF74T","name":"Back To Cover"},{"key":"CHAPTER_OPENED","id":"evt_BTYJ3WMXKYESZ19TXTW0J03DRC","name":"Chapter Opened","description":"The reader moved to a chapter; carries its index and title.","synonyms":"page turned, chapter changed, reading progress","tier":"domain","payloadSchema":[{"name":"index","type":"number"},{"name":"title","type":"string"}]}],"transitions":[{"from":"cover","to":"cover","event":"INIT","eventId":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","guard":["==","@config.opensAt","cover"],"effects":[["render-ui","main","@config.coverContent"]]},{"from":"cover","to":"reading","event":"INIT","eventId":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","guard":["==","@config.opensAt","reading"],"effects":[["set","@entity.chapterIndex",0],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters",0],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters",0],"content",""]],["set","@entity.isFirst",true],["set","@entity.isLast",["<=",["array/len","@config.chapters"],1]],["set","@entity.progressLabel",["str/concat","1 / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"]]},{"from":"cover","to":"reading","event":"START_READING","eventId":"evt_VBWK4V8HW88Y463XYYF30P1X9D","effects":[["set","@entity.chapterIndex",0],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters",0],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters",0],"content",""]],["set","@entity.isFirst",true],["set","@entity.isLast",["<=",["array/len","@config.chapters"],1]],["set","@entity.progressLabel",["str/concat","1 / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":0,"title":"@entity.chapterTitle"}]]},{"from":"cover","to":"reading","event":"OPEN_CHAPTER","eventId":"evt_J2504VA11S0GWT23B6MHPJ129Q","effects":[["set","@entity.chapterIndex","@payload.index"],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@payload.index"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@payload.index"],"content",""]],["set","@entity.isFirst",["==","@payload.index",0]],["set","@entity.isLast",[">=","@payload.index",["-",["array/len","@config.chapters"],1]]],["set","@entity.progressLabel",["str/concat",["+","@payload.index",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@payload.index","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"reading","event":"INIT","eventId":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","effects":[["render-ui","main","@config.readingContent"]]},{"from":"reading","to":"reading","event":"OPEN_CHAPTER","eventId":"evt_J2504VA11S0GWT23B6MHPJ129Q","effects":[["set","@entity.chapterIndex","@payload.index"],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@payload.index"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@payload.index"],"content",""]],["set","@entity.isFirst",["==","@payload.index",0]],["set","@entity.isLast",[">=","@payload.index",["-",["array/len","@config.chapters"],1]]],["set","@entity.progressLabel",["str/concat",["+","@payload.index",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@payload.index","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"reading","event":"NEXT_CHAPTER","eventId":"evt_KT5H4P53TVHXDQ9BHD71TD7NM6","guard":["not","@entity.isLast"],"effects":[["set","@entity.chapterIndex",["+","@entity.chapterIndex",1]],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"content",""]],["set","@entity.isFirst",false],["set","@entity.isLast",[">=","@entity.chapterIndex",["-",["array/len","@config.chapters"],1]]],["set","@entity.progressLabel",["str/concat",["+","@entity.chapterIndex",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@entity.chapterIndex","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"reading","event":"PREV_CHAPTER","eventId":"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5","guard":["not","@entity.isFirst"],"effects":[["set","@entity.chapterIndex",["-","@entity.chapterIndex",1]],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"content",""]],["set","@entity.isFirst",["==","@entity.chapterIndex",0]],["set","@entity.isLast",false],["set","@entity.progressLabel",["str/concat",["+","@entity.chapterIndex",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@entity.chapterIndex","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"cover","event":"BACK_TO_COVER","eventId":"evt_NNMYNV58DZM6ZV70KPFVTMF74T","effects":[["render-ui","main","@config.coverContent"]]}]},"config":{"opensAt":{"type":"string","default":"cover","label":"Opens at","description":"Where the reader opens: the cover, or straight into the first chapter (an article read in place)","tier":"presentation","values":["cover","reading"]},"subtitle":{"type":"string","default":"","label":"Subtitle","tier":"presentation"},"startLabel":{"type":"string","default":"Start reading","label":"Start button label","tier":"presentation"},"author":{"type":"string","default":"","label":"Author","tier":"presentation"},"nextLabel":{"type":"string","default":"Next","label":"Next button label","tier":"presentation"},"coverImage":{"type":"string","default":"","label":"Cover image","description":"Cover image URL; empty hides it","tier":"presentation"},"contentsLabel":{"type":"string","default":"Contents","label":"Contents heading","tier":"presentation"},"previousLabel":{"type":"string","default":"Previous","label":"Previous button label","tier":"presentation"},"chapters":{"type":"[BookChapter]","default":[{"title":"Chapter one","content":"The first chapter's text, in **markdown**."},{"title":"Chapter two","content":"The second chapter's text."}],"label":"Chapters","description":"Ordered chapters: a title and markdown content each","synonyms":"sections, parts, pages, table of contents","tier":"presentation","items":{"type":"object","properties":{"title":{"name":"title","type":"string","required":true},"content":{"name":"content","type":"string","required":true}}}},"direction":{"type":"string","default":"ltr","label":"Text direction","description":"rtl for Arabic, Hebrew and other right-to-left books","synonyms":"right to left, arabic book","tier":"presentation","values":["ltr","rtl"]},"coverContent":{"type":"render-ui","default":{"type":"box","paddingY":"2xl","fullWidth":true,"dir":"@config.direction","children":[{"type":"container","size":"md","maxWidth":"md","padding":"lg","children":[{"type":"stack","direction":"vertical","gap":"xl","children":[{"type":"stack","direction":"vertical","gap":"md","align":"center","children":[{"type":"image","src":"@config.coverImage","alt":"@config.title","rounded":"lg","bordered":true,"loading":"eager","className":"max-w-xs"},{"type":"typography","content":"@config.title","variant":"h1","weight":"bold","align":"center","className":"tracking-tight text-balance"},{"type":"typography","content":"@config.subtitle","variant":"large","color":"muted","align":"center","className":["if",["==","@config.subtitle",""],"hidden","text-pretty"]},{"type":"typography","content":"@config.author","variant":"label","color":"muted","align":"center","className":["if",["==","@config.author",""],"hidden",""]},{"type":"button","label":"@config.startLabel","variant":"primary","size":"lg","action":"START_READING","className":["if",["==",["array/len","@config.chapters"],0],"hidden",""]}]},{"type":"stack","direction":"vertical","gap":"xs","className":["if",["==",["array/len","@config.chapters"],0],"hidden",""],"children":[{"type":"typography","content":"@config.contentsLabel","variant":"label","weight":"semibold"},{"type":"stack","direction":"vertical","gap":"none","align":"start","children":["array/map","@config.chapters",["fn","chapter",{"type":"button","variant":"link","label":["str/concat",["+","@index",1],". ",["object/get","@chapter","title",""]],"action":"OPEN_CHAPTER","actionPayload":{"index":"@index"}}]]}]}]}]}]},"label":"Cover body","tier":"internal"},"readingContent":{"type":"render-ui","default":{"type":"box","paddingY":"xl","fullWidth":true,"dir":"@config.direction","children":[{"type":"container","size":"xl","maxWidth":"xl","padding":"lg","children":[{"type":"split","ratio":"1:3","gap":"xl","children":[{"type":"stack","direction":"vertical","gap":"xs","align":"start","className":"lg:sticky lg:top-6 self-start","children":[{"type":"typography","content":"@config.title","variant":"h5","weight":"semibold","className":"text-balance"},{"type":"typography","content":"@config.author","variant":"caption","color":"muted","className":["if",["==","@config.author",""],"hidden","pb-2"]},{"type":"button","variant":"link","label":"@config.coverLabel","leftIcon":"book-open","action":"BACK_TO_COVER"},{"type":"typography","content":"@config.contentsLabel","variant":"label","weight":"semibold","className":"pt-2"},{"type":"stack","direction":"vertical","gap":"none","align":"start","children":["array/map","@config.chapters",["fn","chapter",{"type":"button","variant":"link","label":["object/get","@chapter","title",""],"action":"OPEN_CHAPTER","actionPayload":{"index":"@index"},"aria-current":["if",["==","@index","@entity.chapterIndex"],"page","false"],"className":["if",["==","@index","@entity.chapterIndex"],"h-auto justify-start text-start text-foreground font-semibold","h-auto justify-start text-start"]}]]}]},{"type":"stack","direction":"vertical","gap":"lg","children":[{"type":"stack","direction":"vertical","gap":"lg","role":"status","children":[{"type":"typography","content":"@entity.progressLabel","variant":"caption","color":"muted"},{"type":"typography","content":"@entity.chapterTitle","variant":"h1","size":"3xl","weight":"bold","className":"tracking-tight"}]},{"type":"markdown-content","content":"@entity.chapterContent","direction":"@config.direction"},{"type":"divider"},{"type":"stack","direction":"horizontal","gap":"md","justify":"between","children":[{"type":"button","variant":"secondary","label":"@config.previousLabel","leftIcon":["if",["==","@config.direction","rtl"],"chevron-right","chevron-left"],"action":"PREV_CHAPTER","disabled":"@entity.isFirst"},{"type":"button","variant":"primary","label":"@config.nextLabel","rightIcon":["if",["==","@config.direction","rtl"],"chevron-left","chevron-right"],"action":"NEXT_CHAPTER","disabled":"@entity.isLast"}]}]}]}]}]},"label":"Reading body","tier":"internal"},"coverLabel":{"type":"string","default":"Cover","label":"Back-to-cover label","tier":"presentation"},"title":{"type":"string","default":"Untitled book","label":"Title","tier":"presentation"}},"scope":"instance"}],"pages":[{"name":"BookReaderPage","id":"pag_GG2EGWA86Z43FRWG9772C5FW54","path":"/book","traits":[{"ref":"BookReaderRead","refId":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"}]}],"types":{"BookChapter":[{"name":"title","type":"string","required":true},{"name":"content","type":"string","required":true}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_0TS16649YT4ZDA3GRG30E55NWA":{"id":"ent_0TS16649YT4ZDA3GRG30E55NWA","kind":"entity","bakedName":"BookReaderView","curName":"BookReaderView","renames":[],"owner":"workspace"},"evt_BTYJ3WMXKYESZ19TXTW0J03DRC":{"id":"evt_BTYJ3WMXKYESZ19TXTW0J03DRC","kind":"event","bakedName":"CHAPTER_OPENED","curName":"CHAPTER_OPENED","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_DT69VP8EQS7BWSN71KYTSDGJZT":{"id":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_J2504VA11S0GWT23B6MHPJ129Q":{"id":"evt_J2504VA11S0GWT23B6MHPJ129Q","kind":"event","bakedName":"OPEN_CHAPTER","curName":"OPEN_CHAPTER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_KT5H4P53TVHXDQ9BHD71TD7NM6":{"id":"evt_KT5H4P53TVHXDQ9BHD71TD7NM6","kind":"event","bakedName":"NEXT_CHAPTER","curName":"NEXT_CHAPTER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_NNMYNV58DZM6ZV70KPFVTMF74T":{"id":"evt_NNMYNV58DZM6ZV70KPFVTMF74T","kind":"event","bakedName":"BACK_TO_COVER","curName":"BACK_TO_COVER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5":{"id":"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5","kind":"event","bakedName":"PREV_CHAPTER","curName":"PREV_CHAPTER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_VBWK4V8HW88Y463XYYF30P1X9D":{"id":"evt_VBWK4V8HW88Y463XYYF30P1X9D","kind":"event","bakedName":"START_READING","curName":"START_READING","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"orb_B03Y27YXQTEVXAF49T3740P1S8":{"id":"orb_B03Y27YXQTEVXAF49T3740P1S8","kind":"orbital","bakedName":"BookReaderOrbital","curName":"BookReaderOrbital","renames":[],"owner":"workspace"},"pag_GG2EGWA86Z43FRWG9772C5FW54":{"id":"pag_GG2EGWA86Z43FRWG9772C5FW54","kind":"page","bakedName":"BookReaderPage","curName":"BookReaderPage","renames":[],"owner":"workspace"},"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE":{"id":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE","kind":"trait","bakedName":"BookReaderRead","curName":"BookReaderRead","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-book-reader","version":"1.0.0","description":"std-book-reader — reads a multi-chapter book one chapter at a time. Opens on a cover (cover image, title, subtitle, author, a start button and the table of contents); reading shows a contents rail with the current chapter marked, the chapter title and progress, the chapter text (markdown) and previous/next buttons. Supports right-to-left books. Emits CHAPTER_OPENED on every chapter change. Pick for handbooks, manifestos, course readers and long-form guides.","orbitals":[{"name":"BookReaderOrbital","id":"orb_B03Y27YXQTEVXAF49T3740P1S8","entity":{"name":"BookReaderView","id":"ent_0TS16649YT4ZDA3GRG30E55NWA","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"chapterIndex","type":"number","default":0},{"name":"chapterTitle","type":"string","default":""},{"name":"chapterContent","type":"string","default":""},{"name":"progressLabel","type":"string","default":""},{"name":"isFirst","type":"boolean","default":true},{"name":"isLast","type":"boolean","default":false}]},"traits":[{"name":"BookReaderRead","id":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE","entityRebindable":true,"entityContract":{"requires":[],"provides":["chapterContent","chapterIndex","chapterTitle","isFirst","isLast","progressLabel"]},"effectRow":[{"kind":"emit","resource":"CHAPTER_OPENED"},{"kind":"render-ui","resource":"main"},{"kind":"set","resource":"@entity.chapterContent"},{"kind":"set","resource":"@entity.chapterIndex"},{"kind":"set","resource":"@entity.chapterTitle"},{"kind":"set","resource":"@entity.isFirst"},{"kind":"set","resource":"@entity.isLast"},{"kind":"set","resource":"@entity.progressLabel"}],"category":"interaction","linkedEntity":"BookReaderView","linkedEntityId":"ent_0TS16649YT4ZDA3GRG30E55NWA","entityRefIds":{"BookReaderView":"ent_0TS16649YT4ZDA3GRG30E55NWA"},"emits":[{"event":"CHAPTER_OPENED","eventId":"evt_BTYJ3WMXKYESZ19TXTW0J03DRC","description":"The reader moved to a chapter; carries its index and title.","synonyms":"page turned, chapter changed, reading progress","tier":"domain","scope":"external","payloadSchema":[{"name":"index","type":"number"},{"name":"title","type":"string"}]}],"stateMachine":{"states":[{"name":"cover","isInitial":true},{"name":"reading"}],"events":[{"key":"INIT","id":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","name":"Initialize"},{"key":"START_READING","id":"evt_VBWK4V8HW88Y463XYYF30P1X9D","name":"Start Reading"},{"key":"OPEN_CHAPTER","id":"evt_J2504VA11S0GWT23B6MHPJ129Q","name":"Open Chapter","description":"Jump to a chapter from the table of contents.","tier":"internal","payloadSchema":[{"name":"index","type":"number","required":true}],"listened":true},{"key":"NEXT_CHAPTER","id":"evt_KT5H4P53TVHXDQ9BHD71TD7NM6","name":"Next Chapter"},{"key":"PREV_CHAPTER","id":"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5","name":"Prev Chapter"},{"key":"BACK_TO_COVER","id":"evt_NNMYNV58DZM6ZV70KPFVTMF74T","name":"Back To Cover"},{"key":"CHAPTER_OPENED","id":"evt_BTYJ3WMXKYESZ19TXTW0J03DRC","name":"Chapter Opened","description":"The reader moved to a chapter; carries its index and title.","synonyms":"page turned, chapter changed, reading progress","tier":"domain","payloadSchema":[{"name":"index","type":"number"},{"name":"title","type":"string"}]}],"transitions":[{"from":"cover","to":"cover","event":"INIT","eventId":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","guard":["==","@config.opensAt","cover"],"effects":[["render-ui","main","@config.coverContent"]]},{"from":"cover","to":"reading","event":"INIT","eventId":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","guard":["==","@config.opensAt","reading"],"effects":[["set","@entity.chapterIndex",0],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters",0],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters",0],"content",""]],["set","@entity.isFirst",true],["set","@entity.isLast",["<=",["array/len","@config.chapters"],1]],["set","@entity.progressLabel",["str/concat","1 / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"]]},{"from":"cover","to":"reading","event":"START_READING","eventId":"evt_VBWK4V8HW88Y463XYYF30P1X9D","effects":[["set","@entity.chapterIndex",0],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters",0],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters",0],"content",""]],["set","@entity.isFirst",true],["set","@entity.isLast",["<=",["array/len","@config.chapters"],1]],["set","@entity.progressLabel",["str/concat","1 / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":0,"title":"@entity.chapterTitle"}]]},{"from":"cover","to":"reading","event":"OPEN_CHAPTER","eventId":"evt_J2504VA11S0GWT23B6MHPJ129Q","effects":[["set","@entity.chapterIndex","@payload.index"],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@payload.index"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@payload.index"],"content",""]],["set","@entity.isFirst",["==","@payload.index",0]],["set","@entity.isLast",[">=","@payload.index",["-",["array/len","@config.chapters"],1]]],["set","@entity.progressLabel",["str/concat",["+","@payload.index",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@payload.index","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"reading","event":"INIT","eventId":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","effects":[["render-ui","main","@config.readingContent"]]},{"from":"reading","to":"reading","event":"OPEN_CHAPTER","eventId":"evt_J2504VA11S0GWT23B6MHPJ129Q","effects":[["set","@entity.chapterIndex","@payload.index"],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@payload.index"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@payload.index"],"content",""]],["set","@entity.isFirst",["==","@payload.index",0]],["set","@entity.isLast",[">=","@payload.index",["-",["array/len","@config.chapters"],1]]],["set","@entity.progressLabel",["str/concat",["+","@payload.index",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@payload.index","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"reading","event":"NEXT_CHAPTER","eventId":"evt_KT5H4P53TVHXDQ9BHD71TD7NM6","guard":["not","@entity.isLast"],"effects":[["set","@entity.chapterIndex",["+","@entity.chapterIndex",1]],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"content",""]],["set","@entity.isFirst",false],["set","@entity.isLast",[">=","@entity.chapterIndex",["-",["array/len","@config.chapters"],1]]],["set","@entity.progressLabel",["str/concat",["+","@entity.chapterIndex",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@entity.chapterIndex","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"reading","event":"PREV_CHAPTER","eventId":"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5","guard":["not","@entity.isFirst"],"effects":[["set","@entity.chapterIndex",["-","@entity.chapterIndex",1]],["set","@entity.chapterTitle",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"title",""]],["set","@entity.chapterContent",["object/get",["array/nth","@config.chapters","@entity.chapterIndex"],"content",""]],["set","@entity.isFirst",["==","@entity.chapterIndex",0]],["set","@entity.isLast",false],["set","@entity.progressLabel",["str/concat",["+","@entity.chapterIndex",1]," / ",["array/len","@config.chapters"]]],["render-ui","main","@config.readingContent"],["emit","CHAPTER_OPENED",{"index":"@entity.chapterIndex","title":"@entity.chapterTitle"}]]},{"from":"reading","to":"cover","event":"BACK_TO_COVER","eventId":"evt_NNMYNV58DZM6ZV70KPFVTMF74T","effects":[["render-ui","main","@config.coverContent"]]}]},"config":{"startLabel":{"type":"string","default":"Start reading","label":"Start button label","tier":"presentation"},"coverLabel":{"type":"string","default":"Cover","label":"Back-to-cover label","tier":"presentation"},"author":{"type":"string","default":"","label":"Author","tier":"presentation"},"title":{"type":"string","default":"Untitled book","label":"Title","tier":"presentation"},"direction":{"type":"string","default":"ltr","label":"Text direction","description":"rtl for Arabic, Hebrew and other right-to-left books","synonyms":"right to left, arabic book","tier":"presentation","values":["ltr","rtl"]},"nextLabel":{"type":"string","default":"Next","label":"Next button label","tier":"presentation"},"previousLabel":{"type":"string","default":"Previous","label":"Previous button label","tier":"presentation"},"chapters":{"type":"[BookChapter]","default":[{"title":"Chapter one","content":"The first chapter's text, in **markdown**."},{"title":"Chapter two","content":"The second chapter's text."}],"label":"Chapters","description":"Ordered chapters: a title and markdown content each","synonyms":"sections, parts, pages, table of contents","tier":"presentation","items":{"type":"object","properties":{"content":{"name":"content","type":"string","required":true},"title":{"name":"title","type":"string","required":true}}}},"readingContent":{"type":"render-ui","default":{"type":"box","paddingY":"xl","fullWidth":true,"dir":"@config.direction","children":[{"type":"container","size":"xl","maxWidth":"xl","padding":"lg","children":[{"type":"split","ratio":"1:3","gap":"xl","children":[{"type":"stack","direction":"vertical","gap":"xs","align":"start","className":"lg:sticky lg:top-6 self-start","children":[{"type":"typography","content":"@config.title","variant":"h5","weight":"semibold","className":"text-balance"},{"type":"typography","content":"@config.author","variant":"caption","color":"muted","className":["if",["==","@config.author",""],"hidden","pb-2"]},{"type":"button","variant":"link","label":"@config.coverLabel","leftIcon":"book-open","action":"BACK_TO_COVER"},{"type":"typography","content":"@config.contentsLabel","variant":"label","weight":"semibold","className":"pt-2"},{"type":"stack","direction":"vertical","gap":"none","align":"start","children":["array/map","@config.chapters",["fn","chapter",{"type":"button","variant":"link","label":["object/get","@chapter","title",""],"action":"OPEN_CHAPTER","actionPayload":{"index":"@index"},"aria-current":["if",["==","@index","@entity.chapterIndex"],"page","false"],"className":["if",["==","@index","@entity.chapterIndex"],"h-auto justify-start text-start text-foreground font-semibold","h-auto justify-start text-start"]}]]}]},{"type":"stack","direction":"vertical","gap":"lg","children":[{"type":"stack","direction":"vertical","gap":"lg","role":"status","children":[{"type":"typography","content":"@entity.progressLabel","variant":"caption","color":"muted"},{"type":"typography","content":"@entity.chapterTitle","variant":"h1","size":"3xl","weight":"bold","className":"tracking-tight"}]},{"type":"markdown-content","content":"@entity.chapterContent","direction":"@config.direction"},{"type":"divider"},{"type":"stack","direction":"horizontal","gap":"md","justify":"between","children":[{"type":"button","variant":"secondary","label":"@config.previousLabel","leftIcon":["if",["==","@config.direction","rtl"],"chevron-right","chevron-left"],"action":"PREV_CHAPTER","disabled":"@entity.isFirst"},{"type":"button","variant":"primary","label":"@config.nextLabel","rightIcon":["if",["==","@config.direction","rtl"],"chevron-left","chevron-right"],"action":"NEXT_CHAPTER","disabled":"@entity.isLast"}]}]}]}]}]},"label":"Reading body","tier":"internal"},"coverImage":{"type":"string","default":"","label":"Cover image","description":"Cover image URL; empty hides it","tier":"presentation"},"subtitle":{"type":"string","default":"","label":"Subtitle","tier":"presentation"},"contentsLabel":{"type":"string","default":"Contents","label":"Contents heading","tier":"presentation"},"coverContent":{"type":"render-ui","default":{"type":"box","paddingY":"2xl","fullWidth":true,"dir":"@config.direction","children":[{"type":"container","size":"md","maxWidth":"md","padding":"lg","children":[{"type":"stack","direction":"vertical","gap":"xl","children":[{"type":"stack","direction":"vertical","gap":"md","align":"center","children":[{"type":"image","src":"@config.coverImage","alt":"@config.title","rounded":"lg","bordered":true,"loading":"eager","className":"max-w-xs"},{"type":"typography","content":"@config.title","variant":"h1","weight":"bold","align":"center","className":"tracking-tight text-balance"},{"type":"typography","content":"@config.subtitle","variant":"large","color":"muted","align":"center","className":["if",["==","@config.subtitle",""],"hidden","text-pretty"]},{"type":"typography","content":"@config.author","variant":"label","color":"muted","align":"center","className":["if",["==","@config.author",""],"hidden",""]},{"type":"button","label":"@config.startLabel","variant":"primary","size":"lg","action":"START_READING","className":["if",["==",["array/len","@config.chapters"],0],"hidden",""]}]},{"type":"stack","direction":"vertical","gap":"xs","className":["if",["==",["array/len","@config.chapters"],0],"hidden",""],"children":[{"type":"typography","content":"@config.contentsLabel","variant":"label","weight":"semibold"},{"type":"stack","direction":"vertical","gap":"none","align":"start","children":["array/map","@config.chapters",["fn","chapter",{"type":"button","variant":"link","label":["str/concat",["+","@index",1],". ",["object/get","@chapter","title",""]],"action":"OPEN_CHAPTER","actionPayload":{"index":"@index"}}]]}]}]}]}]},"label":"Cover body","tier":"internal"},"opensAt":{"type":"string","default":"cover","label":"Opens at","description":"Where the reader opens: the cover, or straight into the first chapter (an article read in place)","tier":"presentation","values":["cover","reading"]}},"scope":"instance"}],"pages":[{"name":"BookReaderPage","id":"pag_GG2EGWA86Z43FRWG9772C5FW54","path":"/book","traits":[{"ref":"BookReaderRead","refId":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"}]}],"types":{"BookChapter":[{"name":"title","type":"string","required":true},{"name":"content","type":"string","required":true}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_0TS16649YT4ZDA3GRG30E55NWA":{"id":"ent_0TS16649YT4ZDA3GRG30E55NWA","kind":"entity","bakedName":"BookReaderView","curName":"BookReaderView","renames":[],"owner":"workspace"},"evt_BTYJ3WMXKYESZ19TXTW0J03DRC":{"id":"evt_BTYJ3WMXKYESZ19TXTW0J03DRC","kind":"event","bakedName":"CHAPTER_OPENED","curName":"CHAPTER_OPENED","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_DT69VP8EQS7BWSN71KYTSDGJZT":{"id":"evt_DT69VP8EQS7BWSN71KYTSDGJZT","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_J2504VA11S0GWT23B6MHPJ129Q":{"id":"evt_J2504VA11S0GWT23B6MHPJ129Q","kind":"event","bakedName":"OPEN_CHAPTER","curName":"OPEN_CHAPTER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_KT5H4P53TVHXDQ9BHD71TD7NM6":{"id":"evt_KT5H4P53TVHXDQ9BHD71TD7NM6","kind":"event","bakedName":"NEXT_CHAPTER","curName":"NEXT_CHAPTER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_NNMYNV58DZM6ZV70KPFVTMF74T":{"id":"evt_NNMYNV58DZM6ZV70KPFVTMF74T","kind":"event","bakedName":"BACK_TO_COVER","curName":"BACK_TO_COVER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5":{"id":"evt_T94Z2ZZA8RN4C1A01T5EDFDFF5","kind":"event","bakedName":"PREV_CHAPTER","curName":"PREV_CHAPTER","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"evt_VBWK4V8HW88Y463XYYF30P1X9D":{"id":"evt_VBWK4V8HW88Y463XYYF30P1X9D","kind":"event","bakedName":"START_READING","curName":"START_READING","renames":[],"owner":"workspace","parent":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE"},"orb_B03Y27YXQTEVXAF49T3740P1S8":{"id":"orb_B03Y27YXQTEVXAF49T3740P1S8","kind":"orbital","bakedName":"BookReaderOrbital","curName":"BookReaderOrbital","renames":[],"owner":"workspace"},"pag_GG2EGWA86Z43FRWG9772C5FW54":{"id":"pag_GG2EGWA86Z43FRWG9772C5FW54","kind":"page","bakedName":"BookReaderPage","curName":"BookReaderPage","renames":[],"owner":"workspace"},"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE":{"id":"trt_QHKZ9BM6WT3EDC6XXFH56QGAQE","kind":"trait","bakedName":"BookReaderRead","curName":"BookReaderRead","renames":[],"owner":"workspace"}}}}