@almadar/std 3.1.0 → 3.1.1

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 (176) hide show
  1. package/dist/behaviors/exports/atoms/std-async.orb +420 -0
  2. package/dist/behaviors/exports/atoms/std-browse.orb +173 -0
  3. package/dist/behaviors/exports/atoms/std-cache-aside.orb +881 -0
  4. package/dist/behaviors/exports/atoms/std-circuit-breaker.orb +501 -0
  5. package/dist/behaviors/exports/atoms/std-collision.orb +616 -0
  6. package/dist/behaviors/exports/atoms/std-combat-log.orb +145 -0
  7. package/dist/behaviors/exports/atoms/std-combat.orb +410 -0
  8. package/dist/behaviors/exports/atoms/std-confirmation.orb +282 -0
  9. package/dist/behaviors/exports/atoms/std-dialogue-box.orb +238 -0
  10. package/dist/behaviors/exports/atoms/std-display.orb +842 -0
  11. package/dist/behaviors/exports/atoms/std-drawer.orb +316 -0
  12. package/dist/behaviors/exports/atoms/std-filter.orb +442 -0
  13. package/dist/behaviors/exports/atoms/std-game-audio.orb +113 -0
  14. package/dist/behaviors/exports/atoms/std-game-canvas-2d.orb +135 -0
  15. package/dist/behaviors/exports/atoms/std-game-canvas-3d.orb +224 -0
  16. package/dist/behaviors/exports/atoms/std-game-hud.orb +151 -0
  17. package/dist/behaviors/exports/atoms/std-game-menu.orb +211 -0
  18. package/dist/behaviors/exports/atoms/std-game-over-screen.orb +195 -0
  19. package/dist/behaviors/exports/atoms/std-gameflow.orb +318 -0
  20. package/dist/behaviors/exports/atoms/std-input.orb +629 -0
  21. package/dist/behaviors/exports/atoms/std-inventory-panel.orb +255 -0
  22. package/dist/behaviors/exports/atoms/std-isometric-canvas.orb +631 -0
  23. package/dist/behaviors/exports/atoms/std-loading.orb +511 -0
  24. package/dist/behaviors/exports/atoms/std-modal.orb +270 -0
  25. package/dist/behaviors/exports/atoms/std-movement.orb +1037 -0
  26. package/dist/behaviors/exports/atoms/std-notification.orb +418 -0
  27. package/dist/behaviors/exports/atoms/std-overworld.orb +483 -0
  28. package/dist/behaviors/exports/atoms/std-pagination.orb +331 -0
  29. package/dist/behaviors/exports/atoms/std-physics2d.orb +419 -0
  30. package/dist/behaviors/exports/atoms/std-platformer-canvas.orb +257 -0
  31. package/dist/behaviors/exports/atoms/std-quest.orb +980 -0
  32. package/dist/behaviors/exports/atoms/std-rate-limiter.orb +638 -0
  33. package/dist/behaviors/exports/atoms/std-score-board.orb +238 -0
  34. package/dist/behaviors/exports/atoms/std-score.orb +466 -0
  35. package/dist/behaviors/exports/atoms/std-search.orb +373 -0
  36. package/dist/behaviors/exports/atoms/std-selection.orb +759 -0
  37. package/dist/behaviors/exports/atoms/std-simulation-canvas.orb +183 -0
  38. package/dist/behaviors/exports/atoms/std-sort.orb +578 -0
  39. package/dist/behaviors/exports/atoms/std-sprite.orb +156 -0
  40. package/dist/behaviors/exports/atoms/std-tabs.orb +274 -0
  41. package/dist/behaviors/exports/atoms/std-timer.orb +1030 -0
  42. package/dist/behaviors/exports/atoms/std-undo.orb +694 -0
  43. package/dist/behaviors/exports/atoms/std-wizard.orb +666 -0
  44. package/dist/behaviors/exports/molecules/std-builder-game.orb +183 -0
  45. package/dist/behaviors/exports/molecules/std-cart.orb +591 -0
  46. package/dist/behaviors/exports/molecules/std-classifier-game.orb +183 -0
  47. package/dist/behaviors/exports/molecules/std-debugger-game.orb +183 -0
  48. package/dist/behaviors/exports/molecules/std-detail.orb +589 -0
  49. package/dist/behaviors/exports/molecules/std-event-handler-game.orb +183 -0
  50. package/dist/behaviors/exports/molecules/std-geospatial.orb +649 -0
  51. package/dist/behaviors/exports/molecules/std-inventory.orb +853 -0
  52. package/dist/behaviors/exports/molecules/std-list.orb +954 -0
  53. package/dist/behaviors/exports/molecules/std-messaging.orb +585 -0
  54. package/dist/behaviors/exports/molecules/std-negotiator-game.orb +183 -0
  55. package/dist/behaviors/exports/molecules/std-platformer-game.orb +496 -0
  56. package/dist/behaviors/exports/molecules/std-puzzle-game.orb +527 -0
  57. package/dist/behaviors/exports/molecules/std-sequencer-game.orb +183 -0
  58. package/dist/behaviors/exports/molecules/std-simulator-game.orb +183 -0
  59. package/dist/behaviors/exports/molecules/std-turn-based-battle.orb +443 -0
  60. package/dist/behaviors/exports/organisms/std-api-gateway.orb +2296 -0
  61. package/dist/behaviors/exports/organisms/std-arcade-game.orb +833 -0
  62. package/dist/behaviors/exports/organisms/std-booking-system.orb +3977 -0
  63. package/dist/behaviors/exports/organisms/std-cicd-pipeline.orb +2214 -0
  64. package/dist/behaviors/exports/organisms/std-cms.orb +2644 -0
  65. package/dist/behaviors/exports/organisms/std-coding-academy.orb +1394 -0
  66. package/dist/behaviors/exports/organisms/std-crm.orb +3541 -0
  67. package/dist/behaviors/exports/organisms/std-devops-dashboard.orb +3134 -0
  68. package/dist/behaviors/exports/organisms/std-ecommerce.orb +3743 -0
  69. package/dist/behaviors/exports/organisms/std-finance-tracker.orb +2385 -0
  70. package/dist/behaviors/exports/organisms/std-healthcare.orb +4679 -0
  71. package/dist/behaviors/exports/organisms/std-helpdesk.orb +2564 -0
  72. package/dist/behaviors/exports/organisms/std-hr-portal.orb +4029 -0
  73. package/dist/behaviors/exports/organisms/std-iot-dashboard.orb +2297 -0
  74. package/dist/behaviors/exports/organisms/std-lms.orb +2854 -0
  75. package/dist/behaviors/exports/organisms/std-logic-training.orb +598 -0
  76. package/dist/behaviors/exports/organisms/std-platformer-app.orb +1569 -0
  77. package/dist/behaviors/exports/organisms/std-project-manager.orb +3021 -0
  78. package/dist/behaviors/exports/organisms/std-puzzle-app.orb +743 -0
  79. package/dist/behaviors/exports/organisms/std-realtime-chat.orb +2380 -0
  80. package/dist/behaviors/exports/organisms/std-rpg-game.orb +2804 -0
  81. package/dist/behaviors/exports/organisms/std-social-feed.orb +1221 -0
  82. package/dist/behaviors/exports/organisms/std-stem-lab.orb +1210 -0
  83. package/dist/behaviors/exports/organisms/std-strategy-game.orb +1761 -0
  84. package/dist/behaviors/exports/organisms/std-trading-dashboard.orb +2217 -0
  85. package/dist/behaviors/exports-reader.d.ts +2 -0
  86. package/dist/behaviors/exports-reader.js +5 -3
  87. package/dist/behaviors/exports-reader.js.map +1 -1
  88. package/dist/behaviors/index.js +5 -3
  89. package/dist/behaviors/index.js.map +1 -1
  90. package/dist/exports/atoms/std-async.orb +420 -0
  91. package/dist/exports/atoms/std-browse.orb +173 -0
  92. package/dist/exports/atoms/std-cache-aside.orb +881 -0
  93. package/dist/exports/atoms/std-circuit-breaker.orb +501 -0
  94. package/dist/exports/atoms/std-collision.orb +616 -0
  95. package/dist/exports/atoms/std-combat-log.orb +145 -0
  96. package/dist/exports/atoms/std-combat.orb +410 -0
  97. package/dist/exports/atoms/std-confirmation.orb +282 -0
  98. package/dist/exports/atoms/std-dialogue-box.orb +238 -0
  99. package/dist/exports/atoms/std-display.orb +842 -0
  100. package/dist/exports/atoms/std-drawer.orb +316 -0
  101. package/dist/exports/atoms/std-filter.orb +442 -0
  102. package/dist/exports/atoms/std-game-audio.orb +113 -0
  103. package/dist/exports/atoms/std-game-canvas-2d.orb +135 -0
  104. package/dist/exports/atoms/std-game-canvas-3d.orb +224 -0
  105. package/dist/exports/atoms/std-game-hud.orb +151 -0
  106. package/dist/exports/atoms/std-game-menu.orb +211 -0
  107. package/dist/exports/atoms/std-game-over-screen.orb +195 -0
  108. package/dist/exports/atoms/std-gameflow.orb +318 -0
  109. package/dist/exports/atoms/std-input.orb +629 -0
  110. package/dist/exports/atoms/std-inventory-panel.orb +255 -0
  111. package/dist/exports/atoms/std-isometric-canvas.orb +631 -0
  112. package/dist/exports/atoms/std-loading.orb +511 -0
  113. package/dist/exports/atoms/std-modal.orb +270 -0
  114. package/dist/exports/atoms/std-movement.orb +1037 -0
  115. package/dist/exports/atoms/std-notification.orb +418 -0
  116. package/dist/exports/atoms/std-overworld.orb +483 -0
  117. package/dist/exports/atoms/std-pagination.orb +331 -0
  118. package/dist/exports/atoms/std-physics2d.orb +419 -0
  119. package/dist/exports/atoms/std-platformer-canvas.orb +257 -0
  120. package/dist/exports/atoms/std-quest.orb +980 -0
  121. package/dist/exports/atoms/std-rate-limiter.orb +638 -0
  122. package/dist/exports/atoms/std-score-board.orb +238 -0
  123. package/dist/exports/atoms/std-score.orb +466 -0
  124. package/dist/exports/atoms/std-search.orb +373 -0
  125. package/dist/exports/atoms/std-selection.orb +759 -0
  126. package/dist/exports/atoms/std-simulation-canvas.orb +183 -0
  127. package/dist/exports/atoms/std-sort.orb +578 -0
  128. package/dist/exports/atoms/std-sprite.orb +156 -0
  129. package/dist/exports/atoms/std-tabs.orb +274 -0
  130. package/dist/exports/atoms/std-timer.orb +1030 -0
  131. package/dist/exports/atoms/std-undo.orb +694 -0
  132. package/dist/exports/atoms/std-wizard.orb +666 -0
  133. package/dist/exports/molecules/std-builder-game.orb +183 -0
  134. package/dist/exports/molecules/std-cart.orb +591 -0
  135. package/dist/exports/molecules/std-classifier-game.orb +183 -0
  136. package/dist/exports/molecules/std-debugger-game.orb +183 -0
  137. package/dist/exports/molecules/std-detail.orb +589 -0
  138. package/dist/exports/molecules/std-event-handler-game.orb +183 -0
  139. package/dist/exports/molecules/std-geospatial.orb +649 -0
  140. package/dist/exports/molecules/std-inventory.orb +853 -0
  141. package/dist/exports/molecules/std-list.orb +954 -0
  142. package/dist/exports/molecules/std-messaging.orb +585 -0
  143. package/dist/exports/molecules/std-negotiator-game.orb +183 -0
  144. package/dist/exports/molecules/std-platformer-game.orb +496 -0
  145. package/dist/exports/molecules/std-puzzle-game.orb +527 -0
  146. package/dist/exports/molecules/std-sequencer-game.orb +183 -0
  147. package/dist/exports/molecules/std-simulator-game.orb +183 -0
  148. package/dist/exports/molecules/std-turn-based-battle.orb +443 -0
  149. package/dist/exports/organisms/std-api-gateway.orb +2296 -0
  150. package/dist/exports/organisms/std-arcade-game.orb +833 -0
  151. package/dist/exports/organisms/std-booking-system.orb +3977 -0
  152. package/dist/exports/organisms/std-cicd-pipeline.orb +2214 -0
  153. package/dist/exports/organisms/std-cms.orb +2644 -0
  154. package/dist/exports/organisms/std-coding-academy.orb +1394 -0
  155. package/dist/exports/organisms/std-crm.orb +3541 -0
  156. package/dist/exports/organisms/std-devops-dashboard.orb +3134 -0
  157. package/dist/exports/organisms/std-ecommerce.orb +3743 -0
  158. package/dist/exports/organisms/std-finance-tracker.orb +2385 -0
  159. package/dist/exports/organisms/std-healthcare.orb +4679 -0
  160. package/dist/exports/organisms/std-helpdesk.orb +2564 -0
  161. package/dist/exports/organisms/std-hr-portal.orb +4029 -0
  162. package/dist/exports/organisms/std-iot-dashboard.orb +2297 -0
  163. package/dist/exports/organisms/std-lms.orb +2854 -0
  164. package/dist/exports/organisms/std-logic-training.orb +598 -0
  165. package/dist/exports/organisms/std-platformer-app.orb +1569 -0
  166. package/dist/exports/organisms/std-project-manager.orb +3021 -0
  167. package/dist/exports/organisms/std-puzzle-app.orb +743 -0
  168. package/dist/exports/organisms/std-realtime-chat.orb +2380 -0
  169. package/dist/exports/organisms/std-rpg-game.orb +2804 -0
  170. package/dist/exports/organisms/std-social-feed.orb +1221 -0
  171. package/dist/exports/organisms/std-stem-lab.orb +1210 -0
  172. package/dist/exports/organisms/std-strategy-game.orb +1761 -0
  173. package/dist/exports/organisms/std-trading-dashboard.orb +2217 -0
  174. package/dist/index.js +5 -3
  175. package/dist/index.js.map +1 -1
  176. package/package.json +1 -1
