@almadar/std 3.1.0 → 3.1.2

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 (256) hide show
  1. package/behaviors/exports/atoms/std-async.orb +2 -1
  2. package/behaviors/exports/atoms/std-browse.orb +2 -1
  3. package/behaviors/exports/atoms/std-cache-aside.orb +2 -1
  4. package/behaviors/exports/atoms/std-circuit-breaker.orb +2 -1
  5. package/behaviors/exports/atoms/std-collision.orb +2 -1
  6. package/behaviors/exports/atoms/std-combat-log.orb +2 -1
  7. package/behaviors/exports/atoms/std-combat.orb +2 -1
  8. package/behaviors/exports/atoms/std-confirmation.orb +2 -1
  9. package/behaviors/exports/atoms/std-dialogue-box.orb +2 -1
  10. package/behaviors/exports/atoms/std-display.orb +2 -1
  11. package/behaviors/exports/atoms/std-drawer.orb +2 -1
  12. package/behaviors/exports/atoms/std-filter.orb +2 -1
  13. package/behaviors/exports/atoms/std-game-audio.orb +2 -1
  14. package/behaviors/exports/atoms/std-game-hud.orb +2 -1
  15. package/behaviors/exports/atoms/std-game-menu.orb +2 -1
  16. package/behaviors/exports/atoms/std-game-over-screen.orb +2 -1
  17. package/behaviors/exports/atoms/std-gameflow.orb +2 -1
  18. package/behaviors/exports/atoms/std-input.orb +2 -1
  19. package/behaviors/exports/atoms/std-inventory-panel.orb +2 -1
  20. package/behaviors/exports/atoms/std-isometric-canvas.orb +2 -1
  21. package/behaviors/exports/atoms/std-loading.orb +2 -1
  22. package/behaviors/exports/atoms/std-modal.orb +2 -1
  23. package/behaviors/exports/atoms/std-movement.orb +2 -1
  24. package/behaviors/exports/atoms/std-notification.orb +2 -1
  25. package/behaviors/exports/atoms/std-overworld.orb +2 -1
  26. package/behaviors/exports/atoms/std-pagination.orb +2 -1
  27. package/behaviors/exports/atoms/std-physics2d.orb +2 -1
  28. package/behaviors/exports/atoms/std-platformer-canvas.orb +2 -1
  29. package/behaviors/exports/atoms/std-quest.orb +2 -1
  30. package/behaviors/exports/atoms/std-rate-limiter.orb +2 -1
  31. package/behaviors/exports/atoms/std-score-board.orb +2 -1
  32. package/behaviors/exports/atoms/std-score.orb +2 -1
  33. package/behaviors/exports/atoms/std-search.orb +2 -1
  34. package/behaviors/exports/atoms/std-selection.orb +2 -1
  35. package/behaviors/exports/atoms/std-simulation-canvas.orb +2 -1
  36. package/behaviors/exports/atoms/std-sort.orb +2 -1
  37. package/behaviors/exports/atoms/std-sprite.orb +2 -1
  38. package/behaviors/exports/atoms/std-tabs.orb +2 -1
  39. package/behaviors/exports/atoms/std-timer.orb +2 -1
  40. package/behaviors/exports/atoms/std-undo.orb +2 -1
  41. package/behaviors/exports/atoms/std-wizard.orb +2 -1
  42. package/behaviors/exports/molecules/std-builder-game.orb +2 -1
  43. package/behaviors/exports/molecules/std-cart.orb +2 -1
  44. package/behaviors/exports/molecules/std-classifier-game.orb +2 -1
  45. package/behaviors/exports/molecules/std-debugger-game.orb +2 -1
  46. package/behaviors/exports/molecules/std-detail.orb +2 -1
  47. package/behaviors/exports/molecules/std-event-handler-game.orb +2 -1
  48. package/behaviors/exports/molecules/std-geospatial.orb +2 -1
  49. package/behaviors/exports/molecules/std-inventory.orb +2 -1
  50. package/behaviors/exports/molecules/std-list.orb +2 -1
  51. package/behaviors/exports/molecules/std-messaging.orb +2 -1
  52. package/behaviors/exports/molecules/std-negotiator-game.orb +2 -1
  53. package/behaviors/exports/molecules/std-platformer-game.orb +2 -1
  54. package/behaviors/exports/molecules/std-puzzle-game.orb +2 -1
  55. package/behaviors/exports/molecules/std-sequencer-game.orb +2 -1
  56. package/behaviors/exports/molecules/std-simulator-game.orb +2 -1
  57. package/behaviors/exports/molecules/std-turn-based-battle.orb +2 -1
  58. package/behaviors/exports/organisms/std-api-gateway.orb +2 -1
  59. package/behaviors/exports/organisms/std-arcade-game.orb +2 -1
  60. package/behaviors/exports/organisms/std-booking-system.orb +2 -1
  61. package/behaviors/exports/organisms/std-cicd-pipeline.orb +2 -1
  62. package/behaviors/exports/organisms/std-cms.orb +2 -1
  63. package/behaviors/exports/organisms/std-coding-academy.orb +2 -1
  64. package/behaviors/exports/organisms/std-crm.orb +2 -1
  65. package/behaviors/exports/organisms/std-devops-dashboard.orb +2 -1
  66. package/behaviors/exports/organisms/std-ecommerce.orb +2 -1
  67. package/behaviors/exports/organisms/std-finance-tracker.orb +2 -1
  68. package/behaviors/exports/organisms/std-healthcare.orb +2 -1
  69. package/behaviors/exports/organisms/std-helpdesk.orb +2 -1
  70. package/behaviors/exports/organisms/std-hr-portal.orb +2 -1
  71. package/behaviors/exports/organisms/std-iot-dashboard.orb +2 -1
  72. package/behaviors/exports/organisms/std-lms.orb +2 -1
  73. package/behaviors/exports/organisms/std-logic-training.orb +2 -1
  74. package/behaviors/exports/organisms/std-platformer-app.orb +2 -1
  75. package/behaviors/exports/organisms/std-project-manager.orb +2 -1
  76. package/behaviors/exports/organisms/std-puzzle-app.orb +2 -1
  77. package/behaviors/exports/organisms/std-realtime-chat.orb +2 -1
  78. package/behaviors/exports/organisms/std-rpg-game.orb +2 -1
  79. package/behaviors/exports/organisms/std-social-feed.orb +2 -1
  80. package/behaviors/exports/organisms/std-stem-lab.orb +2 -1
  81. package/behaviors/exports/organisms/std-strategy-game.orb +2 -1
  82. package/behaviors/exports/organisms/std-trading-dashboard.orb +2 -1
  83. package/dist/behaviors/exports/atoms/std-async.orb +421 -0
  84. package/dist/behaviors/exports/atoms/std-browse.orb +174 -0
  85. package/dist/behaviors/exports/atoms/std-cache-aside.orb +882 -0
  86. package/dist/behaviors/exports/atoms/std-circuit-breaker.orb +502 -0
  87. package/dist/behaviors/exports/atoms/std-collision.orb +617 -0
  88. package/dist/behaviors/exports/atoms/std-combat-log.orb +146 -0
  89. package/dist/behaviors/exports/atoms/std-combat.orb +411 -0
  90. package/dist/behaviors/exports/atoms/std-confirmation.orb +283 -0
  91. package/dist/behaviors/exports/atoms/std-dialogue-box.orb +239 -0
  92. package/dist/behaviors/exports/atoms/std-display.orb +843 -0
  93. package/dist/behaviors/exports/atoms/std-drawer.orb +317 -0
  94. package/dist/behaviors/exports/atoms/std-filter.orb +443 -0
  95. package/dist/behaviors/exports/atoms/std-game-audio.orb +114 -0
  96. package/dist/behaviors/exports/atoms/std-game-hud.orb +152 -0
  97. package/dist/behaviors/exports/atoms/std-game-menu.orb +212 -0
  98. package/dist/behaviors/exports/atoms/std-game-over-screen.orb +196 -0
  99. package/dist/behaviors/exports/atoms/std-gameflow.orb +319 -0
  100. package/dist/behaviors/exports/atoms/std-input.orb +630 -0
  101. package/dist/behaviors/exports/atoms/std-inventory-panel.orb +256 -0
  102. package/dist/behaviors/exports/atoms/std-isometric-canvas.orb +632 -0
  103. package/dist/behaviors/exports/atoms/std-loading.orb +512 -0
  104. package/dist/behaviors/exports/atoms/std-modal.orb +271 -0
  105. package/dist/behaviors/exports/atoms/std-movement.orb +1038 -0
  106. package/dist/behaviors/exports/atoms/std-notification.orb +419 -0
  107. package/dist/behaviors/exports/atoms/std-overworld.orb +484 -0
  108. package/dist/behaviors/exports/atoms/std-pagination.orb +332 -0
  109. package/dist/behaviors/exports/atoms/std-physics2d.orb +420 -0
  110. package/dist/behaviors/exports/atoms/std-platformer-canvas.orb +258 -0
  111. package/dist/behaviors/exports/atoms/std-quest.orb +981 -0
  112. package/dist/behaviors/exports/atoms/std-rate-limiter.orb +639 -0
  113. package/dist/behaviors/exports/atoms/std-score-board.orb +239 -0
  114. package/dist/behaviors/exports/atoms/std-score.orb +467 -0
  115. package/dist/behaviors/exports/atoms/std-search.orb +374 -0
  116. package/dist/behaviors/exports/atoms/std-selection.orb +760 -0
  117. package/dist/behaviors/exports/atoms/std-simulation-canvas.orb +184 -0
  118. package/dist/behaviors/exports/atoms/std-sort.orb +579 -0
  119. package/dist/behaviors/exports/atoms/std-sprite.orb +157 -0
  120. package/dist/behaviors/exports/atoms/std-tabs.orb +275 -0
  121. package/dist/behaviors/exports/atoms/std-timer.orb +1031 -0
  122. package/dist/behaviors/exports/atoms/std-undo.orb +695 -0
  123. package/dist/behaviors/exports/atoms/std-wizard.orb +667 -0
  124. package/dist/behaviors/exports/molecules/std-builder-game.orb +184 -0
  125. package/dist/behaviors/exports/molecules/std-cart.orb +592 -0
  126. package/dist/behaviors/exports/molecules/std-classifier-game.orb +184 -0
  127. package/dist/behaviors/exports/molecules/std-debugger-game.orb +184 -0
  128. package/dist/behaviors/exports/molecules/std-detail.orb +590 -0
  129. package/dist/behaviors/exports/molecules/std-event-handler-game.orb +184 -0
  130. package/dist/behaviors/exports/molecules/std-geospatial.orb +650 -0
  131. package/dist/behaviors/exports/molecules/std-inventory.orb +854 -0
  132. package/dist/behaviors/exports/molecules/std-list.orb +955 -0
  133. package/dist/behaviors/exports/molecules/std-messaging.orb +586 -0
  134. package/dist/behaviors/exports/molecules/std-negotiator-game.orb +184 -0
  135. package/dist/behaviors/exports/molecules/std-platformer-game.orb +497 -0
  136. package/dist/behaviors/exports/molecules/std-puzzle-game.orb +528 -0
  137. package/dist/behaviors/exports/molecules/std-sequencer-game.orb +184 -0
  138. package/dist/behaviors/exports/molecules/std-simulator-game.orb +184 -0
  139. package/dist/behaviors/exports/molecules/std-turn-based-battle.orb +444 -0
  140. package/dist/behaviors/exports/organisms/std-api-gateway.orb +2297 -0
  141. package/dist/behaviors/exports/organisms/std-arcade-game.orb +834 -0
  142. package/dist/behaviors/exports/organisms/std-booking-system.orb +3978 -0
  143. package/dist/behaviors/exports/organisms/std-cicd-pipeline.orb +2215 -0
  144. package/dist/behaviors/exports/organisms/std-cms.orb +2645 -0
  145. package/dist/behaviors/exports/organisms/std-coding-academy.orb +1395 -0
  146. package/dist/behaviors/exports/organisms/std-crm.orb +3542 -0
  147. package/dist/behaviors/exports/organisms/std-devops-dashboard.orb +3135 -0
  148. package/dist/behaviors/exports/organisms/std-ecommerce.orb +3744 -0
  149. package/dist/behaviors/exports/organisms/std-finance-tracker.orb +2386 -0
  150. package/dist/behaviors/exports/organisms/std-healthcare.orb +4680 -0
  151. package/dist/behaviors/exports/organisms/std-helpdesk.orb +2565 -0
  152. package/dist/behaviors/exports/organisms/std-hr-portal.orb +4030 -0
  153. package/dist/behaviors/exports/organisms/std-iot-dashboard.orb +2298 -0
  154. package/dist/behaviors/exports/organisms/std-lms.orb +2855 -0
  155. package/dist/behaviors/exports/organisms/std-logic-training.orb +599 -0
  156. package/dist/behaviors/exports/organisms/std-platformer-app.orb +1570 -0
  157. package/dist/behaviors/exports/organisms/std-project-manager.orb +3022 -0
  158. package/dist/behaviors/exports/organisms/std-puzzle-app.orb +744 -0
  159. package/dist/behaviors/exports/organisms/std-realtime-chat.orb +2381 -0
  160. package/dist/behaviors/exports/organisms/std-rpg-game.orb +2805 -0
  161. package/dist/behaviors/exports/organisms/std-social-feed.orb +1222 -0
  162. package/dist/behaviors/exports/organisms/std-stem-lab.orb +1211 -0
  163. package/dist/behaviors/exports/organisms/std-strategy-game.orb +1762 -0
  164. package/dist/behaviors/exports/organisms/std-trading-dashboard.orb +2218 -0
  165. package/dist/behaviors/exports-reader.d.ts +2 -0
  166. package/dist/behaviors/exports-reader.js +5 -3
  167. package/dist/behaviors/exports-reader.js.map +1 -1
  168. package/dist/behaviors/index.js +5 -3
  169. package/dist/behaviors/index.js.map +1 -1
  170. package/dist/exports/atoms/std-async.orb +421 -0
  171. package/dist/exports/atoms/std-browse.orb +174 -0
  172. package/dist/exports/atoms/std-cache-aside.orb +882 -0
  173. package/dist/exports/atoms/std-circuit-breaker.orb +502 -0
  174. package/dist/exports/atoms/std-collision.orb +617 -0
  175. package/dist/exports/atoms/std-combat-log.orb +146 -0
  176. package/dist/exports/atoms/std-combat.orb +411 -0
  177. package/dist/exports/atoms/std-confirmation.orb +283 -0
  178. package/dist/exports/atoms/std-dialogue-box.orb +239 -0
  179. package/dist/exports/atoms/std-display.orb +843 -0
  180. package/dist/exports/atoms/std-drawer.orb +317 -0
  181. package/dist/exports/atoms/std-filter.orb +443 -0
  182. package/dist/exports/atoms/std-game-audio.orb +114 -0
  183. package/dist/exports/atoms/std-game-hud.orb +152 -0
  184. package/dist/exports/atoms/std-game-menu.orb +212 -0
  185. package/dist/exports/atoms/std-game-over-screen.orb +196 -0
  186. package/dist/exports/atoms/std-gameflow.orb +319 -0
  187. package/dist/exports/atoms/std-input.orb +630 -0
  188. package/dist/exports/atoms/std-inventory-panel.orb +256 -0
  189. package/dist/exports/atoms/std-isometric-canvas.orb +632 -0
  190. package/dist/exports/atoms/std-loading.orb +512 -0
  191. package/dist/exports/atoms/std-modal.orb +271 -0
  192. package/dist/exports/atoms/std-movement.orb +1038 -0
  193. package/dist/exports/atoms/std-notification.orb +419 -0
  194. package/dist/exports/atoms/std-overworld.orb +484 -0
  195. package/dist/exports/atoms/std-pagination.orb +332 -0
  196. package/dist/exports/atoms/std-physics2d.orb +420 -0
  197. package/dist/exports/atoms/std-platformer-canvas.orb +258 -0
  198. package/dist/exports/atoms/std-quest.orb +981 -0
  199. package/dist/exports/atoms/std-rate-limiter.orb +639 -0
  200. package/dist/exports/atoms/std-score-board.orb +239 -0
  201. package/dist/exports/atoms/std-score.orb +467 -0
  202. package/dist/exports/atoms/std-search.orb +374 -0
  203. package/dist/exports/atoms/std-selection.orb +760 -0
  204. package/dist/exports/atoms/std-simulation-canvas.orb +184 -0
  205. package/dist/exports/atoms/std-sort.orb +579 -0
  206. package/dist/exports/atoms/std-sprite.orb +157 -0
  207. package/dist/exports/atoms/std-tabs.orb +275 -0
  208. package/dist/exports/atoms/std-timer.orb +1031 -0
  209. package/dist/exports/atoms/std-undo.orb +695 -0
  210. package/dist/exports/atoms/std-wizard.orb +667 -0
  211. package/dist/exports/molecules/std-builder-game.orb +184 -0
  212. package/dist/exports/molecules/std-cart.orb +592 -0
  213. package/dist/exports/molecules/std-classifier-game.orb +184 -0
  214. package/dist/exports/molecules/std-debugger-game.orb +184 -0
  215. package/dist/exports/molecules/std-detail.orb +590 -0
  216. package/dist/exports/molecules/std-event-handler-game.orb +184 -0
  217. package/dist/exports/molecules/std-geospatial.orb +650 -0
  218. package/dist/exports/molecules/std-inventory.orb +854 -0
  219. package/dist/exports/molecules/std-list.orb +955 -0
  220. package/dist/exports/molecules/std-messaging.orb +586 -0
  221. package/dist/exports/molecules/std-negotiator-game.orb +184 -0
  222. package/dist/exports/molecules/std-platformer-game.orb +497 -0
  223. package/dist/exports/molecules/std-puzzle-game.orb +528 -0
  224. package/dist/exports/molecules/std-sequencer-game.orb +184 -0
  225. package/dist/exports/molecules/std-simulator-game.orb +184 -0
  226. package/dist/exports/molecules/std-turn-based-battle.orb +444 -0
  227. package/dist/exports/organisms/std-api-gateway.orb +2297 -0
  228. package/dist/exports/organisms/std-arcade-game.orb +834 -0
  229. package/dist/exports/organisms/std-booking-system.orb +3978 -0
  230. package/dist/exports/organisms/std-cicd-pipeline.orb +2215 -0
  231. package/dist/exports/organisms/std-cms.orb +2645 -0
  232. package/dist/exports/organisms/std-coding-academy.orb +1395 -0
  233. package/dist/exports/organisms/std-crm.orb +3542 -0
  234. package/dist/exports/organisms/std-devops-dashboard.orb +3135 -0
  235. package/dist/exports/organisms/std-ecommerce.orb +3744 -0
  236. package/dist/exports/organisms/std-finance-tracker.orb +2386 -0
  237. package/dist/exports/organisms/std-healthcare.orb +4680 -0
  238. package/dist/exports/organisms/std-helpdesk.orb +2565 -0
  239. package/dist/exports/organisms/std-hr-portal.orb +4030 -0
  240. package/dist/exports/organisms/std-iot-dashboard.orb +2298 -0
  241. package/dist/exports/organisms/std-lms.orb +2855 -0
  242. package/dist/exports/organisms/std-logic-training.orb +599 -0
  243. package/dist/exports/organisms/std-platformer-app.orb +1570 -0
  244. package/dist/exports/organisms/std-project-manager.orb +3022 -0
  245. package/dist/exports/organisms/std-puzzle-app.orb +744 -0
  246. package/dist/exports/organisms/std-realtime-chat.orb +2381 -0
  247. package/dist/exports/organisms/std-rpg-game.orb +2805 -0
  248. package/dist/exports/organisms/std-social-feed.orb +1222 -0
  249. package/dist/exports/organisms/std-stem-lab.orb +1211 -0
  250. package/dist/exports/organisms/std-strategy-game.orb +1762 -0
  251. package/dist/exports/organisms/std-trading-dashboard.orb +2218 -0
  252. package/dist/index.js +5 -3
  253. package/dist/index.js.map +1 -1
  254. package/package.json +1 -1
  255. package/behaviors/exports/atoms/std-game-canvas-2d.orb +0 -135
  256. package/behaviors/exports/atoms/std-game-canvas-3d.orb +0 -224
