@almadar/std 3.2.2 → 3.2.3

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 (199) hide show
  1. package/behaviors/exports/atoms/std-browse.orb +38 -45
  2. package/behaviors/exports/atoms/std-calendar.orb +770 -0
  3. package/behaviors/exports/atoms/std-display.orb +1175 -510
  4. package/behaviors/exports/atoms/std-drawer.orb +235 -133
  5. package/behaviors/exports/atoms/std-flip-card.orb +596 -0
  6. package/behaviors/exports/atoms/std-gallery.orb +382 -0
  7. package/behaviors/exports/atoms/std-loading.orb +131 -103
  8. package/behaviors/exports/atoms/std-modal.orb +5 -24
  9. package/behaviors/exports/atoms/std-notification.orb +71 -0
  10. package/behaviors/exports/atoms/std-pagination.orb +32 -40
  11. package/behaviors/exports/atoms/std-rating.orb +328 -0
  12. package/behaviors/exports/atoms/std-score.orb +41 -0
  13. package/behaviors/exports/atoms/std-search.orb +44 -30
  14. package/behaviors/exports/atoms/std-selection.orb +26 -34
  15. package/behaviors/exports/atoms/std-sort.orb +82 -60
  16. package/behaviors/exports/atoms/std-text-effects.orb +658 -0
  17. package/behaviors/exports/atoms/std-theme.orb +573 -0
  18. package/behaviors/exports/atoms/std-upload.orb +535 -0
  19. package/behaviors/exports/atoms/std-wizard.orb +664 -224
  20. package/behaviors/exports/molecules/std-builder-game.orb +43 -3
  21. package/behaviors/exports/molecules/std-cart.orb +319 -101
  22. package/behaviors/exports/molecules/std-classifier-game.orb +43 -3
  23. package/behaviors/exports/molecules/std-debugger-game.orb +43 -3
  24. package/behaviors/exports/molecules/std-detail.orb +46 -49
  25. package/behaviors/exports/molecules/std-event-handler-game.orb +43 -3
  26. package/behaviors/exports/molecules/std-form-advanced.orb +654 -0
  27. package/behaviors/exports/molecules/std-geospatial.orb +48 -48
  28. package/behaviors/exports/molecules/std-inventory.orb +70 -50
  29. package/behaviors/exports/molecules/std-list.orb +174 -197
  30. package/behaviors/exports/molecules/std-messaging.orb +35 -50
  31. package/behaviors/exports/molecules/std-negotiator-game.orb +43 -3
  32. package/behaviors/exports/molecules/std-platformer-game.orb +18 -2
  33. package/behaviors/exports/molecules/std-puzzle-game.orb +32 -6
  34. package/behaviors/exports/molecules/std-quiz.orb +1045 -0
  35. package/behaviors/exports/molecules/std-sequencer-game.orb +43 -3
  36. package/behaviors/exports/molecules/std-simulator-game.orb +43 -3
  37. package/behaviors/exports/molecules/std-turn-based-battle.orb +26 -0
  38. package/behaviors/exports/organisms/std-api-gateway.orb +2326 -1320
  39. package/behaviors/exports/organisms/std-arcade-game.orb +377 -265
  40. package/behaviors/exports/organisms/std-booking-system.orb +3144 -1855
  41. package/behaviors/exports/organisms/std-cicd-pipeline.orb +2107 -1122
  42. package/behaviors/exports/organisms/std-cms.orb +929 -822
  43. package/behaviors/exports/organisms/std-coding-academy.orb +1347 -458
  44. package/behaviors/exports/organisms/std-crm.orb +2302 -1282
  45. package/behaviors/exports/organisms/std-devops-dashboard.orb +3902 -2005
  46. package/behaviors/exports/organisms/std-ecommerce.orb +2432 -1630
  47. package/behaviors/exports/organisms/std-finance-tracker.orb +1674 -846
  48. package/behaviors/exports/organisms/std-healthcare.orb +3545 -1992
  49. package/behaviors/exports/organisms/std-helpdesk.orb +1853 -940
  50. package/behaviors/exports/organisms/std-hr-portal.orb +3249 -1939
  51. package/behaviors/exports/organisms/std-iot-dashboard.orb +2422 -1418
  52. package/behaviors/exports/organisms/std-lms.orb +2495 -1435
  53. package/behaviors/exports/organisms/std-logic-training.orb +220 -66
  54. package/behaviors/exports/organisms/std-platformer-app.orb +345 -214
  55. package/behaviors/exports/organisms/std-project-manager.orb +2217 -1190
  56. package/behaviors/exports/organisms/std-puzzle-app.orb +228 -103
  57. package/behaviors/exports/organisms/std-realtime-chat.orb +1887 -1051
  58. package/behaviors/exports/organisms/std-rpg-game.orb +1170 -948
  59. package/behaviors/exports/organisms/std-social-feed.orb +184 -172
  60. package/behaviors/exports/organisms/std-stem-lab.orb +1308 -482
  61. package/behaviors/exports/organisms/std-strategy-game.orb +1520 -696
  62. package/behaviors/exports/organisms/std-trading-dashboard.orb +1884 -904
  63. package/behaviors/exports/validation-report.json +0 -747
  64. package/dist/behaviors/exports/atoms/std-browse.orb +38 -45
  65. package/dist/behaviors/exports/atoms/std-calendar.orb +770 -0
  66. package/dist/behaviors/exports/atoms/std-display.orb +1175 -510
  67. package/dist/behaviors/exports/atoms/std-drawer.orb +235 -133
  68. package/dist/behaviors/exports/atoms/std-flip-card.orb +596 -0
  69. package/dist/behaviors/exports/atoms/std-gallery.orb +382 -0
  70. package/dist/behaviors/exports/atoms/std-loading.orb +131 -103
  71. package/dist/behaviors/exports/atoms/std-modal.orb +5 -24
  72. package/dist/behaviors/exports/atoms/std-notification.orb +71 -0
  73. package/dist/behaviors/exports/atoms/std-pagination.orb +32 -40
  74. package/dist/behaviors/exports/atoms/std-rating.orb +328 -0
  75. package/dist/behaviors/exports/atoms/std-score.orb +41 -0
  76. package/dist/behaviors/exports/atoms/std-search.orb +44 -30
  77. package/dist/behaviors/exports/atoms/std-selection.orb +26 -34
  78. package/dist/behaviors/exports/atoms/std-sort.orb +82 -60
  79. package/dist/behaviors/exports/atoms/std-text-effects.orb +658 -0
  80. package/dist/behaviors/exports/atoms/std-theme.orb +573 -0
  81. package/dist/behaviors/exports/atoms/std-upload.orb +535 -0
  82. package/dist/behaviors/exports/atoms/std-wizard.orb +664 -224
  83. package/dist/behaviors/exports/molecules/std-builder-game.orb +43 -3
  84. package/dist/behaviors/exports/molecules/std-cart.orb +319 -101
  85. package/dist/behaviors/exports/molecules/std-classifier-game.orb +43 -3
  86. package/dist/behaviors/exports/molecules/std-debugger-game.orb +43 -3
  87. package/dist/behaviors/exports/molecules/std-detail.orb +46 -49
  88. package/dist/behaviors/exports/molecules/std-event-handler-game.orb +43 -3
  89. package/dist/behaviors/exports/molecules/std-form-advanced.orb +654 -0
  90. package/dist/behaviors/exports/molecules/std-geospatial.orb +48 -48
  91. package/dist/behaviors/exports/molecules/std-inventory.orb +70 -50
  92. package/dist/behaviors/exports/molecules/std-list.orb +174 -197
  93. package/dist/behaviors/exports/molecules/std-messaging.orb +35 -50
  94. package/dist/behaviors/exports/molecules/std-negotiator-game.orb +43 -3
  95. package/dist/behaviors/exports/molecules/std-platformer-game.orb +18 -2
  96. package/dist/behaviors/exports/molecules/std-puzzle-game.orb +32 -6
  97. package/dist/behaviors/exports/molecules/std-quiz.orb +1045 -0
  98. package/dist/behaviors/exports/molecules/std-sequencer-game.orb +43 -3
  99. package/dist/behaviors/exports/molecules/std-simulator-game.orb +43 -3
  100. package/dist/behaviors/exports/molecules/std-turn-based-battle.orb +26 -0
  101. package/dist/behaviors/exports/organisms/std-api-gateway.orb +2326 -1320
  102. package/dist/behaviors/exports/organisms/std-arcade-game.orb +377 -265
  103. package/dist/behaviors/exports/organisms/std-booking-system.orb +3144 -1855
  104. package/dist/behaviors/exports/organisms/std-cicd-pipeline.orb +2107 -1122
  105. package/dist/behaviors/exports/organisms/std-cms.orb +929 -822
  106. package/dist/behaviors/exports/organisms/std-coding-academy.orb +1347 -458
  107. package/dist/behaviors/exports/organisms/std-crm.orb +2302 -1282
  108. package/dist/behaviors/exports/organisms/std-devops-dashboard.orb +3902 -2005
  109. package/dist/behaviors/exports/organisms/std-ecommerce.orb +2432 -1630
  110. package/dist/behaviors/exports/organisms/std-finance-tracker.orb +1674 -846
  111. package/dist/behaviors/exports/organisms/std-healthcare.orb +3545 -1992
  112. package/dist/behaviors/exports/organisms/std-helpdesk.orb +1853 -940
  113. package/dist/behaviors/exports/organisms/std-hr-portal.orb +3249 -1939
  114. package/dist/behaviors/exports/organisms/std-iot-dashboard.orb +2422 -1418
  115. package/dist/behaviors/exports/organisms/std-lms.orb +2495 -1435
  116. package/dist/behaviors/exports/organisms/std-logic-training.orb +220 -66
  117. package/dist/behaviors/exports/organisms/std-platformer-app.orb +345 -214
  118. package/dist/behaviors/exports/organisms/std-project-manager.orb +2217 -1190
  119. package/dist/behaviors/exports/organisms/std-puzzle-app.orb +228 -103
  120. package/dist/behaviors/exports/organisms/std-realtime-chat.orb +1887 -1051
  121. package/dist/behaviors/exports/organisms/std-rpg-game.orb +1170 -948
  122. package/dist/behaviors/exports/organisms/std-social-feed.orb +184 -172
  123. package/dist/behaviors/exports/organisms/std-stem-lab.orb +1308 -482
  124. package/dist/behaviors/exports/organisms/std-strategy-game.orb +1520 -696
  125. package/dist/behaviors/exports/organisms/std-trading-dashboard.orb +1884 -904
  126. package/dist/behaviors/exports/validation-report.json +0 -747
  127. package/dist/behaviors/functions/index.d.ts +270 -1
  128. package/dist/behaviors/functions/index.js +3163 -807
  129. package/dist/behaviors/functions/index.js.map +1 -1
  130. package/dist/behaviors/index.d.ts +1 -1
  131. package/dist/behaviors/index.js +3164 -808
  132. package/dist/behaviors/index.js.map +1 -1
  133. package/dist/exports/atoms/std-browse.orb +38 -45
  134. package/dist/exports/atoms/std-calendar.orb +770 -0
  135. package/dist/exports/atoms/std-display.orb +1175 -510
  136. package/dist/exports/atoms/std-drawer.orb +235 -133
  137. package/dist/exports/atoms/std-flip-card.orb +596 -0
  138. package/dist/exports/atoms/std-gallery.orb +382 -0
  139. package/dist/exports/atoms/std-loading.orb +131 -103
  140. package/dist/exports/atoms/std-modal.orb +5 -24
  141. package/dist/exports/atoms/std-notification.orb +71 -0
  142. package/dist/exports/atoms/std-pagination.orb +32 -40
  143. package/dist/exports/atoms/std-rating.orb +328 -0
  144. package/dist/exports/atoms/std-score.orb +41 -0
  145. package/dist/exports/atoms/std-search.orb +44 -30
  146. package/dist/exports/atoms/std-selection.orb +26 -34
  147. package/dist/exports/atoms/std-sort.orb +82 -60
  148. package/dist/exports/atoms/std-text-effects.orb +658 -0
  149. package/dist/exports/atoms/std-theme.orb +573 -0
  150. package/dist/exports/atoms/std-upload.orb +535 -0
  151. package/dist/exports/atoms/std-wizard.orb +664 -224
  152. package/dist/exports/molecules/std-builder-game.orb +43 -3
  153. package/dist/exports/molecules/std-cart.orb +319 -101
  154. package/dist/exports/molecules/std-classifier-game.orb +43 -3
  155. package/dist/exports/molecules/std-debugger-game.orb +43 -3
  156. package/dist/exports/molecules/std-detail.orb +46 -49
  157. package/dist/exports/molecules/std-event-handler-game.orb +43 -3
  158. package/dist/exports/molecules/std-form-advanced.orb +654 -0
  159. package/dist/exports/molecules/std-geospatial.orb +48 -48
  160. package/dist/exports/molecules/std-inventory.orb +70 -50
  161. package/dist/exports/molecules/std-list.orb +174 -197
  162. package/dist/exports/molecules/std-messaging.orb +35 -50
  163. package/dist/exports/molecules/std-negotiator-game.orb +43 -3
  164. package/dist/exports/molecules/std-platformer-game.orb +18 -2
  165. package/dist/exports/molecules/std-puzzle-game.orb +32 -6
  166. package/dist/exports/molecules/std-quiz.orb +1045 -0
  167. package/dist/exports/molecules/std-sequencer-game.orb +43 -3
  168. package/dist/exports/molecules/std-simulator-game.orb +43 -3
  169. package/dist/exports/molecules/std-turn-based-battle.orb +26 -0
  170. package/dist/exports/organisms/std-api-gateway.orb +2326 -1320
  171. package/dist/exports/organisms/std-arcade-game.orb +377 -265
  172. package/dist/exports/organisms/std-booking-system.orb +3144 -1855
  173. package/dist/exports/organisms/std-cicd-pipeline.orb +2107 -1122
  174. package/dist/exports/organisms/std-cms.orb +929 -822
  175. package/dist/exports/organisms/std-coding-academy.orb +1347 -458
  176. package/dist/exports/organisms/std-crm.orb +2302 -1282
  177. package/dist/exports/organisms/std-devops-dashboard.orb +3902 -2005
  178. package/dist/exports/organisms/std-ecommerce.orb +2432 -1630
  179. package/dist/exports/organisms/std-finance-tracker.orb +1674 -846
  180. package/dist/exports/organisms/std-healthcare.orb +3545 -1992
  181. package/dist/exports/organisms/std-helpdesk.orb +1853 -940
  182. package/dist/exports/organisms/std-hr-portal.orb +3249 -1939
  183. package/dist/exports/organisms/std-iot-dashboard.orb +2422 -1418
  184. package/dist/exports/organisms/std-lms.orb +2495 -1435
  185. package/dist/exports/organisms/std-logic-training.orb +220 -66
  186. package/dist/exports/organisms/std-platformer-app.orb +345 -214
  187. package/dist/exports/organisms/std-project-manager.orb +2217 -1190
  188. package/dist/exports/organisms/std-puzzle-app.orb +228 -103
  189. package/dist/exports/organisms/std-realtime-chat.orb +1887 -1051
  190. package/dist/exports/organisms/std-rpg-game.orb +1170 -948
  191. package/dist/exports/organisms/std-social-feed.orb +184 -172
  192. package/dist/exports/organisms/std-stem-lab.orb +1308 -482
  193. package/dist/exports/organisms/std-strategy-game.orb +1520 -696
  194. package/dist/exports/organisms/std-trading-dashboard.orb +1884 -904
  195. package/dist/exports/validation-report.json +0 -747
  196. package/dist/index.d.ts +1 -1
  197. package/dist/index.js +3166 -810
  198. package/dist/index.js.map +1 -1
  199. package/package.json +1 -1
