@almadar/std 8.2.0 → 8.3.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 +83 -83
  2. package/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +112 -112
  3. package/behaviors/registry/agent/atoms/std-agent-classifier.orb +107 -101
  4. package/behaviors/registry/agent/atoms/std-agent-completion.orb +131 -116
  5. package/behaviors/registry/agent/atoms/std-agent-context-window.orb +408 -402
  6. package/behaviors/registry/agent/atoms/std-agent-conversation.orb +82 -82
  7. package/behaviors/registry/agent/atoms/std-agent-memory.orb +81 -81
  8. package/behaviors/registry/agent/atoms/std-agent-provider.orb +124 -118
  9. package/behaviors/registry/agent/atoms/std-agent-search.orb +74 -74
  10. package/behaviors/registry/agent/atoms/std-agent-session.orb +129 -129
  11. package/behaviors/registry/agent/atoms/std-agent-step-progress.orb +202 -202
  12. package/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +312 -312
  13. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +59 -59
  14. package/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +206 -206
  15. package/behaviors/registry/agent/molecules/std-agent-learner.orb +186 -186
  16. package/behaviors/registry/agent/molecules/std-agent-planner.orb +136 -136
  17. package/behaviors/registry/agent/molecules/std-agent-rag.orb +116 -116
  18. package/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +206 -206
  19. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1131 -1131
  20. package/behaviors/registry/agent/organisms/std-agent-builder.orb +3061 -3061
  21. package/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2114 -2114
  22. package/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1007 -1007
  23. package/behaviors/registry/agent/organisms/std-agent-tutor.orb +735 -735
  24. package/behaviors/registry/app/organisms/std-api-gateway.orb +805 -805
  25. package/behaviors/registry/app/organisms/std-booking-system.orb +1178 -1178
  26. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +781 -781
  27. package/behaviors/registry/app/organisms/std-cms.orb +445 -445
  28. package/behaviors/registry/app/organisms/std-coding-academy.orb +368 -368
  29. package/behaviors/registry/app/organisms/std-crm.orb +781 -781
  30. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +1344 -1344
  31. package/behaviors/registry/app/organisms/std-ecommerce.orb +968 -968
  32. package/behaviors/registry/app/organisms/std-finance-tracker.orb +626 -626
  33. package/behaviors/registry/app/organisms/std-healthcare.orb +1286 -1286
  34. package/behaviors/registry/app/organisms/std-helpdesk.orb +636 -636
  35. package/behaviors/registry/app/organisms/std-hr-portal.orb +1160 -1160
  36. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +828 -828
  37. package/behaviors/registry/app/organisms/std-lms.orb +863 -863
  38. package/behaviors/registry/app/organisms/std-project-manager.orb +686 -686
  39. package/behaviors/registry/app/organisms/std-realtime-chat.orb +739 -739
  40. package/behaviors/registry/app/organisms/std-social-feed.orb +239 -239
  41. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +661 -661
  42. package/behaviors/registry/core/atoms/std-browse.orb +60 -60
  43. package/behaviors/registry/core/atoms/std-cache-aside.orb +92 -92
  44. package/behaviors/registry/core/atoms/std-calendar.orb +55 -55
  45. package/behaviors/registry/core/atoms/std-circuit-breaker.orb +176 -176
  46. package/behaviors/registry/core/atoms/std-confirmation.orb +24 -42
  47. package/behaviors/registry/core/atoms/std-display.orb +371 -371
  48. package/behaviors/registry/core/atoms/std-drawer.orb +56 -56
  49. package/behaviors/registry/core/atoms/std-filter.orb +46 -46
  50. package/behaviors/registry/core/atoms/std-gallery.orb +50 -50
  51. package/behaviors/registry/core/atoms/std-modal.orb +14 -32
  52. package/behaviors/registry/core/atoms/std-pagination.orb +45 -45
  53. package/behaviors/registry/core/atoms/std-push.orb +42 -42
  54. package/behaviors/registry/core/atoms/std-rate-limiter.orb +172 -172
  55. package/behaviors/registry/core/atoms/std-related.orb +36 -36
  56. package/behaviors/registry/core/atoms/std-search.orb +71 -71
  57. package/behaviors/registry/core/atoms/std-selection.orb +89 -89
  58. package/behaviors/registry/core/atoms/std-tabs.orb +49 -49
  59. package/behaviors/registry/core/molecules/std-cart.orb +54 -54
  60. package/behaviors/registry/core/molecules/std-filtered-list.orb +5 -5
  61. package/behaviors/registry/core/molecules/std-form-advanced.orb +116 -116
  62. package/behaviors/registry/core/molecules/std-list.orb +60 -60
  63. package/behaviors/registry/core/molecules/std-wizard-form.orb +140 -140
  64. package/behaviors/registry/game/atoms/std-collision.orb +143 -143
  65. package/behaviors/registry/game/atoms/std-combat.orb +80 -80
  66. package/behaviors/registry/game/atoms/std-dialogue-box.orb +26 -26
  67. package/behaviors/registry/game/atoms/std-game-canvas2d.orb +43 -43
  68. package/behaviors/registry/game/atoms/std-gameflow.orb +35 -35
  69. package/behaviors/registry/game/atoms/std-movement.orb +300 -300
  70. package/behaviors/registry/game/atoms/std-overworld.orb +63 -63
  71. package/behaviors/registry/game/atoms/std-physics2d.orb +76 -76
  72. package/behaviors/registry/game/atoms/std-quest.orb +124 -124
  73. package/behaviors/registry/game/atoms/std-timer.orb +251 -260
  74. package/behaviors/registry/game/organisms/std-arcade-game.orb +149 -149
  75. package/behaviors/registry/game/organisms/std-logic-training.orb +77 -77
  76. package/behaviors/registry/game/organisms/std-platformer-app.orb +230 -230
  77. package/behaviors/registry/game/organisms/std-puzzle-app.orb +105 -105
  78. package/behaviors/registry/game/organisms/std-rpg-game.orb +350 -350
  79. package/behaviors/registry/game/organisms/std-stem-lab.orb +377 -377
  80. package/behaviors/registry/game/organisms/std-strategy-game.orb +529 -529
  81. package/behaviors/registry/probes/molecules/std-source-scope-probe.orb +12 -12
  82. package/behaviors/registry/service/atoms/std-service-custom-bearer.orb +70 -70
  83. package/behaviors/registry/service/atoms/std-service-email.orb +84 -84
  84. package/behaviors/registry/service/atoms/std-service-github.orb +99 -99
  85. package/behaviors/registry/service/atoms/std-service-llm.orb +115 -115
  86. package/behaviors/registry/service/atoms/std-service-oauth.orb +116 -116
  87. package/behaviors/registry/service/atoms/std-service-redis.orb +95 -95
  88. package/behaviors/registry/service/atoms/std-service-storage.orb +105 -105
  89. package/behaviors/registry/service/atoms/std-service-stripe.orb +98 -98
  90. package/behaviors/registry/service/atoms/std-service-twilio.orb +99 -99
  91. package/behaviors/registry/service/atoms/std-service-youtube.orb +115 -115
  92. package/behaviors/registry/service/organisms/std-service-marketplace.orb +917 -917
  93. package/behaviors/registry/service/organisms/std-service-research-assistant.orb +933 -933
  94. package/dist/behaviors/registry/agent/atoms/std-agent-activity-log.orb +83 -83
  95. package/dist/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +112 -112
  96. package/dist/behaviors/registry/agent/atoms/std-agent-classifier.orb +107 -101
  97. package/dist/behaviors/registry/agent/atoms/std-agent-completion.orb +131 -116
  98. package/dist/behaviors/registry/agent/atoms/std-agent-context-window.orb +408 -402
  99. package/dist/behaviors/registry/agent/atoms/std-agent-conversation.orb +82 -82
  100. package/dist/behaviors/registry/agent/atoms/std-agent-memory.orb +81 -81
  101. package/dist/behaviors/registry/agent/atoms/std-agent-provider.orb +124 -118
  102. package/dist/behaviors/registry/agent/atoms/std-agent-search.orb +74 -74
  103. package/dist/behaviors/registry/agent/atoms/std-agent-session.orb +129 -129
  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 +312 -312
  106. package/dist/behaviors/registry/agent/atoms/std-agent-tool-call.orb +59 -59
  107. package/dist/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +206 -206
  108. package/dist/behaviors/registry/agent/molecules/std-agent-learner.orb +186 -186
  109. package/dist/behaviors/registry/agent/molecules/std-agent-planner.orb +136 -136
  110. package/dist/behaviors/registry/agent/molecules/std-agent-rag.orb +116 -116
  111. package/dist/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +206 -206
  112. package/dist/behaviors/registry/agent/organisms/std-agent-assistant.orb +1131 -1131
  113. package/dist/behaviors/registry/agent/organisms/std-agent-builder.orb +3061 -3061
  114. package/dist/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2114 -2114
  115. package/dist/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1007 -1007
  116. package/dist/behaviors/registry/agent/organisms/std-agent-tutor.orb +735 -735
  117. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +805 -805
  118. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +1178 -1178
  119. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +781 -781
  120. package/dist/behaviors/registry/app/organisms/std-cms.orb +445 -445
  121. package/dist/behaviors/registry/app/organisms/std-coding-academy.orb +368 -368
  122. package/dist/behaviors/registry/app/organisms/std-crm.orb +781 -781
  123. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +1344 -1344
  124. package/dist/behaviors/registry/app/organisms/std-ecommerce.orb +968 -968
  125. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +626 -626
  126. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +1286 -1286
  127. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +636 -636
  128. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +1160 -1160
  129. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +828 -828
  130. package/dist/behaviors/registry/app/organisms/std-lms.orb +863 -863
  131. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +686 -686
  132. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +739 -739
  133. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +239 -239
  134. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +661 -661
  135. package/dist/behaviors/registry/core/atoms/std-browse.orb +60 -60
  136. package/dist/behaviors/registry/core/atoms/std-cache-aside.orb +92 -92
  137. package/dist/behaviors/registry/core/atoms/std-calendar.orb +55 -55
  138. package/dist/behaviors/registry/core/atoms/std-circuit-breaker.orb +176 -176
  139. package/dist/behaviors/registry/core/atoms/std-confirmation.orb +24 -42
  140. package/dist/behaviors/registry/core/atoms/std-display.orb +371 -371
  141. package/dist/behaviors/registry/core/atoms/std-drawer.orb +56 -56
  142. package/dist/behaviors/registry/core/atoms/std-filter.orb +46 -46
  143. package/dist/behaviors/registry/core/atoms/std-gallery.orb +50 -50
  144. package/dist/behaviors/registry/core/atoms/std-modal.orb +14 -32
  145. package/dist/behaviors/registry/core/atoms/std-pagination.orb +45 -45
  146. package/dist/behaviors/registry/core/atoms/std-push.orb +42 -42
  147. package/dist/behaviors/registry/core/atoms/std-rate-limiter.orb +172 -172
  148. package/dist/behaviors/registry/core/atoms/std-related.orb +36 -36
  149. package/dist/behaviors/registry/core/atoms/std-search.orb +71 -71
  150. package/dist/behaviors/registry/core/atoms/std-selection.orb +89 -89
  151. package/dist/behaviors/registry/core/atoms/std-tabs.orb +49 -49
  152. package/dist/behaviors/registry/core/molecules/std-cart.orb +54 -54
  153. package/dist/behaviors/registry/core/molecules/std-filtered-list.orb +5 -5
  154. package/dist/behaviors/registry/core/molecules/std-form-advanced.orb +116 -116
  155. package/dist/behaviors/registry/core/molecules/std-list.orb +60 -60
  156. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +140 -140
  157. package/dist/behaviors/registry/game/atoms/std-collision.orb +143 -143
  158. package/dist/behaviors/registry/game/atoms/std-combat.orb +80 -80
  159. package/dist/behaviors/registry/game/atoms/std-dialogue-box.orb +26 -26
  160. package/dist/behaviors/registry/game/atoms/std-game-canvas2d.orb +43 -43
  161. package/dist/behaviors/registry/game/atoms/std-gameflow.orb +35 -35
  162. package/dist/behaviors/registry/game/atoms/std-movement.orb +300 -300
  163. package/dist/behaviors/registry/game/atoms/std-overworld.orb +63 -63
  164. package/dist/behaviors/registry/game/atoms/std-physics2d.orb +76 -76
  165. package/dist/behaviors/registry/game/atoms/std-quest.orb +124 -124
  166. package/dist/behaviors/registry/game/atoms/std-timer.orb +251 -260
  167. package/dist/behaviors/registry/game/organisms/std-arcade-game.orb +149 -149
  168. package/dist/behaviors/registry/game/organisms/std-logic-training.orb +77 -77
  169. package/dist/behaviors/registry/game/organisms/std-platformer-app.orb +230 -230
  170. package/dist/behaviors/registry/game/organisms/std-puzzle-app.orb +105 -105
  171. package/dist/behaviors/registry/game/organisms/std-rpg-game.orb +350 -350
  172. package/dist/behaviors/registry/game/organisms/std-stem-lab.orb +377 -377
  173. package/dist/behaviors/registry/game/organisms/std-strategy-game.orb +529 -529
  174. package/dist/behaviors/registry/probes/molecules/std-source-scope-probe.orb +12 -12
  175. package/dist/behaviors/registry/service/atoms/std-service-custom-bearer.orb +70 -70
  176. package/dist/behaviors/registry/service/atoms/std-service-email.orb +84 -84
  177. package/dist/behaviors/registry/service/atoms/std-service-github.orb +99 -99
  178. package/dist/behaviors/registry/service/atoms/std-service-llm.orb +115 -115
  179. package/dist/behaviors/registry/service/atoms/std-service-oauth.orb +116 -116
  180. package/dist/behaviors/registry/service/atoms/std-service-redis.orb +95 -95
  181. package/dist/behaviors/registry/service/atoms/std-service-storage.orb +105 -105
  182. package/dist/behaviors/registry/service/atoms/std-service-stripe.orb +98 -98
  183. package/dist/behaviors/registry/service/atoms/std-service-twilio.orb +99 -99
  184. package/dist/behaviors/registry/service/atoms/std-service-youtube.orb +115 -115
  185. package/dist/behaviors/registry/service/organisms/std-service-marketplace.orb +917 -917
  186. package/dist/behaviors/registry/service/organisms/std-service-research-assistant.orb +933 -933
  187. package/package.json +1 -1
