@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-lms",
3
3
  "version": "1.0.0",
4
- "description": "Learning management system organism. Composes molecules via compose: - stdList(Course): CRUD list of courses - stdWizard(Enrollment): multi-step enrollment wizard - stdDisplay(Progress): read-only progress dashboard",
4
+ "description": "std-lms as a Function",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "CourseOrbital",
@@ -54,23 +54,91 @@
54
54
  "traits": [
55
55
  {
56
56
  "name": "CourseBrowse",
57
- "linkedEntity": "Course",
58
57
  "category": "interaction",
58
+ "linkedEntity": "Course",
59
+ "emits": [
60
+ {
61
+ "event": "ENROLL",
62
+ "scope": "external",
63
+ "payload": [
64
+ {
65
+ "name": "id",
66
+ "type": "string"
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "event": "CourseLoaded",
72
+ "description": "Fired when Course finishes loading",
73
+ "scope": "internal",
74
+ "payload": [
75
+ {
76
+ "name": "id",
77
+ "type": "string",
78
+ "required": true
79
+ },
80
+ {
81
+ "name": "title",
82
+ "type": "string"
83
+ },
84
+ {
85
+ "name": "description",
86
+ "type": "string"
87
+ },
88
+ {
89
+ "name": "instructor",
90
+ "type": "string"
91
+ },
92
+ {
93
+ "name": "duration",
94
+ "type": "string"
95
+ },
96
+ {
97
+ "name": "level",
98
+ "type": "string"
99
+ },
100
+ {
101
+ "name": "pendingId",
102
+ "type": "string"
103
+ }
104
+ ]
105
+ },
106
+ {
107
+ "event": "CourseLoadFailed",
108
+ "description": "Fired when Course fails to load",
109
+ "scope": "internal",
110
+ "payload": [
111
+ {
112
+ "name": "message",
113
+ "type": "string"
114
+ }
115
+ ]
116
+ }
117
+ ],
59
118
  "listens": [
60
119
  {
61
120
  "event": "COURSE_CREATED",
62
121
  "triggers": "INIT",
63
- "scope": "external"
122
+ "source": {
123
+ "kind": "trait",
124
+ "trait": "CourseCreate"
125
+ }
64
126
  },
65
127
  {
66
128
  "event": "COURSE_UPDATED",
67
129
  "triggers": "INIT",
68
- "scope": "external"
130
+ "source": {
131
+ "kind": "trait",
132
+ "trait": "CourseEdit"
133
+ }
69
134
  },
70
135
  {
71
136
  "event": "COURSE_DELETED",
72
137
  "triggers": "INIT",
73
- "scope": "external"
138
+ "source": {
139
+ "kind": "trait",
140
+ "trait": "CourseDelete"
141
+ }
74
142
  }
75
143
  ],
76
144
  "stateMachine": {
@@ -86,12 +154,26 @@
86
154
  "name": "Initialize"
87
155
  },
88
156
  {
89
- "key": "CREATE",
90
- "name": "CREATE"
157
+ "key": "ENROLL",
158
+ "name": "Enroll"
159
+ },
160
+ {
161
+ "key": "CourseLoaded",
162
+ "name": "Course loaded"
163
+ },
164
+ {
165
+ "key": "CourseLoadFailed",
166
+ "name": "Course load failed",
167
+ "payload": [
168
+ {
169
+ "name": "message",
170
+ "type": "string"
171
+ }
172
+ ]
91
173
  },
92
174
  {
93
175
  "key": "VIEW",
94
- "name": "VIEW",
176
+ "name": "View",
95
177
  "payload": [
96
178
  {
97
179
  "name": "id",
@@ -106,7 +188,7 @@
106
188
  },
107
189
  {
108
190
  "key": "EDIT",
109
- "name": "EDIT",
191
+ "name": "Edit",
110
192
  "payload": [
111
193
  {
112
194
  "name": "id",
@@ -121,7 +203,7 @@
121
203
  },
122
204
  {
123
205
  "key": "DELETE",
124
- "name": "DELETE",
206
+ "name": "Delete",
125
207
  "payload": [
126
208
  {
127
209
  "name": "id",
@@ -149,107 +231,62 @@
149
231
  "render-ui",
150
232
  "main",
151
233
  {
152
- "type": "dashboard-layout",
153
- "appName": "LMS",
154
- "navItems": [
155
- {
156
- "label": "Courses",
157
- "href": "/courses",
158
- "icon": "book-open"
159
- },
160
- {
161
- "label": "Enroll",
162
- "href": "/enroll",
163
- "icon": "layout-list"
164
- },
165
- {
166
- "label": "Progress",
167
- "href": "/progress",
168
- "icon": "layout-list"
169
- }
170
- ],
171
234
  "children": [
172
235
  {
173
- "type": "stack",
174
- "direction": "vertical",
175
236
  "gap": "lg",
176
- "className": "max-w-5xl mx-auto w-full",
237
+ "type": "stack",
177
238
  "children": [
178
239
  {
179
240
  "type": "stack",
180
- "direction": "horizontal",
181
- "gap": "md",
182
241
  "justify": "space-between",
183
242
  "align": "center",
243
+ "gap": "md",
184
244
  "children": [
185
245
  {
186
246
  "type": "stack",
187
- "direction": "horizontal",
188
- "gap": "sm",
189
247
  "align": "center",
190
248
  "children": [
191
249
  {
250
+ "size": "lg",
192
251
  "type": "icon",
193
- "name": "book-open",
194
- "size": "lg"
252
+ "name": "book-open"
195
253
  },
196
254
  {
197
255
  "type": "typography",
198
256
  "content": "Courses",
199
257
  "variant": "h2"
200
258
  }
201
- ]
259
+ ],
260
+ "gap": "sm",
261
+ "direction": "horizontal"
202
262
  },
203
263
  {
204
264
  "type": "stack",
205
- "direction": "horizontal",
206
265
  "gap": "sm",
207
266
  "children": [
208
267
  {
268
+ "icon": "plus",
269
+ "variant": "primary",
209
270
  "type": "button",
210
- "label": "Add Course",
211
271
  "event": "CREATE",
212
- "variant": "primary",
213
- "icon": "plus"
272
+ "label": "Add Course"
214
273
  }
215
- ]
274
+ ],
275
+ "direction": "horizontal"
216
276
  }
217
- ]
277
+ ],
278
+ "direction": "horizontal"
218
279
  },
219
280
  {
220
281
  "type": "divider"
221
282
  },
222
283
  {
223
- "type": "data-grid",
224
284
  "entity": "Course",
225
- "emptyIcon": "inbox",
226
- "emptyTitle": "No courses yet",
227
- "emptyDescription": "Create a course to start teaching.",
228
- "itemActions": [
229
- {
230
- "label": "View",
231
- "event": "VIEW",
232
- "variant": "ghost",
233
- "size": "sm"
234
- },
235
- {
236
- "label": "Edit",
237
- "event": "EDIT",
238
- "variant": "ghost",
239
- "size": "sm"
240
- },
241
- {
242
- "label": "Delete",
243
- "event": "DELETE",
244
- "variant": "danger",
245
- "size": "sm"
246
- }
247
- ],
248
285
  "columns": [
249
286
  {
250
- "name": "title",
251
287
  "variant": "h3",
252
- "icon": "book-open"
288
+ "icon": "book-open",
289
+ "name": "title"
253
290
  },
254
291
  {
255
292
  "name": "level",
@@ -268,10 +305,55 @@
268
305
  "variant": "caption"
269
306
  }
270
307
  ],
271
- "cols": 2,
272
- "gap": "md"
308
+ "emptyIcon": "inbox",
309
+ "emptyDescription": "Create a course to start teaching.",
310
+ "emptyTitle": "No courses yet",
311
+ "type": "data-grid",
312
+ "cols": 2.0,
313
+ "gap": "md",
314
+ "itemActions": [
315
+ {
316
+ "variant": "ghost",
317
+ "event": "VIEW",
318
+ "label": "View",
319
+ "size": "sm"
320
+ },
321
+ {
322
+ "event": "EDIT",
323
+ "size": "sm",
324
+ "variant": "ghost",
325
+ "label": "Edit"
326
+ },
327
+ {
328
+ "event": "DELETE",
329
+ "variant": "danger",
330
+ "size": "sm",
331
+ "label": "Delete"
332
+ }
333
+ ]
273
334
  }
274
- ]
335
+ ],
336
+ "direction": "vertical",
337
+ "className": "max-w-5xl mx-auto w-full"
338
+ }
339
+ ],
340
+ "appName": "LMS",
341
+ "type": "dashboard-layout",
342
+ "navItems": [
343
+ {
344
+ "label": "Courses",
345
+ "href": "/courses",
346
+ "icon": "book-open"
347
+ },
348
+ {
349
+ "icon": "layout-list",
350
+ "href": "/enroll",
351
+ "label": "Enroll"
352
+ },
353
+ {
354
+ "label": "Progress",
355
+ "href": "/progress",
356
+ "icon": "layout-list"
275
357
  }
276
358
  ]
277
359
  }
@@ -280,33 +362,69 @@
280
362
  }
281
363
  ]
282
364
  },
365
+ "scope": "collection"
366
+ },
367
+ {
368
+ "name": "CourseCreate",
369
+ "category": "interaction",
370
+ "linkedEntity": "Course",
283
371
  "emits": [
284
372
  {
285
- "event": "ENROLL",
286
- "description": "Enroll in a course",
373
+ "event": "COURSE_CREATED",
374
+ "scope": "external",
375
+ "payload": [
376
+ {
377
+ "name": "id",
378
+ "type": "string"
379
+ }
380
+ ]
381
+ },
382
+ {
383
+ "event": "CourseLoaded",
384
+ "description": "Fired when Course finishes loading",
385
+ "scope": "internal",
287
386
  "payload": [
288
387
  {
289
388
  "name": "id",
290
389
  "type": "string",
291
390
  "required": true
391
+ },
392
+ {
393
+ "name": "title",
394
+ "type": "string"
395
+ },
396
+ {
397
+ "name": "description",
398
+ "type": "string"
399
+ },
400
+ {
401
+ "name": "instructor",
402
+ "type": "string"
403
+ },
404
+ {
405
+ "name": "duration",
406
+ "type": "string"
407
+ },
408
+ {
409
+ "name": "level",
410
+ "type": "string"
411
+ },
412
+ {
413
+ "name": "pendingId",
414
+ "type": "string"
292
415
  }
293
- ],
294
- "scope": "external"
295
- }
296
- ]
297
- },
298
- {
299
- "name": "CourseCreate",
300
- "linkedEntity": "Course",
301
- "category": "interaction",
302
- "emits": [
303
- {
304
- "event": "SAVE",
305
- "scope": "internal"
416
+ ]
306
417
  },
307
418
  {
308
- "event": "COURSE_CREATED",
309
- "scope": "external"
419
+ "event": "CourseLoadFailed",
420
+ "description": "Fired when Course fails to load",
421
+ "scope": "internal",
422
+ "payload": [
423
+ {
424
+ "name": "message",
425
+ "type": "string"
426
+ }
427
+ ]
310
428
  }
311
429
  ],
312
430
  "stateMachine": {
@@ -326,7 +444,7 @@
326
444
  },
327
445
  {
328
446
  "key": "CREATE",
329
- "name": "Open"
447
+ "name": "Create"
330
448
  },
331
449
  {
332
450
  "key": "CLOSE",
@@ -342,6 +460,24 @@
342
460
  "required": true
343
461
  }
344
462
  ]
463
+ },
464
+ {
465
+ "key": "COURSE_CREATED",
466
+ "name": "Course Created"
467
+ },
468
+ {
469
+ "key": "CourseLoaded",
470
+ "name": "Course loaded"
471
+ },
472
+ {
473
+ "key": "CourseLoadFailed",
474
+ "name": "Course load failed",
475
+ "payload": [
476
+ {
477
+ "name": "message",
478
+ "type": "string"
479
+ }
480
+ ]
345
481
  }
346
482
  ],
347
483
  "transitions": [
@@ -363,15 +499,20 @@
363
499
  "effects": [
364
500
  [
365
501
  "fetch",
366
- "Course"
502
+ "Course",
503
+ {
504
+ "emit": {
505
+ "success": "CourseLoaded",
506
+ "failure": "CourseLoadFailed"
507
+ }
508
+ }
367
509
  ],
368
510
  [
369
511
  "render-ui",
370
512
  "modal",
371
513
  {
372
- "type": "stack",
373
- "direction": "vertical",
374
514
  "gap": "md",
515
+ "type": "stack",
375
516
  "children": [
376
517
  {
377
518
  "type": "stack",
@@ -384,9 +525,9 @@
384
525
  "size": "md"
385
526
  },
386
527
  {
387
- "type": "typography",
388
528
  "content": "New Course",
389
- "variant": "h3"
529
+ "variant": "h3",
530
+ "type": "typography"
390
531
  }
391
532
  ]
392
533
  },
@@ -396,7 +537,6 @@
396
537
  {
397
538
  "type": "form-section",
398
539
  "entity": "Course",
399
- "mode": "create",
400
540
  "submitEvent": "SAVE",
401
541
  "cancelEvent": "CLOSE",
402
542
  "fields": [
@@ -405,9 +545,11 @@
405
545
  "instructor",
406
546
  "duration",
407
547
  "level"
408
- ]
548
+ ],
549
+ "mode": "create"
409
550
  }
410
- ]
551
+ ],
552
+ "direction": "vertical"
411
553
  }
412
554
  ]
413
555
  ]
@@ -422,6 +564,13 @@
422
564
  "modal",
423
565
  null
424
566
  ],
567
+ [
568
+ "render-ui",
569
+ "main",
570
+ {
571
+ "type": "box"
572
+ }
573
+ ],
425
574
  [
426
575
  "notify",
427
576
  "Cancelled",
@@ -445,6 +594,13 @@
445
594
  "modal",
446
595
  null
447
596
  ],
597
+ [
598
+ "render-ui",
599
+ "main",
600
+ {
601
+ "type": "box"
602
+ }
603
+ ],
448
604
  [
449
605
  "emit",
450
606
  "COURSE_CREATED"
@@ -452,20 +608,70 @@
452
608
  ]
453
609
  }
454
610
  ]
455
- }
611
+ },
612
+ "scope": "collection"
456
613
  },
457
614
  {
458
615
  "name": "CourseEdit",
459
- "linkedEntity": "Course",
460
616
  "category": "interaction",
617
+ "linkedEntity": "Course",
461
618
  "emits": [
462
619
  {
463
- "event": "SAVE",
464
- "scope": "internal"
620
+ "event": "COURSE_UPDATED",
621
+ "scope": "external",
622
+ "payload": [
623
+ {
624
+ "name": "id",
625
+ "type": "string"
626
+ }
627
+ ]
465
628
  },
466
629
  {
467
- "event": "COURSE_UPDATED",
468
- "scope": "external"
630
+ "event": "CourseLoaded",
631
+ "description": "Fired when Course finishes loading",
632
+ "scope": "internal",
633
+ "payload": [
634
+ {
635
+ "name": "id",
636
+ "type": "string",
637
+ "required": true
638
+ },
639
+ {
640
+ "name": "title",
641
+ "type": "string"
642
+ },
643
+ {
644
+ "name": "description",
645
+ "type": "string"
646
+ },
647
+ {
648
+ "name": "instructor",
649
+ "type": "string"
650
+ },
651
+ {
652
+ "name": "duration",
653
+ "type": "string"
654
+ },
655
+ {
656
+ "name": "level",
657
+ "type": "string"
658
+ },
659
+ {
660
+ "name": "pendingId",
661
+ "type": "string"
662
+ }
663
+ ]
664
+ },
665
+ {
666
+ "event": "CourseLoadFailed",
667
+ "description": "Fired when Course fails to load",
668
+ "scope": "internal",
669
+ "payload": [
670
+ {
671
+ "name": "message",
672
+ "type": "string"
673
+ }
674
+ ]
469
675
  }
470
676
  ],
471
677
  "stateMachine": {
@@ -485,7 +691,7 @@
485
691
  },
486
692
  {
487
693
  "key": "EDIT",
488
- "name": "Open",
694
+ "name": "Edit",
489
695
  "payload": [
490
696
  {
491
697
  "name": "id",
@@ -508,6 +714,24 @@
508
714
  "required": true
509
715
  }
510
716
  ]
717
+ },
718
+ {
719
+ "key": "COURSE_UPDATED",
720
+ "name": "Course Updated"
721
+ },
722
+ {
723
+ "key": "CourseLoaded",
724
+ "name": "Course loaded"
725
+ },
726
+ {
727
+ "key": "CourseLoadFailed",
728
+ "name": "Course load failed",
729
+ "payload": [
730
+ {
731
+ "name": "message",
732
+ "type": "string"
733
+ }
734
+ ]
511
735
  }
512
736
  ],
513
737
  "transitions": [
@@ -531,7 +755,11 @@
531
755
  "fetch",
532
756
  "Course",
533
757
  {
534
- "id": "@payload.id"
758
+ "id": "@payload.id",
759
+ "emit": {
760
+ "success": "CourseLoaded",
761
+ "failure": "CourseLoadFailed"
762
+ }
535
763
  }
536
764
  ],
