@almadar/std 14.26.0 → 14.28.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 (175) hide show
  1. package/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  2. package/behaviors/registry/app/atoms/std-approval-chain.orb +106 -0
  3. package/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  4. package/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  5. package/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  6. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  7. package/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  8. package/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  9. package/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  10. package/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  11. package/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  12. package/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  13. package/behaviors/registry/app/atoms/std-donor.orb +445 -135
  14. package/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  15. package/behaviors/registry/app/atoms/std-driver.orb +465 -480
  16. package/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  17. package/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  18. package/behaviors/registry/app/atoms/std-event.orb +465 -667
  19. package/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  20. package/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  21. package/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  22. package/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  23. package/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  24. package/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  25. package/behaviors/registry/app/atoms/std-lease.orb +506 -190
  26. package/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  27. package/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  28. package/behaviors/registry/app/atoms/std-matter.orb +486 -318
  29. package/behaviors/registry/app/atoms/std-membership.orb +512 -102
  30. package/behaviors/registry/app/atoms/std-menu.orb +775 -183
  31. package/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  32. package/behaviors/registry/app/atoms/std-multi-party-transaction.orb +130 -0
  33. package/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  34. package/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  35. package/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  36. package/behaviors/registry/app/atoms/std-pipeline.orb +139 -0
  37. package/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  38. package/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  39. package/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  40. package/behaviors/registry/app/atoms/std-recurring-schedule.orb +94 -0
  41. package/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  42. package/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  43. package/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  44. package/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  45. package/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  46. package/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  47. package/behaviors/registry/app/atoms/std-segment.orb +360 -98
  48. package/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  49. package/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  50. package/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  51. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  52. package/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  53. package/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  54. package/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  55. package/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  56. package/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  57. package/behaviors/registry/app/atoms/std-timeline.orb +108 -0
  58. package/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  59. package/behaviors/registry/app/atoms/std-trial.orb +410 -317
  60. package/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  61. package/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  62. package/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  63. package/behaviors/registry/app/atoms/std-wizard-branching.orb +129 -0
  64. package/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  65. package/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  66. package/behaviors/registry/app/molecules/std-application.orb +178 -263
  67. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  68. package/behaviors/registry/app/molecules/std-cart.orb +78 -72
  69. package/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  70. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  71. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  72. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  73. package/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  74. package/behaviors/registry/core/atoms/std-board.orb +1367 -0
  75. package/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  76. package/behaviors/registry/core/atoms/std-event-log.orb +777 -0
  77. package/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  78. package/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  79. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  80. package/behaviors/registry/core/atoms/std-multi-party-flow.orb +1313 -0
  81. package/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  82. package/behaviors/registry/core/atoms/std-recurrence.orb +937 -0
  83. package/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  84. package/behaviors/registry/core/atoms/std-step-flow.orb +1155 -0
  85. package/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  86. package/behaviors/registry/core/atoms/std-wizard.orb +1085 -0
  87. package/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  88. package/dist/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  89. package/dist/behaviors/registry/app/atoms/std-approval-chain.orb +106 -0
  90. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  91. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  92. package/dist/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  93. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  94. package/dist/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  95. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  96. package/dist/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  97. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  98. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  99. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  100. package/dist/behaviors/registry/app/atoms/std-donor.orb +445 -135
  101. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  102. package/dist/behaviors/registry/app/atoms/std-driver.orb +465 -480
  103. package/dist/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  104. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  105. package/dist/behaviors/registry/app/atoms/std-event.orb +465 -667
  106. package/dist/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  107. package/dist/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  108. package/dist/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  109. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  110. package/dist/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  111. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  112. package/dist/behaviors/registry/app/atoms/std-lease.orb +506 -190
  113. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  114. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  115. package/dist/behaviors/registry/app/atoms/std-matter.orb +486 -318
  116. package/dist/behaviors/registry/app/atoms/std-membership.orb +512 -102
  117. package/dist/behaviors/registry/app/atoms/std-menu.orb +775 -183
  118. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  119. package/dist/behaviors/registry/app/atoms/std-multi-party-transaction.orb +130 -0
  120. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  121. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  122. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  123. package/dist/behaviors/registry/app/atoms/std-pipeline.orb +139 -0
  124. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  125. package/dist/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  126. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  127. package/dist/behaviors/registry/app/atoms/std-recurring-schedule.orb +94 -0
  128. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  129. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  130. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  131. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  132. package/dist/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  133. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  134. package/dist/behaviors/registry/app/atoms/std-segment.orb +360 -98
  135. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  136. package/dist/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  137. package/dist/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  138. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  139. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  140. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  141. package/dist/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  142. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  143. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  144. package/dist/behaviors/registry/app/atoms/std-timeline.orb +108 -0
  145. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  146. package/dist/behaviors/registry/app/atoms/std-trial.orb +410 -317
  147. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  148. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  149. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  150. package/dist/behaviors/registry/app/atoms/std-wizard-branching.orb +129 -0
  151. package/dist/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  152. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  153. package/dist/behaviors/registry/app/molecules/std-application.orb +178 -263
  154. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  155. package/dist/behaviors/registry/app/molecules/std-cart.orb +78 -72
  156. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  157. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  158. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  159. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  160. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  161. package/dist/behaviors/registry/core/atoms/std-board.orb +1367 -0
  162. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  163. package/dist/behaviors/registry/core/atoms/std-event-log.orb +777 -0
  164. package/dist/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  165. package/dist/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  166. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  167. package/dist/behaviors/registry/core/atoms/std-multi-party-flow.orb +1313 -0
  168. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  169. package/dist/behaviors/registry/core/atoms/std-recurrence.orb +937 -0
  170. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  171. package/dist/behaviors/registry/core/atoms/std-step-flow.orb +1155 -0
  172. package/dist/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  173. package/dist/behaviors/registry/core/atoms/std-wizard.orb +1085 -0
  174. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  175. 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
  ],