@@ -22,7 +22,14 @@
22
22
  {
23
23
  "name": "method",
24
24
  "type": "string",
25
- "required": true
25
+ "required": true,
26
+ "values": [
27
+ "GET",
28
+ "POST",
29
+ "PUT",
30
+ "DELETE",
31
+ "PATCH"
32
+ ]
26
33
  },
27
34
  {
28
35
  "name": "backend",
@@ -151,120 +158,125 @@
151
158
  "render-ui",
152
159
  "main",
153
160
  {
154
- "type": "stack",
155
- "direction": "vertical",
156
- "gap": "lg",
161
+ "type": "dashboard-layout",
162
+ "appName": "API Gateway",
163
+ "navItems": [
164
+ {
165
+ "label": "Routes",
166
+ "href": "/routes",
167
+ "icon": "git-branch"
168
+ },
169
+ {
170
+ "label": "Backends",
171
+ "href": "/backends",
172
+ "icon": "server"
173
+ },
174
+ {
175
+ "label": "Analytics",
176
+ "href": "/analytics",
177
+ "icon": "bar-chart-2"
178
+ }
179
+ ],
157
180
  "children": [
158
181
  {
159
182
  "type": "stack",
160
- "direction": "horizontal",
161
- "gap": "md",
162
- "justify": "space-between",
183
+ "direction": "vertical",
184
+ "gap": "lg",
185
+ "className": "max-w-5xl mx-auto w-full",
163
186
  "children": [
164
187
  {
165
188
  "type": "stack",
166
189
  "direction": "horizontal",
167
- "gap": "sm",
190
+ "gap": "md",
191
+ "justify": "space-between",
168
192
  "align": "center",
169
- "children": [
170
- {
171
- "type": "icon",
172
- "name": "git-branch",
173
- "size": "lg"
174
- },
175
- {
176
- "type": "typography",
177
- "content": "Routes",
178
- "variant": "h2"
179
- }
180
- ]
181
- },
182
- {
183
- "type": "stack",
184
- "direction": "horizontal",
185
- "gap": "sm",
186
- "children": [
187
- {
188
- "type": "button",
189
- "label": "Create Route",
190
- "event": "CREATE",
191
- "variant": "primary",
192
- "icon": "plus"
193
- }
194
- ]
195
- }
196
- ]
197
- },
198
- {
199
- "type": "divider"
200
- },
201
- {
202
- "type": "data-grid",
203
- "entity": "Route",
204
- "emptyIcon": "inbox",
205
- "emptyTitle": "No routes yet",
206
- "emptyDescription": "Create your first route to get started.",
207
- "itemActions": [
208
- {
209
- "label": "View",
210
- "event": "VIEW"
211
- },
212
- {
213
- "label": "Edit",
214
- "event": "EDIT"
215
- },
216
- {
217
- "label": "Delete",
218
- "event": "DELETE",
219
- "variant": "danger"
220
- }
221
- ],
222
- "className": "transition-shadow hover:shadow-md cursor-pointer",
223
- "renderItem": [
224
- "fn",
225
- "item",
226
- {
227
- "type": "stack",
228
- "direction": "vertical",
229
- "gap": "sm",
230
193
  "children": [
231
194
  {
232
195
  "type": "stack",
233
196
  "direction": "horizontal",
234
- "justify": "space-between",
197
+ "gap": "sm",
235
198
  "align": "center",
236
199
  "children": [
237
200
  {
238
- "type": "stack",
239
- "direction": "horizontal",
240
- "gap": "sm",
241
- "align": "center",
242
- "children": [
243
- {
244
- "type": "icon",
245
- "name": "git-branch",
246
- "size": "sm"
247
- },
248
- {
249
- "type": "typography",
250
- "variant": "h4",
251
- "content": "@item.path"
252
- }
253
- ]
201
+ "type": "icon",
202
+ "name": "git-branch",
203
+ "size": "lg"
254
204
  },
255
205
  {
256
- "type": "badge",
257
- "label": "@item.method"
206
+ "type": "typography",
207
+ "content": "Routes",
208
+ "variant": "h2"
258
209
  }
259
210
  ]
260
211
  },
261
212
  {
262
- "type": "typography",
263
- "variant": "caption",
264
- "color": "muted",
265
- "content": "@item.backend"
213
+ "type": "stack",
214
+ "direction": "horizontal",
215
+ "gap": "sm",
216
+ "children": [
217
+ {
218
+ "type": "button",
219
+ "label": "Create Route",
220
+ "event": "CREATE",
221
+ "variant": "primary",
222
+ "icon": "plus"
223
+ }
224
+ ]
266
225
  }
267
226
  ]
227
+ },
228
+ {
229
+ "type": "divider"
230
+ },
231
+ {
232
+ "type": "data-list",
233
+ "entity": "Route",
234
+ "emptyIcon": "inbox",
235
+ "emptyTitle": "No routes configured",
236
+ "emptyDescription": "Add API routes to your gateway.",
237
+ "itemActions": [
238
+ {
239
+ "label": "View",
240
+ "event": "VIEW",
241
+ "variant": "ghost",
242
+ "size": "sm"
243
+ },
244
+ {
245
+ "label": "Edit",
246
+ "event": "EDIT",
247
+ "variant": "ghost",
248
+ "size": "sm"
249
+ },
250
+ {
251
+ "label": "Delete",
252
+ "event": "DELETE",
253
+ "variant": "danger",
254
+ "size": "sm"
255
+ }
256
+ ],
257
+ "columns": [
258
+ {
259
+ "name": "method",
260
+ "variant": "badge"
261
+ },
262
+ {
263
+ "name": "path",
264
+ "variant": "h3",
265
+ "icon": "git-branch"
266
+ },
267
+ {
268
+ "name": "backend",
269
+ "variant": "body"
270
+ },
271
+ {
272
+ "name": "rateLimit",
273
+ "label": "Rate Limit",
274
+ "variant": "caption",
275
+ "format": "number"
276
+ }
277
+ ],
278
+ "variant": "card",
279
+ "gap": "sm"
268
280
  }
269
281
  ]
270
282
  }
@@ -388,120 +400,125 @@
388
400
  "render-ui",
389
401
  "main",
390
402
  {
391
- "type": "stack",
392
- "direction": "vertical",
393
- "gap": "lg",
403
+ "type": "dashboard-layout",
404
+ "appName": "API Gateway",
405
+ "navItems": [
406
+ {
407
+ "label": "Routes",
408
+ "href": "/routes",
409
+ "icon": "git-branch"
410
+ },
411
+ {
412
+ "label": "Backends",
413
+ "href": "/backends",
414
+ "icon": "server"
415
+ },
416
+ {
417
+ "label": "Analytics",
418
+ "href": "/analytics",
419
+ "icon": "bar-chart-2"
420
+ }
421
+ ],
394
422
  "children": [
395
423
  {
396
424
  "type": "stack",
397
- "direction": "horizontal",
398
- "gap": "md",
399
- "justify": "space-between",
425
+ "direction": "vertical",
426
+ "gap": "lg",
427
+ "className": "max-w-5xl mx-auto w-full",
400
428
  "children": [
401
429
  {
402
430
  "type": "stack",
403
431
  "direction": "horizontal",
404
- "gap": "sm",
432
+ "gap": "md",
433
+ "justify": "space-between",
405
434
  "align": "center",
406
- "children": [
407
- {
408
- "type": "icon",
409
- "name": "git-branch",
410
- "size": "lg"
411
- },
412
- {
413
- "type": "typography",
414
- "content": "Routes",
415
- "variant": "h2"
416
- }
417
- ]
418
- },
419
- {
420
- "type": "stack",
421
- "direction": "horizontal",
422
- "gap": "sm",
423
- "children": [
424
- {
425
- "type": "button",
426
- "label": "Create Route",
427
- "event": "CREATE",
428
- "variant": "primary",
429
- "icon": "plus"
430
- }
431
- ]
432
- }
433
- ]
434
- },
435
- {
436
- "type": "divider"
437
- },
438
- {
439
- "type": "data-grid",
440
- "entity": "Route",
441
- "emptyIcon": "inbox",
442
- "emptyTitle": "No routes yet",
443
- "emptyDescription": "Create your first route to get started.",
444
- "itemActions": [
445
- {
446
- "label": "View",
447
- "event": "VIEW"
448
- },
449
- {
450
- "label": "Edit",
451
- "event": "EDIT"
452
- },
453
- {
454
- "label": "Delete",
455
- "event": "DELETE",
456
- "variant": "danger"
457
- }
458
- ],
459
- "className": "transition-shadow hover:shadow-md cursor-pointer",
460
- "renderItem": [
461
- "fn",
462
- "item",
463
- {
464
- "type": "stack",
465
- "direction": "vertical",
466
- "gap": "sm",
467
435
  "children": [
468
436
  {
469
437
  "type": "stack",
470
438
  "direction": "horizontal",
471
- "justify": "space-between",
439
+ "gap": "sm",
472
440
  "align": "center",
473
441
  "children": [
474
442
  {
475
- "type": "stack",
476
- "direction": "horizontal",
477
- "gap": "sm",
478
- "align": "center",
479
- "children": [
480
- {
481
- "type": "icon",
482
- "name": "git-branch",
483
- "size": "sm"
484
- },
485
- {
486
- "type": "typography",
487
- "variant": "h4",
488
- "content": "@item.path"
489
- }
490
- ]
443
+ "type": "icon",
444
+ "name": "git-branch",
445
+ "size": "lg"
491
446
  },
492
447
  {
493
- "type": "badge",
494
- "label": "@item.method"
448
+ "type": "typography",
449
+ "content": "Routes",
450
+ "variant": "h2"
495
451
  }
496
452
  ]
497
453
  },
498
454
  {
499
- "type": "typography",
500
- "variant": "caption",
501
- "color": "muted",
502
- "content": "@item.backend"
455
+ "type": "stack",
456
+ "direction": "horizontal",
457
+ "gap": "sm",
458
+ "children": [
459
+ {
460
+ "type": "button",
461
+ "label": "Create Route",
462
+ "event": "CREATE",
463
+ "variant": "primary",
464
+ "icon": "plus"
465
+ }
466
+ ]
503
467
  }
504
468
  ]
469
+ },
470
+ {
471
+ "type": "divider"
472
+ },
473
+ {
474
+ "type": "data-list",
475
+ "entity": "Route",
476
+ "emptyIcon": "inbox",
477
+ "emptyTitle": "No routes configured",
478
+ "emptyDescription": "Add API routes to your gateway.",
479
+ "itemActions": [
480
+ {
481
+ "label": "View",
482
+ "event": "VIEW",
483
+ "variant": "ghost",
484
+ "size": "sm"
485
+ },
486
+ {
487
+ "label": "Edit",
488
+ "event": "EDIT",
489
+ "variant": "ghost",
490
+ "size": "sm"
491
+ },
492
+ {
493
+ "label": "Delete",
494
+ "event": "DELETE",
495
+ "variant": "danger",
496
+ "size": "sm"
497
+ }
498
+ ],
499
+ "columns": [
500
+ {
501
+ "name": "method",
502
+ "variant": "badge"
503
+ },
504
+ {
505
+ "name": "path",
506
+ "variant": "h3",
507
+ "icon": "git-branch"
508
+ },
509
+ {
510
+ "name": "backend",
511
+ "variant": "body"
512
+ },
513
+ {
514
+ "name": "rateLimit",
515
+ "label": "Rate Limit",
516
+ "variant": "caption",
517
+ "format": "number"
518
+ }
519
+ ],
520
+ "variant": "card",
521
+ "gap": "sm"
505
522
  }
506
523
  ]
507
524
  }
@@ -532,260 +549,270 @@
532
549
  "render-ui",
533
550
  "main",
534
551
  {
535
- "type": "stack",
536
- "direction": "vertical",
537
- "gap": "lg",
552
+ "type": "dashboard-layout",
553
+ "appName": "API Gateway",
554
+ "navItems": [
555
+ {
556
+ "label": "Routes",
557
+ "href": "/routes",
558
+ "icon": "git-branch"
559
+ },
560
+ {
561
+ "label": "Backends",
562
+ "href": "/backends",
563
+ "icon": "server"
564
+ },
565
+ {
566
+ "label": "Analytics",
567
+ "href": "/analytics",
568
+ "icon": "bar-chart-2"
569
+ }
570
+ ],
538
571
  "children": [
539
572
  {
540
573
  "type": "stack",
541
- "direction": "horizontal",
542
- "gap": "md",
543
- "justify": "space-between",
574
+ "direction": "vertical",
575
+ "gap": "lg",
576
+ "className": "max-w-5xl mx-auto w-full",
544
577
  "children": [
545
578
  {
546
579
  "type": "stack",
547
580
  "direction": "horizontal",
548
- "gap": "sm",
581
+ "gap": "md",
582
+ "justify": "space-between",
549
583
  "align": "center",
550
584
  "children": [
551
585
  {
552
- "type": "icon",
553
- "name": "git-branch",
554
- "size": "lg"
586
+ "type": "stack",
587
+ "direction": "horizontal",
588
+ "gap": "sm",
589
+ "align": "center",
590
+ "children": [
591
+ {
592
+ "type": "icon",
593
+ "name": "git-branch",
594
+ "size": "lg"
595
+ },
596
+ {
597
+ "type": "typography",
598
+ "content": "Routes",
599
+ "variant": "h2"
600
+ }
601
+ ]
555
602
  },
556
603
  {
557
- "type": "typography",
558
- "content": "Routes",
559
- "variant": "h2"
604
+ "type": "stack",
605
+ "direction": "horizontal",
606
+ "gap": "sm",
607
+ "children": [
608
+ {
609
+ "type": "button",
610
+ "label": "Create Route",
611
+ "event": "CREATE",
612
+ "variant": "primary",
613
+ "icon": "plus"
614
+ }
615
+ ]
560
616
  }
561
617
  ]
562
618
  },
563
619
  {
564
- "type": "stack",
565
- "direction": "horizontal",
566
- "gap": "sm",
567
- "children": [
620
+ "type": "divider"
621
+ },
622
+ {
623
+ "type": "data-list",
624
+ "entity": "Route",
625
+ "emptyIcon": "inbox",
626
+ "emptyTitle": "No routes configured",
627
+ "emptyDescription": "Add API routes to your gateway.",
628
+ "itemActions": [
629
+ {
630
+ "label": "View",
631
+ "event": "VIEW",
632
+ "variant": "ghost",
633
+ "size": "sm"
634
+ },
568
635
  {
569
- "type": "button",
570
- "label": "Create Route",
571
- "event": "CREATE",
572
- "variant": "primary",
573
- "icon": "plus"
636
+ "label": "Edit",
637
+ "event": "EDIT",
638
+ "variant": "ghost",
639
+ "size": "sm"
640
+ },
641
+ {
642
+ "label": "Delete",
643
+ "event": "DELETE",
644
+ "variant": "danger",
645
+ "size": "sm"
574
646
  }
575
- ]
647
+ ],
648
+ "columns": [
649
+ {
650
+ "name": "method",
651
+ "variant": "badge"
652
+ },
653
+ {
654
+ "name": "path",
655
+ "variant": "h3",
656
+ "icon": "git-branch"
657
+ },
658
+ {
659
+ "name": "backend",
660
+ "variant": "body"
661
+ },
662
+ {
663
+ "name": "rateLimit",
664
+ "label": "Rate Limit",
665
+ "variant": "caption",
666
+ "format": "number"
667
+ }
668
+ ],
669
+ "variant": "card",
670
+ "gap": "sm"
576
671
  }
577
672
  ]
673
+ }
674
+ ]
675
+ }
676
+ ]
677
+ ]
678
+ },
679
+ {
680
+ "from": "deleting",
681
+ "to": "browsing",
682
+ "event": "CLOSE",
683
+ "effects": [
684
+ [
685
+ "render-ui",
686
+ "modal",
687
+ null
688
+ ],
689
+ [
690
+ "fetch",
691
+ "Route"
692
+ ],
693
+ [
694
+ "render-ui",
695
+ "main",
696
+ {
697
+ "type": "dashboard-layout",
698
+ "appName": "API Gateway",
699
+ "navItems": [
700
+ {
701
+ "label": "Routes",
702
+ "href": "/routes",
703
+ "icon": "git-branch"
578
704
  },
579
705
  {
580
- "type": "divider"
706
+ "label": "Backends",
707
+ "href": "/backends",
708
+ "icon": "server"
581
709
  },
582
710
  {
583
- "type": "data-grid",
584
- "entity": "Route",
585
- "emptyIcon": "inbox",
586
- "emptyTitle": "No routes yet",
587
- "emptyDescription": "Create your first route to get started.",
588
- "itemActions": [
589
- {
590
- "label": "View",
591
- "event": "VIEW"
592
- },
593
- {
594
- "label": "Edit",
595
- "event": "EDIT"
596
- },
597
- {
598
- "label": "Delete",
599
- "event": "DELETE",
600
- "variant": "danger"
601
- }
602
- ],
603
- "className": "transition-shadow hover:shadow-md cursor-pointer",
604
- "renderItem": [
605
- "fn",
606
- "item",
711
+ "label": "Analytics",
712
+ "href": "/analytics",
713
+ "icon": "bar-chart-2"
714
+ }
715
+ ],
716
+ "children": [
717
+ {
718
+ "type": "stack",
719
+ "direction": "vertical",
720
+ "gap": "lg",
721
+ "className": "max-w-5xl mx-auto w-full",
722
+ "children": [
607
723
  {
608
724
  "type": "stack",
609
- "direction": "vertical",
610
- "gap": "sm",
725
+ "direction": "horizontal",
726
+ "gap": "md",
727
+ "justify": "space-between",
728
+ "align": "center",
611
729
  "children": [
612
730
  {
613
731
  "type": "stack",
614
732
  "direction": "horizontal",
615
- "justify": "space-between",
733
+ "gap": "sm",
616
734
  "align": "center",
617
735
  "children": [
618
736
  {
619
- "type": "stack",
620
- "direction": "horizontal",
621
- "gap": "sm",
622
- "align": "center",
623
- "children": [
624
- {
625
- "type": "icon",
626
- "name": "git-branch",
627
- "size": "sm"
628
- },
629
- {
630
- "type": "typography",
631
- "variant": "h4",
632
- "content": "@item.path"
633
- }
634
- ]
737
+ "type": "icon",
738
+ "name": "git-branch",
739
+ "size": "lg"
635
740
  },
636
741
  {
637
- "type": "badge",
638
- "label": "@item.method"
742
+ "type": "typography",
743
+ "content": "Routes",
744
+ "variant": "h2"
639
745
  }
640
746
  ]
641
747
  },
642
748
  {
643
- "type": "typography",
644
- "variant": "caption",
645
- "color": "muted",
646
- "content": "@item.backend"
749
+ "type": "stack",
750
+ "direction": "horizontal",
751
+ "gap": "sm",
752
+ "children": [
753
+ {
754
+ "type": "button",
755
+ "label": "Create Route",
756
+ "event": "CREATE",
757
+ "variant": "primary",
758
+ "icon": "plus"
759
+ }
760
+ ]
647
761
  }
648
762
  ]
649
- }
650
- ]
651
- }
652
- ]
653
- }
654
- ]
655
- ]
656
- },
657
- {
658
- "from": "deleting",
659
- "to": "browsing",
660
- "event": "CLOSE",
661
- "effects": [
662
- [
663
- "render-ui",
664
- "modal",
665
- null
666
- ],
667
- [
668
- "fetch",
669
- "Route"
670
- ],
671
- [
672
- "render-ui",
673
- "main",
674
- {
675
- "type": "stack",
676
- "direction": "vertical",
677
- "gap": "lg",
678
- "children": [
679
- {
680
- "type": "stack",
681
- "direction": "horizontal",
682
- "gap": "md",
683
- "justify": "space-between",
684
- "children": [
763
+ },
685
764
  {
686
- "type": "stack",
687
- "direction": "horizontal",
688
- "gap": "sm",
689
- "align": "center",
690
- "children": [
765
+ "type": "divider"
766
+ },
767
+ {
768
+ "type": "data-list",
769
+ "entity": "Route",
770
+ "emptyIcon": "inbox",
771
+ "emptyTitle": "No routes configured",
772
+ "emptyDescription": "Add API routes to your gateway.",
773
+ "itemActions": [
691
774
  {
692
- "type": "icon",
693
- "name": "git-branch",
694
- "size": "lg"
775
+ "label": "View",
776
+ "event": "VIEW",
777
+ "variant": "ghost",
778
+ "size": "sm"
695
779
  },
696
780
  {
697
- "type": "typography",
698
- "content": "Routes",
699
- "variant": "h2"
700
- }
701
- ]
702
- },
703
- {
704
- "type": "stack",
705
- "direction": "horizontal",
706
- "gap": "sm",
707
- "children": [
781
+ "label": "Edit",
782
+ "event": "EDIT",
783
+ "variant": "ghost",
784
+ "size": "sm"
785
+ },
708
786
  {
709
- "type": "button",
710
- "label": "Create Route",
711
- "event": "CREATE",
712
- "variant": "primary",
713
- "icon": "plus"
787
+ "label": "Delete",
788
+ "event": "DELETE",
789
+ "variant": "danger",
790
+ "size": "sm"
714
791
  }
715
- ]
716
- }
717
- ]
718
- },
719
- {
720
- "type": "divider"
721
- },
722
- {
723
- "type": "data-grid",
724
- "entity": "Route",
725
- "emptyIcon": "inbox",
726
- "emptyTitle": "No routes yet",
727
- "emptyDescription": "Create your first route to get started.",
728
- "itemActions": [
729
- {
730
- "label": "View",
731
- "event": "VIEW"
732
- },
733
- {
734
- "label": "Edit",
735
- "event": "EDIT"
736
- },
737
- {
738
- "label": "Delete",
739
- "event": "DELETE",
740
- "variant": "danger"
741
- }
742
- ],
743
- "className": "transition-shadow hover:shadow-md cursor-pointer",
744
- "renderItem": [
745
- "fn",
746
- "item",
747
- {
748
- "type": "stack",
749
- "direction": "vertical",
750
- "gap": "sm",
751
- "children": [
792
+ ],
793
+ "columns": [
752
794
  {
753
- "type": "stack",
754
- "direction": "horizontal",
755
- "justify": "space-between",
756
- "align": "center",
757
- "children": [
758
- {
759
- "type": "stack",
760
- "direction": "horizontal",
761
- "gap": "sm",
762
- "align": "center",
763
- "children": [
764
- {
765
- "type": "icon",
766
- "name": "git-branch",
767
- "size": "sm"
768
- },
769
- {
770
- "type": "typography",
771
- "variant": "h4",
772
- "content": "@item.path"
773
- }
774
- ]
775
- },
776
- {
777
- "type": "badge",
778
- "label": "@item.method"
779
- }
780
- ]
795
+ "name": "method",
796
+ "variant": "badge"
797
+ },
798
+ {
799
+ "name": "path",
800
+ "variant": "h3",
801
+ "icon": "git-branch"
802
+ },
803
+ {
804
+ "name": "backend",
805
+ "variant": "body"
781
806
  },
782
807
  {
783
- "type": "typography",
808
+ "name": "rateLimit",
809
+ "label": "Rate Limit",
784
810
  "variant": "caption",
785
- "color": "muted",
786
- "content": "@item.backend"
811
+ "format": "number"
787
812
  }
788
- ]
813
+ ],
814
+ "variant": "card",
815
+ "gap": "sm"
789
816
  }
790
817
  ]
791
818
  }
@@ -917,6 +944,11 @@
917
944
  "render-ui",
918
945
  "modal",
919
946
  null
947
+ ],
948
+ [
949
+ "notify",
950
+ "Cancelled",
951
+ "info"
920
952
  ]
921
953
  ]
922
954
  },
@@ -1082,6 +1114,11 @@
1082
1114
  "render-ui",
1083
1115
  "modal",
1084
1116
  null
1117
+ ],
1118
+ [
1119
+ "notify",
1120
+ "Cancelled",
1121
+ "info"
1085
1122
  ]
1086
1123
  ]
1087
1124
  },