537
765
  [
@@ -539,35 +767,32 @@
539
767
  "modal",
540
768
  {
541
769
  "type": "stack",
542
- "direction": "vertical",
543
770
  "gap": "md",
771
+ "direction": "vertical",
544
772
  "children": [
545
773
  {
546
- "type": "stack",
547
- "direction": "horizontal",
548
- "gap": "sm",
549
774
  "children": [
550
775
  {
551
- "type": "icon",
552
776
  "name": "edit",
553
- "size": "md"
777
+ "size": "md",
778
+ "type": "icon"
554
779
  },
555
780
  {
556
781
  "type": "typography",
557
782
  "content": "Edit Course",
558
783
  "variant": "h3"
559
784
  }
560
- ]
561
- },
785
+ ],
786
+ "type": "stack",
787
+ "direction": "horizontal",
788
+ "gap": "sm"
789
+ },
562
790
  {
563
791
  "type": "divider"
564
792
  },
565
793
  {
566
- "type": "form-section",
567
- "entity": "Course",
568
- "mode": "edit",
569
- "submitEvent": "SAVE",
570
794
  "cancelEvent": "CLOSE",
795
+ "type": "form-section",
571
796
  "fields": [
572
797
  "title",
573
798
  "description",
@@ -575,7 +800,10 @@
575
800
  "duration",
576
801
  "level"
577
802
  ],
578
- "entityId": "@entity.id"
803
+ "entityId": "@entity.id",
804
+ "submitEvent": "SAVE",
805
+ "entity": "Course",
806
+ "mode": "edit"
579
807
  }
580
808
  ]
581
809
  }
@@ -592,6 +820,13 @@
592
820
  "modal",
593
821
  null
594
822
  ],
823
+ [
824
+ "render-ui",
825
+ "main",
826
+ {
827
+ "type": "box"
828
+ }
829
+ ],
595
830
  [
596
831
  "notify",
597
832
  "Cancelled",
@@ -615,6 +850,13 @@
615
850
  "modal",
616
851
  null
617
852
  ],
853
+ [
854
+ "render-ui",
855
+ "main",
856
+ {
857
+ "type": "box"
858
+ }
859
+ ],
618
860
  [
619
861
  "emit",
620
862
  "COURSE_UPDATED"
@@ -622,16 +864,60 @@
622
864
  ]
623
865
  }
624
866
  ]
625
- }
867
+ },
868
+ "scope": "collection"
626
869
  },
627
870
  {
628
871
  "name": "CourseView",
629
- "linkedEntity": "Course",
630
872
  "category": "interaction",
873
+ "linkedEntity": "Course",
631
874
  "emits": [
632
875
  {
633
- "event": "SAVE",
634
- "scope": "internal"
876
+ "event": "CourseLoaded",
877
+ "description": "Fired when Course finishes loading",
878
+ "scope": "internal",
879
+ "payload": [
880
+ {
881
+ "name": "id",
882
+ "type": "string",
883
+ "required": true
884
+ },
885
+ {
886
+ "name": "title",
887
+ "type": "string"
888
+ },
889
+ {
890
+ "name": "description",
891
+ "type": "string"
892
+ },
893
+ {
894
+ "name": "instructor",
895
+ "type": "string"
896
+ },
897
+ {
898
+ "name": "duration",
899
+ "type": "string"
900
+ },
901
+ {
902
+ "name": "level",
903
+ "type": "string"
904
+ },
905
+ {
906
+ "name": "pendingId",
907
+ "type": "string"
908
+ }
909
+ ]
910
+ },
911
+ {
912
+ "event": "CourseLoadFailed",
913
+ "description": "Fired when Course fails to load",
914
+ "scope": "internal",
915
+ "payload": [
916
+ {
917
+ "name": "message",
918
+ "type": "string"
919
+ }
920
+ ]
635
921
  }
636
922
  ],
637
923
  "stateMachine": {
@@ -651,7 +937,7 @@
651
937
  },
652
938
  {
653
939
  "key": "VIEW",
654
- "name": "Open",
940
+ "name": "View",
655
941
  "payload": [
656
942
  {
657
943
  "name": "id",
@@ -674,6 +960,20 @@
674
960
  "required": true
675
961
  }
676
962
  ]
963
+ },
964
+ {
965
+ "key": "CourseLoaded",
966
+ "name": "Course loaded"
967
+ },
968
+ {
969
+ "key": "CourseLoadFailed",
970
+ "name": "Course load failed",
971
+ "payload": [
972
+ {
973
+ "name": "message",
974
+ "type": "string"
975
+ }
976
+ ]
677
977
  }
678
978
  ],
679
979
  "transitions": [
@@ -697,22 +997,26 @@
697
997
  "fetch",
698
998
  "Course",
699
999
  {
700
- "id": "@payload.id"
1000
+ "id": "@payload.id",
1001
+ "emit": {
1002
+ "success": "CourseLoaded",
1003
+ "failure": "CourseLoadFailed"
1004
+ }
701
1005
  }
702
1006
  ],
703
1007
  [
704
1008
  "render-ui",
705
1009
  "modal",
706
1010
  {
707
- "type": "stack",
708
- "direction": "vertical",
709
1011
  "gap": "md",
1012
+ "direction": "vertical",
1013
+ "type": "stack",
710
1014
  "children": [
711
1015
  {
712
- "type": "stack",
713
- "direction": "horizontal",
714
1016
  "gap": "sm",
715
1017
  "align": "center",
1018
+ "direction": "horizontal",
1019
+ "type": "stack",
716
1020
  "children": [
717
1021
  {
718
1022
  "type": "icon",
@@ -720,8 +1024,8 @@
720
1024
  "size": "md"
721
1025
  },
722
1026
  {
723
- "type": "typography",
724
1027
  "variant": "h3",
1028
+ "type": "typography",
725
1029
  "content": "@entity.title"
726
1030
  }
727
1031
  ]
@@ -731,8 +1035,6 @@
731
1035
  },
732
1036
  {
733
1037
  "type": "stack",
734
- "direction": "horizontal",
735
- "gap": "md",
736
1038
  "children": [
737
1039
  {
738
1040
  "type": "typography",
@@ -740,103 +1042,105 @@
740
1042
  "content": "Title"
741
1043
  },
742
1044
  {
743
- "type": "typography",
744
1045
  "variant": "body",
745
- "content": "@entity.title"
1046
+ "content": "@entity.title",
1047
+ "type": "typography"
746
1048
  }
747
- ]
1049
+ ],
1050
+ "direction": "horizontal",
1051
+ "gap": "md"
748
1052
  },
749
1053
  {
750
- "type": "stack",
751
1054
  "direction": "horizontal",
752
- "gap": "md",
753
1055
  "children": [
754
1056
  {
1057
+ "content": "Description",
755
1058
  "type": "typography",
756
- "variant": "caption",
757
- "content": "Description"
1059
+ "variant": "caption"
758
1060
  },
759
1061
  {
760
- "type": "typography",
1062
+ "content": "@entity.description",
761
1063
  "variant": "body",
762
- "content": "@entity.description"
1064
+ "type": "typography"
763
1065
  }
764
- ]
1066
+ ],
1067
+ "type": "stack",
1068
+ "gap": "md"
765
1069
  },
766
1070
  {
767
1071
  "type": "stack",
768
- "direction": "horizontal",
769
1072
  "gap": "md",
1073
+ "direction": "horizontal",
770
1074
  "children": [
771
1075
  {
772
- "type": "typography",
773
1076
  "variant": "caption",
774
- "content": "Instructor"
1077
+ "content": "Instructor",
1078
+ "type": "typography"
775
1079
  },
776
1080
  {
1081
+ "content": "@entity.instructor",
777
1082
  "type": "typography",
778
- "variant": "body",
779
- "content": "@entity.instructor"
1083
+ "variant": "body"
780
1084
  }
781
1085
  ]
782
1086
  },
783
1087
  {
784
- "type": "stack",
785
- "direction": "horizontal",
786
1088
  "gap": "md",
1089
+ "type": "stack",
787
1090
  "children": [
788
1091
  {
789
- "type": "typography",
790
1092
  "variant": "caption",
791
- "content": "Duration"
1093
+ "content": "Duration",
1094
+ "type": "typography"
792
1095
  },
793
1096
  {
794
1097
  "type": "typography",
795
- "variant": "body",
796
- "content": "@entity.duration"
1098
+ "content": "@entity.duration",
1099
+ "variant": "body"
797
1100
  }
798
- ]
1101
+ ],
1102
+ "direction": "horizontal"
799
1103
  },
800
1104
  {
801
1105
  "type": "stack",
802
1106
  "direction": "horizontal",
803
- "gap": "md",
804
1107
  "children": [
805
1108
  {
806
- "type": "typography",
807
1109
  "variant": "caption",
808
- "content": "Level"
1110
+ "content": "Level",
1111
+ "type": "typography"
809
1112
  },
810
1113
  {
811
- "type": "typography",
812
1114
  "variant": "body",
1115
+ "type": "typography",
813
1116
  "content": "@entity.level"
814
1117
  }
815
- ]
1118
+ ],
1119
+ "gap": "md"
816
1120
  },
817
1121
  {
818
1122
  "type": "divider"
819
1123
  },
820
1124
  {
821
1125
  "type": "stack",
822
- "direction": "horizontal",
823
1126
  "gap": "sm",
824
- "justify": "end",
825
1127
  "children": [
826
1128
  {
827
1129
  "type": "button",
1130
+ "icon": "edit",
828
1131
  "label": "Edit",
829
- "event": "EDIT",
830
1132
  "variant": "primary",
831
- "icon": "edit"
1133
+ "event": "EDIT"
832
1134
  },
833
1135
  {
834
- "type": "button",
1136
+ "variant": "ghost",
835
1137
  "label": "Close",
836
1138
  "event": "CLOSE",
837
- "variant": "ghost"
1139
+ "type": "button"
838
1140
  }
839
- ]
1141
+ ],
1142
+ "direction": "horizontal",
1143
+ "justify": "end"
840
1144
  }
841
1145
  ]
842
1146
  }
@@ -853,6 +1157,13 @@
853
1157
  "modal",
854
1158
  null
855
1159
  ],
1160
+ [
1161
+ "render-ui",
1162
+ "main",
1163
+ {
1164
+ "type": "box"
1165
+ }
1166
+ ],
856
1167
  [
857
1168
  "notify",
858
1169
  "Cancelled",
@@ -869,24 +1180,81 @@
869
1180
  "render-ui",
870
1181
  "modal",
871
1182
  null
1183
+ ],
1184
+ [
1185
+ "render-ui",
1186
+ "main",
1187
+ {
1188
+ "type": "box"
1189
+ }
872
1190
  ]
873
1191
  ]
874
1192
  }
875
1193
  ]
876
- }
1194
+ },
1195
+ "scope": "collection"
877
1196
  },
878
1197
  {
879
1198
  "name": "CourseDelete",
880
- "linkedEntity": "Course",
881
1199
  "category": "interaction",
1200
+ "linkedEntity": "Course",
882
1201
  "emits": [
883
1202
  {
884
- "event": "CONFIRM_DELETE",
885
- "scope": "internal"
1203
+ "event": "COURSE_DELETED",
1204
+ "scope": "external",
1205
+ "payload": [
1206
+ {
1207
+ "name": "id",
1208
+ "type": "string"
1209
+ }
1210
+ ]
886
1211
  },
887
1212
  {
888
- "event": "COURSE_DELETED",
889
- "scope": "external"
1213
+ "event": "CourseLoaded",
1214
+ "description": "Fired when Course finishes loading",
1215
+ "scope": "internal",
1216
+ "payload": [
1217
+ {
1218
+ "name": "id",
1219
+ "type": "string",
1220
+ "required": true
1221
+ },
1222
+ {
1223
+ "name": "title",
1224
+ "type": "string"
1225
+ },
1226
+ {
1227
+ "name": "description",
1228
+ "type": "string"
1229
+ },
1230
+ {
1231
+ "name": "instructor",
1232
+ "type": "string"
1233
+ },
1234
+ {
1235
+ "name": "duration",
1236
+ "type": "string"
1237
+ },
1238
+ {
1239
+ "name": "level",
1240
+ "type": "string"
1241
+ },
1242
+ {
1243
+ "name": "pendingId",
1244
+ "type": "string"
1245
+ }
1246
+ ]
1247
+ },
1248
+ {
1249
+ "event": "CourseLoadFailed",
1250
+ "description": "Fired when Course fails to load",
1251
+ "scope": "internal",
1252
+ "payload": [
1253
+ {
1254
+ "name": "message",
1255
+ "type": "string"
1256
+ }
1257
+ ]
890
1258
  }
891
1259
  ],
892
1260
  "stateMachine": {
@@ -906,7 +1274,7 @@
906
1274
  },
907
1275
  {
908
1276
  "key": "DELETE",
909
- "name": "Request Confirmation",
1277
+ "name": "Delete",
910
1278
  "payload": [
911
1279
  {
912
1280
  "name": "id",
@@ -917,7 +1285,7 @@
917
1285
  },
918
1286
  {
919
1287
  "key": "CONFIRM_DELETE",
920
- "name": "Confirm"
1288
+ "name": "Confirm Delete"
921
1289
  },
922
1290
  {
923
1291
  "key": "CANCEL",
@@ -926,6 +1294,24 @@
926
1294
  {
927
1295
  "key": "CLOSE",
928
1296
  "name": "Close"
1297
+ },
1298
+ {
1299
+ "key": "COURSE_DELETED",
1300
+ "name": "Course Deleted"
1301
+ },
1302
+ {
1303
+ "key": "CourseLoaded",
1304
+ "name": "Course loaded"
1305
+ },
1306
+ {
1307
+ "key": "CourseLoadFailed",
1308
+ "name": "Course load failed",
1309
+ "payload": [
1310
+ {
1311
+ "name": "message",
1312
+ "type": "string"
1313
+ }
1314
+ ]
929
1315
  }
930
1316
  ],
931
1317
  "transitions": [
@@ -954,21 +1340,19 @@
954
1340
  "fetch",
955
1341
  "Course",
956
1342
  {
957
- "id": "@payload.id"
1343
+ "id": "@payload.id",
1344
+ "emit": {
1345
+ "failure": "CourseLoadFailed",
1346
+ "success": "CourseLoaded"
1347
+ }
958
1348
  }
959
1349
  ],
960
1350
  [
961
1351
  "render-ui",
962
1352
  "modal",
963
1353
  {
964
- "type": "stack",
965
- "direction": "vertical",
966
- "gap": "md",
967
1354
  "children": [
968
1355
  {
969
- "type": "stack",
970
- "direction": "horizontal",
971
- "gap": "sm",
972
1356
  "align": "center",
973
1357
  "children": [
974
1358
  {
@@ -981,38 +1365,44 @@
981
1365
  "content": "Delete Course",
982
1366
  "variant": "h3"
983
1367
  }
984
- ]
1368
+ ],
1369
+ "type": "stack",
1370
+ "direction": "horizontal",
1371
+ "gap": "sm"
985
1372
  },
986
1373
  {
987
1374
  "type": "divider"
988
1375
  },
989
1376
  {
1377
+ "message": "This action cannot be undone.",
990
1378
  "type": "alert",
991
- "variant": "danger",
992
- "message": "This action cannot be undone."
1379
+ "variant": "danger"
993
1380
  },
994
1381
  {
995
- "type": "stack",
996
1382
  "direction": "horizontal",
997
- "gap": "sm",
998
- "justify": "end",
999
1383
  "children": [
1000
1384
  {
1385
+ "variant": "ghost",
1001
1386
  "type": "button",
1002
- "label": "Cancel",
1003
1387
  "event": "CANCEL",
1004
- "variant": "ghost"
1388
+ "label": "Cancel"
1005
1389
  },
1006
1390
  {
1007
- "type": "button",
1008
- "label": "Delete",
1009
- "event": "CONFIRM_DELETE",
1010
1391
  "variant": "danger",
1011
- "icon": "check"
1392
+ "label": "Delete",
1393
+ "icon": "check",
1394
+ "type": "button",
1395
+ "event": "CONFIRM_DELETE"
1012
1396
  }
1013
- ]
1397
+ ],
1398
+ "gap": "sm",
1399
+ "justify": "end",
1400
+ "type": "stack"
1014
1401
  }
1015
- ]
1402
+ ],
1403
+ "gap": "md",
1404
+ "type": "stack",
1405
+ "direction": "vertical"
1016
1406
  }
1017
1407
  ]
1018
1408
  ]
@@ -1033,6 +1423,13 @@
1033
1423
  "modal",
1034
1424
  null
1035
1425
  ],
1426
+ [
1427
+ "render-ui",
1428
+ "main",
1429
+ {
1430
+ "type": "box"
1431
+ }
1432
+ ],
1036
1433
  [
1037
1434
  "ref",
1038
1435
  "Course"
@@ -1053,6 +1450,13 @@
1053
1450
  "modal",
1054
1451
  null
1055
1452
  ],
1453
+ [
1454
+ "render-ui",
1455
+ "main",
1456
+ {
1457
+ "type": "box"
1458
+ }
1459
+ ],
1056
1460
  [
1057
1461
  "ref",
1058
1462
  "Course"
@@ -1069,6 +1473,13 @@
1069
1473
  "modal",
1070
1474
  null
1071
1475
  ],
1476
+ [
1477
+ "render-ui",
1478
+ "main",
1479
+ {
1480
+ "type": "box"
1481
+ }
1482
+ ],
1072
1483
  [
1073
1484
  "ref",
1074
1485
  "Course"
@@ -1076,14 +1487,14 @@
1076
1487
  ]
1077
1488
  }
