@almadar/std 14.26.0 → 14.27.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 (151) hide show
  1. package/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  2. package/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  3. package/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  4. package/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  5. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  6. package/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  7. package/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  8. package/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  9. package/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  10. package/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  11. package/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  12. package/behaviors/registry/app/atoms/std-donor.orb +445 -135
  13. package/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  14. package/behaviors/registry/app/atoms/std-driver.orb +465 -480
  15. package/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  16. package/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  17. package/behaviors/registry/app/atoms/std-event.orb +465 -667
  18. package/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  19. package/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  20. package/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  21. package/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  22. package/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  23. package/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  24. package/behaviors/registry/app/atoms/std-lease.orb +506 -190
  25. package/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  26. package/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  27. package/behaviors/registry/app/atoms/std-matter.orb +486 -318
  28. package/behaviors/registry/app/atoms/std-membership.orb +512 -102
  29. package/behaviors/registry/app/atoms/std-menu.orb +775 -183
  30. package/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  31. package/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  32. package/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  33. package/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  34. package/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  35. package/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  36. package/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  37. package/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  38. package/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  39. package/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  40. package/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  41. package/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  42. package/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  43. package/behaviors/registry/app/atoms/std-segment.orb +360 -98
  44. package/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  45. package/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  46. package/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  47. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  48. package/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  49. package/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  50. package/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  51. package/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  52. package/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  53. package/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  54. package/behaviors/registry/app/atoms/std-trial.orb +410 -317
  55. package/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  56. package/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  57. package/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  58. package/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  59. package/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  60. package/behaviors/registry/app/molecules/std-application.orb +178 -263
  61. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  62. package/behaviors/registry/app/molecules/std-cart.orb +78 -72
  63. package/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  64. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  65. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  66. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  67. package/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  68. package/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  69. package/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  70. package/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  71. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  72. package/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  73. package/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  74. package/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  75. package/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  76. package/dist/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  77. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  78. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  79. package/dist/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  80. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  81. package/dist/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  82. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  83. package/dist/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  84. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  85. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  86. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  87. package/dist/behaviors/registry/app/atoms/std-donor.orb +445 -135
  88. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  89. package/dist/behaviors/registry/app/atoms/std-driver.orb +465 -480
  90. package/dist/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  91. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  92. package/dist/behaviors/registry/app/atoms/std-event.orb +465 -667
  93. package/dist/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  94. package/dist/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  95. package/dist/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  96. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  97. package/dist/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  98. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  99. package/dist/behaviors/registry/app/atoms/std-lease.orb +506 -190
  100. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  101. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  102. package/dist/behaviors/registry/app/atoms/std-matter.orb +486 -318
  103. package/dist/behaviors/registry/app/atoms/std-membership.orb +512 -102
  104. package/dist/behaviors/registry/app/atoms/std-menu.orb +775 -183
  105. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  106. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  107. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  108. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  109. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  110. package/dist/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  111. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  112. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  113. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  114. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  115. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  116. package/dist/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  117. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  118. package/dist/behaviors/registry/app/atoms/std-segment.orb +360 -98
  119. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  120. package/dist/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  121. package/dist/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  122. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  123. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  124. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  125. package/dist/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  126. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  127. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  128. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  129. package/dist/behaviors/registry/app/atoms/std-trial.orb +410 -317
  130. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  131. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  132. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  133. package/dist/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  134. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  135. package/dist/behaviors/registry/app/molecules/std-application.orb +178 -263
  136. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  137. package/dist/behaviors/registry/app/molecules/std-cart.orb +78 -72
  138. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  139. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  140. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  141. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  142. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  143. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  144. package/dist/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  145. package/dist/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  146. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  147. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  148. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  149. package/dist/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  150. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  151. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "std-health-score",
3
3
  "version": "1.0.0",
