@almadar/std 6.5.2 → 7.2.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 (307) hide show
  1. package/behaviors/registry/atoms/std-agent-activity-log.orb +240 -227
  2. package/behaviors/registry/atoms/std-agent-chat-thread.orb +296 -199
  3. package/behaviors/registry/atoms/std-agent-classifier.orb +384 -133
  4. package/behaviors/registry/atoms/std-agent-completion.orb +404 -141
  5. package/behaviors/registry/atoms/std-agent-context-window.orb +904 -607
  6. package/behaviors/registry/atoms/std-agent-conversation.orb +443 -234
  7. package/behaviors/registry/atoms/std-agent-memory.orb +584 -150
  8. package/behaviors/registry/atoms/std-agent-provider.orb +431 -174
  9. package/behaviors/registry/atoms/std-agent-search.orb +217 -61
  10. package/behaviors/registry/atoms/std-agent-session.orb +406 -159
  11. package/behaviors/registry/atoms/std-agent-step-progress.orb +314 -294
  12. package/behaviors/registry/atoms/std-agent-token-gauge.orb +577 -500
  13. package/behaviors/registry/atoms/std-agent-tool-call.orb +328 -138
  14. package/behaviors/registry/atoms/std-async.orb +147 -86
  15. package/behaviors/registry/atoms/std-autoregressive.orb +64 -73
  16. package/behaviors/registry/atoms/std-browse.orb +260 -126
  17. package/behaviors/registry/atoms/std-cache-aside.orb +358 -259
  18. package/behaviors/registry/atoms/std-calendar.orb +280 -215
  19. package/behaviors/registry/atoms/std-circuit-breaker.orb +295 -234
  20. package/behaviors/registry/atoms/std-collision.orb +136 -135
  21. package/behaviors/registry/atoms/std-combat-log.orb +108 -90
  22. package/behaviors/registry/atoms/std-combat.orb +171 -98
  23. package/behaviors/registry/atoms/std-confirmation.orb +28 -300
  24. package/behaviors/registry/atoms/std-dialogue-box.orb +111 -30
  25. package/behaviors/registry/atoms/std-display.orb +491 -587
  26. package/behaviors/registry/atoms/std-drawer.orb +194 -121
  27. package/behaviors/registry/atoms/std-filter.orb +311 -326
  28. package/behaviors/registry/atoms/std-flip-card.orb +223 -177
  29. package/behaviors/registry/atoms/std-gallery.orb +130 -151
  30. package/behaviors/registry/atoms/std-game-audio.orb +133 -72
  31. package/behaviors/registry/atoms/std-game-canvas2d.orb +112 -52
  32. package/behaviors/registry/atoms/std-game-canvas3d.orb +150 -107
  33. package/behaviors/registry/atoms/std-game-hud.orb +87 -20
  34. package/behaviors/registry/atoms/std-game-menu.orb +32 -32
  35. package/behaviors/registry/atoms/std-game-over-screen.orb +100 -33
  36. package/behaviors/registry/atoms/std-gameflow.orb +147 -80
  37. package/behaviors/registry/atoms/std-input.orb +128 -393
  38. package/behaviors/registry/atoms/std-inventory-panel.orb +108 -71
  39. package/behaviors/registry/atoms/std-isometric-canvas.orb +156 -407
  40. package/behaviors/registry/atoms/std-loading.orb +127 -126
  41. package/behaviors/registry/atoms/std-modal.orb +30 -267
  42. package/behaviors/registry/atoms/std-movement.orb +391 -292
  43. package/behaviors/registry/atoms/std-notification.orb +133 -75
  44. package/behaviors/registry/atoms/std-overworld.orb +194 -121
  45. package/behaviors/registry/atoms/std-pagination.orb +120 -53
  46. package/behaviors/registry/atoms/std-physics2d.orb +94 -93
  47. package/behaviors/registry/atoms/std-platformer-canvas.orb +110 -98
  48. package/behaviors/registry/atoms/std-push.orb +172 -36
  49. package/behaviors/registry/atoms/std-quest.orb +552 -449
  50. package/behaviors/registry/atoms/std-rate-limiter.orb +242 -241
  51. package/behaviors/registry/atoms/std-rating.orb +123 -65
  52. package/behaviors/registry/atoms/std-related.orb +202 -26
  53. package/behaviors/registry/atoms/std-score-board.orb +109 -28
  54. package/behaviors/registry/atoms/std-score.orb +210 -146
  55. package/behaviors/registry/atoms/std-search.orb +265 -138
  56. package/behaviors/registry/atoms/std-selection.orb +311 -220
  57. package/behaviors/registry/atoms/std-service-custom-bearer.orb +199 -110
  58. package/behaviors/registry/atoms/std-service-custom-header.orb +206 -117
  59. package/behaviors/registry/atoms/std-service-custom-noauth.orb +197 -108
  60. package/behaviors/registry/atoms/std-service-custom-query.orb +193 -104
  61. package/behaviors/registry/atoms/std-service-email.orb +195 -107
  62. package/behaviors/registry/atoms/std-service-github.orb +216 -122
  63. package/behaviors/registry/atoms/std-service-llm.orb +204 -122
  64. package/behaviors/registry/atoms/std-service-oauth.orb +290 -204
  65. package/behaviors/registry/atoms/std-service-redis.orb +177 -92
  66. package/behaviors/registry/atoms/std-service-storage.orb +211 -122
  67. package/behaviors/registry/atoms/std-service-stripe.orb +236 -154
  68. package/behaviors/registry/atoms/std-service-twilio.orb +221 -137
  69. package/behaviors/registry/atoms/std-service-youtube.orb +327 -241
  70. package/behaviors/registry/atoms/std-simulation-canvas.orb +97 -36
  71. package/behaviors/registry/atoms/std-sort.orb +284 -207
  72. package/behaviors/registry/atoms/std-sprite.orb +150 -74
  73. package/behaviors/registry/atoms/std-tabs.orb +129 -62
  74. package/behaviors/registry/atoms/std-text-effects.orb +251 -190
  75. package/behaviors/registry/atoms/std-theme.orb +193 -135
  76. package/behaviors/registry/atoms/std-timer.orb +320 -344
  77. package/behaviors/registry/atoms/std-undo.orb +278 -199
  78. package/behaviors/registry/atoms/std-upload.orb +112 -111
  79. package/behaviors/registry/atoms/std-validate-on-save.orb +159 -151
  80. package/behaviors/registry/atoms/std-wizard.orb +445 -336
  81. package/behaviors/registry/molecules/std-agent-fix-loop.orb +876 -857
  82. package/behaviors/registry/molecules/std-agent-learner.orb +635 -654
  83. package/behaviors/registry/molecules/std-agent-planner.orb +581 -548
  84. package/behaviors/registry/molecules/std-agent-rag.orb +414 -410
  85. package/behaviors/registry/molecules/std-agent-tool-loop.orb +716 -711
  86. package/behaviors/registry/molecules/std-batch-selected-list.orb +28 -12
  87. package/behaviors/registry/molecules/std-builder-game.orb +86 -28
  88. package/behaviors/registry/molecules/std-calendar-booking.orb +32 -8
  89. package/behaviors/registry/molecules/std-cart.orb +347 -406
  90. package/behaviors/registry/molecules/std-classifier-game.orb +95 -37
  91. package/behaviors/registry/molecules/std-dashboard-tabbed.orb +16 -10
  92. package/behaviors/registry/molecules/std-debugger-game.orb +95 -37
  93. package/behaviors/registry/molecules/std-detail.orb +133 -138
  94. package/behaviors/registry/molecules/std-drawer-master-list.orb +12 -6
  95. package/behaviors/registry/molecules/std-event-handler-game.orb +91 -33
  96. package/behaviors/registry/molecules/std-filtered-list.orb +14 -8
  97. package/behaviors/registry/molecules/std-form-advanced.orb +242 -153
  98. package/behaviors/registry/molecules/std-gallery-filtered.orb +16 -10
  99. package/behaviors/registry/molecules/std-geospatial.orb +175 -122
  100. package/behaviors/registry/molecules/std-inventory.orb +216 -170
  101. package/behaviors/registry/molecules/std-list.orb +280 -205
  102. package/behaviors/registry/molecules/std-messaging.orb +146 -99
  103. package/behaviors/registry/molecules/std-negotiator-game.orb +95 -37
  104. package/behaviors/registry/molecules/std-platformer-game.orb +300 -171
  105. package/behaviors/registry/molecules/std-push-activity-log.orb +32 -8
  106. package/behaviors/registry/molecules/std-puzzle-game.orb +287 -146
  107. package/behaviors/registry/molecules/std-quiz.orb +322 -263
  108. package/behaviors/registry/molecules/std-related-master-detail.orb +21 -15
  109. package/behaviors/registry/molecules/std-sequencer-game.orb +92 -34
  110. package/behaviors/registry/molecules/std-service-content-pipeline.orb +268 -267
  111. package/behaviors/registry/molecules/std-service-custom-api-tester.orb +245 -152
  112. package/behaviors/registry/molecules/std-service-devops-toolkit.orb +633 -294
  113. package/behaviors/registry/molecules/std-service-notification-hub.orb +237 -152
  114. package/behaviors/registry/molecules/std-service-payment-flow.orb +310 -180
  115. package/behaviors/registry/molecules/std-simulator-game.orb +96 -38
  116. package/behaviors/registry/molecules/std-turn-based-battle.orb +247 -137
  117. package/behaviors/registry/molecules/std-wizard-form.orb +60 -9
  118. package/behaviors/registry/organisms/std-agent-assistant.orb +2810 -1833
  119. package/behaviors/registry/organisms/std-agent-builder.orb +6401 -4539
  120. package/behaviors/registry/organisms/std-agent-pipeline.orb +5028 -3497
  121. package/behaviors/registry/organisms/std-agent-reviewer.orb +2219 -1406
  122. package/behaviors/registry/organisms/std-agent-tutor.orb +2069 -1384
  123. package/behaviors/registry/organisms/std-api-gateway.orb +1419 -870
  124. package/behaviors/registry/organisms/std-arcade-game.orb +488 -231
  125. package/behaviors/registry/organisms/std-booking-system.orb +2457 -1467
  126. package/behaviors/registry/organisms/std-cicd-pipeline.orb +1367 -825
  127. package/behaviors/registry/organisms/std-cms.orb +1549 -566
  128. package/behaviors/registry/organisms/std-coding-academy.orb +744 -495
  129. package/behaviors/registry/organisms/std-crm.orb +1997 -1014
  130. package/behaviors/registry/organisms/std-devops-dashboard.orb +2160 -1606
  131. package/behaviors/registry/organisms/std-ecommerce.orb +2279 -1153
  132. package/behaviors/registry/organisms/std-finance-tracker.orb +1375 -727
  133. package/behaviors/registry/organisms/std-healthcare.orb +2940 -1703
  134. package/behaviors/registry/organisms/std-helpdesk.orb +1443 -781
  135. package/behaviors/registry/organisms/std-hr-portal.orb +2361 -1440
  136. package/behaviors/registry/organisms/std-iot-dashboard.orb +1491 -1026
  137. package/behaviors/registry/organisms/std-lms.orb +1629 -1046
  138. package/behaviors/registry/organisms/std-logic-training.orb +321 -134
  139. package/behaviors/registry/organisms/std-platformer-app.orb +855 -417
  140. package/behaviors/registry/organisms/std-project-manager.orb +1795 -877
  141. package/behaviors/registry/organisms/std-puzzle-app.orb +407 -206
  142. package/behaviors/registry/organisms/std-realtime-chat.orb +1436 -844
  143. package/behaviors/registry/organisms/std-rpg-game.orb +1522 -1007
  144. package/behaviors/registry/organisms/std-service-marketplace.orb +2110 -1204
  145. package/behaviors/registry/organisms/std-service-research-assistant.orb +1285 -1078
  146. package/behaviors/registry/organisms/std-social-feed.orb +612 -252
  147. package/behaviors/registry/organisms/std-stem-lab.orb +642 -450
  148. package/behaviors/registry/organisms/std-strategy-game.orb +893 -650
  149. package/behaviors/registry/organisms/std-trading-dashboard.orb +1271 -805
  150. package/dist/behaviors/registry/atoms/std-agent-activity-log.orb +240 -227
  151. package/dist/behaviors/registry/atoms/std-agent-chat-thread.orb +296 -199
  152. package/dist/behaviors/registry/atoms/std-agent-classifier.orb +384 -133
  153. package/dist/behaviors/registry/atoms/std-agent-completion.orb +404 -141
  154. package/dist/behaviors/registry/atoms/std-agent-context-window.orb +904 -607
  155. package/dist/behaviors/registry/atoms/std-agent-conversation.orb +443 -234
  156. package/dist/behaviors/registry/atoms/std-agent-memory.orb +584 -150
  157. package/dist/behaviors/registry/atoms/std-agent-provider.orb +431 -174
  158. package/dist/behaviors/registry/atoms/std-agent-search.orb +217 -61
  159. package/dist/behaviors/registry/atoms/std-agent-session.orb +406 -159
  160. package/dist/behaviors/registry/atoms/std-agent-step-progress.orb +314 -294
  161. package/dist/behaviors/registry/atoms/std-agent-token-gauge.orb +577 -500
  162. package/dist/behaviors/registry/atoms/std-agent-tool-call.orb +328 -138
  163. package/dist/behaviors/registry/atoms/std-async.orb +147 -86
  164. package/dist/behaviors/registry/atoms/std-autoregressive.orb +64 -73
  165. package/dist/behaviors/registry/atoms/std-browse.orb +260 -126
  166. package/dist/behaviors/registry/atoms/std-cache-aside.orb +358 -259
  167. package/dist/behaviors/registry/atoms/std-calendar.orb +280 -215
  168. package/dist/behaviors/registry/atoms/std-circuit-breaker.orb +295 -234
  169. package/dist/behaviors/registry/atoms/std-collision.orb +136 -135
  170. package/dist/behaviors/registry/atoms/std-combat-log.orb +108 -90
  171. package/dist/behaviors/registry/atoms/std-combat.orb +171 -98
  172. package/dist/behaviors/registry/atoms/std-confirmation.orb +28 -300
  173. package/dist/behaviors/registry/atoms/std-dialogue-box.orb +111 -30
  174. package/dist/behaviors/registry/atoms/std-display.orb +491 -587
  175. package/dist/behaviors/registry/atoms/std-drawer.orb +194 -121
  176. package/dist/behaviors/registry/atoms/std-filter.orb +311 -326
  177. package/dist/behaviors/registry/atoms/std-flip-card.orb +223 -177
  178. package/dist/behaviors/registry/atoms/std-gallery.orb +130 -151
  179. package/dist/behaviors/registry/atoms/std-game-audio.orb +133 -72
  180. package/dist/behaviors/registry/atoms/std-game-canvas2d.orb +112 -52
  181. package/dist/behaviors/registry/atoms/std-game-canvas3d.orb +150 -107
  182. package/dist/behaviors/registry/atoms/std-game-hud.orb +87 -20
  183. package/dist/behaviors/registry/atoms/std-game-menu.orb +32 -32
  184. package/dist/behaviors/registry/atoms/std-game-over-screen.orb +100 -33
  185. package/dist/behaviors/registry/atoms/std-gameflow.orb +147 -80
  186. package/dist/behaviors/registry/atoms/std-input.orb +128 -393
  187. package/dist/behaviors/registry/atoms/std-inventory-panel.orb +108 -71
  188. package/dist/behaviors/registry/atoms/std-isometric-canvas.orb +156 -407
  189. package/dist/behaviors/registry/atoms/std-loading.orb +127 -126
  190. package/dist/behaviors/registry/atoms/std-modal.orb +30 -267
  191. package/dist/behaviors/registry/atoms/std-movement.orb +391 -292
  192. package/dist/behaviors/registry/atoms/std-notification.orb +133 -75
  193. package/dist/behaviors/registry/atoms/std-overworld.orb +194 -121
  194. package/dist/behaviors/registry/atoms/std-pagination.orb +120 -53
  195. package/dist/behaviors/registry/atoms/std-physics2d.orb +94 -93
  196. package/dist/behaviors/registry/atoms/std-platformer-canvas.orb +110 -98
  197. package/dist/behaviors/registry/atoms/std-push.orb +172 -36
  198. package/dist/behaviors/registry/atoms/std-quest.orb +552 -449
  199. package/dist/behaviors/registry/atoms/std-rate-limiter.orb +242 -241
  200. package/dist/behaviors/registry/atoms/std-rating.orb +123 -65
  201. package/dist/behaviors/registry/atoms/std-related.orb +202 -26
  202. package/dist/behaviors/registry/atoms/std-score-board.orb +109 -28
  203. package/dist/behaviors/registry/atoms/std-score.orb +210 -146
  204. package/dist/behaviors/registry/atoms/std-search.orb +265 -138
  205. package/dist/behaviors/registry/atoms/std-selection.orb +311 -220
  206. package/dist/behaviors/registry/atoms/std-service-custom-bearer.orb +199 -110
  207. package/dist/behaviors/registry/atoms/std-service-custom-header.orb +206 -117
  208. package/dist/behaviors/registry/atoms/std-service-custom-noauth.orb +197 -108
  209. package/dist/behaviors/registry/atoms/std-service-custom-query.orb +193 -104
  210. package/dist/behaviors/registry/atoms/std-service-email.orb +195 -107
  211. package/dist/behaviors/registry/atoms/std-service-github.orb +216 -122
  212. package/dist/behaviors/registry/atoms/std-service-llm.orb +204 -122
  213. package/dist/behaviors/registry/atoms/std-service-oauth.orb +290 -204
  214. package/dist/behaviors/registry/atoms/std-service-redis.orb +177 -92
  215. package/dist/behaviors/registry/atoms/std-service-storage.orb +211 -122
  216. package/dist/behaviors/registry/atoms/std-service-stripe.orb +236 -154
  217. package/dist/behaviors/registry/atoms/std-service-twilio.orb +221 -137
  218. package/dist/behaviors/registry/atoms/std-service-youtube.orb +327 -241
  219. package/dist/behaviors/registry/atoms/std-simulation-canvas.orb +97 -36
  220. package/dist/behaviors/registry/atoms/std-sort.orb +284 -207
  221. package/dist/behaviors/registry/atoms/std-sprite.orb +150 -74
  222. package/dist/behaviors/registry/atoms/std-tabs.orb +129 -62
  223. package/dist/behaviors/registry/atoms/std-text-effects.orb +251 -190
  224. package/dist/behaviors/registry/atoms/std-theme.orb +193 -135
  225. package/dist/behaviors/registry/atoms/std-timer.orb +320 -344
  226. package/dist/behaviors/registry/atoms/std-undo.orb +278 -199
  227. package/dist/behaviors/registry/atoms/std-upload.orb +112 -111
  228. package/dist/behaviors/registry/atoms/std-validate-on-save.orb +159 -151
  229. package/dist/behaviors/registry/atoms/std-wizard.orb +445 -336
  230. package/dist/behaviors/registry/molecules/std-agent-fix-loop.orb +876 -857
  231. package/dist/behaviors/registry/molecules/std-agent-learner.orb +635 -654
  232. package/dist/behaviors/registry/molecules/std-agent-planner.orb +581 -548
  233. package/dist/behaviors/registry/molecules/std-agent-rag.orb +414 -410
  234. package/dist/behaviors/registry/molecules/std-agent-tool-loop.orb +716 -711
  235. package/dist/behaviors/registry/molecules/std-batch-selected-list.orb +28 -12
  236. package/dist/behaviors/registry/molecules/std-builder-game.orb +86 -28
  237. package/dist/behaviors/registry/molecules/std-calendar-booking.orb +32 -8
  238. package/dist/behaviors/registry/molecules/std-cart.orb +347 -406
  239. package/dist/behaviors/registry/molecules/std-classifier-game.orb +95 -37
  240. package/dist/behaviors/registry/molecules/std-dashboard-tabbed.orb +16 -10
  241. package/dist/behaviors/registry/molecules/std-debugger-game.orb +95 -37
  242. package/dist/behaviors/registry/molecules/std-detail.orb +133 -138
  243. package/dist/behaviors/registry/molecules/std-drawer-master-list.orb +12 -6
  244. package/dist/behaviors/registry/molecules/std-event-handler-game.orb +91 -33
  245. package/dist/behaviors/registry/molecules/std-filtered-list.orb +14 -8
  246. package/dist/behaviors/registry/molecules/std-form-advanced.orb +242 -153
  247. package/dist/behaviors/registry/molecules/std-gallery-filtered.orb +16 -10
  248. package/dist/behaviors/registry/molecules/std-geospatial.orb +175 -122
  249. package/dist/behaviors/registry/molecules/std-inventory.orb +216 -170
  250. package/dist/behaviors/registry/molecules/std-list.orb +280 -205
  251. package/dist/behaviors/registry/molecules/std-messaging.orb +146 -99
  252. package/dist/behaviors/registry/molecules/std-negotiator-game.orb +95 -37
  253. package/dist/behaviors/registry/molecules/std-platformer-game.orb +300 -171
  254. package/dist/behaviors/registry/molecules/std-push-activity-log.orb +32 -8
  255. package/dist/behaviors/registry/molecules/std-puzzle-game.orb +287 -146
  256. package/dist/behaviors/registry/molecules/std-quiz.orb +322 -263
  257. package/dist/behaviors/registry/molecules/std-related-master-detail.orb +21 -15
  258. package/dist/behaviors/registry/molecules/std-sequencer-game.orb +92 -34
  259. package/dist/behaviors/registry/molecules/std-service-content-pipeline.orb +268 -267
  260. package/dist/behaviors/registry/molecules/std-service-custom-api-tester.orb +245 -152
  261. package/dist/behaviors/registry/molecules/std-service-devops-toolkit.orb +633 -294
  262. package/dist/behaviors/registry/molecules/std-service-notification-hub.orb +237 -152
  263. package/dist/behaviors/registry/molecules/std-service-payment-flow.orb +310 -180
  264. package/dist/behaviors/registry/molecules/std-simulator-game.orb +96 -38
  265. package/dist/behaviors/registry/molecules/std-turn-based-battle.orb +247 -137
  266. package/dist/behaviors/registry/molecules/std-wizard-form.orb +60 -9
  267. package/dist/behaviors/registry/organisms/std-agent-assistant.orb +2810 -1833
  268. package/dist/behaviors/registry/organisms/std-agent-builder.orb +6401 -4539
  269. package/dist/behaviors/registry/organisms/std-agent-pipeline.orb +5028 -3497
  270. package/dist/behaviors/registry/organisms/std-agent-reviewer.orb +2219 -1406
  271. package/dist/behaviors/registry/organisms/std-agent-tutor.orb +2069 -1384
  272. package/dist/behaviors/registry/organisms/std-api-gateway.orb +1419 -870
  273. package/dist/behaviors/registry/organisms/std-arcade-game.orb +488 -231
  274. package/dist/behaviors/registry/organisms/std-booking-system.orb +2457 -1467
  275. package/dist/behaviors/registry/organisms/std-cicd-pipeline.orb +1367 -825
  276. package/dist/behaviors/registry/organisms/std-cms.orb +1549 -566
  277. package/dist/behaviors/registry/organisms/std-coding-academy.orb +744 -495
  278. package/dist/behaviors/registry/organisms/std-crm.orb +1997 -1014
  279. package/dist/behaviors/registry/organisms/std-devops-dashboard.orb +2160 -1606
  280. package/dist/behaviors/registry/organisms/std-ecommerce.orb +2279 -1153
  281. package/dist/behaviors/registry/organisms/std-finance-tracker.orb +1375 -727
  282. package/dist/behaviors/registry/organisms/std-healthcare.orb +2940 -1703
  283. package/dist/behaviors/registry/organisms/std-helpdesk.orb +1443 -781
  284. package/dist/behaviors/registry/organisms/std-hr-portal.orb +2361 -1440
  285. package/dist/behaviors/registry/organisms/std-iot-dashboard.orb +1491 -1026
  286. package/dist/behaviors/registry/organisms/std-lms.orb +1629 -1046
  287. package/dist/behaviors/registry/organisms/std-logic-training.orb +321 -134
  288. package/dist/behaviors/registry/organisms/std-platformer-app.orb +855 -417
  289. package/dist/behaviors/registry/organisms/std-project-manager.orb +1795 -877
  290. package/dist/behaviors/registry/organisms/std-puzzle-app.orb +407 -206
  291. package/dist/behaviors/registry/organisms/std-realtime-chat.orb +1436 -844
  292. package/dist/behaviors/registry/organisms/std-rpg-game.orb +1522 -1007
  293. package/dist/behaviors/registry/organisms/std-service-marketplace.orb +2110 -1204
  294. package/dist/behaviors/registry/organisms/std-service-research-assistant.orb +1285 -1078
  295. package/dist/behaviors/registry/organisms/std-social-feed.orb +612 -252
  296. package/dist/behaviors/registry/organisms/std-stem-lab.orb +642 -450
  297. package/dist/behaviors/registry/organisms/std-strategy-game.orb +893 -650
  298. package/dist/behaviors/registry/organisms/std-trading-dashboard.orb +1271 -805
  299. package/dist/index.js +16 -4
  300. package/dist/index.js.map +1 -1
  301. package/dist/modules/core.js +16 -4
  302. package/dist/modules/core.js.map +1 -1
  303. package/dist/modules/index.js +16 -4
  304. package/dist/modules/index.js.map +1 -1
  305. package/dist/registry.js +16 -4
  306. package/dist/registry.js.map +1 -1
  307. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "std-helpdesk",
