@almadar/std 14.15.1 → 14.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/behaviors/registry/app/atoms/std-branching-logic.orb +84 -84
  2. package/behaviors/registry/app/atoms/std-checkin.orb +60 -60
  3. package/behaviors/registry/app/atoms/std-dunning.orb +72 -76
  4. package/behaviors/registry/app/atoms/std-event.orb +62 -62
  5. package/behaviors/registry/app/atoms/std-flag.orb +72 -72
  6. package/behaviors/registry/app/atoms/std-geosearch.orb +29 -29
  7. package/behaviors/registry/app/atoms/std-image-upload-multi.orb +54 -56
  8. package/behaviors/registry/app/atoms/std-invoice.orb +193 -65
  9. package/behaviors/registry/app/atoms/std-kitchen-display.orb +58 -58
  10. package/behaviors/registry/app/atoms/std-menu.orb +44 -44
  11. package/behaviors/registry/app/atoms/std-mod-queue.orb +38 -38
  12. package/behaviors/registry/app/atoms/std-modifier-group.orb +56 -56
  13. package/behaviors/registry/app/atoms/std-page-tree.orb +55 -55
  14. package/behaviors/registry/app/atoms/std-payout-ledger.orb +66 -66
  15. package/behaviors/registry/app/atoms/std-question-bank.orb +62 -62
  16. package/behaviors/registry/app/atoms/std-rating-review.orb +67 -67
  17. package/behaviors/registry/app/atoms/std-recurring-charge.orb +74 -74
  18. package/behaviors/registry/app/atoms/std-response-collector.orb +44 -44
  19. package/behaviors/registry/app/atoms/std-rich-editor.orb +68 -68
  20. package/behaviors/registry/app/atoms/std-route-optimize.orb +49 -49
  21. package/behaviors/registry/app/atoms/std-saved-search.orb +72 -72
  22. package/behaviors/registry/app/atoms/std-signature-capture.orb +86 -86
  23. package/behaviors/registry/app/atoms/std-table-map.orb +46 -46
  24. package/behaviors/registry/app/atoms/std-tag-taxonomy.orb +73 -92
  25. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +42 -42
  26. package/behaviors/registry/app/atoms/std-thread.orb +59 -59
  27. package/behaviors/registry/app/atoms/std-ticket-tier.orb +53 -53
  28. package/behaviors/registry/app/atoms/std-trial.orb +67 -67
  29. package/behaviors/registry/app/atoms/std-version-history.orb +93 -93
  30. package/behaviors/registry/app/atoms/std-vote.orb +40 -40
  31. package/behaviors/registry/app/atoms/std-waitlist.orb +50 -50
  32. package/behaviors/registry/app/atoms/std-work-order.orb +48 -48
  33. package/behaviors/registry/app/organisms/std-api-gateway.orb +201 -201
  34. package/behaviors/registry/app/organisms/std-booking-system.orb +676 -676
  35. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +285 -285
  36. package/behaviors/registry/app/organisms/std-cms.orb +265 -265
  37. package/behaviors/registry/app/organisms/std-coding-academy.orb +179 -179
  38. package/behaviors/registry/app/organisms/std-crm.orb +258 -258
  39. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +403 -403
  40. package/behaviors/registry/app/organisms/std-ecommerce.orb +681 -681
  41. package/behaviors/registry/app/organisms/std-event-ticketing.orb +217 -217
  42. package/behaviors/registry/app/organisms/std-field-service.orb +190 -190
  43. package/behaviors/registry/app/organisms/std-finance-tracker.orb +205 -205
  44. package/behaviors/registry/app/organisms/std-forum.orb +141 -141
  45. package/behaviors/registry/app/organisms/std-healthcare.orb +540 -540
  46. package/behaviors/registry/app/organisms/std-helpdesk.orb +175 -175
  47. package/behaviors/registry/app/organisms/std-hr-portal.orb +444 -444
  48. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +344 -344
  49. package/behaviors/registry/app/organisms/std-listings.orb +157 -157
  50. package/behaviors/registry/app/organisms/std-lms.orb +422 -422
  51. package/behaviors/registry/app/organisms/std-marketplace.orb +232 -234
  52. package/behaviors/registry/app/organisms/std-project-manager.orb +193 -193
  53. package/behaviors/registry/app/organisms/std-realtime-chat.orb +248 -248
  54. package/behaviors/registry/app/organisms/std-restaurant-pos.orb +134 -134
  55. package/behaviors/registry/app/organisms/std-social-feed.orb +156 -156
  56. package/behaviors/registry/app/organisms/std-subscription-billing.orb +183 -183
  57. package/behaviors/registry/app/organisms/std-survey.orb +122 -122
  58. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +274 -274
  59. package/behaviors/registry/app/organisms/std-wiki.orb +144 -144
  60. package/dist/behaviors/behaviors-registry.json +1 -1
  61. package/dist/behaviors/registry/app/atoms/std-branching-logic.orb +84 -84
  62. package/dist/behaviors/registry/app/atoms/std-checkin.orb +60 -60
  63. package/dist/behaviors/registry/app/atoms/std-dunning.orb +72 -76
  64. package/dist/behaviors/registry/app/atoms/std-event.orb +62 -62
  65. package/dist/behaviors/registry/app/atoms/std-flag.orb +72 -72
  66. package/dist/behaviors/registry/app/atoms/std-geosearch.orb +29 -29
  67. package/dist/behaviors/registry/app/atoms/std-image-upload-multi.orb +54 -56
  68. package/dist/behaviors/registry/app/atoms/std-invoice.orb +193 -65
  69. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +58 -58
  70. package/dist/behaviors/registry/app/atoms/std-menu.orb +44 -44
  71. package/dist/behaviors/registry/app/atoms/std-mod-queue.orb +38 -38
  72. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +56 -56
  73. package/dist/behaviors/registry/app/atoms/std-page-tree.orb +55 -55
  74. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +66 -66
  75. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +62 -62
  76. package/dist/behaviors/registry/app/atoms/std-rating-review.orb +67 -67
  77. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +74 -74
  78. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +44 -44
  79. package/dist/behaviors/registry/app/atoms/std-rich-editor.orb +68 -68
  80. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +49 -49
  81. package/dist/behaviors/registry/app/atoms/std-saved-search.orb +72 -72
  82. package/dist/behaviors/registry/app/atoms/std-signature-capture.orb +86 -86
  83. package/dist/behaviors/registry/app/atoms/std-table-map.orb +46 -46
  84. package/dist/behaviors/registry/app/atoms/std-tag-taxonomy.orb +73 -92
  85. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +42 -42
  86. package/dist/behaviors/registry/app/atoms/std-thread.orb +59 -59
  87. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +53 -53
  88. package/dist/behaviors/registry/app/atoms/std-trial.orb +67 -67
  89. package/dist/behaviors/registry/app/atoms/std-version-history.orb +93 -93
  90. package/dist/behaviors/registry/app/atoms/std-vote.orb +40 -40
  91. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +50 -50
  92. package/dist/behaviors/registry/app/atoms/std-work-order.orb +48 -48
  93. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +201 -201
  94. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +676 -676
  95. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +285 -285
  96. package/dist/behaviors/registry/app/organisms/std-cms.orb +265 -265
  97. package/dist/behaviors/registry/app/organisms/std-coding-academy.orb +179 -179
  98. package/dist/behaviors/registry/app/organisms/std-crm.orb +258 -258
  99. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +403 -403
  100. package/dist/behaviors/registry/app/organisms/std-ecommerce.orb +681 -681
  101. package/dist/behaviors/registry/app/organisms/std-event-ticketing.orb +217 -217
  102. package/dist/behaviors/registry/app/organisms/std-field-service.orb +190 -190
  103. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +205 -205
  104. package/dist/behaviors/registry/app/organisms/std-forum.orb +141 -141
  105. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +540 -540
  106. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +175 -175
  107. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +444 -444
  108. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +344 -344
  109. package/dist/behaviors/registry/app/organisms/std-listings.orb +157 -157
  110. package/dist/behaviors/registry/app/organisms/std-lms.orb +422 -422
  111. package/dist/behaviors/registry/app/organisms/std-marketplace.orb +232 -234
  112. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +193 -193
  113. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +248 -248
  114. package/dist/behaviors/registry/app/organisms/std-restaurant-pos.orb +134 -134
  115. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +156 -156
  116. package/dist/behaviors/registry/app/organisms/std-subscription-billing.orb +183 -183
  117. package/dist/behaviors/registry/app/organisms/std-survey.orb +122 -122
  118. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +274 -274
  119. package/dist/behaviors/registry/app/organisms/std-wiki.orb +144 -144
  120. package/dist/behaviors-registry.json +1 -1
  121. package/package.json +1 -1