4
- "description": "std-health-score — Customer success health score primitive surfacing churn risk via composite usage/support/engagement signals.",
4
+ "description": "std-health-score — customer success health score primitive surfacing churn risk via composite usage/support/engagement signals. Lists health scores in `browsing`; opens detail in `viewing_single` with Recalculate / Assign CSM actions.",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "HealthScoreOrbital",
@@ -89,7 +89,7 @@
89
89
  "linkedEntity": "HealthScore",
90
90
  "emits": [
91
91
  {
92
- "event": "VIEW",
92
+ "event": "OPEN_SCORE",
93
93
  "payloadSchema": [
94
94
  {
95
95
  "name": "id",
@@ -97,25 +97,60 @@
97
97
  "required": true
98
98
  },
99
99
  {
100
- "name": "source",
101
- "type": "string"
102
- }
103
- ]
104
- },
105
- {
106
- "event": "EDIT",
107
- "payloadSchema": [
100
+ "name": "row.id",
101
+ "type": "string",
102
+ "required": true
103
+ },
108
104
  {
109
- "name": "id",
105
+ "name": "row.customerId",
110
106
  "type": "string",
111
107
  "required": true
112
108
  },
113
109
  {
114
- "name": "source",
110
+ "name": "row.customerName",
111
+ "type": "string"
112
+ },
113
+ {
114
+ "name": "row.score",
115
+ "type": "number"
116
+ },
117
+ {
118
+ "name": "row.tier",
119
+ "type": "string"
120
+ },
121
+ {
122
+ "name": "row.usageScore",
123
+ "type": "number"
124
+ },
125
+ {
126
+ "name": "row.supportScore",
127
+ "type": "number"
128
+ },
129
+ {
130
+ "name": "row.engagementScore",
131
+ "type": "number"
132
+ },
133
+ {
134
+ "name": "row.trend",
135
+ "type": "string"
136
+ },
137
+ {
138
+ "name": "row.lastCalculatedAt",
139
+ "type": "string"
140
+ },
141
+ {
142
+ "name": "row.assignedCsm",
143
+ "type": "string"
144
+ },
145
+ {
146
+ "name": "row.pendingId",
115
147
  "type": "string"
116
148
  }
117
149
  ]
118
150
  },
151
+ {
152
+ "event": "CLOSE_VIEW"
153
+ },
119
154
  {
120
155
  "event": "RECALCULATE",
121
156
  "payloadSchema": [
@@ -123,10 +158,6 @@
123
158
  "name": "id",
124
159
  "type": "string",
125
160
  "required": true
126
- },
127
- {
128
- "name": "source",
129
- "type": "string"
130
161
  }
131
162
  ]
132
163
  },
@@ -137,10 +168,6 @@
137
168
  "name": "id",
138
169
  "type": "string",
139
170
  "required": true
140
- },
141
- {
142
- "name": "source",
143
- "type": "string"
144
171
  }
145
172
  ]
146
173
  },
@@ -174,7 +201,10 @@
174
201
  "isInitial": true
175
202
  },
176
203
  {
177
- "name": "viewing"
204
+ "name": "browsing"
205
+ },
206
+ {
207
+ "name": "viewing_single"
178
208
  },
179
209
  {
180
210
  "name": "error"
@@ -210,64 +240,17 @@
210
240
  ]
211
241
  },