@@ -1263,7 +1300,7 @@
1263
1300
  {
1264
1301
  "type": "typography",
1265
1302
  "variant": "caption",
1266
- "content": "RateLimit"
1303
+ "content": "Rate Limit"
1267
1304
  },
1268
1305
  {
1269
1306
  "type": "typography",
@@ -1310,6 +1347,11 @@
1310
1347
  "render-ui",
1311
1348
  "modal",
1312
1349
  null
1350
+ ],
1351
+ [
1352
+ "notify",
1353
+ "Cancelled",
1354
+ "info"
1313
1355
  ]
1314
1356
  ]
1315
1357
  }
@@ -1439,58 +1481,104 @@
1439
1481
  "render-ui",
1440
1482
  "main",
1441
1483
  {
1442
- "type": "stack",
1443
- "direction": "vertical",
1444
- "gap": "lg",
1484
+ "type": "dashboard-layout",
1485
+ "appName": "API Gateway",
1486
+ "navItems": [
1487
+ {
1488
+ "label": "Routes",
1489
+ "href": "/routes",
1490
+ "icon": "git-branch"
1491
+ },
1492
+ {
1493
+ "label": "Backends",
1494
+ "href": "/backends",
1495
+ "icon": "server"
1496
+ },
1497
+ {
1498
+ "label": "Analytics",
1499
+ "href": "/analytics",
1500
+ "icon": "bar-chart-2"
1501
+ }
1502
+ ],
1445
1503
  "children": [
1446
1504
  {
1447
1505
  "type": "stack",
1448
- "direction": "horizontal",
1449
- "gap": "md",
1450
- "align": "center",
1451
- "justify": "space-between",
1506
+ "direction": "vertical",
1507
+ "gap": "lg",
1452
1508
  "children": [
1453
1509
  {
1454
1510
  "type": "stack",
1455
1511
  "direction": "horizontal",
1456
1512
  "gap": "md",
1457
1513
  "align": "center",
1514
+ "justify": "space-between",
1458
1515
  "children": [
1459
1516
  {
1460
- "type": "icon",
1461
- "name": "server",
1462
- "size": "lg"
1517
+ "type": "stack",
1518
+ "direction": "horizontal",
1519
+ "gap": "md",
1520
+ "align": "center",
1521
+ "children": [
1522
+ {
1523
+ "type": "icon",
1524
+ "name": "server",
1525
+ "size": "lg"
1526
+ },
1527
+ {
1528
+ "type": "typography",
1529
+ "content": "Backend",
1530
+ "variant": "h2"
1531
+ }
1532
+ ]
1463
1533
  },
1464
1534
  {
1465
- "type": "typography",
1466
- "content": "Backend",
1467
- "variant": "h2"
1535
+ "type": "status-dot",
1536
+ "status": "success",
1537
+ "pulse": false,
1538
+ "label": "Circuit Closed"
1468
1539
  }
1469
1540
  ]
1470
1541
  },
1471
1542
  {
1472
- "type": "status-dot",
1473
- "status": "success",
1474
- "pulse": false,
1475
- "label": "Circuit Closed"
1476
- }
1477
- ]
1478
- },
1479
- {
1480
- "type": "divider"
1481
- },
1482
- {
1483
- "type": "alert",
1484
- "variant": "success",
1485
- "message": "Service is healthy. All requests are being processed."
1486
- },
1487
- {
1488
- "type": "simple-grid",
1489
- "columns": 2,
1490
- "children": [
1543
+ "type": "divider"
1544
+ },
1545
+ {
1546
+ "type": "alert",
1547
+ "variant": "success",
1548
+ "message": "Service is healthy. All requests are being processed."
1549
+ },
1550
+ {
1551
+ "type": "simple-grid",
1552
+ "columns": 2,
1553
+ "children": [
1554
+ {
1555
+ "type": "stat-display",
1556
+ "label": "Failures",
1557
+ "value": [
1558
+ "object/get",
1559
+ [
1560
+ "array/first",
1561
+ "@entity"
1562
+ ],
1563
+ "failureCount"
1564
+ ]
1565
+ },
1566
+ {
1567
+ "type": "stat-display",
1568
+ "label": "Successes",
1569
+ "value": [
1570
+ "object/get",
1571
+ [
1572
+ "array/first",
1573
+ "@entity"
1574
+ ],
1575
+ "successCount"
1576
+ ]
1577
+ }
1578
+ ]
1579
+ },
1491
1580
  {
1492
- "type": "stat-display",
1493
- "label": "Failures",
1581
+ "type": "meter",
1494
1582
  "value": [
1495
1583
  "object/get",
1496
1584
  [
@@ -1498,41 +1586,18 @@
1498
1586
  "@entity"
1499
1587
  ],
1500
1588
  "failureCount"
1501
- ]
1502
- },
1503
- {
1504
- "type": "stat-display",
1505
- "label": "Successes",
1506
- "value": [
1589
+ ],
1590
+ "min": 0,
1591
+ "max": [
1507
1592
  "object/get",
1508
1593
  [
1509
1594
  "array/first",
1510
1595
  "@entity"
1511
1596
  ],
1512
- "successCount"
1597
+ "threshold"
1513
1598
  ]
1514
1599
  }
1515
1600
  ]
1516
- },
1517
- {
1518
- "type": "meter",
1519
- "value": [
1520
- "object/get",
1521
- [
1522
- "array/first",
1523
- "@entity"
1524
- ],
1525
- "failureCount"
1526
- ],
1527
- "min": 0,
1528
- "max": [
1529
- "object/get",
1530
- [
1531
- "array/first",
1532
- "@entity"
1533
- ],
1534
- "threshold"
1535
- ]
1536
1601
  }
1537
1602
  ]
1538
1603
  }
@@ -1548,58 +1613,104 @@
1548
1613
  "render-ui",
1549
1614
  "main",