3
3
  "version": "1.0.0",
4
- "description": "Helpdesk organism. Composes molecules via compose: - stdList(Ticket): CRUD list of support tickets - stdMessaging(Response): messaging thread for ticket responses - stdDisplay(SupportMetrics): read-only metrics dashboard",
4
+ "description": "std-helpdesk as a Function",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "TicketOrbital",
@@ -61,23 +61,91 @@
61
61
  "traits": [
62
62
  {
63
63
  "name": "TicketBrowse",
64
- "linkedEntity": "Ticket",
65
64
  "category": "interaction",
65
+ "linkedEntity": "Ticket",
66
+ "emits": [
67
+ {
68
+ "event": "ASSIGN",
69
+ "scope": "external",
70
+ "payload": [
71
+ {
72
+ "name": "id",
73
+ "type": "string"
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "event": "TicketLoaded",
79
+ "description": "Fired when Ticket finishes loading",
80
+ "scope": "internal",
81
+ "payload": [
82
+ {
83
+ "name": "id",
84
+ "type": "string",
85
+ "required": true
86
+ },
87
+ {
88
+ "name": "subject",
89
+ "type": "string"
90
+ },
91
+ {
92
+ "name": "description",
93
+ "type": "string"
94
+ },
95
+ {
96
+ "name": "priority",
97
+ "type": "string"
98
+ },
99
+ {
100
+ "name": "status",
101
+ "type": "string"
102
+ },
103
+ {
104
+ "name": "assignee",
105
+ "type": "string"
106
+ },
107
+ {
108
+ "name": "pendingId",
109
+ "type": "string"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "event": "TicketLoadFailed",
115
+ "description": "Fired when Ticket fails to load",
116
+ "scope": "internal",
117
+ "payload": [
118
+ {
119
+ "name": "message",
120
+ "type": "string"
121
+ }
122
+ ]
123
+ }
124
+ ],
66
125
  "listens": [
67
126
  {
68
127
  "event": "TICKET_CREATED",
69
128
  "triggers": "INIT",
70
- "scope": "external"
129
+ "source": {
130
+ "kind": "trait",
131
+ "trait": "TicketCreate"
132
+ }
71
133
  },
72
134
  {
73
135
  "event": "TICKET_UPDATED",
74
136
  "triggers": "INIT",
75
- "scope": "external"
137
+ "source": {
138
+ "kind": "trait",
139
+ "trait": "TicketEdit"
140
+ }
76
141
  },
77
142
  {
78
143
  "event": "TICKET_DELETED",
79
144
  "triggers": "INIT",
80
- "scope": "external"
145
+ "source": {
146
+ "kind": "trait",
147
+ "trait": "TicketDelete"
148
+ }
81
149
  }
82
150
  ],
83
151
  "stateMachine": {
@@ -93,12 +161,26 @@
93
161
  "name": "Initialize"
94
162
  },
95
163
  {
96
- "key": "CREATE",
97
- "name": "CREATE"
164
+ "key": "ASSIGN",
165
+ "name": "Assign"
166
+ },
167
+ {
168
+ "key": "TicketLoaded",
169
+ "name": "Ticket loaded"
170
+ },
171
+ {
172
+ "key": "TicketLoadFailed",
173
+ "name": "Ticket load failed",
174
+ "payload": [
175
+ {
176
+ "name": "message",
177
+ "type": "string"
178
+ }
179
+ ]
98
180
  },
99
181
  {
100
182
  "key": "VIEW",
101
- "name": "VIEW",
183
+ "name": "View",
102
184
  "payload": [
103
185
  {
104
186
  "name": "id",
@@ -113,7 +195,7 @@
113
195
  },
114
196
  {
115
197
  "key": "EDIT",
116
- "name": "EDIT",
198
+ "name": "Edit",
117
199
  "payload": [
118
200
  {
119
201
  "name": "id",
@@ -128,7 +210,7 @@
128
210
  },
129
211
  {
130
212
  "key": "DELETE",
131
- "name": "DELETE",
213
+ "name": "Delete",
132
214
  "payload": [
133
215
  {
134
216
  "name": "id",
@@ -161,8 +243,8 @@
161
243
  "navItems": [
162
244
  {
163
245
  "label": "Tickets",
164
- "href": "/tickets",
165
- "icon": "inbox"
246
+ "icon": "inbox",
247
+ "href": "/tickets"
166
248
  },
167
249
  {
168
250
  "label": "Responses",
@@ -170,110 +252,85 @@
170
252
  "icon": "message-circle"
171
253
  },
172
254
  {
173
- "label": "Metrics",
174
255
  "href": "/metrics",
175
- "icon": "layout-list"
256
+ "icon": "layout-list",
257
+ "label": "Metrics"
176
258
  }
177
259
  ],
178
260
  "children": [
179
261
  {
180
- "type": "stack",
181
- "direction": "vertical",
182
- "gap": "lg",
183
262
  "className": "max-w-5xl mx-auto w-full",
263
+ "direction": "vertical",
184
264
  "children": [
185
265
  {
186
- "type": "stack",
187
- "direction": "horizontal",
188
- "gap": "md",
189
- "justify": "space-between",
190
- "align": "center",
191
266
  "children": [
192
267
  {
193
- "type": "stack",
194
268
  "direction": "horizontal",
195
- "gap": "sm",
196
269
  "align": "center",
197
270
  "children": [
198
271
  {
272
+ "size": "lg",
199
273
  "type": "icon",
200
- "name": "inbox",
201
- "size": "lg"
274
+ "name": "inbox"
202
275
  },
203
276
  {
204
- "type": "typography",
205
277
  "content": "Tickets",
206
- "variant": "h2"
278
+ "variant": "h2",
279
+ "type": "typography"
207
280
  }
208
- ]
281
+ ],
282
+ "gap": "sm",
283
+ "type": "stack"
209
284
  },
210
285
  {
211
286
  "type": "stack",
212
287
  "direction": "horizontal",
213
- "gap": "sm",
214
288
  "children": [
215
289
  {
216
- "type": "button",
217
290
  "label": "New Ticket",
218
- "event": "CREATE",
219
291
  "variant": "primary",
220
- "icon": "plus"
292
+ "event": "CREATE",
293
+ "icon": "plus",
294
+ "type": "button"
221
295
  }
222
- ]
296
+ ],
297
+ "gap": "sm"
223
298
  }
224
- ]
299
+ ],
300
+ "gap": "md",
301
+ "align": "center",
302
+ "justify": "space-between",
303
+ "type": "stack",
304
+ "direction": "horizontal"
225
305
  },
226
306
  {
227
307
  "type": "divider"
228
308
  },
229
309
  {
230
- "type": "simple-grid",
231
- "columns": 1,
232
310
  "children": [
233
311
  {
234
- "type": "stat-display",
312
+ "icon": "inbox",
235
313
  "label": "Open Tickets",
314
+ "type": "stat-display",
236
315
  "value": [
237
316
  "array/len",
238
317
  "@entity"
239
- ],
240
- "icon": "inbox"
318
+ ]
241
319
  }
242
- ]
320
+ ],
321
+ "columns": 1.0,
322
+ "type": "simple-grid"
243
323
  },
244
324
  {
245
325
  "type": "divider"
246
326
  },
247
327
  {
248
- "type": "data-list",
249
- "entity": "Ticket",
250
- "emptyIcon": "inbox",
251
328
  "emptyTitle": "No tickets filed",
252
- "emptyDescription": "Your support queue is clear.",
253
- "itemActions": [
254
- {
255
- "label": "View",
256
- "event": "VIEW",
257
- "variant": "ghost",
258
- "size": "sm"
259
- },
260
- {
261
- "label": "Edit",
262
- "event": "EDIT",
263
- "variant": "ghost",
264
- "size": "sm"
265
- },
266
- {
267
- "label": "Delete",
268
- "event": "DELETE",
269
- "variant": "danger",
270
- "size": "sm"
271
- }
272
- ],
329
+ "entity": "Ticket",
273
330
  "columns": [
274
331
  {
275
- "name": "subject",
276
332
  "variant": "h3",
333
+ "name": "subject",
277
334
  "icon": "inbox"
278
335
  },
279
336
  {
@@ -281,22 +338,47 @@
281
338
  "variant": "badge"
282
339
  },
283
340
  {
284
- "name": "status",
285
- "variant": "badge"
341
+ "variant": "badge",
342
+ "name": "status"
286
343
  },
287
344
  {
288
345
  "name": "assignee",
289
346
  "variant": "body"
290
347
  },
291
348
  {
292
- "name": "description",
293
- "variant": "caption"
349
+ "variant": "caption",
350
+ "name": "description"
294
351
  }
295
352
  ],
353
+ "gap": "sm",
354
+ "emptyIcon": "inbox",
355
+ "type": "data-list",
296
356
  "variant": "card",
297
- "gap": "sm"
357
+ "emptyDescription": "Your support queue is clear.",
358
+ "itemActions": [
359
+ {
360
+ "size": "sm",
361
+ "label": "View",
362
+ "variant": "ghost",
363
+ "event": "VIEW"
364
+ },
365
+ {
366
+ "size": "sm",
367
+ "label": "Edit",
368
+ "event": "EDIT",
369
+ "variant": "ghost"
370
+ },
371
+ {
372
+ "label": "Delete",
373
+ "event": "DELETE",
374
+ "size": "sm",
375
+ "variant": "danger"
376
+ }
377
+ ]
298
378
  }
299
- ]
379
+ ],
380
+ "gap": "lg",
381
+ "type": "stack"
300
382
  }
301
383
  ]
302
384
  }
@@ -305,33 +387,69 @@
305
387
  }
306
388
  ]
307
389
  },
390
+ "scope": "collection"
391
+ },
392
+ {
393
+ "name": "TicketCreate",
394
+ "category": "interaction",
395
+ "linkedEntity": "Ticket",
308
396
  "emits": [
309
397
  {
310
- "event": "ASSIGN",
311
- "description": "Assign ticket and open response thread",
398
+ "event": "TICKET_CREATED",
399
+ "scope": "external",
400
+ "payload": [
401
+ {
402
+ "name": "id",
403
+ "type": "string"
404
+ }
405
+ ]
406
+ },
407
+ {
408
+ "event": "TicketLoaded",
409
+ "description": "Fired when Ticket finishes loading",
410
+ "scope": "internal",
312
411
  "payload": [
313
412
  {
314
413
  "name": "id",
315
414
  "type": "string",
316
415
  "required": true
416
+ },
417
+ {
418
+ "name": "subject",
419
+ "type": "string"
420
+ },
421
+ {
422
+ "name": "description",
423
+ "type": "string"
424
+ },
425
+ {
426
+ "name": "priority",
427
+ "type": "string"
428
+ },
429
+ {
430
+ "name": "status",
431
+ "type": "string"
432
+ },
433
+ {
434
+ "name": "assignee",
435
+ "type": "string"
436
+ },
437
+ {
438
+ "name": "pendingId",
439
+ "type": "string"
317
440
  }
318
- ],
319
- "scope": "external"
320
- }
321
- ]
322
- },
323
- {
324
- "name": "TicketCreate",
325
- "linkedEntity": "Ticket",
326
- "category": "interaction",
327
- "emits": [
328
- {
329
- "event": "SAVE",
330
- "scope": "internal"
441
+ ]
331
442
  },
332
443
  {
333
- "event": "TICKET_CREATED",
334
- "scope": "external"
444
+ "event": "TicketLoadFailed",
445
+ "description": "Fired when Ticket fails to load",
446
+ "scope": "internal",
447
+ "payload": [
448
+ {
449
+ "name": "message",
450
+ "type": "string"
451
+ }
452
+ ]
335
453
  }
336
454
  ],
337
455
  "stateMachine": {
@@ -351,7 +469,7 @@
351
469
  },
352
470
  {
353
471
  "key": "CREATE",
354
- "name": "Open"
472
+ "name": "Create"
355
473
  },
356
474
  {
357
475
  "key": "CLOSE",
@@ -367,6 +485,24 @@
367
485
  "required": true
368
486
  }
369
487
  ]
488
+ },
489
+ {
490
+ "key": "TICKET_CREATED",
491
+ "name": "Ticket Created"
492
+ },
493
+ {
494
+ "key": "TicketLoaded",
495
+ "name": "Ticket loaded"
496
+ },
497
+ {
498
+ "key": "TicketLoadFailed",
499
+ "name": "Ticket load failed",
500
+ "payload": [
501
+ {
502
+ "name": "message",
503
+ "type": "string"
504
+ }
505
+ ]
370
506
  }