1078
1489
  ]
1079
- }
1490
+ },
1491
+ "scope": "collection"
1080
1492
  }
1081
1493
  ],
1082
1494
  "pages": [
1083
1495
  {
1084
1496
  "name": "CoursesPage",
1085
1497
  "path": "/courses",
1086
- "isInitial": true,
1087
1498
  "traits": [
1088
1499
  {
1089
1500
  "ref": "CourseBrowse"
@@ -1117,42 +1528,95 @@
1117
1528
  },
1118
1529
  {
1119
1530
  "name": "studentName",
1120
- "type": "string",
1121
- "default": ""
1531
+ "type": "string"
1122
1532
  },
1123
1533
  {
1124
1534
  "name": "email",
1125
- "type": "string",
1126
- "default": ""
1535
+ "type": "string"
1127
1536
  },
1128
1537
  {
1129
1538
  "name": "courseId",
1130
- "type": "string",
1131
- "default": ""
1539
+ "type": "string"
1132
1540
  },
1133
1541
  {
1134
1542
  "name": "enrolledAt",
1135
- "type": "date",
1136
- "default": ""
1543
+ "type": "datetime"
1137
1544
  },
1138
1545
  {
1139
1546
  "name": "status",
1140
- "type": "string",
1141
- "default": "pending",
1142
- "values": [
1143
- "pending",
1144
- "active",
1145
- "completed",
1146
- "dropped"
1147
- ]
1547
+ "type": "string"
1148
1548
  }
1149
1549
  ]
1150
1550
  },
1151
1551
  "traits": [
1152
1552
  {
1153
1553
  "name": "EnrollmentWizard",
1154
- "linkedEntity": "Enrollment",
1155
1554
  "category": "interaction",
1555
+ "linkedEntity": "Enrollment",
1556
+ "emits": [
1557
+ {
1558
+ "event": "COMPLETE_LESSON",
1559
+ "scope": "external",
1560
+ "payload": [
1561
+ {
1562
+ "name": "id",
1563
+ "type": "string"
1564
+ }
1565
+ ]
1566
+ },
1567
+ {
1568
+ "event": "EnrollmentLoaded",
1569
+ "description": "Fired when Enrollment finishes loading",
1570
+ "scope": "internal",
1571
+ "payload": [
1572
+ {
1573
+ "name": "id",
1574
+ "type": "string",
1575
+ "required": true
1576
+ },
1577
+ {
1578
+ "name": "studentName",
1579
+ "type": "string"
1580
+ },
1581
+ {
1582
+ "name": "email",
1583
+ "type": "string"
1584
+ },
1585
+ {
1586
+ "name": "courseId",
1587
+ "type": "string"
1588
+ },
1589
+ {
1590
+ "name": "enrolledAt",
1591
+ "type": "datetime"
1592
+ },
1593
+ {
1594
+ "name": "status",
1595
+ "type": "string"
1596
+ }
1597
+ ]
1598
+ },
1599
+ {
1600
+ "event": "EnrollmentLoadFailed",
1601
+ "description": "Fired when Enrollment fails to load",
1602
+ "scope": "internal",
1603
+ "payload": [
1604
+ {
1605
+ "name": "message",
1606
+ "type": "string"
1607
+ }
1608
+ ]
1609
+ }
1610
+ ],
1611
+ "listens": [
1612
+ {
1613
+ "event": "ENROLL",
1614
+ "triggers": "INIT",
1615
+ "source": {
1616
+ "kind": "any"
1617
+ }
1618
+ }
1619
+ ],
1156
1620
  "stateMachine": {
1157
1621
  "states": [
1158
1622
  {
@@ -1176,73 +1640,70 @@
1176
1640
  },
1177
1641
  {
1178
1642
  "key": "NEXT",
1179
- "name": "Next Step",
1180
- "payload": [
1181
- {
1182
- "name": "data",
1183
- "type": "object",
1184
- "required": true
1185
- }
1186
- ]
1643
+ "name": "Next"
1187
1644
  },
1188
1645
  {
1189
1646
  "key": "PREV",
1190
- "name": "Previous Step"
1647
+ "name": "Prev"
1191
1648
  },
1192
1649
  {
1193
1650
  "key": "COMPLETE",
1194
- "name": "Complete Wizard",
1651
+ "name": "Complete",
1195
1652
  "payload": [
1196
1653
  {
1197
1654
  "name": "data",
1198
- "type": "object",
1199
- "required": true
1655
+ "type": "string"
1200
1656
  }
1201
1657
  ]
1202
1658
  },
1203
1659
  {
1204
1660
  "key": "RESTART",
1205
- "name": "Restart Wizard"
1206
- }
1207
- ],
1208
- "transitions": [
1661
+ "name": "Restart"
1662
+ },
1209
1663
  {
1210
- "from": "step1",
1211
- "to": "step1",
1212
- "event": "INIT",
1664
+ "key": "COMPLETE_LESSON",
1665
+ "name": "Complete Lesson"
1666
+ },
1667
+ {
1668
+ "key": "EnrollmentLoaded",
1669
+ "name": "Enrollment loaded"
1670
+ },
1671
+ {
1672
+ "key": "EnrollmentLoadFailed",
1673
+ "name": "Enrollment load failed",
1674
+ "payload": [
1675
+ {
1676
+ "name": "message",
1677
+ "type": "string"
1678
+ }
1679
+ ]
1680
+ }
1681
+ ],
1682
+ "transitions": [
1683
+ {
1684
+ "from": "step1",
1685
+ "to": "step1",
1686
+ "event": "INIT",
1213
1687
  "effects": [
1214
1688
  [
1215
1689
  "fetch",
1216
- "Enrollment"
1690
+ "Enrollment",
1691
+ {
1692
+ "emit": {
1693
+ "failure": "EnrollmentLoadFailed",
1694
+ "success": "EnrollmentLoaded"
1695
+ }
1696
+ }
1217
1697
  ],
1218
1698
  [
1219
1699
  "render-ui",
1220
1700
  "main",
1221
1701
  {
1222
- "type": "dashboard-layout",
1223
- "appName": "LMS",
1224
- "navItems": [
1225
- {
1226
- "label": "Courses",
1227
- "href": "/courses",
1228
- "icon": "book-open"
1229
- },
1230
- {
1231
- "label": "Enroll",
1232
- "href": "/enroll",
1233
- "icon": "layout-list"
1234
- },
1235
- {
1236
- "label": "Progress",
1237
- "href": "/progress",
1238
- "icon": "layout-list"
1239
- }
1240
- ],
1241
1702
  "children": [
1242
1703
  {
1243
- "type": "container",
1244
- "maxWidth": "lg",
1245
1704
  "padding": "lg",
1705
+ "maxWidth": "lg",
1706
+ "type": "container",
1246
1707
  "children": [
1247
1708
  {
1248
1709
  "type": "stack",
@@ -1250,67 +1711,67 @@
1250
1711
  "gap": "lg",
1251
1712
  "children": [
1252
1713
  {
1253
- "type": "stack",
1254
- "direction": "horizontal",
1255
1714
  "gap": "sm",
1715
+ "type": "stack",
1256
1716
  "align": "center",
1257
1717
  "children": [
1258
1718
  {
1259
1719
  "type": "icon",
1260
- "name": "user-plus",
1261
- "size": "lg"
1720
+ "size": "lg",
1721
+ "name": "user-plus"
1262
1722
  },
1263
1723
  {
1264
1724
  "type": "typography",
1265
- "content": "Course Enrollment",
1266
- "variant": "h2"
1725
+ "variant": "h2",
1726
+ "content": "Course Enrollment"
1267
1727
  }
1268
- ]
1728
+ ],
1729
+ "direction": "horizontal"
1269
1730
  },
1270
1731
  {
1732
+ "currentIndex": 0.0,
1271
1733
  "type": "progress-dots",
1272
- "count": 2,
1273
- "currentIndex": 0
1734
+ "count": 2.0
1274
1735
  },
1275
1736
  {
1276
- "type": "wizard-progress",
1277
1737
  "steps": [
1278
1738
  "Student Info",
1279
1739
  "Course Selection"
1280
1740
  ],
1281
- "currentStep": 0
1741
+ "type": "wizard-progress",
1742
+ "currentStep": 0.0
1282
1743
  },
1283
1744
  {
1284
1745
  "type": "divider"
1285
1746
  },
1286
1747
  {
1287
- "type": "typography",
1288
1748
  "content": "Student Info",
1749
+ "type": "typography",
1289
1750
  "variant": "h3"
1290
1751
  },
1291
1752
  {
1292
- "type": "form-section",
1293
- "entity": "Enrollment",
1294
- "mode": "create",
1295
1753
  "submitEvent": "NEXT",
1296
1754
  "cancelEvent": "INIT",
1297
1755
  "fields": [
1298
1756
  "studentName",
1299
1757
  "email"
1300
- ]
1758
+ ],
1759
+ "entity": "Enrollment",
1760
+ "type": "form-section",
1761
+ "mode": "create"
1301
1762
  },
1302
1763
  {
1303
- "type": "stack",
1304
1764
  "direction": "horizontal",
1765
+ "type": "stack",
1305
1766
  "gap": "sm",
1306
1767
  "justify": "end",
1307
1768
  "children": [
1308
1769
  {
1309
- "type": "button",
1310
- "label": "Next",
1311
1770
  "event": "NEXT",
1771
+ "type": "button",
1312
1772
  "variant": "primary",
1313
- "icon": "arrow-right"
1773
+ "icon": "arrow-right",
1774
+ "label": "Next"
1314
1775
  }
1315
1776
  ]
1316
1777
  }
@@ -1318,7 +1779,26 @@
1318
1779
  }
1319
1780
  ]
1320
1781
  }
1321
- ]
1782
+ ],
1783
+ "appName": "LMS",
1784
+ "navItems": [
1785
+ {
1786
+ "icon": "book-open",
1787
+ "href": "/courses",
1788
+ "label": "Courses"
1789
+ },
1790
+ {
1791
+ "label": "Enroll",
1792
+ "href": "/enroll",
1793
+ "icon": "layout-list"
1794
+ },
1795
+ {
1796
+ "href": "/progress",
1797
+ "label": "Progress",
1798
+ "icon": "layout-list"
1799
+ }
1800
+ ],
1801
+ "type": "dashboard-layout"
1322
1802
  }
1323
1803
  ]
1324
1804
  ]
@@ -1330,72 +1810,55 @@
1330
1810
  "effects": [
1331
1811
  [
1332
1812
  "fetch",
1333
- "Enrollment"
1813
+ "Enrollment",
1814
+ {
1815
+ "emit": {
1816
+ "success": "EnrollmentLoaded",
1817
+ "failure": "EnrollmentLoadFailed"
1818
+ }
1819
+ }
1334
1820
  ],
1335
1821
  [
1336
1822
  "render-ui",
1337
1823
  "main",
1338
1824
  {
1339
- "type": "dashboard-layout",
1340
1825
  "appName": "LMS",
1341
- "navItems": [
1342
- {
1343
- "label": "Courses",
1344
- "href": "/courses",
1345
- "icon": "book-open"
1346
- },
1347
- {
1348
- "label": "Enroll",
1349
- "href": "/enroll",
1350
- "icon": "layout-list"
1351
- },
1352
- {
1353
- "label": "Progress",
1354
- "href": "/progress",
1355
- "icon": "layout-list"
1356
- }
1357
- ],
1358
1826
  "children": [
1359
1827
  {
1360
- "type": "container",
1361
1828
  "maxWidth": "lg",
1362
- "padding": "lg",
1363
1829
  "children": [
1364
1830
  {
1365
- "type": "stack",
1366
- "direction": "vertical",
1367
- "gap": "lg",
1368
1831
  "children": [
1369
1832
  {
1370
1833
  "type": "stack",
1371
- "direction": "horizontal",
1372
- "gap": "sm",
1373
- "align": "center",
1374
1834
  "children": [
1375
1835
  {
1836
+ "size": "lg",
1376
1837
  "type": "icon",
1377
- "name": "user-plus",
1378
- "size": "lg"
1838
+ "name": "user-plus"
1379
1839
  },
1380
1840
  {
1381
1841
  "type": "typography",
1382
1842
  "content": "Course Enrollment",
1383
1843
  "variant": "h2"
1384
1844
  }
1385
- ]
1845
+ ],
1846
+ "direction": "horizontal",
1847
+ "gap": "sm",
1848
+ "align": "center"
1386
1849
  },
1387
1850
  {
1851
+ "currentIndex": 1.0,
1388
1852
  "type": "progress-dots",
1389
- "count": 2,
1390
- "currentIndex": 1
1853
+ "count": 2.0
1391
1854
  },
1392
1855
  {
1393
- "type": "wizard-progress",
1394
1856
  "steps": [
1395
1857
  "Student Info",
1396
1858
  "Course Selection"
1397
1859
  ],
1398
- "currentStep": 1
1860
+ "type": "wizard-progress",
1861
+ "currentStep": 1.0
1399
1862
  },
1400
1863
  {
1401
1864
  "type": "divider"
@@ -1407,39 +1870,62 @@
1407
1870
  },
1408
1871
  {
1409
1872
  "type": "form-section",
1410
- "entity": "Enrollment",
1411
1873
  "mode": "create",
1412
- "submitEvent": "NEXT",
1413
- "cancelEvent": "PREV",
1874
+ "entity": "Enrollment",
1414
1875
  "fields": [
1415
1876
  "courseId"
1416
- ]
1877
+ ],
1878
+ "submitEvent": "NEXT",
1879
+ "cancelEvent": "PREV"
1417
1880
  },
1418
1881
  {
1419
- "type": "stack",
1420
- "direction": "horizontal",
1421
- "gap": "sm",
1422
- "justify": "end",
1423
1882
  "children": [
1424
1883
  {
1425
- "type": "button",
1426
1884
  "label": "Back",
1427
- "event": "PREV",
1428
1885
  "variant": "ghost",
1429
- "icon": "arrow-left"
1886
+ "icon": "arrow-left",
1887
+ "type": "button",
1888
+ "event": "PREV"
1430
1889
  },
1431
1890
  {
1432
1891
  "type": "button",
1433
- "label": "Next",
1434
- "event": "NEXT",
1892
+ "icon": "arrow-right",
1435
1893
  "variant": "primary",
1436
- "icon": "arrow-right"
1894
+ "event": "NEXT",
1895
+ "label": "Next"
1437
1896
  }
1438
- ]
1897
+ ],
1898
+ "type": "stack",
1899
+ "direction": "horizontal",
1900
+ "gap": "sm",
1901
+ "justify": "end"
1439
1902
  }
1440
- ]
1903
+ ],
1904
+ "direction": "vertical",
1905
+ "gap": "lg",
1906
+ "type": "stack"
1441
1907
  }
1442
- ]
1908
+ ],
1909
+ "type": "container",
1910
+ "padding": "lg"
1911
+ }
1912
+ ],
1913
+ "type": "dashboard-layout",
1914
+ "navItems": [
1915
+ {
1916
+ "href": "/courses",
1917
+ "label": "Courses",
1918
+ "icon": "book-open"
1919
+ },
1920
+ {
1921
+ "icon": "layout-list",
1922
+ "label": "Enroll",
1923
+ "href": "/enroll"
1924
+ },
1925
+ {
1926
+ "icon": "layout-list",
1927
+ "label": "Progress",
1928
+ "href": "/progress"
1443
1929
  }
1444
1930
  ]
1445
1931
  }