1550
1615
  {
1551
- "type": "stack",
1552
- "direction": "vertical",
1553
- "gap": "lg",
1616
+ "type": "dashboard-layout",
1617
+ "appName": "API Gateway",
1618
+ "navItems": [
1619
+ {
1620
+ "label": "Routes",
1621
+ "href": "/routes",
1622
+ "icon": "git-branch"
1623
+ },
1624
+ {
1625
+ "label": "Backends",
1626
+ "href": "/backends",
1627
+ "icon": "server"
1628
+ },
1629
+ {
1630
+ "label": "Analytics",
1631
+ "href": "/analytics",
1632
+ "icon": "bar-chart-2"
1633
+ }
1634
+ ],
1554
1635
  "children": [
1555
1636
  {
1556
1637
  "type": "stack",
1557
- "direction": "horizontal",
1558
- "gap": "md",
1559
- "align": "center",
1560
- "justify": "space-between",
1638
+ "direction": "vertical",
1639
+ "gap": "lg",
1561
1640
  "children": [
1562
1641
  {
1563
1642
  "type": "stack",
1564
1643
  "direction": "horizontal",
1565
1644
  "gap": "md",
1566
1645
  "align": "center",
1646
+ "justify": "space-between",
1567
1647
  "children": [
1568
1648
  {
1569
- "type": "icon",
1570
- "name": "alert-triangle",
1571
- "size": "lg"
1649
+ "type": "stack",
1650
+ "direction": "horizontal",
1651
+ "gap": "md",
1652
+ "align": "center",
1653
+ "children": [
1654
+ {
1655
+ "type": "icon",
1656
+ "name": "alert-triangle",
1657
+ "size": "lg"
1658
+ },
1659
+ {
1660
+ "type": "typography",
1661
+ "content": "Backend",
1662
+ "variant": "h2"
1663
+ }
1664
+ ]
1572
1665
  },
1573
1666
  {
1574
- "type": "typography",
1575
- "content": "Backend",
1576
- "variant": "h2"
1667
+ "type": "status-dot",
1668
+ "status": "error",
1669
+ "pulse": true,
1670
+ "label": "Circuit Open"
1577
1671
  }
1578
1672
  ]
1579
1673
  },
1580
1674
  {
1581
- "type": "status-dot",
1582
- "status": "error",
1583
- "pulse": true,
1584
- "label": "Circuit Open"
1585
- }
1586
- ]
1587
- },
1588
- {
1589
- "type": "divider"
1590
- },
1591
- {
1592
- "type": "alert",
1593
- "variant": "danger",
1594
- "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
1595
- },
1596
- {
1597
- "type": "simple-grid",
1598
- "columns": 2,
1599
- "children": [
1675
+ "type": "divider"
1676
+ },
1677
+ {
1678
+ "type": "alert",
1679
+ "variant": "danger",
1680
+ "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
1681
+ },
1682
+ {
1683
+ "type": "simple-grid",
1684
+ "columns": 2,
1685
+ "children": [
1686
+ {
1687
+ "type": "stat-display",
1688
+ "label": "Failures",
1689
+ "value": [
1690
+ "object/get",
1691
+ [
1692
+ "array/first",
1693
+ "@entity"
1694
+ ],
1695
+ "failureCount"
1696
+ ]
1697
+ },
1698
+ {
1699
+ "type": "stat-display",
1700
+ "label": "Successes",
1701
+ "value": [
1702
+ "object/get",
1703
+ [
1704
+ "array/first",
1705
+ "@entity"
1706
+ ],
1707
+ "successCount"
1708
+ ]
1709
+ }
1710
+ ]
1711
+ },
1600
1712
  {
1601
- "type": "stat-display",
1602
- "label": "Failures",
1713
+ "type": "meter",
1603
1714
  "value": [
1604
1715
  "object/get",
1605
1716
  [
@@ -1607,48 +1718,25 @@
1607
1718
  "@entity"
1608
1719
  ],
1609
1720
  "failureCount"
1610
- ]
1611
- },
1612
- {
1613
- "type": "stat-display",
1614
- "label": "Successes",
1615
- "value": [
1721
+ ],
1722
+ "min": 0,
1723
+ "max": [
1616
1724
  "object/get",
1617
1725
  [
1618
1726
  "array/first",
1619
1727
  "@entity"
1620
1728
  ],
1621
- "successCount"
1729
+ "threshold"
1622
1730
  ]
1731
+ },
1732
+ {
1733
+ "type": "button",
1734
+ "label": "Reset",
1735
+ "event": "RESET",
1736
+ "variant": "ghost",
1737
+ "icon": "rotate-ccw"
1623
1738
  }
1624
1739
  ]
1625
- },
1626
- {
1627
- "type": "meter",
1628
- "value": [
1629
- "object/get",
1630
- [
1631
- "array/first",
1632
- "@entity"
1633
- ],
1634
- "failureCount"
1635
- ],
1636
- "min": 0,
1637
- "max": [
1638
- "object/get",
1639
- [
1640
- "array/first",
1641
- "@entity"
1642
- ],
1643
- "threshold"
1644
- ]
1645
- },
1646
- {
1647
- "type": "button",
1648
- "label": "Reset",
1649
- "event": "RESET",
1650
- "variant": "ghost",
1651
- "icon": "rotate-ccw"
1652
1740
  }
1653
1741
  ]
1654
1742
  }
@@ -1664,58 +1752,104 @@
1664
1752
  "render-ui",
1665
1753
  "main",
1666
1754
  {
1667
- "type": "stack",
1668
- "direction": "vertical",
1669
- "gap": "lg",
1755
+ "type": "dashboard-layout",
1756
+ "appName": "API Gateway",
1757
+ "navItems": [
1758
+ {
1759
+ "label": "Routes",
1760
+ "href": "/routes",
1761
+ "icon": "git-branch"
1762
+ },
1763
+ {
1764
+ "label": "Backends",
1765
+ "href": "/backends",
1766
+ "icon": "server"
1767
+ },
1768
+ {
1769
+ "label": "Analytics",
1770
+ "href": "/analytics",
1771
+ "icon": "bar-chart-2"
1772
+ }
1773
+ ],
1670
1774
  "children": [
1671
1775
  {
1672
1776
  "type": "stack",
1673
- "direction": "horizontal",
1674
- "gap": "md",
1675
- "align": "center",
1676
- "justify": "space-between",
1777
+ "direction": "vertical",
1778
+ "gap": "lg",
1677
1779
  "children": [
1678
1780
  {
1679
1781
  "type": "stack",
1680
1782
  "direction": "horizontal",
1681
1783
  "gap": "md",
1682
1784
  "align": "center",
1785
+ "justify": "space-between",
1683
1786
  "children": [
1684
1787
  {
1685
- "type": "icon",
1686
- "name": "server",
1687
- "size": "lg"
1788
+ "type": "stack",
1789
+ "direction": "horizontal",
1790
+ "gap": "md",
1791
+ "align": "center",
1792
+ "children": [
1793
+ {
1794
+ "type": "icon",
1795
+ "name": "server",
1796
+ "size": "lg"
1797
+ },
1798
+ {
1799
+ "type": "typography",
1800
+ "content": "Backend",
1801
+ "variant": "h2"
1802
+ }
1803
+ ]
1688
1804
  },
1689
1805
  {
1690
- "type": "typography",
1691
- "content": "Backend",
1692
- "variant": "h2"
1806
+ "type": "status-dot",
1807
+ "status": "success",
1808
+ "pulse": false,
1809
+ "label": "Circuit Closed"
1693
1810
  }
1694
1811
  ]
1695
1812
  },
1696
1813
  {
1697
- "type": "status-dot",
1698
- "status": "success",
1699
- "pulse": false,
1700
- "label": "Circuit Closed"
1701
- }
1702
- ]
1703
- },
1704
- {
1705
- "type": "divider"
1706
- },
1707
- {
1708
- "type": "alert",
1709
- "variant": "success",
1710
- "message": "Service is healthy. All requests are being processed."
1711
- },
1712
- {
1713
- "type": "simple-grid",
1714
- "columns": 2,
1715
- "children": [
1814
+ "type": "divider"
1815
+ },
1816
+ {
1817
+ "type": "alert",
1818
+ "variant": "success",
1819
+ "message": "Service is healthy. All requests are being processed."
1820
+ },
1821
+ {
1822
+ "type": "simple-grid",
1823
+ "columns": 2,
1824
+ "children": [
1825
+ {
1826
+ "type": "stat-display",
1827
+ "label": "Failures",
1828
+ "value": [
1829
+ "object/get",
1830
+ [
1831
+ "array/first",
1832
+ "@entity"
1833
+ ],
1834
+ "failureCount"
1835
+ ]
1836
+ },
1837
+ {
1838
+ "type": "stat-display",
1839
+ "label": "Successes",
1840
+ "value": [
1841
+ "object/get",
1842
+ [
1843
+ "array/first",
1844
+ "@entity"
1845
+ ],
1846
+ "successCount"
1847
+ ]
1848
+ }
1849
+ ]
1850
+ },
1716
1851
  {
1717
- "type": "stat-display",
1718
- "label": "Failures",
1852
+ "type": "meter",
1719
1853
  "value": [
1720
1854
  "object/get",
1721
1855
  [
@@ -1723,41 +1857,18 @@
1723
1857
  "@entity"
1724
1858
  ],
1725
1859
  "failureCount"
1726
- ]
1727
- },
1728
- {
1729
- "type": "stat-display",
1730
- "label": "Successes",
1731
- "value": [
1860
+ ],
1861
+ "min": 0,
1862
+ "max": [
1732
1863
  "object/get",
1733
1864
  [
1734
1865
  "array/first",
1735
1866
  "@entity"
1736
1867
  ],
1737
- "successCount"
1868
+ "threshold"
1738
1869
  ]
1739
1870
  }
1740
1871
  ]
1741
- },
1742
- {
1743
- "type": "meter",
1744
- "value": [
1745
- "object/get",
1746
- [
1747
- "array/first",
1748
- "@entity"
1749
- ],
1750
- "failureCount"
1751
- ],
1752
- "min": 0,
1753
- "max": [
1754
- "object/get",
1755
- [
1756
- "array/first",
1757
- "@entity"
1758
- ],
1759
- "threshold"
1760
- ]
1761
1872
  }
1762
1873
  ]
1763
1874
  }
@@ -1773,77 +1884,100 @@
1773
1884
  "render-ui",
1774
1885
  "main",