@@ -0,0 +1,1395 @@
1
+ {
2
+ "name": "Coding Academy",
3
+ "version": "1.0.0",
4
+ "orbitals": [
5
+ {
6
+ "name": "SeqChallengeOrbital",
7
+ "entity": {
8
+ "name": "SeqChallenge",
9
+ "persistence": "runtime",
10
+ "fields": [
11
+ {
12
+ "name": "id",
13
+ "type": "string",
14
+ "required": true
15
+ },
16
+ {
17
+ "name": "title",
18
+ "type": "string",
19
+ "required": true
20
+ },
21
+ {
22
+ "name": "difficulty",
23
+ "type": "string",
24
+ "default": "easy"
25
+ },
26
+ {
27
+ "name": "score",
28
+ "type": "number",
29
+ "default": 0
30
+ },
31
+ {
32
+ "name": "completed",
33
+ "type": "boolean",
34
+ "default": false
35
+ }
36
+ ]
37
+ },
38
+ "traits": [
39
+ {
40
+ "name": "SeqChallengeSequencerGame",
41
+ "linkedEntity": "SeqChallenge",
42
+ "category": "interaction",
43
+ "stateMachine": {
44
+ "states": [
45
+ {
46
+ "name": "menu",
47
+ "isInitial": true
48
+ },
49
+ {
50
+ "name": "playing"
51
+ },
52
+ {
53
+ "name": "complete"
54
+ }
55
+ ],
56
+ "events": [
57
+ {
58
+ "key": "INIT",
59
+ "name": "Initialize"
60
+ },
61
+ {
62
+ "key": "START",
63
+ "name": "Start"
64
+ },
65
+ {
66
+ "key": "COMPLETE",
67
+ "name": "Complete"
68
+ },
69
+ {
70
+ "key": "RESTART",
71
+ "name": "Restart"
72
+ },
73
+ {
74
+ "key": "NAVIGATE",
75
+ "name": "Navigate"
76
+ }
77
+ ],
78
+ "transitions": [
79
+ {
80
+ "from": "menu",
81
+ "to": "menu",
82
+ "event": "INIT",
83
+ "effects": [
84
+ [
85
+ "fetch",
86
+ "SeqChallenge"
87
+ ],
88
+ [
89
+ "render-ui",
90
+ "main",
91
+ {
92
+ "type": "game-menu",
93
+ "title": "Sequencer Challenge",
94
+ "menuItems": [
95
+ {
96
+ "label": "Start",
97
+ "event": "START",
98
+ "variant": "primary"
99
+ }
100
+ ]
101
+ }
102
+ ]
103
+ ]
104
+ },
105
+ {
106
+ "from": "menu",
107
+ "to": "playing",
108
+ "event": "START",
109
+ "effects": [
110
+ [
111
+ "render-ui",
112
+ "main",
113
+ {
114
+ "type": "sequencer-board",
115
+ "entity": "SeqChallenge",
116
+ "completeEvent": "COMPLETE"
117
+ }
118
+ ]
119
+ ]
120
+ },
121
+ {
122
+ "from": "menu",
123
+ "to": "menu",
124
+ "event": "NAVIGATE",
125
+ "effects": []
126
+ },
127
+ {
128
+ "from": "playing",
129
+ "to": "complete",
130
+ "event": "COMPLETE",
131
+ "effects": [
132
+ [
133
+ "render-ui",
134
+ "main",
135
+ {
136
+ "type": "game-over-screen",
137
+ "title": "Well Done!",
138
+ "menuItems": [
139
+ {
140
+ "label": "Play Again",
141
+ "event": "RESTART",
142
+ "variant": "primary"
143
+ }
144
+ ]
145
+ }
146
+ ]
147
+ ]
148
+ },
149
+ {
150
+ "from": "complete",
151
+ "to": "menu",
152
+ "event": "RESTART",
153
+ "effects": [
154
+ [
155
+ "render-ui",
156
+ "main",
157
+ {
158
+ "type": "game-menu",
159
+ "title": "Sequencer Challenge",
160
+ "menuItems": [
161
+ {
162
+ "label": "Start",
163
+ "event": "START",
164
+ "variant": "primary"
165
+ }
166
+ ]
167
+ }
168
+ ]
169
+ ]
170
+ }
171
+ ]
172
+ }
173
+ }
174
+ ],
175
+ "pages": [
176
+ {
177
+ "name": "SequencerPage",
178
+ "path": "/sequencer",
179
+ "isInitial": true,
180
+ "traits": [
181
+ {
182
+ "ref": "SeqChallengeSequencerGame"
183
+ }
184
+ ]
185
+ }
186
+ ]
187
+ },
188
+ {
189
+ "name": "BuildChallengeOrbital",
190
+ "entity": {
191
+ "name": "BuildChallenge",
192
+ "persistence": "runtime",
193
+ "fields": [
194
+ {
195
+ "name": "id",
196
+ "type": "string",
197
+ "required": true
198
+ },
199
+ {
200
+ "name": "title",
201
+ "type": "string",
202
+ "required": true
203
+ },
204
+ {
205
+ "name": "difficulty",
206
+ "type": "string",
207
+ "default": "easy"
208
+ },
209
+ {
210
+ "name": "score",
211
+ "type": "number",
212
+ "default": 0
213
+ },
214
+ {
215
+ "name": "completed",
216
+ "type": "boolean",
217
+ "default": false
218
+ }
219
+ ]
220
+ },
221
+ "traits": [
222
+ {
223
+ "name": "BuildChallengeBuilderGame",
224
+ "linkedEntity": "BuildChallenge",
225
+ "category": "interaction",
226
+ "stateMachine": {
227
+ "states": [
228
+ {
229
+ "name": "menu",
230
+ "isInitial": true
231
+ },
232
+ {
233
+ "name": "playing"
234
+ },
235
+ {
236
+ "name": "complete"
237
+ }
238
+ ],
239
+ "events": [
240
+ {
241
+ "key": "INIT",
242
+ "name": "Initialize"
243
+ },
244
+ {
245
+ "key": "START",
246
+ "name": "Start"
247
+ },
248
+ {
249
+ "key": "COMPLETE",
250
+ "name": "Complete"
251
+ },
252
+ {
253
+ "key": "RESTART",
254
+ "name": "Restart"
255
+ },
256
+ {
257
+ "key": "NAVIGATE",
258
+ "name": "Navigate"
259
+ }
260
+ ],
261
+ "transitions": [
262
+ {
263
+ "from": "menu",
264
+ "to": "menu",
265
+ "event": "INIT",
266
+ "effects": [
267
+ [
268
+ "fetch",
269
+ "BuildChallenge"
270
+ ],
271
+ [
272
+ "render-ui",
273
+ "main",
274
+ {
275
+ "type": "game-menu",
276
+ "title": "Builder Challenge",
277
+ "menuItems": [
278
+ {
279
+ "label": "Start",
280
+ "event": "START",
281
+ "variant": "primary"
282
+ }
283
+ ]
284
+ }
285
+ ]
286
+ ]
287
+ },
288
+ {
289
+ "from": "menu",
290
+ "to": "playing",
291
+ "event": "START",
292
+ "effects": [
293
+ [
294
+ "render-ui",
295
+ "main",
296
+ {
297
+ "type": "builder-board",
298
+ "entity": "BuildChallenge",
299
+ "completeEvent": "COMPLETE"
300
+ }
301
+ ]
302
+ ]
303
+ },
304
+ {
305
+ "from": "menu",
306
+ "to": "menu",
307
+ "event": "NAVIGATE",
308
+ "effects": []
309
+ },
310
+ {
311
+ "from": "playing",
312
+ "to": "complete",
313
+ "event": "COMPLETE",
314
+ "effects": [
315
+ [
316
+ "render-ui",
317
+ "main",
318
+ {
319
+ "type": "game-over-screen",
320
+ "title": "Well Done!",
321
+ "menuItems": [
322
+ {
323
+ "label": "Play Again",
324
+ "event": "RESTART",
325
+ "variant": "primary"
326
+ }
327
+ ]
328
+ }
329
+ ]
330
+ ]
331
+ },
332
+ {
333
+ "from": "complete",
334
+ "to": "menu",
335
+ "event": "RESTART",
336
+ "effects": [
337
+ [
338
+ "render-ui",
339
+ "main",
340
+ {
341
+ "type": "game-menu",
342
+ "title": "Builder Challenge",
343
+ "menuItems": [
344
+ {
345
+ "label": "Start",
346
+ "event": "START",
347
+ "variant": "primary"
348
+ }
349
+ ]
350
+ }
351
+ ]
352
+ ]
353
+ }
354
+ ]
355
+ }
356
+ }
357
+ ],
358
+ "pages": [
359
+ {
360
+ "name": "BuilderPage",
361
+ "path": "/builder",
362
+ "traits": [
363
+ {
364
+ "ref": "BuildChallengeBuilderGame"
365
+ }
366
+ ]
367
+ }
368
+ ]
369
+ },
370
+ {
371
+ "name": "EventChallengeOrbital",
372
+ "entity": {
373
+ "name": "EventChallenge",
374
+ "persistence": "runtime",
375
+ "fields": [
376
+ {
377
+ "name": "id",
378
+ "type": "string",
379
+ "required": true
380
+ },
381
+ {
382
+ "name": "title",
383
+ "type": "string",
384
+ "required": true
385
+ },
386
+ {
387
+ "name": "difficulty",
388
+ "type": "string",
389
+ "default": "easy"
390
+ },
391
+ {
392
+ "name": "score",
393
+ "type": "number",
394
+ "default": 0
395
+ },
396
+ {
397
+ "name": "completed",
398
+ "type": "boolean",
399
+ "default": false
400
+ }
401
+ ]
402
+ },
403
+ "traits": [
404
+ {
405
+ "name": "EventChallengeEventHandlerGame",
406
+ "linkedEntity": "EventChallenge",
407
+ "category": "interaction",
408
+ "stateMachine": {
409
+ "states": [
410
+ {
411
+ "name": "menu",
412
+ "isInitial": true
413
+ },
414
+ {
415
+ "name": "playing"
416
+ },
417
+ {
418
+ "name": "complete"
419
+ }
420
+ ],
421
+ "events": [
422
+ {
423
+ "key": "INIT",
424
+ "name": "Initialize"
425
+ },
426
+ {
427
+ "key": "START",
428
+ "name": "Start"
429
+ },
430
+ {
431
+ "key": "COMPLETE",
432
+ "name": "Complete"
433
+ },
434
+ {
435
+ "key": "RESTART",
436
+ "name": "Restart"
437
+ },
438
+ {
439
+ "key": "NAVIGATE",
440
+ "name": "Navigate"
441
+ }
442
+ ],
443
+ "transitions": [
444
+ {
445
+ "from": "menu",
446
+ "to": "menu",
447
+ "event": "INIT",
448
+ "effects": [
449
+ [
450
+ "fetch",
451
+ "EventChallenge"
452
+ ],
453
+ [
454
+ "render-ui",
455
+ "main",
456
+ {
457
+ "type": "game-menu",
458
+ "title": "Event Handler Challenge",
459
+ "menuItems": [
460
+ {
461
+ "label": "Start",
462
+ "event": "START",
463
+ "variant": "primary"
464
+ }
465
+ ]
466
+ }
467
+ ]
468
+ ]
469
+ },
470
+ {
471
+ "from": "menu",
472
+ "to": "playing",
473
+ "event": "START",
474
+ "effects": [
475
+ [
476
+ "render-ui",
477
+ "main",
478
+ {
479
+ "type": "event-handler-board",
480
+ "entity": "EventChallenge",
481
+ "completeEvent": "COMPLETE"
482
+ }
483
+ ]
484
+ ]
485
+ },
486
+ {
487
+ "from": "menu",
488
+ "to": "menu",
489
+ "event": "NAVIGATE",
490
+ "effects": []
491
+ },
492
+ {
493
+ "from": "playing",
494
+ "to": "complete",
495
+ "event": "COMPLETE",
496
+ "effects": [
497
+ [
498
+ "render-ui",
499
+ "main",
500
+ {
501
+ "type": "game-over-screen",
502
+ "title": "Well Done!",
503
+ "menuItems": [
504
+ {
505
+ "label": "Play Again",
506
+ "event": "RESTART",
507
+ "variant": "primary"
508
+ }
509
+ ]
510
+ }
511
+ ]
512
+ ]
513
+ },
514
+ {
515
+ "from": "complete",
516
+ "to": "menu",
517
+ "event": "RESTART",
518
+ "effects": [
519
+ [
520
+ "render-ui",
521
+ "main",
522
+ {
523
+ "type": "game-menu",
524
+ "title": "Event Handler Challenge",
525
+ "menuItems": [
526
+ {
527
+ "label": "Start",
528
+ "event": "START",
529
+ "variant": "primary"
530
+ }
531
+ ]
532
+ }
533
+ ]
534
+ ]
535
+ }
536
+ ]
537
+ }
538
+ }
539
+ ],
540
+ "pages": [
541
+ {
542
+ "name": "EventsPage",
543
+ "path": "/events",
544
+ "traits": [
545
+ {
546
+ "ref": "EventChallengeEventHandlerGame"
547
+ }
548
+ ]
549
+ }
550
+ ]
551
+ },
552
+ {
553
+ "name": "StudentProgressOrbital",
554
+ "entity": {
555
+ "name": "StudentProgress",
556
+ "persistence": "runtime",
557
+ "fields": [
558
+ {
559
+ "name": "id",
560
+ "type": "string",
561
+ "required": true
562
+ },
563
+ {
564
+ "name": "totalLessons",
565
+ "type": "number",
566
+ "default": 0
567
+ },
568
+ {
569
+ "name": "completedLessons",
570
+ "type": "number",
571
+ "default": 0
572
+ },
573
+ {
574
+ "name": "averageScore",
575
+ "type": "number",
576
+ "default": 0
577
+ },
578
+ {
579
+ "name": "streak",
580
+ "type": "number",
581
+ "default": 0
582
+ }
583
+ ]
584
+ },
585
+ "traits": [
586
+ {
587
+ "name": "StudentProgressDisplay",
588
+ "linkedEntity": "StudentProgress",
589
+ "category": "interaction",
590
+ "stateMachine": {
591
+ "states": [
592
+ {
593
+ "name": "loading",
594
+ "isInitial": true
595
+ },
596
+ {
597
+ "name": "displaying"
598
+ },
599
+ {
600
+ "name": "refreshing"
601
+ }
602
+ ],
603
+ "events": [
604
+ {
605
+ "key": "INIT",
606
+ "name": "Initialize"
607
+ },
608
+ {
609
+ "key": "LOADED",
610
+ "name": "Loaded"
611
+ },
612
+ {
613
+ "key": "REFRESH",
614
+ "name": "Refresh"
615
+ },
616
+ {
617
+ "key": "REFRESHED",
618
+ "name": "Refreshed"
619
+ }
620
+ ],
621
+ "transitions": [
622
+ {
623
+ "from": "loading",
624
+ "to": "displaying",
625
+ "event": "INIT",
626
+ "effects": [
627
+ [
628
+ "fetch",
629
+ "StudentProgress"
630
+ ],
631
+ [
632
+ "render-ui",
633
+ "main",
634
+ {
635
+ "type": "stack",
636
+ "direction": "vertical",
637
+ "gap": "lg",
638
+ "children": [
639
+ {
640
+ "type": "stack",
641
+ "direction": "horizontal",
642
+ "gap": "md",
643
+ "justify": "space-between",
644
+ "children": [
645
+ {
646
+ "type": "stack",
647
+ "direction": "horizontal",
648
+ "gap": "md",
649
+ "children": [
650
+ {
651
+ "type": "icon",
652
+ "name": "trending-up",
653
+ "size": "lg"
654
+ },
655
+ {
656
+ "type": "typography",
657
+ "content": "Progress",
658
+ "variant": "h2"
659
+ }
660
+ ]
661
+ },
662
+ {
663
+ "type": "button",
664
+ "label": "Refresh",
665
+ "event": "REFRESH",
666
+ "variant": "secondary",
667
+ "icon": "refresh-cw"
668
+ }
669
+ ]
670
+ },
671
+ {
672
+ "type": "divider"
673
+ },
674
+ {
675
+ "type": "simple-grid",
676
+ "columns": 3,
677
+ "children": [
678
+ {
679
+ "type": "card",
680
+ "children": [
681
+ {
682
+ "type": "stack",
683
+ "direction": "vertical",
684
+ "gap": "sm",
685
+ "children": [
686
+ {
687
+ "type": "typography",
688
+ "variant": "caption",
689
+ "content": "TotalLessons"
690
+ },
691
+ {
692
+ "type": "typography",
693
+ "variant": "h3",
694
+ "content": "@entity.totalLessons"
695
+ }
696
+ ]
697
+ }
698
+ ]
699
+ },
700
+ {
701
+ "type": "card",
702
+ "children": [
703
+ {
704
+ "type": "stack",
705
+ "direction": "vertical",
706
+ "gap": "sm",
707
+ "children": [
708
+ {
709
+ "type": "typography",
710
+ "variant": "caption",
711
+ "content": "CompletedLessons"
712
+ },
713
+ {
714
+ "type": "typography",
715
+ "variant": "h3",
716
+ "content": "@entity.completedLessons"
717
+ }
718
+ ]
719
+ }
720
+ ]
721
+ },
722
+ {
723
+ "type": "card",
724
+ "children": [
725
+ {
726
+ "type": "stack",
727
+ "direction": "vertical",
728
+ "gap": "sm",
729
+ "children": [
730
+ {
731
+ "type": "typography",
732
+ "variant": "caption",
733
+ "content": "AverageScore"
734
+ },
735
+ {
736
+ "type": "typography",
737
+ "variant": "h3",
738
+ "content": "@entity.averageScore"
739
+ }
740
+ ]
741
+ }
742
+ ]
743
+ },
744
+ {
745
+ "type": "card",
746
+ "children": [
747
+ {
748
+ "type": "stack",
749
+ "direction": "vertical",
750
+ "gap": "sm",
751
+ "children": [
752
+ {
753
+ "type": "typography",
754
+ "variant": "caption",
755
+ "content": "Streak"
756
+ },
757
+ {
758
+ "type": "typography",
759
+ "variant": "h3",
760
+ "content": "@entity.streak"
761
+ }
762
+ ]
763
+ }
764
+ ]
765
+ }
766
+ ]
767
+ }
768
+ ]
769
+ }
770
+ ]
771
+ ]
772
+ },
773
+ {
774
+ "from": "loading",
775
+ "to": "displaying",
776
+ "event": "LOADED",
777
+ "effects": [
778
+ [
779
+ "fetch",
780
+ "StudentProgress"
781
+ ],
782
+ [
783
+ "render-ui",
784
+ "main",
785
+ {
786
+ "type": "stack",
787
+ "direction": "vertical",
788
+ "gap": "lg",
789
+ "children": [
790
+ {
791
+ "type": "stack",
792
+ "direction": "horizontal",
793
+ "gap": "md",
794
+ "justify": "space-between",
795
+ "children": [
796
+ {
797
+ "type": "stack",
798
+ "direction": "horizontal",
799
+ "gap": "md",
800
+ "children": [
801
+ {
802
+ "type": "icon",
803
+ "name": "trending-up",
804
+ "size": "lg"
805
+ },
806
+ {
807
+ "type": "typography",
808
+ "content": "Progress",
809
+ "variant": "h2"
810
+ }
811
+ ]
812
+ },
813
+ {
814
+ "type": "button",
815
+ "label": "Refresh",
816
+ "event": "REFRESH",
817
+ "variant": "secondary",
818
+ "icon": "refresh-cw"
819
+ }
820
+ ]
821
+ },
822
+ {
823
+ "type": "divider"
824
+ },
825
+ {
826
+ "type": "simple-grid",
827
+ "columns": 3,
828
+ "children": [
829
+ {
830
+ "type": "card",
831
+ "children": [
832
+ {
833
+ "type": "stack",
834
+ "direction": "vertical",
835
+ "gap": "sm",
836
+ "children": [
837
+ {
838
+ "type": "typography",
839
+ "variant": "caption",
840
+ "content": "TotalLessons"
841
+ },
842
+ {
843
+ "type": "typography",
844
+ "variant": "h3",
845
+ "content": "@entity.totalLessons"
846
+ }
847
+ ]
848
+ }
849
+ ]
850
+ },
851
+ {
852
+ "type": "card",
853
+ "children": [
854
+ {
855
+ "type": "stack",
856
+ "direction": "vertical",
857
+ "gap": "sm",
858
+ "children": [
859
+ {
860
+ "type": "typography",
861
+ "variant": "caption",
862
+ "content": "CompletedLessons"
863
+ },
864
+ {
865
+ "type": "typography",
866
+ "variant": "h3",
867
+ "content": "@entity.completedLessons"
868
+ }
869
+ ]
870
+ }
871
+ ]
872
+ },
873
+ {
874
+ "type": "card",
875
+ "children": [
876
+ {
877
+ "type": "stack",
878
+ "direction": "vertical",
879
+ "gap": "sm",
880
+ "children": [
881
+ {
882
+ "type": "typography",
883
+ "variant": "caption",
884
+ "content": "AverageScore"
885
+ },
886
+ {
887
+ "type": "typography",
888
+ "variant": "h3",
889
+ "content": "@entity.averageScore"
890
+ }
891
+ ]
892
+ }
893
+ ]
894
+ },
895
+ {
896
+ "type": "card",
897
+ "children": [
898
+ {
899
+ "type": "stack",
900
+ "direction": "vertical",
901
+ "gap": "sm",
902
+ "children": [
903
+ {
904
+ "type": "typography",
905
+ "variant": "caption",
906
+ "content": "Streak"
907
+ },
908
+ {
909
+ "type": "typography",
910
+ "variant": "h3",
911
+ "content": "@entity.streak"
912
+ }
913
+ ]
914
+ }
915
+ ]
916
+ }
917
+ ]
918
+ }
919
+ ]
920
+ }
921
+ ]
922
+ ]
923
+ },
924
+ {
925
+ "from": "displaying",
926
+ "to": "displaying",
927
+ "event": "INIT",
928
+ "effects": [
929
+ [
930
+ "fetch",
931
+ "StudentProgress"
932
+ ],
933
+ [
934
+ "render-ui",
935
+ "main",
936
+ {
937
+ "type": "stack",
938
+ "direction": "vertical",
939
+ "gap": "lg",
940
+ "children": [
941
+ {
942
+ "type": "stack",
943
+ "direction": "horizontal",
944
+ "gap": "md",
945
+ "justify": "space-between",
946
+ "children": [
947
+ {
948
+ "type": "stack",
949
+ "direction": "horizontal",
950
+ "gap": "md",
951
+ "children": [
952
+ {
953
+ "type": "icon",
954
+ "name": "trending-up",
955
+ "size": "lg"
956
+ },
957
+ {
958
+ "type": "typography",
959
+ "content": "Progress",
960
+ "variant": "h2"
961
+ }
962
+ ]
963
+ },
964
+ {
965
+ "type": "button",
966
+ "label": "Refresh",
967
+ "event": "REFRESH",
968
+ "variant": "secondary",
969
+ "icon": "refresh-cw"
970
+ }
971
+ ]
972
+ },
973
+ {
974
+ "type": "divider"
975
+ },
976
+ {
977
+ "type": "simple-grid",
978
+ "columns": 3,
979
+ "children": [
980
+ {
981
+ "type": "card",
982
+ "children": [
983
+ {
984
+ "type": "stack",
985
+ "direction": "vertical",
986
+ "gap": "sm",
987
+ "children": [
988
+ {
989
+ "type": "typography",
990
+ "variant": "caption",
991
+ "content": "TotalLessons"
992
+ },
993
+ {
994
+ "type": "typography",
995
+ "variant": "h3",
996
+ "content": "@entity.totalLessons"
997
+ }
998
+ ]
999
+ }
1000
+ ]
1001
+ },
1002
+ {
1003
+ "type": "card",
1004
+ "children": [
1005
+ {
1006
+ "type": "stack",
1007
+ "direction": "vertical",
1008
+ "gap": "sm",
1009
+ "children": [
1010
+ {
1011
+ "type": "typography",
1012
+ "variant": "caption",
1013
+ "content": "CompletedLessons"
1014
+ },
1015
+ {
1016
+ "type": "typography",
1017
+ "variant": "h3",
1018
+ "content": "@entity.completedLessons"
1019
+ }
1020
+ ]
1021
+ }
1022
+ ]
1023
+ },
1024
+ {
1025
+ "type": "card",
1026
+ "children": [
1027
+ {
1028
+ "type": "stack",
1029
+ "direction": "vertical",
1030
+ "gap": "sm",
1031
+ "children": [
1032
+ {
1033
+ "type": "typography",
1034
+ "variant": "caption",
1035
+ "content": "AverageScore"
1036
+ },
1037
+ {
1038
+ "type": "typography",
1039
+ "variant": "h3",
1040
+ "content": "@entity.averageScore"
1041
+ }
1042
+ ]
1043
+ }
1044
+ ]
1045
+ },
1046
+ {
1047
+ "type": "card",
1048
+ "children": [
1049
+ {
1050
+ "type": "stack",
1051
+ "direction": "vertical",
1052
+ "gap": "sm",
1053
+ "children": [
1054
+ {
1055
+ "type": "typography",
1056
+ "variant": "caption",
1057
+ "content": "Streak"
1058
+ },
1059
+ {
1060
+ "type": "typography",
1061
+ "variant": "h3",
1062
+ "content": "@entity.streak"
1063
+ }
1064
+ ]
1065
+ }
1066
+ ]
1067
+ }
1068
+ ]
1069
+ }
1070
+ ]
1071
+ }
1072
+ ]
1073
+ ]
1074
+ },
1075
+ {
1076
+ "from": "displaying",
1077
+ "to": "refreshing",
1078
+ "event": "REFRESH",
1079
+ "effects": [
1080
+ [
1081
+ "fetch",
1082
+ "StudentProgress"
1083
+ ],
1084
+ [
1085
+ "render-ui",
1086
+ "main",
1087
+ {
1088
+ "type": "stack",
1089
+ "direction": "vertical",
1090
+ "gap": "lg",
1091
+ "children": [
1092
+ {
1093
+ "type": "stack",
1094
+ "direction": "horizontal",
1095
+ "gap": "md",
1096
+ "justify": "space-between",
1097
+ "children": [
1098
+ {
1099
+ "type": "stack",
1100
+ "direction": "horizontal",
1101
+ "gap": "md",
1102
+ "children": [
1103
+ {
1104
+ "type": "icon",
1105
+ "name": "trending-up",
1106
+ "size": "lg"
1107
+ },
1108
+ {
1109
+ "type": "typography",
1110
+ "content": "Progress",
1111
+ "variant": "h2"
1112
+ }
1113
+ ]
1114
+ },
1115
+ {
1116
+ "type": "button",
1117
+ "label": "Refresh",
1118
+ "event": "REFRESH",
1119
+ "variant": "secondary",
1120
+ "icon": "refresh-cw"
1121
+ }
1122
+ ]
1123
+ },
1124
+ {
1125
+ "type": "divider"
1126
+ },
1127
+ {
1128
+ "type": "simple-grid",
1129
+ "columns": 3,
1130
+ "children": [
1131
+ {
1132
+ "type": "card",
1133
+ "children": [
1134
+ {
1135
+ "type": "stack",
1136
+ "direction": "vertical",
1137
+ "gap": "sm",
1138
+ "children": [
1139
+ {
1140
+ "type": "typography",
1141
+ "variant": "caption",
1142
+ "content": "TotalLessons"
1143
+ },
1144
+ {
1145
+ "type": "typography",
1146
+ "variant": "h3",
1147
+ "content": "@entity.totalLessons"
1148
+ }
1149
+ ]
1150
+ }
1151
+ ]
1152
+ },
1153
+ {
1154
+ "type": "card",
1155
+ "children": [
1156
+ {
1157
+ "type": "stack",
1158
+ "direction": "vertical",
1159
+ "gap": "sm",
1160
+ "children": [
1161
+ {
1162
+ "type": "typography",
1163
+ "variant": "caption",
1164
+ "content": "CompletedLessons"
1165
+ },
1166
+ {
1167
+ "type": "typography",
1168
+ "variant": "h3",
1169
+ "content": "@entity.completedLessons"
1170
+ }
1171
+ ]
1172
+ }
1173
+ ]
1174
+ },
1175
+ {
1176
+ "type": "card",
1177
+ "children": [
1178
+ {
1179
+ "type": "stack",
1180
+ "direction": "vertical",
1181
+ "gap": "sm",
1182
+ "children": [
1183
+ {
1184
+ "type": "typography",
1185
+ "variant": "caption",
1186
+ "content": "AverageScore"
1187
+ },
1188
+ {
1189
+ "type": "typography",
1190
+ "variant": "h3",
1191
+ "content": "@entity.averageScore"
1192
+ }
1193
+ ]
1194
+ }
1195
+ ]
1196
+ },
1197
+ {
1198
+ "type": "card",
1199
+ "children": [
1200
+ {
1201
+ "type": "stack",
1202
+ "direction": "vertical",
1203
+ "gap": "sm",
1204
+ "children": [
1205
+ {
1206
+ "type": "typography",
1207
+ "variant": "caption",
1208
+ "content": "Streak"
1209
+ },
1210
+ {
1211
+ "type": "typography",
1212
+ "variant": "h3",
1213
+ "content": "@entity.streak"
1214
+ }
1215
+ ]
1216
+ }
1217
+ ]
1218
+ }
1219
+ ]
1220
+ }
1221
+ ]
1222
+ }
1223
+ ]
1224
+ ]
1225
+ },
1226
+ {
1227
+ "from": "refreshing",
1228
+ "to": "displaying",
1229
+ "event": "REFRESHED",
1230
+ "effects": [
1231
+ [
1232
+ "fetch",
1233
+ "StudentProgress"
1234
+ ],
1235
+ [
1236
+ "render-ui",
1237
+ "main",
1238
+ {
1239
+ "type": "stack",
1240
+ "direction": "vertical",
1241
+ "gap": "lg",
1242
+ "children": [
1243
+ {
1244
+ "type": "stack",
1245
+ "direction": "horizontal",
1246
+ "gap": "md",
1247
+ "justify": "space-between",
1248
+ "children": [
1249
+ {
1250
+ "type": "stack",
1251
+ "direction": "horizontal",
1252
+ "gap": "md",
1253
+ "children": [
1254
+ {
1255
+ "type": "icon",
1256
+ "name": "trending-up",
1257
+ "size": "lg"
1258
+ },
1259
+ {
1260
+ "type": "typography",
1261
+ "content": "Progress",
1262
+ "variant": "h2"
1263
+ }
1264
+ ]
1265
+ },
1266
+ {
1267
+ "type": "button",
1268
+ "label": "Refresh",
1269
+ "event": "REFRESH",
1270
+ "variant": "secondary",
1271
+ "icon": "refresh-cw"
1272
+ }
1273
+ ]
1274
+ },
1275
+ {
1276
+ "type": "divider"
1277
+ },
1278
+ {
1279
+ "type": "simple-grid",
1280
+ "columns": 3,
1281
+ "children": [
1282
+ {
1283
+ "type": "card",
1284
+ "children": [
1285
+ {
1286
+ "type": "stack",
1287
+ "direction": "vertical",
1288
+ "gap": "sm",
1289
+ "children": [
1290
+ {
1291
+ "type": "typography",
1292
+ "variant": "caption",
1293
+ "content": "TotalLessons"
1294
+ },
1295
+ {
1296
+ "type": "typography",
1297
+ "variant": "h3",
1298
+ "content": "@entity.totalLessons"
1299
+ }
1300
+ ]
1301
+ }
1302
+ ]
1303
+ },
1304
+ {
1305
+ "type": "card",
1306
+ "children": [
1307
+ {
1308
+ "type": "stack",
1309
+ "direction": "vertical",
1310
+ "gap": "sm",
1311
+ "children": [
1312
+ {
1313
+ "type": "typography",
1314
+ "variant": "caption",
1315
+ "content": "CompletedLessons"
1316
+ },
1317
+ {
1318
+ "type": "typography",
1319
+ "variant": "h3",
1320
+ "content": "@entity.completedLessons"
1321
+ }
1322
+ ]
1323
+ }
1324
+ ]
1325
+ },
1326
+ {
1327
+ "type": "card",
1328
+ "children": [
1329
+ {
1330
+ "type": "stack",
1331
+ "direction": "vertical",
1332
+ "gap": "sm",
1333
+ "children": [
1334
+ {
1335
+ "type": "typography",
1336
+ "variant": "caption",
1337
+ "content": "AverageScore"
1338
+ },
1339
+ {
1340
+ "type": "typography",
1341
+ "variant": "h3",
1342
+ "content": "@entity.averageScore"
1343
+ }
1344
+ ]
1345
+ }
1346
+ ]
1347
+ },
1348
+ {
1349
+ "type": "card",
1350
+ "children": [
1351
+ {
1352
+ "type": "stack",
1353
+ "direction": "vertical",
1354
+ "gap": "sm",
1355
+ "children": [
1356
+ {
1357
+ "type": "typography",
1358
+ "variant": "caption",
1359
+ "content": "Streak"
1360
+ },
1361
+ {
1362
+ "type": "typography",
1363
+ "variant": "h3",
1364
+ "content": "@entity.streak"
1365
+ }
1366
+ ]
1367
+ }
1368
+ ]
1369
+ }
1370
+ ]
1371
+ }
1372
+ ]
1373
+ }
1374
+ ]
1375
+ ]
1376
+ }
1377
+ ]
1378
+ }
1379
+ }
1380
+ ],
1381
+ "pages": [
1382
+ {
1383
+ "name": "ProgressPage",
1384
+ "path": "/progress",
1385
+ "traits": [
1386
+ {
1387
+ "ref": "StudentProgressDisplay"
1388
+ }
1389
+ ]
1390
+ }
1391
+ ]
1392
+ }
1393
+ ],
1394
+ "description": "Coding academy organism. Composes: stdSequencerGame(SeqChallenge) + stdBuilderGame(BuildChallenge) + stdEventHandlerGame(EventChallenge) + stdDisplay(StudentProgress) Pages: /sequencer (initial), /builder, /events, /progress"
1395
+ }