@almadar/std 8.5.1 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/behaviors/registry/agent/atoms/std-agent-activity-log.orb +97 -97
  2. package/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +129 -129
  3. package/behaviors/registry/agent/atoms/std-agent-classifier.orb +127 -127
  4. package/behaviors/registry/agent/atoms/std-agent-completion.orb +133 -133
  5. package/behaviors/registry/agent/atoms/std-agent-context-window.orb +419 -419
  6. package/behaviors/registry/agent/atoms/std-agent-conversation.orb +100 -100
  7. package/behaviors/registry/agent/atoms/std-agent-memory.orb +112 -112
  8. package/behaviors/registry/agent/atoms/std-agent-provider.orb +138 -138
  9. package/behaviors/registry/agent/atoms/std-agent-search.orb +78 -78
  10. package/behaviors/registry/agent/atoms/std-agent-session.orb +171 -171
  11. package/behaviors/registry/agent/atoms/std-agent-step-progress.orb +202 -202
  12. package/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +358 -358
  13. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +79 -79
  14. package/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +204 -204
  15. package/behaviors/registry/agent/molecules/std-agent-learner.orb +190 -190
  16. package/behaviors/registry/agent/molecules/std-agent-planner.orb +152 -152
  17. package/behaviors/registry/agent/molecules/std-agent-rag.orb +115 -115
  18. package/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +188 -188
  19. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1219 -1219
  20. package/behaviors/registry/agent/organisms/std-agent-builder.orb +2995 -2995
  21. package/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2285 -2285
  22. package/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1063 -1063
  23. package/behaviors/registry/agent/organisms/std-agent-tutor.orb +876 -876
  24. package/behaviors/registry/app/organisms/std-api-gateway.orb +840 -840
  25. package/behaviors/registry/app/organisms/std-booking-system.orb +1248 -1248
  26. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +816 -816
  27. package/behaviors/registry/app/organisms/std-cms.orb +587 -587
  28. package/behaviors/registry/app/organisms/std-coding-academy.orb +416 -416
  29. package/behaviors/registry/app/organisms/std-crm.orb +966 -966
  30. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +1375 -1375
  31. package/behaviors/registry/app/organisms/std-ecommerce.orb +1109 -1109
  32. package/behaviors/registry/app/organisms/std-finance-tracker.orb +716 -716
  33. package/behaviors/registry/app/organisms/std-healthcare.orb +1473 -1473
  34. package/behaviors/registry/app/organisms/std-helpdesk.orb +693 -693
  35. package/behaviors/registry/app/organisms/std-hr-portal.orb +1252 -1252
  36. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +895 -895
  37. package/behaviors/registry/app/organisms/std-lms.orb +876 -876
  38. package/behaviors/registry/app/organisms/std-project-manager.orb +790 -790
  39. package/behaviors/registry/app/organisms/std-realtime-chat.orb +740 -740
  40. package/behaviors/registry/app/organisms/std-social-feed.orb +266 -266
  41. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +699 -699
  42. package/behaviors/registry/core/atoms/std-browse.orb +67 -67
  43. package/behaviors/registry/core/atoms/std-cache-aside.orb +97 -97
  44. package/behaviors/registry/core/atoms/std-calendar.orb +62 -62
  45. package/behaviors/registry/core/atoms/std-circuit-breaker.orb +188 -188
  46. package/behaviors/registry/core/atoms/std-confirmation.orb +34 -34
  47. package/behaviors/registry/core/atoms/std-display.orb +370 -370
  48. package/behaviors/registry/core/atoms/std-drawer.orb +61 -61
  49. package/behaviors/registry/core/atoms/std-filter.orb +63 -63
  50. package/behaviors/registry/core/atoms/std-gallery.orb +55 -55
  51. package/behaviors/registry/core/atoms/std-modal.orb +19 -19
  52. package/behaviors/registry/core/atoms/std-pagination.orb +53 -53
  53. package/behaviors/registry/core/atoms/std-push.orb +49 -49
  54. package/behaviors/registry/core/atoms/std-rate-limiter.orb +185 -185
  55. package/behaviors/registry/core/atoms/std-related.orb +39 -39
  56. package/behaviors/registry/core/atoms/std-search.orb +73 -73
  57. package/behaviors/registry/core/atoms/std-selection.orb +110 -110
  58. package/behaviors/registry/core/atoms/std-tabs.orb +47 -47
  59. package/behaviors/registry/core/molecules/std-cart.orb +60 -60
  60. package/behaviors/registry/core/molecules/std-filtered-list.orb +11 -11
  61. package/behaviors/registry/core/molecules/std-form-advanced.orb +140 -140
  62. package/behaviors/registry/core/molecules/std-list.orb +68 -68
  63. package/behaviors/registry/core/molecules/std-wizard-form.orb +152 -152
  64. package/behaviors/registry/game/atoms/std-collision.orb +140 -140
  65. package/behaviors/registry/game/atoms/std-combat.orb +76 -76
  66. package/behaviors/registry/game/atoms/std-dialogue-box.orb +27 -27
  67. package/behaviors/registry/game/atoms/std-game-canvas2d.orb +47 -47
  68. package/behaviors/registry/game/atoms/std-gameflow.orb +49 -49
  69. package/behaviors/registry/game/atoms/std-movement.orb +276 -276
  70. package/behaviors/registry/game/atoms/std-overworld.orb +64 -64
  71. package/behaviors/registry/game/atoms/std-physics2d.orb +88 -88
  72. package/behaviors/registry/game/atoms/std-quest.orb +129 -129
  73. package/behaviors/registry/game/atoms/std-timer.orb +285 -285
  74. package/behaviors/registry/game/organisms/std-arcade-game.orb +172 -172
  75. package/behaviors/registry/game/organisms/std-logic-training.orb +89 -89
  76. package/behaviors/registry/game/organisms/std-platformer-app.orb +281 -281
  77. package/behaviors/registry/game/organisms/std-puzzle-app.orb +110 -110
  78. package/behaviors/registry/game/organisms/std-rpg-game.orb +446 -446
  79. package/behaviors/registry/game/organisms/std-stem-lab.orb +349 -349
  80. package/behaviors/registry/game/organisms/std-strategy-game.orb +550 -550
  81. package/behaviors/registry/probes/molecules/std-source-scope-probe.orb +35 -35
  82. package/behaviors/registry/service/atoms/std-service-custom-bearer.orb +93 -93
  83. package/behaviors/registry/service/atoms/std-service-email.orb +92 -92
  84. package/behaviors/registry/service/atoms/std-service-github.orb +111 -111
  85. package/behaviors/registry/service/atoms/std-service-llm.orb +132 -132
  86. package/behaviors/registry/service/atoms/std-service-oauth.orb +133 -133
  87. package/behaviors/registry/service/atoms/std-service-redis.orb +114 -114
  88. package/behaviors/registry/service/atoms/std-service-storage.orb +140 -140
  89. package/behaviors/registry/service/atoms/std-service-stripe.orb +115 -115
  90. package/behaviors/registry/service/atoms/std-service-twilio.orb +131 -131
  91. package/behaviors/registry/service/atoms/std-service-youtube.orb +128 -128
  92. package/behaviors/registry/service/organisms/std-service-marketplace.orb +1092 -1092
  93. package/behaviors/registry/service/organisms/std-service-research-assistant.orb +978 -978
  94. package/dist/behaviors/registry/agent/atoms/std-agent-activity-log.orb +97 -97
  95. package/dist/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +129 -129
  96. package/dist/behaviors/registry/agent/atoms/std-agent-classifier.orb +127 -127
  97. package/dist/behaviors/registry/agent/atoms/std-agent-completion.orb +133 -133
  98. package/dist/behaviors/registry/agent/atoms/std-agent-context-window.orb +419 -419
  99. package/dist/behaviors/registry/agent/atoms/std-agent-conversation.orb +100 -100
  100. package/dist/behaviors/registry/agent/atoms/std-agent-memory.orb +112 -112
  101. package/dist/behaviors/registry/agent/atoms/std-agent-provider.orb +138 -138
  102. package/dist/behaviors/registry/agent/atoms/std-agent-search.orb +78 -78
  103. package/dist/behaviors/registry/agent/atoms/std-agent-session.orb +171 -171
  104. package/dist/behaviors/registry/agent/atoms/std-agent-step-progress.orb +202 -202
  105. package/dist/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +358 -358
  106. package/dist/behaviors/registry/agent/atoms/std-agent-tool-call.orb +79 -79
  107. package/dist/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +204 -204
  108. package/dist/behaviors/registry/agent/molecules/std-agent-learner.orb +190 -190
  109. package/dist/behaviors/registry/agent/molecules/std-agent-planner.orb +152 -152
  110. package/dist/behaviors/registry/agent/molecules/std-agent-rag.orb +115 -115
  111. package/dist/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +188 -188
  112. package/dist/behaviors/registry/agent/organisms/std-agent-assistant.orb +1219 -1219
  113. package/dist/behaviors/registry/agent/organisms/std-agent-builder.orb +2995 -2995
  114. package/dist/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2285 -2285
  115. package/dist/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1063 -1063
  116. package/dist/behaviors/registry/agent/organisms/std-agent-tutor.orb +876 -876
  117. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +840 -840
  118. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +1248 -1248
  119. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +816 -816
  120. package/dist/behaviors/registry/app/organisms/std-cms.orb +587 -587
  121. package/dist/behaviors/registry/app/organisms/std-coding-academy.orb +416 -416
  122. package/dist/behaviors/registry/app/organisms/std-crm.orb +966 -966
  123. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +1375 -1375
  124. package/dist/behaviors/registry/app/organisms/std-ecommerce.orb +1109 -1109
  125. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +716 -716
  126. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +1473 -1473
  127. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +693 -693
  128. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +1252 -1252
  129. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +895 -895
  130. package/dist/behaviors/registry/app/organisms/std-lms.orb +876 -876
  131. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +790 -790
  132. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +740 -740
  133. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +266 -266
  134. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +699 -699
  135. package/dist/behaviors/registry/core/atoms/std-browse.orb +67 -67
  136. package/dist/behaviors/registry/core/atoms/std-cache-aside.orb +97 -97
  137. package/dist/behaviors/registry/core/atoms/std-calendar.orb +62 -62
  138. package/dist/behaviors/registry/core/atoms/std-circuit-breaker.orb +188 -188
  139. package/dist/behaviors/registry/core/atoms/std-confirmation.orb +34 -34
  140. package/dist/behaviors/registry/core/atoms/std-display.orb +370 -370
  141. package/dist/behaviors/registry/core/atoms/std-drawer.orb +61 -61
  142. package/dist/behaviors/registry/core/atoms/std-filter.orb +63 -63
  143. package/dist/behaviors/registry/core/atoms/std-gallery.orb +55 -55
  144. package/dist/behaviors/registry/core/atoms/std-modal.orb +19 -19
  145. package/dist/behaviors/registry/core/atoms/std-pagination.orb +53 -53
  146. package/dist/behaviors/registry/core/atoms/std-push.orb +49 -49
  147. package/dist/behaviors/registry/core/atoms/std-rate-limiter.orb +185 -185
  148. package/dist/behaviors/registry/core/atoms/std-related.orb +39 -39
  149. package/dist/behaviors/registry/core/atoms/std-search.orb +73 -73
  150. package/dist/behaviors/registry/core/atoms/std-selection.orb +110 -110
  151. package/dist/behaviors/registry/core/atoms/std-tabs.orb +47 -47
  152. package/dist/behaviors/registry/core/molecules/std-cart.orb +60 -60
  153. package/dist/behaviors/registry/core/molecules/std-filtered-list.orb +11 -11
  154. package/dist/behaviors/registry/core/molecules/std-form-advanced.orb +140 -140
  155. package/dist/behaviors/registry/core/molecules/std-list.orb +68 -68
  156. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +152 -152
  157. package/dist/behaviors/registry/game/atoms/std-collision.orb +140 -140
  158. package/dist/behaviors/registry/game/atoms/std-combat.orb +76 -76
  159. package/dist/behaviors/registry/game/atoms/std-dialogue-box.orb +27 -27
  160. package/dist/behaviors/registry/game/atoms/std-game-canvas2d.orb +47 -47
  161. package/dist/behaviors/registry/game/atoms/std-gameflow.orb +49 -49
  162. package/dist/behaviors/registry/game/atoms/std-movement.orb +276 -276
  163. package/dist/behaviors/registry/game/atoms/std-overworld.orb +64 -64
  164. package/dist/behaviors/registry/game/atoms/std-physics2d.orb +88 -88
  165. package/dist/behaviors/registry/game/atoms/std-quest.orb +129 -129
  166. package/dist/behaviors/registry/game/atoms/std-timer.orb +285 -285
  167. package/dist/behaviors/registry/game/organisms/std-arcade-game.orb +172 -172
  168. package/dist/behaviors/registry/game/organisms/std-logic-training.orb +89 -89
  169. package/dist/behaviors/registry/game/organisms/std-platformer-app.orb +281 -281
  170. package/dist/behaviors/registry/game/organisms/std-puzzle-app.orb +110 -110
  171. package/dist/behaviors/registry/game/organisms/std-rpg-game.orb +446 -446
  172. package/dist/behaviors/registry/game/organisms/std-stem-lab.orb +349 -349
  173. package/dist/behaviors/registry/game/organisms/std-strategy-game.orb +550 -550
  174. package/dist/behaviors/registry/probes/molecules/std-source-scope-probe.orb +35 -35
  175. package/dist/behaviors/registry/service/atoms/std-service-custom-bearer.orb +93 -93
  176. package/dist/behaviors/registry/service/atoms/std-service-email.orb +92 -92
  177. package/dist/behaviors/registry/service/atoms/std-service-github.orb +111 -111
  178. package/dist/behaviors/registry/service/atoms/std-service-llm.orb +132 -132
  179. package/dist/behaviors/registry/service/atoms/std-service-oauth.orb +133 -133
  180. package/dist/behaviors/registry/service/atoms/std-service-redis.orb +114 -114
  181. package/dist/behaviors/registry/service/atoms/std-service-storage.orb +140 -140
  182. package/dist/behaviors/registry/service/atoms/std-service-stripe.orb +115 -115
  183. package/dist/behaviors/registry/service/atoms/std-service-twilio.orb +131 -131
  184. package/dist/behaviors/registry/service/atoms/std-service-youtube.orb +128 -128
  185. package/dist/behaviors/registry/service/organisms/std-service-marketplace.orb +1092 -1092
  186. package/dist/behaviors/registry/service/organisms/std-service-research-assistant.orb +978 -978
  187. package/package.json +1 -1
@@ -57,7 +57,7 @@
57
57
  "event": "RouteLoaded",
58
58
  "description": "Fired when Route finishes loading",
59
59
  "scope": "internal",