371
507
  ],
372
508
  "transitions": [
@@ -388,40 +524,41 @@
388
524
  "effects": [
389
525
  [
390
526
  "fetch",
391
- "Ticket"
527
+ "Ticket",
528
+ {
529
+ "emit": {
530
+ "failure": "TicketLoadFailed",
531
+ "success": "TicketLoaded"
532
+ }
533
+ }
392
534
  ],
393
535
  [
394
536
  "render-ui",
395
537
  "modal",
396
538
  {
397
- "type": "stack",
398
- "direction": "vertical",
399
- "gap": "md",
400
539
  "children": [
401
540
  {
402
- "type": "stack",
403
541
  "direction": "horizontal",
404
542
  "gap": "sm",
405
543
  "children": [
406
544
  {
545
+ "size": "md",
407
546
  "type": "icon",
408
- "name": "plus-circle",
409
- "size": "md"
547
+ "name": "plus-circle"
410
548
  },
411
549
  {
412
- "type": "typography",
413
550
  "content": "Create Ticket",
551
+ "type": "typography",
414
552
  "variant": "h3"
415
553
  }
416
- ]
554
+ ],
555
+ "type": "stack"
417
556
  },
418
557
  {
419
558
  "type": "divider"
420
559
  },
421
560
  {
422
- "type": "form-section",
423
561
  "entity": "Ticket",
424
- "mode": "create",
425
562
  "submitEvent": "SAVE",
426
563
  "cancelEvent": "CLOSE",
427
564
  "fields": [
@@ -430,9 +567,14 @@
430
567
  "priority",
431
568
  "status",
432
569
  "assignee"
433
- ]
570
+ ],
571
+ "type": "form-section",
572
+ "mode": "create"
434
573
  }
435
- ]
574
+ ],
575
+ "gap": "md",
576
+ "type": "stack",
577
+ "direction": "vertical"
436
578
  }
437
579
  ]
438
580
  ]
@@ -447,6 +589,13 @@
447
589
  "modal",
448
590
  null
449
591
  ],
592
+ [
593
+ "render-ui",
594
+ "main",
595
+ {
596
+ "type": "box"
597
+ }
598
+ ],
450
599
  [
451
600
  "notify",
452
601
  "Cancelled",
@@ -470,6 +619,13 @@
470
619
  "modal",
471
620
  null
472
621
  ],
622
+ [
623
+ "render-ui",
624
+ "main",
625
+ {
626
+ "type": "box"
627
+ }
628
+ ],
473
629
  [
474
630
  "emit",
475
631
  "TICKET_CREATED"
@@ -477,20 +633,70 @@
477
633
  ]
478
634
  }
479
635
  ]
480
- }
636
+ },
637
+ "scope": "collection"
481
638
  },
482
639
  {
483
640
  "name": "TicketEdit",
484
- "linkedEntity": "Ticket",
485
641
  "category": "interaction",
642
+ "linkedEntity": "Ticket",
486
643
  "emits": [
487
644
  {
488
- "event": "SAVE",
489
- "scope": "internal"
645
+ "event": "TICKET_UPDATED",
646
+ "scope": "external",
647
+ "payload": [
648
+ {
649
+ "name": "id",
650
+ "type": "string"
651
+ }
652
+ ]
490
653
  },
491
654
  {
492
- "event": "TICKET_UPDATED",
493
- "scope": "external"
655
+ "event": "TicketLoaded",
656
+ "description": "Fired when Ticket finishes loading",
657
+ "scope": "internal",
658
+ "payload": [
659
+ {
660
+ "name": "id",
661
+ "type": "string",
662
+ "required": true
663
+ },
664
+ {
665
+ "name": "subject",
666
+ "type": "string"
667
+ },
668
+ {
669
+ "name": "description",
670
+ "type": "string"
671
+ },
672
+ {
673
+ "name": "priority",
674
+ "type": "string"
675
+ },
676
+ {
677
+ "name": "status",
678
+ "type": "string"
679
+ },
680
+ {
681
+ "name": "assignee",
682
+ "type": "string"
683
+ },
684
+ {
685
+ "name": "pendingId",
686
+ "type": "string"
687
+ }
688
+ ]
689
+ },
690
+ {
691
+ "event": "TicketLoadFailed",
692
+ "description": "Fired when Ticket fails to load",
693
+ "scope": "internal",
694
+ "payload": [
695
+ {
696
+ "name": "message",
697
+ "type": "string"
698
+ }
699
+ ]
494
700
  }
495
701
  ],
496
702
  "stateMachine": {
@@ -510,7 +716,7 @@
510
716
  },
511
717
  {
512
718
  "key": "EDIT",
513
- "name": "Open",
719
+ "name": "Edit",
514
720
  "payload": [
515
721
  {
516
722
  "name": "id",
@@ -533,6 +739,24 @@
533
739
  "required": true
534
740
  }
535
741
  ]
742
+ },
743
+ {
744
+ "key": "TICKET_UPDATED",
745
+ "name": "Ticket Updated"
746
+ },
747
+ {
748
+ "key": "TicketLoaded",
749
+ "name": "Ticket loaded"
750
+ },
751
+ {
752
+ "key": "TicketLoadFailed",
753
+ "name": "Ticket load failed",
754
+ "payload": [
755
+ {
756
+ "name": "message",
757
+ "type": "string"
758
+ }
759
+ ]
536
760
  }
537
761
  ],
538
762
  "transitions": [
@@ -556,7 +780,11 @@
556
780
  "fetch",
557
781
  "Ticket",
558
782
  {
559
- "id": "@payload.id"
783
+ "id": "@payload.id",
784
+ "emit": {
785
+ "success": "TicketLoaded",
786
+ "failure": "TicketLoadFailed"
787
+ }
560
788
  }
561
789
  ],
562
790
  [
@@ -565,11 +793,10 @@
565
793
  {
566
794
  "type": "stack",
567
795
  "direction": "vertical",
568
- "gap": "md",
569
796
  "children": [
570
797
  {
571
- "type": "stack",
572
798
  "direction": "horizontal",
799
+ "type": "stack",
573
800
  "gap": "sm",
574
801
  "children": [
575
802
  {
@@ -578,9 +805,9 @@
578
805
  "size": "md"
579
806
  },
580
807
  {
581
- "type": "typography",
808
+ "variant": "h3",
582
809
  "content": "Edit Ticket",
583
- "variant": "h3"
810
+ "type": "typography"
584
811
  }
585
812
  ]
586
813
  },
@@ -588,11 +815,7 @@
588
815
  "type": "divider"
589
816
  },
590
817
  {
591
- "type": "form-section",
592
- "entity": "Ticket",
593
- "mode": "edit",
594
- "submitEvent": "SAVE",
595
- "cancelEvent": "CLOSE",
818
+ "entityId": "@entity.id",
596
819
  "fields": [
597
820
  "subject",
598
821
  "description",
@@ -600,9 +823,14 @@
600
823
  "status",
601
824
  "assignee"
602
825
  ],
603
- "entityId": "@entity.id"
826
+ "type": "form-section",
827
+ "mode": "edit",
828
+ "submitEvent": "SAVE",
829
+ "cancelEvent": "CLOSE",
830
+ "entity": "Ticket"
604
831
  }
605
- ]
832
+ ],
833
+ "gap": "md"
606
834
  }
607
835
  ]
608
836
  ]
@@ -617,6 +845,13 @@
617
845
  "modal",
618
846
  null
619
847
  ],
848
+ [
849
+ "render-ui",
850
+ "main",
851
+ {
852
+ "type": "box"
853
+ }
854
+ ],
620
855
  [
621
856
  "notify",
622
857
  "Cancelled",
@@ -640,6 +875,13 @@
640
875
  "modal",
641
876
  null
642
877
  ],
878
+ [
879
+ "render-ui",
880
+ "main",
881
+ {
882
+ "type": "box"
883
+ }
884
+ ],
643
885
  [
644
886
  "emit",
645
887
  "TICKET_UPDATED"
@@ -647,16 +889,60 @@
647
889
  ]
648
890
  }
649
891
  ]
650
- }
892
+ },
893
+ "scope": "collection"
651
894
  },
652
895
  {
653
896
  "name": "TicketView",
654
- "linkedEntity": "Ticket",
655
897
  "category": "interaction",
898
+ "linkedEntity": "Ticket",
656
899
  "emits": [
657
900
  {
658
- "event": "SAVE",
659
- "scope": "internal"
901
+ "event": "TicketLoaded",
902
+ "description": "Fired when Ticket finishes loading",
903
+ "scope": "internal",
904
+ "payload": [
905
+ {
906
+ "name": "id",
907
+ "type": "string",
908
+ "required": true
909
+ },
910
+ {
911
+ "name": "subject",
912
+ "type": "string"
913
+ },
914
+ {
915
+ "name": "description",
916
+ "type": "string"
917
+ },
918
+ {
919
+ "name": "priority",
920
+ "type": "string"
921
+ },
922
+ {
923
+ "name": "status",
924
+ "type": "string"
925
+ },
926
+ {
927
+ "name": "assignee",
928
+ "type": "string"
929
+ },
930
+ {
931
+ "name": "pendingId",
932
+ "type": "string"
933
+ }
934
+ ]
935
+ },
936
+ {
937
+ "event": "TicketLoadFailed",
938
+ "description": "Fired when Ticket fails to load",
939
+ "scope": "internal",
940
+ "payload": [
941
+ {
942
+ "name": "message",
943
+ "type": "string"
944
+ }
945
+ ]
660
946
  }
661
947
  ],
662
948
  "stateMachine": {
@@ -676,7 +962,7 @@
676
962
  },
677
963
  {
678
964
  "key": "VIEW",
679
- "name": "Open",
965
+ "name": "View",
680
966
  "payload": [
681
967
  {
682
968
  "name": "id",
@@ -699,6 +985,20 @@
699
985
  "required": true
700
986
  }
701
987
  ]
988
+ },
989
+ {
990
+ "key": "TicketLoaded",
991
+ "name": "Ticket loaded"
992
+ },
993
+ {
994
+ "key": "TicketLoadFailed",
995
+ "name": "Ticket load failed",
996
+ "payload": [
997
+ {
998
+ "name": "message",
999
+ "type": "string"
1000
+ }
1001
+ ]
702
1002
  }
703
1003
  ],
704
1004
  "transitions": [
@@ -722,6 +1022,10 @@
722
1022
  "fetch",
723
1023
  "Ticket",
724
1024
  {
1025
+ "emit": {
1026
+ "success": "TicketLoaded",
1027
+ "failure": "TicketLoadFailed"
1028
+ },
725
1029
  "id": "@payload.id"
726
1030
  }
727
1031
  ],
@@ -729,15 +1033,12 @@
729
1033
  "render-ui",
730
1034
  "modal",
731
1035
  {
732
- "type": "stack",
733
- "direction": "vertical",
734
1036
  "gap": "md",
735
1037
  "children": [
736
1038
  {
737
- "type": "stack",
738
- "direction": "horizontal",
739
- "gap": "sm",
740
1039
  "align": "center",
1040
+ "gap": "sm",
1041
+ "type": "stack",
741
1042
  "children": [
742
1043
  {
743
1044
  "type": "icon",
@@ -749,20 +1050,21 @@
749
1050
  "variant": "h3",
750
1051
  "content": "@entity.subject"
751
1052
  }
752
- ]
1053
+ ],
1054
+ "direction": "horizontal"
753
1055
  },
754
1056
  {
755
1057
  "type": "divider"
756
1058
  },
757
1059
  {
1060
+ "gap": "md",
758
1061
  "type": "stack",
759
1062
  "direction": "horizontal",
760
- "gap": "md",
761
1063
  "children": [
762
1064
  {
763
- "type": "typography",
764
1065
  "variant": "caption",
765
- "content": "Subject"
1066
+ "content": "Subject",
1067
+ "type": "typography"
766
1068
  },
767
1069
  {
768
1070
  "type": "typography",
@@ -772,9 +1074,6 @@
772
1074
  ]
773
1075
  },
774
1076
  {
775
- "type": "stack",
776
- "direction": "horizontal",
777
- "gap": "md",
778
1077
  "children": [
779
1078
  {
780
1079
  "type": "typography",
@@ -782,16 +1081,16 @@
782
1081
  "content": "Description"
783
1082
  },
784
1083
  {
785
- "type": "typography",
786
1084
  "variant": "body",
1085
+ "type": "typography",
787
1086
  "content": "@entity.description"
788
1087
  }
789
- ]
790
- },
791
- {
1088
+ ],
792
1089
  "type": "stack",
793
1090
  "direction": "horizontal",
794
- "gap": "md",
1091
+ "gap": "md"
1092
+ },
1093
+ {
795
1094
  "children": [
796
1095
  {
797
1096
  "type": "typography",
@@ -799,21 +1098,24 @@
799
1098
  "content": "Priority"
800
1099
  },
801
1100
  {
1101
+ "content": "@entity.priority",
802
1102
  "type": "typography",
803
- "variant": "body",
804
- "content": "@entity.priority"
1103
+ "variant": "body"
805
1104
  }
806
- ]
1105
+ ],
1106
+ "gap": "md",
1107
+ "type": "stack",
1108
+ "direction": "horizontal"
807
1109
  },
808
1110
  {
809
- "type": "stack",
810
1111
  "direction": "horizontal",
811
1112
  "gap": "md",
1113
+ "type": "stack",
812
1114
  "children": [
813
1115
  {
814
- "type": "typography",
815
1116
  "variant": "caption",
816
- "content": "Status"
1117
+ "content": "Status",
1118
+ "type": "typography"
817
1119
  },
818
1120
  {
819
1121
  "type": "typography",
@@ -823,19 +1125,19 @@
823
1125
  ]
824
1126
  },
825
1127
  {
1128
+ "gap": "md",
826
1129
  "type": "stack",
827
1130
  "direction": "horizontal",
828
- "gap": "md",
829
1131
  "children": [
830
1132
  {
831
- "type": "typography",
832
1133
  "variant": "caption",
1134
+ "type": "typography",
833
1135
  "content": "Assignee"
834
1136
  },
835
1137
  {
836
- "type": "typography",
837
1138
  "variant": "body",
838
- "content": "@entity.assignee"
1139
+ "content": "@entity.assignee",
1140
+ "type": "typography"
839
1141
  }
840
1142
  ]
841
1143
  },
@@ -844,26 +1146,28 @@
844
1146
  },