@@ -343,8 +343,8 @@
343
343
  "Route",
344
344
  {
345
345
  "emit": {
346
- "failure": "RouteLoadFailed",
347
- "success": "RouteLoaded"
346
+ "success": "RouteLoaded",
347
+ "failure": "RouteLoadFailed"
348
348
  }
349
349
  }
350
350
  ],
@@ -352,22 +352,22 @@
352
352
  "render-ui",
353
353
  "main",
354
354
  {
355
- "gap": "md",
356
- "type": "stack",
357
- "align": "center",
358
355
  "children": [
359
356
  {
360
357
  "type": "spinner"
361
358
  },
362
359
  {
363
360
  "type": "typography",
364
- "content": "Loading routes…",
361
+ "color": "muted",
365
362
  "variant": "caption",
366
- "color": "muted"
363
+ "content": "Loading routes…"
367
364
  }
368
365
  ],
369
- "className": "py-12",
370
- "direction": "vertical"
366
+ "align": "center",
367
+ "direction": "vertical",
368
+ "gap": "md",
369
+ "type": "stack",
370
+ "className": "py-12"
371
371
  }
372
372
  ]
373
373
  ]
@@ -383,117 +383,117 @@
383
383
  {
384
384
  "navItems": [
385
385
  {
386
+ "label": "Routes",
386
387
  "href": "/routes",
387
- "icon": "git-branch",
388
- "label": "Routes"
388
+ "icon": "git-branch"
389
389
  },
390
390
  {
391
+ "label": "Backends",
391
392
  "href": "/backends",
392
- "icon": "server",
393
- "label": "Backends"
393
+ "icon": "server"
394
394
  },
395
395
  {
396
- "label": "Analytics",
396
+ "href": "/analytics",
397
397
  "icon": "bar-chart-2",
398
- "href": "/analytics"
398
+ "label": "Analytics"
399
399
  }
400
400
  ],
401
401
  "children": [
402
402
  {
403
- "gap": "lg",
404
- "type": "stack",
405
403
  "direction": "vertical",
406
- "className": "max-w-5xl mx-auto w-full",
407
404
  "children": [
408
405
  {
409
- "align": "center",
410
- "type": "stack",
411
- "justify": "between",
412
- "direction": "horizontal",
406
+ "gap": "md",
413
407
  "children": [
414
408
  {
415
- "direction": "horizontal",
416
- "align": "center",
417
- "gap": "sm",
418
409
  "children": [
419
410
  {
420
- "type": "icon",
421
- "name": "git-branch"
411
+ "name": "git-branch",
412
+ "type": "icon"
422
413
  },
423
414
  {
424
- "content": "Routes",
425
415
  "variant": "h2",
426
- "type": "typography"
416
+ "type": "typography",
417
+ "content": "Routes"
427
418
  }
428
419
  ],
429
- "type": "stack"
420
+ "direction": "horizontal",
421
+ "align": "center",
422
+ "type": "stack",
423
+ "gap": "sm"
430
424
  },
431
425
  {
426
+ "type": "stack",
432
427
  "direction": "horizontal",
428
+ "gap": "sm",
433
429
  "children": [
434
430
  {
435
- "action": "CREATE",
436
- "label": "Create Route",
437
- "icon": "plus",
431
+ "variant": "primary",
438
432
  "type": "button",
439
- "variant": "primary"
433
+ "icon": "plus",
434
+ "action": "CREATE",
435
+ "label": "Create Route"
440
436
  }
441
- ],
442
- "type": "stack",
443
- "gap": "sm"
437
+ ]
444
438
  }
445
439
  ],
446
- "gap": "md"
440
+ "direction": "horizontal",
441
+ "type": "stack",
442
+ "justify": "between",
443
+ "align": "center"
447
444
  },
448
445
  {
449
446
  "type": "divider"
450
447
  },
451
448
  {
452
- "columns": [
453
- {
454
- "name": "method",
455
- "variant": "badge"
456
- },
449
+ "gap": "sm",
450
+ "itemActions": [
457
451
  {
458
- "variant": "h3",
459
- "name": "path",
460
- "icon": "git-branch"
452
+ "variant": "ghost",
453
+ "event": "VIEW",
454
+ "label": "View"
461
455
  },
462
456
  {
463
- "variant": "body",
464
- "name": "backend"
457
+ "variant": "ghost",
458
+ "label": "Edit",
459
+ "event": "EDIT"
465
460
  },
466
461
  {
467
- "format": "number",
468
- "label": "Rate Limit",
469
- "variant": "caption",
470
- "name": "rateLimit"
462
+ "event": "DELETE",
463
+ "variant": "danger",
464
+ "label": "Delete"
471
465
  }
472
466
  ],
473
467
  "variant": "card",
474
468
  "type": "data-list",
475
- "gap": "sm",
469
+ "fields": [],
476
470
  "entity": "@payload.data",
477
- "itemActions": [
471
+ "columns": [
478
472
  {
479
- "label": "View",
480
- "event": "VIEW",
481
- "variant": "ghost"
473
+ "name": "method",
474
+ "variant": "badge"
482
475
  },
483
476
  {
484
- "event": "EDIT",
485
- "variant": "ghost",
486
- "label": "Edit"
477
+ "icon": "git-branch",
478
+ "variant": "h3",
479
+ "name": "path"
487
480
  },
488
481
  {
489
- "variant": "danger",
490
- "label": "Delete",
491
- "event": "DELETE"
482
+ "variant": "body",
483
+ "name": "backend"
484
+ },
485
+ {
486
+ "variant": "caption",
487
+ "label": "Rate Limit",
488
+ "format": "number",
489
+ "name": "rateLimit"
492
490
  }
493
- ],
494
- "fields": []
491
+ ]
495
492
  }
496
- ]
493
+ ],
494
+ "type": "stack",
495
+ "gap": "lg",
496
+ "className": "max-w-5xl mx-auto w-full"
497
497
  }
498
498
  ],
499
499
  "appName": "API Gateway",
@@ -511,36 +511,36 @@
511
511
  "render-ui",
512
512
  "main",
513
513
  {
514
- "type": "stack",
515
- "align": "center",
516
- "gap": "md",
517
- "direction": "vertical",
518
- "className": "py-12",
519
514
  "children": [
520
515
  {
516
+ "name": "alert-triangle",
521
517
  "color": "destructive",
522
- "type": "icon",
523
- "name": "alert-triangle"
518
+ "type": "icon"
524
519
  },
525
520
  {
521
+ "variant": "h3",
526
522
  "type": "typography",
527
- "content": "Failed to load routes",
528
- "variant": "h3"
523
+ "content": "Failed to load routes"
529
524
  },
530
525
  {
531
526
  "variant": "body",
532
- "type": "typography",
527
+ "content": "@payload.error",
533
528
  "color": "muted",
534
- "content": "@payload.error"
529
+ "type": "typography"
535
530
  },
536
531
  {
537
532
  "label": "Retry",
538
533
  "icon": "rotate-ccw",
534
+ "variant": "primary",
539
535
  "action": "INIT",
540
- "type": "button",
541
- "variant": "primary"
536
+ "type": "button"
542
537
  }
543
- ]
538
+ ],
539
+ "direction": "vertical",
540
+ "type": "stack",
541
+ "align": "center",
542
+ "gap": "md",
543
+ "className": "py-12"
544
544
  }
545
545
  ]
546
546
  ]
@@ -724,8 +724,8 @@
724
724
  "Route",
725
725
  {
726
726
  "emit": {
727
- "failure": "RouteLoadFailed",
728
- "success": "RouteLoaded"
727
+ "success": "RouteLoaded",
728
+ "failure": "RouteLoadFailed"
729
729
  }
730
730
  }
731
731
  ],
@@ -733,12 +733,12 @@
733
733
  "render-ui",
734
734
  "modal",
735
735
  {
736
- "direction": "vertical",
737
736
  "type": "stack",
738
- "gap": "md",
739
737
  "children": [
740
738
  {
739
+ "direction": "horizontal",
741
740
  "type": "stack",
741
+ "gap": "sm",
742
742
  "children": [
743
743
  {
744
744
  "name": "plus-circle",
@@ -749,26 +749,26 @@
749
749
  "type": "typography",
750
750
  "content": "Create Route"
751
751
  }
752
- ],
753
- "gap": "sm",
754
- "direction": "horizontal"
752
+ ]
755
753
  },
756
754
  {
757
755
  "type": "divider"
758
756
  },
759
757
  {
760
758
  "cancelEvent": "CLOSE",
761
- "mode": "create",
762
759
  "submitEvent": "SAVE",
760
+ "type": "form-section",
763
761
  "fields": [
764
762
  "path",
765
763
  "method",
766
764
  "backend",
767
765
  "rateLimit"
768
766
  ],
769
- "type": "form-section"
767
+ "mode": "create"
770
768
  }
771
- ]
769
+ ],
770
+ "direction": "vertical",
771
+ "gap": "md"
772
772
  }
773
773
  ]
774
774
  ]
@@ -809,8 +809,8 @@
809
809
  "@payload.data",
810
810
  {
811
811
  "emit": {
812
- "failure": "RouteSaveFailed",
813
- "success": "RouteSaved"
812
+ "success": "RouteSaved",
813
+ "failure": "RouteSaveFailed"
814
814
  }
815
815
  }
816
816
  ],
@@ -1021,11 +1021,11 @@
1021
1021
  "fetch",
1022
1022
  "Route",
1023
1023
  {
1024
- "id": "@payload.id",
1025
1024
  "emit": {
1026
1025
  "failure": "RouteLoadFailed",
1027
1026
  "success": "RouteLoaded"
1028
- }
1027
+ },
1028
+ "id": "@payload.id"
1029
1029
  }
1030
1030
  ],
1031
1031
  [
@@ -1033,6 +1033,8 @@
1033
1033
  "modal",
1034
1034
  {
1035
1035
  "gap": "md",
1036
+ "type": "stack",
1037
+ "direction": "vertical",
1036
1038
  "children": [
1037
1039
  {
1038
1040
  "type": "stack",
@@ -1054,9 +1056,6 @@
1054
1056
  "type": "divider"
1055
1057
  },
1056
1058
  {
1057
- "entity": "@payload.row",
1058
- "type": "form-section",
1059
- "submitEvent": "SAVE",
1060
1059
  "cancelEvent": "CLOSE",
1061
1060
  "fields": [
1062
1061
  "path",
@@ -1064,11 +1063,12 @@
1064
1063
  "backend",
1065
1064
  "rateLimit"
1066
1065
  ],
1067
- "mode": "edit"
1066
+ "type": "form-section",
1067
+ "mode": "edit",
1068
+ "submitEvent": "SAVE",
1069
+ "entity": "@payload.row"
1068
1070
  }
1069
- ],
1070
- "type": "stack",
1071
- "direction": "vertical"
1071
+ ]
1072
1072
  }
1073
1073
  ]
1074
1074
  ]
@@ -1109,8 +1109,8 @@
1109
1109
  "@payload.data",
1110
1110
  {
1111
1111
  "emit": {
1112
- "success": "RouteUpdated",
1113
- "failure": "RouteUpdateFailed"
1112
+ "failure": "RouteUpdateFailed",
1113
+ "success": "RouteUpdated"
1114
1114
  }
1115
1115
  }
1116
1116
  ],
@@ -1255,41 +1255,43 @@
1255
1255
  "fetch",
1256
1256
  "Route",
1257
1257
  {
1258
- "id": "@payload.id",
1259
1258
  "emit": {
1260
1259
  "success": "RouteLoaded",
1261
1260
  "failure": "RouteLoadFailed"
1262
- }
1261
+ },
1262
+ "id": "@payload.id"
1263
1263
  }
1264
1264
  ],
1265
1265
  [
1266
1266
  "render-ui",
1267
1267
  "modal",
1268
1268
  {
1269
+ "type": "stack",
1270
+ "gap": "md",
1271
+ "direction": "vertical",
1269
1272
  "children": [
1270
1273
  {
1271
- "align": "center",
1272
1274
  "gap": "sm",
1273
- "direction": "horizontal",
1274
- "type": "stack",
1275
+ "align": "center",
1275
1276
  "children": [
1276
1277
  {
1277
1278
  "name": "eye",
1278
1279
  "type": "icon"
1279
1280
  },
1280
1281
  {
1281
- "type": "typography",
1282
1282
  "variant": "h3",
1283
+ "type": "typography",
1283
1284
  "content": "@entity.path"
1284
1285
  }
1285
- ]
1286
+ ],
1287
+ "type": "stack",
1288
+ "direction": "horizontal"
1286
1289
  },
1287
1290
  {
1288
1291
  "type": "divider"
1289
1292
  },
1290
1293
  {
1291
1294
  "gap": "md",
1292
- "direction": "horizontal",
1293
1295
  "type": "stack",
1294
1296
  "children": [
1295
1297
  {
@@ -1302,16 +1304,14 @@
1302
1304
  "content": "@entity.path",
1303
1305
  "variant": "body"
1304
1306
  }
1305
- ]
1307
+ ],
1308
+ "direction": "horizontal"
1306
1309
  },
1307
1310
  {
1308
- "direction": "horizontal",
1309
- "gap": "md",
1310
- "type": "stack",
1311
1311
  "children": [
1312
1312
  {
1313
- "variant": "caption",
1314
1313
  "content": "Method",
1314
+ "variant": "caption",
1315
1315
  "type": "typography"
1316
1316
  },
1317
1317
  {
@@ -1319,11 +1319,14 @@
1319
1319
  "type": "typography",
1320
1320
  "variant": "body"
1321
1321
  }
1322
- ]
1322
+ ],
1323
+ "direction": "horizontal",
1324
+ "type": "stack",
1325
+ "gap": "md"
1323
1326
  },