@@ -86,32 +86,32 @@
86
86
  "ref": "AppShell.traits.AppLayout",
87
87
  "name": "PortfolioAppLayout",
88
88
  "config": {
89
- "appName": "Trading Dashboard",
90
- "searchEvent": "PORTFOLIO_SEARCH",
89
+ "notifications": [],
91
90
  "navItems": [
92
91
  {
93
92
  "href": "/portfolio",
94
- "label": "Portfolio",
95
- "icon": "layout-list"
93
+ "icon": "layout-list",
94
+ "label": "Portfolio"
96
95
  },
97
96
  {
98
- "href": "/orders",
97
+ "icon": "clipboard-list",
99
98
  "label": "Orders",
100
- "icon": "clipboard-list"
99
+ "href": "/orders"
101
100
  },
102
101
  {
103
- "label": "Market",
104
102
  "icon": "activity",
103
+ "label": "Market",
105
104
  "href": "/market"
106
105
  }
107
106
  ],
108
- "notifications": [],
107
+ "searchEvent": "PORTFOLIO_SEARCH",
108
+ "notificationClickEvent": "PORTFOLIO_NOTIFICATIONS_OPEN",
109
109
  "contentTrait": "@trait.PortfolioCatalog",
110
- "notificationClickEvent": "PORTFOLIO_NOTIFICATIONS_OPEN"
110
+ "appName": "Trading Dashboard"
111
111
  },
112
112
  "events": {
113
- "SEARCH": "PORTFOLIO_SEARCH",
114
- "NOTIFY_CLICK": "PORTFOLIO_NOTIFICATIONS_OPEN"
113
+ "NOTIFY_CLICK": "PORTFOLIO_NOTIFICATIONS_OPEN",
114
+ "SEARCH": "PORTFOLIO_SEARCH"
115
115
  }
116
116
  },
117
117
  {
@@ -194,21 +194,20 @@
194
194
  "render-ui",
195
195
  "main",
196
196
  {
197
- "direction": "vertical",
198
- "gap": "lg",
199
197
  "children": [
200
198
  {
201
- "align": "center",
202
- "justify": "between",
203
- "direction": "horizontal",
204
199
  "type": "stack",
200
+ "direction": "horizontal",
205
201
  "gap": "md",
202
+ "justify": "between",
203
+ "align": "center",
206
204
  "children": [
207
205
  {
206
+ "type": "stack",
208
207
  "children": [
209
208
  {
210
- "type": "icon",
211
- "name": "trending-up"
209
+ "name": "trending-up",
210
+ "type": "icon"
212
211
  },
213
212
  {
214
213
  "content": "Portfolio",
@@ -216,24 +215,23 @@
216
215
  "type": "typography"
217
216
  }
218
217
  ],
219
- "type": "stack",
218
+ "gap": "sm",
220
219
  "align": "center",
221
- "direction": "horizontal",
222
- "gap": "sm"
220
+ "direction": "horizontal"
223
221
  },
224
222
  {
225
- "type": "stack",
223
+ "direction": "horizontal",
226
224
  "children": [
227
225
  {
228
- "label": "Add Position",
229
226
  "type": "button",
227
+ "variant": "primary",
228
+ "label": "Add Position",
230
229
  "icon": "plus",
231
- "action": "CREATE",
232
- "variant": "primary"
230
+ "action": "CREATE"
233
231
  }
234
232
  ],
235
- "gap": "sm",
236
- "direction": "horizontal"
233
+ "type": "stack",
234
+ "gap": "sm"
237
235
  }
238
236
  ]
239
237
  },
@@ -241,14 +239,14 @@
241
239
  "type": "divider"
242
240
  },
243
241
  {
244
- "type": "stack",
245
- "direction": "horizontal",
246
- "gap": "md",
247
242
  "align": "center",
243
+ "direction": "horizontal",
248
244
  "children": [
249
245
  "@trait.PortfolioSearch",
250
246
  "@trait.PortfolioFilter"
251
- ]
247
+ ],
248
+ "gap": "md",
249
+ "type": "stack"
252
250
  },
253
251
  "@trait.PortfolioStats",
254
252
  "@trait.PortfolioGraphs",
@@ -257,6 +255,8 @@
257
255
  },