@@ -1453,104 +1939,89 @@
1453
1939
  "effects": [
1454
1940
  [
1455
1941
  "fetch",
1456
- "Enrollment"
1942
+ "Enrollment",
1943
+ {
1944
+ "emit": {
1945
+ "success": "EnrollmentLoaded",
1946
+ "failure": "EnrollmentLoadFailed"
1947
+ }
1948
+ }
1457
1949
  ],
1458
1950
  [
1459
1951
  "render-ui",
1460
1952
  "main",
1461
1953
  {
1462
- "type": "dashboard-layout",
1463
- "appName": "LMS",
1464
- "navItems": [
1465
- {
1466
- "label": "Courses",
1467
- "href": "/courses",
1468
- "icon": "book-open"
1469
- },
1470
- {
1471
- "label": "Enroll",
1472
- "href": "/enroll",
1473
- "icon": "layout-list"
1474
- },
1475
- {
1476
- "label": "Progress",
1477
- "href": "/progress",
1478
- "icon": "layout-list"
1479
- }
1480
- ],
1481
1954
  "children": [
1482
1955
  {
1483
- "type": "stack",
1484
- "direction": "vertical",
1485
1956
  "gap": "lg",
1486
1957
  "children": [
1487
1958
  {
1488
1959
  "type": "stack",
1489
- "direction": "horizontal",
1490
- "gap": "sm",
1491
1960
  "align": "center",
1492
1961
  "children": [
1493
1962
  {
1494
- "type": "icon",
1495
1963
  "name": "user-plus",
1964
+ "type": "icon",
1496
1965
  "size": "lg"
1497
1966
  },
1498
1967
  {
1968
+ "variant": "h2",
1499
1969
  "type": "typography",
1500
- "content": "Course Enrollment",
1501
- "variant": "h2"
1970
+ "content": "Course Enrollment"
1502
1971
  }
1503
- ]
1972
+ ],
1973
+ "gap": "sm",
1974
+ "direction": "horizontal"
1504
1975
  },
1505
1976
  {
1506
- "type": "badge",
1507
- "label": "Review"
1977
+ "label": "Review",
1978
+ "type": "badge"
1508
1979
  },
1509
1980
  {
1981
+ "currentStep": 2.0,
1510
1982
  "type": "wizard-progress",
1511
1983
  "steps": [
1512
1984
  "Student Info",
1513
1985
  "Course Selection"
1514
- ],
1515
- "currentStep": 2
1986
+ ]
1516
1987
  },
1517
1988
  {
1518
1989
  "type": "divider"
1519
1990
  },
1520
1991
  {
1521
- "type": "stack",
1522
1992
  "direction": "vertical",
1993
+ "type": "stack",
1523
1994
  "gap": "sm",
1524
1995
  "entity": "Enrollment",
1525
1996
  "children": [
1526
1997
  {
1527
- "type": "stack",
1528
- "direction": "horizontal",
1529
1998
  "gap": "md",
1530
1999
  "justify": "space-between",
1531
2000
  "children": [
1532
2001
  {
1533
- "type": "typography",
2002
+ "content": "Student Name",
1534
2003
  "variant": "caption",
1535
- "content": "Student Name"
2004
+ "type": "typography"
1536
2005
  },
1537
2006
  {
1538
- "type": "typography",
1539
2007
  "variant": "body",
1540
- "content": "@entity.studentName"
2008
+ "content": "@entity.studentName",
2009
+ "type": "typography"
1541
2010
  }
1542
- ]
2011
+ ],
2012
+ "type": "stack",
2013
+ "direction": "horizontal"
1543
2014
  },
1544
2015
  {
1545
2016
  "type": "stack",
1546
2017
  "direction": "horizontal",
1547
- "gap": "md",
1548
2018
  "justify": "space-between",
2019
+ "gap": "md",
1549
2020
  "children": [
1550
2021
  {
1551
- "type": "typography",
1552
2022
  "variant": "caption",
1553
- "content": "Email"
2023
+ "content": "Email",
2024
+ "type": "typography"
1554
2025
  },
1555
2026
  {
1556
2027
  "type": "typography",
@@ -1560,33 +2031,33 @@
1560
2031
  ]
1561
2032
  },
1562
2033
  {
1563
- "type": "stack",
1564
- "direction": "horizontal",
1565
- "gap": "md",
1566
- "justify": "space-between",
1567
2034
  "children": [
1568
2035
  {
1569
- "type": "typography",
1570
2036
  "variant": "caption",
1571
- "content": "Course Id"
2037
+ "content": "Course Id",
2038
+ "type": "typography"
1572
2039
  },
1573
2040
  {
2041
+ "content": "@entity.courseId",
1574
2042
  "type": "typography",
1575
- "variant": "body",
1576
- "content": "@entity.courseId"
2043
+ "variant": "body"
1577
2044
  }
1578
- ]
2045
+ ],
2046
+ "direction": "horizontal",
2047
+ "type": "stack",
2048
+ "gap": "md",
2049
+ "justify": "space-between"
1579
2050
  },
1580
2051
  {
1581
2052
  "type": "stack",
1582
2053
  "direction": "horizontal",
1583
- "gap": "md",
1584
2054
  "justify": "space-between",
2055
+ "gap": "md",
1585
2056
  "children": [
1586
2057
  {
2058
+ "content": "Enrolled At",
1587
2059
  "type": "typography",
1588
- "variant": "caption",
1589
- "content": "Enrolled At"
2060
+ "variant": "caption"
1590
2061
  },
1591
2062
  {
1592
2063
  "type": "typography",
@@ -1596,34 +2067,55 @@
1596
2067
  ]
1597
2068
  },
1598
2069
  {
1599
- "type": "stack",
1600
2070
  "direction": "horizontal",
1601
- "gap": "md",
2071
+ "type": "stack",
1602
2072
  "justify": "space-between",
1603
2073
  "children": [
1604
2074
  {
1605
- "type": "typography",
2075
+ "content": "Status",
1606
2076
  "variant": "caption",
1607
- "content": "Status"
2077
+ "type": "typography"
1608
2078
  },
1609
2079
  {
1610
- "type": "typography",
1611
2080
  "variant": "body",
1612
- "content": "@entity.status"
2081
+ "content": "@entity.status",
2082
+ "type": "typography"
1613
2083
  }
1614
- ]
2084
+ ],
2085
+ "gap": "md"
1615
2086
  }
1616
2087
  ]
1617
2088
  },
1618
2089
  {
1619
- "type": "wizard-navigation",
1620
- "currentStep": 2,
1621
- "totalSteps": 3,
2090
+ "totalSteps": 3.0,
1622
2091
  "showBack": true,
2092
+ "showNext": false,
1623
2093
  "showComplete": true,
1624
- "showNext": false
2094
+ "type": "wizard-navigation",
2095
+ "currentStep": 2.0
1625
2096
  }
1626
- ]
2097
+ ],
2098
+ "type": "stack",
2099
+ "direction": "vertical"
2100
+ }
2101
+ ],
2102
+ "type": "dashboard-layout",
2103
+ "appName": "LMS",
2104
+ "navItems": [
2105
+ {
2106
+ "href": "/courses",
2107
+ "label": "Courses",
2108
+ "icon": "book-open"
2109
+ },
2110
+ {
2111
+ "href": "/enroll",
2112
+ "icon": "layout-list",
2113
+ "label": "Enroll"
2114
+ },
2115
+ {
2116
+ "icon": "layout-list",
2117
+ "label": "Progress",
2118
+ "href": "/progress"
1627
2119
  }
1628
2120
  ]
1629
2121
  }
@@ -1637,14 +2129,18 @@
1637
2129
  "effects": [
1638
2130
  [
1639
2131
  "fetch",
1640
- "Enrollment"
2132
+ "Enrollment",
2133
+ {
2134
+ "emit": {
2135
+ "failure": "EnrollmentLoadFailed",
2136
+ "success": "EnrollmentLoaded"
2137
+ }
2138
+ }
1641
2139
  ],
1642
2140
  [
1643
2141
  "render-ui",
1644
2142
  "main",
1645
2143
  {
1646
- "type": "dashboard-layout",
1647
- "appName": "LMS",
1648
2144
  "navItems": [
1649
2145
  {
1650
2146
  "label": "Courses",
@@ -1653,48 +2149,43 @@
1653
2149
  },
1654
2150
  {
1655
2151
  "label": "Enroll",
1656
- "href": "/enroll",
1657
- "icon": "layout-list"
2152
+ "icon": "layout-list",
2153
+ "href": "/enroll"
1658
2154
  },
1659
2155
  {
1660
- "label": "Progress",
1661
2156
  "href": "/progress",
1662
- "icon": "layout-list"
2157
+ "icon": "layout-list",
2158
+ "label": "Progress"
1663
2159
  }
1664
2160
  ],
2161
+ "appName": "LMS",
1665
2162
  "children": [
1666
2163
  {
1667
- "type": "container",
1668
- "maxWidth": "lg",
1669
- "padding": "lg",
1670
2164
  "children": [
1671
2165
  {
1672
- "type": "stack",
1673
- "direction": "vertical",
1674
- "gap": "lg",
1675
2166
  "children": [
1676
2167
  {
1677
- "type": "stack",
1678
- "direction": "horizontal",
1679
- "gap": "sm",
1680
- "align": "center",
1681
2168
  "children": [
1682
2169
  {
1683
- "type": "icon",
1684
2170
  "name": "user-plus",
1685
- "size": "lg"
2171
+ "size": "lg",
2172
+ "type": "icon"
1686
2173
  },
1687
2174
  {
1688
2175
  "type": "typography",
1689
2176
  "content": "Course Enrollment",
1690
2177
  "variant": "h2"
1691
2178
  }
1692
- ]
2179
+ ],
2180
+ "direction": "horizontal",
2181
+ "gap": "sm",
2182
+ "type": "stack",
2183
+ "align": "center"
1693
2184
  },
1694
2185
  {
2186
+ "count": 2.0,
1695
2187
  "type": "progress-dots",
1696
- "count": 2,
1697
- "currentIndex": 0
2188
+ "currentIndex": 0.0
1698
2189
  },
1699
2190
  {
1700
2191
  "type": "wizard-progress",
@@ -1702,47 +2193,54 @@
1702
2193
  "Student Info",
1703
2194
  "Course Selection"
1704
2195
  ],
1705
- "currentStep": 0
2196
+ "currentStep": 0.0
1706
2197
  },
1707
2198
  {
1708
2199
  "type": "divider"
1709
2200
  },
1710
2201
  {
1711
- "type": "typography",
2202
+ "variant": "h3",
1712
2203
  "content": "Student Info",
1713
- "variant": "h3"
2204
+ "type": "typography"
1714
2205
  },
1715
2206
  {
1716
- "type": "form-section",
1717
2207
  "entity": "Enrollment",
1718
2208
  "mode": "create",
1719
- "submitEvent": "NEXT",
1720
- "cancelEvent": "INIT",
1721
2209
  "fields": [
1722
2210
  "studentName",
1723
2211
  "email"
1724
- ]
2212
+ ],
2213
+ "submitEvent": "NEXT",
2214
+ "cancelEvent": "INIT",
2215
+ "type": "form-section"
1725
2216
  },
1726
2217
  {
1727
- "type": "stack",
1728
- "direction": "horizontal",
1729
- "gap": "sm",
1730
2218
  "justify": "end",
2219
+ "direction": "horizontal",
2220
+ "type": "stack",
1731
2221
  "children": [
1732
2222
  {
1733
- "type": "button",
1734
- "label": "Next",
1735
- "event": "NEXT",
1736
2223
  "variant": "primary",
2224
+ "event": "NEXT",
2225
+ "label": "Next",
2226
+ "type": "button",
1737
2227
  "icon": "arrow-right"
1738
2228
  }
1739
- ]
2229
+ ],
2230
+ "gap": "sm"
1740
2231
  }
1741
- ]
2232
+ ],
2233
+ "direction": "vertical",
2234
+ "gap": "lg",
2235
+ "type": "stack"
1742
2236
  }
1743
- ]
2237
+ ],
2238
+ "maxWidth": "lg",
2239
+ "type": "container",
2240
+ "padding": "lg"
1744
2241
  }
1745
- ]
2242
+ ],
2243
+ "type": "dashboard-layout"
1746
2244
  }
1747
2245
  ]
1748
2246
  ]
@@ -1754,14 +2252,19 @@
1754
2252
  "effects": [
1755
2253
  [
1756
2254
  "fetch",
1757
- "Enrollment"
2255
+ "Enrollment",
2256
+ {
2257
+ "emit": {
2258
+ "failure": "EnrollmentLoadFailed",
2259
+ "success": "EnrollmentLoaded"
2260
+ }
2261
+ }
1758
2262
  ],
1759
2263
  [
1760
2264
  "render-ui",
1761
2265
  "main",
1762
2266
  {
1763
2267
  "type": "dashboard-layout",
1764
- "appName": "LMS",
1765
2268
  "navItems": [
1766
2269
  {
1767
2270
  "label": "Courses",
@@ -1769,21 +2272,20 @@
1769
2272
  "icon": "book-open"
1770
2273
  },
1771
2274
  {
1772
- "label": "Enroll",
1773
2275
  "href": "/enroll",
2276
+ "label": "Enroll",
1774
2277
  "icon": "layout-list"
1775
2278
  },
1776
2279
  {
1777
2280
  "label": "Progress",
1778
- "href": "/progress",
1779
- "icon": "layout-list"
2281
+ "icon": "layout-list",
2282
+ "href": "/progress"
1780
2283
  }
1781
2284
  ],
1782
2285
  "children": [
1783
2286
  {
1784
- "type": "container",
1785
- "maxWidth": "lg",
1786
2287
  "padding": "lg",
2288
+ "type": "container",
1787
2289
  "children": [
1788
2290
  {
1789
2291
  "type": "stack",
@@ -1791,81 +2293,83 @@
1791
2293
  "gap": "lg",
1792
2294
  "children": [
1793
2295
  {
1794
- "type": "stack",
1795
- "direction": "horizontal",
1796
2296
  "gap": "sm",
1797
- "align": "center",
2297
+ "direction": "horizontal",
1798
2298
  "children": [
1799
2299
  {
1800
- "type": "icon",
1801
2300
  "name": "user-plus",
2301
+ "type": "icon",
1802
2302
  "size": "lg"
1803
2303
  },
1804
2304
  {
1805
2305
  "type": "typography",
1806
- "content": "Course Enrollment",
1807
- "variant": "h2"
2306
+ "variant": "h2",
2307
+ "content": "Course Enrollment"
1808
2308
  }
1809
- ]
2309
+ ],
2310
+ "align": "center",
2311
+ "type": "stack"
1810
2312
  },
1811
2313
  {
1812
- "type": "progress-dots",
1813
- "count": 2,
1814
- "currentIndex": 1
2314
+ "currentIndex": 1.0,
2315
+ "count": 2.0,
2316
+ "type": "progress-dots"
1815
2317
  },
1816
2318
  {
1817
- "type": "wizard-progress",
1818
2319
  "steps": [
1819
2320
  "Student Info",
1820
2321
  "Course Selection"
1821
2322
  ],
1822
- "currentStep": 1
2323
+ "currentStep": 1.0,
2324
+ "type": "wizard-progress"
1823
2325
  },
1824
2326
  {
1825
2327
  "type": "divider"
1826
2328
  },
1827
2329
  {
1828
- "type": "typography",
1829
2330
  "content": "Course Selection",
1830
- "variant": "h3"
2331
+ "variant": "h3",
2332
+ "type": "typography"
1831
2333
  },
1832
2334
  {
1833
2335
  "type": "form-section",
1834
- "entity": "Enrollment",
2336
+ "cancelEvent": "PREV",
1835
2337
  "mode": "create",
1836
2338
  "submitEvent": "NEXT",
1837
- "cancelEvent": "PREV",
2339
+ "entity": "Enrollment",
1838
2340
  "fields": [
1839
2341
  "courseId"
1840
2342
  ]
1841
2343
  },
1842
2344
  {
2345
+ "justify": "end",
1843
2346
  "type": "stack",
1844
2347
  "direction": "horizontal",
1845
2348
  "gap": "sm",
1846
- "justify": "end",
1847
2349
  "children": [
1848
2350
  {
1849
- "type": "button",
1850
- "label": "Back",
1851
2351
  "event": "PREV",
2352
+ "icon": "arrow-left",
1852
2353
  "variant": "ghost",
1853
- "icon": "arrow-left"
2354
+ "type": "button",
2355
+ "label": "Back"
1854
2356
  },
1855
2357
  {
1856
- "type": "button",
1857
2358
  "label": "Next",
1858
- "event": "NEXT",
1859
2359
  "variant": "primary",
1860
- "icon": "arrow-right"
2360
+ "icon": "arrow-right",
2361
+ "type": "button",
2362
+ "event": "NEXT"
1861
2363
  }
1862
2364
  ]
1863
2365
  }
1864
2366
  ]
1865
2367
  }
1866
- ]
2368
+ ],
2369
+ "maxWidth": "lg"
1867
2370
  }
1868
- ]
2371
+ ],
2372
+ "appName": "LMS"
1869
2373
  }
1870
2374
  ]
1871
2375
  ]
@@ -1890,13 +2394,13 @@
1890
2394
  "render-ui",
1891
2395
  "main",
1892
2396
  {
1893
- "type": "dashboard-layout",
1894
2397
  "appName": "LMS",
2398
+ "type": "dashboard-layout",
1895
2399
  "navItems": [
1896
2400
  {
1897
- "label": "Courses",
1898
2401
  "href": "/courses",
1899
- "icon": "book-open"
2402
+ "icon": "book-open",
2403
+ "label": "Courses"
1900
2404
  },
1901
2405
  {
1902
2406
  "label": "Enroll",
@@ -1904,41 +2408,41 @@
1904
2408
  "icon": "layout-list"
1905
2409
  },
1906
2410
  {
2411
+ "icon": "layout-list",
1907
2412
  "label": "Progress",
1908
- "href": "/progress",
1909
- "icon": "layout-list"
2413
+ "href": "/progress"
1910
2414
  }
1911
2415
  ],
1912
2416
  "children": [
1913
2417
  {
1914
2418
  "type": "stack",
1915
- "direction": "vertical",
1916
- "gap": "lg",
1917
2419
  "align": "center",
1918
2420
  "children": [
1919
2421
  {
2422
+ "size": "lg",
1920
2423
  "type": "icon",
1921
- "name": "check-circle",
1922
- "size": "lg"
2424
+ "name": "check-circle"
1923
2425
  },
1924
2426
  {
1925
- "type": "typography",
1926
2427
  "content": "Enrolled!",
1927
- "variant": "h2"
2428
+ "variant": "h2",
2429
+ "type": "typography"
1928
2430
  },
1929
2431
  {
1930
- "type": "typography",
1931
2432
  "content": "You have been successfully enrolled in the course.",
2433
+ "type": "typography",
1932
2434
  "variant": "body"
1933
2435
  },
1934
2436
  {
1935
- "type": "button",
1936
2437
  "label": "Start New",
1937
2438
  "event": "RESTART",
2439
+ "type": "button",
1938
2440
  "variant": "primary",
1939
2441
  "icon": "refresh-cw"
1940
2442
  }
1941
- ]
2443
+ ],
2444
+ "direction": "vertical",
2445
+ "gap": "lg"
1942
2446
  }
1943
2447
  ]