1324
1327
  {
1325
1328
  "type": "stack",
1326
- "gap": "md",
1329
+ "direction": "horizontal",
1327
1330
  "children": [
1328
1331
  {
1329
1332
  "content": "Backend",
@@ -1331,58 +1334,55 @@
1331
1334
  "variant": "caption"
1332
1335
  },
1333
1336
  {
1334
- "content": "@entity.backend",
1335
1337
  "type": "typography",
1336
- "variant": "body"
1338
+ "variant": "body",
1339
+ "content": "@entity.backend"
1337
1340
  }
1338
1341
  ],
1339
- "direction": "horizontal"
1342
+ "gap": "md"
1340
1343
  },
1341
1344
  {
1345
+ "direction": "horizontal",
1346
+ "type": "stack",
1347
+ "gap": "md",
1342
1348
  "children": [
1343
1349
  {
1344
- "type": "typography",
1350
+ "variant": "caption",
1345
1351
  "content": "Rate Limit",
1346
- "variant": "caption"
1352
+ "type": "typography"
1347
1353
  },
1348
1354
  {
1349
1355
  "variant": "body",
1350
- "content": "@entity.rateLimit",
1351
- "type": "typography"
1356
+ "type": "typography",
1357
+ "content": "@entity.rateLimit"
1352
1358
  }
1353
- ],
1354
- "direction": "horizontal",
1355
- "gap": "md",
1356
- "type": "stack"
1359
+ ]
1357
1360
  },
1358
1361
  {
1359
1362
  "type": "divider"
1360
1363
  },
1361
1364
  {
1362
1365
  "type": "stack",
1363
- "direction": "horizontal",
1364
- "justify": "end",
1365
1366
  "children": [
1366
1367
  {
1367
1368
  "type": "button",
1369
+ "action": "EDIT",
1368
1370
  "variant": "primary",
1369
1371
  "icon": "edit",
1370
- "label": "Edit",
1371
- "action": "EDIT"
1372
+ "label": "Edit"
1372
1373
  },
1373
1374
  {
1374
- "action": "CLOSE",
1375
- "variant": "ghost",
1376
1375
  "label": "Close",
1376
+ "variant": "ghost",
1377
+ "action": "CLOSE",
1377
1378
  "type": "button"
1378
1379
  }
1379
1380
  ],
1380
- "gap": "sm"
1381
+ "gap": "sm",
1382
+ "direction": "horizontal",
1383
+ "justify": "end"
1381
1384
  }
1382
- ],
1383
- "gap": "md",
1384
- "type": "stack",
1385
- "direction": "vertical"
1385
+ ]
1386
1386
  }
1387
1387
  ]
1388
1388
  ]
@@ -1628,11 +1628,11 @@
1628
1628
  "render-ui",
1629
1629
  "modal",
1630
1630
  {
1631
- "gap": "md",
1632
1631
  "type": "stack",
1632
+ "direction": "vertical",
1633
+ "gap": "md",
1633
1634
  "children": [
1634
1635
  {
1635
- "align": "center",
1636
1636
  "children": [
1637
1637
  {
1638
1638
  "name": "alert-triangle",
@@ -1644,9 +1644,10 @@
1644
1644
  "variant": "h3"
1645
1645
  }
1646
1646
  ],
1647
- "type": "stack",
1647
+ "gap": "sm",
1648
1648
  "direction": "horizontal",
1649
- "gap": "sm"
1649
+ "align": "center",
1650
+ "type": "stack"
1650
1651
  },
1651
1652
  {
1652
1653
  "type": "divider"
@@ -1658,27 +1659,26 @@
1658
1659
  },
1659
1660
  {
1660
1661
  "justify": "end",
1661
- "gap": "sm",
1662
1662
  "children": [
1663
1663
  {
1664
1664
  "label": "Cancel",
1665
- "type": "button",
1666
1665
  "variant": "ghost",
1666
+ "type": "button",
1667
1667
  "action": "CANCEL"
1668
1668
  },
1669
1669
  {
1670
- "type": "button",
1671
- "icon": "check",
1672
1670
  "action": "CONFIRM_DELETE",
1671
+ "icon": "check",
1672
+ "variant": "danger",
1673
1673
  "label": "Delete",
1674
- "variant": "danger"
1674
+ "type": "button"
1675
1675
  }
1676
1676
  ],
1677
+ "gap": "sm",
1677
1678
  "type": "stack",
1678
1679
  "direction": "horizontal"
1679
1680
  }
1680
- ],
1681
- "direction": "vertical"
1681
+ ]
1682
1682
  }
1683
1683
  ]
1684
1684
  ]
@@ -1695,8 +1695,8 @@
1695
1695
  "@entity.pendingId",
1696
1696
  {
1697
1697
  "emit": {
1698
- "failure": "RouteDeleteFailed",
1699
- "success": "RouteDeleted"
1698
+ "success": "RouteDeleted",
1699
+ "failure": "RouteDeleteFailed"
1700
1700
  }
1701
1701
  }
1702
1702
  ],
@@ -1952,93 +1952,93 @@
1952
1952
  "render-ui",
1953
1953
  "main",
1954
1954
  {
1955
- "appName": "API Gateway",
1955
+ "type": "dashboard-layout",
1956
1956
  "children": [
1957
1957
  {
1958
- "gap": "lg",
1959
1958
  "direction": "vertical",
1960
1959
  "type": "stack",
1961
1960
  "children": [
1962
1961
  {
1963
- "type": "stack",
1964
- "direction": "horizontal",
1965
1962
  "gap": "md",
1966
1963
  "children": [
1967
1964
  {
1968
- "gap": "md",
1969
- "type": "stack",
1970
- "align": "center",
1971
- "direction": "horizontal",
1972
1965
  "children": [
1973
1966
  {
1974
1967
  "type": "icon",
1975
1968
  "name": "server"
1976
1969
  },
1977
1970
  {
1978
- "content": "Backend",
1971
+ "type": "typography",
1979
1972
  "variant": "h2",
1980
- "type": "typography"
1973
+ "content": "Backend"
1981
1974
  }
1982
- ]
1975
+ ],
1976
+ "gap": "md",
1977
+ "type": "stack",
1978
+ "align": "center",
1979
+ "direction": "horizontal"
1983
1980
  },
1984
1981
  {
1985
- "status": "online",
1986
- "label": "Circuit Closed",
1987
1982
  "type": "status-dot",
1988
- "pulse": false
1983
+ "label": "Circuit Closed",
1984
+ "pulse": false,
1985
+ "status": "online"
1989
1986
  }
1990
1987
  ],
1988
+ "type": "stack",
1989
+ "justify": "between",
1991
1990
  "align": "center",
1992
- "justify": "between"
1991
+ "direction": "horizontal"
1993
1992
  },
1994
1993
  {
1995
1994
  "type": "divider"
1996
1995
  },
1997
1996
  {
1998
1997
  "type": "alert",
1999
- "message": "Service is healthy. All requests are being processed.",
2000
- "variant": "success"
1998
+ "variant": "success",
1999
+ "message": "Service is healthy. All requests are being processed."
2001
2000
  },
2002
2001
  {
2003
- "type": "simple-grid",
2004
- "cols": 2.0,
2005
2002
  "children": [
2006
2003
  {
2007
- "value": "@entity.failureCount",
2004
+ "type": "stat-display",
2008
2005
  "label": "Failures",
2009
- "type": "stat-display"
2006
+ "value": "@entity.failureCount"
2010
2007
  },
2011
2008
  {
2012
- "type": "stat-display",
2013
2009
  "value": "@entity.successCount",
2014
- "label": "Successes"
2010
+ "label": "Successes",
2011
+ "type": "stat-display"
2015
2012
  }
2016
- ]
2017
- },
2018
- {
2019
- "min": 0.0,
2020
- "type": "meter",
2013
+ ],
2014
+ "type": "simple-grid",
2015
+ "cols": 2.0
2016
+ },
2017
+ {
2021
2018
  "value": "@entity.failureCount",
2022
- "max": "@entity.threshold"
2019
+ "min": 0.0,
2020
+ "max": "@entity.threshold",
2021
+ "type": "meter"
2023
2022
  }
2024
- ]
2023
+ ],
2024
+ "gap": "lg"
2025
2025
  }
2026
2026
  ],
2027
- "type": "dashboard-layout",
2027
+ "appName": "API Gateway",
2028
2028
  "navItems": [
2029
2029
  {
2030
+ "href": "/routes",
2030
2031
  "icon": "git-branch",
2031
- "label": "Routes",
2032
- "href": "/routes"
2032
+ "label": "Routes"
2033
2033
  },
2034
2034
  {
2035
- "href": "/backends",
2036
2035
  "label": "Backends",
2037
- "icon": "server"
2036
+ "icon": "server",
2037
+ "href": "/backends"
2038
2038
  },
2039
2039
  {
2040
- "icon": "bar-chart-2",
2041
2040
  "href": "/analytics",
2041
+ "icon": "bar-chart-2",
2042
2042
  "label": "Analytics"
2043
2043
  }
2044
2044
  ]
@@ -2055,42 +2055,41 @@
2055
2055
  "render-ui",
2056
2056
  "main",
2057
2057
  {
2058
- "type": "dashboard-layout",
2058
+ "appName": "API Gateway",
2059
2059
  "children": [
2060
2060
  {
2061
- "type": "stack",
2062
2061
  "children": [
2063
2062
  {
2064
- "direction": "horizontal",
2065
2063
  "type": "stack",
2064
+ "gap": "md",
2065
+ "align": "center",
2066
+ "justify": "between",
2066
2067
  "children": [
2067
2068
  {
2068
- "type": "stack",
2069
- "direction": "horizontal",
2070
2069
  "gap": "md",
2071
- "align": "center",
2072
2070
  "children": [
2073
2071
  {
2074
- "type": "icon",
2075
- "name": "alert-triangle"
2072
+ "name": "alert-triangle",
2073
+ "type": "icon"
2076
2074
  },
2077
2075
  {
2078
2076
  "content": "Backend",
2079
2077
  "type": "typography",
2080
2078
  "variant": "h2"
2081
2079
  }
2082
- ]
2080
+ ],
2081
+ "direction": "horizontal",
2082
+ "type": "stack",
2083
+ "align": "center"
2083
2084
  },
2084
2085
  {
2085
- "pulse": true,
2086
- "type": "status-dot",
2087
2086
  "status": "critical",
2088
- "label": "Circuit Open"
2087
+ "label": "Circuit Open",
2088
+ "type": "status-dot",
2089
+ "pulse": true
2089
2090
  }
2090
2091
  ],
2091
- "align": "center",
2092
- "justify": "between",
2093
- "gap": "md"
2092
+ "direction": "horizontal"
2094
2093
  },
2095
2094
  {
2096
2095
  "type": "divider"
@@ -2101,40 +2100,41 @@
2101
2100
  "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
2102
2101
  },
2103
2102
  {
2103
+ "type": "simple-grid",
2104
2104
  "children": [
2105
2105
  {
2106
2106
  "label": "Failures",
2107
- "value": "@entity.failureCount",
2108
- "type": "stat-display"
2107
+ "type": "stat-display",
2108
+ "value": "@entity.failureCount"
2109
2109
  },
2110
2110
  {
2111
- "type": "stat-display",
2112
2111
  "label": "Successes",
2113
- "value": "@entity.successCount"
2112
+ "value": "@entity.successCount",
2113
+ "type": "stat-display"
2114
2114
  }
2115
2115
  ],
2116
- "type": "simple-grid",
2117
2116
  "cols": 2.0
2118
2117
  },
2119
2118
  {
2120
- "max": "@entity.threshold",
2121
- "value": "@entity.failureCount",
2122
2119
  "type": "meter",
2123
- "min": 0.0
2120
+ "min": 0.0,
2121
+ "max": "@entity.threshold",
2122
+ "value": "@entity.failureCount"
2124
2123
  },
2125
2124
  {
2126
- "type": "button",
2127
- "action": "RESET",
2128
2125
  "label": "Reset",
2126
+ "action": "RESET",
2129
2127
  "icon": "rotate-ccw",
2130
- "variant": "ghost"
2128
+ "variant": "ghost",
2129
+ "type": "button"
2131
2130
  }
2132
2131
  ],
2132
+ "type": "stack",
2133
2133
  "direction": "vertical",
2134
2134
  "gap": "lg"
2135
2135
  }
2136
2136
  ],