60
- "payload": [
60
+ "payloadSchema": [
61
61
  {
62
62
  "name": "data",
63
63
  "type": "[Route]"
@@ -68,7 +68,7 @@
68
68
  "event": "RouteLoadFailed",
69
69
  "description": "Fired when Route fails to load",
70
70
  "scope": "internal",
71
- "payload": [
71
+ "payloadSchema": [
72
72
  {
73
73
  "name": "error",
74
74
  "type": "string"
@@ -82,7 +82,7 @@
82
82
  {
83
83
  "event": "RouteSaved",
84
84
  "scope": "internal",
85
- "payload": [
85
+ "payloadSchema": [
86
86
  {
87
87
  "name": "id",
88
88
  "type": "string"
@@ -92,7 +92,7 @@
92
92
  {
93
93
  "event": "RouteSaveFailed",
94
94
  "scope": "internal",
95
- "payload": [
95
+ "payloadSchema": [
96
96
  {
97
97
  "name": "error",
98
98
  "type": "string"
@@ -106,7 +106,7 @@
106
106
  {
107
107
  "event": "RouteUpdated",
108
108
  "scope": "internal",
109
- "payload": [
109
+ "payloadSchema": [
110
110
  {
111
111
  "name": "id",
112
112
  "type": "string"
@@ -116,7 +116,7 @@
116
116
  {
117
117
  "event": "RouteUpdateFailed",
118
118
  "scope": "internal",
119
- "payload": [
119
+ "payloadSchema": [
120
120
  {
121
121
  "name": "error",
122
122
  "type": "string"
@@ -130,7 +130,7 @@
130
130
  {
131
131
  "event": "RouteDeleted",
132
132
  "scope": "internal",
133
- "payload": [
133
+ "payloadSchema": [
134
134
  {
135
135
  "name": "id",
136
136
  "type": "string"
@@ -140,7 +140,7 @@
140
140
  {
141
141
  "event": "RouteDeleteFailed",
142
142
  "scope": "internal",
143
- "payload": [
143
+ "payloadSchema": [
144
144
  {
145
145
  "name": "error",
146
146
  "type": "string"
@@ -193,7 +193,7 @@
193
193
  {
194
194
  "key": "RouteLoaded",
195
195
  "name": "Route loaded",
196
- "payload": [
196
+ "payloadSchema": [
197
197
  {
198
198
  "name": "data",
199
199
  "type": "[Route]"
@@ -203,7 +203,7 @@
203
203
  {
204
204
  "key": "RouteLoadFailed",
205
205
  "name": "Route load failed",
206
- "payload": [
206
+ "payloadSchema": [
207
207
  {
208
208
  "name": "error",
209
209
  "type": "string"
@@ -217,7 +217,7 @@
217
217
  {
218
218
  "key": "RouteSaved",
219
219
  "name": "Route saved",
220
- "payload": [
220
+ "payloadSchema": [
221
221
  {
222
222
  "name": "id",
223
223
  "type": "string"
@@ -227,7 +227,7 @@
227
227
  {
228
228
  "key": "RouteSaveFailed",
229
229
  "name": "Route save failed",
230
- "payload": [
230
+ "payloadSchema": [
231
231
  {
232
232
  "name": "error",
233
233
  "type": "string"
@@ -241,7 +241,7 @@
241
241
  {
242
242
  "key": "RouteUpdated",
243
243
  "name": "Route updated",
244
- "payload": [
244
+ "payloadSchema": [
245
245
  {
246
246
  "name": "id",
247
247
  "type": "string"
@@ -251,7 +251,7 @@
251
251
  {
252
252
  "key": "RouteUpdateFailed",
253
253
  "name": "Route update failed",
254
- "payload": [
254
+ "payloadSchema": [
255
255
  {
256
256
  "name": "error",
257
257
  "type": "string"
@@ -265,7 +265,7 @@
265
265
  {
266
266
  "key": "RouteDeleted",
267
267
  "name": "Route deleted",
268
- "payload": [
268
+ "payloadSchema": [
269
269
  {
270
270
  "name": "id",
271
271
  "type": "string"
@@ -275,7 +275,7 @@
275
275
  {
276
276
  "key": "RouteDeleteFailed",
277
277
  "name": "Route delete failed",
278
- "payload": [
278
+ "payloadSchema": [
279
279
  {
280
280
  "name": "error",
281
281
  "type": "string"
@@ -289,7 +289,7 @@
289
289
  {
290
290
  "key": "VIEW",
291
291
  "name": "View",
292
- "payload": [
292
+ "payloadSchema": [
293
293
  {
294
294
  "name": "id",
295
295
  "type": "string",
@@ -304,7 +304,7 @@
304
304
  {
305
305
  "key": "EDIT",
306
306
  "name": "Edit",
307
- "payload": [
307
+ "payloadSchema": [
308
308
  {
309
309
  "name": "id",
310
310
  "type": "string",
@@ -319,7 +319,7 @@
319
319
  {
320
320
  "key": "DELETE",
321
321
  "name": "Delete",
322
- "payload": [
322
+ "payloadSchema": [
323
323
  {
324
324
  "name": "id",
325
325
  "type": "string",
@@ -343,8 +343,8 @@
343
343
  "Route",
344
344
  {
345
345
  "emit": {
346
- "success": "RouteLoaded",
347
- "failure": "RouteLoadFailed"
346
+ "failure": "RouteLoadFailed",
347
+ "success": "RouteLoaded"
348
348
  }
349
349
  }
350
350
  ],
@@ -352,11 +352,7 @@
352
352
  "render-ui",
353
353
  "main",
354
354
  {
355
- "className": "py-12",
356
355
  "direction": "vertical",
357
- "type": "stack",
358
- "gap": "md",
359
- "align": "center",
360
356
  "children": [
361
357
  {
362
358
  "type": "spinner"
@@ -367,7 +363,11 @@
367
363
  "variant": "caption",
368
364
  "type": "typography"
369
365
  }
370
- ]
366
+ ],
367
+ "type": "stack",
368
+ "gap": "md",
369
+ "className": "py-12",
370
+ "align": "center"
371
371
  }
372
372
  ]
373
373
  ]
@@ -381,24 +381,37 @@
381
381
  "render-ui",
382
382
  "main",
383
383
  {
384
+ "type": "dashboard-layout",
384
385
  "appName": "API Gateway",
386
+ "navItems": [
387
+ {
388
+ "icon": "git-branch",
389
+ "href": "/routes",
390
+ "label": "Routes"
391
+ },
392
+ {
393
+ "label": "Backends",
394
+ "href": "/backends",
395
+ "icon": "server"
396
+ },
397
+ {
398
+ "label": "Analytics",
399
+ "href": "/analytics",
400
+ "icon": "bar-chart-2"
401
+ }
402
+ ],
385
403
  "children": [
386
404
  {
405
+ "direction": "vertical",
387
406
  "children": [
388
407
  {
389
- "gap": "md",
390
- "justify": "between",
391
- "align": "center",
392
- "type": "stack",
393
408
  "children": [
394
409
  {
395
- "direction": "horizontal",
396
- "align": "center",
397
- "gap": "sm",
410
+ "type": "stack",
398
411
  "children": [
399
412
  {
400
- "type": "icon",
401
- "name": "git-branch"
413
+ "name": "git-branch",
414
+ "type": "icon"
402
415
  },
403
416
  {
404
417
  "content": "Routes",
@@ -406,29 +419,37 @@
406
419
  "type": "typography"
407
420
  }
408
421
  ],
409
- "type": "stack"
422
+ "align": "center",
423
+ "gap": "sm",
424
+ "direction": "horizontal"
410
425
  },
411
426
  {
412
- "gap": "sm",
413
- "type": "stack",
414
- "direction": "horizontal",
415
427
  "children": [
416
428
  {
417
- "action": "CREATE",
418
429
  "type": "button",
419
- "variant": "primary",
430
+ "action": "CREATE",
420
431
  "label": "Create Route",
432
+ "variant": "primary",
421
433
  "icon": "plus"
422
434
  }
423
- ]
435
+ ],
436
+ "type": "stack",
437
+ "direction": "horizontal",
438
+ "gap": "sm"
424
439
  }
425
440
  ],
426
- "direction": "horizontal"
441
+ "direction": "horizontal",
442
+ "gap": "md",
443
+ "justify": "between",
444
+ "type": "stack",
445
+ "align": "center"
427
446
  },
428
447
  {
429
448
  "type": "divider"
430
449
  },
431
450
  {
451
+ "gap": "sm",
452
+ "fields": [],
432
453
  "itemActions": [
433
454
  {
434
455
  "event": "VIEW",
@@ -436,18 +457,18 @@
436
457
  "variant": "ghost"
437
458
  },
438
459
  {
439
- "label": "Edit",
440
460
  "variant": "ghost",
441
- "event": "EDIT"
461
+ "event": "EDIT",
462
+ "label": "Edit"
442
463
  },
443
464
  {
444
- "label": "Delete",
465
+ "event": "DELETE",
445
466
  "variant": "danger",
446
- "event": "DELETE"
467
+ "label": "Delete"
447
468
  }
448
469
  ],
470
+ "entity": "@payload.data",
449
471
  "variant": "card",
450
- "gap": "sm",
451
472
  "columns": [
452
473
  {
453
474
  "variant": "badge",
@@ -455,47 +476,26 @@
455
476
  },
456
477
  {
457
478
  "variant": "h3",
458
- "icon": "git-branch",
459
- "name": "path"
479
+ "name": "path",
480
+ "icon": "git-branch"
460
481
  },
461
482
  {
462
483
  "variant": "body",
463
484
  "name": "backend"
464
485
  },
465
486
  {
466
- "variant": "caption",
467
487
  "name": "rateLimit",
468
- "format": "number",
469
- "label": "Rate Limit"
488
+ "variant": "caption",
489
+ "label": "Rate Limit",
490
+ "format": "number"
470
491
  }
471
492
  ],
472
- "entity": "@payload.data",
473
- "type": "data-list",
474
- "fields": []
493
+ "type": "data-list"
475
494
  }
476
495
  ],
477
- "className": "max-w-5xl mx-auto w-full",
478
- "gap": "lg",
479
496
  "type": "stack",
480
- "direction": "vertical"
481
- }
482
- ],
483
- "type": "dashboard-layout",
484
- "navItems": [
485
- {
486
- "label": "Routes",
487
- "icon": "git-branch",
488
- "href": "/routes"
489
- },
490
- {
491
- "icon": "server",
492
- "label": "Backends",
493
- "href": "/backends"
494
- },
495
- {
496
- "href": "/analytics",
497
- "icon": "bar-chart-2",
498
- "label": "Analytics"
497
+ "className": "max-w-5xl mx-auto w-full",
498
+ "gap": "lg"
499
499
  }
500
500
  ]
501
501
  }
@@ -511,16 +511,11 @@
511
511
  "render-ui",
512
512
  "main",
513
513
  {
514
- "type": "stack",
515
- "direction": "vertical",
516
- "gap": "md",
517
- "align": "center",
518
- "className": "py-12",
519
514
  "children": [
520
515
  {
521
516
  "color": "destructive",
522
- "type": "icon",
523
- "name": "alert-triangle"
517
+ "name": "alert-triangle",
518
+ "type": "icon"
524
519
  },
525
520
  {
526
521
  "type": "typography",
@@ -528,19 +523,24 @@
528
523
  "content": "Failed to load routes"
529
524
  },
530
525
  {
526
+ "color": "muted",
531
527
  "type": "typography",
532
528
  "content": "@payload.error",
533
- "variant": "body",
534
- "color": "muted"
529
+ "variant": "body"
535
530
  },
536
531
  {
537
- "action": "INIT",
538
- "variant": "primary",
539
532
  "type": "button",
533
+ "variant": "primary",
540
534
  "icon": "rotate-ccw",
541
- "label": "Retry"
535
+ "label": "Retry",
536
+ "action": "INIT"
542
537
  }
543
- ]
538
+ ],
539
+ "type": "stack",
540
+ "direction": "vertical",
541
+ "align": "center",
542
+ "className": "py-12",
543
+ "gap": "md"
544
544
  }
545
545
  ]
546
546
  ]
@@ -557,7 +557,7 @@
557
557
  {
558
558
  "event": "ROUTE_CREATED",
559
559
  "scope": "external",
560
- "payload": [
560
+ "payloadSchema": [
561
561
  {
562
562
  "name": "id",
563
563
  "type": "string"
@@ -568,7 +568,7 @@
568
568
  "event": "RouteLoadFailed",
569
569
  "description": "Fired when Route fails to load",
570
570
  "scope": "internal",
571
- "payload": [
571
+ "payloadSchema": [
572
572
  {
573
573
  "name": "error",
574
574
  "type": "string"
@@ -583,7 +583,7 @@
583
583
  "event": "RouteLoaded",
584
584
  "description": "Fired when Route finishes loading",
585
585
  "scope": "internal",
586
- "payload": [
586
+ "payloadSchema": [
587
587
  {
588
588
  "name": "data",
589
589
  "type": "[Route]"
@@ -593,7 +593,7 @@
593
593
  {
594
594
  "event": "RouteSaveFailed",
595
595
  "scope": "internal",
596
- "payload": [
596
+ "payloadSchema": [
597
597
  {
598
598
  "name": "error",
599
599
  "type": "string"
@@ -607,7 +607,7 @@
607
607
  {
608
608
  "event": "RouteSaved",
609
609
  "scope": "internal",
610
- "payload": [
610
+ "payloadSchema": [
611
611
  {
612
612
  "name": "id",
613
613
  "type": "string"
@@ -641,7 +641,7 @@
641
641
  {
642
642
  "key": "SAVE",
643
643
  "name": "Save",
644
- "payload": [
644
+ "payloadSchema": [
645
645
  {
646
646
  "name": "data",
647
647
  "type": "object",
@@ -656,7 +656,7 @@
656
656
  {
657
657
  "key": "RouteLoadFailed",
658
658
  "name": "Route load failed",
659
- "payload": [
659
+ "payloadSchema": [
660
660
  {
661
661
  "name": "error",
662
662
  "type": "string"
@@ -670,7 +670,7 @@
670
670
  {
671
671
  "key": "RouteLoaded",
672
672
  "name": "Route loaded",
673
- "payload": [
673
+ "payloadSchema": [
674
674
  {
675
675
  "name": "data",
676
676
  "type": "[Route]"
@@ -680,7 +680,7 @@
680
680
  {
681
681
  "key": "RouteSaveFailed",
682
682
  "name": "Route save failed",
683
- "payload": [
683
+ "payloadSchema": [
684
684
  {
685
685
  "name": "error",
686
686
  "type": "string"
@@ -694,7 +694,7 @@
694
694
  {
695
695
  "key": "RouteSaved",
696
696
  "name": "Route saved",
697
- "payload": [
697
+ "payloadSchema": [
698
698
  {
699
699
  "name": "id",
700
700
  "type": "string"
@@ -724,8 +724,8 @@
724
724
  "Route",
725
725
  {
726
726
  "emit": {
727
- "success": "RouteLoaded",
728
- "failure": "RouteLoadFailed"
727
+ "failure": "RouteLoadFailed",
728
+ "success": "RouteLoaded"
729
729
  }
730
730
  }
731
731
  ],
@@ -733,17 +733,18 @@
733
733
  "render-ui",
734
734
  "modal",
735
735
  {
736
+ "direction": "vertical",
736
737
  "gap": "md",
737
738
  "type": "stack",
738
739
  "children": [
739
740
  {
740
- "gap": "sm",
741
- "direction": "horizontal",
742
741
  "type": "stack",
742
+ "direction": "horizontal",
743
+ "gap": "sm",
743
744
  "children": [
744
745
  {
745
- "name": "plus-circle",
746
- "type": "icon"
746
+ "type": "icon",
747
+ "name": "plus-circle"
747
748
  },
748
749
  {
749
750
  "variant": "h3",
@@ -756,19 +757,18 @@
756
757
  "type": "divider"
757
758
  },
758
759
  {
759
- "submitEvent": "SAVE",
760
- "cancelEvent": "CLOSE",
761
- "mode": "create",
762
760
  "type": "form-section",
763
761
  "fields": [
764
762
  "path",
765
763
  "method",
766
764
  "backend",
767
765
  "rateLimit"
768
- ]
766
+ ],
767
+ "mode": "create",
768
+ "submitEvent": "SAVE",
769
+ "cancelEvent": "CLOSE"
769
770
  }
770
- ],
771
- "direction": "vertical"
771
+ ]
772
772
  }
773
773
  ]
774
774
  ]
@@ -844,7 +844,7 @@
844
844
  {
845
845
  "event": "ROUTE_UPDATED",
846
846
  "scope": "external",
847
- "payload": [
847
+ "payloadSchema": [
848
848
  {
849
849
  "name": "id",
850
850
  "type": "string"
@@ -855,7 +855,7 @@
855
855
  "event": "RouteLoadFailed",
856
856
  "description": "Fired when Route fails to load",
857
857
  "scope": "internal",
858
- "payload": [
858
+ "payloadSchema": [
859
859
  {
860
860
  "name": "error",
861
861
  "type": "string"
@@ -870,7 +870,7 @@
870
870
  "event": "RouteLoaded",
871
871
  "description": "Fired when Route finishes loading",
872
872
  "scope": "internal",
873
- "payload": [
873
+ "payloadSchema": [
874
874
  {
875
875
  "name": "data",
876
876
  "type": "[Route]"
@@ -880,7 +880,7 @@
880
880
  {
881
881
  "event": "RouteUpdateFailed",
882
882
  "scope": "internal",
883
- "payload": [
883
+ "payloadSchema": [
884
884
  {
885
885
  "name": "error",
886
886
  "type": "string"
@@ -894,7 +894,7 @@
894
894
  {
895
895
  "event": "RouteUpdated",
896
896
  "scope": "internal",
897
- "payload": [
897
+ "payloadSchema": [
898
898
  {
899
899
  "name": "id",
900
900
  "type": "string"
@@ -920,7 +920,7 @@
920
920
  {
921
921
  "key": "EDIT",
922
922
  "name": "Edit",
923
- "payload": [
923
+ "payloadSchema": [
924
924
  {
925
925
  "name": "id",
926
926
  "type": "string",
@@ -939,7 +939,7 @@
939
939
  {
940
940
  "key": "SAVE",
941
941
  "name": "Save",
942
- "payload": [
942
+ "payloadSchema": [
943
943
  {
944
944
  "name": "data",
945
945
  "type": "object",
@@ -954,7 +954,7 @@
954
954
  {
955
955
  "key": "RouteLoadFailed",
956
956
  "name": "Route load failed",
957
- "payload": [
957
+ "payloadSchema": [
958
958
  {
959
959
  "name": "error",
960
960
  "type": "string"
@@ -968,7 +968,7 @@
968
968
  {
969
969
  "key": "RouteLoaded",
970
970
  "name": "Route loaded",
971
- "payload": [
971
+ "payloadSchema": [
972
972
  {
973
973
  "name": "data",
974
974
  "type": "[Route]"
@@ -978,7 +978,7 @@
978
978
  {
979
979
  "key": "RouteUpdateFailed",
980
980
  "name": "Route update failed",
981
- "payload": [
981
+ "payloadSchema": [
982
982
  {
983
983
  "name": "error",
984
984
  "type": "string"
@@ -992,7 +992,7 @@
992
992
  {
993
993
  "key": "RouteUpdated",
994
994
  "name": "Route updated",
995
- "payload": [
995
+ "payloadSchema": [
996
996
  {
997
997
  "name": "id",
998
998
  "type": "string"
@@ -1021,54 +1021,54 @@
1021
1021
  "fetch",
1022
1022
  "Route",
1023
1023
  {
1024
+ "id": "@payload.id",
1024
1025
  "emit": {
1025
1026
  "failure": "RouteLoadFailed",
1026
1027
  "success": "RouteLoaded"
1027
- },
1028
- "id": "@payload.id"
1028
+ }
1029
1029
  }
1030
1030
  ],
1031
1031
  [
1032
1032
  "render-ui",
1033
1033
  "modal",
1034
1034
  {
1035
- "direction": "vertical",
1036
- "type": "stack",
1037
1035
  "children": [
1038
1036
  {
1037
+ "direction": "horizontal",
1038
+ "type": "stack",
1039
1039
  "children": [
1040
1040
  {
1041
- "name": "edit",
1042
- "type": "icon"
1041
+ "type": "icon",
1042
+ "name": "edit"
1043
1043
  },
1044
1044
  {
1045
- "type": "typography",
1046
1045
  "variant": "h3",
1046
+ "type": "typography",
1047
1047
  "content": "Edit Route"
1048
1048
  }
1049
1049
  ],
1050
- "gap": "sm",
1051
- "direction": "horizontal",
1052
- "type": "stack"
1050
+ "gap": "sm"
1053
1051
  },
1054
1052
  {
1055
1053
  "type": "divider"
1056
1054
  },
1057
1055
  {
1058
- "entity": "@payload.row",
1059
1056
  "type": "form-section",
1060
- "mode": "edit",
1061
- "submitEvent": "SAVE",
1057
+ "entity": "@payload.row",
1062
1058
  "fields": [
1063
1059
  "path",
1064
1060
  "method",
1065
1061
  "backend",
1066
1062
  "rateLimit"
1067
1063
  ],
1064
+ "mode": "edit",
1065
+ "submitEvent": "SAVE",
1068
1066
  "cancelEvent": "CLOSE"
1069
1067
  }
1070
1068
  ],
1071
- "gap": "md"
1069
+ "direction": "vertical",
1070
+ "gap": "md",
1071
+ "type": "stack"
1072
1072
  }
1073
1073
  ]
1074
1074
  ]
@@ -1145,7 +1145,7 @@
1145
1145
  "event": "RouteLoaded",
1146
1146
  "description": "Fired when Route finishes loading",
1147
1147
  "scope": "internal",
1148
- "payload": [
1148
+ "payloadSchema": [
1149
1149
  {
1150
1150
  "name": "data",
1151
1151
  "type": "[Route]"
@@ -1156,7 +1156,7 @@
1156
1156
  "event": "RouteLoadFailed",
1157
1157
  "description": "Fired when Route fails to load",
1158
1158
  "scope": "internal",
1159
- "payload": [
1159
+ "payloadSchema": [
1160
1160
  {
1161
1161
  "name": "error",
1162
1162
  "type": "string"
@@ -1186,7 +1186,7 @@
1186
1186
  {
1187
1187
  "key": "VIEW",
1188
1188
  "name": "View",
1189
- "payload": [
1189
+ "payloadSchema": [
1190
1190
  {
1191
1191
  "name": "id",
1192
1192
  "type": "string",
@@ -1201,7 +1201,7 @@
1201
1201
  {
1202
1202
  "key": "SAVE",
1203
1203
  "name": "Save",
1204
- "payload": [
1204
+ "payloadSchema": [
1205
1205
  {
1206
1206
  "name": "data",
1207
1207
  "type": "object",
@@ -1212,7 +1212,7 @@
1212
1212
  {
1213
1213
  "key": "RouteLoaded",
1214
1214
  "name": "Route loaded",
1215
- "payload": [
1215
+ "payloadSchema": [
1216
1216
  {
1217
1217
  "name": "data",
1218
1218
  "type": "[Route]"
@@ -1222,7 +1222,7 @@
1222
1222
  {
1223
1223
  "key": "RouteLoadFailed",
1224
1224
  "name": "Route load failed",
1225
- "payload": [
1225
+ "payloadSchema": [
1226
1226
  {
1227
1227
  "name": "error",
1228
1228
  "type": "string"
@@ -1256,8 +1256,8 @@
1256
1256
  "Route",
1257
1257
  {
1258
1258
  "emit": {
1259
- "failure": "RouteLoadFailed",
1260
- "success": "RouteLoaded"
1259
+ "success": "RouteLoaded",
1260
+ "failure": "RouteLoadFailed"
1261
1261
  },
1262
1262
  "id": "@payload.id"
1263
1263
  }
@@ -1266,25 +1266,24 @@
1266
1266
  "render-ui",
1267
1267
  "modal",
1268
1268
  {
1269
- "gap": "md",
1270
1269
  "type": "stack",
1271
- "direction": "vertical",
1270
+ "gap": "md",
1272
1271
  "children": [
1273
1272
  {
1274
- "type": "stack",
1275
- "direction": "horizontal",
1276
- "align": "center",
1277
1273
  "children": [
1278
1274
  {
1279
1275
  "type": "icon",
1280
1276
  "name": "eye"
1281
1277
  },
1282
1278
  {
1283
- "variant": "h3",
1284
1279
  "content": "@entity.path",
1280
+ "variant": "h3",
1285
1281
  "type": "typography"
1286
1282
  }
1287
1283
  ],
1284
+ "type": "stack",
1285
+ "align": "center",
1286
+ "direction": "horizontal",
1288
1287
  "gap": "sm"
1289
1288
  },
1290
1289
  {
@@ -1292,32 +1291,32 @@
1292
1291
  },
1293
1292
  {
1294
1293
  "gap": "md",
1295
- "direction": "horizontal",
1296
- "type": "stack",
1297
1294
  "children": [
1298
1295
  {
1296
+ "variant": "caption",
1299
1297
  "content": "Path",
1300
- "type": "typography",
1301
- "variant": "caption"
1298
+ "type": "typography"
1302
1299
  },
1303
1300
  {
1304
1301
  "content": "@entity.path",
1305
1302
  "variant": "body",
1306
1303
  "type": "typography"
1307
1304
  }
1308
- ]
1305
+ ],
1306
+ "direction": "horizontal",
1307
+ "type": "stack"
1309
1308
  },
1310
1309
  {
1311
1310
  "children": [
1312
1311
  {
1312
+ "type": "typography",
1313
1313
  "variant": "caption",
1314
- "content": "Method",
1315
- "type": "typography"
1314
+ "content": "Method"
1316
1315
  },
1317
1316
  {
1317
+ "type": "typography",
1318
1318
  "variant": "body",
1319
- "content": "@entity.method",
1320
- "type": "typography"
1319
+ "content": "@entity.method"
1321
1320
  }
1322
1321
  ],
1323
1322
  "gap": "md",
@@ -1325,64 +1324,65 @@
1325
1324
  "type": "stack"
1326
1325
  },
1327
1326
  {
1328
- "type": "stack",
1329
- "direction": "horizontal",
1330
- "gap": "md",
1331
1327
  "children": [
1332
1328
  {
1333
1329
  "variant": "caption",
1334
- "type": "typography",
1335
- "content": "Backend"
1330
+ "content": "Backend",
1331
+ "type": "typography"
1336
1332
  },
1337
1333
  {
1338
1334
  "type": "typography",
1339
1335
  "variant": "body",
1340
1336
  "content": "@entity.backend"
1341
1337
  }
1342
- ]
1338
+ ],
1339
+ "direction": "horizontal",
1340
+ "gap": "md",
1341
+ "type": "stack"
1343
1342
  },
1344
1343
  {
1344
+ "type": "stack",
1345
+ "gap": "md",
1345
1346
  "direction": "horizontal",
1346
1347
  "children": [
1347
1348
  {
1349
+ "content": "Rate Limit",
1348
1350
  "type": "typography",
1349
- "variant": "caption",
1350
- "content": "Rate Limit"
1351
+ "variant": "caption"
1351
1352
  },
1352
1353
  {
1353
- "content": "@entity.rateLimit",
1354
1354
  "type": "typography",
1355
+ "content": "@entity.rateLimit",
1355
1356
  "variant": "body"
1356
1357
  }
1357
- ],
1358
- "type": "stack",
1359
- "gap": "md"
1358
+ ]
1360
1359
  },
1361
1360
  {
1362
1361
  "type": "divider"
1363
1362
  },
1364
1363
  {
1364
+ "type": "stack",
1365
1365
  "direction": "horizontal",
1366
+ "gap": "sm",
1367
+ "justify": "end",
1366
1368
  "children": [
1367
1369
  {
1368
1370
  "type": "button",
1369
- "variant": "primary",
1370
1371
  "label": "Edit",
1372
+ "variant": "primary",
1371
1373
  "action": "EDIT",
1372
1374
  "icon": "edit"
1373
1375
  },
1374
1376
  {
1375
- "variant": "ghost",
1376
- "type": "button",
1377
1377
  "action": "CLOSE",
1378
- "label": "Close"
1378
+ "label": "Close",
1379
+ "variant": "ghost",
1380
+ "type": "button"
1379
1381
  }
1380
- ],
1381
- "gap": "sm",
1382
- "justify": "end",
1383
- "type": "stack"
1382
+ ]
1384
1383
  }
1385
- ]
1384
+ ],
1385
+ "direction": "vertical"
1386
1386
  }
1387
1387
  ]
1388
1388
  ]
@@ -1442,7 +1442,7 @@
1442
1442
  {
1443
1443
  "event": "ROUTE_DELETED",
1444
1444
  "scope": "external",
1445
- "payload": [
1445
+ "payloadSchema": [
1446
1446
  {
1447
1447
  "name": "id",
1448
1448
  "type": "string"
@@ -1452,7 +1452,7 @@
1452
1452
  {
1453
1453
  "event": "RouteDeleteFailed",
1454
1454
  "scope": "internal",
1455
- "payload": [
1455
+ "payloadSchema": [
1456
1456
  {
1457
1457
  "name": "error",
1458
1458
  "type": "string"
@@ -1466,7 +1466,7 @@
1466
1466
  {
1467
1467
  "event": "RouteDeleted",
1468
1468
  "scope": "internal",
1469
- "payload": [
1469
+ "payloadSchema": [
1470
1470
  {
1471
1471
  "name": "id",
1472
1472
  "type": "string"
@@ -1477,7 +1477,7 @@
1477
1477
  "event": "RouteLoadFailed",
1478
1478
  "description": "Fired when Route fails to load",
1479
1479
  "scope": "internal",
1480
- "payload": [
1480
+ "payloadSchema": [
1481
1481
  {
1482
1482
  "name": "error",
1483
1483
  "type": "string"
@@ -1492,7 +1492,7 @@
1492
1492
  "event": "RouteLoaded",
1493
1493
  "description": "Fired when Route finishes loading",
1494
1494
  "scope": "internal",
1495
- "payload": [
1495
+ "payloadSchema": [
1496
1496
  {
1497
1497
  "name": "data",
1498
1498
  "type": "[Route]"
@@ -1518,7 +1518,7 @@
1518
1518
  {
1519
1519
  "key": "DELETE",
1520
1520
  "name": "Delete",
1521
- "payload": [
1521
+ "payloadSchema": [
1522
1522
  {
1523
1523
  "name": "id",
1524
1524
  "type": "string",
@@ -1545,7 +1545,7 @@
1545
1545
  {
1546
1546
  "key": "RouteDeleteFailed",
1547
1547
  "name": "Route delete failed",
1548
- "payload": [
1548
+ "payloadSchema": [
1549
1549
  {
1550
1550
  "name": "error",
1551
1551
  "type": "string"
@@ -1559,7 +1559,7 @@
1559
1559
  {
1560
1560
  "key": "RouteDeleted",
1561
1561
  "name": "Route deleted",
1562
- "payload": [
1562
+ "payloadSchema": [
1563
1563
  {
1564
1564
  "name": "id",
1565
1565
  "type": "string"
@@ -1569,7 +1569,7 @@
1569
1569
  {
1570
1570
  "key": "RouteLoadFailed",
1571
1571
  "name": "Route load failed",
1572
- "payload": [
1572
+ "payloadSchema": [
1573
1573
  {
1574
1574
  "name": "error",
1575
1575
  "type": "string"
@@ -1583,7 +1583,7 @@
1583
1583
  {
1584
1584
  "key": "RouteLoaded",
1585
1585
  "name": "Route loaded",
1586
- "payload": [
1586
+ "payloadSchema": [
1587
1587
  {
1588
1588
  "name": "data",
1589
1589
  "type": "[Route]"
@@ -1628,57 +1628,57 @@
1628
1628
  "render-ui",
1629
1629
  "modal",
1630
1630
  {
1631
- "type": "stack",
1632
- "gap": "md",
1633
1631
  "children": [
1634
1632
  {
1635
- "gap": "sm",
1636
1633
  "type": "stack",
1637
- "direction": "horizontal",
1638
1634
  "align": "center",
1635
+ "direction": "horizontal",
1639
1636
  "children": [
1640
1637
  {
1641
- "type": "icon",
1642
- "name": "alert-triangle"
1638
+ "name": "alert-triangle",
1639
+ "type": "icon"
1643
1640
  },
1644
1641
  {
1645
- "variant": "h3",
1646
1642
  "content": "Delete Route",
1643
+ "variant": "h3",
1647
1644
  "type": "typography"
1648
1645
  }
1649
- ]
1646
+ ],
1647
+ "gap": "sm"
1650
1648
  },
1651
1649
  {
1652
1650
  "type": "divider"
1653
1651
  },
1654
1652
  {
1655
1653
  "variant": "error",
1656
- "message": "This action cannot be undone.",
1657
- "type": "alert"
1654
+ "type": "alert",
1655
+ "message": "This action cannot be undone."
1658
1656
  },
1659
1657
  {
1658
+ "type": "stack",
1659
+ "direction": "horizontal",
1660
+ "gap": "sm",
1660
1661
  "justify": "end",
1661
1662
  "children": [
1662
1663
  {
1663
- "type": "button",
1664
1664
  "label": "Cancel",
1665
1665
  "action": "CANCEL",
1666
+ "type": "button",
1666
1667
  "variant": "ghost"
1667
1668
  },
1668
1669
  {
1669
1670
  "type": "button",
1670
- "label": "Delete",
1671
- "icon": "check",
1672
1671
  "action": "CONFIRM_DELETE",
1673
- "variant": "danger"
1672
+ "variant": "danger",
1673
+ "icon": "check",
1674
+ "label": "Delete"
1674
1675
  }
1675
- ],
1676
- "gap": "sm",
1677
- "direction": "horizontal",
1678
- "type": "stack"
1676
+ ]
1679
1677
  }
1680
1678
  ],
1681
- "direction": "vertical"
1679
+ "direction": "vertical",
1680
+ "type": "stack",
1681
+ "gap": "md"
1682
1682
  }
1683
1683
  ]
1684
1684
  ]
@@ -1850,7 +1850,7 @@
1850
1850
  "event": "BackendLoaded",
1851
1851
  "description": "Fired when Backend finishes loading",
1852
1852
  "scope": "internal",
1853
- "payload": [
1853
+ "payloadSchema": [
1854
1854
  {
1855
1855
  "name": "data",
1856
1856
  "type": "[Backend]"
@@ -1861,7 +1861,7 @@
1861
1861
  "event": "BackendLoadFailed",
1862
1862
  "description": "Fired when Backend fails to load",
1863
1863
  "scope": "internal",
1864
- "payload": [
1864
+ "payloadSchema": [
1865
1865
  {
1866
1866
  "name": "error",
1867
1867
  "type": "string"
@@ -1910,7 +1910,7 @@
1910
1910
  {
1911
1911
  "key": "BackendLoaded",
1912
1912
  "name": "Backend loaded",
1913
- "payload": [
1913
+ "payloadSchema": [
1914
1914
  {
1915
1915
  "name": "data",
1916
1916
  "type": "[Backend]"
@@ -1920,7 +1920,7 @@
1920
1920
  {
1921
1921
  "key": "BackendLoadFailed",
1922
1922
  "name": "Backend load failed",
1923
- "payload": [
1923
+ "payloadSchema": [
1924
1924
  {
1925
1925
  "name": "error",
1926
1926
  "type": "string"
@@ -1954,94 +1954,94 @@
1954
1954
  {
1955
1955
  "children": [
1956
1956
  {
1957
+ "direction": "vertical",
1958
+ "type": "stack",
1957
1959
  "children": [
1958
1960
  {
1961
+ "type": "stack",
1962
+ "align": "center",
1963
+ "direction": "horizontal",
1964
+ "justify": "between",
1959
1965
  "children": [
1960
1966
  {
1961
1967
  "children": [
1962
1968
  {
1963
- "name": "server",
1964
- "type": "icon"
1969
+ "type": "icon",
1970
+ "name": "server"
1965
1971
  },
1966
1972
  {
1967
- "content": "Backend",
1968
1973
  "type": "typography",
1974
+ "content": "Backend",
1969
1975
  "variant": "h2"
1970
1976
  }
1971
1977
  ],
1972
- "gap": "md",
1973
1978
  "direction": "horizontal",
1974
- "type": "stack",
1975
- "align": "center"
1979
+ "align": "center",
1980
+ "gap": "md",
1981
+ "type": "stack"
1976
1982
  },
1977
1983
  {
1978
1984
  "pulse": false,
1985
+ "label": "Circuit Closed",
1979
1986
  "type": "status-dot",
1980
- "status": "online",
1981
- "label": "Circuit Closed"
1987
+ "status": "online"
1982
1988
  }
1983
1989
  ],
1984
- "type": "stack",
1985
- "align": "center",
1986
- "justify": "between",
1987
- "direction": "horizontal",
1988
1990
  "gap": "md"
1989
1991
  },
1990
1992
  {
1991
1993
  "type": "divider"
1992
1994
  },
1993
1995
  {
1994
- "variant": "success",
1995
1996
  "message": "Service is healthy. All requests are being processed.",
1997
+ "variant": "success",
1996
1998
  "type": "alert"
1997
1999
  },
1998
2000
  {
2001
+ "type": "simple-grid",
2002
+ "cols": 2.0,
1999
2003
  "children": [
2000
2004
  {
2001
2005
  "type": "stat-display",
2002
- "value": "@entity.failureCount",
2003
- "label": "Failures"
2006
+ "label": "Failures",
2007
+ "value": "@entity.failureCount"
2004
2008
  },
2005
2009
  {
2010
+ "label": "Successes",
2006
2011
  "value": "@entity.successCount",
2007
- "type": "stat-display",
2008
- "label": "Successes"
2012
+ "type": "stat-display"
2009
2013
  }
2010
- ],
2011
- "cols": 2.0,
2012
- "type": "simple-grid"
2014
+ ]
2013
2015
  },
2014
2016
  {
2017
+ "type": "meter",
2015
2018
  "min": 0.0,
2016
2019
  "value": "@entity.failureCount",
2017
- "type": "meter",
2018
2020
  "max": "@entity.threshold"
2019
2021
  }
2020
2022
  ],
2021
- "direction": "vertical",
2022
- "type": "stack",
2023
2023
  "gap": "lg"
2024
2024
  }
2025
2025
  ],
2026
- "appName": "API Gateway",
2027
2026
  "navItems": [
2028
2027
  {
2029
- "href": "/routes",
2028
+ "icon": "git-branch",
2030
2029
  "label": "Routes",
2031
- "icon": "git-branch"
2030
+ "href": "/routes"
2032
2031
  },
2033
2032
  {
2034
- "label": "Backends",
2035
2033
  "href": "/backends",
2036
- "icon": "server"
2034
+ "icon": "server",
2035
+ "label": "Backends"
2037
2036
  },
2038
2037
  {
2038
+ "href": "/analytics",
2039
2039
  "icon": "bar-chart-2",
2040
- "label": "Analytics",
2041
- "href": "/analytics"
2040
+ "label": "Analytics"
2042
2041
  }
2043
2042
  ],
2044
- "type": "dashboard-layout"
2043
+ "type": "dashboard-layout",
2044
+ "appName": "API Gateway"
2045
2045
  }
2046
2046
  ]
2047
2047
  ]
@@ -2056,75 +2056,58 @@
2056
2056
  "main",
2057
2057
  {
2058
2058
  "appName": "API Gateway",
2059
- "navItems": [
2060
- {
2061
- "label": "Routes",
2062
- "href": "/routes",
2063
- "icon": "git-branch"
2064
- },
2065
- {
2066
- "label": "Backends",
2067
- "icon": "server",
2068
- "href": "/backends"
2069
- },
2070
- {
2071
- "href": "/analytics",
2072
- "label": "Analytics",
2073
- "icon": "bar-chart-2"
2074
- }
2075
- ],
2076
- "type": "dashboard-layout",
2077
2059
  "children": [
2078
2060
  {
2061
+ "gap": "lg",
2079
2062
  "children": [
2080
2063
  {
2081
2064
  "direction": "horizontal",
2065
+ "type": "stack",
2082
2066
  "align": "center",
2067
+ "gap": "md",
2083
2068
  "children": [
2084
2069
  {
2085
- "align": "center",
2070
+ "type": "stack",
2071
+ "direction": "horizontal",
2072
+ "gap": "md",
2086
2073
  "children": [
2087
2074
  {
2088
2075
  "name": "alert-triangle",
2089
2076
  "type": "icon"
2090
2077
  },
2091
2078
  {
2092
- "variant": "h2",
2093
2079
  "type": "typography",
2094
- "content": "Backend"
2080
+ "content": "Backend",
2081
+ "variant": "h2"
2095
2082
  }
2096
2083
  ],
2097
- "gap": "md",
2098
- "type": "stack",
2099
- "direction": "horizontal"
2084
+ "align": "center"
2100
2085
  },
2101
2086
  {
2102
- "type": "status-dot",
2103
- "pulse": true,
2104
2087
  "status": "critical",
2105
- "label": "Circuit Open"
2088
+ "pulse": true,
2089
+ "label": "Circuit Open",
2090
+ "type": "status-dot"
2106
2091
  }
2107
2092
  ],
2108
- "justify": "between",
2109
- "type": "stack",
2110
- "gap": "md"
2093
+ "justify": "between"
2111
2094
  },
2112
2095
  {
2113
2096
  "type": "divider"
2114
2097
  },
2115
2098
  {
2116
2099
  "variant": "error",
2117
- "message": "Circuit is open. Requests are being rejected to prevent cascading failures.",
2118
- "type": "alert"
2100
+ "type": "alert",
2101
+ "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
2119
2102
  },
2120
2103
  {
2121
- "type": "simple-grid",
2122
2104
  "cols": 2.0,
2105
+ "type": "simple-grid",
2123
2106
  "children": [
2124
2107
  {
2125
- "value": "@entity.failureCount",
2108
+ "label": "Failures",
2126
2109
  "type": "stat-display",
2127
- "label": "Failures"
2110
+ "value": "@entity.failureCount"
2128
2111
  },
2129
2112
  {
2130
2113
  "type": "stat-display",
@@ -2134,24 +2117,41 @@
2134
2117
  ]
2135
2118
  },
2136
2119
  {
2137
- "value": "@entity.failureCount",
2138
2120
  "max": "@entity.threshold",
2139
- "min": 0.0,
2140
- "type": "meter"
2121
+ "value": "@entity.failureCount",
2122
+ "type": "meter",
2123
+ "min": 0.0
2141
2124
  },
2142
2125
  {
2143
2126
  "label": "Reset",
2144
2127
  "variant": "ghost",
2145
- "icon": "rotate-ccw",
2146
2128
  "type": "button",
2147
- "action": "RESET"
2129
+ "action": "RESET",
2130
+ "icon": "rotate-ccw"
2148
2131
  }
2149
2132
  ],
2150
2133
  "direction": "vertical",
2151
- "gap": "lg",
2152
2134
  "type": "stack"
2153
2135
  }
2154
- ]
2136
+ ],
2137
+ "navItems": [
2138
+ {
2139
+ "href": "/routes",
2140
+ "label": "Routes",
2141
+ "icon": "git-branch"
2142
+ },
2143
+ {
2144
+ "href": "/backends",
2145
+ "label": "Backends",
2146
+ "icon": "server"
2147
+ },
2148
+ {
2149
+ "icon": "bar-chart-2",
2150
+ "label": "Analytics",
2151
+ "href": "/analytics"
2152
+ }
2153
+ ],
2154
+ "type": "dashboard-layout"
2155
2155
  }
2156
2156
  ]
2157
2157
  ]
@@ -2167,39 +2167,38 @@
2167
2167
  {
2168
2168
  "children": [
2169
2169
  {
2170
- "direction": "vertical",
2171
2170
  "children": [
2172
2171
  {
2173
- "justify": "between",
2174
- "direction": "horizontal",
2172
+ "align": "center",
2175
2173
  "type": "stack",
2176
- "gap": "md",
2174
+ "justify": "between",
2177
2175
  "children": [
2178
2176
  {
2179
- "align": "center",
2180
- "direction": "horizontal",
2181
2177
  "type": "stack",
2182
- "gap": "md",
2178
+ "align": "center",
2183
2179
  "children": [
2184
2180
  {
2185
- "type": "icon",
2186
- "name": "server"
2181
+ "name": "server",
2182
+ "type": "icon"
2187
2183
  },
2188
2184
  {
2189
2185
  "variant": "h2",
2190
2186
  "content": "Backend",
2191
2187
  "type": "typography"
2192
2188
  }
2193
- ]
2189
+ ],
2190
+ "gap": "md",
2191
+ "direction": "horizontal"
2194
2192
  },
2195
2193
  {
2196
- "type": "status-dot",
2197
2194
  "status": "online",
2195
+ "type": "status-dot",
2198
2196
  "pulse": false,
2199
2197
  "label": "Circuit Closed"
2200
2198
  }
2201
2199
  ],
2202
- "align": "center"
2200
+ "gap": "md",
2201
+ "direction": "horizontal"
2203
2202
  },
2204
2203
  {
2205
2204
  "type": "divider"
@@ -2226,32 +2225,33 @@
2226
2225
  ]
2227
2226
  },
2228
2227
  {
2229
- "value": "@entity.failureCount",
2230
- "min": 0.0,
2231
2228
  "max": "@entity.threshold",
2232
- "type": "meter"
2229
+ "type": "meter",
2230
+ "value": "@entity.failureCount",
2231
+ "min": 0.0
2233
2232
  }
2234
2233
  ],
2235
- "type": "stack",
2236
- "gap": "lg"
2234
+ "direction": "vertical",
2235
+ "gap": "lg",
2236
+ "type": "stack"
2237
2237
  }
2238
2238
  ],
2239
2239
  "appName": "API Gateway",
2240
2240
  "type": "dashboard-layout",
2241
2241
  "navItems": [
2242
2242
  {
2243
- "label": "Routes",
2244
2243
  "href": "/routes",
2244
+ "label": "Routes",
2245
2245
  "icon": "git-branch"
2246
2246
  },
2247
2247
  {
2248
- "icon": "server",
2249
2248
  "label": "Backends",
2250
- "href": "/backends"
2249
+ "href": "/backends",
2250
+ "icon": "server"
2251
2251
  },
2252
2252
  {
2253
- "label": "Analytics",
2254
2253
  "href": "/analytics",
2254
+ "label": "Analytics",
2255
2255
  "icon": "bar-chart-2"
2256
2256
  }
2257
2257
  ]
@@ -2268,33 +2268,47 @@
2268
2268
  "render-ui",
2269
2269
  "main",
2270
2270
  {
2271
+ "navItems": [
2272
+ {
2273
+ "icon": "git-branch",
2274
+ "href": "/routes",
2275
+ "label": "Routes"
2276
+ },
2277
+ {
2278
+ "icon": "server",
2279
+ "label": "Backends",
2280
+ "href": "/backends"
2281
+ },
2282
+ {
2283
+ "href": "/analytics",
2284
+ "icon": "bar-chart-2",
2285
+ "label": "Analytics"
2286
+ }
2287
+ ],
2288
+ "appName": "API Gateway",
2271
2289
  "children": [
2272
2290
  {
2291
+ "type": "stack",
2273
2292
  "gap": "lg",
2274
2293
  "children": [
2275
2294
  {
2276
- "gap": "md",
2277
- "type": "stack",
2278
- "direction": "horizontal",
2279
- "justify": "between",
2280
- "align": "center",
2281
2295
  "children": [
2282
2296
  {
2283
- "type": "stack",
2284
2297
  "align": "center",
2298
+ "gap": "md",
2285
2299
  "direction": "horizontal",
2300
+ "type": "stack",
2286
2301
  "children": [
2287
2302
  {
2288
2303
  "type": "icon",
2289
2304
  "name": "activity"
2290
2305
  },
2291
2306
  {
2292
- "type": "typography",
2293
2307
  "content": "Backend",
2294
- "variant": "h2"
2308
+ "variant": "h2",
2309
+ "type": "typography"
2295
2310
  }
2296
- ],
2297
- "gap": "md"
2311
+ ]
2298
2312
  },
2299
2313
  {
2300
2314
  "label": "Circuit Half-Open",
@@ -2302,56 +2316,42 @@
2302
2316
  "status": "warning",
2303
2317
  "pulse": true
2304
2318
  }
2305
- ]
2319
+ ],
2320
+ "align": "center",
2321
+ "direction": "horizontal",
2322
+ "type": "stack",
2323
+ "gap": "md",
2324
+ "justify": "between"
2306
2325
  },
2307
2326
  {
2308
2327
  "type": "divider"
2309
2328
  },
2310
2329
  {
2311
- "message": "Testing recovery. Limited requests are being allowed through.",
2312
2330
  "variant": "warning",
2331
+ "message": "Testing recovery. Limited requests are being allowed through.",
2313
2332
  "type": "alert"
2314
2333
  },
2315
2334
  {
2316
2335
  "type": "simple-grid",
2317
- "cols": 2.0,
2318
2336
  "children": [
2319
2337
  {
2320
- "type": "stat-display",
2338
+ "value": "@entity.failureCount",
2321
2339
  "label": "Failures",
2322
- "value": "@entity.failureCount"
2340
+ "type": "stat-display"
2323
2341
  },
2324
2342
  {
2325
2343
  "value": "@entity.successCount",
2326
- "type": "stat-display",
2327
- "label": "Successes"
2344
+ "label": "Successes",
2345
+ "type": "stat-display"
2328
2346
  }
2329
- ]
2347
+ ],
2348
+ "cols": 2.0
2330
2349
  }
2331
2350
  ],
2332
- "direction": "vertical",
2333
- "type": "stack"
2351
+ "direction": "vertical"
2334
2352
  }
2335
2353
  ],
2336
- "type": "dashboard-layout",
2337
- "appName": "API Gateway",
2338
- "navItems": [
2339
- {
2340
- "icon": "git-branch",
2341
- "label": "Routes",
2342
- "href": "/routes"
2343
- },
2344
- {
2345
- "label": "Backends",
2346
- "href": "/backends",
2347
- "icon": "server"
2348
- },
2349
- {
2350
- "label": "Analytics",
2351
- "href": "/analytics",
2352
- "icon": "bar-chart-2"
2353
- }
2354
- ]
2354
+ "type": "dashboard-layout"
2355
2355
  }
2356
2356
  ]
2357
2357
  ]
@@ -2365,43 +2365,42 @@
2365
2365
  "render-ui",
2366
2366
  "main",
2367
2367
  {
2368
+ "appName": "API Gateway",
2369
+ "type": "dashboard-layout",
2368
2370
  "children": [
2369
2371
  {
2370
- "type": "stack",
2371
- "direction": "vertical",
2372
- "gap": "lg",
2373
2372
  "children": [
2374
2373
  {
2375
2374
  "align": "center",
2376
2375
  "children": [
2377
2376
  {
2378
- "type": "stack",
2379
- "direction": "horizontal",
2380
- "gap": "md",
2381
- "align": "center",
2382
2377
  "children": [
2383
2378
  {
2384
2379
  "type": "icon",
2385
2380
  "name": "server"
2386
2381
  },
2387
2382
  {
2388
- "content": "Backend",
2389
2383
  "variant": "h2",
2390
- "type": "typography"
2384
+ "type": "typography",
2385
+ "content": "Backend"
2391
2386
  }
2392
- ]
2387
+ ],
2388
+ "direction": "horizontal",
2389
+ "type": "stack",
2390
+ "align": "center",
2391
+ "gap": "md"
2393
2392
  },
2394
2393
  {
2395
- "status": "online",
2396
2394
  "type": "status-dot",
2397
2395
  "pulse": false,
2398
- "label": "Circuit Closed"
2396
+ "label": "Circuit Closed",
2397
+ "status": "online"
2399
2398
  }
2400
2399
  ],
2401
- "direction": "horizontal",
2402
- "gap": "md",
2403
2400
  "type": "stack",
2404
- "justify": "between"
2401
+ "justify": "between",
2402
+ "gap": "md",
2403
+ "direction": "horizontal"
2405
2404
  },
2406
2405
  {
2407
2406
  "type": "divider"
@@ -2412,49 +2411,50 @@
2412
2411
  "variant": "success"
2413
2412
  },
2414
2413
  {
2415
- "type": "simple-grid",
2416
- "cols": 2.0,
2417
2414
  "children": [
2418
2415
  {
2419
- "label": "Failures",
2416
+ "type": "stat-display",
2420
2417
  "value": "@entity.failureCount",
2421
- "type": "stat-display"
2418
+ "label": "Failures"
2422
2419
  },
2423
2420
  {
2424
- "value": "@entity.successCount",
2425
2421
  "type": "stat-display",
2426
- "label": "Successes"
2422
+ "label": "Successes",
2423
+ "value": "@entity.successCount"
2427
2424
  }
2428
- ]
2425
+ ],
2426
+ "cols": 2.0,
2427
+ "type": "simple-grid"
2429
2428
  },
2430
2429
  {
2431
2430
  "min": 0.0,
2432
2431
  "max": "@entity.threshold",
2433
- "value": "@entity.failureCount",
2434
- "type": "meter"
2432
+ "type": "meter",
2433
+ "value": "@entity.failureCount"
2435
2434
  }
2436
- ]
2435
+ ],
2436
+ "type": "stack",
2437
+ "direction": "vertical",
2438
+ "gap": "lg"
2437
2439
  }
2438
2440
  ],
2439
2441
  "navItems": [
2440
2442
  {
2443
+ "icon": "git-branch",
2441
2444
  "href": "/routes",
2442
- "label": "Routes",
2443
- "icon": "git-branch"
2445
+ "label": "Routes"
2444
2446
  },
2445
2447
  {
2446
- "href": "/backends",
2448
+ "icon": "server",
2447
2449
  "label": "Backends",
2448
- "icon": "server"
2450
+ "href": "/backends"
2449
2451
  },
2450
2452
  {
2451
- "href": "/analytics",
2452
2453
  "icon": "bar-chart-2",
2453
- "label": "Analytics"
2454
+ "label": "Analytics",
2455
+ "href": "/analytics"
2454
2456
  }
2455
- ],
2456
- "type": "dashboard-layout",
2457
- "appName": "API Gateway"
2457
+ ]
2458
2458
  }
2459
2459
  ]
2460
2460
  ]
@@ -2468,70 +2468,70 @@
2468
2468
  "render-ui",
2469
2469
  "main",
2470
2470
  {
2471
- "type": "dashboard-layout",
2472
2471
  "navItems": [
2473
2472
  {
2474
- "label": "Routes",
2475
2473
  "icon": "git-branch",
2474
+ "label": "Routes",
2476
2475
  "href": "/routes"
2477
2476
  },
2478
2477
  {
2479
- "icon": "server",
2480
2478
  "label": "Backends",
2479
+ "icon": "server",
2481
2480
  "href": "/backends"
2482
2481
  },
2483
2482
  {
2484
- "href": "/analytics",
2485
2483
  "label": "Analytics",
2484
+ "href": "/analytics",
2486
2485
  "icon": "bar-chart-2"
2487
2486
  }
2488
2487
  ],
2488
+ "type": "dashboard-layout",
2489
2489
  "appName": "API Gateway",
2490
2490
  "children": [
2491
2491
  {
2492
2492
  "gap": "lg",
2493
- "direction": "vertical",
2494
2493
  "type": "stack",
2494
+ "direction": "vertical",
2495
2495
  "children": [
2496
2496
  {
2497
- "type": "stack",
2498
- "align": "center",
2499
2497
  "children": [
2500
2498
  {
2499
+ "type": "stack",
2500
+ "direction": "horizontal",
2501
+ "align": "center",
2501
2502
  "children": [
2502
2503
  {
2503
- "name": "server",
2504
- "type": "icon"
2504
+ "type": "icon",
2505
+ "name": "server"
2505
2506
  },
2506
2507
  {
2508
+ "variant": "h2",
2507
2509
  "type": "typography",
2508
- "content": "Backend",
2509
- "variant": "h2"
2510
+ "content": "Backend"
2510
2511
  }
2511
2512
  ],
2512
- "type": "stack",
2513
- "align": "center",
2514
- "direction": "horizontal",
2515
2513
  "gap": "md"
2516
2514
  },
2517
2515
  {
2518
- "status": "online",
2519
2516
  "label": "Circuit Closed",
2520
- "type": "status-dot",
2521
- "pulse": false
2517
+ "pulse": false,
2518
+ "status": "online",
2519
+ "type": "status-dot"
2522
2520
  }
2523
2521
  ],
2524
2522
  "justify": "between",
2525
- "gap": "md",
2526
- "direction": "horizontal"
2523
+ "direction": "horizontal",
2524
+ "type": "stack",
2525
+ "align": "center",
2526
+ "gap": "md"
2527
2527
  },
2528
2528
  {
2529
2529
  "type": "divider"
2530
2530
  },
2531
2531
  {
2532
+ "variant": "success",
2532
2533
  "type": "alert",
2533
- "message": "Service is healthy. All requests are being processed.",
2534
- "variant": "success"
2534
+ "message": "Service is healthy. All requests are being processed."
2535
2535
  },
2536
2536
  {
2537
2537
  "cols": 2.0,
@@ -2539,21 +2539,21 @@
2539
2539
  "children": [
2540
2540
  {
2541
2541
  "label": "Failures",
2542
- "value": "@entity.failureCount",
2543
- "type": "stat-display"
2542
+ "type": "stat-display",
2543
+ "value": "@entity.failureCount"
2544
2544
  },
2545
2545
  {
2546
2546
  "label": "Successes",
2547
- "type": "stat-display",
2548
- "value": "@entity.successCount"
2547
+ "value": "@entity.successCount",
2548
+ "type": "stat-display"
2549
2549
  }
2550
2550
  ]
2551
2551
  },
2552
2552
  {
2553
2553
  "value": "@entity.failureCount",
2554
- "type": "meter",
2554
+ "min": 0.0,
2555
2555
  "max": "@entity.threshold",
2556
- "min": 0.0
2556
+ "type": "meter"
2557
2557
  }
2558
2558
  ]
2559
2559
  }
@@ -2571,19 +2571,39 @@
2571
2571
  "render-ui",
2572
2572
  "main",
2573
2573
  {
2574
+ "appName": "API Gateway",
2575
+ "navItems": [
2576
+ {
2577
+ "icon": "git-branch",
2578
+ "label": "Routes",
2579
+ "href": "/routes"
2580
+ },
2581
+ {
2582
+ "label": "Backends",
2583
+ "href": "/backends",
2584
+ "icon": "server"
2585
+ },
2586
+ {
2587
+ "href": "/analytics",
2588
+ "icon": "bar-chart-2",
2589
+ "label": "Analytics"
2590
+ }
2591
+ ],
2592
+ "type": "dashboard-layout",
2574
2593
  "children": [
2575
2594
  {
2576
- "type": "stack",
2595
+ "gap": "lg",
2596
+ "direction": "vertical",
2577
2597
  "children": [
2578
2598
  {
2579
- "gap": "md",
2580
- "align": "center",
2599
+ "type": "stack",
2581
2600
  "direction": "horizontal",
2582
- "justify": "between",
2583
2601
  "children": [
2584
2602
  {
2585
- "type": "stack",
2586
2603
  "gap": "md",
2604
+ "type": "stack",
2605
+ "direction": "horizontal",
2606
+ "align": "center",
2587
2607
  "children": [
2588
2608
  {
2589
2609
  "name": "alert-triangle",
@@ -2594,80 +2614,60 @@
2594
2614
  "content": "Backend",
2595
2615
  "variant": "h2"
2596
2616
  }
2597
- ],
2598
- "align": "center",
2599
- "direction": "horizontal"
2617
+ ]
2600
2618
  },
2601
2619
  {
2602
- "status": "critical",
2603
- "pulse": true,
2620
+ "label": "Circuit Open",
2604
2621
  "type": "status-dot",
2605
- "label": "Circuit Open"
2622
+ "pulse": true,
2623
+ "status": "critical"
2606
2624
  }
2607
2625
  ],
2608
- "type": "stack"
2626
+ "justify": "between",
2627
+ "align": "center",
2628
+ "gap": "md"
2609
2629
  },
2610
2630
  {
2611
2631
  "type": "divider"
2612
2632
  },
2613
2633
  {
2614
- "type": "alert",
2615
2634
  "message": "Circuit is open. Requests are being rejected to prevent cascading failures.",
2635
+ "type": "alert",
2616
2636
  "variant": "error"
2617
2637
  },
2618
2638
  {
2619
2639
  "type": "simple-grid",
2640
+ "cols": 2.0,
2620
2641
  "children": [
2621
2642
  {
2643
+ "label": "Failures",
2622
2644
  "value": "@entity.failureCount",
2623
- "type": "stat-display",
2624
- "label": "Failures"
2645
+ "type": "stat-display"
2625
2646
  },
2626
2647
  {
2627
- "label": "Successes",
2628
2648
  "type": "stat-display",
2649
+ "label": "Successes",
2629
2650
  "value": "@entity.successCount"
2630
2651
  }
2631
- ],
2632
- "cols": 2.0
2652
+ ]
2633
2653
  },
2634
2654
  {
2635
- "type": "meter",
2655
+ "max": "@entity.threshold",
2636
2656
  "value": "@entity.failureCount",
2637
- "min": 0.0,
2638
- "max": "@entity.threshold"
2657
+ "type": "meter",
2658
+ "min": 0.0
2639
2659
  },
2640
2660
  {
2661
+ "variant": "ghost",
2641
2662
  "label": "Reset",
2642
- "action": "RESET",
2643
2663
  "type": "button",
2644
2664
  "icon": "rotate-ccw",
2645
- "variant": "ghost"
2665
+ "action": "RESET"
2646
2666
  }
2647
2667
  ],
2648
- "gap": "lg",
2649
- "direction": "vertical"
2650
- }
2651
- ],
2652
- "navItems": [
2653
- {
2654
- "icon": "git-branch",
2655
- "href": "/routes",
2656
- "label": "Routes"
2657
- },
2658
- {
2659
- "label": "Backends",
2660
- "href": "/backends",
2661
- "icon": "server"
2662
- },
2663
- {
2664
- "label": "Analytics",
2665
- "href": "/analytics",
2666
- "icon": "bar-chart-2"
2668
+ "type": "stack"
2667
2669
  }
2668
- ],
2669
- "type": "dashboard-layout",
2670
- "appName": "API Gateway"
2670
+ ]
2671
2671
  }
2672
2672
  ]
2673
2673
  ]
@@ -2681,7 +2681,6 @@
2681
2681
  "render-ui",
2682
2682
  "main",
2683
2683
  {
2684
- "type": "dashboard-layout",
2685
2684
  "appName": "API Gateway",
2686
2685
  "navItems": [
2687
2686
  {
@@ -2691,52 +2690,51 @@
2691
2690
  },
2692
2691
  {
2693
2692
  "href": "/backends",
2694
- "label": "Backends",
2695
- "icon": "server"
2693
+ "icon": "server",
2694
+ "label": "Backends"
2696
2695
  },
2697
2696
  {
2697
+ "label": "Analytics",
2698
2698
  "href": "/analytics",
2699
- "icon": "bar-chart-2",
2700
- "label": "Analytics"
2699
+ "icon": "bar-chart-2"
2701
2700
  }
2702
2701
  ],
2703
2702
  "children": [
2704
2703
  {
2705
- "direction": "vertical",
2706
- "type": "stack",
2707
2704
  "gap": "lg",
2705
+ "type": "stack",
2708
2706
  "children": [
2709
2707
  {
2708
+ "align": "center",
2710
2709
  "gap": "md",
2711
2710
  "children": [
2712
2711
  {
2713
- "gap": "md",
2714
- "type": "stack",
2715
2712
  "align": "center",
2713
+ "type": "stack",
2716
2714
  "direction": "horizontal",
2715
+ "gap": "md",
2717
2716
  "children": [
2718
2717
  {
2719
- "name": "server",
2720
- "type": "icon"
2718
+ "type": "icon",
2719
+ "name": "server"
2721
2720
  },
2722
2721
  {
2723
- "content": "Backend",
2724
2722
  "type": "typography",
2723
+ "content": "Backend",
2725
2724
  "variant": "h2"
2726
2725
  }
2727
2726
  ]
2728
2727
  },
2729
2728
  {
2730
- "label": "Circuit Closed",
2731
2729
  "pulse": false,
2732
2730
  "status": "online",
2731
+ "label": "Circuit Closed",
2733
2732
  "type": "status-dot"
2734
2733
  }
2735
2734
  ],
2736
2735
  "type": "stack",
2737
- "justify": "between",
2738
2736
  "direction": "horizontal",
2739
- "align": "center"
2737
+ "justify": "between"
2740
2738
  },
2741
2739
  {
2742
2740
  "type": "divider"
@@ -2747,30 +2745,32 @@
2747
2745
  "type": "alert"
2748
2746
  },
2749
2747
  {
2750
- "cols": 2.0,
2748
+ "type": "simple-grid",
2751
2749
  "children": [
2752
2750
  {
2753
- "type": "stat-display",
2754
2751
  "label": "Failures",
2752
+ "type": "stat-display",
2755
2753
  "value": "@entity.failureCount"
2756
2754
  },
2757
2755
  {
2758
- "type": "stat-display",
2759
2756
  "label": "Successes",
2760
- "value": "@entity.successCount"
2757
+ "value": "@entity.successCount",
2758
+ "type": "stat-display"
2761
2759
  }
2762
2760
  ],
2763
- "type": "simple-grid"
2761
+ "cols": 2.0
2764
2762
  },
2765
2763
  {
2766
- "min": 0.0,
2767
- "max": "@entity.threshold",
2768
2764
  "type": "meter",
2769
- "value": "@entity.failureCount"
2765
+ "min": 0.0,
2766
+ "value": "@entity.failureCount",
2767
+ "max": "@entity.threshold"
2770
2768
  }
2771
- ]
2769
+ ],
2770
+ "direction": "vertical"
2772
2771
  }
2773
- ]
2772
+ ],
2773
+ "type": "dashboard-layout"
2774
2774
  }
2775
2775
  ]
2776
2776
  ]
@@ -2833,7 +2833,7 @@
2833
2833
  "event": "AnalyticsLoaded",
2834
2834
  "description": "Fired when Analytics finishes loading",
2835
2835
  "scope": "internal",
2836
- "payload": [
2836
+ "payloadSchema": [
2837
2837
  {
2838
2838
  "name": "data",
2839
2839
  "type": "[Analytics]"
@@ -2844,7 +2844,7 @@
2844
2844
  "event": "AnalyticsLoadFailed",
2845
2845
  "description": "Fired when Analytics fails to load",
2846
2846
  "scope": "internal",
2847
- "payload": [
2847
+ "payloadSchema": [
2848
2848
  {
2849
2849
  "name": "error",
2850
2850
  "type": "string"
@@ -2889,7 +2889,7 @@
2889
2889
  {
2890
2890
  "key": "AnalyticsLoaded",
2891
2891
  "name": "Analytics loaded",
2892
- "payload": [
2892
+ "payloadSchema": [
2893
2893
  {
2894
2894
  "name": "data",
2895
2895
  "type": "[Analytics]"
@@ -2899,7 +2899,7 @@
2899
2899
  {
2900
2900
  "key": "AnalyticsLoadFailed",
2901
2901
  "name": "Analytics load failed",
2902
- "payload": [
2902
+ "payloadSchema": [
2903
2903
  {
2904
2904
  "name": "error",
2905
2905
  "type": "string"
@@ -2922,8 +2922,8 @@
2922
2922
  "Analytics",
2923
2923
  {
2924
2924
  "emit": {
2925
- "success": "AnalyticsLoaded",
2926
- "failure": "AnalyticsLoadFailed"
2925
+ "failure": "AnalyticsLoadFailed",
2926
+ "success": "AnalyticsLoaded"
2927
2927
  }
2928
2928
  }
2929
2929
  ],
@@ -2931,15 +2931,14 @@
2931
2931
  "render-ui",
2932
2932
  "main",
2933
2933
  {
2934
+ "type": "dashboard-layout",
2935
+ "appName": "API Gateway",
2934
2936
  "children": [
2935
2937
  {
2936
- "type": "scaled-diagram",
2937
2938
  "children": [
2938
2939
  {
2939
- "gap": "lg",
2940
2940
  "children": [
2941
2941
  {
2942
- "type": "breadcrumb",
2943
2942
  "items": [
2944
2943
  {
2945
2944
  "label": "Home",
@@ -2948,53 +2947,54 @@
2948
2947
  {
2949
2948
  "label": "Analytics"
2950
2949
  }
2951
- ]
2950
+ ],
2951
+ "type": "breadcrumb"
2952
2952
  },
2953
2953
  {
2954
- "justify": "between",
2955
- "direction": "horizontal",
2956
- "gap": "md",
2957
2954
  "type": "stack",
2955
+ "justify": "between",
2958
2956
  "children": [
2959
2957
  {
2958
+ "gap": "md",
2960
2959
  "type": "stack",
2961
2960
  "direction": "horizontal",
2962
- "gap": "md",
2963
2961
  "children": [
2964
2962
  {
2965
- "type": "icon",
2966
- "name": "bar-chart-2"
2963
+ "name": "bar-chart-2",
2964
+ "type": "icon"
2967
2965
  },
2968
2966
  {
2969
- "type": "typography",
2967
+ "variant": "h2",
2970
2968
  "content": "Analytics",
2971
- "variant": "h2"
2969
+ "type": "typography"
2972
2970
  }
2973
2971
  ]
2974
2972
  },
2975
2973
  {
2974
+ "label": "Refresh",
2975
+ "variant": "secondary",
2976
2976
  "action": "REFRESH",
2977
2977
  "icon": "refresh-cw",
2978
- "type": "button",
2979
- "label": "Refresh",
2980
- "variant": "secondary"
2978
+ "type": "button"
2981
2979
  }
2982
- ]
2980
+ ],
2981
+ "gap": "md",
2982
+ "direction": "horizontal"
2983
2983
  },
2984
2984
  {
2985
2985
  "type": "divider"
2986
2986
  },
2987
2987
  {
2988
+ "type": "box",
2988
2989
  "padding": "md",
2989
2990
  "children": [
2990
2991
  {
2991
2992
  "type": "simple-grid",
2992
- "cols": 3.0,
2993
2993
  "children": [
2994
2994
  {
2995
2995
  "type": "stat-display",
2996
- "value": "@entity.totalRequests",
2997
- "label": "TotalRequests"
2996
+ "label": "TotalRequests",
2997
+ "value": "@entity.totalRequests"
2998
2998
  },
2999
2999
  {
3000
3000
  "value": "@entity.errorRate",
@@ -3002,69 +3002,68 @@
3002
3002
  "label": "ErrorRate"
3003
3003
  },
3004
3004
  {
3005
- "type": "stat-display",
3006
3005
  "value": "@entity.avgLatency",
3007
- "label": "AvgLatency"
3006
+ "label": "AvgLatency",
3007
+ "type": "stat-display"
3008
3008
  },
3009
3009
  {
3010
3010
  "type": "card",
3011
3011
  "children": [
3012
3012
  {
3013
+ "gap": "sm",
3014
+ "type": "stack",
3013
3015
  "children": [
3014
3016
  {
3017
+ "content": "Uptime",
3015
3018
  "type": "typography",
3016
- "variant": "caption",
3017
- "content": "Uptime"
3019
+ "variant": "caption"
3018
3020
  },
3019
3021
  {
3022
+ "type": "typography",
3020
3023
  "variant": "h3",
3021
- "content": "@entity.uptime",
3022
- "type": "typography"
3024
+ "content": "@entity.uptime"
3023
3025
  }
3024
3026
  ],
3025
- "type": "stack",
3026
- "direction": "vertical",
3027
- "gap": "sm"
3027
+ "direction": "vertical"
3028
3028
  }
3029
3029
  ]
3030
3030
  }
3031
- ]
3031
+ ],
3032
+ "cols": 3.0
3032
3033
  }
3033
- ],
3034
- "type": "box"
3034
+ ]
3035
3035
  },
3036
3036
  {
3037
3037
  "type": "divider"
3038
3038
  },
3039
3039
  {
3040
- "cols": 2.0,
3041
- "gap": "md",
3042
3040
  "type": "grid",
3043
3041
  "children": [
3044
3042
  {
3045
3043
  "type": "card",
3046
3044
  "children": [
3047
3045
  {
3046
+ "variant": "caption",
3048
3047
  "content": "Chart View",
3049
- "type": "typography",
3050
- "variant": "caption"
3048
+ "type": "typography"
3051
3049
  }
3052
3050
  ]
3053
3051
  },
3054
3052
  {
3053
+ "type": "card",
3055
3054
  "children": [
3056
3055
  {
3057
- "type": "typography",
3058
3056
  "variant": "caption",
3057
+ "type": "typography",
3059
3058
  "content": "Graph View"
3060
3059
  }
3061
- ],
3062
- "type": "card"
3060
+ ]
3063
3061
  }
3064
- ]
3062
+ ],
3063
+ "gap": "md",
3064
+ "cols": 2.0
3065
3065
  },
3066
3066
  {
3067
- "type": "line-chart",
3068
3067
  "data": [
3069
3068
  {
3070
3069
  "value": 12.0,
@@ -3087,10 +3086,11 @@
3087
3086
  "value": 22.0
3088
3087
  },
3089
3088
  {
3090
- "value": 30.0,
3091
- "date": "Jun"
3089
+ "date": "Jun",
3090
+ "value": 30.0
3092
3091
  }
3093
- ]
3092
+ ],
3093
+ "type": "line-chart"
3094
3094
  },
3095
3095
  {
3096
3096
  "type": "chart-legend",
@@ -3106,6 +3106,8 @@
3106
3106
  ]
3107
3107
  },
3108
3108
  {
3109
+ "type": "graph-view",
3110
+ "width": 400.0,
3109
3111
  "nodes": [
3110
3112
  {
3111
3113
  "id": "a",
@@ -3120,44 +3122,42 @@
3120
3122
  "label": "End"
3121
3123
  }
3122
3124
  ],
3123
- "type": "graph-view",
3124
3125
  "edges": [
3125
3126
  {
3126
- "source": "a",
3127
- "target": "b"
3127
+ "target": "b",
3128
+ "source": "a"
3128
3129
  },
3129
3130
  {
3130
- "source": "b",
3131
- "target": "c"
3131
+ "target": "c",
3132
+ "source": "b"
3132
3133
  }
3133
3134
  ],
3134
- "height": 200.0,
3135
- "width": 400.0
3135
+ "height": 200.0
3136
3136
  }
3137
3137
  ],
3138
+ "gap": "lg",
3138
3139
  "direction": "vertical",
3139
3140
  "type": "stack"
3140
3141
  }
3141
- ]
3142
+ ],
3143
+ "type": "scaled-diagram"
3142
3144
  }
3143
3145
  ],
3144
- "appName": "API Gateway",
3145
- "type": "dashboard-layout",
3146
3146
  "navItems": [
3147
3147
  {
3148
- "icon": "git-branch",
3148
+ "label": "Routes",
3149
3149
  "href": "/routes",
3150
- "label": "Routes"
3150
+ "icon": "git-branch"
3151
3151
  },
3152
3152
  {
3153
- "label": "Backends",
3154
3153
  "icon": "server",
3155
- "href": "/backends"
3154
+ "href": "/backends",
3155
+ "label": "Backends"
3156
3156
  },
3157
3157
  {
3158
+ "href": "/analytics",
3158
3159
  "icon": "bar-chart-2",
3159
- "label": "Analytics",
3160
- "href": "/analytics"
3160
+ "label": "Analytics"
3161
3161
  }
3162
3162
  ]
3163
3163
  }
@@ -3183,34 +3183,20 @@
3183
3183
  "render-ui",
3184
3184
  "main",
3185
3185
  {
3186
- "navItems": [
3187
- {
3188
- "icon": "git-branch",
3189
- "label": "Routes",
3190
- "href": "/routes"
3191
- },
3192
- {
3193
- "icon": "server",
3194
- "href": "/backends",
3195
- "label": "Backends"
3196
- },
3197
- {
3198
- "label": "Analytics",
3199
- "icon": "bar-chart-2",
3200
- "href": "/analytics"
3201
- }
3202
- ],
3186
+ "appName": "API Gateway",
3203
3187
  "children": [
3204
3188
  {
3205
- "type": "scaled-diagram",
3206
3189
  "children": [
3207
3190
  {
3191
+ "type": "stack",
3192
+ "direction": "vertical",
3193
+ "gap": "lg",
3208
3194
  "children": [
3209
3195
  {
3210
3196
  "items": [
3211
3197
  {
3212
- "href": "/",
3213
- "label": "Home"
3198
+ "label": "Home",
3199
+ "href": "/"
3214
3200
  },
3215
3201
  {
3216
3202
  "label": "Analytics"
@@ -3219,35 +3205,35 @@
3219
3205
  "type": "breadcrumb"
3220
3206
  },
3221
3207
  {
3222
- "justify": "between",
3223
3208
  "children": [
3224
3209
  {
3210
+ "type": "stack",
3225
3211
  "children": [
3226
3212
  {
3227
- "type": "icon",
3228
- "name": "bar-chart-2"
3213
+ "name": "bar-chart-2",
3214
+ "type": "icon"
3229
3215
  },
3230
3216
  {
3217
+ "content": "Analytics",
3231
3218
  "variant": "h2",
3232
- "type": "typography",
3233
- "content": "Analytics"
3219
+ "type": "typography"
3234
3220
  }
3235
3221
  ],
3236
- "type": "stack",
3237
- "gap": "md",
3238
- "direction": "horizontal"
3222
+ "direction": "horizontal",
3223
+ "gap": "md"
3239
3224
  },
3240
3225
  {
3241
- "action": "REFRESH",
3242
3226
  "icon": "refresh-cw",
3243
3227
  "type": "button",
3228
+ "variant": "secondary",
3244
3229
  "label": "Refresh",
3245
- "variant": "secondary"
3230
+ "action": "REFRESH"
3246
3231
  }
3247
3232
  ],
3233
+ "justify": "between",
3248
3234
  "direction": "horizontal",
3249
- "type": "stack",
3250
- "gap": "md"
3235
+ "gap": "md",
3236
+ "type": "stack"
3251
3237
  },
3252
3238
  {
3253
3239
  "type": "divider"
@@ -3255,7 +3241,7 @@
3255
3241
  {
3256
3242
  "children": [
3257
3243
  {
3258
- "type": "simple-grid",
3244
+ "cols": 3.0,
3259
3245
  "children": [
3260
3246
  {
3261
3247
  "value": "@entity.totalRequests",
@@ -3263,21 +3249,18 @@
3263
3249
  "label": "TotalRequests"
3264
3250
  },
3265
3251
  {
3252
+ "value": "@entity.errorRate",
3266
3253
  "label": "ErrorRate",
3267
- "type": "stat-display",
3268
- "value": "@entity.errorRate"
3254
+ "type": "stat-display"
3269
3255
  },
3270
3256
  {
3271
- "label": "AvgLatency",
3257
+ "value": "@entity.avgLatency",
3272
3258
  "type": "stat-display",
3273
- "value": "@entity.avgLatency"
3259
+ "label": "AvgLatency"
3274
3260
  },
3275
3261
  {
3276
3262
  "children": [
3277
3263
  {
3278
- "direction": "vertical",
3279
- "type": "stack",
3280
- "gap": "sm",
3281
3264
  "children": [
3282
3265
  {
3283
3266
  "type": "typography",
@@ -3285,51 +3268,54 @@
3285
3268
  "content": "Uptime"
3286
3269
  },
3287
3270
  {
3271
+ "type": "typography",
3288
3272
  "variant": "h3",
3289
- "content": "@entity.uptime",
3290
- "type": "typography"
3273
+ "content": "@entity.uptime"
3291
3274
  }
3292
- ]
3275
+ ],
3276
+ "gap": "sm",
3277
+ "type": "stack",
3278
+ "direction": "vertical"
3293
3279
  }
3294
3280
  ],
3295
3281
  "type": "card"
3296
3282
  }
3297
3283
  ],
3298
- "cols": 3.0
3284
+ "type": "simple-grid"
3299
3285
  }
3300
3286
  ],
3301
- "padding": "md",
3302
- "type": "box"
3287
+ "type": "box",
3288
+ "padding": "md"
3303
3289
  },
3304
3290
  {
3305
3291
  "type": "divider"
3306
3292
  },
3307
3293
  {
3308
3294
  "cols": 2.0,
3295
+ "gap": "md",
3309
3296
  "children": [
3310
3297
  {
3311
3298
  "children": [
3312
3299
  {
3300
+ "content": "Chart View",
3313
3301
  "variant": "caption",
3314
- "type": "typography",
3315
- "content": "Chart View"
3302
+ "type": "typography"
3316
3303
  }
3317
3304
  ],
3318
3305
  "type": "card"
3319
3306
  },
3320
3307
  {
3321
- "type": "card",
3322
3308
  "children": [
3323
3309
  {
3324
- "content": "Graph View",
3325
3310
  "type": "typography",
3311
+ "content": "Graph View",
3326
3312
  "variant": "caption"
3327
3313
  }
3328
- ]
3314
+ ],
3315
+ "type": "card"
3329
3316
  }
3330
3317
  ],
3331
- "type": "grid",
3332
- "gap": "md"
3318
+ "type": "grid"
3333
3319
  },
3334
3320
  {
3335
3321
  "type": "line-chart",
@@ -3343,16 +3329,16 @@
3343
3329
  "value": 19.0
3344
3330
  },
3345
3331
  {
3346
- "date": "Mar",
3347
- "value": 15.0
3332
+ "value": 15.0,
3333
+ "date": "Mar"
3348
3334
  },
3349
3335
  {
3350
- "value": 25.0,
3351
- "date": "Apr"
3336
+ "date": "Apr",
3337
+ "value": 25.0
3352
3338
  },
3353
3339
  {
3354
- "date": "May",
3355
- "value": 22.0
3340
+ "value": 22.0,
3341
+ "date": "May"
3356
3342
  },
3357
3343
  {
3358
3344
  "date": "Jun",
@@ -3361,6 +3347,7 @@
3361
3347
  ]
3362
3348
  },
3363
3349
  {
3350
+ "type": "chart-legend",
3364
3351
  "items": [
3365
3352
  {
3366
3353
  "label": "Current",
@@ -3370,22 +3357,19 @@
3370
3357
  "color": "muted",
3371
3358
  "label": "Previous"
3372
3359
  }
3373
- ],
3374
- "type": "chart-legend"
3360
+ ]
3375
3361
  },
3376
3362
  {
3377
- "type": "graph-view",
3378
3363
  "edges": [
3379
3364
  {
3380
3365
  "source": "a",
3381
3366
  "target": "b"
3382
3367
  },
3383
3368
  {
3384
- "source": "b",
3385
- "target": "c"
3369
+ "target": "c",
3370
+ "source": "b"
3386
3371
  }
3387
3372
  ],
3388
- "height": 200.0,
3389
3373
  "nodes": [
3390
3374
  {
3391
3375
  "id": "a",
@@ -3400,17 +3384,33 @@
3400
3384
  "label": "End"
3401
3385
  }
3402
3386
  ],
3403
- "width": 400.0
3387
+ "width": 400.0,
3388
+ "type": "graph-view",
3389
+ "height": 200.0
3404
3390
  }
3405
- ],
3406
- "gap": "lg",
3407
- "type": "stack",
3408
- "direction": "vertical"
3391
+ ]
3409
3392
  }
3410
- ]
3393
+ ],
3394
+ "type": "scaled-diagram"
3395
+ }
3396
+ ],
3397
+ "navItems": [
3398
+ {
3399
+ "href": "/routes",
3400
+ "icon": "git-branch",
3401
+ "label": "Routes"
3402
+ },
3403
+ {
3404
+ "href": "/backends",
3405
+ "icon": "server",
3406
+ "label": "Backends"
3407
+ },
3408
+ {
3409
+ "label": "Analytics",
3410
+ "icon": "bar-chart-2",
3411
+ "href": "/analytics"
3411
3412
  }
3412
3413
  ],
3413
- "appName": "API Gateway",
3414
3414
  "type": "dashboard-layout"
3415
3415
  }
3416
3416
  ]
@@ -3426,8 +3426,8 @@
3426
3426
  "Analytics",
3427
3427
  {
3428
3428
  "emit": {
3429
- "failure": "AnalyticsLoadFailed",
3430
- "success": "AnalyticsLoaded"
3429
+ "success": "AnalyticsLoaded",
3430
+ "failure": "AnalyticsLoadFailed"
3431
3431
  }
3432
3432
  }
3433
3433
  ],
@@ -3435,31 +3435,29 @@
3435
3435
  "render-ui",
3436
3436
  "main",
3437
3437
  {
3438
- "type": "dashboard-layout",
3439
3438
  "navItems": [
3440
3439
  {
3441
- "icon": "git-branch",
3442
3440
  "label": "Routes",
3443
- "href": "/routes"
3441
+ "href": "/routes",
3442
+ "icon": "git-branch"
3444
3443
  },
3445
3444
  {
3446
- "href": "/backends",
3447
3445
  "icon": "server",
3446
+ "href": "/backends",
3448
3447
  "label": "Backends"
3449
3448
  },
3450
3449
  {
3451
- "label": "Analytics",
3452
3450
  "href": "/analytics",
3453
- "icon": "bar-chart-2"
3451
+ "icon": "bar-chart-2",
3452
+ "label": "Analytics"
3454
3453
  }
3455
3454
  ],
3455
+ "type": "dashboard-layout",
3456
3456
  "children": [
3457
3457
  {
3458
- "type": "scaled-diagram",
3459
3458
  "children": [
3460
3459
  {
3461
3460
  "direction": "vertical",
3462
- "gap": "lg",
3463
3461
  "children": [
3464
3462
  {
3465
3463
  "items": [
@@ -3475,34 +3473,34 @@
3475
3473
  },
3476
3474
  {
3477
3475
  "gap": "md",
3476
+ "type": "stack",
3477
+ "justify": "between",
3478
3478
  "direction": "horizontal",
3479
3479
  "children": [
3480
3480
  {
3481
- "type": "stack",
3482
- "gap": "md",
3483
3481
  "direction": "horizontal",
3482
+ "gap": "md",
3483
+ "type": "stack",
3484
3484
  "children": [
3485
3485
  {
3486
- "type": "icon",
3487
- "name": "bar-chart-2"
3486
+ "name": "bar-chart-2",
3487
+ "type": "icon"
3488
3488
  },
3489
3489
  {
3490
+ "type": "typography",
3490
3491
  "content": "Analytics",
3491
- "variant": "h2",
3492
- "type": "typography"
3492
+ "variant": "h2"
3493
3493
  }
3494
3494
  ]
3495
3495
  },
3496
3496
  {
3497
- "label": "Refresh",
3498
3497
  "action": "REFRESH",
3499
3498
  "variant": "secondary",
3499
+ "icon": "refresh-cw",
3500
3500
  "type": "button",
3501
- "icon": "refresh-cw"
3501
+ "label": "Refresh"
3502
3502
  }
3503
- ],
3504
- "type": "stack",
3505
- "justify": "between"
3503
+ ]
3506
3504
  },
3507
3505
  {
3508
3506
  "type": "divider"
@@ -3515,25 +3513,25 @@
3515
3513
  "cols": 3.0,
3516
3514
  "children": [
3517
3515
  {
3518
- "value": "@entity.totalRequests",
3519
3516
  "type": "stat-display",
3520
- "label": "TotalRequests"
3517
+ "label": "TotalRequests",
3518
+ "value": "@entity.totalRequests"
3521
3519
  },
3522
3520
  {
3523
- "value": "@entity.errorRate",
3524
3521
  "type": "stat-display",
3522
+ "value": "@entity.errorRate",
3525
3523
  "label": "ErrorRate"
3526
3524
  },
3527
3525
  {
3528
- "label": "AvgLatency",
3529
3526
  "type": "stat-display",
3527
+ "label": "AvgLatency",
3530
3528
  "value": "@entity.avgLatency"
3531
3529
  },
3532
3530
  {
3533
- "type": "card",
3534
3531
  "children": [
3535
3532
  {
3536
- "direction": "vertical",
3533
+ "gap": "sm",
3534
+ "type": "stack",
3537
3535
  "children": [
3538
3536
  {
3539
3537
  "type": "typography",
@@ -3546,10 +3544,10 @@
3546
3544
  "variant": "h3"
3547
3545
  }
3548
3546
  ],
3549
- "type": "stack",
3550
- "gap": "sm"
3547
+ "direction": "vertical"
3551
3548
  }
3552
- ]
3549
+ ],
3550
+ "type": "card"
3553
3551
  }
3554
3552
  ]
3555
3553
  }
@@ -3560,16 +3558,16 @@
3560
3558
  "type": "divider"
3561
3559
  },
3562
3560
  {
3563
- "gap": "md",
3564
- "type": "grid",
3565
3561
  "cols": 2.0,
3562
+ "type": "grid",
3563
+ "gap": "md",
3566
3564
  "children": [
3567
3565
  {
3568
3566
  "type": "card",
3569
3567
  "children": [
3570
3568
  {
3571
- "variant": "caption",
3572
3569
  "content": "Chart View",
3570
+ "variant": "caption",
3573
3571
  "type": "typography"
3574
3572
  }
3575
3573
  ]
@@ -3587,18 +3585,19 @@
3587
3585
  ]
3588
3586
  },
3589
3587
  {
3588
+ "type": "line-chart",
3590
3589
  "data": [
3591
3590
  {
3592
- "value": 12.0,
3593
- "date": "Jan"
3591
+ "date": "Jan",
3592
+ "value": 12.0
3594
3593
  },
3595
3594
  {
3596
3595
  "date": "Feb",
3597
3596
  "value": 19.0
3598
3597
  },
3599
3598
  {
3600
- "value": 15.0,
3601
- "date": "Mar"
3599
+ "date": "Mar",
3600
+ "value": 15.0
3602
3601
  },
3603
3602
  {
3604
3603
  "date": "Apr",
@@ -3612,24 +3611,24 @@
3612
3611
  "value": 30.0,
3613
3612
  "date": "Jun"
3614
3613
  }
3615
- ],
3616
- "type": "line-chart"
3614
+ ]
3617
3615
  },
3618
3616
  {
3617
+ "type": "chart-legend",
3619
3618
  "items": [
3620
3619
  {
3621
- "color": "primary",
3622
- "label": "Current"
3620
+ "label": "Current",
3621
+ "color": "primary"
3623
3622
  },
3624
3623
  {
3625
3624
  "label": "Previous",
3626
3625
  "color": "muted"
3627
3626
  }
3628
- ],
3629
- "type": "chart-legend"
3627
+ ]
3630
3628
  },
3631
3629
  {
3632
3630
  "height": 200.0,
3631
+ "type": "graph-view",
3633
3632
  "edges": [
3634
3633
  {
3635
3634
  "source": "a",
@@ -3640,27 +3639,28 @@
3640
3639
  "target": "c"
3641
3640
  }
3642
3641
  ],
3643
- "type": "graph-view",
3644
3642
  "nodes": [
3645
3643
  {
3646
3644
  "id": "a",
3647
3645
  "label": "Start"
3648
3646
  },
3649
3647
  {
3650
- "label": "Process",
3651
- "id": "b"
3648
+ "id": "b",
3649
+ "label": "Process"
3652
3650
  },
3653
3651
  {
3654
- "label": "End",
3655
- "id": "c"
3652
+ "id": "c",
3653
+ "label": "End"
3656
3654
  }
3657
3655
  ],
3658
3656
  "width": 400.0
3659
3657
  }
3660
3658
  ],
3659
+ "gap": "lg",
3661
3660
  "type": "stack"
3662
3661
  }
3663
- ]
3662
+ ],
3663
+ "type": "scaled-diagram"
3664
3664
  }
3665
3665
  ],
3666
3666
  "appName": "API Gateway"
@@ -3688,36 +3688,20 @@
3688
3688
  "main",
3689
3689
  {
3690
3690
  "appName": "API Gateway",
3691
- "navItems": [
3692
- {
3693
- "label": "Routes",
3694
- "icon": "git-branch",
3695
- "href": "/routes"
3696
- },
3697
- {
3698
- "label": "Backends",
3699
- "icon": "server",
3700
- "href": "/backends"
3701
- },
3702
- {
3703
- "label": "Analytics",
3704
- "icon": "bar-chart-2",
3705
- "href": "/analytics"
3706
- }
3707
- ],
3708
- "type": "dashboard-layout",
3709
3691
  "children": [
3710
3692
  {
3711
3693
  "type": "scaled-diagram",
3712
3694
  "children": [
3713
3695
  {
3696
+ "type": "stack",
3697
+ "direction": "vertical",
3714
3698
  "children": [
3715
3699
  {
3716
3700
  "type": "breadcrumb",
3717
3701
  "items": [
3718
3702
  {
3719
- "href": "/",
3720
- "label": "Home"
3703
+ "label": "Home",
3704
+ "href": "/"
3721
3705
  },
3722
3706
  {
3723
3707
  "label": "Analytics"
@@ -3725,135 +3709,135 @@
3725
3709
  ]
3726
3710
  },
3727
3711
  {
3728
- "direction": "horizontal",
3729
- "gap": "md",
3730
3712
  "type": "stack",
3713
+ "direction": "horizontal",
3731
3714
  "children": [
3732
3715
  {
3716
+ "gap": "md",
3733
3717
  "direction": "horizontal",
3718
+ "type": "stack",
3734
3719
  "children": [
3735
3720
  {
3736
- "type": "icon",
3737
- "name": "bar-chart-2"
3721
+ "name": "bar-chart-2",
3722
+ "type": "icon"
3738
3723
  },
3739
3724
  {
3725
+ "content": "Analytics",
3740
3726
  "type": "typography",
3741
- "variant": "h2",
3742
- "content": "Analytics"
3727
+ "variant": "h2"
3743
3728
  }
3744
- ],
3745
- "gap": "md",
3746
- "type": "stack"
3729
+ ]
3747
3730
  },
3748
3731
  {
3732
+ "type": "button",
3749
3733
  "label": "Refresh",
3750
3734
  "action": "REFRESH",
3751
- "variant": "secondary",
3752
3735
  "icon": "refresh-cw",
3753
- "type": "button"
3736
+ "variant": "secondary"
3754
3737
  }
3755
3738
  ],
3756
- "justify": "between"
3739
+ "justify": "between",
3740
+ "gap": "md"
3757
3741
  },
3758
3742
  {
3759
3743
  "type": "divider"
3760
3744
  },
3761
3745
  {
3762
- "type": "box",
3763
3746
  "padding": "md",
3764
3747
  "children": [
3765
3748
  {
3749
+ "type": "simple-grid",
3750
+ "cols": 3.0,
3766
3751
  "children": [
3767
3752
  {
3753
+ "label": "TotalRequests",
3768
3754
  "value": "@entity.totalRequests",
3769
- "type": "stat-display",
3770
- "label": "TotalRequests"
3755
+ "type": "stat-display"
3771
3756
  },
3772
3757
  {
3773
- "label": "ErrorRate",
3758
+ "type": "stat-display",
3774
3759
  "value": "@entity.errorRate",
3775
- "type": "stat-display"
3760
+ "label": "ErrorRate"
3776
3761
  },
3777
3762
  {
3778
- "value": "@entity.avgLatency",
3763
+ "type": "stat-display",
3779
3764
  "label": "AvgLatency",
3780
- "type": "stat-display"
3765
+ "value": "@entity.avgLatency"
3781
3766
  },
3782
3767
  {
3783
3768
  "children": [
3784
3769
  {
3785
- "type": "stack",
3786
3770
  "children": [
3787
3771
  {
3772
+ "type": "typography",
3788
3773
  "variant": "caption",
3789
- "content": "Uptime",
3790
- "type": "typography"
3774
+ "content": "Uptime"
3791
3775
  },
3792
3776
  {
3793
- "content": "@entity.uptime",
3794
3777
  "variant": "h3",
3778
+ "content": "@entity.uptime",
3795
3779
  "type": "typography"
3796
3780
  }
3797
3781
  ],
3782
+ "gap": "sm",
3798
3783
  "direction": "vertical",
3799
- "gap": "sm"
3784
+ "type": "stack"
3800
3785
  }
3801
3786
  ],
3802
3787
  "type": "card"
3803
3788
  }
3804
- ],
3805
- "type": "simple-grid",
3806
- "cols": 3.0
3789
+ ]
3807
3790
  }
3808
- ]
3791
+ ],
3792
+ "type": "box"
3809
3793
  },
3810
3794
  {
3811
3795
  "type": "divider"
3812
3796
  },
3813
3797
  {
3798
+ "cols": 2.0,
3814
3799
  "gap": "md",
3800
+ "type": "grid",
3815
3801
  "children": [
3816
3802
  {
3803
+ "type": "card",
3817
3804
  "children": [
3818
3805
  {
3819
3806
  "type": "typography",
3820
- "content": "Chart View",
3821
- "variant": "caption"
3807
+ "variant": "caption",
3808
+ "content": "Chart View"
3822
3809
  }
3823
- ],
3824
- "type": "card"
3810
+ ]
3825
3811
  },
3826
3812
  {
3813
+ "type": "card",
3827
3814
  "children": [
3828
3815
  {
3829
- "content": "Graph View",
3816
+ "type": "typography",
3830
3817
  "variant": "caption",
3831
- "type": "typography"
3818
+ "content": "Graph View"
3832
3819
  }
3833
- ],
3834
- "type": "card"
3820
+ ]
3835
3821
  }
3836
- ],
3837
- "type": "grid",
3838
- "cols": 2.0
3822
+ ]
3839
3823
  },
3840
3824
  {
3841
3825
  "data": [
3842
3826
  {
3843
- "date": "Jan",
3844
- "value": 12.0
3827
+ "value": 12.0,
3828
+ "date": "Jan"
3845
3829
  },
3846
3830
  {
3847
- "date": "Feb",
3848
- "value": 19.0
3831
+ "value": 19.0,
3832
+ "date": "Feb"
3849
3833
  },
3850
3834
  {
3851
3835
  "date": "Mar",
3852
3836
  "value": 15.0
3853
3837
  },
3854
3838
  {
3855
- "date": "Apr",
3856
- "value": 25.0
3839
+ "value": 25.0,
3840
+ "date": "Apr"
3857
3841
  },
3858
3842
  {
3859
3843
  "date": "May",
@@ -3869,8 +3853,8 @@
3869
3853
  {
3870
3854
  "items": [
3871
3855
  {
3872
- "label": "Current",
3873
- "color": "primary"
3856
+ "color": "primary",
3857
+ "label": "Current"
3874
3858
  },
3875
3859
  {
3876
3860
  "label": "Previous",
@@ -3880,7 +3864,16 @@
3880
3864
  "type": "chart-legend"
3881
3865
  },
3882
3866
  {
3883
- "width": 400.0,
3867
+ "edges": [
3868
+ {
3869
+ "target": "b",
3870
+ "source": "a"
3871
+ },
3872
+ {
3873
+ "target": "c",
3874
+ "source": "b"
3875
+ }
3876
+ ],
3884
3877
  "nodes": [
3885
3878
  {
3886
3879
  "id": "a",
@@ -3895,27 +3888,34 @@
3895
3888
  "label": "End"
3896
3889
  }
3897
3890
  ],
3898
- "edges": [
3899
- {
3900
- "target": "b",
3901
- "source": "a"
3902
- },
3903
- {
3904
- "source": "b",
3905
- "target": "c"
3906
- }
3907
- ],
3908
3891
  "height": 200.0,
3909
- "type": "graph-view"
3892
+ "type": "graph-view",
3893
+ "width": 400.0
3910
3894
  }
3911
3895
  ],
3912
- "gap": "lg",
3913
- "direction": "vertical",
3914
- "type": "stack"
3896
+ "gap": "lg"
3915
3897
  }
3916
3898
  ]
3917
3899
  }
3918
- ]
3900
+ ],
3901
+ "navItems": [
3902
+ {
3903
+ "label": "Routes",
3904
+ "href": "/routes",
3905
+ "icon": "git-branch"
3906
+ },
3907
+ {
3908
+ "href": "/backends",
3909
+ "label": "Backends",
3910
+ "icon": "server"
3911
+ },
3912
+ {
3913
+ "href": "/analytics",
3914
+ "label": "Analytics",
3915
+ "icon": "bar-chart-2"
3916
+ }
3917
+ ],
3918
+ "type": "dashboard-layout"
3919
3919
  }
3920
3920
  ]
3921
3921
  ]
@@ -3930,8 +3930,8 @@
3930
3930
  "Analytics",
3931
3931
  {
3932
3932
  "emit": {
3933
- "failure": "AnalyticsLoadFailed",
3934
- "success": "AnalyticsLoaded"
3933
+ "success": "AnalyticsLoaded",
3934
+ "failure": "AnalyticsLoadFailed"
3935
3935
  }
3936
3936
  }
3937
3937
  ],
@@ -3939,16 +3939,30 @@
3939
3939
  "render-ui",
3940
3940
  "main",
3941
3941
  {
3942
+ "navItems": [
3943
+ {
3944
+ "href": "/routes",
3945
+ "icon": "git-branch",
3946
+ "label": "Routes"
3947
+ },
3948
+ {
3949
+ "icon": "server",
3950
+ "label": "Backends",
3951
+ "href": "/backends"
3952
+ },
3953
+ {
3954
+ "icon": "bar-chart-2",
3955
+ "label": "Analytics",
3956
+ "href": "/analytics"
3957
+ }
3958
+ ],
3942
3959
  "children": [
3943
3960
  {
3944
- "type": "scaled-diagram",
3945
3961
  "children": [
3946
3962
  {
3947
- "type": "stack",
3948
- "gap": "lg",
3949
- "direction": "vertical",
3950
3963
  "children": [
3951
3964
  {
3965
+ "type": "breadcrumb",
3952
3966
  "items": [
3953
3967
  {
3954
3968
  "label": "Home",
@@ -3957,39 +3971,38 @@
3957
3971
  {
3958
3972
  "label": "Analytics"
3959
3973
  }
3960
- ],
3961
- "type": "breadcrumb"
3974
+ ]
3962
3975
  },
3963
3976
  {
3964
- "direction": "horizontal",
3965
- "type": "stack",
3966
3977
  "children": [
3967
3978
  {
3979
+ "direction": "horizontal",
3968
3980
  "type": "stack",
3969
3981
  "children": [
3970
3982
  {
3971
- "type": "icon",
3972
- "name": "bar-chart-2"
3983
+ "name": "bar-chart-2",
3984
+ "type": "icon"
3973
3985
  },
3974
3986
  {
3975
3987
  "variant": "h2",
3976
- "type": "typography",
3977
- "content": "Analytics"
3988
+ "content": "Analytics",
3989
+ "type": "typography"
3978
3990
  }
3979
3991
  ],
3980
- "direction": "horizontal",
3981
3992
  "gap": "md"
3982
3993
  },
3983
3994
  {
3984
- "action": "REFRESH",
3995
+ "icon": "refresh-cw",
3996
+ "variant": "secondary",
3985
3997
  "label": "Refresh",
3986
3998
  "type": "button",
3987
- "variant": "secondary",
3988
- "icon": "refresh-cw"
3999
+ "action": "REFRESH"
3989
4000
  }
3990
4001
  ],
3991
- "justify": "between",
3992
- "gap": "md"
4002
+ "gap": "md",
4003
+ "direction": "horizontal",
4004
+ "type": "stack",
4005
+ "justify": "between"
3993
4006
  },
3994
4007
  {
3995
4008
  "type": "divider"
@@ -3997,47 +4010,47 @@
3997
4010
  {
3998
4011
  "children": [
3999
4012
  {
4000
- "cols": 3.0,
4001
4013
  "type": "simple-grid",
4002
4014
  "children": [
4003
4015
  {
4004
- "value": "@entity.totalRequests",
4005
4016
  "type": "stat-display",
4006
- "label": "TotalRequests"
4017
+ "label": "TotalRequests",
4018
+ "value": "@entity.totalRequests"
4007
4019
  },
4008
4020
  {
4009
- "label": "ErrorRate",
4010
4021
  "type": "stat-display",
4011
- "value": "@entity.errorRate"
4022
+ "value": "@entity.errorRate",
4023
+ "label": "ErrorRate"
4012
4024
  },
4013
4025
  {
4014
- "value": "@entity.avgLatency",
4026
+ "type": "stat-display",
4015
4027
  "label": "AvgLatency",
4016
- "type": "stat-display"
4028
+ "value": "@entity.avgLatency"
4017
4029
  },
4018
4030
  {
4031
+ "type": "card",
4019
4032
  "children": [
4020
4033
  {
4021
- "type": "stack",
4022
- "direction": "vertical",
4023
4034
  "gap": "sm",
4035
+ "direction": "vertical",
4036
+ "type": "stack",
4024
4037
  "children": [
4025
4038
  {
4039
+ "variant": "caption",
4026
4040
  "type": "typography",
4027
- "content": "Uptime",
4028
- "variant": "caption"
4041
+ "content": "Uptime"
4029
4042
  },
4030
4043
  {
4044
+ "content": "@entity.uptime",
4031
4045
  "type": "typography",
4032
- "variant": "h3",
4033
- "content": "@entity.uptime"
4046
+ "variant": "h3"
4034
4047
  }
4035
4048
  ]
4036
4049
  }
4037
- ],
4038
- "type": "card"
4050
+ ]
4039
4051
  }
4040
- ]
4052
+ ],
4053
+ "cols": 3.0
4041
4054
  }
4042
4055
  ],
4043
4056
  "type": "box",
@@ -4047,57 +4060,57 @@
4047
4060
  "type": "divider"
4048
4061
  },
4049
4062
  {
4063
+ "type": "grid",
4050
4064
  "children": [
4051
4065
  {
4052
- "type": "card",
4053
4066
  "children": [
4054
4067
  {
4055
- "type": "typography",
4068
+ "content": "Chart View",
4056
4069
  "variant": "caption",
4057
- "content": "Chart View"
4070
+ "type": "typography"
4058
4071
  }
4059
- ]
4072
+ ],
4073
+ "type": "card"
4060
4074
  },
4061
4075
  {
4062
- "type": "card",
4063
4076
  "children": [
4064
4077
  {
4065
- "content": "Graph View",
4066
4078
  "variant": "caption",
4067
- "type": "typography"
4079
+ "type": "typography",
4080
+ "content": "Graph View"
4068
4081
  }
4069
- ]
4082
+ ],
4083
+ "type": "card"
4070
4084
  }
4071
4085
  ],
4072
- "type": "grid",
4073
- "gap": "md",
4074
- "cols": 2.0
4086
+ "cols": 2.0,
4087
+ "gap": "md"
4075
4088
  },
4076
4089
  {
4077
4090
  "data": [
4078
4091
  {
4079
- "value": 12.0,
4080
- "date": "Jan"
4092
+ "date": "Jan",
4093
+ "value": 12.0
4081
4094
  },
4082
4095
  {
4083
- "date": "Feb",
4084
- "value": 19.0
4096
+ "value": 19.0,
4097
+ "date": "Feb"
4085
4098
  },
4086
4099
  {
4087
- "value": 15.0,
4088
- "date": "Mar"
4100
+ "date": "Mar",
4101
+ "value": 15.0
4089
4102
  },
4090
4103
  {
4091
4104
  "date": "Apr",
4092
4105
  "value": 25.0
4093
4106
  },
4094
4107
  {
4095
- "date": "May",
4096
- "value": 22.0
4108
+ "value": 22.0,
4109
+ "date": "May"
4097
4110
  },
4098
4111
  {
4099
- "date": "Jun",
4100
- "value": 30.0
4112
+ "value": 30.0,
4113
+ "date": "Jun"
4101
4114
  }
4102
4115
  ],
4103
4116
  "type": "line-chart"
@@ -4106,8 +4119,8 @@
4106
4119
  "type": "chart-legend",
4107
4120
  "items": [
4108
4121
  {
4109
- "color": "primary",
4110
- "label": "Current"
4122
+ "label": "Current",
4123
+ "color": "primary"
4111
4124
  },
4112
4125
  {
4113
4126
  "label": "Previous",
@@ -4116,7 +4129,19 @@
4116
4129
  ]
4117
4130
  },
4118
4131
  {
4132
+ "edges": [
4133
+ {
4134
+ "source": "a",
4135
+ "target": "b"
4136
+ },
4137
+ {
4138
+ "target": "c",
4139
+ "source": "b"
4140
+ }
4141
+ ],
4119
4142
  "type": "graph-view",
4143
+ "width": 400.0,
4144
+ "height": 200.0,
4120
4145
  "nodes": [
4121
4146
  {
4122
4147
  "label": "Start",
@@ -4130,44 +4155,19 @@
4130
4155
  "id": "c",
4131
4156
  "label": "End"
4132
4157
  }
4133
- ],
4134
- "width": 400.0,
4135
- "height": 200.0,
4136
- "edges": [
4137
- {
4138
- "source": "a",
4139
- "target": "b"
4140
- },
4141
- {
4142
- "target": "c",
4143
- "source": "b"
4144
- }
4145
4158
  ]
4146
4159
  }
4147
- ]
4160
+ ],
4161
+ "gap": "lg",
4162
+ "type": "stack",
4163
+ "direction": "vertical"
4148
4164
  }
4149
- ]
4150
- }
4151
- ],
4152
- "type": "dashboard-layout",
4153
- "navItems": [
4154
- {
4155
- "label": "Routes",
4156
- "href": "/routes",
4157
- "icon": "git-branch"
4158
- },
4159
- {
4160
- "icon": "server",
4161
- "href": "/backends",
4162
- "label": "Backends"
4163
- },
4164
- {
4165
- "label": "Analytics",
4166
- "href": "/analytics",
4167
- "icon": "bar-chart-2"
4165
+ ],
4166
+ "type": "scaled-diagram"
4168
4167
  }
4169
4168
  ],
4170
- "appName": "API Gateway"
4169
+ "appName": "API Gateway",
4170
+ "type": "dashboard-layout"
4171
4171
  }
4172
4172
  ]
4173
4173
  ]
@@ -4190,4 +4190,4 @@
4190
4190
  ]
4191
4191
  }
4192
4192
  ]
4193
- }
4193
+ }