212
242
  {
213
- "key": "REFRESH",
214
- "name": "Refresh",
215
- "payloadSchema": [
216
- {
217
- "name": "source",
218
- "type": "string"
219
- }
220
- ]
221
- },
222
- {
223
- "key": "SEARCH",
224
- "name": "Search",
225
- "payloadSchema": [
226
- {
227
- "name": "query",
228
- "type": "string"
229
- }
230
- ]
231
- },
232
- {
233
- "key": "FILTER_TIER",
234
- "name": "Filter Tier",
235
- "payloadSchema": [
236
- {
237
- "name": "tier",
238
- "type": "string"
239
- }
240
- ]
241
- },
242
- {
243
- "key": "FILTER_TREND",
244
- "name": "Filter Trend",
245
- "payloadSchema": [
246
- {
247
- "name": "trend",
248
- "type": "string"
249
- }
250
- ]
251
- },
252
- {
253
- "key": "VIEW",
254
- "name": "View",
243
+ "key": "OPEN_SCORE",
244
+ "name": "Open Score",
255
245
  "payloadSchema": [
256
246
  {
257
247
  "name": "id",
258
248
  "type": "string",
259
249
  "required": true
260
- }
261
- ]
262
- },
263
- {
264
- "key": "EDIT",
265
- "name": "Edit",
266
- "payloadSchema": [
250
+ },
267
251
  {
268
- "name": "id",
269
- "type": "string",
270
- "required": true
252
+ "name": "row",
253
+ "type": "HealthScore"
271
254
  }
272
255
  ]
273
256
  },
@@ -282,6 +265,10 @@
282
265
  }
283
266
  ]
284
267
  },
268
+ {
269
+ "key": "CLOSE_VIEW",
270
+ "name": "Close View"
271
+ },
285
272
  {
286
273
  "key": "ASSIGN_CSM",
287
274
  "name": "Assign Csm",
@@ -314,40 +301,40 @@
314
301
  "render-ui",
315
302
  "main",
316
303
  {
317
- "type": "stack",
318
- "direction": "vertical",
319
304
  "align": "center",
320
- "gap": "md",
321
305
  "className": "py-12",
306
+ "type": "stack",
307
+ "gap": "md",
322
308
  "children": [
323
309
  {
324
310
  "type": "spinner"
325
311
  },
326
312
  {
327
- "content": "Loading health scores…",
328
313
  "variant": "caption",
329
- "type": "typography",
330
- "color": "muted"
314
+ "content": "Loading health scores…",
315
+ "color": "muted",
316
+ "type": "typography"
331
317
  }
332
- ]
318
+ ],
319
+ "direction": "vertical"
333
320
  }
334
321
  ]
335
322
  ]
336
323
  },