258
256
  "@trait.PortfolioBrowseList"
259
257
  ],
258
+ "direction": "vertical",
259
+ "gap": "lg",
260
260
  "type": "stack"
261
261
  }
262
262
  ]
@@ -277,33 +277,33 @@
277
277
  "main",
278
278
  {
279
279
  "gap": "md",
280
+ "direction": "vertical",
280
281
  "align": "center",
282
+ "className": "py-8",
283
+ "type": "stack",
281
284
  "children": [
282
285
  {
283
- "name": "bell",
284
- "type": "icon"
286
+ "type": "icon",
287
+ "name": "bell"
285
288
  },
286
289
  {
287
- "variant": "h3",
290
+ "type": "typography",
288
291
  "content": "No notifications",
289
- "type": "typography"
292
+ "variant": "h3"
290
293
  },
291
294
  {
292
295
  "type": "typography",
293
- "variant": "caption",
294
296
  "color": "muted",
295
- "content": "You're all caught up."
297
+ "content": "You're all caught up.",
298
+ "variant": "caption"
296
299
  },
297
300
  {
298
- "label": "Back to portfolio",
299
301
  "type": "button",
300
- "action": "INIT",
301
- "variant": "ghost"
302
+ "variant": "ghost",
303
+ "label": "Back to portfolio",
304
+ "action": "INIT"
302
305
  }
303
- ],
304
- "className": "py-8",
305
- "direction": "vertical",
306
- "type": "stack"
306
+ ]
307
307
  }
308
308
  ]
309
309
  ]
@@ -316,57 +316,54 @@
316
316
  "ref": "Search.traits.SearchResultSearch",
317
317
  "name": "PortfolioSearch",
318
318
  "config": {
319
- "event": "PORTFOLIO_SEARCH",
320
- "placeholder": "Search positions…"
319
+ "placeholder": "Search positions…",
320
+ "event": "PORTFOLIO_SEARCH"
321
321
  }
322
322
  },
323
323
  {
324
324
  "ref": "Filter.traits.FilterTargetFilter",
325
325
  "name": "PortfolioFilter",
326
326
  "config": {
327
- "event": "PORTFOLIO_FILTER",
328
327
  "filters": [
329
328
  {
329
+ "filterType": "text",
330
330
  "field": "symbol",
331
- "label": "Symbol",
332
- "filterType": "text"
331
+ "label": "Symbol"
333
332
  }
334
- ]
333
+ ],
334
+ "event": "PORTFOLIO_FILTER"
335
335
  }
336
336
  },
337
337
  {
338
338
  "ref": "Stats.traits.StatsItemStats",
339
339
  "name": "PortfolioStats",
340
340
  "config": {
341
+ "title": "Portfolio",
341
342
  "metrics": [
342
343
  {
344
+ "label": "Total Value",
345
+ "variant": "primary",
346
+ "format": "currency",
343
347
  "aggregation": "sum",
344
348
  "field": "marketValue",
345
- "icon": "dollar-sign",
346
- "format": "currency",
347
- "label": "Total Value",
348
- "variant": "primary"
349
+ "icon": "dollar-sign"
349
350
  },
350
351
  {
351
- "format": "currency",
352
+ "aggregation": "sum",
352
353
  "label": "Daily PnL",
353
- "field": "dailyPnl",
354
354
  "variant": "success",
355
- "aggregation": "sum",
355
+ "format": "currency",
356
+ "field": "dailyPnl",
356
357
  "icon": "trending-up"
357
358
  },
358
359
  {
359
- "aggregation": "count",
360
360
  "icon": "layout-list",
361
+ "label": "Positions",
361
362
  "variant": "info",
362
- "format": "number",
363
- "label": "Positions"
363
+ "aggregation": "count",
364
+ "format": "number"
364
365
  },
365
366
  {
366
- "variant": "success",
367
- "format": "number",
368
- "label": "Winners",
369
- "aggregation": "count",
370
367
  "filter": [
371
368
  "fn",
372
369
  "row",
@@ -376,10 +373,13 @@
376
373
  0.0
377
374
  ]
378
375
  ],
379
- "icon": "check-circle"
376
+ "aggregation": "count",
377
+ "variant": "success",
378
+ "format": "number",
379
+ "icon": "check-circle",
380
+ "label": "Winners"
380
381
  }
381
- ],
382
- "title": "Portfolio"
382
+ ]
383
383
  },