2137
- "appName": "API Gateway",
2137
+ "type": "dashboard-layout",
2138
2138
  "navItems": [
2139
2139
  {
2140
2140
  "icon": "git-branch",
@@ -2142,9 +2142,9 @@
2142
2142
  "href": "/routes"
2143
2143
  },
2144
2144
  {
2145
- "icon": "server",
2145
+ "label": "Backends",
2146
2146
  "href": "/backends",
2147
- "label": "Backends"
2147
+ "icon": "server"
2148
2148
  },
2149
2149
  {
2150
2150
  "label": "Analytics",
@@ -2165,15 +2165,37 @@
2165
2165
  "render-ui",
2166
2166
  "main",
2167
2167
  {
2168
+ "type": "dashboard-layout",
2169
+ "navItems": [
2170
+ {
2171
+ "icon": "git-branch",
2172
+ "label": "Routes",
2173
+ "href": "/routes"
2174
+ },
2175
+ {
2176
+ "href": "/backends",
2177
+ "icon": "server",
2178
+ "label": "Backends"
2179
+ },
2180
+ {
2181
+ "href": "/analytics",
2182
+ "icon": "bar-chart-2",
2183
+ "label": "Analytics"
2184
+ }
2185
+ ],
2186
+ "appName": "API Gateway",
2168
2187
  "children": [
2169
2188
  {
2170
2189
  "children": [
2171
2190
  {
2191
+ "align": "center",
2192
+ "direction": "horizontal",
2193
+ "justify": "between",
2194
+ "gap": "md",
2172
2195
  "children": [
2173
2196
  {
2174
- "gap": "md",
2175
2197
  "type": "stack",
2176
- "direction": "horizontal",
2198
+ "gap": "md",
2177
2199
  "align": "center",
2178
2200
  "children": [
2179
2201
  {
@@ -2181,11 +2203,12 @@
2181
2203
  "name": "server"
2182
2204
  },
2183
2205
  {
2184
- "type": "typography",
2206
+ "content": "Backend",
2185
2207
  "variant": "h2",
2186
- "content": "Backend"
2208
+ "type": "typography"
2187
2209
  }
2188
- ]
2210
+ ],
2211
+ "direction": "horizontal"
2189
2212
  },
2190
2213
  {
2191
2214
  "type": "status-dot",
@@ -2194,10 +2217,6 @@
2194
2217
  "label": "Circuit Closed"
2195
2218
  }
2196
2219
  ],
2197
- "align": "center",
2198
- "justify": "between",
2199
- "gap": "md",
2200
- "direction": "horizontal",
2201
2220
  "type": "stack"
2202
2221
  },
2203
2222
  {
@@ -2205,17 +2224,17 @@
2205
2224
  },
2206
2225
  {
2207
2226
  "message": "Service is healthy. All requests are being processed.",
2208
- "variant": "success",
2209
- "type": "alert"
2227
+ "type": "alert",
2228
+ "variant": "success"
2210
2229
  },
2211
2230
  {
2212
- "cols": 2.0,
2213
2231
  "type": "simple-grid",
2232
+ "cols": 2.0,
2214
2233
  "children": [
2215
2234
  {
2235
+ "label": "Failures",
2216
2236
  "value": "@entity.failureCount",
2217
- "type": "stat-display",
2218
- "label": "Failures"
2237
+ "type": "stat-display"
2219
2238
  },
2220
2239
  {
2221
2240
  "type": "stat-display",
@@ -2225,34 +2244,15 @@
2225
2244
  ]
2226
2245
  },
2227
2246
  {
2228
- "max": "@entity.threshold",
2229
2247
  "value": "@entity.failureCount",
2230
2248
  "type": "meter",
2249
+ "max": "@entity.threshold",
2231
2250
  "min": 0.0
2232
2251
  }
2233
2252
  ],
2234
- "type": "stack",
2235
2253
  "gap": "lg",
2236
- "direction": "vertical"
2237
- }
2238
- ],
2239
- "appName": "API Gateway",
2240
- "type": "dashboard-layout",
2241
- "navItems": [
2242
- {
2243
- "href": "/routes",
2244
- "label": "Routes",
2245
- "icon": "git-branch"
2246
- },
2247
- {
2248
- "href": "/backends",
2249
- "label": "Backends",
2250
- "icon": "server"
2251
- },
2252
- {
2253
- "href": "/analytics",
2254
- "icon": "bar-chart-2",
2255
- "label": "Analytics"
2254
+ "direction": "vertical",
2255
+ "type": "stack"
2256
2256
  }
2257
2257
  ]
2258
2258
  }
@@ -2268,7 +2268,6 @@
2268
2268
  "render-ui",
2269
2269
  "main",
2270
2270
  {
2271
- "appName": "API Gateway",
2272
2271
  "type": "dashboard-layout",
2273
2272
  "children": [
2274
2273
  {
@@ -2276,9 +2275,14 @@
2276
2275
  {
2277
2276
  "justify": "between",
2278
2277
  "direction": "horizontal",
2278
+ "gap": "md",
2279
+ "align": "center",
2279
2280
  "children": [
2280
2281
  {
2282
+ "gap": "md",
2281
2283
  "type": "stack",
2284
+ "direction": "horizontal",
2285
+ "align": "center",
2282
2286
  "children": [
2283
2287
  {
2284
2288
  "type": "icon",
@@ -2286,70 +2290,66 @@
2286
2290
  },
2287
2291
  {
2288
2292
  "type": "typography",
2289
- "content": "Backend",
2290
- "variant": "h2"
2293
+ "variant": "h2",
2294
+ "content": "Backend"
2291
2295
  }
2292
- ],
2293
- "direction": "horizontal",
2294
- "gap": "md",
2295
- "align": "center"
2296
+ ]
2296
2297
  },
2297
2298
  {
2298
2299
  "type": "status-dot",
2299
- "label": "Circuit Half-Open",
2300
+ "pulse": true,
2300
2301
  "status": "warning",
2301
- "pulse": true
2302
+ "label": "Circuit Half-Open"
2302
2303
  }
2303
2304
  ],
2304
- "align": "center",
2305
- "gap": "md",
2306
2305
  "type": "stack"
2307
2306
  },
2308
2307
  {
2309
2308
  "type": "divider"
2310
2309
  },
2311
2310
  {
2312
- "message": "Testing recovery. Limited requests are being allowed through.",
2313
2311
  "variant": "warning",
2314
- "type": "alert"
2312
+ "type": "alert",
2313
+ "message": "Testing recovery. Limited requests are being allowed through."
2315
2314
  },
2316
2315
  {
2317
- "type": "simple-grid",
2318
2316
  "cols": 2.0,
2317
+ "type": "simple-grid",
2319
2318
  "children": [
2320
2319
  {
2320
+ "label": "Failures",
2321
2321
  "type": "stat-display",
2322
- "value": "@entity.failureCount",
2323
- "label": "Failures"
2322
+ "value": "@entity.failureCount"
2324
2323
  },
2325
2324
  {
2326
- "type": "stat-display",
2325
+ "value": "@entity.successCount",
2327
2326
  "label": "Successes",
2328
- "value": "@entity.successCount"
2327
+ "type": "stat-display"
2329
2328
  }
2330
2329
  ]
2331
2330
  }
2332
2331
  ],
2333
- "type": "stack",
2334
2332
  "direction": "vertical",
2335
- "gap": "lg"
2333
+ "gap": "lg",
2334
+ "type": "stack"
2336
2335
  }
2337
2336
  ],
2337
+ "appName": "API Gateway",
2338
2338
  "navItems": [
2339
2339
  {
2340
- "href": "/routes",
2340
+ "icon": "git-branch",
2341
2341
  "label": "Routes",
2342
- "icon": "git-branch"
2342
+ "href": "/routes"
2343
2343
  },
2344
2344
  {
2345
2345
  "label": "Backends",
2346
- "href": "/backends",
2347
- "icon": "server"
2346
+ "icon": "server",
2347
+ "href": "/backends"
2348
2348
  },
2349
2349
  {
2350
- "icon": "bar-chart-2",
2351
2350
  "label": "Analytics",
2352
- "href": "/analytics"
2351
+ "href": "/analytics",
2352
+ "icon": "bar-chart-2"
2353
2353
  }
2354
2354
  ]
2355
2355
  }
@@ -2365,15 +2365,20 @@
2365
2365
  "render-ui",
2366
2366
  "main",
2367
2367
  {
2368
+ "appName": "API Gateway",
2368
2369
  "children": [
2369
2370
  {
2370
- "type": "stack",
2371
- "gap": "lg",
2372
2371
  "direction": "vertical",
2373
2372
  "children": [
2374
2373
  {
2374
+ "direction": "horizontal",
2375
+ "justify": "between",
2376
+ "gap": "md",
2377
+ "align": "center",
2378
+ "type": "stack",
2375
2379
  "children": [
2376
2380
  {
2381
+ "direction": "horizontal",
2377
2382
  "type": "stack",
2378
2383
  "gap": "md",
2379
2384
  "align": "center",
@@ -2383,76 +2388,71 @@
2383
2388
  "name": "server"
2384
2389
  },
2385
2390
  {
2386
- "content": "Backend",
2391
+ "variant": "h2",
2387
2392
  "type": "typography",
2388
- "variant": "h2"
2393
+ "content": "Backend"
2389
2394
  }
2390
- ],
2391
- "direction": "horizontal"
2395
+ ]
2392
2396
  },
2393
2397
  {
2394
- "label": "Circuit Closed",
2395
2398
  "type": "status-dot",
2396
2399
  "pulse": false,
2400
+ "label": "Circuit Closed",
2397
2401
  "status": "online"
2398
2402
  }
2399
- ],
2400
- "align": "center",
2401
- "justify": "between",
2402
- "type": "stack",
2403
- "direction": "horizontal",
2404
- "gap": "md"
2403
+ ]
2405
2404
  },
2406
2405
  {
2407
2406
  "type": "divider"
2408
2407
  },
2409
2408
  {
2410
- "message": "Service is healthy. All requests are being processed.",
2411
2409
  "type": "alert",
2412
- "variant": "success"
2410
+ "variant": "success",
2411
+ "message": "Service is healthy. All requests are being processed."
2413
2412
  },
2414
2413
  {
2414
+ "type": "simple-grid",
2415
+ "cols": 2.0,
2415
2416
  "children": [
2416
2417
  {
2418
+ "label": "Failures",
2417
2419
  "type": "stat-display",
2418
- "value": "@entity.failureCount",
2419
- "label": "Failures"
2420
+ "value": "@entity.failureCount"
2420
2421
  },
2421
2422
  {
2422
- "type": "stat-display",
2423
2423
  "label": "Successes",
2424
- "value": "@entity.successCount"
2424
+ "value": "@entity.successCount",
2425
+ "type": "stat-display"
2425
2426
  }
2426
- ],
2427
- "cols": 2.0,
2428
- "type": "simple-grid"
2427
+ ]
2429
2428
  },
2430
2429
  {
2431
2430
  "type": "meter",
2432
2431
  "value": "@entity.failureCount",
2433
- "max": "@entity.threshold",
2434
- "min": 0.0
2432
+ "min": 0.0,
2433
+ "max": "@entity.threshold"
2435
2434
  }
2436
- ]
2435
+ ],
2436
+ "type": "stack",
2437
+ "gap": "lg"
2437
2438
  }
2438
2439
  ],
2439
2440
  "type": "dashboard-layout",
2440
- "appName": "API Gateway",
2441
2441
  "navItems": [
2442
2442
  {
2443
2443
  "href": "/routes",
2444
- "icon": "git-branch",
2445
- "label": "Routes"
2444
+ "label": "Routes",
2445
+ "icon": "git-branch"
2446
2446
  },
2447
2447
  {
2448
+ "href": "/backends",
2448
2449
  "label": "Backends",
2449
- "icon": "server",
2450
- "href": "/backends"
2450
+ "icon": "server"
2451
2451
  },
2452
2452
  {
2453
+ "label": "Analytics",
2453
2454
  "href": "/analytics",
2454
- "icon": "bar-chart-2",
2455
- "label": "Analytics"
2455
+ "icon": "bar-chart-2"
2456
2456
  }
2457
2457
  ]
2458
2458
  }
@@ -2468,95 +2468,95 @@
2468
2468
  "render-ui",
2469
2469
  "main",
2470
2470
  {
2471
- "appName": "API Gateway",
2472
- "type": "dashboard-layout",
2473
- "navItems": [
2474
- {
2475
- "icon": "git-branch",
2476
- "label": "Routes",
2477
- "href": "/routes"
2478
- },
2479
- {
2480
- "href": "/backends",
2481
- "icon": "server",
2482
- "label": "Backends"
2483
- },
2484
- {
2485
- "label": "Analytics",
2486
- "icon": "bar-chart-2",
2487
- "href": "/analytics"
2488
- }
2489
- ],
2490
2471
  "children": [
2491
2472
  {
2492
- "direction": "vertical",
2493
2473
  "children": [
2494
2474
  {
2495
2475
  "type": "stack",
2496
- "direction": "horizontal",
2497
- "align": "center",
2498
- "gap": "md",
2499
2476
  "justify": "between",
2477
+ "align": "center",
2500
2478
  "children": [
2501
2479
  {
2502
- "type": "stack",
2503
2480
  "align": "center",
2481
+ "direction": "horizontal",
2482
+ "gap": "md",
2504
2483
  "children": [
2505
2484
  {
2506
- "type": "icon",
2507
- "name": "server"
2485
+ "name": "server",
2486
+ "type": "icon"
2508
2487
  },
2509
2488
  {
2510
2489
  "content": "Backend",
2511
- "variant": "h2",
2512
- "type": "typography"
2490
+ "type": "typography",
2491
+ "variant": "h2"
2513
2492
  }
2514
2493
  ],
2515
- "direction": "horizontal",
2516
- "gap": "md"
2494
+ "type": "stack"
2517
2495
  },
2518
2496
  {
2519
- "status": "online",
2520
- "pulse": false,
2521
2497
  "label": "Circuit Closed",
2522
- "type": "status-dot"
2498
+ "pulse": false,
2499
+ "type": "status-dot",
2500
+ "status": "online"
2523
2501
  }
2524
- ]
2502
+ ],
2503
+ "direction": "horizontal",
2504
+ "gap": "md"
2525
2505
  },
2526
2506
  {
2527
2507
  "type": "divider"
2528
2508
  },
2529
2509
  {
2530
- "message": "Service is healthy. All requests are being processed.",
2531
2510
  "type": "alert",
2532
- "variant": "success"
2511
+ "variant": "success",
2512
+ "message": "Service is healthy. All requests are being processed."
2533
2513
  },
2534
2514
  {
2515
+ "type": "simple-grid",
2516
+ "cols": 2.0,
2535
2517
  "children": [
2536
2518
  {
2537
- "value": "@entity.failureCount",
2538
2519
  "label": "Failures",
2539
- "type": "stat-display"
2520
+ "type": "stat-display",
2521
+ "value": "@entity.failureCount"
2540
2522
  },
2541
2523
  {
2542
2524
  "value": "@entity.successCount",
2543
- "type": "stat-display",
2544
- "label": "Successes"
2525
+ "label": "Successes",
2526
+ "type": "stat-display"
2545
2527
  }
2546
- ],
2547
- "type": "simple-grid",
2548
- "cols": 2.0
2528
+ ]
2549
2529
  },
2550
2530
  {
2551
2531
  "max": "@entity.threshold",
2552
2532
  "type": "meter",
2553
- "min": 0.0,
2554
- "value": "@entity.failureCount"
2533
+ "value": "@entity.failureCount",
2534
+ "min": 0.0
2555
2535
  }
2556
2536
  ],
2557
2537
  "gap": "lg",
2538
+ "direction": "vertical",
2558
2539
  "type": "stack"
2559
2540
  }