337
324
  {
338
325
  "from": "loading",
339
- "to": "viewing",
326
+ "to": "browsing",
340
327
  "event": "HealthScoreLoaded",
341
328
  "effects": [
342
329
  [
343
330
  "render-ui",
344
331
  "main",
345
332
  {
346
- "direction": "vertical",
347
- "gap": "md",
348
333
  "type": "stack",
334
+ "direction": "vertical",
349
335
  "children": [
350
336
  {
337
+ "align": "center",
351
338
  "children": [
352
339
  {
353
340
  "name": "activity",
@@ -361,202 +348,72 @@
361
348
  ],
362
349
  "direction": "horizontal",
363
350
  "gap": "sm",
364
- "align": "center",
365
351
  "type": "stack"
366
352
  },
367
353
  {
368
- "title": "Customer Health Overview",
369
- "type": "section-header",
370
- "align": "left",
371
- "level": 2.0,
372
- "subtitle": "Composite signals across usage, support, and engagement"
373
- },
374
- {
375
- "direction": "horizontal",
376
- "gap": "md",
377
- "align": "center",
378
- "type": "stack",
354
+ "cols": 4.0,
379
355
  "children": [
380
356
  {
381
- "max": 100.0,
382
- "size": "md",
383
- "showValue": true,
384
- "type": "meter",
385
- "variant": "radial",
386
- "min": 0.0,
387
- "value": 78.0,
388
- "unit": "%",
389
- "label": "Composite Health",
390
- "thresholds": [
391
- {
392
- "value": 40.0,
393
- "color": "danger"
394
- },
395
- {
396
- "value": 70.0,
397
- "color": "warning"
398
- }
399
- ]
400
- },
401
- {
402
- "type": "health-bar",
403
- "current": 78.0,
404
- "animated": true,
405
- "format": "bar",
406
- "max": 100.0,
407
- "size": "md"
357
+ "icon": "users",
358
+ "label": "Total customers",
359
+ "value": "@payload.data.length",
360
+ "type": "stat-display"
408
361
  },
409
362
  {
410
- "type": "trend-indicator",
411
- "value": 4.2,
412
- "label": "30d trend",
413
- "size": "md",
414
- "direction": "up",
415
- "showValue": true
363
+ "type": "stat-display",
364
+ "value": "62%",
365
+ "icon": "smile",
366
+ "label": "Green tier"
416
367
  },
417
368
  {
418
- "type": "combo-counter",
419
- "size": "md",
420
- "streak": 4.0,
421
- "combo": 6.0,
422
- "multiplier": 2.0
423
- }
424
- ]
425
- },
426
- {
427
- "items": [
428
- {
429
- "label": "Engagement",
430
- "id": "engagement"
431
- },
432
- {
433
- "id": "usage",
434
- "label": "Usage"
435
- },
436
- {
437
- "label": "Health",
438
- "id": "health"
439
- }
440
- ],
441
- "orientation": "horizontal",
442
- "type": "tabs",
443
- "variant": "default",
444
- "activeTab": "health"
445
- },
446
- {
447
- "type": "sidebar",
448
- "brandName": "Health Detail",
449
- "hideCollapseButton": true,
450
- "items": [
451
- {
452
- "label": "Summary",
453
- "id": "summary"
454
- },
455
- {
456
- "id": "history",
457
- "label": "History"
458
- },
459
- {
460
- "label": "Playbook",
461
- "id": "playbook"
462
- },
463
- {
464
- "label": "CSM Notes",
465
- "id": "csm"
466
- }
467
- ],
468
- "showCloseButton": false
469
- },
470
- {
471
- "gap": "md",
472
- "type": "stack",
473
- "direction": "horizontal",
474
- "children": [
475
- {
476
- "variant": "elevated",
477
- "size": "md",
478
- "description": "Identifies subscribers trending toward renewal vs churn",
479
- "type": "feature-card",
480
- "icon": "refresh-cw",
481
- "title": "Auto-Renewal Insights"
482
- },
483
- {
484
- "variant": "bordered",
485
- "size": "md",
486
- "type": "feature-card",
487
- "description": "Triggers CSM workflows when health drops below threshold",
488
- "title": "Risk Escalation",
369
+ "value": "8",
370
+ "type": "stat-display",
371
+ "label": "At risk (red)",
489
372
  "icon": "alert-triangle"
490
373
  },
491
374
  {
492
- "avatar": "https://i.pravatar.cc/120?u=priya",
493
- "role": "Senior CSM",
494
- "name": "Priya Sharma",
495
- "bio": "Owns enterprise accounts across NA West",
496
- "type": "team-card"
375
+ "label": "30d trend",
376
+ "value": "+4.2%",
377
+ "type": "stat-display",
378
+ "icon": "trending-up"
497
379
  }
498
- ]
499
- },
500
- {
501
- "subtitle": "Top contributors to composite score",
502
- "type": "feature-grid-organism",
503
- "columns": 3.0,
504
- "heading": "Health Signal Drivers"
505
- },
506
- {
507
- "type": "team-organism",
508
- "heading": "Customer Success Team",
509
- "subtitle": "CSMs supporting this segment"
510
- },
511
- {
512
- "type": "stats-organism",
513
- "columns": 4.0
380
+ ],
381
+ "type": "simple-grid"
514
382
  },
515
383
  {
516
384
  "type": "divider"
517
385
  },
518
386
  {
519
- "entity": "@payload.data",
520
- "cols": 1.0,
521
- "type": "data-grid",
522
387
  "gap": "sm",
388
+ "entity": "@payload.data",
523
389
  "itemActions": [
524
390
  {
525
- "label": "View",
526
- "event": "VIEW",
527
- "variant": "secondary"
528
- },
529
- {
530
- "event": "EDIT",
531
- "label": "Edit",
532
- "variant": "secondary"
391
+ "label": "Open",
392
+ "variant": "primary",
393
+ "icon": "arrow-right",
394
+ "event": "OPEN_SCORE"
533
395
  },
534
396
  {
397
+ "variant": "secondary",
535
398
  "event": "RECALCULATE",
536
- "variant": "primary",
537
399
  "label": "Recalculate"
538
- },
539
- {
540
- "event": "ASSIGN_CSM",
541
- "variant": "ghost",
542
- "label": "Assign CSM"
543
400
  }
544
401
  ],
545
402
  "fields": [
546
403
  {
547
- "variant": "caption",
548
404
  "label": "Customer",
405
+ "variant": "caption",
549
406
  "name": "customerName"
550
407
  },
551
408
  {
409
+ "label": "Score",
552
410
  "variant": "badge",
553
- "name": "score",
554
- "label": "Score"
411
+ "name": "score"
555
412
  },
556
413
  {
557
414
  "variant": "badge",
558
- "label": "Tier",
559
- "name": "tier"
415
+ "name": "tier",
416
+ "label": "Tier"
560
417
  },
561
418
  {
562
419
  "name": "usageScore",
@@ -565,27 +422,25 @@
565
422
  },
566
423
  {
567
424
  "label": "Support",
568
- "name": "supportScore",
569
- "variant": "caption"
425
+ "variant": "caption",
426
+ "name": "supportScore"
570
427
  },
571
428
  {
572
- "name": "trend",
429
+ "variant": "badge",
573
430
  "label": "Trend",
574
- "variant": "badge"
431
+ "name": "trend"
575
432
  },
576
433
  {
577
434
  "name": "assignedCsm",
578
- "variant": "caption",
579
- "label": "CSM"
580
- },
581
- {
582
- "label": "Updated",
583
- "name": "lastCalculatedAt",
435
+ "label": "CSM",
584
436
  "variant": "caption"
585
437
  }
586
- ]
438
+ ],
439
+ "cols": 1.0,
440
+ "type": "data-grid"
587
441
  }
588
- ]
442
+ ],
443
+ "gap": "md"
589
444
  }
590
445
  ]