845
1147
  {
846
1148
  "type": "stack",
847
- "direction": "horizontal",
848
- "gap": "sm",
849
- "justify": "end",
850
1149
  "children": [
851
1150
  {
1151
+ "icon": "edit",
1152
+ "variant": "primary",
852
1153
  "type": "button",
853
1154
  "label": "Edit",
854
- "event": "EDIT",
855
- "variant": "primary",
856
- "icon": "edit"
1155
+ "event": "EDIT"
857
1156
  },
858
1157
  {
1158
+ "variant": "ghost",
859
1159
  "type": "button",
860
1160
  "label": "Close",
861
- "event": "CLOSE",
862
- "variant": "ghost"
1161
+ "event": "CLOSE"
863
1162
  }
864
- ]
1163
+ ],
1164
+ "justify": "end",
1165
+ "gap": "sm",
1166
+ "direction": "horizontal"
865
1167
  }
866
- ]
1168
+ ],
1169
+ "direction": "vertical",
1170
+ "type": "stack"
867
1171
  }
868
1172
  ]
869
1173
  ]
@@ -878,6 +1182,13 @@
878
1182
  "modal",
879
1183
  null
880
1184
  ],
1185
+ [
1186
+ "render-ui",
1187
+ "main",
1188
+ {
1189
+ "type": "box"
1190
+ }
1191
+ ],
881
1192
  [
882
1193
  "notify",
883
1194
  "Cancelled",
@@ -894,24 +1205,81 @@
894
1205
  "render-ui",
895
1206
  "modal",
896
1207
  null
1208
+ ],
1209
+ [
1210
+ "render-ui",
1211
+ "main",
1212
+ {
1213
+ "type": "box"
1214
+ }
897
1215
  ]
898
1216
  ]
899
1217
  }
900
1218
  ]
901
- }
1219
+ },
1220
+ "scope": "collection"
902
1221
  },
903
1222
  {
904
1223
  "name": "TicketDelete",
905
- "linkedEntity": "Ticket",
906
1224
  "category": "interaction",
1225
+ "linkedEntity": "Ticket",
907
1226
  "emits": [
908
1227
  {
909
- "event": "CONFIRM_DELETE",
910
- "scope": "internal"
1228
+ "event": "TICKET_DELETED",
1229
+ "scope": "external",
1230
+ "payload": [
1231
+ {
1232
+ "name": "id",
1233
+ "type": "string"
1234
+ }
1235
+ ]
911
1236
  },
912
1237
  {
913
- "event": "TICKET_DELETED",
914
- "scope": "external"
1238
+ "event": "TicketLoaded",
1239
+ "description": "Fired when Ticket finishes loading",
1240
+ "scope": "internal",
1241
+ "payload": [
1242
+ {
1243
+ "name": "id",
1244
+ "type": "string",
1245
+ "required": true
1246
+ },
1247
+ {
1248
+ "name": "subject",
1249
+ "type": "string"
1250
+ },
1251
+ {
1252
+ "name": "description",
1253
+ "type": "string"
1254
+ },
1255
+ {
1256
+ "name": "priority",
1257
+ "type": "string"
1258
+ },
1259
+ {
1260
+ "name": "status",
1261
+ "type": "string"
1262
+ },
1263
+ {
1264
+ "name": "assignee",
1265
+ "type": "string"
1266
+ },
1267
+ {
1268
+ "name": "pendingId",
1269
+ "type": "string"
1270
+ }
1271
+ ]
1272
+ },
1273
+ {
1274
+ "event": "TicketLoadFailed",
1275
+ "description": "Fired when Ticket fails to load",
1276
+ "scope": "internal",
1277
+ "payload": [
1278
+ {
1279
+ "name": "message",
1280
+ "type": "string"
1281
+ }
1282
+ ]
915
1283
  }
916
1284
  ],
917
1285
  "stateMachine": {
@@ -931,7 +1299,7 @@
931
1299
  },
932
1300
  {
933
1301
  "key": "DELETE",
934
- "name": "Request Confirmation",
1302
+ "name": "Delete",
935
1303
  "payload": [
936
1304
  {
937
1305
  "name": "id",
@@ -942,7 +1310,7 @@
942
1310
  },
943
1311
  {
944
1312
  "key": "CONFIRM_DELETE",
945
- "name": "Confirm"
1313
+ "name": "Confirm Delete"
946
1314
  },
947
1315
  {
948
1316
  "key": "CANCEL",
@@ -951,6 +1319,24 @@
951
1319
  {
952
1320
  "key": "CLOSE",
953
1321
  "name": "Close"
1322
+ },
1323
+ {
1324
+ "key": "TICKET_DELETED",
1325
+ "name": "Ticket Deleted"
1326
+ },
1327
+ {
1328
+ "key": "TicketLoaded",
1329
+ "name": "Ticket loaded"
1330
+ },
1331
+ {
1332
+ "key": "TicketLoadFailed",
1333
+ "name": "Ticket load failed",
1334
+ "payload": [
1335
+ {
1336
+ "name": "message",
1337
+ "type": "string"
1338
+ }
1339
+ ]
954
1340
  }
955
1341
  ],
956
1342
  "transitions": [
@@ -979,6 +1365,10 @@
979
1365
  "fetch",
980
1366
  "Ticket",
981
1367
  {
1368
+ "emit": {
1369
+ "success": "TicketLoaded",
1370
+ "failure": "TicketLoadFailed"
1371
+ },
982
1372
  "id": "@payload.id"
983
1373
  }
984
1374
  ],
@@ -986,58 +1376,58 @@
986
1376
  "render-ui",
987
1377
  "modal",
988
1378
  {
989
- "type": "stack",
990
- "direction": "vertical",
991
- "gap": "md",
992
1379
  "children": [
993
1380
  {
994
- "type": "stack",
995
- "direction": "horizontal",
996
- "gap": "sm",
997
1381
  "align": "center",
1382
+ "gap": "sm",
1383
+ "direction": "horizontal",
998
1384
  "children": [
999
1385
  {
1000
- "type": "icon",
1001
1386
  "name": "alert-triangle",
1387
+ "type": "icon",
1002
1388
  "size": "md"
1003
1389
  },
1004
1390
  {
1005
- "type": "typography",
1006
1391
  "content": "Delete Ticket",
1007
- "variant": "h3"
1392
+ "variant": "h3",
1393
+ "type": "typography"
1008
1394
  }
1009
- ]
1395
+ ],
1396
+ "type": "stack"
1010
1397
  },
1011
1398
  {
1012
1399
  "type": "divider"
1013
1400
  },
1014
1401
  {
1015
- "type": "alert",
1016
1402
  "variant": "danger",
1017
- "message": "This action cannot be undone."
1403
+ "message": "This action cannot be undone.",
1404
+ "type": "alert"
1018
1405
  },
1019
1406
  {
1020
- "type": "stack",
1021
- "direction": "horizontal",
1022
- "gap": "sm",
1023
- "justify": "end",
1024
1407
  "children": [
1025
1408
  {
1026
1409
  "type": "button",
1027
- "label": "Cancel",
1410
+ "variant": "ghost",
1028
1411
  "event": "CANCEL",
1029
- "variant": "ghost"
1412
+ "label": "Cancel"
1030
1413
  },
1031
1414
  {
1415
+ "icon": "check",
1032
1416
  "type": "button",
1033
1417
  "label": "Delete",
1034
1418
  "event": "CONFIRM_DELETE",
1035
- "variant": "danger",
1036
- "icon": "check"
1419
+ "variant": "danger"
1037
1420
  }
1038
- ]
1421
+ ],
1422
+ "justify": "end",
1423
+ "direction": "horizontal",
1424
+ "gap": "sm",
1425
+ "type": "stack"
1039
1426
  }
1040
- ]
1427
+ ],
1428
+ "gap": "md",
1429
+ "type": "stack",
1430
+ "direction": "vertical"
1041
1431
  }
1042
1432
  ]
1043
1433
  ]
@@ -1058,6 +1448,13 @@
1058
1448
  "modal",
1059
1449
  null
1060
1450
  ],
1451
+ [
1452
+ "render-ui",
1453
+ "main",
1454
+ {
1455
+ "type": "box"
1456
+ }
1457
+ ],
1061
1458
  [
1062
1459
  "ref",
1063
1460
  "Ticket"
@@ -1078,6 +1475,13 @@
1078
1475
  "modal",
1079
1476
  null
1080
1477
  ],
1478
+ [
1479
+ "render-ui",
1480
+ "main",
1481
+ {
1482
+ "type": "box"
1483
+ }
1484
+ ],
1081
1485
  [
1082
1486
  "ref",
1083
1487
  "Ticket"
@@ -1094,6 +1498,13 @@
1094
1498
  "modal",
1095
1499
  null
1096
1500
  ],
1501
+ [
1502
+ "render-ui",
1503
+ "main",
1504
+ {
1505
+ "type": "box"
1506
+ }
1507
+ ],
1097
1508
  [
1098
1509
  "ref",
1099
1510
  "Ticket"
@@ -1101,14 +1512,14 @@
1101
1512
  ]
1102
1513
  }
1103
1514
  ]
1104
- }
1515
+ },
1516
+ "scope": "collection"
1105
1517
  }
1106
1518
  ],
1107
1519
  "pages": [
1108
1520
  {
1109
1521
  "name": "TicketsPage",
1110
1522
  "path": "/tickets",
1111
- "isInitial": true,
1112
1523
  "traits": [
1113
1524
  {
1114
1525
  "ref": "TicketBrowse"
@@ -1142,41 +1553,93 @@
1142
1553
  },
1143
1554
  {
1144
1555
  "name": "ticketId",
1145
- "type": "string",
1146
- "default": ""
1556
+ "type": "string"
1147
1557
  },
1148
1558
  {
1149
1559
  "name": "body",
1150
- "type": "string",
1151
- "default": ""
1560
+ "type": "string"
1152
1561
  },
1153
1562
  {
1154
1563
  "name": "author",
1155
- "type": "string",
1156
- "default": ""
1564
+ "type": "string"
1157
1565
  },
1158
1566
  {
1159
1567
  "name": "createdAt",
1160
- "type": "date",
1161
- "default": ""
1568
+ "type": "datetime"
1162
1569
  }
1163
1570
  ]
1164
1571
  },
1165
1572
  "traits": [
1166
1573
  {
1167
1574
  "name": "ResponseBrowse",
1168
- "linkedEntity": "Response",
1169
1575
  "category": "interaction",
1576
+ "linkedEntity": "Response",
1577
+ "emits": [
1578
+ {
1579
+ "event": "RESOLVE",
1580
+ "scope": "external",
1581
+ "payload": [
1582
+ {
1583
+ "name": "id",
1584
+ "type": "string"
1585
+ }
1586
+ ]
1587
+ },
1588
+ {
1589
+ "event": "ResponseLoaded",
1590
+ "description": "Fired when Response finishes loading",
1591
+ "scope": "internal",
1592
+ "payload": [
1593
+ {
1594
+ "name": "id",
1595
+ "type": "string",
1596
+ "required": true
1597
+ },
1598
+ {
1599
+ "name": "ticketId",
1600
+ "type": "string"
1601
+ },
1602
+ {
1603
+ "name": "body",
1604
+ "type": "string"
1605
+ },
1606
+ {
1607
+ "name": "author",
1608
+ "type": "string"
1609
+ },
1610
+ {
1611
+ "name": "createdAt",
1612
+ "type": "datetime"
1613
+ }
1614
+ ]
1615
+ },
1616
+ {
1617
+ "event": "ResponseLoadFailed",
1618
+ "description": "Fired when Response fails to load",
1619
+ "scope": "internal",
1620
+ "payload": [
1621
+ {
1622
+ "name": "message",
1623
+ "type": "string"
1624
+ }
1625
+ ]
1626
+ }
1627
+ ],
1170
1628
  "listens": [
1171
1629
  {
1172
1630
  "event": "SEND",
1173
1631
  "triggers": "INIT",
1174
- "scope": "internal"
1632
+ "source": {
1633
+ "kind": "trait",
1634
+ "trait": "ResponseCompose"
1635
+ }
1175
1636
  },
1176
1637
  {
1177
1638
  "event": "ASSIGN",
1178
1639
  "triggers": "INIT",
1179
- "scope": "external"
1640
+ "source": {
1641
+ "kind": "any"
1642
+ }
1180
1643
  }
1181
1644
  ],
1182
1645
  "stateMachine": {
@@ -1192,21 +1655,20 @@
1192
1655
  "name": "Initialize"
1193
1656
  },
1194
1657
  {
1195
- "key": "COMPOSE",
1196
- "name": "COMPOSE"
1658
+ "key": "RESOLVE",
1659
+ "name": "Resolve"
1197
1660
  },
1198
1661
  {
1199
- "key": "VIEW",
1200
- "name": "VIEW",
1201
- "payload": [
1202
- {
1203
- "name": "id",
1204
- "type": "string",
1205
- "required": true
1206
- },
1662
+ "key": "ResponseLoaded",
1663
+ "name": "Response loaded"
1664
+ },
1665
+ {
1666
+ "key": "ResponseLoadFailed",
1667
+ "name": "Response load failed",
1668
+ "payload": [
1207
1669
  {
1208
- "name": "row",
1209
- "type": "object"
1670
+ "name": "message",
1671
+ "type": "string"
1210
1672
  }
1211
1673
  ]
1212
1674
  }
@@ -1225,110 +1687,110 @@
1225
1687
  "render-ui",
1226
1688
  "main",
1227
1689
  {
1228
- "type": "dashboard-layout",
1229
- "appName": "Helpdesk",
1230
1690
  "navItems": [
1231
1691
  {
1232
- "label": "Tickets",
1233
1692
  "href": "/tickets",
1693
+ "label": "Tickets",
1234
1694
  "icon": "inbox"
1235
1695
  },
1236
1696
  {
1237
- "label": "Responses",
1697
+ "icon": "message-circle",
1238
1698
  "href": "/responses",
1239
- "icon": "message-circle"
1699
+ "label": "Responses"
1240
1700
  },
1241
1701
  {
1242
- "label": "Metrics",
1702
+ "icon": "layout-list",
1243
1703
  "href": "/metrics",
1244
- "icon": "layout-list"
1704
+ "label": "Metrics"
1245
1705
  }
1246
1706
  ],
1707
+ "type": "dashboard-layout",
1708
+ "appName": "Helpdesk",
1247
1709
  "children": [
1248
1710
  {
1249
- "type": "stack",
1250
- "direction": "vertical",
1251
- "gap": "lg",
1252
- "className": "max-w-5xl mx-auto w-full",
1253
1711
  "children": [
1254
1712
  {
1255
- "type": "stack",
1713
+ "justify": "space-between",
1256
1714
  "direction": "horizontal",
1257
1715
  "gap": "md",
1258
- "justify": "space-between",
1259
1716
  "align": "center",
1260
1717
  "children": [
1261
1718
  {
1262
1719
  "type": "stack",
1263
1720
  "direction": "horizontal",
1264
- "gap": "sm",
1265
- "align": "center",
1266
1721
  "children": [
1267
1722
  {
1268
1723
  "type": "icon",
1269
- "name": "message-circle",
1270
- "size": "lg"
1724
+ "size": "lg",
1725
+ "name": "message-circle"
1271
1726
  },
1272
1727
  {
1273
1728
  "type": "typography",
1274
1729
  "content": "Responses",
1275
1730
  "variant": "h2"
1276
1731
  }
1277
- ]
1732
+ ],
1733
+ "align": "center",
1734
+ "gap": "sm"
1278
1735
  },
1279
1736
  {
1280
- "type": "stack",
1281
1737
  "direction": "horizontal",
1282
- "gap": "sm",
1283
1738
  "children": [
1284
1739
  {
1285
- "type": "button",
1286
- "label": "Compose",
1287
- "event": "COMPOSE",
1288
1740
  "variant": "primary",
1289
- "icon": "edit"
1741
+ "icon": "edit",
1742
+ "event": "COMPOSE",
1743
+ "type": "button",
1744
+ "label": "Compose"
1290
1745
  }
1291
- ]
1746
+ ],
1747
+ "type": "stack",
1748
+ "gap": "sm"
1292
1749
  }
1293
- ]
1750
+ ],
1751
+ "type": "stack"
1294
1752
  },
1295
1753
  {
1296
1754
  "type": "divider"
1297
1755
  },
1298
1756
  {
1757
+ "emptyIcon": "inbox",
1299
1758
  "type": "data-list",
1759
+ "variant": "card",
1300
1760
  "entity": "Response",
1301
- "emptyIcon": "inbox",
1302
- "emptyTitle": "No messages yet",
1303
- "emptyDescription": "Start a new conversation.",
1304
- "itemActions": [
1305
- {
1306
- "label": "View",
1307
- "event": "VIEW",
1308
- "variant": "ghost",
1309
- "size": "sm"
1310
- }
1311
- ],
1312
1761
  "columns": [
1313
1762
  {
1314
1763
  "name": "author",
1315
- "variant": "h4",
1316
- "icon": "message-circle"
1764
+ "icon": "message-circle",
1765
+ "variant": "h4"
1317
1766
  },
1318
1767
  {
1319
- "name": "body",
1320
- "variant": "body"
1768
+ "variant": "body",
1769
+ "name": "body"
1321
1770
  },
1322
1771
  {
1323
1772
  "name": "createdAt",
1324
- "variant": "caption",
1325
- "format": "date"
1773
+ "format": "date",
1774
+ "variant": "caption"
1326
1775
  }
1327
1776
  ],
1328
- "variant": "card",
1329
- "gap": "sm"
1777
+ "emptyDescription": "Start a new conversation.",
1778
+ "itemActions": [
1779
+ {
1780
+ "event": "VIEW",
1781
+ "variant": "ghost",
1782
+ "label": "View",
1783
+ "size": "sm"
1784
+ }
1785
+ ],
1786
+ "gap": "sm",
1787
+ "emptyTitle": "No messages yet"
1330
1788
  }
1331
- ]
1789
+ ],
1790
+ "direction": "vertical",
1791
+ "gap": "lg",
1792
+ "type": "stack",
1793
+ "className": "max-w-5xl mx-auto w-full"
1332
1794
  }
1333
1795
  ]
1334
1796
  }