384
384
  "listens": [
385
385
  {
@@ -397,13 +397,13 @@
397
397
  "name": "PortfolioGraphs",
398
398
  "config": {
399
399
  "valueField": "dailyPnl",
400
- "categoryField": "symbol",
400
+ "aggregation": "sum",
401
+ "height": 240.0,
401
402
  "title": "Daily PnL",
402
- "showLegend": false,
403
+ "categoryField": "symbol",
403
404
  "chartType": "line",
404
- "subtitle": "Profit and loss across positions",
405
- "aggregation": "sum",
406
- "height": 240.0
405
+ "showLegend": false,
406
+ "subtitle": "Profit and loss across positions"
407
407
  },
408
408
  "listens": [
409
409
  {
@@ -421,30 +421,11 @@
421
421
  "name": "PortfolioBrowseList",
422
422
  "linkedEntity": "Portfolio",
423
423
  "config": {
424
- "itemActions": [
425
- {
426
- "label": "View",
427
- "event": "VIEW",
428
- "variant": "ghost"
429
- },
430
- {
431
- "label": "Edit",
432
- "variant": "ghost",
433
- "event": "EDIT"
434
- },
435
- {
436
- "label": "Delete",
437
- "event": "DELETE",
438
- "variant": "danger"
439
- }
440
- ],
441
- "cols": 1.0,
442
- "gap": "sm",
443
424
  "fields": [
444
425
  {
426
+ "icon": "trending-up",
445
427
  "name": "symbol",
446
- "variant": "h3",
447
- "icon": "trending-up"
428
+ "variant": "h3"
448
429
  },
449
430
  {
450
431
  "name": "qty",
@@ -453,24 +434,43 @@
453
434
  "format": "number"
454
435
  },
455
436
  {
456
- "format": "currency",
457
- "variant": "body",
458
437
  "label": "Avg Cost",
459
- "name": "avgCost"
438
+ "name": "avgCost",
439
+ "variant": "body",
440
+ "format": "currency"
460
441
  },
461
442
  {
462
- "variant": "h4",
463
443
  "name": "marketValue",
464
- "format": "currency",
465
- "label": "Market Value"
444
+ "label": "Market Value",
445
+ "variant": "h4",
446
+ "format": "currency"
466
447
  },
467
448
  {
468
- "label": "Daily PnL",
469
449
  "format": "currency",
470
450
  "name": "dailyPnl",
451
+ "label": "Daily PnL",
471
452
  "variant": "badge"
472
453
  }
473
- ]
454
+ ],
455
+ "itemActions": [
456
+ {
457
+ "event": "VIEW",
458
+ "label": "View",
459
+ "variant": "ghost"
460
+ },
461
+ {
462
+ "event": "EDIT",
463
+ "label": "Edit",
464
+ "variant": "ghost"
465
+ },
466
+ {
467
+ "event": "DELETE",
468
+ "variant": "danger",
469
+ "label": "Delete"
470
+ }
471
+ ],
472
+ "cols": 1.0,
473
+ "gap": "sm"
474
474
  },
475
475
  "listens": [
476
476
  {
@@ -521,6 +521,7 @@
521
521
  "linkedEntity": "Portfolio",
522
522
  "config": {
523
523
  "icon": "plus-circle",
524
+ "title": "Add Position",
524
525
  "mode": "create",
525
526
  "fields": [
526
527
  "symbol",
@@ -528,8 +529,7 @@
528
529
  "avgCost",
529
530
  "marketValue",
530
531
  "dailyPnl"
531
- ],
532
- "title": "Add Position"
532
+ ]
533
533
  },
534
534
  "events": {
535
535
  "OPEN": "CREATE"
@@ -550,6 +550,7 @@
550
550
  "name": "PortfolioEdit",
551
551
  "linkedEntity": "Portfolio",
552
552
  "config": {
553
+ "icon": "edit",
553
554
  "fields": [
554
555
  "symbol",
555
556
  "qty",
@@ -557,9 +558,8 @@
557
558
  "marketValue",
558
559
  "dailyPnl"
559
560
  ],
560
- "icon": "edit",
561
- "title": "Edit Position",
562
- "mode": "edit"
561
+ "mode": "edit",
562
+ "title": "Edit Position"
563
563
  },
564
564
  "events": {
565
565
  "OPEN": "EDIT"
@@ -581,7 +581,6 @@
581
581
  "linkedEntity": "Portfolio",
582
582
  "config": {
583
583
  "title": "View Position",
584
- "icon": "eye",
585
584
  "mode": "edit",
586
585
  "fields": [
587
586
  "symbol",
@@ -589,7 +588,8 @@
589
588
  "avgCost",
590
589
  "marketValue",
591
590
  "dailyPnl"
592
- ]
591
+ ],
592
+ "icon": "eye"
593
593
  },
594
594
  "events": {
595
595
  "OPEN": "VIEW"
@@ -611,9 +611,9 @@
611
611
  "linkedEntity": "Portfolio",
612
612
  "config": {
613
613
  "alertMessage": "This action cannot be undone.",
614
+ "title": "Close Position",
614
615
  "confirmLabel": "Close",
615
- "icon": "alert-triangle",
616
- "title": "Close Position"
616
+ "icon": "alert-triangle"
617
617
  },
618
618
  "events": {
619
619
  "REQUEST": "DELETE",
@@ -936,32 +936,32 @@
936
936
  "name": "TradeOrderAppLayout",
937
937
  "linkedEntity": "TradeOrder",
938
938
  "config": {
939
+ "searchEvent": "TRADE_ORDER_SEARCH",
939
940
  "notificationClickEvent": "TRADE_ORDER_NOTIFICATIONS_OPEN",
940
941
  "notifications": [],
941
- "appName": "Trading Dashboard",
942
- "contentTrait": "@trait.TradeOrderCatalog",
943
942
  "navItems": [
944
943
  {
945
944
  "href": "/portfolio",
946
- "icon": "layout-list",
947
- "label": "Portfolio"
945
+ "label": "Portfolio",
946
+ "icon": "layout-list"
948
947
  },
949
948
  {
950
- "icon": "clipboard-list",
949
+ "label": "Orders",
951
950
  "href": "/orders",
952
- "label": "Orders"
951
+ "icon": "clipboard-list"
953
952
  },
954
953
  {
954
+ "label": "Market",
955
955
  "icon": "activity",
956
- "href": "/market",
957
- "label": "Market"
956
+ "href": "/market"
958
957
  }
959
958
  ],
960
- "searchEvent": "TRADE_ORDER_SEARCH"
959
+ "appName": "Trading Dashboard",
960
+ "contentTrait": "@trait.TradeOrderCatalog"
961
961
  },
962
962
  "events": {
963
- "NOTIFY_CLICK": "TRADE_ORDER_NOTIFICATIONS_OPEN",
964
- "SEARCH": "TRADE_ORDER_SEARCH"
963
+ "SEARCH": "TRADE_ORDER_SEARCH",
964
+ "NOTIFY_CLICK": "TRADE_ORDER_NOTIFICATIONS_OPEN"
965
965
  }
966
966
  },
967
967
  {
@@ -1007,18 +1007,13 @@
1007
1007
  "main",
1008
1008
  {
1009
1009
  "direction": "vertical",
1010
+ "type": "stack",
1010
1011
  "children": [
1011
1012
  {
1012
1013
  "gap": "md",
1013
- "direction": "horizontal",
1014
- "type": "stack",
1015
- "justify": "between",
1016
1014
  "align": "center",
1017
1015
  "children": [
1018
1016
  {
1019
- "direction": "horizontal",
1020
- "type": "stack",
1021
- "gap": "sm",
1022
1017
  "align": "center",
1023
1018
  "children": [
1024
1019
  {
@@ -1026,34 +1021,39 @@
1026
1021
  "name": "clipboard-list"
1027
1022
  },
1028
1023
  {
1029
- "content": "Trade Orders",
1030
1024
  "type": "typography",
1025
+ "content": "Trade Orders",
1031
1026
  "variant": "h2"
1032
1027
  }
1033
- ]
1028
+ ],
1029
+ "direction": "horizontal",
1030
+ "type": "stack",
1031
+ "gap": "sm"
1034
1032
  },
1035
1033
  {
1034
+ "gap": "sm",
1036
1035
  "direction": "horizontal",
1037
1036
  "type": "stack",
1038
1037
  "children": [
1039
1038
  {
1039
+ "type": "button",
1040
+ "icon": "plus",
1040
1041
  "action": "CREATE",
1041
1042
  "variant": "primary",
1042
- "icon": "plus",
1043
- "type": "button",
1044
1043
  "label": "New Order"
1045
1044
  }
1046
- ],
1047
- "gap": "sm"
1045
+ ]
1048
1046
  }
1049
- ]
1047
+ ],
1048
+ "type": "stack",
1049
+ "direction": "horizontal",
1050
+ "justify": "between"
1050
1051
  },
1051
1052
  {
1052
1053
  "type": "divider"
1053
1054
  },
1054
1055
  "@trait.TradeOrderBrowseList"
1055
1056
  ],
1056
- "type": "stack",
1057
1057
  "gap": "lg"
1058
1058
  }
1059
1059
  ]
@@ -1070,27 +1070,27 @@
1070
1070
  "config": {
1071
1071
  "itemActions": [
1072
1072
  {
1073
- "label": "View",
1074
1073
  "event": "VIEW",
1074
+ "label": "View",
1075
1075
  "variant": "ghost"
1076
1076
  },
1077
1077
  {
1078
- "event": "EDIT",
1078
+ "label": "Edit",
1079
1079
  "variant": "ghost",
1080
- "label": "Edit"
1080
+ "event": "EDIT"
1081
1081
  },
1082
1082
  {
1083
1083
  "label": "Cancel",
1084
- "variant": "danger",
1085
- "event": "DELETE"
1084
+ "event": "DELETE",
1085
+ "variant": "danger"
1086
1086
  }
1087
1087
  ],
1088
1088
  "cols": 1.0,
1089
1089
  "fields": [
1090
1090
  {
1091
+ "icon": "trending-up",
1091
1092
  "name": "symbol",
1092
- "variant": "h3",
1093
- "icon": "trending-up"
1093
+ "variant": "h3"
1094
1094
  },
1095
1095
  {
1096
1096
  "variant": "badge",
@@ -1145,8 +1145,8 @@
1145
1145
  "name": "TradeOrderCreate",
1146
1146
  "linkedEntity": "TradeOrder",
1147
1147
  "config": {
1148
+ "mode": "create",
1148
1149
  "icon": "plus-circle",
1149
- "title": "New Order",
1150
1150
  "fields": [
1151
1151
  "symbol",
1152
1152
  "side",
@@ -1154,7 +1154,7 @@
1154
1154
  "price",
1155
1155
  "status"
1156
1156
  ],
1157
- "mode": "create"
1157
+ "title": "New Order"
1158
1158
  },
1159
1159
  "events": {
1160
1160
  "OPEN": "CREATE"
@@ -1175,16 +1175,16 @@
1175
1175
  "name": "TradeOrderEdit",
1176
1176
  "linkedEntity": "TradeOrder",
1177
1177
  "config": {
1178
- "icon": "edit",
1179
- "mode": "edit",
1180
1178
  "title": "Edit Order",
1179
+ "mode": "edit",
1181
1180
  "fields": [
1182
1181
  "symbol",
1183
1182
  "side",
1184
1183
  "quantity",
1185
1184
  "price",
1186
1185
  "status"
1187
- ]
1186
+ ],
1187
+ "icon": "edit"
1188
1188
  },
1189
1189
  "events": {
1190
1190
  "OPEN": "EDIT"
@@ -1205,16 +1205,16 @@
1205
1205
  "name": "TradeOrderView",
1206
1206
  "linkedEntity": "TradeOrder",
1207
1207
  "config": {
1208
- "mode": "edit",
1208
+ "title": "View Order",
1209
1209
  "icon": "eye",
1210
+ "mode": "edit",
1210
1211
  "fields": [
1211
1212
  "symbol",
1212
1213
  "side",
1213
1214
  "quantity",
1214
1215
  "price",
1215
1216
  "status"
1216
- ],
1217
- "title": "View Order"
1217
+ ]
1218
1218
  },
1219
1219
  "events": {
1220
1220
  "OPEN": "VIEW"
@@ -1235,10 +1235,10 @@
1235
1235
  "name": "TradeOrderDelete",
1236
1236
  "linkedEntity": "TradeOrder",
1237
1237
  "config": {
1238
- "icon": "alert-triangle",
1239
- "title": "Cancel Order",
1240
1238
  "confirmLabel": "Cancel Order",
1241
- "alertMessage": "Cancel this pending order?"
1239
+ "icon": "alert-triangle",
1240
+ "alertMessage": "Cancel this pending order?",
1241
+ "title": "Cancel Order"
1242
1242
  },
1243
1243
  "events": {
1244
1244
  "REQUEST": "DELETE",
@@ -1526,32 +1526,32 @@
1526
1526
  "name": "MarketFeedAppLayout",
1527
1527
  "linkedEntity": "MarketFeed",
1528
1528
  "config": {
1529
- "searchEvent": "MARKET_FEED_SEARCH",
1530
- "contentTrait": "@trait.MarketFeedDisplay",
1531
- "notificationClickEvent": "MARKET_FEED_NOTIFICATIONS_OPEN",
1529
+ "notifications": [],
1532
1530
  "navItems": [
1533
1531
  {
1534
- "label": "Portfolio",
1535
1532
  "href": "/portfolio",
1533
+ "label": "Portfolio",
1536
1534
  "icon": "layout-list"
1537
1535
  },
1538
1536
  {
1539
1537
  "label": "Orders",
1540
- "href": "/orders",
1541
- "icon": "clipboard-list"
1538
+ "icon": "clipboard-list",
1539
+ "href": "/orders"
1542
1540
  },
1543
1541
  {
1542
+ "icon": "activity",
1544
1543
  "label": "Market",
1545
- "href": "/market",
1546
- "icon": "activity"
1544
+ "href": "/market"
1547
1545
  }
1548
1546
  ],
1549
- "appName": "Trading Dashboard",
1550
- "notifications": []
1547
+ "contentTrait": "@trait.MarketFeedDisplay",
1548
+ "notificationClickEvent": "MARKET_FEED_NOTIFICATIONS_OPEN",
1549
+ "searchEvent": "MARKET_FEED_SEARCH",
1550
+ "appName": "Trading Dashboard"
1551
1551
  },
1552
1552
  "events": {
1553
- "NOTIFY_CLICK": "MARKET_FEED_NOTIFICATIONS_OPEN",
1554
- "SEARCH": "MARKET_FEED_SEARCH"
1553
+ "SEARCH": "MARKET_FEED_SEARCH",
1554
+ "NOTIFY_CLICK": "MARKET_FEED_NOTIFICATIONS_OPEN"
1555
1555
  }
1556
1556
  },
1557
1557
  {
@@ -1580,13 +1580,13 @@
1580
1580
  "render-ui",
1581
1581
  "main",
1582
1582
  {
1583
- "direction": "vertical",
1584
- "gap": "lg",
1583
+ "className": "max-w-6xl mx-auto w-full p-4",
1585
1584
  "type": "stack",
1585
+ "gap": "lg",
1586
1586
  "children": [
1587
1587
  "@trait.MarketFeedAsync"
1588
1588
  ],
1589
- "className": "max-w-6xl mx-auto w-full p-4"
1589
+ "direction": "vertical"
1590
1590
  }
1591
1591
  ]
1592
1592
  ]
@@ -1766,8 +1766,8 @@
1766
1766
  "MarketFeed",
1767
1767
  {
1768
1768
  "emit": {
1769
- "failure": "MarketFeedLoadFailed",
1770
- "success": "MarketFeedLoaded"
1769
+ "success": "MarketFeedLoaded",
1770
+ "failure": "MarketFeedLoadFailed"
1771
1771
  }
1772
1772
  }
1773
1773
  ],
@@ -1779,18 +1779,18 @@
1779
1779
  {
1780
1780
  "type": "stack",
1781
1781
  "align": "center",
1782
- "gap": "md",
1783
1782
  "children": [
1784
1783
  {
1785
1784
  "name": "activity",
1786
1785
  "type": "icon"
1787
1786
  },
1788
1787
  {
1788
+ "variant": "h2",
1789
1789
  "content": "Market Feed",
1790
- "type": "typography",
1791
- "variant": "h2"
1790
+ "type": "typography"
1792
1791
  }
1793
1792
  ],
1793
+ "gap": "md",
1794
1794
  "direction": "horizontal"
1795
1795
  },
1796
1796
  {
@@ -1798,22 +1798,22 @@
1798
1798
  },
1799
1799
  {
1800
1800
  "type": "typography",
1801
- "variant": "body",
1802
1801
  "color": "muted",
1802
+ "variant": "body",
1803
1803
  "content": "Connect to live market data."
1804
1804
  },
1805
1805
  {
1806
- "icon": "play",
1806
+ "label": "Start Stream",
1807
+ "variant": "primary",
1807
1808
  "type": "button",
1808
1809
  "action": "START",
1809
- "variant": "primary",
1810
- "label": "Start Stream"
1810
+ "icon": "play"
1811
1811
  }
1812
1812
  ],
1813
1813
  "gap": "lg",
1814
- "direction": "vertical",
1814
+ "align": "center",
1815
1815
  "type": "stack",
1816
- "align": "center"
1816
+ "direction": "vertical"
1817
1817
  }
1818
1818
  ]
1819
1819
  ]
@@ -1827,21 +1827,21 @@
1827
1827
  "render-ui",
1828
1828
  "main",
1829
1829
  {
1830
- "type": "stack",
1831
- "direction": "vertical",
1830
+ "align": "center",
1832
1831
  "gap": "lg",
1833
1832
  "children": [
1834
1833
  {
1834
+ "type": "loading-state",
1835
1835
  "title": "Connecting to market feed…",
1836
- "message": "Streaming ticks…",
1837
- "type": "loading-state"
1836
+ "message": "Streaming ticks…"
1838
1837
  },
1839
1838
  {
1840
- "type": "skeleton",
1841
- "variant": "text"
1839
+ "variant": "text",
1840
+ "type": "skeleton"
1842
1841
  }
1843
1842
  ],
1844
- "align": "center"
1843
+ "type": "stack",
1844
+ "direction": "vertical"
1845
1845
  }
1846
1846
  ]