591
446
  ]
@@ -599,57 +454,234 @@
599
454
  "render-ui",
600
455
  "main",
601
456
  {
602
- "type": "alert",
603
457
  "message": "@payload.message",
458
+ "type": "alert",
604
459
  "variant": "error"
605
460
  }
606
461
  ]
607
462
  ]
608
463
  },
609
464
  {
610
- "from": "viewing",
611
- "to": "loading",
612
- "event": "REFRESH",
465
+ "from": "browsing",
466
+ "to": "viewing_single",
467
+ "event": "OPEN_SCORE",
613
468
  "effects": [
614
469
  [
615
- "fetch",
616
- "HealthScore",
617
- {
618
- "emit": {
619
- "failure": "HealthScoreLoadFailed",
620
- "success": "HealthScoreLoaded"
621
- }
622
- }
470
+ "set",
471
+ "@entity.id",
472
+ "@payload.row.id"
473
+ ],
474
+ [
475
+ "set",
476
+ "@entity.customerId",
477
+ "@payload.row.customerId"
478
+ ],
479
+ [
480
+ "set",
481
+ "@entity.customerName",
482
+ "@payload.row.customerName"
483
+ ],
484
+ [
485
+ "set",
486
+ "@entity.score",
487
+ "@payload.row.score"
488
+ ],
489
+ [
490
+ "set",
491
+ "@entity.tier",
492
+ "@payload.row.tier"
493
+ ],
494
+ [
495
+ "set",
496
+ "@entity.usageScore",
497
+ "@payload.row.usageScore"
498
+ ],
499
+ [
500
+ "set",
501
+ "@entity.supportScore",
502
+ "@payload.row.supportScore"
503
+ ],
504
+ [
505
+ "set",
506
+ "@entity.engagementScore",
507
+ "@payload.row.engagementScore"
508
+ ],
509
+ [
510
+ "set",
511
+ "@entity.trend",
512
+ "@payload.row.trend"
513
+ ],
514
+ [
515
+ "set",
516
+ "@entity.lastCalculatedAt",
517
+ "@payload.row.lastCalculatedAt"
518
+ ],
519
+ [
520
+ "set",
521
+ "@entity.assignedCsm",
522
+ "@payload.row.assignedCsm"
623
523
  ],
624
524
  [
625
525
  "render-ui",
626
526
  "main",
627
527
  {
628
- "direction": "vertical",
629
- "align": "center",
630
528
  "children": [
631
529
  {
632
- "type": "spinner"
530
+ "type": "stack",
531
+ "align": "center",
532
+ "gap": "sm",
533
+ "children": [
534
+ {
535
+ "variant": "ghost",
536
+ "action": "CLOSE_VIEW",
537
+ "type": "button",
538
+ "label": "Back"
539
+ },
540
+ {
541
+ "name": "activity",
542
+ "type": "icon"
543
+ },
544
+ {
545
+ "variant": "h3",
546
+ "content": "@entity.customerName",
547
+ "type": "typography"
548
+ },
549
+ {
550
+ "variant": "primary",
551
+ "label": "@entity.tier",
552
+ "type": "badge"
553
+ },
554
+ {
555
+ "label": "@entity.trend",
556
+ "variant": "default",
557
+ "type": "badge"
558
+ }
559
+ ],
560
+ "direction": "horizontal"
633
561
  },
634
562
  {
635
- "variant": "caption",
636
- "color": "muted",
637
- "content": "Refreshing health scores…",
638
- "type": "typography"
563
+ "type": "divider"
564
+ },
565
+ {
566
+ "type": "stack",
567
+ "gap": "sm",
568
+ "direction": "vertical",
569
+ "children": [
570
+ {
571
+ "direction": "horizontal",
572
+ "gap": "md",
573
+ "type": "stack",
574
+ "children": [
575
+ {
576
+ "content": "Customer ID",
577
+ "color": "muted",
578
+ "variant": "caption",
579
+ "type": "typography"
580
+ },
581
+ {
582
+ "variant": "body",
583
+ "content": "@entity.customerId",
584
+ "type": "typography"
585
+ }
586
+ ]
587
+ },
588
+ {
589
+ "type": "stack",
590
+ "gap": "md",
591
+ "direction": "horizontal",
592
+ "children": [
593
+ {
594
+ "color": "muted",
595
+ "type": "typography",
596
+ "variant": "caption",
597
+ "content": "Assigned CSM"
598
+ },
599
+ {
600
+ "type": "typography",
601
+ "variant": "body",
602
+ "content": "@entity.assignedCsm"
603
+ }
604
+ ]
605
+ }
606
+ ]
607
+ },
608
+ {
609
+ "type": "divider"
610
+ },
611
+ {
612
+ "type": "simple-grid",
613
+ "children": [
614
+ {
615
+ "label": "Composite",
616
+ "value": "@entity.score",
617
+ "type": "stat-display",
618
+ "icon": "activity"
619
+ },
620
+ {
621
+ "label": "Usage",
622
+ "value": "@entity.usageScore",
623
+ "type": "stat-display",
624
+ "icon": "bar-chart"
625
+ },
626
+ {
627
+ "type": "stat-display",
628
+ "label": "Support",
629
+ "value": "@entity.supportScore",
630
+ "icon": "life-buoy"
631
+ },
632
+ {
633
+ "type": "stat-display",
634
+ "label": "Engagement",
635
+ "value": "@entity.engagementScore",
636
+ "icon": "users"
637
+ }
638
+ ],
639
+ "cols": 4.0
640
+ },
641
+ {
642
+ "direction": "horizontal",
643
+ "gap": "sm",
644
+ "align": "center",
645
+ "type": "stack",
646
+ "children": [
647
+ {
648
+ "type": "button",
649
+ "variant": "primary",
650
+ "actionPayload": {
651
+ "id": "@entity.id"
652
+ },
653
+ "label": "Recalculate",
654
+ "action": "RECALCULATE"
655
+ },
656
+ {
657
+ "variant": "secondary",
658
+ "label": "Assign CSM",
659
+ "actionPayload": {
660
+ "id": "@entity.id"
661
+ },
662
+ "type": "button",
663
+ "action": "ASSIGN_CSM"
664
+ }
665
+ ]
639
666
  }
640
667
  ],
668
+ "direction": "vertical",
641
669
  "gap": "md",
642
- "type": "stack",
643
- "className": "py-12"
670
+ "type": "stack"
644
671
  }
645
672
  ]
646
673
  ]
647
674
  },