@@ -1337,29 +1799,54 @@
1337
1799
  }
1338
1800
  ]
1339
1801
  },
1802
+ "scope": "collection"
1803
+ },
1804
+ {
1805
+ "name": "ResponseCompose",
1806
+ "category": "interaction",
1807
+ "linkedEntity": "Response",
1340
1808
  "emits": [
1341
1809
  {
1342
- "event": "RESOLVE",
1343
- "description": "Resolve ticket and update metrics",
1810
+ "event": "SEND"
1811
+ },
1812
+ {
1813
+ "event": "ResponseLoaded",
1814
+ "description": "Fired when Response finishes loading",
1815
+ "scope": "internal",
1344
1816
  "payload": [
1345
1817
  {
1346
1818
  "name": "id",
1347
1819
  "type": "string",
1348
1820
  "required": true
1821
+ },
1822
+ {
1823
+ "name": "ticketId",
1824
+ "type": "string"
1825
+ },
1826
+ {
1827
+ "name": "body",
1828
+ "type": "string"
1829
+ },
1830
+ {
1831
+ "name": "author",
1832
+ "type": "string"
1833
+ },
1834
+ {
1835
+ "name": "createdAt",
1836
+ "type": "datetime"
1349
1837
  }
1350
- ],
1351
- "scope": "external"
1352
- }
1353
- ]
1354
- },
1355
- {
1356
- "name": "ResponseCompose",
1357
- "linkedEntity": "Response",
1358
- "category": "interaction",
1359
- "emits": [
1838
+ ]
1839
+ },
1360
1840
  {
1361
- "event": "SEND",
1362
- "scope": "internal"
1841
+ "event": "ResponseLoadFailed",
1842
+ "description": "Fired when Response fails to load",
1843
+ "scope": "internal",
1844
+ "payload": [
1845
+ {
1846
+ "name": "message",
1847
+ "type": "string"
1848
+ }
1849
+ ]
1363
1850
  }
1364
1851
  ],
1365
1852
  "stateMachine": {
@@ -1379,7 +1866,7 @@
1379
1866
  },
1380
1867
  {
1381
1868
  "key": "COMPOSE",
1382
- "name": "Open"
1869
+ "name": "Compose"
1383
1870
  },
1384
1871
  {
1385
1872
  "key": "CLOSE",
@@ -1387,12 +1874,25 @@
1387
1874
  },
1388
1875
  {
1389
1876
  "key": "SEND",
1390
- "name": "Save",
1877
+ "name": "Send",
1391
1878
  "payload": [
1392
1879
  {
1393
1880
  "name": "data",
1394
- "type": "object",
1395
- "required": true
1881
+ "type": "string"
1882
+ }
1883
+ ]
1884
+ },
1885
+ {
1886
+ "key": "ResponseLoaded",
1887
+ "name": "Response loaded"
1888
+ },
1889
+ {
1890
+ "key": "ResponseLoadFailed",
1891
+ "name": "Response load failed",
1892
+ "payload": [
1893
+ {
1894
+ "name": "message",
1895
+ "type": "string"
1396
1896
  }
1397
1897
  ]
1398
1898
  }
@@ -1418,14 +1918,12 @@
1418
1918
  "render-ui",
1419
1919
  "modal",
1420
1920
  {
1421
- "type": "stack",
1422
1921
  "direction": "vertical",
1423
1922
  "gap": "md",
1923
+ "type": "stack",
1424
1924
  "children": [
1425
1925
  {
1426
1926
  "type": "stack",
1427
- "direction": "horizontal",
1428
- "gap": "sm",
1429
1927
  "children": [
1430
1928
  {
1431
1929
  "type": "icon",
@@ -1433,26 +1931,28 @@
1433
1931
  "size": "md"
1434
1932
  },
1435
1933
  {
1934
+ "variant": "h3",
1436
1935
  "type": "typography",
1437
- "content": "New Response",
1438
- "variant": "h3"
1936
+ "content": "New Response"
1439
1937
  }
1440
- ]
1938
+ ],
1939
+ "direction": "horizontal",
1940
+ "gap": "sm"
1441
1941
  },
1442
1942
  {
1443
1943
  "type": "divider"
1444
1944
  },
1445
1945
  {
1446
- "type": "form-section",
1447
- "entity": "Response",
1448
- "mode": "create",
1449
- "submitEvent": "SEND",
1450
1946
  "cancelEvent": "CLOSE",
1947
+ "mode": "create",
1948
+ "entity": "Response",
1451
1949
  "fields": [
1452
1950
  "ticketId",
1453
1951
  "body",
1454
1952
  "author"
1455
- ]
1953
+ ],
1954
+ "type": "form-section",
1955
+ "submitEvent": "SEND"
1456
1956
  }
1457
1957
  ]
1458
1958
  }
@@ -1469,6 +1969,13 @@
1469
1969
  "modal",
1470
1970
  null
1471
1971
  ],
1972
+ [
1973
+ "render-ui",
1974
+ "main",
1975
+ {
1976
+ "type": "box"
1977
+ }
1978
+ ],
1472
1979
  [
1473
1980
  "notify",
1474
1981
  "Cancelled",
@@ -1491,20 +1998,63 @@
1491
1998
  "render-ui",
1492
1999
  "modal",
1493
2000
  null
2001
+ ],
2002
+ [
2003
+ "render-ui",
2004
+ "main",
2005
+ {
2006
+ "type": "box"
2007
+ }
1494
2008
  ]
1495
2009
  ]
1496
2010
  }
1497
2011
  ]
1498
- }
2012
+ },
2013
+ "scope": "collection"
1499
2014
  },
1500
2015
  {
1501
2016
  "name": "ResponseView",
1502
- "linkedEntity": "Response",
1503
2017
  "category": "interaction",
2018
+ "linkedEntity": "Response",
1504
2019
  "emits": [
1505
2020
  {
1506
- "event": "SAVE",
1507
- "scope": "internal"
2021
+ "event": "ResponseLoaded",
2022
+ "description": "Fired when Response finishes loading",
2023
+ "scope": "internal",
2024
+ "payload": [
2025
+ {
2026
+ "name": "id",
2027
+ "type": "string",
2028
+ "required": true
2029
+ },
2030
+ {
2031
+ "name": "ticketId",
2032
+ "type": "string"
2033
+ },
2034
+ {
2035
+ "name": "body",
2036
+ "type": "string"
2037
+ },
2038
+ {
2039
+ "name": "author",
2040
+ "type": "string"
2041
+ },
2042
+ {
2043
+ "name": "createdAt",
2044
+ "type": "datetime"
2045
+ }
2046
+ ]
2047
+ },
2048
+ {
2049
+ "event": "ResponseLoadFailed",
2050
+ "description": "Fired when Response fails to load",
2051
+ "scope": "internal",
2052
+ "payload": [
2053
+ {
2054
+ "name": "message",
2055
+ "type": "string"
2056
+ }
2057
+ ]
1508
2058
  }
1509
2059
  ],
1510
2060
  "stateMachine": {
@@ -1524,12 +2074,11 @@
1524
2074
  },
1525
2075
  {
1526
2076
  "key": "VIEW",
1527
- "name": "Open",
2077
+ "name": "View",
1528
2078
  "payload": [
1529
2079
  {
1530
2080
  "name": "id",
1531
- "type": "string",
1532
- "required": true
2081
+ "type": "string"
1533
2082
  }
1534
2083
  ]
1535
2084
  },
@@ -1539,12 +2088,19 @@
1539
2088
  },
1540
2089
  {
1541
2090
  "key": "SAVE",
1542
- "name": "Save",
2091
+ "name": "Save"
2092
+ },
2093
+ {
2094
+ "key": "ResponseLoaded",
2095
+ "name": "Response loaded"
2096
+ },
2097
+ {
2098
+ "key": "ResponseLoadFailed",
2099
+ "name": "Response load failed",
1543
2100
  "payload": [
1544
2101
  {
1545
- "name": "data",
1546
- "type": "object",
1547
- "required": true
2102
+ "name": "message",
2103
+ "type": "string"
1548
2104
  }
1549
2105
  ]
1550
2106
  }
@@ -1570,6 +2126,10 @@
1570
2126
  "fetch",
1571
2127
  "Response",
1572
2128
  {
2129
+ "emit": {
2130
+ "failure": "ResponseLoadFailed",
2131
+ "success": "ResponseLoaded"
2132
+ },
1573
2133
  "id": "@payload.id"
1574
2134
  }
1575
2135
  ],
@@ -1577,35 +2137,35 @@
1577
2137
  "render-ui",
1578
2138
  "modal",
1579
2139
  {
1580
- "type": "stack",
1581
- "direction": "vertical",
1582
2140
  "gap": "md",
2141
+ "direction": "vertical",
2142
+ "type": "stack",
1583
2143
  "children": [
1584
2144
  {
1585
- "type": "stack",
1586
- "direction": "horizontal",
1587
- "gap": "sm",
1588
2145
  "align": "center",
2146
+ "type": "stack",
1589
2147
  "children": [
1590
2148
  {
1591
- "type": "icon",
1592
2149
  "name": "eye",
1593
- "size": "md"
2150
+ "size": "md",
2151
+ "type": "icon"
1594
2152
  },
1595
2153
  {
2154
+ "content": "@entity.ticketId",
1596
2155
  "type": "typography",
1597
- "variant": "h3",
1598
- "content": "@entity.ticketId"
2156
+ "variant": "h3"
1599
2157
  }
1600
- ]
2158
+ ],
2159
+ "gap": "sm",
2160
+ "direction": "horizontal"
1601
2161
  },
1602
2162
  {
1603
2163
  "type": "divider"
1604
2164
  },
1605
2165
  {
1606
- "type": "stack",
1607
2166
  "direction": "horizontal",
1608
2167
  "gap": "md",
2168
+ "type": "stack",
1609
2169
  "children": [
1610
2170
  {
1611
2171
  "type": "typography",
@@ -1613,21 +2173,21 @@
1613
2173
  "content": "Ticket ID"
1614
2174
  },
1615
2175
  {
1616
- "type": "typography",
1617
2176
  "variant": "body",
1618
- "content": "@entity.ticketId"
2177
+ "content": "@entity.ticketId",
2178
+ "type": "typography"
1619
2179
  }
1620
2180
  ]
1621
2181
  },
1622
2182
  {
1623
- "type": "stack",
1624
2183
  "direction": "horizontal",
2184
+ "type": "stack",
1625
2185
  "gap": "md",
1626
2186
  "children": [
1627
2187
  {
1628
2188
  "type": "typography",
1629
- "variant": "caption",
1630
- "content": "Body"
2189
+ "content": "Body",
2190
+ "variant": "caption"
1631
2191
  },
1632
2192
  {
1633
2193
  "type": "typography",
@@ -1637,8 +2197,8 @@
1637
2197
  ]
1638
2198
  },
1639
2199
  {
1640
- "type": "stack",
1641
2200
  "direction": "horizontal",
2201
+ "type": "stack",
1642
2202
  "gap": "md",
1643
2203
  "children": [
1644
2204
  {
@@ -1654,21 +2214,21 @@
1654
2214
  ]
1655
2215
  },
1656
2216
  {
1657
- "type": "stack",
1658
2217
  "direction": "horizontal",
1659
- "gap": "md",
2218
+ "type": "stack",
1660
2219
  "children": [
1661
2220
  {
1662
2221
  "type": "typography",
1663
- "variant": "caption",
1664
- "content": "Created At"
2222
+ "content": "Created At",
2223
+ "variant": "caption"
1665
2224
  },
1666
2225
  {
1667
- "type": "typography",
2226
+ "content": "@entity.createdAt",
1668
2227
  "variant": "body",
1669
- "content": "@entity.createdAt"
2228
+ "type": "typography"
1670
2229
  }
1671
- ]
2230
+ ],
2231
+ "gap": "md"
1672
2232
  },
1673
2233
  {
1674
2234
  "type": "divider"
@@ -1702,6 +2262,13 @@
1702
2262
  "modal",
1703
2263
  null
1704
2264
  ],
2265
+ [
2266
+ "render-ui",
2267
+ "main",
2268
+ {
2269
+ "type": "box"
2270
+ }
2271
+ ],
1705
2272
  [
1706
2273
  "notify",
1707
2274
  "Cancelled",
@@ -1718,16 +2285,24 @@
1718
2285
  "render-ui",
1719
2286
  "modal",
1720
2287
  null
2288
+ ],
2289
+ [
2290
+ "render-ui",
2291
+ "main",
2292
+ {
2293
+ "type": "box"
2294
+ }
1721
2295
  ]
1722
2296
  ]
1723
2297
  }
1724
2298
  ]
1725
- }
2299
+ },
2300
+ "scope": "collection"
1726
2301
  }
1727
2302
  ],
