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