648
675
  {
649
- "from": "viewing",
676
+ "from": "browsing",
650
677
  "to": "loading",
651
- "event": "SEARCH",
678
+ "event": "RECALCULATE",
652
679
  "effects": [
680
+ [
681
+ "set",
682
+ "@entity.id",
683
+ "@payload.id"
684
+ ],
653
685
  [
654
686
  "fetch",
655
687
  "HealthScore",
@@ -664,30 +696,30 @@
664
696
  "render-ui",
665
697
  "main",
666
698
  {
667
- "gap": "md",
668
- "direction": "vertical",
669
- "align": "center",
670
- "type": "stack",
671
- "className": "py-12",
672
699
  "children": [
673
700
  {
674
701
  "type": "spinner"
675
702
  },
676
703
  {
704
+ "color": "muted",
677
705
  "type": "typography",
678
- "content": "Searching health scores…",
679
- "variant": "caption",
680
- "color": "muted"
706
+ "content": "Recalculating health score…",
707
+ "variant": "caption"
681
708
  }
682
- ]
709
+ ],
710
+ "gap": "md",
711
+ "type": "stack",
712
+ "direction": "vertical",
713
+ "className": "py-12",
714
+ "align": "center"
683
715
  }
684
716
  ]
685
717
  ]
686
718
  },