1944
2448
  }
@@ -1952,47 +2456,28 @@
1952
2456
  "effects": [
1953
2457
  [
1954
2458
  "fetch",
1955
- "Enrollment"
2459
+ "Enrollment",
2460
+ {
2461
+ "emit": {
2462
+ "success": "EnrollmentLoaded",
2463
+ "failure": "EnrollmentLoadFailed"
2464
+ }
2465
+ }
1956
2466
  ],
1957
2467
  [
1958
2468
  "render-ui",
1959
2469
  "main",
1960
2470
  {
1961
- "type": "dashboard-layout",
1962
- "appName": "LMS",
1963
- "navItems": [
1964
- {
1965
- "label": "Courses",
1966
- "href": "/courses",
1967
- "icon": "book-open"
1968
- },
1969
- {
1970
- "label": "Enroll",
1971
- "href": "/enroll",
1972
- "icon": "layout-list"
1973
- },
1974
- {
1975
- "label": "Progress",
1976
- "href": "/progress",
1977
- "icon": "layout-list"
1978
- }
1979
- ],
1980
2471
  "children": [
1981
2472
  {
1982
- "type": "container",
1983
- "maxWidth": "lg",
1984
- "padding": "lg",
1985
2473
  "children": [
1986
2474
  {
1987
- "type": "stack",
1988
- "direction": "vertical",
1989
- "gap": "lg",
1990
2475
  "children": [
1991
2476
  {
2477
+ "align": "center",
1992
2478
  "type": "stack",
1993
- "direction": "horizontal",
1994
2479
  "gap": "sm",
1995
- "align": "center",
2480
+ "direction": "horizontal",
1996
2481
  "children": [
1997
2482
  {
1998
2483
  "type": "icon",
@@ -2000,16 +2485,16 @@
2000
2485
  "size": "lg"
2001
2486
  },
2002
2487
  {
2488
+ "variant": "h2",
2003
2489
  "type": "typography",
2004
- "content": "Course Enrollment",
2005
- "variant": "h2"
2490
+ "content": "Course Enrollment"
2006
2491
  }
2007
2492
  ]
2008
2493
  },
2009
2494
  {
2495
+ "currentIndex": 0.0,
2010
2496
  "type": "progress-dots",
2011
- "count": 2,
2012
- "currentIndex": 0
2497
+ "count": 2.0
2013
2498
  },
2014
2499
  {
2015
2500
  "type": "wizard-progress",
@@ -2017,45 +2502,70 @@
2017
2502
  "Student Info",
2018
2503
  "Course Selection"
2019
2504
  ],
2020
- "currentStep": 0
2505
+ "currentStep": 0.0
2021
2506
  },
2022
2507
  {
2023
2508
  "type": "divider"
2024
2509
  },
2025
2510
  {
2026
- "type": "typography",
2027
2511
  "content": "Student Info",
2028
- "variant": "h3"
2512
+ "variant": "h3",
2513
+ "type": "typography"
2029
2514
  },
2030
2515
  {
2031
- "type": "form-section",
2032
- "entity": "Enrollment",
2033
- "mode": "create",
2034
- "submitEvent": "NEXT",
2035
- "cancelEvent": "INIT",
2036
2516
  "fields": [
2037
2517
  "studentName",
2038
2518
  "email"
2039
- ]
2519
+ ],
2520
+ "entity": "Enrollment",
2521
+ "type": "form-section",
2522
+ "mode": "create",
2523
+ "submitEvent": "NEXT",
2524
+ "cancelEvent": "INIT"
2040
2525
  },
2041
2526
  {
2042
- "type": "stack",
2043
- "direction": "horizontal",
2044
- "gap": "sm",
2045
- "justify": "end",
2046
2527
  "children": [
2047
2528
  {
2048
- "type": "button",
2049
- "label": "Next",
2050
- "event": "NEXT",
2051
2529
  "variant": "primary",
2052
- "icon": "arrow-right"
2530
+ "event": "NEXT",
2531
+ "type": "button",
2532
+ "icon": "arrow-right",
2533
+ "label": "Next"
2053
2534
  }
2054
- ]
2535
+ ],
2536
+ "type": "stack",
2537
+ "justify": "end",
2538
+ "gap": "sm",
2539
+ "direction": "horizontal"
2055
2540
  }
2056
- ]
2541
+ ],
2542
+ "type": "stack",
2543
+ "direction": "vertical",
2544
+ "gap": "lg"
2057
2545
  }
2058
- ]
2546
+ ],
2547
+ "type": "container",
2548
+ "padding": "lg",
2549
+ "maxWidth": "lg"
2550
+ }
2551
+ ],
2552
+ "appName": "LMS",
2553
+ "type": "dashboard-layout",
2554
+ "navItems": [
2555
+ {
2556
+ "label": "Courses",
2557
+ "icon": "book-open",
2558
+ "href": "/courses"
2559
+ },
2560
+ {
2561
+ "href": "/enroll",
2562
+ "icon": "layout-list",
2563
+ "label": "Enroll"
2564
+ },
2565
+ {
2566
+ "href": "/progress",
2567
+ "label": "Progress",
2568
+ "icon": "layout-list"
2059
2569
  }
2060
2570
  ]
2061
2571
  }
@@ -2069,72 +2579,58 @@
2069
2579
  "effects": [
2070
2580
  [
2071
2581
  "fetch",
2072
- "Enrollment"
2582
+ "Enrollment",
2583
+ {
2584
+ "emit": {
2585
+ "success": "EnrollmentLoaded",
2586
+ "failure": "EnrollmentLoadFailed"
2587
+ }
2588
+ }
2073
2589
  ],
2074
2590
  [
2075
2591
  "render-ui",
2076
2592
  "main",
2077
2593
  {
2078
- "type": "dashboard-layout",
2079
2594
  "appName": "LMS",
2080
- "navItems": [
2081
- {
2082
- "label": "Courses",
2083
- "href": "/courses",
2084
- "icon": "book-open"
2085
- },
2086
- {
2087
- "label": "Enroll",
2088
- "href": "/enroll",
2089
- "icon": "layout-list"
2090
- },
2091
- {
2092
- "label": "Progress",
2093
- "href": "/progress",
2094
- "icon": "layout-list"
2095
- }
2096
- ],
2097
2595
  "children": [
2098
2596
  {
2099
2597
  "type": "container",
2100
- "maxWidth": "lg",
2101
- "padding": "lg",
2102
2598
  "children": [
2103
2599
  {
2104
- "type": "stack",
2105
2600
  "direction": "vertical",
2601
+ "type": "stack",
2106
2602
  "gap": "lg",
2107
2603
  "children": [
2108
2604
  {
2109
2605
  "type": "stack",
2110
- "direction": "horizontal",
2111
- "gap": "sm",
2112
- "align": "center",
2113
2606
  "children": [
2114
2607
  {
2115
- "type": "icon",
2116
2608
  "name": "user-plus",
2117
- "size": "lg"
2609
+ "size": "lg",
2610
+ "type": "icon"
2118
2611
  },
2119
2612
  {
2120
- "type": "typography",
2613
+ "variant": "h2",
2121
2614
  "content": "Course Enrollment",
2122
- "variant": "h2"
2615
+ "type": "typography"
2123
2616
  }
2124
- ]
2617
+ ],
2618
+ "direction": "horizontal",
2619
+ "align": "center",
2620
+ "gap": "sm"
2125
2621
  },
2126
2622
  {
2127
2623
  "type": "progress-dots",
2128
- "count": 2,
2129
- "currentIndex": 0
2624
+ "currentIndex": 0.0,
2625
+ "count": 2.0
2130
2626
  },
2131
2627
  {
2132
- "type": "wizard-progress",
2133
2628
  "steps": [
2134
2629
  "Student Info",
2135
2630
  "Course Selection"
2136
2631
  ],
2137
- "currentStep": 0
2632
+ "currentStep": 0.0,
2633
+ "type": "wizard-progress"
2138
2634
  },
2139
2635
  {
2140
2636
  "type": "divider"
@@ -2145,68 +2641,68 @@
2145
2641
  "variant": "h3"
2146
2642
  },
2147
2643
  {
2644
+ "mode": "create",
2148
2645
  "type": "form-section",
2149
2646
  "entity": "Enrollment",
2150
- "mode": "create",
2151
- "submitEvent": "NEXT",
2152
2647
  "cancelEvent": "INIT",
2153
2648
  "fields": [
2154
2649
  "studentName",
2155
2650
  "email"
2156
- ]
2651
+ ],
2652
+ "submitEvent": "NEXT"
2157
2653
  },
2158
2654
  {
2159
- "type": "stack",
2160
- "direction": "horizontal",
2161
- "gap": "sm",
2162
2655
  "justify": "end",
2163
2656
  "children": [
2164
2657
  {
2165
- "type": "button",
2166
2658
  "label": "Next",
2659
+ "icon": "arrow-right",
2660
+ "type": "button",
2167
2661
  "event": "NEXT",
2168
- "variant": "primary",
2169
- "icon": "arrow-right"
2662
+ "variant": "primary"
2170
2663
  }
2171
- ]
2664
+ ],
2665
+ "gap": "sm",
2666
+ "direction": "horizontal",
2667
+ "type": "stack"
2172
2668
  }
2173
2669
  ]
2174
2670
  }
2175
- ]
2671
+ ],
2672
+ "padding": "lg",
2673
+ "maxWidth": "lg"
2176
2674
  }
2177
- ]
2675
+ ],
2676
+ "navItems": [
2677
+ {
2678
+ "icon": "book-open",
2679
+ "label": "Courses",
2680
+ "href": "/courses"
2681
+ },
2682
+ {
2683
+ "label": "Enroll",
2684
+ "href": "/enroll",
2685
+ "icon": "layout-list"
2686
+ },
2687
+ {
2688
+ "icon": "layout-list",
2689
+ "href": "/progress",
2690
+ "label": "Progress"
2691
+ }
2692
+ ],
2693
+ "type": "dashboard-layout"
2178
2694
  }
2179
2695
  ]
2180
2696
  ]
2181
2697
  }
2182
2698
  ]
2183
2699
  },
2184
- "listens": [
2185
- {
2186
- "event": "ENROLL",
2187
- "triggers": "INIT",
2188
- "scope": "external"
2189
- }
2190
- ],
2191
- "emits": [
2192
- {
2193
- "event": "COMPLETE_LESSON",
2194
- "description": "Lesson completed, update progress",
2195
- "payload": [
2196
- {
2197
- "name": "id",
2198
- "type": "string",
2199
- "required": true
2200
- }
2201
- ],
2202
- "scope": "external"
2203
- }
2204
- ]
2700
+ "scope": "collection"
2205
2701
  }
2206
2702
  ],