1728
2303
  "pages": [
1729
2304
  {
1730
- "name": "ResponsesPage",
2305
+ "name": "Responses",
1731
2306
  "path": "/responses",
1732
2307
  "traits": [
1733
2308
  {
@@ -1756,36 +2331,85 @@
1756
2331
  },
1757
2332
  {
1758
2333
  "name": "openTickets",
1759
- "type": "number",
1760
- "default": 0
2334
+ "type": "number"
1761
2335
  },
1762
2336
  {
1763
2337
  "name": "resolvedTickets",
1764
- "type": "number",
1765
- "default": 0
2338
+ "type": "number"
1766
2339
  },
1767
2340
  {
1768
2341
  "name": "avgResponseTime",
1769
- "type": "string",
1770
- "default": "0h"
2342
+ "type": "string"
1771
2343
  },
1772
2344
  {
1773
2345
  "name": "satisfactionScore",
1774
- "type": "number",
1775
- "default": 0
2346
+ "type": "number"
1776
2347
  },
1777
2348
  {
1778
2349
  "name": "activeAgents",
1779
- "type": "number",
1780
- "default": 0
2350
+ "type": "number"
1781
2351
  }
1782
2352
  ]
1783
2353
  },
1784
2354
  "traits": [
1785
2355
  {
1786
2356
  "name": "SupportMetricsDisplay",
1787
- "linkedEntity": "SupportMetrics",
1788
2357
  "category": "interaction",
2358
+ "linkedEntity": "SupportMetrics",
2359
+ "emits": [
2360
+ {
2361
+ "event": "SupportMetricsLoaded",
2362
+ "description": "Fired when SupportMetrics finishes loading",
2363
+ "scope": "internal",
2364
+ "payload": [
2365
+ {
2366
+ "name": "id",
2367
+ "type": "string",
2368
+ "required": true
2369
+ },
2370
+ {
2371
+ "name": "openTickets",
2372
+ "type": "number"
2373
+ },
2374
+ {
2375
+ "name": "resolvedTickets",
2376
+ "type": "number"
2377
+ },
2378
+ {
2379
+ "name": "avgResponseTime",
2380
+ "type": "string"
2381
+ },
2382
+ {
2383
+ "name": "satisfactionScore",
2384
+ "type": "number"
2385
+ },
2386
+ {
2387
+ "name": "activeAgents",
2388
+ "type": "number"
2389
+ }
2390
+ ]
2391
+ },
2392
+ {
2393
+ "event": "SupportMetricsLoadFailed",
2394
+ "description": "Fired when SupportMetrics fails to load",
2395
+ "scope": "internal",
2396
+ "payload": [
2397
+ {
2398
+ "name": "message",
2399
+ "type": "string"
2400
+ }
2401
+ ]
2402
+ }
2403
+ ],
2404
+ "listens": [
2405
+ {
2406
+ "event": "RESOLVE",
2407
+ "triggers": "INIT",
2408
+ "source": {
2409
+ "kind": "any"
2410
+ }
2411
+ }
2412
+ ],
1789
2413
  "stateMachine": {
1790
2414
  "states": [
1791
2415
  {
@@ -1815,6 +2439,20 @@
1815
2439
  {
1816
2440
  "key": "REFRESHED",
1817
2441
  "name": "Refreshed"
2442
+ },
2443
+ {
2444
+ "key": "SupportMetricsLoaded",
2445
+ "name": "SupportMetrics loaded"
2446
+ },
2447
+ {
2448
+ "key": "SupportMetricsLoadFailed",
2449
+ "name": "SupportMetrics load failed",
2450
+ "payload": [
2451
+ {
2452
+ "name": "message",
2453
+ "type": "string"
2454
+ }
2455
+ ]
1818
2456
  }
1819
2457
  ],
1820
2458
  "transitions": [
@@ -1825,34 +2463,38 @@
1825
2463
  "effects": [
1826
2464
  [
1827
2465
  "fetch",
1828
- "SupportMetrics"
2466
+ "SupportMetrics",
2467
+ {
2468
+ "emit": {
2469
+ "success": "SupportMetricsLoaded",
2470
+ "failure": "SupportMetricsLoadFailed"
2471
+ }
2472
+ }
1829
2473
  ],
1830
2474
  [
1831
2475
  "render-ui",
1832
2476
  "main",
1833
2477
  {
1834
- "type": "dashboard-layout",
1835
- "appName": "Helpdesk",
1836
2478
  "navItems": [
1837
2479
  {
1838
2480
  "label": "Tickets",
1839
- "href": "/tickets",
1840
- "icon": "inbox"
2481
+ "icon": "inbox",
2482
+ "href": "/tickets"
1841
2483
  },
1842
2484
  {
1843
2485
  "label": "Responses",
1844
- "href": "/responses",
1845
- "icon": "message-circle"
2486
+ "icon": "message-circle",
2487
+ "href": "/responses"
1846
2488
  },
1847
2489
  {
1848
- "label": "Metrics",
1849
2490
  "href": "/metrics",
1850
- "icon": "layout-list"
2491
+ "icon": "layout-list",
2492
+ "label": "Metrics"
1851
2493
  }
1852
2494
  ],
2495
+ "appName": "Helpdesk",
1853
2496
  "children": [
1854
2497
  {
1855
- "type": "scaled-diagram",
1856
2498
  "children": [
1857
2499
  {
1858
2500
  "type": "stack",
@@ -1860,7 +2502,6 @@
1860
2502
  "gap": "lg",
1861
2503
  "children": [
1862
2504
  {
1863
- "type": "breadcrumb",
1864
2505
  "items": [
1865
2506
  {
1866
2507
  "label": "Home",
@@ -1869,39 +2510,40 @@
1869
2510
  {
1870
2511
  "label": "Support Metrics"
1871
2512
  }
1872
- ]
2513
+ ],
2514
+ "type": "breadcrumb"
1873
2515
  },
1874
2516
  {
1875
2517
  "type": "stack",
1876
- "direction": "horizontal",
1877
2518
  "gap": "md",
1878
2519
  "justify": "space-between",
1879
2520
  "children": [
1880
2521
  {
1881
- "type": "stack",
1882
- "direction": "horizontal",
1883
- "gap": "md",
1884
2522
  "children": [
1885
2523
  {
1886
- "type": "icon",
1887
2524
  "name": "activity",
2525
+ "type": "icon",
1888
2526
  "size": "lg"
1889
2527
  },
1890
2528
  {
1891
- "type": "typography",
1892
2529
  "content": "Support Metrics",
2530
+ "type": "typography",
1893
2531
  "variant": "h2"
1894
2532
  }
1895
- ]
2533
+ ],
2534
+ "gap": "md",
2535
+ "direction": "horizontal",
2536
+ "type": "stack"
1896
2537
  },
1897
2538
  {
1898
- "type": "button",
1899
- "label": "Refresh",
1900
2539
  "event": "REFRESH",
1901
2540
  "variant": "secondary",
1902
- "icon": "refresh-cw"
2541
+ "type": "button",
2542
+ "icon": "refresh-cw",
2543
+ "label": "Refresh"
1903
2544
  }
1904
- ]
2545
+ ],
2546
+ "direction": "horizontal"
1905
2547
  },
1906
2548
  {
1907
2549
  "type": "divider"
@@ -1912,7 +2554,6 @@
1912
2554
  "children": [
1913
2555
  {
1914
2556
  "type": "simple-grid",
1915
- "columns": 3,
1916
2557
  "children": [
1917
2558
  {
1918
2559
  "type": "stat-display",
@@ -1927,7 +2568,6 @@
1927
2568
  ]
1928
2569
  },
1929
2570
  {
1930
- "type": "stat-display",
1931
2571
  "label": "ResolvedTickets",
1932
2572
  "value": [
1933
2573
  "object/get",
@@ -1936,23 +2576,22 @@
1936
2576
  "@entity"
1937
2577
  ],
1938
2578
  "resolvedTickets"
1939
- ]
2579
+ ],
2580
+ "type": "stat-display"
1940
2581
  },
1941
2582
  {
1942
2583
  "type": "card",
1943
2584
  "children": [
1944
2585
  {
1945
2586
  "type": "stack",
1946
- "direction": "vertical",
1947
2587
  "gap": "sm",
1948
2588
  "children": [
1949
2589
  {
1950
2590
  "type": "typography",
1951
- "variant": "caption",
1952
- "content": "AvgResponseTime"
2591
+ "content": "AvgResponseTime",
2592
+ "variant": "caption"
1953
2593
  },
1954
2594
  {
1955
- "type": "typography",
1956
2595
  "variant": "h3",
1957
2596
  "content": [
1958
2597
  "object/get",
@@ -1961,15 +2600,15 @@
1961
2600
  "@entity"
1962
2601
  ],
1963
2602
  "avgResponseTime"
1964
- ]
2603
+ ],
2604
+ "type": "typography"
1965
2605
  }
1966
- ]
2606
+ ],
2607
+ "direction": "vertical"
1967
2608
  }
1968
2609
  ]
1969
2610
  },
1970
2611
  {
1971
- "type": "stat-display",
1972
- "label": "SatisfactionScore",
1973
2612
  "value": [
1974
2613
  "object/get",
1975
2614
  [
@@ -1977,7 +2616,9 @@
1977
2616
  "@entity"
1978
2617
  ],
1979
2618
  "satisfactionScore"
1980
- ]
2619
+ ],
2620
+ "label": "SatisfactionScore",
2621
+ "type": "stat-display"
1981
2622
  },
1982
2623
  {
1983
2624
  "type": "stat-display",
@@ -1991,7 +2632,8 @@
1991
2632
  "activeAgents"
1992
2633
  ]
1993
2634
  }
1994
- ]
2635
+ ],
2636
+ "columns": 3.0
1995
2637
  }
1996
2638
  ]
1997
2639
  },
@@ -2000,69 +2642,69 @@
2000
2642
  },
2001
2643
  {
2002
2644
  "type": "grid",
2003
- "columns": 2,
2004
2645
  "gap": "md",
2646
+ "columns": 2.0,
2005
2647
  "children": [
2006
2648
  {
2007
- "type": "card",
2008
2649
  "children": [
2009
2650
  {
2010
- "type": "typography",
2651
+ "content": "Chart View",
2011
2652
  "variant": "caption",
2012
- "content": "Chart View"
2653
+ "type": "typography"
2013
2654
  }
2014
- ]
2655
+ ],
2656
+ "type": "card"
2015
2657
  },
2016
2658
  {
2017
2659
  "type": "card",
2018
2660
  "children": [
2019
2661
  {
2020
- "type": "typography",
2662
+ "content": "Graph View",
2021
2663
  "variant": "caption",
2022
- "content": "Graph View"
2664
+ "type": "typography"
2023
2665
  }
2024
2666
  ]
2025
2667
  }
2026
2668
  ]
2027
2669
  },
2028
2670
  {
2029
- "type": "line-chart",
2671
+ "title": "Trend",
2030
2672
  "data": [
2031
2673
  {
2032
- "date": "Jan",
2033
- "value": 12
2674
+ "value": 12.0,
2675
+ "date": "Jan"
2034
2676
  },
2035
2677
  {
2036
2678
  "date": "Feb",
2037
- "value": 19
2679
+ "value": 19.0
2038
2680
  },
2039
2681
  {
2040
2682
  "date": "Mar",
2041
- "value": 15
2683
+ "value": 15.0
2042
2684
  },
2043
2685
  {
2044
2686
  "date": "Apr",
2045
- "value": 25
2687
+ "value": 25.0
2046
2688
  },
2047
2689
  {
2048
2690
  "date": "May",
2049
- "value": 22
2691
+ "value": 22.0
2050
2692
  },
2051
2693
  {
2052
- "date": "Jun",
2053
- "value": 30
2694
+ "value": 30.0,
2695
+ "date": "Jun"
2054
2696
  }
2055
2697
  ],
2698
+ "type": "line-chart",
2056
2699
  "xKey": "date",
2057
- "yKey": "value",
2058
- "title": "Trend"
2700
+ "yKey": "value"
2059
2701
  },
2060
2702
  {
2061
2703
  "type": "chart-legend",
2062
2704
  "items": [
2063
2705
  {
2064
- "label": "Current",
2065
- "color": "primary"
2706
+ "color": "primary",
2707
+ "label": "Current"
2066
2708
  },
2067
2709
  {
2068
2710
  "label": "Previous",
@@ -2071,45 +2713,47 @@
2071
2713
  ]
2072
2714
  },
2073
2715
  {
2716
+ "height": 200.0,
2717
+ "edges": [
2718
+ {
2719
+ "to": "b",
2720
+ "from": "a"
2721
+ },
2722
+ {
2723
+ "from": "b",
2724
+ "to": "c"
2725
+ }
2726
+ ],
2727
+ "width": 400.0,
2074
2728
  "type": "graph-view",
2075
2729
  "nodes": [
2076
2730
  {
2077
2731
  "id": "a",
2732
+ "y": 100.0,
2078
2733
  "label": "Start",
2079
- "x": 50,
2080
- "y": 100
2734
+ "x": 50.0
2081
2735
  },
2082
2736
  {
2083
- "id": "b",
2084
2737
  "label": "Process",
2085
- "x": 200,
2086
- "y": 50
2738
+ "x": 200.0,
2739
+ "id": "b",
2740
+ "y": 50.0
2087
2741
  },
2088
2742
  {
2743
+ "x": 350.0,
2744
+ "y": 100.0,
2089
2745
  "id": "c",
2090
- "label": "End",
2091
- "x": 350,
2092
- "y": 100
2093
- }
2094
- ],
2095
- "edges": [
2096
- {
2097
- "from": "a",
2098
- "to": "b"
2099
- },
2100
- {
2101
- "from": "b",
2102
- "to": "c"
2746
+ "label": "End"
2103
2747
  }
2104
- ],
2105
- "width": 400,
2106
- "height": 200
2748
+ ]
2107
2749
  }
2108
2750
  ]
2109
2751
  }
2110
- ]
2752
+ ],
2753
+ "type": "scaled-diagram"
2111
2754
  }
2112
- ]
2755
+ ],
2756
+ "type": "dashboard-layout"
2113
2757
  }
2114
2758
  ]
2115
2759
  ]
@@ -2121,7 +2765,13 @@
2121
2765
  "effects": [
2122
2766
  [
2123
2767
  "fetch",
2124
- "SupportMetrics"
2768
+ "SupportMetrics",
2769
+ {
2770
+ "emit": {
2771
+ "success": "SupportMetricsLoaded",
2772
+ "failure": "SupportMetricsLoadFailed"
2773
+ }
2774
+ }
2125
2775
  ],
2126
2776
  [
2127
2777
  "render-ui",
@@ -2129,38 +2779,20 @@
2129
2779
  {
2130
2780
  "type": "dashboard-layout",
2131
2781
  "appName": "Helpdesk",
2132
- "navItems": [
2133
- {
2134
- "label": "Tickets",
2135
- "href": "/tickets",
2136
- "icon": "inbox"
2137
- },
2138
- {
2139
- "label": "Responses",
2140
- "href": "/responses",
2141
- "icon": "message-circle"
2142
- },
2143
- {
2144
- "label": "Metrics",
2145
- "href": "/metrics",
2146
- "icon": "layout-list"
2147
- }
2148
- ],
2149
2782
  "children": [
2150
2783
  {
2151
- "type": "scaled-diagram",
2152
2784
  "children": [
2153
2785
  {
2154
- "type": "stack",
2155
2786
  "direction": "vertical",
2156
2787
  "gap": "lg",
2788
+ "type": "stack",
2157
2789
  "children": [
2158
2790
  {
2159
2791
  "type": "breadcrumb",
2160
2792
  "items": [
2161
2793
  {
2162
- "label": "Home",
2163
- "href": "/"
2794
+ "href": "/",
2795
+ "label": "Home"
2164
2796
  },
2165
2797
  {
2166
2798
  "label": "Support Metrics"
@@ -2168,51 +2800,48 @@
2168
2800
  ]
2169
2801
  },
2170
2802
  {
2171
- "type": "stack",
2172
- "direction": "horizontal",
2173
- "gap": "md",
2174
- "justify": "space-between",
2175
2803
  "children": [
2176
2804
  {
2177
- "type": "stack",
2178
2805
  "direction": "horizontal",
2179
- "gap": "md",
2806
+ "type": "stack",
2180
2807
  "children": [
2181
2808
  {
2182
- "type": "icon",
2183
2809
  "name": "activity",
2810
+ "type": "icon",
2184
2811
  "size": "lg"
2185
2812
  },
2186
2813
  {
2187
2814
  "type": "typography",
2188
- "content": "Support Metrics",
2189
- "variant": "h2"
2815
+ "variant": "h2",
2816
+ "content": "Support Metrics"
2190
2817
  }
2191
- ]
2818
+ ],
2819
+ "gap": "md"
2192
2820
  },
2193
2821
  {
2194
- "type": "button",
2195
- "label": "Refresh",
2196
2822
  "event": "REFRESH",
2197
2823
  "variant": "secondary",
2198
- "icon": "refresh-cw"
2824
+ "type": "button",
2825
+ "icon": "refresh-cw",
2826
+ "label": "Refresh"
2199
2827
  }
2200
- ]
2828
+ ],
2829
+ "type": "stack",
2830
+ "gap": "md",
2831
+ "justify": "space-between",
2832
+ "direction": "horizontal"
2201
2833
  },
2202
2834
  {
2203
2835
  "type": "divider"
2204
2836
  },
2205
2837
  {
2206
2838
  "type": "box",
2207
- "padding": "md",
2208
2839
  "children": [
2209
2840
  {
2210
2841
  "type": "simple-grid",
2211
- "columns": 3,
2842
+ "columns": 3.0,
2212
2843
  "children": [
2213
2844
  {
2214
- "type": "stat-display",
2215
- "label": "OpenTickets",
2216
2845
  "value": [
2217
2846
  "object/get",
2218
2847
  [
@@ -2220,10 +2849,11 @@
2220
2849
  "@entity"
2221
2850
  ],
2222
2851
  "openTickets"
2223
- ]
2852
+ ],
2853
+ "type": "stat-display",
2854
+ "label": "OpenTickets"
2224
2855
  },
2225
2856
  {
2226
- "type": "stat-display",
2227
2857
  "label": "ResolvedTickets",
2228
2858
  "value": [
2229
2859
  "object/get",
@@ -2232,7 +2862,8 @@
2232
2862
  "@entity"
2233
2863
  ],
2234
2864
  "resolvedTickets"
2235
- ]
2865
+ ],
2866
+ "type": "stat-display"
2236
2867
  },
2237
2868
  {
2238
2869
  "type": "card",
@@ -2248,7 +2879,6 @@
2248
2879
  "content": "AvgResponseTime"
2249
2880
  },
2250
2881
  {
2251
- "type": "typography",
2252
2882
  "variant": "h3",
2253
2883
  "content": [
2254
2884
  "object/get",
@@ -2257,15 +2887,14 @@
2257
2887
  "@entity"
2258
2888
  ],
2259
2889
  "avgResponseTime"
2260
- ]
2890
+ ],
2891
+ "type": "typography"
2261
2892
  }
2262
2893
  ]
2263
2894
  }
2264
2895
  ]
2265
2896
  },
2266
2897
  {
2267
- "type": "stat-display",
2268
- "label": "SatisfactionScore",
2269
2898
  "value": [
2270
2899
  "object/get",
2271
2900
  [
@@ -2273,7 +2902,9 @@
2273
2902
  "@entity"
2274
2903
  ],
2275
2904
  "satisfactionScore"
2276
- ]
2905
+ ],
2906
+ "type": "stat-display",
2907
+ "label": "SatisfactionScore"
2277
2908
  },
2278
2909
  {
2279
2910
  "type": "stat-display",
@@ -2289,14 +2920,15 @@
2289
2920
  }
2290
2921
  ]
2291
2922
  }
2292
- ]
2923
+ ],
2924
+ "padding": "md"
2293
2925
  },
2294
2926
  {
2295
2927
  "type": "divider"
2296
2928
  },