687
719
  {
688
- "from": "viewing",
720
+ "from": "viewing_single",
689
721
  "to": "loading",
690
- "event": "FILTER_TIER",
722
+ "event": "CLOSE_VIEW",
691
723
  "effects": [
692
724
  [
693
725
  "fetch",
@@ -703,38 +735,43 @@
703
735
  "render-ui",
704
736
  "main",
705
737
  {
706
- "className": "py-12",
707
738
  "type": "stack",
739
+ "direction": "vertical",
708
740
  "gap": "md",
741
+ "align": "center",
709
742
  "children": [
710
743
  {
711
744
  "type": "spinner"
712
745
  },
713
746
  {
714
- "content": "Filtering by tier…",
747
+ "variant": "caption",
715
748
  "type": "typography",
716
749
  "color": "muted",
717
- "variant": "caption"
750
+ "content": "Loading health scores…"
718
751
  }
719
752
  ],
720
- "direction": "vertical",
721
- "align": "center"
753
+ "className": "py-12"
722
754
  }
723
755
  ]
724
756
  ]
725
757
  },
726
758
  {
727
- "from": "viewing",
759
+ "from": "viewing_single",
728
760
  "to": "loading",
729
- "event": "FILTER_TREND",
761
+ "event": "RECALCULATE",
730
762
  "effects": [
763
+ [
764
+ "set",
765
+ "@entity.id",
766
+ "@payload.id"
767
+ ],
731
768
  [
732
769
  "fetch",
733
770
  "HealthScore",
734
771
  {
735
772
  "emit": {
736
- "failure": "HealthScoreLoadFailed",
737
- "success": "HealthScoreLoaded"
773
+ "success": "HealthScoreLoaded",
774
+ "failure": "HealthScoreLoadFailed"
738
775
  }
739
776
  }
740
777
  ],
@@ -742,72 +779,30 @@
742
779
  "render-ui",
743
780
  "main",
744
781
  {
745
- "className": "py-12",
746
- "gap": "md",
747
- "direction": "vertical",
748
782
  "type": "stack",
749
- "align": "center",
783
+ "direction": "vertical",
784
+ "className": "py-12",
750
785
  "children": [
751
786
  {
752
787
  "type": "spinner"
753
788
  },
754
789
  {
790
+ "variant": "caption",
755
791
  "color": "muted",
756
- "content": "Filtering by trend…",
757
792
  "type": "typography",
758
- "variant": "caption"
793
+ "content": "Recalculating health score…"
759
794
  }
760
- ]
761
- }
762
- ]
763
- ]
764
- },
765
- {
766
- "from": "viewing",
767
- "to": "viewing",
768
- "event": "VIEW",
769
- "effects": [
770
- [
771
- "set",
772
- "@entity.id",
773
- "@payload.id"
774
- ],
775
- [
776
- "render-ui",
777
- "main",
778
- {
779
- "message": "Viewing health score",
780
- "type": "alert",
781
- "variant": "info"
782
- }
783
- ]
784
- ]
785
- },
786
- {
787
- "from": "viewing",
788
- "to": "viewing",
789
- "event": "EDIT",
790
- "effects": [
791
- [
792
- "set",
793
- "@entity.id",
794
- "@payload.id"
795
- ],
796
- [
797
- "render-ui",
798
- "main",
799
- {
800
- "variant": "info",
801
- "message": "Editing health score",
802
- "type": "alert"
795
+ ],
796
+ "gap": "md",
797
+ "align": "center"
803
798
  }
804
799
  ]
805
800
  ]