2207
2703
  "pages": [
2208
2704
  {
2209
- "name": "EnrollPage",
2705
+ "name": "Enroll",
2210
2706
  "path": "/enroll",
2211
2707
  "traits": [
2212
2708
  {
@@ -2229,36 +2725,85 @@
2229
2725
  },
2230
2726
  {
2231
2727
  "name": "courseName",
2232
- "type": "string",
2233
- "default": ""
2728
+ "type": "string"
2234
2729
  },
2235
2730
  {
2236
2731
  "name": "lessonsCompleted",
2237
- "type": "number",
2238
- "default": 0
2732
+ "type": "number"
2239
2733
  },
2240
2734
  {
2241
2735
  "name": "totalLessons",
2242
- "type": "number",
2243
- "default": 0
2736
+ "type": "number"
2244
2737
  },
2245
2738
  {
2246
2739
  "name": "percentComplete",
2247
- "type": "number",
2248
- "default": 0
2740
+ "type": "number"
2249
2741
  },
2250
2742
  {
2251
2743
  "name": "lastActivity",
2252
- "type": "date",
2253
- "default": ""
2744
+ "type": "datetime"
2254
2745
  }
2255
2746
  ]
2256
2747
  },
2257
2748
  "traits": [
2258
2749
  {
2259
2750
  "name": "ProgressDisplay",
2260
- "linkedEntity": "Progress",
2261
2751
  "category": "interaction",
2752
+ "linkedEntity": "Progress",
2753
+ "emits": [
2754
+ {
2755
+ "event": "ProgressLoaded",
2756
+ "description": "Fired when Progress finishes loading",
2757
+ "scope": "internal",
2758
+ "payload": [
2759
+ {
2760
+ "name": "id",
2761
+ "type": "string",
2762
+ "required": true
2763
+ },
2764
+ {
2765
+ "name": "courseName",
2766
+ "type": "string"
2767
+ },
2768
+ {
2769
+ "name": "lessonsCompleted",
2770
+ "type": "number"
2771
+ },
2772
+ {
2773
+ "name": "totalLessons",
2774
+ "type": "number"
2775
+ },
2776
+ {
2777
+ "name": "percentComplete",
2778
+ "type": "number"
2779
+ },
2780
+ {
2781
+ "name": "lastActivity",
2782
+ "type": "datetime"
2783
+ }
2784
+ ]
2785
+ },
2786
+ {
2787
+ "event": "ProgressLoadFailed",
2788
+ "description": "Fired when Progress fails to load",
2789
+ "scope": "internal",
2790
+ "payload": [
2791
+ {
2792
+ "name": "message",
2793
+ "type": "string"
2794
+ }
2795
+ ]
2796
+ }
2797
+ ],
2798
+ "listens": [
2799
+ {
2800
+ "event": "COMPLETE_LESSON",
2801
+ "triggers": "INIT",
2802
+ "source": {
2803
+ "kind": "any"
2804
+ }
2805
+ }
2806
+ ],
2262
2807
  "stateMachine": {
2263
2808
  "states": [
2264
2809
  {
@@ -2288,6 +2833,20 @@
2288
2833
  {
2289
2834
  "key": "REFRESHED",
2290
2835
  "name": "Refreshed"
2836
+ },
2837
+ {
2838
+ "key": "ProgressLoaded",
2839
+ "name": "Progress loaded"
2840
+ },
2841
+ {
2842
+ "key": "ProgressLoadFailed",
2843
+ "name": "Progress load failed",
2844
+ "payload": [
2845
+ {
2846
+ "name": "message",
2847
+ "type": "string"
2848
+ }
2849
+ ]
2291
2850
  }
2292
2851
  ],
2293
2852
  "transitions": [
@@ -2298,46 +2857,33 @@
2298
2857
  "effects": [
2299
2858
  [
2300
2859
  "fetch",
2301
- "Progress"
2860
+ "Progress",
2861
+ {
2862
+ "emit": {
2863
+ "failure": "ProgressLoadFailed",
2864
+ "success": "ProgressLoaded"
2865
+ }
2866
+ }
2302
2867
  ],
2303
2868
  [
2304
2869
  "render-ui",
2305
2870
  "main",
2306
2871
  {
2307
- "type": "dashboard-layout",
2308
- "appName": "LMS",
2309
- "navItems": [
2310
- {
2311
- "label": "Courses",
2312
- "href": "/courses",
2313
- "icon": "book-open"
2314
- },
2315
- {
2316
- "label": "Enroll",
2317
- "href": "/enroll",
2318
- "icon": "layout-list"
2319
- },
2320
- {
2321
- "label": "Progress",
2322
- "href": "/progress",
2323
- "icon": "layout-list"
2324
- }
2325
- ],
2326
2872
  "children": [
2327
2873
  {
2328
2874
  "type": "scaled-diagram",
2329
2875
  "children": [
2330
2876
  {
2877
+ "gap": "lg",
2331
2878
  "type": "stack",
2332
2879
  "direction": "vertical",
2333
- "gap": "lg",
2334
2880
  "children": [
2335
2881
  {
2336
2882
  "type": "breadcrumb",
2337
2883
  "items": [
2338
2884
  {
2339
- "label": "Home",
2340
- "href": "/"
2885
+ "href": "/",
2886
+ "label": "Home"
2341
2887
  },
2342
2888
  {
2343
2889
  "label": "Progress"
@@ -2345,19 +2891,19 @@
2345
2891
  ]
2346
2892
  },
2347
2893
  {
2348
- "type": "stack",
2349
- "direction": "horizontal",
2350
- "gap": "md",
2351
2894
  "justify": "space-between",
2895
+ "gap": "md",
2896
+ "direction": "horizontal",
2897
+ "type": "stack",
2352
2898
  "children": [
2353
2899
  {
2354
- "type": "stack",
2355
2900
  "direction": "horizontal",
2356
2901
  "gap": "md",
2902
+ "type": "stack",
2357
2903
  "children": [
2358
2904
  {
2359
- "type": "icon",
2360
2905
  "name": "trending-up",
2906
+ "type": "icon",
2361
2907
  "size": "lg"
2362
2908
  },
2363
2909
  {
@@ -2368,11 +2914,11 @@
2368
2914
  ]
2369
2915
  },
2370
2916
  {
2371
- "type": "button",
2372
2917
  "label": "Refresh",
2373
- "event": "REFRESH",
2374
2918
  "variant": "secondary",
2375
- "icon": "refresh-cw"
2919
+ "icon": "refresh-cw",
2920
+ "event": "REFRESH",
2921
+ "type": "button"
2376
2922
  }
2377
2923
  ]
2378
2924
  },
@@ -2380,25 +2926,23 @@
2380
2926
  "type": "divider"
2381
2927
  },
2382
2928
  {
2383
- "type": "box",
2384
- "padding": "md",
2385
2929
  "children": [
2386
2930
  {
2387
2931
  "type": "simple-grid",
2388
- "columns": 3,
2932
+ "columns": 3.0,
2389
2933
  "children": [
2390
2934
  {
2391
2935
  "type": "card",
2392
2936
  "children": [
2393
2937
  {
2394
- "type": "stack",
2395
2938
  "direction": "vertical",
2396
2939
  "gap": "sm",
2940
+ "type": "stack",
2397
2941
  "children": [
2398
2942
  {
2399
2943
  "type": "typography",
2400
- "variant": "caption",
2401
- "content": "CourseName"
2944
+ "content": "CourseName",
2945
+ "variant": "caption"
2402
2946
  },
2403
2947
  {
2404
2948
  "type": "typography",
@@ -2417,8 +2961,6 @@
2417
2961
  ]
2418
2962
  },
2419
2963
  {
2420
- "type": "stat-display",
2421
- "label": "LessonsCompleted",
2422
2964
  "value": [
2423
2965
  "object/get",
2424
2966
  [
@@ -2426,11 +2968,11 @@
2426
2968
  "@entity"
2427
2969
  ],
2428
2970
  "lessonsCompleted"
2429
- ]
2971
+ ],
2972
+ "label": "LessonsCompleted",
2973
+ "type": "stat-display"
2430
2974
  },
2431
2975
  {
2432
- "type": "stat-display",
2433
- "label": "TotalLessons",
2434
2976
  "value": [
2435
2977
  "object/get",
2436
2978
  [
@@ -2438,11 +2980,13 @@
2438
2980
  "@entity"
2439
2981
  ],
2440
2982
  "totalLessons"
2441
- ]
2983
+ ],
2984
+ "type": "stat-display",
2985
+ "label": "TotalLessons"
2442
2986
  },
2443
2987
  {
2444
- "type": "stat-display",
2445
2988
  "label": "PercentComplete",
2989
+ "type": "stat-display",
2446
2990
  "value": [
2447
2991
  "object/get",
2448
2992
  [
@@ -2456,9 +3000,7 @@
2456
3000
  "type": "card",
2457
3001
  "children": [
2458
3002
  {
2459
- "type": "stack",
2460
3003
  "direction": "vertical",
2461
- "gap": "sm",
2462
3004
  "children": [
2463
3005
  {
2464
3006
  "type": "typography",
@@ -2466,8 +3008,8 @@
2466
3008
  "content": "LastActivity"
2467
3009
  },
2468
3010
  {
2469
- "type": "typography",
2470
3011
  "variant": "h3",
3012
+ "type": "typography",
2471
3013
  "content": [
2472
3014
  "object/get",
2473
3015
  [
@@ -2477,128 +3019,151 @@
2477
3019
  "lastActivity"
2478
3020
  ]
2479
3021
  }
2480
- ]
3022
+ ],
3023
+ "gap": "sm",
3024
+ "type": "stack"
2481
3025
  }
2482
3026
  ]
2483
3027
  }
2484
3028
  ]
2485
3029
  }
2486
- ]
3030
+ ],
3031
+ "padding": "md",
3032
+ "type": "box"
2487
3033
  },
2488
3034
  {
2489
3035
  "type": "divider"
2490
3036
  },
2491
3037
  {
2492
3038
  "type": "grid",
2493
- "columns": 2,
2494
- "gap": "md",
2495
3039
  "children": [
2496
3040
  {
2497
3041
  "type": "card",
2498
3042
  "children": [
2499
3043
  {
2500
- "type": "typography",
2501
3044
  "variant": "caption",
2502
- "content": "Chart View"
3045
+ "content": "Chart View",
3046
+ "type": "typography"
2503
3047
  }
2504
3048
  ]
2505
3049
  },
2506
3050
  {
2507
- "type": "card",
2508
3051
  "children": [
2509
3052
  {
3053
+ "content": "Graph View",
2510
3054
  "type": "typography",
2511
- "variant": "caption",
2512
- "content": "Graph View"
3055
+ "variant": "caption"
2513
3056
  }
2514
- ]
3057
+ ],
3058
+ "type": "card"
2515
3059
  }
2516
- ]
3060
+ ],
3061
+ "gap": "md",
3062
+ "columns": 2.0
2517
3063
  },
2518
3064
  {
2519
3065
  "type": "line-chart",
3066
+ "yKey": "value",
3067
+ "title": "Trend",
3068
+ "xKey": "date",
2520
3069
  "data": [
2521
3070
  {
2522
3071
  "date": "Jan",
2523
- "value": 12
3072
+ "value": 12.0
2524
3073
  },
2525
3074
  {
2526
- "date": "Feb",
2527
- "value": 19
3075
+ "value": 19.0,
3076
+ "date": "Feb"
2528
3077
  },
2529
3078
  {
2530
- "date": "Mar",
2531
- "value": 15
3079
+ "value": 15.0,
3080
+ "date": "Mar"
2532
3081
  },
2533
3082
  {
2534
3083
  "date": "Apr",
2535
- "value": 25
3084
+ "value": 25.0
2536
3085
  },
2537
3086
  {
2538
3087
  "date": "May",
2539
- "value": 22
3088
+ "value": 22.0
2540
3089
  },
2541
3090
  {
2542
3091
  "date": "Jun",
2543
- "value": 30
3092
+ "value": 30.0
2544
3093
  }
2545
- ],
2546
- "xKey": "date",
2547
- "yKey": "value",
2548
- "title": "Trend"
3094
+ ]
2549
3095
  },
2550
3096
  {
2551
- "type": "chart-legend",
2552
3097
  "items": [
2553
3098
  {
2554
3099
  "label": "Current",
2555
3100
  "color": "primary"
2556
3101
  },
2557
3102
  {
2558
- "label": "Previous",
2559
- "color": "muted"
3103
+ "color": "muted",
3104
+ "label": "Previous"
2560
3105
  }
2561
- ]
3106
+ ],
3107
+ "type": "chart-legend"
2562
3108
  },
2563
3109
  {
2564
- "type": "graph-view",
3110
+ "width": 400.0,
3111
+ "height": 200.0,
2565
3112
  "nodes": [
2566
3113
  {
3114
+ "x": 50.0,
3115
+ "y": 100.0,
2567
3116
  "id": "a",
2568
- "label": "Start",
2569
- "x": 50,
2570
- "y": 100
3117
+ "label": "Start"
2571
3118
  },
2572
3119
  {
2573
3120
  "id": "b",
2574
- "label": "Process",
2575
- "x": 200,
2576
- "y": 50
3121
+ "y": 50.0,
3122
+ "x": 200.0,
3123
+ "label": "Process"
2577
3124
  },
2578
3125
  {
2579
- "id": "c",
2580
3126
  "label": "End",
2581
- "x": 350,
2582
- "y": 100
3127
+ "x": 350.0,
3128
+ "y": 100.0,
3129
+ "id": "c"
2583
3130
  }
2584
3131
  ],
2585
3132
  "edges": [
2586
3133
  {
2587
- "from": "a",
2588
- "to": "b"
3134
+ "to": "b",
3135
+ "from": "a"
2589
3136
  },
2590
3137
  {
2591
3138
  "from": "b",
2592
3139
  "to": "c"
2593
3140
  }
2594
3141
  ],
2595
- "width": 400,
2596
- "height": 200
3142
+ "type": "graph-view"
2597
3143
  }
2598
3144
  ]
2599
3145
  }
2600
3146
  ]
2601
3147
  }
3148
+ ],
3149
+ "appName": "LMS",
3150
+ "type": "dashboard-layout",
3151
+ "navItems": [
3152
+ {
3153
+ "href": "/courses",
3154
+ "label": "Courses",
3155
+ "icon": "book-open"
3156
+ },
3157
+ {
3158
+ "href": "/enroll",
3159
+ "icon": "layout-list",
3160
+ "label": "Enroll"
3161
+ },
3162
+ {
3163
+ "href": "/progress",
3164
+ "icon": "layout-list",
3165
+ "label": "Progress"
3166
+ }
2602
3167
  ]
2603
3168
  }
2604
3169
  ]
@@ -2611,31 +3176,36 @@
2611
3176
  "effects": [
2612
3177
  [
2613
3178
  "fetch",
2614
- "Progress"
3179
+ "Progress",
3180
+ {
3181
+ "emit": {
3182
+ "success": "ProgressLoaded",
3183
+ "failure": "ProgressLoadFailed"
3184
+ }
3185
+ }
2615
3186
  ],
2616
3187
  [
2617
3188
  "render-ui",
2618
3189
  "main",
2619
3190
  {
2620
- "type": "dashboard-layout",
2621
- "appName": "LMS",
2622
3191
  "navItems": [
2623
3192
  {
2624
- "label": "Courses",
2625
3193
  "href": "/courses",
3194
+ "label": "Courses",
2626
3195
  "icon": "book-open"
2627
3196
  },
2628
3197
  {
2629
- "label": "Enroll",
2630
3198
  "href": "/enroll",
2631
- "icon": "layout-list"
3199
+ "icon": "layout-list",
3200
+ "label": "Enroll"
2632
3201
  },
2633
3202
  {
2634
- "label": "Progress",
2635
3203
  "href": "/progress",
3204
+ "label": "Progress",
2636
3205
  "icon": "layout-list"
2637
3206
  }
2638
3207
  ],
3208
+ "appName": "LMS",
2639
3209
  "children": [
2640
3210
  {
2641
3211
  "type": "scaled-diagram",
@@ -2643,7 +3213,6 @@
2643
3213
  {
2644
3214
  "type": "stack",
2645
3215
  "direction": "vertical",
2646
- "gap": "lg",
2647
3216
  "children": [
2648
3217
  {
2649
3218
  "type": "breadcrumb",
@@ -2659,63 +3228,60 @@
2659
3228
  },
2660
3229
  {
2661
3230
  "type": "stack",
2662
- "direction": "horizontal",
2663
- "gap": "md",
2664
- "justify": "space-between",
2665
3231
  "children": [
2666
3232
  {
2667
3233
  "type": "stack",
2668
- "direction": "horizontal",
2669
3234
  "gap": "md",
2670
3235
  "children": [
2671
3236
  {
2672
- "type": "icon",
2673
3237
  "name": "trending-up",
3238
+ "type": "icon",
2674
3239
  "size": "lg"
2675
3240
  },
2676
3241
  {
2677
- "type": "typography",
2678
3242
  "content": "Progress",
3243
+ "type": "typography",
2679
3244
  "variant": "h2"
2680
3245
  }
2681
- ]
3246
+ ],
3247
+ "direction": "horizontal"
2682
3248
  },
2683
3249
  {
2684
3250
  "type": "button",
2685
- "label": "Refresh",
2686
- "event": "REFRESH",
3251
+ "icon": "refresh-cw",
2687
3252
  "variant": "secondary",
2688
- "icon": "refresh-cw"
3253
+ "label": "Refresh",
3254
+ "event": "REFRESH"
2689
3255
  }
2690
- ]
3256
+ ],
3257
+ "gap": "md",
3258
+ "direction": "horizontal",
3259
+ "justify": "space-between"
2691
3260
  },
2692
3261
  {
2693
3262
  "type": "divider"
2694
3263
  },
2695
3264
  {
2696
- "type": "box",
2697
3265
  "padding": "md",
2698
3266
  "children": [
2699
3267
  {
2700
3268
  "type": "simple-grid",
2701
- "columns": 3,
3269
+ "columns": 3.0,
2702
3270
  "children": [
2703
3271
  {
2704
3272
  "type": "card",
2705
3273
  "children": [
2706
3274
  {
2707
- "type": "stack",
2708
3275
  "direction": "vertical",
2709
- "gap": "sm",
2710
3276
  "children": [
2711
3277
  {
2712
- "type": "typography",
2713
3278
  "variant": "caption",
3279
+ "type": "typography",
2714
3280
  "content": "CourseName"
2715
3281
  },
2716
3282
  {
2717
- "type": "typography",
2718
3283
  "variant": "h3",
3284
+ "type": "typography",
2719
3285
  "content": [
2720
3286
  "object/get",
2721
3287
  [
@@ -2725,13 +3291,13 @@
2725
3291
  "courseName"
2726
3292
  ]
2727
3293
  }
2728
- ]
3294
+ ],
3295
+ "gap": "sm",
3296
+ "type": "stack"
2729
3297
  }
2730
3298
  ]
2731
3299
  },
2732
3300
  {
2733
- "type": "stat-display",
2734
- "label": "LessonsCompleted",
2735
3301
  "value": [
2736
3302
  "object/get",
2737
3303
  [
@@ -2739,11 +3305,13 @@
2739
3305
  "@entity"
2740
3306
  ],
2741
3307
  "lessonsCompleted"
2742
- ]
3308
+ ],
3309
+ "type": "stat-display",
3310
+ "label": "LessonsCompleted"
2743
3311
  },
2744
3312
  {
2745
- "type": "stat-display",
2746
3313
  "label": "TotalLessons",
3314
+ "type": "stat-display",
2747
3315
  "value": [
2748
3316
  "object/get",
2749
3317
  [
@@ -2754,8 +3322,8 @@
2754
3322
  ]
2755
3323
  },
2756
3324
  {
2757
- "type": "stat-display",
2758
3325
  "label": "PercentComplete",
3326
+ "type": "stat-display",
2759
3327
  "value": [
2760
3328
  "object/get",
2761
3329
  [
@@ -2766,20 +3334,17 @@
2766
3334
  ]
2767
3335
  },
2768
3336
  {
2769
- "type": "card",
2770
3337
  "children": [
2771
3338
  {
2772
- "type": "stack",
2773
3339
  "direction": "vertical",
2774
- "gap": "sm",
3340
+ "type": "stack",
2775
3341
  "children": [
2776
3342
  {
2777
- "type": "typography",
2778
3343
  "variant": "caption",
2779
- "content": "LastActivity"
3344
+ "content": "LastActivity",
3345
+ "type": "typography"
2780
3346
  },
2781
3347
  {
2782
- "type": "typography",
2783
3348
  "variant": "h3",
2784
3349
  "content": [
2785
3350
  "object/get",
@@ -2788,31 +3353,33 @@
2788
3353
  "@entity"
2789
3354
  ],
2790
3355
  "lastActivity"
2791
- ]
3356
+ ],
3357
+ "type": "typography"
2792
3358
  }
2793
- ]
3359
+ ],
3360
+ "gap": "sm"
2794
3361
  }
2795
- ]
3362
+ ],
3363
+ "type": "card"
2796
3364
  }
2797
3365
  ]
2798
3366
  }
2799
- ]
3367
+ ],
3368
+ "type": "box"
2800
3369
  },
2801
3370
  {
2802
3371
  "type": "divider"
2803
3372
  },
2804
3373
  {
2805
- "type": "grid",
2806
- "columns": 2,
2807
- "gap": "md",
3374
+ "columns": 2.0,
2808
3375
  "children": [
2809
3376
  {
2810
3377
  "type": "card",
2811
3378
  "children": [
2812
3379
  {
2813
- "type": "typography",
2814
3380
  "variant": "caption",
2815
- "content": "Chart View"
3381
+ "content": "Chart View",
3382
+ "type": "typography"
2816
3383
  }
2817
3384
  ]
2818
3385
  },
@@ -2821,47 +3388,48 @@
2821
3388
  "children": [
2822
3389
  {
2823
3390
  "type": "typography",
2824
- "variant": "caption",
2825
- "content": "Graph View"
3391
+ "content": "Graph View",
3392
+ "variant": "caption"
2826
3393
  }
2827
3394
  ]
2828
3395
  }
2829
- ]
3396
+ ],
3397
+ "type": "grid",
3398
+ "gap": "md"
2830
3399
  },
2831
3400
  {
3401
+ "title": "Trend",
2832
3402
  "type": "line-chart",
3403
+ "xKey": "date",
3404
+ "yKey": "value",
2833
3405
  "data": [
2834
3406
  {
2835
3407
  "date": "Jan",
2836
- "value": 12
3408
+ "value": 12.0
2837
3409
  },
2838
3410
  {
2839
- "date": "Feb",
2840
- "value": 19
3411
+ "value": 19.0,
3412
+ "date": "Feb"
2841
3413
  },
2842
3414
  {
2843
3415
  "date": "Mar",
2844
- "value": 15
3416
+ "value": 15.0
2845
3417
  },
2846
3418
  {
2847
3419
  "date": "Apr",
2848
- "value": 25
3420
+ "value": 25.0
2849
3421
  },
2850
3422
  {
2851
3423
  "date": "May",
2852
- "value": 22
3424
+ "value": 22.0
2853
3425
  },
2854
3426
  {
2855
- "date": "Jun",
2856
- "value": 30
3427
+ "value": 30.0,
3428
+ "date": "Jun"
2857
3429
  }
2858
- ],
2859
- "xKey": "date",
2860
- "yKey": "value",
2861
- "title": "Trend"
3430
+ ]
2862
3431
  },
2863
3432
  {
2864
- "type": "chart-legend",
2865
3433
  "items": [
2866
3434
  {
2867
3435
  "label": "Current",
@@ -2871,48 +3439,51 @@
2871
3439
  "label": "Previous",
2872
3440
  "color": "muted"
2873
3441
  }
2874
- ]
3442
+ ],
3443
+ "type": "chart-legend"
2875
3444
  },
2876
3445
  {
2877
3446
  "type": "graph-view",
3447
+ "height": 200.0,
2878
3448
  "nodes": [
2879
3449
  {
2880
3450
  "id": "a",
2881
3451
  "label": "Start",
2882
- "x": 50,
2883
- "y": 100
3452
+ "y": 100.0,
3453
+ "x": 50.0
2884
3454
  },
2885
3455
  {
3456
+ "y": 50.0,
2886
3457
  "id": "b",
2887
3458
  "label": "Process",
2888
- "x": 200,
2889
- "y": 50
3459
+ "x": 200.0
2890
3460
  },
2891
3461
  {
2892
3462
  "id": "c",
2893
- "label": "End",
2894
- "x": 350,
2895
- "y": 100
3463
+ "x": 350.0,
3464
+ "y": 100.0,
3465
+ "label": "End"
2896
3466
  }
2897
3467
  ],
3468
+ "width": 400.0,
2898
3469
  "edges": [
2899
3470
  {
2900
3471
  "from": "a",
2901
3472
  "to": "b"
2902
3473
  },
2903
3474
  {
2904
- "from": "b",
2905
- "to": "c"
3475
+ "to": "c",
3476
+ "from": "b"
2906
3477
  }
2907
- ],
2908
- "width": 400,
2909
- "height": 200
3478
+ ]
2910
3479
  }
2911
- ]
3480
+ ],
3481
+ "gap": "lg"
2912
3482
  }