1847
1847
  ]
@@ -1867,82 +1867,85 @@
1867
1867
  "render-ui",
1868
1868
  "main",
1869
1869
  {
1870
+ "direction": "vertical",
1871
+ "type": "stack",
1872
+ "gap": "lg",
1870
1873
  "children": [
1871
1874
  {
1872
- "align": "center",
1873
1875
  "type": "stack",
1874
1876
  "direction": "horizontal",
1875
1877
  "justify": "between",
1878
+ "gap": "md",
1879
+ "align": "center",
1876
1880
  "children": [
1877
1881
  {
1878
- "type": "stack",
1879
- "direction": "horizontal",
1880
- "align": "center",
1881
1882
  "children": [
1882
1883
  {
1883
- "type": "icon",
1884
- "name": "activity"
1884
+ "name": "activity",
1885
+ "type": "icon"
1885
1886
  },
1886
1887
  {
1887
- "content": "Live Market Feed",
1888
1888
  "type": "typography",
1889
+ "content": "Live Market Feed",
1889
1890
  "variant": "h2"
1890
1891
  }
1891
1892
  ],
1892
- "gap": "sm"
1893
+ "type": "stack",
1894
+ "direction": "horizontal",
1895
+ "gap": "sm",
1896
+ "align": "center"
1893
1897
  },
1894
1898
  {
1895
1899
  "direction": "horizontal",
1896
1900
  "type": "stack",
1897
- "gap": "sm",
1898
1901
  "children": [
1899
1902
  {
1903
+ "type": "alert",
1900
1904
  "variant": "success",
1901
- "message": "Connected",
1902
- "type": "alert"
1905
+ "message": "Connected"
1903
1906
  },
1904
1907
  {
1905
- "variant": "ghost",
1908
+ "type": "button",
1906
1909
  "label": "Reset",
1907
- "icon": "rotate-ccw",
1908
1910
  "action": "RESET",
1909
- "type": "button"
1911
+ "variant": "ghost",
1912
+ "icon": "rotate-ccw"
1910
1913
  }
1911
- ]
1914
+ ],
1915
+ "gap": "sm"
1912
1916
  }
1913
- ],
1914
- "gap": "md"
1917
+ ]
1915
1918
  },