806
801
  },
807
802
  {
808
- "from": "viewing",
809
- "to": "viewing",
810
- "event": "RECALCULATE",
803
+ "from": "viewing_single",
804
+ "to": "loading",
805
+ "event": "ASSIGN_CSM",
811
806
  "effects": [
812
807
  [
813
808
  "set",
@@ -815,33 +810,35 @@
815
810
  "@payload.id"
816
811
  ],
817
812
  [
818
- "render-ui",
819
- "main",
813
+ "fetch",
814
+ "HealthScore",
820
815
  {
821
- "type": "alert",
822
- "message": "Recalculation triggered",
823
- "variant": "success"
816
+ "emit": {
817
+ "failure": "HealthScoreLoadFailed",
818
+ "success": "HealthScoreLoaded"
819
+ }
824
820
  }
825
- ]
826
- ]
827
- },
828
- {
829
- "from": "viewing",
830
- "to": "viewing",
831
- "event": "ASSIGN_CSM",
832
- "effects": [
833
- [
834
- "set",
835
- "@entity.id",
836
- "@payload.id"
837
821
  ],
838
822
  [
839
823
  "render-ui",
840
824
  "main",
841
825
  {
842
- "message": "Assigning CSM",
843
- "type": "alert",
844
- "variant": "info"
826
+ "direction": "vertical",
827
+ "gap": "md",
828
+ "children": [
829
+ {
830
+ "type": "spinner"
831
+ },
832
+ {
833
+ "content": "Assigning CSM…",
834
+ "color": "muted",
835
+ "variant": "caption",
836
+ "type": "typography"
837
+ }
838
+ ],
839
+ "align": "center",
840
+ "className": "py-12",
841
+ "type": "stack"
845
842
  }
846
843
  ]
847
844
  ]
@@ -856,8 +853,8 @@
856
853
  "HealthScore",
857
854
  {
858
855
  "emit": {
859
- "failure": "HealthScoreLoadFailed",
860
- "success": "HealthScoreLoaded"
856
+ "success": "HealthScoreLoaded",
857
+ "failure": "HealthScoreLoadFailed"
861
858
  }
862
859
  }
863
860
  ],