@@ -0,0 +1,2564 @@
1
+ {
2
+ "name": "Helpdesk",
3
+ "version": "1.0.0",
4
+ "orbitals": [
5
+ {
6
+ "name": "TicketOrbital",
7
+ "entity": {
8
+ "name": "Ticket",
9
+ "persistence": "runtime",
10
+ "fields": [
11
+ {
12
+ "name": "id",
13
+ "type": "string",
14
+ "required": true
15
+ },
16
+ {
17
+ "name": "subject",
18
+ "type": "string",
19
+ "default": ""
20
+ },
21
+ {
22
+ "name": "description",
23
+ "type": "string",
24
+ "default": ""
25
+ },
26
+ {
27
+ "name": "priority",
28
+ "type": "string",
29
+ "default": "medium"
30
+ },
31
+ {
32
+ "name": "status",
33
+ "type": "string",
34
+ "default": "open"
35
+ },
36
+ {
37
+ "name": "assignee",
38
+ "type": "string",
39
+ "default": ""
40
+ }
41
+ ]
42
+ },
43
+ "traits": [
44
+ {
45
+ "name": "TicketBrowse",
46
+ "linkedEntity": "Ticket",
47
+ "category": "interaction",
48
+ "listens": [
49
+ {
50
+ "event": "TICKET_CREATED",
51
+ "triggers": "TICKET_CREATED"
52
+ },
53
+ {
54
+ "event": "TICKET_UPDATED",
55
+ "triggers": "TICKET_UPDATED"
56
+ }
57
+ ],
58
+ "stateMachine": {
59
+ "states": [
60
+ {
61
+ "name": "browsing",
62
+ "isInitial": true
63
+ },
64
+ {
65
+ "name": "deleting"
66
+ }
67
+ ],
68
+ "events": [
69
+ {
70
+ "key": "INIT",
71
+ "name": "Initialize"
72
+ },
73
+ {
74
+ "key": "CREATE",
75
+ "name": "CREATE"
76
+ },
77
+ {
78
+ "key": "VIEW",
79
+ "name": "VIEW",
80
+ "payload": [
81
+ {
82
+ "name": "id",
83
+ "type": "string",
84
+ "required": true
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "key": "EDIT",
90
+ "name": "EDIT",
91
+ "payload": [
92
+ {
93
+ "name": "id",
94
+ "type": "string",
95
+ "required": true
96
+ }
97
+ ]
98
+ },
99
+ {
100
+ "key": "DELETE",
101
+ "name": "DELETE",
102
+ "payload": [
103
+ {
104
+ "name": "id",
105
+ "type": "string",
106
+ "required": true
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "key": "TICKET_CREATED",
112
+ "name": "TICKET_CREATED",
113
+ "payload": [
114
+ {
115
+ "name": "data",
116
+ "type": "object",
117
+ "required": true
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ "key": "TICKET_UPDATED",
123
+ "name": "TICKET_UPDATED",
124
+ "payload": [
125
+ {
126
+ "name": "data",
127
+ "type": "object",
128
+ "required": true
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "key": "CONFIRM_DELETE",
134
+ "name": "Confirm Delete"
135
+ },
136
+ {
137
+ "key": "CANCEL",
138
+ "name": "Cancel"
139
+ },
140
+ {
141
+ "key": "CLOSE",
142
+ "name": "Close"
143
+ }
144
+ ],
145
+ "transitions": [
146
+ {
147
+ "from": "browsing",
148
+ "to": "browsing",
149
+ "event": "INIT",
150
+ "effects": [
151
+ [
152
+ "fetch",
153
+ "Ticket"
154
+ ],
155
+ [
156
+ "render-ui",
157
+ "main",
158
+ {
159
+ "type": "stack",
160
+ "direction": "vertical",
161
+ "gap": "lg",
162
+ "children": [
163
+ {
164
+ "type": "stack",
165
+ "direction": "horizontal",
166
+ "gap": "md",
167
+ "justify": "space-between",
168
+ "children": [
169
+ {
170
+ "type": "stack",
171
+ "direction": "horizontal",
172
+ "gap": "sm",
173
+ "align": "center",
174
+ "children": [
175
+ {
176
+ "type": "icon",
177
+ "name": "inbox",
178
+ "size": "lg"
179
+ },
180
+ {
181
+ "type": "typography",
182
+ "content": "Tickets",
183
+ "variant": "h2"
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "type": "stack",
189
+ "direction": "horizontal",
190
+ "gap": "sm",
191
+ "children": [
192
+ {
193
+ "type": "button",
194
+ "label": "New Ticket",
195
+ "event": "CREATE",
196
+ "variant": "primary",
197
+ "icon": "plus"
198
+ }
199
+ ]
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "type": "divider"
205
+ },
206
+ {
207
+ "type": "data-grid",
208
+ "entity": "Ticket",
209
+ "emptyIcon": "inbox",
210
+ "emptyTitle": "No tickets yet",
211
+ "emptyDescription": "Create your first ticket to get started.",
212
+ "itemActions": [
213
+ {
214
+ "label": "View",
215
+ "event": "VIEW"
216
+ },
217
+ {
218
+ "label": "Edit",
219
+ "event": "EDIT"
220
+ },
221
+ {
222
+ "label": "Delete",
223
+ "event": "DELETE",
224
+ "variant": "danger"
225
+ }
226
+ ],
227
+ "className": "transition-shadow hover:shadow-md cursor-pointer",
228
+ "children": [
229
+ {
230
+ "type": "stack",
231
+ "direction": "vertical",
232
+ "gap": "sm",
233
+ "children": [
234
+ {
235
+ "type": "stack",
236
+ "direction": "horizontal",
237
+ "justify": "space-between",
238
+ "align": "center",
239
+ "children": [
240
+ {
241
+ "type": "stack",
242
+ "direction": "horizontal",
243
+ "gap": "sm",
244
+ "align": "center",
245
+ "children": [
246
+ {
247
+ "type": "icon",
248
+ "name": "inbox",
249
+ "size": "sm"
250
+ },
251
+ {
252
+ "type": "typography",
253
+ "variant": "h4",
254
+ "content": "@entity.subject"
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "type": "badge",
260
+ "label": "@entity.description"
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "type": "typography",
266
+ "variant": "caption",
267
+ "color": "muted",
268
+ "content": "@entity.priority"
269
+ }
270
+ ]
271
+ }
272
+ ]
273
+ }
274
+ ]
275
+ }
276
+ ]
277
+ ]
278
+ },
279
+ {
280
+ "from": "browsing",
281
+ "to": "browsing",
282
+ "event": "TICKET_CREATED",
283
+ "effects": [
284
+ [
285
+ "fetch",
286
+ "Ticket"
287
+ ]
288
+ ]
289
+ },
290
+ {
291
+ "from": "browsing",
292
+ "to": "browsing",
293
+ "event": "TICKET_UPDATED",
294
+ "effects": [
295
+ [
296
+ "fetch",
297
+ "Ticket"
298
+ ]
299
+ ]
300
+ },
301
+ {
302
+ "from": "browsing",
303
+ "to": "deleting",
304
+ "event": "DELETE",
305
+ "effects": [
306
+ [
307
+ "fetch",
308
+ "Ticket",
309
+ "@payload.id"
310
+ ],
311
+ [
312
+ "render-ui",
313
+ "modal",
314
+ {
315
+ "type": "stack",
316
+ "direction": "vertical",
317
+ "gap": "md",
318
+ "children": [
319
+ {
320
+ "type": "stack",
321
+ "direction": "horizontal",
322
+ "gap": "sm",
323
+ "children": [
324
+ {
325
+ "type": "icon",
326
+ "name": "trash-2",
327
+ "size": "md"
328
+ },
329
+ {
330
+ "type": "typography",
331
+ "content": "Delete Ticket",
332
+ "variant": "h3"
333
+ }
334
+ ]
335
+ },
336
+ {
337
+ "type": "divider"
338
+ },
339
+ {
340
+ "type": "typography",
341
+ "content": "Are you sure you want to delete this ticket?",
342
+ "variant": "body"
343
+ },
344
+ {
345
+ "type": "stack",
346
+ "direction": "horizontal",
347
+ "gap": "sm",
348
+ "justify": "end",
349
+ "children": [
350
+ {
351
+ "type": "button",
352
+ "label": "Cancel",
353
+ "event": "CANCEL",
354
+ "variant": "ghost"
355
+ },
356
+ {
357
+ "type": "button",
358
+ "label": "Delete",
359
+ "event": "CONFIRM_DELETE",
360
+ "variant": "danger",
361
+ "icon": "trash"
362
+ }
363
+ ]
364
+ }
365
+ ]
366
+ }
367
+ ]
368
+ ]
369
+ },
370
+ {
371
+ "from": "deleting",
372
+ "to": "browsing",
373
+ "event": "CONFIRM_DELETE",
374
+ "effects": [
375
+ [
376
+ "persist",
377
+ "delete",
378
+ "Ticket",
379
+ "@entity.id"
380
+ ],
381
+ [
382
+ "render-ui",
383
+ "modal",
384
+ null
385
+ ],
386
+ [
387
+ "fetch",
388
+ "Ticket"
389
+ ],
390
+ [
391
+ "notify",
392
+ "Ticket deleted successfully"
393
+ ]
394
+ ]
395
+ },
396
+ {
397
+ "from": "deleting",
398
+ "to": "browsing",
399
+ "event": "CANCEL",
400
+ "effects": [
401
+ [
402
+ "render-ui",
403
+ "modal",
404
+ null
405
+ ]
406
+ ]
407
+ },
408
+ {
409
+ "from": "deleting",
410
+ "to": "browsing",
411
+ "event": "CLOSE",
412
+ "effects": [
413
+ [
414
+ "render-ui",
415
+ "modal",
416
+ null
417
+ ]
418
+ ]
419
+ }
420
+ ]
421
+ },
422
+ "emits": [
423
+ {
424
+ "event": "ASSIGN",
425
+ "description": "Assign ticket and open response thread",
426
+ "payload": [
427
+ {
428
+ "name": "id",
429
+ "type": "string",
430
+ "required": true
431
+ }
432
+ ],
433
+ "scope": "external"
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "name": "TicketCreate",
439
+ "linkedEntity": "Ticket",
440
+ "category": "interaction",
441
+ "emits": [
442
+ {
443
+ "event": "TICKET_CREATED"
444
+ }
445
+ ],
446
+ "stateMachine": {
447
+ "states": [
448
+ {
449
+ "name": "closed",
450
+ "isInitial": true
451
+ },
452
+ {
453
+ "name": "open"
454
+ }
455
+ ],
456
+ "events": [
457
+ {
458
+ "key": "INIT",
459
+ "name": "Initialize"
460
+ },
461
+ {
462
+ "key": "CREATE",
463
+ "name": "Open"
464
+ },
465
+ {
466
+ "key": "CLOSE",
467
+ "name": "Close"
468
+ },
469
+ {
470
+ "key": "SAVE",
471
+ "name": "Save",
472
+ "payload": [
473
+ {
474
+ "name": "data",
475
+ "type": "object",
476
+ "required": true
477
+ }
478
+ ]
479
+ }
480
+ ],
481
+ "transitions": [
482
+ {
483
+ "from": "closed",
484
+ "to": "closed",
485
+ "event": "INIT",
486
+ "effects": [
487
+ [
488
+ "fetch",
489
+ "Ticket"
490
+ ]
491
+ ]
492
+ },
493
+ {
494
+ "from": "closed",
495
+ "to": "open",
496
+ "event": "CREATE",
497
+ "effects": [
498
+ [
499
+ "fetch",
500
+ "Ticket"
501
+ ],
502
+ [
503
+ "render-ui",
504
+ "modal",
505
+ {
506
+ "type": "stack",
507
+ "direction": "vertical",
508
+ "gap": "md",
509
+ "children": [
510
+ {
511
+ "type": "stack",
512
+ "direction": "horizontal",
513
+ "gap": "sm",
514
+ "children": [
515
+ {
516
+ "type": "icon",
517
+ "name": "plus-circle",
518
+ "size": "md"
519
+ },
520
+ {
521
+ "type": "typography",
522
+ "content": "Create Ticket",
523
+ "variant": "h3"
524
+ }
525
+ ]
526
+ },
527
+ {
528
+ "type": "divider"
529
+ },
530
+ {
531
+ "type": "form-section",
532
+ "entity": "Ticket",
533
+ "mode": "create",
534
+ "submitEvent": "SAVE",
535
+ "cancelEvent": "CLOSE",
536
+ "fields": [
537
+ "subject",
538
+ "description",
539
+ "priority",
540
+ "status",
541
+ "assignee"
542
+ ]
543
+ }
544
+ ]
545
+ }
546
+ ]
547
+ ]
548
+ },
549
+ {
550
+ "from": "open",
551
+ "to": "closed",
552
+ "event": "CLOSE",
553
+ "effects": [
554
+ [
555
+ "render-ui",
556
+ "modal",
557
+ null
558
+ ]
559
+ ]
560
+ },
561
+ {
562
+ "from": "open",
563
+ "to": "closed",
564
+ "event": "SAVE",
565
+ "effects": [
566
+ [
567
+ "persist",
568
+ "create",
569
+ "Ticket",
570
+ "@payload.data"
571
+ ],
572
+ [
573
+ "fetch",
574
+ "Ticket"
575
+ ],
576
+ [
577
+ "render-ui",
578
+ "modal",
579
+ null
580
+ ],
581
+ [
582
+ "emit",
583
+ "TICKET_CREATED"
584
+ ],
585
+ [
586
+ "notify",
587
+ "Ticket created successfully"
588
+ ]
589
+ ]
590
+ }
591
+ ]
592
+ }
593
+ },
594
+ {
595
+ "name": "TicketEdit",
596
+ "linkedEntity": "Ticket",
597
+ "category": "interaction",
598
+ "emits": [
599
+ {
600
+ "event": "TICKET_UPDATED"
601
+ }
602
+ ],
603
+ "stateMachine": {
604
+ "states": [
605
+ {
606
+ "name": "closed",
607
+ "isInitial": true
608
+ },
609
+ {
610
+ "name": "open"
611
+ }
612
+ ],
613
+ "events": [
614
+ {
615
+ "key": "INIT",
616
+ "name": "Initialize"
617
+ },
618
+ {
619
+ "key": "EDIT",
620
+ "name": "Open",
621
+ "payload": [
622
+ {
623
+ "name": "id",
624
+ "type": "string",
625
+ "required": true
626
+ }
627
+ ]
628
+ },
629
+ {
630
+ "key": "CLOSE",
631
+ "name": "Close"
632
+ },
633
+ {
634
+ "key": "SAVE",
635
+ "name": "Save",
636
+ "payload": [
637
+ {
638
+ "name": "data",
639
+ "type": "object",
640
+ "required": true
641
+ }
642
+ ]
643
+ }
644
+ ],
645
+ "transitions": [
646
+ {
647
+ "from": "closed",
648
+ "to": "closed",
649
+ "event": "INIT",
650
+ "effects": [
651
+ [
652
+ "fetch",
653
+ "Ticket"
654
+ ]
655
+ ]
656
+ },
657
+ {
658
+ "from": "closed",
659
+ "to": "open",
660
+ "event": "EDIT",
661
+ "effects": [
662
+ [
663
+ "fetch",
664
+ "Ticket",
665
+ "@payload.id"
666
+ ],
667
+ [
668
+ "render-ui",
669
+ "modal",
670
+ {
671
+ "type": "stack",
672
+ "direction": "vertical",
673
+ "gap": "md",
674
+ "children": [
675
+ {
676
+ "type": "stack",
677
+ "direction": "horizontal",
678
+ "gap": "sm",
679
+ "children": [
680
+ {
681
+ "type": "icon",
682
+ "name": "edit",
683
+ "size": "md"
684
+ },
685
+ {
686
+ "type": "typography",
687
+ "content": "Edit Ticket",
688
+ "variant": "h3"
689
+ }
690
+ ]
691
+ },
692
+ {
693
+ "type": "divider"
694
+ },
695
+ {
696
+ "type": "form-section",
697
+ "entity": "Ticket",
698
+ "mode": "edit",
699
+ "submitEvent": "SAVE",
700
+ "cancelEvent": "CLOSE",
701
+ "fields": [
702
+ "subject",
703
+ "description",
704
+ "priority",
705
+ "status",
706
+ "assignee"
707
+ ]
708
+ }
709
+ ]
710
+ }
711
+ ]
712
+ ]
713
+ },
714
+ {
715
+ "from": "open",
716
+ "to": "closed",
717
+ "event": "CLOSE",
718
+ "effects": [
719
+ [
720
+ "render-ui",
721
+ "modal",
722
+ null
723
+ ]
724
+ ]
725
+ },
726
+ {
727
+ "from": "open",
728
+ "to": "closed",
729
+ "event": "SAVE",
730
+ "effects": [
731
+ [
732
+ "persist",
733
+ "update",
734
+ "Ticket",
735
+ "@payload.data"
736
+ ],
737
+ [
738
+ "fetch",
739
+ "Ticket"
740
+ ],
741
+ [
742
+ "render-ui",
743
+ "modal",
744
+ null
745
+ ],
746
+ [
747
+ "emit",
748
+ "TICKET_UPDATED"
749
+ ],
750
+ [
751
+ "notify",
752
+ "Ticket updated successfully"
753
+ ]
754
+ ]
755
+ }
756
+ ]
757
+ }
758
+ },
759
+ {
760
+ "name": "TicketView",
761
+ "linkedEntity": "Ticket",
762
+ "category": "interaction",
763
+ "stateMachine": {
764
+ "states": [
765
+ {
766
+ "name": "closed",
767
+ "isInitial": true
768
+ },
769
+ {
770
+ "name": "open"
771
+ }
772
+ ],
773
+ "events": [
774
+ {
775
+ "key": "INIT",
776
+ "name": "Initialize"
777
+ },
778
+ {
779
+ "key": "VIEW",
780
+ "name": "Open",
781
+ "payload": [
782
+ {
783
+ "name": "id",
784
+ "type": "string",
785
+ "required": true
786
+ }
787
+ ]
788
+ },
789
+ {
790
+ "key": "CLOSE",
791
+ "name": "Close"
792
+ }
793
+ ],
794
+ "transitions": [
795
+ {
796
+ "from": "closed",
797
+ "to": "closed",
798
+ "event": "INIT",
799
+ "effects": [
800
+ [
801
+ "fetch",
802
+ "Ticket"
803
+ ]
804
+ ]
805
+ },
806
+ {
807
+ "from": "closed",
808
+ "to": "open",
809
+ "event": "VIEW",
810
+ "effects": [
811
+ [
812
+ "fetch",
813
+ "Ticket",
814
+ "@payload.id"
815
+ ],
816
+ [
817
+ "render-ui",
818
+ "modal",
819
+ {
820
+ "type": "stack",
821
+ "direction": "vertical",
822
+ "gap": "md",
823
+ "children": [
824
+ {
825
+ "type": "stack",
826
+ "direction": "horizontal",
827
+ "gap": "sm",
828
+ "align": "center",
829
+ "children": [
830
+ {
831
+ "type": "icon",
832
+ "name": "eye",
833
+ "size": "md"
834
+ },
835
+ {
836
+ "type": "typography",
837
+ "variant": "h3",
838
+ "content": "@entity.subject"
839
+ }
840
+ ]
841
+ },
842
+ {
843
+ "type": "divider"
844
+ },
845
+ {
846
+ "type": "stack",
847
+ "direction": "horizontal",
848
+ "gap": "md",
849
+ "children": [
850
+ {
851
+ "type": "typography",
852
+ "variant": "caption",
853
+ "content": "Subject"
854
+ },
855
+ {
856
+ "type": "typography",
857
+ "variant": "body",
858
+ "content": "@entity.subject"
859
+ }
860
+ ]
861
+ },
862
+ {
863
+ "type": "stack",
864
+ "direction": "horizontal",
865
+ "gap": "md",
866
+ "children": [
867
+ {
868
+ "type": "typography",
869
+ "variant": "caption",
870
+ "content": "Description"
871
+ },
872
+ {
873
+ "type": "typography",
874
+ "variant": "body",
875
+ "content": "@entity.description"
876
+ }
877
+ ]
878
+ },
879
+ {
880
+ "type": "stack",
881
+ "direction": "horizontal",
882
+ "gap": "md",
883
+ "children": [
884
+ {
885
+ "type": "typography",
886
+ "variant": "caption",
887
+ "content": "Priority"
888
+ },
889
+ {
890
+ "type": "typography",
891
+ "variant": "body",
892
+ "content": "@entity.priority"
893
+ }
894
+ ]
895
+ },
896
+ {
897
+ "type": "stack",
898
+ "direction": "horizontal",
899
+ "gap": "md",
900
+ "children": [
901
+ {
902
+ "type": "typography",
903
+ "variant": "caption",
904
+ "content": "Status"
905
+ },
906
+ {
907
+ "type": "typography",
908
+ "variant": "body",
909
+ "content": "@entity.status"
910
+ }
911
+ ]
912
+ },
913
+ {
914
+ "type": "stack",
915
+ "direction": "horizontal",
916
+ "gap": "md",
917
+ "children": [
918
+ {
919
+ "type": "typography",
920
+ "variant": "caption",
921
+ "content": "Assignee"
922
+ },
923
+ {
924
+ "type": "typography",
925
+ "variant": "body",
926
+ "content": "@entity.assignee"
927
+ }
928
+ ]
929
+ },
930
+ {
931
+ "type": "divider"
932
+ },
933
+ {
934
+ "type": "stack",
935
+ "direction": "horizontal",
936
+ "gap": "sm",
937
+ "justify": "end",
938
+ "children": [
939
+ {
940
+ "type": "button",
941
+ "label": "Edit",
942
+ "event": "EDIT",
943
+ "variant": "primary",
944
+ "icon": "edit"
945
+ },
946
+ {
947
+ "type": "button",
948
+ "label": "Close",
949
+ "event": "CLOSE",
950
+ "variant": "ghost"
951
+ }
952
+ ]
953
+ }
954
+ ]
955
+ }
956
+ ]
957
+ ]
958
+ },
959
+ {
960
+ "from": "open",
961
+ "to": "closed",
962
+ "event": "CLOSE",
963
+ "effects": [
964
+ [
965
+ "render-ui",
966
+ "modal",
967
+ null
968
+ ]
969
+ ]
970
+ }
971
+ ]
972
+ }
973
+ }
974
+ ],
975
+ "pages": [
976
+ {
977
+ "name": "TicketsPage",
978
+ "path": "/tickets",
979
+ "isInitial": true,
980
+ "traits": [
981
+ {
982
+ "ref": "TicketBrowse"
983
+ },
984
+ {
985
+ "ref": "TicketCreate"
986
+ },
987
+ {
988
+ "ref": "TicketEdit"
989
+ },
990
+ {
991
+ "ref": "TicketView"
992
+ }
993
+ ]
994
+ }
995
+ ]
996
+ },
997
+ {
998
+ "name": "ResponseOrbital",
999
+ "entity": {
1000
+ "name": "Response",
1001
+ "persistence": "runtime",
1002
+ "fields": [
1003
+ {
1004
+ "name": "id",
1005
+ "type": "string",
1006
+ "required": true
1007
+ },
1008
+ {
1009
+ "name": "ticketId",
1010
+ "type": "string",
1011
+ "default": ""
1012
+ },
1013
+ {
1014
+ "name": "body",
1015
+ "type": "string",
1016
+ "default": ""
1017
+ },
1018
+ {
1019
+ "name": "author",
1020
+ "type": "string",
1021
+ "default": ""
1022
+ },
1023
+ {
1024
+ "name": "createdAt",
1025
+ "type": "string",
1026
+ "default": ""
1027
+ }
1028
+ ]
1029
+ },
1030
+ "traits": [
1031
+ {
1032
+ "name": "ResponseBrowse",
1033
+ "linkedEntity": "Response",
1034
+ "category": "interaction",
1035
+ "listens": [
1036
+ {
1037
+ "event": "SEND",
1038
+ "triggers": "SEND"
1039
+ },
1040
+ {
1041
+ "event": "ASSIGN",
1042
+ "triggers": "INIT",
1043
+ "scope": "external"
1044
+ }
1045
+ ],
1046
+ "stateMachine": {
1047
+ "states": [
1048
+ {
1049
+ "name": "browsing",
1050
+ "isInitial": true
1051
+ }
1052
+ ],
1053
+ "events": [
1054
+ {
1055
+ "key": "INIT",
1056
+ "name": "Initialize"
1057
+ },
1058
+ {
1059
+ "key": "COMPOSE",
1060
+ "name": "COMPOSE"
1061
+ },
1062
+ {
1063
+ "key": "VIEW",
1064
+ "name": "VIEW",
1065
+ "payload": [
1066
+ {
1067
+ "name": "id",
1068
+ "type": "string",
1069
+ "required": true
1070
+ }
1071
+ ]
1072
+ },
1073
+ {
1074
+ "key": "SEND",
1075
+ "name": "SEND",
1076
+ "payload": [
1077
+ {
1078
+ "name": "data",
1079
+ "type": "object",
1080
+ "required": true
1081
+ }
1082
+ ]
1083
+ }
1084
+ ],
1085
+ "transitions": [
1086
+ {
1087
+ "from": "browsing",
1088
+ "to": "browsing",
1089
+ "event": "INIT",
1090
+ "effects": [
1091
+ [
1092
+ "fetch",
1093
+ "Response"
1094
+ ],
1095
+ [
1096
+ "render-ui",
1097
+ "main",
1098
+ {
1099
+ "type": "stack",
1100
+ "direction": "vertical",
1101
+ "gap": "lg",
1102
+ "children": [
1103
+ {
1104
+ "type": "stack",
1105
+ "direction": "horizontal",
1106
+ "gap": "md",
1107
+ "justify": "space-between",
1108
+ "children": [
1109
+ {
1110
+ "type": "stack",
1111
+ "direction": "horizontal",
1112
+ "gap": "sm",
1113
+ "align": "center",
1114
+ "children": [
1115
+ {
1116
+ "type": "icon",
1117
+ "name": "message-circle",
1118
+ "size": "lg"
1119
+ },
1120
+ {
1121
+ "type": "typography",
1122
+ "content": "Responses",
1123
+ "variant": "h2"
1124
+ }
1125
+ ]
1126
+ },
1127
+ {
1128
+ "type": "stack",
1129
+ "direction": "horizontal",
1130
+ "gap": "sm",
1131
+ "children": [
1132
+ {
1133
+ "type": "button",
1134
+ "label": "Compose",
1135
+ "event": "COMPOSE",
1136
+ "variant": "primary",
1137
+ "icon": "edit"
1138
+ }
1139
+ ]
1140
+ }
1141
+ ]
1142
+ },
1143
+ {
1144
+ "type": "divider"
1145
+ },
1146
+ {
1147
+ "type": "data-grid",
1148
+ "entity": "Response",
1149
+ "emptyIcon": "inbox",
1150
+ "emptyTitle": "No messages yet",
1151
+ "emptyDescription": "Start a new conversation.",
1152
+ "itemActions": [
1153
+ {
1154
+ "label": "View",
1155
+ "event": "VIEW"
1156
+ }
1157
+ ],
1158
+ "className": "transition-shadow hover:shadow-md cursor-pointer",
1159
+ "children": [
1160
+ {
1161
+ "type": "stack",
1162
+ "direction": "vertical",
1163
+ "gap": "sm",
1164
+ "children": [
1165
+ {
1166
+ "type": "stack",
1167
+ "direction": "horizontal",
1168
+ "justify": "space-between",
1169
+ "align": "center",
1170
+ "children": [
1171
+ {
1172
+ "type": "stack",
1173
+ "direction": "horizontal",
1174
+ "gap": "sm",
1175
+ "align": "center",
1176
+ "children": [
1177
+ {
1178
+ "type": "icon",
1179
+ "name": "message-circle",
1180
+ "size": "sm"
1181
+ },
1182
+ {
1183
+ "type": "typography",
1184
+ "variant": "h4",
1185
+ "content": "@entity.ticketId"
1186
+ }
1187
+ ]
1188
+ },
1189
+ {
1190
+ "type": "badge",
1191
+ "label": "@entity.body"
1192
+ }
1193
+ ]
1194
+ },
1195
+ {
1196
+ "type": "typography",
1197
+ "variant": "caption",
1198
+ "color": "muted",
1199
+ "content": "@entity.author"
1200
+ }
1201
+ ]
1202
+ }
1203
+ ]
1204
+ }
1205
+ ]
1206
+ }
1207
+ ]
1208
+ ]
1209
+ },
1210
+ {
1211
+ "from": "browsing",
1212
+ "to": "browsing",
1213
+ "event": "SEND",
1214
+ "effects": [
1215
+ [
1216
+ "fetch",
1217
+ "Response"
1218
+ ]
1219
+ ]
1220
+ }
1221
+ ]
1222
+ },
1223
+ "emits": [
1224
+ {
1225
+ "event": "RESOLVE",
1226
+ "description": "Resolve ticket and update metrics",
1227
+ "payload": [
1228
+ {
1229
+ "name": "id",
1230
+ "type": "string",
1231
+ "required": true
1232
+ }
1233
+ ],
1234
+ "scope": "external"
1235
+ }
1236
+ ]
1237
+ },
1238
+ {
1239
+ "name": "ResponseCompose",
1240
+ "linkedEntity": "Response",
1241
+ "category": "interaction",
1242
+ "emits": [
1243
+ {
1244
+ "event": "SEND"
1245
+ }
1246
+ ],
1247
+ "stateMachine": {
1248
+ "states": [
1249
+ {
1250
+ "name": "closed",
1251
+ "isInitial": true
1252
+ },
1253
+ {
1254
+ "name": "open"
1255
+ }
1256
+ ],
1257
+ "events": [
1258
+ {
1259
+ "key": "INIT",
1260
+ "name": "Initialize"
1261
+ },
1262
+ {
1263
+ "key": "COMPOSE",
1264
+ "name": "Open"
1265
+ },
1266
+ {
1267
+ "key": "CLOSE",
1268
+ "name": "Close"
1269
+ },
1270
+ {
1271
+ "key": "SEND",
1272
+ "name": "Save",
1273
+ "payload": [
1274
+ {
1275
+ "name": "data",
1276
+ "type": "object",
1277
+ "required": true
1278
+ }
1279
+ ]
1280
+ }
1281
+ ],
1282
+ "transitions": [
1283
+ {
1284
+ "from": "closed",
1285
+ "to": "closed",
1286
+ "event": "INIT",
1287
+ "effects": [
1288
+ [
1289
+ "fetch",
1290
+ "Response"
1291
+ ]
1292
+ ]
1293
+ },
1294
+ {
1295
+ "from": "closed",
1296
+ "to": "open",
1297
+ "event": "COMPOSE",
1298
+ "effects": [
1299
+ [
1300
+ "render-ui",
1301
+ "modal",
1302
+ {
1303
+ "type": "stack",
1304
+ "direction": "vertical",
1305
+ "gap": "md",
1306
+ "children": [
1307
+ {
1308
+ "type": "stack",
1309
+ "direction": "horizontal",
1310
+ "gap": "sm",
1311
+ "children": [
1312
+ {
1313
+ "type": "icon",
1314
+ "name": "edit",
1315
+ "size": "md"
1316
+ },
1317
+ {
1318
+ "type": "typography",
1319
+ "content": "New Response",
1320
+ "variant": "h3"
1321
+ }
1322
+ ]
1323
+ },
1324
+ {
1325
+ "type": "divider"
1326
+ },
1327
+ {
1328
+ "type": "form-section",
1329
+ "entity": "Response",
1330
+ "mode": "create",
1331
+ "submitEvent": "SEND",
1332
+ "cancelEvent": "CLOSE",
1333
+ "fields": [
1334
+ "ticketId",
1335
+ "body",
1336
+ "author",
1337
+ "createdAt"
1338
+ ]
1339
+ }
1340
+ ]
1341
+ }
1342
+ ]
1343
+ ]
1344
+ },
1345
+ {
1346
+ "from": "open",
1347
+ "to": "closed",
1348
+ "event": "CLOSE",
1349
+ "effects": [
1350
+ [
1351
+ "render-ui",
1352
+ "modal",
1353
+ null
1354
+ ]
1355
+ ]
1356
+ },
1357
+ {
1358
+ "from": "open",
1359
+ "to": "closed",
1360
+ "event": "SEND",
1361
+ "effects": [
1362
+ [
1363
+ "persist",
1364
+ "create",
1365
+ "Response",
1366
+ "@payload.data"
1367
+ ],
1368
+ [
1369
+ "fetch",
1370
+ "Response"
1371
+ ],
1372
+ [
1373
+ "render-ui",
1374
+ "modal",
1375
+ null
1376
+ ],
1377
+ [
1378
+ "emit",
1379
+ "SEND"
1380
+ ],
1381
+ [
1382
+ "notify",
1383
+ "Response created successfully"
1384
+ ]
1385
+ ]
1386
+ }
1387
+ ]
1388
+ }
1389
+ },
1390
+ {
1391
+ "name": "ResponseView",
1392
+ "linkedEntity": "Response",
1393
+ "category": "interaction",
1394
+ "stateMachine": {
1395
+ "states": [
1396
+ {
1397
+ "name": "closed",
1398
+ "isInitial": true
1399
+ },
1400
+ {
1401
+ "name": "open"
1402
+ }
1403
+ ],
1404
+ "events": [
1405
+ {
1406
+ "key": "INIT",
1407
+ "name": "Initialize"
1408
+ },
1409
+ {
1410
+ "key": "VIEW",
1411
+ "name": "Open",
1412
+ "payload": [
1413
+ {
1414
+ "name": "id",
1415
+ "type": "string",
1416
+ "required": true
1417
+ }
1418
+ ]
1419
+ },
1420
+ {
1421
+ "key": "CLOSE",
1422
+ "name": "Close"
1423
+ }
1424
+ ],
1425
+ "transitions": [
1426
+ {
1427
+ "from": "closed",
1428
+ "to": "closed",
1429
+ "event": "INIT",
1430
+ "effects": [
1431
+ [
1432
+ "fetch",
1433
+ "Response"
1434
+ ]
1435
+ ]
1436
+ },
1437
+ {
1438
+ "from": "closed",
1439
+ "to": "open",
1440
+ "event": "VIEW",
1441
+ "effects": [
1442
+ [
1443
+ "fetch",
1444
+ "Response",
1445
+ "@payload.id"
1446
+ ],
1447
+ [
1448
+ "render-ui",
1449
+ "modal",
1450
+ {
1451
+ "type": "stack",
1452
+ "direction": "vertical",
1453
+ "gap": "md",
1454
+ "children": [
1455
+ {
1456
+ "type": "stack",
1457
+ "direction": "horizontal",
1458
+ "gap": "sm",
1459
+ "align": "center",
1460
+ "children": [
1461
+ {
1462
+ "type": "icon",
1463
+ "name": "eye",
1464
+ "size": "md"
1465
+ },
1466
+ {
1467
+ "type": "typography",
1468
+ "variant": "h3",
1469
+ "content": "@entity.ticketId"
1470
+ }
1471
+ ]
1472
+ },
1473
+ {
1474
+ "type": "divider"
1475
+ },
1476
+ {
1477
+ "type": "stack",
1478
+ "direction": "horizontal",
1479
+ "gap": "md",
1480
+ "children": [
1481
+ {
1482
+ "type": "typography",
1483
+ "variant": "caption",
1484
+ "content": "TicketId"
1485
+ },
1486
+ {
1487
+ "type": "typography",
1488
+ "variant": "body",
1489
+ "content": "@entity.ticketId"
1490
+ }
1491
+ ]
1492
+ },
1493
+ {
1494
+ "type": "stack",
1495
+ "direction": "horizontal",
1496
+ "gap": "md",
1497
+ "children": [
1498
+ {
1499
+ "type": "typography",
1500
+ "variant": "caption",
1501
+ "content": "Body"
1502
+ },
1503
+ {
1504
+ "type": "typography",
1505
+ "variant": "body",
1506
+ "content": "@entity.body"
1507
+ }
1508
+ ]
1509
+ },
1510
+ {
1511
+ "type": "stack",
1512
+ "direction": "horizontal",
1513
+ "gap": "md",
1514
+ "children": [
1515
+ {
1516
+ "type": "typography",
1517
+ "variant": "caption",
1518
+ "content": "Author"
1519
+ },
1520
+ {
1521
+ "type": "typography",
1522
+ "variant": "body",
1523
+ "content": "@entity.author"
1524
+ }
1525
+ ]
1526
+ },
1527
+ {
1528
+ "type": "stack",
1529
+ "direction": "horizontal",
1530
+ "gap": "md",
1531
+ "children": [
1532
+ {
1533
+ "type": "typography",
1534
+ "variant": "caption",
1535
+ "content": "CreatedAt"
1536
+ },
1537
+ {
1538
+ "type": "typography",
1539
+ "variant": "body",
1540
+ "content": "@entity.createdAt"
1541
+ }
1542
+ ]
1543
+ },
1544
+ {
1545
+ "type": "divider"
1546
+ },
1547
+ {
1548
+ "type": "stack",
1549
+ "direction": "horizontal",
1550
+ "gap": "sm",
1551
+ "justify": "end",
1552
+ "children": [
1553
+ {
1554
+ "type": "button",
1555
+ "label": "Close",
1556
+ "event": "CLOSE",
1557
+ "variant": "ghost"
1558
+ }
1559
+ ]
1560
+ }
1561
+ ]
1562
+ }
1563
+ ]
1564
+ ]
1565
+ },
1566
+ {
1567
+ "from": "open",
1568
+ "to": "closed",
1569
+ "event": "CLOSE",
1570
+ "effects": [
1571
+ [
1572
+ "render-ui",
1573
+ "modal",
1574
+ null
1575
+ ]
1576
+ ]
1577
+ }
1578
+ ]
1579
+ }
1580
+ }
1581
+ ],
1582
+ "pages": [
1583
+ {
1584
+ "name": "ResponsesPage",
1585
+ "path": "/responses",
1586
+ "traits": [
1587
+ {
1588
+ "ref": "ResponseBrowse"
1589
+ },
1590
+ {
1591
+ "ref": "ResponseCompose"
1592
+ },
1593
+ {
1594
+ "ref": "ResponseView"
1595
+ }
1596
+ ]
1597
+ }
1598
+ ]
1599
+ },
1600
+ {
1601
+ "name": "SupportMetricsOrbital",
1602
+ "entity": {
1603
+ "name": "SupportMetrics",
1604
+ "persistence": "runtime",
1605
+ "fields": [
1606
+ {
1607
+ "name": "id",
1608
+ "type": "string",
1609
+ "required": true
1610
+ },
1611
+ {
1612
+ "name": "openTickets",
1613
+ "type": "number",
1614
+ "default": 0
1615
+ },
1616
+ {
1617
+ "name": "resolvedTickets",
1618
+ "type": "number",
1619
+ "default": 0
1620
+ },
1621
+ {
1622
+ "name": "avgResponseTime",
1623
+ "type": "string",
1624
+ "default": "0h"
1625
+ },
1626
+ {
1627
+ "name": "satisfactionScore",
1628
+ "type": "number",
1629
+ "default": 0
1630
+ },
1631
+ {
1632
+ "name": "activeAgents",
1633
+ "type": "number",
1634
+ "default": 0
1635
+ }
1636
+ ]
1637
+ },
1638
+ "traits": [
1639
+ {
1640
+ "name": "SupportMetricsDisplay",
1641
+ "linkedEntity": "SupportMetrics",
1642
+ "category": "interaction",
1643
+ "stateMachine": {
1644
+ "states": [
1645
+ {
1646
+ "name": "loading",
1647
+ "isInitial": true
1648
+ },
1649
+ {
1650
+ "name": "displaying"
1651
+ },
1652
+ {
1653
+ "name": "refreshing"
1654
+ }
1655
+ ],
1656
+ "events": [
1657
+ {
1658
+ "key": "INIT",
1659
+ "name": "Initialize"
1660
+ },
1661
+ {
1662
+ "key": "LOADED",
1663
+ "name": "Loaded"
1664
+ },
1665
+ {
1666
+ "key": "REFRESH",
1667
+ "name": "Refresh"
1668
+ },
1669
+ {
1670
+ "key": "REFRESHED",
1671
+ "name": "Refreshed"
1672
+ }
1673
+ ],
1674
+ "transitions": [
1675
+ {
1676
+ "from": "loading",
1677
+ "to": "displaying",
1678
+ "event": "INIT",
1679
+ "effects": [
1680
+ [
1681
+ "fetch",
1682
+ "SupportMetrics"
1683
+ ],
1684
+ [
1685
+ "render-ui",
1686
+ "main",
1687
+ {
1688
+ "type": "stack",
1689
+ "direction": "vertical",
1690
+ "gap": "lg",
1691
+ "children": [
1692
+ {
1693
+ "type": "stack",
1694
+ "direction": "horizontal",
1695
+ "gap": "md",
1696
+ "justify": "space-between",
1697
+ "children": [
1698
+ {
1699
+ "type": "stack",
1700
+ "direction": "horizontal",
1701
+ "gap": "md",
1702
+ "children": [
1703
+ {
1704
+ "type": "icon",
1705
+ "name": "activity",
1706
+ "size": "lg"
1707
+ },
1708
+ {
1709
+ "type": "typography",
1710
+ "content": "Support Metrics",
1711
+ "variant": "h2"
1712
+ }
1713
+ ]
1714
+ },
1715
+ {
1716
+ "type": "button",
1717
+ "label": "Refresh",
1718
+ "event": "REFRESH",
1719
+ "variant": "secondary",
1720
+ "icon": "refresh-cw"
1721
+ }
1722
+ ]
1723
+ },
1724
+ {
1725
+ "type": "divider"
1726
+ },
1727
+ {
1728
+ "type": "simple-grid",
1729
+ "columns": 3,
1730
+ "children": [
1731
+ {
1732
+ "type": "card",
1733
+ "children": [
1734
+ {
1735
+ "type": "stack",
1736
+ "direction": "vertical",
1737
+ "gap": "sm",
1738
+ "children": [
1739
+ {
1740
+ "type": "typography",
1741
+ "variant": "caption",
1742
+ "content": "OpenTickets"
1743
+ },
1744
+ {
1745
+ "type": "typography",
1746
+ "variant": "h3",
1747
+ "content": "@entity.openTickets"
1748
+ }
1749
+ ]
1750
+ }
1751
+ ]
1752
+ },
1753
+ {
1754
+ "type": "card",
1755
+ "children": [
1756
+ {
1757
+ "type": "stack",
1758
+ "direction": "vertical",
1759
+ "gap": "sm",
1760
+ "children": [
1761
+ {
1762
+ "type": "typography",
1763
+ "variant": "caption",
1764
+ "content": "ResolvedTickets"
1765
+ },
1766
+ {
1767
+ "type": "typography",
1768
+ "variant": "h3",
1769
+ "content": "@entity.resolvedTickets"
1770
+ }
1771
+ ]
1772
+ }
1773
+ ]
1774
+ },
1775
+ {
1776
+ "type": "card",
1777
+ "children": [
1778
+ {
1779
+ "type": "stack",
1780
+ "direction": "vertical",
1781
+ "gap": "sm",
1782
+ "children": [
1783
+ {
1784
+ "type": "typography",
1785
+ "variant": "caption",
1786
+ "content": "AvgResponseTime"
1787
+ },
1788
+ {
1789
+ "type": "typography",
1790
+ "variant": "h3",
1791
+ "content": "@entity.avgResponseTime"
1792
+ }
1793
+ ]
1794
+ }
1795
+ ]
1796
+ },
1797
+ {
1798
+ "type": "card",
1799
+ "children": [
1800
+ {
1801
+ "type": "stack",
1802
+ "direction": "vertical",
1803
+ "gap": "sm",
1804
+ "children": [
1805
+ {
1806
+ "type": "typography",
1807
+ "variant": "caption",
1808
+ "content": "SatisfactionScore"
1809
+ },
1810
+ {
1811
+ "type": "typography",
1812
+ "variant": "h3",
1813
+ "content": "@entity.satisfactionScore"
1814
+ }
1815
+ ]
1816
+ }
1817
+ ]
1818
+ },
1819
+ {
1820
+ "type": "card",
1821
+ "children": [
1822
+ {
1823
+ "type": "stack",
1824
+ "direction": "vertical",
1825
+ "gap": "sm",
1826
+ "children": [
1827
+ {
1828
+ "type": "typography",
1829
+ "variant": "caption",
1830
+ "content": "ActiveAgents"
1831
+ },
1832
+ {
1833
+ "type": "typography",
1834
+ "variant": "h3",
1835
+ "content": "@entity.activeAgents"
1836
+ }
1837
+ ]
1838
+ }
1839
+ ]
1840
+ }
1841
+ ]
1842
+ }
1843
+ ]
1844
+ }
1845
+ ]
1846
+ ]
1847
+ },
1848
+ {
1849
+ "from": "loading",
1850
+ "to": "displaying",
1851
+ "event": "LOADED",
1852
+ "effects": [
1853
+ [
1854
+ "fetch",
1855
+ "SupportMetrics"
1856
+ ],
1857
+ [
1858
+ "render-ui",
1859
+ "main",
1860
+ {
1861
+ "type": "stack",
1862
+ "direction": "vertical",
1863
+ "gap": "lg",
1864
+ "children": [
1865
+ {
1866
+ "type": "stack",
1867
+ "direction": "horizontal",
1868
+ "gap": "md",
1869
+ "justify": "space-between",
1870
+ "children": [
1871
+ {
1872
+ "type": "stack",
1873
+ "direction": "horizontal",
1874
+ "gap": "md",
1875
+ "children": [
1876
+ {
1877
+ "type": "icon",
1878
+ "name": "activity",
1879
+ "size": "lg"
1880
+ },
1881
+ {
1882
+ "type": "typography",
1883
+ "content": "Support Metrics",
1884
+ "variant": "h2"
1885
+ }
1886
+ ]
1887
+ },
1888
+ {
1889
+ "type": "button",
1890
+ "label": "Refresh",
1891
+ "event": "REFRESH",
1892
+ "variant": "secondary",
1893
+ "icon": "refresh-cw"
1894
+ }
1895
+ ]
1896
+ },
1897
+ {
1898
+ "type": "divider"
1899
+ },
1900
+ {
1901
+ "type": "simple-grid",
1902
+ "columns": 3,
1903
+ "children": [
1904
+ {
1905
+ "type": "card",
1906
+ "children": [
1907
+ {
1908
+ "type": "stack",
1909
+ "direction": "vertical",
1910
+ "gap": "sm",
1911
+ "children": [
1912
+ {
1913
+ "type": "typography",
1914
+ "variant": "caption",
1915
+ "content": "OpenTickets"
1916
+ },
1917
+ {
1918
+ "type": "typography",
1919
+ "variant": "h3",
1920
+ "content": "@entity.openTickets"
1921
+ }
1922
+ ]
1923
+ }
1924
+ ]
1925
+ },
1926
+ {
1927
+ "type": "card",
1928
+ "children": [
1929
+ {
1930
+ "type": "stack",
1931
+ "direction": "vertical",
1932
+ "gap": "sm",
1933
+ "children": [
1934
+ {
1935
+ "type": "typography",
1936
+ "variant": "caption",
1937
+ "content": "ResolvedTickets"
1938
+ },
1939
+ {
1940
+ "type": "typography",
1941
+ "variant": "h3",
1942
+ "content": "@entity.resolvedTickets"
1943
+ }
1944
+ ]
1945
+ }
1946
+ ]
1947
+ },
1948
+ {
1949
+ "type": "card",
1950
+ "children": [
1951
+ {
1952
+ "type": "stack",
1953
+ "direction": "vertical",
1954
+ "gap": "sm",
1955
+ "children": [
1956
+ {
1957
+ "type": "typography",
1958
+ "variant": "caption",
1959
+ "content": "AvgResponseTime"
1960
+ },
1961
+ {
1962
+ "type": "typography",
1963
+ "variant": "h3",
1964
+ "content": "@entity.avgResponseTime"
1965
+ }
1966
+ ]
1967
+ }
1968
+ ]
1969
+ },
1970
+ {
1971
+ "type": "card",
1972
+ "children": [
1973
+ {
1974
+ "type": "stack",
1975
+ "direction": "vertical",
1976
+ "gap": "sm",
1977
+ "children": [
1978
+ {
1979
+ "type": "typography",
1980
+ "variant": "caption",
1981
+ "content": "SatisfactionScore"
1982
+ },
1983
+ {
1984
+ "type": "typography",
1985
+ "variant": "h3",
1986
+ "content": "@entity.satisfactionScore"
1987
+ }
1988
+ ]
1989
+ }
1990
+ ]
1991
+ },
1992
+ {
1993
+ "type": "card",
1994
+ "children": [
1995
+ {
1996
+ "type": "stack",
1997
+ "direction": "vertical",
1998
+ "gap": "sm",
1999
+ "children": [
2000
+ {
2001
+ "type": "typography",
2002
+ "variant": "caption",
2003
+ "content": "ActiveAgents"
2004
+ },
2005
+ {
2006
+ "type": "typography",
2007
+ "variant": "h3",
2008
+ "content": "@entity.activeAgents"
2009
+ }
2010
+ ]
2011
+ }
2012
+ ]
2013
+ }
2014
+ ]
2015
+ }
2016
+ ]
2017
+ }
2018
+ ]
2019
+ ]
2020
+ },
2021
+ {
2022
+ "from": "displaying",
2023
+ "to": "displaying",
2024
+ "event": "INIT",
2025
+ "effects": [
2026
+ [
2027
+ "fetch",
2028
+ "SupportMetrics"
2029
+ ],
2030
+ [
2031
+ "render-ui",
2032
+ "main",
2033
+ {
2034
+ "type": "stack",
2035
+ "direction": "vertical",
2036
+ "gap": "lg",
2037
+ "children": [
2038
+ {
2039
+ "type": "stack",
2040
+ "direction": "horizontal",
2041
+ "gap": "md",
2042
+ "justify": "space-between",
2043
+ "children": [
2044
+ {
2045
+ "type": "stack",
2046
+ "direction": "horizontal",
2047
+ "gap": "md",
2048
+ "children": [
2049
+ {
2050
+ "type": "icon",
2051
+ "name": "activity",
2052
+ "size": "lg"
2053
+ },
2054
+ {
2055
+ "type": "typography",
2056
+ "content": "Support Metrics",
2057
+ "variant": "h2"
2058
+ }
2059
+ ]
2060
+ },
2061
+ {
2062
+ "type": "button",
2063
+ "label": "Refresh",
2064
+ "event": "REFRESH",
2065
+ "variant": "secondary",
2066
+ "icon": "refresh-cw"
2067
+ }
2068
+ ]
2069
+ },
2070
+ {
2071
+ "type": "divider"
2072
+ },
2073
+ {
2074
+ "type": "simple-grid",
2075
+ "columns": 3,
2076
+ "children": [
2077
+ {
2078
+ "type": "card",
2079
+ "children": [
2080
+ {
2081
+ "type": "stack",
2082
+ "direction": "vertical",
2083
+ "gap": "sm",
2084
+ "children": [
2085
+ {
2086
+ "type": "typography",
2087
+ "variant": "caption",
2088
+ "content": "OpenTickets"
2089
+ },
2090
+ {
2091
+ "type": "typography",
2092
+ "variant": "h3",
2093
+ "content": "@entity.openTickets"
2094
+ }
2095
+ ]
2096
+ }
2097
+ ]
2098
+ },
2099
+ {
2100
+ "type": "card",
2101
+ "children": [
2102
+ {
2103
+ "type": "stack",
2104
+ "direction": "vertical",
2105
+ "gap": "sm",
2106
+ "children": [
2107
+ {
2108
+ "type": "typography",
2109
+ "variant": "caption",
2110
+ "content": "ResolvedTickets"
2111
+ },
2112
+ {
2113
+ "type": "typography",
2114
+ "variant": "h3",
2115
+ "content": "@entity.resolvedTickets"
2116
+ }
2117
+ ]
2118
+ }
2119
+ ]
2120
+ },
2121
+ {
2122
+ "type": "card",
2123
+ "children": [
2124
+ {
2125
+ "type": "stack",
2126
+ "direction": "vertical",
2127
+ "gap": "sm",
2128
+ "children": [
2129
+ {
2130
+ "type": "typography",
2131
+ "variant": "caption",
2132
+ "content": "AvgResponseTime"
2133
+ },
2134
+ {
2135
+ "type": "typography",
2136
+ "variant": "h3",
2137
+ "content": "@entity.avgResponseTime"
2138
+ }
2139
+ ]
2140
+ }
2141
+ ]
2142
+ },
2143
+ {
2144
+ "type": "card",
2145
+ "children": [
2146
+ {
2147
+ "type": "stack",
2148
+ "direction": "vertical",
2149
+ "gap": "sm",
2150
+ "children": [
2151
+ {
2152
+ "type": "typography",
2153
+ "variant": "caption",
2154
+ "content": "SatisfactionScore"
2155
+ },
2156
+ {
2157
+ "type": "typography",
2158
+ "variant": "h3",
2159
+ "content": "@entity.satisfactionScore"
2160
+ }
2161
+ ]
2162
+ }
2163
+ ]
2164
+ },
2165
+ {
2166
+ "type": "card",
2167
+ "children": [
2168
+ {
2169
+ "type": "stack",
2170
+ "direction": "vertical",
2171
+ "gap": "sm",
2172
+ "children": [
2173
+ {
2174
+ "type": "typography",
2175
+ "variant": "caption",
2176
+ "content": "ActiveAgents"
2177
+ },
2178
+ {
2179
+ "type": "typography",
2180
+ "variant": "h3",
2181
+ "content": "@entity.activeAgents"
2182
+ }
2183
+ ]
2184
+ }
2185
+ ]
2186
+ }
2187
+ ]
2188
+ }
2189
+ ]
2190
+ }
2191
+ ]
2192
+ ]
2193
+ },
2194
+ {
2195
+ "from": "displaying",
2196
+ "to": "refreshing",
2197
+ "event": "REFRESH",
2198
+ "effects": [
2199
+ [
2200
+ "fetch",
2201
+ "SupportMetrics"
2202
+ ],
2203
+ [
2204
+ "render-ui",
2205
+ "main",
2206
+ {
2207
+ "type": "stack",
2208
+ "direction": "vertical",
2209
+ "gap": "lg",
2210
+ "children": [
2211
+ {
2212
+ "type": "stack",
2213
+ "direction": "horizontal",
2214
+ "gap": "md",
2215
+ "justify": "space-between",
2216
+ "children": [
2217
+ {
2218
+ "type": "stack",
2219
+ "direction": "horizontal",
2220
+ "gap": "md",
2221
+ "children": [
2222
+ {
2223
+ "type": "icon",
2224
+ "name": "activity",
2225
+ "size": "lg"
2226
+ },
2227
+ {
2228
+ "type": "typography",
2229
+ "content": "Support Metrics",
2230
+ "variant": "h2"
2231
+ }
2232
+ ]
2233
+ },
2234
+ {
2235
+ "type": "button",
2236
+ "label": "Refresh",
2237
+ "event": "REFRESH",
2238
+ "variant": "secondary",
2239
+ "icon": "refresh-cw"
2240
+ }
2241
+ ]
2242
+ },
2243
+ {
2244
+ "type": "divider"
2245
+ },
2246
+ {
2247
+ "type": "simple-grid",
2248
+ "columns": 3,
2249
+ "children": [
2250
+ {
2251
+ "type": "card",
2252
+ "children": [
2253
+ {
2254
+ "type": "stack",
2255
+ "direction": "vertical",
2256
+ "gap": "sm",
2257
+ "children": [
2258
+ {
2259
+ "type": "typography",
2260
+ "variant": "caption",
2261
+ "content": "OpenTickets"
2262
+ },
2263
+ {
2264
+ "type": "typography",
2265
+ "variant": "h3",
2266
+ "content": "@entity.openTickets"
2267
+ }
2268
+ ]
2269
+ }
2270
+ ]
2271
+ },
2272
+ {
2273
+ "type": "card",
2274
+ "children": [
2275
+ {
2276
+ "type": "stack",
2277
+ "direction": "vertical",
2278
+ "gap": "sm",
2279
+ "children": [
2280
+ {
2281
+ "type": "typography",
2282
+ "variant": "caption",
2283
+ "content": "ResolvedTickets"
2284
+ },
2285
+ {
2286
+ "type": "typography",
2287
+ "variant": "h3",
2288
+ "content": "@entity.resolvedTickets"
2289
+ }
2290
+ ]
2291
+ }
2292
+ ]
2293
+ },
2294
+ {
2295
+ "type": "card",
2296
+ "children": [
2297
+ {
2298
+ "type": "stack",
2299
+ "direction": "vertical",
2300
+ "gap": "sm",
2301
+ "children": [
2302
+ {
2303
+ "type": "typography",
2304
+ "variant": "caption",
2305
+ "content": "AvgResponseTime"
2306
+ },
2307
+ {
2308
+ "type": "typography",
2309
+ "variant": "h3",
2310
+ "content": "@entity.avgResponseTime"
2311
+ }
2312
+ ]
2313
+ }
2314
+ ]
2315
+ },
2316
+ {
2317
+ "type": "card",
2318
+ "children": [
2319
+ {
2320
+ "type": "stack",
2321
+ "direction": "vertical",
2322
+ "gap": "sm",
2323
+ "children": [
2324
+ {
2325
+ "type": "typography",
2326
+ "variant": "caption",
2327
+ "content": "SatisfactionScore"
2328
+ },
2329
+ {
2330
+ "type": "typography",
2331
+ "variant": "h3",
2332
+ "content": "@entity.satisfactionScore"
2333
+ }
2334
+ ]
2335
+ }
2336
+ ]
2337
+ },
2338
+ {
2339
+ "type": "card",
2340
+ "children": [
2341
+ {
2342
+ "type": "stack",
2343
+ "direction": "vertical",
2344
+ "gap": "sm",
2345
+ "children": [
2346
+ {
2347
+ "type": "typography",
2348
+ "variant": "caption",
2349
+ "content": "ActiveAgents"
2350
+ },
2351
+ {
2352
+ "type": "typography",
2353
+ "variant": "h3",
2354
+ "content": "@entity.activeAgents"
2355
+ }
2356
+ ]
2357
+ }
2358
+ ]
2359
+ }
2360
+ ]
2361
+ }
2362
+ ]
2363
+ }
2364
+ ]
2365
+ ]
2366
+ },
2367
+ {
2368
+ "from": "refreshing",
2369
+ "to": "displaying",
2370
+ "event": "REFRESHED",
2371
+ "effects": [
2372
+ [
2373
+ "fetch",
2374
+ "SupportMetrics"
2375
+ ],
2376
+ [
2377
+ "render-ui",
2378
+ "main",
2379
+ {
2380
+ "type": "stack",
2381
+ "direction": "vertical",
2382
+ "gap": "lg",
2383
+ "children": [
2384
+ {
2385
+ "type": "stack",
2386
+ "direction": "horizontal",
2387
+ "gap": "md",
2388
+ "justify": "space-between",
2389
+ "children": [
2390
+ {
2391
+ "type": "stack",
2392
+ "direction": "horizontal",
2393
+ "gap": "md",
2394
+ "children": [
2395
+ {
2396
+ "type": "icon",
2397
+ "name": "activity",
2398
+ "size": "lg"
2399
+ },
2400
+ {
2401
+ "type": "typography",
2402
+ "content": "Support Metrics",
2403
+ "variant": "h2"
2404
+ }
2405
+ ]
2406
+ },
2407
+ {
2408
+ "type": "button",
2409
+ "label": "Refresh",
2410
+ "event": "REFRESH",
2411
+ "variant": "secondary",
2412
+ "icon": "refresh-cw"
2413
+ }
2414
+ ]
2415
+ },
2416
+ {
2417
+ "type": "divider"
2418
+ },
2419
+ {
2420
+ "type": "simple-grid",
2421
+ "columns": 3,
2422
+ "children": [
2423
+ {
2424
+ "type": "card",
2425
+ "children": [
2426
+ {
2427
+ "type": "stack",
2428
+ "direction": "vertical",
2429
+ "gap": "sm",
2430
+ "children": [
2431
+ {
2432
+ "type": "typography",
2433
+ "variant": "caption",
2434
+ "content": "OpenTickets"
2435
+ },
2436
+ {
2437
+ "type": "typography",
2438
+ "variant": "h3",
2439
+ "content": "@entity.openTickets"
2440
+ }
2441
+ ]
2442
+ }
2443
+ ]
2444
+ },
2445
+ {
2446
+ "type": "card",
2447
+ "children": [
2448
+ {
2449
+ "type": "stack",
2450
+ "direction": "vertical",
2451
+ "gap": "sm",
2452
+ "children": [
2453
+ {
2454
+ "type": "typography",
2455
+ "variant": "caption",
2456
+ "content": "ResolvedTickets"
2457
+ },
2458
+ {
2459
+ "type": "typography",
2460
+ "variant": "h3",
2461
+ "content": "@entity.resolvedTickets"
2462
+ }
2463
+ ]
2464
+ }
2465
+ ]
2466
+ },
2467
+ {
2468
+ "type": "card",
2469
+ "children": [
2470
+ {
2471
+ "type": "stack",
2472
+ "direction": "vertical",
2473
+ "gap": "sm",
2474
+ "children": [
2475
+ {
2476
+ "type": "typography",
2477
+ "variant": "caption",
2478
+ "content": "AvgResponseTime"
2479
+ },
2480
+ {
2481
+ "type": "typography",
2482
+ "variant": "h3",
2483
+ "content": "@entity.avgResponseTime"
2484
+ }
2485
+ ]
2486
+ }
2487
+ ]
2488
+ },
2489
+ {
2490
+ "type": "card",
2491
+ "children": [
2492
+ {
2493
+ "type": "stack",
2494
+ "direction": "vertical",
2495
+ "gap": "sm",
2496
+ "children": [
2497
+ {
2498
+ "type": "typography",
2499
+ "variant": "caption",
2500
+ "content": "SatisfactionScore"
2501
+ },
2502
+ {
2503
+ "type": "typography",
2504
+ "variant": "h3",
2505
+ "content": "@entity.satisfactionScore"
2506
+ }
2507
+ ]
2508
+ }
2509
+ ]
2510
+ },
2511
+ {
2512
+ "type": "card",
2513
+ "children": [
2514
+ {
2515
+ "type": "stack",
2516
+ "direction": "vertical",
2517
+ "gap": "sm",
2518
+ "children": [
2519
+ {
2520
+ "type": "typography",
2521
+ "variant": "caption",
2522
+ "content": "ActiveAgents"
2523
+ },
2524
+ {
2525
+ "type": "typography",
2526
+ "variant": "h3",
2527
+ "content": "@entity.activeAgents"
2528
+ }
2529
+ ]
2530
+ }
2531
+ ]
2532
+ }
2533
+ ]
2534
+ }
2535
+ ]
2536
+ }
2537
+ ]
2538
+ ]
2539
+ }
2540
+ ]
2541
+ },
2542
+ "listens": [
2543
+ {
2544
+ "event": "RESOLVE",
2545
+ "triggers": "INIT",
2546
+ "scope": "external"
2547
+ }
2548
+ ]
2549
+ }
2550
+ ],
2551
+ "pages": [
2552
+ {
2553
+ "name": "MetricsPage",
2554
+ "path": "/metrics",
2555
+ "traits": [
2556
+ {
2557
+ "ref": "SupportMetricsDisplay"
2558
+ }
2559
+ ]
2560
+ }
2561
+ ]
2562
+ }
2563
+ ]
2564
+ }