1916
1919
  {
1917
1920
  "type": "divider"
1918
1921
  },
1919
1922
  {
1920
- "variant": "card",
1923
+ "entity": "@payload.data",
1921
1924
  "type": "data-list",
1925
+ "gap": "sm",
1926
+ "variant": "card",
1922
1927
  "fields": [
1923
1928
  {
1924
- "icon": "trending-up",
1929
+ "name": "symbol",
1925
1930
  "variant": "h4",
1926
- "name": "symbol"
1931
+ "icon": "trending-up"
1927
1932
  },
1928
1933
  {
1929
- "format": "currency",
1934
+ "name": "price",
1930
1935
  "variant": "h3",
1931
- "name": "price"
1936
+ "format": "currency"
1932
1937
  },
1933
1938
  {
1934
- "format": "currency",
1935
1939
  "name": "change",
1936
- "variant": "badge"
1940
+ "variant": "badge",
1941
+ "format": "currency"
1937
1942
  },
1938
1943
  {
1939
1944
  "format": "number",
1940
- "variant": "caption",
1941
- "name": "volume"
1945
+ "name": "volume",
1946
+ "variant": "caption"
1942
1947
  }
1943
- ],
1944
- "entity": "@payload.data",
1945
- "gap": "sm"
1948
+ ]
1946
1949
  },
