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