1775
1886
  {
1776
- "type": "stack",
1777
- "direction": "vertical",
1778
- "gap": "lg",
1887
+ "type": "dashboard-layout",
1888
+ "appName": "API Gateway",
1889
+ "navItems": [
1890
+ {
1891
+ "label": "Routes",
1892
+ "href": "/routes",
1893
+ "icon": "git-branch"
1894
+ },
1895
+ {
1896
+ "label": "Backends",
1897
+ "href": "/backends",
1898
+ "icon": "server"
1899
+ },
1900
+ {
1901
+ "label": "Analytics",
1902
+ "href": "/analytics",
1903
+ "icon": "bar-chart-2"
1904
+ }
1905
+ ],
1779
1906
  "children": [
1780
1907
  {
1781
1908
  "type": "stack",
1782
- "direction": "horizontal",
1783
- "gap": "md",
1784
- "align": "center",
1785
- "justify": "space-between",
1909
+ "direction": "vertical",
1910
+ "gap": "lg",
1786
1911
  "children": [
1787
1912
  {
1788
1913
  "type": "stack",
1789
1914
  "direction": "horizontal",
1790
1915
  "gap": "md",
1791
1916
  "align": "center",
1917
+ "justify": "space-between",
1792
1918
  "children": [
1793
1919
  {
1794
- "type": "icon",
1795
- "name": "activity",
1796
- "size": "lg"
1920
+ "type": "stack",
1921
+ "direction": "horizontal",
1922
+ "gap": "md",
1923
+ "align": "center",
1924
+ "children": [
1925
+ {
1926
+ "type": "icon",
1927
+ "name": "activity",
1928
+ "size": "lg"
1929
+ },
1930
+ {
1931
+ "type": "typography",
1932
+ "content": "Backend",
1933
+ "variant": "h2"
1934
+ }
1935
+ ]
1797
1936
  },
1798
1937
  {
1799
- "type": "typography",
1800
- "content": "Backend",
1801
- "variant": "h2"
1938
+ "type": "status-dot",
1939
+ "status": "warning",
1940
+ "pulse": true,
1941
+ "label": "Circuit Half-Open"
1802
1942
  }
1803
1943
  ]
1804
1944
  },
1805
1945
  {
1806
- "type": "status-dot",
1807
- "status": "warning",
1808
- "pulse": true,
1809
- "label": "Circuit Half-Open"
1810
- }
1811
- ]
1812
- },
1813
- {
1814
- "type": "divider"
1815
- },
1816
- {
1817
- "type": "alert",
1818
- "variant": "warning",
1819
- "message": "Testing recovery. Limited requests are being allowed through."
1820
- },
1821
- {
1822
- "type": "simple-grid",
1823
- "columns": 2,
1824
- "children": [
1946
+ "type": "divider"
1947
+ },
1825
1948
  {
1826
- "type": "stat-display",
1827
- "label": "Failures",
1828
- "value": [
1829
- "object/get",
1830
- [
1831
- "array/first",
1832
- "@entity"
1833
- ],
1834
- "failureCount"
1835
- ]
1949
+ "type": "alert",
1950
+ "variant": "warning",
1951
+ "message": "Testing recovery. Limited requests are being allowed through."
1836
1952
  },
1837
1953
  {
1838
- "type": "stat-display",
1839
- "label": "Successes",
1840
- "value": [
1841
- "object/get",
1842
- [
1843
- "array/first",
1844
- "@entity"
1845
- ],
1846
- "successCount"
1954
+ "type": "simple-grid",
1955
+ "columns": 2,
1956
+ "children": [
1957
+ {
1958
+ "type": "stat-display",
1959
+ "label": "Failures",
1960
+ "value": [
1961
+ "object/get",
1962
+ [
1963
+ "array/first",
1964
+ "@entity"
1965
+ ],
1966
+ "failureCount"
1967
+ ]
1968
+ },
1969
+ {
1970
+ "type": "stat-display",
1971
+ "label": "Successes",
1972
+ "value": [
1973
+ "object/get",
1974
+ [
1975
+ "array/first",
1976
+ "@entity"
1977
+ ],
1978
+ "successCount"
1979
+ ]
1980
+ }
1847
1981
  ]
1848
1982
  }
1849
1983
  ]
@@ -1862,58 +1996,104 @@
1862
1996
  "render-ui",
1863
1997
  "main",
1864
1998
  {
1865
- "type": "stack",
1866
- "direction": "vertical",
1867
- "gap": "lg",
1999
+ "type": "dashboard-layout",
2000
+ "appName": "API Gateway",
2001
+ "navItems": [
2002
+ {
2003
+ "label": "Routes",
2004
+ "href": "/routes",
2005
+ "icon": "git-branch"
2006
+ },
2007
+ {
2008
+ "label": "Backends",
2009
+ "href": "/backends",
2010
+ "icon": "server"
2011
+ },
2012
+ {
2013
+ "label": "Analytics",
2014
+ "href": "/analytics",
2015
+ "icon": "bar-chart-2"
2016
+ }
2017
+ ],
1868
2018
  "children": [
1869
2019
  {
1870
2020
  "type": "stack",
1871
- "direction": "horizontal",
1872
- "gap": "md",
1873
- "align": "center",
1874
- "justify": "space-between",
2021
+ "direction": "vertical",
2022
+ "gap": "lg",
1875
2023
  "children": [
1876
2024
  {
1877
2025
  "type": "stack",
1878
2026
  "direction": "horizontal",
1879
2027
  "gap": "md",
1880
2028
  "align": "center",
2029
+ "justify": "space-between",
1881
2030
  "children": [
1882
2031
  {
1883
- "type": "icon",
1884
- "name": "server",
1885
- "size": "lg"
2032
+ "type": "stack",
2033
+ "direction": "horizontal",
2034
+ "gap": "md",
2035
+ "align": "center",
2036
+ "children": [
2037
+ {
2038
+ "type": "icon",
2039
+ "name": "server",
2040
+ "size": "lg"
2041
+ },
2042
+ {
2043
+ "type": "typography",
2044
+ "content": "Backend",
2045
+ "variant": "h2"
2046
+ }
2047
+ ]
1886
2048
  },
1887
2049
  {
1888
- "type": "typography",
1889
- "content": "Backend",
1890
- "variant": "h2"
2050
+ "type": "status-dot",
2051
+ "status": "success",
2052
+ "pulse": false,
2053
+ "label": "Circuit Closed"
1891
2054
  }
1892
2055
  ]
1893
2056
  },
1894
2057
  {
1895
- "type": "status-dot",
1896
- "status": "success",
1897
- "pulse": false,
1898
- "label": "Circuit Closed"
1899
- }
1900
- ]
1901
- },
1902
- {
1903
- "type": "divider"
1904
- },
1905
- {
1906
- "type": "alert",
1907
- "variant": "success",
1908
- "message": "Service is healthy. All requests are being processed."
1909
- },
1910
- {
1911
- "type": "simple-grid",
1912
- "columns": 2,
1913
- "children": [
2058
+ "type": "divider"
2059
+ },
2060
+ {
2061
+ "type": "alert",
2062
+ "variant": "success",
2063
+ "message": "Service is healthy. All requests are being processed."
2064
+ },
1914
2065
  {
1915
- "type": "stat-display",
1916
- "label": "Failures",
2066
+ "type": "simple-grid",
2067
+ "columns": 2,
2068
+ "children": [
2069
+ {
2070
+ "type": "stat-display",
2071
+ "label": "Failures",
2072
+ "value": [
2073
+ "object/get",
2074
+ [
2075
+ "array/first",
2076
+ "@entity"
2077
+ ],
2078
+ "failureCount"
2079
+ ]
2080
+ },
2081
+ {
2082
+ "type": "stat-display",
2083
+ "label": "Successes",
2084
+ "value": [
2085
+ "object/get",
2086
+ [
2087
+ "array/first",
2088
+ "@entity"
2089
+ ],
2090
+ "successCount"
2091
+ ]
2092
+ }
2093
+ ]
2094
+ },
2095
+ {
2096
+ "type": "meter",
1917
2097
  "value": [
1918
2098
  "object/get",
1919
2099
  [
@@ -1921,41 +2101,18 @@
1921
2101
  "@entity"
1922
2102
  ],
1923
2103
  "failureCount"
1924
- ]
1925
- },
1926
- {
1927
- "type": "stat-display",
1928
- "label": "Successes",
1929
- "value": [
2104
+ ],
2105
+ "min": 0,
2106
+ "max": [
1930
2107
  "object/get",
1931
2108
  [
1932
2109
  "array/first",
1933
2110
  "@entity"
1934
2111
  ],
1935
- "successCount"
2112
+ "threshold"
1936
2113
  ]
1937
2114
  }
1938
2115
  ]
1939
- },
1940
- {
1941
- "type": "meter",
1942
- "value": [
1943
- "object/get",
1944
- [
1945
- "array/first",
1946
- "@entity"
1947
- ],
1948
- "failureCount"
1949
- ],
1950
- "min": 0,
1951
- "max": [
1952
- "object/get",
1953
- [
1954
- "array/first",
1955
- "@entity"
1956
- ],
1957
- "threshold"
1958
- ]
1959
2116
  }
1960
2117
  ]
1961
2118
  }
@@ -1971,58 +2128,104 @@
1971
2128
  "render-ui",
1972
2129
  "main",
1973
2130
  {
1974
- "type": "stack",
1975
- "direction": "vertical",
1976
- "gap": "lg",
2131
+ "type": "dashboard-layout",
2132
+ "appName": "API Gateway",
2133
+ "navItems": [
2134
+ {
2135
+ "label": "Routes",
2136
+ "href": "/routes",
2137
+ "icon": "git-branch"
2138
+ },
2139
+ {
2140
+ "label": "Backends",
2141
+ "href": "/backends",
2142
+ "icon": "server"
2143
+ },
2144
+ {
2145
+ "label": "Analytics",
2146
+ "href": "/analytics",
2147
+ "icon": "bar-chart-2"
2148
+ }
2149
+ ],
1977
2150
  "children": [
1978
2151
  {
1979
2152
  "type": "stack",
1980
- "direction": "horizontal",
1981
- "gap": "md",
1982
- "align": "center",
1983
- "justify": "space-between",
2153
+ "direction": "vertical",
2154
+ "gap": "lg",
1984
2155
  "children": [
1985
2156
  {
1986
2157
  "type": "stack",
1987
2158
  "direction": "horizontal",
1988
2159
  "gap": "md",
1989
2160
  "align": "center",
2161
+ "justify": "space-between",
1990
2162
  "children": [
1991
2163
  {
1992
- "type": "icon",
1993
- "name": "server",
1994
- "size": "lg"
2164
+ "type": "stack",
2165
+ "direction": "horizontal",
2166
+ "gap": "md",
2167
+ "align": "center",
2168
+ "children": [
2169
+ {
2170
+ "type": "icon",
2171
+ "name": "server",
2172
+ "size": "lg"
2173
+ },
2174
+ {
2175
+ "type": "typography",
2176
+ "content": "Backend",
2177
+ "variant": "h2"
2178
+ }
2179
+ ]
1995
2180
  },
1996
2181
  {
1997
- "type": "typography",
1998
- "content": "Backend",
1999
- "variant": "h2"
2182
+ "type": "status-dot",
2183
+ "status": "success",
2184
+ "pulse": false,
2185
+ "label": "Circuit Closed"
2000
2186
  }
2001
2187
  ]
2002
2188
  },
2003
2189
  {
2004
- "type": "status-dot",
2005
- "status": "success",
2006
- "pulse": false,
2007
- "label": "Circuit Closed"
2008
- }
2009
- ]
2010
- },
2011
- {
2012
- "type": "divider"
2013
- },
2014
- {
2015
- "type": "alert",
2016
- "variant": "success",
2017
- "message": "Service is healthy. All requests are being processed."
2018
- },
2019
- {
2020
- "type": "simple-grid",
2021
- "columns": 2,
2022
- "children": [
2190
+ "type": "divider"
2191
+ },
2192
+ {
2193
+ "type": "alert",
2194
+ "variant": "success",
2195
+ "message": "Service is healthy. All requests are being processed."
2196
+ },
2197
+ {
2198
+ "type": "simple-grid",
2199
+ "columns": 2,
2200
+ "children": [
2201
+ {
2202
+ "type": "stat-display",
2203
+ "label": "Failures",
2204
+ "value": [
2205
+ "object/get",
2206
+ [
2207
+ "array/first",
2208
+ "@entity"
2209
+ ],
2210
+ "failureCount"
2211
+ ]
2212
+ },
2213
+ {
2214
+ "type": "stat-display",
2215
+ "label": "Successes",
2216
+ "value": [
2217
+ "object/get",
2218
+ [
2219
+ "array/first",
2220
+ "@entity"
2221
+ ],
2222
+ "successCount"
2223
+ ]
2224
+ }
2225
+ ]
2226
+ },
2023
2227
  {
2024
- "type": "stat-display",
2025
- "label": "Failures",
2228
+ "type": "meter",
2026
2229
  "value": [
2027
2230
  "object/get",
2028
2231
  [
@@ -2030,41 +2233,18 @@
2030
2233
  "@entity"
2031
2234
  ],
2032
2235
  "failureCount"
2033
- ]
2034
- },
2035
- {
2036
- "type": "stat-display",
2037
- "label": "Successes",
2038
- "value": [
2236
+ ],
2237
+ "min": 0,
2238
+ "max": [
2039
2239
  "object/get",
2040
2240
  [
2041
2241
  "array/first",
2042
2242
  "@entity"
2043
2243
  ],
2044
- "successCount"
2244
+ "threshold"
2045
2245
  ]
2046
2246
  }
2047
2247
  ]
2048
- },
2049
- {
2050
- "type": "meter",
2051
- "value": [
2052
- "object/get",
2053
- [
2054
- "array/first",
2055
- "@entity"
2056
- ],
2057
- "failureCount"
2058
- ],
2059
- "min": 0,
2060
- "max": [
2061
- "object/get",
2062
- [
2063
- "array/first",
2064
- "@entity"
2065
- ],
2066
- "threshold"
2067
- ]
2068
2248
  }
2069
2249
  ]
2070
2250
  }
@@ -2080,58 +2260,104 @@
2080
2260
  "render-ui",
2081
2261
  "main",
2082
2262
  {
2083
- "type": "stack",
2084
- "direction": "vertical",
2085
- "gap": "lg",
2263
+ "type": "dashboard-layout",
2264
+ "appName": "API Gateway",
2265
+ "navItems": [
2266
+ {
2267
+ "label": "Routes",
2268
+ "href": "/routes",
2269
+ "icon": "git-branch"
2270
+ },
2271
+ {
2272
+ "label": "Backends",
2273
+ "href": "/backends",
2274
+ "icon": "server"
2275
+ },
2276
+ {
2277
+ "label": "Analytics",
2278
+ "href": "/analytics",
2279
+ "icon": "bar-chart-2"
2280
+ }
2281
+ ],
2086
2282
  "children": [
2087
2283
  {
2088
2284
  "type": "stack",
2089
- "direction": "horizontal",
2090
- "gap": "md",
2091
- "align": "center",
2092
- "justify": "space-between",
2285
+ "direction": "vertical",
2286
+ "gap": "lg",
2093
2287
  "children": [
2094
2288
  {
2095
2289
  "type": "stack",
2096
2290
  "direction": "horizontal",
2097
2291
  "gap": "md",
2098
2292
  "align": "center",
2293
+ "justify": "space-between",
2099
2294
  "children": [
2100
2295
  {
2101
- "type": "icon",
2102
- "name": "alert-triangle",
2103
- "size": "lg"
2296
+ "type": "stack",
2297
+ "direction": "horizontal",
2298
+ "gap": "md",
2299
+ "align": "center",
2300
+ "children": [
2301
+ {
2302
+ "type": "icon",
2303
+ "name": "alert-triangle",
2304
+ "size": "lg"
2305
+ },
2306
+ {
2307
+ "type": "typography",
2308
+ "content": "Backend",
2309
+ "variant": "h2"
2310
+ }
2311
+ ]
2104
2312
  },
2105
2313
  {
2106
- "type": "typography",
2107
- "content": "Backend",
2108
- "variant": "h2"
2314
+ "type": "status-dot",
2315
+ "status": "error",
2316
+ "pulse": true,
2317
+ "label": "Circuit Open"
2109
2318
  }
2110
2319
  ]
2111
2320
  },
2112
2321
  {
2113
- "type": "status-dot",
2114
- "status": "error",
2115
- "pulse": true,
2116
- "label": "Circuit Open"
2117
- }
2118
- ]
2119
- },
2120
- {
2121
- "type": "divider"
2122
- },
2123
- {
2124
- "type": "alert",
2125
- "variant": "danger",
2126
- "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
2127
- },
2128
- {
2129
- "type": "simple-grid",
2130
- "columns": 2,
2131
- "children": [
2322
+ "type": "divider"
2323
+ },
2324
+ {
2325
+ "type": "alert",
2326
+ "variant": "danger",
2327
+ "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
2328
+ },
2329
+ {
2330
+ "type": "simple-grid",
2331
+ "columns": 2,
2332
+ "children": [
2333
+ {
2334
+ "type": "stat-display",
2335
+ "label": "Failures",
2336
+ "value": [
2337
+ "object/get",
2338
+ [
2339
+ "array/first",
2340
+ "@entity"
2341
+ ],
2342
+ "failureCount"
2343
+ ]
2344
+ },
2345
+ {
2346
+ "type": "stat-display",
2347
+ "label": "Successes",
2348
+ "value": [
2349
+ "object/get",
2350
+ [
2351
+ "array/first",
2352
+ "@entity"
2353
+ ],
2354
+ "successCount"
2355
+ ]
2356
+ }
2357
+ ]
2358
+ },
2132
2359
  {
2133
- "type": "stat-display",
2134
- "label": "Failures",
2360
+ "type": "meter",
2135
2361
  "value": [
2136
2362
  "object/get",
2137
2363
  [
@@ -2139,48 +2365,25 @@
2139
2365
  "@entity"
2140
2366
  ],
2141
2367
  "failureCount"
2142
- ]
2143
- },
2144
- {
2145
- "type": "stat-display",
2146
- "label": "Successes",
2147
- "value": [
2368
+ ],
2369
+ "min": 0,
2370
+ "max": [
2148
2371
  "object/get",
2149
2372
  [
2150
2373
  "array/first",
2151
2374
  "@entity"
2152
2375
  ],
2153
- "successCount"
2376
+ "threshold"
2154
2377
  ]
2378
+ },
2379
+ {
2380
+ "type": "button",
2381
+ "label": "Reset",
2382
+ "event": "RESET",
2383
+ "variant": "ghost",
2384
+ "icon": "rotate-ccw"
2155
2385
  }
2156
2386
  ]
2157
- },
2158
- {
2159
- "type": "meter",
2160
- "value": [
2161
- "object/get",
2162
- [
2163
- "array/first",
2164
- "@entity"
2165
- ],
2166
- "failureCount"
2167
- ],
2168
- "min": 0,
2169
- "max": [
2170
- "object/get",
2171
- [
2172
- "array/first",
2173
- "@entity"
2174
- ],
2175
- "threshold"
2176
- ]
2177
- },
2178
- {
2179
- "type": "button",
2180
- "label": "Reset",
2181
- "event": "RESET",
2182
- "variant": "ghost",
2183
- "icon": "rotate-ccw"
2184
2387
  }
2185
2388
  ]
2186
2389
  }
@@ -2196,58 +2399,104 @@
2196
2399
  "render-ui",
2197
2400
  "main",
2198
2401
  {
2199
- "type": "stack",
2200
- "direction": "vertical",
2201
- "gap": "lg",
2402
+ "type": "dashboard-layout",
2403
+ "appName": "API Gateway",
2404
+ "navItems": [
2405
+ {
2406
+ "label": "Routes",
2407
+ "href": "/routes",
2408
+ "icon": "git-branch"
2409
+ },
2410
+ {
2411
+ "label": "Backends",
2412
+ "href": "/backends",
2413
+ "icon": "server"
2414
+ },
2415
+ {
2416
+ "label": "Analytics",
2417
+ "href": "/analytics",
2418
+ "icon": "bar-chart-2"
2419
+ }
2420
+ ],
2202
2421
  "children": [
2203
2422
  {
2204
2423
  "type": "stack",
2205
- "direction": "horizontal",
2206
- "gap": "md",
2207
- "align": "center",
2208
- "justify": "space-between",
2424
+ "direction": "vertical",
2425
+ "gap": "lg",
2209
2426
  "children": [
2210
2427
  {
2211
2428
  "type": "stack",
2212
2429
  "direction": "horizontal",
2213
2430
  "gap": "md",
2214
2431
  "align": "center",
2432
+ "justify": "space-between",
2215
2433
  "children": [
2216
2434
  {
2217
- "type": "icon",
2218
- "name": "server",
2219
- "size": "lg"
2435
+ "type": "stack",
2436
+ "direction": "horizontal",
2437
+ "gap": "md",
2438
+ "align": "center",
2439
+ "children": [
2440
+ {
2441
+ "type": "icon",
2442
+ "name": "server",
2443
+ "size": "lg"
2444
+ },
2445
+ {
2446
+ "type": "typography",
2447
+ "content": "Backend",
2448
+ "variant": "h2"
2449
+ }
2450
+ ]
2220
2451
  },
2221
2452
  {
2222
- "type": "typography",
2223
- "content": "Backend",
2224
- "variant": "h2"
2453
+ "type": "status-dot",
2454
+ "status": "success",
2455
+ "pulse": false,
2456
+ "label": "Circuit Closed"
2225
2457
  }
2226
2458
  ]
2227
2459
  },
2228
2460
  {
2229
- "type": "status-dot",
2230
- "status": "success",
2231
- "pulse": false,
2232
- "label": "Circuit Closed"
2233
- }
2234
- ]
2235
- },
2236
- {
2237
- "type": "divider"
2238
- },
2239
- {
2240
- "type": "alert",
2241
- "variant": "success",
2242
- "message": "Service is healthy. All requests are being processed."
2243
- },
2244
- {
2245
- "type": "simple-grid",
2246
- "columns": 2,
2247
- "children": [
2461
+ "type": "divider"
2462
+ },
2248
2463
  {
2249
- "type": "stat-display",
2250
- "label": "Failures",
2464
+ "type": "alert",
2465
+ "variant": "success",
2466
+ "message": "Service is healthy. All requests are being processed."
2467
+ },
2468
+ {
2469
+ "type": "simple-grid",
2470
+ "columns": 2,
2471
+ "children": [
2472
+ {
2473
+ "type": "stat-display",
2474
+ "label": "Failures",
2475
+ "value": [
2476
+ "object/get",
2477
+ [
2478
+ "array/first",
2479
+ "@entity"
2480
+ ],
2481
+ "failureCount"
2482
+ ]
2483
+ },
2484
+ {
2485
+ "type": "stat-display",
2486
+ "label": "Successes",
2487
+ "value": [
2488
+ "object/get",
2489
+ [
2490
+ "array/first",
2491
+ "@entity"
2492
+ ],
2493
+ "successCount"
2494
+ ]
2495
+ }
2496
+ ]
2497
+ },
2498
+ {
2499
+ "type": "meter",
2251
2500
  "value": [
2252
2501
  "object/get",
2253
2502
  [
@@ -2255,41 +2504,18 @@
2255
2504
  "@entity"
2256
2505
  ],
2257
2506
  "failureCount"
2258
- ]
2259
- },
2260
- {
2261
- "type": "stat-display",
2262
- "label": "Successes",
2263
- "value": [
2507
+ ],
2508
+ "min": 0,
2509
+ "max": [
2264
2510
  "object/get",
2265
2511
  [
2266
2512
  "array/first",
2267
2513
  "@entity"
2268
2514
  ],
2269
- "successCount"
2515
+ "threshold"
2270
2516
  ]
2271
2517
  }
2272
2518
  ]
2273
- },
2274
- {
2275
- "type": "meter",
2276
- "value": [
2277
- "object/get",
2278
- [
2279
- "array/first",
2280
- "@entity"
2281
- ],
2282
- "failureCount"
2283
- ],
2284
- "min": 0,
2285
- "max": [
2286
- "object/get",
2287
- [
2288
- "array/first",
2289
- "@entity"
2290
- ],
2291
- "threshold"
2292
- ]
2293
2519
  }
2294
2520
  ]