1947
1950
  {
1948
1951
  "type": "divider"
@@ -1963,16 +1966,16 @@
1963
1966
  "value": 99.0
1964
1967
  },
1965
1968
  {
1966
- "date": "11:00",
1967
- "value": 105.0
1969
+ "value": 105.0,
1970
+ "date": "11:00"
1968
1971
  },
1969
1972
  {
1970
- "value": 107.0,
1971
- "date": "11:30"
1973
+ "date": "11:30",
1974
+ "value": 107.0
1972
1975
  },
1973
1976
  {
1974
- "value": 104.0,
1975
- "date": "12:00"
1977
+ "date": "12:00",
1978
+ "value": 104.0
1976
1979
  }
1977
1980
  ]
1978
1981
  },
@@ -1980,19 +1983,16 @@
1980
1983
  "type": "chart-legend",
1981
1984
  "items": [
1982
1985
  {
1983
- "color": "primary",
1984
- "label": "Price"
1986
+ "label": "Price",
1987
+ "color": "primary"
1985
1988
  },
1986
1989
  {
1987
- "color": "muted",
1988
- "label": "Volume"
1990
+ "label": "Volume",
1991
+ "color": "muted"
1989
1992
  }
1990
1993
  ]
1991
1994
  }
1992
- ],
1993
- "gap": "lg",
1994
- "type": "stack",
1995
- "direction": "vertical"
1995
+ ]
1996
1996
  }
1997
1997
  ]
1998
1998
  ]
@@ -2006,39 +2006,39 @@
2006
2006
  "render-ui",
2007
2007
  "main",