2913
3483
  ]
2914
3484
  }
2915
- ]
3485
+ ],
3486
+ "type": "dashboard-layout"
2916
3487
  }
2917
3488
  ]
2918
3489
  ]
@@ -2924,14 +3495,19 @@
2924
3495
  "effects": [
2925
3496
  [
2926
3497
  "fetch",
2927
- "Progress"
3498
+ "Progress",
3499
+ {
3500
+ "emit": {
3501
+ "failure": "ProgressLoadFailed",
3502
+ "success": "ProgressLoaded"
3503
+ }
3504
+ }
2928
3505
  ],
2929
3506
  [
2930
3507
  "render-ui",
2931
3508
  "main",
2932
3509
  {
2933
3510
  "type": "dashboard-layout",
2934
- "appName": "LMS",
2935
3511
  "navItems": [
2936
3512
  {
2937
3513
  "label": "Courses",
@@ -2940,30 +3516,29 @@
2940
3516
  },
2941
3517
  {
2942
3518
  "label": "Enroll",
2943
- "href": "/enroll",
2944
- "icon": "layout-list"
3519
+ "icon": "layout-list",
3520
+ "href": "/enroll"
2945
3521
  },
2946
3522
  {
2947
3523
  "label": "Progress",
2948
- "href": "/progress",
2949
- "icon": "layout-list"
3524
+ "icon": "layout-list",
3525
+ "href": "/progress"
2950
3526
  }
2951
3527
  ],
2952
3528
  "children": [
2953
3529
  {
2954
- "type": "scaled-diagram",
2955
3530
  "children": [
2956
3531
  {
3532
+ "gap": "lg",
2957
3533
  "type": "stack",
2958
3534
  "direction": "vertical",
2959
- "gap": "lg",
2960
3535
  "children": [
2961
3536
  {
2962
3537
  "type": "breadcrumb",
2963
3538
  "items": [
2964
3539
  {
2965
- "label": "Home",
2966
- "href": "/"
3540
+ "href": "/",
3541
+ "label": "Home"
2967
3542
  },
2968
3543
  {
2969
3544
  "label": "Progress"
@@ -2971,64 +3546,60 @@
2971
3546
  ]
2972
3547
  },
2973
3548
  {
2974
- "type": "stack",
2975
- "direction": "horizontal",
2976
- "gap": "md",
2977
- "justify": "space-between",
2978
3549
  "children": [
2979
3550
  {
2980
- "type": "stack",
2981
- "direction": "horizontal",
2982
- "gap": "md",
2983
3551
  "children": [
2984
3552
  {
3553
+ "size": "lg",
2985
3554
  "type": "icon",
2986
- "name": "trending-up",
2987
- "size": "lg"
3555
+ "name": "trending-up"
2988
3556
  },
2989
3557
  {
2990
- "type": "typography",
3558
+ "variant": "h2",
2991
3559
  "content": "Progress",
2992
- "variant": "h2"
3560
+ "type": "typography"
2993
3561
  }
2994
- ]
3562
+ ],
3563
+ "gap": "md",
3564
+ "direction": "horizontal",
3565
+ "type": "stack"
2995
3566
  },
2996
3567
  {
2997
3568
  "type": "button",
2998
3569
  "label": "Refresh",
3570
+ "icon": "refresh-cw",
2999
3571
  "event": "REFRESH",
3000
- "variant": "secondary",
3001
- "icon": "refresh-cw"
3572
+ "variant": "secondary"
3002
3573
  }
3003
- ]
3574
+ ],
3575
+ "gap": "md",
3576
+ "justify": "space-between",
3577
+ "type": "stack",
3578
+ "direction": "horizontal"
3004
3579
  },
3005
3580
  {
3006
3581
  "type": "divider"
3007
3582
  },
3008
3583
  {
3009
3584
  "type": "box",
3010
- "padding": "md",
3011
3585
  "children": [
3012
3586
  {
3013
3587
  "type": "simple-grid",
3014
- "columns": 3,
3588
+ "columns": 3.0,
3015
3589
  "children": [
3016
3590
  {
3017
- "type": "card",
3018
3591
  "children": [
3019
3592
  {
3020
- "type": "stack",
3021
- "direction": "vertical",
3022
3593
  "gap": "sm",
3594
+ "direction": "vertical",
3595
+ "type": "stack",
3023
3596
  "children": [
3024
3597
  {
3025
3598
  "type": "typography",
3026
- "variant": "caption",
3027
- "content": "CourseName"
3599
+ "content": "CourseName",
3600
+ "variant": "caption"
3028
3601
  },
3029
3602
  {
3030
- "type": "typography",
3031
- "variant": "h3",
3032
3603
  "content": [
3033
3604
  "object/get",
3034
3605
  [
@@ -3036,15 +3607,16 @@
3036
3607
  "@entity"
3037
3608
  ],
3038
3609
  "courseName"
3039
- ]
3610
+ ],
3611
+ "type": "typography",
3612
+ "variant": "h3"
3040
3613
  }
3041
3614
  ]
3042
3615
  }
3043
- ]
3616
+ ],
3617
+ "type": "card"
3044
3618
  },
3045
3619
  {
3046
- "type": "stat-display",
3047
- "label": "LessonsCompleted",
3048
3620
  "value": [
3049
3621
  "object/get",
3050
3622
  [
@@ -3052,11 +3624,12 @@
3052
3624
  "@entity"
3053
3625
  ],
3054
3626
  "lessonsCompleted"
3055
- ]
3627
+ ],
3628
+ "type": "stat-display",
3629
+ "label": "LessonsCompleted"
3056
3630
  },
3057
3631
  {
3058
3632
  "type": "stat-display",
3059
- "label": "TotalLessons",
3060
3633
  "value": [
3061
3634
  "object/get",
3062
3635
  [
@@ -3064,10 +3637,10 @@
3064
3637
  "@entity"
3065
3638
  ],
3066
3639
  "totalLessons"
3067
- ]
3640
+ ],
3641
+ "label": "TotalLessons"
3068
3642
  },
3069
3643
  {
3070
- "type": "stat-display",
3071
3644
  "label": "PercentComplete",
3072
3645
  "value": [
3073
3646
  "object/get",
@@ -3076,15 +3649,15 @@
3076
3649
  "@entity"
3077
3650
  ],
3078
3651
  "percentComplete"
3079
- ]
3652
+ ],
3653
+ "type": "stat-display"
3080
3654
  },
3081
3655
  {
3082
- "type": "card",
3083
3656
  "children": [
3084
3657
  {
3085
3658
  "type": "stack",
3086
- "direction": "vertical",
3087
3659
  "gap": "sm",
3660
+ "direction": "vertical",
3088
3661
  "children": [
3089
3662
  {
3090
3663
  "type": "typography",
@@ -3105,19 +3678,18 @@
3105
3678
  }
3106
3679
  ]
3107
3680
  }
3108
- ]
3681
+ ],
3682
+ "type": "card"
3109
3683
  }
3110
3684
  ]
3111
3685
  }
3112
- ]
3686
+ ],
3687
+ "padding": "md"
3113
3688
  },
3114
3689
  {
3115
3690
  "type": "divider"
3116
3691
  },
3117
3692
  {
3118
- "type": "grid",
3119
- "columns": 2,
3120
- "gap": "md",
3121
3693
  "children": [
3122
3694
  {
3123
3695
  "type": "card",
@@ -3139,93 +3711,98 @@
3139
3711
  }
3140
3712
  ]
3141
3713
  }
3142
- ]
3714
+ ],
3715
+ "gap": "md",
3716
+ "type": "grid",
3717
+ "columns": 2.0
3143
3718
  },
3144
3719
  {
3145
3720
  "type": "line-chart",
3721
+ "yKey": "value",
3146
3722
  "data": [
3147
3723
  {
3148
3724
  "date": "Jan",
3149
- "value": 12
3725
+ "value": 12.0
3150
3726
  },
3151
3727
  {
3152
3728
  "date": "Feb",
3153
- "value": 19
3729
+ "value": 19.0
3154
3730
  },
3155
3731
  {
3156
- "date": "Mar",
3157
- "value": 15
3732
+ "value": 15.0,
3733
+ "date": "Mar"
3158
3734
  },
3159
3735
  {
3160
3736
  "date": "Apr",
3161
- "value": 25
3737
+ "value": 25.0
3162
3738
  },
3163
3739
  {
3164
3740
  "date": "May",
3165
- "value": 22
3741
+ "value": 22.0
3166
3742
  },
3167
3743
  {
3168
- "date": "Jun",
3169
- "value": 30
3744
+ "value": 30.0,
3745
+ "date": "Jun"
3170
3746
  }
3171
3747
  ],
3172
- "xKey": "date",
3173
- "yKey": "value",
3174
- "title": "Trend"
3748
+ "title": "Trend",
3749
+ "xKey": "date"
3175
3750
  },
3176
3751
  {
3177
- "type": "chart-legend",
3178
3752
  "items": [
3179
3753
  {
3180
- "label": "Current",
3181
- "color": "primary"
3754
+ "color": "primary",
3755
+ "label": "Current"
3182
3756
  },
3183
3757
  {
3184
3758
  "label": "Previous",
3185
3759
  "color": "muted"
3186
3760
  }
3187
- ]
3761
+ ],
3762
+ "type": "chart-legend"
3188
3763
  },
3189
3764
  {
3190
- "type": "graph-view",
3765
+ "edges": [
3766
+ {
3767
+ "from": "a",
3768
+ "to": "b"
3769
+ },
3770
+ {
3771
+ "from": "b",
3772
+ "to": "c"
3773
+ }
3774
+ ],
3775
+ "height": 200.0,
3191
3776
  "nodes": [
3192
3777
  {
3778
+ "y": 100.0,
3193
3779
  "id": "a",
3194
3780
  "label": "Start",
3195
- "x": 50,
3196
- "y": 100
3781
+ "x": 50.0
3197
3782
  },
3198
3783
  {
3199
- "id": "b",
3784
+ "x": 200.0,
3200
3785
  "label": "Process",
3201
- "x": 200,
3202
- "y": 50
3786
+ "y": 50.0,
3787
+ "id": "b"
3203
3788
  },
3204
3789
  {
3205
- "id": "c",
3790
+ "x": 350.0,
3791
+ "y": 100.0,
3206
3792
  "label": "End",
3207
- "x": 350,
3208
- "y": 100
3793
+ "id": "c"
3209
3794
  }
3210
3795
  ],
3211
- "edges": [
3212
- {
3213
- "from": "a",
3214
- "to": "b"
3215
- },
3216
- {
3217
- "from": "b",
3218
- "to": "c"
3219
- }
3220
- ],
3221
- "width": 400,
3222
- "height": 200
3796
+ "type": "graph-view",
3797
+ "width": 400.0
3223
3798
  }
3224
3799
  ]
3225
3800
  }
3226
- ]
3801
+ ],
3802
+ "type": "scaled-diagram"
3227
3803
  }
3228
- ]
3804
+ ],
3805
+ "appName": "LMS"
3229
3806
  }
3230
3807
  ]
3231
3808
  ]
@@ -3237,46 +3814,32 @@
3237
3814
  "effects": [
3238
3815
  [
3239
3816
  "fetch",
3240
- "Progress"
3817
+ "Progress",
3818
+ {
3819
+ "emit": {
3820
+ "success": "ProgressLoaded",
3821
+ "failure": "ProgressLoadFailed"
3822
+ }
3823
+ }
3241
3824
  ],
3242
3825
  [
3243
3826
  "render-ui",
3244
3827
  "main",
3245
3828
  {
3246
- "type": "dashboard-layout",
3247
3829
  "appName": "LMS",
3248
- "navItems": [
3249
- {
3250
- "label": "Courses",
3251
- "href": "/courses",
3252
- "icon": "book-open"
3253
- },
3254
- {
3255
- "label": "Enroll",
3256
- "href": "/enroll",
3257
- "icon": "layout-list"
3258
- },
3259
- {
3260
- "label": "Progress",
3261
- "href": "/progress",
3262
- "icon": "layout-list"
3263
- }
3264
- ],
3830
+ "type": "dashboard-layout",
3265
3831
  "children": [
3266
3832
  {
3267
- "type": "scaled-diagram",
3268
3833
  "children": [
3269
3834
  {
3270
- "type": "stack",
3271
3835
  "direction": "vertical",
3272
- "gap": "lg",
3273
3836
  "children": [
3274
3837
  {
3275
3838
  "type": "breadcrumb",
3276
3839
  "items": [
3277
3840
  {
3278
- "label": "Home",
3279
- "href": "/"
3841
+ "href": "/",
3842
+ "label": "Home"
3280
3843
  },
3281
3844
  {
3282
3845
  "label": "Progress"
@@ -3285,35 +3848,35 @@
3285
3848
  },
3286
3849
  {
3287
3850
  "type": "stack",
3288
- "direction": "horizontal",
3289
- "gap": "md",
3290
- "justify": "space-between",
3291
3851
  "children": [
3292
3852
  {
3293
- "type": "stack",
3294
3853
  "direction": "horizontal",
3295
- "gap": "md",
3296
3854
  "children": [
3297
3855
  {
3298
3856
  "type": "icon",
3299
- "name": "trending-up",
3300
- "size": "lg"
3857
+ "size": "lg",
3858
+ "name": "trending-up"
3301
3859
  },
3302
3860
  {
3303
- "type": "typography",
3304
3861
  "content": "Progress",
3305
- "variant": "h2"
3862
+ "variant": "h2",
3863
+ "type": "typography"
3306
3864
  }
3307
- ]
3865
+ ],
3866
+ "gap": "md",
3867
+ "type": "stack"
3308
3868
  },
3309
3869
  {
3870
+ "variant": "secondary",
3871
+ "event": "REFRESH",
3310
3872
  "type": "button",
3311
3873
  "label": "Refresh",
3312
- "event": "REFRESH",
3313
- "variant": "secondary",
3314
3874
  "icon": "refresh-cw"
3315
3875
  }
3316
- ]
3876
+ ],
3877
+ "justify": "space-between",
3878
+ "gap": "md",
3879
+ "direction": "horizontal"
3317
3880
  },
3318
3881
  {
3319
3882
  "type": "divider"
@@ -3324,23 +3887,22 @@
3324
3887
  "children": [
3325
3888
  {
3326
3889
  "type": "simple-grid",
3327
- "columns": 3,
3890
+ "columns": 3.0,
3328
3891
  "children": [
3329
3892
  {
3330
3893
  "type": "card",
3331
3894
  "children": [
3332
3895
  {
3333
3896
  "type": "stack",
3334
- "direction": "vertical",
3335
3897
  "gap": "sm",
3898
+ "direction": "vertical",
3336
3899
  "children": [
3337
3900
  {
3901
+ "content": "CourseName",
3338
3902
  "type": "typography",
3339
- "variant": "caption",
3340
- "content": "CourseName"
3903
+ "variant": "caption"
3341
3904
  },
3342
3905
  {
3343
- "type": "typography",
3344
3906
  "variant": "h3",
3345
3907
  "content": [
3346
3908
  "object/get",
@@ -3349,15 +3911,14 @@
3349
3911
  "@entity"
3350
3912
  ],
3351
3913
  "courseName"
3352
- ]
3914
+ ],
3915
+ "type": "typography"
3353
3916
  }
3354
3917
  ]
3355
3918
  }
3356
3919
  ]
3357
3920
  },
3358
3921
  {
3359
- "type": "stat-display",
3360
- "label": "LessonsCompleted",
3361
3922
  "value": [
3362
3923
  "object/get",
3363
3924
  [
@@ -3365,11 +3926,11 @@
3365
3926
  "@entity"
3366
3927
  ],
3367
3928
  "lessonsCompleted"
3368
- ]
3929
+ ],
3930
+ "label": "LessonsCompleted",
3931
+ "type": "stat-display"
3369
3932
  },
3370
3933
  {
3371
- "type": "stat-display",
3372
- "label": "TotalLessons",
3373
3934
  "value": [
3374
3935
  "object/get",
3375
3936
  [
@@ -3377,11 +3938,11 @@
3377
3938
  "@entity"
3378
3939
  ],
3379
3940
  "totalLessons"
3380
- ]
3941
+ ],
3942
+ "label": "TotalLessons",
3943
+ "type": "stat-display"
3381
3944
  },
3382
3945
  {
3383
- "type": "stat-display",
3384
- "label": "PercentComplete",
3385
3946
  "value": [
3386
3947
  "object/get",
3387
3948
  [
@@ -3389,15 +3950,14 @@
3389
3950
  "@entity"
3390
3951
  ],
3391
3952
  "percentComplete"
3392
- ]
3953
+ ],
3954
+ "type": "stat-display",
3955
+ "label": "PercentComplete"
3393
3956
  },
3394
3957
  {
3395
- "type": "card",
3396
3958
  "children": [
3397
3959
  {
3398
- "type": "stack",
3399
3960
  "direction": "vertical",
3400
- "gap": "sm",
3401
3961
  "children": [
3402
3962
  {
3403
3963
  "type": "typography",
@@ -3406,7 +3966,6 @@
3406
3966
  },
3407
3967
  {
3408
3968
  "type": "typography",
3409
- "variant": "h3",
3410
3969
  "content": [
3411
3970
  "object/get",
3412
3971
  [
@@ -3414,11 +3973,15 @@
3414
3973
  "@entity"
3415
3974
  ],
3416
3975
  "lastActivity"
3417
- ]
3976
+ ],
3977
+ "variant": "h3"
3418
3978
  }
3419
- ]
3979
+ ],
3980
+ "type": "stack",
3981
+ "gap": "sm"
3420
3982
  }
3421
- ]
3983
+ ],
3984
+ "type": "card"
3422
3985
  }
3423
3986
  ]
3424
3987
  }
@@ -3428,9 +3991,8 @@
3428
3991
  "type": "divider"
3429
3992
  },
3430
3993
  {
3994
+ "columns": 2.0,
3431
3995
  "type": "grid",
3432
- "columns": 2,
3433
- "gap": "md",
3434
3996
  "children": [
3435
3997
  {
3436
3998
  "type": "card",
@@ -3452,75 +4014,77 @@
3452
4014
  }
3453
4015
  ]
3454
4016
  }
3455
- ]
4017
+ ],
4018
+ "gap": "md"
3456
4019
  },