2541
+ ],
2542
+ "type": "dashboard-layout",
2543
+ "appName": "API Gateway",
2544
+ "navItems": [
2545
+ {
2546
+ "href": "/routes",
2547
+ "label": "Routes",
2548
+ "icon": "git-branch"
2549
+ },
2550
+ {
2551
+ "href": "/backends",
2552
+ "icon": "server",
2553
+ "label": "Backends"
2554
+ },
2555
+ {
2556
+ "icon": "bar-chart-2",
2557
+ "label": "Analytics",
2558
+ "href": "/analytics"
2559
+ }
2560
2560
  ]
2561
2561
  }
2562
2562
  ]
@@ -2572,102 +2572,102 @@
2572
2572
  "main",
2573
2573
  {
2574
2574
  "type": "dashboard-layout",
2575
- "navItems": [
2576
- {
2577
- "label": "Routes",
2578
- "href": "/routes",
2579
- "icon": "git-branch"
2580
- },
2581
- {
2582
- "label": "Backends",
2583
- "href": "/backends",
2584
- "icon": "server"
2585
- },
2586
- {
2587
- "label": "Analytics",
2588
- "icon": "bar-chart-2",
2589
- "href": "/analytics"
2590
- }
2591
- ],
2575
+ "appName": "API Gateway",
2592
2576
  "children": [
2593
2577
  {
2594
- "direction": "vertical",
2595
- "gap": "lg",
2596
- "type": "stack",
2597
2578
  "children": [
2598
2579
  {
2580
+ "gap": "md",
2581
+ "direction": "horizontal",
2582
+ "type": "stack",
2583
+ "align": "center",
2599
2584
  "justify": "between",
2600
2585
  "children": [
2601
2586
  {
2602
- "type": "stack",
2603
- "direction": "horizontal",
2604
- "align": "center",
2605
2587
  "gap": "md",
2606
2588
  "children": [
2607
2589
  {
2608
- "type": "icon",
2609
- "name": "alert-triangle"
2590
+ "name": "alert-triangle",
2591
+ "type": "icon"
2610
2592
  },
2611
2593
  {
2612
2594
  "type": "typography",
2613
- "variant": "h2",
2614
- "content": "Backend"
2595
+ "content": "Backend",
2596
+ "variant": "h2"
2615
2597
  }
2616
- ]
2598
+ ],
2599
+ "align": "center",
2600
+ "type": "stack",
2601
+ "direction": "horizontal"
2617
2602
  },
2618
2603
  {
2619
2604
  "status": "critical",
2620
- "label": "Circuit Open",
2605
+ "pulse": true,
2621
2606
  "type": "status-dot",
2622
- "pulse": true
2607
+ "label": "Circuit Open"
2623
2608
  }
2624
- ],
2625
- "direction": "horizontal",
2626
- "gap": "md",
2627
- "align": "center",
2628
- "type": "stack"
2609
+ ]
2629
2610
  },
2630
2611
  {
2631
2612
  "type": "divider"
2632
2613
  },
2633
2614
  {
2615
+ "message": "Circuit is open. Requests are being rejected to prevent cascading failures.",
2634
2616
  "variant": "error",
2635
- "type": "alert",
2636
- "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
2617
+ "type": "alert"
2637
2618
  },
2638
2619
  {
2639
- "type": "simple-grid",
2620
+ "cols": 2.0,
2640
2621
  "children": [
2641
2622
  {
2623
+ "label": "Failures",
2642
2624
  "value": "@entity.failureCount",
2643
- "type": "stat-display",
2644
- "label": "Failures"
2625
+ "type": "stat-display"
2645
2626
  },
2646
2627
  {
2647
- "type": "stat-display",
2648
2628
  "label": "Successes",
2649
- "value": "@entity.successCount"
2629
+ "value": "@entity.successCount",
2630
+ "type": "stat-display"
2650
2631
  }
2651
2632
  ],
2652
- "cols": 2.0
2633
+ "type": "simple-grid"
2653
2634
  },
2654
2635
  {
2655
- "value": "@entity.failureCount",
2656
2636
  "type": "meter",
2637
+ "value": "@entity.failureCount",
2657
2638
  "max": "@entity.threshold",
2658
2639
  "min": 0.0
2659
2640
  },
2660
2641
  {
2661
- "type": "button",
2662
- "label": "Reset",
2663
- "icon": "rotate-ccw",
2642
+ "action": "RESET",
2664
2643
  "variant": "ghost",
2665
- "action": "RESET"
2644
+ "icon": "rotate-ccw",
2645
+ "type": "button",
2646
+ "label": "Reset"
2666
2647
  }
2667
- ]
2648
+ ],
2649
+ "type": "stack",
2650
+ "direction": "vertical",
2651
+ "gap": "lg"
2668
2652
  }
2669
2653
  ],
2670
- "appName": "API Gateway"
2654
+ "navItems": [
2655
+ {
2656
+ "href": "/routes",
2657
+ "icon": "git-branch",
2658
+ "label": "Routes"
2659
+ },
2660
+ {
2661
+ "label": "Backends",
2662
+ "href": "/backends",
2663
+ "icon": "server"
2664
+ },
2665
+ {
2666
+ "icon": "bar-chart-2",
2667
+ "label": "Analytics",
2668
+ "href": "/analytics"
2669
+ }
2670
+ ]
2671
2671
  }
2672
2672
  ]
2673
2673
  ]
@@ -2681,17 +2681,21 @@
2681
2681
  "render-ui",
2682
2682
  "main",
2683
2683
  {
2684
- "type": "dashboard-layout",
2684
+ "appName": "API Gateway",
2685
2685
  "children": [
2686
2686
  {
2687
+ "gap": "lg",
2687
2688
  "children": [
2688
2689
  {
2690
+ "type": "stack",
2689
2691
  "justify": "between",
2690
2692
  "direction": "horizontal",
2691
2693
  "gap": "md",
2694
+ "align": "center",
2692
2695
  "children": [
2693
2696
  {
2694
- "direction": "horizontal",
2697
+ "align": "center",
2698
+ "type": "stack",
2695
2699
  "children": [
2696
2700
  {
2697
2701
  "name": "server",
@@ -2703,29 +2707,28 @@
2703
2707
  "content": "Backend"
2704
2708
  }
2705
2709
  ],
2706
- "type": "stack",
2707
- "align": "center",
2708
- "gap": "md"
2710
+ "gap": "md",
2711
+ "direction": "horizontal"
2709
2712
  },
2710
2713
  {
2711
- "status": "online",
2712
- "label": "Circuit Closed",
2714
+ "type": "status-dot",
2713
2715
  "pulse": false,
2714
- "type": "status-dot"
2716
+ "status": "online",
2717
+ "label": "Circuit Closed"
2715
2718
  }
2716
- ],
2717
- "type": "stack",
2718
- "align": "center"
2719
+ ]
2719
2720
  },
2720
2721
  {
2721
2722
  "type": "divider"
2722
2723
  },
2723
2724
  {
2724
- "message": "Service is healthy. All requests are being processed.",
2725
+ "variant": "success",
2725
2726
  "type": "alert",
2726
- "variant": "success"
2727
+ "message": "Service is healthy. All requests are being processed."
2727
2728
  },
2728
2729
  {
2730
+ "type": "simple-grid",
2731
+ "cols": 2.0,
2729
2732
  "children": [
2730
2733
  {
2731
2734
  "type": "stat-display",
@@ -2734,43 +2737,40 @@
2734
2737
  },
2735
2738
  {
2736
2739
  "type": "stat-display",
2737
- "label": "Successes",
2738
- "value": "@entity.successCount"
2740
+ "value": "@entity.successCount",
2741
+ "label": "Successes"
2739
2742
  }
2740
- ],
2741
- "type": "simple-grid",
2742
- "cols": 2.0
2743
+ ]
2743
2744
  },
2744
2745
  {
2746
+ "type": "meter",
2745
2747
  "value": "@entity.failureCount",
2746
2748
  "min": 0.0,
2747
- "max": "@entity.threshold",
2748
- "type": "meter"
2749
+ "max": "@entity.threshold"
2749
2750
  }
2750
2751
  ],
2751
- "gap": "lg",
2752
2752
  "type": "stack",
2753
2753
  "direction": "vertical"
2754
2754
  }
2755
2755
  ],
2756
+ "type": "dashboard-layout",
2756
2757
  "navItems": [
2757
2758
  {
2758
- "label": "Routes",
2759
2759
  "icon": "git-branch",
2760
+ "label": "Routes",
2760
2761
  "href": "/routes"
2761
2762
  },
2762
2763
  {
2763
2764
  "href": "/backends",
2764
- "icon": "server",
2765
- "label": "Backends"
2765
+ "label": "Backends",
2766
+ "icon": "server"
2766
2767
  },
2767
2768
  {
2769
+ "label": "Analytics",
2768
2770
  "href": "/analytics",
2769
- "icon": "bar-chart-2",
2770
- "label": "Analytics"
2771
+ "icon": "bar-chart-2"
2771
2772
  }
2772
- ],
2773
- "appName": "API Gateway"
2773
+ ]
2774
2774
  }
2775
2775
  ]
2776
2776
  ]
@@ -2922,8 +2922,8 @@
2922
2922
  "Analytics",
2923
2923
  {
2924
2924
  "emit": {
2925
- "failure": "AnalyticsLoadFailed",
2926
- "success": "AnalyticsLoaded"
2925
+ "success": "AnalyticsLoaded",
2926
+ "failure": "AnalyticsLoadFailed"
2927
2927
  }
2928
2928
  }
2929
2929
  ],
@@ -2931,24 +2931,25 @@
2931
2931
  "render-ui",
2932
2932
  "main",
2933
2933
  {
2934
+ "type": "dashboard-layout",
2935
+ "appName": "API Gateway",
2934
2936
  "navItems": [
2935
2937
  {
2936
- "href": "/routes",
2937
2938
  "label": "Routes",
2938
- "icon": "git-branch"
2939
+ "icon": "git-branch",
2940
+ "href": "/routes"
2939
2941
  },
2940
2942
  {
2941
- "label": "Backends",
2942
2943
  "icon": "server",
2943
- "href": "/backends"
2944
+ "href": "/backends",
2945
+ "label": "Backends"
2944
2946
  },
2945
2947
  {
2946
- "icon": "bar-chart-2",
2948
+ "href": "/analytics",
2947
2949
  "label": "Analytics",
2948
- "href": "/analytics"
2950
+ "icon": "bar-chart-2"
2949
2951
  }
2950
2952
  ],
2951
- "type": "dashboard-layout",
2952
2953
  "children": [
2953
2954
  {
2954
2955
  "type": "scaled-diagram",
@@ -2971,87 +2972,87 @@
2971
2972
  ]
2972
2973
  },
2973
2974
  {
2975
+ "direction": "horizontal",
2976
+ "justify": "between",
2974
2977
  "gap": "md",
2978
+ "type": "stack",
2975
2979
  "children": [
2976
2980
  {
2977
- "type": "stack",
2978
2981
  "gap": "md",
2979
- "direction": "horizontal",
2980
2982
  "children": [
2981
2983
  {
2982
2984
  "name": "bar-chart-2",
2983
2985
  "type": "icon"
2984
2986
  },
2985
2987
  {
2986
- "variant": "h2",
2987
2988
  "content": "Analytics",
2989
+ "variant": "h2",
2988
2990
  "type": "typography"
2989
2991
  }
2990
- ]
2992
+ ],
2993
+ "direction": "horizontal",
2994
+ "type": "stack"
2991
2995
  },
2992
2996
  {
2993
- "icon": "refresh-cw",
2994
2997
  "label": "Refresh",
2998
+ "icon": "refresh-cw",
2995
2999
  "variant": "secondary",
2996
3000
  "action": "REFRESH",
2997
3001
  "type": "button"
2998
3002
  }
2999
- ],
3000
- "justify": "between",
3001
- "type": "stack",
3002
- "direction": "horizontal"
3003
+ ]
3003
3004
  },
3004
3005
  {
3005
3006
  "type": "divider"
3006
3007
  },