2008
2008
  {
2009
- "gap": "lg",
2010
- "align": "center",
2011
2009
  "children": [
2012
2010
  {
2013
2011
  "type": "error-state",
2012
+ "message": "Market feed disconnected.",
2014
2013
  "onRetry": "RETRY",
2015
- "title": "Stream Disconnected",
2016
- "message": "Market feed disconnected."
2014
+ "title": "Stream Disconnected"
2017
2015
  },
2018
2016
  {
2019
- "type": "stack",
2020
2017
  "direction": "horizontal",
2018
+ "type": "stack",
2019
+ "gap": "sm",
2021
2020
  "justify": "center",
2022
2021
  "children": [
2023
2022
  {
2024
- "type": "button",
2023
+ "label": "Retry",
2025
2024
  "icon": "refresh-cw",
2026
2025
  "variant": "primary",
2027
- "label": "Retry",
2028
- "action": "RETRY"
2026
+ "action": "RETRY",
2027
+ "type": "button"
2029
2028
  },
2030
2029
  {
2031
- "variant": "ghost",
2032
2030
  "action": "RESET",
2031
+ "type": "button",
2033
2032
  "label": "Reset",
2034
2033
  "icon": "rotate-ccw",
2035
- "type": "button"
2034
+ "variant": "ghost"
2036
2035
  }
2037
- ],
2038
- "gap": "sm"
2036
+ ]
2039
2037
  }
2040
2038
  ],
2039
+ "gap": "lg",
2041
2040
  "type": "stack",
2041
+ "align": "center",
2042
2042
  "direction": "vertical"
2043
2043
  }
2044
2044
  ]
@@ -2053,21 +2053,24 @@
2053
2053
  "render-ui",
2054
2054
  "main",
2055
2055
  {
2056
+ "gap": "lg",
2057
+ "type": "stack",
2058
+ "direction": "vertical",
2056
2059
  "children": [
2057
2060
  {
2061
+ "type": "stack",
2058
2062
  "align": "center",
2059
2063
  "children": [
2060
2064
  {
2061
- "type": "icon",
2062
- "name": "activity"
2065
+ "name": "activity",
2066
+ "type": "icon"
2063
2067
  },
2064
2068
  {
2069
+ "variant": "h2",
2065
2070
  "type": "typography",
2066
- "content": "Market Feed",
2067
- "variant": "h2"
2071
+ "content": "Market Feed"
2068
2072
  }
2069
2073
  ],
2070
- "type": "stack",
2071
2074
  "gap": "md",
2072
2075
  "direction": "horizontal"
2073
2076
  },
@@ -2075,10 +2078,10 @@
2075
2078
  "type": "divider"
2076
2079
  },
2077
2080
  {
2078
- "type": "typography",
2081
+ "content": "Connect to live market data.",
2079
2082
  "variant": "body",
2080
2083
  "color": "muted",
2081
- "content": "Connect to live market data."
2084
+ "type": "typography"
2082
2085
  },
2083
2086
  {
2084
2087
  "icon": "play",
@@ -2088,10 +2091,7 @@
2088
2091
  "label": "Start Stream"
2089
2092
  }
2090
2093
  ],
2091
- "gap": "lg",
2092
- "direction": "vertical",
2093
- "align": "center",
2094
- "type": "stack"
2094
+ "align": "center"
2095
2095
  }
2096
2096
  ]
2097
2097
  ]
@@ -2105,8 +2105,15 @@
2105
2105
  "render-ui",
2106
2106
  "main",
2107
2107
  {
2108
+ "type": "stack",
2109
+ "direction": "vertical",
2110
+ "align": "center",
2111
+ "gap": "lg",
2108
2112
  "children": [
2109
2113
  {
2114
+ "direction": "horizontal",
2115
+ "gap": "md",
2116
+ "align": "center",
2110
2117
  "children": [
2111
2118
  {
2112
2119
  "type": "icon",
@@ -2118,32 +2125,25 @@
2118
2125
  "content": "Market Feed"
2119
2126
  }
2120
2127
  ],
2121
- "direction": "horizontal",
2122
- "gap": "md",
2123
- "type": "stack",
2124
- "align": "center"
2128
+ "type": "stack"
2125
2129
  },
2126
2130
  {
2127
2131
  "type": "divider"
2128
2132
  },
2129
2133
  {
2130
- "variant": "body",
2131
- "content": "Connect to live market data.",
2132
2134
  "type": "typography",
2133
- "color": "muted"
2135
+ "variant": "body",
2136
+ "color": "muted",
2137
+ "content": "Connect to live market data."
2134
2138
  },
2135
2139
  {
2136
2140
  "action": "START",
2141
+ "icon": "play",
2137
2142
  "variant": "primary",
2138
2143
  "type": "button",
2139
- "label": "Start Stream",
2140
- "icon": "play"
2144
+ "label": "Start Stream"
2141
2145
  }
2142
- ],
2143
- "type": "stack",
2144
- "gap": "lg",
2145
- "direction": "vertical",
2146
- "align": "center"
2146
+ ]
2147
2147
  }
2148
2148
  ]
2149
2149
  ]
@@ -2159,19 +2159,19 @@
2159
2159
  {
2160
2160
  "align": "center",
2161
2161
  "direction": "vertical",
2162
+ "type": "stack",
2163
+ "gap": "lg",
2162
2164
  "children": [
2163
2165
  {
2164
- "title": "Connecting to market feed…",
2165
2166
  "message": "Streaming ticks…",
2166
- "type": "loading-state"
2167
+ "type": "loading-state",
2168
+ "title": "Connecting to market feed…"
2167
2169
  },
2168
2170
  {
2169
- "type": "skeleton",
2170
- "variant": "text"
2171
+ "variant": "text",
2172
+ "type": "skeleton"
2171
2173
  }
2172
- ],
2173
- "type": "stack",
2174
- "gap": "lg"
2174
+ ]
2175
2175
  }
2176
2176
  ]
2177
2177
  ]
@@ -2203,4 +2203,4 @@
2203
2203
  ]
2204
2204
  }
2205
2205
  ]
2206
- }
2206
+ }