3457
4020
  {
4021
+ "title": "Trend",
3458
4022
  "type": "line-chart",
3459
4023
  "data": [
3460
4024
  {
3461
- "date": "Jan",
3462
- "value": 12
4025
+ "value": 12.0,
4026
+ "date": "Jan"
3463
4027
  },
3464
4028
  {
3465
4029
  "date": "Feb",
3466
- "value": 19
4030
+ "value": 19.0
3467
4031
  },
3468
4032
  {
3469
4033
  "date": "Mar",
3470
- "value": 15
4034
+ "value": 15.0
3471
4035
  },
3472
4036
  {
3473
4037
  "date": "Apr",
3474
- "value": 25
4038
+ "value": 25.0
3475
4039
  },
3476
4040
  {
3477
4041
  "date": "May",
3478
- "value": 22
4042
+ "value": 22.0
3479
4043
  },
3480
4044
  {
3481
- "date": "Jun",
3482
- "value": 30
4045
+ "value": 30.0,
4046
+ "date": "Jun"
3483
4047
  }
3484
4048
  ],
3485
- "xKey": "date",
3486
4049
  "yKey": "value",
3487
- "title": "Trend"
4050
+ "xKey": "date"
3488
4051
  },
3489
4052
  {
3490
4053
  "type": "chart-legend",
3491
4054
  "items": [
3492
4055
  {
3493
- "label": "Current",
3494
- "color": "primary"
4056
+ "color": "primary",
4057
+ "label": "Current"
3495
4058
  },
3496
4059
  {
3497
- "label": "Previous",
3498
- "color": "muted"
4060
+ "color": "muted",
4061
+ "label": "Previous"
3499
4062
  }
3500
4063
  ]
3501
4064
  },
3502
4065
  {
3503
- "type": "graph-view",
3504
4066
  "nodes": [
3505
4067
  {
3506
4068
  "id": "a",
4069
+ "y": 100.0,
3507
4070
  "label": "Start",
3508
- "x": 50,
3509
- "y": 100
4071
+ "x": 50.0
3510
4072
  },
3511
4073
  {
3512
4074
  "id": "b",
3513
4075
  "label": "Process",
3514
- "x": 200,
3515
- "y": 50
4076
+ "x": 200.0,
4077
+ "y": 50.0
3516
4078
  },
3517
4079
  {
3518
- "id": "c",
4080
+ "x": 350.0,
3519
4081
  "label": "End",
3520
- "x": 350,
3521
- "y": 100
4082
+ "y": 100.0,
4083
+ "id": "c"
3522
4084
  }
3523
4085
  ],
4086
+ "type": "graph-view",
4087
+ "width": 400.0,
3524
4088
  "edges": [
3525
4089
  {
3526
4090
  "from": "a",
@@ -3531,12 +4095,31 @@
3531
4095
  "to": "c"
3532
4096
  }
3533
4097
  ],
3534
- "width": 400,
3535
- "height": 200
4098
+ "height": 200.0
3536
4099
  }
3537
- ]
4100
+ ],
4101
+ "gap": "lg",
4102
+ "type": "stack"
3538
4103
  }
3539
- ]
4104
+ ],
4105
+ "type": "scaled-diagram"
4106
+ }
4107
+ ],
4108
+ "navItems": [
4109
+ {
4110
+ "label": "Courses",
4111
+ "href": "/courses",
4112
+ "icon": "book-open"
4113
+ },
4114
+ {
4115
+ "href": "/enroll",
4116
+ "label": "Enroll",
4117
+ "icon": "layout-list"
4118
+ },
4119
+ {
4120
+ "icon": "layout-list",
4121
+ "href": "/progress",
4122
+ "label": "Progress"
3540
4123
  }
3541
4124
  ]
3542
4125
  }
@@ -3550,14 +4133,19 @@
3550
4133
  "effects": [
3551
4134
  [
3552
4135
  "fetch",
3553
- "Progress"
4136
+ "Progress",
4137
+ {
4138
+ "emit": {
4139
+ "success": "ProgressLoaded",
4140
+ "failure": "ProgressLoadFailed"
4141
+ }
4142
+ }
3554
4143
  ],
3555
4144
  [
3556
4145
  "render-ui",
3557
4146
  "main",
3558
4147
  {
3559
4148
  "type": "dashboard-layout",
3560
- "appName": "LMS",
3561
4149
  "navItems": [
3562
4150
  {
3563
4151
  "label": "Courses",
@@ -3565,14 +4153,14 @@
3565
4153
  "icon": "book-open"
3566
4154
  },
3567
4155
  {
4156
+ "icon": "layout-list",
3568
4157
  "label": "Enroll",
3569
- "href": "/enroll",
3570
- "icon": "layout-list"
4158
+ "href": "/enroll"
3571
4159
  },
3572
4160
  {
3573
- "label": "Progress",
4161
+ "icon": "layout-list",
3574
4162
  "href": "/progress",
3575
- "icon": "layout-list"
4163
+ "label": "Progress"
3576
4164
  }
3577
4165
  ],
3578
4166
  "children": [
@@ -3580,16 +4168,16 @@
3580
4168
  "type": "scaled-diagram",
3581
4169
  "children": [
3582
4170
  {
4171
+ "gap": "lg",
3583
4172
  "type": "stack",
3584
4173
  "direction": "vertical",
3585
- "gap": "lg",
3586
4174
  "children": [
3587
4175
  {
3588
4176
  "type": "breadcrumb",
3589
4177
  "items": [
3590
4178
  {
3591
- "label": "Home",
3592
- "href": "/"
4179
+ "href": "/",
4180
+ "label": "Home"
3593
4181
  },
3594
4182
  {
3595
4183
  "label": "Progress"
@@ -3598,63 +4186,61 @@
3598
4186
  },
3599
4187
  {
3600
4188
  "type": "stack",
3601
- "direction": "horizontal",
3602
4189
  "gap": "md",
3603
4190
  "justify": "space-between",
3604
4191
  "children": [
3605
4192
  {
3606
- "type": "stack",
3607
- "direction": "horizontal",
3608
- "gap": "md",
3609
4193
  "children": [
3610
4194
  {
4195
+ "size": "lg",
3611
4196
  "type": "icon",
3612
- "name": "trending-up",
3613
- "size": "lg"
4197
+ "name": "trending-up"
3614
4198
  },
3615
4199
  {
3616
4200
  "type": "typography",
3617
4201
  "content": "Progress",
3618
4202
  "variant": "h2"
3619
4203
  }
3620
- ]
4204
+ ],
4205
+ "gap": "md",
4206
+ "direction": "horizontal",
4207
+ "type": "stack"
3621
4208
  },
3622
4209
  {
3623
- "type": "button",
4210
+ "icon": "refresh-cw",
4211
+ "variant": "secondary",
3624
4212
  "label": "Refresh",
3625
4213
  "event": "REFRESH",
3626
- "variant": "secondary",
3627
- "icon": "refresh-cw"
4214
+ "type": "button"
3628
4215
  }
3629
- ]
4216
+ ],
4217
+ "direction": "horizontal"
3630
4218
  },
3631
4219
  {
3632
4220
  "type": "divider"
3633
4221
  },
3634
4222
  {
3635
- "type": "box",
3636
4223
  "padding": "md",
3637
4224
  "children": [
3638
4225
  {
3639
- "type": "simple-grid",
3640
- "columns": 3,
4226
+ "columns": 3.0,
3641
4227
  "children": [
3642
4228
  {
3643
4229
  "type": "card",
3644
4230
  "children": [
3645
4231
  {
3646
4232
  "type": "stack",
3647
- "direction": "vertical",
3648
4233
  "gap": "sm",
4234
+ "direction": "vertical",
3649
4235
  "children": [
3650
4236
  {
3651
- "type": "typography",
3652
4237
  "variant": "caption",
4238
+ "type": "typography",
3653
4239
  "content": "CourseName"
3654
4240
  },
3655
4241
  {
3656
- "type": "typography",
3657
4242
  "variant": "h3",
4243
+ "type": "typography",
3658
4244
  "content": [
3659
4245
  "object/get",
3660
4246
  [
@@ -3669,7 +4255,6 @@
3669
4255
  ]
3670
4256
  },
3671
4257
  {
3672
- "type": "stat-display",
3673
4258
  "label": "LessonsCompleted",
3674
4259
  "value": [
3675
4260
  "object/get",
@@ -3678,11 +4263,10 @@
3678
4263
  "@entity"
3679
4264
  ],
3680
4265
  "lessonsCompleted"
3681
- ]
4266
+ ],
4267
+ "type": "stat-display"
3682
4268
  },
3683
4269
  {
3684
- "type": "stat-display",
3685
- "label": "TotalLessons",
3686
4270
  "value": [
3687
4271
  "object/get",
3688
4272
  [
@@ -3690,11 +4274,13 @@
3690
4274
  "@entity"
3691
4275
  ],
3692
4276
  "totalLessons"
3693
- ]
4277
+ ],
4278
+ "label": "TotalLessons",
4279
+ "type": "stat-display"
3694
4280
  },
3695
4281
  {
3696
- "type": "stat-display",
3697
4282
  "label": "PercentComplete",
4283
+ "type": "stat-display",
3698
4284
  "value": [
3699
4285
  "object/get",
3700
4286
  [
@@ -3708,18 +4294,14 @@
3708
4294
  "type": "card",
3709
4295
  "children": [
3710
4296
  {
3711
- "type": "stack",
3712
- "direction": "vertical",
3713
- "gap": "sm",
3714
4297
  "children": [
3715
4298
  {
3716
4299
  "type": "typography",
3717
- "variant": "caption",
3718
- "content": "LastActivity"
4300
+ "content": "LastActivity",
4301
+ "variant": "caption"
3719
4302
  },
3720
4303
  {
3721
4304
  "type": "typography",
3722
- "variant": "h3",
3723
4305
  "content": [
3724
4306
  "object/get",
3725
4307
  [
@@ -3727,30 +4309,35 @@
3727
4309
  "@entity"
3728
4310
  ],
3729
4311
  "lastActivity"
3730
- ]
4312
+ ],
4313
+ "variant": "h3"
3731
4314
  }
3732
- ]
4315
+ ],
4316
+ "direction": "vertical",
4317
+ "gap": "sm",
4318
+ "type": "stack"
3733
4319
  }
3734
4320
  ]
3735
4321
  }
3736
- ]
4322
+ ],
4323
+ "type": "simple-grid"
3737
4324
  }
3738
- ]
4325
+ ],
4326
+ "type": "box"
3739
4327
  },
3740
4328
  {
3741
4329
  "type": "divider"
3742
4330
  },
3743
4331
  {
3744
- "type": "grid",
3745
- "columns": 2,
3746
4332
  "gap": "md",
4333
+ "type": "grid",
3747
4334
  "children": [
3748
4335
  {
3749
4336
  "type": "card",
3750
4337
  "children": [
3751
4338
  {
3752
- "type": "typography",
3753
4339
  "variant": "caption",
4340
+ "type": "typography",
3754
4341
  "content": "Chart View"
3755
4342
  }
3756
4343
  ]
@@ -3759,45 +4346,46 @@
3759
4346
  "type": "card",
3760
4347
  "children": [
3761
4348
  {
3762
- "type": "typography",
3763
4349
  "variant": "caption",
3764
- "content": "Graph View"
4350
+ "content": "Graph View",
4351
+ "type": "typography"
3765
4352
  }
3766
4353
  ]
3767
4354
  }
3768
- ]
4355
+ ],
4356
+ "columns": 2.0
3769
4357
  },
3770
4358
  {
4359
+ "title": "Trend",
3771
4360
  "type": "line-chart",
4361
+ "xKey": "date",
4362
+ "yKey": "value",
3772
4363
  "data": [
3773
4364
  {
3774
4365
  "date": "Jan",
3775
- "value": 12
4366
+ "value": 12.0
3776
4367
  },
3777
4368
  {
3778
- "date": "Feb",
3779
- "value": 19
4369
+ "value": 19.0,
4370
+ "date": "Feb"
3780
4371
  },
3781
4372
  {
3782
4373
  "date": "Mar",
3783
- "value": 15
4374
+ "value": 15.0
3784
4375
  },
3785
4376
  {
3786
- "date": "Apr",
3787
- "value": 25
4377
+ "value": 25.0,
4378
+ "date": "Apr"
3788
4379
  },
3789
4380
  {
3790
4381
  "date": "May",
3791
- "value": 22
4382
+ "value": 22.0
3792
4383
  },
3793
4384
  {
3794
- "date": "Jun",
3795
- "value": 30
4385
+ "value": 30.0,
4386
+ "date": "Jun"
3796
4387
  }
3797
- ],
3798
- "xKey": "date",
3799
- "yKey": "value",
3800
- "title": "Trend"
4388
+ ]
3801
4389
  },
3802
4390
  {
3803
4391
  "type": "chart-legend",
@@ -3813,63 +4401,58 @@
3813
4401
  ]
3814
4402
  },
3815
4403
  {
4404
+ "width": 400.0,
4405
+ "height": 200.0,
3816
4406
  "type": "graph-view",
4407
+ "edges": [
4408
+ {
4409
+ "from": "a",
4410
+ "to": "b"
4411
+ },
4412
+ {
4413
+ "from": "b",
4414
+ "to": "c"
4415
+ }
4416
+ ],
3817
4417
  "nodes": [
3818
4418
  {
3819
- "id": "a",
3820
4419
  "label": "Start",
3821
- "x": 50,
3822
- "y": 100
4420
+ "x": 50.0,
4421
+ "y": 100.0,
4422
+ "id": "a"
3823
4423
  },
3824
4424
  {
3825
- "id": "b",
4425
+ "x": 200.0,
3826
4426
  "label": "Process",
3827
- "x": 200,
3828
- "y": 50
4427
+ "id": "b",
4428
+ "y": 50.0
3829
4429
  },
3830
4430
  {
4431
+ "y": 100.0,
3831
4432
  "id": "c",
3832
4433
  "label": "End",
3833
- "x": 350,
3834
- "y": 100
3835
- }
3836
- ],
3837
- "edges": [
3838
- {
3839
- "from": "a",
3840
- "to": "b"
3841
- },
3842
- {
3843
- "from": "b",
3844
- "to": "c"
4434
+ "x": 350.0
3845
4435
  }
3846
- ],
3847
- "width": 400,
3848
- "height": 200
4436
+ ]
3849
4437
  }
3850
4438
  ]
3851
4439
  }
3852
4440
  ]
3853
4441
  }
3854
- ]
4442
+ ],
4443
+ "appName": "LMS"
3855
4444
  }
3856
4445
  ]
3857
4446
  ]
3858
4447
  }
3859
4448
  ]
3860
4449
  },
3861
- "listens": [
3862
- {
3863
- "event": "COMPLETE_LESSON",
3864
- "triggers": "INIT",
3865
- "scope": "external"
3866
- }
3867
- ]
4450
+ "scope": "collection"
3868
4451
  }
3869
4452
  ],
3870
4453
  "pages": [
3871
4454
  {
3872
- "name": "ProgressPage",
4455
+ "name": "Progress",
3873
4456
  "path": "/progress",
3874
4457
  "traits": [
3875
4458
  {
@@ -3880,4 +4463,4 @@
3880
4463
  ]
3881
4464
  }
3882
4465
  ]
3883
- }
4466
+ }