3007
3008
  {
3008
- "type": "box",
3009
3009
  "padding": "md",
3010
3010
  "children": [
3011
3011
  {
3012
- "type": "simple-grid",
3013
- "cols": 3.0,
3014
3012
  "children": [
3015
3013
  {
3014
+ "value": "@entity.totalRequests",
3016
3015
  "type": "stat-display",
3017
- "label": "TotalRequests",
3018
- "value": "@entity.totalRequests"
3016
+ "label": "TotalRequests"
3019
3017
  },
3020
3018
  {
3019
+ "type": "stat-display",
3021
3020
  "label": "ErrorRate",
3022
- "value": "@entity.errorRate",
3023
- "type": "stat-display"
3021
+ "value": "@entity.errorRate"
3024
3022
  },
3025
3023
  {
3026
- "type": "stat-display",
3027
3024
  "label": "AvgLatency",
3028
- "value": "@entity.avgLatency"
3025
+ "value": "@entity.avgLatency",
3026
+ "type": "stat-display"
3029
3027
  },
3030
3028
  {
3029
+ "type": "card",
3031
3030
  "children": [
3032
3031
  {
3033
- "type": "stack",
3034
3032
  "children": [
3035
3033
  {
3034
+ "type": "typography",
3036
3035
  "variant": "caption",
3037
- "content": "Uptime",
3038
- "type": "typography"
3036
+ "content": "Uptime"
3039
3037
  },
3040
3038
  {
3041
- "type": "typography",
3042
3039
  "variant": "h3",
3043
- "content": "@entity.uptime"
3040
+ "content": "@entity.uptime",
3041
+ "type": "typography"
3044
3042
  }
3045
3043
  ],
3046
3044
  "direction": "vertical",
3045
+ "type": "stack",
3047
3046
  "gap": "sm"
3048
3047
  }
3049
- ],
3050
- "type": "card"
3048
+ ]
3051
3049
  }
3052
- ]
3050
+ ],
3051
+ "type": "simple-grid",
3052
+ "cols": 3.0
3053
3053
  }
3054
- ]
3054
+ ],
3055
+ "type": "box"
3055
3056
  },
3056
3057
  {
3057
3058
  "type": "divider"
@@ -3060,21 +3061,21 @@
3060
3061
  "type": "grid",
3061
3062
  "children": [
3062
3063
  {
3063
- "type": "card",
3064
3064
  "children": [
3065
3065
  {
3066
3066
  "type": "typography",
3067
3067
  "variant": "caption",
3068
3068
  "content": "Chart View"
3069
3069
  }
3070
- ]
3070
+ ],
3071
+ "type": "card"
3071
3072
  },
3072
3073
  {
3073
3074
  "children": [
3074
3075
  {
3075
3076
  "variant": "caption",
3076
- "type": "typography",
3077
- "content": "Graph View"
3077
+ "content": "Graph View",
3078
+ "type": "typography"
3078
3079
  }
3079
3080
  ],
3080
3081
  "type": "card"
@@ -3086,58 +3087,59 @@
3086
3087
  {
3087
3088
  "data": [
3088
3089
  {
3089
- "value": 12.0,
3090
- "date": "Jan"
3090
+ "date": "Jan",
3091
+ "value": 12.0
3091
3092
  },
3092
3093
  {
3093
- "date": "Feb",
3094
- "value": 19.0
3094
+ "value": 19.0,
3095
+ "date": "Feb"
3095
3096
  },
3096
3097
  {
3097
- "date": "Mar",
3098
- "value": 15.0
3098
+ "value": 15.0,
3099
+ "date": "Mar"
3099
3100
  },
3100
3101
  {
3101
- "date": "Apr",
3102
- "value": 25.0
3102
+ "value": 25.0,
3103
+ "date": "Apr"
3103
3104
  },
3104
3105
  {
3105
3106
  "date": "May",
3106
3107
  "value": 22.0
3107
3108
  },
3108
3109
  {
3109
- "value": 30.0,
3110
- "date": "Jun"
3110
+ "date": "Jun",
3111
+ "value": 30.0
3111
3112
  }
3112
3113
  ],
3113
3114
  "type": "line-chart"
3114
3115
  },
3115
3116
  {
3116
- "type": "chart-legend",
3117
3117
  "items": [
3118
3118
  {
3119
- "label": "Current",
3120
- "color": "primary"
3119
+ "color": "primary",
3120
+ "label": "Current"
3121
3121
  },
3122
3122
  {
3123
- "color": "muted",
3124
- "label": "Previous"
3123
+ "label": "Previous",
3124
+ "color": "muted"
3125
3125
  }
3126
- ]
3126
+ ],
3127
+ "type": "chart-legend"
3127
3128
  },
3128
3129
  {
3129
3130
  "type": "graph-view",
3130
3131
  "width": 400.0,
3131
3132
  "edges": [
3132
3133
  {
3133
- "source": "a",
3134
- "target": "b"
3134
+ "target": "b",
3135
+ "source": "a"
3135
3136
  },
3136
3137
  {
3137
3138
  "target": "c",
3138
3139
  "source": "b"
3139
3140
  }
3140
3141
  ],
3142
+ "height": 200.0,
3141
3143
  "nodes": [
3142
3144
  {
3143
3145
  "label": "Start",
@@ -3148,18 +3150,16 @@
3148
3150
  "label": "Process"
3149
3151
  },
3150
3152
  {
3151
- "id": "c",
3152
- "label": "End"
3153
+ "label": "End",
3154
+ "id": "c"
3153
3155
  }
3154
- ],
3155
- "height": 200.0
3156
+ ]
3156
3157
  }
3157
3158
  ]
3158
3159
  }
3159
3160
  ]
3160
3161
  }
3161
- ],
3162
- "appName": "API Gateway"
3162
+ ]
3163
3163
  }
3164
3164
  ]
3165
3165
  ]
@@ -3184,14 +3184,32 @@
3184
3184
  "main",
3185
3185
  {
3186
3186
  "type": "dashboard-layout",
3187
+ "appName": "API Gateway",
3188
+ "navItems": [
3189
+ {
3190
+ "href": "/routes",
3191
+ "label": "Routes",
3192
+ "icon": "git-branch"
3193
+ },
3194
+ {
3195
+ "icon": "server",
3196
+ "href": "/backends",
3197
+ "label": "Backends"
3198
+ },
3199
+ {
3200
+ "href": "/analytics",
3201
+ "label": "Analytics",
3202
+ "icon": "bar-chart-2"
3203
+ }
3204
+ ],
3187
3205
  "children": [
3188
3206
  {
3189
3207
  "type": "scaled-diagram",
3190
3208
  "children": [
3191
3209
  {
3210
+ "type": "stack",
3192
3211
  "children": [
3193
3212
  {
3194
- "type": "breadcrumb",
3195
3213
  "items": [
3196
3214
  {
3197
3215
  "label": "Home",
@@ -3200,13 +3218,12 @@
3200
3218
  {
3201
3219
  "label": "Analytics"
3202
3220
  }
3203
- ]
3221
+ ],
3222
+ "type": "breadcrumb"
3204
3223
  },
3205
3224
  {
3206
- "justify": "between",
3207
3225
  "type": "stack",
3208
- "direction": "horizontal",
3209
- "gap": "md",
3226
+ "justify": "between",
3210
3227
  "children": [
3211
3228
  {
3212
3229
  "gap": "md",
@@ -3214,203 +3231,186 @@
3214
3231
  "direction": "horizontal",
3215
3232
  "children": [
3216
3233
  {
3217
- "name": "bar-chart-2",
3218
- "type": "icon"
3234
+ "type": "icon",
3235
+ "name": "bar-chart-2"
3219
3236
  },
3220
3237
  {
3238
+ "content": "Analytics",
3221
3239
  "variant": "h2",
3222
- "type": "typography",
3223
- "content": "Analytics"
3240
+ "type": "typography"
3224
3241
  }
3225
3242
  ]
3226
3243
  },
3227
3244
  {
3228
- "icon": "refresh-cw",
3229
- "action": "REFRESH",
3230
- "variant": "secondary",
3245
+ "label": "Refresh",
3231
3246
  "type": "button",
3232
- "label": "Refresh"
3247
+ "variant": "secondary",
3248
+ "icon": "refresh-cw",
3249
+ "action": "REFRESH"
3233
3250
  }
3234
- ]
3251
+ ],
3252
+ "gap": "md",
3253
+ "direction": "horizontal"
3235
3254
  },
3236
3255
  {
3237
3256
  "type": "divider"
3238
3257
  },
3239
3258
  {
3240
- "type": "box",
3241
- "padding": "md",
3242
3259
  "children": [
3243
3260
  {
3261
+ "type": "simple-grid",
3244
3262
  "cols": 3.0,
3245
3263
  "children": [
3246
3264
  {
3247
- "label": "TotalRequests",
3248
3265
  "type": "stat-display",
3266
+ "label": "TotalRequests",
3249
3267
  "value": "@entity.totalRequests"
3250
3268
  },
3251
3269
  {
3252
- "label": "ErrorRate",
3253
3270
  "value": "@entity.errorRate",
3254
- "type": "stat-display"
3271
+ "type": "stat-display",
3272
+ "label": "ErrorRate"
3255
3273
  },
3256
3274
  {
3275
+ "type": "stat-display",
3257
3276
  "label": "AvgLatency",
3258
- "value": "@entity.avgLatency",
3259
- "type": "stat-display"
3277
+ "value": "@entity.avgLatency"
3260
3278
  },
3261
3279
  {
3262
- "type": "card",
3263
3280
  "children": [
3264
3281
  {
3282
+ "type": "stack",
3265
3283
  "gap": "sm",
3284
+ "direction": "vertical",
3266
3285
  "children": [
3267
3286
  {
3287
+ "type": "typography",
3268
3288
  "variant": "caption",
3269
- "content": "Uptime",
3270
- "type": "typography"
3289
+ "content": "Uptime"
3271
3290
  },
3272
3291
  {
3273
3292
  "type": "typography",
3274
- "content": "@entity.uptime",
3275
- "variant": "h3"
3293
+ "variant": "h3",
3294
+ "content": "@entity.uptime"
3276
3295
  }
3277
- ],
3278
- "type": "stack",
3279
- "direction": "vertical"
3296
+ ]
3280
3297
  }
3281
- ]
3298
+ ],
3299
+ "type": "card"
3282
3300
  }
3283
- ],
3284
- "type": "simple-grid"
3301
+ ]
3285
3302
  }
3286
- ]
3303
+ ],
3304
+ "padding": "md",
3305
+ "type": "box"
3287
3306
  },
3288
3307
  {
3289
3308
  "type": "divider"
3290
3309
  },
3291
3310
  {
3292
- "type": "grid",
3293
- "gap": "md",
3294
3311
  "cols": 2.0,
3312
+ "gap": "md",
3313
+ "type": "grid",
3295
3314
  "children": [
3296
3315
  {
3297
3316
  "type": "card",
3298
3317
  "children": [
3299
3318
  {
3300
- "type": "typography",
3301
3319
  "variant": "caption",
3302
- "content": "Chart View"
3320
+ "content": "Chart View",
3321
+ "type": "typography"
3303
3322
  }
3304
3323
  ]
3305
3324
  },
3306
3325
  {
3326
+ "type": "card",
3307
3327
  "children": [
3308
3328
  {
3309
- "content": "Graph View",
3310
3329
  "variant": "caption",
3330
+ "content": "Graph View",
3311
3331
  "type": "typography"
3312
3332
  }
3313
- ],
3314
- "type": "card"
3333
+ ]
3315
3334
  }
3316
3335
  ]
3317
3336
  },
3318
3337
  {
3319
- "type": "line-chart",
3320
3338
  "data": [
3321
3339
  {
3322
- "date": "Jan",
3323
- "value": 12.0
3340
+ "value": 12.0,
3341
+ "date": "Jan"
3324
3342
  },
3325
3343
  {
3326
- "value": 19.0,
3327
- "date": "Feb"
3344
+ "date": "Feb",
3345
+ "value": 19.0
3328
3346
  },
3329
3347
  {
3330
3348
  "value": 15.0,
3331
3349
  "date": "Mar"
3332
3350
  },
3333
3351
  {
3334
- "date": "Apr",
3335
- "value": 25.0
3352
+ "value": 25.0,
3353
+ "date": "Apr"
3336
3354
  },
3337
3355
  {
3338
- "value": 22.0,
3339
- "date": "May"
3356
+ "date": "May",
3357
+ "value": 22.0
3340
3358
  },
3341
3359
  {
3342
- "value": 30.0,
3343
- "date": "Jun"
3360
+ "date": "Jun",
3361
+ "value": 30.0
3344
3362
  }
3345
- ]
3363
+ ],
3364
+ "type": "line-chart"
3346
3365
  },
3347
3366
  {
3348
- "type": "chart-legend",
3349
3367
  "items": [
3350
3368
  {
3351
- "label": "Current",
3352
- "color": "primary"
3369
+ "color": "primary",
3370
+ "label": "Current"
3353
3371
  },
3354
3372
  {
3355
3373
  "color": "muted",
3356
3374
  "label": "Previous"
3357
3375
  }
3358
- ]
3376
+ ],
3377
+ "type": "chart-legend"
3359
3378
  },