2297
2929
  {
2298
2930
  "type": "grid",
2299
- "columns": 2,
2931
+ "columns": 2.0,
2300
2932
  "gap": "md",
2301
2933
  "children": [
2302
2934
  {
@@ -2313,9 +2945,9 @@
2313
2945
  "type": "card",
2314
2946
  "children": [
2315
2947
  {
2316
- "type": "typography",
2948
+ "content": "Graph View",
2317
2949
  "variant": "caption",
2318
- "content": "Graph View"
2950
+ "type": "typography"
2319
2951
  }
2320
2952
  ]
2321
2953
  }
@@ -2326,27 +2958,27 @@
2326
2958
  "data": [
2327
2959
  {
2328
2960
  "date": "Jan",
2329
- "value": 12
2961
+ "value": 12.0
2330
2962
  },
2331
2963
  {
2332
- "date": "Feb",
2333
- "value": 19
2964
+ "value": 19.0,
2965
+ "date": "Feb"
2334
2966
  },
2335
2967
  {
2336
- "date": "Mar",
2337
- "value": 15
2968
+ "value": 15.0,
2969
+ "date": "Mar"
2338
2970
  },
2339
2971
  {
2340
- "date": "Apr",
2341
- "value": 25
2972
+ "value": 25.0,
2973
+ "date": "Apr"
2342
2974
  },
2343
2975
  {
2344
2976
  "date": "May",
2345
- "value": 22
2977
+ "value": 22.0
2346
2978
  },
2347
2979
  {
2348
2980
  "date": "Jun",
2349
- "value": 30
2981
+ "value": 30.0
2350
2982
  }
2351
2983
  ],
2352
2984
  "xKey": "date",
@@ -2354,7 +2986,6 @@
2354
2986
  "title": "Trend"
2355
2987
  },
2356
2988
  {
2357
- "type": "chart-legend",
2358
2989
  "items": [
2359
2990
  {
2360
2991
  "label": "Current",
@@ -2364,46 +2995,65 @@
2364
2995
  "label": "Previous",
2365
2996
  "color": "muted"
2366
2997
  }
2367
- ]
2998
+ ],
2999
+ "type": "chart-legend"
2368
3000
  },
2369
3001
  {
2370
- "type": "graph-view",
2371
3002
  "nodes": [
2372
3003
  {
2373
3004
  "id": "a",
2374
3005
  "label": "Start",
2375
- "x": 50,
2376
- "y": 100
3006
+ "y": 100.0,
3007
+ "x": 50.0
2377
3008
  },
2378
3009
  {
3010
+ "x": 200.0,
2379
3011
  "id": "b",
2380
3012
  "label": "Process",
2381
- "x": 200,
2382
- "y": 50
3013
+ "y": 50.0
2383
3014
  },
2384
3015
  {
2385
- "id": "c",
2386
3016
  "label": "End",
2387
- "x": 350,
2388
- "y": 100
3017
+ "x": 350.0,
3018
+ "y": 100.0,
3019
+ "id": "c"
2389
3020
  }
2390
3021
  ],
3022
+ "width": 400.0,
3023
+ "height": 200.0,
2391
3024
  "edges": [
2392
3025
  {
2393
- "from": "a",
2394
- "to": "b"
3026
+ "to": "b",
3027
+ "from": "a"
2395
3028
  },
2396
3029
  {
2397
3030
  "from": "b",
2398
3031
  "to": "c"
2399
3032
  }
2400
3033
  ],
2401
- "width": 400,
2402
- "height": 200
3034
+ "type": "graph-view"
2403
3035
  }
2404
3036
  ]
2405
3037
  }
2406
- ]
3038
+ ],
3039
+ "type": "scaled-diagram"
3040
+ }
3041
+ ],
3042
+ "navItems": [
3043
+ {
3044
+ "label": "Tickets",
3045
+ "icon": "inbox",
3046
+ "href": "/tickets"
3047
+ },
3048
+ {
3049
+ "icon": "message-circle",
3050
+ "label": "Responses",
3051
+ "href": "/responses"
3052
+ },
3053
+ {
3054
+ "icon": "layout-list",
3055
+ "label": "Metrics",
3056
+ "href": "/metrics"
2407
3057
  }
2408
3058
  ]
2409
3059
  }
@@ -2417,81 +3067,66 @@
2417
3067
  "effects": [
2418
3068
  [
2419
3069
  "fetch",
2420
- "SupportMetrics"
3070
+ "SupportMetrics",
3071
+ {
3072
+ "emit": {
3073
+ "failure": "SupportMetricsLoadFailed",
3074
+ "success": "SupportMetricsLoaded"
3075
+ }
3076
+ }
2421
3077
  ],
2422
3078
  [
2423
3079
  "render-ui",
2424
3080
  "main",
2425
3081
  {
2426
- "type": "dashboard-layout",
2427
- "appName": "Helpdesk",
2428
- "navItems": [
2429
- {
2430
- "label": "Tickets",
2431
- "href": "/tickets",
2432
- "icon": "inbox"
2433
- },
2434
- {
2435
- "label": "Responses",
2436
- "href": "/responses",
2437
- "icon": "message-circle"
2438
- },
2439
- {
2440
- "label": "Metrics",
2441
- "href": "/metrics",
2442
- "icon": "layout-list"
2443
- }
2444
- ],
2445
3082
  "children": [
2446
3083
  {
2447
- "type": "scaled-diagram",
2448
3084
  "children": [
2449
3085
  {
2450
3086
  "type": "stack",
2451
- "direction": "vertical",
2452
3087
  "gap": "lg",
2453
3088
  "children": [
2454
3089
  {
2455
- "type": "breadcrumb",
2456
3090
  "items": [
2457
3091
  {
2458
- "label": "Home",
2459
- "href": "/"
3092
+ "href": "/",
3093
+ "label": "Home"
2460
3094
  },
2461
3095
  {
2462
3096
  "label": "Support Metrics"
2463
3097
  }
2464
- ]
3098
+ ],
3099
+ "type": "breadcrumb"
2465
3100
  },
2466
3101
  {
2467
3102
  "type": "stack",
2468
- "direction": "horizontal",
2469
3103
  "gap": "md",
2470
3104
  "justify": "space-between",
3105
+ "direction": "horizontal",
2471
3106
  "children": [
2472
3107
  {
2473
- "type": "stack",
2474
- "direction": "horizontal",
2475
- "gap": "md",
2476
3108
  "children": [
2477
3109
  {
2478
- "type": "icon",
3110
+ "size": "lg",
2479
3111
  "name": "activity",
2480
- "size": "lg"
3112
+ "type": "icon"
2481
3113
  },
2482
3114
  {
2483
3115
  "type": "typography",
2484
- "content": "Support Metrics",
2485
- "variant": "h2"
3116
+ "variant": "h2",
3117
+ "content": "Support Metrics"
2486
3118
  }
2487
- ]
3119
+ ],
3120
+ "type": "stack",
3121
+ "gap": "md",
3122
+ "direction": "horizontal"
2488
3123
  },
2489
3124
  {
3125
+ "event": "REFRESH",
2490
3126
  "type": "button",
3127
+ "icon": "refresh-cw",
2491
3128
  "label": "Refresh",
2492
- "event": "REFRESH",
2493
- "variant": "secondary",
2494
- "icon": "refresh-cw"
3129
+ "variant": "secondary"
2495
3130
  }
2496
3131
  ]
2497
3132
  },
@@ -2503,12 +3138,8 @@
2503
3138
  "padding": "md",
2504
3139
  "children": [
2505
3140
  {
2506
- "type": "simple-grid",
2507
- "columns": 3,
2508
3141
  "children": [
2509
3142
  {
2510
- "type": "stat-display",
2511
- "label": "OpenTickets",
2512
3143
  "value": [
2513
3144
  "object/get",
2514
3145
  [
@@ -2516,7 +3147,9 @@
2516
3147
  "@entity"
2517
3148
  ],
2518
3149
  "openTickets"
2519
- ]
3150
+ ],
3151
+ "type": "stat-display",
3152
+ "label": "OpenTickets"
2520
3153
  },
2521
3154
  {
2522
3155
  "type": "stat-display",
@@ -2535,13 +3168,11 @@
2535
3168
  "children": [
2536
3169
  {
2537
3170
  "type": "stack",
2538
- "direction": "vertical",
2539
- "gap": "sm",
2540
3171
  "children": [
2541
3172
  {
2542
- "type": "typography",
2543
3173
  "variant": "caption",
2544
- "content": "AvgResponseTime"
3174
+ "content": "AvgResponseTime",
3175
+ "type": "typography"
2545
3176
  },
2546
3177
  {
2547
3178
  "type": "typography",
@@ -2555,13 +3186,13 @@
2555
3186
  "avgResponseTime"
2556
3187
  ]
2557
3188
  }
2558
- ]
3189
+ ],
3190
+ "direction": "vertical",
3191
+ "gap": "sm"
2559
3192
  }
2560
3193
  ]
2561
3194
  },
2562
3195
  {
2563
- "type": "stat-display",
2564
- "label": "SatisfactionScore",
2565
3196
  "value": [
2566
3197
  "object/get",
2567
3198
  [
@@ -2569,11 +3200,12 @@
2569
3200
  "@entity"
2570
3201
  ],
2571
3202
  "satisfactionScore"
2572
- ]
3203
+ ],
3204
+ "type": "stat-display",
3205
+ "label": "SatisfactionScore"
2573
3206
  },
2574
3207
  {
2575
3208
  "type": "stat-display",
2576
- "label": "ActiveAgents",
2577
3209
  "value": [
2578
3210
  "object/get",
2579
3211
  [
@@ -2581,9 +3213,12 @@
2581
3213
  "@entity"
2582
3214
  ],
2583
3215
  "activeAgents"
2584
- ]
3216
+ ],
3217
+ "label": "ActiveAgents"
2585
3218
  }
2586
- ]
3219
+ ],
3220
+ "type": "simple-grid",
3221
+ "columns": 3.0
2587
3222
  }
2588
3223
  ]
2589
3224
  },
@@ -2591,99 +3226,78 @@
2591
3226
  "type": "divider"
2592
3227
  },
2593
3228
  {
2594
- "type": "grid",
2595
- "columns": 2,
2596
3229
  "gap": "md",
3230
+ "type": "grid",
2597
3231
  "children": [
2598
3232
  {
2599
- "type": "card",
2600
3233
  "children": [
2601
3234
  {
3235
+ "content": "Chart View",
2602
3236
  "type": "typography",
2603
- "variant": "caption",
2604
- "content": "Chart View"
3237
+ "variant": "caption"
2605
3238
  }
2606
- ]
3239
+ ],
3240
+ "type": "card"
2607
3241
  },
2608
3242
  {
2609
3243
  "type": "card",
2610
3244
  "children": [
2611
3245
  {
3246
+ "content": "Graph View",
2612
3247
  "type": "typography",
2613
- "variant": "caption",
2614
- "content": "Graph View"
3248
+ "variant": "caption"
2615
3249
  }
2616
3250
  ]
2617
3251
  }
2618
- ]
3252
+ ],
3253
+ "columns": 2.0
2619
3254
  },
2620
3255
  {
3256
+ "yKey": "value",
3257
+ "xKey": "date",
3258
+ "title": "Trend",
2621
3259
  "type": "line-chart",
2622
3260
  "data": [
2623
3261
  {
2624
3262
  "date": "Jan",
2625
- "value": 12
3263
+ "value": 12.0
2626
3264
  },
2627
3265
  {
2628
3266
  "date": "Feb",
2629
- "value": 19
3267
+ "value": 19.0
2630
3268
  },
2631
3269
  {
2632
- "date": "Mar",
2633
- "value": 15
3270
+ "value": 15.0,
3271
+ "date": "Mar"
2634
3272
  },
2635
3273
  {
2636
- "date": "Apr",
2637
- "value": 25
3274
+ "value": 25.0,
3275
+ "date": "Apr"
2638
3276
  },
2639
3277
  {
2640
- "date": "May",
2641
- "value": 22
3278
+ "value": 22.0,
3279
+ "date": "May"
2642
3280
  },
2643
3281
  {
2644
3282
  "date": "Jun",
2645
- "value": 30
3283
+ "value": 30.0
2646
3284
  }
2647
- ],
2648
- "xKey": "date",
2649
- "yKey": "value",
2650
- "title": "Trend"
3285
+ ]
2651
3286
  },
2652
3287
  {
2653
3288
  "type": "chart-legend",
2654
3289
  "items": [
2655
3290
  {
2656
- "label": "Current",
2657
- "color": "primary"
2658
- },
2659
- {
2660
- "label": "Previous",
2661
- "color": "muted"
2662
- }
2663
- ]
2664
- },
2665
- {
2666
- "type": "graph-view",
2667
- "nodes": [
2668
- {
2669
- "id": "a",
2670
- "label": "Start",
2671
- "x": 50,
2672
- "y": 100
2673
- },
2674
- {
2675
- "id": "b",
2676
- "label": "Process",
2677
- "x": 200,
2678
- "y": 50
3291
+ "color": "primary",
3292
+ "label": "Current"
2679
3293
  },
2680
3294
  {
2681
- "id": "c",
2682
- "label": "End",
2683
- "x": 350,
2684
- "y": 100
3295
+ "label": "Previous",
3296
+ "color": "muted"
2685
3297
  }
2686
- ],
3298
+ ]
3299
+ },
3300
+ {
2687
3301
  "edges": [
2688
3302
  {
2689
3303
  "from": "a",
@@ -2694,14 +3308,56 @@
2694
3308
  "to": "c"
2695
3309
  }
2696
3310
  ],
2697
- "width": 400,
2698
- "height": 200
3311
+ "nodes": [
3312
+ {
3313
+ "y": 100.0,
3314
+ "x": 50.0,
3315
+ "label": "Start",
3316
+ "id": "a"
3317
+ },
3318
+ {
3319
+ "x": 200.0,
3320
+ "y": 50.0,
3321
+ "label": "Process",
3322
+ "id": "b"
3323
+ },
3324
+ {
3325
+ "id": "c",
3326
+ "x": 350.0,
3327
+ "y": 100.0,
3328
+ "label": "End"
3329
+ }
3330
+ ],
3331
+ "type": "graph-view",
3332
+ "width": 400.0,
3333
+ "height": 200.0
2699
3334
  }
2700
- ]
3335
+ ],
3336
+ "direction": "vertical"
2701
3337
  }
2702
- ]
3338
+ ],
3339
+ "type": "scaled-diagram"
2703
3340
  }
2704
- ]
3341
+ ],
3342
+ "navItems": [
3343
+ {
3344
+ "href": "/tickets",
3345
+ "icon": "inbox",
3346
+ "label": "Tickets"
3347
+ },
3348
+ {
3349
+ "label": "Responses",
3350
+ "href": "/responses",
3351
+ "icon": "message-circle"
3352
+ },
3353
+ {
3354
+ "icon": "layout-list",
3355
+ "label": "Metrics",
3356
+ "href": "/metrics"
3357
+ }
3358
+ ],
3359
+ "appName": "Helpdesk",
3360
+ "type": "dashboard-layout"
2705
3361
  }
2706
3362
  ]
2707
3363
  ]
@@ -2713,31 +3369,18 @@
2713
3369
  "effects": [
2714
3370
  [
2715
3371
  "fetch",
2716
- "SupportMetrics"
3372
+ "SupportMetrics",
3373
+ {
3374
+ "emit": {
3375
+ "success": "SupportMetricsLoaded",
3376
+ "failure": "SupportMetricsLoadFailed"
3377
+ }
3378
+ }
2717
3379
  ],
2718
3380
  [
2719
3381
  "render-ui",
2720
3382
  "main",
2721
3383
  {
2722
- "type": "dashboard-layout",
2723
- "appName": "Helpdesk",
2724
- "navItems": [
2725
- {
2726
- "label": "Tickets",
2727
- "href": "/tickets",
2728
- "icon": "inbox"
2729
- },
2730
- {
2731
- "label": "Responses",
2732
- "href": "/responses",
2733
- "icon": "message-circle"
2734
- },
2735
- {
2736
- "label": "Metrics",
2737
- "href": "/metrics",
2738
- "icon": "layout-list"
2739
- }
2740
- ],
2741
3384
  "children": [
2742
3385
  {
2743
3386
  "type": "scaled-diagram",
@@ -2760,47 +3403,45 @@
2760
3403
  ]
2761
3404
  },
2762
3405
  {
2763
- "type": "stack",
2764
3406
  "direction": "horizontal",
2765
- "gap": "md",
2766
- "justify": "space-between",
2767
3407
  "children": [
2768
3408
  {
2769
- "type": "stack",
2770
3409
  "direction": "horizontal",
2771
- "gap": "md",
3410
+ "type": "stack",
2772
3411
  "children": [
2773
3412
  {
2774
- "type": "icon",
2775
3413
  "name": "activity",
2776
- "size": "lg"
3414
+ "size": "lg",
3415
+ "type": "icon"
2777
3416
  },
2778
3417
  {
2779
3418
  "type": "typography",
2780
3419
  "content": "Support Metrics",
2781
3420
  "variant": "h2"
2782
3421
  }
2783
- ]
3422
+ ],
3423
+ "gap": "md"
2784
3424
  },
2785
3425
  {
3426
+ "variant": "secondary",
3427
+ "icon": "refresh-cw",
2786
3428
  "type": "button",
2787
- "label": "Refresh",
2788
3429
  "event": "REFRESH",
2789
- "variant": "secondary",
2790
- "icon": "refresh-cw"
3430
+ "label": "Refresh"
2791
3431
  }
2792
- ]
3432
+ ],
3433
+ "gap": "md",
3434
+ "type": "stack",
3435
+ "justify": "space-between"
2793
3436
  },
2794
3437
  {
2795
3438
  "type": "divider"
2796
3439
  },
2797
3440
  {
2798
- "type": "box",
2799
- "padding": "md",
2800
3441
  "children": [
2801
3442
  {
3443
+ "columns": 3.0,
2802
3444
  "type": "simple-grid",
2803
- "columns": 3,
2804
3445
  "children": [
2805
3446
  {
2806
3447
  "type": "stat-display",
@@ -2815,8 +3456,8 @@
2815
3456
  ]
2816
3457
  },
2817
3458
  {
2818
- "type": "stat-display",
2819
3459
  "label": "ResolvedTickets",
3460
+ "type": "stat-display",
2820
3461
  "value": [
2821
3462
  "object/get",
2822
3463
  [
@@ -2830,9 +3471,7 @@
2830
3471
  "type": "card",
2831
3472
  "children": [
2832
3473
  {
2833
- "type": "stack",
2834
3474
  "direction": "vertical",
2835
- "gap": "sm",
2836
3475
  "children": [
2837
3476
  {
2838
3477
  "type": "typography",
@@ -2840,8 +3479,8 @@
2840
3479
  "content": "AvgResponseTime"
2841
3480
  },
2842
3481
  {
2843
- "type": "typography",
2844
3482
  "variant": "h3",
3483
+ "type": "typography",
2845
3484
  "content": [
2846
3485
  "object/get",
2847
3486
  [
@@ -2851,13 +3490,14 @@
2851
3490
  "avgResponseTime"
2852
3491
  ]
2853
3492
  }
2854
- ]
3493
+ ],
3494
+ "type": "stack",
3495
+ "gap": "sm"
2855
3496
  }
2856
3497
  ]
2857
3498
  },
2858
3499
  {
2859
3500
  "type": "stat-display",
2860
- "label": "SatisfactionScore",
2861
3501
  "value": [
2862
3502
  "object/get",
2863
3503
  [
@@ -2865,7 +3505,8 @@
2865
3505
  "@entity"
2866
3506
  ],
2867
3507
  "satisfactionScore"
2868
- ]
3508
+ ],
3509
+ "label": "SatisfactionScore"
2869
3510
  },
2870
3511
  {
2871
3512
  "type": "stat-display",
@@ -2881,69 +3522,71 @@
2881
3522
  }
2882
3523
  ]
2883
3524
  }
2884
- ]
3525
+ ],
3526
+ "padding": "md",
3527
+ "type": "box"
2885
3528
  },