2295
2521
  }
@@ -2393,111 +2619,267 @@
2393
2619
  "render-ui",
2394
2620
  "main",
2395
2621
  {
2396
- "type": "stack",
2397
- "direction": "vertical",
2398
- "gap": "lg",
2399
- "children": [
2622
+ "type": "dashboard-layout",
2623
+ "appName": "API Gateway",
2624
+ "navItems": [
2400
2625
  {
2401
- "type": "stack",
2402
- "direction": "horizontal",
2403
- "gap": "md",
2404
- "justify": "space-between",
2405
- "children": [
2406
- {
2407
- "type": "stack",
2408
- "direction": "horizontal",
2409
- "gap": "md",
2410
- "children": [
2411
- {
2412
- "type": "icon",
2413
- "name": "bar-chart-2",
2414
- "size": "lg"
2415
- },
2416
- {
2417
- "type": "typography",
2418
- "content": "Analytics",
2419
- "variant": "h2"
2420
- }
2421
- ]
2422
- },
2423
- {
2424
- "type": "button",
2425
- "label": "Refresh",
2426
- "event": "REFRESH",
2427
- "variant": "secondary",
2428
- "icon": "refresh-cw"
2429
- }
2430
- ]
2626
+ "label": "Routes",
2627
+ "href": "/routes",
2628
+ "icon": "git-branch"
2431
2629
  },
2432
2630
  {
2433
- "type": "divider"
2631
+ "label": "Backends",
2632
+ "href": "/backends",
2633
+ "icon": "server"
2434
2634
  },
2435
2635
  {
2436
- "type": "simple-grid",
2437
- "columns": 3,
2636
+ "label": "Analytics",
2637
+ "href": "/analytics",
2638
+ "icon": "bar-chart-2"
2639
+ }
2640
+ ],
2641
+ "children": [
2642
+ {
2643
+ "type": "scaled-diagram",
2438
2644
  "children": [
2439
2645
  {
2440
- "type": "stat-display",
2441
- "label": "TotalRequests",
2442
- "value": [
2443
- "object/get",
2444
- [
2445
- "array/first",
2446
- "@entity"
2447
- ],
2448
- "totalRequests"
2449
- ]
2450
- },
2451
- {
2452
- "type": "stat-display",
2453
- "label": "ErrorRate",
2454
- "value": [
2455
- "object/get",
2456
- [
2457
- "array/first",
2458
- "@entity"
2459
- ],
2460
- "errorRate"
2461
- ]
2462
- },
2463
- {
2464
- "type": "stat-display",
2465
- "label": "AvgLatency",
2466
- "value": [
2467
- "object/get",
2468
- [
2469
- "array/first",
2470
- "@entity"
2471
- ],
2472
- "avgLatency"
2473
- ]
2474
- },
2475
- {
2476
- "type": "card",
2646
+ "type": "stack",
2647
+ "direction": "vertical",
2648
+ "gap": "lg",
2477
2649
  "children": [
2650
+ {
2651
+ "type": "breadcrumb",
2652
+ "items": [
2653
+ {
2654
+ "label": "Home",
2655
+ "href": "/"
2656
+ },
2657
+ {
2658
+ "label": "Analytics"
2659
+ }
2660
+ ]
2661
+ },
2478
2662
  {
2479
2663
  "type": "stack",
2480
- "direction": "vertical",
2481
- "gap": "sm",
2664
+ "direction": "horizontal",
2665
+ "gap": "md",
2666
+ "justify": "space-between",
2482
2667
  "children": [
2483
2668
  {
2484
- "type": "typography",
2485
- "variant": "caption",
2486
- "content": "Uptime"
2669
+ "type": "stack",
2670
+ "direction": "horizontal",
2671
+ "gap": "md",
2672
+ "children": [
2673
+ {
2674
+ "type": "icon",
2675
+ "name": "bar-chart-2",
2676
+ "size": "lg"
2677
+ },
2678
+ {
2679
+ "type": "typography",
2680
+ "content": "Analytics",
2681
+ "variant": "h2"
2682
+ }
2683
+ ]
2487
2684
  },
2488
2685
  {
2489
- "type": "typography",
2490
- "variant": "h3",
2491
- "content": [
2492
- "object/get",
2493
- [
2494
- "array/first",
2495
- "@entity"
2496
- ],
2497
- "uptime"
2686
+ "type": "button",
2687
+ "label": "Refresh",
2688
+ "event": "REFRESH",
2689
+ "variant": "secondary",
2690
+ "icon": "refresh-cw"
2691
+ }
2692
+ ]
2693
+ },
2694
+ {
2695
+ "type": "divider"
2696
+ },
2697
+ {
2698
+ "type": "box",
2699
+ "padding": "md",
2700
+ "children": [
2701
+ {
2702
+ "type": "simple-grid",
2703
+ "columns": 3,
2704
+ "children": [
2705
+ {
2706
+ "type": "stat-display",
2707
+ "label": "TotalRequests",
2708
+ "value": [
2709
+ "object/get",
2710
+ [
2711
+ "array/first",
2712
+ "@entity"
2713
+ ],
2714
+ "totalRequests"
2715
+ ]
2716
+ },
2717
+ {
2718
+ "type": "stat-display",
2719
+ "label": "ErrorRate",
2720
+ "value": [
2721
+ "object/get",
2722
+ [
2723
+ "array/first",
2724
+ "@entity"
2725
+ ],
2726
+ "errorRate"
2727
+ ]
2728
+ },
2729
+ {
2730
+ "type": "stat-display",
2731
+ "label": "AvgLatency",
2732
+ "value": [
2733
+ "object/get",
2734
+ [
2735
+ "array/first",
2736
+ "@entity"
2737
+ ],
2738
+ "avgLatency"
2739
+ ]
2740
+ },
2741
+ {
2742
+ "type": "card",
2743
+ "children": [
2744
+ {
2745
+ "type": "stack",
2746
+ "direction": "vertical",
2747
+ "gap": "sm",
2748
+ "children": [
2749
+ {
2750
+ "type": "typography",
2751
+ "variant": "caption",
2752
+ "content": "Uptime"
2753
+ },
2754
+ {
2755
+ "type": "typography",
2756
+ "variant": "h3",
2757
+ "content": [
2758
+ "object/get",
2759
+ [
2760
+ "array/first",
2761
+ "@entity"
2762
+ ],
2763
+ "uptime"
2764
+ ]
2765
+ }
2766
+ ]
2767
+ }
2768
+ ]
2769
+ }
2770
+ ]
2771
+ }
2772
+ ]
2773
+ },
2774
+ {
2775
+ "type": "divider"
2776
+ },
2777
+ {
2778
+ "type": "grid",
2779
+ "columns": 2,
2780
+ "gap": "md",
2781
+ "children": [
2782
+ {
2783
+ "type": "card",
2784
+ "children": [
2785
+ {
2786
+ "type": "typography",
2787
+ "variant": "caption",
2788
+ "content": "Chart View"
2789
+ }
2790
+ ]
2791
+ },
2792
+ {
2793
+ "type": "card",
2794
+ "children": [
2795
+ {
2796
+ "type": "typography",
2797
+ "variant": "caption",
2798
+ "content": "Graph View"
2799
+ }
2498
2800
  ]
2499
2801
  }
2500
2802
  ]
2803
+ },
2804
+ {
2805
+ "type": "line-chart",
2806
+ "data": [
2807
+ {
2808
+ "date": "Jan",
2809
+ "value": 12
2810
+ },
2811
+ {
2812
+ "date": "Feb",
2813
+ "value": 19
2814
+ },
2815
+ {
2816
+ "date": "Mar",
2817
+ "value": 15
2818
+ },
2819
+ {
2820
+ "date": "Apr",
2821
+ "value": 25
2822
+ },
2823
+ {
2824
+ "date": "May",
2825
+ "value": 22
2826
+ },
2827
+ {
2828
+ "date": "Jun",
2829
+ "value": 30
2830
+ }
2831
+ ],
2832
+ "xKey": "date",
2833
+ "yKey": "value",
2834
+ "title": "Trend"
2835
+ },
2836
+ {
2837
+ "type": "chart-legend",
2838
+ "items": [
2839
+ {
2840
+ "label": "Current",
2841
+ "color": "primary"
2842
+ },
2843
+ {
2844
+ "label": "Previous",
2845
+ "color": "muted"
2846
+ }
2847
+ ]
2848
+ },
2849
+ {
2850
+ "type": "graph-view",
2851
+ "nodes": [
2852
+ {
2853
+ "id": "a",
2854
+ "label": "Start",
2855
+ "x": 50,
2856
+ "y": 100
2857
+ },
2858
+ {
2859
+ "id": "b",
2860
+ "label": "Process",
2861
+ "x": 200,
2862
+ "y": 50
2863
+ },
2864
+ {
2865
+ "id": "c",
2866
+ "label": "End",
2867
+ "x": 350,
2868
+ "y": 100
2869
+ }
2870
+ ],
2871
+ "edges": [
2872
+ {
2873
+ "from": "a",
2874
+ "to": "b"
2875
+ },
2876
+ {
2877
+ "from": "b",
2878
+ "to": "c"
2879
+ }
2880
+ ],
2881
+ "width": 400,
2882
+ "height": 200
2501
2883
  }
2502
2884
  ]
2503
2885
  }
@@ -2521,111 +2903,267 @@
2521
2903
  "render-ui",
2522
2904
  "main",
2523
2905
  {
2524
- "type": "stack",
2525
- "direction": "vertical",
2526
- "gap": "lg",
2527
- "children": [
2906
+ "type": "dashboard-layout",
2907
+ "appName": "API Gateway",
2908
+ "navItems": [
2528
2909
  {
2529
- "type": "stack",
2530
- "direction": "horizontal",
2531
- "gap": "md",
2532
- "justify": "space-between",
2533
- "children": [
2534
- {
2535
- "type": "stack",
2536
- "direction": "horizontal",
2537
- "gap": "md",
2538
- "children": [
2539
- {
2540
- "type": "icon",
2541
- "name": "bar-chart-2",
2542
- "size": "lg"
2543
- },
2544
- {
2545
- "type": "typography",
2546
- "content": "Analytics",
2547
- "variant": "h2"
2548
- }
2549
- ]
2550
- },
2551
- {
2552
- "type": "button",
2553
- "label": "Refresh",
2554
- "event": "REFRESH",
2555
- "variant": "secondary",
2556
- "icon": "refresh-cw"
2557
- }
2558
- ]
2910
+ "label": "Routes",
2911
+ "href": "/routes",
2912
+ "icon": "git-branch"
2559
2913
  },
2560
2914
  {
2561
- "type": "divider"
2915
+ "label": "Backends",
2916
+ "href": "/backends",
2917
+ "icon": "server"
2562
2918
  },
2563
2919
  {
2564
- "type": "simple-grid",
2565
- "columns": 3,
2920
+ "label": "Analytics",
2921
+ "href": "/analytics",
2922
+ "icon": "bar-chart-2"
2923
+ }
2924
+ ],
2925
+ "children": [
2926
+ {
2927
+ "type": "scaled-diagram",
2566
2928
  "children": [
2567
2929
  {
2568
- "type": "stat-display",
2569
- "label": "TotalRequests",
2570
- "value": [
2571
- "object/get",
2572
- [
2573
- "array/first",
2574
- "@entity"
2575
- ],
2576
- "totalRequests"
2577
- ]
2578
- },
2579
- {
2580
- "type": "stat-display",
2581
- "label": "ErrorRate",
2582
- "value": [
2583
- "object/get",
2584
- [
2585
- "array/first",
2586
- "@entity"
2587
- ],
2588
- "errorRate"
2589
- ]
2590
- },
2591
- {
2592
- "type": "stat-display",
2593
- "label": "AvgLatency",
2594
- "value": [
2595
- "object/get",
2596
- [
2597
- "array/first",
2598
- "@entity"
2599
- ],
2600
- "avgLatency"
2601
- ]
2602
- },
2603
- {
2604
- "type": "card",
2930
+ "type": "stack",
2931
+ "direction": "vertical",
2932
+ "gap": "lg",
2605
2933
  "children": [
2606
2934
  {
2607
- "type": "stack",
2608
- "direction": "vertical",
2609
- "gap": "sm",
2935
+ "type": "breadcrumb",
2936
+ "items": [
2937
+ {
2938
+ "label": "Home",
2939
+ "href": "/"
2940
+ },
2941
+ {
2942
+ "label": "Analytics"
2943
+ }
2944
+ ]
2945
+ },
2946
+ {
2947
+ "type": "stack",
2948
+ "direction": "horizontal",
2949
+ "gap": "md",
2950
+ "justify": "space-between",
2610
2951
  "children": [
2611
2952
  {
2612
- "type": "typography",
2613
- "variant": "caption",
2614
- "content": "Uptime"
2953
+ "type": "stack",
2954
+ "direction": "horizontal",
2955
+ "gap": "md",
2956
+ "children": [
2957
+ {
2958
+ "type": "icon",
2959
+ "name": "bar-chart-2",
2960
+ "size": "lg"
2961
+ },
2962
+ {
2963
+ "type": "typography",
2964
+ "content": "Analytics",
2965
+ "variant": "h2"
2966
+ }
2967
+ ]
2615
2968
  },
2616
2969
  {
2617
- "type": "typography",
2618
- "variant": "h3",
2619
- "content": [
2620
- "object/get",
2621
- [
2622
- "array/first",
2623
- "@entity"
2624
- ],
2625
- "uptime"
2970
+ "type": "button",
2971
+ "label": "Refresh",
2972
+ "event": "REFRESH",
2973
+ "variant": "secondary",
2974
+ "icon": "refresh-cw"
2975
+ }
2976
+ ]
2977
+ },
2978
+ {
2979
+ "type": "divider"
2980
+ },
2981
+ {
2982
+ "type": "box",
2983
+ "padding": "md",
2984
+ "children": [
2985
+ {
2986
+ "type": "simple-grid",
2987
+ "columns": 3,
2988
+ "children": [
2989
+ {
2990
+ "type": "stat-display",
2991
+ "label": "TotalRequests",
2992
+ "value": [
2993
+ "object/get",
2994
+ [
2995
+ "array/first",
2996
+ "@entity"
2997
+ ],
2998
+ "totalRequests"
2999
+ ]
3000
+ },
3001
+ {
3002
+ "type": "stat-display",
3003
+ "label": "ErrorRate",
3004
+ "value": [
3005
+ "object/get",
3006
+ [
3007
+ "array/first",
3008
+ "@entity"
3009
+ ],
3010
+ "errorRate"
3011
+ ]
3012
+ },
3013
+ {
3014
+ "type": "stat-display",
3015
+ "label": "AvgLatency",
3016
+ "value": [
3017
+ "object/get",
3018
+ [
3019
+ "array/first",
3020
+ "@entity"
3021
+ ],
3022
+ "avgLatency"
3023
+ ]
3024
+ },
3025
+ {
3026
+ "type": "card",
3027
+ "children": [
3028
+ {
3029
+ "type": "stack",
3030
+ "direction": "vertical",
3031
+ "gap": "sm",
3032
+ "children": [
3033
+ {
3034
+ "type": "typography",
3035
+ "variant": "caption",
3036
+ "content": "Uptime"
3037
+ },
3038
+ {
3039
+ "type": "typography",
3040
+ "variant": "h3",
3041
+ "content": [
3042
+ "object/get",
3043
+ [
3044
+ "array/first",
3045
+ "@entity"
3046
+ ],
3047
+ "uptime"
3048
+ ]
3049
+ }
3050
+ ]
3051
+ }
3052
+ ]
3053
+ }
3054
+ ]
3055
+ }
3056
+ ]
3057
+ },
3058
+ {
3059
+ "type": "divider"
3060
+ },
3061
+ {
3062
+ "type": "grid",
3063
+ "columns": 2,
3064
+ "gap": "md",
3065
+ "children": [
3066
+ {
3067
+ "type": "card",
3068
+ "children": [
3069
+ {
3070
+ "type": "typography",
3071
+ "variant": "caption",
3072
+ "content": "Chart View"
3073
+ }
3074
+ ]
3075
+ },
3076
+ {
3077
+ "type": "card",
3078
+ "children": [
3079
+ {
3080
+ "type": "typography",
3081
+ "variant": "caption",
3082
+ "content": "Graph View"
3083
+ }
2626
3084
  ]
2627
3085
  }
2628
3086
  ]
3087
+ },
3088
+ {
3089
+ "type": "line-chart",
3090
+ "data": [
3091
+ {
3092
+ "date": "Jan",
3093
+ "value": 12
3094
+ },
3095
+ {
3096
+ "date": "Feb",
3097
+ "value": 19
3098
+ },
3099
+ {
3100
+ "date": "Mar",
3101
+ "value": 15
3102
+ },
3103
+ {
3104
+ "date": "Apr",
3105
+ "value": 25
3106
+ },
3107
+ {
3108
+ "date": "May",
3109
+ "value": 22
3110
+ },
3111
+ {
3112
+ "date": "Jun",
3113
+ "value": 30
3114
+ }
3115
+ ],
3116
+ "xKey": "date",
3117
+ "yKey": "value",
3118
+ "title": "Trend"
3119
+ },
3120
+ {
3121
+ "type": "chart-legend",
3122
+ "items": [
3123
+ {
3124
+ "label": "Current",
3125
+ "color": "primary"
3126
+ },
3127
+ {
3128
+ "label": "Previous",
3129
+ "color": "muted"
3130
+ }
3131
+ ]
3132
+ },
3133
+ {
3134
+ "type": "graph-view",
3135
+ "nodes": [
3136
+ {
3137
+ "id": "a",
3138
+ "label": "Start",
3139
+ "x": 50,
3140
+ "y": 100
3141
+ },
3142
+ {
3143
+ "id": "b",
3144
+ "label": "Process",
3145
+ "x": 200,
3146
+ "y": 50
3147
+ },
3148
+ {
3149
+ "id": "c",
3150
+ "label": "End",
3151
+ "x": 350,
3152
+ "y": 100
3153
+ }
3154
+ ],
3155
+ "edges": [
3156
+ {
3157
+ "from": "a",
3158
+ "to": "b"
3159
+ },
3160
+ {
3161
+ "from": "b",
3162
+ "to": "c"
3163
+ }
3164
+ ],
3165
+ "width": 400,
3166
+ "height": 200
2629
3167
  }
2630
3168
  ]
2631
3169
  }
@@ -2649,111 +3187,267 @@
2649
3187
  "render-ui",
2650
3188
  "main",
2651
3189
  {
2652
- "type": "stack",
2653
- "direction": "vertical",
2654
- "gap": "lg",
2655
- "children": [
3190
+ "type": "dashboard-layout",
3191
+ "appName": "API Gateway",
3192
+ "navItems": [
2656
3193
  {
2657
- "type": "stack",
2658
- "direction": "horizontal",
2659
- "gap": "md",
2660
- "justify": "space-between",
2661
- "children": [
2662
- {
2663
- "type": "stack",
2664
- "direction": "horizontal",
2665
- "gap": "md",
2666
- "children": [
2667
- {
2668
- "type": "icon",
2669
- "name": "bar-chart-2",
2670
- "size": "lg"
2671
- },
2672
- {
2673
- "type": "typography",
2674
- "content": "Analytics",
2675
- "variant": "h2"
2676
- }
2677
- ]
2678
- },
2679
- {
2680
- "type": "button",
2681
- "label": "Refresh",
2682
- "event": "REFRESH",
2683
- "variant": "secondary",
2684
- "icon": "refresh-cw"
2685
- }
2686
- ]
3194
+ "label": "Routes",
3195
+ "href": "/routes",
3196
+ "icon": "git-branch"
2687
3197
  },
2688
3198
  {
2689
- "type": "divider"
3199
+ "label": "Backends",
3200
+ "href": "/backends",
3201
+ "icon": "server"
2690
3202
  },
2691
3203
  {
2692
- "type": "simple-grid",
2693
- "columns": 3,
3204
+ "label": "Analytics",
3205
+ "href": "/analytics",
3206
+ "icon": "bar-chart-2"
3207
+ }
3208
+ ],
3209
+ "children": [
3210
+ {
3211
+ "type": "scaled-diagram",
2694
3212
  "children": [
2695
3213
  {
2696
- "type": "stat-display",
2697
- "label": "TotalRequests",
2698
- "value": [
2699
- "object/get",
2700
- [
2701
- "array/first",
2702
- "@entity"
2703
- ],
2704
- "totalRequests"
2705
- ]
2706
- },
2707
- {
2708
- "type": "stat-display",
2709
- "label": "ErrorRate",
2710
- "value": [
2711
- "object/get",
2712
- [
2713
- "array/first",
2714
- "@entity"
2715
- ],
2716
- "errorRate"
2717
- ]
2718
- },
2719
- {
2720
- "type": "stat-display",
2721
- "label": "AvgLatency",
2722
- "value": [
2723
- "object/get",
2724
- [
2725
- "array/first",
2726
- "@entity"
2727
- ],
2728
- "avgLatency"
2729
- ]
2730
- },
2731
- {
2732
- "type": "card",
3214
+ "type": "stack",
3215
+ "direction": "vertical",
3216
+ "gap": "lg",
2733
3217
  "children": [
3218
+ {
3219
+ "type": "breadcrumb",
3220
+ "items": [
3221
+ {
3222
+ "label": "Home",
3223
+ "href": "/"
3224
+ },
3225
+ {
3226
+ "label": "Analytics"
3227
+ }
3228
+ ]
3229
+ },
2734
3230
  {
2735
3231
  "type": "stack",
2736
- "direction": "vertical",
2737
- "gap": "sm",
3232
+ "direction": "horizontal",
3233
+ "gap": "md",
3234
+ "justify": "space-between",
2738
3235
  "children": [
2739
3236
  {
2740
- "type": "typography",
2741
- "variant": "caption",
2742
- "content": "Uptime"
3237
+ "type": "stack",
3238
+ "direction": "horizontal",
3239
+ "gap": "md",
3240
+ "children": [
3241
+ {
3242
+ "type": "icon",
3243
+ "name": "bar-chart-2",
3244
+ "size": "lg"
3245
+ },
3246
+ {
3247
+ "type": "typography",
3248
+ "content": "Analytics",
3249
+ "variant": "h2"
3250
+ }
3251
+ ]
2743
3252
  },
2744
3253
  {
2745
- "type": "typography",
2746
- "variant": "h3",
2747
- "content": [
2748
- "object/get",
2749
- [
2750
- "array/first",
2751
- "@entity"
2752
- ],
2753
- "uptime"
3254
+ "type": "button",
3255
+ "label": "Refresh",
3256
+ "event": "REFRESH",
3257
+ "variant": "secondary",
3258
+ "icon": "refresh-cw"
3259
+ }
3260
+ ]
3261
+ },
3262
+ {
3263
+ "type": "divider"
3264
+ },
3265
+ {
3266
+ "type": "box",
3267
+ "padding": "md",
3268
+ "children": [
3269
+ {
3270
+ "type": "simple-grid",
3271
+ "columns": 3,
3272
+ "children": [
3273
+ {
3274
+ "type": "stat-display",
3275
+ "label": "TotalRequests",
3276
+ "value": [
3277
+ "object/get",
3278
+ [
3279
+ "array/first",
3280
+ "@entity"
3281
+ ],
3282
+ "totalRequests"
3283
+ ]
3284
+ },
3285
+ {
3286
+ "type": "stat-display",
3287
+ "label": "ErrorRate",
3288
+ "value": [
3289
+ "object/get",
3290
+ [
3291
+ "array/first",
3292
+ "@entity"
3293
+ ],
3294
+ "errorRate"
3295
+ ]
3296
+ },
3297
+ {
3298
+ "type": "stat-display",
3299
+ "label": "AvgLatency",
3300
+ "value": [
3301
+ "object/get",
3302
+ [
3303
+ "array/first",
3304
+ "@entity"
3305
+ ],
3306
+ "avgLatency"
3307
+ ]
3308
+ },
3309
+ {
3310
+ "type": "card",
3311
+ "children": [
3312
+ {
3313
+ "type": "stack",
3314
+ "direction": "vertical",
3315
+ "gap": "sm",
3316
+ "children": [
3317
+ {
3318
+ "type": "typography",
3319
+ "variant": "caption",
3320
+ "content": "Uptime"
3321
+ },
3322
+ {
3323
+ "type": "typography",
3324
+ "variant": "h3",
3325
+ "content": [
3326
+ "object/get",
3327
+ [
3328
+ "array/first",
3329
+ "@entity"
3330
+ ],
3331
+ "uptime"
3332
+ ]
3333
+ }
3334
+ ]
3335
+ }
3336
+ ]
3337
+ }
3338
+ ]
3339
+ }
3340
+ ]
3341
+ },
3342
+ {
3343
+ "type": "divider"
3344
+ },
3345
+ {
3346
+ "type": "grid",
3347
+ "columns": 2,
3348
+ "gap": "md",
3349
+ "children": [
3350
+ {
3351
+ "type": "card",
3352
+ "children": [
3353
+ {
3354
+ "type": "typography",
3355
+ "variant": "caption",
3356
+ "content": "Chart View"
3357
+ }
3358
+ ]
3359
+ },
3360
+ {
3361
+ "type": "card",
3362
+ "children": [
3363
+ {
3364
+ "type": "typography",
3365
+ "variant": "caption",
3366
+ "content": "Graph View"
3367
+ }
2754
3368
  ]
2755
3369
  }
2756
3370
  ]
3371
+ },
3372
+ {
3373
+ "type": "line-chart",
3374
+ "data": [
3375
+ {
3376
+ "date": "Jan",
3377
+ "value": 12
3378
+ },
3379
+ {
3380
+ "date": "Feb",
3381
+ "value": 19
3382
+ },
3383
+ {
3384
+ "date": "Mar",
3385
+ "value": 15
3386
+ },
3387
+ {
3388
+ "date": "Apr",
3389
+ "value": 25
3390
+ },
3391
+ {
3392
+ "date": "May",
3393
+ "value": 22
3394
+ },
3395
+ {
3396
+ "date": "Jun",
3397
+ "value": 30
3398
+ }
3399
+ ],
3400
+ "xKey": "date",
3401
+ "yKey": "value",
3402
+ "title": "Trend"
3403
+ },
3404
+ {
3405
+ "type": "chart-legend",
3406
+ "items": [
3407
+ {
3408
+ "label": "Current",
3409
+ "color": "primary"
3410
+ },
3411
+ {
3412
+ "label": "Previous",
3413
+ "color": "muted"
3414
+ }
3415
+ ]
3416
+ },
3417
+ {
3418
+ "type": "graph-view",
3419
+ "nodes": [
3420
+ {
3421
+ "id": "a",
3422
+ "label": "Start",
3423
+ "x": 50,
3424
+ "y": 100
3425
+ },
3426
+ {
3427
+ "id": "b",
3428
+ "label": "Process",
3429
+ "x": 200,
3430
+ "y": 50
3431
+ },
3432
+ {
3433
+ "id": "c",
3434
+ "label": "End",
3435
+ "x": 350,
3436
+ "y": 100
3437
+ }
3438
+ ],
3439
+ "edges": [
3440
+ {
3441
+ "from": "a",
3442
+ "to": "b"
3443
+ },
3444
+ {
3445
+ "from": "b",
3446
+ "to": "c"
3447
+ }
3448
+ ],
3449
+ "width": 400,
3450
+ "height": 200
2757
3451
  }
2758
3452
  ]
2759
3453
  }
@@ -2777,111 +3471,267 @@
2777
3471
  "render-ui",
2778
3472
  "main",
2779
3473
  {
2780
- "type": "stack",
2781
- "direction": "vertical",
2782
- "gap": "lg",
3474
+ "type": "dashboard-layout",
3475
+ "appName": "API Gateway",
3476
+ "navItems": [
3477
+ {
3478
+ "label": "Routes",
3479
+ "href": "/routes",
3480
+ "icon": "git-branch"
3481
+ },
3482
+ {
3483
+ "label": "Backends",
3484
+ "href": "/backends",
3485
+ "icon": "server"
3486
+ },
3487
+ {
3488
+ "label": "Analytics",
3489
+ "href": "/analytics",
3490
+ "icon": "bar-chart-2"
3491
+ }
3492
+ ],
2783
3493
  "children": [
2784
3494
  {
2785
- "type": "stack",
2786
- "direction": "horizontal",
2787
- "gap": "md",
2788
- "justify": "space-between",
3495
+ "type": "scaled-diagram",
2789
3496
  "children": [
2790
3497
  {
2791
3498
  "type": "stack",
2792
- "direction": "horizontal",
2793
- "gap": "md",
3499
+ "direction": "vertical",
3500
+ "gap": "lg",
2794
3501
  "children": [
2795
3502
  {
2796
- "type": "icon",
2797
- "name": "bar-chart-2",
2798
- "size": "lg"
2799
- },
2800
- {
2801
- "type": "typography",
2802
- "content": "Analytics",
2803
- "variant": "h2"
2804
- }
2805
- ]
2806
- },
2807
- {
2808
- "type": "button",
2809
- "label": "Refresh",
2810
- "event": "REFRESH",
2811
- "variant": "secondary",
2812
- "icon": "refresh-cw"
2813
- }
2814
- ]
2815
- },
2816
- {
2817
- "type": "divider"
2818
- },
2819
- {
2820
- "type": "simple-grid",
2821
- "columns": 3,
2822
- "children": [
2823
- {
2824
- "type": "stat-display",
2825
- "label": "TotalRequests",
2826
- "value": [
2827
- "object/get",
2828
- [
2829
- "array/first",
2830
- "@entity"
2831
- ],
2832
- "totalRequests"
2833
- ]
2834
- },
2835
- {
2836
- "type": "stat-display",
2837
- "label": "ErrorRate",
2838
- "value": [
2839
- "object/get",
2840
- [
2841
- "array/first",
2842
- "@entity"
2843
- ],
2844
- "errorRate"
2845
- ]
2846
- },
2847
- {
2848
- "type": "stat-display",
2849
- "label": "AvgLatency",
2850
- "value": [
2851
- "object/get",
2852
- [
2853
- "array/first",
2854
- "@entity"
2855
- ],
2856
- "avgLatency"
2857
- ]
2858
- },
2859
- {
2860
- "type": "card",
2861
- "children": [
3503
+ "type": "breadcrumb",
3504
+ "items": [
3505
+ {
3506
+ "label": "Home",
3507
+ "href": "/"
3508
+ },
3509
+ {
3510
+ "label": "Analytics"
3511
+ }
3512
+ ]
3513
+ },
2862
3514
  {
2863
3515
  "type": "stack",
2864
- "direction": "vertical",
2865
- "gap": "sm",
3516
+ "direction": "horizontal",
3517
+ "gap": "md",
3518
+ "justify": "space-between",
2866
3519
  "children": [
2867
3520
  {
2868
- "type": "typography",
2869
- "variant": "caption",
2870
- "content": "Uptime"
3521
+ "type": "stack",
3522
+ "direction": "horizontal",
3523
+ "gap": "md",
3524
+ "children": [
3525
+ {
3526
+ "type": "icon",
3527
+ "name": "bar-chart-2",
3528
+ "size": "lg"
3529
+ },
3530
+ {
3531
+ "type": "typography",
3532
+ "content": "Analytics",
3533
+ "variant": "h2"
3534
+ }
3535
+ ]
2871
3536
  },
2872
3537
  {
2873
- "type": "typography",
2874
- "variant": "h3",
2875
- "content": [
2876
- "object/get",
2877
- [
2878
- "array/first",
2879
- "@entity"
2880
- ],
2881
- "uptime"
3538
+ "type": "button",
3539
+ "label": "Refresh",
3540
+ "event": "REFRESH",
3541
+ "variant": "secondary",
3542
+ "icon": "refresh-cw"
3543
+ }
3544
+ ]
3545
+ },
3546
+ {
3547
+ "type": "divider"
3548
+ },
3549
+ {
3550
+ "type": "box",
3551
+ "padding": "md",
3552
+ "children": [
3553
+ {
3554
+ "type": "simple-grid",
3555
+ "columns": 3,
3556
+ "children": [
3557
+ {
3558
+ "type": "stat-display",
3559
+ "label": "TotalRequests",
3560
+ "value": [
3561
+ "object/get",
3562
+ [
3563
+ "array/first",
3564
+ "@entity"
3565
+ ],
3566
+ "totalRequests"
3567
+ ]
3568
+ },
3569
+ {
3570
+ "type": "stat-display",
3571
+ "label": "ErrorRate",
3572
+ "value": [
3573
+ "object/get",
3574
+ [
3575
+ "array/first",
3576
+ "@entity"
3577
+ ],
3578
+ "errorRate"
3579
+ ]
3580
+ },
3581
+ {
3582
+ "type": "stat-display",
3583
+ "label": "AvgLatency",
3584
+ "value": [
3585
+ "object/get",
3586
+ [
3587
+ "array/first",
3588
+ "@entity"
3589
+ ],
3590
+ "avgLatency"
3591
+ ]
3592
+ },
3593
+ {
3594
+ "type": "card",
3595
+ "children": [
3596
+ {
3597
+ "type": "stack",
3598
+ "direction": "vertical",
3599
+ "gap": "sm",
3600
+ "children": [
3601
+ {
3602
+ "type": "typography",
3603
+ "variant": "caption",
3604
+ "content": "Uptime"
3605
+ },
3606
+ {
3607
+ "type": "typography",
3608
+ "variant": "h3",
3609
+ "content": [
3610
+ "object/get",
3611
+ [
3612
+ "array/first",
3613
+ "@entity"
3614
+ ],
3615
+ "uptime"
3616
+ ]
3617
+ }
3618
+ ]
3619
+ }
3620
+ ]
3621
+ }
2882
3622
  ]
2883
3623
  }
2884
3624
  ]
3625
+ },
3626
+ {
3627
+ "type": "divider"
3628
+ },
3629
+ {
3630
+ "type": "grid",
3631
+ "columns": 2,
3632
+ "gap": "md",
3633
+ "children": [
3634
+ {
3635
+ "type": "card",
3636
+ "children": [
3637
+ {
3638
+ "type": "typography",
3639
+ "variant": "caption",
3640
+ "content": "Chart View"
3641
+ }
3642
+ ]
3643
+ },
3644
+ {
3645
+ "type": "card",
3646
+ "children": [
3647
+ {
3648
+ "type": "typography",
3649
+ "variant": "caption",
3650
+ "content": "Graph View"
3651
+ }
3652
+ ]
3653
+ }
3654
+ ]
3655
+ },
3656
+ {
3657
+ "type": "line-chart",
3658
+ "data": [
3659
+ {
3660
+ "date": "Jan",
3661
+ "value": 12
3662
+ },
3663
+ {
3664
+ "date": "Feb",
3665
+ "value": 19
3666
+ },
3667
+ {
3668
+ "date": "Mar",
3669
+ "value": 15
3670
+ },
3671
+ {
3672
+ "date": "Apr",
3673
+ "value": 25
3674
+ },
3675
+ {
3676
+ "date": "May",
3677
+ "value": 22
3678
+ },
3679
+ {
3680
+ "date": "Jun",
3681
+ "value": 30
3682
+ }
3683
+ ],
3684
+ "xKey": "date",
3685
+ "yKey": "value",
3686
+ "title": "Trend"
3687
+ },
3688
+ {
3689
+ "type": "chart-legend",
3690
+ "items": [
3691
+ {
3692
+ "label": "Current",
3693
+ "color": "primary"
3694
+ },
3695
+ {
3696
+ "label": "Previous",
3697
+ "color": "muted"
3698
+ }
3699
+ ]
3700
+ },
3701
+ {
3702
+ "type": "graph-view",
3703
+ "nodes": [
3704
+ {
3705
+ "id": "a",
3706
+ "label": "Start",
3707
+ "x": 50,
3708
+ "y": 100
3709
+ },
3710
+ {
3711
+ "id": "b",
3712
+ "label": "Process",
3713
+ "x": 200,
3714
+ "y": 50
3715
+ },
3716
+ {
3717
+ "id": "c",
3718
+ "label": "End",
3719
+ "x": 350,
3720
+ "y": 100
3721
+ }
3722
+ ],
3723
+ "edges": [
3724
+ {
3725
+ "from": "a",
3726
+ "to": "b"
3727
+ },
3728
+ {
3729
+ "from": "b",
3730
+ "to": "c"
3731
+ }
3732
+ ],
3733
+ "width": 400,
3734
+ "height": 200
2885
3735
  }
2886
3736
  ]
2887
3737
  }
@@ -2905,111 +3755,267 @@
2905
3755
  "render-ui",
2906
3756
  "main",
2907
3757
  {
2908
- "type": "stack",
2909
- "direction": "vertical",
2910
- "gap": "lg",
2911
- "children": [
3758
+ "type": "dashboard-layout",
3759
+ "appName": "API Gateway",
3760
+ "navItems": [
2912
3761
  {
2913
- "type": "stack",
2914
- "direction": "horizontal",
2915
- "gap": "md",
2916
- "justify": "space-between",
2917
- "children": [
2918
- {
2919
- "type": "stack",
2920
- "direction": "horizontal",
2921
- "gap": "md",
2922
- "children": [
2923
- {
2924
- "type": "icon",
2925
- "name": "bar-chart-2",
2926
- "size": "lg"
2927
- },
2928
- {
2929
- "type": "typography",
2930
- "content": "Analytics",
2931
- "variant": "h2"
2932
- }
2933
- ]
2934
- },
2935
- {
2936
- "type": "button",
2937
- "label": "Refresh",
2938
- "event": "REFRESH",
2939
- "variant": "secondary",
2940
- "icon": "refresh-cw"
2941
- }
2942
- ]
3762
+ "label": "Routes",
3763
+ "href": "/routes",
3764
+ "icon": "git-branch"
2943
3765
  },
2944
3766
  {
2945
- "type": "divider"
3767
+ "label": "Backends",
3768
+ "href": "/backends",
3769
+ "icon": "server"
2946
3770
  },
2947
3771
  {
2948
- "type": "simple-grid",
2949
- "columns": 3,
3772
+ "label": "Analytics",
3773
+ "href": "/analytics",
3774
+ "icon": "bar-chart-2"
3775
+ }
3776
+ ],
3777
+ "children": [
3778
+ {
3779
+ "type": "scaled-diagram",
2950
3780
  "children": [
2951
3781
  {
2952
- "type": "stat-display",
2953
- "label": "TotalRequests",
2954
- "value": [
2955
- "object/get",
2956
- [
2957
- "array/first",
2958
- "@entity"
2959
- ],
2960
- "totalRequests"
2961
- ]
2962
- },
2963
- {
2964
- "type": "stat-display",
2965
- "label": "ErrorRate",
2966
- "value": [
2967
- "object/get",
2968
- [
2969
- "array/first",
2970
- "@entity"
2971
- ],
2972
- "errorRate"
2973
- ]
2974
- },
2975
- {
2976
- "type": "stat-display",
2977
- "label": "AvgLatency",
2978
- "value": [
2979
- "object/get",
2980
- [
2981
- "array/first",
2982
- "@entity"
2983
- ],
2984
- "avgLatency"
2985
- ]
2986
- },
2987
- {
2988
- "type": "card",
3782
+ "type": "stack",
3783
+ "direction": "vertical",
3784
+ "gap": "lg",
2989
3785
  "children": [
3786
+ {
3787
+ "type": "breadcrumb",
3788
+ "items": [
3789
+ {
3790
+ "label": "Home",
3791
+ "href": "/"
3792
+ },
3793
+ {
3794
+ "label": "Analytics"
3795
+ }
3796
+ ]
3797
+ },
2990
3798
  {
2991
3799
  "type": "stack",
2992
- "direction": "vertical",
2993
- "gap": "sm",
3800
+ "direction": "horizontal",
3801
+ "gap": "md",
3802
+ "justify": "space-between",
2994
3803
  "children": [
2995
3804
  {
2996
- "type": "typography",
2997
- "variant": "caption",
2998
- "content": "Uptime"
3805
+ "type": "stack",
3806
+ "direction": "horizontal",
3807
+ "gap": "md",
3808
+ "children": [
3809
+ {
3810
+ "type": "icon",
3811
+ "name": "bar-chart-2",
3812
+ "size": "lg"
3813
+ },
3814
+ {
3815
+ "type": "typography",
3816
+ "content": "Analytics",
3817
+ "variant": "h2"
3818
+ }
3819
+ ]
2999
3820
  },
3000
3821
  {
3001
- "type": "typography",
3002
- "variant": "h3",
3003
- "content": [
3004
- "object/get",
3005
- [
3006
- "array/first",
3007
- "@entity"
3008
- ],
3009
- "uptime"
3822
+ "type": "button",
3823
+ "label": "Refresh",
3824
+ "event": "REFRESH",
3825
+ "variant": "secondary",
3826
+ "icon": "refresh-cw"
3827
+ }
3828
+ ]
3829
+ },
3830
+ {
3831
+ "type": "divider"
3832
+ },
3833
+ {
3834
+ "type": "box",
3835
+ "padding": "md",
3836
+ "children": [
3837
+ {
3838
+ "type": "simple-grid",
3839
+ "columns": 3,
3840
+ "children": [
3841
+ {
3842
+ "type": "stat-display",
3843
+ "label": "TotalRequests",
3844
+ "value": [
3845
+ "object/get",
3846
+ [
3847
+ "array/first",
3848
+ "@entity"
3849
+ ],
3850
+ "totalRequests"
3851
+ ]
3852
+ },
3853
+ {
3854
+ "type": "stat-display",
3855
+ "label": "ErrorRate",
3856
+ "value": [
3857
+ "object/get",
3858
+ [
3859
+ "array/first",
3860
+ "@entity"
3861
+ ],
3862
+ "errorRate"
3863
+ ]
3864
+ },
3865
+ {
3866
+ "type": "stat-display",
3867
+ "label": "AvgLatency",
3868
+ "value": [
3869
+ "object/get",
3870
+ [
3871
+ "array/first",
3872
+ "@entity"
3873
+ ],
3874
+ "avgLatency"
3875
+ ]
3876
+ },
3877
+ {
3878
+ "type": "card",
3879
+ "children": [
3880
+ {
3881
+ "type": "stack",
3882
+ "direction": "vertical",
3883
+ "gap": "sm",
3884
+ "children": [
3885
+ {
3886
+ "type": "typography",
3887
+ "variant": "caption",
3888
+ "content": "Uptime"
3889
+ },
3890
+ {
3891
+ "type": "typography",
3892
+ "variant": "h3",
3893
+ "content": [
3894
+ "object/get",
3895
+ [
3896
+ "array/first",
3897
+ "@entity"
3898
+ ],
3899
+ "uptime"
3900
+ ]
3901
+ }
3902
+ ]
3903
+ }
3904
+ ]
3905
+ }
3010
3906
  ]
3011
3907
  }
3012
3908
  ]
3909
+ },
3910
+ {
3911
+ "type": "divider"
3912
+ },
3913
+ {
3914
+ "type": "grid",
3915
+ "columns": 2,
3916
+ "gap": "md",
3917
+ "children": [
3918
+ {
3919
+ "type": "card",
3920
+ "children": [
3921
+ {
3922
+ "type": "typography",
3923
+ "variant": "caption",
3924
+ "content": "Chart View"
3925
+ }
3926
+ ]
3927
+ },
3928
+ {
3929
+ "type": "card",
3930
+ "children": [
3931
+ {
3932
+ "type": "typography",
3933
+ "variant": "caption",
3934
+ "content": "Graph View"
3935
+ }
3936
+ ]
3937
+ }
3938
+ ]
3939
+ },
3940
+ {
3941
+ "type": "line-chart",
3942
+ "data": [
3943
+ {
3944
+ "date": "Jan",
3945
+ "value": 12
3946
+ },
3947
+ {
3948
+ "date": "Feb",
3949
+ "value": 19
3950
+ },
3951
+ {
3952
+ "date": "Mar",
3953
+ "value": 15
3954
+ },
3955
+ {
3956
+ "date": "Apr",
3957
+ "value": 25
3958
+ },
3959
+ {
3960
+ "date": "May",
3961
+ "value": 22
3962
+ },
3963
+ {
3964
+ "date": "Jun",
3965
+ "value": 30
3966
+ }
3967
+ ],
3968
+ "xKey": "date",
3969
+ "yKey": "value",
3970
+ "title": "Trend"
3971
+ },
3972
+ {
3973
+ "type": "chart-legend",
3974
+ "items": [
3975
+ {
3976
+ "label": "Current",
3977
+ "color": "primary"
3978
+ },
3979
+ {
3980
+ "label": "Previous",
3981
+ "color": "muted"
3982
+ }
3983
+ ]
3984
+ },
3985
+ {
3986
+ "type": "graph-view",
3987
+ "nodes": [
3988
+ {
3989
+ "id": "a",
3990
+ "label": "Start",
3991
+ "x": 50,
3992
+ "y": 100
3993
+ },
3994
+ {
3995
+ "id": "b",
3996
+ "label": "Process",
3997
+ "x": 200,
3998
+ "y": 50
3999
+ },
4000
+ {
4001
+ "id": "c",
4002
+ "label": "End",
4003
+ "x": 350,
4004
+ "y": 100
4005
+ }
4006
+ ],
4007
+ "edges": [
4008
+ {
4009
+ "from": "a",
4010
+ "to": "b"
4011
+ },
4012
+ {
4013
+ "from": "b",
4014
+ "to": "c"
4015
+ }
4016
+ ],
4017
+ "width": 400,
4018
+ "height": 200
3013
4019
  }
3014
4020
  ]
3015
4021
  }