3360
3379
  {
3361
- "nodes": [
3362
- {
3363
- "label": "Start",
3364
- "id": "a"
3365
- },
3380
+ "width": 400.0,
3381
+ "type": "graph-view",
3382
+ "height": 200.0,
3383
+ "edges": [
3366
3384
  {
3367
- "id": "b",
3368
- "label": "Process"
3385
+ "source": "a",
3386
+ "target": "b"
3369
3387
  },
3370
3388
  {
3371
- "label": "End",
3372
- "id": "c"
3389
+ "source": "b",
3390
+ "target": "c"
3373
3391
  }
3374
3392
  ],
3375
- "edges": [
3393
+ "nodes": [
3376
3394
  {
3377
- "target": "b",
3378
- "source": "a"
3395
+ "id": "a",
3396
+ "label": "Start"
3379
3397
  },
3380
3398
  {
3381
- "source": "b",
3382
- "target": "c"
3399
+ "label": "Process",
3400
+ "id": "b"
3401
+ },
3402
+ {
3403
+ "label": "End",
3404
+ "id": "c"
3383
3405
  }
3384
- ],
3385
- "height": 200.0,
3386
- "type": "graph-view",
3387
- "width": 400.0
3406
+ ]
3388
3407
  }
3389
3408
  ],
3390
- "type": "stack",
3391
- "gap": "lg",
3392
- "direction": "vertical"
3409
+ "direction": "vertical",
3410
+ "gap": "lg"
3393
3411
  }
3394
3412
  ]
3395
3413
  }
3396
- ],
3397
- "appName": "API Gateway",
3398
- "navItems": [
3399
- {
3400
- "label": "Routes",
3401
- "href": "/routes",
3402
- "icon": "git-branch"
3403
- },
3404
- {
3405
- "icon": "server",
3406
- "href": "/backends",
3407
- "label": "Backends"
3408
- },
3409
- {
3410
- "href": "/analytics",
3411
- "label": "Analytics",
3412
- "icon": "bar-chart-2"
3413
- }
3414
3414
  ]
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,32 +3435,13 @@
3435
3435
  "render-ui",
3436
3436
  "main",
3437
3437
  {
3438
- "navItems": [
3439
- {
3440
- "icon": "git-branch",
3441
- "label": "Routes",
3442
- "href": "/routes"
3443
- },
3444
- {
3445
- "label": "Backends",
3446
- "icon": "server",
3447
- "href": "/backends"
3448
- },
3449
- {
3450
- "label": "Analytics",
3451
- "href": "/analytics",
3452
- "icon": "bar-chart-2"
3453
- }
3454
- ],
3455
- "type": "dashboard-layout",
3456
- "appName": "API Gateway",
3457
3438
  "children": [
3458
3439
  {
3440
+ "type": "scaled-diagram",
3459
3441
  "children": [
3460
3442
  {
3461
- "type": "stack",
3462
3443
  "gap": "lg",
3463
- "direction": "vertical",
3444
+ "type": "stack",
3464
3445
  "children": [
3465
3446
  {
3466
3447
  "type": "breadcrumb",
@@ -3476,122 +3457,122 @@
3476
3457
  },
3477
3458
  {
3478
3459
  "direction": "horizontal",
3460
+ "type": "stack",
3461
+ "justify": "between",
3479
3462
  "children": [
3480
3463
  {
3464
+ "gap": "md",
3481
3465
  "children": [
3482
3466
  {
3483
3467
  "type": "icon",
3484
3468
  "name": "bar-chart-2"
3485
3469
  },
3486
3470
  {
3487
- "variant": "h2",
3471
+ "content": "Analytics",
3488
3472
  "type": "typography",
3489
- "content": "Analytics"
3473
+ "variant": "h2"
3490
3474
  }
3491
3475
  ],
3492
3476
  "type": "stack",
3493
- "direction": "horizontal",
3494
- "gap": "md"
3477
+ "direction": "horizontal"
3495
3478
  },
3496
3479
  {
3497
- "variant": "secondary",
3480
+ "type": "button",
3498
3481
  "icon": "refresh-cw",
3482
+ "action": "REFRESH",
3499
3483
  "label": "Refresh",
3500
- "type": "button",
3501
- "action": "REFRESH"
3484
+ "variant": "secondary"
3502
3485
  }
3503
3486
  ],
3504
- "justify": "between",
3505
- "type": "stack",
3506
3487
  "gap": "md"
3507
3488
  },
3508
3489
  {
3509
3490
  "type": "divider"
3510
3491
  },
3511
3492
  {
3493
+ "type": "box",
3512
3494
  "padding": "md",
3513
3495
  "children": [
3514
3496
  {
3497
+ "cols": 3.0,
3515
3498
  "children": [
3516
3499
  {
3517
- "value": "@entity.totalRequests",
3518
3500
  "type": "stat-display",
3519
- "label": "TotalRequests"
3501
+ "label": "TotalRequests",
3502
+ "value": "@entity.totalRequests"
3520
3503
  },
3521
3504
  {
3522
- "type": "stat-display",
3505
+ "value": "@entity.errorRate",
3523
3506
  "label": "ErrorRate",
3524
- "value": "@entity.errorRate"
3507
+ "type": "stat-display"
3525
3508
  },
3526
3509
  {
3527
- "value": "@entity.avgLatency",
3510
+ "type": "stat-display",
3528
3511
  "label": "AvgLatency",
3529
- "type": "stat-display"
3512
+ "value": "@entity.avgLatency"
3530
3513
  },
3531
3514
  {
3532
3515
  "type": "card",
3533
3516
  "children": [
3534
3517
  {
3535
3518
  "direction": "vertical",
3536
- "gap": "sm",
3537
3519
  "type": "stack",
3520
+ "gap": "sm",
3538
3521
  "children": [
3539
3522
  {
3540
- "content": "Uptime",
3523
+ "type": "typography",
3541
3524
  "variant": "caption",
3542
- "type": "typography"
3525
+ "content": "Uptime"
3543
3526
  },
3544
3527
  {
3545
- "content": "@entity.uptime",
3528
+ "variant": "h3",
3546
3529
  "type": "typography",
3547
- "variant": "h3"
3530
+ "content": "@entity.uptime"
3548
3531
  }
3549
3532
  ]
3550
3533
  }
3551
3534
  ]
3552
3535
  }
3553
3536
  ],
3554
- "cols": 3.0,
3555
3537
  "type": "simple-grid"
3556
3538
  }
3557
- ],
3558
- "type": "box"
3539
+ ]
3559
3540
  },
3560
3541
  {
3561
3542
  "type": "divider"
3562
3543
  },
3563
3544
  {
3564
3545
  "type": "grid",
3546
+ "cols": 2.0,
3565
3547
  "children": [
3566
3548
  {
3567
3549
  "children": [
3568
3550
  {
3569
- "content": "Chart View",
3570
3551
  "type": "typography",
3571
- "variant": "caption"
3552
+ "variant": "caption",
3553
+ "content": "Chart View"
3572
3554
  }
3573
3555
  ],
3574
3556
  "type": "card"
3575
3557
  },
3576
3558
  {
3577
- "type": "card",
3578
3559
  "children": [
3579
3560
  {
3561
+ "type": "typography",
3580
3562
  "variant": "caption",
3581
- "content": "Graph View",
3582
- "type": "typography"
3563
+ "content": "Graph View"
3583
3564
  }
3584
- ]
3565
+ ],
3566
+ "type": "card"
3585
3567
  }
3586
3568
  ],
3587
- "gap": "md",
3588
- "cols": 2.0
3569
+ "gap": "md"
3589
3570
  },
3590
3571
  {
3591
3572
  "data": [
3592
3573
  {
3593
- "value": 12.0,
3594
- "date": "Jan"
3574
+ "date": "Jan",
3575
+ "value": 12.0
3595
3576
  },
3596
3577
  {
3597
3578
  "date": "Feb",
@@ -3606,8 +3587,8 @@
3606
3587
  "date": "Apr"
3607
3588
  },
3608
3589
  {
3609
- "value": 22.0,
3610
- "date": "May"
3590
+ "date": "May",
3591
+ "value": 22.0
3611
3592
  },
3612
3593
  {
3613
3594
  "date": "Jun",
@@ -3617,6 +3598,7 @@
3617
3598
  "type": "line-chart"
3618
3599
  },
3619
3600
  {
3601
+ "type": "chart-legend",
3620
3602
  "items": [
3621
3603
  {
3622
3604
  "label": "Current",
@@ -3626,11 +3608,24 @@
3626
3608
  "color": "muted",
3627
3609
  "label": "Previous"
3628
3610
  }
3629
- ],
3630
- "type": "chart-legend"
3611
+ ]
3631
3612
  },
3632
3613
  {
3633
- "width": 400.0,
3614
+ "nodes": [
3615
+ {
3616
+ "id": "a",
3617
+ "label": "Start"
3618
+ },
3619
+ {
3620
+ "id": "b",
3621
+ "label": "Process"
3622
+ },
3623
+ {
3624
+ "id": "c",
3625
+ "label": "End"
3626
+ }
3627
+ ],
3628
+ "type": "graph-view",
3634
3629
  "edges": [
3635
3630
  {
3636
3631
  "target": "b",
@@ -3641,27 +3636,32 @@
3641
3636
  "target": "c"
3642
3637
  }
3643
3638
  ],
3644
- "type": "graph-view",
3645
3639
  "height": 200.0,
3646
- "nodes": [
3647
- {
3648
- "label": "Start",
3649
- "id": "a"
3650
- },
3651
- {
3652
- "id": "b",
3653
- "label": "Process"
3654
- },
3655
- {
3656
- "label": "End",
3657
- "id": "c"
3658
- }
3659
- ]
3640
+ "width": 400.0
3660
3641
  }
3661
- ]
3642
+ ],
3643
+ "direction": "vertical"
3662
3644
  }
3663
- ],
3664
- "type": "scaled-diagram"
3645
+ ]
3646
+ }
3647
+ ],
3648
+ "appName": "API Gateway",
3649
+ "type": "dashboard-layout",
3650
+ "navItems": [
3651
+ {
3652
+ "href": "/routes",
3653
+ "icon": "git-branch",
3654
+ "label": "Routes"
3655
+ },
3656
+ {
3657
+ "icon": "server",
3658
+ "href": "/backends",
3659
+ "label": "Backends"
3660
+ },
3661
+ {
3662
+ "href": "/analytics",
3663
+ "label": "Analytics",
3664
+ "icon": "bar-chart-2"
3665
3665
  }
3666
3666
  ]
3667
3667
  }