2886
3529
  {
2887
3530
  "type": "divider"
2888
3531
  },
2889
3532
  {
2890
- "type": "grid",
2891
- "columns": 2,
3533
+ "columns": 2.0,
2892
3534
  "gap": "md",
2893
3535
  "children": [
2894
3536
  {
2895
- "type": "card",
2896
3537
  "children": [
2897
3538
  {
3539
+ "content": "Chart View",
2898
3540
  "type": "typography",
2899
- "variant": "caption",
2900
- "content": "Chart View"
3541
+ "variant": "caption"
2901
3542
  }
2902
- ]
3543
+ ],
3544
+ "type": "card"
2903
3545
  },
2904
3546
  {
2905
3547
  "type": "card",
2906
3548
  "children": [
2907
3549
  {
2908
3550
  "type": "typography",
2909
- "variant": "caption",
2910
- "content": "Graph View"
3551
+ "content": "Graph View",
3552
+ "variant": "caption"
2911
3553
  }
2912
3554
  ]
2913
3555
  }
2914
- ]
3556
+ ],
3557
+ "type": "grid"
2915
3558
  },
2916
3559
  {
3560
+ "xKey": "date",
3561
+ "title": "Trend",
2917
3562
  "type": "line-chart",
2918
3563
  "data": [
2919
3564
  {
2920
3565
  "date": "Jan",
2921
- "value": 12
3566
+ "value": 12.0
2922
3567
  },
2923
3568
  {
2924
- "date": "Feb",
2925
- "value": 19
3569
+ "value": 19.0,
3570
+ "date": "Feb"
2926
3571
  },
2927
3572
  {
2928
3573
  "date": "Mar",
2929
- "value": 15
3574
+ "value": 15.0
2930
3575
  },
2931
3576
  {
2932
- "date": "Apr",
2933
- "value": 25
3577
+ "value": 25.0,
3578
+ "date": "Apr"
2934
3579
  },
2935
3580
  {
2936
- "date": "May",
2937
- "value": 22
3581
+ "value": 22.0,
3582
+ "date": "May"
2938
3583
  },
2939
3584
  {
2940
3585
  "date": "Jun",
2941
- "value": 30
3586
+ "value": 30.0
2942
3587
  }
2943
3588
  ],
2944
- "xKey": "date",
2945
- "yKey": "value",
2946
- "title": "Trend"
3589
+ "yKey": "value"
2947
3590
  },
2948
3591
  {
2949
3592
  "type": "chart-legend",
@@ -2953,33 +3596,35 @@
2953
3596
  "color": "primary"
2954
3597
  },
2955
3598
  {
2956
- "label": "Previous",
2957
- "color": "muted"
3599
+ "color": "muted",
3600
+ "label": "Previous"
2958
3601
  }
2959
3602
  ]
2960
3603
  },
2961
3604
  {
2962
- "type": "graph-view",
2963
3605
  "nodes": [
2964
3606
  {
2965
- "id": "a",
2966
3607
  "label": "Start",
2967
- "x": 50,
2968
- "y": 100
3608
+ "y": 100.0,
3609
+ "id": "a",
3610
+ "x": 50.0
2969
3611
  },
2970
3612
  {
2971
3613
  "id": "b",
2972
- "label": "Process",
2973
- "x": 200,
2974
- "y": 50
3614
+ "y": 50.0,
3615
+ "x": 200.0,
3616
+ "label": "Process"
2975
3617
  },
2976
3618
  {
2977
- "id": "c",
3619
+ "y": 100.0,
2978
3620
  "label": "End",
2979
- "x": 350,
2980
- "y": 100
3621
+ "x": 350.0,
3622
+ "id": "c"
2981
3623
  }
2982
3624
  ],
3625
+ "width": 400.0,
3626
+ "height": 200.0,
3627
+ "type": "graph-view",
2983
3628
  "edges": [
2984
3629
  {
2985
3630
  "from": "a",
@@ -2989,15 +3634,32 @@
2989
3634
  "from": "b",
2990
3635
  "to": "c"
2991
3636
  }
2992
- ],
2993
- "width": 400,
2994
- "height": 200
3637
+ ]
2995
3638
  }
2996
3639
  ]
2997
3640
  }
2998
3641
  ]
2999
3642
  }
3000
- ]
3643
+ ],
3644
+ "navItems": [
3645
+ {
3646
+ "href": "/tickets",
3647
+ "icon": "inbox",
3648
+ "label": "Tickets"
3649
+ },
3650
+ {
3651
+ "icon": "message-circle",
3652
+ "label": "Responses",
3653
+ "href": "/responses"
3654
+ },
3655
+ {
3656
+ "href": "/metrics",
3657
+ "label": "Metrics",
3658
+ "icon": "layout-list"
3659
+ }
3660
+ ],
3661
+ "type": "dashboard-layout",
3662
+ "appName": "Helpdesk"
3001
3663
  }
3002
3664
  ]
3003
3665
  ]
@@ -3009,42 +3671,27 @@
3009
3671
  "effects": [
3010
3672
  [
3011
3673
  "fetch",
3012
- "SupportMetrics"
3674
+ "SupportMetrics",
3675
+ {
3676
+ "emit": {
3677
+ "failure": "SupportMetricsLoadFailed",
3678
+ "success": "SupportMetricsLoaded"
3679
+ }
3680
+ }
3013
3681
  ],
3014
3682
  [
3015
3683
  "render-ui",
3016
3684
  "main",
3017
3685
  {
3018
- "type": "dashboard-layout",
3019
- "appName": "Helpdesk",
3020
- "navItems": [
3021
- {
3022
- "label": "Tickets",
3023
- "href": "/tickets",
3024
- "icon": "inbox"
3025
- },
3026
- {
3027
- "label": "Responses",
3028
- "href": "/responses",
3029
- "icon": "message-circle"
3030
- },
3031
- {
3032
- "label": "Metrics",
3033
- "href": "/metrics",
3034
- "icon": "layout-list"
3035
- }
3036
- ],
3037
3686
  "children": [
3038
3687
  {
3039
3688
  "type": "scaled-diagram",
3040
3689
  "children": [
3041
3690
  {
3042
- "type": "stack",
3043
- "direction": "vertical",
3044
3691
  "gap": "lg",
3692
+ "type": "stack",
3045
3693
  "children": [
3046
3694
  {
3047
- "type": "breadcrumb",
3048
3695
  "items": [
3049
3696
  {
3050
3697
  "label": "Home",
@@ -3053,39 +3700,40 @@
3053
3700
  {
3054
3701
  "label": "Support Metrics"
3055
3702
  }
3056
- ]
3703
+ ],
3704
+ "type": "breadcrumb"
3057
3705
  },
3058
3706
  {
3059
- "type": "stack",
3060
- "direction": "horizontal",
3061
- "gap": "md",
3062
- "justify": "space-between",
3063
3707
  "children": [
3064
3708
  {
3065
3709
  "type": "stack",
3066
- "direction": "horizontal",
3067
- "gap": "md",
3068
3710
  "children": [
3069
3711
  {
3712
+ "size": "lg",
3070
3713
  "type": "icon",
3071
- "name": "activity",
3072
- "size": "lg"
3714
+ "name": "activity"
3073
3715
  },
3074
3716
  {
3075
3717
  "type": "typography",
3076
3718
  "content": "Support Metrics",
3077
3719
  "variant": "h2"
3078
3720
  }
3079
- ]
3721
+ ],
3722
+ "direction": "horizontal",
3723
+ "gap": "md"
3080
3724
  },
3081
3725
  {
3082
- "type": "button",
3083
- "label": "Refresh",
3084
- "event": "REFRESH",
3085
3726
  "variant": "secondary",
3086
- "icon": "refresh-cw"
3727
+ "event": "REFRESH",
3728
+ "icon": "refresh-cw",
3729
+ "type": "button",
3730
+ "label": "Refresh"
3087
3731
  }
3088
- ]
3732
+ ],
3733
+ "type": "stack",
3734
+ "direction": "horizontal",
3735
+ "gap": "md",
3736
+ "justify": "space-between"
3089
3737
  },
3090
3738
  {
3091
3739
  "type": "divider"
@@ -3095,8 +3743,8 @@
3095
3743
  "padding": "md",
3096
3744
  "children": [
3097
3745
  {
3746
+ "columns": 3.0,
3098
3747
  "type": "simple-grid",
3099
- "columns": 3,
3100
3748
  "children": [
3101
3749
  {
3102
3750
  "type": "stat-display",
@@ -3126,18 +3774,16 @@
3126
3774
  "type": "card",
3127
3775
  "children": [
3128
3776
  {
3129
- "type": "stack",
3130
3777
  "direction": "vertical",
3778
+ "type": "stack",
3131
3779
  "gap": "sm",
3132
3780
  "children": [
3133
3781
  {
3134
- "type": "typography",
3135
3782
  "variant": "caption",
3783
+ "type": "typography",
3136
3784
  "content": "AvgResponseTime"
3137
3785
  },
3138
3786
  {
3139
- "type": "typography",
3140
- "variant": "h3",
3141
3787
  "content": [
3142
3788
  "object/get",
3143
3789
  [
@@ -3145,14 +3791,15 @@
3145
3791
  "@entity"
3146
3792
  ],
3147
3793
  "avgResponseTime"
3148
- ]
3794
+ ],
3795
+ "type": "typography",
3796
+ "variant": "h3"
3149
3797
  }
3150
3798
  ]
3151
3799
  }
3152
3800
  ]
3153
3801
  },
3154
3802
  {
3155
- "type": "stat-display",
3156
3803
  "label": "SatisfactionScore",
3157
3804
  "value": [
3158
3805
  "object/get",
@@ -3161,11 +3808,12 @@
3161
3808
  "@entity"
3162
3809
  ],
3163
3810
  "satisfactionScore"
3164
- ]
3811
+ ],
3812
+ "type": "stat-display"
3165
3813
  },
3166
3814
  {
3167
- "type": "stat-display",
3168
3815
  "label": "ActiveAgents",
3816
+ "type": "stat-display",
3169
3817
  "value": [
3170
3818
  "object/get",
3171
3819
  [
@@ -3183,9 +3831,7 @@
3183
3831
  "type": "divider"
3184
3832
  },
3185
3833
  {
3186
- "type": "grid",
3187
- "columns": 2,
3188
- "gap": "md",
3834
+ "columns": 2.0,
3189
3835
  "children": [
3190
3836
  {
3191
3837
  "type": "card",
@@ -3198,48 +3844,50 @@
3198
3844
  ]
3199
3845
  },
3200
3846
  {
3201
- "type": "card",
3202
3847
  "children": [
3203
3848
  {
3204
- "type": "typography",
3205
3849
  "variant": "caption",
3850
+ "type": "typography",
3206
3851
  "content": "Graph View"
3207
3852
  }
3208
- ]
3853
+ ],
3854
+ "type": "card"
3209
3855
  }
3210
- ]
3856
+ ],
3857
+ "type": "grid",
3858
+ "gap": "md"
3211
3859
  },
3212
3860
  {
3213
- "type": "line-chart",
3861
+ "title": "Trend",
3214
3862
  "data": [
3215
3863
  {
3216
3864
  "date": "Jan",
3217
- "value": 12
3865
+ "value": 12.0
3218
3866
  },
3219
3867
  {
3220
- "date": "Feb",
3221
- "value": 19
3868
+ "value": 19.0,
3869
+ "date": "Feb"
3222
3870
  },
3223
3871
  {
3224
3872
  "date": "Mar",
3225
- "value": 15
3873
+ "value": 15.0
3226
3874
  },
3227
3875
  {
3228
3876
  "date": "Apr",
3229
- "value": 25
3877
+ "value": 25.0
3230
3878
  },
3231
3879
  {
3232
3880
  "date": "May",
3233
- "value": 22
3881
+ "value": 22.0
3234
3882
  },
3235
3883
  {
3236
3884
  "date": "Jun",
3237
- "value": 30
3885
+ "value": 30.0
3238
3886
  }
3239
3887
  ],
3240
- "xKey": "date",
3241
3888
  "yKey": "value",
3242
- "title": "Trend"
3889
+ "xKey": "date",
3890
+ "type": "line-chart"
3243
3891
  },
3244
3892
  {
3245
3893
  "type": "chart-legend",
@@ -3256,62 +3904,76 @@
3256
3904
  },
3257
3905
  {
3258
3906
  "type": "graph-view",
3907
+ "edges": [
3908
+ {
3909
+ "from": "a",
3910
+ "to": "b"
3911
+ },
3912
+ {
3913
+ "to": "c",
3914
+ "from": "b"
3915
+ }
3916
+ ],
3917
+ "height": 200.0,
3259
3918
  "nodes": [
3260
3919
  {
3920
+ "x": 50.0,
3261
3921
  "id": "a",
3262
3922
  "label": "Start",
3263
- "x": 50,
3264
- "y": 100
3923
+ "y": 100.0
3265
3924
  },
3266
3925
  {
3267
- "id": "b",
3268
3926
  "label": "Process",
3269
- "x": 200,
3270
- "y": 50
3927
+ "id": "b",
3928
+ "x": 200.0,
3929
+ "y": 50.0
3271
3930
  },
3272
3931
  {
3273
- "id": "c",
3932
+ "x": 350.0,
3274
3933
  "label": "End",
3275
- "x": 350,
3276
- "y": 100
3277
- }
3278
- ],
3279
- "edges": [
3280
- {
3281
- "from": "a",
3282
- "to": "b"
3283
- },
3284
- {
3285
- "from": "b",
3286
- "to": "c"
3934
+ "y": 100.0,
3935
+ "id": "c"
3287
3936
  }
3288
3937
  ],
3289
- "width": 400,
3290
- "height": 200
3938
+ "width": 400.0
3291
3939
  }
3292
- ]
3940
+ ],
3941
+ "direction": "vertical"
3293
3942
  }
3294
3943
  ]
3295
3944
  }
3296
- ]
3945
+ ],
3946
+ "type": "dashboard-layout",
3947
+ "navItems": [
3948
+ {
3949
+ "label": "Tickets",
3950
+ "href": "/tickets",
3951
+ "icon": "inbox"
3952
+ },
3953
+ {
3954
+ "href": "/responses",
3955
+ "label": "Responses",
3956
+ "icon": "message-circle"
3957
+ },
3958
+ {
3959
+ "href": "/metrics",
3960
+ "label": "Metrics",
3961
+ "icon": "layout-list"
3962
+ }
3963
+ ],
3964
+ "appName": "Helpdesk"
3297
3965
  }
3298
3966
  ]
3299
3967
  ]
3300
3968
  }
3301
3969
  ]
3302
3970
  },
3303
- "listens": [
3304
- {
3305
- "event": "RESOLVE",
3306
- "triggers": "INIT",
3307
- "scope": "external"
3308
- }
3309
- ]
3971
+ "scope": "collection"
3310
3972
  }
3311
3973
  ],
3312
3974
  "pages": [
3313
3975
  {
3314
- "name": "MetricsPage",
3976
+ "name": "Metrics",
3315
3977
  "path": "/metrics",
3316
3978
  "traits": [
3317
3979
  {
@@ -3322,4 +3984,4 @@
3322
3984
  ]
3323
3985
  }
3324
3986
  ]
3325
- }
3987
+ }