@@ -3689,37 +3689,33 @@
3689
3689
  {
3690
3690
  "navItems": [
3691
3691
  {
3692
- "href": "/routes",
3693
3692
  "label": "Routes",
3693
+ "href": "/routes",
3694
3694
  "icon": "git-branch"
3695
3695
  },
3696
3696
  {
3697
3697
  "icon": "server",
3698
- "label": "Backends",
3699
- "href": "/backends"
3698
+ "href": "/backends",
3699
+ "label": "Backends"
3700
3700
  },
3701
3701
  {
3702
- "label": "Analytics",
3702
+ "icon": "bar-chart-2",
3703
3703
  "href": "/analytics",
3704
- "icon": "bar-chart-2"
3704
+ "label": "Analytics"
3705
3705
  }
3706
3706
  ],
3707
- "type": "dashboard-layout",
3708
- "appName": "API Gateway",
3709
3707
  "children": [
3710
3708
  {
3711
3709
  "children": [
3712
3710
  {
3713
- "gap": "lg",
3714
3711
  "type": "stack",
3715
- "direction": "vertical",
3716
3712
  "children": [
3717
3713
  {
3718
3714
  "type": "breadcrumb",
3719
3715
  "items": [
3720
3716
  {
3721
- "label": "Home",
3722
- "href": "/"
3717
+ "href": "/",
3718
+ "label": "Home"
3723
3719
  },
3724
3720
  {
3725
3721
  "label": "Analytics"
@@ -3727,40 +3723,41 @@
3727
3723
  ]
3728
3724
  },
3729
3725
  {
3730
- "type": "stack",
3731
- "direction": "horizontal",
3732
- "gap": "md",
3733
- "justify": "between",
3734
3726
  "children": [
3735
3727
  {
3736
- "type": "stack",
3737
3728
  "gap": "md",
3729
+ "type": "stack",
3738
3730
  "children": [
3739
3731
  {
3740
3732
  "name": "bar-chart-2",
3741
3733
  "type": "icon"
3742
3734
  },
3743
3735
  {
3744
- "variant": "h2",
3745
3736
  "type": "typography",
3737
+ "variant": "h2",
3746
3738
  "content": "Analytics"
3747
3739
  }
3748
3740
  ],
3749
3741
  "direction": "horizontal"
3750
3742
  },
3751
3743
  {
3752
- "variant": "secondary",
3753
- "type": "button",
3754
3744
  "label": "Refresh",
3745
+ "type": "button",
3755
3746
  "icon": "refresh-cw",
3756
- "action": "REFRESH"
3747
+ "action": "REFRESH",
3748
+ "variant": "secondary"
3757
3749
  }
3758
- ]
3750
+ ],
3751
+ "type": "stack",
3752
+ "gap": "md",
3753
+ "direction": "horizontal",
3754
+ "justify": "between"
3759
3755
  },
3760
3756
  {
3761
3757
  "type": "divider"
3762
3758
  },
3763
3759
  {
3760
+ "type": "box",
3764
3761
  "padding": "md",
3765
3762
  "children": [
3766
3763
  {
@@ -3768,9 +3765,9 @@
3768
3765
  "cols": 3.0,
3769
3766
  "children": [
3770
3767
  {
3771
- "type": "stat-display",
3768
+ "value": "@entity.totalRequests",
3772
3769
  "label": "TotalRequests",
3773
- "value": "@entity.totalRequests"
3770
+ "type": "stat-display"
3774
3771
  },
3775
3772
  {
3776
3773
  "value": "@entity.errorRate",
@@ -3779,17 +3776,19 @@
3779
3776
  },
3780
3777
  {
3781
3778
  "type": "stat-display",
3782
- "value": "@entity.avgLatency",
3783
- "label": "AvgLatency"
3779
+ "label": "AvgLatency",
3780
+ "value": "@entity.avgLatency"
3784
3781
  },
3785
3782
  {
3786
3783
  "children": [
3787
3784
  {
3785
+ "type": "stack",
3786
+ "direction": "vertical",
3788
3787
  "children": [
3789
3788
  {
3790
3789
  "type": "typography",
3791
- "content": "Uptime",
3792
- "variant": "caption"
3790
+ "variant": "caption",
3791
+ "content": "Uptime"
3793
3792
  },
3794
3793
  {
3795
3794
  "type": "typography",
@@ -3797,8 +3796,6 @@
3797
3796
  "content": "@entity.uptime"
3798
3797
  }
3799
3798
  ],
3800
- "type": "stack",
3801
- "direction": "vertical",
3802
3799
  "gap": "sm"
3803
3800
  }
3804
3801
  ],
@@ -3806,96 +3803,98 @@
3806
3803
  }
3807
3804
  ]
3808
3805
  }
3809
- ],
3810
- "type": "box"
3806
+ ]
3811
3807
  },
3812
3808
  {
3813
3809
  "type": "divider"
3814
3810
  },
3815
3811
  {
3816
- "cols": 2.0,
3812
+ "type": "grid",
3813
+ "gap": "md",
3817
3814
  "children": [
3818
3815
  {
3819
3816
  "type": "card",
3820
3817
  "children": [
3821
3818
  {
3819
+ "type": "typography",
3822
3820
  "variant": "caption",
3823
- "content": "Chart View",
3824
- "type": "typography"
3821
+ "content": "Chart View"
3825
3822
  }
3826
3823
  ]
3827
3824
  },
3828
3825
  {
3829
3826
  "children": [
3830
3827
  {
3831
- "variant": "caption",
3828
+ "type": "typography",
3832
3829
  "content": "Graph View",
3833
- "type": "typography"
3830
+ "variant": "caption"
3834
3831
  }
3835
3832
  ],
3836
3833
  "type": "card"
3837
3834
  }
3838
3835
  ],
3839
- "gap": "md",
3840
- "type": "grid"
3836
+ "cols": 2.0
3841
3837
  },
3842
3838
  {
3839
+ "type": "line-chart",
3843
3840
  "data": [
3844
3841
  {
3845
- "date": "Jan",
3846
- "value": 12.0
3842
+ "value": 12.0,
3843
+ "date": "Jan"
3847
3844
  },
3848
3845
  {
3849
- "date": "Feb",
3850
- "value": 19.0
3846
+ "value": 19.0,
3847
+ "date": "Feb"
3851
3848
  },
3852
3849
  {
3853
- "date": "Mar",
3854
- "value": 15.0
3850
+ "value": 15.0,
3851
+ "date": "Mar"
3855
3852
  },
3856
3853
  {
3857
- "value": 25.0,
3858
- "date": "Apr"
3854
+ "date": "Apr",
3855
+ "value": 25.0
3859
3856
  },
3860
3857
  {
3861
- "date": "May",
3862
- "value": 22.0
3858
+ "value": 22.0,
3859
+ "date": "May"
3863
3860
  },
3864
3861
  {
3865
- "value": 30.0,
3866
- "date": "Jun"
3862
+ "date": "Jun",
3863
+ "value": 30.0
3867
3864
  }
3868
- ],
3869
- "type": "line-chart"
3865
+ ]
3870
3866
  },
3871
3867
  {
3868
+ "type": "chart-legend",
3872
3869
  "items": [
3873
3870
  {
3874
- "label": "Current",
3875
- "color": "primary"
3871
+ "color": "primary",
3872
+ "label": "Current"
3876
3873
  },
3877
3874
  {
3878
- "color": "muted",
3879
- "label": "Previous"
3875
+ "label": "Previous",
3876
+ "color": "muted"
3880
3877
  }
3881
- ],
3882
- "type": "chart-legend"
3878
+ ]
3883
3879
  },
3884
3880
  {
3881
+ "type": "graph-view",
3882
+ "width": 400.0,
3883
+ "height": 200.0,
3885
3884
  "edges": [
3886
3885
  {
3887
3886
  "target": "b",
3888
3887
  "source": "a"
3889
3888
  },
3890
3889
  {
3891
- "target": "c",
3892
- "source": "b"
3890
+ "source": "b",
3891
+ "target": "c"
3893
3892
  }
3894
3893
  ],
3895
3894
  "nodes": [
3896
3895
  {
3897
- "id": "a",
3898
- "label": "Start"
3896
+ "label": "Start",
3897
+ "id": "a"
3899
3898
  },
3900
3899
  {
3901
3900
  "label": "Process",
@@ -3905,17 +3904,18 @@
3905
3904
  "id": "c",
3906
3905
  "label": "End"
3907
3906
  }
3908
- ],
3909
- "width": 400.0,
3910
- "height": 200.0,
3911
- "type": "graph-view"
3907
+ ]
3912
3908
  }
3913
- ]
3909
+ ],
3910
+ "direction": "vertical",
3911
+ "gap": "lg"
3914
3912
  }
3915
3913
  ],
3916
3914
  "type": "scaled-diagram"
3917
3915
  }
3918
- ]
3916
+ ],
3917
+ "appName": "API Gateway",
3918
+ "type": "dashboard-layout"
3919
3919
  }
3920
3920
  ]
3921
3921
  ]
@@ -3930,8 +3930,8 @@
3930
3930
  "Analytics",
3931
3931
  {
3932
3932
  "emit": {
3933
- "success": "AnalyticsLoaded",
3934
- "failure": "AnalyticsLoadFailed"
3933
+ "failure": "AnalyticsLoadFailed",
3934
+ "success": "AnalyticsLoaded"
3935
3935
  }
3936
3936
  }
3937
3937
  ],
@@ -3939,18 +3939,17 @@
3939
3939
  "render-ui",
3940
3940
  "main",
3941
3941
  {
3942
- "appName": "API Gateway",
3943
3942
  "children": [
3944
3943
  {
3945
3944
  "children": [
3946
3945
  {
3947
- "direction": "vertical",
3946
+ "type": "stack",
3948
3947
  "children": [
3949
3948
  {
3950
3949
  "items": [
3951
3950
  {
3952
- "href": "/",
3953
- "label": "Home"
3951
+ "label": "Home",
3952
+ "href": "/"
3954
3953
  },
3955
3954
  {
3956
3955
  "label": "Analytics"
@@ -3959,35 +3958,35 @@
3959
3958
  "type": "breadcrumb"
3960
3959
  },
3961
3960
  {
3961
+ "direction": "horizontal",
3962
+ "gap": "md",
3963
+ "justify": "between",
3964
+ "type": "stack",
3962
3965
  "children": [
3963
3966
  {
3967
+ "gap": "md",
3964
3968
  "type": "stack",
3965
3969
  "direction": "horizontal",
3966
- "gap": "md",
3967
3970
  "children": [
3968
3971
  {
3969
3972
  "name": "bar-chart-2",
3970
3973
  "type": "icon"
3971
3974
  },
3972
3975
  {
3973
- "type": "typography",
3976
+ "variant": "h2",
3974
3977
  "content": "Analytics",
3975
- "variant": "h2"
3978
+ "type": "typography"
3976
3979
  }
3977
3980
  ]
3978
3981
  },
3979
3982
  {
3980
3983
  "variant": "secondary",
3981
- "type": "button",
3984
+ "icon": "refresh-cw",
3982
3985
  "label": "Refresh",
3983
- "action": "REFRESH",
3984
- "icon": "refresh-cw"
3986
+ "type": "button",
3987
+ "action": "REFRESH"
3985
3988
  }
3986
- ],
3987
- "direction": "horizontal",
3988
- "type": "stack",
3989
- "gap": "md",
3990
- "justify": "between"
3989
+ ]
3991
3990
  },
3992
3991
  {
3993
3992
  "type": "divider"
@@ -3997,6 +3996,7 @@
3997
3996
  "padding": "md",
3998
3997
  "children": [
3999
3998
  {
3999
+ "type": "simple-grid",
4000
4000
  "cols": 3.0,
4001
4001
  "children": [
4002
4002
  {
@@ -4005,8 +4005,8 @@
4005
4005
  "label": "TotalRequests"
4006
4006
  },
4007
4007
  {
4008
- "value": "@entity.errorRate",
4009
4008
  "type": "stat-display",
4009
+ "value": "@entity.errorRate",
4010
4010
  "label": "ErrorRate"
4011
4011
  },
4012
4012
  {
@@ -4017,27 +4017,26 @@
4017
4017
  {
4018
4018
  "children": [
4019
4019
  {
4020
+ "gap": "sm",
4021
+ "type": "stack",
4022
+ "direction": "vertical",
4020
4023
  "children": [
4021
4024
  {
4022
- "variant": "caption",
4023
4025
  "content": "Uptime",
4024
- "type": "typography"
4026
+ "type": "typography",
4027
+ "variant": "caption"
4025
4028
  },
4026
4029
  {
4027
- "type": "typography",
4028
4030
  "content": "@entity.uptime",
4031
+ "type": "typography",
4029
4032
  "variant": "h3"
4030
4033
  }
4031
- ],
4032
- "gap": "sm",
4033
- "direction": "vertical",
4034
- "type": "stack"
4034
+ ]
4035
4035
  }
4036
4036
  ],
4037
4037
  "type": "card"
4038
4038
  }
4039
- ],
4040
- "type": "simple-grid"
4039
+ ]
4041
4040
  }
4042
4041
  ]
4043
4042
  },
@@ -4048,28 +4047,28 @@
4048
4047
  "type": "grid",
4049
4048
  "children": [
4050
4049
  {
4051
- "type": "card",
4052
4050
  "children": [
4053
4051
  {
4052
+ "type": "typography",
4054
4053
  "content": "Chart View",
4055
- "variant": "caption",
4056
- "type": "typography"
4054
+ "variant": "caption"
4057
4055
  }
4058
- ]
4056
+ ],
4057
+ "type": "card"
4059
4058
  },
4060
4059
  {
4060
+ "type": "card",
4061
4061
  "children": [
4062
4062
  {
4063
4063
  "content": "Graph View",
4064
4064
  "type": "typography",
4065
4065
  "variant": "caption"
4066
4066
  }
4067
- ],
4068
- "type": "card"
4067
+ ]
4069
4068
  }
4070
4069
  ],
4071
- "gap": "md",
4072
- "cols": 2.0
4070
+ "cols": 2.0,
4071
+ "gap": "md"
4073
4072
  },
4074
4073
  {
4075
4074
  "type": "line-chart",
@@ -4083,8 +4082,8 @@
4083
4082
  "value": 19.0
4084
4083
  },
4085
4084
  {
4086
- "value": 15.0,
4087
- "date": "Mar"
4085
+ "date": "Mar",
4086
+ "value": 15.0
4088
4087
  },
4089
4088
  {
4090
4089
  "value": 25.0,
@@ -4095,8 +4094,8 @@
4095
4094
  "date": "May"
4096
4095
  },
4097
4096
  {
4098
- "date": "Jun",
4099
- "value": 30.0
4097
+ "value": 30.0,
4098
+ "date": "Jun"
4100
4099
  }
4101
4100
  ]
4102
4101
  },
@@ -4108,57 +4107,58 @@
4108
4107
  "color": "primary"
4109
4108
  },
4110
4109
  {
4111
- "color": "muted",
4112
- "label": "Previous"
4110
+ "label": "Previous",
4111
+ "color": "muted"
4113
4112
  }
4114
4113
  ]
4115
4114
  },
4116
4115
  {
4116
+ "height": 200.0,
4117
4117
  "width": 400.0,
4118
- "edges": [
4119
- {
4120
- "source": "a",
4121
- "target": "b"
4122
- },
4123
- {
4124
- "target": "c",
4125
- "source": "b"
4126
- }
4127
- ],
4128
4118
  "type": "graph-view",
4129
4119
  "nodes": [
4130
4120
  {
4131
- "id": "a",
4132
- "label": "Start"
4121
+ "label": "Start",
4122
+ "id": "a"
4133
4123
  },
4134
4124
  {
4135
- "label": "Process",
4136
- "id": "b"
4125
+ "id": "b",
4126
+ "label": "Process"
4137
4127
  },
4138
4128
  {
4139
- "label": "End",
4140
- "id": "c"
4129
+ "id": "c",
4130
+ "label": "End"
4141
4131
  }
4142
4132
  ],
4143
- "height": 200.0
4133
+ "edges": [
4134
+ {
4135
+ "source": "a",
4136
+ "target": "b"
4137
+ },
4138
+ {
4139
+ "target": "c",
4140
+ "source": "b"
4141
+ }
4142
+ ]
4144
4143
  }
4145
4144
  ],
4146
- "gap": "lg",
4147
- "type": "stack"
4145
+ "direction": "vertical",
4146
+ "gap": "lg"
4148
4147
  }
4149
4148
  ],
4150
4149
  "type": "scaled-diagram"
4151
4150
  }
4152
4151
  ],
4152
+ "appName": "API Gateway",
4153
4153
  "navItems": [
4154
4154
  {
4155
- "label": "Routes",
4156
4155
  "icon": "git-branch",
4157
- "href": "/routes"
4156
+ "href": "/routes",
4157
+ "label": "Routes"
4158
4158
  },
4159
4159
  {
4160
- "icon": "server",
4161
4160
  "href": "/backends",
4161
+ "icon": "server",
4162
4162
  "label": "Backends"
4163
4163
  },
4164
4164
  {
@@ -4190,4 +4190,4 @@
4190
4190
  ]
4191
4191
  }
4192
4192
  ]
4193
- }
4193
+ }